[gcc-6] 01/401: - start gcc-6

Ximin Luo infinity0 at debian.org
Wed Apr 5 15:47:51 UTC 2017


This is an automated email from the git hooks/post-receive script.

infinity0 pushed a commit to branch pu/reproducible_builds
in repository gcc-6.

commit 46ec0fefb80387840c539d5fc1f818e1f414ec74
Author: doko <doko at 6ca36cf4-e1d1-0310-8c6f-e303bb2178ca>
Date:   Thu Dec 10 16:47:36 2015 +0000

     - start gcc-6
    
    
    git-svn-id: svn://anonscm.debian.org/gcccvs/branches/sid/gcc-6@8485 6ca36cf4-e1d1-0310-8c6f-e303bb2178ca
---
 debian/FAQ.gcj                                     |   494 +
 debian/NEWS.gcc                                    | 15550 +++
 debian/NEWS.html                                   |   971 +
 debian/README.Bugs.m4                              |   333 +
 debian/README.C++                                  |    35 +
 debian/README.Debian                               |    45 +
 debian/README.cross                                |   144 +
 debian/README.gnat                                 |    35 +
 debian/README.libstdc++-baseline.in                |     2 +
 debian/README.maintainers                          |   196 +
 debian/README.snapshot                             |    36 +
 debian/README.source                               |    16 +
 debian/README.ssp                                  |    28 +
 debian/TODO                                        |    50 +
 debian/acats-killer.sh                             |    62 +
 debian/ada/confirm_debian_bugs.py                  |  1016 +
 debian/ada/debian_packaging.mk                     |    91 +
 debian/bin-wrapper.in                              |    11 +
 debian/changelog                                   | 12762 +++
 debian/compat                                      |     1 +
 debian/control                                     |  2481 +
 debian/control.m4                                  |  5283 +
 debian/copyright                                   |   692 +
 debian/copyright.in                                |   692 +
 debian/cpp-BV-CRB.preinst.in                       |    11 +
 debian/cpp-BV-doc.doc-base.cpp                     |    16 +
 debian/cpp-BV-doc.doc-base.cppint                  |    17 +
 debian/dh_doclink                                  |    12 +
 debian/dh_rmemptydirs                              |    10 +
 debian/dummy-man.1                                 |    29 +
 debian/dummy.texi                                  |     1 +
 debian/fixincludes.in                              |     8 +
 debian/g++-BV-CRB.preinst.in                       |    11 +
 debian/gcc-BV-CRB.preinst.in                       |    12 +
 debian/gcc-BV-doc.doc-base.gcc                     |    14 +
 debian/gcc-BV-doc.doc-base.gccint                  |    17 +
 debian/gcc-BV-doc.doc-base.gomp                    |    15 +
 debian/gcc-BV-doc.doc-base.itm                     |    16 +
 debian/gcc-BV-doc.doc-base.qmath                   |    14 +
 debian/gcc-BV-hppa64-linux-gnu.overrides           |     2 +
 debian/gcc-BV-multilib.overrides                   |     1 +
 debian/gcc-BV-source.overrides                     |     5 +
 debian/gcc-XX-BV.1                                 |    17 +
 debian/gcc-dummy.texi                              |    41 +
 debian/gcc-snapshot.overrides                      |     4 +
 debian/gcc-snapshot.prerm                          |     5 +
 debian/gccgo-BV-doc.doc-base                       |    17 +
 debian/gccgo-BV.postinst                           |    16 +
 debian/gccgo-BV.prerm                              |    19 +
 debian/gcj-BV-jdk.doc-base                         |    15 +
 debian/gcj-BV-jdk.overrides                        |     1 +
 debian/gcj-BV-jdk.postinst                         |    45 +
 debian/gcj-BV-jdk.prerm                            |    15 +
 debian/gcj-BV-jre-headless.overrides               |     5 +
 debian/gcj-BV-jre-headless.postinst                |    48 +
 debian/gcj-BV-jre-headless.postrm                  |    10 +
 debian/gcj-BV-jre-headless.prerm                   |    13 +
 debian/gcj-wrapper-BV                              |    91 +
 debian/gcj-wrapper-BV.1                            |    20 +
 debian/gcjh-wrapper-BV                             |    86 +
 debian/gcjh-wrapper-BV.1                           |    20 +
 debian/gen-libstdc-breaks.sh                       |   178 +
 debian/gfortran-BV-CRB.preinst.in                  |    11 +
 debian/gfortran-BV-doc.doc-base                    |    14 +
 debian/gij-hppa                                    |    10 +
 debian/gij-wrapper-BV                              |    98 +
 debian/gij-wrapper-BV.1                            |    22 +
 debian/gnat-BV-doc.doc-base.rm                     |    16 +
 debian/gnat-BV-doc.doc-base.style                  |    16 +
 debian/gnat-BV-doc.doc-base.ug                     |    16 +
 debian/gnat-BV.overrides                           |     1 +
 debian/gnat.1                                      |    43 +
 debian/gnatprj.gpr                                 |    32 +
 debian/gnatvsn.gpr                                 |    31 +
 debian/jdb.sh                                      |     9 +
 debian/lib32asan0.overrides                        |     2 +
 debian/lib32asan0.symbols                          |     3 +
 debian/lib32gccLC.postinst                         |    12 +
 debian/lib32objc4.symbols                          |     3 +
 debian/lib32stdc++6.symbols.amd64                  |    14 +
 debian/lib32stdc++6.symbols.kfreebsd-amd64         |     7 +
 debian/lib32stdc++6.symbols.ppc64                  |     9 +
 debian/lib32stdc++6.symbols.s390x                  |   558 +
 debian/lib32stdc++6.symbols.sparc64                |     9 +
 debian/lib32stdc++CXX.postinst                     |    12 +
 debian/lib64asan0.overrides                        |     2 +
 debian/lib64asan0.symbols                          |     3 +
 debian/lib64gccLC.postinst                         |    12 +
 debian/lib64objc4.symbols                          |     3 +
 debian/lib64stdc++6.symbols.i386                   |    40 +
 debian/lib64stdc++6.symbols.powerpc                |    11 +
 debian/lib64stdc++6.symbols.s390                   |    12 +
 debian/lib64stdc++6.symbols.sparc                  |    11 +
 debian/lib64stdc++CXX.postinst                     |    12 +
 debian/libasan.symbols.16                          |    38 +
 debian/libasan.symbols.32                          |     8 +
 debian/libasan.symbols.64                          |     8 +
 debian/libasan.symbols.common                      |  1492 +
 debian/libasan2.symbols                            |    20 +
 debian/libatomic.symbols                           |     3 +
 debian/libcc1-0.symbols                            |    58 +
 debian/libcilkrts.symbols                          |     4 +
 debian/libgcc.symbols                              |    20 +
 debian/libgcc.symbols.aeabi                        |    69 +
 debian/libgcc2.symbols.m68k                        |   162 +
 debian/libgcc4.symbols.hppa                        |    96 +
 debian/libgccLC.postinst                           |    12 +
 debian/libgccjit0.symbols                          |     5 +
 debian/libgcj-common.postinst                      |    12 +
 debian/libgcj-common.preinst                       |    12 +
 debian/libgcj-doc.doc-base                         |    10 +
 debian/libgcjGCJ-awt.overrides                     |     2 +
 debian/libgcjGCJ-dev.overrides                     |     1 +
 debian/libgcjGCJ.overrides                         |     9 +
 debian/libgcjLGCJ.postinst                         |    12 +
 debian/libgcjLGCJ.postrm                           |    12 +
 debian/libgfortran.symbols                         |    11 +
 debian/libgnat-BV.overrides                        |     1 +
 debian/libgnatprjBV.overrides                      |     1 +
 debian/libgnatvsnBV.overrides                      |     1 +
 debian/libgomp.symbols                             |    14 +
 debian/libitm.symbols                              |     2 +
 debian/liblsan0.symbols                            |   105 +
 debian/libmpx.symbols                              |     4 +
 debian/libobjc4.symbols                            |     3 +
 debian/libobjc4.symbols.armel                      |     4 +
 debian/libobjc4.symbols.armhf                      |     4 +
 debian/libobjc4.symbols.common                     |   205 +
 debian/libquadmath.symbols                         |     2 +
 debian/libstdc++-BV-doc.doc-base                   |    13 +
 debian/libstdc++-BV-doc.overrides                  |     2 +
 debian/libstdc++-breaks.Debian                     |    86 +
 debian/libstdc++-breaks.Ubuntu                     |    73 +
 debian/libstdc++6.symbols.128bit                   |    46 +
 debian/libstdc++6.symbols.32bit                    |   601 +
 debian/libstdc++6.symbols.32bit.cxx11              |   329 +
 debian/libstdc++6.symbols.32bit.hurd               |   536 +
 debian/libstdc++6.symbols.64bit                    |   614 +
 debian/libstdc++6.symbols.64bit.cxx11              |   329 +
 debian/libstdc++6.symbols.alpha                    |    56 +
 debian/libstdc++6.symbols.amd64                    |    16 +
 debian/libstdc++6.symbols.arm                      |     6 +
 debian/libstdc++6.symbols.arm64                    |    10 +
 debian/libstdc++6.symbols.armel                    |    13 +
 debian/libstdc++6.symbols.armhf                    |    13 +
 debian/libstdc++6.symbols.common                   |  3382 +
 debian/libstdc++6.symbols.common.cxx11             |   880 +
 debian/libstdc++6.symbols.excprop                  |    17 +
 debian/libstdc++6.symbols.float128                 |     7 +
 debian/libstdc++6.symbols.glibcxxmath              |    22 +
 debian/libstdc++6.symbols.hppa                     |     9 +
 debian/libstdc++6.symbols.hurd-i386                |     6 +
 debian/libstdc++6.symbols.i386                     |    14 +
 debian/libstdc++6.symbols.ia64                     |    53 +
 debian/libstdc++6.symbols.kfreebsd-amd64           |     9 +
 debian/libstdc++6.symbols.kfreebsd-i386            |     7 +
 debian/libstdc++6.symbols.ldbl.32bit               |   284 +
 debian/libstdc++6.symbols.ldbl.32bit.s390          |   284 +
 debian/libstdc++6.symbols.ldbl.64bit               |   284 +
 debian/libstdc++6.symbols.m68k                     |     6 +
 debian/libstdc++6.symbols.mips                     |     7 +
 debian/libstdc++6.symbols.mips64                   |     7 +
 debian/libstdc++6.symbols.mips64el                 |    10 +
 debian/libstdc++6.symbols.mipsel                   |     8 +
 debian/libstdc++6.symbols.money.f128               |    10 +
 debian/libstdc++6.symbols.money.ldbl               |     9 +
 debian/libstdc++6.symbols.not-armel                |    24 +
 debian/libstdc++6.symbols.powerpc                  |     9 +
 debian/libstdc++6.symbols.powerpcspe               |     8 +
 debian/libstdc++6.symbols.ppc64                    |    11 +
 debian/libstdc++6.symbols.ppc64el                  |    11 +
 debian/libstdc++6.symbols.s390                     |   558 +
 debian/libstdc++6.symbols.s390x                    |    13 +
 debian/libstdc++6.symbols.sh4                      |     8 +
 debian/libstdc++6.symbols.sparc                    |     9 +
 debian/libstdc++6.symbols.sparc64                  |    11 +
 debian/libstdc++6.symbols.x32                      |    27 +
 debian/libstdc++CXX.postinst                       |    18 +
 debian/libstdc++CXX.prerm                          |    13 +
 debian/libtsan0.symbols                            |  1703 +
 debian/libubsan0.symbols                           |    84 +
 debian/libvtv0.symbols                             |    68 +
 debian/libx32asan0.overrides                       |     2 +
 debian/libx32asan0.symbols                         |     3 +
 debian/libx32stdc++6.symbols                       |    27 +
 debian/locale-gen                                  |    50 +
 debian/logwatch.sh                                 |   104 +
 debian/patches/ada-749574.diff                     |    34 +
 debian/patches/ada-acats.diff                      |   191 +
 debian/patches/ada-arm.diff                        |    18 +
 debian/patches/ada-bootstrap-compare.diff          |    17 +
 debian/patches/ada-default-project-path.diff       |   134 +
 debian/patches/ada-driver-check.diff               |    29 +
 debian/patches/ada-gcc-name.diff                   |   108 +
 debian/patches/ada-gnattools-cross.diff            |   748 +
 debian/patches/ada-gnattools-ldflags.diff          |    96 +
 debian/patches/ada-hurd.diff                       |   847 +
 debian/patches/ada-kfreebsd.diff                   |   317 +
 debian/patches/ada-libgnatprj.diff                 |   982 +
 debian/patches/ada-libgnatvsn.diff                 |   836 +
 .../patches/ada-library-project-files-soname.diff  |    81 +
 debian/patches/ada-link-lib.diff                   |  1195 +
 debian/patches/ada-link-shlib.diff                 |    89 +
 debian/patches/ada-m68k.diff                       |   258 +
 debian/patches/ada-mips.diff                       |    23 +
 debian/patches/ada-nobiarch-check.diff             |    20 +
 debian/patches/ada-revert-pr63225.diff             |    97 +
 debian/patches/ada-s-osinte-gnu.ads.diff           |   753 +
 debian/patches/ada-sjlj.diff                       |  1033 +
 debian/patches/ada-symbolic-tracebacks.diff        |   401 +
 debian/patches/alpha-ieee-doc.diff                 |    24 +
 debian/patches/alpha-ieee.diff                     |    21 +
 debian/patches/alpha-no-ev4-directive.diff         |    32 +
 debian/patches/aotcompile.diff                     |    51 +
 debian/patches/arm-multilib-defaults.diff          |    92 +
 debian/patches/arm-multilib-soft-cross.diff        |    27 +
 debian/patches/arm-multilib-soft-float.diff        |    26 +
 debian/patches/arm-multilib-soft.diff              |    27 +
 debian/patches/arm-multilib-softfp-cross.diff      |    27 +
 debian/patches/arm-multilib-softfp.diff            |    27 +
 debian/patches/boehm-gc-getnprocs.diff             |    20 +
 debian/patches/boehm-gc-nocheck.diff               |    18 +
 debian/patches/bootstrap-no-unneeded-libs.diff     |  1422 +
 debian/patches/canonical-cpppath.diff              |    36 +
 debian/patches/config-ml.diff                      |    55 +
 debian/patches/cross-biarch.diff                   |    91 +
 debian/patches/cross-fixes.diff                    |    81 +
 debian/patches/cross-install-location.diff         |   422 +
 debian/patches/cross-no-locale-include.diff        |    17 +
 debian/patches/disable-gdc-tests.diff              |    16 +
 debian/patches/fix-powerpcspe.diff                 |   165 +
 debian/patches/g++-multiarch-incdir.diff           |   119 +
 debian/patches/gcc-as-needed.diff                  |   172 +
 debian/patches/gcc-auto-build.diff                 |    15 +
 debian/patches/gcc-base-version.diff               |   228 +
 debian/patches/gcc-configure-pie-doc.diff          |    31 +
 debian/patches/gcc-configure-pie.diff              |   880 +
 debian/patches/gcc-d-lang.diff                     |   251 +
 debian/patches/gcc-default-format-security.diff    |    39 +
 debian/patches/gcc-default-fortify-source.diff     |    40 +
 debian/patches/gcc-default-relro.diff              |    33 +
 debian/patches/gcc-default-ssp-strong.diff         |    59 +
 debian/patches/gcc-default-ssp.diff                |   214 +
 debian/patches/gcc-driver-extra-langs-linaro.diff  |    22 +
 debian/patches/gcc-driver-extra-langs.diff         |    22 +
 debian/patches/gcc-gfdl-build.diff                 |    39 +
 debian/patches/gcc-hash-style-both.diff            |   167 +
 debian/patches/gcc-hash-style-gnu.diff             |   168 +
 debian/patches/gcc-ia64-bootstrap-ignore.diff      |    17 +
 debian/patches/gcc-ice-apport.diff                 |    24 +
 debian/patches/gcc-ice-dump.diff                   |    41 +
 debian/patches/gcc-linaro-doc.diff                 |  7292 ++
 debian/patches/gcc-linaro-no-macros.diff           |   105 +
 debian/patches/gcc-linaro-revert-r230427.diff      |    17 +
 debian/patches/gcc-linaro.diff                     | 95490 +++++++++++++++++++
 debian/patches/gcc-multiarch.diff                  |   168 +
 debian/patches/gcc-multilib-multiarch.diff         |   123 +
 debian/patches/gcc-sysroot.diff                    |   157 +
 debian/patches/gcc-target-include-asm.diff         |    15 +
 debian/patches/gcc-textdomain.diff                 |    96 +
 debian/patches/gccgo-version.diff                  |    91 +
 debian/patches/gcj-arm-mode.diff                   |    33 +
 debian/patches/gdc-5-doc.diff                      |   106 +
 debian/patches/gdc-5.diff                          |   138 +
 debian/patches/gdc-base-version.diff               |    15 +
 debian/patches/gdc-config-ml.diff                  |    55 +
 debian/patches/gdc-cross-biarch.diff               |    13 +
 debian/patches/gdc-cross-install-location.diff     |    13 +
 debian/patches/gdc-driver-nophobos.diff            |    28 +
 debian/patches/gdc-frontend-posix.diff             |    15 +
 debian/patches/gdc-libphobos-build.diff            |   939 +
 debian/patches/gdc-multiarch.diff                  |    17 +
 debian/patches/gdc-profiledbuild.diff              |    19 +
 debian/patches/gdc-texinfo.diff                    |    55 +
 debian/patches/gdc-updates.diff                    |     2 +
 debian/patches/gdc-versym-cpu.diff                 |   382 +
 debian/patches/gdc-versym-os.diff                  |   430 +
 debian/patches/go-escape-analysis.diff             |  4976 +
 debian/patches/go-escape-analysis2.diff            |   517 +
 debian/patches/go-escape-analysis3.diff            |    75 +
 debian/patches/go-escape-analysis4.diff            |    24 +
 debian/patches/go-escape-analysis5.diff            |    93 +
 debian/patches/go-escape-analysis6.diff            |   208 +
 debian/patches/go-testsuite.diff                   |    21 +
 debian/patches/go-use-gold.diff                    |   103 +
 debian/patches/gotools-configury.diff              |    45 +
 debian/patches/hurd-boehm-gc.diff                  |    26 +
 debian/patches/hurd-changes.diff                   |    20 +
 debian/patches/kfreebsd-boehm-gc.diff              |    15 +
 debian/patches/kfreebsd-unwind.diff                |    53 +
 debian/patches/libasan-sparc.diff                  |   163 +
 debian/patches/libcilkrts-targets.diff             |    21 +
 debian/patches/libffi-ro-eh_frame_sect.diff        |    15 +
 debian/patches/libgnatprj-cross-hack.diff          |    69 +
 debian/patches/libgnatprj-link.diff                |    21 +
 debian/patches/libgo-revert-timeout-exp.diff       |    12 +
 debian/patches/libgo-setcontext-config.diff        |    21 +
 debian/patches/libgo-testsuite.diff                |    52 +
 debian/patches/libgomp-kfreebsd-testsuite.diff     |    16 +
 debian/patches/libgomp-omp_h-multilib.diff         |    28 +
 debian/patches/libitm-no-fortify-source.diff       |    19 +
 debian/patches/libjava-armel-unwind.diff           |    19 +
 debian/patches/libjava-disable-plugin.diff         |    15 +
 debian/patches/libjava-fixed-symlinks.diff         |    28 +
 debian/patches/libjava-jnipath.diff                |   129 +
 debian/patches/libjava-multiarch.diff              |    82 +
 debian/patches/libjava-nobiarch-check.diff         |    27 +
 debian/patches/libjava-rpath.diff                  |    29 +
 debian/patches/libjava-sjlj.diff                   |    40 +
 debian/patches/libjava-stacktrace.diff             |    52 +
 debian/patches/libjit-ldflags.diff                 |    13 +
 debian/patches/libstdc++-doclink.diff              |    68 +
 debian/patches/libstdc++-functexcept.diff          |    17 +
 debian/patches/libstdc++-man-3cxx.diff             |    67 +
 debian/patches/libstdc++-no-testsuite.diff         |    12 +
 debian/patches/libstdc++-nothumb-check.diff        |    38 +
 debian/patches/libstdc++-pic.diff                  |    95 +
 debian/patches/libstdc++-test-installed.diff       |    78 +
 debian/patches/link-libs.diff                      |   170 +
 debian/patches/m68k-revert-pr45144.diff            |    18 +
 debian/patches/mips-fix-loongson2f-nop.diff        |    15 +
 debian/patches/note-gnu-stack.diff                 |   186 +
 debian/patches/powerpc_nofprs.diff                 |    75 +
 debian/patches/powerpc_remove_many.diff            |    32 +
 debian/patches/pr39491.diff                        |   132 +
 debian/patches/pr47818.diff                        |    24 +
 debian/patches/pr61106.diff                        |    24 +
 debian/patches/pr61126.diff                        |    51 +
 debian/patches/pr65913-workaround.diff             |   731 +
 debian/patches/pr66368.diff                        |    26 +
 debian/patches/pr67508.diff                        |   107 +
 debian/patches/pr67590.diff                        |    38 +
 debian/patches/pr67899.diff                        |    31 +
 debian/patches/rename-info-files.diff              |   842 +
 debian/patches/skip-bootstrap-multilib.diff        |    49 +
 debian/patches/sparc-force-cpu.diff                |    27 +
 debian/patches/sparc64-biarch-long-double-128.diff |    35 +
 debian/patches/svn-class-updates.diff              |    27 +
 debian/patches/svn-doc-updates.diff                |     6 +
 debian/patches/svn-updates.diff                    |  1114 +
 debian/patches/sys-auxv-header.diff                |    46 +
 debian/patches/testsuite-glibc-warnings.diff       |    29 +
 debian/patches/testsuite-hardening-format.diff     |   382 +
 .../patches/testsuite-hardening-printf-types.diff  |   667 +
 debian/patches/testsuite-hardening-updates.diff    |   143 +
 debian/porting.html                                |    30 +
 debian/reduce-test-diff.awk                        |    33 +
 debian/relink                                      |    74 +
 debian/rules                                       |    83 +
 debian/rules.conf                                  |  1399 +
 debian/rules.d/binary-ada.mk                       |   393 +
 debian/rules.d/binary-base.mk                      |    75 +
 debian/rules.d/binary-cpp.mk                       |    84 +
 debian/rules.d/binary-cxx.mk                       |    90 +
 debian/rules.d/binary-d.mk                         |   236 +
 debian/rules.d/binary-fixincl.mk                   |    42 +
 debian/rules.d/binary-fortran.mk                   |   271 +
 debian/rules.d/binary-gcc.mk                       |   356 +
 debian/rules.d/binary-go.mk                        |   326 +
 debian/rules.d/binary-hppa64.mk                    |    32 +
 debian/rules.d/binary-java.mk                      |   724 +
 debian/rules.d/binary-libasan.mk                   |    75 +
 debian/rules.d/binary-libatomic.mk                 |    68 +
 debian/rules.d/binary-libcc1.mk                    |    29 +
 debian/rules.d/binary-libcilkrts.mk                |    76 +
 debian/rules.d/binary-libgcc.mk                    |   378 +
 debian/rules.d/binary-libgccjit.mk                 |    71 +
 debian/rules.d/binary-libgccmath.mk                |   121 +
 debian/rules.d/binary-libgomp.mk                   |    68 +
 debian/rules.d/binary-libitm.mk                    |    68 +
 debian/rules.d/binary-liblsan.mk                   |    75 +
 debian/rules.d/binary-libmpx.mk                    |    74 +
 debian/rules.d/binary-libobjc.mk                   |   153 +
 debian/rules.d/binary-libquadmath.mk               |    68 +
 debian/rules.d/binary-libssp.mk                    |   155 +
 debian/rules.d/binary-libstdcxx.mk                 |   524 +
 debian/rules.d/binary-libtsan.mk                   |    77 +
 debian/rules.d/binary-libubsan.mk                  |    75 +
 debian/rules.d/binary-libvtv.mk                    |    75 +
 debian/rules.d/binary-neon.mk                      |    47 +
 debian/rules.d/binary-nof.mk                       |    51 +
 debian/rules.d/binary-objc.mk                      |    67 +
 debian/rules.d/binary-objcxx.mk                    |    60 +
 debian/rules.d/binary-snapshot.mk                  |   232 +
 debian/rules.d/binary-softfloat.mk                 |    31 +
 debian/rules.d/binary-source.mk                    |    52 +
 debian/rules.defs                                  |  2006 +
 debian/rules.patch                                 |   414 +
 debian/rules.sonames                               |   109 +
 debian/rules.source                                |    15 +
 debian/rules.unpack                                |   244 +
 debian/rules2                                      |  2468 +
 debian/runcheck.sh                                 |    23 +
 debian/source.lintian-overrides                    |     4 +
 debian/source.lintian-overrides.in                 |     4 +
 debian/source/format                               |     1 +
 debian/source/local-options                        |     6 +
 debian/watch                                       |     2 +
 398 files changed, 200360 insertions(+)

diff --git a/debian/FAQ.gcj b/debian/FAQ.gcj
new file mode 100644
index 0000000..c996421
--- /dev/null
+++ b/debian/FAQ.gcj
@@ -0,0 +1,494 @@
+The GCJ FAQ
+===========
+
+      The latest version of this document is always available at
+      http://gcc.gnu.org/java/faq.html.
+
+        General Questions
+
+            What license is used for libgcj?
+            How can I report a bug in libgcj?
+            How can I contribute to libgcj
+            Is libgcj part of GCC?
+            Will gcj and libgcj work on my machine?
+            How can I debug my Java program?
+            Can I interface byte-compiled and native java code?
+
+
+        Java Feature Support
+
+            What Java API's are supported? How complete is
+              the support?
+            Does GCJ support using straight C native methods
+              ala JNI?
+            Why does GCJ use CNI?
+            What is the state of AWT support?
+            How about support for Swing ?
+            What support is there for RMI ?
+            Can I use any code from other OpenSource projects
+              to supplement libgcj's current features ?
+            What features of the Java language are/arn't supported
+
+
+        Build Issues
+
+            I need something more recent than the last release; how
+                  should I build it?
+            Linker bug on Solaris
+            Can I configure/build in the source tree?
+            My libgcj build fails with "invalid use of undefined type
+                  struct sigcontext_struct"
+
+
+        Gcj Compile/Link Questions
+
+            Why do I get undefined reference to `main' errors?
+            Can GCJ only handle source code?
+            "gcj -C" Doesn't seem to work like javac/jikes. Whats going on?
+            Where does GCJ look for files?
+            How does gcj resolve wether to compile .class or .java files?
+            I'm getting link errors!
+            I'm getting 'undefined symbol: __dso_handle'
+
+
+        Runtime Questions
+
+            My program is dumping core! What's going on?
+            When I run the debugger I get a SEGV in the GC! What's going on?
+            I have just compiled and benchmarked my Java application
+            and it seems to be running slower than than XXX JIT JVM. Is there
+            anything I can do to make it go faster?
+            Can I profile Garbage Collection?
+            How do I increase the runtime's initial and maximum heap sizes?
+            How can I profile my application?
+            My program seems to hang and doesn't produce any output
+
+
+        Programming Issues
+
+            Are there any examples of how to use CNI?
+            Is it possible to invoke GCJ compiled Java code from a
+            C++ application?
+
+General Questions
+=================
+
+      1.1 What license is used for libgcj?
+
+          libgcj is distributed under the GPL, with the 'libgcc exception'.
+          This means that linking with libgcj does not by itself cause
+          your program to fall under the GPL.  See LIBGCJ_LICENSE in
+          the source tree for more details.
+
+      1.2 How can I report a bug in libgcj?
+
+          libgcj has a corresponding Gnats bug database which you can
+          browse. You can also submit new bug reports from the Gnats
+          page.
+
+      1.3 How can I contribute to libgcj?
+
+          You can send simple bug fixes in as patches. Please follow
+          the GCC guidelines for submitting patches. For more complex
+          changes, you must sign copyright over to the Free Software
+          Foundation. See the contribution page for details.
+
+      1.4 Is libgcj part of GCC?
+
+          Yes, libgcj is now part of GCC. It can be downloaded,
+          configured and built as one single tree.
+
+      1.5 Will gcj and libgcj work on my machine?
+
+          Gcj and libgcj are known to work more or less with IA-32 and
+          Sparc Solaris, Tru64 Unix, as well as IA-32, IA-64, Alpha,
+          and PowerPC Linux. They might work on other
+          systems. Generally speaking, porting to a new system should
+          not be hard. This would be a good way to volunteer.
+
+      1.6 How can I debug my Java program?
+
+          gdb 5.0 includes support for debugging gcj-compiled Java
+          programs. For more information please read Java Debugging
+          with gdb.
+
+      1.7 Can I interface byte-compiled and native java code
+
+          libgcj has a bytecode interpreter that allows you to mix
+          .class files with compiled code. It works pretty
+          transparently: if a compiled version of a class is not found
+          in the application binary or linked shared libraries, the
+          class loader will search for a bytecode version in your
+          classpath, much like a VM would. Be sure to build libgcj
+          with the --enable-interpreter option to enable this
+          functionality.
+
+          The program "gij" provides a front end to the interpreter
+          that behaves much like a traditional virtual machine. You
+          can even use "gij" to run a shared library which is compiled
+          from java code and contains a main method:
+
+          $ gcj -shared -o lib-HelloWorld.so HelloWorld.java
+          $ gij HelloWorld
+
+          This works because gij uses Class.forName, which knows how
+          to load shared objects.
+
+Java Feature Support
+====================
+
+      2.1 What Java API's are supported? How complete is
+        the support?
+
+          Matt Welsh writes:
+
+            Just look in the 'libjava' directory of libgcj and see
+            what classes are there. Most GUI stuff isn't there yet,
+            that's true, but many of the other classes are easy to add
+            if they don't yet exist.
+
+            I think it's important to stress that there is a big
+            difference between Java and the many libraries which Java
+            supports. Unfortunately, Sun's promise of "write once, run
+            everywhere" assumes much more than a JVM: you also need
+            the full set of JDK libraries. Considering that new Java
+            APIs come out every week, it's going to be impossible to
+            track everything.
+
+            To make things worse, you can't simply run Sun's JDK
+            classes on any old JVM -- they assume that a bunch of
+            native methods are also defined. Since this native method
+            requirement isn't defined by the JDK specs, you're
+            effectively constrained to using Sun's JVMs if you want to
+            use Sun's JDK libraries. Oh yes -- you could also
+            reimplement all of those native methods yourself, and make
+            sure they behave exactly as Sun's do. Note that they're
+            undocumented!
+
+      2.2 Does GCJ support using straight C native methods
+         ala JNI?
+
+          Yes. libgcj now has experimental support for JNI, in
+          addition to its native Compiled Native Interface (CNI). gcjh
+          will generate JNI stubs and headers using the "-jni"
+          option. However, we do prefer CNI: it is more efficient,
+          easier to write, and (at least potentially) easier to debug.
+
+      2.3 Why does GCJ use CNI?
+
+          Per Bothner explains:
+
+            We use CNI because we think it is a better solution,
+            especially for a Java implementation that is based on the
+            idea that Java is just another programming language that
+            can be implemented using standard compilation
+            techniques. Given that, and the idea that languages
+            implemented using Gcc should be compatible where it makes
+            sense, it follows that the Java calling convention should
+            be as similar as practical to that used for other
+            languages, especially C++, since we can think of Java as a
+            subset of C++. CNI is just a set of helper functions and
+            conventions built on the idea that C++ and Java have the
+            *same* calling convention and object layout; they are
+            binary compatible. (This is a simplification, but close
+            enough.)
+
+      2.4 What is the state of AWT support?
+
+          Work is in progress to implement AWT and Java2D. We intend
+          to support both GTK and xlib peers written using CNI. Some
+          components are already working atop the xlib peers.
+
+      2.5 How about support for Swing?
+
+          Once AWT support is working then Swing support can be
+          considered. There is at least one free-software partial
+          implementations of Swing that may be usable.
+
+      2.6 What support is there for RMI?
+
+         RMI code exists on the CVS trunk (aka gcc 3.1), but it has
+         not been heavily tested.  This code was donated by
+         Transvirtual Technologies.
+
+      2.7 Can I use any code from other OpenSource
+          projects to supplement libgcj's current features?
+
+           Certainly. However, in many cases, if you wanted to
+           contribute the code back into the official libgcj
+           distribution, we would require that the original author(s)
+           assign copyright to the Free Software Foundation.  As of
+           March 6, 2000, libgcj has been relicenced, and copyright
+           has been assigned to the FSF. This allows us to share and
+           merge much of the libgcj codebase with the Classpath
+           project.  Our eventual goal is for Classpath to be an
+           upstream source provider for libgcj, however it will be
+           some time before this becomes reality: libgcj and Classpath
+           have different implementations of many core java
+           classes. In order to merge them, we need to select the best
+           (most efficient, cleanest) implementation of each
+           method/class/package, resolve any conflicts created by the
+           merge, and test the final result.  Needless to say, this is
+           a lot of work. If you can help out, please let us know!
+
+      2.8 What features of the Java language are/aren't supported.
+
+          GCJ supports all Java language constructs as per the Java
+          language Specification.  Recent GCJ snapshots have added
+          support for most JDK1.1 (and beyond) language features,
+          including inner classes.
+
+Build Issues
+============
+
+      3.1 I need something more recent than the last release.
+          How should I build it?
+
+          Please read here: http://gcc.gnu.org/java/build-snapshot.html
+
+      3.2 Linker bug on Solaris
+
+          There is a known problem with the native Solaris linker when
+          using gcc/gcj. A good indication you've run into this
+          problem is if you get an error that looks like the following
+          when building libgcj:
+
+ld: warning: option -o appears more than once, first setting taken
+ld: fatal: file libfoo.so: cannot open file: No such file or directory
+ld: fatal: File processing errors. No output written to .libs/libfoo.so
+collect2: ld returned 1 exit status
+
+          A known workaround for this and other reported link problems
+          on the various releases of Solaris is to build gcc/gcj with
+          the latest GNU binutils instead of the native Solaris
+          ld. The most straightforward way to do this is to build and
+          install binutils, and then reference it in the configure for
+          gcc via --with-ld=/path_to_binutils_install/bin/ld
+          (--with-as may also be similarly specified but is not
+          believed to be required).
+
+          Please note, gcc/gcj must be built using GNU ld prior to
+          doing a clean build of libgcj!
+
+      3.3 Can I configure/build in the source tree?
+
+          No.  You cannot configure/build in the source tree.  If you
+          try, you'll see something like:
+
+              $ ./configure [...]
+              Configuring for a i686-pc-linux-gnu host.
+              *** Cannot currently configure in source tree.
+
+          Instead, you must build in another directory.  E.g.:
+
+              $ mkdir build
+              $ cd build
+              $ ../configure [...]
+
+      3.4 My libgcj build fails with "invalid use of undefined type
+          struct sigcontext_struct"
+
+          If you're using Linux, this probably means you need to
+          upgrade to a newwer, glibc (libc6) based Linux
+          distribution. libgcj does not support the older linux libc5.
+          It might be possible to get a working libgcj by changing
+          occurances of "sigcontext_struct" to "sigcontext", however
+          this has not been tested.  Even if it works, it is likely
+          that there are other issues with older libc versions that
+          would prevent libgcj from working correctly (threads bugs,
+          for example).
+
+Gcj Compile/Link Questions
+==========================
+
+      4.1 Why do I get undefined reference to `main' errors?
+
+          When using gcj to link a Java program, you must use the --main=
+          option to indicate the class that has the desired main method.
+          This is because every Java class can have a main method, thus
+          you have to tell gcj which one to use.
+
+      4.2 Can GCJ only handle source code?
+
+          GCJ will compile both source (.java) and bytecode (.class)
+          files. However, in many cases the native code produced by
+          compiling from source is better optimized than that compiled
+          from .class files.
+
+          Per Bothner explains:
+
+            The reason is that when you compile to bytecode you lose a
+            lot of information about program structure etc. That
+            information helps in generating better code. We can in
+            theory recover the information we need by analysing the
+            structure of the bytecodes, but it is sometimes difficult
+            - or sometimes it just that no-one has gotten around to
+            it.  Specific examples include loop structure (gcc
+            generates better code with explicit loops rather than with
+            the equivalent spaghetti code), array initializers, and
+            the JDK 1.1 `CLASS.class' syntax, all of which are
+            represented using more low-level constructs in bytecode.
+
+      4.3 "gcj -C" Doesn't seem to work like javac/jikes.  Whats going on?
+
+          The behavior of "gcj -C" is not at all like javac or jikes,
+          which will compile (not just scan) all .java's which are out
+          of date with regard to their .class's.
+
+      4.4 Where does GCJ look for files?
+
+          GCJ looks for classes to compile based on the CLASSPATH
+          environment variable. libgcj.jar and other files are found
+          relative to the path of the compiler itself, so it is safe
+          to move the entire compiler tree to a different path, and
+          there is no need to include libgcj.jar in your CLASSPATH.
+
+      4.5 How does gcj resolve whether to compile .class or .java files?
+
+          GCJ compiles only the files presented to it on the command
+          line. However, it also needs to scan other files in order to
+          determine the layout of other classes and check for errors
+          in your code.  For these dependencies, GCJ will favour
+          .class files if they are available because it is faster to
+          parse a class file than source code.
+
+      4.6 I'm getting link errors
+
+          If you get errors at link time that refer to 'undefined
+          reference to `java::lang::Object type_info function', verify
+          that you have compiled any CNI C++ files with the -fno-rtti
+          option. This is only required for versions of GCJ earlier
+          than 3.0.
+
+      4.7 I'm getting 'undefined symbol: __dso_handle'
+
+          Some versions of the GNU linker have broken support for the
+          '.hidden' directive, which results in problems with shared
+          libraries built with recent versions of gcc.
+
+          There are three solutions:
+
+            - downgrade to binutils that don't support .hidden at all,
+            - upgrade to a recent binutils, or
+            - undef the HAVE_GAS_HIDDEN definition in gcc's auto-host.h
+              (and rebuild gcc).
+
+Runtime Questions
+=================
+
+      5.1 My program is dumping core! What's going on?
+
+          It could be any number of things. One common mistake is
+          having your CLASSPATH environment variable pointing at a
+          third party's java.lang and friends. Either unset CLASSPATH,
+          or make sure it does not refer to core libraries other than
+          those found in libgcj.jar.Note that newwer versions of GCJ
+          will reject the core class library if it wasn't generated by
+          GCJ itself.
+
+      5.2 When I run the debugger I get a SEGV in the GC! What's going on?
+
+          This is "normal"; the Garbage Collector (GC) uses it to
+          determine stack boundaries. It is ordinarily caught and
+          handled by the GC -- you can see this in the debugger by
+          using cont to continue to the "real" segv.
+
+      5.3 I have just compiled and benchmarked my Java application
+          and it seems to be running slower than than XXX JIT JVM. Is there
+          anything I can do to make it go faster?
+
+        A few things:
+
+          - If your programs allocate many small, short lived objects,
+            the heap could be filling and triggering GC too
+            regularly. Try increasing the initial and maximum heap sizes
+            as per 5.5 How do I increase the runtime's initial and
+            maximum heap size?
+          - RE - array accesses. We have sub-optimal runtime checking
+            code, and the compiler is still not so smart about
+            automatically removing array checks. If your code is ready,
+            and it doesn't rely on them, try compiling with
+            --no-bounds-check.
+          - Try static linking.  On many platforms, dynamic (PIC)
+            function calls are more expensive than static ones. In
+            particular, the interaction with boehm-gc seems to incur
+            extra overhead when shared libraries are used.
+          - If your Java application doesn't need threads, try
+            building libgcj using --enable-threads=none. Portions of the
+            libgcj runtime are still more efficient when
+            single-threaded.
+
+       5.4 Can I profile Garbage Collection?
+
+          It is possible to turn on verbose GC output by supressing
+          the -DSILENT flag during build. One way to do this is to
+          comment out the line with #define SILENT 1 from
+          boehm-gc/configure before configuring libgcj.  The GC will
+          print collection statistics to stdout. (Rebuilding boehm-gc
+          alone without this flag doesn't seem to work.)
+
+      5.5 How do I increase the runtime's initial and maximum heap sizes?
+
+          Some programs that allocate many small, short-lived objects
+          can cause the default-sized heap to fill quickly and GC
+          often. With the 2.95.1 release there is no means to adjust
+          the heap at runtime. Recent snapshots provide the -ms and
+          -mx arguments to gij to specify the initial and maximum heap
+          sizes, respectively.
+
+      5.6 How can I profile my application?
+
+          Currently, only single threaded Java code may be used by the
+          profiler (gprof). POSIX threads seem to be incompatible with
+          the gmon stuff.  A couple of other tools that have been
+          mentioned on the GCJ mailing list are sprof and cprof.  The
+          former is part of GNU libc.
+
+      5.7 My program seems to hang and doesn't produce any output
+
+          Some versions had a bug in the iconv support. You can work
+          around it by setting LANG=en_US.UTF-8 at runtime, or give
+          the following option during compile time
+          -Dfile.encoding=UTF-8.  This problem should no longer occur
+          as of November 1, 2000.
+
+Programming Issues
+==================
+
+      6.1 Are there any examples of how to use CNI?
+
+          Glenn Chambers has created a couple of trivial examples for
+          version 2.95 and version 3.0.  As a comparison, here is the
+          same example as a JNI application using Kaffe.  The same
+          code will work with GCJ, as shown here.
+
+          Note that for version 2.95, you must compile the C++ files
+          used for CNI with the -fno-rtti option.  This constraint
+          does not apply in version 3.0 and later.
+
+          The primary source of documentation for CNI is at
+          http://gcc.gnu.org/java/papers/cni/t1.html
+
+      6.2 Is it possible to invoke GCJ compiled Java code from a
+          C++ application?
+
+          Yes, GCJ 3.1 supports a CNI-based invocation interface as
+          well as the traditional JNI invocation API.  See the GCJ
+          Manual for more details on how to use the CNI interface.
+
+Please send FSF & GNU inquiries & questions tognu at gnu.org.There are
+also other waysto contact the FSF.
+
+These pages are maintained by The GCC team.
+
+Please send comments on these web pages and GCC to our publicmailing
+list at gcc at gnu.org orgcc at gcc.gnu.org, send other questions to
+gnu at gnu.org.
+
+Copyright (C) Free Software Foundation, Inc.,
+59 Temple Place - Suite 330, Boston, MA  02111,  USA.
+
+Verbatim copying and distribution of this entire article is permitted
+in any medium, provided this notice is preserved.
+
+Last modified 2003-04-30
diff --git a/debian/NEWS.gcc b/debian/NEWS.gcc
new file mode 100644
index 0000000..409baf2
--- /dev/null
+++ b/debian/NEWS.gcc
@@ -0,0 +1,15550 @@
+This file contains information about GCC releases which has been generated
+automatically from the online release notes.  It covers releases of GCC
+(and the former EGCS project) since EGCS 1.0, on the line of development
+that led to GCC 3. For information on GCC 2.8.1 and older releases of GCC 2,
+see ONEWS.
+
+======================================================================
+http://gcc.gnu.org/gcc-5/index.html
+                              GCC 5 Release Series
+
+   April 22, 2015
+
+   The [1]GNU project and the GCC developers are pleased to announce the
+   release of GCC 5.1.
+
+   This release is a major release, containing new features (as well as
+   many other improvements) relative to GCC 4.9.x.
+
+Release History
+
+   GCC 5.1
+          April 22, 2015 ([2]changes, [3]documentation)
+
+References and Acknowledgements
+
+   GCC used to stand for the GNU C Compiler, but since the compiler
+   supports several other languages aside from C, it now stands for the
+   GNU Compiler Collection.
+
+   A list of [4]successful builds is updated as new information becomes
+   available.
+
+   The GCC developers would like to thank the numerous people that have
+   contributed new features, improvements, bug fixes, and other changes as
+   well as test results to GCC. This [5]amazing group of volunteers is
+   what makes GCC successful.
+
+   For additional information about GCC please refer to the [6]GCC project
+   web site or contact the [7]GCC development mailing list.
+
+   To obtain GCC please use [8]our mirror sites or [9]our SVN server.
+
+
+    For questions related to the use of GCC, please consult these web
+    pages and the [10]GCC manuals. If that fails, the
+    [11]gcc-help at gcc.gnu.org mailing list might help. Comments on these
+    web pages and the development of GCC are welcome on our developer
+    list at [12]gcc at gcc.gnu.org. All of [13]our lists have public
+    archives.
+
+   Copyright (C) [14]Free Software Foundation, Inc. Verbatim copying and
+   distribution of this entire article is permitted in any medium,
+   provided this notice is preserved.
+
+   These pages are [15]maintained by the GCC team. Last modified
+   2015-04-22[16].
+
+References
+
+   1. http://www.gnu.org/
+   2. http://gcc.gnu.org/gcc-5/changes.html
+   3. http://gcc.gnu.org/onlinedocs/5.1.0/
+   4. http://gcc.gnu.org/gcc-5/buildstat.html
+   5. http://gcc.gnu.org/onlinedocs/gcc/Contributors.html
+   6. http://gcc.gnu.org/index.html
+   7. mailto:gcc at gcc.gnu.org
+   8. http://gcc.gnu.org/mirrors.html
+   9. http://gcc.gnu.org/svn.html
+  10. https://gcc.gnu.org/onlinedocs/
+  11. mailto:gcc-help at gcc.gnu.org
+  12. mailto:gcc at gcc.gnu.org
+  13. https://gcc.gnu.org/lists.html
+  14. http://www.fsf.org/
+  15. https://gcc.gnu.org/about.html
+  16. http://validator.w3.org/check/referer
+======================================================================
+http://gcc.gnu.org/gcc-5/changes.html
+                              GCC 5 Release Series
+                        Changes, New Features, and Fixes
+
+Caveats
+
+     * The default mode for C is now -std=gnu11 instead of -std=gnu89.
+     * The C++ runtime library (libstdc++) uses a new ABI by default (see
+       [1]below).
+     * The Graphite framework for loop optimizations no longer requires
+       the CLooG library, only ISL version 0.14 (recommended) or 0.12.2.
+       The installation manual contains more information about
+       requirements to build GCC.
+     * The non-standard C++0x type traits has_trivial_default_constructor,
+       has_trivial_copy_constructor and has_trivial_copy_assign have been
+       deprecated and will be removed in a future version. The standard
+       C++11 traits is_trivially_default_constructible,
+       is_trivially_copy_constructible and is_trivially_copy_assignable
+       should be used instead.
+
+General Optimizer Improvements
+
+     * Inter-procedural optimization improvements:
+          + An Identical Code Folding (ICF) pass (controlled via
+            -fipa-icf) has been added. Compared to the identical code
+            folding performed by the Gold linker this pass does not
+            require function sections. It also performs merging before
+            inlining, so inter-procedural optimizations are aware of the
+            code re-use. On the other hand not all unifications performed
+            by a linker are doable by GCC which must honor aliasing
+            information. During link-time optimization of Firefox, this
+            pass unifies about 31000 functions, that is 14% overall.
+          + The devirtualization pass was significantly improved by adding
+            better support for speculative devirtualization and dynamic
+            type detection. About 50% of virtual calls in Firefox are now
+            speculatively devirtualized during link-time optimization.
+          + A new comdat localization pass allows the linker to eliminate
+            more dead code in presence of C++ inline functions.
+          + Virtual tables are now optimized. Local aliases are used to
+            reduce dynamic linking time of C++ virtual tables on ELF
+            targets and data alignment has been reduced to limit data
+            segment bloat.
+          + A new -fno-semantic-interposition option can be used to
+            improve code quality of shared libraries where interposition
+            of exported symbols is not allowed.
+          + Write-only variables are now detected and optimized out.
+          + With profile feedback the function inliner can now bypass
+            --param inline-insns-auto and --param inline-insns-single
+            limits for hot calls.
+          + The IPA reference pass was significantly sped up making it
+            feasible to enable -fipa-reference with -fprofile-generate.
+            This also solves a bottleneck seen when building Chromium with
+            link-time optimization.
+          + The symbol table and call-graph API was reworked to C++ and
+            simplified.
+          + The interprocedural propagation of constants now also
+            propagates alignments of pointer parameters. This for example
+            means that the vectorizer often does not need to generate loop
+            prologues and epilogues to make up for potential
+            misalignments.
+     * Link-time optimization improvements:
+          + One Definition Rule based merging of C++ types has been
+            implemented. Type merging enables better devirtualization and
+            alias analysis. Streaming extra information needed to merge
+            types adds about 2-6% of memory size and object size increase.
+            This can be controlled by -flto-odr-type-merging.
+          + Command-line optimization and target options are now streamed
+            on a per-function basis and honored by the link-time
+            optimizer. This change makes link-time optimization a more
+            transparent replacement of per-file optimizations. It is now
+            possible to build projects that require different optimization
+            settings for different translation units (such as -ffast-math,
+            -mavx, or -finline). Contrary to earlier GCC releases, the
+            optimization and target options passed on the link command
+            line are ignored.
+            Note that this applies only to those command-line options that
+            can be passed to optimize and target attributes. Command-line
+            options affecting global code generation (such as -fpic),
+            warnings (such as -Wodr), optimizations affecting the way
+            static variables are optimized (such as -fcommon), debug
+            output (such as -g), and --param parameters can be applied
+            only to the whole link-time optimization unit. In these cases,
+            it is recommended to consistently use the same options at both
+            compile time and link time.
+          + GCC bootstrap now uses slim LTO object files.
+          + Memory usage and link times were improved. Tree merging was
+            sped up, memory usage of GIMPLE declarations and types was
+            reduced, and, support for on-demand streaming of variable
+            constructors was added.
+     * Feedback directed optimization improvements:
+          + A new auto-FDO mode uses profiles collected by low overhead
+            profiling tools (perf) instead of more expensive program
+            instrumentation (via -fprofile-generate). SPEC2006 benchmarks
+            on x86-64 improve by 4.7% with auto-FDO and by 7.3% with
+            traditional feedback directed optimization.
+          + Profile precision was improved in presence of C++ inline and
+            extern inline functions.
+          + The new gcov-tool utility allows manipulating profiles.
+          + Profiles are now more tolerant to source file changes (this
+            can be controlled by --param profile-func-internal-id).
+     * Register allocation improvements:
+          + A new local register allocator (LRA) sub-pass, controlled by
+            -flra-remat, implements control-flow sensitive global register
+            rematerialization. Instead of spilling and restoring a
+            register value, it is recalculated if it is profitable. The
+            sub-pass improved SPEC2000 generated code by 1% and 0.5%
+            correspondingly on ARM and x86-64.
+          + Reuse of the PIC hard register, instead of using a fixed
+            register, was implemented on x86/x86-64 targets. This improves
+            generated PIC code performance as more hard registers can be
+            used. Shared libraries can significantly benefit from this
+            optimization. Currently it is switched on only for x86/x86-64
+            targets. As RA infrastructure is already implemented for PIC
+            register reuse, other targets might follow this in the future.
+          + A simple form of inter-procedural RA was implemented. When it
+            is known that a called function does not use caller-saved
+            registers, save/restore code is not generated around the call
+            for such registers. This optimization can be controlled by
+            -fipa-ra
+          + LRA is now much more effective at generating spills of general
+            registers into vector registers instead of memory on
+            architectures (e.g., modern Intel processors) where this is
+            profitable.
+     * UndefinedBehaviorSanitizer gained a few new sanitization options:
+          + -fsanitize=float-divide-by-zero: detect floating-point
+            division by zero;
+          + -fsanitize=float-cast-overflow: check that the result of
+            floating-point type to integer conversions do not overflow;
+          + -fsanitize=bounds: enable instrumentation of array bounds and
+            detect out-of-bounds accesses;
+          + -fsanitize=alignment: enable alignment checking, detect
+            various misaligned objects;
+          + -fsanitize=object-size: enable object size checking, detect
+            various out-of-bounds accesses.
+          + -fsanitize=vptr: enable checking of C++ member function calls,
+            member accesses and some conversions between pointers to base
+            and derived classes, detect if the referenced object does not
+            have the correct dynamic type.
+     * Pointer Bounds Checker, a bounds violation detector, has been added
+       and can be enabled via -fcheck-pointer-bounds. Memory accesses are
+       instrumented with run-time checks of used pointers against their
+       bounds to detect pointer bounds violations (overflows). The Pointer
+       Bounds Checker is available on x86/x86-64 GNU/Linux targets with a
+       new ISA extension Intel MPX support. See the Pointer Bounds Checker
+       [2]Wiki page for more details.
+
+New Languages and Language specific improvements
+
+     * [3]OpenMP 4.0 specification offloading features are now supported
+       by the C, C++, and Fortran compilers. Generic changes:
+          + Infrastructure (suitable for any vendor).
+          + Testsuite which covers offloading from the [4]OpenMP 4.0
+            Examples document.
+       Specific for upcoming Intel Xeon Phi products:
+          + Run-time library.
+          + Card emulator.
+     * GCC 5 includes a preliminary implementation of the OpenACC 2.0a
+       specification. OpenACC is intended for programming accelerator
+       devices such as GPUs. See [5]the OpenACC wiki page for more
+       information.
+
+  C family
+
+     * The default setting of the -fdiagnostics-color= command-line option
+       is now [6]configurable when building GCC using configuration option
+       --with-diagnostics-color=. The possible values are: never, always,
+       auto and auto-if-env. The new default auto uses color only when the
+       standard error is a terminal. The default in GCC 4.9 was
+       auto-if-env, which is equivalent to auto if there is a non-empty
+       GCC_COLORS environment variable, and never otherwise. As in GCC
+       4.9, an empty GCC_COLORS variable in the environment will always
+       disable colors, no matter what the default is or what command-line
+       options are used.
+     * A new command-line option -Wswitch-bool has been added for the C
+       and C++ compilers, which warns whenever a switch statement has an
+       index of boolean type.
+     * A new command-line option -Wlogical-not-parentheses has been added
+       for the C and C++ compilers, which warns about "logical not" used
+       on the left hand side operand of a comparison.
+     * A new command-line option -Wsizeof-array-argument has been added
+       for the C and C++ compilers, which warns when the sizeof operator
+       is applied to a parameter that has been declared as an array in a
+       function definition.
+     * A new command-line option -Wbool-compare has been added for the C
+       and C++ compilers, which warns about boolean expressions compared
+       with an integer value different from true/false.
+     * Full support for [7]Cilk Plus has been added to the GCC compiler.
+       Cilk Plus is an extension to the C and C++ languages to support
+       data and task parallelism.
+     * A new attribute no_reorder prevents reordering of selected symbols
+       against other such symbols or inline assembler. This enables to
+       link-time optimize the Linux kernel without having to resort to
+       -fno-toplevel-reorder that disables several optimizations.
+     * New preprocessor constructs, __has_include and __has_include_next,
+       to test the availability of headers have been added.
+       This demonstrates a way to include the header <optional> only if it
+       is available:
+
+#ifdef __has_include
+#  if __has_include(<optional>)
+#    include <optional>
+#    define have_optional 1
+#  elif __has_include(<experimental/optional>)
+#    include <experimental/optional>
+#    define have_optional 1
+#    define experimental_optional
+#  else
+#    define have_optional 0
+#  endif
+#endif
+
+       The header search paths for __has_include and __has_include_next
+       are equivalent to those of the standard directive #include and the
+       extension #include_next respectively.
+     * A new built-in function-like macro to determine the existence of an
+       attribute, __has_attribute, has been added. The equivalent built-in
+       macro __has_cpp_attribute was added to C++ to support
+       [8]Feature-testing recommendations for C++. The macro
+       __has_attribute is added to all C-like languages as an extension:
+
+int
+#ifdef __has_attribute
+#  if __has_attribute(__noinline__)
+  __attribute__((__noinline__))
+#  endif
+#endif
+foo(int x);
+
+       If an attribute exists, a nonzero constant integer is returned. For
+       standardized C++ attributes a date is returned, otherwise the
+       constant returned is 1. Both __has_attribute and
+       __has_cpp_attribute will add underscores to an attribute name if
+       necessary to resolve the name. For C++11 and onwards the attribute
+       may be scoped.
+     * A new set of built-in functions for arithmetics with overflow
+       checking has been added: __builtin_add_overflow,
+       __builtin_sub_overflow and __builtin_mul_overflow and for
+       compatibility with clang also other variants. These builtins have
+       two integral arguments (which don't need to have the same type),
+       the arguments are extended to infinite precision signed type, +, -
+       or * is performed on those, and the result is stored in an integer
+       variable pointed to by the last argument. If the stored value is
+       equal to the infinite precision result, the built-in functions
+       return false, otherwise true. The type of the integer variable that
+       will hold the result can be different from the types of the first
+       two arguments. The following snippet demonstrates how this can be
+       used in computing the size for the calloc function:
+
+void *
+calloc (size_t x, size_t y)
+{
+  size_t sz;
+  if (__builtin_mul_overflow (x, y, &sz))
+    return NULL;
+  void *ret = malloc (sz);
+  if (ret) memset (res, 0, sz);
+  return ret;
+}
+
+       On e.g. i?86 or x86-64 the above will result in a mul instruction
+       followed by a jump on overflow.
+     * The option -fextended-identifiers is now enabled by default for
+       C++, and for C99 and later C versions. Various bugs in the
+       implementation of extended identifiers have been fixed.
+
+  C
+
+     * The default mode has been changed to -std=gnu11.
+     * A new command-line option -Wc90-c99-compat has been added to warn
+       about features not present in ISO C90, but present in ISO C99.
+     * A new command-line option -Wc99-c11-compat has been added to warn
+       about features not present in ISO C99, but present in ISO C11.
+     * It is possible to disable warnings about conversions between
+       pointers that have incompatible types via a new warning option
+       -Wno-incompatible-pointer-types; warnings about implicit
+       incompatible integer to pointer and pointer to integer conversions
+       via a new warning option -Wno-int-conversion; and warnings about
+       qualifiers on pointers being discarded via a new warning option
+       -Wno-discarded-qualifiers.
+     * To allow proper use of const qualifiers with multidimensional
+       arrays, GCC will not warn about incompatible pointer types anymore
+       for conversions between pointers to arrays with and without const
+       qualifier (except when using -pedantic). Instead, a new warning is
+       emitted only if the const qualifier is lost. This can be controlled
+       with a new warning option -Wno-discarded-array-qualifiers.
+     * The C front end now generates more precise caret diagnostics.
+     * The -pg command-line option now only affects the current file in an
+       LTO build.
+
+  C++
+
+     * G++ now supports [9]C++14 variable templates.
+     * -Wnon-virtual-dtor doesn't warn anymore for final classes.
+     * Excessive template instantiation depth is now a fatal error. This
+       prevents excessive diagnostics that usually do not help to identify
+       the problem.
+     * G++ and libstdc++ now implement the feature-testing macros from
+       [10]Feature-testing recommendations for C++.
+     * G++ now allows typename in a template template parameter.
+
+template<template<typename> typename X> struct D; // OK
+
+     * G++ now supports [11]C++14 aggregates with non-static data member
+       initializers.
+
+struct A { int i, j = i; };
+A a = { 42 }; // a.j is also 42
+
+     * G++ now supports [12]C++14 extended constexpr.
+
+constexpr int f (int i)
+{
+  int j = 0;
+  for (; i > 0; --i)
+    ++j;
+  return j;
+}
+
+constexpr int i = f(42); // i is 42
+
+     * G++ now supports the [13]C++14 sized deallocation functions.
+
+void operator delete (void *, std::size_t) noexcept;
+void operator delete[] (void *, std::size_t) noexcept;
+
+     * A new One Definition Rule violation warning (controlled by -Wodr)
+       detects mismatches in type definitions and virtual table contents
+       during link-time optimization.
+     * New warnings -Wsuggest-final-types and -Wsuggest-final-methods help
+       developers to annotate programs with final specifiers (or anonymous
+       namespaces) to improve code generation. These warnings can be used
+       at compile time, but they are more useful in combination with
+       link-time optimization.
+     * G++ no longer supports [14]N3639 variable length arrays, as they
+       were removed from the C++14 working paper prior to ratification.
+       GNU VLAs are still supported, so VLA support is now the same in
+       C++14 mode as in C++98 and C++11 modes.
+     * G++ now allows passing a non-trivially-copyable class via C
+       varargs, which is conditionally-supported with
+       implementation-defined semantics in the standard. This uses the
+       same calling convention as a normal value parameter.
+     * G++ now defaults to -fabi-version=0 and -fabi-compat-version=2. So
+       various mangling bugs are fixed, but G++ will still emit aliases
+       with the old, wrong mangling where feasible. -Wabi continues to
+       warn about differences.
+
+    Runtime Library (libstdc++)
+
+     * A [15]Dual ABI is provided by the library. A new ABI is enabled by
+       default. The old ABI is still supported and can be used by defining
+       the macro _GLIBCXX_USE_CXX11_ABI to 0 before including any C++
+       standard library headers.
+     * A new implementation of std::string is enabled by default, using
+       the small string optimization instead of copy-on-write reference
+       counting.
+     * A new implementation of std::list is enabled by default, with an
+       O(1) size() function;
+     * [16]Full support for C++11, including the following new features:
+          + std::deque and std::vector<bool> meet the allocator-aware
+            container requirements;
+          + movable and swappable iostream classes;
+          + support for std::align and std::aligned_union;
+          + type traits std::is_trivially_copyable,
+            std::is_trivially_constructible, std::is_trivially_assignable
+            etc.;
+          + I/O manipulators std::put_time, std::get_time, std::hexfloat
+            and std::defaultfloat;
+          + generic locale-aware std::isblank;
+          + locale facets for Unicode conversion;
+          + atomic operations for std::shared_ptr;
+          + std::notify_all_at_thread_exit() and functions for making
+            futures ready at thread exit.
+     * Support for the C++11 hexfloat manipulator changes how the num_put
+       facet formats floating point types when
+       ios_base::fixed|ios_base::scientific is set in a stream's fmtflags.
+       This change affects all language modes, even though the C++98
+       standard gave no special meaning to that combination of flags. To
+       prevent the use of hexadecimal notation for floating point types
+       use str.unsetf(std::ios_base::floatfield) to clear the relevant
+       bits in str.flags().
+     * [17]Full experimental support for C++14, including the following
+       new features:
+          + std::is_final type trait;
+          + heterogeneous comparison lookup in associative containers.
+          + global functions cbegin, cend, rbegin, rend, crbegin, and
+            crend for range access to containers, arrays and initializer
+            lists.
+     * [18]Improved experimental support for the Library Fundamentals TS,
+       including:
+          + class std::experimental::any;
+          + function template std::experimental::apply;
+          + function template std::experimental::sample;
+          + function template std::experimental::search and related
+            searcher types;
+          + variable templates for type traits;
+          + function template std::experimental::not_fn.
+     * New random number distributions logistic_distribution and
+       uniform_on_sphere_distribution as extensions.
+     * [19]GDB Xmethods for containers and std::unique_ptr.
+
+  Fortran
+
+     * Compatibility notice:
+          + The version of the module files (.mod) has been incremented.
+          + For free-form source files, [20]-Werror=line-truncation is now
+            enabled by default; note that comments exceeding the line
+            length are not diagnosed. (For fixed-form source code, the
+            same warning is available but turned off by default, such that
+            excess characters are ignored. -ffree-line-length-n and
+            -ffixed-line-length-n can be used to modify the default line
+            lengths of 132 and 72 columns, respectively.)
+          + The -Wtabs option is now more sensible: with -Wtabs the
+            compiler warns if it encounters tabs and with -Wno-tabs this
+            warning is turned off. Before, -Wno-tabs warned and -Wtabs
+            turned the warning off. As before, the warning is also enabled
+            by -Wall, -pedantic and the f95, f2003, f2008 and f2008ts
+            options of -std=.
+     * Incomplete support for colorizing diagnostics emitted by gfortran
+       has been added. The option [21]-fdiagnostics-color controls when
+       color is used in diagnostics. The default value of this option can
+       be [22]configured when building GCC. The GCC_COLORS environment
+       variable can be used to customize the colors or disable coloring
+       completely. Sample diagnostics output:
+      $ gfortran -fdiagnostics-color=always -Wuse-without-only test.f90
+      test.f90:6:1:
+
+       0 continue
+       1
+      Error: Zero is not a valid statement label at (1)
+      test.f90:9:6:
+
+         USE foo
+            1
+      Warning: USE statement at (1) has no ONLY qualifier [-Wuse-without-only]
+
+     * The -Wuse-without-only option has been added to warn when a USE
+       statement has no ONLY qualifier and, thus, implicitly imports all
+       public entities of the used module.
+     * Formatted READ and WRITE statements now work correctly in
+       locale-aware programs. For more information and potential caveats,
+       see [23]Section 5.3 Thread-safety of the runtime library in the
+       manual.
+     * [24]Fortran 2003:
+          + The intrinsic IEEE modules (IEEE_FEATURES, IEEE_EXCEPTIONS and
+            IEEE_ARITHMETIC) are now supported.
+     * [25]Fortran 2008:
+          + [26]Coarrays: Full experimental support of Fortran 2008's
+            coarrays with -fcoarray=lib except for allocatable/pointer
+            components of derived-type coarrays. GCC currently only ships
+            with a single-image library (libcaf_single), but multi-image
+            support based on MPI and GASNet is provided by the libraries
+            of the [27]OpenCoarrays project.
+     * TS18508 Additional Parallel Features in Fortran:
+          + Support for the collective intrinsic subroutines CO_MAX,
+            CO_MIN, CO_SUM, CO_BROADCAST and CO_REDUCE has been added,
+            including -fcoarray=lib support.
+          + Support for the new atomic intrinsics has been added,
+            including -fcoarray=lib support.
+     * Fortran 2015:
+          + Support for IMPLICIT NONE (external, type).
+          + ERROR STOP is now permitted in pure procedures.
+
+  Go
+
+     * GCC 5 provides a complete implementation of the Go 1.4.2 release.
+     * Building GCC 5 with Go enabled will install two new programs:
+       [28]go and [29]gofmt.
+
+libgccjit
+
+   New in GCC 5 is the ability to build GCC as a shared library for
+   embedding in other processes (such as interpreters), suitable for
+   Just-In-Time compilation to machine code.
+
+   The shared library has a [30]C API and a [31]C++ wrapper API providing
+   some "syntactic sugar". There are also bindings available from 3rd
+   parties for [32]Python and for [33]D.
+
+   For example, this library can be used by interpreters for [34]compiling
+   functions from bytecode to machine code.
+
+   The library can also be used for ahead-of-time compilation, enabling
+   GCC to be plugged into a pre-existing frontend. An example of using
+   this to build a compiler for an esoteric language we'll refer to as
+   "brainf" can be seen [35]here.
+
+   libgccjit is licensed under the GPLv3 (or at your option, any later
+   version)
+
+   It should be regarded as experimental at this time.
+
+New Targets and Target Specific Improvements
+
+  AArch64
+
+     * Code generation for the ARM Cortex-A57 processor has been improved.
+       A more accurate instruction scheduling model for the processor is
+       now used, and a number of compiler tuning parameters have been set
+       to offer increased performance when compiling with -mcpu=cortex-a57
+       or -mtune=cortex-a57.
+     * A workaround for the ARM Cortex-A53 erratum 835769 has been added
+       and can be enabled by giving the -mfix-cortex-a53-835769 option.
+       Alternatively it can be enabled by default by configuring GCC with
+       the --enable-fix-cortex-a53-835769 option.
+     * The optional cryptographic extensions to the ARMv8-A architecture
+       are no longer enabled by default when specifying the
+       -mcpu=cortex-a53, -mcpu=cortex-a57 or -mcpu=cortex-a57.cortex-a53
+       options. To enable these extensions add +crypto to the value of
+       -mcpu or -march e.g. -mcpu=cortex-a53+crypto.
+     * Support has been added for the following processors (GCC
+       identifiers in parentheses): ARM Cortex-A72 (cortex-a72) and
+       initial support for its big.LITTLE combination with the ARM
+       Cortex-A53 (cortex-a72.cortex-a53), Cavium ThunderX (thunderx),
+       Applied Micro X-Gene 1 (xgene1), and Samsung Exynos M1 (exynos-m1).
+       The GCC identifiers can be used as arguments to the -mcpu or -mtune
+       options, for example: -mcpu=xgene1 or -mtune=cortex-a72.cortex-a53.
+       Using -mcpu=cortex-a72 requires a version of GNU binutils that has
+       support for the Cortex-A72.
+     * The transitional options -mlra and -mno-lra have been removed. The
+       AArch64 backend now uses the local register allocator (LRA) only.
+
+  ARM
+
+     * Thumb-1 assembly code is now generated in unified syntax. The new
+       option -masm-syntax-unified specifies whether inline assembly code
+       is using unified syntax. By default the option is off which means
+       non-unified syntax is used. However this is subject to change in
+       future releases. Eventually the non-unified syntax will be
+       deprecated.
+     * It is now a configure-time error to use the --with-cpu configure
+       option with either of --with-tune or --with-arch.
+     * Code generation for the ARM Cortex-A57 processor has been improved.
+       A more accurate instruction scheduling model for the processor is
+       now used, and a number of compiler tuning parameters have been set
+       to offer increased performance when compiling with -mcpu=cortex-a57
+       or -mtune=cortex-a57.
+     * Support has been added for the following processors (GCC
+       identifiers in parentheses): ARM Cortex-A17 (cortex-a17) and
+       initial support for its big.LITTLE combination with the ARM
+       Cortex-A7 (cortex-a17.cortex-a7), ARM Cortex-A72 (cortex-a72) and
+       initial support for its big.LITTLE combination with the ARM
+       Cortex-A53 (cortex-a72.cortex-a53), ARM Cortex-M7 (cortex-m7),
+       Applied Micro X-Gene 1 (xgene1), and Samsung Exynos M1 (exynos-m1).
+       The GCC identifiers can be used as arguments to the -mcpu or -mtune
+       options, for example: -mcpu=xgene1 or -mtune=cortex-a72.cortex-a53.
+       Using -mcpu=cortex-a72 requires a version of GNU binutils that has
+       support for the Cortex-A72.
+     * The deprecated option -mwords-little-endian has been removed.
+     * The options -mapcs, -mapcs-frame, -mtpcs-frame and
+       -mtpcs-leaf-frame which are only applicable to the old ABI have
+       been deprecated.
+     * The transitional options -mlra and -mno-lra have been removed. The
+       ARM backend now uses the local register allocator (LRA) only.
+
+  IA-32/x86-64
+
+     * New ISA extensions support [36]AVX-512{BW,DQ,VL,IFMA,VBMI} of
+       Intel's CPU codenamed Skylake Server was added to GCC. That
+       includes inline assembly support, new intrinsics, and basic
+       autovectorization. These new AVX-512 extensions are available via
+       the following GCC switches: AVX-512 Vector Length EVEX feature:
+       -mavx512vl, AVX-512 Byte and Word instructions: -mavx512bw, AVX-512
+       Dword and Qword instructions: -mavx512dq, AVX-512 FMA-52
+       instructions: -mavx512ifma and for AVX-512 Vector Bit Manipulation
+       Instructions: -mavx512vbmi.
+     * New ISA extensions support [37]Intel MPX was added to GCC. This new
+       extension is available via the -mmpx compiler switch. Intel MPX is
+       a set of processor features which, with compiler, run-time library
+       and OS support, brings increased robustness to software by run-time
+       checking pointer references against their bounds. In GCC Intel MPX
+       is supported by Pointer Bounds Checker and libmpx run-time
+       libraries.
+     * The new -mrecord-mcount option for -pg generates a Linux kernel
+       style table of pointers to mcount or __fentry__ calls at the
+       beginning of functions. The new -mnop-mcount option in addition
+       also generates nops in place of the __fentry__ or mcount call, so
+       that a call per function can be later patched in. This can be used
+       for low overhead tracing or hot code patching.
+     * The new -malign-data option controls how GCC aligns variables.
+       -malign-data=compat uses increased alignment compatible with GCC
+       4.8 and earlier, -malign-data=abi uses alignment as specified by
+       the psABI, and -malign-data=cacheline uses increased alignment to
+       match the cache line size. -malign-data=compat is the default.
+     * The new -mskip-rax-setup option skips setting up the RAX register
+       when SSE is disabled and there are no variable arguments passed in
+       vector registers. This can be used to optimize the Linux kernel.
+
+  MIPS
+
+     * MIPS Releases 3 and 5 are now directly supported. Use the
+       command-line options -mips32r3, -mips64r3, -mips32r5 and -mips64r5
+       to enable code-generation for these processors.
+     * The Imagination P5600 processor is now supported using the
+       -march=p5600 command-line option.
+     * The Cavium Octeon3 processor is now supported using the
+       -march=octeon3 command-line option.
+     * MIPS Release 6 is now supported using the -mips32r6 and -mips64r6
+       command-line options.
+     * The o32 ABI has been modified and extended. The o32 64-bit
+       floating-point register support is now obsolete and has been
+       removed. It has been replaced by three ABI extensions FPXX, FP64A,
+       and FP64. The meaning of the -mfp64 command-line option has
+       changed. It is now used to enable the FP64A and FP64 ABI
+       extensions.
+          + The FPXX extension requires that code generated to access
+            double-precision values use even-numbered registers. Code that
+            adheres to this extension is link-compatible with all other
+            o32 double-precision ABI variants and will execute correctly
+            in all hardware FPU modes. The command-line options -mabi=32
+            -mfpxx can be used to enable this extension. MIPS II is the
+            minimum processor required.
+          + The o32 FP64A extension requires that floating-point registers
+            be 64-bit and odd-numbered single-precision registers are not
+            allowed. Code that adheres to the o32 FP64A variant is
+            link-compatible with all other o32 double-precision ABI
+            variants. The command-line options -mabi=32 -mfp64
+            -mno-odd-spreg can be used to enable this extension. MIPS32R2
+            is the minimum processor required.
+          + The o32 FP64 extension also requires that floating-point
+            registers be 64-bit, but permits the use of single-precision
+            registers. Code that adheres to the o32 FP64 variant is
+            link-compatible with o32 FPXX and o32 FP64A variants only,
+            i.e. it is not compatible with the original o32
+            double-precision ABI. The command-line options -mabi=32 -mfp64
+            -modd-spreg can be used to enable this extension. MIPS32R2 is
+            the minimum processor required.
+       The new ABI variants can be enabled by default using the configure
+       time options --with-fp-32=[32|xx|64] and --with(out)-odd-sp-reg-32.
+       It is strongly recommended that all vendors begin to set o32 FPXX
+       as the default ABI. This will be required to run the generated code
+       on MIPSR5 cores in conjunction with future MIPS SIMD (MSA) code and
+       MIPSR6 cores.
+     * GCC will now pass all floating-point options to the assembler if
+       GNU binutils 2.25 is used. As a result, any inline assembly code
+       that uses hard-float instructions should be amended to include a
+       .set directive to override the global assembler options when
+       compiling for soft-float targets.
+
+  NDS32
+
+     * The variadic function ABI implementation is now compatible with
+       past Andes toolchains where the caller uses registers to pass
+       arguments and the callee is in charge of pushing them on stack.
+     * The options -mforce-fp-as-gp, -mforbid-fp-as-gp, and -mex9 have
+       been removed since they are not yet available in the nds32 port of
+       GNU binutils.
+     * A new option -mcmodel=[small|medium|large] supports varied code
+       models on code generation. The -mgp-direct option became
+       meaningless and can be discarded.
+
+  RX
+
+     * A new command line option -mno-allow-string-insns can be used to
+       disable the generation of the SCMPU, SMOVU, SMOVB, SMOVF, SUNTIL,
+       SWHILE and RMPA instructions. An erratum released by Renesas shows
+       that it is unsafe to use these instructions on addresses within the
+       I/O space of the processor. The new option can be used when the
+       programmer is concerned that the I/O space might be accessed. The
+       default is still to enable these instructions.
+
+  SH
+
+     * The compiler will now pass the appropriate --isa= option to the
+       assembler.
+     * The default handling for the GBR has been changed from call
+       clobbered to call preserved. The old behavior can be reinstated by
+       specifying the option -fcall-used-gbr.
+     * Support for the SH4A fpchg instruction has been added which will be
+       utilized when switching between single and double precision FPU
+       modes.
+     * The compiler no longer uses the __fpscr_values array for switching
+       between single and double FPU precision modes on non-SH4A targets.
+       Instead mode switching will now be performed by storing, modifying
+       and reloading the FPSCR, so that other FPSCR bits are preserved
+       across mode switches. The __fpscr_values array that is defined in
+       libgcc is still present for backwards compatibility, but it will
+       not be referenced by compiler generated code anymore.
+     * New builtin functions __builtin_sh_get_fpscr and
+       __builtin_sh_set_fpscr have been added. The __builtin_sh_set_fpscr
+       function will mask the specified bits in such a way that the SZ, PR
+       and FR mode bits will be preserved, while changing the other bits.
+       These new functions do not reference the __fpscr_values array. The
+       old functions __set_fpscr and __get_fpscr in libgcc which access
+       the __fpscr_values array are still present for backwards
+       compatibility, but their usage is highly discouraged.
+     * Some improvements to code generated for __atomic built-in
+       functions.
+     * When compiling for SH2E the compiler will no longer force the usage
+       of delay slots for conditional branch instructions bt and bf. The
+       old behavior can be reinstated (e.g. to work around a hardware bug
+       in the original SH7055) by specifying the new option
+       -mcbranch-force-delay-slot.
+
+Operating Systems
+
+  DragonFly BSD
+
+     * GCC now supports the DragonFly BSD operating system.
+
+  FreeBSD
+
+     * GCC now supports the FreeBSD operating system for the arm port
+       through the arm*-*-freebsd* target triplets.
+
+  VxWorks MILS
+
+     * GCC now supports the MILS (Multiple Independent Levels of Security)
+       variant of WindRiver's VxWorks operating system for PowerPC
+       targets.
+
+Other significant improvements
+
+     * The gcc-ar, gcc-nm, gcc-ranlib wrappers now understand a -B option
+       to set the compiler to use.
+
+     * When the new command-line option -freport-bug is used, GCC
+       automatically generates a developer-friendly reproducer whenever an
+       internal compiler error is encountered.
+
+
+    For questions related to the use of GCC, please consult these web
+    pages and the [38]GCC manuals. If that fails, the
+    [39]gcc-help at gcc.gnu.org mailing list might help. Comments on these
+    web pages and the development of GCC are welcome on our developer
+    list at [40]gcc at gcc.gnu.org. All of [41]our lists have public
+    archives.
+
+   Copyright (C) [42]Free Software Foundation, Inc. Verbatim copying and
+   distribution of this entire article is permitted in any medium,
+   provided this notice is preserved.
+
+   These pages are [43]maintained by the GCC team. Last modified
+   2015-04-22[44].
+
+References
+
+   1. http://gcc.gnu.org/gcc-5/changes.html#libstdcxx
+   2. https://gcc.gnu.org/wiki/Intel MPX support in the GCC compiler
+   3. http://www.openmp.org/mp-documents/OpenMP4.0.0.pdf
+   4. http://openmp.org/mp-documents/OpenMP4.0.0.Examples.pdf
+   5. https://gcc.gnu.org/wiki/OpenACC
+   6. https://gcc.gnu.org/install/configure.html
+   7. https://www.cilkplus.org/
+   8. http://isocpp.org/std/standing-documents/sd-6-sg10-feature-test-recommendations
+   9. http://gcc.gnu.org/projects/cxx1y.html
+  10. http://isocpp.org/std/standing-documents/sd-6-sg10-feature-test-recommendations
+  11. http://gcc.gnu.org/projects/cxx1y.html
+  12. http://gcc.gnu.org/projects/cxx1y.html
+  13. http://gcc.gnu.org/projects/cxx1y.html
+  14. http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3639.html
+  15. http://gcc.gnu.org/onlinedocs/libstdc++/manual/using_dual_abi.html
+  16. https://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html#status.iso.2011
+  17. https://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html#status.iso.2014
+  18. https://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html#status.iso.2014
+  19. https://sourceware.org/gdb/current/onlinedocs/gdb/Xmethods-In-Python.html
+  20. https://gcc.gnu.org/onlinedocs/gfortran/Error-and-Warning-Options.html
+  21. https://gcc.gnu.org/onlinedocs/gcc/Language-Independent-Options.html
+  22. https://gcc.gnu.org/install/configure.html
+  23. https://gcc.gnu.org/onlinedocs/gfortran/Thread-safety-of-the-runtime-library.html
+  24. https://gcc.gnu.org/wiki/Fortran2003Status
+  25. https://gcc.gnu.org/wiki/Fortran2008Status
+  26. https://gcc.gnu.org/wiki/Coarray
+  27. http://www.opencoarrays.org/
+  28. http://golang.org/cmd/go
+  29. http://golang.org/cmd/gofmt
+  30. https://gcc.gnu.org/onlinedocs/jit/intro/index.html
+  31. https://gcc.gnu.org/onlinedocs/jit/cp/index.html
+  32. https://github.com/davidmalcolm/pygccjit
+  33. https://github.com/ibuclaw/gccjitd
+  34. https://gcc.gnu.org/onlinedocs/jit/intro/tutorial04.html
+  35. https://gcc.gnu.org/onlinedocs/jit/intro/tutorial05.html
+  36. https://software.intel.com/sites/default/files/managed/0d/53/319433-022.pdf
+  37. https://software.intel.com/sites/default/files/managed/0d/53/319433-022.pdf
+  38. https://gcc.gnu.org/onlinedocs/
+  39. mailto:gcc-help at gcc.gnu.org
+  40. mailto:gcc at gcc.gnu.org
+  41. https://gcc.gnu.org/lists.html
+  42. http://www.fsf.org/
+  43. https://gcc.gnu.org/about.html
+  44. http://validator.w3.org/check/referer
+======================================================================
+http://gcc.gnu.org/gcc-4.9/index.html
+                             GCC 4.9 Release Series
+
+   October 30, 2014
+
+   The [1]GNU project and the GCC developers are pleased to announce the
+   release of GCC 4.9.2.
+
+   This release is a bug-fix release, containing fixes for regressions in
+   GCC 4.9.1 relative to previous releases of GCC.
+
+Release History
+
+   GCC 4.9.2
+          October 30, 2014 ([2]changes, [3]documentation)
+
+   GCC 4.9.1
+          July 16, 2014 ([4]changes, [5]documentation)
+
+   GCC 4.9.0
+          April 22, 2014 ([6]changes, [7]documentation)
+
+References and Acknowledgements
+
+   GCC used to stand for the GNU C Compiler, but since the compiler
+   supports several other languages aside from C, it now stands for the
+   GNU Compiler Collection.
+
+   A list of [8]successful builds is updated as new information becomes
+   available.
+
+   The GCC developers would like to thank the numerous people that have
+   contributed new features, improvements, bug fixes, and other changes as
+   well as test results to GCC. This [9]amazing group of volunteers is
+   what makes GCC successful.
+
+   For additional information about GCC please refer to the [10]GCC
+   project web site or contact the [11]GCC development mailing list.
+
+   To obtain GCC please use [12]our mirror sites or [13]our SVN server.
+
+
+    For questions related to the use of GCC, please consult these web
+    pages and the [14]GCC manuals. If that fails, the
+    [15]gcc-help at gcc.gnu.org mailing list might help. Comments on these
+    web pages and the development of GCC are welcome on our developer
+    list at [16]gcc at gcc.gnu.org. All of [17]our lists have public
+    archives.
+
+   Copyright (C) [18]Free Software Foundation, Inc. Verbatim copying and
+   distribution of this entire article is permitted in any medium,
+   provided this notice is preserved.
+
+   These pages are [19]maintained by the GCC team. Last modified
+   2014-10-30[20].
+
+References
+
+   1. http://www.gnu.org/
+   2. http://gcc.gnu.org/gcc-4.9/changes.html
+   3. http://gcc.gnu.org/onlinedocs/4.9.2/
+   4. http://gcc.gnu.org/gcc-4.9/changes.html
+   5. http://gcc.gnu.org/onlinedocs/4.9.1/
+   6. http://gcc.gnu.org/gcc-4.9/changes.html
+   7. https://gcc.gnu.org/onlinedocs/4.9.0/
+   8. http://gcc.gnu.org/gcc-4.9/buildstat.html
+   9. https://gcc.gnu.org/onlinedocs/gcc/Contributors.html
+  10. http://gcc.gnu.org/index.html
+  11. mailto:gcc at gcc.gnu.org
+  12. http://gcc.gnu.org/mirrors.html
+  13. http://gcc.gnu.org/svn.html
+  14. https://gcc.gnu.org/onlinedocs/
+  15. mailto:gcc-help at gcc.gnu.org
+  16. mailto:gcc at gcc.gnu.org
+  17. https://gcc.gnu.org/lists.html
+  18. http://www.fsf.org/
+  19. https://gcc.gnu.org/about.html
+  20. http://validator.w3.org/check/referer
+======================================================================
+http://gcc.gnu.org/gcc-4.9/changes.html
+                             GCC 4.9 Release Series
+                        Changes, New Features, and Fixes
+
+Caveats
+
+     * The mudflap run time checker has been removed. The mudflap options
+       remain, but do nothing.
+     * Support for a number of older systems and recently unmaintained or
+       untested target ports of GCC has been declared obsolete in GCC 4.9.
+       Unless there is activity to revive them, the next release of GCC
+       will have their sources permanently removed.
+       The following ports for individual systems on particular
+       architectures have been obsoleted:
+          + Solaris 9 (*-*-solaris2.9). Details can be found in the
+            [1]announcement.
+     * On AArch64, the singleton vector types int64x1_t, uint64x1_t and
+       float64x1_t exported by arm_neon.h are defined to be the same as
+       their base types. This results in incorrect application of
+       parameter passing rules to arguments of types int64x1_t and
+       uint64x1_t, with respect to the AAPCS64 ABI specification. In
+       addition, names of C++ functions with parameters of these types
+       (including float64x1_t) are not mangled correctly. The current
+       typedef declarations also unintentionally allow implicit casting
+       between singleton vector types and their base types. These issues
+       will be resolved in a near future release. See [2]PR60825 for more
+       information.
+
+   More information on porting to GCC 4.9 from previous versions of GCC
+   can be found in the [3]porting guide for this release.
+
+General Optimizer Improvements
+
+     * AddressSanitizer, a fast memory error detector, is now available on
+       ARM.
+     * UndefinedBehaviorSanitizer (ubsan), a fast undefined behavior
+       detector, has been added and can be enabled via
+       -fsanitize=undefined. Various computations will be instrumented to
+       detect undefined behavior at runtime. UndefinedBehaviorSanitizer is
+       currently available for the C and C++ languages.
+     * Link-time optimization (LTO) improvements:
+          + Type merging was rewritten. The new implementation is
+            significantly faster and uses less memory.
+          + Better partitioning algorithm resulting in less streaming
+            during link time.
+          + Early removal of virtual methods reduces the size of object
+            files and improves link-time memory usage and compile time.
+          + Function bodies are now loaded on-demand and released early
+            improving overall memory usage at link time.
+          + C++ hidden keyed methods can now be optimized out.
+          + When using a linker plugin, compiling with the -flto option
+            now generates slim object files (.o) which only contain
+            intermediate language representation for LTO. Use
+            -ffat-lto-objects to create files which contain additionally
+            the object code. To generate static libraries suitable for LTO
+            processing, use gcc-ar and gcc-ranlib; to list symbols from a
+            slim object file use gcc-nm. (This requires that ar, ranlib
+            and nm have been compiled with plugin support.)
+       Memory usage building Firefox with debug enabled was reduced from
+       15GB to 3.5GB; link time from 1700 seconds to 350 seconds.
+     * Inter-procedural optimization improvements:
+          + New type inheritance analysis module improving
+            devirtualization. Devirtualization now takes into account
+            anonymous name-spaces and the C++11 final keyword.
+          + New speculative devirtualization pass (controlled by
+            -fdevirtualize-speculatively.
+          + Calls that were speculatively made direct are turned back to
+            indirect where direct call is not cheaper.
+          + Local aliases are introduced for symbols that are known to be
+            semantically equivalent across shared libraries improving
+            dynamic linking times.
+     * Feedback directed optimization improvements:
+          + Profiling of programs using C++ inline functions is now more
+            reliable.
+          + New time profiling determines typical order in which functions
+            are executed.
+          + A new function reordering pass (controlled by
+            -freorder-functions) significantly reduces startup time of
+            large applications. Until binutils support is completed, it is
+            effective only with link-time optimization.
+          + Feedback driven indirect call removal and devirtualization now
+            handle cross-module calls when link-time optimization is
+            enabled.
+
+New Languages and Language specific improvements
+
+     * Version 4.0 of the [4]OpenMP specification is now supported in the
+       C and C++ compilers and starting with the 4.9.1 release also in the
+       Fortran compiler. The new -fopenmp-simd option can be used to
+       enable OpenMP's SIMD directives, while ignoring other OpenMP
+       directives. The new [5]-fsimd-cost-model= option permits to tune
+       the vectorization cost model for loops annotated with OpenMP and
+       Cilk Plus simd directives; -Wopenmp-simd warns when the current
+       cost model overrides simd directives set by the user.
+     * The -Wdate-time option has been added for the C, C++ and Fortran
+       compilers, which warns when the __DATE__, __TIME__ or __TIMESTAMP__
+       macros are used. Those macros might prevent bit-wise-identical
+       reproducible compilations.
+
+  Ada
+
+     * GNAT switched to Ada 2012 instead of Ada 2005 by default.
+
+  C family
+
+     * Support for colorizing diagnostics emitted by GCC has been added.
+       The [6]-fdiagnostics-color=auto will enable it when outputting to
+       terminals, -fdiagnostics-color=always unconditionally. The
+       GCC_COLORS environment variable can be used to customize the colors
+       or disable coloring. If GCC_COLORS variable is present in the
+       environment, the default is -fdiagnostics-color=auto, otherwise
+       -fdiagnostics-color=never.
+       Sample diagnostics output:
+    $ g++ -fdiagnostics-color=always -S -Wall test.C
+    test.C: In function ‘int foo()’:
+    test.C:1:14: warning: no return statement in function returning non-void [-W
+return-type]
+     int foo () { }
+                  ^
+    test.C:2:46: error: template instantiation depth exceeds maximum of 900 (use
+ -ftemplate-depth= to increase the maximum) instantiating ‘struct X<100>’
+     template <int N> struct X { static const int value = X<N-1>::value; }; temp
+late struct X<1000>;
+                                                  ^
+    test.C:2:46:   recursively required from ‘const int X<999>::value’
+    test.C:2:46:   required from ‘const int X<1000>::value’
+    test.C:2:88:   required from here
+
+    test.C:2:46: error: incomplete type ‘X<100>’ used in nested name specifier
+
+     * With the new [7]#pragma GCC ivdep, the user can assert that there
+       are no loop-carried dependencies which would prevent concurrent
+       execution of consecutive iterations using SIMD (single instruction
+       multiple data) instructions.
+     * Support for [8]Cilk Plus has been added and can be enabled with the
+       -fcilkplus option. Cilk Plus is an extension to the C and C++
+       languages to support data and task parallelism. The present
+       implementation follows ABI version 1.2; all features but _Cilk_for
+       have been implemented.
+
+  C
+
+     * ISO C11 atomics (the _Atomic type specifier and qualifier and the
+       <stdatomic.h> header) are now supported.
+     * ISO C11 generic selections (_Generic keyword) are now supported.
+     * ISO C11 thread-local storage (_Thread_local, similar to GNU C
+       __thread) is now supported.
+     * ISO C11 support is now at a similar level of completeness to ISO
+       C99 support: substantially complete modulo bugs, extended
+       identifiers (supported except for corner cases when
+       -fextended-identifiers is used), floating-point issues (mainly but
+       not entirely relating to optional C99 features from Annexes F and
+       G) and the optional Annexes K (Bounds-checking interfaces) and L
+       (Analyzability).
+     * A new C extension __auto_type provides a subset of the
+       functionality of C++11 auto in GNU C.
+
+  C++
+
+     * The G++ implementation of [9]C++1y return type deduction for normal
+       functions has been updated to conform to [10]N3638, the proposal
+       accepted into the working paper. Most notably, it adds
+       decltype(auto) for getting decltype semantics rather than the
+       template argument deduction semantics of plain auto:
+
+int& f();
+         auto  i1 = f(); // int
+decltype(auto) i2 = f(); // int&
+
+     * G++ supports [11]C++1y lambda capture initializers:
+
+[x = 42]{ ... };
+
+       Actually, they have been accepted since GCC 4.5, but now the
+       compiler doesn't warn about them with -std=c++1y, and supports
+       parenthesized and brace-enclosed initializers as well.
+     * G++ supports [12]C++1y variable length arrays. G++ has supported
+       GNU/C99-style VLAs for a long time, but now additionally supports
+       initializers and lambda capture by reference. In C++1y mode G++
+       will complain about VLA uses that are not permitted by the draft
+       standard, such as forming a pointer to VLA type or applying sizeof
+       to a VLA variable. Note that it now appears that VLAs will not be
+       part of C++14, but will be part of a separate document and then
+       perhaps C++17.
+
+void f(int n) {
+  int a[n] = { 1, 2, 3 }; // throws std::bad_array_length if n < 3
+  [&a]{ for (int i : a) { cout << i << endl; } }();
+  &a; // error, taking address of VLA
+}
+
+     * G++ supports the [13]C++1y [[deprecated]] attribute modulo bugs in
+       the underlying [[gnu::deprecated]] attribute. Classes and functions
+       can be marked deprecated and a diagnostic message added:
+
+class A;
+int bar(int n);
+#if __cplusplus > 201103
+class [[deprecated("A is deprecated in C++14; Use B instead")]] A;
+[[deprecated("bar is unsafe; use foo() instead")]]
+int bar(int n);
+
+int foo(int n);
+class B;
+#endif
+A aa; // warning: 'A' is deprecated : A is deprecated in C++14; Use B instead
+int j = bar(2); // warning: 'int bar(int)' is deprecated : bar is unsafe; use fo
+o() instead
+
+     * G++ supports [14]C++1y digit separators. Long numeric literals can
+       be subdivided with a single quote ' to enhance readability:
+
+int i = 1048576;
+int j = 1'048'576;
+int k = 0x10'0000;
+int m = 0'004'000'000;
+int n = 0b0001'0000'0000'0000'0000'0000;
+
+double x = 1.602'176'565e-19;
+double y = 1.602'176'565e-1'9;
+
+     * G++ supports [15]C++1y generic (polymorphic) lambdas.
+
+// a functional object that will increment any type
+auto incr = [](auto x) { return x++; };
+
+     * As a GNU extension, G++ supports explicit template parameter syntax
+       for generic lambdas. This can be combined in the expected way with
+       the standard auto syntax.
+
+// a functional object that will add two like-type objects
+auto add = [] <typename T> (T a, T b) { return a + b; };
+
+     * G++ supports unconstrained generic functions as specified by §4.1.2
+       and §5.1.1 of [16]N3889: Concepts Lite Specification. Briefly, auto
+       may be used as a type-specifier in a parameter declaration of any
+       function declarator in order to introduce an implicit function
+       template parameter, akin to generic lambdas.
+
+// the following two function declarations are equivalent
+auto incr(auto x) { return x++; }
+template <typename T>
+auto incr(T x) { return x++; }
+
+    Runtime Library (libstdc++)
+
+     * [17]Improved support for C++11, including:
+          + support for <regex>;
+          + The associative containers in <map> and <set> and the
+            unordered associative containers in <unordered_map> and
+            <unordered_set> meet the allocator-aware container
+            requirements;
+     * [18]Improved experimental support for the upcoming ISO C++
+       standard, C++14, including:
+          + fixing constexpr member functions without const;
+          + implementation of the std::exchange() utility function;
+          + addressing tuples by type;
+          + implemention of std::make_unique;
+          + implemention of std::shared_lock;
+          + making std::result_of SFINAE-friendly;
+          + adding operator() to std::integral_constant;
+          + adding user-defined literals for standard library types
+            std::basic_string, std::chrono::duration, and std::complex;
+          + adding two range overloads to non-modifying sequence oprations
+            std::equal and std::mismatch;
+          + adding IO manipulators for quoted strings;
+          + adding constexpr members to <utility>, <complex>, <chrono>,
+            and some containers;
+          + adding compile-time std::integer_sequence;
+          + adding cleaner transformation traits;
+          + making <functional>s operator functors easier to use and more
+            generic;
+     * An implementation of std::experimental::optional.
+     * An implementation of std::experimental::string_view.
+     * The non-standard function std::copy_exception has been deprecated
+       and will be removed in a future version. std::make_exception_ptr
+       should be used instead.
+
+  Fortran
+
+     * Compatibility notice:
+          + Module files: The version of the module files (.mod) has been
+            incremented; additionally, module files are now compressed.
+            Fortran MODULEs compiled by earlier GCC versions have to be
+            recompiled, when they are USEd by files compiled with GCC 4.9.
+            GCC 4.9 is not able to read .mod files of earlier GCC
+            versions; attempting to do so gives an error message. Note:
+            The ABI of the produced assembler data itself has not changed:
+            object files and libraries are fully compatible with older
+            versions (except as stated below).
+          + ABI changes:
+               o The [19]argument passing ABI has changed for scalar dummy
+                 arguments of type INTEGER, REAL, COMPLEX and LOGICAL,
+                 which have both the VALUE and the OPTIONAL attributes.
+               o To support finalization the virtual table associated with
+                 polymorphic variables has changed. Code containing CLASS
+                 should be recompiled, including all files which define
+                 derived types involved in the type definition used by
+                 polymorphic variables. (Note: Due to the incremented
+                 module version, trying to mix old code with new code will
+                 usually give an error message.)
+          + GNU Fortran no longer deallocates allocatable variables or
+            allocatable components of variables declared in the main
+            program. Since Fortran 2008, the standard explicitly states
+            that variables declared in the Fortran main program
+            automatically have the SAVE attribute.
+          + When opening files, the close-on-exec flag is set if the
+            system supports such a feature. This is generally considered
+            good practice these days, but if there is a need to pass file
+            descriptors to child processes the parent process must now
+            remember to clear the close-on-exec flag by calling fcntl(),
+            e.g. via ISO_C_BINDING, before executing the child process.
+     * The deprecated command-line option -fno-whole-file has been
+       removed. (-fwhole-file is the default since GCC 4.6.)
+       -fwhole-file/-fno-whole-file continue to be accepted but do not
+       influence the code generation.
+     * The compiler no longer unconditionally warns about DO loops with
+       zero iterations. This warning is now controlled by the -Wzerotrip
+       option, which is implied by -Wall.
+     * The new NO_ARG_CHECK attribute of the [20]!GCC$ directive can be
+       used to disable the type-kind-rank (TKR) argument check for a dummy
+       argument. The feature is similar to ISO/IEC TS 29133:2012's
+       TYPE(*), except that it additionally also disables the rank check.
+       Variables with NO_ARG_CHECK have to be dummy arguments and may only
+       be used as argument to ISO_C_BINDING's C_LOC and as actual argument
+       to another NO_ARG_CHECK dummy argument; also the other constraints
+       of TYPE(*) apply. The dummy arguments should be declared as scalar
+       or assumed-size variable of type type(*) (recommended) – or of type
+       integer, real, complex or logical. With NO_ARG_CHECK, a pointer to
+       the data without further type or shape information is passed,
+       similar to C's void*. Note that also TS 29113's
+       type(*),dimension(..) accepts arguments of any type and rank;
+       contrary to NO_ARG_CHECK assumed-rank arguments pass an array
+       descriptor which contains the array shape and stride of the
+       argument.
+     * [21]Fortran 2003:
+          + Finalization is now supported. It is currently only done for a
+            subset of those situations in which it should occur.
+          + Experimental support for scalar character components with
+            deferred length (i.e. allocatable string length) in derived
+            types has been added. (Deferred-length character variables are
+            supported since GCC 4.6.)
+     * [22]Fortran 2008:
+          + When STOP or ERROR STOP are used to terminate the execution
+            and any exception (but inexact) is signaling, a warning is
+            printed to ERROR_UNIT, indicating which exceptions are
+            signaling. The [23]-ffpe-summary= command-line option can be
+            used to fine-tune for which exceptions the warning should be
+            shown.
+          + Rounding on input (READ) is now handled on systems where
+            strtod honours the rounding mode. (For output, rounding is
+            supported since GCC 4.5.) Note that for input, the compatible
+            rounding mode is handled as nearest (i.e., for a tie, rounding
+            to an even last significant [cf. IEC 60559:1989] – while
+            compatible rounds away from zero for a tie).
+
+  Go
+
+     * GCC 4.9 provides a complete implementation of the Go 1.2.1 release.
+
+New Targets and Target Specific Improvements
+
+  AArch64
+
+     * The ARMv8-A crypto and CRC instructions are now supported through
+       intrinsics. These are enabled when the architecture supports these
+       and are available through the -march=armv8-a+crc and
+       -march=armv8-a+crypto options.
+     * Initial support for ILP32 has now been added to the compiler. This
+       is now available through the command-line option -mabi=ilp32.
+       Support for ILP32 is considered experimental as the ABI
+       specification is still beta.
+     * Coverage of more of the ISA including the SIMD extensions has been
+       added. The Advanced SIMD intrinsics have also been improved.
+     * The new local register allocator (LRA) is now on by default for the
+       AArch64 backend.
+     * The REE (Redundant extension elimination) pass has now been enabled
+       by default for the AArch64 backend.
+     * Tuning for the Cortex-A53 and Cortex-A57 has been improved.
+     * Initial big.LITTLE tuning support for the combination of Cortex-A57
+       and Cortex-A53 was added through the -mcpu=cortex-a57.cortex-a53
+       option.
+     * A number of structural changes have been made to both the ARM and
+       AArch64 backends to facilitate improved code-generation.
+     * As of GCC 4.9.2 a workaround for the ARM Cortex-A53 erratum 835769
+       has been added and can be enabled by giving the
+       -mfix-cortex-a53-835769 option. Alternatively it can be enabled by
+       default by configuring GCC with the --enable-fix-cortex-a53-835769
+       option.
+
+  ARC
+
+     * A port for Synopsys Designware ARC has been contributed by Embecosm
+       and Synopsys Inc.
+
+  ARM
+
+     * Use of Advanced SIMD (Neon) for 64-bit scalar computations has been
+       disabled by default. This was found to generate better code in only
+       a small number of cases. It can be turned back on with the
+       -mneon-for-64bits option.
+     * Further support for the ARMv8-A architecture, notably implementing
+       the restriction around IT blocks in the Thumb32 instruction set has
+       been added. The -mrestrict-it option can be used with
+       -march=armv7-a or the -march=armv7ve options to make code
+       generation fully compatible with the deprecated instructions in
+       ARMv8-A.
+     * Support has now been added for the ARMv7ve variant of the
+       architecture. This can be used by the -march=armv7ve option.
+     * The ARMv8-A crypto and CRC instructions are now supported through
+       intrinsics and are available through the -march=armv8-a+crc and
+       mfpu=crypto-neon-fp-armv8 options.
+     * LRA is now on by default for the ARM target. This can be turned off
+       using the -mno-lra option. This option is a purely transitionary
+       command-line option and will be removed in a future release. We are
+       interested in any bug reports regarding functional and performance
+       regressions with LRA.
+     * A new option -mslow-flash-data to improve performance of programs
+       fetching data on slow flash memory has now been introduced for the
+       ARMv7-M profile cores.
+     * A new option -mpic-data-is-text-relative for targets that allows
+       data segments to be relative to text segments has been added. This
+       is on by default for all targets except VxWorks RTP.
+     * A number of infrastructural changes have been made to both the ARM
+       and AArch64 backends to facilitate improved code-generation.
+     * GCC now supports Cortex-A12 and the Cortex-R7 through the
+       -mcpu=cortex-a12 and -mcpu=cortex-r7 options.
+     * GCC now has tuning for the Cortex-A57 and Cortex-A53 through the
+       -mcpu=cortex-a57 and -mcpu=cortex-a53 options.
+     * Initial big.LITTLE tuning support for the combination of Cortex-A57
+       and Cortex-A53 was added through the -mcpu=cortex-a57.cortex-a53
+       option. Similar support was added for the combination of Cortex-A15
+       and Cortex-A7 through the -mcpu=cortex-a15.cortex-a7 option.
+     * Further performance optimizations for the Cortex-A15 and the
+       Cortex-M4 have been added.
+     * A number of code generation improvements for Thumb2 to reduce code
+       size when compiling for the M-profile processors.
+
+  IA-32/x86-64
+
+     * -mfpmath=sse is now implied by -ffast-math on all targets where
+       SSE2 is supported.
+     * Intel AVX-512 support was added to GCC. That includes inline
+       assembly support, new registers and extending existing ones, new
+       intrinsics (covered by corresponding testsuite), and basic
+       autovectorization. AVX-512 instructions are available via the
+       following GCC switches: AVX-512 foundation instructions: -mavx512f,
+       AVX-512 prefetch instructions: -mavx512pf, AVX-512 exponential and
+       reciprocal instructions: -mavx512er, AVX-512 conflict detection
+       instructions: -mavx512cd.
+     * It is now possible to call x86 intrinsics from select functions in
+       a file that are tagged with the corresponding target attribute
+       without having to compile the entire file with the -mxxx option.
+       This improves the usability of x86 intrinsics and is particularly
+       useful when doing [24]Function Multiversioning.
+     * GCC now supports the new Intel microarchitecture named Silvermont
+       through -march=silvermont.
+     * GCC now supports the new Intel microarchitecture named Broadwell
+       through -march=broadwell.
+     * Optimizing for other Intel microarchitectures have been renamed to
+       -march=nehalem, westmere, sandybridge, ivybridge, haswell, bonnell.
+     * -march=generic has been retuned for better support of Intel core
+       and AMD Bulldozer architectures. Performance of AMD K7, K8, Intel
+       Pentium-M, and Pentium4 based CPUs is no longer considered
+       important for generic.
+     * -mtune=intel can now be used to generate code running well on the
+       most current Intel processors, which are Haswell and Silvermont for
+       GCC 4.9.
+     * Support to encode 32-bit assembly instructions in 16-bit format is
+       now available through the -m16 command-line option.
+     * Better inlining of memcpy and memset that is aware of value ranges
+       and produces shorter alignment prologues.
+     * -mno-accumulate-outgoing-args is now honored when unwind
+       information is output. Argument accumulation is also now turned off
+       for portions of programs optimized for size.
+     * Support for new AMD family 15h processors (Excavator core) is now
+       available through the -march=bdver4 and -mtune=bdver4 options.
+
+  MSP430
+
+     * A new command-line option -mcpu= has been added to the MSP430
+       backend. This option is used to specify the ISA to be used.
+       Accepted values are msp430 (the default), msp430x and msp430xv2.
+       The ISA is no longer deduced from the -mmcu= option as there are
+       far too many different MCU names. The -mmcu= option is still
+       supported, and this is still used to select linker scripts and
+       generate a C preprocessor symbol that will be recognised by the
+       msp430.h header file.
+
+  NDS32
+
+     * A new nds32 port supports the 32-bit architecture from Andes
+       Technology Corporation.
+     * The port provides initial support for the V2, V3, V3m instruction
+       set architectures.
+
+  Nios II
+
+     * A port for the Altera Nios II has been contributed by Mentor
+       Graphics.
+
+  PowerPC / PowerPC64 / RS6000
+
+     * GCC now supports Power ISA 2.07, which includes support for
+       Hardware Transactional Memory (HTM), Quadword atomics and several
+       VMX and VSX additions, including Crypto, 64-bit integer, 128-bit
+       integer and decimal integer operations.
+     * Support for the POWER8 processor is now available through the
+       -mcpu=power8 and -mtune=power8 options.
+     * The libitm library has been modified to add a HTM fastpath that
+       automatically uses POWER's HTM hardware instructions when it is
+       executing on a HTM enabled processor.
+     * Support for the new powerpc64le-linux platform has been added. It
+       defaults to generating code that conforms to the ELFV2 ABI.
+
+  S/390, System z
+
+     * Support for the Transactional Execution Facility included with the
+       IBM zEnterprise zEC12 processor has been added. A set of GCC style
+       builtins as well as XLC style builtins are provided. The builtins
+       are enabled by default when using the -march=zEC12 option but can
+       explicitly be disabled with -mno-htm. Using the GCC builtins also
+       libitm supports hardware transactions on S/390.
+     * The hotpatch features allows to prepare functions for hotpatching.
+       A certain amount of bytes is reserved before the function entry
+       label plus a NOP is inserted at its very beginning to implement a
+       backward jump when applying a patch. The feature can either be
+       enabled per compilation unit via the command-line option -mhotpatch
+       or per function using the hotpatch attribute.
+     * The shrink wrap optimization is now supported on S/390 and enabled
+       by default.
+     * A major rework of the routines to determine which registers need to
+       be saved and restored in function prologue/epilogue now allow to
+       use floating point registers as save slots. This will happen for
+       certain leaf function with -march=z10 or higher.
+     * The LRA rtl pass replaces reload by default on S/390.
+
+  RX
+
+     * The port now allows to specify the RX100, RX200, and RX600
+       processors with the command-line options -mcpu=rx100, -mcpu=rx200
+       and -mcpu=rx600.
+
+  SH
+
+     * Minor improvements to code generated for integer arithmetic and
+       code that involves the T bit.
+     * Added support for the SH2A clips and clipu instructions. The
+       compiler will now try to utilize them for min/max expressions such
+       as max (-128, min (127, x)).
+     * Added support for the cmp/str instruction through built-in
+       functions such as __builtin_strlen. When not optimizing for size,
+       the compiler will now expand calls to e.g. strlen as an inlined
+       sequences which utilize the cmp/str instruction.
+     * Improved code generated around volatile memory loads and stores.
+     * The option -mcbranchdi has been deprecated. Specifying it will
+       result in a warning and will not influence code generation.
+     * The option -mcmpeqdi has been deprecated. Specifying it will result
+       in a warning and will not influence code generation.
+
+GCC 4.9.1
+
+   This is the [25]list of problem reports (PRs) from GCC's bug tracking
+   system that are known to be fixed in the 4.9.1 release. This list might
+   not be complete (that is, it is possible that some PRs that have been
+   fixed are not listed here).
+
+   Version 4.0 of the [26]OpenMP specification is supported even in
+   Fortran, not just C and C++.
+
+GCC 4.9.2
+
+   This is the [27]list of problem reports (PRs) from GCC's bug tracking
+   system that are known to be fixed in the 4.9.2 release. This list might
+   not be complete (that is, it is possible that some PRs that have been
+   fixed are not listed here).
+
+
+    For questions related to the use of GCC, please consult these web
+    pages and the [28]GCC manuals. If that fails, the
+    [29]gcc-help at gcc.gnu.org mailing list might help. Comments on these
+    web pages and the development of GCC are welcome on our developer
+    list at [30]gcc at gcc.gnu.org. All of [31]our lists have public
+    archives.
+
+   Copyright (C) [32]Free Software Foundation, Inc. Verbatim copying and
+   distribution of this entire article is permitted in any medium,
+   provided this notice is preserved.
+
+   These pages are [33]maintained by the GCC team. Last modified
+   2015-04-08[34].
+
+References
+
+   1. https://gcc.gnu.org/ml/gcc-patches/2013-05/msg00728.html
+   2. https://gcc.gnu.org/PR60825
+   3. https://gcc.gnu.org/gcc-4.9/porting_to.html
+   4. http://openmp.org/wp/openmp-specifications/
+   5. https://gcc.gnu.org/onlinedocs/gcc-4.9.2/gcc/Optimize-Options.html#index-fsimd-cost-model-908
+   6. https://gcc.gnu.org/onlinedocs/gcc-4.9.2/gcc/Language-Independent-Options.html#index-fdiagnostics-color-252
+   7. https://gcc.gnu.org/onlinedocs/gcc-4.9.2/gcc/Loop-Specific-Pragmas.html
+   8. https://www.cilkplus.org/
+   9. http://gcc.gnu.org/projects/cxx1y.html
+  10. http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3638.html
+  11. http://gcc.gnu.org/projects/cxx1y.html
+  12. http://gcc.gnu.org/projects/cxx1y.html
+  13. http://gcc.gnu.org/projects/cxx1y.html
+  14. http://gcc.gnu.org/projects/cxx1y.html
+  15. http://gcc.gnu.org/projects/cxx1y.html
+  16. http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n3889.pdf
+  17. https://gcc.gnu.org/onlinedocs/gcc-4.9.2/libstdc++/manual/manual/status.html#status.iso.2011
+  18. https://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html#status.iso.2014
+  19. https://gcc.gnu.org/onlinedocs/gcc-4.9.2/gfortran/Argument-passing-conventions.html
+  20. https://gcc.gnu.org/onlinedocs/gcc-4.9.2/gfortran/GNU-Fortran-Compiler-Directives.html
+  21. https://gcc.gnu.org/wiki/Fortran2003Status
+  22. https://gcc.gnu.org/wiki/Fortran2008Status
+  23. https://gcc.gnu.org/onlinedocs/gcc-4.9.2/gfortran/Debugging-Options.html
+  24. https://gcc.gnu.org/onlinedocs/gcc-4.9.2/gcc/Function-Multiversioning.html
+  25. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.9.1
+  26. http://openmp.org/wp/openmp-specifications/
+  27. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.9.2
+  28. https://gcc.gnu.org/onlinedocs/
+  29. mailto:gcc-help at gcc.gnu.org
+  30. mailto:gcc at gcc.gnu.org
+  31. https://gcc.gnu.org/lists.html
+  32. http://www.fsf.org/
+  33. https://gcc.gnu.org/about.html
+  34. http://validator.w3.org/check/referer
+======================================================================
+http://gcc.gnu.org/gcc-4.8/index.html
+                             GCC 4.8 Release Series
+
+   December 19, 2014
+
+   The [1]GNU project and the GCC developers are pleased to announce the
+   release of GCC 4.8.4.
+
+   This release is a bug-fix release, containing fixes for regressions in
+   GCC 4.8.3 relative to previous releases of GCC.
+
+Release History
+
+   GCC 4.8.4
+          December 19, 2014 ([2]changes, [3]documentation)
+
+   GCC 4.8.3
+          May 22, 2014 ([4]changes, [5]documentation)
+
+   GCC 4.8.2
+          October 16, 2013 ([6]changes, [7]documentation)
+
+   GCC 4.8.1
+          May 31, 2013 ([8]changes, [9]documentation)
+
+   GCC 4.8.0
+          March 22, 2013 ([10]changes, [11]documentation)
+
+References and Acknowledgements
+
+   GCC used to stand for the GNU C Compiler, but since the compiler
+   supports several other languages aside from C, it now stands for the
+   GNU Compiler Collection.
+
+   A list of [12]successful builds is updated as new information becomes
+   available.
+
+   The GCC developers would like to thank the numerous people that have
+   contributed new features, improvements, bug fixes, and other changes as
+   well as test results to GCC. This [13]amazing group of volunteers is
+   what makes GCC successful.
+
+   For additional information about GCC please refer to the [14]GCC
+   project web site or contact the [15]GCC development mailing list.
+
+   To obtain GCC please use [16]our mirror sites or [17]our SVN server.
+
+
+    For questions related to the use of GCC, please consult these web
+    pages and the [18]GCC manuals. If that fails, the
+    [19]gcc-help at gcc.gnu.org mailing list might help. Comments on these
+    web pages and the development of GCC are welcome on our developer
+    list at [20]gcc at gcc.gnu.org. All of [21]our lists have public
+    archives.
+
+   Copyright (C) [22]Free Software Foundation, Inc. Verbatim copying and
+   distribution of this entire article is permitted in any medium,
+   provided this notice is preserved.
+
+   These pages are [23]maintained by the GCC team. Last modified
+   2014-12-19[24].
+
+References
+
+   1. http://www.gnu.org/
+   2. http://gcc.gnu.org/gcc-4.8/changes.html
+   3. https://gcc.gnu.org/onlinedocs/4.8.4/
+   4. http://gcc.gnu.org/gcc-4.8/changes.html
+   5. https://gcc.gnu.org/onlinedocs/4.8.3/
+   6. http://gcc.gnu.org/gcc-4.8/changes.html
+   7. https://gcc.gnu.org/onlinedocs/4.8.2/
+   8. http://gcc.gnu.org/gcc-4.8/changes.html
+   9. https://gcc.gnu.org/onlinedocs/4.8.1/
+  10. http://gcc.gnu.org/gcc-4.8/changes.html
+  11. https://gcc.gnu.org/onlinedocs/4.8.0/
+  12. http://gcc.gnu.org/gcc-4.8/buildstat.html
+  13. https://gcc.gnu.org/onlinedocs/gcc/Contributors.html
+  14. http://gcc.gnu.org/index.html
+  15. mailto:gcc at gcc.gnu.org
+  16. http://gcc.gnu.org/mirrors.html
+  17. http://gcc.gnu.org/svn.html
+  18. https://gcc.gnu.org/onlinedocs/
+  19. mailto:gcc-help at gcc.gnu.org
+  20. mailto:gcc at gcc.gnu.org
+  21. https://gcc.gnu.org/lists.html
+  22. http://www.fsf.org/
+  23. https://gcc.gnu.org/about.html
+  24. http://validator.w3.org/check/referer
+======================================================================
+http://gcc.gnu.org/gcc-4.8/changes.html
+                             GCC 4.8 Release Series
+                        Changes, New Features, and Fixes
+
+Caveats
+
+   GCC now uses C++ as its implementation language. This means that to
+   build GCC from sources, you will need a C++ compiler that understands
+   C++ 2003. For more details on the rationale and specific changes,
+   please refer to the [1]C++ conversion page.
+
+   To enable the Graphite framework for loop optimizations you now need
+   CLooG version 0.18.0 and ISL version 0.11.1. Both can be obtained from
+   the [2]GCC infrastructure directory. The installation manual contains
+   more information about requirements to build GCC.
+
+   GCC now uses a more aggressive analysis to derive an upper bound for
+   the number of iterations of loops using constraints imposed by language
+   standards. This may cause non-conforming programs to no longer work as
+   expected, such as SPEC CPU 2006 464.h264ref and 416.gamess. A new
+   option, -fno-aggressive-loop-optimizations, was added to disable this
+   aggressive analysis. In some loops that have known constant number of
+   iterations, but undefined behavior is known to occur in the loop before
+   reaching or during the last iteration, GCC will warn about the
+   undefined behavior in the loop instead of deriving lower upper bound of
+   the number of iterations for the loop. The warning can be disabled with
+   -Wno-aggressive-loop-optimizations.
+
+   On ARM, a bug has been fixed in GCC's implementation of the AAPCS rules
+   for the layout of vectors that could lead to wrong code being
+   generated. Vectors larger than 8 bytes in size are now by default
+   aligned to an 8-byte boundary. This is an ABI change: code that makes
+   explicit use of vector types may be incompatible with binary objects
+   built with older versions of GCC. Auto-vectorized code is not affected
+   by this change.
+
+   On AVR, support has been removed for the command-line option
+   -mshort-calls deprecated in GCC 4.7.
+
+   On AVR, the configure option --with-avrlibc supported since GCC 4.7.2
+   is turned on per default for all non-RTEMS configurations. This option
+   arranges for a better integration of [3]AVR Libc with avr-gcc. For
+   technical details, see [4]PR54461. To turn off the option in non-RTEMS
+   configurations, use --with-avrlibc=no. If the compiler is configured
+   for RTEMS, the option is always turned off.
+
+   More information on porting to GCC 4.8 from previous versions of GCC
+   can be found in the [5]porting guide for this release.
+
+General Optimizer Improvements (and Changes)
+
+     * DWARF4 is now the default when generating DWARF debug information.
+       When -g is used on a platform that uses DWARF debugging
+       information, GCC will now default to -gdwarf-4
+       -fno-debug-types-section.
+       GDB 7.5, Valgrind 3.8.0 and elfutils 0.154 debug information
+       consumers support DWARF4 by default. Before GCC 4.8 the default
+       version used was DWARF2. To make GCC 4.8 generate an older DWARF
+       version use -g together with -gdwarf-2 or -gdwarf-3. The default
+       for Darwin and VxWorks is still -gdwarf-2 -gstrict-dwarf.
+     * A new general optimization level, -Og, has been introduced. It
+       addresses the need for fast compilation and a superior debugging
+       experience while providing a reasonable level of run-time
+       performance. Overall experience for development should be better
+       than the default optimization level -O0.
+     * A new option -ftree-partial-pre was added to control the partial
+       redundancy elimination (PRE) optimization. This option is enabled
+       by default at the -O3 optimization level, and it makes PRE more
+       aggressive.
+     * The option -fconserve-space has been removed; it was no longer
+       useful on most targets since GCC supports putting variables into
+       BSS without making them common.
+     * The struct reorg and matrix reorg optimizations (command-line
+       options -fipa-struct-reorg and -fipa-matrix-reorg) have been
+       removed. They did not always work correctly, nor did they work with
+       link-time optimization (LTO), hence were only applicable to
+       programs consisting of a single translation unit.
+     * Several scalability bottle-necks have been removed from GCC's
+       optimization passes. Compilation of extremely large functions, e.g.
+       due to the use of the flatten attribute in the "Eigen" C++ linear
+       algebra templates library, is significantly faster than previous
+       releases of GCC.
+     * Link-time optimization (LTO) improvements:
+          + LTO partitioning has been rewritten for better reliability and
+            maintanibility. Several important bugs leading to link
+            failures have been fixed.
+     * Interprocedural optimization improvements:
+          + A new symbol table has been implemented. It builds on existing
+            callgraph and varpool modules and provide a new API. Unusual
+            symbol visibilities and aliases are handled more consistently
+            leading to, for example, more aggressive unreachable code
+            removal with LTO.
+          + The inline heuristic can now bypass limits on the size of of
+            inlined functions when the inlining is particularly
+            profitable. This happens, for example, when loop bounds or
+            array strides get propagated.
+          + Values passed through aggregates (either by value or
+            reference) are now propagated at the inter-procedural level
+            leading to better inlining decisions (for example in the case
+            of Fortran array descriptors) and devirtualization.
+     * [6]AddressSanitizer , a fast memory error detector, has been added
+       and can be enabled via -fsanitize=address. Memory access
+       instructions will be instrumented to detect heap-, stack-, and
+       global-buffer overflow as well as use-after-free bugs. To get nicer
+       stacktraces, use -fno-omit-frame-pointer. The AddressSanitizer is
+       available on IA-32/x86-64/x32/PowerPC/PowerPC64 GNU/Linux and on
+       x86-64 Darwin.
+     * [7]ThreadSanitizer has been added and can be enabled via
+       -fsanitize=thread. Instructions will be instrumented to detect data
+       races. The ThreadSanitizer is available on x86-64 GNU/Linux.
+     * A new local register allocator (LRA) has been implemented, which
+       replaces the 26 year old reload pass and improves generated code
+       quality. For now it is active on the IA-32 and x86-64 targets.
+     * Support for transactional memory has been implemented on the
+       following architectures: IA-32/x86-64, ARM, PowerPC, SH, SPARC, and
+       Alpha.
+
+New Languages and Language specific improvements
+
+  C family
+
+     * Each diagnostic emitted now includes the original source line and a
+       caret '^' indicating the column. The option
+       -fno-diagnostics-show-caret suppresses this information.
+     * The option -ftrack-macro-expansion=2 is now enabled by default.
+       This allows the compiler to display the macro expansion stack in
+       diagnostics. Combined with the caret information, an example
+       diagnostic showing these two features is:
+
+t.c:1:94: error: invalid operands to binary < (have ‘struct mystruct’ and ‘float
+’)
+ #define MYMAX(A,B)    __extension__ ({ __typeof__(A) __a = (A); __typeof__(B) _
+_b = (B); __a < __b ? __b : __a; })
+
+              ^
+t.c:7:7: note: in expansion of macro 'MYMAX'
+   X = MYMAX(P, F);
+       ^
+
+     * A new -Wsizeof-pointer-memaccess warning has been added (also
+       enabled by -Wall) to warn about suspicious length parameters to
+       certain string and memory built-in functions if the argument uses
+       sizeof. This warning warns e.g. about memset (ptr, 0, sizeof
+       (ptr)); if ptr is not an array, but a pointer, and suggests a
+       possible fix, or about memcpy (&foo, ptr, sizeof (&foo));.
+     * The new option -Wpedantic is an alias for -pedantic, which is now
+       deprecated. The forms -Wno-pedantic, -Werror=pedantic, and
+       -Wno-error=pedantic work in the same way as for any other -W
+       option. One caveat is that -Werror=pedantic is not equivalent to
+       -pedantic-errors, since the latter makes into errors some warnings
+       that are not controlled by -Wpedantic, and the former only affects
+       diagnostics that are disabled when using -Wno-pedantic.
+     * The option -Wshadow no longer warns if a declaration shadows a
+       function declaration, unless the former declares a function or
+       pointer to function, because this is [8]a common and valid case in
+       real-world code.
+
+  C++
+
+     * G++ now implements the [9]C++11 thread_local keyword; this differs
+       from the GNU __thread keyword primarily in that it allows dynamic
+       initialization and destruction semantics. Unfortunately, this
+       support requires a run-time penalty for references to
+       non-function-local thread_local variables defined in a different
+       translation unit even if they don't need dynamic initialization, so
+       users may want to continue to use __thread for TLS variables with
+       static initialization semantics.
+       If the programmer can be sure that no use of the variable in a
+       non-defining TU needs to trigger dynamic initialization (either
+       because the variable is statically initialized, or a use of the
+       variable in the defining TU will be executed before any uses in
+       another TU), they can avoid this overhead with the
+       -fno-extern-tls-init option.
+       OpenMP threadprivate variables now also support dynamic
+       initialization and destruction by the same mechanism.
+     * G++ now implements the [10]C++11 attribute syntax, e.g.
+
+[[noreturn]] void f();
+
+       and also the alignment specifier, e.g.
+
+alignas(double) int i;
+
+     * G++ now implements [11]C++11 inheriting constructors, e.g.
+
+struct A { A(int); };
+struct B: A { using A::A; }; // defines B::B(int)
+B b(42); // OK
+
+     * As of GCC 4.8.1, G++ implements the change to decltype semantics
+       from [12]N3276.
+
+struct A f();
+decltype(f()) g();    // OK, return type of f() is not required to be complete.
+
+     * As of GCC 4.8.1, G++ implements [13]C++11 ref-qualifiers, e.g.
+
+struct A { int f() &; };
+int i = A().f();  // error, f() requires an lvalue object
+
+     * G++ now supports a -std=c++1y option for experimentation with
+       features proposed for the next revision of the standard, expected
+       around 2014. Currently the only difference from -std=c++11 is
+       support for return type deduction in normal functions, as proposed
+       in [14]N3386. Status of C++1y features in GCC 4.8 can be found
+       [15]here.
+     * The G++ namespace association extension, __attribute ((strong)),
+       has been deprecated. Inline namespaces should be used instead.
+     * G++ now supports a -fext-numeric-literal option to control whether
+       GNU numeric literal suffixes are accepted as extensions or
+       processed as C++11 user-defined numeric literal suffixes. The flag
+       is on (use suffixes for GNU literals) by default for -std=gnu++*,
+       and -std=c++98. The flag is off (use suffixes for user-defined
+       literals) by default for -std=c++11 and later.
+
+    Runtime Library (libstdc++)
+
+     * [16]Improved experimental support for the new ISO C++ standard,
+       C++11, including:
+          + forward_list meets the allocator-aware container requirements;
+          + this_thread::sleep_for(), this_thread::sleep_until() and
+            this_thread::yield() are defined without requiring the
+            configure option --enable-libstdcxx-time;
+     * Improvements to <random>:
+          + SSE optimized normal_distribution.
+          + Use of hardware RNG instruction for random_device on new x86
+            processors (requires the assembler to support the
+            instruction.)
+       and <ext/random>:
+          + New random number engine simd_fast_mersenne_twister_engine
+            with an optimized SSE implementation.
+          + New random number distributions beta_distribution,
+            normal_mv_distribution, rice_distribution,
+            nakagami_distribution, pareto_distribution, k_distribution,
+            arcsine_distribution, hoyt_distribution.
+     * Added --disable-libstdcxx-verbose configure option to disable
+       diagnostic messages issued when a process terminates abnormally.
+       This may be useful for embedded systems to reduce the size of
+       executables that link statically to the library.
+
+  Fortran
+
+     * Compatibility notice:
+          + Module files: The version of module files (.mod) has been
+            incremented. Fortran MODULEs compiled by earlier GCC versions
+            have to be recompiled, when they are USEd by files compiled
+            with GCC 4.8. GCC 4.8 is not able to read .mod files created
+            by earlier versions; attempting to do so gives an error
+            message.
+            Note: The ABI of the produced assembler data itself has not
+            changed; object files and libraries are fully compatible with
+            older versions except as noted below.
+          + ABI: Some internal names (used in the assembler/object file)
+            have changed for symbols declared in the specification part of
+            a module. If an affected module – or a file using it via use
+            association – is recompiled, the module and all files which
+            directly use such symbols have to be recompiled as well. This
+            change only affects the following kind of module symbols:
+               o Procedure pointers. Note: C-interoperable function
+                 pointers (type(c_funptr)) are not affected nor are
+                 procedure-pointer components.
+               o Deferred-length character strings.
+     * The [17]BACKTRACE intrinsic subroutine has been added. It shows a
+       backtrace at an arbitrary place in user code; program execution
+       continues normally afterwards.
+     * The [18]-Wc-binding-type warning option has been added (disabled by
+       default). It warns if the a variable might not be C interoperable;
+       in particular, if the variable has been declared using an intrinsic
+       type with default kind instead of using a kind parameter defined
+       for C interoperability in the intrinsic ISO_C_Binding module.
+       Before, this warning was always printed. The -Wc-binding-type
+       option is enabled by -Wall.
+     * The [19]-Wrealloc-lhs and -Wrealloc-lhs-all warning command-line
+       options have been added, which diagnose when code is inserted for
+       automatic (re)allocation of a variable during assignment. This
+       option can be used to decide whether it is safe to use
+       [20]-fno-realloc-lhs. Additionally, it can be used to find
+       automatic (re)allocation in hot loops. (For arrays, replacing
+       "var=" by "var(:)=" disables the automatic reallocation.)
+     * The [21]-Wcompare-reals command-line option has been added. When
+       this is set, warnings are issued when comparing REAL or COMPLEX
+       types for equality and inequality; consider replacing a == b by
+       abs(a−b) < eps with a suitable eps. -Wcompare-reals is enabled by
+       -Wextra.
+     * The [22]-Wtarget-lifetime command-line option has been added
+       (enabled with -Wall), which warns if the pointer in a pointer
+       assignment might outlive its target.
+     * Reading floating point numbers which use "q" for the exponential
+       (such as 4.0q0) is now supported as vendor extension for better
+       compatibility with old data files. It is strongly recommended to
+       use for I/O the equivalent but standard conforming "e" (such as
+       4.0e0).
+       (For Fortran source code, consider replacing the "q" in
+       floating-point literals by a kind parameter (e.g. 4.0e0_qp with a
+       suitable qp). Note that – in Fortran source code – replacing "q" by
+       a simple "e" is not equivalent.)
+     * The GFORTRAN_TMPDIR environment variable for specifying a
+       non-default directory for files opened with STATUS="SCRATCH", is
+       not used anymore. Instead gfortran checks the POSIX/GNU standard
+       TMPDIR environment variable. If TMPDIR is not defined, gfortran
+       falls back to other methods to determine the directory for
+       temporary files as documented in the [23]user manual.
+     * [24]Fortran 2003:
+          + Support for unlimited polymorphic variables (CLASS(*)) has
+            been added. Nonconstant character lengths are not yet
+            supported.
+     * [25]TS 29113:
+          + Assumed types (TYPE(*)) are now supported.
+          + Experimental support for assumed-rank arrays (dimension(..))
+            has been added. Note that currently gfortran's own array
+            descriptor is used, which is different from the one defined in
+            TS29113, see [26]gfortran's header file or use the [27]Chasm
+            Language Interoperability Tools.
+
+  Go
+
+     * GCC 4.8.2 provides a complete implementation of the Go 1.1.2
+       release.
+     * GCC 4.8.0 and 4.8.1 implement a preliminary version of the Go 1.1
+       release. The library support is not quite complete.
+     * Go has been tested on GNU/Linux and Solaris platforms for various
+       processors including x86, x86_64, PowerPC, SPARC, and Alpha. It may
+       work on other platforms as well.
+
+New Targets and Target Specific Improvements
+
+  AArch64
+
+     * A new port has been added to support AArch64, the new 64-bit
+       architecture from ARM. Note that this is a separate port from the
+       existing 32-bit ARM port.
+     * The port provides initial support for the Cortex-A53 and the
+       Cortex-A57 processors with the command line options
+       -mcpu=cortex-a53 and -mcpu=cortex-a57.
+     * As of GCC 4.8.4 a workaround for the ARM Cortex-A53 erratum 835769
+       has been added and can be enabled by giving the
+       -mfix-cortex-a53-835769 option. Alternatively it can be enabled by
+       default by configuring GCC with the --enable-fix-cortex-a53-835769
+       option.
+
+  ARM
+
+     * Initial support has been added for the AArch32 extensions defined
+       in the ARMv8 architecture.
+     * Code generation improvements for the Cortex-A7 and Cortex-A15 CPUs.
+     * A new option, -mcpu=marvell-pj4, has been added to generate code
+       for the Marvell PJ4 processor.
+     * The compiler can now automatically generate the VFMA, VFMS, REVSH
+       and REV16 instructions.
+     * A new vectorizer cost model for Advanced SIMD configurations to
+       improve the auto-vectorization strategies used.
+     * The scheduler now takes into account the number of live registers
+       to reduce the amount of spilling that can occur. This should
+       improve code performance in large functions. The limit can be
+       removed by using the option -fno-sched-pressure.
+     * Improvements have been made to the Marvell iWMMX code generation
+       and support for the iWMMX2 SIMD unit has been added. The option
+       -mcpu=iwmmxt2 can be used to enable code generation for the latter.
+     * A number of code generation improvements for Thumb2 to reduce code
+       size when compiling for the M-profile processors.
+     * The RTEMS (arm-rtems) port has been updated to use the EABI.
+     * Code generation support for the old FPA and Maverick floating-point
+       architectures has been removed. Ports that previously relied on
+       these features have also been removed. This includes the targets:
+          + arm*-*-linux-gnu (use arm*-*-linux-gnueabi)
+          + arm*-*-elf (use arm*-*-eabi)
+          + arm*-*-uclinux* (use arm*-*-uclinux*eabi)
+          + arm*-*-ecos-elf (no alternative)
+          + arm*-*-freebsd (no alternative)
+          + arm*-wince-pe* (no alternative).
+
+  AVR
+
+     * Support for the "Embedded C" fixed-point has been added. For
+       details, see the [28]GCC wiki and the [29]user manual. The support
+       is not complete.
+     * A new print modifier %r for register operands in inline assembler
+       is supported. It will print the raw register number without the
+       register prefix 'r':
+    /* Return the most significant byte of 'val', a 64-bit value.  */
+
+    unsigned char msb (long long val)
+    {
+      unsigned char c;
+      __asm__ ("mov %0, %r1+7" : "=r" (c) : "r" (val));
+      return c;
+    }
+       The inline assembler in this example will generate code like
+    mov r24, 8+7
+       provided c is allocated to R24 and val is allocated to R8…R15. This
+       works because the GNU assembler accepts plain register numbers
+       without register prefix.
+     * Static initializers with 3-byte symbols are supported now:
+    extern const __memx char foo;
+    const __memx void *pfoo = &foo;
+       This requires at least Binutils 2.23.
+
+  IA-32/x86-64
+
+     * Allow -mpreferred-stack-boundary=3 for the x86-64 architecture with
+       SSE extensions disabled. Since the x86-64 ABI requires 16 byte
+       stack alignment, this is ABI incompatible and intended to be used
+       in controlled environments where stack space is an important
+       limitation. This option will lead to wrong code when functions
+       compiled with 16 byte stack alignment (such as functions from a
+       standard library) are called with misaligned stack. In this case,
+       SSE instructions may lead to misaligned memory access traps. In
+       addition, variable arguments will be handled incorrectly for 16
+       byte aligned objects (including x87 long double and __int128),
+       leading to wrong results. You must build all modules with
+       -mpreferred-stack-boundary=3, including any libraries. This
+       includes the system libraries and startup modules.
+     * Support for the new Intel processor codename Broadwell with RDSEED,
+       ADCX, ADOX, PREFETCHW is available through -madx, -mprfchw,
+       -mrdseed command-line options.
+     * Support for the Intel RTM and HLE intrinsics, built-in functions
+       and code generation is available via -mrtm and -mhle.
+     * Support for the Intel FXSR, XSAVE and XSAVEOPT instruction sets.
+       Intrinsics and built-in functions are available via -mfxsr, -mxsave
+       and -mxsaveopt respectively.
+     * New -maddress-mode=[short|long] options for x32.
+       -maddress-mode=short overrides default 64-bit addresses to 32-bit
+       by emitting the 0x67 address-size override prefix. This is the
+       default address mode for x32.
+     * New built-in functions to detect run-time CPU type and ISA:
+          + A built-in function __builtin_cpu_is has been added to detect
+            if the run-time CPU is of a particular type. It returns a
+            positive integer on a match and zero otherwise. It accepts one
+            string literal argument, the CPU name. For example,
+            __builtin_cpu_is("westmere") returns a positive integer if the
+            run-time CPU is an Intel Core i7 Westmere processor. Please
+            refer to the [30]user manual for the list of valid CPU names
+            recognized.
+          + A built-in function __builtin_cpu_supports has been added to
+            detect if the run-time CPU supports a particular ISA feature.
+            It returns a positive integer on a match and zero otherwise.
+            It accepts one string literal argument, the ISA feature. For
+            example, __builtin_cpu_supports("ssse3") returns a positive
+            integer if the run-time CPU supports SSSE3 instructions.
+            Please refer to the [31]user manual for the list of valid ISA
+            names recognized.
+       Caveat: If these built-in functions are called before any static
+       constructors are invoked, like during IFUNC initialization, then
+       the CPU detection initialization must be explicitly run using this
+       newly provided built-in function, __builtin_cpu_init. The
+       initialization needs to be done only once. For example, this is how
+       the invocation would look like inside an IFUNC initializer:
+    static void (*some_ifunc_resolver(void))(void)
+    {
+      __builtin_cpu_init();
+      if (__builtin_cpu_is("amdfam10h") ...
+      if (__builtin_cpu_supports("popcnt") ...
+    }
+
+     * Function Multiversioning Support with G++:
+       It is now possible to create multiple function versions each
+       targeting a specific processor and/or ISA. Function versions have
+       the same signature but different target attributes. For example,
+       here is a program with function versions:
+    __attribute__ ((target ("default")))
+    int foo(void)
+    {
+      return 1;
+    }
+
+    __attribute__ ((target ("sse4.2")))
+    int foo(void)
+    {
+      return 2;
+    }
+
+    int main (void)
+    {
+      int (*p) = &foo;
+      assert ((*p)() == foo());
+      return 0;
+    }
+
+       Please refer to this [32]wiki for more information.
+     * The x86 back end has been improved to allow option -fschedule-insns
+       to work reliably. This option can be used to schedule instructions
+       better and leads to improved performace in certain cases.
+     * Windows MinGW-w64 targets (*-w64-mingw*) require at least r5437
+       from the Mingw-w64 trunk.
+     * Support for new AMD family 15h processors (Steamroller core) is now
+       available through the -march=bdver3 and -mtune=bdver3 options.
+     * Support for new AMD family 16h processors (Jaguar core) is now
+       available through the -march=btver2 and -mtune=btver2 options.
+
+  FRV
+
+     * This target now supports the -fstack-usage command-line option.
+
+  MIPS
+
+     * GCC can now generate code specifically for the R4700, Broadcom XLP
+       and MIPS 34kn processors. The associated -march options are
+       -march=r4700, -march=xlp and -march=34kn respectively.
+     * GCC now generates better DSP code for MIPS 74k cores thanks to
+       further scheduling optimizations.
+     * The MIPS port now supports the -fstack-check option.
+     * GCC now passes the -mmcu and -mno-mcu options to the assembler.
+     * Previous versions of GCC would silently accept -fpic and -fPIC for
+       -mno-abicalls targets like mips*-elf. This combination was not
+       intended or supported, and did not generate position-independent
+       code. GCC 4.8 now reports an error when this combination is used.
+
+  PowerPC / PowerPC64 / RS6000
+
+     * SVR4 configurations (GNU/Linux, FreeBSD, NetBSD) no longer save,
+       restore or update the VRSAVE register by default. The respective
+       operating systems manage the VRSAVE register directly.
+     * Large TOC support has been added for AIX through the command line
+       option -mcmodel=large.
+     * Native Thread-Local Storage support has been added for AIX.
+     * VMX (Altivec) and VSX instruction sets now are enabled implicitly
+       when targetting processors that support those hardware features on
+       AIX 6.1 and above.
+
+  RX
+
+     * This target will now issue a warning message whenever multiple fast
+       interrupt handlers are found in the same compilation unit. This
+       feature can be turned off by the new
+       -mno-warn-multiple-fast-interrupts command-line option.
+
+  S/390, System z
+
+     * Support for the IBM zEnterprise zEC12 processor has been added.
+       When using the -march=zEC12 option, the compiler will generate code
+       making use of the following new instructions:
+          + load and trap instructions
+          + 2 new compare and trap instructions
+          + rotate and insert selected bits - without CC clobber
+       The -mtune=zEC12 option enables zEC12 specific instruction
+       scheduling without making use of new instructions.
+     * Register pressure sensitive instruction scheduling is enabled by
+       default.
+     * The ifunc function attribute is enabled by default.
+     * memcpy and memcmp invokations on big memory chunks or with run time
+       lengths are not generated inline anymore when tuning for z10 or
+       higher. The purpose is to make use of the IFUNC optimized versions
+       in Glibc.
+
+  SH
+
+     * The default alignment settings have been reduced to be less
+       aggressive. This results in more compact code for optimization
+       levels other than -Os.
+     * Improved support for the __atomic built-in functions:
+          + A new option -matomic-model=model selects the model for the
+            generated atomic sequences. The following models are
+            supported:
+
+              soft-gusa
+                      Software gUSA sequences (SH3* and SH4* only). On
+                      SH4A targets this will now also partially utilize
+                      the movco.l and movli.l instructions. This is the
+                      default when the target is sh3*-*-linux* or
+                      sh4*-*-linux*.
+
+              hard-llcs
+                      Hardware movco.l / movli.l sequences (SH4A only).
+
+              soft-tcb
+                      Software thread control block sequences.
+
+              soft-imask
+                      Software interrupt flipping sequences (privileged
+                      mode only). This is the default when the target is
+                      sh1*-*-linux* or sh2*-*-linux*.
+
+              none
+                      Generates function calls to the respective __atomic
+                      built-in functions. This is the default for SH64
+                      targets or when the target is not sh*-*-linux*.
+
+          + The option -msoft-atomic has been deprecated. It is now an
+            alias for -matomic-model=soft-gusa.
+          + A new option -mtas makes the compiler generate the tas.b
+            instruction for the __atomic_test_and_set built-in function
+            regardless of the selected atomic model.
+          + The __sync functions in libgcc now reflect the selected atomic
+            model when building the toolchain.
+     * Added support for the mov.b and mov.w instructions with
+       displacement addressing.
+     * Added support for the SH2A instructions movu.b and movu.w.
+     * Various improvements to code generated for integer arithmetic.
+     * Improvements to conditional branches and code that involves the T
+       bit. A new option -mzdcbranch tells the compiler to favor
+       zero-displacement branches. This is enabled by default for SH4*
+       targets.
+     * The pref instruction will now be emitted by the __builtin_prefetch
+       built-in function for SH3* targets.
+     * The fmac instruction will now be emitted by the fmaf standard
+       function and the __builtin_fmaf built-in function.
+     * The -mfused-madd option has been deprecated in favor of the
+       machine-independent -ffp-contract option. Notice that the fmac
+       instruction will now be generated by default for expressions like a
+       * b + c. This is due to the compiler default setting
+       -ffp-contract=fast.
+     * Added new options -mfsrra and -mfsca to allow the compiler using
+       the fsrra and fsca instructions on targets other than SH4A (where
+       they are already enabled by default).
+     * Added support for the __builtin_bswap32 built-in function. It is
+       now expanded as a sequence of swap.b and swap.w instructions
+       instead of a library function call.
+     * The behavior of the -mieee option has been fixed and the negative
+       form -mno-ieee has been added to control the IEEE conformance of
+       floating point comparisons. By default -mieee is now enabled and
+       the option -ffinite-math-only implicitly sets -mno-ieee.
+     * Added support for the built-in functions __builtin_thread_pointer
+       and __builtin_set_thread_pointer. This assumes that GBR is used to
+       hold the thread pointer of the current thread. Memory loads and
+       stores relative to the address returned by __builtin_thread_pointer
+       will now also utilize GBR based displacement address modes.
+     * The -mdiv= option for targets other than SHmedia has been fixed and
+       documented.
+
+  SPARC
+
+     * Added optimized instruction scheduling for Niagara4.
+
+  TILE-Gx
+
+     * Added support for the -mcmodel=MODEL command-line option. The
+       models supported are small and large.
+
+  V850
+
+     * This target now supports the E3V5 architecture via the use of the
+       new -mv850e3v5 command-line option. It also has experimental
+       support for the e3v5 LOOP instruction which can be enabled via the
+       new -mloop command-line option.
+
+  XStormy16
+
+     * This target now supports the -fstack-usage command-line option.
+
+Operating Systems
+
+  Windows (Cygwin)
+
+     * Executables are now linked against shared libgcc by default. The
+       previous default was to link statically, which can still be done by
+       explicitly specifying -static or static-libgcc on the command line.
+       However it is strongly advised against, as it will cause problems
+       for any application that makes use of DLLs compiled by GCC. It
+       should be alright for a monolithic stand-alone application that
+       only links against the Windows DLLs, but offers little or no
+       benefit.
+
+GCC 4.8.1
+
+   This is the [33]list of problem reports (PRs) from GCC's bug tracking
+   system that are known to be fixed in the 4.8.1 release. This list might
+   not be complete (that is, it is possible that some PRs that have been
+   fixed are not listed here).
+
+   The C++11 <chrono> std::chrono::system_clock and
+   std::chrono::steady_clock classes have changed ABI in GCC 4.8.1, they
+   both are now separate (never typedefs of each other), both use
+   std::chrono::nanoseconds resolution, on most GNU/Linux configurations
+   std::chrono::steady_clock is now finally monotonic, and both classes
+   are mangled differently than in the previous GCC releases.
+   std::chrono::system_clock::now() with std::chrono::microseconds resp.
+   std::chrono::seconds resolution is still exported for backwards
+   compatibility with default configured libstdc++. Note that libstdc++
+   configured with --enable-libstdcxx-time= used to be ABI incompatible
+   with default configured libstdc++ for those two classes and no ABI
+   compatibility can be offered for those configurations, so any C++11
+   code that uses those classes and has been compiled and linked against
+   libstdc++ configured with the non-default --enable-libstdcxx-time=
+   configuration option needs to be recompiled.
+
+GCC 4.8.2
+
+   This is the [34]list of problem reports (PRs) from GCC's bug tracking
+   system that are known to be fixed in the 4.8.2 release. This list might
+   not be complete (that is, it is possible that some PRs that have been
+   fixed are not listed here).
+
+GCC 4.8.3
+
+   This is the [35]list of problem reports (PRs) from GCC's bug tracking
+   system that are known to be fixed in the 4.8.3 release. This list might
+   not be complete (that is, it is possible that some PRs that have been
+   fixed are not listed here).
+
+   Support for the new powerpc64le-linux platform has been added. It
+   defaults to generating code that conforms to the ELFV2 ABI.
+
+GCC 4.8.4
+
+   This is the [36]list of problem reports (PRs) from GCC's bug tracking
+   system that are known to be fixed in the 4.8.4 release. This list might
+   not be complete (that is, it is possible that some PRs that have been
+   fixed are not listed here).
+
+
+    For questions related to the use of GCC, please consult these web
+    pages and the [37]GCC manuals. If that fails, the
+    [38]gcc-help at gcc.gnu.org mailing list might help. Comments on these
+    web pages and the development of GCC are welcome on our developer
+    list at [39]gcc at gcc.gnu.org. All of [40]our lists have public
+    archives.
+
+   Copyright (C) [41]Free Software Foundation, Inc. Verbatim copying and
+   distribution of this entire article is permitted in any medium,
+   provided this notice is preserved.
+
+   These pages are [42]maintained by the GCC team. Last modified
+   2015-04-20[43].
+
+References
+
+   1. https://gcc.gnu.org/wiki/cxx-conversion
+   2. ftp://gcc.gnu.org/pub/gcc/infrastructure/
+   3. http://www.nongnu.org/avr-libc/
+   4. https://gcc.gnu.org/PR54461
+   5. https://gcc.gnu.org/gcc-4.8/porting_to.html
+   6. https://code.google.com/p/address-sanitizer/
+   7. https://code.google.com/p/data-race-test/wiki/ThreadSanitizer
+   8. https://lkml.org/lkml/2006/11/28/239
+   9. http://gcc.gnu.org/gcc-4.8/cxx0x_status.html
+  10. http://gcc.gnu.org/gcc-4.8/cxx0x_status.html
+  11. http://gcc.gnu.org/gcc-4.8/cxx0x_status.html
+  12. http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3276.pdf
+  13. http://gcc.gnu.org/gcc-4.8/cxx0x_status.html
+  14. http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2012/n3386.html
+  15. http://gcc.gnu.org/projects/cxx1y.html
+  16. https://gcc.gnu.org/onlinedocs/gcc-4.8.4/libstdc++/manual/manual/status.html#status.iso.2011
+  17. https://gcc.gnu.org/onlinedocs/gfortran/BACKTRACE.html
+  18. https://gcc.gnu.org/onlinedocs/gfortran/Error-and-Warning-Options.html
+  19. https://gcc.gnu.org/onlinedocs/gfortran/Error-and-Warning-Options.html
+  20. https://gcc.gnu.org/onlinedocs/gfortran/Code-Gen-Options.html
+  21. https://gcc.gnu.org/onlinedocs/gfortran/Error-and-Warning-Options.html
+  22. https://gcc.gnu.org/onlinedocs/gfortran/Error-and-Warning-Options.html
+  23. https://gcc.gnu.org/onlinedocs/gfortran/TMPDIR.html
+  24. https://gcc.gnu.org/wiki/Fortran2003Status
+  25. https://gcc.gnu.org/wiki/TS29113Status
+  26. https://gcc.gnu.org/viewcvs/trunk/libgfortran/libgfortran.h?content-type=text/plain&view=co
+  27. http://chasm-interop.sourceforge.net/
+  28. https://gcc.gnu.org/wiki/avr-gcc#Fixed-Point_Support
+  29. https://gcc.gnu.org/onlinedocs/gcc/Fixed-Point.html
+  30. https://gcc.gnu.org/onlinedocs/gcc/X86-Built-in-Functions.html#X86-Built-in-Functions
+  31. https://gcc.gnu.org/onlinedocs/gcc/X86-Built-in-Functions.html#X86-Built-in-Functions
+  32. https://gcc.gnu.org/wiki/FunctionMultiVersioning
+  33. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.8.1
+  34. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.8.2
+  35. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.8.3
+  36. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.8.4
+  37. https://gcc.gnu.org/onlinedocs/
+  38. mailto:gcc-help at gcc.gnu.org
+  39. mailto:gcc at gcc.gnu.org
+  40. https://gcc.gnu.org/lists.html
+  41. http://www.fsf.org/
+  42. https://gcc.gnu.org/about.html
+  43. http://validator.w3.org/check/referer
+======================================================================
+http://gcc.gnu.org/gcc-4.7/index.html
+                             GCC 4.7 Release Series
+
+   June 12, 2014
+
+   The [1]GNU project and the GCC developers are pleased to announce the
+   release of GCC 4.7.4.
+
+   This release is a bug-fix release, containing fixes for regressions in
+   GCC 4.7.3 relative to previous releases of GCC.
+
+Release History
+
+   GCC 4.7.4
+          June 12, 2014 ([2]changes, [3]documentation)
+
+   GCC 4.7.3
+          April 11, 2013 ([4]changes, [5]documentation)
+
+   GCC 4.7.2
+          September 20, 2012 ([6]changes, [7]documentation)
+
+   GCC 4.7.1
+          June 14, 2012 ([8]changes, [9]documentation)
+
+   GCC 4.7.0
+          March 22, 2012 ([10]changes, [11]documentation)
+
+References and Acknowledgements
+
+   GCC used to stand for the GNU C Compiler, but since the compiler
+   supports several other languages aside from C, it now stands for the
+   GNU Compiler Collection.
+
+   A list of [12]successful builds is updated as new information becomes
+   available.
+
+   The GCC developers would like to thank the numerous people that have
+   contributed new features, improvements, bug fixes, and other changes as
+   well as test results to GCC. This [13]amazing group of volunteers is
+   what makes GCC successful.
+
+   For additional information about GCC please refer to the [14]GCC
+   project web site or contact the [15]GCC development mailing list.
+
+   To obtain GCC please use [16]our mirror sites or [17]our SVN server.
+
+
+    For questions related to the use of GCC, please consult these web
+    pages and the [18]GCC manuals. If that fails, the
+    [19]gcc-help at gcc.gnu.org mailing list might help. Comments on these
+    web pages and the development of GCC are welcome on our developer
+    list at [20]gcc at gcc.gnu.org. All of [21]our lists have public
+    archives.
+
+   Copyright (C) [22]Free Software Foundation, Inc. Verbatim copying and
+   distribution of this entire article is permitted in any medium,
+   provided this notice is preserved.
+
+   These pages are [23]maintained by the GCC team. Last modified
+   2014-06-12[24].
+
+References
+
+   1. http://www.gnu.org/
+   2. http://gcc.gnu.org/gcc-4.7/changes.html
+   3. https://gcc.gnu.org/onlinedocs/4.7.4/
+   4. http://gcc.gnu.org/gcc-4.7/changes.html
+   5. https://gcc.gnu.org/onlinedocs/4.7.3/
+   6. http://gcc.gnu.org/gcc-4.7/changes.html
+   7. https://gcc.gnu.org/onlinedocs/4.7.2/
+   8. http://gcc.gnu.org/gcc-4.7/changes.html
+   9. https://gcc.gnu.org/onlinedocs/4.7.1/
+  10. http://gcc.gnu.org/gcc-4.7/changes.html
+  11. https://gcc.gnu.org/onlinedocs/4.7.0/
+  12. http://gcc.gnu.org/gcc-4.7/buildstat.html
+  13. https://gcc.gnu.org/onlinedocs/gcc/Contributors.html
+  14. http://gcc.gnu.org/index.html
+  15. mailto:gcc at gcc.gnu.org
+  16. http://gcc.gnu.org/mirrors.html
+  17. http://gcc.gnu.org/svn.html
+  18. https://gcc.gnu.org/onlinedocs/
+  19. mailto:gcc-help at gcc.gnu.org
+  20. mailto:gcc at gcc.gnu.org
+  21. https://gcc.gnu.org/lists.html
+  22. http://www.fsf.org/
+  23. https://gcc.gnu.org/about.html
+  24. http://validator.w3.org/check/referer
+======================================================================
+http://gcc.gnu.org/gcc-4.7/changes.html
+                             GCC 4.7 Release Series
+                        Changes, New Features, and Fixes
+
+Caveats
+
+     * The -fconserve-space flag has been deprecated. The flag had no
+       effect for most targets: only targets without a global .bss section
+       and without support for switchable sections. Furthermore, the flag
+       only had an effect for G++, where it could result in wrong
+       semantics (please refer to the GCC manual for further details). The
+       flag will be removed in GCC 4.8
+     * Support for a number of older systems and recently unmaintained or
+       untested target ports of GCC has been declared obsolete in GCC 4.7.
+       Unless there is activity to revive them, the next release of GCC
+       will have their sources permanently removed.
+       All GCC ports for the following processor architectures have been
+       declared obsolete:
+          + picoChip (picochip-*)
+       The following ports for individual systems on particular
+       architectures have been obsoleted:
+          + IRIX 6.5 (mips-sgi-irix6.5)
+          + MIPS OpenBSD (mips*-*-openbsd*)
+          + Solaris 8 (*-*-solaris2.8). Details can be found in the
+            [1]announcement.
+          + Tru64 UNIX V5.1 (alpha*-dec-osf5.1*)
+     * On ARM, when compiling for ARMv6 (but not ARMv6-M), ARMv7-A,
+       ARMv7-R, or ARMv7-M, the new option -munaligned-access is active by
+       default, which for some sources generates code that accesses memory
+       on unaligned addresses. This requires the kernel of those systems
+       to enable such accesses (controlled by CP15 register c1, refer to
+       ARM documentation). Alternatively, or for compatibility with
+       kernels where unaligned accesses are not supported, all code has to
+       be compiled with -mno-unaligned-access. Upstream Linux kernel
+       releases have automatically and unconditionally supported unaligned
+       accesses as emitted by GCC due to this option being active since
+       version 2.6.28.
+     * Support on ARM for the legacy floating-point accelerator (FPA) and
+       the mixed-endian floating-point format that it used has been
+       obsoleted. The ports that still use this format have been obsoleted
+       as well. Many legacy ARM ports already provide an alternative that
+       uses the VFP floating-point format. The obsolete ports will be
+       deleted in the next release.
+       The obsolete ports with alternatives are:
+          + arm*-*-rtems (use arm*-*-rtemseabi)
+          + arm*-*-linux-gnu (use arm*-*-linux-gnueabi)
+          + arm*-*-elf (use arm*-*-eabi)
+          + arm*-*-uclinux* (use arm*-*-uclinux*eabi)
+       Note, however, that these alternatives are not binary compatible
+       with their legacy counterparts (although some can support running
+       legacy applications).
+       The obsolete ports that currently lack a modern alternative are:
+          + arm*-*-ecos-elf
+          + arm*-*-freebsd
+          + arm*-wince-pe*
+       New ports that support more recent versions of the architecture are
+       welcome.
+     * Support for the Maverick co-processor on ARM has been obsoleted.
+       Code to support it will be deleted in the next release.
+     * Support has been removed for Unix International threads on Solaris
+       2, so the --enable-threads=solaris configure option and the
+       -threads compiler option don't work any longer.
+     * Support has been removed for the Solaris BSD Compatibility Package,
+       which lives in /usr/ucbinclude and /usr/ucblib. It has been removed
+       from Solaris 11, and was only intended as a migration aid from
+       SunOS 4 to SunOS 5. The -compat-bsd compiler option is not
+       recognized any longer.
+     * The AVR port's libgcc has been improved and its multilib structure
+       has been enhanced. As a result, all objects contributing to an
+       application must either be compiled with GCC versions up to 4.6.x
+       or with GCC versions 4.7.1 or later. If the compiler is used with
+       AVR Libc, you need a version that supports the new layout, i.e.
+       implements [2]#35407.
+     * The AVR port's -mshort-calls command-line option has been
+       deprecated. It will be removed in the GCC 4.8 release. See -mrelax
+       for a replacement.
+     * The AVR port only references startup code that clears .bss and the
+       common section resp. initializes the .data and .rodata section
+       provided respective sections (or subsections thereof) are not
+       empty, see [3]PR18145. Applications that put all static storage
+       objects into non-standard sections and / or define all static
+       storage objects in assembler modules, must reference __do_clear_bss
+       resp. __do_copy_data by hand or undefine the symbol(s) by means of
+       -Wl,-u,__do_clear_bss resp. -Wl,-u,__do_copy_data.
+     * The ARM port's -mwords-little-endian option has been deprecated. It
+       will be removed in a future release.
+     * Support has been removed for the NetWare x86 configuration
+       obsoleted in GCC 4.6.
+     * It is no longer possible to use the "l" constraint in MIPS16 asm
+       statements.
+     * GCC versions 4.7.0 and 4.7.1 had changes to the C++ standard
+       library which affected the ABI in C++11 mode: a data member was
+       added to std::list changing its size and altering the definitions
+       of some member functions, and std::pair's move constructor was
+       non-trivial which altered the calling convention for functions with
+       std::pair arguments or return types. The ABI incompatibilities have
+       been fixed for GCC version 4.7.2 but as a result C++11 code
+       compiled with GCC 4.7.0 or 4.7.1 may be incompatible with C++11
+       code compiled with different GCC versions and with C++98/C++03 code
+       compiled with any version.
+     * On ARM, a bug has been fixed in GCC's implementation of the AAPCS
+       rules for the layout of vectors that could lead to wrong code being
+       generated. Vectors larger than 8 bytes in size are now by default
+       aligned to an 8-byte boundary. This is an ABI change: code that
+       makes explicit use of vector types may be incompatible with binary
+       objects built with older versions of GCC. Auto-vectorized code is
+       not affected by this change. (This change affects GCC versions
+       4.7.2 and later.)
+     * More information on porting to GCC 4.7 from previous versions of
+       GCC can be found in the [4]porting guide for this release.
+
+General Optimizer Improvements
+
+     * Support for a new parameter --param case-values-threshold=n was
+       added to allow users to control the cutoff between doing switch
+       statements as a series of if statements and using a jump table.
+     * Link-time optimization (LTO) improvements:
+          + Improved scalability and reduced memory usage. Link time
+            optimization of Firefox now requires 3GB of RAM on a 64-bit
+            system, while over 8GB was needed previously. Linking time has
+            been improved, too. The serial stage of linking Firefox has
+            been sped up by about a factor of 10.
+          + Reduced size of object files and temporary storage used during
+            linking.
+          + Streaming performance (both outbound and inbound) has been
+            improved.
+          + ld -r is now supported with LTO.
+          + Several bug fixes, especially in symbol table handling and
+            merging.
+     * Interprocedural optimization improvements:
+          + Heuristics now take into account that after inlining code will
+            be optimized out because of known values (or properties) of
+            function parameters. For example:
+void foo(int a)
+{
+  if (a > 10)
+    ... huge code ...
+}
+void bar (void)
+{
+  foo (0);
+}
+
+            The call of foo will be inlined into bar even when optimizing
+            for code size. Constructs based on __builtin_constant_p are
+            now understood by the inliner and code size estimates are
+            evaluated a lot more realistically.
+          + The representation of C++ virtual thunks and aliases (both
+            implicit and defined via the alias attribute) has been
+            re-engineered. Aliases no longer pose optimization barriers
+            and calls to an alias can be inlined and otherwise optimized.
+          + The inter-procedural constant propagation pass has been
+            rewritten. It now performs generic function specialization.
+            For example when compiling the following:
+void foo(bool flag)
+{
+  if (flag)
+    ... do something ...
+  else
+    ... do something else ...
+}
+void bar (void)
+{
+  foo (false);
+  foo (true);
+  foo (false);
+  foo (true);
+  foo (false);
+  foo (true);
+}
+
+            GCC will now produce two copies of foo. One with flag being
+            true, while other with flag being false. This leads to
+            performance improvements previously possible only by inlining
+            all calls. Cloning causes a lot less code size growth.
+     * A string length optimization pass has been added. It attempts to
+       track string lengths and optimize various standard C string
+       functions like strlen, strchr, strcpy, strcat, stpcpy and their
+       _FORTIFY_SOURCE counterparts into faster alternatives. This pass is
+       enabled by default at -O2 or above, unless optimizing for size, and
+       can be disabled by the -fno-optimize-strlen option. The pass can
+       e.g. optimize
+char *bar (const char *a)
+{
+  size_t l = strlen (a) + 2;
+  char *p = malloc (l); if (p == NULL) return p;
+  strcpy (p, a); strcat (p, "/"); return p;
+}
+
+       into:
+char *bar (const char *a)
+{
+  size_t tmp = strlen (a);
+  char *p = malloc (tmp + 2); if (p == NULL) return p;
+  memcpy (p, a, tmp); memcpy (p + tmp, "/", 2); return p;
+}
+
+       or for hosted compilations where stpcpy is available in the runtime
+       and headers provide its prototype, e.g.
+void foo (char *a, const char *b, const char *c, const char *d)
+{
+  strcpy (a, b); strcat (a, c); strcat (a, d);
+}
+
+       can be optimized into:
+void foo (char *a, const char *b, const char *c, const char *d)
+{
+  strcpy (stpcpy (stpcpy (a, b), c), d);
+}
+
+New Languages and Language specific improvements
+
+     * Version 3.1 of the [5]OpenMP specification is now supported for the
+       C, C++, and Fortran compilers.
+
+  Ada
+
+     * The command-line option -feliminate-unused-debug-types has been
+       re-enabled by default, as it is for the other languages, leading to
+       a reduction in debug info size of 12.5% and more for relevant
+       cases, as well as to a small compilation speedup.
+
+  C family
+
+     * A new built-in, __builtin_assume_aligned, has been added, through
+       which the compiler can be hinted about pointer alignment and can
+       use it to improve generated code.
+     * A new warning option -Wunused-local-typedefs was added for C, C++,
+       Objective-C and Objective-C++. This warning diagnoses typedefs
+       locally defined in a function, and otherwise not used.
+     * A new experimental command-line option -ftrack-macro-expansion was
+       added for C, C++, Objective-C, Objective-C++ and Fortran. It allows
+       the compiler to emit diagnostic about the current macro expansion
+       stack when a compilation error occurs in a macro expansion.
+     * Experimental support for transactional memory has been added. It
+       includes support in the compiler, as well as a supporting runtime
+       library called libitm. To compile code with transactional memory
+       constructs, use the -fgnu-tm option.
+       Support is currently available for Alpha, ARM, PowerPC, SH, SPARC,
+       and 32-bit/64-bit x86 platforms.
+       For more details on transactional memory see [6]the GCC WiKi.
+     * Support for atomic operations specifying the C++11/C11 memory model
+       has been added. These new __atomic routines replace the existing
+       __sync built-in routines.
+       Atomic support is also available for memory blocks. Lock-free
+       instructions will be used if a memory block is the same size and
+       alignment as a supported integer type. Atomic operations which do
+       not have lock-free support are left as function calls. A set of
+       library functions is available on the GCC atomic wiki in the
+       "External Atomics Library" section.
+       For more details on the memory models and features, see the
+       [7]atomic wiki.
+     * When a binary operation is performed on vector types and one of the
+       operands is a uniform vector, it is possible to replace the vector
+       with the generating element. For example:
+typedef int v4si __attribute__ ((vector_size (16)));
+v4si res, a = {1,2,3,4};
+int x;
+
+res = 2 + a;  /* means {2,2,2,2} + a  */
+res = a - x;  /* means a - {x,x,x,x}  */
+
+  C
+
+     * There is support for some more features from the C11 revision of
+       the ISO C standard. GCC now accepts the options -std=c11 and
+       -std=gnu11, in addition to the previous -std=c1x and -std=gnu1x.
+          + Unicode strings (previously supported only with options such
+            as -std=gnu11, now supported with -std=c11), and the
+            predefined macros __STDC_UTF_16__ and __STDC_UTF_32__.
+          + Nonreturning functions (_Noreturn and <stdnoreturn.h>).
+          + Alignment support (_Alignas, _Alignof, max_align_t,
+            <stdalign.h>).
+          + A built-in function __builtin_complex is provided to support C
+            library implementation of the CMPLX family of macros.
+
+  C++
+
+     * G++ now accepts the -std=c++11, -std=gnu++11, and -Wc++11-compat
+       options, which are equivalent to -std=c++0x, -std=gnu++0x, and
+       -Wc++0x-compat, respectively.
+     * G++ now implements [8]C++11 extended friend syntax:
+
+template<class W>
+class Q
+{
+  static const int I = 2;
+public:
+  friend W;
+};
+
+struct B
+{
+  int ar[Q<B>::I];
+};
+
+     * Thanks to Ville Voutilainen, G++ now implements [9]C++11 explicit
+       override control.
+
+struct B {
+  virtual void f() const final;
+  virtual void f(int);
+};
+
+struct D : B {
+  void f() const;            // error: D::f attempts to override final B::f
+  void f(long) override;     // error: doesn't override anything
+  void f(int) override;      // ok
+};
+
+struct E final { };
+struct F: E { }; // error: deriving from final class
+
+     * G++ now implements [10]C++11 non-static data member initializers.
+
+struct A {
+  int i = 42;
+} a; // initializes a.i to 42
+
+     * Thanks to Ed Smith-Rowland, G++ now implements [11]C++11
+       user-defined literals.
+
+// Not actually a good approximation.  :)
+constexpr long double operator"" _degrees (long double d) { return d * 0.0175; }
+long double pi = 180.0_degrees;
+
+     * G++ now implements [12]C++11 alias-declarations.
+
+template <class T> using Ptr = T*;
+Ptr<int> ip;  // decltype(ip) is int*
+
+     * Thanks to Ville Voutilainen and Pedro Lamarão, G++ now implements
+       [13]C++11 delegating constructors.
+
+struct A {
+  A(int);
+  A(): A(42) { } // delegate to the A(int) constructor
+};
+
+     * G++ now fully implements C++11 atomic classes rather than just
+       integer derived classes.
+
+class POD {
+  int a;
+  int b;
+};
+std::atomic<POD> my_atomic_POD;
+
+     * G++ now sets the predefined macro __cplusplus to the correct value,
+       199711L for C++98/03, and 201103L for C++11.
+     * G++ now correctly implements the two-phase lookup rules such that
+       an unqualified name used in a template must have an appropriate
+       declaration found either in scope at the point of definition of the
+       template or by argument-dependent lookup at the point of
+       instantiation. As a result, code that relies on a second
+       unqualified lookup at the point of instantiation to find functions
+       declared after the template or in dependent bases will be rejected.
+       The compiler will suggest ways to fix affected code, and using the
+       -fpermissive compiler flag will allow the code to compile with a
+       warning.
+
+template <class T>
+void f() { g(T()); } // error, g(int) not found by argument-dependent lookup
+void g(int) { } // fix by moving this declaration before the declaration of f
+
+template <class T>
+struct A: T {
+  // error, B::g(B) not found by argument-dependent lookup
+  void f() { g(T()); } // fix by using this->g or A::g
+};
+
+struct B { void g(B); };
+
+int main()
+{
+  f<int>();
+  A<B>().f();
+}
+
+     * G++ now properly re-uses stack space allocated for temporary
+       objects when their lifetime ends, which can significantly lower
+       stack consumption for some C++ functions. As a result of this, some
+       code with undefined behavior will now break:
+
+const int &f(const int &i) { return i; }
+....
+const int &x = f(1);
+const int &y = f(2);
+
+       Here, x refers to the temporary allocated to hold the 1 argument,
+       which only lives until the end of the initialization; it
+       immediately becomes a dangling reference. So the next statement
+       re-uses the stack slot to hold the 2 argument, and users of x get
+       that value instead.
+       Note that this should not cause any change of behavior for
+       temporaries of types with non-trivial destructors, as they are
+       already destroyed at end of full-expression; the change is that now
+       the storage is released as well.
+     * A new command-line option -Wdelete-non-virtual-dtor has been added
+       to warn when delete is used to destroy an instance of a class which
+       has virtual functions and non-virtual destructor. It is unsafe to
+       delete an instance of a derived class through a pointer to a base
+       class if the base class does not have a virtual destructor. This
+       warning is enabled by -Wall.
+     * A new command-line option -Wzero-as-null-pointer-constant has been
+       added to warn when a literal '0' is used as null pointer constant.
+       It can be useful to facilitate the conversion to nullptr in C++11.
+     * As per C++98, access-declarations are now deprecated by G++.
+       Using-declarations are to be used instead. Furthermore, some
+       efforts have been made to improve the support of class scope
+       using-declarations. In particular, using-declarations referring to
+       a dependent type now work as expected ([14]bug c++/14258).
+     * The ELF symbol visibility of a template instantiation is now
+       properly constrained by the visibility of its template arguments
+       ([15]bug c++/35688).
+
+    Runtime Library (libstdc++)
+
+     * [16]Improved experimental support for the new ISO C++ standard,
+       C++11, including:
+          + using noexcept in most of the library;
+          + implementations of pointer_traits, allocator_traits and
+            scoped_allocator_adaptor;
+          + uses-allocator construction for tuple;
+          + vector meets the allocator-aware container requirements;
+          + replacing monotonic_clock with steady_clock;
+          + enabling the thread support library on most POSIX targets;
+          + many small improvements to conform to the FDIS.
+     * Added --enable-clocale=newlib configure option.
+     * Debug Mode iterators for unordered associative containers.
+     * Avoid polluting the global namespace and do not include <unistd.h>.
+
+  Fortran
+
+     * The compile flag [17]-fstack-arrays has been added, which causes
+       all local arrays to be put on stack memory. For some programs this
+       will improve the performance significantly. If your program uses
+       very large local arrays, it is possible that you will have to
+       extend your runtime limits for stack memory.
+     * The [18]-Ofast flag now also implies [19]-fno-protect-parens and
+       [20]-fstack-arrays.
+     * Front-end optimizations can now be selected by the
+       [21]-ffrontend-optimize option and deselected by the
+       -fno-frontend-optimize option.
+     * When front-end optimization removes a function call,
+       [22]-Wfunction-elimination warns about that.
+     * When performing front-end-optimization, the
+       [23]-faggressive-function-elimination option allows the removal of
+       duplicate function calls even for impure functions.
+     * The flag [24]-Wreal-q-constant has been added, which warns if
+       floating-point literals have been specified using q (such as
+       1.0q0); the q marker is now supported as a vendor extension to
+       denote quad precision (REAL(16) or, if not available, REAL(10)).
+       Consider using a kind parameter (such as in 1.0_qp) instead, which
+       can be obtained via [25]SELECTED_REAL_KIND.
+     * The GFORTRAN_USE_STDERR environment variable has been removed. GNU
+       Fortran now always prints error messages to standard error. If you
+       wish to redirect standard error, please consult the manual for your
+       OS, shell, batch environment etc. as appropriate.
+     * The -fdump-core option and GFORTRAN_ERROR_DUMPCORE environment
+       variable have been removed. When encountering a serious error,
+       gfortran will now always abort the program. Whether a core dump is
+       generated depends on the user environment settings; see the ulimit
+       -c setting for POSIX shells, limit coredumpsize for C shells, and
+       the [26]WER user-mode dumps settings on Windows.
+     * The [27]-fbacktrace option is now enabled by default. When
+       encountering a fatal error, gfortran will attempt to print a
+       backtrace to standard error before aborting. It can be disabled
+       with -fno-backtrace. Note: On POSIX targets with the addr2line
+       utility from GNU binutils, GNU Fortran can print a backtrace with
+       function name, file name, line number information in addition to
+       the addresses; otherwise only the addresses are printed.
+     * [28]Fortran 2003:
+          + Generic interface names which have the same name as derived
+            types are now supported, which allows to write constructor
+            functions. Note that Fortran does not support static
+            constructor functions; only default initialization or an
+            explicit structure-constructor initialization are available.
+          + [29]Polymorphic (class) arrays are now supported.
+     * [30]Fortran 2008:
+          + Support for the DO CONCURRENT construct has been added, which
+            allows the user to specify that individual loop iterations
+            have no interdependencies.
+          + [31]Coarrays: Full single-image support except for polymorphic
+            coarrays. Additionally, preliminary support for multiple
+            images via an MPI-based [32]coarray communication library has
+            been added. Note: The library version is not yet usable as
+            remote coarray access is not yet possible.
+     * [33]TS 29113:
+          + New flag [34]-std=f2008ts permits programs that are expected
+            to conform to the Fortran 2008 standard and the draft
+            Technical Specification (TS) 29113 on Further Interoperability
+            of Fortran with C.
+          + The OPTIONAL attribute is now allowed for dummy arguments of
+            BIND(C) procedures.
+          + The RANK intrinsic has been added.
+          + The implementation of the ASYNCHRONOUS attribute in GCC is
+            compatible with the candidate draft of TS 29113 (since GCC
+            4.6).
+
+  Go
+
+     * GCC 4.7 implements the [35]Go 1 language standard. The library
+       support in 4.7.0 is not quite complete, due to release timing.
+       Release 4.7.1 includes complete support for Go 1. The Go library is
+       from the Go 1.0.1 release.
+     * Go has been tested on GNU/Linux and Solaris platforms. It may work
+       on other platforms as well.
+
+New Targets and Target Specific Improvements
+
+  ARM
+
+     * GCC now supports the Cortex-A7 processor implementing the v7-a
+       version of the architecture using the option -mcpu=cortex-a7.
+     * The default vector size in auto-vectorization for NEON is now 128
+       bits. If vectorization fails thusly, the vectorizer tries again
+       with 64-bit vectors.
+     * A new option -mvectorize-with-neon-double was added to allow users
+       to change the vector size to 64 bits.
+
+  AVR
+
+     * GCC now supports the XMEGA architecture. This requires GNU binutils
+       2.22 or later.
+     * Support for the [36]named address spaces __flash, __flash1, …,
+       __flash5 and __memx has been added. These address spaces locate
+       read-only data in flash memory and allow reading from flash memory
+       by means of ordinary C code, i.e. without the need of (inline)
+       assembler code:
+
+const __flash int values[] = { 42, 31 };
+
+int add_values (const __flash int *p, int i)
+{
+    return values[i] + *p;
+}
+
+     * Support has been added for the AVR-specific configure option
+       --with-avrlibc=yes in order to arrange for better integration of
+       [37]AVR-Libc. This configure option is supported in avr-gcc 4.7.2
+       and newer and will only take effect in non-RTEMS configurations. If
+       avr-gcc is configured for RTEMS, the option will be ignored which
+       is the same as specifying --with-avrlibc=no. See [38]PR54461 for
+       more technical details.
+     * Support for AVR-specific [39]built-in functions has been added.
+     * Support has been added for the signed and unsigned 24-bit scalar
+       integer types __int24 and __uint24.
+     * New command-line options -maccumulate-args, -mbranch-cost=cost and
+       -mstrict-X were added to allow better fine-tuning of code
+       optimization.
+     * The command option -fdata-sections now also takes affect on the
+       section names of variables with the progmem attribute.
+     * A new inline assembler print modifier %i to print a RAM address as
+       I/O address has been added:
+
+#include <avr/io.h> /* Port Definitions from AVR-LibC */
+
+void set_portb (uint8_t value)
+{
+    asm volatile ("out %i0, %1" :: "n" (&PORTB), "r" (value) : "memory");
+}
+
+       The offset between an I/O address and the RAM address for that I/O
+       location is device-specific. This offset is taken into account when
+       printing a RAM address with the %i modifier so that the address is
+       suitable to be used as operand in an I/O command. The address must
+       be a constant integer known at compile time.
+     * The inline assembler constraint "R" to represent integers in the
+       range −6 … 5 has been removed without replacement.
+     * Many optimizations to:
+          + 64-bit integer arithmetic
+          + Widening multiplication
+          + Integer division by a constant
+          + Avoid constant reloading in multi-byte instructions.
+          + Micro-optimizations for special instruction sequences.
+          + Generic built-in functions like __builtin_ffs*,
+            __builtin_clz*, etc.
+          + If-else decision trees generated by switch instructions
+          + Merging of data located in flash memory
+          + New libgcc variants for devices with 8-bit wide stack pointer
+          + …
+     * Better documentation:
+          + Handling of EIND and indirect jumps on devices with more than
+            128 KiB of program memory.
+          + Handling of the RAMPD, RAMPX, RAMPY and RAMPZ special function
+            registers.
+          + Function attributes OS_main and OS_task.
+          + AVR-specific built-in macros.
+
+  C6X
+
+     * Support has been added for the Texas Instruments C6X family of
+       processors.
+
+  CR16
+
+     * Support has been added for National Semiconductor's CR16
+       architecture.
+
+  Epiphany
+
+     * Support has been added for Adapteva's Epiphany architecture.
+
+  IA-32/x86-64
+
+     * Support for Intel AVX2 intrinsics, built-in functions and code
+       generation is available via -mavx2.
+     * Support for Intel BMI2 intrinsics, built-in functions and code
+       generation is available via -mbmi2.
+     * Implementation and automatic generation of __builtin_clz* using the
+       lzcnt instruction is available via -mlzcnt.
+     * Support for Intel FMA3 intrinsics and code generation is available
+       via -mfma.
+     * A new -mfsgsbase command-line option is available that makes GCC
+       generate new segment register read/write instructions through
+       dedicated built-ins.
+     * Support for the new Intel rdrnd instruction is available via
+       -mrdrnd.
+     * Two additional AVX vector conversion instructions are available via
+       -mf16c.
+     * Support for new Intel processor codename IvyBridge with RDRND,
+       FSGSBASE and F16C is available through -march=core-avx-i.
+     * Support for the new Intel processor codename Haswell with AVX2,
+       FMA, BMI, BMI2, LZCNT is available through -march=core-avx2.
+     * Support for new AMD family 15h processors (Piledriver core) is now
+       available through -march=bdver2 and -mtune=bdver2 options.
+     * Support for [40]the x32 psABI is now available through the -mx32
+       option.
+     * Windows mingw targets are using the -mms-bitfields option by
+       default.
+     * Windows x86 targets are using the __thiscall calling convention for
+       C++ class-member functions.
+     * Support for the configure option --with-threads=posix for Windows
+       mingw targets.
+
+  MIPS
+
+     * GCC now supports thread-local storage (TLS) for MIPS16. This
+       requires GNU binutils 2.22 or later.
+     * GCC can now generate code specifically for the Cavium Octeon+ and
+       Octeon2 processors. The associated command-line options are
+       -march=octeon+ and -march=octeon2 respectively. Both options
+       require GNU binutils 2.22 or later.
+     * GCC can now work around certain 24k errata, under the control of
+       the command-line option -mfix-24k. These workarounds require GNU
+       binutils 2.20 or later.
+     * 32-bit MIPS GNU/Linux targets such as mips-linux-gnu can now build
+       n32 and n64 multilibs. The result is effectively a 64-bit GNU/Linux
+       toolchain that generates 32-bit code by default. Use the
+       configure-time option --enable-targets=all to select these extra
+       multilibs.
+     * Passing -fno-delayed-branch now also stops the assembler from
+       automatically filling delay slots.
+
+  PowerPC/PowerPC64
+
+     * Vectors of type vector long long or vector long are passed and
+       returned using the same method as other vectors with the VSX
+       instruction set. Previously GCC did not adhere to the ABI for
+       128-bit vectors with 64-bit integer base types (PR 48857). This
+       will also be fixed in the GCC 4.6.1 and 4.5.4 releases.
+     * A new option -mno-pointers-to-nested-functions was added to allow
+       AIX 32-bit/64-bit and GNU/Linux 64-bit PowerPC users to specify
+       that the compiler should not load up the chain register (r11)
+       before calling a function through a pointer. If you use this
+       option, you cannot call nested functions through a pointer, or call
+       other languages that might use the static chain.
+     * A new option msave-toc-indirect was added to allow AIX
+       32-bit/64-bit and GNU/Linux 64-bit PowerPC users control whether we
+       save the TOC in the prologue for indirect calls or generate the
+       save inline. This can speed up some programs that call through a
+       function pointer a lot, but it can slow down other functions that
+       only call through a function pointer in exceptional cases.
+     * The PowerPC port will now enable machine-specific built-in
+       functions when the user switches the target machine using the
+       #pragma GCC target or __attribute__ ((__target__ ("target"))) code
+       sequences. In addition, the target macros are updated. However, due
+       to the way the -save-temps switch is implemented, you won't see the
+       effect of these additional macros being defined in preprocessor
+       output.
+
+  SH
+
+     * A new option -msoft-atomic has been added. When it is specified,
+       GCC will generate GNU/Linux-compatible gUSA atomic sequences for
+       the new __atomic routines.
+     * Since it is neither supported by GAS nor officially documented,
+       code generation for little endian SH2A has been disabled.
+       Specifying -ml with -m2a* will now result in a compiler error.
+     * The defunct -mbranch-cost option has been fixed.
+     * Some improvements to the generated code of:
+          + Utilization of the tst #imm,R0 instruction.
+          + Dynamic shift instructions on SH2A.
+          + Integer absolute value calculations.
+     * The -mdiv= option for targets other than SHmedia has been fixed and
+       documented.
+
+  SPARC
+
+     * The option -mflat has been reinstated. When it is specified, the
+       compiler will generate code for a single register window model.
+       This is essentially a new implementation and the corresponding
+       debugger support has been added to GDB 7.4.
+     * Support for the options -mtune=native and -mcpu=native has been
+       added on selected native platforms (GNU/Linux and Solaris).
+     * Support for the SPARC T3 (Niagara 3) processor has been added.
+     * VIS:
+          + An intrinsics header visintrin.h has been added.
+          + Builtin intrinsics for the VIS 1.0 edge handling and pixel
+            compare instructions have been added.
+          + The little-endian version of alignaddr is now supported.
+          + When possible, VIS builtins are marked const, which should
+            increase the compiler's ability to optimize VIS operations.
+          + The compiler now properly tracks the %gsr register and how it
+            behaves as an input for various VIS instructions.
+          + Akin to fzero, the compiler can now generate fone instructions
+            in order to set all of the bits of a floating-point register
+            to 1.
+          + The documentation for the VIS intrinsics in the GCC manual has
+            been brought up to date and many inaccuracies were fixed.
+          + Intrinsics for the VIS 2.0 bmask, bshuffle, and
+            non-condition-code setting edge instructions have been added.
+            Their availability is controlled by the new -mvis2 and
+            -mno-vis2 options. They are enabled by default on
+            UltraSPARC-III and later CPUs.
+     * Support for UltraSPARC Fused Multiply-Add floating-point extensions
+       has been added. These instructions are enabled by default on SPARC
+       T3 (Niagara 3) and later CPUs.
+
+  TILE-Gx/TILEPro
+
+     * Support has been added for the Tilera TILE-Gx and TILEPro families
+       of processors.
+
+Other significant improvements
+
+     * A new option (-grecord-gcc-switches) was added that appends
+       compiler command-line options that might affect code generation to
+       the DW_AT_producer attribute string in the DWARF debugging
+       information.
+     * GCC now supports various new GNU extensions to the DWARF debugging
+       information format, like [41]entry value and [42]call site
+       information, [43]typed DWARF stack or [44]a more compact macro
+       representation. Support for these extensions has been added to GDB
+       7.4. They can be disabled through the -gstrict-dwarf command-line
+       option.
+
+GCC 4.7.1
+
+   This is the [45]list of problem reports (PRs) from GCC's bug tracking
+   system that are known to be fixed in the 4.7.1 release. This list might
+   not be complete (that is, it is possible that some PRs that have been
+   fixed are not listed here).
+
+   The Go frontend in the 4.7.1 release fully supports the [46]Go 1
+   language standard.
+
+GCC 4.7.2
+
+   This is the [47]list of problem reports (PRs) from GCC's bug tracking
+   system that are known to be fixed in the 4.7.2 release. This list might
+   not be complete (that is, it is possible that some PRs that have been
+   fixed are not listed here).
+
+GCC 4.7.3
+
+   This is the [48]list of problem reports (PRs) from GCC's bug tracking
+   system that are known to be fixed in the 4.7.3 release. This list might
+   not be complete (that is, it is possible that some PRs that have been
+   fixed are not listed here).
+
+GCC 4.7.4
+
+   This is the [49]list of problem reports (PRs) from GCC's bug tracking
+   system that are known to be fixed in the 4.7.4 release. This list might
+   not be complete (that is, it is possible that some PRs that have been
+   fixed are not listed here).
+
+
+    For questions related to the use of GCC, please consult these web
+    pages and the [50]GCC manuals. If that fails, the
+    [51]gcc-help at gcc.gnu.org mailing list might help. Comments on these
+    web pages and the development of GCC are welcome on our developer
+    list at [52]gcc at gcc.gnu.org. All of [53]our lists have public
+    archives.
+
+   Copyright (C) [54]Free Software Foundation, Inc. Verbatim copying and
+   distribution of this entire article is permitted in any medium,
+   provided this notice is preserved.
+
+   These pages are [55]maintained by the GCC team. Last modified
+   2014-12-06[56].
+
+References
+
+   1. https://gcc.gnu.org/ml/gcc-patches/2011-03/msg01263.html
+   2. http://savannah.nongnu.org/bugs/?35407
+   3. https://gcc.gnu.org/PR18145
+   4. https://gcc.gnu.org/gcc-4.7/porting_to.html
+   5. http://openmp.org/wp/openmp-specifications/
+   6. https://gcc.gnu.org/wiki/TransactionalMemory
+   7. https://gcc.gnu.org/wiki/Atomic/GCCMM
+   8. http://gcc.gnu.org/gcc-4.7/cxx0x_status.html
+   9. http://gcc.gnu.org/gcc-4.7/cxx0x_status.html
+  10. http://gcc.gnu.org/gcc-4.7/cxx0x_status.html
+  11. http://gcc.gnu.org/gcc-4.7/cxx0x_status.html
+  12. http://gcc.gnu.org/gcc-4.7/cxx0x_status.html
+  13. http://gcc.gnu.org/gcc-4.7/cxx0x_status.html
+  14. https://gcc.gnu.org/PR14258
+  15. https://gcc.gnu.org/PR35688
+  16. https://gcc.gnu.org/onlinedocs/gcc-4.7.4/libstdc++/manual/manual/status.html#status.iso.2011
+  17. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/Code-Gen-Options.html#index-g_t_0040code_007bfstack-arrays_007d-254
+  18. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gcc/Optimize-Options.html#index-Ofast-689
+  19. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/Code-Gen-Options.html#index-g_t_0040code_007bfno-protect-parens_007d-270
+  20. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/Code-Gen-Options.html#index-g_t_0040code_007bfstack-arrays_007d-254
+  21. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/Code-Gen-Options.html#index-g_t_0040code_007bfrontend-optimize_007d-275
+  22. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/Error-and-Warning-Options.html#index-g_t_0040code_007bWfunction-elimination_007d-170
+  23. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/Code-Gen-Options.html#index-g_t_0040code_007bfaggressive-function-elimination_007d-270
+  24. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/Error-and-Warning-Options.html#index-g_t_0040code_007bWreal-q-constant_007d-149
+  25. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/SELECTED_005fREAL_005fKIND.html
+  26. http://msdn.microsoft.com/en-us/library/bb787181(v=vs.85).aspx
+  27. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/Debugging-Options.html#index-g_t_0040code_007bfno-backtrace_007d-183
+  28. https://gcc.gnu.org/wiki/Fortran2003Status
+  29. https://gcc.gnu.org/wiki/OOP
+  30. https://gcc.gnu.org/wiki/Fortran2008Status
+  31. https://gcc.gnu.org/wiki/Coarray
+  32. https://gcc.gnu.org/wiki/CoarrayLib
+  33. https://gcc.gnu.org/wiki/TS29113Status
+  34. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/Fortran-Dialect-Options.html#index-g_t_0040code_007bstd_003d_007d_0040var_007bstd_007d-option-53
+  35. http://weekly.golang.org/doc/go1.html
+  36. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gcc/Named-Address-Spaces.html
+  37. http://nongnu.org/avr-libc/
+  38. https://gcc.gnu.org/PR54461
+  39. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gcc/AVR-Built_002din-Functions.html
+  40. https://sites.google.com/site/x32abi/
+  41. http://www.dwarfstd.org/ShowIssue.php?issue=100909.1
+  42. http://www.dwarfstd.org/ShowIssue.php?issue=100909.2
+  43. http://www.dwarfstd.org/doc/040408.1.html
+  44. http://www.dwarfstd.org/ShowIssue.php?issue=110722.1
+  45. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.7.1
+  46. http://weekly.golang.org/doc/go1.html
+  47. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.7.2
+  48. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.7.3
+  49. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.7.4
+  50. https://gcc.gnu.org/onlinedocs/
+  51. mailto:gcc-help at gcc.gnu.org
+  52. mailto:gcc at gcc.gnu.org
+  53. https://gcc.gnu.org/lists.html
+  54. http://www.fsf.org/
+  55. https://gcc.gnu.org/about.html
+  56. http://validator.w3.org/check/referer
+======================================================================
+http://gcc.gnu.org/gcc-4.6/index.html
+                             GCC 4.6 Release Series
+
+   April 12, 2013
+
+   The [1]GNU project and the GCC developers are pleased to announce the
+   release of GCC 4.6.4.
+
+   This release is a bug-fix release, containing fixes for regressions in
+   GCC 4.6.3 relative to previous releases of GCC.
+
+Release History
+
+   GCC 4.6.4
+          April 12, 2013 ([2]changes, [3]documentation)
+
+   GCC 4.6.3
+          March 1, 2012 ([4]changes, [5]documentation)
+
+   GCC 4.6.2
+          October 26, 2011 ([6]changes, [7]documentation)
+
+   GCC 4.6.1
+          June 27, 2011 ([8]changes, [9]documentation)
+
+   GCC 4.6.0
+          March 25, 2011 ([10]changes, [11]documentation)
+
+References and Acknowledgements
+
+   GCC used to stand for the GNU C Compiler, but since the compiler
+   supports several other languages aside from C, it now stands for the
+   GNU Compiler Collection.
+
+   A list of [12]successful builds is updated as new information becomes
+   available.
+
+   The GCC developers would like to thank the numerous people that have
+   contributed new features, improvements, bug fixes, and other changes as
+   well as test results to GCC. This [13]amazing group of volunteers is
+   what makes GCC successful.
+
+   For additional information about GCC please refer to the [14]GCC
+   project web site or contact the [15]GCC development mailing list.
+
+   To obtain GCC please use [16]our mirror sites or [17]our SVN server.
+
+
+    For questions related to the use of GCC, please consult these web
+    pages and the [18]GCC manuals. If that fails, the
+    [19]gcc-help at gcc.gnu.org mailing list might help. Comments on these
+    web pages and the development of GCC are welcome on our developer
+    list at [20]gcc at gcc.gnu.org. All of [21]our lists have public
+    archives.
+
+   Copyright (C) [22]Free Software Foundation, Inc. Verbatim copying and
+   distribution of this entire article is permitted in any medium,
+   provided this notice is preserved.
+
+   These pages are [23]maintained by the GCC team. Last modified
+   2014-06-28[24].
+
+References
+
+   1. http://www.gnu.org/
+   2. http://gcc.gnu.org/gcc-4.6/changes.html
+   3. https://gcc.gnu.org/onlinedocs/4.6.4/
+   4. http://gcc.gnu.org/gcc-4.6/changes.html
+   5. https://gcc.gnu.org/onlinedocs/4.6.3/
+   6. http://gcc.gnu.org/gcc-4.6/changes.html
+   7. https://gcc.gnu.org/onlinedocs/4.6.2/
+   8. http://gcc.gnu.org/gcc-4.6/changes.html
+   9. https://gcc.gnu.org/onlinedocs/4.6.1/
+  10. http://gcc.gnu.org/gcc-4.6/changes.html
+  11. https://gcc.gnu.org/onlinedocs/4.6.0/
+  12. http://gcc.gnu.org/gcc-4.6/buildstat.html
+  13. https://gcc.gnu.org/onlinedocs/gcc/Contributors.html
+  14. http://gcc.gnu.org/index.html
+  15. mailto:gcc at gcc.gnu.org
+  16. http://gcc.gnu.org/mirrors.html
+  17. http://gcc.gnu.org/svn.html
+  18. https://gcc.gnu.org/onlinedocs/
+  19. mailto:gcc-help at gcc.gnu.org
+  20. mailto:gcc at gcc.gnu.org
+  21. https://gcc.gnu.org/lists.html
+  22. http://www.fsf.org/
+  23. https://gcc.gnu.org/about.html
+  24. http://validator.w3.org/check/referer
+======================================================================
+http://gcc.gnu.org/gcc-4.6/changes.html
+                             GCC 4.6 Release Series
+                        Changes, New Features, and Fixes
+
+Caveats
+
+     * The options -b <machine> and -V <version> have been removed because
+       they were unreliable. Instead, users should directly run
+       <machine>-gcc when cross-compiling, or <machine>-gcc-<version> to
+       run a different version of gcc.
+     * GCC now has stricter checks for invalid command-line options. In
+       particular, when gcc was called to link object files rather than
+       compile source code, it would previously accept and ignore all
+       options starting with --, including linker options such as
+       --as-needed and --export-dynamic, although such options would
+       result in errors if any source code was compiled. Such options, if
+       unknown to the compiler, are now rejected in all cases; if the
+       intent was to pass them to the linker, options such as
+       -Wl,--as-needed should be used.
+     * Versions of the GNU C library up to and including 2.11.1 included
+       an [1]incorrect implementation of the cproj function. GCC optimizes
+       its builtin cproj according to the behavior specified and allowed
+       by the ISO C99 standard. If you want to avoid discrepancies between
+       the C library and GCC's builtin transformations when using cproj in
+       your code, use GLIBC 2.12 or later. If you are using an older GLIBC
+       and actually rely on the incorrect behavior of cproj, then you can
+       disable GCC's transformations using -fno-builtin-cproj.
+     * The C-only intermodule optimization framework (IMA, enabled by
+       -combine) has been removed in favor of the new generic link-time
+       optimization framework (LTO) introduced in [2]GCC 4.5.0.
+     * GCC now ships with the LGPL-licensed libquadmath library, which
+       provides quad-precision mathematical functions for targets with a
+       __float128 datatype. __float128 is available for targets on 32-bit
+       x86, x86-64 and Itanium architectures. The libquadmath library is
+       automatically built on such targets when building the Fortran
+       compiler.
+     * New -Wunused-but-set-variable and -Wunused-but-set-parameter
+       warnings were added for C, C++, Objective-C and Objective-C++.
+       These warnings diagnose variables respective parameters which are
+       only set in the code and never otherwise used. Usually such
+       variables are useless and often even the value assigned to them is
+       computed needlessly, sometimes expensively. The
+       -Wunused-but-set-variable warning is enabled by default by -Wall
+       flag and -Wunused-but-set-parameter by -Wall -Wextra flags.
+     * On ARM, a bug has been fixed in GCC's implementation of the AAPCS
+       rules for the layout of vectors that could lead to wrong code being
+       generated. Vectors larger than 8 bytes in size are now by default
+       aligned to an 8-byte boundary. This is an ABI change: code that
+       makes explicit use of vector types may be incompatible with binary
+       objects built with older versions of GCC. Auto-vectorized code is
+       not affected by this change. (This change affects GCC versions
+       4.6.4 and later, with the exception of versions 4.7.0 and 4.7.1.)
+     * On AVR, variables with the progmem attribute to locate data in
+       flash memory must be qualified as const.
+     * Support for a number of older systems and recently unmaintained or
+       untested target ports of GCC has been declared obsolete in GCC 4.6.
+       Unless there is activity to revive them, the next release of GCC
+       will have their sources permanently removed.
+       All GCC ports for the following processor architectures have been
+       declared obsolete:
+          + Argonaut ARC (arc-*)
+          + National Semiconductor CRX (crx-*)
+          + Motorola 68HC11 and 68HC12 (m68hc11-*-*, m6811-*-*,
+            m68hc12-*-*, m6812-*-*)
+          + Sunplus S+core (score-*)
+       The following ports for individual systems on particular
+       architectures have been obsoleted:
+          + Interix (i[34567]86-*-interix3*)
+          + NetWare x86 (i[3456x]86-*-netware*)
+          + Generic ARM PE (arm-*-pe* other than arm*-wince-pe*)
+          + MCore PE (mcore-*-pe*)
+          + SH SymbianOS (sh*-*-symbianelf*)
+          + GNU Hurd on Alpha and PowerPC (alpha*-*-gnu*, powerpc*-*-gnu*)
+          + M68K uClinux old ABI (m68k-*-uclinuxoldabi*)
+          + a.out NetBSD (arm*-*-netbsd*, i[34567]86-*-netbsd*,
+            vax-*-netbsd*, but not *-*-netbsdelf*)
+       The i[34567]86-*-pe alias for Cygwin targets has also been
+       obsoleted; users should configure for i[34567]86-*-cygwin* instead.
+       Certain configure options to control the set of libraries built
+       with GCC on some targets have been obsoleted. On ARM targets, the
+       options --disable-fpu, --disable-26bit, --disable-underscore,
+       --disable-interwork, --disable-biendian and --disable-nofmult have
+       been obsoleted. On MIPS targets, the options
+       --disable-single-float, --disable-biendian and --disable-softfloat
+       have been obsoleted.
+     * Support has been removed for all the [3]configurations obsoleted in
+       GCC 4.5.
+     * More information on porting to GCC 4.6 from previous versions of
+       GCC can be found in the [4]porting guide for this release.
+
+General Optimizer Improvements
+
+     * A new general optimization level, -Ofast, has been introduced. It
+       combines the existing optimization level -O3 with options that can
+       affect standards compliance but result in better optimized code.
+       For example, -Ofast enables -ffast-math.
+     * Link-time optimization improvements:
+          + The [5]Scalable Whole Program Optimizer (WHOPR) project has
+            stabilized to the point of being usable. It has become the
+            default mode when using the LTO optimization model. Link time
+            optimization can now split itself into multiple parallel
+            compilations. Parallelism is controlled with -flto=n (where n
+            specifies the number of compilations to execute in parallel).
+            GCC can also cooperate with a GNU make job server by
+            specifying the -flto=jobserver option and adding + to the
+            beginning of the Makefile rule executing the linker.
+            Classical LTO mode can be enforced by -flto-partition=none.
+            This may result in small code quality improvements.
+          + A large number of bugs were fixed. GCC itself, Mozilla Firefox
+            and other large applications can be built with LTO enabled.
+          + The linker plugin support improvements
+               o Linker plugin is now enabled by default when the linker
+                 is detected to have plugin support. This is the case for
+                 GNU ld 2.21.51 or newer (on ELF and Cygwin targets) and
+                 the Gold linker on ELF targets. Plugin support of the
+                 Apple linker on Darwin is not compatible with GCC. The
+                 linker plugin can also be controlled by the
+                 -fuse-linker-plugin command line option.
+               o Resolution information from the linker plugin is used to
+                 drive whole program assumptions. Use of the linker plugin
+                 results in more aggressive optimization on binaries and
+                 on shared libraries that use the hidden visibility
+                 attribute. Consequently the use of -fwhole-program is not
+                 necessary in addition to LTO.
+          + Hidden symbols used from non-LTO objects now have to be
+            explicitly annotated with externally_visible when the linker
+            plugin is not used.
+          + C++ inline functions and virtual tables are now privatized
+            more aggressively, leading to better inter-procedural
+            optimization and faster dynamic linking.
+          + Memory usage and intermediate language streaming performance
+            have been improved.
+          + Static constructors and destructors from individual units are
+            inlined into a single function. This can significantly improve
+            startup times of large C++ applications where static
+            constructors are very common. For example, static constructors
+            are used when including the iostream header.
+          + Support for the Ada language has been added.
+     * Interprocedural optimization improvements
+          + The interprocedural framework was re-tuned for link time
+            optimization. Several scalability issues were resolved.
+          + Improved auto-detection of const and pure functions. Newly,
+            noreturn functions are auto-detected.
+            The [6]-Wsuggest-attribute=[const|pure|noreturn] flag is
+            available that informs users when adding attributes to headers
+            might improve code generation.
+          + A number of inlining heuristic improvements. In particular:
+               o Partial inlining is now supported and enabled by default
+                 at -O2 and greater. The feature can be controlled via
+                 -fpartial-inlining.
+                 Partial inlining splits functions with short hot path to
+                 return. This allows more aggressive inlining of the hot
+                 path leading to better performance and often to code size
+                 reductions (because cold parts of functions are not
+                 duplicated).
+               o Scalability for large compilation units was improved
+                 significantly.
+               o Inlining of callbacks is now more aggressive.
+               o Virtual methods are considered for inlining when the
+                 caller is inlined and devirtualization is then possible.
+               o Inlining when optimizing for size (either in cold regions
+                 of a program or when compiling with -Os) was improved to
+                 better handle C++ programs with larger abstraction
+                 penalty, leading to smaller and faster code.
+          + The IPA reference optimization pass detecting global variables
+            used or modified by functions was strengthened and sped up.
+          + Functions whose address was taken are now optimized out when
+            all references to them are dead.
+          + A new inter-procedural static profile estimation pass detects
+            functions that are executed once or unlikely to be executed.
+            Unlikely executed functions are optimized for size. Functions
+            executed once are optimized for size except for the inner
+            loops.
+          + On most targets with named section support, functions used
+            only at startup (static constructors and main), functions used
+            only at exit and functions detected to be cold are placed into
+            separate text segment subsections. This extends the
+            -freorder-functions feature and is controlled by the same
+            switch. The goal is to improve the startup time of large C++
+            programs.
+            Proper function placement requires linker support. GNU ld
+            2.21.51 on ELF targets was updated to place those functions
+            together within the text section leading to better code
+            locality and faster startup times of large C++ programs. The
+            feature is also supported in the Apple linker. Support in the
+            gold linker is planned.
+     * A new switch -fstack-usage has been added. It makes the compiler
+       output stack usage information for the program, on a per-function
+       basis, in an auxiliary file.
+     * A new switch -fcombine-stack-adjustments has been added. It can be
+       used to enable or disable the compiler's stack-slot combining pass
+       which before was enabled automatically at -O1 and above, but could
+       not be controlled on its own.
+     * A new switch -fstrict-volatile-bitfields has been added. Using it
+       indicates that accesses to volatile bitfields should use a single
+       access of the width of the field's type. This option can be useful
+       for precisely defining and accessing memory-mapped peripheral
+       registers from C or C++.
+
+Compile time and memory usage improvements
+
+     * Datastructures used by the dataflow framework in GCC were
+       reorganized for better memory usage and more cache locality.
+       Compile time is improved especially on units with large functions
+       (possibly resulting from a lot of inlining) not fitting into the
+       processor cache. The compile time of the GCC C compiler binary with
+       link-time optimization went down by over 10% (benchmarked on x86-64
+       target).
+
+New Languages and Language specific improvements
+
+  Ada
+
+     * Stack checking has been improved on selected architectures (Alpha,
+       IA-32/x86-64, RS/6000 and SPARC): it now will detect stack
+       overflows in all cases on these architectures.
+     * Initial support for Ada 2012 has been added.
+
+  C family
+
+     * A new warning, enabled by -Wdouble-promotion, has been added that
+       warns about cases where a value of type float is implicitly
+       promoted to double. This is especially helpful for CPUs that handle
+       the former in hardware, but emulate the latter in software.
+     * A new function attribute leaf was introduced. This attribute allows
+       better inter-procedural optimization across calls to functions that
+       return to the current unit only via returning or exception
+       handling. This is the case for most library functions that have no
+       callbacks.
+     * Support for a new data type __int128 for targets having wide enough
+       machine-mode support.
+     * The new function attribute callee_pop_aggregate allows to specify
+       if the caller or callee is responsible for popping the aggregate
+       return pointer value from the stack.
+     * Support for selectively enabling and disabling warnings via #pragma
+       GCC diagnostic has been added. For instance:
+#pragma GCC diagnostic error "-Wuninitialized"
+  foo(a);                       /* error is given for this one */
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wuninitialized"
+  foo(b);                       /* no diagnostic for this one */
+#pragma GCC diagnostic pop
+  foo(c);                       /* error is given for this one */
+#pragma GCC diagnostic pop
+  foo(d);                       /* depends on command line options */
+
+     * The -fmax-errors=N option is now supported. Using this option
+       causes the compiler to exit after N errors have been issued.
+
+  C
+
+     * There is now experimental support for some features from the
+       upcoming C1X revision of the ISO C standard. This support may be
+       selected with -std=c1x, or -std=gnu1x for C1X with GNU extensions.
+       Note that this support is experimental and may change incompatibly
+       in future releases for consistency with changes to the C1X standard
+       draft. The following features are newly supported as described in
+       the N1539 draft of C1X (with changes agreed at the March 2011 WG14
+       meeting); some other features were already supported with no
+       compiler changes being needed, or have some support but not in full
+       accord with N1539 (as amended).
+          + Static assertions (_Static_assert keyword)
+          + Typedef redefinition
+          + New macros in <float.h>
+          + Anonymous structures and unions
+     * The new -fplan9-extensions option directs the compiler to support
+       some extensions for anonymous struct fields which are implemented
+       by the Plan 9 compiler. A pointer to a struct may be automatically
+       converted to a pointer to an anonymous field when calling a
+       function, in order to make the types match. An anonymous struct
+       field whose type is a typedef name may be referred to using the
+       typedef name.
+
+  C++
+
+     * Improved [7]experimental support for the upcoming C++0x ISO C++
+       standard, including support for constexpr (thanks to Gabriel Dos
+       Reis and Jason Merrill), nullptr (thanks to Magnus Fromreide),
+       noexcept, unrestricted unions, range-based for loops (thanks to
+       Rodrigo Rivas Costa), opaque enum declarations (thanks also to
+       Rodrigo), implicitly deleted functions and implicit move
+       constructors.
+     * When an extern declaration within a function does not match a
+       declaration in the enclosing context, G++ now properly declares the
+       name within the namespace of the function rather than the namespace
+       which was open just before the function definition ([8]c++/43145).
+     * GCC now warns by default when casting integers to larger pointer
+       types. These warnings can be disabled with the option
+       -Wno-int-to-pointer-cast, which is now also available in C++.
+     * G++ no longer optimizes using the assumption that a value of
+       enumeration type will fall within the range specified by the
+       standard, since that assumption is easily violated with a
+       conversion from integer type ([9]c++/43680). The old behavior can
+       be restored with -fstrict-enums.
+     * The new -fnothrow-opt flag changes the semantics of a throw()
+       exception specification to match the proposed semantics of the
+       noexcept specification: just call terminate if an exception tries
+       to propagate out of a function with such an exception
+       specification. This dramatically reduces or eliminates the code
+       size overhead from adding the exception specification.
+     * The new -Wnoexcept flag will suggest adding a noexcept qualifier to
+       a function that the compiler can tell doesn't throw if it would
+       change the value of a noexcept expression.
+     * The -Wshadow option now warns if a local variable or type
+       declaration shadows another type in C++. Note that the compiler
+       will not warn if a local variable shadows a struct/class/enum, but
+       will warn if it shadows an explicit typedef.
+     * When an identifier is not found in the current scope, G++ now
+       offers suggestions about which identifier might have been intended.
+     * G++ now issues clearer diagnostics for missing semicolons after
+       class, struct, and union definitions.
+     * G++ now issues clearer diagnostics for missing semicolons after
+       class member declarations.
+     * G++ now issues clearer diagnostics when a colon is used in a place
+       where a double-colon was intended.
+     * G++ no longer accepts mutable on reference members ([10]c++/33558).
+       Use -fpermissive to allow the old, non-conforming behaviour.
+     * A few mangling fixes have been made, to attribute const/volatile on
+       function pointer types, decltype of a plain decl, and use of a
+       function parameter in the declaration of another parameter. By
+       default the compiler still uses the old mangling, but emits aliases
+       with the new mangling on targets that support strong aliases. Users
+       can switch over entirely to the new mangling with -fabi-version=5
+       or -fabi-version=0. -Wabi will now warn about code that uses the
+       old mangling.
+     * In 4.6.0 and 4.6.1 G++ no longer allows objects of const-qualified
+       type to be default initialized unless the type has a user-declared
+       default constructor. In 4.6.2 G++ implements the proposed
+       resolution of [11]DR 253, so default initialization is allowed if
+       it initializes all subobjects. Code that fails to compile can be
+       fixed by providing an initializer e.g.
+    struct A { A(); };
+    struct B : A { int i; };
+    const B b = B();
+       Use -fpermissive to allow the old, non-conforming behaviour.
+
+    Runtime Library (libstdc++)
+
+     * [12]Improved experimental support for the upcoming ISO C++
+       standard, C++0x, including using constexpr and nullptr.
+     * Performance improvements to the [13]Debug Mode, thanks to François
+       Dumont.
+     * Atomic operations used for reference-counting are annotated so that
+       they can be understood by race detectors such as Helgrind, see
+       [14]Data Race Hunting.
+     * Most libstdc++ standard headers have been changed to no longer
+       include the cstddef header as an implementation detail. Code that
+       relied on that header being included as side-effect of including
+       other standard headers will need to include cstddef explicitly.
+
+  Fortran
+
+     * On systems supporting the libquadmath library, GNU Fortran now also
+       supports a quad-precision, kind=16 floating-point data type
+       (REAL(16), COMPLEX(16)). As the data type is not fully supported in
+       hardware, calculations might be one to two orders of magnitude
+       slower than with the 4, 8 or 10 bytes floating-point data types.
+       This change does not affect systems which support REAL(16) in
+       hardware nor those which do not support libquadmath.
+     * Much improved compile time for large array constructors.
+     * In order to reduce execution time and memory consumption, use of
+       temporary arrays in assignment expressions is avoided for many
+       cases. The compiler now reverses loops in order to avoid generating
+       a temporary array where possible.
+     * Improved diagnostics, especially with -fwhole-file.
+     * The -fwhole-file flag is now enabled by default. This improves code
+       generation and diagnostics. It can be disabled using the deprecated
+       -fno-whole-file flag.
+     * Support the generation of Makefile dependencies via the [15]-M...
+       flags of GCC; you may need to specify the -cpp option in addition.
+       The dependencies take modules, Fortran's include, and CPP's
+       #include into account. Note: Using -M for the module path is no
+       longer supported, use -J instead.
+     * The flag -Wconversion has been modified to only issue warnings
+       where a conversion leads to information loss. This drastically
+       reduces the number of warnings; -Wconversion is thus now enabled
+       with -Wall. The flag -Wconversion-extra has been added and also
+       warns about other conversions; -Wconversion-extra typically issues
+       a huge number of warnings, most of which can be ignored.
+     * A new command-line option -Wunused-dummy-argument warns about
+       unused dummy arguments and is included in -Wall. Before,
+       -Wunused-variable also warned about unused dummy arguments.
+     * Fortran 2003 support has been extended:
+          + Improved support for polymorphism between libraries and
+            programs and for complicated inheritance patterns (cf.
+            [16]object-oriented programming).
+          + Experimental support of the ASSOCIATE construct.
+          + In pointer assignments it is now possible to specify the lower
+            bounds of the pointer and, for a rank-1 or a simply contiguous
+            data-target, to remap the bounds.
+          + Automatic (re)allocation: In intrinsic assignments to
+            allocatable variables the left-hand side will be automatically
+            allocated (if unallocated) or reallocated (if the shape or
+            type parameter is different). To avoid the small performance
+            penalty, you can use a(:) = ... instead of a = ... for arrays
+            and character strings – or disable the feature using -std=f95
+            or -fno-realloc-lhs.
+          + Deferred type parameter: For scalar allocatable and pointer
+            variables the character length can be deferred.
+          + Namelist variables with allocatable and pointer attribute and
+            nonconstant length type parameter are supported.
+     * Fortran 2008 support has been extended:
+          + Experimental [17]coarray support (for one image only, i.e.
+            num_images() == 1); use the [18]-fcoarray=single flag to
+            enable it.
+          + The STOP and the new ERROR STOP statements now support all
+            constant expressions.
+          + Support for the CONTIGUOUS attribute.
+          + Support for ALLOCATE with MOLD.
+          + Support for the STORAGE_SIZE intrinsic inquiry function.
+          + Support of the NORM2 and PARITY intrinsic functions.
+          + The following bit intrinsics were added: POPCNT and POPPAR for
+            counting the number of 1 bits and returning the parity; BGE,
+            BGT, BLE, and BLT for bitwise comparisons; DSHIFTL and DSHIFTR
+            for combined left and right shifts, MASKL and MASKR for simple
+            left and right justified masks, MERGE_BITS for a bitwise merge
+            using a mask, SHIFTA, SHIFTL and SHIFTR for shift operations,
+            and the transformational bit intrinsics IALL, IANY and
+            IPARITY.
+          + Support of the EXECUTE_COMMAND_LINE intrinsic subroutine.
+          + Support for the IMPURE attribute for procedures, which allows
+            for ELEMENTAL procedures without the restrictions of PURE.
+          + Null pointers (including NULL()) and not allocated variables
+            can be used as actual argument to optional non-pointer,
+            non-allocatable dummy arguments, denoting an absent argument.
+          + Non-pointer variables with TARGET attribute can be used as
+            actual argument to POINTER dummies with INTENT(IN)
+          + Pointers including procedure pointers and those in a derived
+            type (pointer components) can now be initialized by a target
+            instead of only by NULL.
+          + The EXIT statement (with construct-name) can now be used to
+            leave not only the DO but also the ASSOCIATE, BLOCK, IF,
+            SELECT CASE and SELECT TYPE constructs.
+          + Internal procedures can now be used as actual argument.
+          + The named constants INTEGER_KINDS, LOGICAL_KINDS, REAL_KINDS
+            and CHARACTER_KINDS of the intrinsic module ISO_FORTRAN_ENV
+            have been added; these arrays contain the supported kind
+            values for the respective types.
+          + The module procedures C_SIZEOF of the intrinsic module
+            ISO_C_BINDINGS and COMPILER_VERSION and COMPILER_OPTIONS of
+            ISO_FORTRAN_ENV have been implemented.
+          + Minor changes: obsolescence diagnostics for ENTRY was added
+            for -std=f2008; a line may start with a semicolon; for
+            internal and module procedures END can be used instead of END
+            SUBROUTINE and END FUNCTION; SELECTED_REAL_KIND now also takes
+            a RADIX argument; intrinsic types are supported for
+            TYPE(intrinsic-type-spec); multiple type-bound procedures can
+            be declared in a single PROCEDURE statement; implied-shape
+            arrays are supported for named constants (PARAMETER). The
+            transformational, three argument versions of BESSEL_JN and
+            BESSEL_YN were added – the elemental, two-argument version had
+            been added in GCC 4.4; note that the transformational
+            functions use a recurrence algorithm.
+
+  Go
+
+   Support for the [19]Go programming language has been added to GCC. It
+   is not enabled by default when you build GCC; use the
+   --enable-languages configure option to build it. The driver program for
+   compiling Go code is gccgo.
+
+   Go is currently known to work on GNU/Linux and RTEMS. Solaris support
+   is in progress. It may or may not work on other platforms.
+
+  Objective-C and Objective-C++
+
+     * The -fobjc-exceptions flag is now required to enable Objective-C
+       exception and synchronization syntax (introduced by the keywords
+       @try, @catch, @finally and @synchronized).
+     * A number of Objective-C 2.0 features and extensions are now
+       supported by GCC. These features are enabled by default; you can
+       disable them by using the new -fobjc-std=objc1 command-line option.
+     * The Objective-C 2.0 dot-syntax is now supported. It is an
+       alternative syntax for using getters and setters; object.count is
+       automatically converted into [object count] or [object setCount:
+       ...] depending on context; for example if (object.count > 0) is
+       automatically compiled into the equivalent of if ([object count] >
+       0) while object.count = 0; is automatically compiled into the
+       equivalent ot [object setCount: 0];. The dot-syntax can be used
+       with instance and class objects and with any setters or getters, no
+       matter if they are part of a declared property or not.
+     * Objective-C 2.0 declared properties are now supported. They are
+       declared using the new @property keyword, and are most commonly
+       used in conjunction with the new Objective-C 2.0 dot-syntax. The
+       nonatomic, readonly, readwrite, assign, retain, copy, setter and
+       getter attributes are all supported. Marking declared properties
+       with __attribute__ ((deprecated)) is supported too.
+     * The Objective-C 2.0 @synthesize and @dynamic keywords are
+       supported. @synthesize causes the compiler to automatically
+       synthesize a declared property, while @dynamic is used to disable
+       all warnings for a declared property for which no implementation is
+       provided at compile time. Synthesizing declared properties requires
+       runtime support in most useful cases; to be able to use it with the
+       GNU runtime, appropriate helper functions have been added to the
+       GNU Objective-C runtime ABI, and are implemented by the GNU
+       Objective-C runtime library shipped with GCC.
+     * The Objective-C 2.0 fast enumeration syntax is supported in
+       Objective-C. This is currently not yet available in Objective-C++.
+       Fast enumeration requires support in the runtime, and such support
+       has been added to the GNU Objective-C runtime library (shipped with
+       GCC).
+     * The Objective-C 2.0 @optional keyword is supported. It allows you
+       to mark methods or properties in a protocol as optional as opposed
+       to required.
+     * The Objective-C 2.0 @package keyword is supported. It has currently
+       the same effect as the @public keyword.
+     * Objective-C 2.0 method attributes are supported. Currently the
+       supported attributes are deprecated, sentinel, noreturn and format.
+     * Objective-C 2.0 method argument attributes are supported. The most
+       widely used attribute is unused, to mark an argument as unused in
+       the implementation.
+     * Objective-C 2.0 class and protocol attributes are supported.
+       Currently the only supported attribute is deprecated.
+     * Objective-C 2.0 class extensions are supported. A class extension
+       has the same syntax as a category declaration with no category
+       name, and the methods and properties declared in it are added
+       directly to the main class. It is mostly used as an alternative to
+       a category to add methods to a class without advertising them in
+       the public headers, with the advantage that for class extensions
+       the compiler checks that all the privately declared methods are
+       actually implemented.
+     * As a result of these enhancements, GCC can now be used to build
+       Objective-C and Objective-C++ software that uses Foundation and
+       other important system frameworks with the NeXT runtime on Darwin 9
+       and Darwin 10 (OSX 10.5 and 10.6).
+     * Many bugs in the compiler have been fixed in this release; in
+       particular, LTO can now be used when compiling Objective-C and
+       Objective-C++ and the parser is much more robust in dealing with
+       invalid code.
+
+    Runtime Library (libobjc)
+
+     * The GNU Objective-C runtime library now defines the macro
+       __GNU_LIBOBJC__ (with a value that is increased at every release
+       where there is any change to the API) in objc/objc.h, making it
+       easy to determine if the GNU Objective-C runtime library is being
+       used, and if so, which version. Previous versions of the GNU
+       Objective-C runtime library (and other Objective-C runtime
+       libraries such as the Apple one) do not define this macro.
+     * A new Objective-C 2.0 API, almost identical to the one implemented
+       by the Apple Objective-C runtime, has been implemented in the GNU
+       Objective-C runtime library. The new API hides the internals of
+       most runtime structures but provides a more extensive set of
+       functions to operate on them. It is much easier, for example, to
+       create or modify classes at runtime. The new API also makes it
+       easier to port software from Apple to GNU as almost no changes
+       should be required. The old API is still supported for backwards
+       compatibility; including the old objc/objc-api.h header file
+       automatically selects the old API, while including the new
+       objc/runtime.h header file automatically selects the new API.
+       Support for the old API is being phased out and upgrading the
+       software to use the new API is strongly recommended. To check for
+       the availability of the new API, the __GNU_LIBOBJC__ macro can be
+       used as older versions of the GNU Objective-C runtime library,
+       which do not support the new API, do not define such a macro.
+     * Runtime support for @synchronized has been added.
+     * Runtime support for Objective-C 2.0 synthesized property accessors
+       has been added.
+     * Runtime support for Objective-C 2.0 fast enumeration has been
+       added.
+
+New Targets and Target Specific Improvements
+
+  ARM
+
+     * GCC now supports the Cortex-M4 processor implementing the v7-em
+       version of the architecture using the option -mcpu=cortex-m4.
+     * Scheduling descriptions for the Cortex-M4, the Neon and the
+       floating point units of the Cortex-A9 and a pipeline description
+       for the Cortex-A5 have been added.
+     * Synchronization primitives such as __sync_fetch_and_add and friends
+       are now inlined for supported architectures rather than calling
+       into a kernel helper function.
+     * SSA loop prefetching is enabled by default for the Cortex-A9 at
+       -O3.
+     * Several improvements were committed to improve code generation for
+       the ARM architecture including a rewritten implementation for load
+       and store multiples.
+     * Several enhancements were committed to improve SIMD code generation
+       for NEON by adding support for widening instructions, misaligned
+       loads and stores, vector conditionals and support for 64 bit
+       arithmetic.
+     * Support was added for the Faraday cores fa526, fa606te, fa626te,
+       fmp626te, fmp626 and fa726te and can be used with the respective
+       names as parameters to the -mcpu= option.
+     * Basic support was added for Cortex-A15 and is available through
+       -mcpu=cortex-a15.
+     * GCC for AAPCS configurations now more closely adheres to the AAPCS
+       specification by enabling -fstrict-volatile-bitfields by default.
+
+  IA-32/x86-64
+
+     * The new -fsplit-stack option permits programs to use a
+       discontiguous stack. This is useful for threaded programs, in that
+       it is no longer necessary to specify the maximum stack size when
+       creating a thread. This feature is currently only implemented for
+       32-bit and 64-bit x86 GNU/Linux targets.
+     * Support for emitting profiler counter calls before function
+       prologues. This is enabled via a new command-line option -mfentry.
+     * Optimization for the Intel Core 2 processors is now available
+       through the -march=core2 and -mtune=core2 options.
+     * Support for Intel Core i3/i5/i7 processors is now available through
+       the -march=corei7 and -mtune=corei7 options.
+     * Support for Intel Core i3/i5/i7 processors with AVX is now
+       available through the -march=corei7-avx and -mtune=corei7-avx
+       options.
+     * Support for AMD Bobcat (family 14) processors is now available
+       through the -march=btver1 and -mtune=btver1 options.
+     * Support for AMD Bulldozer (family 15) processors is now available
+       through the -march=bdver1 and -mtune=bdver1 options.
+     * The default setting (when not optimizing for size) for 32-bit
+       GNU/Linux and Darwin x86 targets has been changed to
+       -fomit-frame-pointer. The default can be reverted to
+       -fno-omit-frame-pointer by configuring GCC with the
+       --enable-frame-pointer configure option.
+     * Darwin, FreeBSD, Solaris 2, MinGW and Cygwin now all support
+       __float128 on 32-bit and 64-bit x86 targets.
+     * AVX floating-point arithmetic can now be enabled by default at
+       configure time with the new --with-fpmath=avx option.
+     * The SSA loop prefetching pass is enabled when using -O3 when
+       optimizing for CPUs where prefetching is beneficial (AMD CPUs newer
+       than K6).
+     * Support for TBM (Trailing Bit Manipulation) built-in functions and
+       code generation is available via -mtbm.
+     * Support for AMD's BMI (Bit Manipulation) built-in functions and
+       code generation is available via -mbmi.
+
+  MicroBlaze
+
+     * Support has been added for the Xilinx MicroBlaze softcore processor
+       (microblaze-elf) embedded target. This configurable processor is
+       supported on several Xilinx Spartan and Virtex FPGAs.
+
+  MIPS
+
+     * GCC now supports the Loongson 3A processor. Its canonical -march=
+       and -mtune= name is loongson3a.
+
+  MN10300 / AM33
+
+     * The inline assembly register constraint "A" has been renamed "c".
+       This constraint is used to select a floating-point register that
+       can be used as the destination of a multiply-accumulate
+       instruction.
+     * New inline assembly register constraints "A" and "D" have been
+       added. These constraint letters resolve to all general registers
+       when compiling for AM33, and resolve to address registers only or
+       data registers only when compiling for MN10300.
+     * The MDR register is represented in the compiler. One can access the
+       register via the "z" constraint in inline assembly. It can be
+       marked as clobbered or used as a local register variable via the
+       "mdr" name. The compiler uses the RETF instruction if the function
+       does not modify the MDR register, so it is important that inline
+       assembly properly annotate any usage of the register.
+
+  PowerPC/PowerPC64
+
+     * GCC now supports the Applied Micro Titan processor with
+       -mcpu=titan.
+     * The -mrecip option has been added, which indicates whether the
+       reciprocal and reciprocal square root instructions should be used.
+     * The -mveclibabi=mass option can be used to enable the compiler to
+       autovectorize mathematical functions using the Mathematical
+       Acceleration Subsystem library.
+     * The -msingle-pic-base option has been added, which instructs the
+       compiler to avoid loading the PIC base register in function
+       prologues. The PIC base register must be initialized by the runtime
+       system.
+     * The -mblock-move-inline-limit option has been added, which enables
+       the user to control the maximum size of inlined memcpy calls and
+       similar.
+     * PowerPC64 GNU/Linux support for applications requiring a large TOC
+       section has been improved. A new command-line option,
+       -mcmodel=MODEL, controls this feature; valid values for MODEL are
+       small, medium, or large.
+     * The Altivec builtin functions vec_ld and vec_st have been modified
+       to generate the Altivec memory instructions LVX and STVX, even if
+       the -mvsx option is used. In the initial GCC 4.5 release, these
+       builtin functions were changed to generate VSX memory reference
+       instructions instead of Altivec memory instructions, but there are
+       differences between the two instructions. If the VSX instruction
+       set is available, you can now use the new builtin functions
+       vec_vsx_ld and vec_vsx_st which always generates the VSX memory
+       instructions.
+     * The GCC compiler on AIX now defaults to a process layout with a
+       larger data space allowing larger programs to be compiled.
+     * The GCC long double type on AIX 6.1 and above has reverted to 64
+       bit double precision, matching the AIX XL compiler default, because
+       of missing C99 symbols required by the GCC runtime.
+     * The default processor scheduling model and tuning for PowerPC64
+       GNU/Linux and for AIX 6.1 and above now is POWER7.
+     * Starting with GCC 4.6.1, vectors of type vector long long or vector
+       long are passed and returned in the same method as other vectors
+       with the VSX instruction set. Previously the GCC compiler did not
+       adhere to the ABI for 128-bit vectors with 64-bit integer base
+       types (PR 48857). This is also fixed in the GCC 4.5.4 release.
+
+  S/390, zSeries and System z9/z10, IBM zEnterprise z196
+
+     * Support for the zEnterprise z196 processor has been added. When
+       using the -march=z196 option, the compiler will generate code
+       making use of the following instruction facilities:
+          + Conditional load/store
+          + Distinct-operands
+          + Floating-point-extension
+          + Interlocked-access
+          + Population-count
+       The -mtune=z196 option avoids the compare and branch instructions
+       as well as the load address instruction with an index register as
+       much as possible and performs instruction scheduling appropriate
+       for the new out-of-order pipeline architecture.
+     * When using the -m31 -mzarch options the generated code still
+       conforms to the 32-bit ABI but uses the general purpose registers
+       as 64-bit registers internally. This requires a Linux kernel saving
+       the whole 64-bit registers when doing a context switch. Kernels
+       providing that feature indicate that by the 'highgprs' string in
+       /proc/cpuinfo.
+     * The SSA loop prefetching pass is enabled when using -O3.
+
+  SPARC
+
+     * GCC now supports the LEON series of SPARC V8 processors. The code
+       generated by the compiler can either be tuned to it by means of the
+       --with-tune=leon configure option and -mtune=leon compilation
+       option, or the compiler can be built for the sparc-leon-{elf,linux}
+       and sparc-leon3-{elf,linux} targets directly.
+     * GCC has stopped sign/zero-extending parameter registers in the
+       callee for functions taking parameters with sub-word size in 32-bit
+       mode, since this is redundant with the specification of the ABI.
+       GCC has never done so in 64-bit mode since this is also redundant.
+     * The command line option -mfix-at697f has been added to enable the
+       documented workaround for the single erratum of the Atmel AT697F
+       processor.
+
+Operating Systems
+
+  Android
+
+     * GCC now supports the Bionic C library and provides a convenient way
+       of building native libraries and applications for the Android
+       platform. Refer to the documentation of the -mandroid and -mbionic
+       options for details on building native code. At the moment, Android
+       support is enabled only for ARM.
+
+  Darwin/Mac OS X
+
+     * General
+          + Initial support for CFString types has been added.
+            This allows GCC to build projects including the system Core
+            Foundation frameworks. The GCC Objective-C family supports
+            CFString "toll-free bridged" as per the Mac OS X system tools.
+            CFString is also recognized in the context of format
+            attributes and arguments (see the documentation for format
+            attributes for limitations). At present, 8-bit character types
+            are supported.
+          + Object file size reduction.
+            The Darwin zeroed memory allocators have been re-written to
+            make more use of .zerofill sections. For non-debug code, this
+            can reduce object file size significantly.
+          + Objective-C family 64-bit support (NeXT ABI 2).
+            Initial support has been added to support 64-bit Objective-C
+            code using the Darwin/OS X native (NeXT) runtime. ABI version
+            2 will be selected automatically when 64-bit code is built.
+          + Objective-C family 32-bit ABI 1.
+            For 32-bit code ABI 1 is also now also allowed. At present it
+            must be selected manually using -fobjc-abi-version=1 where
+            applicable - i.e. on Darwin 9/10 (OS X 10.5/10.6).
+     * x86 Architecture
+          + The -mdynamic-no-pic option has been enabled.
+            Code supporting -mdynamic-no-pic optimization has been added
+            and is applicable to -m32 builds. The compiler bootstrap uses
+            the option where appropriate.
+          + The default value for -mtune= has been changed.
+            Since Darwin systems are primarily Xeon, Core-2 or similar the
+            default tuning has been changed to -mtune=core2.
+          + Enable 128-bit long double (__float128) support on Darwin.
+     * PPC Architecture
+          + Darwin64 ABI.
+            Several significant bugs have been fixed, such that GCC now
+            produces code compatible with the Darwin64 PowerPC ABI.
+          + libffi and boehm-gc.
+            The Darwin ports of the libffi and boehm-gc libraries have
+            been upgraded to include a Darwin64 implementation. This means
+            that powerpc*-*-darwin9 platforms may now, for example, build
+            Java applications with -m64 enabled.
+          + Plug-in support has been enabled.
+          + The -fsection-anchors option is now available although,
+            presently, not heavily tested.
+
+  Solaris 2
+
+    New Features
+
+     * Support symbol versioning with the Sun linker.
+     * Allow libstdc++ to leverage full ISO C99 support on Solaris 10+.
+     * Support thread-local storage (TLS) with the Sun assembler on
+       Solaris 2/x86.
+     * Support TLS on Solaris 8/9 if prerequisites are met.
+     * Support COMDAT group with the GNU assembler and recent Sun linker.
+     * Support the Sun assembler visibility syntax.
+     * Default Solaris 2/x86 to -march=pentium4 (Solaris 10+) resp.
+       -march=pentiumpro (Solaris 8/9).
+     * Don't use SSE on Solaris 8/9 x86 by default.
+     * Enable 128-bit long double (__float128) support on Solaris 2/x86.
+
+    ABI Change
+
+     * Change the ABI for returning 8-byte vectors like __m64 in MMX
+       registers on Solaris 10+/x86 to match the Sun Studio 12.1+
+       compilers. This is an incompatible change. If you use such types,
+       you must either recompile all your code with the new compiler or
+       use the new -mvect8-ret-in-mem option to remain compatible with
+       previous versions of GCC and Sun Studio.
+
+  Windows x86/x86_64
+
+     * Initial support for decimal floating point.
+     * Support for the __thiscall calling-convention.
+     * Support for hot-patchable function prologues via the
+       ms_hook_prologue attribute for x86_64 in addition to 32-bit x86.
+     * Improvements of stack-probing and stack-allocation mechanisms.
+     * Support of push/pop-macro pragma as preprocessor command.
+       With #pragma push_macro("macro-name") the current definition of
+       macro-name is saved and can be restored with #pragma
+       pop_macro("macro-name") to its saved definition.
+     * Enable 128-bit long double (__float128) support on MinGW and
+       Cygwin.
+
+Other significant improvements
+
+  Installation changes
+
+     * An install-strip make target is provided that installs stripped
+       executables, and may install libraries with unneeded or debugging
+       sections stripped.
+     * On Power7 systems, there is a potential problem if you build the
+       GCC compiler with a host compiler using options that enable the VSX
+       instruction set generation. If the host compiler has been patched
+       so that the vec_ld and vec_st builtin functions generate Altivec
+       memory instructions instead of VSX memory instructions, then you
+       should be able to build the compiler with VSX instruction
+       generation.
+
+Changes for GCC Developers
+
+   Note: these changes concern developers that develop GCC itself or
+   software that integrates with GCC, such as plugins, and not the general
+   GCC users.
+     * The gengtype utility, which previously was internal to the GCC
+       build process, has been enchanced to provide GC root information
+       for plugins as necessary.
+     * The old GC allocation interface of ggc_alloc and friends was
+       replaced with a type-safe alternative.
+
+GCC 4.6.1
+
+   This is the [20]list of problem reports (PRs) from GCC's bug tracking
+   system that are known to be fixed in the 4.6.1 release. This list might
+   not be complete (that is, it is possible that some PRs that have been
+   fixed are not listed here).
+
+GCC 4.6.2
+
+   This is the [21]list of problem reports (PRs) from GCC's bug tracking
+   system that are known to be fixed in the 4.6.2 release. This list might
+   not be complete (that is, it is possible that some PRs that have been
+   fixed are not listed here).
+
+GCC 4.6.3
+
+   This is the [22]list of problem reports (PRs) from GCC's bug tracking
+   system that are known to be fixed in the 4.6.3 release. This list might
+   not be complete (that is, it is possible that some PRs that have been
+   fixed are not listed here).
+
+GCC 4.6.4
+
+   This is the [23]list of problem reports (PRs) from GCC's bug tracking
+   system that are known to be fixed in the 4.6.4 release. This list might
+   not be complete (that is, it is possible that some PRs that have been
+   fixed are not listed here).
+
+
+    For questions related to the use of GCC, please consult these web
+    pages and the [24]GCC manuals. If that fails, the
+    [25]gcc-help at gcc.gnu.org mailing list might help. Comments on these
+    web pages and the development of GCC are welcome on our developer
+    list at [26]gcc at gcc.gnu.org. All of [27]our lists have public
+    archives.
+
+   Copyright (C) [28]Free Software Foundation, Inc. Verbatim copying and
+   distribution of this entire article is permitted in any medium,
+   provided this notice is preserved.
+
+   These pages are [29]maintained by the GCC team. Last modified
+   2014-12-06[30].
+
+References
+
+   1. http://sourceware.org/bugzilla/show_bug.cgi?id=10401
+   2. http://gcc.gnu.org/gcc-4.5/changes.html
+   3. http://gcc.gnu.org/gcc-4.5/changes.html#obsoleted
+   4. http://gcc.gnu.org/gcc-4.6/porting_to.html
+   5. http://gcc.gnu.org/projects/lto/whopr.pdf
+   6. https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#Warning-Options
+   7. http://gcc.gnu.org/gcc-4.6/cxx0x_status.html
+   8. https://gcc.gnu.org/PR43145
+   9. https://gcc.gnu.org/PR43680
+  10. https://gcc.gnu.org/PR33558
+  11. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_active.html#253
+  12. https://gcc.gnu.org/onlinedocs/gcc-4.6.4/libstdc++/manual/manual/status.html#status.iso.200x
+  13. https://gcc.gnu.org/onlinedocs/libstdc++/manual/debug_mode.html
+  14. https://gcc.gnu.org/onlinedocs/libstdc++/manual/debug.html#debug.races
+  15. https://gcc.gnu.org/onlinedocs/gcc/Preprocessor-Options.html
+  16. https://gcc.gnu.org/wiki/OOP
+  17. https://gcc.gnu.org/wiki/Coarray
+  18. https://gcc.gnu.org/onlinedocs/gfortran/Code-Gen-Options.html#index-g_t_0040code_007bfcoarray_007d-233
+  19. http://golang.org/
+  20. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.6.1
+  21. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.6.2
+  22. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.6.3
+  23. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.6.4
+  24. https://gcc.gnu.org/onlinedocs/
+  25. mailto:gcc-help at gcc.gnu.org
+  26. mailto:gcc at gcc.gnu.org
+  27. https://gcc.gnu.org/lists.html
+  28. http://www.fsf.org/
+  29. https://gcc.gnu.org/about.html
+  30. http://validator.w3.org/check/referer
+======================================================================
+http://gcc.gnu.org/gcc-4.5/index.html
+                             GCC 4.5 Release Series
+
+   Jul 2, 2012
+
+   The [1]GNU project and the GCC developers are pleased to announce the
+   release of GCC 4.5.4.
+
+   This release is a bug-fix release, containing fixes for regressions in
+   GCC 4.5.3 relative to previous releases of GCC.
+
+Release History
+
+   GCC 4.5.4
+          Jul 2, 2012 ([2]changes)
+
+   GCC 4.5.3
+          Apr 28, 2011 ([3]changes)
+
+   GCC 4.5.2
+          Dec 16, 2010 ([4]changes)
+
+   GCC 4.5.1
+          Jul 31, 2010 ([5]changes)
+
+   GCC 4.5.0
+          April 14, 2010 ([6]changes)
+
+References and Acknowledgements
+
+   GCC used to stand for the GNU C Compiler, but since the compiler
+   supports several other languages aside from C, it now stands for the
+   GNU Compiler Collection.
+
+   A list of [7]successful builds is updated as new information becomes
+   available.
+
+   The GCC developers would like to thank the numerous people that have
+   contributed new features, improvements, bug fixes, and other changes as
+   well as test results to GCC. This [8]amazing group of volunteers is
+   what makes GCC successful.
+
+   For additional information about GCC please refer to the [9]GCC project
+   web site or contact the [10]GCC development mailing list.
+
+   To obtain GCC please use [11]our mirror sites or [12]our SVN server.
+
+
+    For questions related to the use of GCC, please consult these web
+    pages and the [13]GCC manuals. If that fails, the
+    [14]gcc-help at gcc.gnu.org mailing list might help. Comments on these
+    web pages and the development of GCC are welcome on our developer
+    list at [15]gcc at gcc.gnu.org. All of [16]our lists have public
+    archives.
+
+   Copyright (C) [17]Free Software Foundation, Inc. Verbatim copying and
+   distribution of this entire article is permitted in any medium,
+   provided this notice is preserved.
+
+   These pages are [18]maintained by the GCC team. Last modified
+   2014-06-28[19].
+
+References
+
+   1. http://www.gnu.org/
+   2. http://gcc.gnu.org/gcc-4.5/changes.html
+   3. http://gcc.gnu.org/gcc-4.5/changes.html
+   4. http://gcc.gnu.org/gcc-4.5/changes.html
+   5. http://gcc.gnu.org/gcc-4.5/changes.html
+   6. http://gcc.gnu.org/gcc-4.5/changes.html
+   7. http://gcc.gnu.org/gcc-4.5/buildstat.html
+   8. https://gcc.gnu.org/onlinedocs/gcc/Contributors.html
+   9. http://gcc.gnu.org/index.html
+  10. mailto:gcc at gcc.gnu.org
+  11. http://gcc.gnu.org/mirrors.html
+  12. http://gcc.gnu.org/svn.html
+  13. https://gcc.gnu.org/onlinedocs/
+  14. mailto:gcc-help at gcc.gnu.org
+  15. mailto:gcc at gcc.gnu.org
+  16. https://gcc.gnu.org/lists.html
+  17. http://www.fsf.org/
+  18. https://gcc.gnu.org/about.html
+  19. http://validator.w3.org/check/referer
+======================================================================
+http://gcc.gnu.org/gcc-4.5/changes.html
+                             GCC 4.5 Release Series
+                        Changes, New Features, and Fixes
+
+Caveats
+
+     * GCC now requires the [1]MPC library in order to build. See the
+       [2]prerequisites page for version requirements.
+     * Support for a number of older systems and recently unmaintained or
+       untested target ports of GCC has been declared obsolete in GCC 4.5.
+       Unless there is activity to revive them, the next release of GCC
+       will have their sources permanently removed.
+       The following ports for individual systems on particular
+       architectures have been obsoleted:
+          + IRIX releases before 6.5 (mips-sgi-irix5*,
+            mips-sgi-irix6.[0-4])
+          + Solaris 7 (*-*-solaris2.7)
+          + Tru64 UNIX releases before V5.1 (alpha*-dec-osf4*,
+            alpha-dec-osf5.0*)
+          + Details for the IRIX, Solaris 7, and Tru64 UNIX obsoletions
+            can be found in the [3]announcement.
+       Support for the classic POWER architecture implemented in the
+       original RIOS and RIOS2 processors of the old IBM RS/6000 product
+       line has been obsoleted in the rs6000 port. This does not affect
+       the new generation Power and PowerPC architectures.
+     * Support has been removed for all the [4]configurations obsoleted in
+       GCC 4.4.
+     * Support has been removed for the protoize and unprotoize utilities,
+       obsoleted in GCC 4.4.
+     * Support has been removed for tuning for Itanium1 (Merced) variants.
+       Note that code tuned for Itanium2 should also run correctly on
+       Itanium1.
+     * GCC now generates unwind info also for epilogues. DWARF debuginfo
+       generated by GCC now uses more features of DWARF3 than before, and
+       also some DWARF4 features. GDB older than 7.0 is not able to handle
+       either of these, so to debug GCC 4.5 generated binaries or
+       libraries GDB 7.0 or later is needed. You can disable use of DWARF4
+       features with the -gdwarf-3 -gstrict-dwarf options, or use
+       -gdwarf-2 -gstrict-dwarf to restrict GCC to just DWARF2, but
+       epilogue unwind info is emitted unconditionally whenever unwind
+       info is emitted.
+     * On x86 targets, code containing floating-point calculations may run
+       significantly slower when compiled with GCC 4.5 in strict C99
+       conformance mode than they did with earlier GCC versions. This is
+       due to stricter standard conformance of the compiler and can be
+       avoided by using the option -fexcess-precision=fast; also see
+       [5]below.
+     * The function attribute noinline no longer prevents GCC from cloning
+       the function. A new attribute noclone has been introduced for this
+       purpose. Cloning a function means that it is duplicated and the new
+       copy is specialized for certain contexts (for example when a
+       parameter is a known constant).
+
+General Optimizer Improvements
+
+     * The -save-temps now takes an optional argument. The -save-temps and
+       -save-temps=cwd switches write the temporary files in the current
+       working directory based on the original source file. The
+       -save-temps=obj switch will write files into the directory
+       specified with the -o option, and the intermediate filenames are
+       based on the output file. This will allow the user to get the
+       compiler intermediate files when doing parallel builds without two
+       builds of the same filename located in different directories from
+       interfering with each other.
+     * Debugging dumps are now created in the same directory as the object
+       file rather than in the current working directory. This allows the
+       user to get debugging dumps when doing parallel builds without two
+       builds of the same filename interfering with each other.
+     * GCC has been integrated with the [6]MPC library. This allows GCC to
+       evaluate complex arithmetic at compile time [7]more accurately. It
+       also allows GCC to evaluate calls to complex built-in math
+       functions having constant arguments and replace them at compile
+       time with their mathematically equivalent results. In doing so, GCC
+       can generate correct results regardless of the math library
+       implementation or floating point precision of the host platform.
+       This also allows GCC to generate identical results regardless of
+       whether one compiles in native or cross-compile configurations to a
+       particular target. The following built-in functions take advantage
+       of this new capability: cacos, cacosh, casin, casinh, catan,
+       catanh, ccos, ccosh, cexp, clog, cpow, csin, csinh, csqrt, ctan,
+       and ctanh. The float and long double variants of these functions
+       (e.g. csinf and csinl) are also handled.
+     * A new link-time optimizer has been added ([8]-flto). When this
+       option is used, GCC generates a bytecode representation of each
+       input file and writes it to specially-named sections in each object
+       file. When the object files are linked together, all the function
+       bodies are read from these named sections and instantiated as if
+       they had been part of the same translation unit. This enables
+       interprocedural optimizations to work across different files (and
+       even different languages), potentially improving the performance of
+       the generated code. To use the link-timer optimizer, -flto needs to
+       be specified at compile time and during the final link. If the
+       program does not require any symbols to be exported, it is possible
+       to combine -flto and the experimental [9]-fwhopr with
+       [10]-fwhole-program to allow the interprocedural optimizers to use
+       more aggressive assumptions.
+     * The automatic parallelization pass was enhanced to support
+       parallelization of outer loops.
+     * Automatic parallelization can be enabled as part of Graphite. In
+       addition to -ftree-parallelize-loops=, specify
+       -floop-parallelize-all to enable the Graphite-based optimization.
+     * The infrastructure for optimizing based on [11]restrict qualified
+       pointers has been rewritten and should result in code generation
+       improvements. Optimizations based on restrict qualified pointers
+       are now also available when using -fno-strict-aliasing.
+     * There is a new optimization pass that attempts to change prototype
+       of functions to avoid unused parameters, pass only relevant parts
+       of structures and turn arguments passed by reference to arguments
+       passed by value when possible. It is enabled by -O2 and above as
+       well as -Os and can be manually invoked using the new command-line
+       switch -fipa-sra.
+     * GCC now optimize exception handling code. In particular cleanup
+       regions that are proved to not have any effect are optimized out.
+
+New Languages and Language specific improvements
+
+  All languages
+
+     * The -fshow-column option is now on by default. This means error
+       messages now have a column associated with them.
+
+  Ada
+
+     * Compilation of programs heavily using discriminated record types
+       with variant parts has been sped up and generates more compact
+       code.
+     * Stack checking now works reasonably well on most plaforms. In some
+       specific cases, stack overflows may still fail to be detected, but
+       a compile-time warning will be issued for these cases.
+
+  C family
+
+     * If a header named in a #include directive is not found, the
+       compiler exits immediately. This avoids a cascade of errors arising
+       from declarations expected to be found in that header being
+       missing.
+     * A new built-in function __builtin_unreachable() has been added that
+       tells the compiler that control will never reach that point. It may
+       be used after asm statements that terminate by transferring control
+       elsewhere, and in other places that are known to be unreachable.
+     * The -Wlogical-op option now warns for logical expressions such as
+       (c == 1 && c == 2) and (c != 1 || c != 2), which are likely to be
+       mistakes. This option is disabled by default.
+     * An asm goto feature has been added to allow asm statements that
+       jump to C labels.
+     * C++0x raw strings are supported for C++ and for C with -std=gnu99.
+     * The deprecated attribute now takes an optional string argument, for
+       example, __attribute__((deprecated("text string"))), that will be
+       printed together with the deprecation warning.
+
+  C
+
+     * The -Wenum-compare option, which warns when comparing values of
+       different enum types, now works for C. It formerly only worked for
+       C++. This warning is enabled by -Wall. It may be avoided by using a
+       type cast.
+     * The -Wcast-qual option now warns about casts which are unsafe in
+       that they permit const-correctness to be violated without further
+       warnings. Specifically, it warns about cases where a qualifier is
+       added when all the lower types are not const. For example, it warns
+       about a cast from char ** to const char **.
+     * The -Wc++-compat option is significantly improved. It issues new
+       warnings for:
+          + Using C++ reserved operator names as identifiers.
+          + Conversions to enum types without explicit casts.
+          + Using va_arg with an enum type.
+          + Using different enum types in the two branches of ?:.
+          + Using ++ or -- on a variable of enum type.
+          + Using the same name as both a struct, union or enum tag and a
+            typedef, unless the typedef refers to the tagged type itself.
+          + Using a struct, union, or enum which is defined within another
+            struct or union.
+          + A struct field defined using a typedef if there is a field in
+            the struct, or an enclosing struct, whose name is the typedef
+            name.
+          + Duplicate definitions at file scope.
+          + Uninitialized const variables.
+          + A global variable with an anonymous struct, union, or enum
+            type.
+          + Using a string constant to initialize a char array whose size
+            is the length of the string.
+     * The new -Wjump-misses-init option warns about cases where a goto or
+       switch skips the initialization of a variable. This sort of branch
+       is an error in C++ but not in C. This warning is enabled by
+       -Wc++-compat.
+     * GCC now ensures that a C99-conforming <stdint.h> is present on most
+       targets, and uses information about the types in this header to
+       implement the Fortran bindings to those types. GCC does not ensure
+       the presence of such a header, and does not implement the Fortran
+       bindings, on the following targets: NetBSD, VxWorks, VMS,
+       SymbianOS, WinCE, LynxOS, Netware, QNX, Interix, TPF.
+     * GCC now implements C90- and C99-conforming rules for constant
+       expressions. This may cause warnings or errors for some code using
+       expressions that can be folded to a constant but are not constant
+       expressions as defined by ISO C.
+     * All known target-independent C90 and C90 Amendment 1 conformance
+       bugs, and all known target-independent C99 conformance bugs not
+       related to floating point or extended identifiers, have been fixed.
+     * The C decimal floating point support now includes support for the
+       FLOAT_CONST_DECIMAL64 pragma.
+     * The named address space feature from ISO/IEC TR 18037 is now
+       supported. This is currently only implemented for the SPU
+       processor.
+
+  C++
+
+     * Improved [12]experimental support for the upcoming C++0x ISO C++
+       standard, including support for raw strings, lambda expressions and
+       explicit type conversion operators.
+     * When printing the name of a class template specialization, G++ will
+       now omit any template arguments which come from default template
+       arguments. This behavior (and the pretty-printing of function
+       template specializations as template signature and arguments) can
+       be disabled with the -fno-pretty-templates option.
+     * Access control is now applied to typedef names used in a template,
+       which may cause G++ to reject some ill-formed code that was
+       accepted by earlier releases. The -fno-access-control option can be
+       used as a temporary workaround until the code is corrected.
+     * Compilation time for code that uses templates should now scale
+       linearly with the number of instantiations rather than
+       quadratically, as template instantiations are now looked up using
+       hash tables.
+     * Declarations of functions that look like builtin declarations of
+       library functions are only considered to be redeclarations if they
+       are declared with extern "C". This may cause problems with code
+       that omits extern "C" on hand-written declarations of C library
+       functions such as abort or memcpy. Such code is ill-formed, but was
+       accepted by earlier releases.
+     * Diagnostics that used to complain about passing non-POD types to
+       ... or jumping past the declaration of a non-POD variable now check
+       for triviality rather than PODness, as per C++0x.
+     * In C++0x mode local and anonymous classes are now allowed as
+       template arguments, and in declarations of variables and functions
+       with linkage, so long as any such declaration that is used is also
+       defined ([13]DR 757).
+     * Labels may now have attributes, as has been permitted for a while
+       in C. This is only permitted when the label definition and the
+       attribute specifier is followed by a semicolon—i.e., the label
+       applies to an empty statement. The only useful attribute for a
+       label is unused.
+     * G++ now implements [14]DR 176. Previously G++ did not support using
+       the injected-class-name of a template base class as a type name,
+       and lookup of the name found the declaration of the template in the
+       enclosing scope. Now lookup of the name finds the
+       injected-class-name, which can be used either as a type or as a
+       template, depending on whether or not the name is followed by a
+       template argument list. As a result of this change, some code that
+       was previously accepted may be ill-formed because
+         1. The injected-class-name is not accessible because it's from a
+            private base, or
+         2. The injected-class-name cannot be used as an argument for a
+            template template parameter.
+       In either of these cases, the code can be fixed by adding a
+       nested-name-specifier to explicitly name the template. The first
+       can be worked around with -fno-access-control; the second is only
+       rejected with -pedantic.
+     * A new standard mangling for SIMD vector types has been added, to
+       avoid name clashes on systems with vectors of varying length. By
+       default the compiler still uses the old mangling, but emits aliases
+       with the new mangling on targets that support strong aliases. Users
+       can switch over entirely to the new mangling with -fabi-version=4
+       or -fabi-version=0. -Wabi will now warn about code that uses the
+       old mangling.
+     * The command-line option -ftemplate-depth-N is now written as
+       -ftemplate-depth=N and the old form is deprecated.
+     * Conversions between NULL and non-pointer types are now warned by
+       default. The new option -Wno-conversion-null disables these
+       warnings. Previously these warnings were only available when using
+       -Wconversion explicitly.
+
+    Runtime Library (libstdc++)
+
+     * Improved experimental support for the upcoming ISO C++ standard,
+       C++0x, including:
+          + Support for <future>, <functional>, and <random>.
+          + Existing facilities now exploit explicit operators and the
+            newly implemented core C++0x features.
+          + The header <cstdatomic> has been renamed to <atomic>.
+     * An experimental [15]profile mode has been added. This is an
+       implementation of many C++ standard library constructs with an
+       additional analysis layer that gives performance improvement advice
+       based on recognition of suboptimal usage patterns. For example,
+#include <vector>
+int main()
+{
+  std::vector<int> v;
+  for (int k = 0; k < 1024; ++k)
+    v.insert(v.begin(), k);
+}
+
+       When instrumented via the profile mode, can return suggestions
+       about the initial size and choice of the container used as follows:
+vector-to-list: improvement = 5: call stack = 0x804842c ...
+    : advice = change std::vector to std::list
+vector-size: improvement = 3: call stack = 0x804842c ...
+    : advice = change initial container size from 0 to 1024
+
+       These constructs can be substituted for the normal libstdc++
+       constructs on a piecemeal basis, or all existing components can be
+       transformed via the -D_GLIBCXX_PROFILE macro.
+     * [16]Support for decimal floating-point arithmetic (aka ISO C++ TR
+       24733) has been added. This support is in header file
+       <decimal/decimal>, uses namespace std::decimal, and includes
+       classes decimal32, decimal64, and decimal128.
+     * Sources have been audited for application of function attributes
+       nothrow, const, pure, and noreturn.
+     * Python pretty-printers have been added for many standard library
+       components that simplify the internal representation and present a
+       more intuitive view of components when used with
+       appropriately-advanced versions of GDB. For more information,
+       please consult the more [17]detailed description.
+     * The default behavior for comparing typeinfo names has changed, so
+       in <typeinfo>, __GXX_MERGED_TYPEINFO_NAMES now defaults to zero.
+     * The new -static-libstdc++ option directs g++ to link the C++
+       library statically, even if the default would normally be to link
+       it dynamically.
+
+  Fortran
+
+     * The COMMON default padding has been changed – instead of adding the
+       padding before a variable it is now added afterwards, which
+       increases the compatibility with other vendors and helps to obtain
+       the correct output in some cases. Cf. also the -falign-commons
+       option ([18]added in 4.4).
+     * The -finit-real= option now also supports the value snan for
+       signalling not-a-number; to be effective, one additionally needs to
+       enable trapping (e.g. via -ffpe-trap=). Note: Compile-time
+       optimizations can turn a signalling NaN into a quiet one.
+     * The new option -fcheck= has been added with the options bounds,
+       array-temps, do, pointer, and recursive. The bounds and array-temps
+       options are equivalent to -fbounds-check and
+       -fcheck-array-temporaries. The do option checks for invalid
+       modification of loop iteration variables, and the recursive option
+       tests for recursive calls to subroutines/functions which are not
+       marked as recursive. With pointer pointer association checks in
+       calls are performed; however, neither undefined pointers nor
+       pointers in expressions are handled. Using -fcheck=all enables all
+       these run-time checks.
+     * The run-time checking -fcheck=bounds now warns about invalid string
+       lengths of character dummy arguments. Additionally, more
+       compile-time checks have been added.
+     * The new option [19]-fno-protect-parens has been added; if set, the
+       compiler may reorder REAL and COMPLEX expressions without regard to
+       parentheses.
+     * GNU Fortran no longer links against libgfortranbegin. As before,
+       MAIN__ (assembler symbol name) is the actual Fortran main program,
+       which is invoked by the main function. However, main is now
+       generated and put in the same object file as MAIN__. For the time
+       being, libgfortranbegin still exists for backward compatibility.
+       For details see the new [20]Mixed-Language Programming chapter in
+       the manual.
+     * The I/O library was restructured for performance and cleaner code.
+     * Array assignments and WHERE are now run in parallel when OpenMP's
+       WORKSHARE is used.
+     * The experimental option -fwhole-file was added. The option allows
+       whole-file checking of procedure arguments and allows for better
+       optimizations. It can also be used with -fwhole-program, which is
+       now also supported in gfortran.
+     * More Fortran 2003 and Fortran 2008 mathematical functions can now
+       be used as initialization expressions.
+     * Some extended attributes such as STDCALL are now supported via the
+       [21]GCC$ compiler directive.
+     * For Fortran 77 compatibility: If -fno-sign-zero is used, the SIGN
+       intrinsic behaves now as if zero were always positive.
+     * For legacy compatibiliy: On Cygwin and MinGW, the special files
+       CONOUT$ and CONIN$ (and CONERR$ which maps to CONOUT$) are now
+       supported.
+     * Fortran 2003 support has been extended:
+          + Procedure-pointer function results and procedure-pointer
+            components (including PASS),
+          + allocatable scalars (experimental),
+          + DEFERRED type-bound procedures,
+          + the ERRMSG= argument of the ALLOCATE and DEALLOCATE statements
+            have been implemented.
+          + The ALLOCATE statement supports type-specs and the SOURCE=
+            argument.
+          + OPERATOR(*) and ASSIGNMENT(=) are now allowed as GENERIC
+            type-bound procedure (i.e. as type-bound operators).
+          + Rounding (ROUND=, RZ, ...) for output is now supported.
+          + The INT_FAST{8,16,32,64,128}_T kind type parameters of the
+            intrinsic module ISO_C_BINDING are now supported, except for
+            the targets listed above as ones where GCC does not have
+            <stdint.h> type information.
+          + Extensible derived types with type-bound procedure or
+            procedure pointer with PASS attribute now have to use CLASS in
+            line with the Fortran 2003 standard; the workaround to use
+            TYPE is no longer supported.
+          + [22]Experimental, incomplete support for polymorphism,
+            including CLASS, SELECT TYPE and dynamic dispatch of
+            type-bound procedure calls. Some features do not work yet such
+            as unlimited polymorphism (CLASS(*)).
+     * Fortran 2008 support has been extended:
+          + The OPEN statement now supports the NEWUNIT= option, which
+            returns a unique file unit, thus preventing inadvertent use of
+            the same unit in different parts of the program.
+          + Support for unlimited format items has been added.
+          + The INT{8,16,32} and REAL{32,64,128} kind type parameters of
+            the intrinsic module ISO_FORTRAN_ENV are now supported.
+          + Using complex arguments with TAN, SINH, COSH, TANH, ASIN,
+            ACOS, and ATAN is now possible; the functions ASINH, ACOSH,
+            and ATANH have been added (for real and complex arguments) and
+            ATAN(Y,X) is now an alias for ATAN2(Y,X).
+          + The BLOCK construct has been implemented.
+
+New Targets and Target Specific Improvements
+
+  AIX
+
+     * Full cross-toolchain support now available with GNU Binutils
+
+  ARM
+
+     * GCC now supports the Cortex-M0 and Cortex-A5 processors.
+     * GCC now supports the ARM v7E-M architecture.
+     * GCC now supports VFPv4-based FPUs and FPUs with
+       single-precision-only VFP.
+     * GCC has many improvements to optimization for other ARM processors,
+       including scheduling support for the integer pipeline on Cortex-A9.
+     * GCC now supports the IEEE 754-2008 half-precision floating-point
+       type, and a variant ARM-specific half-precision type. This type is
+       specified using __fp16, with the layout determined by
+       -mfp16-format. With appropriate -mfpu options, the Cortex-A9 and
+       VFPv4 half-precision instructions will be used.
+     * GCC now supports the variant of AAPCS that uses VFP registers for
+       parameter passing and return values.
+
+  AVR
+
+     * The -mno-tablejump option has been removed because it has the same
+       effect as the -fno-jump-tables option.
+     * Added support for these new AVR devices:
+          + ATmega8U2
+          + ATmega16U2
+          + ATmega32U2
+
+  IA-32/x86-64
+
+     * GCC now will set the default for -march= based on the configure
+       target.
+     * GCC now supports handling floating-point excess precision arising
+       from use of the x87 floating-point unit in a way that conforms to
+       ISO C99. This is enabled with -fexcess-precision=standard and with
+       standards conformance options such as -std=c99, and may be disabled
+       using -fexcess-precision=fast.
+     * Support for the Intel Atom processor is now available through the
+       -march=atom and -mtune=atom options.
+     * A new -mcrc32 option is now available to enable crc32 intrinsics.
+     * A new -mmovbe option is now available to enable GCC to use the
+       movbe instruction to implement __builtin_bswap32 and
+       __builtin_bswap64.
+     * SSE math now can be enabled by default at configure time with the
+       new --with-fpmath=sse option.
+     * There is a new intrinsic header file, <x86intrin.h>. It should be
+       included before using any IA-32/x86-64 intrinsics.
+     * Support for the XOP, FMA4, and LWP instruction sets for the AMD
+       Orochi processors are now available with the -mxop, -mfma4, and
+       -mlwp options.
+     * The -mabm option enables GCC to use the popcnt and lzcnt
+       instructions on AMD processors.
+     * The -mpopcnt option enables GCC to use the popcnt instructions on
+       both AMD and Intel processors.
+
+  M68K/ColdFire
+
+     * GCC now supports ColdFire 51xx, 5221x, 5225x, 52274, 52277, 5301x
+       and 5441x devices.
+     * GCC now supports thread-local storage (TLS) on M68K and ColdFire
+       processors.
+
+  MeP
+
+   Support has been added for the Toshiba Media embedded Processor (MeP,
+   or mep-elf) embedded target.
+
+  MIPS
+
+     * GCC now supports MIPS 1004K processors.
+     * GCC can now be configured with options --with-arch-32,
+       --with-arch-64, --with-tune-32 and --with-tune-64 to control the
+       default optimization separately for 32-bit and 64-bit modes.
+     * MIPS targets now support an alternative _mcount interface, in which
+       register $12 points to the function's save slot for register $31.
+       This interface is selected by the -mcount-ra-address option; see
+       the documentation for more details.
+     * GNU/Linux targets can now generate read-only .eh_frame sections.
+       This optimization requires GNU binutils 2.20 or above, and is only
+       available if GCC is configured with a suitable version of binutils.
+     * GNU/Linux targets can now attach special relocations to indirect
+       calls, so that the linker can turn them into direct jumps or
+       branches. This optimization requires GNU binutils 2.20 or later,
+       and is automatically selected if GCC is configured with an
+       appropriate version of binutils. It can be explicitly enabled or
+       disabled using the -mrelax-pic-calls command-line option.
+     * GCC now generates more heavily-optimized atomic operations on
+       Octeon processors.
+     * MIPS targets now support the -fstack-protector option.
+     * GCC now supports an -msynci option, which specifies that synci is
+       enough to flush the instruction cache, without help from the
+       operating system. GCC uses this information to optimize
+       automatically-generated cache flush operations, such as those used
+       for nested functions in C. There is also a --with-synci
+       configure-time option, which makes -msynci the default.
+     * GCC supports four new function attributes for interrupt handlers:
+       interrupt, use_shadow_register_set, keep_interrupts_masked and
+       use_debug_exception_return. See the documentation for more details
+       about these attributes.
+
+  RS/6000 (POWER/PowerPC)
+
+     * GCC now supports the Power ISA 2.06, which includes the VSX
+       instructions that add vector 64-bit floating point support, new
+       population count instructions, and conversions between floating
+       point and unsigned types.
+     * Support for the power7 processor is now available through the
+       -mcpu=power7 and -mtune=power7.
+     * GCC will now vectorize loops that contain simple math functions
+       like copysign when generating code for altivec or VSX targets.
+     * Support for the A2 processor is now available through the -mcpu=a2
+       and -mtune=a2 options.
+     * Support for the 476 processor is now available through the
+       -mcpu={476,476fp} and -mtune={476,476fp} options.
+     * Support for the e500mc64 processor is now available through the
+       -mcpu=e500mc64 and -mtune=e500mc64 options.
+     * GCC can now be configured with options --with-cpu-32,
+       --with-cpu-64, --with-tune-32 and --with-tune-64 to control the
+       default optimization separately for 32-bit and 64-bit modes.
+     * Starting with GCC 4.5.4, vectors of type vector long long or vector
+       long are passed and returned in the same method as other vectors
+       with the VSX instruction set. Previously the GCC compiler did not
+       adhere to the ABI for 128-bit vectors with 64-bit integer base
+       types (PR 48857). This is also fixed in the GCC 4.6.1 release.
+
+  RX
+
+   Support has been added for the Renesas RX Processor (rx-elf) target.
+
+Operating Systems
+
+  Windows (Cygwin and MinGW)
+
+     * GCC now installs all the major language runtime libraries as DLLs
+       when configured with the --enable-shared option.
+     * GCC now makes use of the new support for aligned common variables
+       in versions of binutils >= 2.20 to fix bugs in the support for SSE
+       data types.
+     * Improvements to the libffi support library increase the reliability
+       of code generated by GCJ on all Windows platforms. Libgcj is
+       enabled by default for the first time.
+     * Libtool improvements simplify installation by placing the generated
+       DLLs in the correct binaries directory.
+     * Numerous other minor bugfixes and improvements, and substantial
+       enhancements to the Fortran language support library.
+
+   >
+
+Other significant improvements
+
+  Plugins
+
+     * It is now possible to extend the compiler without having to modify
+       its source code. A new option -fplugin=file.so tells GCC to load
+       the shared object file.so and execute it as part of the compiler.
+       The internal documentation describes the details on how plugins can
+       interact with the compiler.
+
+  Installation changes
+
+     * The move to newer autotools changed default installation
+       directories and switches to control them: The --with-datarootdir,
+       --with-docdir, --with-pdfdir, and --with-htmldir switches are not
+       used any more. Instead, you can now use --datarootdir, --docdir,
+       --htmldir, and --pdfdir. The default installation directories have
+       changed as follows according to the GNU Coding Standards:
+
+       datarootdir read-only architecture-independent data root [PREFIX/share]
+       localedir   locale-specific message catalogs [DATAROOTDIR/locale]
+       docdir      documentation root [DATAROOTDIR/doc/PACKAGE]
+       htmldir     html documentation [DOCDIR]
+       dvidir      dvi documentation [DOCDIR]
+       pdfdir      pdf documentation [DOCDIR]
+       psdir       ps documentation [DOCDIR]
+       The following variables have new default values:
+
+       datadir read-only architecture-independent data [DATAROOTDIR]
+       infodir info documentation [DATAROOTDIR/info]
+       mandir  man documentation [DATAROOTDIR/man]
+
+GCC 4.5.1
+
+   This is the [23]list of problem reports (PRs) from GCC's bug tracking
+   system that are known to be fixed in the 4.5.1 release. This list might
+   not be complete (that is, it is possible that some PRs that have been
+   fixed are not listed here).
+
+  All languages
+
+     * GCC's new link-time optimizer ([24]-flto) now also works on a few
+       non-ELF targets:
+          + Cygwin (*-cygwin*)
+          + MinGW (*-mingw*)
+          + Darwin on x86-64 (x86_64-apple-darwin*)
+       LTO is not enabled by default for these targets. To enable LTO, you
+       should configure with the --enable-lto option.
+
+GCC 4.5.2
+
+   This is the [25]list of problem reports (PRs) from GCC's bug tracking
+   system that are known to be fixed in the 4.5.2 release. This list might
+   not be complete (that is, it is possible that some PRs that have been
+   fixed are not listed here).
+
+GCC 4.5.3
+
+   This is the [26]list of problem reports (PRs) from GCC's bug tracking
+   system that are known to be fixed in the 4.5.3 release. This list might
+   not be complete (that is, it is possible that some PRs that have been
+   fixed are not listed here).
+
+   On the PowerPC compiler, the Altivec builtin functions vec_ld and
+   vec_st have been modified to generate the Altivec memory instructions
+   LVX and STVX, even if the -mvsx option is used. In the initial GCC 4.5
+   release, these builtin functions were changed to generate VSX memory
+   reference instructions instead of Altivec memory instructions, but
+   there are differences between the two instructions. If the VSX
+   instruction set is available, you can now use the new builtin functions
+   vec_vsx_ld and vec_vsx_st which always generates the VSX memory
+   instructions.
+
+GCC 4.5.4
+
+   This is the [27]list of problem reports (PRs) from GCC's bug tracking
+   system that are known to be fixed in the 4.5.4 release. This list might
+   not be complete (that is, it is possible that some PRs that have been
+   fixed are not listed here).
+
+
+    For questions related to the use of GCC, please consult these web
+    pages and the [28]GCC manuals. If that fails, the
+    [29]gcc-help at gcc.gnu.org mailing list might help. Comments on these
+    web pages and the development of GCC are welcome on our developer
+    list at [30]gcc at gcc.gnu.org. All of [31]our lists have public
+    archives.
+
+   Copyright (C) [32]Free Software Foundation, Inc. Verbatim copying and
+   distribution of this entire article is permitted in any medium,
+   provided this notice is preserved.
+
+   These pages are [33]maintained by the GCC team. Last modified
+   2014-12-06[34].
+
+References
+
+   1. http://www.multiprecision.org/
+   2. https://gcc.gnu.org/install/prerequisites.html
+   3. https://gcc.gnu.org/ml/gcc/2010-01/msg00510.html
+   4. http://gcc.gnu.org/gcc-4.4/changes.html#obsoleted
+   5. http://gcc.gnu.org/gcc-4.5/changes.html#x86
+   6. http://www.multiprecision.org/
+   7. https://gcc.gnu.org/PR30789
+   8. https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html#index-flto-801
+   9. https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html#index-fwhopr-802
+  10. https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html#index-fwhole-program-800
+  11. https://gcc.gnu.org/onlinedocs/gcc/Restricted-Pointers.html
+  12. http://gcc.gnu.org/gcc-4.5/cxx0x_status.html
+  13. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#757
+  14. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#176
+  15. https://gcc.gnu.org/onlinedocs/libstdc++/manual/profile_mode.html
+  16. https://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html#status.iso.tr24733
+  17. http://sourceware.org/gdb/wiki/STLSupport
+  18. http://gcc.gnu.org/gcc-4.4/changes.html
+  19. https://gcc.gnu.org/onlinedocs/gfortran/Code-Gen-Options.html
+  20. https://gcc.gnu.org/onlinedocs/gfortran/Mixed-Language-Programming.html
+  21. https://gcc.gnu.org/onlinedocs/gfortran/GNU-Fortran-Compiler-Directives.html
+  22. https://gcc.gnu.org/wiki/OOP
+  23. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.5.1
+  24. https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html#index-flto-801
+  25. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.5.2
+  26. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.5.3
+  27. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.5.4
+  28. https://gcc.gnu.org/onlinedocs/
+  29. mailto:gcc-help at gcc.gnu.org
+  30. mailto:gcc at gcc.gnu.org
+  31. https://gcc.gnu.org/lists.html
+  32. http://www.fsf.org/
+  33. https://gcc.gnu.org/about.html
+  34. http://validator.w3.org/check/referer
+======================================================================
+http://gcc.gnu.org/gcc-4.4/index.html
+                             GCC 4.4 Release Series
+
+   March 13, 2012
+
+   The [1]GNU project and the GCC developers are pleased to announce the
+   release of GCC 4.4.7.
+
+   This release is a bug-fix release, containing fixes for regressions in
+   GCC 4.4.6 relative to previous releases of GCC.
+
+Release History
+
+   GCC 4.4.7
+          March 13, 2012 ([2]changes)
+
+   GCC 4.4.6
+          April 16, 2011 ([3]changes)
+
+   GCC 4.4.5
+          October 1, 2010 ([4]changes)
+
+   GCC 4.4.4
+          April 29, 2010 ([5]changes)
+
+   GCC 4.4.3
+          January 21, 2010 ([6]changes)
+
+   GCC 4.4.2
+          October 15, 2009 ([7]changes)
+
+   GCC 4.4.1
+          July 22, 2009 ([8]changes)
+
+   GCC 4.4.0
+          April 21, 2009 ([9]changes)
+
+References and Acknowledgements
+
+   GCC used to stand for the GNU C Compiler, but since the compiler
+   supports several other languages aside from C, it now stands for the
+   GNU Compiler Collection.
+
+   A list of [10]successful builds is updated as new information becomes
+   available.
+
+   The GCC developers would like to thank the numerous people that have
+   contributed new features, improvements, bug fixes, and other changes as
+   well as test results to GCC. This [11]amazing group of volunteers is
+   what makes GCC successful.
+
+   For additional information about GCC please refer to the [12]GCC
+   project web site or contact the [13]GCC development mailing list.
+
+   To obtain GCC please use [14]our mirror sites or [15]our SVN server.
+
+
+    For questions related to the use of GCC, please consult these web
+    pages and the [16]GCC manuals. If that fails, the
+    [17]gcc-help at gcc.gnu.org mailing list might help. Comments on these
+    web pages and the development of GCC are welcome on our developer
+    list at [18]gcc at gcc.gnu.org. All of [19]our lists have public
+    archives.
+
+   Copyright (C) [20]Free Software Foundation, Inc. Verbatim copying and
+   distribution of this entire article is permitted in any medium,
+   provided this notice is preserved.
+
+   These pages are [21]maintained by the GCC team. Last modified
+   2014-06-28[22].
+
+References
+
+   1. http://www.gnu.org/
+   2. http://gcc.gnu.org/gcc-4.4/changes.html
+   3. http://gcc.gnu.org/gcc-4.4/changes.html
+   4. http://gcc.gnu.org/gcc-4.4/changes.html
+   5. http://gcc.gnu.org/gcc-4.4/changes.html
+   6. http://gcc.gnu.org/gcc-4.4/changes.html
+   7. http://gcc.gnu.org/gcc-4.4/changes.html
+   8. http://gcc.gnu.org/gcc-4.4/changes.html
+   9. http://gcc.gnu.org/gcc-4.4/changes.html
+  10. http://gcc.gnu.org/gcc-4.4/buildstat.html
+  11. https://gcc.gnu.org/onlinedocs/gcc/Contributors.html
+  12. http://gcc.gnu.org/index.html
+  13. mailto:gcc at gcc.gnu.org
+  14. http://gcc.gnu.org/mirrors.html
+  15. http://gcc.gnu.org/svn.html
+  16. https://gcc.gnu.org/onlinedocs/
+  17. mailto:gcc-help at gcc.gnu.org
+  18. mailto:gcc at gcc.gnu.org
+  19. https://gcc.gnu.org/lists.html
+  20. http://www.fsf.org/
+  21. https://gcc.gnu.org/about.html
+  22. http://validator.w3.org/check/referer
+======================================================================
+http://gcc.gnu.org/gcc-4.4/changes.html
+                             GCC 4.4 Release Series
+                        Changes, New Features, and Fixes
+
+   The latest release in the 4.4 release series is [1]GCC 4.4.7.
+
+Caveats
+
+     * __builtin_stdarg_start has been completely removed from GCC.
+       Support for <varargs.h> had been deprecated since GCC 4.0. Use
+       __builtin_va_start as a replacement.
+     * Some of the errors issued by the C++ front end that could be
+       downgraded to warnings in previous releases by using -fpermissive
+       are now warnings by default. They can be converted into errors by
+       using -pedantic-errors.
+     * Use of the cpp assertion extension will now emit a warning when
+       -Wdeprecated or -pedantic is used. This extension has been
+       deprecated for many years, but never warned about.
+     * Packed bit-fields of type char were not properly bit-packed on many
+       targets prior to GCC 4.4. On these targets, the fix in GCC 4.4
+       causes an ABI change. For example there is no longer a 4-bit
+       padding between field a and b in this structure:
+    struct foo
+    {
+      char a:4;
+      char b:8;
+    } __attribute__ ((packed));
+       There is a new warning to help identify fields that are affected:
+    foo.c:5: note: Offset of packed bit-field 'b' has changed in GCC 4.4
+       The warning can be disabled with -Wno-packed-bitfield-compat.
+     * On ARM EABI targets, the C++ mangling of the va_list type has been
+       changed to conform to the current revision of the EABI. This does
+       not affect the libstdc++ library included with GCC.
+     * The SCOUNT and POS bits of the MIPS DSP control register are now
+       treated as global. Previous versions of GCC treated these fields as
+       call-clobbered instead.
+     * The MIPS port no longer recognizes the h asm constraint. It was
+       necessary to remove this constraint in order to avoid generating
+       unpredictable code sequences.
+       One of the main uses of the h constraint was to extract the high
+       part of a multiplication on 64-bit targets. For example:
+    asm ("dmultu\t%1,%2" : "=h" (result) : "r" (x), "r" (y));
+       You can now achieve the same effect using 128-bit types:
+    typedef unsigned int uint128_t __attribute__((mode(TI)));
+    result = ((uint128_t) x * y) >> 64;
+       The second sequence is better in many ways. For example, if x and y
+       are constants, the compiler can perform the multiplication at
+       compile time. If x and y are not constants, the compiler can
+       schedule the runtime multiplication better than it can schedule an
+       asm statement.
+     * Support for a number of older systems and recently unmaintained or
+       untested target ports of GCC has been declared obsolete in GCC 4.4.
+       Unless there is activity to revive them, the next release of GCC
+       will have their sources permanently removed.
+       The following ports for individual systems on particular
+       architectures have been obsoleted:
+          + Generic a.out on IA32 and m68k (i[34567]86-*-aout*,
+            m68k-*-aout*)
+          + Generic COFF on ARM, H8300, IA32, m68k and SH (arm-*-coff*,
+            armel-*-coff*, h8300-*-*, i[34567]86-*-coff*, m68k-*-coff*,
+            sh-*-*). This does not affect other more specific targets
+            using the COFF object format on those architectures, or the
+            more specific H8300 and SH targets (h8300-*-rtems*,
+            h8300-*-elf*, sh-*-elf*, sh-*-symbianelf*, sh-*-linux*,
+            sh-*-netbsdelf*, sh-*-rtems*, sh-wrs-vxworks).
+          + 2BSD on PDP-11 (pdp11-*-bsd)
+          + AIX 4.1 and 4.2 on PowerPC (rs6000-ibm-aix4.[12]*,
+            powerpc-ibm-aix4.[12]*)
+          + Tuning support for Itanium1 (Merced) variants. Note that code
+            tuned for Itanium2 should also run correctly on Itanium1.
+     * The protoize and unprotoize utilities have been obsoleted and will
+       be removed in GCC 4.5. These utilities have not been installed by
+       default since GCC 3.0.
+     * Support has been removed for all the [2]configurations obsoleted in
+       GCC 4.3.
+     * Unknown -Wno-* options are now silently ignored by GCC if no other
+       diagnostics are issued. If other diagnostics are issued, then GCC
+       warns about the unknown options.
+     * More information on porting to GCC 4.4 from previous versions of
+       GCC can be found in the [3]porting guide for this release.
+
+General Optimizer Improvements
+
+     * A new command-line switch -findirect-inlining has been added. When
+       turned on it allows the inliner to also inline indirect calls that
+       are discovered to have known targets at compile time thanks to
+       previous inlining.
+     * A new command-line switch -ftree-switch-conversion has been added.
+       This new pass turns simple initializations of scalar variables in
+       switch statements into initializations from a static array, given
+       that all the values are known at compile time and the ratio between
+       the new array size and the original switch branches does not exceed
+       the parameter --param switch-conversion-max-branch-ratio (default
+       is eight).
+     * A new command-line switch -ftree-builtin-call-dce has been added.
+       This optimization eliminates unnecessary calls to certain builtin
+       functions when the return value is not used, in cases where the
+       calls can not be eliminated entirely because the function may set
+       errno. This optimization is on by default at -O2 and above.
+     * A new command-line switch -fconserve-stack directs the compiler to
+       minimize stack usage even if it makes the generated code slower.
+       This affects inlining decisions.
+     * When the assembler supports it, the compiler will now emit unwind
+       information using assembler .cfi directives. This makes it possible
+       to use such directives in inline assembler code. The new option
+       -fno-dwarf2-cfi-asm directs the compiler to not use .cfi
+       directives.
+     * The [4]Graphite branch has been merged. This merge has brought in a
+       new framework for loop optimizations based on a polyhedral
+       intermediate representation. These optimizations apply to all the
+       languages supported by GCC. The following new code transformations
+       are available in GCC 4.4:
+          + -floop-interchange performs loop interchange transformations
+            on loops. Interchanging two nested loops switches the inner
+            and outer loops. For example, given a loop like:
+          DO J = 1, M
+            DO I = 1, N
+              A(J, I) = A(J, I) * C
+            ENDDO
+          ENDDO
+
+            loop interchange will transform the loop as if the user had
+            written:
+          DO I = 1, N
+            DO J = 1, M
+              A(J, I) = A(J, I) * C
+            ENDDO
+          ENDDO
+
+            which can be beneficial when N is larger than the caches,
+            because in Fortran, the elements of an array are stored in
+            memory contiguously by column, and the original loop iterates
+            over rows, potentially creating at each access a cache miss.
+          + -floop-strip-mine performs loop strip mining transformations
+            on loops. Strip mining splits a loop into two nested loops.
+            The outer loop has strides equal to the strip size and the
+            inner loop has strides of the original loop within a strip.
+            For example, given a loop like:
+          DO I = 1, N
+            A(I) = A(I) + C
+          ENDDO
+
+            loop strip mining will transform the loop as if the user had
+            written:
+          DO II = 1, N, 4
+            DO I = II, min (II + 3, N)
+              A(I) = A(I) + C
+            ENDDO
+          ENDDO
+
+          + -floop-block performs loop blocking transformations on loops.
+            Blocking strip mines each loop in the loop nest such that the
+            memory accesses of the element loops fit inside caches. For
+            example, given a loop like:
+          DO I = 1, N
+            DO J = 1, M
+              A(J, I) = B(I) + C(J)
+            ENDDO
+          ENDDO
+
+            loop blocking will transform the loop as if the user had
+            written:
+          DO II = 1, N, 64
+            DO JJ = 1, M, 64
+              DO I = II, min (II + 63, N)
+                DO J = JJ, min (JJ + 63, M)
+                  A(J, I) = B(I) + C(J)
+                ENDDO
+              ENDDO
+            ENDDO
+          ENDDO
+
+            which can be beneficial when M is larger than the caches,
+            because the innermost loop will iterate over a smaller amount
+            of data that can be kept in the caches.
+     * A new register allocator has replaced the old one. It is called
+       integrated register allocator (IRA) because coalescing, register
+       live range splitting, and hard register preferencing are done
+       on-the-fly during coloring. It also has better integration with the
+       reload pass. IRA is a regional register allocator which uses modern
+       Chaitin-Briggs coloring instead of Chow's priority coloring used in
+       the old register allocator. More info about IRA internals and
+       options can be found in the GCC manuals.
+     * A new instruction scheduler and software pipeliner, based on the
+       selective scheduling approach, has been added. The new pass
+       performs instruction unification, register renaming, substitution
+       through register copies, and speculation during scheduling. The
+       software pipeliner is able to pipeline non-countable loops. The new
+       pass is targeted at scheduling-eager in-order platforms. In GCC 4.4
+       it is available for the Intel Itanium platform working by default
+       as the second scheduling pass (after register allocation) at the
+       -O3 optimization level.
+     * When using -fprofile-generate with a multi-threaded program, the
+       profile counts may be slightly wrong due to race conditions. The
+       new -fprofile-correction option directs the compiler to apply
+       heuristics to smooth out the inconsistencies. By default the
+       compiler will give an error message when it finds an inconsistent
+       profile.
+     * The new -fprofile-dir=PATH option permits setting the directory
+       where profile data files are stored when using -fprofile-generate
+       and friends, and the directory used when reading profile data files
+       using -fprofile-use and friends.
+
+New warning options
+
+     * The new -Wframe-larger-than=NUMBER option directs GCC to emit a
+       warning if any stack frame is larger than NUMBER bytes. This may be
+       used to help ensure that code fits within a limited amount of stack
+       space.
+     * The command-line option -Wlarger-than-N is now written as
+       -Wlarger-than=N and the old form is deprecated.
+     * The new -Wno-mudflap option disables warnings about constructs
+       which can not be instrumented when using -fmudflap.
+
+New Languages and Language specific improvements
+
+     * Version 3.0 of the [5]OpenMP specification is now supported for the
+       C, C++, and Fortran compilers.
+     * New character data types, per [6]TR 19769: New character types in
+       C, are now supported for the C compiler in -std=gnu99 mode, as
+       __CHAR16_TYPE__ and __CHAR32_TYPE__, and for the C++ compiler in
+       -std=c++0x and -std=gnu++0x modes, as char16_t and char32_t too.
+
+  C family
+
+     * A new optimize attribute was added to allow programmers to change
+       the optimization level and particular optimization options for an
+       individual function. You can also change the optimization options
+       via the GCC optimize pragma for functions defined after the pragma.
+       The GCC push_options pragma and the GCC pop_options pragma allow
+       you temporarily save and restore the options used. The GCC
+       reset_options pragma restores the options to what was specified on
+       the command line.
+     * Uninitialized warnings do not require enabling optimization
+       anymore, that is, -Wuninitialized can be used together with -O0.
+       Nonetheless, the warnings given by -Wuninitialized will probably be
+       more accurate if optimization is enabled.
+     * -Wparentheses now warns about expressions such as (!x | y) and (!x
+       & y). Using explicit parentheses, such as in ((!x) | y), silences
+       this warning.
+     * -Wsequence-point now warns within if, while,do while and for
+       conditions, and within for begin/end expressions.
+     * A new option -dU is available to dump definitions of preprocessor
+       macros that are tested or expanded.
+
+  C++
+
+     * [7]Improved experimental support for the upcoming ISO C++ standard,
+       C++0x. Including support for auto, inline namespaces, generalized
+       initializer lists, defaulted and deleted functions, new character
+       types, and scoped enums.
+     * Those errors that may be downgraded to warnings to build legacy
+       code now mention -fpermissive when -fdiagnostics-show-option is
+       enabled.
+     * -Wconversion now warns if the result of a static_cast to enumeral
+       type is unspecified because the value is outside the range of the
+       enumeral type.
+     * -Wuninitialized now warns if a non-static reference or non-static
+       const member appears in a class without constructors.
+     * G++ now properly implements value-initialization, so objects with
+       an initializer of () and an implicitly defined default constructor
+       will be zero-initialized before the default constructor is called.
+
+    Runtime Library (libstdc++)
+
+     * Improved experimental support for the upcoming ISO C++ standard,
+       C++0x, including:
+          + Support for <chrono>, <condition_variable>, <cstdatomic>,
+            <forward_list>, <initializer_list>, <mutex>, <ratio>,
+            <system_error>, and <thread>.
+          + unique_ptr, <algorithm> additions, exception propagation, and
+            support for the new character types in <string> and <limits>.
+          + Existing facilities now exploit initializer lists, defaulted
+            and deleted functions, and the newly implemented core C++0x
+            features.
+          + Some standard containers are more efficient together with
+            stateful allocators, i.e., no allocator is constructed on the
+            fly at element construction time.
+     * Experimental support for non-standard pointer types in containers.
+     * The long standing libstdc++/30928 has been fixed for targets
+       running glibc 2.10 or later.
+     * As usual, many small and larger bug fixes, in particular quite a
+       few corner cases in <locale>.
+
+  Fortran
+
+     * GNU Fortran now employs libcpp directly instead of using cc1 as an
+       external preprocessor. The [8]-cpp option was added to allow manual
+       invocation of the preprocessor without relying on filename
+       extensions.
+     * The [9]-Warray-temporaries option warns about array temporaries
+       generated by the compiler, as an aid to optimization.
+     * The [10]-fcheck-array-temporaries option has been added, printing a
+       notification at run time, when an array temporary had to be created
+       for an function argument. Contrary to -Warray-temporaries the
+       warning is only printed if the array is noncontiguous.
+     * Improved generation of DWARF debugging symbols
+     * If using an intrinsic not part of the selected standard (via -std=
+       and -fall-intrinsics) gfortran will now treat it as if this
+       procedure were declared EXTERNAL and try to link to a user-supplied
+       procedure. -Wintrinsics-std will warn whenever this happens. The
+       now-useless option -Wnonstd-intrinsic was removed.
+     * The flag -falign-commons has been added to control the alignment of
+       variables in COMMON blocks, which is enabled by default in line
+       with previous GCC version. Using -fno-align-commons one can force
+       commons to be contiguous in memory as required by the Fortran
+       standard, however, this slows down the memory access. The option
+       -Walign-commons, which is enabled by default, warns when padding
+       bytes were added for alignment. The proper solution is to sort the
+       common objects by decreasing storage size, which avoids the
+       alignment problems.
+     * Fortran 2003 support has been extended:
+          + Wide characters (ISO 10646, UCS-4, kind=4) and UTF-8 I/O is
+            now supported (except internal reads from/writes to wide
+            strings). [11]-fbackslash now supports also \unnnn and
+            \Unnnnnnnn to enter Unicode characters.
+          + Asynchronous I/O (implemented as synchronous I/O) and the
+            decimal=, size=, sign=, pad=, blank=, and delim= specifiers
+            are now supported in I/O statements.
+          + Support for Fortran 2003 structure constructors and for array
+            constructor with typespec has been added.
+          + Procedure Pointers (but not yet as component in derived types
+            and as function results) are now supported.
+          + Abstract types, type extension, and type-bound procedures
+            (both PROCEDURE and GENERIC but not as operators). Note: As
+            CLASS/polymorphyic types are not implemented, type-bound
+            procedures with PASS accept as non-standard extension TYPE
+            arguments.
+     * Fortran 2008 support has been added:
+          + The -std=f2008 option and support for the file extensions
+            .f2008 and .F2008 has been added.
+          + The g0 format descriptor is now supported.
+          + The Fortran 2008 mathematical intrinsics ASINH, ACOSH, ATANH,
+            ERF, ERFC, GAMMA, LOG_GAMMA, BESSEL_*, HYPOT, and ERFC_SCALED
+            are now available (some of them existed as GNU extension
+            before). Note: The hyperbolic functions are not yet supporting
+            complex arguments and the three- argument version of BESSEL_*N
+            is not available.
+          + The bit intrinsics LEADZ and TRAILZ have been added.
+
+  Java (GCJ)
+
+  Ada
+
+     * The Ada runtime now supports multilibs on many platforms including
+       x86_64, SPARC and PowerPC. Their build is enabled by default.
+
+New Targets and Target Specific Improvements
+
+  ARM
+
+     * GCC now supports optimizing for the Cortex-A9, Cortex-R4 and
+       Cortex-R4F processors and has many other improvements to
+       optimization for ARM processors.
+     * GCC now supports the VFPv3 variant with 16 double-precision
+       registers with -mfpu=vfpv3-d16. The option -mfpu=vfp3 has been
+       renamed to -mfpu=vfpv3.
+     * GCC now supports the -mfix-cortex-m3-ldrd option to work around an
+       erratum on Cortex-M3 processors.
+     * GCC now supports the __sync_* atomic operations for ARM EABI
+       GNU/Linux.
+     * The section anchors optimization is now enabled by default when
+       optimizing for ARM.
+     * GCC now uses a new EABI-compatible profiling interface for EABI
+       targets. This requires a function __gnu_mcount_nc, which is
+       provided by GNU libc versions 2.8 and later.
+
+  AVR
+
+     * The -mno-tablejump option has been deprecated because it has the
+       same effect as the -fno-jump-tables option.
+     * Added support for these new AVR devices:
+          + ATA6289
+          + ATtiny13A
+          + ATtiny87
+          + ATtiny167
+          + ATtiny327
+          + ATmega8C1
+          + ATmega16C1
+          + ATmega32C1
+          + ATmega8M1
+          + ATmega16M1
+          + ATmega32M1
+          + ATmega32U4
+          + ATmega16HVB
+          + ATmega4HVD
+          + ATmega8HVD
+          + ATmega64C1
+          + ATmega64M1
+          + ATmega16U4
+          + ATmega32U6
+          + ATmega128RFA1
+          + AT90PWM81
+          + AT90SCR100
+          + M3000F
+          + M3000S
+          + M3001B
+
+  IA-32/x86-64
+
+     * Support for Intel AES built-in functions and code generation is
+       available via -maes.
+     * Support for Intel PCLMUL built-in function and code generation is
+       available via -mpclmul.
+     * Support for Intel AVX built-in functions and code generation is
+       available via -mavx.
+     * Automatically align the stack for local variables with alignment
+       requirement.
+     * GCC can now utilize the SVML library for vectorizing calls to a set
+       of C99 functions if -mveclibabi=svml is specified and you link to
+       an SVML ABI compatible library.
+     * On x86-64, the ABI has been changed in the following cases to
+       conform to the x86-64 ABI:
+          + Passing/returning structures with flexible array member:
+  struct foo
+    {
+      int i;
+      int flex[];
+    };
+          + Passing/returning structures with complex float member:
+  struct foo
+    {
+      int i;
+      __complex__ float f;
+    };
+          + Passing/returning unions with long double member:
+  union foo
+    {
+      int x;
+      long double ld;
+    };
+       Code built with previous versions of GCC that uses any of these is
+       not compatible with code built with GCC 4.4.0 or later.
+     * A new target attribute was added to allow programmers to change the
+       target options like -msse2 or -march=k8 for an individual function.
+       You can also change the target options via the GCC target pragma
+       for functions defined after the pragma.
+     * GCC can now be configured with options --with-arch-32,
+       --with-arch-64, --with-cpu-32, --with-cpu-64, --with-tune-32 and
+       --with-tune-64 to control the default optimization separately for
+       32-bit and 64-bit modes.
+
+  IA-32/IA64
+
+     * Support for __float128 (TFmode) IEEE quad type and corresponding
+       TCmode IEEE complex quad type is available via the soft-fp library
+       on IA-32/IA64 targets. This includes basic arithmetic operations
+       (addition, subtraction, negation, multiplication and division) on
+       __float128 real and TCmode complex values, the full set of IEEE
+       comparisons between __float128 values, conversions to and from
+       float, double and long double floating point types, as well as
+       conversions to and from signed or unsigned integer, signed or
+       unsigned long integer and signed or unsigned quad (TImode, IA64
+       only) integer types. Additionally, all operations generate the full
+       set of IEEE exceptions and support the full set of IEEE rounding
+       modes.
+
+  M68K/ColdFire
+
+     * GCC now supports instruction scheduling for ColdFire V1, V3 and V4
+       processors. (Scheduling support for ColdFire V2 processors was
+       added in GCC 4.3.)
+     * GCC now supports the -mxgot option to support programs requiring
+       many GOT entries on ColdFire.
+     * The m68k-*-linux-gnu target now builds multilibs by default.
+
+  MIPS
+
+     * MIPS Technologies have extended the original MIPS SVR4 ABI to
+       include support for procedure linkage tables (PLTs) and copy
+       relocations. These extensions allow GNU/Linux executables to use a
+       significantly more efficient code model than the one defined by the
+       original ABI.
+       GCC support for this code model is available via a new command-line
+       option, -mplt. There is also a new configure-time option,
+       --with-mips-plt, to make -mplt the default.
+       The new code model requires support from the assembler, the linker,
+       and the runtime C library. This support is available in binutils
+       2.19 and GLIBC 2.9.
+     * GCC can now generate MIPS16 code for 32-bit GNU/Linux executables
+       and 32-bit GNU/Linux shared libraries. This feature requires GNU
+       binutils 2.19 or above.
+     * Support for RMI's XLR processor is now available through the
+       -march=xlr and -mtune=xlr options.
+     * 64-bit targets can now perform 128-bit multiplications inline,
+       instead of relying on a libgcc function.
+     * Native GNU/Linux toolchains now support -march=native and
+       -mtune=native, which select the host processor.
+     * GCC now supports the R10K, R12K, R14K and R16K processors. The
+       canonical -march= and -mtune= names for these processors are
+       r10000, r12000, r14000 and r16000 respectively.
+     * GCC can now work around the side effects of speculative execution
+       on R10K processors. Please see the documentation of the
+       -mr10k-cache-barrier option for details.
+     * Support for the MIPS64 Release 2 instruction set has been added.
+       The option -march=mips64r2 enables generation of these
+       instructions.
+     * GCC now supports Cavium Networks' Octeon processor. This support is
+       available through the -march=octeon and -mtune=octeon options.
+     * GCC now supports STMicroelectronics' Loongson 2E/2F processors. The
+       canonical -march= and -mtune= names for these processors are
+       loongson2e and loongson2f.
+
+  picochip
+
+   Picochip is a 16-bit processor. A typical picoChip contains over 250
+   small cores, each with small amounts of memory. There are three
+   processor variants (STAN, MEM and CTRL) with different instruction sets
+   and memory configurations and they can be chosen using the -mae option.
+
+   This port is intended to be a "C" only port.
+
+  Power Architecture and PowerPC
+
+     * GCC now supports the e300c2, e300c3 and e500mc processors.
+     * GCC now supports Xilinx processors with a single-precision FPU.
+     * Decimal floating point is now supported for e500 processors.
+
+  S/390, zSeries and System z9/z10
+
+     * Support for the IBM System z10 EC/BC processor has been added. When
+       using the -march=z10 option, the compiler will generate code making
+       use of instructions provided by the General-Instruction-Extension
+       Facility and the Execute-Extension Facility.
+
+  VxWorks
+
+     * GCC now supports the thread-local storage mechanism used on
+       VxWorks.
+
+  Xtensa
+
+     * GCC now supports thread-local storage (TLS) for Xtensa processor
+       configurations that include the Thread Pointer option. TLS also
+       requires support from the assembler and linker; this support is
+       provided in the GNU binutils beginning with version 2.19.
+
+Documentation improvements
+
+Other significant improvements
+
+GCC 4.4.1
+
+   This is the [12]list of problem reports (PRs) from GCC's bug tracking
+   system that are known to be fixed in the 4.4.1 release. This list might
+   not be complete (that is, it is possible that some PRs that have been
+   fixed are not listed here).
+
+GCC 4.4.2
+
+   This is the [13]list of problem reports (PRs) from GCC's bug tracking
+   system that are known to be fixed in the 4.4.2 release. This list might
+   not be complete (that is, it is possible that some PRs that have been
+   fixed are not listed here).
+
+GCC 4.4.3
+
+   This is the [14]list of problem reports (PRs) from GCC's bug tracking
+   system that are known to be fixed in the 4.4.3 release. This list might
+   not be complete (that is, it is possible that some PRs that have been
+   fixed are not listed here).
+
+GCC 4.4.4
+
+   This is the [15]list of problem reports (PRs) from GCC's bug tracking
+   system that are known to be fixed in the 4.4.4 release. This list might
+   not be complete (that is, it is possible that some PRs that have been
+   fixed are not listed here).
+
+GCC 4.4.5
+
+   This is the [16]list of problem reports (PRs) from GCC's bug tracking
+   system that are known to be fixed in the 4.4.5 release. This list might
+   not be complete (that is, it is possible that some PRs that have been
+   fixed are not listed here).
+
+GCC 4.4.6
+
+   This is the [17]list of problem reports (PRs) from GCC's bug tracking
+   system that are known to be fixed in the 4.4.6 release. This list might
+   not be complete (that is, it is possible that some PRs that have been
+   fixed are not listed here).
+
+GCC 4.4.7
+
+   This is the [18]list of problem reports (PRs) from GCC's bug tracking
+   system that are known to be fixed in the 4.4.7 release. This list might
+   not be complete (that is, it is possible that some PRs that have been
+   fixed are not listed here).
+
+
+    For questions related to the use of GCC, please consult these web
+    pages and the [19]GCC manuals. If that fails, the
+    [20]gcc-help at gcc.gnu.org mailing list might help. Comments on these
+    web pages and the development of GCC are welcome on our developer
+    list at [21]gcc at gcc.gnu.org. All of [22]our lists have public
+    archives.
+
+   Copyright (C) [23]Free Software Foundation, Inc. Verbatim copying and
+   distribution of this entire article is permitted in any medium,
+   provided this notice is preserved.
+
+   These pages are [24]maintained by the GCC team. Last modified
+   2014-12-06[25].
+
+References
+
+   1. http://gcc.gnu.org/gcc-4.4/changes.html#4.4.7
+   2. http://gcc.gnu.org/gcc-4.3/changes.html#obsoleted
+   3. http://gcc.gnu.org/gcc-4.4/porting_to.html
+   4. https://gcc.gnu.org/wiki/Graphite
+   5. http://openmp.org/wp/openmp-specifications/
+   6. http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1040.pdf
+   7. http://gcc.gnu.org/gcc-4.4/cxx0x_status.html
+   8. https://gcc.gnu.org/onlinedocs/gfortran/Preprocessing-Options.html
+   9. https://gcc.gnu.org/onlinedocs/gfortran/Error-and-Warning-Options.html#index-g_t_0040code_007bWarray-temporaries_007d-125
+  10. https://gcc.gnu.org/onlinedocs/gfortran/Code-Gen-Options.html#index-g_t_0040code_007bfcheck-array-temporaries_007d-221
+  11. https://gcc.gnu.org/onlinedocs/gfortran/Fortran-Dialect-Options.html#index-g_t_0040code_007bbackslash_007d-34
+  12. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.4.1
+  13. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.4.2
+  14. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.4.3
+  15. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.4.4
+  16. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.4.5
+  17. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.4.6
+  18. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.4.7
+  19. https://gcc.gnu.org/onlinedocs/
+  20. mailto:gcc-help at gcc.gnu.org
+  21. mailto:gcc at gcc.gnu.org
+  22. https://gcc.gnu.org/lists.html
+  23. http://www.fsf.org/
+  24. https://gcc.gnu.org/about.html
+  25. http://validator.w3.org/check/referer
+======================================================================
+http://gcc.gnu.org/gcc-4.3/index.html
+                             GCC 4.3 Release Series
+
+   Jun 27, 2011
+
+   The [1]GNU project and the GCC developers are pleased to announce the
+   release of GCC 4.3.6.
+
+   This release is a bug-fix release, containing fixes for regressions in
+   GCC 4.3.5 relative to previous releases of GCC.
+
+Release History
+
+   GCC 4.3.6
+          Jun 27, 2011 ([2]changes)
+
+   GCC 4.3.5
+          May 22, 2010 ([3]changes)
+
+   GCC 4.3.4
+          August 4, 2009 ([4]changes)
+
+   GCC 4.3.3
+          January 24, 2009 ([5]changes)
+
+   GCC 4.3.2
+          August 27, 2008 ([6]changes)
+
+   GCC 4.3.1
+          June 6, 2008 ([7]changes)
+
+   GCC 4.3.0
+          March 5, 2008 ([8]changes)
+
+References and Acknowledgements
+
+   GCC used to stand for the GNU C Compiler, but since the compiler
+   supports several other languages aside from C, it now stands for the
+   GNU Compiler Collection.
+
+   A list of [9]successful builds is updated as new information becomes
+   available.
+
+   The GCC developers would like to thank the numerous people that have
+   contributed new features, improvements, bug fixes, and other changes as
+   well as test results to GCC. This [10]amazing group of volunteers is
+   what makes GCC successful.
+
+   For additional information about GCC please refer to the [11]GCC
+   project web site or contact the [12]GCC development mailing list.
+
+   To obtain GCC please use [13]our mirror sites or [14]our SVN server.
+
+
+    For questions related to the use of GCC, please consult these web
+    pages and the [15]GCC manuals. If that fails, the
+    [16]gcc-help at gcc.gnu.org mailing list might help. Comments on these
+    web pages and the development of GCC are welcome on our developer
+    list at [17]gcc at gcc.gnu.org. All of [18]our lists have public
+    archives.
+
+   Copyright (C) [19]Free Software Foundation, Inc. Verbatim copying and
+   distribution of this entire article is permitted in any medium,
+   provided this notice is preserved.
+
+   These pages are [20]maintained by the GCC team. Last modified
+   2014-06-28[21].
+
+References
+
+   1. http://www.gnu.org/
+   2. http://gcc.gnu.org/gcc-4.3/changes.html
+   3. http://gcc.gnu.org/gcc-4.3/changes.html
+   4. http://gcc.gnu.org/gcc-4.3/changes.html
+   5. http://gcc.gnu.org/gcc-4.3/changes.html
+   6. http://gcc.gnu.org/gcc-4.3/changes.html
+   7. http://gcc.gnu.org/gcc-4.3/changes.html
+   8. http://gcc.gnu.org/gcc-4.3/changes.html
+   9. http://gcc.gnu.org/gcc-4.3/buildstat.html
+  10. https://gcc.gnu.org/onlinedocs/gcc/Contributors.html
+  11. http://gcc.gnu.org/index.html
+  12. mailto:gcc at gcc.gnu.org
+  13. http://gcc.gnu.org/mirrors.html
+  14. http://gcc.gnu.org/svn.html
+  15. https://gcc.gnu.org/onlinedocs/
+  16. mailto:gcc-help at gcc.gnu.org
+  17. mailto:gcc at gcc.gnu.org
+  18. https://gcc.gnu.org/lists.html
+  19. http://www.fsf.org/
+  20. https://gcc.gnu.org/about.html
+  21. http://validator.w3.org/check/referer
+======================================================================
+http://gcc.gnu.org/gcc-4.3/changes.html
+                             GCC 4.3 Release Series
+                        Changes, New Features, and Fixes
+
+   The latest release in the 4.3 release series is [1]GCC 4.3.5.
+
+Caveats
+
+     * GCC requires the [2]GMP and [3]MPFR libraries for building all the
+       various front-end languages it supports. See the [4]prerequisites
+       page for version requirements.
+     * ColdFire targets now treat long double as having the same format as
+       double. In earlier versions of GCC, they used the 68881 long double
+       format instead.
+     * The m68k-uclinux target now uses the same calling conventions as
+       m68k-linux-gnu. You can select the original calling conventions by
+       configuring for m68k-uclinuxoldabi instead. Note that
+       m68k-uclinuxoldabi also retains the original 80-bit long double on
+       ColdFire targets.
+     * The -fforce-mem option has been removed because it has had no
+       effect in the last few GCC releases.
+     * The i386 -msvr3-shlib option has been removed since it is no longer
+       used.
+     * Fastcall for i386 has been changed not to pass aggregate arguments
+       in registers, following Microsoft compilers.
+     * Support for the AOF assembler has been removed from the ARM back
+       end; this affects only the targets arm-semi-aof and armel-semi-aof,
+       which are no longer recognized. We removed these targets without a
+       deprecation period because we discovered that they have been
+       unusable since GCC 4.0.0.
+     * Support for the TMS320C3x/C4x processor (targets c4x-* and tic4x-*)
+       has been removed. This support had been deprecated since GCC 4.0.0.
+     * Support for a number of older systems and recently unmaintained or
+       untested target ports of GCC has been declared obsolete in GCC 4.3.
+       Unless there is activity to revive them, the next release of GCC
+       will have their sources permanently removed.
+       All GCC ports for the following processor architectures have been
+       declared obsolete:
+          + Morpho MT (mt-*)
+       The following aliases for processor architectures have been
+       declared obsolete. Users should use the indicated generic target
+       names instead, with compile-time options such as -mcpu or
+       configure-time options such as --with-cpu to control the
+       configuration more precisely.
+          + strongarm*-*-*, ep9312*-*-*, xscale*-*-* (use arm*-*-*
+            instead).
+          + parisc*-*-* (use hppa*-*-* instead).
+          + m680[012]0-*-* (use m68k-*-* instead).
+       All GCC ports for the following operating systems have been
+       declared obsolete:
+          + BeOS (*-*-beos*)
+          + kaOS (*-*-kaos*)
+          + GNU/Linux using the a.out object format (*-*-linux*aout*)
+          + GNU/Linux using version 1 of the GNU C Library
+            (*-*-linux*libc1*)
+          + Solaris versions before Solaris 7 (*-*-solaris2.[0-6],
+            *-*-solaris2.[0-6].*)
+          + Miscellaneous System V (*-*-sysv*)
+          + WindISS (*-*-windiss*)
+       Also, those for some individual systems on particular architectures
+       have been obsoleted:
+          + UNICOS/mk on DEC Alpha (alpha*-*-unicosmk*)
+          + CRIS with a.out object format (cris-*-aout)
+          + BSD 4.3 on PA-RISC (hppa1.1-*-bsd*)
+          + OSF/1 on PA-RISC (hppa1.1-*-osf*)
+          + PRO on PA-RISC (hppa1.1-*-pro*)
+          + Sequent PTX on IA32 (i[34567]86-sequent-ptx4*,
+            i[34567]86-sequent-sysv4*)
+          + SCO Open Server 5 on IA32 (i[34567]86-*-sco3.2v5*)
+          + UWIN on IA32 (i[34567]86-*-uwin*) (support for UWIN as a host
+            was previously [5]removed in 2001, leaving only the support
+            for UWIN as a target now being deprecated)
+          + ChorusOS on PowerPC (powerpc-*-chorusos*)
+          + All VAX configurations apart from NetBSD and OpenBSD
+            (vax-*-bsd*, vax-*-sysv*, vax-*-ultrix*)
+     * The [6]-Wconversion option has been modified. Its purpose now is to
+       warn for implicit conversions that may alter a value. This new
+       behavior is available for both C and C++. Warnings about
+       conversions between signed and unsigned integers can be disabled by
+       using -Wno-sign-conversion. In C++, they are disabled by default
+       unless -Wsign-conversion is explicitly requested. The old behavior
+       of -Wconversion, that is, warn for prototypes causing a type
+       conversion that is different from what would happen to the same
+       argument in the absence of a prototype, has been moved to a new
+       option -Wtraditional-conversion, which is only available for C.
+     * The -m386, -m486, -mpentium and -mpentiumpro tuning options have
+       been removed because they were deprecated for more than 3 GCC major
+       releases. Use -mtune=i386, -mtune=i486, -mtune=pentium or
+       -mtune=pentiumpro as a replacement.
+     * The -funsafe-math-optimizations option now automatically turns on
+       -fno-trapping-math in addition to -fno-signed-zeros, as it enables
+       reassociation and thus may introduce or remove traps.
+     * The -ftree-vectorize option is now on by default under -O3. In
+       order to generate code for a SIMD extension, it has to be enabled
+       as well: use -maltivec for PowerPC platforms and -msse/-msse2 for
+       i?86 and x86_64.
+     * More information on porting to GCC 4.3 from previous versions of
+       GCC can be found in the [7]porting guide for this release.
+
+General Optimizer Improvements
+
+     * The GCC middle-end has been integrated with the [8]MPFR library.
+       This allows GCC to evaluate and replace at compile-time calls to
+       built-in math functions having constant arguments with their
+       mathematically equivalent results. In making use of [9]MPFR, GCC
+       can generate correct results regardless of the math library
+       implementation or floating point precision of the host platform.
+       This also allows GCC to generate identical results regardless of
+       whether one compiles in native or cross-compile configurations to a
+       particular target. The following built-in functions take advantage
+       of this new capability: acos, acosh, asin, asinh, atan2, atan,
+       atanh, cbrt, cos, cosh, drem, erf, erfc, exp10, exp2, exp, expm1,
+       fdim, fma, fmax, fmin, gamma_r, hypot, j0, j1, jn, lgamma_r, log10,
+       log1p, log2, log, pow10, pow, remainder, remquo, sin, sincos, sinh,
+       tan, tanh, tgamma, y0, y1 and yn. The float and long double
+       variants of these functions (e.g. sinf and sinl) are also handled.
+       The sqrt and cabs functions with constant arguments were already
+       optimized in prior GCC releases. Now they also use [10]MPFR.
+     * A new forward propagation pass on RTL was added. The new pass
+       replaces several slower transformations, resulting in compile-time
+       improvements as well as better code generation in some cases.
+     * A new command-line switch -frecord-gcc-switches has been added to
+       GCC, although it is only enabled for some targets. The switch
+       causes the command line that was used to invoke the compiler to be
+       recorded into the object file that is being created. The exact
+       format of this recording is target and binary file format
+       dependent, but it usually takes the form of a note section
+       containing ASCII text. The switch is related to the -fverbose-asm
+       switch, but that one only records the information in the assembler
+       output file as comments, so the information never reaches the
+       object file.
+     * The inliner heuristic is now aware of stack frame consumption. New
+       command-line parameters --param large-stack-frame and --param
+       large-stack-frame-growth can be used to limit stack frame size
+       growth caused by inlining.
+     * During feedback directed optimizations, the expected block size the
+       memcpy, memset and bzero functions operate on is discovered and for
+       cases of commonly used small sizes, specialized inline code is
+       generated.
+     * __builtin_expect no longer requires its argument to be a compile
+       time constant.
+     * Interprocedural optimization was reorganized to work on functions
+       in SSA form. This enables more precise and cheaper dataflow
+       analysis and makes writing interprocedural optimizations easier.
+       The following improvements have been implemented on top of this
+       framework:
+          + Pre-inline optimization: Selected local optimization passes
+            are run before the inliner (and other interprocedural passes)
+            are executed. This significantly improves the accuracy of code
+            growth estimates used by the inliner and reduces the overall
+            memory footprint for large compilation units.
+          + Early inlining (a simple bottom-up inliner pass inlining only
+            functions whose body is smaller than the expected call
+            overhead) is now executed with the early optimization passes,
+            thus inlining already optimized function bodies into an
+            unoptimized function that is subsequently optimized by early
+            optimizers. This enables the compiler to quickly eliminate
+            abstraction penalty in C++ programs.
+          + Interprocedural constant propagation now operate on SSA form
+            increasing accuracy of the analysis.
+     * A new internal representation for GIMPLE statements has been
+       contributed, resulting in compile-time memory savings.
+     * The vectorizer was enhanced to support vectorization of outer
+       loops, intra-iteration parallelism (loop-aware SLP), vectorization
+       of strided accesses and loops with multiple data-types. Run-time
+       dependency testing using loop versioning was added. The cost model,
+       turned on by -fvect-cost-model, was developed.
+
+New Languages and Language specific improvements
+
+     * We have added new command-line options
+       -finstrument-functions-exclude-function-list and
+       -finstrument-functions-exclude-file-list. They provide more control
+       over which functions are annotated by the -finstrument-functions
+       option.
+
+  C family
+
+     * Implicit conversions between generic vector types are now only
+       permitted when the two vectors in question have the same number of
+       elements and compatible element types. (Note that the restriction
+       involves compatible element types, not implicitly-convertible
+       element types: thus, a vector type with element type int may not be
+       implicitly converted to a vector type with element type unsigned
+       int.) This restriction, which is in line with specifications for
+       SIMD architectures such as AltiVec, may be relaxed using the flag
+       -flax-vector-conversions. This flag is intended only as a
+       compatibility measure and should not be used for new code.
+     * -Warray-bounds has been added and is now enabled by default for
+       -Wall . It produces warnings for array subscripts that can be
+       determined at compile time to be always out of bounds.
+       -Wno-array-bounds will disable the warning.
+     * The constructor and destructor function attributes now accept
+       optional priority arguments which control the order in which the
+       constructor and destructor functions are run.
+     * New [11]command-line options -Wtype-limits,
+       -Wold-style-declaration, -Wmissing-parameter-type, -Wempty-body,
+       -Wclobbered and -Wignored-qualifiers have been added for finer
+       control of the diverse warnings enabled by -Wextra.
+     * A new function attribute alloc_size has been added to mark up
+       malloc style functions. For constant sized allocations this can be
+       used to find out the size of the returned pointer using the
+       __builtin_object_size() function for buffer overflow checking and
+       similar. This supplements the already built-in malloc and calloc
+       constant size handling.
+     * Integer constants written in binary are now supported as a GCC
+       extension. They consist of a prefix 0b or 0B, followed by a
+       sequence of 0 and 1 digits.
+     * A new predefined macro __COUNTER__ has been added. It expands to
+       sequential integral values starting from 0. In conjunction with the
+       ## operator, this provides a convenient means to generate unique
+       identifiers.
+     * A new command-line option -fdirectives-only has been added. It
+       enables a special preprocessing mode which improves the performance
+       of applications like distcc and ccache.
+     * Fixed-point data types and operators have been added. They are
+       based on Chapter 4 of the Embedded-C specification (n1169.pdf).
+       Currently, only MIPS targets are supported.
+     * Decimal floating-point arithmetic based on draft ISO/IEC TR 24732,
+       N1241, is now supported as a GCC extension to C for targets
+       i[34567]86-*-linux-gnu, powerpc*-*-linux-gnu, s390*-ibm-linux-gnu,
+       and x86_64-*-linux-gnu. The feature introduces new data types
+       _Decimal32, _Decimal64, and _Decimal128 with constant suffixes DF,
+       DD, and DL.
+
+  C++
+
+     * [12]Experimental support for the upcoming ISO C++ standard, C++0x.
+     * -Wc++0x-compat has been added and is now enabled by default for
+       -Wall. It produces warnings for constructs whose meaning differs
+       between ISO C++ 1998 and C++0x.
+     * The -Wparentheses option now works for C++ as it does for C. It
+       warns if parentheses are omitted when operators with confusing
+       precedence are nested. It also warns about ambiguous else
+       statements. Since -Wparentheses is enabled by -Wall, this may cause
+       additional warnings with existing C++ code which uses -Wall. These
+       new warnings may be disabled by using -Wall -Wno-parentheses.
+     * The -Wmissing-declarations now works for C++ as it does for C.
+     * The -fvisibility-ms-compat flag was added, to make it easier to
+       port larger projects using shared libraries from Microsoft's Visual
+       Studio to ELF and Mach-O systems.
+     * C++ attribute handling has been overhauled for template arguments
+       (ie dependent types). In particular, __attribute__((aligned(T)));
+       works for C++ types.
+
+    Runtime Library (libstdc++)
+
+     * [13]Experimental support for the upcoming ISO C++ standard, C++0x.
+     * Support for TR1 mathematical special functions and regular
+       expressions. ([14]Implementation status of TR1)
+     * Default what implementations give more elaborate exception strings
+       for bad_cast, bad_typeid, bad_exception, and bad_alloc.
+     * Header dependencies have been streamlined, reducing unnecessary
+       includes and pre-processed bloat.
+     * Variadic template implementations of items in <tuple> and
+       <functional>.
+     * An experimental [15]parallel mode has been added. This is a
+       parallel implementation of many C++ Standard library algorithms,
+       like std::accumulate, std::for_each, std::transform, or std::sort,
+       to give but four examples. These algorithms can be substituted for
+       the normal (sequential) libstdc++ algorithms on a piecemeal basis,
+       or all existing algorithms can be transformed via the
+       -D_GLIBCXX_PARALLEL macro.
+     * Debug mode versions of classes in <unordered_set> and
+       <unordered_map>.
+     * Formal deprecation of <ext/hash_set> and <ext/hash_map>, which are
+       now <backward/hash_set> and <backward/hash_map>. This code:
+    #include <ext/hash_set>
+    __gnu_cxx::hash_set<int> s;
+
+       Can be transformed (in order of preference) to:
+    #include <tr1/unordered_set>
+    std::tr1::unordered_set<int> s;
+
+       or
+    #include <backward/hash_set>
+    __gnu_cxx::hash_set<int> s;
+
+       Similar transformations apply to __gnu_cxx::hash_map,
+       __gnu_cxx::hash_multimap, __gnu_cxx::hash_set,
+       __gnu_cxx::hash_multiset.
+
+  Fortran
+
+     * Due to the fact that the [16]GMP and [17]MPFR libraries are
+       required for all languages, Fortran is no longer special in this
+       regard and is available by default.
+     * The [18]-fexternal-blas option has been added, which generates
+       calls to BLAS routines for intrinsic matrix operations such as
+       matmul rather than using the built-in algorithms.
+     * Support to give a backtrace (compiler flag -fbacktrace or
+       environment variable GFORTRAN_ERROR_BACKTRACE; on glibc systems
+       only) or a core dump (-fdump-core, GFORTRAN_ERROR_DUMPCORE) when a
+       run-time error occured.
+     * GNU Fortran now defines __GFORTRAN__ when it runs the C
+       preprocessor (CPP).
+     * The [19]-finit-local-zero, -finit-real, -finit-integer,
+       -finit-character, and -finit-logical options have been added, which
+       can be used to initialize local variables.
+     * The intrinsic procedures [20]GAMMA and [21]LGAMMA have been added,
+       which calculate the Gamma function and its logarithm. Use EXTERNAL
+       gamma if you want to use your own gamma function.
+     * GNU Fortran now regards the backslash character as literal (as
+       required by the Fortran 2003 standard); using [22]-fbackslash GNU
+       Fortran interprets backslashes as C-style escape characters.
+     * The [23]interpretation of binary, octal and hexadecimal (BOZ)
+       literal constants has been changed. Before they were always
+       interpreted as integer; now they are bit-wise transferred as
+       argument of INT, REAL, DBLE and CMPLX as required by the Fortran
+       2003 standard, and for real and complex variables in DATA
+       statements or when directly assigned to real and complex variables.
+       Everywhere else and especially in expressions they are still
+       regarded as integer constants.
+     * Fortran 2003 support has been extended:
+          + Intrinsic statements IMPORT, PROTECTED, VALUE and VOLATILE
+          + Pointer intent
+          + Intrinsic module ISO_ENV_FORTRAN
+          + Interoperability with C (ISO C Bindings)
+          + ABSTRACT INTERFACES and PROCEDURE statements (without POINTER
+            attribute)
+          + Fortran 2003 BOZ
+
+  Java (GCJ)
+
+     * GCJ now uses the Eclipse Java compiler for its Java parsing needs.
+       This enables the use of all 1.5 language features, and fixes most
+       existing front end bugs.
+     * libgcj now supports all 1.5 language features which require runtime
+       support: foreach, enum, annotations, generics, and auto-boxing.
+     * We've made many changes to the tools shipped with gcj.
+          + The old jv-scan tool has been removed. This tool never really
+            worked properly. There is no replacement.
+          + gcjh has been rewritten. Some of its more obscure options no
+            longer work, but are still recognized in an attempt at
+            compatibility. gjavah is a new program with similar
+            functionality but different command-line options.
+          + grmic and grmiregistry have been rewritten. grmid has been
+            added.
+          + gjar replaces the old fastjar.
+          + gjarsigner (used for signing jars), gkeytool (used for key
+            management), gorbd (for CORBA), gserialver (computes
+            serialization UIDs), and gtnameserv (also for CORBA) are now
+            installed.
+     * The ability to dump the contents of the java run time heap to a
+       file for off-line analysis has been added. The heap dumps may be
+       analyzed with the new gc-analyze tool. They may be generated on
+       out-of-memory conditions or on demand and are controlled by the new
+       run time class gnu.gcj.util.GCInfo.
+     * java.util.TimeZone can now read files from /usr/share/zoneinfo to
+       provide correct, updated, timezone information. This means that
+       packagers no longer have to update libgcj when a time zone change
+       is published.
+
+New Targets and Target Specific Improvements
+
+  IA-32/x86-64
+
+     * Tuning for Intel Core 2 processors is available via -mtune=core2
+       and -march=core2.
+     * Tuning for AMD Geode processors is available via -mtune=geode and
+       -march=geode.
+     * Code generation of block move (memcpy) and block set (memset) was
+       rewritten. GCC can now pick the best algorithm (loop, unrolled
+       loop, instruction with rep prefix or a library call) based on the
+       size of the block being copied and the CPU being optimized for. A
+       new option -minline-stringops-dynamically has been added. With this
+       option string operations of unknown size are expanded such that
+       small blocks are copied by in-line code, while for large blocks a
+       library call is used. This results in faster code than
+       -minline-all-stringops when the library implementation is capable
+       of using cache hierarchy hints. The heuristic choosing the
+       particular algorithm can be overwritten via -mstringop-strategy.
+       Newly also memset of values different from 0 is inlined.
+     * GCC no longer places the cld instruction before string operations.
+       Both i386 and x86-64 ABI documents mandate the direction flag to be
+       clear at the entry of a function. It is now invalid to set the flag
+       in asm statement without reseting it afterward.
+     * Support for SSSE3 built-in functions and code generation are
+       available via -mssse3.
+     * Support for SSE4.1 built-in functions and code generation are
+       available via -msse4.1.
+     * Support for SSE4.2 built-in functions and code generation are
+       available via -msse4.2.
+     * Both SSE4.1 and SSE4.2 support can be enabled via -msse4.
+     * A new set of options -mpc32, -mpc64 and -mpc80 have been added to
+       allow explicit control of x87 floating point precision.
+     * Support for __float128 (TFmode) IEEE quad type and corresponding
+       TCmode IEEE complex quad type is available via the soft-fp library
+       on x86_64 targets. This includes basic arithmetic operations
+       (addition, subtraction, negation, multiplication and division) on
+       __float128 real and TCmode complex values, the full set of IEEE
+       comparisons between __float128 values, conversions to and from
+       float, double and long double floating point types, as well as
+       conversions to and from signed or unsigned integer, signed or
+       unsigned long integer and signed or unsigned quad (TImode) integer
+       types. Additionally, all operations generate the full set of IEEE
+       exceptions and support the full set of IEEE rounding modes.
+     * GCC can now utilize the ACML library for vectorizing calls to a set
+       of C99 functions on x86_64 if -mveclibabi=acml is specified and you
+       link to an ACML ABI compatible library.
+
+  ARM
+
+     * Compiler and Library support for Thumb-2 and the ARMv7 architecture
+       has been added.
+
+  CRIS
+
+    New features
+
+     * Compiler and Library support for the CRIS v32 architecture, as
+       found in Axis Communications ETRAX FS and ARTPEC-3 chips, has been
+       added.
+
+    Configuration changes
+
+     * The cris-*-elf target now includes support for CRIS v32, including
+       libraries, through the -march=v32 option.
+     * A new crisv32-*-elf target defaults to generate code for CRIS v32.
+     * A new crisv32-*-linux* target defaults to generate code for CRIS
+       v32.
+     * The cris-*-aout target has been obsoleted.
+
+    Improved support for built-in functions
+
+     * GCC can now use the lz and swapwbr instructions to implement the
+       __builtin_clz, __builtin_ctz and __builtin_ffs family of functions.
+     * __builtin_bswap32 is now implemented using the swapwb instruction,
+       when available.
+
+  m68k and ColdFire
+
+    New features
+
+     * Support for several new ColdFire processors has been added. You can
+       generate code for them using the new -mcpu option.
+     * All targets now support ColdFire processors.
+     * m68k-uclinux targets have improved support for C++ constructors and
+       destructors, and for shared libraries.
+     * It is now possible to set breakpoints on the first or last line of
+       a function, even if there are no statements on that line.
+
+    Optimizations
+
+     * Support for sibling calls has been added.
+     * More use is now made of the ColdFire mov3q instruction.
+     * __builtin_clz is now implemented using the ff1 ColdFire
+       instruction, when available.
+     * GCC now honors the -m68010 option. 68010 code now uses clr rather
+       than move to zero volatile memory.
+     * 68020 targets and above can now use symbol(index.size*scale)
+       addresses for indexed array accesses. Earlier compilers would
+       always load the symbol into a base register first.
+
+    Configuration changes
+
+     * All m68k and ColdFire targets now allow the default processor to be
+       set at configure time using --with-cpu.
+     * A --with-arch configuration option has been added. This option
+       allows you to restrict a target to ColdFire or non-ColdFire
+       processors.
+
+    Preprocessor macros
+
+     * An __mcfv*__ macro is now defined for all ColdFire targets.
+       (Earlier versions of GCC only defined __mcfv4e__.)
+     * __mcf_cpu_*, __mcf_family_* and __mcffpu__ macros have been added.
+     * All targets now define __mc68010 and __mc68010__ when generating
+       68010 code.
+
+    Command-line changes
+
+     * New command-line options -march, -mcpu, -mtune and -mhard-float
+       have been added. These options apply to both m68k and ColdFire
+       targets.
+     * -mno-short, -mno-bitfield and -mno-rtd are now accepted as negative
+       versions of -mshort, etc.
+     * -fforce-addr has been removed. It is now ignored by the compiler.
+
+    Other improvements
+
+     * ColdFire targets now try to maintain a 4-byte-aligned stack where
+       possible.
+     * m68k-uclinux targets now try to avoid situations that lead to the
+       load-time error: BINFMT_FLAT: reloc outside program.
+
+  MIPS
+
+    Changes to existing configurations
+
+     * libffi and libjava now support all three GNU/Linux ABIs: o32, n32
+       and n64. Every GNU/Linux configuration now builds these libraries
+       by default.
+     * GNU/Linux configurations now generate -mno-shared code unless
+       overridden by -fpic, -fPIC, -fpie or -fPIE.
+     * mipsisa32*-linux-gnu configurations now generate hard-float code by
+       default, just like other mipsisa32* and mips*-linux-gnu
+       configurations. You can build a soft-float version of any
+       mips*-linux-gnu configuration by passing --with-float=soft to
+       configure.
+     * mips-wrs-vxworks now supports run-time processes (RTPs).
+
+    Changes to existing command-line options
+
+     * The -march and -mtune options no longer accept 24k as a processor
+       name. Please use 24kc, 24kf2_1 or 24kf1_1 instead.
+     * The -march and -mtune options now accept 24kf2_1, 24kef2_1 and
+       34kf2_1 as synonyms for 24kf, 24kef and 34kf respectively. The
+       options also accept 24kf1_1, 24kef1_1 and 34kf1_1 as synonyms for
+       24kx, 24kex and 34kx.
+
+    New configurations
+
+   GCC now supports the following configurations:
+     * mipsisa32r2*-linux-gnu*, which generates MIPS32 revision 2 code by
+       default. Earlier releases also recognized this configuration, but
+       they treated it in the same way as mipsisa32*-linux-gnu*. Note that
+       you can customize any mips*-linux-gnu* configuration to a
+       particular ISA or processor by passing an appropriate --with-arch
+       option to configure.
+     * mipsisa*-sde-elf*, which provides compatibility with MIPS
+       Technologies' SDE toolchains. The configuration uses the SDE
+       libraries by default, but you can use it like other newlib-based
+       ELF configurations by passing --with-newlib to configure. It is the
+       only configuration besides mips64vr*-elf* to build MIPS16 as well
+       as non-MIPS16 libraries.
+     * mipsisa*-elfoabi*, which is similar to the general mipsisa*-elf*
+       configuration, but uses the o32 and o64 ABIs instead of the 32-bit
+       and 64-bit forms of the EABI.
+
+    New processors and application-specific extensions
+
+     * Support for the SmartMIPS ASE is available through the new
+       -msmartmips option.
+     * Support for revision 2 of the DSP ASE is available through the new
+       -mdspr2 option. A new preprocessor macro called __mips_dsp_rev
+       indicates the revision of the ASE in use.
+     * Support for the 4KS and 74K families of processors is available
+       through the -march and -mtune options.
+
+    Improved support for built-in functions
+
+     * GCC can now use load-linked, store-conditional and sync
+       instructions to implement atomic built-in functions such as
+       __sync_fetch_and_add. The memory reference must be 4 bytes wide for
+       32-bit targets and either 4 or 8 bytes wide for 64-bit targets.
+     * GCC can now use the clz and dclz instructions to implement the
+       __builtin_ctz and __builtin_ffs families of functions.
+     * There is a new __builtin___clear_cache function for flushing the
+       instruction cache. GCC expands this function inline on MIPS32
+       revision 2 targets, otherwise it calls the function specified by
+       -mcache-flush-func.
+
+    MIPS16 improvements
+
+     * GCC can now compile objects that contain a mixture of MIPS16 and
+       non-MIPS16 code. There are two new attributes, mips16 and nomips16,
+       for specifying which mode a function should use.
+     * A new option called -minterlink-mips16 makes non-MIPS16 code
+       link-compatible with MIPS16 code.
+     * After many bug fixes, the long-standing MIPS16 -mhard-float support
+       should now work fairly reliably.
+     * GCC can now use the MIPS16e save and restore instructions.
+     * -fsection-anchors now works in MIPS16 mode. MIPS16 code compiled
+       with -G0 -fsection-anchors is often smaller than code compiled with
+       -G8. However, please note that you must usually compile all objects
+       in your application with the same -G option; see the documentation
+       of -G for details.
+     * A new option called-mcode-readable specifies which instructions are
+       allowed to load from the code segment. -mcode-readable=yes is the
+       default and says that any instruction may load from the code
+       segment. The other alternatives are -mcode-readable=pcrel, which
+       says that only PC-relative MIPS16 instructions may load from the
+       code segment, and -mcode-readable=no, which says that no
+       instruction may do so. Please see the documentation for more
+       details, including example uses.
+
+    Small-data improvements
+
+   There are three new options for controlling small data:
+     * -mno-extern-sdata, which disables small-data accesses for
+       externally-defined variables. Code compiled with -Gn
+       -mno-extern-sdata will be link-compatible with any -G setting
+       between -G0 and -Gn inclusive.
+     * -mno-local-sdata, which disables the use of small-data sections for
+       data that is not externally visible. This option can be a useful
+       way of reducing small-data usage in less performance-critical parts
+       of an application.
+     * -mno-gpopt, which disables the use of the $gp register while still
+       honoring the -G limit when placing externally-visible data. This
+       option implies -mno-extern-sdata and -mno-local-sdata and it can be
+       useful in situations where $gp does not necessarily hold the
+       expected value.
+
+    Miscellaneous improvements
+
+     * There is a new option called -mbranch-cost for tweaking the
+       perceived cost of branches.
+     * If GCC is configured to use a version of GAS that supports the
+       .gnu_attribute directive, it will use that directive to record
+       certain properties of the output code. .gnu_attribute is new to GAS
+       2.18.
+     * There are two new function attributes, near and far, for overriding
+       the command-line setting of -mlong-calls on a function-by-function
+       basis.
+     * -mfp64, which previously required a 64-bit target, now works with
+       MIPS32 revision 2 targets as well. The mipsisa*-elfoabi* and
+       mipsisa*-sde-elf* configurations provide suitable library support.
+     * GCC now recognizes the -mdmx and -mmt options and passes them down
+       to the assembler. It does nothing else with the options at present.
+
+  SPU (Synergistic Processor Unit) of the Cell Broadband Engine Architecture
+  (BEA)
+
+     * Support has been added for this new architecture.
+
+  RS6000 (POWER/PowerPC)
+
+     * Support for the PowerPC 750CL paired-single instructions has been
+       added with a new powerpc-*-linux*paired* target configuration. It
+       is enabled by an associated -mpaired option and can be accessed
+       using new built-in functions.
+     * Support for auto-detecting architecture and system configuration to
+       auto-select processor optimization tuning.
+     * Support for VMX on AIX 5.3 has been added.
+     * Support for AIX Version 6.1 has been added.
+
+  S/390, zSeries and System z9
+
+     * Support for the IBM System z9 EC/BC processor (z9 GA3) has been
+       added. When using the -march=z9-ec option, the compiler will
+       generate code making use of instructions provided by the decimal
+       floating point facility and the floating point conversion facility
+       (pfpo). Besides the instructions used to implement decimal floating
+       point operations these facilities also contain instructions to move
+       between general purpose and floating point registers and to modify
+       and copy the sign-bit of floating point values.
+     * When the -march=z9-ec option is used the new
+       -mhard-dfp/-mno-hard-dfp options can be used to specify whether the
+       decimal floating point hardware instructions will be used or not.
+       If none of them is given the hardware support is enabled by
+       default.
+     * The -mstack-guard option can now be omitted when using stack
+       checking via -mstack-size in order to let GCC choose a sensible
+       stack guard value according to the frame size of each function.
+     * Various changes to improve performance of generated code have been
+       implemented, including:
+          + The condition code set by an add logical with carry
+            instruction is now available for overflow checks like: a + b +
+            carry < b.
+          + The test data class instruction is now used to implement
+            sign-bit and infinity checks of binary and decimal floating
+            point numbers.
+
+  SPARC
+
+     * Support for the Sun UltraSPARC T2 (Niagara 2) processor has been
+       added.
+
+  Xtensa
+
+     * Stack unwinding for exception handling now uses by default a
+       specialized version of DWARF unwinding. This is not
+       binary-compatible with the setjmp/longjmp (sjlj) unwinding used for
+       Xtensa with previous versions of GCC.
+     * For Xtensa processors that include the Conditional Store option,
+       the built-in functions for atomic memory access are now implemented
+       using S32C1I instructions.
+     * If the Xtensa NSA option is available, GCC will use it to implement
+       the __builtin_ctz and __builtin_clz functions.
+
+Documentation improvements
+
+     * Existing libstdc++ documentation has been edited and restructured
+       into a single DocBook XML manual. The results can be viewed online
+       [24]here.
+
+Other significant improvements
+
+     * The compiler's --help command-line option has been extended so that
+       it now takes an optional set of arguments. These arguments restrict
+       the information displayed to specific classes of command-line
+       options, and possibly only a subset of those options. It is also
+       now possible to replace the descriptive text associated with each
+       displayed option with an indication of its current value, or for
+       binary options, whether it has been enabled or disabled.
+       Here are some examples. The following will display all the options
+       controlling warning messages:
+      --help=warnings
+
+       Whereas this will display all the undocumented, target specific
+       options:
+      --help=target,undocumented
+
+       This sequence of commands will display the binary optimizations
+       that are enabled by -O3:
+      gcc -c -Q -O3 --help=optimizers > /tmp/O3-opts
+      gcc -c -Q -O2 --help=optimizers > /tmp/O2-opts
+      diff /tmp/O2-opts /tmp/O3-opts | grep enabled
+
+     * The configure options --with-pkgversion and --with-bugurl have been
+       added. These allow distributors of GCC to include a
+       distributor-specific string in manuals and --version output and to
+       specify the URL for reporting bugs in their versions of GCC.
+
+GCC 4.3.1
+
+   This is the [25]list of problem reports (PRs) from GCC's bug tracking
+   system that are known to be fixed in the 4.3.1 release. This list might
+   not be complete (that is, it is possible that some PRs that have been
+   fixed are not listed here).
+
+Target Specific Changes
+
+  IA-32/x86-64
+
+    ABI changes
+
+     * Starting with GCC 4.3.1, decimal floating point variables are
+       aligned to their natural boundaries when they are passed on the
+       stack for i386.
+
+    Command-line changes
+
+     * Starting with GCC 4.3.1, the -mcld option has been added to
+       automatically generate a cld instruction in the prologue of
+       functions that use string instructions. This option is used for
+       backward compatibility on some operating systems and can be enabled
+       by default for 32-bit x86 targets by configuring GCC with the
+       --enable-cld configure option.
+
+GCC 4.3.2
+
+   This is the [26]list of problem reports (PRs) from GCC's bug tracking
+   system that are known to be fixed in the 4.3.2 release. This list might
+   not be complete (that is, it is possible that some PRs that have been
+   fixed are not listed here).
+
+GCC 4.3.3
+
+   This is the [27]list of problem reports (PRs) from GCC's bug tracking
+   system that are known to be fixed in the 4.3.3 release. This list might
+   not be complete (that is, it is possible that some PRs that have been
+   fixed are not listed here).
+
+GCC 4.3.4
+
+   This is the [28]list of problem reports (PRs) from GCC's bug tracking
+   system that are known to be fixed in the 4.3.4 release. This list might
+   not be complete (that is, it is possible that some PRs that have been
+   fixed are not listed here).
+
+GCC 4.3.5
+
+   This is the [29]list of problem reports (PRs) from GCC's bug tracking
+   system that are known to be fixed in the 4.3.5 release. This list might
+   not be complete (that is, it is possible that some PRs that have been
+   fixed are not listed here).
+
+GCC 4.3.6
+
+   This is the [30]list of problem reports (PRs) from GCC's bug tracking
+   system that are known to be fixed in the 4.3.6 release. This list might
+   not be complete (that is, it is possible that some PRs that have been
+   fixed are not listed here).
+
+
+    For questions related to the use of GCC, please consult these web
+    pages and the [31]GCC manuals. If that fails, the
+    [32]gcc-help at gcc.gnu.org mailing list might help. Comments on these
+    web pages and the development of GCC are welcome on our developer
+    list at [33]gcc at gcc.gnu.org. All of [34]our lists have public
+    archives.
+
+   Copyright (C) [35]Free Software Foundation, Inc. Verbatim copying and
+   distribution of this entire article is permitted in any medium,
+   provided this notice is preserved.
+
+   These pages are [36]maintained by the GCC team. Last modified
+   2014-06-28[37].
+
+References
+
+   1. http://gcc.gnu.org/gcc-4.3/changes.html#4.3.5
+   2. http://gmplib.org/
+   3. http://www.mpfr.org/
+   4. https://gcc.gnu.org/install/prerequisites.html
+   5. https://gcc.gnu.org/ml/gcc-announce/2001/msg00000.html
+   6. https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#Warning-Options
+   7. http://gcc.gnu.org/gcc-4.3/porting_to.html
+   8. http://www.mpfr.org/
+   9. http://www.mpfr.org/
+  10. http://www.mpfr.org/
+  11. https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html
+  12. http://gcc.gnu.org/gcc-4.3/cxx0x_status.html
+  13. http://gcc.gnu.org/gcc-4.3/cxx0x_status.html
+  14. https://gcc.gnu.org/onlinedocs/libstdc++/manual/bk01pt01ch01.html#m anual.intro.status.standard.tr1
+  15. https://gcc.gnu.org/onlinedocs/libstdc++/manual/parallel_mode.html
+  16. http://gmplib.org/
+  17. http://www.mpfr.org/
+  18. https://gcc.gnu.org/onlinedocs/gfortran/Code-Gen-Options.html#Code-Gen-Options
+  19. https://gcc.gnu.org/onlinedocs/gfortran/Code-Gen-Options.html#index-g_t_0040code_007bfinit-local-zero_007d-167
+  20. https://gcc.gnu.org/onlinedocs/gcc-4.3.0/gfortran/GAMMA.html
+  21. https://gcc.gnu.org/onlinedocs/gcc-4.3.0/gfortran/LGAMMA.html
+  22. https://gcc.gnu.org/onlinedocs/gfortran/Fortran-Dialect-Options.html
+  23. https://gcc.gnu.org/onlinedocs/gfortran/BOZ-literal-constants.html
+  24. https://gcc.gnu.org/onlinedocs/libstdc++/
+  25. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.3.1
+  26. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.3.2
+  27. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.3.3
+  28. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.3.4
+  29. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.3.5
+  30. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.3.6
+  31. https://gcc.gnu.org/onlinedocs/
+  32. mailto:gcc-help at gcc.gnu.org
+  33. mailto:gcc at gcc.gnu.org
+  34. https://gcc.gnu.org/lists.html
+  35. http://www.fsf.org/
+  36. https://gcc.gnu.org/about.html
+  37. http://validator.w3.org/check/referer
+======================================================================
+http://gcc.gnu.org/gcc-4.2/index.html
+                             GCC 4.2 Release Series
+
+   May 19, 2008
+
+   The [1]GNU project and the GCC developers are pleased to announce the
+   release of GCC 4.2.4.
+
+   This release is a bug-fix release, containing fixes for regressions in
+   GCC 4.2.3 relative to previous releases of GCC.
+
+Release History
+
+   GCC 4.2.4
+          May 19, 2008 ([2]changes)
+
+   GCC 4.2.3
+          February 1, 2008 ([3]changes)
+
+   GCC 4.2.2
+          October 7, 2007 ([4]changes)
+
+   GCC 4.2.1
+          July 18, 2007 ([5]changes)
+
+   GCC 4.2.0
+          May 13, 2007 ([6]changes)
+
+References and Acknowledgements
+
+   GCC used to stand for the GNU C Compiler, but since the compiler
+   supports several other languages aside from C, it now stands for the
+   GNU Compiler Collection.
+
+   A list of [7]successful builds is updated as new information becomes
+   available.
+
+   The GCC developers would like to thank the numerous people that have
+   contributed new features, improvements, bug fixes, and other changes as
+   well as test results to GCC. This [8]amazing group of volunteers is
+   what makes GCC successful.
+
+   For additional information about GCC please refer to the [9]GCC project
+   web site or contact the [10]GCC development mailing list.
+
+   To obtain GCC please use [11]our mirror sites or [12]our SVN server.
+
+
+    For questions related to the use of GCC, please consult these web
+    pages and the [13]GCC manuals. If that fails, the
+    [14]gcc-help at gcc.gnu.org mailing list might help. Comments on these
+    web pages and the development of GCC are welcome on our developer
+    list at [15]gcc at gcc.gnu.org. All of [16]our lists have public
+    archives.
+
+   Copyright (C) [17]Free Software Foundation, Inc. Verbatim copying and
+   distribution of this entire article is permitted in any medium,
+   provided this notice is preserved.
+
+   These pages are [18]maintained by the GCC team. Last modified
+   2014-06-28[19].
+
+References
+
+   1. http://www.gnu.org/
+   2. http://gcc.gnu.org/gcc-4.2/changes.html
+   3. http://gcc.gnu.org/gcc-4.2/changes.html
+   4. http://gcc.gnu.org/gcc-4.2/changes.html
+   5. http://gcc.gnu.org/gcc-4.2/changes.html
+   6. http://gcc.gnu.org/gcc-4.2/changes.html
+   7. http://gcc.gnu.org/gcc-4.2/buildstat.html
+   8. https://gcc.gnu.org/onlinedocs/gcc/Contributors.html
+   9. http://gcc.gnu.org/index.html
+  10. mailto:gcc at gcc.gnu.org
+  11. http://gcc.gnu.org/mirrors.html
+  12. http://gcc.gnu.org/svn.html
+  13. https://gcc.gnu.org/onlinedocs/
+  14. mailto:gcc-help at gcc.gnu.org
+  15. mailto:gcc at gcc.gnu.org
+  16. https://gcc.gnu.org/lists.html
+  17. http://www.fsf.org/
+  18. https://gcc.gnu.org/about.html
+  19. http://validator.w3.org/check/referer
+======================================================================
+http://gcc.gnu.org/gcc-4.2/changes.html
+                             GCC 4.2 Release Series
+                        Changes, New Features, and Fixes
+
+Caveats
+
+     * GCC no longer accepts the -fshared-data option. This option has had
+       no effect in any GCC 4 release; the targets to which the option
+       used to apply had been removed before GCC 4.0.
+
+General Optimizer Improvements
+
+     * New command-line options specify the possible relationships among
+       parameters and between parameters and global data. For example,
+       -fargument-noalias-anything specifies that arguments do not alias
+       any other storage.
+       Each language will automatically use whatever option is required by
+       the language standard. You should not need to use these options
+       yourself.
+
+New Languages and Language specific improvements
+
+     * [1]OpenMP is now supported for the C, C++ and Fortran compilers.
+     * New command-line options -fstrict-overflow and -Wstrict-overflow
+       have been added. -fstrict-overflow tells the compiler that it may
+       assume that the program follows the strict signed overflow
+       semantics permitted for the language: for C and C++ this means that
+       the compiler may assume that signed overflow does not occur. For
+       example, a loop like
+      for (i = 1; i > 0; i *= 2)
+
+       is presumably intended to continue looping until i overflows. With
+       -fstrict-overflow, the compiler may assume that signed overflow
+       will not occur, and transform this into an infinite loop.
+       -fstrict-overflow is turned on by default at -O2, and may be
+       disabled via -fno-strict-overflow. The -Wstrict-overflow option may
+       be used to warn about cases where the compiler assumes that signed
+       overflow will not occur. It takes five different levels:
+       -Wstrict-overflow=1 to 5. See the [2]documentation for details.
+       -Wstrict-overflow=1 is enabled by -Wall.
+     * The new command-line option -fno-toplevel-reorder directs GCC to
+       emit top-level functions, variables, and asm statements in the same
+       order that they appear in the input file. This is intended to
+       support existing code which relies on a particular ordering (for
+       example, code which uses top-level asm statements to switch
+       sections). For new code, it is generally better to use function and
+       variable attributes. The -fno-toplevel-reorder option may be used
+       for most cases which currently use -fno-unit-at-a-time. The
+       -fno-unit-at-a-time option will be removed in some future version
+       of GCC. If you know of a case which requires -fno-unit-at-a-time
+       which is not fixed by -fno-toplevel-reorder, please open a bug
+       report.
+
+  C family
+
+     * The pragma redefine_extname will now macro expand its tokens for
+       compatibility with SunPRO.
+     * In the next release of GCC, 4.3, -std=c99 or -std=gnu99 will direct
+       GCC to handle inline functions as specified in the C99 standard. In
+       preparation for this, GCC 4.2 will warn about any use of non-static
+       inline functions in gnu99 or c99 mode. This new warning may be
+       disabled with the new gnu_inline function attribute or the new
+       -fgnu89-inline command-line option. Also, GCC 4.2 and later will
+       define one of the preprocessor macros __GNUC_GNU_INLINE__ or
+       __GNUC_STDC_INLINE__ to indicate the semantics of inline functions
+       in the current compilation.
+     * A new command-line option -Waddress has been added to warn about
+       suspicious uses of memory addresses as, for example, using the
+       address of a function in a conditional expression, and comparisons
+       against the memory address of a string literal. This warning is
+       enabled by -Wall.
+
+  C++
+
+     * C++ visibility handling has been overhauled.
+       Restricted visiblity is propagated from classes to members, from
+       functions to local statics, and from templates and template
+       arguments to instantiations, unless the latter has explicitly
+       declared visibility.
+       The visibility attribute for a class must come between the
+       class-key and the name, not after the closing brace.
+       Attributes are now allowed for enums and elaborated-type-specifiers
+       that only declare a type.
+       Members of the anonymous namespace are now local to a particular
+       translation unit, along with any other declarations which use them,
+       though they are still treated as having external linkage for
+       language semantics.
+     * The (undocumented) extension which permitted templates with default
+       arguments to be bound to template template parameters with fewer
+       parameters has been removed. For example:
+        template <template <typename> class C>
+        void f(C<double>) {}
+
+        template <typename T, typename U = int>
+        struct S {};
+
+        template void f(S<double>);
+
+       is no longer accepted by G++. The reason this code is not accepted
+       is that S is a template with two parameters; therefore, it cannot
+       be bound to C which has only one parameter.
+     * The <?, >?, <?=, and >?= operators, deprecated in previous GCC
+       releases, have been removed.
+     * The command-line option -fconst-strings, deprecated in previous GCC
+       releases, has been removed.
+     * The configure variable enable-__cxa_atexit is now enabled by
+       default for more targets. Enabling this variable is necessary in
+       order for static destructors to be executed in the correct order,
+       but it depends upon the presence of a non-standard C library in the
+       target library in order to work. The variable is now enabled for
+       more targets which are known to have suitable C libraries.
+     * -Wextra will produce warnings for if statements with a semicolon as
+       the only body, to catch code like:
+         if (a);
+            return 1;
+         return 0;
+
+       To suppress the warning in valid cases, use { } instead.
+     * The C++ frontend now also produces strict aliasing warnings when
+       -fstrict-aliasing -Wstrict-aliasing is in effect.
+
+    Runtime Library (libstdc++)
+
+     * Added support for TR1 <random>, <complex>, and C compatibility
+       headers. In addition, a lock-free version of shared_ptr was
+       contributed as part of Phillip Jordan's Google Summer of Code
+       project on lock-free containers. ([3]Implementation status of TR1)
+     * In association with the Summer of Code work on lock-free
+       containers, the interface for atomic builtins was adjusted,
+       creating simpler alternatives for non-threaded code paths. Also,
+       usage was consolidated and all elements were moved from namespace
+       std to namespace__gnu_cxx. Affected interfaces are the functions
+       __exchange_and_add, __atomic_add, and the objects __mutex,
+       __recursive_mutex, and __scoped_lock.
+     * Support for versioning weak symbol names via namespace association
+       was added. However, as this changes the names of exported symbols,
+       this is turned off by default in the current ABI. Intrepid users
+       can enable this feature by using
+       --enable-symvers=gnu-versioned-namespace during configuration.
+     * Revised, simplified, and expanded policy-based associative
+       containers, including data types for tree and trie forms
+       (basic_tree, tree, trie), lists (list_update), and both
+       collision-chaining and probing hash-based containers
+       (basic_hash_table, cc_hash_table, gp_hash_table). More details per
+       the [4]documentation.
+     * The implementation of the debug mode was modified, whereby the
+       debug namespaces were nested inside of namespace std and namespace
+       __gnu_cxx in order to resolve some long standing corner cases
+       involving name lookup. Debug functionality from the policy-based
+       data structures was consolidated and enabled with the single macro,
+       _GLIBCXX_DEBUG. See PR 26142 for more information.
+     * Added extensions for type traits: __conditional_type,
+       __numeric_traits, __add_unsigned, __removed_unsigned, __enable_if.
+     * Added a typelist implementation for compile-time meta-programming.
+       Elements for typelist construction and operation can be found
+       within namespace __gnu_cxx::typelist.
+     * Added a new allocator, __gnu_cxx::throw_allocator, for testing
+       exception-safety.
+     * Enabled library-wide visibility control, allowing -fvisibility to
+       be used.
+     * Consolidated all nested namespaces and the conversion of
+       __gnu_internal implementation-private details to anonymous
+       namespaces whenever possible.
+     * Implemented LWG resolutions DR 431 and DR 538.
+
+  Fortran
+
+     * Support for allocatable components has been added (TR 15581 and
+       Fortran 2003).
+     * Support for the Fortran 2003 streaming IO extension has been added.
+     * The GNU Fortran compiler now uses 4-byte record markers by default
+       for unformatted files to be compatible with g77 and most other
+       compilers. The implementation allows for records greater than 2 GB
+       and is compatible with several other compilers. Older versions of
+       gfortran used 8-byte record markers by default (on most systems).
+       In order to change the length of the record markers, e.g. to read
+       unformatted files created by older gfortran versions, the
+       [5]-frecord-marker=8 option can be used.
+
+  Java (GCJ)
+
+     * A new command-line option -static-libgcj has been added for targets
+       that use a linker compatible with GNU Binutils. As its name
+       implies, this causes libgcj to be linked statically. In some cases
+       this causes the resulting executable to start faster and use less
+       memory than if the shared version of libgcj were used. However
+       caution should be used as it can also cause essential parts of the
+       library to be omitted. Some of these issues are discussed in:
+       [6]https://gcc.gnu.org/wiki/Statically_linking_libgcj
+     * fastjar is no longer bundled with GCC. To build libgcj, you will
+       need either InfoZIP (both zip and unzip) or an external jar
+       program. In the former case, the GCC build will install a jar shell
+       script that is based on InfoZIP and provides the same functionality
+       as fastjar.
+
+New Targets and Target Specific Improvements
+
+  IA-32/x86-64
+
+     * -mtune=generic can now be used to generate code running well on
+       common x86 chips. This includes AMD Athlon, AMD Opteron, Intel
+       Pentium-M, Intel Pentium 4 and Intel Core 2.
+     * -mtune=native and -march=native will produce code optimized for the
+       host architecture as detected using the cpuid instruction.
+     * Added a new command-line option -fstackrealign and and
+       __attribute__ ((force_align_arg_pointer)) to realign the stack at
+       runtime. This allows functions compiled with a vector-aligned stack
+       to be invoked from legacy objects that keep only word-alignment.
+
+  SPARC
+
+     * The default CPU setting has been changed from V7 to V9 in 32-bit
+       mode on Solaris 7 and above. This is already the case in 64-bit
+       mode. It can be overridden by specifying --with-cpu at configure
+       time.
+     * Back-end support of built-in functions for atomic memory access has
+       been implemented.
+     * Support for the Sun UltraSPARC T1 (Niagara) processor has been
+       added.
+
+  M32C
+
+     * Various bug fixes have made some functions (notably, functions
+       returning structures) incompatible with previous releases.
+       Recompiling all libraries is recommended. Note that code quality
+       has considerably improved since 4.1, making a recompile even more
+       beneficial.
+
+  MIPS
+
+     * Added support for the Broadcom SB-1A core.
+
+  IA-64
+
+     * Added support for IA-64 data and control speculation. By default
+       speculation is enabled only during second scheduler pass. A number
+       of machine flags was introduced to control the usage of speculation
+       for both scheduler passes.
+
+  HPPA
+
+     * Added Java language support (libffi and libjava) for 32-bit HP-UX
+       11 target.
+
+Obsolete Systems
+
+Documentation improvements
+
+  PDF Documentation
+
+     * A make pdf target has been added to the top-level makefile,
+       enabling automated production of PDF documentation files.
+       (Front-ends external to GCC should modify their Make-lang.in file
+       to add a lang.pdf: target.)
+
+Other significant improvements
+
+  Build system improvements
+
+     * All the components of the compiler are now bootstrapped by default.
+       This improves the resilience to bugs in the system compiler or
+       binary compatibility problems, as well as providing better testing
+       of GCC 4.2 itself. In addition, if you build the compiler from a
+       combined tree, the assembler, linker, etc. will also be
+       bootstrapped (i.e. built with themselves).
+       You can disable this behavior, and go back to the pre-GCC 4.2 set
+       up, by configuring GCC with --disable-bootstrap.
+     * The rules that configure follows to find target tools resemble more
+       closely the locations that the built compiler will search. In
+       addition, you can use the new configure option --with-target-tools
+       to specify where to find the target tools used during the build,
+       without affecting what the built compiler will use.
+       This can be especially useful when building packages of GCC. For
+       example, you may want to build GCC with GNU as or ld, even if the
+       resulting compiler to work with the native assembler and linker. To
+       do so, you can use --with-target-tools to point to the native
+       tools.
+
+  Incompatible changes to the build system
+
+     * Front-ends external to GCC should modify their Make-lang.in file to
+       replace double-colon rules (e.g. dvi::) with normal rules (like
+       lang.dvi:). Front-end makefile hooks do not use double-colon rules
+       anymore.
+     * Up to GCC 4.1, a popular way to specify the target tools used
+       during the build was to create directories named gas, binutils,
+       etc. in the build tree, and create links to the tools from there.
+       This does not work any more when the compiler is bootstrapped. The
+       new configure option --with-target-tools provides a better way to
+       achieve the same effect, and works for all native and cross
+       settings.
+
+
+    For questions related to the use of GCC, please consult these web
+    pages and the [7]GCC manuals. If that fails, the
+    [8]gcc-help at gcc.gnu.org mailing list might help. Comments on these
+    web pages and the development of GCC are welcome on our developer
+    list at [9]gcc at gcc.gnu.org. All of [10]our lists have public
+    archives.
+
+   Copyright (C) [11]Free Software Foundation, Inc. Verbatim copying and
+   distribution of this entire article is permitted in any medium,
+   provided this notice is preserved.
+
+   These pages are [12]maintained by the GCC team. Last modified
+   2014-06-28[13].
+
+References
+
+   1. http://gcc.gnu.org/projects/gomp/
+   2. https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html
+   3. https://gcc.gnu.org/onlinedocs/libstdc++/manual/bk01pt01ch01.html#manual.intro.status.standard.tr1
+   4. https://gcc.gnu.org/onlinedocs/libstdc++/ext/pb_ds/index.html
+   5. https://gcc.gnu.org/onlinedocs/gfortran/Runtime-Options.html
+   6. https://gcc.gnu.org/wiki/Statically_linking_libgcj
+   7. https://gcc.gnu.org/onlinedocs/
+   8. mailto:gcc-help at gcc.gnu.org
+   9. mailto:gcc at gcc.gnu.org
+  10. https://gcc.gnu.org/lists.html
+  11. http://www.fsf.org/
+  12. https://gcc.gnu.org/about.html
+  13. http://validator.w3.org/check/referer
+======================================================================
+http://gcc.gnu.org/gcc-4.1/index.html
+                             GCC 4.1 Release Series
+
+   February 13, 2007
+
+   The [1]GNU project and the GCC developers are pleased to announce the
+   release of GCC 4.1.2.
+
+   This release is a bug-fix release, containing fixes for regressions in
+   GCC 4.1.1 relative to previous releases of GCC.
+
+Release History
+
+   GCC 4.1.2
+          February 13, 2007 ([2]changes)
+
+   GCC 4.1.1
+          May 24, 2006 ([3]changes)
+
+   GCC 4.1.0
+          February 28, 2006 ([4]changes)
+
+References and Acknowledgements
+
+   GCC used to stand for the GNU C Compiler, but since the compiler
+   supports several other languages aside from C, it now stands for the
+   GNU Compiler Collection.
+
+   A list of [5]successful builds is updated as new information becomes
+   available.
+
+   The GCC developers would like to thank the numerous people that have
+   contributed new features, improvements, bug fixes, and other changes as
+   well as test results to GCC. This [6]amazing group of volunteers is
+   what makes GCC successful.
+
+   For additional information about GCC please refer to the [7]GCC project
+   web site or contact the [8]GCC development mailing list.
+
+   To obtain GCC please use [9]our mirror sites or [10]our SVN server.
+
+
+    For questions related to the use of GCC, please consult these web
+    pages and the [11]GCC manuals. If that fails, the
+    [12]gcc-help at gcc.gnu.org mailing list might help. Comments on these
+    web pages and the development of GCC are welcome on our developer
+    list at [13]gcc at gcc.gnu.org. All of [14]our lists have public
+    archives.
+
+   Copyright (C) [15]Free Software Foundation, Inc. Verbatim copying and
+   distribution of this entire article is permitted in any medium,
+   provided this notice is preserved.
+
+   These pages are [16]maintained by the GCC team. Last modified
+   2014-06-28[17].
+
+References
+
+   1. http://www.gnu.org/
+   2. http://gcc.gnu.org/gcc-4.1/changes.html#4.1.2
+   3. http://gcc.gnu.org/gcc-4.1/changes.html
+   4. http://gcc.gnu.org/gcc-4.1/changes.html
+   5. http://gcc.gnu.org/gcc-4.1/buildstat.html
+   6. https://gcc.gnu.org/onlinedocs/gcc/Contributors.html
+   7. http://gcc.gnu.org/index.html
+   8. mailto:gcc at gcc.gnu.org
+   9. http://gcc.gnu.org/mirrors.html
+  10. http://gcc.gnu.org/svn.html
+  11. https://gcc.gnu.org/onlinedocs/
+  12. mailto:gcc-help at gcc.gnu.org
+  13. mailto:gcc at gcc.gnu.org
+  14. https://gcc.gnu.org/lists.html
+  15. http://www.fsf.org/
+  16. https://gcc.gnu.org/about.html
+  17. http://validator.w3.org/check/referer
+======================================================================
+http://gcc.gnu.org/gcc-4.1/changes.html
+                             GCC 4.1 Release Series
+                        Changes, New Features, and Fixes
+
+   The latest release in the 4.1 release series is [1]GCC 4.1.2.
+
+Caveats
+
+General Optimizer Improvements
+
+     * GCC now has infrastructure for inter-procedural optimizations and
+       the following inter-procedural optimizations are implemented:
+          + Profile guided inlining. When doing profile feedback guided
+            optimization, GCC can now use the profile to make better
+            informed decisions on whether inlining of a function is
+            profitable or not. This means that GCC will no longer inline
+            functions at call sites that are not executed very often, and
+            that functions at hot call sites are more likely to be
+            inlined.
+            A new parameter min-inline-recursive-probability is also now
+            available to throttle recursive inlining of functions with
+            small average recursive depths.
+          + Discovery of pure and const functions, a form of side-effects
+            analysis. While older GCC releases could also discover such
+            special functions, the new IPA-based pass runs earlier so that
+            the results are available to more optimizers. The pass is also
+            simply more powerful than the old one.
+          + Analysis of references to static variables and type escape
+            analysis, also forms of side-effects analysis. The results of
+            these passes allow the compiler to be less conservative about
+            call-clobbered variables and references. This results in more
+            redundant loads being eliminated and in making static
+            variables candidates for register promotion.
+          + Improvement of RTL-based alias analysis. The results of type
+            escape analysis are fed to the RTL type-based alias analyzer,
+            allowing it to disambiguate more memory references.
+          + Interprocedural constant propagation and function versioning.
+            This pass looks for functions that are always called with the
+            same constant value for one or more of the function arguments,
+            and propagates those constants into those functions.
+          + GCC will now eliminate static variables whose usage was
+            optimized out.
+          + -fwhole-program --combine can now be used to make all
+            functions in program static allowing whole program
+            optimization. As an exception, the main function and all
+            functions marked with the new externally_visible attribute are
+            kept global so that programs can link with runtime libraries.
+     * GCC can now do a form of partial dead code elimination (PDCE) that
+       allows code motion of expressions to the paths where the result of
+       the expression is actually needed. This is not always a win, so the
+       pass has been limited to only consider profitable cases. Here is an
+       example:
+    int foo (int *, int *);
+    int
+    bar (int d)
+    {
+      int a, b, c;
+      b = d + 1;
+      c = d + 2;
+      a = b + c;
+      if (d)
+        {
+          foo (&b, &c);
+          a = b + c;
+        }
+      printf ("%d\n", a);
+    }
+
+       The a = b + c can be sunk to right before the printf. Normal code
+       sinking will not do this, it will sink the first one above into the
+       else-branch of the conditional jump, which still gives you two
+       copies of the code.
+     * GCC now has a value range propagation pass. This allows the
+       compiler to eliminate bounds checks and branches. The results of
+       the pass can also be used to accurately compute branch
+       probabilities.
+     * The pass to convert PHI nodes to straight-line code (a form of
+       if-conversion for GIMPLE) has been improved significantly. The two
+       most significant improvements are an improved algorithm to
+       determine the order in which the PHI nodes are considered, and an
+       improvement that allow the pass to consider if-conversions of basic
+       blocks with more than two predecessors.
+     * Alias analysis improvements. GCC can now differentiate between
+       different fields of structures in Tree-SSA's virtual operands form.
+       This lets stores/loads from non-overlapping structure fields not
+       conflict. A new algorithm to compute points-to sets was contributed
+       that can allows GCC to see now that p->a and p->b, where p is a
+       pointer to a structure, can never point to the same field.
+     * Various enhancements to auto-vectorization:
+          + Incrementally preserve SSA form when vectorizing.
+          + Incrementally preserve loop-closed form when vectorizing.
+          + Improvements to peeling for alignment: generate better code
+            when the misalignment of an access is known at compile time,
+            or when different accesses are known to have the same
+            misalignment, even if the misalignment amount itself is
+            unknown.
+          + Consider dependence distance in the vectorizer.
+          + Externalize generic parts of data reference analysis to make
+            this analysis available to other passes.
+          + Vectorization of conditional code.
+          + Reduction support.
+     * GCC can now partition functions in sections of hot and cold code.
+       This can significantly improve performance due to better
+       instruction cache locality. This feature works best together with
+       profile feedback driven optimization.
+     * A new pass to avoid saving of unneeded arguments to the stack in
+       vararg functions if the compiler can prove that they will not be
+       needed.
+     * Transition of basic block profiling to tree level implementation
+       has been completed. The new implementation should be considerably
+       more reliable (hopefully avoiding profile mismatch errors when
+       using -fprofile-use or -fbranch-probabilities) and can be used to
+       drive higher level optimizations, such as inlining.
+       The -ftree-based-profiling command-line option was removed and
+       -fprofile-use now implies disabling old RTL level loop optimizer
+       (-fno-loop-optimize). Speculative prefetching optimization
+       (originally enabled by -fspeculative-prefetching) was removed.
+
+New Languages and Language specific improvements
+
+  C and Objective-C
+
+     * The old Bison-based C and Objective-C parser has been replaced by a
+       new, faster hand-written recursive-descent parser.
+
+  Ada
+
+     * The build infrastructure for the Ada runtime library and tools has
+       been changed to be better integrated with the rest of the build
+       infrastructure of GCC. This should make doing cross builds of Ada a
+       bit easier.
+
+  C++
+
+     * ARM-style name-injection of friend declarations is no longer the
+       default. For example:
+          struct S {
+            friend void f();
+          };
+
+          void g() { f(); }
+       will not be accepted; instead a declaration of f will need to be
+       present outside of the scope of S. The new -ffriend-injection
+       option will enable the old behavior.
+     * The (undocumented) extension which permitted templates with default
+       arguments to be bound to template template parameters with fewer
+       parameters has been deprecated, and will be removed in the next
+       major release of G++. For example:
+       template <template <typename> class C>
+       void f(C<double>) {}
+
+       template <typename T, typename U = int>
+       struct S {};
+
+       template void f(S<double>);
+
+       makes use of the deprecated extension. The reason this code is not
+       valid ISO C++ is that S is a template with two parameters;
+       therefore, it cannot be bound to C which has only one parameter.
+
+    Runtime Library (libstdc++)
+
+     * Optimization work:
+          + A new implementation of std::search_n is provided, better
+            performing in case of random access iterators.
+          + Added further efficient specializations of istream functions,
+            i.e., character array and string extractors.
+          + Other smaller improvements throughout.
+     * Policy-based associative containers, designed for high-performance,
+       flexibility and semantic safety are delivered in ext/pb_assoc.
+     * A versatile string class, __gnu_cxx::__versa_string, providing
+       facilities conforming to the standard requirements for
+       basic_string, is delivered in <ext/vstring.h>. In particular:
+          + Two base classes are provided: the default one avoids
+            reference counting and is optimized for short strings; the
+            alternate one, still uses it while improving in a few low
+            level areas (e.g., alignment). See vstring_fwd.h for some
+            useful typedefs.
+          + Various algorithms have been rewritten (e.g., replace), the
+            code streamlined and simple optimizations added.
+          + Option 3 of DR 431 is implemented for both available bases,
+            thus improving the support for stateful allocators.
+     * As usual, many bugs have been fixed (e.g., libstdc++/13583,
+       libstdc++/23953) and LWG resolutions put into effect for the first
+       time (e.g., DR 280, DR 464, N1780 recommendations for DR 233, TR1
+       Issue 6.19). The implementation status of TR1 is now tracked in the
+       docs in tr1.html.
+
+  Objective-C++
+
+     * A new language front end for Objective-C++ has been added. This
+       language allows users to mix the object oriented features of
+       Objective-C with those of C++.
+
+  Java (GCJ)
+
+     * Core library (libgcj) updates based on GNU Classpath 0.15 - 0.19
+       features (plus some 0.20 bug-fixes)
+          + Networking
+               o The java.net.HttpURLConnection implementation no longer
+                 buffers the entire response body in memory. This means
+                 that response bodies larger than available memory can now
+                 be handled.
+          + (N)IO
+               o NIO FileChannel.map implementation, fast bulk put
+                 implementation for DirectByteBuffer (speeds up this
+                 method 10x).
+               o FileChannel.lock() and FileChannel.force() implemented.
+          + XML
+               o gnu.xml fix for nodes created outside a namespace
+                 context.
+               o Add support for output indenting and
+                 cdata-section-elements output instruction in
+                 xml.transform.
+               o xml.xpath corrections for cases where elements/attributes
+                 might have been created in non-namespace-aware mode.
+                 Corrections to handling of XSL variables and minor
+                 conformance updates.
+          + AWT
+               o GNU JAWT implementation, the AWT Native Interface, which
+                 allows direct access to native screen resources from
+                 within a Canvas's paint method. GNU Classpath Examples
+                 comes with a Demo, see libjava/classpath/examples/README.
+               o awt.datatransfer updated to 1.5 with support for
+                 FlavorEvents. The gtk+ awt peers now allow copy/paste of
+                 text, images, URIs/files and serialized objects with
+                 other applications and tracking clipboard change events
+                 with gtk+ 2.6 (for gtk+ 2.4 only text and serialized
+                 objects are supported). A GNU Classpath Examples
+                 datatransfer Demo was added to show the new
+                 functionality.
+               o Split gtk+ awt peers event handling in two threads and
+                 improve gdk lock handling (solves several awt lock ups).
+               o Speed up awt Image loading.
+               o Better gtk+ scrollbar peer implementation when using gtk+
+                 >= 2.6.
+               o Handle image loading errors correctly for gdkpixbuf and
+                 MediaTracker.
+               o Better handle GDK lock. Properly prefix gtkpeer native
+                 functions (cp_gtk).
+               o GdkGraphics2D has been updated to use Cairo 0.5.x or
+                 higher.
+               o BufferedImage and GtkImage rewrites. All image drawing
+                 operations should now work correctly (flipping requires
+                 gtk+ >= 2.6)
+               o Future Graphics2D, image and text work is documented at:
+                 [2]http://developer.classpath.org/mediation/ClasspathGrap
+                 hicsImagesText
+               o When gtk+ 2.6 or higher is installed the default log
+                 handler will produce stack traces whenever a WARNING,
+                 CRITICAL or ERROR message is produced.
+          + Free Swing
+               o The RepaintManager has been reworked for more efficient
+                 painting, especially for large GUIs.
+               o The layout manager OverlayLayout has been implemented,
+                 the BoxLayout has been rewritten to make use of the
+                 SizeRequirements utility class and caching for more
+                 efficient layout.
+               o Improved accessibility support.
+               o Significant progress has been made in the implementation
+                 of the javax.swing.plaf.metal package, with most UI
+                 delegates in a working state now. Please test this with
+                 your own applications and provide feedback that will help
+                 us to improve this package.
+               o The GUI demo (gnu.classpath.examples.swing.Demo) has been
+                 extended to highlight various features in our Free Swing
+                 implementation. And it includes a look and feel switcher
+                 for Metal (default), Ocean and GNU themes.
+               o The javax.swing.plaf.multi package is now implemented.
+               o Editing and several key actions for JTree and JTable were
+                 implemented.
+               o Lots of icons and look and feel improvements for Free
+                 Swing basic and metal themes were added. Try running the
+                 GNU Classpath Swing Demo in examples
+                 (gnu.classpath.examples.swing.Demo) with:
+                 -Dswing.defaultlaf=javax.swing.plaf.basic.BasicLookAndFee
+                 l or
+                 -Dswing.defaultlaf=javax.swing.plaf.metal.MetalLookAndFee
+                 l
+               o Start of styled text capabilites for java.swing.text.
+               o DefaultMutableTreeNode pre-order, post-order, depth-first
+                 and breadth-first traversal enumerations implemented.
+               o JInternalFrame colors and titlebar draw properly.
+               o JTree is working up to par (icons, selection and keyboard
+                 traversal).
+               o JMenus were made more compatible in visual and
+                 programmatic behavior.
+               o JTable changeSelection and multiple selections
+                 implemented.
+               o JButton and JToggleButton change states work properly
+                 now.
+               o JFileChooser fixes.
+               o revalidate() and repaint() fixes which make Free Swing
+                 much more responsive.
+               o MetalIconFactory implemented.
+               o Free Swing Top-Level Compatibility. JFrame, JDialog,
+                 JApplet, JInternalFrame, and JWindow are now 1.5
+                 compatible in the sense that you can call add() and
+                 setLayout() directly on them, which will have the same
+                 effect as calling getContentPane().add() and
+                 getContentPane().setLayout().
+               o The JTree interface has been completed. JTrees now
+                 recognizes mouse clicks and selections work.
+               o BoxLayout works properly now.
+               o Fixed GrayFilter to actually work.
+               o Metal SplitPane implemented.
+               o Lots of Free Swing text and editor stuff work now.
+          + Free RMI and Corba
+               o Andrew Watson, Vice President and Technical Director of
+                 the Object Management Group, has officially assigned us
+                 20 bit Vendor Minor Code Id: 0x47430 ("GC") that will
+                 mark remote classpath-specific system exceptions.
+                 Obtaining the VMCID means that GNU Classpath now is a
+                 recogniseable type of node in a highly interoperable
+                 CORBA world.
+               o GNU Classpath now includes the first working draft to
+                 support the RMI over IIOP protocol. The current
+                 implementation is capable of remote invocations,
+                 transferring various Serializables and Externalizables
+                 via RMI-IIOP protocol. It can flatten graphs and, at
+                 least for the simple cases, is interoperable with 1.5
+                 JDKs.
+               o org.omg.PortableInterceptor and related functionality in
+                 other packages is now implemented:
+                    # The sever and client interceptors work as required
+                      since 1.4.
+                    # The IOR interceptor works as needed for 1.5.
+               o The org.omg.DynamicAny package is completed and passes
+                 the prepared tests.
+               o The Portable Object Adapter should now support the output
+                 of the recent IDL to java compilers. These compilers now
+                 generate servants and not CORBA objects as before, making
+                 the output depend on the existing POA implementation.
+                 Completing POA means that such code can already be tried
+                 to run on Classpath. Our POA is tested for the following
+                 usager scenarios:
+                    # POA converts servant to the CORBA object.
+                    # Servant provides to the CORBA object.
+                    # POA activates new CORBA object with the given Object
+                      Id (byte array) that is later accessible for the
+                      servant.
+                    # During the first call, the ServantActivator provides
+                      servant for this and all subsequent calls on the
+                      current object.
+                    # During each call, the ServantLocator provides
+                      servant for this call only.
+                    # ServantLocator or ServantActivator forwards call to
+                      another server.
+                    # POA has a single servant, responsible for all
+                      objects.
+                    # POA has a default servant, but some objects are
+                      explicitly connected to they specific servants.
+                 The POA is verified using tests from the former
+                 cost.omg.org.
+               o The CORBA implementation is now a working prototype that
+                 should support features up to 1.3 inclusive. We invite
+                 groups writing CORBA dependent applications to try
+                 Classpath implementation, reporting any possible bugs.
+                 The CORBA prototype is interoperable with Sun's
+                 implementation v 1.4, transferring object references,
+                 primitive types, narrow and wide strings, arrays,
+                 structures, trees, abstract interfaces and value types
+                 (feature of CORBA 2.3) between these two platforms.
+                 Remote exceptions are transferred and handled correctly.
+                 The stringified object references (IORs) from various
+                 sources are parsed as required. The transient (for
+                 current session) and permanent (till jre restart)
+                 redirections work. Both Little and Big Endian encoded
+                 messages are accepted. The implementation is verified
+                 using tests from the former cost.omg.org. The current
+                 release includes working examples (see the examples
+                 directory), demonstrating the client-server
+                 communication, using either CORBA Request or IDL-based
+                 stub (usually generated by a IDL to java compiler). These
+                 examples also show how to use the Classpath CORBA naming
+                 service. The IDL to java compiler is not yet written, but
+                 as our library must be compatible, it naturally accepts
+                 the output of other idlj implementations.
+          + Misc
+               o Updated TimeZone data against Olson tzdata2005l.
+               o Make zip and jar packages UTF-8 clean.
+               o "native" code builds and compiles (warning free) on
+                 Darwin and Solaris.
+               o java.util.logging.FileHandler now rotates files.
+               o Start of a generic JDWP framework in gnu/classpath/jdwp.
+                 This is unfinished, but feedback (at classpath at gnu.org)
+                 from runtime hackers is greatly appreciated. Although
+                 most of the work is currently being done around gcj/gij
+                 we want this framework to be as VM neutral as possible.
+                 Early design is described in:
+                 [3]https://gcc.gnu.org/ml/java/2005-05/msg00260.html
+               o QT4 AWT peers, enable by giving configure
+                 --enable-qt-peer. Included, but not ready for production
+                 yet. They are explicitly disabled and not supported. But
+                 if you want to help with the development of these new
+                 features we are interested in feedback. You will have to
+                 explicitly enable them to try them out (and they will
+                 most likely contain bugs).
+               o Documentation fixes all over the place. See
+                 [4]http://developer.classpath.org/doc/
+
+New Targets and Target Specific Improvements
+
+  IA-32/x86-64
+
+     * The x86-64 medium model (that allows building applications whose
+       data segment exceeds 4GB) was redesigned to match latest ABI draft.
+       New implementation split large datastructures into separate segment
+       improving performance of accesses to small datastructures and also
+       allows linking of small model libraries into medium model programs
+       as long as the libraries are not accessing the large datastructures
+       directly. Medium model is also supported in position independent
+       code now.
+       The ABI change results in partial incompatibility among medium
+       model objects. Linking medium model libraries (or objects) compiled
+       with new compiler into medium model program compiled with older
+       will likely result in exceeding ranges of relocations.
+       Binutils 2.16.91 or newer are required for compiling medium model
+       now.
+
+  RS6000 (POWER/PowerPC)
+
+     * The AltiVec vector primitives in <altivec.h> are now implemented in
+       a way that puts a smaller burden on the preprocessor, instead
+       processing the "overloading" in the front ends. This should benefit
+       compilation speed on AltiVec vector code.
+     * AltiVec initializers now are generated more efficiently.
+     * The popcountb instruction available on POWER5 now is generated.
+     * The floating point round to integer instructions available on
+       POWER5+ now is generated.
+     * Floating point divides can be synthesized using the floating point
+       reciprocal estimate instructions.
+     * Double precision floating point constants are initialized as single
+       precision values if they can be represented exactly.
+
+  S/390, zSeries and System z9
+
+     * Support for the IBM System z9 109 processor has been added. When
+       using the -march=z9-109 option, the compiler will generate code
+       making use of instructions provided by the extended immediate
+       facility.
+     * Support for 128-bit IEEE floating point has been added. When using
+       the -mlong-double-128 option, the compiler will map the long double
+       data type to 128-bit IEEE floating point. Using this option
+       constitutes an ABI change, and requires glibc support.
+     * Various changes to improve performance of generated code have been
+       implemented, including:
+          + In functions that do not require a literal pool, register %r13
+            (which is traditionally reserved as literal pool pointer), can
+            now be freely used for other purposes by the compiler.
+          + More precise tracking of register use allows the compiler to
+            generate more efficient function prolog and epilog code in
+            certain cases.
+          + The SEARCH STRING, COMPARE LOGICAL STRING, and MOVE STRING
+            instructions are now used to implement C string functions.
+          + The MOVE CHARACTER instruction with single byte overlap is now
+            used to implement the memset function with non-zero fill byte.
+          + The LOAD ZERO instructions are now used where appropriate.
+          + The INSERT CHARACTERS UNDER MASK, STORE CHARACTERS UNDER MASK,
+            and INSERT IMMEDIATE instructions are now used more frequently
+            to optimize bitfield operations.
+          + The BRANCH ON COUNT instruction is now used more frequently.
+            In particular, the fact that a loop contains a subroutine call
+            no longer prevents the compiler from using this instruction.
+          + The compiler is now aware that all shift and rotate
+            instructions implicitly truncate the shift count to six bits.
+     * Back-end support for the following generic features has been
+       implemented:
+          + The full set of [5]built-in functions for atomic memory
+            access.
+          + The -fstack-protector feature.
+          + The optimization pass avoiding unnecessary stores of incoming
+            argument registers in functions with variable argument list.
+
+  SPARC
+
+     * The default code model in 64-bit mode has been changed from
+       Medium/Anywhere to Medium/Middle on Solaris.
+     * TLS support is disabled by default on Solaris prior to release 10.
+       It can be enabled on TLS-capable Solaris 9 versions (4/04 release
+       and later) by specifying --enable-tls at configure time.
+
+  MorphoSys
+
+     * Support has been added for this new architecture.
+
+Obsolete Systems
+
+Documentation improvements
+
+Other significant improvements
+
+     * GCC can now emit code for protecting applications from
+       stack-smashing attacks. The protection is realized by buffer
+       overflow detection and reordering of stack variables to avoid
+       pointer corruption.
+     * Some built-in functions have been fortified to protect them against
+       various buffer overflow (and format string) vulnerabilities.
+       Compared to the mudflap bounds checking feature, the safe builtins
+       have far smaller overhead. This means that programs built using
+       safe builtins should not experience any measurable slowdown.
+
+GCC 4.1.2
+
+   This is the [6]list of problem reports (PRs) from GCC's bug tracking
+   system that are known to be fixed in the 4.1.2 release. This list might
+   not be complete (that is, it is possible that some PRs that have been
+   fixed are not listed here).
+
+   When generating code for a shared library, GCC now recognizes that
+   global functions may be replaced when the program runs. Therefore, it
+   is now more conservative in deducing information from the bodies of
+   functions. For example, in this example:
+    void f() {}
+    void g() {
+     try { f(); }
+     catch (...) {
+       cout << "Exception";
+     }
+    }
+
+   G++ would previously have optimized away the catch clause, since it
+   would have concluded that f cannot throw exceptions. Because users may
+   replace f with another function in the main body of the program, this
+   optimization is unsafe, and is no longer performed. If you wish G++ to
+   continue to optimize as before, you must add a throw() clause to the
+   declaration of f to make clear that it does not throw exceptions.
+
+
+    For questions related to the use of GCC, please consult these web
+    pages and the [7]GCC manuals. If that fails, the
+    [8]gcc-help at gcc.gnu.org mailing list might help. Comments on these
+    web pages and the development of GCC are welcome on our developer
+    list at [9]gcc at gcc.gnu.org. All of [10]our lists have public
+    archives.
+
+   Copyright (C) [11]Free Software Foundation, Inc. Verbatim copying and
+   distribution of this entire article is permitted in any medium,
+   provided this notice is preserved.
+
+   These pages are [12]maintained by the GCC team. Last modified
+   2014-06-28[13].
+
+References
+
+   1. http://gcc.gnu.org/gcc-4.1/changes.html#4.1.2
+   2. http://developer.classpath.org/mediation/ClasspathGraphicsImagesText
+   3. https://gcc.gnu.org/ml/java/2005-05/msg00260.html
+   4. http://developer.classpath.org/doc/
+   5. https://gcc.gnu.org/onlinedocs/gcc-4.1.0/gcc/Atomic-Builtins.html
+   6. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.1.2
+   7. https://gcc.gnu.org/onlinedocs/
+   8. mailto:gcc-help at gcc.gnu.org
+   9. mailto:gcc at gcc.gnu.org
+  10. https://gcc.gnu.org/lists.html
+  11. http://www.fsf.org/
+  12. https://gcc.gnu.org/about.html
+  13. http://validator.w3.org/check/referer
+======================================================================
+http://gcc.gnu.org/gcc-4.0/index.html
+                             GCC 4.0 Release Series
+
+   January 31, 2007
+
+   The [1]GNU project and the GCC developers are pleased to announce the
+   release of GCC 4.0.4.
+
+   This release is a bug-fix release, containing fixes for regressions in
+   GCC 4.0.3 relative to previous releases of GCC.
+
+Release History
+
+   GCC 4.0.4
+          January 31, 2007 ([2]changes)
+
+   GCC 4.0.3
+          March 10, 2006 ([3]changes)
+
+   GCC 4.0.2
+          September 28, 2005 ([4]changes)
+
+   GCC 4.0.1
+          July 7, 2005 ([5]changes)
+
+   GCC 4.0.0
+          April 20, 2005 ([6]changes)
+
+References and Acknowledgements
+
+   GCC used to stand for the GNU C Compiler, but since the compiler
+   supports several other languages aside from C, it now stands for the
+   GNU Compiler Collection.
+
+   A list of [7]successful builds is updated as new information becomes
+   available.
+
+   The GCC developers would like to thank the numerous people that have
+   contributed new features, improvements, bug fixes, and other changes as
+   well as test results to GCC. This [8]amazing group of volunteers is
+   what makes GCC successful.
+
+   For additional information about GCC please refer to the [9]GCC project
+   web site or contact the [10]GCC development mailing list.
+
+   To obtain GCC please use [11]our mirror sites, or [12]our SVN server.
+
+
+    For questions related to the use of GCC, please consult these web
+    pages and the [13]GCC manuals. If that fails, the
+    [14]gcc-help at gcc.gnu.org mailing list might help. Comments on these
+    web pages and the development of GCC are welcome on our developer
+    list at [15]gcc at gcc.gnu.org. All of [16]our lists have public
+    archives.
+
+   Copyright (C) [17]Free Software Foundation, Inc. Verbatim copying and
+   distribution of this entire article is permitted in any medium,
+   provided this notice is preserved.
+
+   These pages are [18]maintained by the GCC team. Last modified
+   2014-06-28[19].
+
+References
+
+   1. http://www.gnu.org/
+   2. http://gcc.gnu.org/gcc-4.0/changes.html#4.0.4
+   3. http://gcc.gnu.org/gcc-4.0/changes.html#4.0.3
+   4. http://gcc.gnu.org/gcc-4.0/changes.html#4.0.2
+   5. http://gcc.gnu.org/gcc-4.0/changes.html#4.0.1
+   6. http://gcc.gnu.org/gcc-4.0/changes.html
+   7. http://gcc.gnu.org/gcc-4.0/buildstat.html
+   8. https://gcc.gnu.org/onlinedocs/gcc/Contributors.html
+   9. http://gcc.gnu.org/index.html
+  10. mailto:gcc at gcc.gnu.org
+  11. http://gcc.gnu.org/mirrors.html
+  12. http://gcc.gnu.org/svn.html
+  13. https://gcc.gnu.org/onlinedocs/
+  14. mailto:gcc-help at gcc.gnu.org
+  15. mailto:gcc at gcc.gnu.org
+  16. https://gcc.gnu.org/lists.html
+  17. http://www.fsf.org/
+  18. https://gcc.gnu.org/about.html
+  19. http://validator.w3.org/check/referer
+======================================================================
+http://gcc.gnu.org/gcc-4.0/changes.html
+                             GCC 4.0 Release Series
+                        Changes, New Features, and Fixes
+
+   The latest release in the 4.0 release series is [1]GCC 4.0.4.
+
+Caveats
+
+     * GCC now generates location lists by default when compiling with
+       debug info and optimization.
+          + GDB 6.0 and older crashes when it sees location lists. GDB 6.1
+            or later is needed to debug binaries containing location
+            lists.
+          + When you are trying to view a value of a variable in a part of
+            a function where it has no location (for example when the
+            variable is no longer used and thus its location was used for
+            something else) GDB will say that it is not available.
+       You can disable generating location lists by -fno-var-tracking.
+     * GCC no longer accepts the -fwritable-strings option. Use named
+       character arrays when you need a writable string.
+     * The options -freduce-all-givs and -fmove-all-movables have been
+       discontinued. They were used to circumvent a shortcoming in the
+       heuristics of the old loop optimization code with respect to common
+       Fortran constructs. The new (tree) loop optimizer works differently
+       and doesn't need those work-arounds.
+     * The graph-coloring register allocator, formerly enabled by the
+       option -fnew-ra, has been discontinued.
+     * -I- has been deprecated. -iquote is meant to replace the need for
+       this option.
+     * The MIPS -membedded-pic and -mrnames options have been removed.
+     * All MIPS targets now require the GNU assembler. In particular, IRIX
+       configurations can no longer use the MIPSpro assemblers, although
+       they do still support the MIPSpro linkers.
+     * The SPARC option -mflat has been removed.
+     * English-language diagnostic messages will now use Unicode quotation
+       marks in UTF-8 locales. (Non-English messages already used the
+       quotes appropriate for the language in previous releases.) If your
+       terminal does not support UTF-8 but you are using a UTF-8 locale
+       (such locales are the default on many GNU/Linux systems) then you
+       should set LC_CTYPE=C in the environment to disable that locale.
+       Programs that parse diagnostics and expect plain ASCII
+       English-language messages should set LC_ALL=C. See [2]Markus Kuhn's
+       explanation of Unicode quotation marks for more information.
+     * The specs file is no longer installed on most platforms. Most users
+       will be totally unaffected. However, if you are accustomed to
+       editing the specs file yourself, you will now have to use the
+       -dumpspecs option to generate the specs file, and then edit the
+       resulting file.
+
+General Optimizer Improvements
+
+     * The [3]tree ssa branch has been merged. This merge has brought in a
+       completely new optimization framework based on a higher level
+       intermediate representation than the existing RTL representation.
+       Numerous new code transformations based on the new framework are
+       available in GCC 4.0, including:
+          + Scalar replacement of aggregates
+          + Constant propagation
+          + Value range propagation
+          + Partial redundancy elimination
+          + Load and store motion
+          + Strength reduction
+          + Dead store elimination
+          + Dead and unreachable code elimination
+          + [4]Autovectorization
+          + Loop interchange
+          + Tail recursion by accumulation
+       Many of these passes outperform their counterparts from previous
+       GCC releases.
+     * [5]Swing Modulo Scheduling (SMS). An RTL level instruction
+       scheduling optimization intended for loops that perform heavy
+       computations.
+
+New Languages and Language specific improvements
+
+  C family
+
+     * The sentinel attribute has been added to GCC. This function
+       attribute allows GCC to warn when variadic functions such as execl
+       are not NULL terminated. See the GCC manual for a complete
+       description of its behavior.
+     * Given __attribute__((alias("target"))) it is now an error if target
+       is not a symbol, defined in the same translation unit. This also
+       applies to aliases created by #pragma weak alias=target. This is
+       because it's meaningless to define an alias to an undefined symbol.
+       On Solaris, the native assembler would have caught this error, but
+       GNU as does not.
+
+  C and Objective-C
+
+     * The -Wstrict-aliasing=2 option has been added. This warning catches
+       all unsafe cases, but it may also give a warning for some cases
+       that are safe.
+     * The cast-as-lvalue, conditional-expression-as-lvalue and
+       compound-expression-as-lvalue extensions, which were deprecated in
+       3.3.4 and 3.4, have been removed.
+     * The -fwritable-strings option, which was deprecated in 3.4, has
+       been removed.
+     * #pragma pack() semantics have been brought closer to those used by
+       other compilers. This also applies to C++.
+     * Taking the address of a variable with register storage is invalid
+       in C. GCC now issues an error instead of a warning.
+     * Arrays of incomplete element type are invalid in C. GCC now issues
+       an error for such arrays. Declarations such as extern struct s x[];
+       (where struct s has not been defined) can be moved after the
+       definition of struct s. Function parameters declared as arrays of
+       incomplete type can instead be declared as pointers.
+
+  C++
+
+     * When compiling without optimizations (-O0), the C++ frontend is
+       much faster than in any previous versions of GCC. Independent
+       testers have measured speed-ups up to 25% in real-world production
+       code, compared to the 3.4 family (which was already the fastest
+       version to date). Upgrading from older versions might show even
+       bigger improvements.
+     * ELF visibility attributes can now be applied to a class type, so
+       that it affects every member function of a class at once, without
+       having to specify each individually:
+class __attribute__ ((visibility("hidden"))) Foo
+{
+   int foo1();
+   void foo2();
+};
+       The syntax is deliberately similar to the __declspec() system used
+       by Microsoft Windows based compilers, allowing cross-platform
+       projects to easily reuse their existing macro system for denoting
+       exports and imports. By explicitly marking internal classes never
+       used outside a binary as hidden, one can completely avoid PLT
+       indirection overheads during their usage by the compiler. You can
+       find out more about the advantages of this at
+       [6]http://www.akkadia.org/drepper/dsohowto.pdf
+     * The -fvisibility-inlines-hidden option has been added which marks
+       all inlineable functions as having hidden ELF visibility, thus
+       removing their symbol and typeinfo from the exported symbol table
+       of the output ELF binary. Using this option can reduce the exported
+       symbol count of template-heavy code by up to 40% with no code
+       change at all, thus notably improving link and load times for the
+       binary as well as a reduction in size of up to 10%. Also, check the
+       new [7]-fvisibility option.
+     * The compiler now uses the library interface specified by the [8]C++
+       ABI for thread-safe initialization of function-scope static
+       variables. Most users should leave this alone, but embedded
+       programmers may want to disable this by specifying
+       -fno-threadsafe-statics for a small savings in code size.
+     * Taking the address of an explicit register variable is no longer
+       supported. Note that C++ allows taking the address of variables
+       with register storage so this will continue to compile with a
+       warning. For example, assuming that r0 is a machine register:
+register int foo asm ("r0");
+register int bar;
+&foo; // error, no longer accepted
+&bar; // OK, with a warning
+     * G++ has an undocumented extension to virtual function covariancy
+       rules that allowed the overrider to return a type that was
+       implicitly convertable to the overridden function's return type.
+       For instance a function returning void * could be overridden by a
+       function returning T *. This is now deprecated and will be removed
+       in a future release.
+     * The G++ minimum and maximum operators (<? and >?) and their
+       compound forms (<?=) and >?=) have been deprecated and will be
+       removed in a future version. Code using these operators should be
+       modified to use std::min and std::max instead.
+     * Declaration of nested classes of class templates as friends are
+       supported:
+template <typename T> struct A {
+  class B {};
+};
+class C {
+  template <typename T> friend class A<T>::B;
+};
+       This complements the feature member functions of class templates as
+       friends introduced in GCC 3.4.0.
+     * When declaring a friend class using an unqualified name, classes
+       outside the innermost non-class scope are not searched:
+class A;
+namespace N {
+  class B {
+    friend class A;   // Refer to N::A which has not been declared yet
+                      // because name outside namespace N are not searched
+    friend class ::A; // Refer to ::A
+  };
+}
+       Hiding the friend name until declaration is still not implemented.
+     * Friends of classes defined outside their namespace are correctly
+       handled:
+namespace N {
+  class A;
+}
+class N::A {
+  friend class B; // Refer to N::B in GCC 4.0.0
+                  // but ::B in earlier versions of GCC
+};
+
+    Runtime Library (libstdc++)
+
+     * Optimization work:
+          + Added efficient specializations of istream functions for char
+            and wchar_t.
+          + Further performance tuning of strings, in particular wrt
+            single-char append and getline.
+          + iter_swap - and therefore most of the mutating algorithms -
+            now makes an unqualified call to swap when the value_type of
+            the two iterators is the same.
+     * A large subset of the features in Technical Report 1 (TR1 for
+       short) is experimentally delivered (i.e., no guarantees about the
+       implementation are provided. In particular it is not promised that
+       the library will remain link-compatible when code using TR1 is
+       used):
+          + General utilities such as reference_wrapper and shared_ptr.
+          + Function objects, i.e., result_of, mem_fn, bind, function.
+          + Support for metaprogramming.
+          + New containers such as tuple, array, unordered_set,
+            unordered_map, unordered_multiset, unordered_multimap.
+     * As usual, many bugs have been fixed and LWG resolutions implemented
+       for the first time (e.g., DR 409).
+
+  Java
+
+     * In order to prevent naming conflicts with other implementations of
+       these tools, some GCJ binaries have been renamed:
+          + rmic is now grmic,
+          + rmiregistry is now grmiregistry, and
+          + jar is now fastjar.
+       In particular, these names were problematic for the jpackage.org
+       packaging conventions which install symlinks in /usr/bin that point
+       to the preferred versions of these tools.
+     * The -findirect-dispatch argument to the compiler now works and
+       generates code following a new "binary compatibility" ABI. Code
+       compiled this way follows the binary compatibility rules of the
+       Java Language Specification.
+     * libgcj now has support for using GCJ as a JIT, using the
+       gnu.gcj.jit family of system properties.
+     * libgcj can now find a shared library corresponding to the bytecode
+       representation of a class. See the documentation for the new
+       gcj-dbtool program, and the new gnu.gcj.precompiled.db.path system
+       property.
+     * There have been many improvements to the class library. Here are
+       some highlights:
+          + Much more of AWT and Swing exist.
+          + Many new packages and classes were added, including
+            java.util.regex, java.net.URI, javax.crypto,
+            javax.crypto.interfaces, javax.crypto.spec, javax.net,
+            javax.net.ssl, javax.security.auth,
+            javax.security.auth.callback, javax.security.auth.login,
+            javax.security.auth.x500, javax.security.sasl, org.ietf.jgss,
+            javax.imageio, javax.imageio.event, javax.imageio.spi,
+            javax.print, javax.print.attribute,
+            javax.print.attribute.standard, javax.print.event, and
+            javax.xml
+          + Updated SAX and DOM, and imported GNU JAXP
+
+  Fortran
+
+     * A new [9]Fortran front end has replaced the aging GNU Fortran 77
+       front end. The new front end supports Fortran 90 and Fortran 95. It
+       may not yet be as stable as the old Fortran front end.
+
+  Ada
+
+     * Ada (with tasking and Zero Cost Exceptions) is now available on
+       many more targets, including but not limited to: alpha-linux,
+       hppa-hpux, hppa-linux, powerpc-darwin, powerpc-linux, s390-linux,
+       s390x-linux, sparc-linux.
+     * Some of the new Ada 2005 features are now implemented like
+       Wide_Wide_Character and Ada.Containers.
+     * Many bugs have been fixed, tools and documentation improved.
+     * To compile Ada from the sources, install an older working Ada
+       compiler and then use --enable-languages=ada at configuration time,
+       since the Ada frontend is not currently activated by default. See
+       the [10]Installing GCC for details.
+
+New Targets and Target Specific Improvements
+
+  H8/300
+
+     * The frame layout has changed. In the new layout, the prologue of a
+       function first saves registers and then allocate space for locals,
+       resulting in an 1% improvement on code size.
+
+  IA-32/x86-64 (AMD64)
+
+     * The acos, asin, drem, exp10, exp2, expm1, fmod, ilogb, log10,
+       log1p, log2, logb and tan mathematical builtins (and their float
+       and long double variants) are now implemented as inline x87
+       intrinsics when using -ffast-math.
+     * The ceil, floor, nearbyint, rint and trunc mathematical builtins
+       (and their float and long double variants) are now implemented as
+       inline x87 intrinsics when using -ffast-math.
+     * The x87's fsincos instruction is now used automatically with
+       -ffast-math when calculating both the sin and cos of the same
+       argument.
+     * Instruction selection for multiplication and division by constants
+       has been improved.
+
+  IA-64
+
+     * Floating point division, integer division and sqrt are now inlined,
+       resulting in significant performance improvements on some codes.
+
+  MIPS
+
+     * Division by zero checks now use conditional traps if the target
+       processor supports them. This decreases code size by one word per
+       division operation. The old behavior (branch and break) can be
+       obtained either at configure time by passing --with-divide=breaks
+       to configure or at runtime by passing -mdivide-breaks to GCC.
+     * Support for MIPS64 paired-single instructions has been added. It is
+       enabled by -mpaired-single and can be accessed using both the
+       target-independent vector extensions and new MIPS-specific built-in
+       functions.
+     * Support for the MIPS-3D ASE has been added. It is enabled by
+       -mips3d and provides new MIPS-3D-specific built-in functions.
+     * The -mexplicit-relocs option now supports static n64 code (as is
+       used, for example, in 64-bit linux kernels). -mexplicit-relocs
+       should now be feature-complete and is enabled by default when GCC
+       is configured to use a compatible assembler.
+     * Support for the NEC VR4130 series has been added. This support
+       includes the use of VR-specific instructions and a new VR4130
+       scheduler. Full VR4130 support can be selected with -march=vr4130
+       while code for any ISA can be tuned for the VR4130 using
+       -mtune=vr4130. There is also a new -mvr4130-align option that
+       produces better schedules at the cost of increased code size.
+     * Support for the Broadcom SB-1 has been extended. There is now an
+       SB-1 scheduler as well as support for the SB-1-specific
+       paired-single instructions. Full SB-1 support can be selected with
+       -march=sb1 while code for any ISA can be optimized for the SB-1
+       using -mtune=sb1.
+     * The compiler can now work around errata in R4000, R4400, VR4120 and
+       VR4130 processors. These workarounds are enabled by -mfix-r4000,
+       -mfix-r4400, -mfix-vr4120 and -mfix-vr4130 respectively. The VR4120
+       and VR4130 workarounds need binutils 2.16 or above.
+     * IRIX shared libraries are now installed into the standard library
+       directories: o32 libraries go into lib/, n32 libraries go into
+       lib32/ and n64 libraries go into lib64/.
+     * The compiler supports a new -msym32 option. It can be used to
+       optimize n64 code in which all symbols are known to have 32-bit
+       values.
+
+  S/390 and zSeries
+
+     * New command-line options help to generate code intended to run in
+       an environment where stack space is restricted, e.g. Linux kernel
+       code:
+          + -mwarn-framesize and -mwarn-dynamicstack trigger compile-time
+            warnings for single functions that require large or dynamic
+            stack frames.
+          + -mstack-size and -mstack-guard generate code that checks for
+            stack overflow at run time.
+          + -mpacked-stack generates code that reduces the stack frame
+            size of many functions by reusing unneeded parts of the stack
+            bias area.
+     * The -msoft-float option now ensures that generated code never
+       accesses floating point registers.
+     * The s390x-ibm-tpf target now fully supports C++, including
+       exceptions and threads.
+     * Various changes to improve performance of the generated code have
+       been implemented, including:
+          + GCC now uses sibling calls where possible.
+          + Condition code handling has been optimized, allowing GCC to
+            omit redundant comparisons in certain cases.
+          + The cost function guiding many optimizations has been refined
+            to more accurately represent the z900 and z990 processors.
+          + The ADD LOGICAL WITH CARRY and SUBTRACT LOGICAL WITH BORROW
+            instructions are now used to avoid conditional branches in
+            certain cases.
+          + The back end now uses the LEGITIMIZE_RELOAD_ADDRESS feature to
+            optimize address arithmetic required to access large stack
+            frames.
+          + GCC now makes more efficient use of memory-to-memory type
+            instructions (MVC, CLC, ...).
+          + More precise tracking of special register use allows better
+            instruction scheduling, in particular of the function prologue
+            and epilogue sequences.
+          + The Java front end now generates inline code to implement
+            integer division, instead of calling library routines.
+
+  SPARC
+
+     * The options -mv8, -msparclite, -mcypress, -msupersparc, -mf930 and
+       -mf934 have been removed. They have been replaced with -mcpu=xxx.
+     * The internal model used to estimate the relative cost of each
+       instruction has been updated. It is expected to give better results
+       on recent UltraSPARC processors.
+     * Code generation for function prologues and epilogues has been
+       improved, resulting in better scheduling and allowing multiple exit
+       points in functions.
+     * Support for Sun's Visual Instruction Set (VIS) has been enhanced.
+       It is enabled by -mvis and provides new built-in functions for VIS
+       instructions on UltraSPARC processors.
+     * The option -mapp-regs has been turned on by default on Solaris too.
+
+  NetWare
+
+     * Novell NetWare (on ix86, no other hardware platform was ever really
+       supported by this OS) has been re-enabled and the ABI supported by
+       GCC has been brought into sync with that of MetroWerks CodeWarrior
+       (the ABI previously supported was that of some Unix systems, which
+       NetWare never tried to support).
+
+Obsolete Systems
+
+   Support for a number of older systems has been declared obsolete in GCC
+   4.0. Unless there is activity to revive them, the next release of GCC
+   will have their sources permanently removed.
+
+   All GCC ports for the following processor architectures have been
+   declared obsolete:
+     * Intel i860
+     * Ubicom IP2022
+     * National Semiconductor NS32K
+     * Texas Instruments TMS320C[34]x
+
+   Also, those for some individual systems have been obsoleted:
+     * SPARC family
+          + SPARClite-based systems (sparclite-*-coff, sparclite-*-elf,
+            sparc86x-*-elf)
+          + OpenBSD 32-bit (sparc-*-openbsd*)
+
+Documentation improvements
+
+Other significant improvements
+
+     * Location lists are now generated by default when compiling with
+       debug info and optimization. Location lists provide more accurate
+       debug info about locations of variables and they allow debugging
+       code compiled with -fomit-frame-pointer.
+     * The -fvisibility option has been added which allows the default ELF
+       visibility of all symbols to be set per compilation and the new
+       #pragma GCC visibility preprocessor command allows the setting of
+       default ELF visibility for a region of code. Using
+       -fvisibility=hidden especially in combination with the new
+       -fvisibility-inlines-hidden can yield substantial improvements in
+       output binary quality including avoiding PLT indirection overheads,
+       reduction of the exported symbol count by up to 60% (with resultant
+       improvements to link and load times), better scope for the
+       optimizer to improve code and up to a 20% reduction in binary size.
+       Using these options correctly yields a binary with a similar symbol
+       count to a Windows DLL.
+       Perhaps more importantly, this new feature finally allows (with
+       careful planning) complete avoidance of symbol clashes when
+       manually loading shared objects with RTLD_GLOBAL, thus finally
+       solving problems many projects such as python were forced to use
+       RTLD_LOCAL for (with its resulting issues for C++ correctness). You
+       can find more information about using these options at
+       [11]https://gcc.gnu.org/wiki/Visibility.
+     __________________________________________________________________
+
+GCC 4.0.1
+
+   This is the [12]list of problem reports (PRs) from GCC's bug tracking
+   system that are known to be fixed in the 4.0.1 release. This list might
+   not be complete (that is, it is possible that some PRs that have been
+   fixed are not listed here).
+
+GCC 4.0.2
+
+   This is the [13]list of problem reports (PRs) from GCC's bug tracking
+   system that are known to be fixed in the 4.0.2 release. This list might
+   not be complete (that is, it is possible that some PRs that have been
+   fixed are not listed here).
+
+   Unfortunately, due to a release engineering failure, this release has a
+   regression on Solaris that will affect some C++ programs. We suggest
+   that Solaris users apply a [14]patch that corrects the problem. Users
+   who do not wish to apply the patch should explicitly link C++ programs
+   with the -pthreads option, even if they do not use threads. This
+   problem has been corrected in the current 4.0 branch sources and will
+   not be present in GCC 4.0.3.
+
+GCC 4.0.3
+
+   Starting with this release, the function getcontext is recognized by
+   the compiler as having the same semantics as the setjmp function. In
+   particular, the compiler will ensure that all registers are dead before
+   calling such a function and will emit a warning about the variables
+   that may be clobbered after the second return from the function.
+
+GCC 4.0.4
+
+   This is the [15]list of problem reports (PRs) from GCC's bug tracking
+   system that are known to be fixed in the 4.0.4 release. This list might
+   not be complete (that is, it is possible that some PRs that have been
+   fixed are not listed here).
+
+   The 4.0.4 release is provided for those that require a high degree of
+   binary compatibility with previous 4.0.x releases. For most users, the
+   GCC team recommends that version 4.1.1 or later be used instead."
+
+
+    For questions related to the use of GCC, please consult these web
+    pages and the [16]GCC manuals. If that fails, the
+    [17]gcc-help at gcc.gnu.org mailing list might help. Comments on these
+    web pages and the development of GCC are welcome on our developer
+    list at [18]gcc at gcc.gnu.org. All of [19]our lists have public
+    archives.
+
+   Copyright (C) [20]Free Software Foundation, Inc. Verbatim copying and
+   distribution of this entire article is permitted in any medium,
+   provided this notice is preserved.
+
+   These pages are [21]maintained by the GCC team. Last modified
+   2014-06-28[22].
+
+References
+
+   1. http://gcc.gnu.org/gcc-4.0/changes.html#4.0.4
+   2. http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html
+   3. http://gcc.gnu.org/projects/tree-ssa/
+   4. http://gcc.gnu.org/projects/tree-ssa/vectorization.html
+   5. http://gcc.gnu.org/news/sms.html
+   6. http://www.akkadia.org/drepper/dsohowto.pdf
+   7. http://gcc.gnu.org/gcc-4.0/changes.html#visibility
+   8. http://mentorembedded.github.com/cxx-abi/
+   9. http://gcc.gnu.org/fortran/
+  10. https://gcc.gnu.org/install/
+  11. https://gcc.gnu.org/wiki/Visibility
+  12. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.0.1
+  13. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.0.2
+  14. https://gcc.gnu.org/ml/gcc-cvs/2005-09/msg00984.html
+  15. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.0.4
+  16. https://gcc.gnu.org/onlinedocs/
+  17. mailto:gcc-help at gcc.gnu.org
+  18. mailto:gcc at gcc.gnu.org
+  19. https://gcc.gnu.org/lists.html
+  20. http://www.fsf.org/
+  21. https://gcc.gnu.org/about.html
+  22. http://validator.w3.org/check/referer
+======================================================================
+http://gcc.gnu.org/gcc-3.4/index.html
+                             GCC 3.4 Release Series
+
+   May 26, 2006
+
+   The [1]GNU project and the GCC developers are pleased to announce the
+   release of GCC 3.4.6.
+
+   This release is a bug-fix release, containing fixes for regressions in
+   GCC 3.4.4 relative to previous releases of GCC. This is the last of the
+   3.4.x series.
+
+   The GCC 3.4 release series includes numerous [2]new features,
+   improvements, bug fixes, and other changes, thanks to an [3]amazing
+   group of volunteers.
+
+Release History
+
+   GCC 3.4.6
+          March 6, 2006 ([4]changes)
+
+   GCC 3.4.5
+          November 30, 2005 ([5]changes)
+
+   GCC 3.4.4
+          May 18, 2005 ([6]changes)
+
+   GCC 3.4.3
+          November 4, 2004 ([7]changes)
+
+   GCC 3.4.2
+          September 6, 2004 ([8]changes)
+
+   GCC 3.4.1
+          July 1, 2004 ([9]changes)
+
+   GCC 3.4.0
+          April 18, 2004 ([10]changes)
+
+References and Acknowledgements
+
+   GCC used to stand for the GNU C Compiler, but since the compiler
+   supports several other languages aside from C, it now stands for the
+   GNU Compiler Collection.
+
+   A list of [11]successful builds is updated as new information becomes
+   available.
+
+   The GCC developers would like to thank the numerous people that have
+   contributed new features, improvements, bug fixes, and other changes as
+   well as test results to GCC. This [12]amazing group of volunteers is
+   what makes GCC successful.
+
+   For additional information about GCC please refer to the [13]GCC
+   project web site or contact the [14]GCC development mailing list.
+
+   To obtain GCC please use [15]our mirror sites, or [16]our SVN server.
+
+
+    For questions related to the use of GCC, please consult these web
+    pages and the [17]GCC manuals. If that fails, the
+    [18]gcc-help at gcc.gnu.org mailing list might help. Comments on these
+    web pages and the development of GCC are welcome on our developer
+    list at [19]gcc at gcc.gnu.org. All of [20]our lists have public
+    archives.
+
+   Copyright (C) [21]Free Software Foundation, Inc. Verbatim copying and
+   distribution of this entire article is permitted in any medium,
+   provided this notice is preserved.
+
+   These pages are [22]maintained by the GCC team. Last modified
+   2014-06-28[23].
+
+References
+
+   1. http://www.gnu.org/
+   2. http://gcc.gnu.org/gcc-3.4/changes.html
+   3. https://gcc.gnu.org/onlinedocs/gcc/Contributors.html
+   4. http://gcc.gnu.org/gcc-3.4/changes.html#3.4.6
+   5. http://gcc.gnu.org/gcc-3.4/changes.html#3.4.5
+   6. http://gcc.gnu.org/gcc-3.4/changes.html#3.4.4
+   7. http://gcc.gnu.org/gcc-3.4/changes.html#3.4.3
+   8. http://gcc.gnu.org/gcc-3.4/changes.html#3.4.2
+   9. http://gcc.gnu.org/gcc-3.4/changes.html#3.4.1
+  10. http://gcc.gnu.org/gcc-3.4/changes.html
+  11. http://gcc.gnu.org/gcc-3.4/buildstat.html
+  12. https://gcc.gnu.org/onlinedocs/gcc/Contributors.html
+  13. http://gcc.gnu.org/index.html
+  14. mailto:gcc at gcc.gnu.org
+  15. http://gcc.gnu.org/mirrors.html
+  16. http://gcc.gnu.org/svn.html
+  17. https://gcc.gnu.org/onlinedocs/
+  18. mailto:gcc-help at gcc.gnu.org
+  19. mailto:gcc at gcc.gnu.org
+  20. https://gcc.gnu.org/lists.html
+  21. http://www.fsf.org/
+  22. https://gcc.gnu.org/about.html
+  23. http://validator.w3.org/check/referer
+======================================================================
+http://gcc.gnu.org/gcc-3.4/changes.html
+                             GCC 3.4 Release Series
+                        Changes, New Features, and Fixes
+
+   The final release in the 3.4 release series is [1]GCC 3.4.6. The series
+   is now closed.
+
+   GCC 3.4 has [2]many improvements in the C++ frontend. Before reporting
+   a bug, please make sure it's really GCC, and not your code, that is
+   broken.
+
+Caveats
+
+     * GNU Make is now required to build GCC.
+     * With -nostdinc the preprocessor used to ignore both standard
+       include paths and include paths contained in environment variables.
+       It was neither documented nor intended that environment variable
+       paths be ignored, so this has been corrected.
+     * GCC no longer accepts the options -fvolatile, -fvolatile-global and
+       -fvolatile-static. It is unlikely that they worked correctly in any
+       3.x release.
+     * GCC no longer ships <varargs.h>. Use <stdarg.h> instead.
+     * Support for all the systems [3]obsoleted in GCC 3.3 has been
+       removed from GCC 3.4. See below for a [4]list of systems which are
+       obsoleted in this release.
+     * GCC now requires an ISO C90 (ANSI C89) C compiler to build. K&R C
+       compilers will not work.
+     * The implementation of the [5]MIPS ABIs has changed. As a result,
+       the code generated for certain MIPS targets will not be binary
+       compatible with earlier releases.
+     * In previous releases, the MIPS port had a fake "hilo" register with
+       the user-visible name accum. This register has been removed.
+     * The implementation of the [6]SPARC ABIs has changed. As a result,
+       the code generated will not be binary compatible with earlier
+       releases in certain cases.
+     * The configure option --enable-threads=pthreads has been removed;
+       use --enable-threads=posix instead, which should have the same
+       effect.
+     * Code size estimates used by inlining heuristics for C, Objective-C,
+       C++ and Java have been redesigned significantly. As a result the
+       parameters of -finline-insns, --param max-inline-insns-single and
+       --param max-inline-insns-auto need to be reconsidered.
+     * --param max-inline-slope and --param min-inline-insns have been
+       removed; they are not needed for the new bottom-up inlining
+       heuristics.
+     * The new unit-at-a-time compilation scheme has several compatibility
+       issues:
+          + The order in which functions, variables, and top-level asm
+            statements are emitted may have changed. Code relying on some
+            particular ordering needs to be updated. The majority of such
+            top-level asm statements can be replaced by section
+            attributes.
+          + Unreferenced static variables and functions are removed. This
+            may result in undefined references when an asm statement
+            refers to the variable/function directly. In that case either
+            the variable/function shall be listed in asm statement operand
+            or in the case of top-level asm statements the attribute used
+            shall be used to force function/variable to be always output
+            and considered as a possibly used by unknown code.
+            For variables the attribute is accepted only by GCC 3.4 and
+            newer, while for earlier versions it is sufficient to use
+            unused to silence warnings about the variables not being
+            referenced. To keep code portable across different GCC
+            versions, you can use appropriate preprocessor conditionals.
+          + Static functions now can use non-standard passing conventions
+            that may break asm statements calling functions directly.
+            Again the attribute used shall be used to prevent this
+            behavior.
+       As a temporary workaround, -fno-unit-at-a-time can be used, but
+       this scheme may not be supported by future releases of GCC.
+     * GCC 3.4 automatically places zero-initialized variables in the .bss
+       section on some operating systems. Versions of GNU Emacs up to (and
+       including) 21.3 will not work correctly when using this
+       optimization; you can use -fno-zero-initialized-in-bss to disable
+       it.
+     * If GCC 3.4 is configured with --enable-threads=posix (the default
+       on most targets that support pthreads) then _REENTRANT will be
+       defined unconditionally by some libstdc++ headers. C++ code which
+       relies on that macro to detect whether multi-threaded code is being
+       compiled might change in meaning, possibly resulting in linker
+       errors for single-threaded programs. Affected users of [7]Boost
+       should compile single-threaded code with -DBOOST_DISABLE_THREADS.
+       See Bugzilla for [8]more information.
+
+General Optimizer Improvements
+
+     * Usability of the profile feedback and coverage testing has been
+       improved.
+          + Performance of profiled programs has been improved by faster
+            profile merging code.
+          + Better use of the profile feedback for optimization (loop
+            unrolling and loop peeling).
+          + File locking support allowing fork() calls and parallel runs
+            of profiled programs.
+          + Coverage file format has been redesigned.
+          + gcov coverage tool has been improved.
+          + make profiledbootstrap available to build a faster compiler.
+            Experiments made on i386 hardware showed an 11% speedup on -O0
+            and a 7.5% speedup on -O2 compilation of a [9]large C++
+            testcase.
+          + New value profiling pass enabled via -fprofile-values
+          + New value profile transformations pass enabled via -fvpt aims
+            to optimize some code sequences by exploiting knowledge about
+            value ranges or other properties of the operands. At the
+            moment a conversion of expensive divisions into cheaper
+            operations has been implemented.
+          + New -fprofile-generate and -fprofile-use command-line options
+            to simplify the use of profile feedback.
+     * A new unit-at-a-time compilation scheme for C, Objective-C, C++ and
+       Java which is enabled via -funit-at-a-time (and implied by -O2). In
+       this scheme a whole file is parsed first and optimized later. The
+       following basic inter-procedural optimizations are implemented:
+          + Removal of unreachable functions and variables
+          + Discovery of local functions (functions with static linkage
+            whose address is never taken)
+          + On i386, these local functions use register parameter passing
+            conventions.
+          + Reordering of functions in topological order of the call graph
+            to enable better propagation of optimizing hints (such as the
+            stack alignments needed by functions) in the back end.
+          + Call graph based out-of-order inlining heuristics which allows
+            to limit overall compilation unit growth (--param
+            inline-unit-growth).
+       Overall, the unit-at-a-time scheme produces a 1.3% improvement for
+       the SPECint2000 benchmark on the i386 architecture (AMD Athlon
+       CPU).
+     * More realistic code size estimates used by inlining for C,
+       Objective-C, C++ and Java. The growth of large functions can now be
+       limited via --param large-function-insns and --param
+       large-function-growth.
+     * A new cfg-level loop optimizer pass replaces the old loop unrolling
+       pass and adds two other loop transformations -- loop peeling and
+       loop unswitching -- and also uses the profile feedback to limit
+       code growth. (The three optimizations are enabled by
+       -funroll-loops, -fpeel-loops and -funswitch-loops flags,
+       respectively).
+       The old loop unroller still can be enabled by -fold-unroll-loops
+       and may produce better code in some cases, especially when the
+       webizer optimization pass is not run.
+     * A new web construction pass enabled via -fweb (and implied by -O3)
+       improves the quality of register allocation, CSE, first scheduling
+       pass and some other optimization passes by avoiding re-use of
+       pseudo registers with non-overlapping live ranges. The pass almost
+       always improves code quality but does make debugging difficult and
+       thus is not enabled by default by -O2
+       The pass is especially effective as cleanup after code duplication
+       passes, such as the loop unroller or the tracer.
+     * Experimental implementations of superblock or trace scheduling in
+       the second scheduling pass can be enabled via
+       -fsched2-use-superblocks and -fsched2-use-traces, respectively.
+
+New Languages and Language specific improvements
+
+  Ada
+
+     * The Ada front end has been updated to include numerous bug fixes
+       and enhancements. These include:
+          + Improved project file support
+          + Additional set of warnings about potential wrong code
+          + Improved error messages
+          + Improved code generation
+          + Improved cross reference information
+          + Improved inlining
+          + Better run-time check elimination
+          + Better error recovery
+          + More efficient implementation of unbounded strings
+          + Added features in GNAT.Sockets, GNAT.OS_Lib, GNAT.Debug_Pools,
+            ...
+          + New GNAT.xxxx packages (e.g. GNAT.Strings,
+            GNAT.Exception_Action)
+          + New pragmas
+          + New -gnatS switch replacing gnatpsta
+          + Implementation of new Ada features (in particular limited
+            with, limited aggregates)
+
+  C/Objective-C/C++
+
+     * Precompiled headers are now supported. Precompiled headers can
+       dramatically speed up compilation of some projects. There are some
+       known defects in the current precompiled header implementation that
+       will result in compiler crashes in relatively rare situations.
+       Therefore, precompiled headers should be considered a "technology
+       preview" in this release. Read the manual for details about how to
+       use precompiled headers.
+     * File handling in the preprocessor has been rewritten. GCC no longer
+       gets confused by symlinks and hardlinks, and now has a correct
+       implementation of #import and #pragma once. These two directives
+       have therefore been un-deprecated.
+     * The undocumented extension that allowed C programs to have a label
+       at the end of a compound statement, which has been deprecated since
+       GCC 3.0, has been removed.
+     * The cast-as-lvalue extension has been removed for C++ and
+       deprecated for C and Objective-C. In particular, code like this:
+        int i;
+        (char) i = 5;
+
+       or this:
+        char *p;
+        ((int *) p)++;
+
+       is no longer accepted for C++ and will not be accepted for C and
+       Objective-C in a future version.
+     * The conditional-expression-as-lvalue extension has been deprecated
+       for C and Objective-C. In particular, code like this:
+        int a, b, c;
+        (a ? b : c) = 2;
+
+       will not be accepted for C and Objective-C in a future version.
+     * The compound-expression-as-lvalue extension has been deprecated for
+       C and Objective-C. In particular, code like this:
+        int a, b;
+        (a, b) = 2;
+
+       will not be accepted for C and Objective-C in a future version. A
+       possible non-intrusive workaround is the following:
+        (*(a, &b)) = 2;
+
+     * Several [10]built-in functions such as __builtin_popcount for
+       counting bits, finding the highest and lowest bit in a word, and
+       parity have been added.
+     * The -fwritable-strings option has been deprecated and will be
+       removed.
+     * Many C math library functions are now recognized as built-ins and
+       optimized.
+     * The C, C++, and Objective-C compilers can now handle source files
+       written in any character encoding supported by the host C library.
+       The default input character set is taken from the current locale,
+       and may be overridden with the -finput-charset command line option.
+       In the future we will add support for inline encoding markers.
+
+  C++
+
+     * G++ is now much closer to full conformance to the ISO/ANSI C++
+       standard. This means, among other things, that a lot of invalid
+       constructs which used to be accepted in previous versions will now
+       be rejected. It is very likely that existing C++ code will need to
+       be fixed. This document lists some of the most common issues.
+     * A hand-written recursive-descent C++ parser has replaced the
+       YACC-derived C++ parser from previous GCC releases. The new parser
+       contains much improved infrastructure needed for better parsing of
+       C++ source codes, handling of extensions, and clean separation
+       (where possible) between proper semantics analysis and parsing. The
+       new parser fixes many bugs that were found in the old parser.
+     * You must now use the typename and template keywords to disambiguate
+       dependent names, as required by the C++ standard.
+        struct K {
+          typedef int mytype_t;
+        };
+
+        template <class T1> struct A {
+          template <class T2> struct B {
+              void callme(void);
+            };
+
+          template <int N> void bar(void)
+          {
+            // Use 'typename' to tell the parser that T1::mytype_t names
+            //  a type. This is needed because the name is dependent (in
+            //  this case, on template parameter T1).
+            typename T1::mytype_t x;
+            x = 0;
+          }
+        };
+
+        template <class T> void template_func(void)
+        {
+          // Use 'template' to prefix member templates within
+          //  dependent types (a has type A<T>, which depends on
+          //  the template parameter T).
+          A<T> a;
+          a.template bar<0>();
+
+          // Use 'template' to tell the parser that B is a nested
+          //  template class (dependent on template parameter T), and
+          //  'typename' because the whole A<T>::B<int> is
+          //  the name of a type (again, dependent).
+          typename A<T>::template B<int> b;
+          b.callme();
+        }
+
+        void non_template_func(void)
+        {
+          // Outside of any template class or function, no names can be
+          //  dependent, so the use of the keyword 'typename' and 'template'
+          //  is not needed (and actually forbidden).
+          A<K> a;
+          a.bar<0>();
+          A<K>::B<float> b;
+          b.callme();
+        }
+     * In a template definition, unqualified names will no longer find
+       members of a dependent base (as specified by [temp.dep]/3 in the
+       C++ standard). For example,
+        template <typename T> struct B {
+          int m;
+          int n;
+          int f ();
+          int g ();
+        };
+        int n;
+        int g ();
+        template <typename T> struct C : B<T> {
+          void h ()
+          {
+            m = 0; // error
+            f ();  // error
+            n = 0; // ::n is modified
+            g ();  // ::g is called
+          }
+        };
+       You must make the names dependent, e.g. by prefixing them with
+       this->. Here is the corrected definition of C<T>::h,
+        template <typename T> void C<T>::h ()
+        {
+          this->m = 0;
+          this->f ();
+          this->n = 0
+          this->g ();
+        }
+       As an alternative solution (unfortunately not backwards compatible
+       with GCC 3.3), you may use using declarations instead of this->:
+        template <typename T> struct C : B<T> {
+          using B<T>::m;
+          using B<T>::f;
+          using B<T>::n;
+          using B<T>::g;
+          void h ()
+          {
+            m = 0;
+            f ();
+            n = 0;
+            g ();
+          }
+        };
+     * In templates, all non-dependent names are now looked up and bound
+       at definition time (while parsing the code), instead of later when
+       the template is instantiated. For instance:
+        void foo(int);
+
+        template <int> struct A {
+          static void bar(void){
+            foo('a');
+          }
+        };
+
+        void foo(char);
+
+        int main()
+        {
+          A<0>::bar();    // Calls foo(int), used to call foo(char).
+        }
+
+     * In an explicit instantiation of a class template, you must use
+       class or struct before the template-id:
+        template <int N>
+        class A {};
+
+        template A<0>;         // error, not accepted anymore
+        template class A<0>;   // OK
+     * The "named return value" and "implicit typename" extensions have
+       been removed.
+     * Default arguments in function types have been deprecated and will
+       be removed.
+     * ARM-style name-injection of friend declarations has been deprecated
+       and will be removed. For example: struct S { friend void f(); };
+       void g() { f(); } will not be accepted by future versions of G++;
+       instead a declaration of "f" will need to be present outside of the
+       scope of "S".
+     * Covariant returns are implemented for all but varadic functions
+       that require an adjustment.
+     * When -pedantic is used, G++ now issues errors about spurious
+       semicolons. For example,
+        namespace N {}; // Invalid semicolon.
+        void f() {}; // Invalid semicolon.
+     * G++ no longer accepts attributes for a declarator after the
+       initializer associated with that declarator. For example,
+        X x(1) __attribute__((...));
+       is no longer accepted. Instead, use:
+        X x __attribute__((...)) (1);
+     * Inside the scope of a template class, the name of the class itself
+       can be treated as either a class or a template. So GCC used to
+       accept the class name as argument of type template, and template
+       template parameter. However this is not C++ standard compliant. Now
+       the name is not treated as a valid template template argument
+       unless you qualify the name by its scope. For example, the code
+       below no longer compiles.
+        template <template <class> class TT> class X {};
+        template <class T> class Y {
+          X<Y> x; // Invalid, Y is always a type template parameter.
+        };
+       The valid code for the above example is
+          X< ::Y> x; // Valid.
+       (Notice the space between < and : to prevent GCC to interpret this
+       as a digraph for [.)
+     * Friend declarations that refer to template specializations are
+       rejected if the template has not already been declared. For
+       example,
+        template <typename T>
+        class C {
+          friend void f<> (C&);
+        };
+       is rejected. You must first declare f as a template,
+        template <typename T>
+        void f(T);
+     * In case of friend declarations, every name used in the friend
+       declaration must be accessible at the point of that declaration.
+       Previous versions of G++ used to be less strict about this and
+       allowed friend declarations for private class members, for example.
+       See the ISO C++ Standard Committee's [11]defect report #209 for
+       details.
+     * Declaration of member functions of class templates as friends are
+       supported. For example,
+        template <typename T> struct A {
+          void f();
+        };
+        class C {
+          template <typename T> friend void A<T>::f();
+        };
+     * You must use template <> to introduce template specializations, as
+       required by the standard. For example,
+        template <typename T>
+        struct S;
+
+        struct S<int> { };
+       is rejected. You must write,
+        template <> struct S<int> {};
+     * G++ used to accept code like this,
+        struct S {
+          int h();
+          void f(int i = g());
+          int g(int i = h());
+        };
+       This behavior is not mandated by the standard. Now G++ issues an
+       error about this code. To avoid the error, you must move the
+       declaration of g before the declaration of f. The default arguments
+       for g must be visible at the point where it is called.
+     * The C++ ABI Section 3.3.3 specifications for the array construction
+       routines __cxa_vec_new2 and __cxa_vec_new3 were changed to return
+       NULL when the allocator argument returns NULL. These changes are
+       incorporated into the libstdc++ runtime library.
+     * Using a name introduced by a typedef in a friend declaration or in
+       an explicit instantiation is now rejected, as specified by the ISO
+       C++ standard.
+        class A;
+        typedef A B;
+        class C {
+          friend class B;      // error, no typedef name here
+          friend B;            // error, friend always needs class/struct/enum
+          friend class A;      // OK
+        };
+
+        template <int> class Q {};
+        typedef Q<0> R;
+        template class R;      // error, no typedef name here
+        template class Q<0>;   // OK
+     * When allocating an array with a new expression, GCC used to allow
+       parentheses around the type name. This is actually ill-formed and
+       it is now rejected:
+        int* a = new (int)[10];    // error, not accepted anymore
+        int* a = new int[10];      // OK
+     * When binding an rvalue of class type to a reference, the copy
+       constructor of the class must be accessible. For instance, consider
+       the following code:
+        class A
+        {
+        public:
+          A();
+
+        private:
+          A(const A&);   // private copy ctor
+        };
+
+        A makeA(void);
+        void foo(const A&);
+
+        void bar(void)
+        {
+          foo(A());       // error, copy ctor is not accessible
+          foo(makeA());   // error, copy ctor is not accessible
+
+          A a1;
+          foo(a1);        // OK, a1 is a lvalue
+        }
+       This might be surprising at first sight, especially since most
+       popular compilers do not correctly implement this rule ([12]further
+       details).
+     * When forming a pointer to member or a pointer to member function,
+       access checks for class visibility (public, protected, private) are
+       now performed using the qualifying scope of the name itself. This
+       is better explained with an example:
+        class A
+        {
+        public:
+          void pub_func();
+        protected:
+          void prot_func();
+        private:
+          void priv_func();
+        };
+
+        class B : public A
+        {
+        public:
+          void foo()
+          {
+            &A::pub_func;   // OK, pub_func is accessible through A
+            &A::prot_func;  // error, cannot access prot_func through A
+            &A::priv_func;  // error, cannot access priv_func through A
+
+            &B::pub_func;   // OK, pub_func is accessible through B
+            &B::prot_func;  // OK, can access prot_func through B (within B)
+            &B::priv_func;  // error, cannot access priv_func through B
+          }
+        };
+
+    Runtime Library (libstdc++)
+
+     * Optimization work:
+          + Streamlined streambuf, filebuf, separate synched with C
+            Standard I/O streambuf.
+          + All formatted I/O now uses cached locale information.
+          + STL optimizations (memory/speed for list, red-black trees as
+            used by sets and maps).
+          + More use of GCC builtins.
+          + String optimizations (avoid contention on
+            increment/decrement-and-test of the reference count in the
+            empty-string object, constructor from input_iterators
+            speedup).
+     * Static linkage size reductions.
+     * Large File Support (files larger than 2 GB on 32-bit systems).
+     * Wide character and variable encoding filebuf work (UTF-8, Unicode).
+     * Generic character traits.
+     * Also support wchar_t specializations on Mac OS 10.3.x, FreeBSD 5.x,
+       Solaris 2.7 and above, AIX 5.x, Irix 6.5.
+     * The allocator class is now standard-conformant, and two additional
+       extension allocators have been added, mt_alloc and
+       bitmap_allocator.
+     * PCH support: -include bits/stdc++.h (2x compile speedup).
+     * Rewrote __cxa_demangle with support for C++ style allocators.
+     * New debug modes for STL containers and iterators.
+     * Testsuite rewrite: five times as many tests, plus increasingly
+       sophisticated tests, including I/O, MT, multi-locale, wide and
+       narrow characters.
+     * Use current versions of GNU "autotools" for build/configuration.
+
+  Objective-C
+
+     * The Objective-C front end has been updated to include the numerous
+       bug fixes and enhancements previously available only in Apple's
+       version of GCC. These include:
+          + Structured exception (@try... @catch... @finally, @throw) and
+            synchronization (@synchronized) support. These are accessible
+            via the -fobjc-exceptions switch; as of this writing, they may
+            only be used in conjunction with -fnext-runtime on Mac OS X
+            10.3 and later. See [13]Options Controlling Objective-C
+            Dialect for more information.
+          + An overhaul of @encode logic. The C99 _Bool and C++ bool type
+            may now be encoded as 'B'. In addition, the back-end/codegen
+            dependencies have been removed.
+          + An overhaul of message dispatch construction, ensuring that
+            the various receiver types (and casts thereof) are handled
+            properly, and that correct diagnostics are issued.
+          + Support for "Zero-Link" (-fzero-link) and "Fix-and-Continue"
+            (-freplace-objc-classes) debugging modes, currently available
+            on Mac OS X 10.3 and later. See [14]Options Controlling
+            Objective-C Dialect for more information.
+          + Access to optimized runtime entry points (-fno-nil-receivers )
+            on the assumption that message receivers are never nil. This
+            is currently available on Mac OS X 10.3 and later. See
+            [15]Options Controlling Objective-C Dialect for more
+            information.
+
+  Java
+
+     * Compiling a .jar file will now cause non-.class entries to be
+       automatically compiled as resources.
+     * libgcj has been ported to Darwin.
+     * Jeff Sturm has adapted Jan Hubicka's call graph optimization code
+       to gcj.
+     * libgcj has a new gcjlib URL type; this lets URLClassLoader load
+       code from shared libraries.
+     * libgcj has been much more completely merged with [16]GNU Classpath.
+     * Class loading is now much more correct; in particular the caller's
+       class loader is now used when that is required.
+     * [17]Eclipse 2.x will run out of the box using gij.
+     * Parts of java.nio have been implemented. Direct and indirect
+       buffers work, as do fundamental file and socket operations.
+     * java.awt has been improved, though it is still not ready for
+       general use.
+     * The HTTP protocol handler now uses HTTP/1.1 and can handle the POST
+       method.
+     * The MinGW port has matured. Enhancements include socket timeout
+       support, thread interruption, improved Runtime.exec() handling and
+       support for accented characters in filenames.
+
+  Fortran
+
+     * Fortran improvements are listed in the [18]Fortran documentation.
+
+New Targets and Target Specific Improvements
+
+  Alpha
+
+     * Several [19]built-in functions have been added such as
+       __builtin_alpha_zap to allow utilizing the more obscure
+       instructions of the CPU.
+     * Parameter passing of complex arguments has changed to match the
+       [20]ABI. This change is incompatible with previous GCC versions,
+       but does fix compatibility with the Tru64 compiler and several
+       corner cases where GCC was incompatible with itself.
+
+  ARM
+
+     * Nicolas Pitre has contributed his hand-coded floating-point support
+       code for ARM. It is both significantly smaller and faster than the
+       existing C-based implementation, even when building applications
+       for Thumb. The arm-elf configuration has been converted to use the
+       new code.
+     * Support for the Intel's iWMMXt architecture, a second generation
+       XScale processor, has been added. Enabled at run time with the
+       -mcpu=iwmmxt command line switch.
+     * A new ARM target has been added: arm-wince-pe. This is similar to
+       the arm-pe target, but it defaults to using the APCS32 ABI.
+     * The existing ARM pipeline description has been converted to the use
+       the [21]DFA processor pipeline model. There is not much change in
+       code performance, but the description is now [22]easier to
+       understand.
+     * Support for the Cirrus EP9312 Maverick floating point co-processor
+       added. Enabled at run time with the -mcpu=ep9312 command line
+       switch. Note however that the multilibs to support this chip are
+       currently disabled in gcc/config/arm/t-arm-elf, so if you want to
+       enable their production you will have to uncomment the entries in
+       that file.
+
+  H8/300
+
+     * Support for long long has been added.
+     * Support for saveall attribute has been added.
+     * Pavel Pisa contributed hand-written 32-bit-by-32-bit division code
+       for H8/300H and H8S, which is much faster than the previous
+       implementation.
+     * A lot of small performance improvements.
+
+  IA-32/AMD64 (x86-64)
+
+     * Tuning for K8 (AMD Opteron/Athlon64) core is available via
+       -march=k8 and -mcpu=k8.
+     * Scalar SSE code generation carefully avoids reformatting penalties,
+       hidden dependencies and minimizes the number of uops generated on
+       both Intel and AMD CPUs.
+     * Vector MMX and SSE operands are now passed in registers to improve
+       performance and match the argument passing convention used by the
+       Intel C++ Compiler. As a result it is not possible to call
+       functions accepting vector arguments compiled by older GCC version.
+     * Conditional jump elimination is now more aggressive on modern CPUs.
+     * The Athlon ports has been converted to use the DFA processor
+       pipeline description.
+     * Optimization of indirect tail calls is now possible in a similar
+       fashion as direct sibcall optimization.
+     * Further small performance improvements.
+     * -m128bit-long-double is now less buggy.
+     * __float128 support in 64-bit compilation.
+     * Support for data structures exceeding 2GB in 64-bit mode.
+     * -mcpu has been renamed to -mtune.
+
+  IA-64
+
+     * Tuning code for the Itanium 2 processor has been added. The
+       generation of code tuned for Itanium 2 (option -mtune=itanium2) is
+       enabled by default now. To generate code tuned for Itanium 1 the
+       option -mtune=itanium1 should be used.
+     * [23]DFA processor pipeline descriptions for the IA-64 processors
+       have been added. This resulted in about 3% improvement on the
+       SPECInt2000 benchmark for Itanium 2.
+     * Instruction bundling for the IA-64 processors has been rewritten
+       using the DFA pipeline hazard recognizer. It resulted in about 60%
+       compiler speedup on the SPECInt2000 C programs.
+
+  M32R
+
+     * Support for the M32R/2 processor has been added by Renesas.
+     * Support for an M32R GNU/Linux target and PIC code generation has
+       been added by Renesas.
+
+  M68000
+
+     * Bernardo Innocenti (Develer S.r.l.) has contributed the
+       m68k-uclinux target, based on former work done by Paul Dale
+       (SnapGear Inc.). Code generation for the ColdFire processors family
+       has been enhanced and extended to support the MCF 53xx and MCF 54xx
+       cores, integrating former work done by Peter Barada (Motorola).
+
+  MIPS
+
+    Processor-specific changes
+
+     * Support for the RM7000 and RM9000 processors has been added. It can
+       be selected using the -march compiler option and should work with
+       any MIPS I (mips-*) or MIPS III (mips64-*) configuration.
+     * Support for revision 2 of the MIPS32 ISA has been added. It can be
+       selected with the command-line option -march=mips32r2.
+     * There is a new option, -mfix-sb1, to work around certain SB-1
+       errata.
+
+    Configuration
+
+     * It is possible to customize GCC using the following configure-time
+       options:
+          + --with-arch, which specifies the default value of the -march
+            option.
+          + --with-tune, which specifies the default value of the -mtune
+            option.
+          + --with-abi, which specifies the default ABI.
+          + --with-float=soft, which tells GCC to use software floating
+            point by default.
+          + --with-float=hard, which tells GCC to use hardware floating
+            point by default.
+     * A 64-bit GNU/Linux port has been added. The associated
+       configurations are mips64-linux-gnu and mips64el-linux-gnu.
+     * The 32-bit GNU/Linux port now supports Java.
+     * The IRIX 6 configuration now supports the o32 ABI and will build
+       o32 multilibs by default. This support is compatible with both
+       binutils and the SGI tools, but note that several features,
+       including debugging information and DWARF2 exception handling, are
+       only available when using the GNU assembler. Use of the GNU
+       assembler and linker (version 2.15 or above) is strongly
+       recommended.
+     * The IRIX 6 configuration now supports 128-bit long doubles.
+     * There are two new RTEMS-specific configurations, mips-rtems and
+       mipsel-rtems.
+     * There are two new *-elf configurations, mipsisa32r2-elf and
+       mipsisa32r2el-elf.
+
+    General
+
+     * Several [24]ABI bugs have been fixed. Unfortunately, these changes
+       will break binary compatibility with earlier releases.
+     * GCC can now use explicit relocation operators when generating
+       -mabicalls code. This behavior is controlled by -mexplicit-relocs
+       and can have several performance benefits. For example:
+          + It allows for more optimization of GOT accesses, including
+            better scheduling and redundancy elimination.
+          + It allows sibling calls to be implemented as jumps.
+          + n32 and n64 leaf functions can use a call-clobbered global
+            pointer instead of $28.
+          + The code to set up $gp can be removed from functions that
+            don't need it.
+     * A new option, -mxgot, allows the GOT to be bigger than 64k. This
+       option is equivalent to the assembler's -xgot option and should be
+       used instead of -Wa,-xgot.
+     * Frame pointer elimination is now supported when generating 64-bit
+       MIPS16 code.
+     * Inline block moves have been optimized to take more account of
+       alignment information.
+     * Many internal changes have been made to the MIPS port, mostly aimed
+       at reducing the reliance on assembler macros.
+
+  PowerPC
+
+     * GCC 3.4 releases have a number of fixes for PowerPC and PowerPC64
+       [25]ABI incompatibilities regarding the way parameters are passed
+       during functions calls. These changes may result in incompatibility
+       between code compiled with GCC 3.3 and GCC 3.4.
+
+    PowerPC Darwin
+
+     * Support for shared/dylib gcc libraries has been added. It is
+       enabled by default on powerpc-apple-darwin7.0.0 and up.
+     * Libgcj is enabled by default. On systems older than
+       powerpc-apple-darwin7.0.0 you need to install dlcompat.
+     * 128-bit IBM extended precision format support added for long
+       double.
+
+    PowerPC64 GNU/Linux
+
+     * By default, PowerPC64 GNU/Linux now uses natural alignment of
+       structure elements. The old four byte alignment for double, with
+       special rules for a struct starting with a double, can be chosen
+       with -malign-power. This change may result in incompatibility
+       between code compiled with GCC 3.3 and GCC 3.4.
+     * -mabi=altivec is now the default rather than -mabi=no-altivec.
+     * 128-bit IBM extended precision format support added for long
+       double.
+
+  S/390 and zSeries
+
+     * New command-line options allow to specify the intended execution
+       environment for generated code:
+          + -mesa/-mzarch allows to specify whether to generate code
+            running in ESA/390 mode or in z/Architecture mode (this is
+            applicable to 31-bit code only).
+          + -march allows to specify a minimum processor architecture
+            level (g5, g6, z900, or z990).
+          + -mtune allows to specify which processor to tune for.
+     * It is possible to customize GCC using the following configure-time
+       options:
+          + --with-mode, which specifies whether to default to assuming
+            ESA/390 or z/Architecture mode.
+          + --with-arch, which specifies the default value of the -march
+            option.
+          + --with-tune, which specifies the default value of the -mtune
+            option.
+     * Support for the z990 processor has been added, and can be selected
+       using -march=z990 or -mtune=z990. This includes instruction
+       scheduling tuned for the superscalar instruction pipeline of the
+       z990 processor as well as support for all new instructions provided
+       by the long-displacement facility.
+     * Support to generate 31-bit code optimized for zSeries processors
+       (running in ESA/390 or in z/Architecture mode) has been added. This
+       can be selected using -march=z900 and -mzarch respectively.
+     * Instruction scheduling for the z900 and z990 processors now uses
+       the DFA pipeline hazard recognizer.
+     * GCC no longer generates code to maintain a stack backchain,
+       previously used to generate stack backtraces for debugging
+       purposes. As replacement that does not incur runtime overhead,
+       DWARF-2 call frame information is provided by GCC; this is
+       supported by GDB 6.1. The old behavior can be restored using the
+       -mbackchain option.
+     * The stack frame size of functions may now exceed 2 GB in 64-bit
+       code.
+     * A port for the 64-bit IBM TPF operating system has been added; the
+       configuration is s390x-ibm-tpf. This configuration is supported as
+       cross-compilation target only.
+     * Various changes to improve the generated code have been
+       implemented, including:
+          + GCC now uses the MULTIPLY AND ADD and MULTIPLY AND SUBTRACT
+            instructions to significantly speed up many floating-point
+            applications.
+          + GCC now uses the ADD LOGICAL WITH CARRY and SUBTRACT LOGICAL
+            WITH BORROW instructions to speed up long long arithmetic.
+          + GCC now uses the SEARCH STRING instruction to implement
+            strlen().
+          + In many cases, function call overhead for 31-bit code has been
+            reduced by placing the literal pool after the function code
+            instead of after the function prolog.
+          + Register 14 is no longer reserved in 64-bit code.
+          + Handling of global register variables has been improved.
+
+  SPARC
+
+     * The option -mflat is deprecated.
+     * Support for large (> 2GB) frames has been added to the 64-bit port.
+     * Several [26]ABI bugs have been fixed. Unfortunately, these changes
+       will break binary compatibility with earlier releases.
+     * The default debugging format has been switched from STABS to
+       DWARF-2 for 32-bit code on Solaris 7 and later. DWARF-2 is already
+       the default debugging format for 64-bit code on Solaris.
+
+  SuperH
+
+     * Support for the SH2E processor has been added. Enabled at run time
+       with the -m2e command line switch, or at configure time by
+       specifying sh2e as the machine part of the target triple.
+
+  V850
+
+     * Support for the Mitsubishi V850E1 processor has been added. This is
+       a variant of the V850E processor with some additional debugging
+       instructions.
+
+  Xtensa
+
+     * Several ABI bugs have been fixed. Unfortunately, these changes
+       break binary compatibility with earlier releases.
+          + For big-endian processors, the padding of aggregate return
+            values larger than a word has changed. If the size of an
+            aggregate return value is not a multiple of 32 bits, previous
+            versions of GCC inserted padding in the most-significant bytes
+            of the first return value register. Aggregates larger than a
+            word are now padded in the least-significant bytes of the last
+            return value register used. Aggregates smaller than a word are
+            still padded in the most-significant bytes. The return value
+            padding has not changed for little-endian processors.
+          + Function arguments with 16-byte alignment are now properly
+            aligned.
+          + The implementation of the va_list type has changed. A va_list
+            value created by va_start from a previous release cannot be
+            used with va_arg from this release, or vice versa.
+     * More processor configuration options for Xtensa processors are
+       supported:
+          + the ABS instruction is now optional;
+          + the ADDX* and SUBX* instructions are now optional;
+          + an experimental CONST16 instruction can be used to synthesize
+            constants instead of loading them from constant pools.
+       These and other Xtensa processor configuration options can no
+       longer be enabled or disabled by command-line options; the
+       processor configuration must be specified by the xtensa-config.h
+       header file when building GCC. Additionally, the
+       -mno-serialize-volatile option is no longer supported.
+
+Obsolete Systems
+
+   Support for a number of older systems has been declared obsolete in GCC
+   3.4. Unless there is activity to revive them, the next release of GCC
+   will have their sources permanently removed.
+
+   All configurations of the following processor architectures have been
+   declared obsolete:
+     * Mitsubishi D30V, d30v-*
+     * AT&T DSP1600 and DSP1610, dsp16xx-*
+     * Intel 80960, i960
+
+   Also, some individual systems have been obsoleted:
+     * ARM Family
+          + Support for generating code for operation in APCS/26 mode
+            (-mapcs-26).
+     * IBM ESA/390
+          + "Bigfoot" port, i370-*. (The other port, s390-*, is actively
+            maintained and supported.)
+     * Intel 386 family
+          + MOSS, i?86-moss-msdos and i?86-*-moss*
+          + NCR 3000 running System V r.4, i?86-ncr-sysv4*
+          + FreeBSD with a.out object format, i?86-*-freebsd*aout* and
+            i?86-*-freebsd2*
+          + GNU/Linux with a.out object format, i?86-linux*aout*
+          + GNU/Linux with libc5, a.k.a. glibc1, i?86-linux*libc1*
+          + Interix versions before Interix 3, i?86-*-interix
+          + Mach microkernel, i?86-mach*
+          + SCO UnixWare with UDK, i?86-*-udk*
+          + Generic System V releases 1, 2, and 3, i?86-*-sysv[123]*
+          + VSTa microkernel, i386-*-vsta
+     * Motorola M68000 family
+          + HPUX, m68k-hp-hpux* and m68000-hp-hpux*
+          + NetBSD with a.out object format (before NetBSD 1.4),
+            m68k-*-*-netbsd* except m68k-*-*-netbsdelf*
+          + Generic System V r.4, m68k-*-sysv4*
+     * VAX
+          + Generic VAX, vax-*-* (This is generic VAX only; we have not
+            obsoleted any VAX triples for specific operating systems.)
+
+Documentation improvements
+
+Other significant improvements
+
+     * The build system has undergone several significant cleanups.
+       Subdirectories will only be configured if they are being built, and
+       all subdirectory configures are run from the make command. The top
+       level has been autoconfiscated.
+     * Building GCC no longer writes to its source directory. This should
+       help those wishing to share a read-only source directory over NFS
+       or build from a CD. The exceptions to this feature are if you
+       configure with either --enable-maintainer-mode or
+       --enable-generated-files-in-srcdir.
+     * The -W warning option has been renamed to -Wextra, which is more
+       easily understood. The older spelling will be retained for
+       backwards compatibility.
+     * Substantial improvements in compile time have been made,
+       particularly for non-optimizing compilations.
+     __________________________________________________________________
+
+GCC 3.4.0
+
+  Bug Fixes
+
+   A vast number of bugs have been fixed in 3.4.0, too many to publish a
+   complete list here. [27]Follow this link to query the Bugzilla database
+   for the list of over 900 bugs fixed in 3.4.0. This is the list of all
+   bugs marked as resolved and fixed in 3.4.0 that are not flagged as 3.4
+   regressions.
+     __________________________________________________________________
+
+GCC 3.4.1
+
+  Bug Fixes
+
+   This section lists the problem reports (PRs) from GCC's bug tracking
+   system that are known to be fixed in the 3.4.1 release. This list might
+   not be complete (that is, it is possible that some PRs that have been
+   fixed are not listed here).
+
+    Bootstrap failures
+
+     * [28]10129 Ada bootstrap fails on PPC-Darwin - invalid assembler
+       emitted - PIC related
+     * [29]14576 [ARM] ICE in libiberty when building gcc-3.4 for arm-elf
+     * [30]14760 A bug in configure.in prevents using both
+       --program-suffix and --program-prefix
+     * [31]14671 [hppa64] bootstrap fails: ICE in
+       save_call_clobbered_regs, in caller_save.c
+     * [32]15093 [alpha][Java] make bootstrap fails to configure libffi on
+       Alpha
+     * [33]15178 Solaris 9/x86 fails linking after stage 3
+
+    Multi-platform internal compiler errors (ICEs)
+
+     * [34]12753 (preprocessor) Memory corruption in preprocessor on bad
+       input
+     * [35]13985 ICE in gcc.c-torture/compile/930621-1.c
+     * [36]14810 (c++) tree check failures with invalid code involving
+       templates
+     * [37]14883 (c++) ICE on invalid code, in cp_parser_lookup_name, in
+       cp/parser.c
+     * [38]15044 (c++) ICE on syntax error, template header
+     * [39]15057 (c++) Compiling of conditional value throw constructs
+       cause a segmentation violation
+     * [40]15064 (c++) typeid of template parameter gives ICE
+     * [41]15142 (c++) ICE when passing a string where a char* is expected
+       in a throw statement
+     * [42]15159 ICE in rtl_verify_flow_info_1
+     * [43]15165 (c++) ICE in instantiate_template
+     * [44]15193 Unary minus using pointer to V4SF vector causes
+       -fforce-mem to exhaust all memory
+     * [45]15209 (c++) Runs out of memory with packed structs
+     * [46]15227 (c++) Trouble with invalid function definition
+     * [47]15285 (c++) instantiate_type ICE when forming pointer to
+       template function
+     * [48]15299 (c++) ICE in resolve_overloaded_unification
+     * [49]15329 (c++) ICE on constructor of member template
+     * [50]15550 ICE in extract_insn, in recog.c
+     * [51]15554 (c++) ICE in tsubst_copy, in cp/pt.c
+     * [52]15640 (c++) ICE on invalid code in arg_assoc, in
+       cp/name-lookup.c
+     * [53]15666 [unit-at-a-time] Gcc abort on valid code
+     * [54]15696 (c++) ICE with bad pointer-to-member code
+     * [55]15701 (c++) ICE with friends and template template parameter
+     * [56]15761 ICE in do_SUBST, in combine.c
+     * [57]15829 (c++) ICE on Botan-1.3.13 due to -funroll-loops
+
+    Ada
+
+     * [58]14538 All RTEMS targets broken for gnat
+
+    C front end
+
+     * [59]12391 missing warning about assigning to an incomplete type
+     * [60]14649 atan(1.0) should not be a constant expression
+     * [61]15004 [unit-at-a-time] no warning for unused paramater in
+       static function
+     * [62]15749 --pedantic-errors behaves differently from --pedantic
+       with C-compiler on GNU/Linux
+
+    C++ compiler and library
+
+     * [63]10646 non-const reference is incorrectly matched in a "const T"
+       partial specialization
+     * [64]12077 wcin.rdbuf()->in_avail() return value too high
+     * [65]13598 enc_filebuf doesn't work
+     * [66]14211 const_cast returns lvalue but should be rvalue
+     * [67]14220 num_put::do_put() undesired float/double behavior
+     * [68]14245 problem with user-defined allocators in std::basic_string
+     * [69]14340 libstdc++ Debug mode: failure to convert iterator to
+       const_iterator
+     * [70]14600 __gnu_cxx::stdio_sync_filebuf should expose internal
+       FILE*
+     * [71]14668 no warning anymore for reevaluation of declaration
+     * [72]14775 LFS (large file support) tests missing
+     * [73]14821 Duplicate namespace alias declaration should not conflict
+     * [74]14930 Friend declaration ignored
+     * [75]14932 cannot use offsetof to get offsets of array elements in
+       g++ 3.4.0
+     * [76]14950 [non unit-at-a-time] always_inline does not mix with
+       templates and -O0
+     * [77]14962 g++ ignores #pragma redefine_extname
+     * [78]14975 Segfault on low-level write error during imbue
+     * [79]15002 Linewise stream input is unusably slow (std::string slow)
+     * [80]15025 compiler accepts redeclaration of template as
+       non-template
+     * [81]15046 [arm] Math functions misdetected by cross configuration
+     * [82]15069 a bit test on a variable of enum type is miscompiled
+     * [83]15074 g++ -lsupc++ still links against libstdc++
+     * [84]15083 spurious "statement has no effect" warning
+     * [85]15096 parse error with templates and pointer to const member
+     * [86]15287 combination of operator[] and operator .* fails in
+       templates
+     * [87]15317 __attribute__ unused in first parameter of constructor
+       gives error
+     * [88]15337 sizeof on incomplete type diagnostic
+     * [89]15361 bitset<>::_Find_next fails
+     * [90]15412 _GLIBCXX_ symbols symbols defined and used in different
+       namespaces
+     * [91]15427 valid code results in incomplete type error
+     * [92]15471 Incorrect member pointer offsets in anonymous
+       structs/unions
+     * [93]15503 nested template problem
+     * [94]15507 compiler hangs while laying out union
+     * [95]15542 operator & and template definitions
+     * [96]15565 SLES9: leading + sign for unsigned int with showpos
+     * [97]15625 friend defined inside a template fails to find static
+       function
+     * [98]15629 Function templates, overloads, and friend name injection
+     * [99]15742 'noreturn' attribute ignored in method of template
+       functions.
+     * [100]15775 Allocator::pointer consistently ignored
+     * [101]15821 Duplicate namespace alias within namespace rejected
+     * [102]15862 'enum yn' fails (confict with undeclared builtin)
+     * [103]15875 rejects pointer to member in template
+     * [104]15877 valid code using templates and anonymous enums is
+       rejected
+     * [105]15947 Puzzling error message for wrong destructor declaration
+       in template class
+     * [106]16020 cannot copy __gnu_debug::bitset
+     * [107]16154 input iterator concept too restrictive
+     * [108]16174 deducing top-level consts
+
+    Java
+
+     * [109]14315 Java compiler is not parallel make safe
+
+    Fortran
+
+     * [110]15151 [g77] incorrect logical i/o in 64-bit mode
+
+    Objective-C
+
+     * [111]7993 private variables cannot be shadowed in subclasses
+
+    Optimization bugs
+
+     * [112]15228 useless copies of floating point operands
+     * [113]15345 [non-unit-at-a-time] unreferenced nested inline
+       functions not optimized away
+     * [114]15945 Incorrect floating point optimization
+     * [115]15526 ftrapv aborts on 0 * (-1)
+     * [116]14690 Miscompiled POOMA tests
+     * [117]15112 GCC generates code to write to unchanging memory
+
+    Preprocessor
+
+     * [118]15067 Minor glitch in the source of cpp
+
+    Main driver program bugs
+
+     * [119]1963 collect2 interprets -oldstyle_liblookup as -o
+       ldstyle_liblookup
+
+    x86-specific (Intel/AMD)
+
+     * [120]15717 Error: can't resolve `L0' {*ABS* section} - `xx' {*UND*
+       section}
+
+    HPPA-specific
+
+     * [121]14782 GCC produces an unaligned data access at -O2
+     * [122]14828 FAIL: gcc.c-torture/execute/20030408-1.c execution, -O2
+     * [123]15202 ICE in reload_cse_simplify_operands, in postreload.c
+
+    IA64-specific
+
+     * [124]14610 __float80 constants incorrectly emitted
+     * [125]14813 init_array sections are initialized in the wrong order
+     * [126]14857 GCC segfault on duplicated asm statement
+     * [127]15598 Gcc 3.4 ICE on valid code
+     * [128]15653 Gcc 3.4 ICE on valid code
+
+    MIPS-specific
+
+     * [129]15189 wrong filling of delay slot with -march=mips1 -G0
+       -mno-split-addresses -mno-explicit-relocs
+     * [130]15331 Assembler error building gnatlib on IRIX 6.5 with GNU as
+       2.14.91
+     * [131]16144 Bogus reference to __divdf3 when -O1
+     * [132]16176 Miscompilation of unaligned data in MIPS backend
+
+    PowerPC-specific
+
+     * [133]11591 ICE in gcc.dg/altivec-5.c
+     * [134]12028 powerpc-eabispe produces bad sCOND operation
+     * [135]14478 rs6000 geu/ltu patterns generate incorrect code
+     * [136]14567 long double and va_arg complex args
+     * [137]14715 Altivec stack layout may overlap gpr save with stack
+       temps
+     * [138]14902 (libstdc++) Stream checking functions fail when -pthread
+       option is used.
+     * [139]14924 Compiler ICE on valid code
+     * [140]14960 -maltivec affects vector return with -mabi=no-altivec
+     * [141]15106 vector varargs failure passing from altivec to
+       non-altivec code for -m32
+     * [142]16026 ICE in function.c:4804, assign_parms, when -mpowerpc64 &
+       half-word operation
+     * [143]15191 -maltivec -mabi=no-altivec results in mis-aligned lvx
+       and stvx
+     * [144]15662 Segmentation fault when an exception is thrown - even if
+       try and catch are specified
+
+    s390-specific
+
+     * [145]15054 Bad code due to overlapping stack temporaries
+
+    SPARC-specific
+
+     * [146]15783 ICE with union assignment in 64-bit mode
+     * [147]15626 GCC 3.4 emits "ld: warning: relocation error:
+       R_SPARC_UA32"
+
+    x86-64-specific
+
+     * [148]14326 boehm-gc hardcodes to 3DNow! prefetch for x86_64
+     * [149]14723 Backported -march=nocona from mainline
+     * [150]15290 __float128 failed to pass to function properly
+
+    Cygwin/Mingw32-specific
+
+     * [151]15250 Option -mms-bitfields support on GCC 3.4 is not
+       conformant to MS layout
+     * [152]15551 -mtune=pentium4 -O2 with sjlj EH breaks stack probe
+       worker on windows32 targets
+
+    Bugs specific to embedded processors
+
+     * [153]8309 [m68k] -m5200 produces erroneous SImode set of short
+       varaible on stack
+     * [154]13250 [SH] Gcc code for rotation clobbers the register, but
+       gcc continues to use the register as if it was not clobbered
+     * [155]13803 [coldfire] movqi operand constraints too restrictivefor
+       TARGET_COLDFIRE
+     * [156]14093 [SH] ICE for code when using -mhitachi option in SH
+     * [157]14457 [m6811hc] ICE with simple c++ source
+     * [158]14542 [m6811hc] ICE on simple source
+     * [159]15100 [SH] cc1plus got hang-up on
+       libstdc++-v3/testsuite/abi_check.cc
+     * [160]15296 [CRIS] Delayed branch scheduling causing invalid code on
+       cris-*
+     * [161]15396 [SH] ICE with -O2 -fPIC
+     * [162]15782 [coldfire] m68k_output_mi_thunk emits wrong code for
+       ColdFire
+
+    Testsuite problems (compiler not affected)
+
+     * [163]11610 libstdc++ testcases 27_io/* don't work properly remotely
+     * [164]15488 (libstdc++) possibly insufficient file permissions for
+       executing test suite
+     * [165]15489 (libstdc++) testsuite_files determined incorrectly
+
+    Documentation bugs
+
+     * [166]13928 (libstdc++) no whatis info in some man pages generated
+       by doxygen
+     * [167]14150 Ada documentation out of date
+     * [168]14949 (c++) Need to document method visibility changes
+     * [169]15123 libstdc++-doc: Allocators.3 manpage is empty
+     __________________________________________________________________
+
+GCC 3.4.2
+
+  Bug Fixes
+
+   This section lists the problem reports (PRs) from GCC's bug tracking
+   system that are known to be fixed in the 3.4.2 release. This list might
+   not be complete (that is, it is possible that some PRs that have been
+   fixed are not listed here).
+
+    Bootstrap failures and issues
+
+     * [170]16469 [mips-sgi-irix5.3] bootstrap fails in
+       libstdc++-v3/testsuite
+     * [171]16344 [hppa-linux-gnu] libstdc++'s PCH built by
+       profiledbootstrap does not work with the built compiler
+     * [172]16842 [Solaris/x86] mkheaders can not find mkheaders.conf
+
+    Multi-platform internal compiler errors (ICEs)
+
+     * [173]12608 (c++) ICE: expected class 't', have 'x' (error_mark) in
+       cp_parser_class_specifier, in cp/parser.c
+     * [174]14492 ICE in loc_descriptor_from_tree, in dwarf2out.c
+     * [175]15461 (c++) ICE due to NRV and inlining
+     * [176]15890 (c++) ICE in c_expand_expr, in c-common.c
+     * [177]16180 ICE: segmentation fault in RTL optimization
+     * [178]16224 (c++) ICE in write_unscoped_name (template/namespace)
+     * [179]16408 ICE: in delete_insn, in cfgrtl.c
+     * [180]16529 (c++) ICE for: namespace-alias shall not be declared as
+       the name of any other entity
+     * [181]16698 (c++) ICE with exceptions and declaration of __cxa_throw
+     * [182]16706 (c++) ICE in finish_member_declaration, in
+       cp/semantics.c
+     * [183]16810 (c++) Legal C++ program with cast gives ICE in
+       build_ptrmemfunc
+     * [184]16851 (c++) ICE when throwing a comma expression
+     * [185]16870 (c++) Boost.Spirit causes ICE in tsubst, in cp/pt.c
+     * [186]16904 (c++) ICE in finish_class_member_access_expr, in
+       cp/typeck.c
+     * [187]16905 (c++) ICE (segfault) with exceptions
+     * [188]16964 (c++) ICE in cp_parser_class_specifier due to
+       redefinition
+     * [189]17068 (c++) ICE: tree check: expected class 'd', have 'x'
+       (identifier_node) in dependent_template_p, in cp/pt.c
+
+    Preprocessor bugs
+
+     * [190]16366 Preprocessor option -remap causes memory corruption
+
+    Optimization
+
+     * [191]15345 unreferenced nested inline functions not optimized away
+     * [192]16590 Incorrect execution when compiling with -O2
+     * [193]16693 Bitwise AND is lost when used within a cast to an enum
+       of the same precision
+     * [194]17078 Jump into if(0) substatement fails
+
+    Problems in generated debug information
+
+     * [195]13956 incorrect stabs for nested local variables
+
+    C front end bugs
+
+     * [196]16684 GCC should not warn about redundant redeclarations of
+       built-ins
+
+    C++ compiler and library
+
+     * [197]12658 Thread safety problems in locale::global() and
+       locale::locale()
+     * [198]13092 g++ accepts invalid pointer-to-member conversion
+     * [199]15320 Excessive memory consumption
+     * [200]16246 Incorrect template argument deduction
+     * [201]16273 Memory exhausted when using nested classes and virtual
+       functions
+     * [202]16401 ostringstream in gcc 3.4.x very slow for big data
+     * [203]16411 undefined reference to
+       __gnu_cxx::stdio_sync_filebuf<char, std::char_traits<char>
+       >::file()
+     * [204]16489 G++ incorrectly rejects use of a null constant integral
+       expression as a null constant pointer
+     * [205]16618 offsetof fails with constant member
+     * [206]16637 syntax error reported for valid input code
+     * [207]16717 __attribute__((constructor)) broken in C++
+     * [208]16813 compiler error in DEBUG version of range insertion
+       std::map::insert
+     * [209]16853 pointer-to-member initialization from incompatible one
+       accepted
+     * [210]16889 ambiguity is not detected
+     * [211]16959 Segmentation fault in ios_base::sync_with_stdio
+
+    Java compiler and library
+
+     * [212]7587 direct threaded interpreter not thread-safe
+     * [213]16473 ServerSocket accept() leaks file descriptors
+     * [214]16478 Hash synchronization deadlock with finalizers
+
+    Alpha-specific
+
+     * [215]10695 ICE in dwarf2out_frame_debug_expr, in dwarf2out.c
+     * [216]16974 could not split insn (ice in final_scan_insn, in
+       final.c)
+
+    x86-specific
+
+     * [217]16298 ICE in output_operand
+     * [218]17113 ICE with SSE2 intrinsics
+
+    x86-64 specific
+
+     * [219]14697 libstdc++ couldn't find 32bit libgcc_s
+
+    MIPS-specific
+
+     * [220]15869 [mips64] No NOP after LW (with -mips1 -O0)
+     * [221]16325 [mips64] value profiling clobbers gp on mips
+     * [222]16357 [mipsisa64-elf] ICE copying 7 bytes between extern
+       char[]s
+     * [223]16380 [mips64] Use of uninitialised register after dbra
+       conversion
+     * [224]16407 [mips64] Unaligned access to local variables
+     * [225]16643 [mips64] verify_local_live_at_start ICE after
+       crossjumping & cfgcleanup
+
+    ARM-specific
+
+     * [226]15927 THUMB -O2: strength-reduced iteration variable ends up
+       off by 1
+     * [227]15948 THUMB: ICE with non-commutative cbranch
+     * [228]17019 THUMB: bad switch statement in md code for
+       addsi3_cbranch_scratch
+
+    IA64-specific
+
+     * [229]16130 ICE on valid code: in bundling, in config/ia64/ia64.c
+       (-mtune=merced)
+     * [230]16142 ICE on valid code: in bundling, in config/ia64/ia64.c
+       (-mtune=itanium)
+     * [231]16278 Gcc failed to build Linux kernel with -mtune=merced
+     * [232]16414 ICE on valid code: typo in comparison of asm_noperands
+       result
+     * [233]16445 ICE on valid code: don't count ignored insns
+     * [234]16490 ICE (segfault) while compiling with -fprofile-use
+     * [235]16683 ia64 does not honor SUBTARGET_EXTRA_SPECS
+
+    PowerPC-specific
+
+     * [236]16195 (ppc64): Miscompilation of GCC 3.3.x by 3.4.x
+     * [237]16239 ICE on ppc64 (mozilla 1.7 compile, -O1 -fno-exceptions
+       issue)
+
+    SPARC-specific
+
+     * [238]16199 ICE while compiling apache 2.0.49
+     * [239]16416 -m64 doesn't imply -mcpu=v9 anymore
+     * [240]16430 ICE when returning non-C aggregates larger than 16 bytes
+
+    Bugs specific to embedded processors
+
+     * [241]16379 [m32r] can't output large model function call of memcpy
+     * [242]17093 [m32r] ICE with -msdata=use -O0
+     * [243]17119 [m32r] ICE at switch case 0x8000
+
+    DJGPP-specific
+
+     * [244]15928 libstdc++ in 3.4.x doesn't cross-compile for djgpp
+
+    Alpha Tru64-specific
+
+     * [245]16210 libstdc++ gratuitously omits "long long" I/O
+
+    Testsuite, documentation issues (compiler is not affected):
+
+     * [246]15488 (libstdc++) possibly insufficient file permissions for
+       executing test suite
+     * [247]16250 ada/doctools runs makeinfo even in release tarball
+     __________________________________________________________________
+
+GCC 3.4.3
+
+   This is the [248]list of problem reports (PRs) from GCC's bug tracking
+   system that are known to be fixed in the 3.4.3 release. This list might
+   not be complete (that is, it is possible that some PRs that have been
+   fixed are not listed here).
+
+    Bootstrap failures
+
+     * [249]17369 [ia64] Bootstrap failure with binutils-2.15.90.0.1.1
+     * [250]17850 [arm-elf] bootstrap failure - libstdc++ uses strtold
+       when undeclared
+
+    Internal compiler errors (ICEs) affecting multiple platforms
+
+     * [251]13948 (java) GCJ segmentation fault while compiling GL4Java
+       .class files
+     * [252]14492 ICE in loc_descriptor_from_tree, in dwarf2out.c
+     * [253]16301 (c++) ICE when "strong" attribute is attached to a using
+       directive
+     * [254]16566 ICE with flexible arrays
+     * [255]17023 ICE with nested functions in parameter declaration
+     * [256]17027 ICE with noreturn function in loop at -O2
+     * [257]17524 ICE in grokdeclarator, in cp/decl.c
+     * [258]17826 (c++) ICE in cp_tree_equal
+
+    C and optimization bugs
+
+     * [259]15526 -ftrapv aborts on 0 * (-1)
+     * [260]16999 #ident stopped working
+     * [261]17503 quadratic behaviour in invalid_mode_change_p
+     * [262]17581 Long long arithmetic fails inside a switch/case
+       statement when compiled with -O2
+     * [263]18129 -fwritable-strings doesn't work
+
+    C++ compiler and library bugs
+
+     * [264]10975 incorrect initial ostringstream::tellp()
+     * [265]11722 Unbuffered filebuf::sgetn is slow
+     * [266]14534 Unrecognizing static function as a template parameter
+       when its return value is also templated
+     * [267]15172 Copy constructor optimization in aggregate
+       initialization
+     * [268]15786 Bad error message for frequently occuring error.
+     * [269]16162 Rejects valid member-template-definition
+     * [270]16612 empty basic_strings can't live in shared memory
+     * [271]16715 std::basic_iostream is instantiated when used, even
+       though instantiations are already contained in libstdc++
+     * [272]16848 code in /ext/demangle.h appears broken
+     * [273]17132 GCC fails to eliminate function template specialization
+       when argument deduction fails
+     * [274]17259 One more _S_leaf incorrectly qualified with _RopeRep::
+       in ropeimpl.h
+     * [275]17327 use of `enumeral_type' in template type unification
+     * [276]17393 "unused variable '._0'" warning with -Wall
+     * [277]17501 Confusion with member templates
+     * [278]17537 g++ not passing -lstdc++ to linker when all command line
+       arguments are libraries
+     * [279]17585 usage of unqualified name of static member from within
+       class not allowed
+     * [280]17821 Poor diagnostic for using "." instead of "->"
+     * [281]17829 wrong error: call of overloaded function is ambiguous
+     * [282]17851 Misleading diagnostic for invalid function declarations
+       with undeclared types
+     * [283]17976 Destructor is called twice
+     * [284]18020 rejects valid definition of enum value in template
+     * [285]18093 bogus conflict in namespace aliasing
+     * [286]18140 C++ parser bug when using >> in templates
+
+    Fortran
+
+     * [287]17541 data statements with double precision constants fail
+
+    x86-specific
+
+     * [288]17853 -O2 ICE for MMX testcase
+
+    SPARC-specific
+
+     * [289]17245 ICE compiling gsl-1.5 statistics/lag1.c
+
+    Darwin-specific
+
+     * [290]17167 FATAL:Symbol L_foo$stub already defined.
+
+    AIX-specific
+
+     * [291]17277 could not catch an exception when specified -maix64
+
+    Solaris-specific
+
+     * [292]17505 <cmath> calls acosf(), ceilf(), and other functions
+       missing from system libraries
+
+    HP/UX specific:
+
+     * [293]17684 /usr/ccs/bin/ld: Can't create libgcc_s.sl
+
+    ARM-specific
+
+     * [294]17384 ICE with mode attribute on structures
+
+    MIPS-specific
+
+     * [295]17770 No NOP after LWL with -mips1
+
+    Other embedded target specific
+
+     * [296]11476 [arc-elf] gcc ICE on newlib's vfprintf.c
+     * [297]14064 [avr-elf] -fdata-sections triggers ICE
+     * [298]14678 [m68hc11-elf] gcc ICE
+     * [299]15583 [powerpc-rtems] powerpc-rtems lacks __USE_INIT_FINI__
+     * [300]15790 [i686-coff] Alignment error building gcc with i686-coff
+       target
+     * [301]15886 [SH] Miscompilation with -O2 -fPIC
+     * [302]16884 [avr-elf] [fweb related] bug while initializing
+       variables
+
+    Bugs relating to debugger support
+
+     * [303]13841 missing debug info for _Complex function arguments
+     * [304]15860 [big-endian targets] No DW_AT_location debug info is
+       emitted for formal arguments to a function that uses "register"
+       qualifiers
+
+    Testsuite issues (compiler not affected)
+
+     * [305]17465 Testsuite in libffi overrides LD_LIBRARY_PATH
+     * [306]17469 Testsuite in libstdc++ overrides LD_LIBRARY_PATH
+     * [307]18138 [mips-sgi-irix6.5] libgcc_s.so.1 not found by 64-bit
+       testsuite
+
+    Documentation
+
+     * [308]15498 typo in gcc manual: non-existing locale example en_UK,
+       should be en_GB
+     * [309]15747 [mips-sgi-irix5.3] /bin/sh hangs during bootstrap:
+       document broken shell
+     * [310]16406 USE_LD_AS_NEEDED undocumented
+     __________________________________________________________________
+
+GCC 3.4.4
+
+   This is the [311]list of problem reports (PRs) from GCC's bug tracking
+   system that are known to be fixed in the 3.4.4 release. This list might
+   not be complete (that is, it is possible that some PRs that have been
+   fixed are not listed here).
+     __________________________________________________________________
+
+GCC 3.4.5
+
+   This is the [312]list of problem reports (PRs) from GCC's bug tracking
+   system that are known to be fixed in the 3.4.5 release. This list might
+   not be complete (that is, it is possible that some PRs that have been
+   fixed are not listed here).
+
+    Bootstrap issues
+
+     * [313]24688 sco_math fixincl breaks math.h
+
+    C compiler bugs
+
+     * [314]17188 struct Foo { } redefinition
+     * [315]20187 wrong code for ((unsigned char)(unsigned long
+       long)((a?a:1)&(a*b)))?0:1)
+     * [316]21873 infinite warning loop on bad array initializer
+     * [317]21899 enum definition accepts values to be overriden
+     * [318]22061 ICE in find_function_data, in function.c
+     * [319]22308 Failure to diagnose violation of constraint 6.516p2
+     * [320]22458 ICE on missing brace
+     * [321]22589 ICE casting to long long
+     * [322]24101 Segfault with preprocessed source
+
+    C++ compiler and library bugs
+
+     * [323]10611 operations on vector mode not recognized in C++
+     * [324]13377 unexpected behavior of namespace usage directive
+     * [325]16002 Strange error message with new parser
+     * [326]17413 local classes as template argument
+     * [327]17609 spurious error message after using keyword
+     * [328]17618 ICE in cp_convert_to_pointer, in cp/cvt.c
+     * [329]18124 ICE with invalid template template parameter
+     * [330]18155 typedef in template declaration not rejected
+     * [331]18177 ICE with const_cast for undeclared variable
+     * [332]18368 C++ error message regression
+     * [333]16378 ICE when returning a copy of a packed member
+     * [334]18466 int ::i; accepted
+     * [335]18512 ICE on invalid usage of template base class
+     * [336]18454 ICE when returning undefined type
+     * [337]18738 typename not allowed with non-dependent qualified name
+     * [338]18803 rejects access to operator() in template
+     * [339]19004 ICE in uses_template_parms, in cp/pt.c
+     * [340]19208 Spurious error about variably modified type
+     * [341]18253 bad error message / ICE for invalid template parameter
+     * [342]19608 ICE after friend function definition in local class
+     * [343]19884 ICE on explicit instantiation of a non-template
+       constructor
+     * [344]20153 ICE when C++ template function contains anonymous union
+     * [345]20563 Infinite loop in diagnostic (and ice after error
+       message)
+     * [346]20789 ICE with incomplete type in template
+     * [347]21336 Internal compiler error when using custom new operators
+     * [348]21768 ICE in error message due to violation of coding
+       conventions
+     * [349]21853 constness of pointer to data member ignored
+     * [350]21903 Default argument of template function causes a
+       compile-time error
+     * [351]21983 multiple diagnostics
+     * [352]21987 New testsuite failure
+       g++.dg/warn/conversion-function-1.C
+     * [353]22153 ICE on invalid template specialization
+     * [354]22172 Internal compiler error, seg fault.
+     * [355]21286 filebuf::xsgetn vs pipes
+     * [356]22233 ICE with wrong number of template parameters
+     * [357]22508 ICE after invalid operator new
+     * [358]22545 ICE with pointer to class member & user defined
+       conversion operator
+     * [359]23528 Wrong default allocator in ext/hash_map
+     * [360]23550 char_traits requirements/1.cc test bad math
+     * [361]23586 Bad diagnostic for invalid namespace-name
+     * [362]23624 ICE in invert_truthvalue, in fold-const.c
+     * [363]23639 Bad error message: not a member of '<declaration error>'
+     * [364]23797 ICE on typename outside template
+     * [365]23965 Bogus error message: no matching function for call to
+       'foo(<type error>)'
+     * [366]24052 &#`label_decl' not supported by dump_expr#<expression
+       error>
+     * [367]24580 virtual base class cause exception not to be caught
+
+    Problems in generated debug information
+
+     * [368]24267 Bad DWARF for altivec vectors
+
+    Optimizations issues
+
+     * [369]17810 ICE in verify_local_live_at_start
+     * [370]17860 Wrong generated code for loop with varying bound
+     * [371]21709 ICE on compile-time complex NaN
+     * [372]21964 broken tail call at -O2 or more
+     * [373]22167 Strange optimization bug when using -Os
+     * [374]22619 Compilation failure for real_const_1.f and
+       real_const_2.f90
+     * [375]23241 Invalid code generated for comparison of uchar to 255
+     * [376]23478 Miscompilation due to reloading of a var that is also
+       used in EH pad
+     * [377]24470 segmentation fault in cc1plus when compiling with -O
+     * [378]24950 ICE in operand_subword_force
+
+    Precompiled headers problems
+
+     * [379]14400 Cannot compile qt-x11-free-3.3.0
+     * [380]14940 PCH largefile test fails on various platforms
+
+    Preprocessor bugs
+
+     * [381]20239 ICE on empty preprocessed input
+     * [382]15220 "gcc -E -MM -MG" reports missing system headers in
+       source directory
+
+    Testsuite issues
+
+     * [383]19275 gcc.dg/20020919-1.c fails with -fpic/-fPIC on
+       i686-pc-linux-gnu
+
+    Alpha specific
+
+     * [384]21888 bootstrap failure with linker relaxation enabled
+
+    ARM specific
+
+     * [385]15342 [arm-linux]: ICE in verify_local_live_at_start
+     * [386]23985 Memory aliasing information incorrect in inlined memcpy
+
+    ColdFile specific
+
+     * [387]16719 Illegal move of byte into address register causes
+       compiler to ICE
+
+    HPPA specific
+
+     * [388]21723 ICE while building libgfortran
+     * [389]21841 -mhp-ld/-mgnu-ld documentation
+
+    IA-64 specific
+
+     * [390]23644 IA-64 hardware models and configuration options
+       documentation error
+     * [391]24718 Shared libgcc not used for linking by default
+
+    M68000 specific
+
+     * [392]18421 ICE in reload_cse_simplify_operands, in postreload.c
+
+    MIPS specific
+
+     * [393]20621 ICE in change_address_1, in emit-rtl.c
+
+    PowerPC and PowerPC64 specific
+
+     * [394]18583 error on valid code: const
+       __attribute__((altivec(vector__))) doesn't work in arrays
+     * [395]20191 ICE in reload_cse_simplify_operands
+     * [396]22083 AIX: TARGET_C99_FUNCTIONS is wrongly defined
+     * [397]23070 CALL_V4_CLEAR_FP_ARGS flag not properly set
+     * [398]23404 gij trashes args of functions with more than 8 fp args
+     * [399]23539 C & C++ compiler generating misaligned references
+       regardless of compiler flags
+     * [400]24102 floatdisf2_internal2 broken
+     * [401]24465 -mminimal-toc miscompilation of __thread vars
+
+    Solaris specific
+
+     * [402]19933 Problem with define of HUGE_VAL in math_c99
+     * [403]21889 Native Solaris assembler cannot grok DTP-relative debug
+       symbols
+
+    SPARC specific
+
+     * [404]19300 PCH failures on sparc-linux
+     * [405]20301 Assembler labels have a leading "-"
+     * [406]20673 C PCH testsuite assembly comparison failure
+
+    x86 and x86_64 specific
+
+     * [407]18582 ICE with arrays of type V2DF
+     * [408]19340 Compilation SEGFAULTs with -O1 -fschedule-insns2
+       -fsched2-use-traces
+     * [409]21716 ICE in reg-stack.c's swap_rtx_condition
+     * [410]24315 amd64 fails -fpeephole2
+     __________________________________________________________________
+
+GCC 3.4.6
+
+   This is the [411]list of problem reports (PRs) from GCC's bug tracking
+   system that are known to be fixed in the 3.4.6 release. This list might
+   not be complete (that is, it is possible that some PRs that have been
+   fixed are not listed here).
+
+
+    For questions related to the use of GCC, please consult these web
+    pages and the [412]GCC manuals. If that fails, the
+    [413]gcc-help at gcc.gnu.org mailing list might help. Comments on these
+    web pages and the development of GCC are welcome on our developer
+    list at [414]gcc at gcc.gnu.org. All of [415]our lists have public
+    archives.
+
+   Copyright (C) [416]Free Software Foundation, Inc. Verbatim copying and
+   distribution of this entire article is permitted in any medium,
+   provided this notice is preserved.
+
+   These pages are [417]maintained by the GCC team. Last modified
+   2014-06-28[418].
+
+References
+
+   1. http://gcc.gnu.org/gcc-3.4/changes.html#3.4.6
+   2. http://gcc.gnu.org/gcc-3.4/changes.html#cplusplus
+   3. http://gcc.gnu.org/gcc-3.3/changes.html#obsolete_systems
+   4. http://gcc.gnu.org/gcc-3.4/changes.html#obsolete_systems
+   5. http://gcc.gnu.org/gcc-3.4/mips-abi.html
+   6. http://gcc.gnu.org/gcc-3.4/sparc-abi.html
+   7. http://www.boost.org/
+   8. https://gcc.gnu.org/PR11953
+   9. https://gcc.gnu.org/PR8361
+  10. https://gcc.gnu.org/onlinedocs/gcc-3.4.3/gcc/Other-Builtins.html#Other Builtins
+  11. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_closed.html#209
+  12. http://gcc.gnu.org/bugs/#cxx_rvalbind
+  13. https://gcc.gnu.org/onlinedocs/gcc-3.4.3/gcc/Objective-C-Dialect-Options.html
+  14. https://gcc.gnu.org/onlinedocs/gcc-3.4.3/gcc/Objective-C-Dialect-Options.html
+  15. https://gcc.gnu.org/onlinedocs/gcc-3.4.3/gcc/Objective-C-Dialect-Options.html
+  16. http://www.gnu.org/software/classpath/
+  17. http://www.eclipse.org/
+  18. https://gcc.gnu.org/onlinedocs/gcc-3.4.3/g77/News.html
+  19. https://gcc.gnu.org/onlinedocs/gcc-3.4.3/gcc/Alpha-Built-in-Functions.html
+  20. http://h30097.www3.hp.com/docs/base_doc/DOCUMENTATION/V51A_HTML/ARH9MBTE/DTMNPLTN.HTM#normal-argument-list-structure
+  21. https://gcc.gnu.org/onlinedocs/gcc-3.4.3/gccint/Processor-pipeline-description.html
+  22. https://gcc.gnu.org/onlinedocs/gcc-3.4.3/gccint/Comparison-of-the-two-descriptions.html
+  23. https://gcc.gnu.org/onlinedocs/gcc-3.4.3/gccint/Processor-pipeline-description.html
+  24. http://gcc.gnu.org/gcc-3.4/mips-abi.html
+  25. http://gcc.gnu.org/gcc-3.4/powerpc-abi.html
+  26. http://gcc.gnu.org/gcc-3.4/sparc-abi.html
+  27. https://gcc.gnu.org/bugzilla/buglist.cgi?short_desc_type=notregexp&short_desc=\[3\.4.*[Rr]egression&target_milestone=3.4.0&bug_status=RESOLVED&resolution=FIXED
+  28. https://gcc.gnu.org/PR10129
+  29. https://gcc.gnu.org/PR14576
+  30. https://gcc.gnu.org/PR14760
+  31. https://gcc.gnu.org/PR14671
+  32. https://gcc.gnu.org/PR15093
+  33. https://gcc.gnu.org/PR15178
+  34. https://gcc.gnu.org/PR12753
+  35. https://gcc.gnu.org/PR13985
+  36. https://gcc.gnu.org/PR14810
+  37. https://gcc.gnu.org/PR14883
+  38. https://gcc.gnu.org/PR15044
+  39. https://gcc.gnu.org/PR15057
+  40. https://gcc.gnu.org/PR15064
+  41. https://gcc.gnu.org/PR15142
+  42. https://gcc.gnu.org/PR15159
+  43. https://gcc.gnu.org/PR15165
+  44. https://gcc.gnu.org/PR15193
+  45. https://gcc.gnu.org/PR15209
+  46. https://gcc.gnu.org/PR15227
+  47. https://gcc.gnu.org/PR15285
+  48. https://gcc.gnu.org/PR15299
+  49. https://gcc.gnu.org/PR15329
+  50. https://gcc.gnu.org/PR15550
+  51. https://gcc.gnu.org/PR15554
+  52. https://gcc.gnu.org/PR15640
+  53. https://gcc.gnu.org/PR15666
+  54. https://gcc.gnu.org/PR15696
+  55. https://gcc.gnu.org/PR15701
+  56. https://gcc.gnu.org/PR15761
+  57. https://gcc.gnu.org/PR15829
+  58. https://gcc.gnu.org/PR14538
+  59. https://gcc.gnu.org/PR12391
+  60. https://gcc.gnu.org/PR14649
+  61. https://gcc.gnu.org/PR15004
+  62. https://gcc.gnu.org/PR15749
+  63. https://gcc.gnu.org/PR10646
+  64. https://gcc.gnu.org/PR12077
+  65. https://gcc.gnu.org/PR13598
+  66. https://gcc.gnu.org/PR14211
+  67. https://gcc.gnu.org/PR14220
+  68. https://gcc.gnu.org/PR14245
+  69. https://gcc.gnu.org/PR14340
+  70. https://gcc.gnu.org/PR14600
+  71. https://gcc.gnu.org/PR14668
+  72. https://gcc.gnu.org/PR14775
+  73. https://gcc.gnu.org/PR14821
+  74. https://gcc.gnu.org/PR14930
+  75. https://gcc.gnu.org/PR14932
+  76. https://gcc.gnu.org/PR14950
+  77. https://gcc.gnu.org/PR14962
+  78. https://gcc.gnu.org/PR14975
+  79. https://gcc.gnu.org/PR15002
+  80. https://gcc.gnu.org/PR15025
+  81. https://gcc.gnu.org/PR15046
+  82. https://gcc.gnu.org/PR15069
+  83. https://gcc.gnu.org/PR15074
+  84. https://gcc.gnu.org/PR15083
+  85. https://gcc.gnu.org/PR15096
+  86. https://gcc.gnu.org/PR15287
+  87. https://gcc.gnu.org/PR15317
+  88. https://gcc.gnu.org/PR15337
+  89. https://gcc.gnu.org/PR15361
+  90. https://gcc.gnu.org/PR15412
+  91. https://gcc.gnu.org/PR15427
+  92. https://gcc.gnu.org/PR15471
+  93. https://gcc.gnu.org/PR15503
+  94. https://gcc.gnu.org/PR15507
+  95. https://gcc.gnu.org/PR15542
+  96. https://gcc.gnu.org/PR15565
+  97. https://gcc.gnu.org/PR15625
+  98. https://gcc.gnu.org/PR15629
+  99. https://gcc.gnu.org/PR15742
+ 100. https://gcc.gnu.org/PR15775
+ 101. https://gcc.gnu.org/PR15821
+ 102. https://gcc.gnu.org/PR15862
+ 103. https://gcc.gnu.org/PR15875
+ 104. https://gcc.gnu.org/PR15877
+ 105. https://gcc.gnu.org/PR15947
+ 106. https://gcc.gnu.org/PR16020
+ 107. https://gcc.gnu.org/PR16154
+ 108. https://gcc.gnu.org/PR16174
+ 109. https://gcc.gnu.org/PR14315
+ 110. https://gcc.gnu.org/PR15151
+ 111. https://gcc.gnu.org/PR7993
+ 112. https://gcc.gnu.org/PR15228
+ 113. https://gcc.gnu.org/PR15345
+ 114. https://gcc.gnu.org/PR15945
+ 115. https://gcc.gnu.org/PR15526
+ 116. https://gcc.gnu.org/PR14690
+ 117. https://gcc.gnu.org/PR15112
+ 118. https://gcc.gnu.org/PR15067
+ 119. https://gcc.gnu.org/PR1963
+ 120. https://gcc.gnu.org/PR15717
+ 121. https://gcc.gnu.org/PR14782
+ 122. https://gcc.gnu.org/PR14828
+ 123. https://gcc.gnu.org/PR15202
+ 124. https://gcc.gnu.org/PR14610
+ 125. https://gcc.gnu.org/PR14813
+ 126. https://gcc.gnu.org/PR14857
+ 127. https://gcc.gnu.org/PR15598
+ 128. https://gcc.gnu.org/PR15653
+ 129. https://gcc.gnu.org/PR15189
+ 130. https://gcc.gnu.org/PR15331
+ 131. https://gcc.gnu.org/PR16144
+ 132. https://gcc.gnu.org/PR16176
+ 133. https://gcc.gnu.org/PR11591
+ 134. https://gcc.gnu.org/PR12028
+ 135. https://gcc.gnu.org/PR14478
+ 136. https://gcc.gnu.org/PR14567
+ 137. https://gcc.gnu.org/PR14715
+ 138. https://gcc.gnu.org/PR14902
+ 139. https://gcc.gnu.org/PR14924
+ 140. https://gcc.gnu.org/PR14960
+ 141. https://gcc.gnu.org/PR15106
+ 142. https://gcc.gnu.org/PR16026
+ 143. https://gcc.gnu.org/PR15191
+ 144. https://gcc.gnu.org/PR15662
+ 145. https://gcc.gnu.org/PR15054
+ 146. https://gcc.gnu.org/PR15783
+ 147. https://gcc.gnu.org/PR15626
+ 148. https://gcc.gnu.org/PR14326
+ 149. https://gcc.gnu.org/PR14723
+ 150. https://gcc.gnu.org/PR15290
+ 151. https://gcc.gnu.org/PR15250
+ 152. https://gcc.gnu.org/PR15551
+ 153. https://gcc.gnu.org/PR8309
+ 154. https://gcc.gnu.org/PR13250
+ 155. https://gcc.gnu.org/PR13803
+ 156. https://gcc.gnu.org/PR14093
+ 157. https://gcc.gnu.org/PR14457
+ 158. https://gcc.gnu.org/PR14542
+ 159. https://gcc.gnu.org/PR15100
+ 160. https://gcc.gnu.org/PR15296
+ 161. https://gcc.gnu.org/PR15396
+ 162. https://gcc.gnu.org/PR15782
+ 163. https://gcc.gnu.org/PR11610
+ 164. https://gcc.gnu.org/PR15488
+ 165. https://gcc.gnu.org/PR15489
+ 166. https://gcc.gnu.org/PR13928
+ 167. https://gcc.gnu.org/PR14150
+ 168. https://gcc.gnu.org/PR14949
+ 169. https://gcc.gnu.org/PR15123
+ 170. https://gcc.gnu.org/PR16469
+ 171. https://gcc.gnu.org/PR16344
+ 172. https://gcc.gnu.org/PR16842
+ 173. https://gcc.gnu.org/PR12608
+ 174. https://gcc.gnu.org/PR14492
+ 175. https://gcc.gnu.org/PR15461
+ 176. https://gcc.gnu.org/PR15890
+ 177. https://gcc.gnu.org/PR16180
+ 178. https://gcc.gnu.org/PR16224
+ 179. https://gcc.gnu.org/PR16408
+ 180. https://gcc.gnu.org/PR16529
+ 181. https://gcc.gnu.org/PR16698
+ 182. https://gcc.gnu.org/PR16706
+ 183. https://gcc.gnu.org/PR16810
+ 184. https://gcc.gnu.org/PR16851
+ 185. https://gcc.gnu.org/PR16870
+ 186. https://gcc.gnu.org/PR16904
+ 187. https://gcc.gnu.org/PR16905
+ 188. https://gcc.gnu.org/PR16964
+ 189. https://gcc.gnu.org/PR17068
+ 190. https://gcc.gnu.org/PR16366
+ 191. https://gcc.gnu.org/PR15345
+ 192. https://gcc.gnu.org/PR16590
+ 193. https://gcc.gnu.org/PR16693
+ 194. https://gcc.gnu.org/PR17078
+ 195. https://gcc.gnu.org/PR13956
+ 196. https://gcc.gnu.org/PR16684
+ 197. https://gcc.gnu.org/PR12658
+ 198. https://gcc.gnu.org/PR13092
+ 199. https://gcc.gnu.org/PR15320
+ 200. https://gcc.gnu.org/PR16246
+ 201. https://gcc.gnu.org/PR16273
+ 202. https://gcc.gnu.org/PR16401
+ 203. https://gcc.gnu.org/PR16411
+ 204. https://gcc.gnu.org/PR16489
+ 205. https://gcc.gnu.org/PR16618
+ 206. https://gcc.gnu.org/PR16637
+ 207. https://gcc.gnu.org/PR16717
+ 208. https://gcc.gnu.org/PR16813
+ 209. https://gcc.gnu.org/PR16853
+ 210. https://gcc.gnu.org/PR16889
+ 211. https://gcc.gnu.org/PR16959
+ 212. https://gcc.gnu.org/PR7587
+ 213. https://gcc.gnu.org/PR16473
+ 214. https://gcc.gnu.org/PR16478
+ 215. https://gcc.gnu.org/PR10695
+ 216. https://gcc.gnu.org/PR16974
+ 217. https://gcc.gnu.org/PR16298
+ 218. https://gcc.gnu.org/PR17113
+ 219. https://gcc.gnu.org/PR14697
+ 220. https://gcc.gnu.org/PR15869
+ 221. https://gcc.gnu.org/PR16325
+ 222. https://gcc.gnu.org/PR16357
+ 223. https://gcc.gnu.org/PR16380
+ 224. https://gcc.gnu.org/PR16407
+ 225. https://gcc.gnu.org/PR16643
+ 226. https://gcc.gnu.org/PR15927
+ 227. https://gcc.gnu.org/PR15948
+ 228. https://gcc.gnu.org/PR17019
+ 229. https://gcc.gnu.org/PR16130
+ 230. https://gcc.gnu.org/PR16142
+ 231. https://gcc.gnu.org/PR16278
+ 232. https://gcc.gnu.org/PR16414
+ 233. https://gcc.gnu.org/PR16445
+ 234. https://gcc.gnu.org/PR16490
+ 235. https://gcc.gnu.org/PR16683
+ 236. https://gcc.gnu.org/PR16195
+ 237. https://gcc.gnu.org/PR16239
+ 238. https://gcc.gnu.org/PR16199
+ 239. https://gcc.gnu.org/PR16416
+ 240. https://gcc.gnu.org/PR16430
+ 241. https://gcc.gnu.org/PR16379
+ 242. https://gcc.gnu.org/PR17093
+ 243. https://gcc.gnu.org/PR17119
+ 244. https://gcc.gnu.org/PR15928
+ 245. https://gcc.gnu.org/PR16210
+ 246. https://gcc.gnu.org/PR15488
+ 247. https://gcc.gnu.org/PR16250
+ 248. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=3.4.3
+ 249. https://gcc.gnu.org/PR17369
+ 250. https://gcc.gnu.org/PR17850
+ 251. https://gcc.gnu.org/PR13948
+ 252. https://gcc.gnu.org/PR14492
+ 253. https://gcc.gnu.org/PR16301
+ 254. https://gcc.gnu.org/PR16566
+ 255. https://gcc.gnu.org/PR17023
+ 256. https://gcc.gnu.org/PR17027
+ 257. https://gcc.gnu.org/PR17524
+ 258. https://gcc.gnu.org/PR17826
+ 259. https://gcc.gnu.org/PR15526
+ 260. https://gcc.gnu.org/PR16999
+ 261. https://gcc.gnu.org/PR17503
+ 262. https://gcc.gnu.org/PR17581
+ 263. https://gcc.gnu.org/PR18129
+ 264. https://gcc.gnu.org/PR10975
+ 265. https://gcc.gnu.org/PR11722
+ 266. https://gcc.gnu.org/PR14534
+ 267. https://gcc.gnu.org/PR15172
+ 268. https://gcc.gnu.org/PR15786
+ 269. https://gcc.gnu.org/PR16162
+ 270. https://gcc.gnu.org/PR16612
+ 271. https://gcc.gnu.org/PR16715
+ 272. https://gcc.gnu.org/PR16848
+ 273. https://gcc.gnu.org/PR17132
+ 274. https://gcc.gnu.org/PR17259
+ 275. https://gcc.gnu.org/PR17327
+ 276. https://gcc.gnu.org/PR17393
+ 277. https://gcc.gnu.org/PR17501
+ 278. https://gcc.gnu.org/PR17537
+ 279. https://gcc.gnu.org/PR17585
+ 280. https://gcc.gnu.org/PR17821
+ 281. https://gcc.gnu.org/PR17829
+ 282. https://gcc.gnu.org/PR17851
+ 283. https://gcc.gnu.org/PR17976
+ 284. https://gcc.gnu.org/PR18020
+ 285. https://gcc.gnu.org/PR18093
+ 286. https://gcc.gnu.org/PR18140
+ 287. https://gcc.gnu.org/PR17541
+ 288. https://gcc.gnu.org/PR17853
+ 289. https://gcc.gnu.org/PR17245
+ 290. https://gcc.gnu.org/PR17167
+ 291. https://gcc.gnu.org/PR17277
+ 292. https://gcc.gnu.org/PR17505
+ 293. https://gcc.gnu.org/PR17684
+ 294. https://gcc.gnu.org/PR17384
+ 295. https://gcc.gnu.org/PR17770
+ 296. https://gcc.gnu.org/PR11476
+ 297. https://gcc.gnu.org/PR14064
+ 298. https://gcc.gnu.org/PR14678
+ 299. https://gcc.gnu.org/PR15583
+ 300. https://gcc.gnu.org/PR15790
+ 301. https://gcc.gnu.org/PR15886
+ 302. https://gcc.gnu.org/PR16884
+ 303. https://gcc.gnu.org/PR13841
+ 304. https://gcc.gnu.org/PR15860
+ 305. https://gcc.gnu.org/PR17465
+ 306. https://gcc.gnu.org/PR17469
+ 307. https://gcc.gnu.org/PR18138
+ 308. https://gcc.gnu.org/PR15498
+ 309. https://gcc.gnu.org/PR15747
+ 310. https://gcc.gnu.org/PR16406
+ 311. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=3.4.4
+ 312. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=3.4.5
+ 313. https://gcc.gnu.org/PR24688
+ 314. https://gcc.gnu.org/PR17188
+ 315. https://gcc.gnu.org/PR20187
+ 316. https://gcc.gnu.org/PR21873
+ 317. https://gcc.gnu.org/PR21899
+ 318. https://gcc.gnu.org/PR22061
+ 319. https://gcc.gnu.org/PR22208
+ 320. https://gcc.gnu.org/PR22458
+ 321. https://gcc.gnu.org/PR22589
+ 322. https://gcc.gnu.org/PR24101
+ 323. https://gcc.gnu.org/PR10611
+ 324. https://gcc.gnu.org/PR13377
+ 325. https://gcc.gnu.org/PR16002
+ 326. https://gcc.gnu.org/PR17413
+ 327. https://gcc.gnu.org/PR17609
+ 328. https://gcc.gnu.org/PR17618
+ 329. https://gcc.gnu.org/PR18124
+ 330. https://gcc.gnu.org/PR18155
+ 331. https://gcc.gnu.org/PR18177
+ 332. https://gcc.gnu.org/PR18368
+ 333. https://gcc.gnu.org/PR18378
+ 334. https://gcc.gnu.org/PR18466
+ 335. https://gcc.gnu.org/PR18512
+ 336. https://gcc.gnu.org/PR18545
+ 337. https://gcc.gnu.org/PR18738
+ 338. https://gcc.gnu.org/PR18803
+ 339. https://gcc.gnu.org/PR19004
+ 340. https://gcc.gnu.org/PR19208
+ 341. https://gcc.gnu.org/PR19253
+ 342. https://gcc.gnu.org/PR19608
+ 343. https://gcc.gnu.org/PR19884
+ 344. https://gcc.gnu.org/PR20153
+ 345. https://gcc.gnu.org/PR20563
+ 346. https://gcc.gnu.org/PR20789
+ 347. https://gcc.gnu.org/PR21336
+ 348. https://gcc.gnu.org/PR21768
+ 349. https://gcc.gnu.org/PR21853
+ 350. https://gcc.gnu.org/PR21903
+ 351. https://gcc.gnu.org/PR21983
+ 352. https://gcc.gnu.org/PR21987
+ 353. https://gcc.gnu.org/PR22153
+ 354. https://gcc.gnu.org/PR22172
+ 355. https://gcc.gnu.org/PR21286
+ 356. https://gcc.gnu.org/PR22233
+ 357. https://gcc.gnu.org/PR22508
+ 358. https://gcc.gnu.org/PR22545
+ 359. https://gcc.gnu.org/PR23528
+ 360. https://gcc.gnu.org/PR23550
+ 361. https://gcc.gnu.org/PR23586
+ 362. https://gcc.gnu.org/PR23624
+ 363. https://gcc.gnu.org/PR23639
+ 364. https://gcc.gnu.org/PR23797
+ 365. https://gcc.gnu.org/PR23965
+ 366. https://gcc.gnu.org/PR24052
+ 367. https://gcc.gnu.org/PR24580
+ 368. https://gcc.gnu.org/PR24267
+ 369. https://gcc.gnu.org/PR17810
+ 370. https://gcc.gnu.org/PR17860
+ 371. https://gcc.gnu.org/PR21709
+ 372. https://gcc.gnu.org/PR21964
+ 373. https://gcc.gnu.org/PR22167
+ 374. https://gcc.gnu.org/PR22619
+ 375. https://gcc.gnu.org/PR23241
+ 376. https://gcc.gnu.org/PR23478
+ 377. https://gcc.gnu.org/PR24470
+ 378. https://gcc.gnu.org/PR24950
+ 379. https://gcc.gnu.org/PR14400
+ 380. https://gcc.gnu.org/PR14940
+ 381. https://gcc.gnu.org/PR20239
+ 382. https://gcc.gnu.org/PR15220
+ 383. https://gcc.gnu.org/PR19275
+ 384. https://gcc.gnu.org/PR21888
+ 385. https://gcc.gnu.org/PR15342
+ 386. https://gcc.gnu.org/PR23985
+ 387. https://gcc.gnu.org/PR16719
+ 388. https://gcc.gnu.org/PR21723
+ 389. https://gcc.gnu.org/PR21841
+ 390. https://gcc.gnu.org/PR23644
+ 391. https://gcc.gnu.org/PR24718
+ 392. https://gcc.gnu.org/PR18421
+ 393. https://gcc.gnu.org/PR20621
+ 394. https://gcc.gnu.org/PR18583
+ 395. https://gcc.gnu.org/PR20191
+ 396. https://gcc.gnu.org/PR22083
+ 397. https://gcc.gnu.org/PR23070
+ 398. https://gcc.gnu.org/PR23404
+ 399. https://gcc.gnu.org/PR23539
+ 400. https://gcc.gnu.org/PR24102
+ 401. https://gcc.gnu.org/PR24465
+ 402. https://gcc.gnu.org/PR19933
+ 403. https://gcc.gnu.org/PR21889
+ 404. https://gcc.gnu.org/PR19300
+ 405. https://gcc.gnu.org/PR20301
+ 406. https://gcc.gnu.org/PR20673
+ 407. https://gcc.gnu.org/PR18582
+ 408. https://gcc.gnu.org/PR19340
+ 409. https://gcc.gnu.org/PR21716
+ 410. https://gcc.gnu.org/PR24315
+ 411. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=3.4.6
+ 412. https://gcc.gnu.org/onlinedocs/
+ 413. mailto:gcc-help at gcc.gnu.org
+ 414. mailto:gcc at gcc.gnu.org
+ 415. https://gcc.gnu.org/lists.html
+ 416. http://www.fsf.org/
+ 417. https://gcc.gnu.org/about.html
+ 418. http://validator.w3.org/check/referer
+======================================================================
+http://gcc.gnu.org/gcc-3.3/index.html
+                             GCC 3.3 Release Series
+
+   May 03, 2005
+
+   The [1]GNU project and the GCC developers are pleased to announce the
+   release of GCC 3.3.6.
+
+   This release is a bug-fix release, containing fixes for regressions in
+   GCC 3.3.5 relative to previous releases of GCC.
+
+   This release is the last of the series 3.3.x.
+
+   The GCC 3.3 release series includes numerous [2]new features,
+   improvements, bug fixes, and other changes, thanks to an [3]amazing
+   group of volunteers.
+
+Release History
+
+   GCC 3.3.6
+          May 3, 2005 ([4]changes)
+
+   GCC 3.3.5
+          September 30, 2004 ([5]changes)
+
+   GCC 3.3.4
+          May 31, 2004 ([6]changes)
+
+   GCC 3.3.3
+          February 14, 2004 ([7]changes)
+
+   GCC 3.3.2
+          October 16, 2003 ([8]changes)
+
+   GCC 3.3.1
+          August 8, 2003 ([9]changes)
+
+   GCC 3.3
+          May 14, 2003 ([10]changes)
+
+References and Acknowledgements
+
+   GCC used to stand for the GNU C Compiler, but since the compiler
+   supports several other languages aside from C, it now stands for the
+   GNU Compiler Collection.
+
+   A list of [11]successful builds is updated as new information becomes
+   available.
+
+   The GCC developers would like to thank the numerous people that have
+   contributed new features, improvements, bug fixes, and other changes as
+   well as test results to GCC. This [12]amazing group of volunteers is
+   what makes GCC successful.
+
+   For additional information about GCC please refer to the [13]GCC
+   project web site or contact the [14]GCC development mailing list.
+
+   To obtain GCC please use [15]our mirror sites, or our CVS server.
+
+
+    For questions related to the use of GCC, please consult these web
+    pages and the [16]GCC manuals. If that fails, the
+    [17]gcc-help at gcc.gnu.org mailing list might help. Comments on these
+    web pages and the development of GCC are welcome on our developer
+    list at [18]gcc at gcc.gnu.org. All of [19]our lists have public
+    archives.
+
+   Copyright (C) [20]Free Software Foundation, Inc. Verbatim copying and
+   distribution of this entire article is permitted in any medium,
+   provided this notice is preserved.
+
+   These pages are [21]maintained by the GCC team. Last modified
+   2014-06-28[22].
+
+References
+
+   1. http://www.gnu.org/
+   2. http://gcc.gnu.org/gcc-3.3/changes.html
+   3. https://gcc.gnu.org/onlinedocs/gcc/Contributors.html
+   4. http://gcc.gnu.org/gcc-3.3/changes.html#3.3.6
+   5. http://gcc.gnu.org/gcc-3.3/changes.html#3.3.5
+   6. http://gcc.gnu.org/gcc-3.3/changes.html#3.3.4
+   7. http://gcc.gnu.org/gcc-3.3/changes.html#3.3.3
+   8. http://gcc.gnu.org/gcc-3.3/changes.html#3.3.2
+   9. http://gcc.gnu.org/gcc-3.3/changes.html#3.3.1
+  10. http://gcc.gnu.org/gcc-3.3/changes.html
+  11. http://gcc.gnu.org/gcc-3.3/buildstat.html
+  12. https://gcc.gnu.org/onlinedocs/gcc/Contributors.html
+  13. http://gcc.gnu.org/index.html
+  14. mailto:gcc at gcc.gnu.org
+  15. http://gcc.gnu.org/mirrors.html
+  16. https://gcc.gnu.org/onlinedocs/
+  17. mailto:gcc-help at gcc.gnu.org
+  18. mailto:gcc at gcc.gnu.org
+  19. https://gcc.gnu.org/lists.html
+  20. http://www.fsf.org/
+  21. https://gcc.gnu.org/about.html
+  22. http://validator.w3.org/check/referer
+======================================================================
+http://gcc.gnu.org/gcc-3.3/changes.html
+                             GCC 3.3 Release Series
+                        Changes, New Features, and Fixes
+
+   The latest release in the 3.3 release series is [1]GCC 3.3.6.
+
+Caveats
+
+     * The preprocessor no longer accepts multi-line string literals. They
+       were deprecated in 3.0, 3.1, and 3.2.
+     * The preprocessor no longer supports the -A- switch when appearing
+       alone. -A- followed by an assertion is still supported.
+     * Support for all the systems [2]obsoleted in GCC 3.1 has been
+       removed from GCC 3.3. See below for a [3]list of systems which are
+       obsoleted in this release.
+     * Checking for null format arguments has been decoupled from the rest
+       of the format checking mechanism. Programs which use the format
+       attribute may regain this functionality by using the new [4]nonnull
+       function attribute. Note that all functions for which GCC has a
+       built-in format attribute, an appropriate built-in nonnull
+       attribute is also applied.
+     * The DWARF (version 1) debugging format has been deprecated and will
+       be removed in a future version of GCC. Version 2 of the DWARF
+       debugging format will continue to be supported for the foreseeable
+       future.
+     * The C and Objective-C compilers no longer accept the "Naming Types"
+       extension (typedef foo = bar); it was already unavailable in C++.
+       Code which uses it will need to be changed to use the "typeof"
+       extension instead: typedef typeof(bar) foo. (We have removed this
+       extension without a period of deprecation because it has caused the
+       compiler to crash since version 3.0 and no one noticed until very
+       recently. Thus we conclude it is not in widespread use.)
+     * The -traditional C compiler option has been removed. It was
+       deprecated in 3.1 and 3.2. (Traditional preprocessing remains
+       available.) The <varargs.h> header, used for writing variadic
+       functions in traditional C, still exists but will produce an error
+       message if used.
+     * GCC 3.3.1 automatically places zero-initialized variables in the
+       .bss section on some operating systems. Versions of GNU Emacs up to
+       (and including) 21.3 will not work correctly when using this
+       optimization; you can use -fno-zero-initialized-in-bss to disable
+       it.
+
+General Optimizer Improvements
+
+     * A new scheme for accurately describing processor pipelines, the
+       [5]DFA scheduler, has been added.
+     * Pavel Nejedly, Charles University Prague, has contributed new file
+       format used by the edge coverage profiler (-fprofile-arcs).
+       The new format is robust and diagnoses common mistakes where
+       profiles from different versions (or compilations) of the program
+       are combined resulting in nonsensical profiles and slow code to
+       produced with profile feedback. Additionally this format allows
+       extra data to be gathered. Currently, overall statistics are
+       produced helping optimizers to identify hot spots of a program
+       globally replacing the old intra-procedural scheme and resulting in
+       better code. Note that the gcov tool from older GCC versions will
+       not be able to parse the profiles generated by GCC 3.3 and vice
+       versa.
+     * Jan Hubicka, SuSE Labs, has contributed a new superblock formation
+       pass enabled using -ftracer. This pass simplifies the control flow
+       of functions allowing other optimizations to do better job.
+       He also contributed the function reordering pass
+       (-freorder-functions) to optimize function placement using profile
+       feedback.
+
+New Languages and Language specific improvements
+
+  C/ObjC/C++
+
+     * The preprocessor now accepts directives within macro arguments. It
+       processes them just as if they had not been within macro arguments.
+     * The separate ISO and traditional preprocessors have been completely
+       removed. The front end handles either type of preprocessed output
+       if necessary.
+     * In C99 mode preprocessor arithmetic is done in the precision of the
+       target's intmax_t, as required by that standard.
+     * The preprocessor can now copy comments inside macros to the output
+       file when the macro is expanded. This feature, enabled using the
+       -CC option, is intended for use by applications which place
+       metadata or directives inside comments, such as lint.
+     * The method of constructing the list of directories to be searched
+       for header files has been revised. If a directory named by a -I
+       option is a standard system include directory, the option is
+       ignored to ensure that the default search order for system
+       directories and the special treatment of system header files are
+       not defeated.
+     * A few more [6]ISO C99 features now work correctly.
+     * A new function attribute, nonnull, has been added which allows
+       pointer arguments to functions to be specified as requiring a
+       non-null value. The compiler currently uses this information to
+       issue a warning when it detects a null value passed in such an
+       argument slot.
+     * A new type attribute, may_alias, has been added. Accesses to
+       objects with types with this attribute are not subjected to
+       type-based alias analysis, but are instead assumed to be able to
+       alias any other type of objects, just like the char type.
+
+  C++
+
+     * Type based alias analysis has been implemented for C++ aggregate
+       types.
+
+  Objective-C
+
+     * Generate an error if Objective-C objects are passed by value in
+       function and method calls.
+     * When -Wselector is used, check the whole list of selectors at the
+       end of compilation, and emit a warning if a @selector() is not
+       known.
+     * Define __NEXT_RUNTIME__ when compiling for the NeXT runtime.
+     * No longer need to include objc/objc-class.h to compile self calls
+       in class methods (NeXT runtime only).
+     * New -Wundeclared-selector option.
+     * Removed selector bloating which was causing object files to be 10%
+       bigger on average (GNU runtime only).
+     * Using at run time @protocol() objects has been fixed in certain
+       situations (GNU runtime only).
+     * Type checking has been fixed and improved in many situations
+       involving protocols.
+
+  Java
+
+     * The java.sql and javax.sql packages now implement the JDBC 3.0 (JDK
+       1.4) API.
+     * The JDK 1.4 assert facility has been implemented.
+     * The bytecode interpreter is now direct threaded and thus faster.
+
+  Fortran
+
+     * Fortran improvements are listed in [7]the Fortran documentation.
+
+  Ada
+
+     * Ada tasking now works with glibc 2.3.x threading libraries.
+
+New Targets and Target Specific Improvements
+
+     * The following changes have been made to the HP-PA port:
+          + The port now defaults to scheduling for the PA8000 series of
+            processors.
+          + Scheduling support for the PA7300 processor has been added.
+          + The 32-bit port now supports weak symbols under HP-UX 11.
+          + The handling of initializers and finalizers has been improved
+            under HP-UX 11. The 64-bit port no longer uses collect2.
+          + Dwarf2 EH support has been added to the 32-bit GNU/Linux port.
+          + ABI fixes to correct the passing of small structures by value.
+     * The SPARC, HP-PA, SH4, and x86/pentium ports have been converted to
+       use the DFA processor pipeline description.
+     * The following NetBSD configurations for the SuperH processor family
+       have been added:
+          + SH3, big-endian, sh-*-netbsdelf*
+          + SH3, little-endian, shle-*-netbsdelf*
+          + SH5, SHmedia, big-endian, 32-bit default, sh5-*-netbsd*
+          + SH5, SHmedia, little-endian, 32-bit default, sh5le-*-netbsd*
+          + SH5, SHmedia, big-endian, 64-bit default, sh64-*-netbsd*
+          + SH5, SHmedia, little-endian, 64-bit default, sh64le-*-netbsd*
+     * The following changes have been made to the IA-32/x86-64 port:
+          + SSE2 and 3dNOW! intrinsics are now supported.
+          + Support for thread local storage has been added to the IA-32
+            and x86-64 ports.
+          + The x86-64 port has been significantly improved.
+     * The following changes have been made to the MIPS port:
+          + All configurations now accept the -mabi switch. Note that you
+            will need appropriate multilibs for this option to work
+            properly.
+          + ELF configurations will always pass an ABI flag to the
+            assembler, except when the MIPS EABI is selected.
+          + -mabi=64 no longer selects MIPS IV code.
+          + The -mcpu option, which was deprecated in 3.1 and 3.2, has
+            been removed from this release.
+          + -march now changes the core ISA level. In previous releases,
+            it would change the use of processor-specific extensions, but
+            would leave the core ISA unchanged. For example, mips64-elf
+            -march=r8000 will now generate MIPS IV code.
+          + Under most configurations, -mipsN now acts as a synonym for
+            -march.
+          + There are some new preprocessor macros to describe the -march
+            and -mtune settings. See the documentation of those options
+            for details.
+          + Support for the NEC VR-Series processors has been added. This
+            includes the 54xx, 5500, and 41xx series.
+          + Support for the Sandcraft sr71k processor has been added.
+     * The following changes have been made to the S/390 port:
+          + Support to build the Java runtime libraries has been added.
+            Java is now enabled by default on s390-*-linux* and
+            s390x-*-linux* targets.
+          + Multilib support for the s390x-*-linux* target has been added;
+            this allows to build 31-bit binaries using the -m31 option.
+          + Support for thread local storage has been added.
+          + Inline assembler code may now use the 'Q' constraint to
+            specify memory operands without index register.
+          + Various platform-specific performance improvements have been
+            implemented; in particular, the compiler now uses the BRANCH
+            ON COUNT family of instructions and makes more frequent use of
+            the TEST UNDER MASK family of instructions.
+     * The following changes have been made to the PowerPC port:
+          + Support for IBM Power4 processor added.
+          + Support for Motorola e500 SPE added.
+          + Support for AIX 5.2 added.
+          + Function and Data sections now supported on AIX.
+          + Sibcall optimizations added.
+     * The support for H8 Tiny is added to the H8/300 port with -mn.
+
+Obsolete Systems
+
+   Support for a number of older systems has been declared obsolete in GCC
+   3.3. Unless there is activity to revive them, the next release of GCC
+   will have their sources permanently removed.
+
+   All configurations of the following processor architectures have been
+   declared obsolete:
+     * Matsushita MN10200, mn10200-*-*
+     * Motorola 88000, m88k-*-*
+     * IBM ROMP, romp-*-*
+
+   Also, some individual systems have been obsoleted:
+     * Alpha
+          + Interix, alpha*-*-interix*
+          + Linux libc1, alpha*-*-linux*libc1*
+          + Linux ECOFF, alpha*-*-linux*ecoff*
+     * ARM
+          + Generic a.out, arm*-*-aout*
+          + Conix, arm*-*-conix*
+          + "Old ABI," arm*-*-oabi
+          + StrongARM/COFF, strongarm-*-coff*
+     * HPPA (PA-RISC)
+          + Generic OSF, hppa1.0-*-osf*
+          + Generic BSD, hppa1.0-*-bsd*
+          + HP/UX versions 7, 8, and 9, hppa1.[01]-*-hpux[789]*
+          + HiUX, hppa*-*-hiux*
+          + Mach Lites, hppa*-*-lites*
+     * Intel 386 family
+          + Windows NT 3.x, i?86-*-win32
+     * MC68000 family
+          + HP systems, m68000-hp-bsd* and m68k-hp-bsd*
+          + Sun systems, m68000-sun-sunos*, m68k-sun-sunos*, and
+            m68k-sun-mach*
+          + AT&T systems, m68000-att-sysv*
+          + Atari systems, m68k-atari-sysv*
+          + Motorola systems, m68k-motorola-sysv*
+          + NCR systems, m68k-ncr-sysv*
+          + Plexus systems, m68k-plexus-sysv*
+          + Commodore systems, m68k-cbm-sysv*
+          + Citicorp TTI, m68k-tti-*
+          + Unos, m68k-crds-unos*
+          + Concurrent RTU, m68k-ccur-rtu*
+          + Linux a.out, m68k-*-linux*aout*
+          + Linux libc1, m68k-*-linux*libc1*
+          + pSOS, m68k-*-psos*
+     * MIPS
+          + Generic ECOFF, mips*-*-ecoff*
+          + SINIX, mips-sni-sysv4
+          + Orion RTEMS, mips64orion-*-rtems*
+     * National Semiconductor 32000
+          + OpenBSD, ns32k-*-openbsd*
+     * POWER (aka RS/6000) and PowerPC
+          + AIX versions 1, 2, and 3, rs6000-ibm-aix[123]*
+          + Bull BOSX, rs6000-bull-bosx
+          + Generic Mach, rs6000-*-mach*
+          + Generic SysV, powerpc*-*-sysv*
+          + Linux libc1, powerpc*-*-linux*libc1*
+     * Sun SPARC
+          + Generic a.out, sparc-*-aout*, sparclet-*-aout*,
+            sparclite-*-aout*, and sparc86x-*-aout*
+          + NetBSD a.out, sparc-*-netbsd*aout*
+          + Generic BSD, sparc-*-bsd*
+          + ChorusOS, sparc-*-chorusos*
+          + Linux a.out, sparc-*-linux*aout*
+          + Linux libc1, sparc-*-linux*libc1*
+          + LynxOS, sparc-*-lynxos*
+          + Solaris on HAL hardware, sparc-hal-solaris2*
+          + SunOS versions 3 and 4, sparc-*-sunos[34]*
+     * NEC V850
+          + RTEMS, v850-*-rtems*
+     * VAX
+          + VMS, vax-*-vms*
+
+Documentation improvements
+
+Other significant improvements
+
+     * Almost all front-end dependencies in the compiler have been
+       separated out into a set of language hooks. This should make adding
+       a new front end clearer and easier.
+     * One effect of removing the separate preprocessor is a small
+       increase in the robustness of the compiler in general, and the
+       maintainability of target descriptions. Previously target-specific
+       built-in macros and others, such as __FAST_MATH__, had to be
+       handled with so-called specs that were hard to maintain. Often they
+       would fail to behave properly when conflicting options were
+       supplied on the command line, and define macros in the user's
+       namespace even when strict ISO compliance was requested.
+       Integrating the preprocessor has cleanly solved these issues.
+     * The Makefile suite now supports redirection of make install by
+       means of the variable DESTDIR.
+     __________________________________________________________________
+
+GCC 3.3
+
+   Detailed release notes for the GCC 3.3 release follow.
+
+  Bug Fixes
+
+    bootstrap failures
+
+     * [8]10140 cross compiler build failures: missing __mempcpy (DUP:
+       [9]10198,[10]10338)
+
+    Internal compiler errors (multi-platform)
+
+     * [11]3581 large string causes segmentation fault in cc1
+     * [12]4382 __builtin_{set,long}jmp with -O3 can crash the compiler
+     * [13]5533 (c++) ICE when processing std::accumulate(begin, end,
+       init, invalid_op)
+     * [14]6387 -fpic -gdwarf-2 -g1 combination gives ICE in dwarf2out
+     * [15]6412 (c++) ICE in retrieve_specialization
+     * [16]6620 (c++) partial template specialization causes an ICE
+       (segmentation fault)
+     * [17]6663 (c++) ICE with attribute aligned
+     * [18]7068 ICE with incomplete types
+     * [19]7083 (c++) ICE using -gstabs with dodgy class derivation
+     * [20]7647 (c++) ICE when data member has the name of the enclosing
+       class
+     * [21]7675 ICE in fixup_var_refs_1
+     * [22]7718 'complex' template instantiation causes ICE
+     * [23]8116 (c++) ICE in member template function
+     * [24]8358 (ada) Ada compiler accesses freed memory, crashes
+     * [25]8511 (c++) ICE: (hopefully) reproducible cc1plus segmentation
+       fault
+     * [26]8564 (c++) ICE in find_function_data, in function.c
+     * [27]8660 (c++) template overloading ICE in tsubst_expr, in cp/pt.c
+     * [28]8766 (c++) ICE after failed initialization of static template
+       variable
+     * [29]8803 ICE in instantiate_virtual_regs_1, in function.c
+     * [30]8846 (c++) ICE after diagnostic if fr_FR at euro locale is set
+     * [31]8906 (c++) ICE (Segmentation fault) when parsing nested-class
+       definition
+     * [32]9216 (c++) ICE on missing template parameter
+     * [33]9261 (c++) ICE in arg_assoc, in cp/decl2.c
+     * [34]9263 (fortran) ICE caused by invalid PARAMETER in implied DO
+       loop
+     * [35]9429 (c++) ICE in template instantiation with a pointered new
+       operator
+     * [36]9516 Internal error when using a big array
+     * [37]9600 (c++) ICE with typedefs in template class
+     * [38]9629 (c++) virtual inheritance segfault
+     * [39]9672 (c++) ICE: Error reporting routines re-entered
+     * [40]9749 (c++) ICE in write_expression on invalid function
+       prototype
+     * [41]9794 (fortran) ICE: floating point exception during constant
+       folding
+     * [42]9829 (c++) Missing colon in nested namespace usage causes ICE
+     * [43]9916 (c++) ICE with noreturn function in ?: statement
+     * [44]9936 ICE with local function and variable-length 2d array
+     * [45]10262 (c++) cc1plus crashes with large generated code
+     * [46]10278 (c++) ICE in parser for invalid code
+     * [47]10446 (c++) ICE on definition of nonexistent member function of
+       nested class in a class template
+     * [48]10451 (c++) ICE in grokdeclarator on spurious mutable
+       declaration
+     * [49]10506 (c++) ICE in build_new at cp/init.c with
+       -fkeep-inline-functions and multiple inheritance
+     * [50]10549 (c++) ICE in store_bit_field on bitfields that exceed the
+       precision of the declared type
+
+    Optimization bugs
+
+     * [51]2001 Inordinately long compile times in reload CSE regs
+     * [52]2391 Exponential compilation time explosion in combine
+     * [53]2960 Duplicate loop conditions even with -Os
+     * [54]4046 redundant conditional branch
+     * [55]6405 Loop-unrolling related performance regressions
+     * [56]6798 very long compile time with large case-statement
+     * [57]6871 const objects shouldn't be moved to .bss
+     * [58]6909 problem w/ -Os on modified loop-2c.c test case
+     * [59]7189 gcc -O2 -Wall does not print ``control reaches end of
+       non-void function'' warning
+     * [60]7642 optimization problem with signbit()
+     * [61]8634 incorrect code for inlining of memcpy under -O2
+     * [62]8750 Cygwin prolog generation erroneously emitting __alloca as
+       regular function call
+
+    C front end
+
+     * [63]2161 long if-else cascade overflows parser stack
+     * [64]4319 short accepted on typedef'd char
+     * [65]8602 incorrect line numbers in warning messages when using
+       inline functions
+     * [66]9177 -fdump-translation-unit: C front end deletes function_decl
+       AST nodes and breaks debugging dumps
+     * [67]9853 miscompilation of non-constant structure initializer
+
+    c++ compiler and library
+
+     * [68]45 legal template specialization code is rejected (DUP:
+       [69]3784)
+     * [70]764 lookup failure: friend operator and dereferencing a pointer
+       and templates (DUP: [71]5116)
+     * [72]2862 gcc accepts invalid explicit instantiation syntax (DUP:
+       2863)
+     * [73]3663 G++ doesn't check access control during template
+       instantiation
+     * [74]3797 gcc fails to emit explicit specialization of a template
+       member
+     * [75]3948 Two destructors are called when no copy destructor is
+       defined (ABI change)
+     * [76]4137 Conversion operator within template is not accepted
+     * [77]4361 bogus ambiguity taking the address of a member template
+     * [78]4802 g++ accepts illegal template code (access to private
+       member; DUP: [79]5837)
+     * [80]4803 inline function is used but never defined, and g++ does
+       not object
+     * [81]5094 Partial specialization cannot be friend?
+     * [82]5730 complex<double>::norm() -- huge slowdown from egcs-2.91.66
+     * [83]6713 Regression wrt 3.0.4: g++ -O2 leads to seg fault at run
+       time
+     * [84]7015 certain __asm__ constructs rejected
+     * [85]7086 compile time regression (quadratic behavior in
+       fixup_var_refs)
+     * [86]7099 G++ doesn't set the noreturn attribute on std::exit and
+       std::abort
+     * [87]7247 copy constructor missing when inlining enabled (invalid
+       optimization?)
+     * [88]7441 string array initialization compilation time regression
+       from seconds to minutes
+     * [89]7768 __PRETTY_FUNCTION__ for template destructor is wrong
+     * [90]7804 bad printing of floating point constant in warning message
+     * [91]8099 Friend classes and template specializations
+     * [92]8117 member function pointers and multiple inheritance
+     * [93]8205 using declaration and multiple inheritance
+     * [94]8645 unnecessary non-zero checks in stl_tree.h
+     * [95]8724 explicit destructor call for incomplete class allowed
+     * [96]8805 compile time regression with many member variables
+     * [97]8691 -O3 and -fno-implicit-templates are incompatible
+     * [98]8700 unhelpful error message for binding temp to reference
+     * [99]8724 explicit destructor call for incomplete class allowed
+     * [100]8949 numeric_limits<>::denorm_min() and is_iec559 problems
+     * [101]9016 Failure to consistently constant fold "constant" C++
+       objects
+     * [102]9053 g++ confused about ambiguity of overloaded function
+       templates
+     * [103]9152 undefined virtual thunks
+     * [104]9182 basic_filebuf<> does not report errors in codecvt<>::out
+     * [105]9297 data corruption due to codegen bug (when copying.)
+     * [106]9318 i/ostream::operator>>/<<(streambuf*) broken
+     * [107]9320 Incorrect usage of traits_type::int_type in stdio_filebuf
+     * [108]9400 bogus -Wshadow warning: shadowed declaration of this in
+       local classes
+     * [109]9424 i/ostream::operator>>/<<(streambuf*) drops characters
+     * [110]9425 filebuf::pbackfail broken (DUP: [111]9439)
+     * [112]9474 GCC freezes in compiling a weird code mixing <iostream>
+       and <iostream.h>
+     * [113]9548 Incorrect results from setf(ios::fixed) and precision(-1)
+       [114][DR 231]
+     * [115]9555 ostream inserters fail to set badbit on exception
+     * [116]9561 ostream inserters rethrow exception of wrong type
+     * [117]9563 ostream::sentry returns true after a failed preparation
+     * [118]9582 one-definition rule violation in std::allocator
+     * [119]9622 __PRETTY_FUNCTION__ incorrect in template destructors
+     * [120]9683 bug in initialization chains for static const variables
+       from template classes
+     * [121]9791 -Woverloaded-virtual reports hiding of destructor
+     * [122]9817 collate::compare doesn't handle nul characters
+     * [123]9825 filebuf::sputbackc breaks sbumpc
+     * [124]9826 operator>>(basic_istream, basic_string) fails to compile
+       with custom traits
+     * [125]9924 Multiple using statements for builtin functions not
+       allowed
+     * [126]9946 destructor is not called for temporary object
+     * [127]9964 filebuf::close() sometimes fails to close file
+     * [128]9988 filebuf::overflow writes EOF to file
+     * [129]10033 optimization breaks polymorphic references w/ typeid
+       operator
+     * [130]10097 filebuf::underflow drops characters
+     * [131]10132 filebuf destructor can throw exceptions
+     * [132]10180 gcc fails to warn about non-inlined function
+     * [133]10199 method parametrized by template does not work everywhere
+     * [134]10300 use of array-new (nothrow) in segfaults on NULL return
+     * [135]10427 Stack corruption with variable-length automatic arrays
+       and virtual destructors
+     * [136]10503 Compilation never stops in fixed_type_or_null
+
+    Objective-C
+
+     * [137]5956 selectors aren't matched properly when added to the
+       selector table
+
+    Fortran compiler and library
+
+     * [138]1832 list directed i/o overflow hangs, -fbounds-check doesn't
+       detect
+     * [139]3924 g77 generates code that is rejected by GAS if COFF debug
+       info requested
+     * [140]5634 doc: explain that configure --prefix=~/... does not work
+     * [141]6367 multiple repeat counts confuse namelist read into array
+     * [142]6491 Logical operations error on logicals when using
+       -fugly-logint
+     * [143]6742 Generation of C++ Prototype for FORTRAN and extern "C"
+     * [144]7113 Failure of g77.f-torture/execute/f90-intrinsic-bit.f -Os
+       on irix6.5
+     * [145]7236 OPEN(...,RECL=nnn,...) without ACCESS='DIRECT' should
+       assume a direct access file
+     * [146]7278 g77 "bug"; the executable misbehaves (with -O2
+       -fno-automatic)
+     * [147]7384 DATE_AND_TIME milliseconds field inactive on Windows
+     * [148]7388 Incorrect output with 0-based array of characters
+     * [149]8587 Double complex zero ** double precision number -> NaN
+       instead of zero
+     * [150]9038 -ffixed-line-length-none -x f77-cpp-input gives: Warning:
+       unknown register name line-length-none
+     * [151]10197 Direct access files not unformatted by default
+
+    Java compiler and library
+
+     * [152]6005 gcj fails to build rhug on alpha
+     * [153]6389 System.getProperty("") should always throw an
+       IllegalArgumentException
+     * [154]6576 java.util.ResourceBundle.getResource ignores locale
+     * [155]6652 new java.io.File("").getCanonicalFile() throws exception
+     * [156]7060 getMethod() doesn't search super interface
+     * [157]7073 bytecode interpreter gives wrong answer for interface
+       getSuperclass()
+     * [158]7180 possible bug in
+       javax.naming.spi.NamingManager.getPlusPath()
+     * [159]7416 java.security startup refs "GNU libgcj.security"
+     * [160]7570 Runtime.exec with null envp: child doesn't inherit parent
+       env (DUP: [161]7578)
+     * [162]7611 Internal error while compiling libjava with -O
+     * [163]7709 NullPointerException in _Jv_ResolvePoolEntry
+     * [164]7766 ZipInputStream.available returns 0 immediately after
+       construction
+     * [165]7785 Calendar.getTimeInMillis/setTimeInMillis should be public
+     * [166]7786 TimeZone.getDSTSavings() from JDK1.4 not implemented
+     * [167]8142 '$' in class names vs. dlopen 'dynamic string tokens'
+     * [168]8234 ZipInputStream chokes when InputStream.read() returns
+       small chunks
+     * [169]8415 reflection bug: exception info for Method
+     * [170]8481 java.Random.nextInt(int) may return negative
+     * [171]8593 Error reading GZIPped files with BufferedReader
+     * [172]8759 java.beans.Introspector has no flushCaches() or
+       flushFromCaches() methods
+     * [173]8997 spin() calls Thread.sleep
+     * [174]9253 on win32, java.io.File.listFiles("C:\\") returns pwd
+       instead of the root content of C:
+     * [175]9254 java::lang::Object::wait(), threads-win32.cc returns
+       wrong return codes
+     * [176]9271 Severe bias in java.security.SecureRandom
+
+    Ada compiler and library
+
+     * [177]6767 make gnatlib-shared fails on -laddr2line
+     * [178]9911 gnatmake fails to link when GCC configured with
+       --with-sjlj-exceptions=yes
+     * [179]10020 Can't bootstrap gcc on AIX with Ada enabled
+     * [180]10546 Ada tasking not working on Red Hat 9
+
+    preprocessor
+
+     * [181]7029 preprocessor should ignore #warning with -M
+
+    ARM-specific
+
+     * [182]2903 [arm] Optimization bug with long long arithmetic
+     * [183]7873 arm-linux-gcc fails when assigning address to a bit field
+
+    FreeBSD-specific
+
+     * [184]7680 float functions undefined in math.h/cmath with #define
+       _XOPEN_SOURCE
+
+    HP-UX or HP-PA-specific
+
+     * [185]8705 [HP-PA] ICE in emit_move_insn_1, in expr.c
+     * [186]9986 [HP-UX] Incorrect transformation of fputs_unlocked to
+       fputc_unlocked
+     * [187]10056 [HP-PA] ICE at -O2 when building c++ code from doxygen
+
+    m68hc11-specific
+
+     * [188]6744 Bad assembler code generated: reference to pseudo
+       register z
+     * [189]7361 Internal compiler error in reload_cse_simplify_operands,
+       in reload1.c
+
+    MIPS-specific
+
+     * [190]9496 [mips-linux] bug in optimizer?
+
+    PowerPC-specific
+
+     * [191]7067 -Os with -mcpu=powerpc optimizes for speed (?) instead of
+       space
+     * [192]8480 reload ICEs for LAPACK code on powerpc64-linux
+     * [193]8784 [AIX] Internal compiler error in simplify_gen_subreg
+     * [194]10315 [powerpc] ICE: in extract_insn, in recog.c
+
+    SPARC-specific
+
+     * [195]10267 (documentation) Wrong build instructions for
+       *-*-solaris2*
+
+    x86-specific (Intel/AMD)
+
+     * [196]7916 ICE in instantiate_virtual_register_1
+     * [197]7926 (c++) i486 instructions in header files make c++ programs
+       crash on i386
+     * [198]8555 ICE in gen_split_1231
+     * [199]8994 ICE with -O -march=pentium4
+     * [200]9426 ICE with -fssa -funroll-loops -fprofile-arcs
+     * [201]9806 ICE in inline assembly with -fPIC flag
+     * [202]10077 gcc -msse2 generates movd to move dwords between xmm
+       regs
+     * [203]10233 64-bit comparison only comparing bottom 32-bits
+     * [204]10286 type-punning doesn't work with __m64 and -O
+     * [205]10308 [x86] ICE with -O -fgcse or -O2
+     __________________________________________________________________
+
+GCC 3.3.1
+
+  Bug Fixes
+
+   This section lists the problem reports (PRs) from GCC's bug tracking
+   system that are known to be fixed in the 3.3.1 release. This list might
+   not be complete (that is, it is possible that some PRs that have been
+   fixed are not listed here).
+
+    Bootstrap failures
+
+     * [206]11272 [Solaris] make bootstrap fails while building libstdc++
+
+    Internal compiler errors (multi-platform)
+
+     * [207]5754 ICE on invalid nested template class
+     * [208]6597 ICE in set_mem_alias_set compiling Qt with -O2 on ia64
+       and --enable-checking
+     * [209]6949 (c++) ICE in tsubst_decl, in cp/pt.c
+     * [210]7053 (c++) ICE when declaring a function already defined as a
+       friend method of a template class
+     * [211]8164 (c++) ICE when using different const expressions as
+       template parameter
+     * [212]8384 (c++) ICE in is_base_type, in dwarf2out.c
+     * [213]9559 (c++) ICE with invalid initialization of a static const
+     * [214]9649 (c++) ICE in finish_member_declaration, in cp/semantics.c
+       when redeclaring a static member variable
+     * [215]9864 (fortran) ICE in add_abstract_origin_attribute, in
+       dwarfout.c with -g -O -finline-functions
+     * [216]10432 (c++) ICE in poplevel, in cp/decl.c
+     * [217]10475 ICE in subreg_highpart_offset for code with long long
+     * [218]10635 (c++) ICE when dereferencing an incomplete type casted
+       from a void pointer
+     * [219]10661 (c++) ICE in instantiate_decl, in cp/pt.c while
+       instantiating static member variables
+     * [220]10700 ICE in copy_to_mode_reg on 64-bit targets
+     * [221]10712 (c++) ICE in constructor_name_full, in cp/decl2.c
+     * [222]10796 (c++) ICE when defining an enum with two values: -1 and
+       MAX_INT_64BIT
+     * [223]10890 ICE in merge_assigned_reloads building Linux 2.4.2x
+       sched.c
+     * [224]10939 (c++) ICE with template code
+     * [225]10956 (c++) ICE when specializing a template member function
+       of a template class, in tsubst, in cp/pt.c
+     * [226]11041 (c++) ICE: const myclass &x = *x; (when operator*()
+       defined)
+     * [227]11059 (c++) ICE with empty union
+     * [228]11083 (c++) ICE in commit_one_edge_insertion, in cfgrtl.c with
+       -O2 -fnon-call-exceptions
+     * [229]11105 (c++) ICE in mangle_conv_op_name_for_type
+     * [230]11149 (c++) ICE on error when instantiation with call function
+       of a base type
+     * [231]11228 (c++) ICE on new-expression using array operator new and
+       default-initialization
+     * [232]11282 (c++) Infinite memory usage after syntax error
+     * [233]11301 (fortran) ICE with -fno-globals
+     * [234]11308 (c++) ICE when using an enum type name as if it were a
+       class or namespace
+     * [235]11473 (c++) ICE with -gstabs when empty struct inherits from
+       an empty struct
+     * [236]11503 (c++) ICE when instantiating template with ADDR_EXPR
+     * [237]11513 (c++) ICE in push_template_decl_real, in cp/pt.c:
+       template member functions
+
+    Optimization bugs
+
+     * [238]11198 -O2 -frename-registers generates wrong code (aliasing
+       problem)
+     * [239]11304 Wrong code production with -fomit-frame-pointer
+     * [240]11381 volatile memory access optimized away
+     * [241]11536 [strength-reduce] -O2 optimization produces wrong code
+     * [242]11557 constant folding bug generates wrong code
+
+    C front end
+
+     * [243]5897 No warning for statement after return
+     * [244]11279 DWARF-2 output mishandles large enums
+
+    Preprocessor bugs
+
+     * [245]11022 no warning for non-compatible macro redefinition
+
+    C++ compiler and library
+
+     * [246]2330 static_cast<>() to a private base is allowed
+     * [247]5388 Incorrect message "operands to ?: have different types"
+     * [248]5390 Libiberty fails to demangle multi-digit template
+       parameters
+     * [249]7877 Incorrect parameter passing to specializations of member
+       function templates
+     * [250]9393 Anonymous namespaces and compiling the same file twice
+     * [251]10032 -pedantic converts some errors to warnings
+     * [252]10468 const typeof(x) is non-const, but only in templates
+     * [253]10527 confused error message with "new int()" parameter
+       initializer
+     * [254]10679 parameter MIN_INLINE_INSNS is not honored
+     * [255]10682 gcc chokes on a typedef for an enum inside a class
+       template
+     * [256]10689 pow(std::complex(0),1/3) returns (nan, nan) instead of
+       0.
+     * [257]10845 template member function (with nested template as
+       parameter) cannot be called anymore if another unrelated template
+       member function is defined
+     * [258]10849 Cannot define an out-of-class specialization of a
+       private nested template class
+     * [259]10888 Suppress -Winline warnings for system headers
+     * [260]10929 -Winline warns about functions for which no definition
+       is visible
+     * [261]10931 valid conversion static_cast<const unsigned
+       int&>(lvalue-of-type-int) is rejected
+     * [262]10940 Bad code with explicit specialization
+     * [263]10968 If member function implicitly instantiated, explicit
+       instantiation of class fails to instantiate it
+     * [264]10990 Cannot convert with dynamic_cast<> to a private base
+       class from within a member function
+     * [265]11039 Bad interaction between implicit typename deprecation
+       and friendship
+     * [266]11062 (libstdc++) avoid __attribute__ ((unused)); say
+       "__unused__" instead
+     * [267]11095 C++ iostream manipulator causes segfault when called
+       with negative argument
+     * [268]11098 g++ doesn't emit complete debugging information for
+       local variables in destructors
+     * [269]11137 GNU/Linux shared library constructors not called unless
+       there's one global object
+     * [270]11154 spurious ambiguity report for template class
+       specialization
+     * [271]11329 Compiler cannot find user defined implicit typecast
+     * [272]11332 Spurious error with casts in ?: expression
+     * [273]11431 static_cast behavior with subclasses when default
+       constructor available
+     * [274]11528 money_get facet does not accept "$.00" as valid
+     * [275]11546 Type lookup problems in out-of-line definition of a
+       class doubly nested from a template class
+     * [276]11567 C++ code containing templated member function with same
+       name as pure virtual member function results in linking failure
+     * [277]11645 Failure to deal with using and private inheritance
+
+    Java compiler and library
+
+     * [278]5179 Qualified static field access doesn't initialize its
+       class
+     * [279]8204 gcj -O2 to native reorders certain instructions
+       improperly
+     * [280]10838 java.io.ObjectInputStream syntax error
+     * [281]10886 The RMI registry that comes with GCJ does not work
+       correctly
+     * [282]11349 JNDI URL context factories not located correctly
+
+    x86-specific (Intel/AMD)
+
+     * [283]4823 ICE on inline assembly code
+     * [284]8878 miscompilation with -O and SSE
+     * [285]9815 (c++ library) atomicity.h - fails to compile with -O3
+       -masm=intel
+     * [286]10402 (inline assembly) [x86] ICE in merge_assigned_reloads,
+       in reload1.c
+     * [287]10504 ICE with SSE2 code and -O3 -mcpu=pentium4 -msse2
+     * [288]10673 ICE for x86-64 on freebsd libc vfprintf.c source
+     * [289]11044 [x86] out of range loop instructions for FP code on K6
+     * [290]11089 ICE: instantiate_virtual_regs_lossage while using SSE
+       built-ins
+     * [291]11420 [x86_64] gcc generates invalid asm code when "-O -fPIC"
+       is used
+
+    SPARC- or Solaris- specific
+
+     * [292]9362 solaris 'as' dies when fed .s and "-gstabs"
+     * [293]10142 [SPARC64] gcc produces wrong code when passing
+       structures by value
+     * [294]10663 New configure check aborts with Sun tools.
+     * [295]10835 combinatorial explosion in scheduler on HyperSPARC
+     * [296]10876 ICE in calculate_giv_inc when building KDE
+     * [297]10955 wrong code at -O3 for structure argument in context of
+       structure return
+     * [298]11018 -mcpu=ultrasparc busts tar-1.13.25
+     * [299]11556 [sparc64] ICE in gen_reg_rtx() while compiling 2.6.x
+       Linux kernel
+
+    ia64 specific
+
+     * [300]10907 gcc violates the ia64 ABI (GP must be preserved)
+     * [301]11320 scheduler bug (in machine depended reorganization pass)
+     * [302]11599 bug with conditional and __builtin_prefetch
+
+    PowerPC specific
+
+     * [303]9745 [powerpc] gcc mis-compiles libmcrypt (alias problem
+       during loop)
+     * [304]10871 error in rs6000_stack_info save_size computation
+     * [305]11440 gcc mis-compiles c++ code (libkhtml) with -O2, -fno-gcse
+       cures it
+
+    m68k-specific
+
+     * [306]7594 [m68k] ICE on legal code associated with simplify-rtx
+     * [307]10557 [m68k] ICE in subreg_offset_representable_p
+     * [308]11054 [m68k] ICE in reg_overlap_mentioned_p
+
+    ARM-specific
+
+     * [309]10834 [arm] GCC 3.3 still generates incorrect instructions for
+       functions with __attribute__ ((interrupt ("IRQ")))
+     * [310]10842 [arm] Clobbered link register is copied to pc under
+       certain circumstances
+     * [311]11052 [arm] noce_process_if_block() can lose REG_INC notes
+     * [312]11183 [arm] ICE in change_address_1 (3.3) / subreg_hard_regno
+       (3.4)
+
+    MIPS-specific
+
+     * [313]11084 ICE in propagate_one_insn, in flow.c
+
+    SH-specific
+
+     * [314]10331 can't compile c++ part of gcc cross compiler for sh-elf
+     * [315]10413 [SH] ICE in reload_cse_simplify_operands, in reload1.c
+     * [316]11096 i686-linux to sh-linux cross compiler fails to compile
+       C++ files
+
+    GNU/Linux (or Hurd?) specific
+
+     * [317]2873 Bogus fixinclude of stdio.h from glibc 2.2.3
+
+    UnixWare specific
+
+     * [318]3163 configure bug: gcc/aclocal.m4 mmap test fails on UnixWare
+       7.1.1
+
+    Cygwin (or mingw) specific
+
+     * [319]5287 ICE with dllimport attribute
+     * [320]10148 [MingW/CygWin] Compiler dumps core
+
+    DJGPP specific
+
+     * [321]8787 GCC fails to emit .intel_syntax when invoked with
+       -masm=intel on DJGPP
+
+    Darwin (and MacOS X) specific
+
+     * [322]10900 trampolines crash
+
+    Documentation
+
+     * [323]1607 (c++) Format attributes on methods undocumented
+     * [324]4252 Invalid option `-fdump-translation-unit'
+     * [325]4490 Clarify restrictions on -m96bit-long-double,
+       -m128bit-long-double
+     * [326]10355 document an issue with regparm attribute on some systems
+       (e.g. Solaris)
+     * [327]10726 (fortran) Documentation for function "IDate Intrinsic
+       (Unix)" is wrong
+     * [328]10805 document bug in old version of Sun assembler
+     * [329]10815 warn against GNU binutils on AIX
+     * [330]10877 document need for newer binutils on i?86-*-linux-gnu
+     * [331]11280 Manual incorrect with respect to -freorder-blocks
+     * [332]11466 Document -mlittle-endian and its restrictions for the
+       sparc64 port
+
+    Testsuite bugs (compiler itself is not affected)
+
+     * [333]10737 newer bison causes g++.dg/parse/crash2.C to incorrectly
+       report failure
+     * [334]10810 gcc-3.3 fails make check: buffer overrun in
+       test_demangle.c
+     __________________________________________________________________
+
+GCC 3.3.2
+
+  Bug Fixes
+
+   This section lists the problem reports (PRs) from GCC's bug tracker
+   that are known to be fixed in the 3.3.2 release. This list might not be
+   complete (that is, it is possible that some PRs that have been fixed
+   are not listed here).
+
+    Bootstrap failures and problems
+
+     * [335]8336 [SCO5] bootstrap config still tries to use COFF options
+     * [336]9330 [alpha-osf] Bootstrap failure on Compaq Tru64 with
+       --enable-threads=posix
+     * [337]9631 [hppa64-linux] gcc-3.3 fails to bootstrap
+     * [338]9877 fixincludes makes a bad sys/byteorder.h on svr5 (UnixWare
+       7.1.1)
+     * [339]11687 xstormy16-elf build fails in libf2c
+     * [340]12263 [SGI IRIX] bootstrap fails during compile of
+       libf2c/libI77/backspace.c
+     * [341]12490 buffer overflow in scan-decls.c (during Solaris 9
+       fix-header processing)
+
+    Internal compiler errors (multi-platform)
+
+     * [342]7277 Casting integers to vector types causes ICE
+     * [343]7939 (c++) ICE on invalid function template specialization
+     * [344]11063 (c++) ICE on parsing initialization list of const array
+       member
+     * [345]11207 ICE with negative index in array element designator
+     * [346]11522 (fortran) g77 dwarf-2 ICE in
+       add_abstract_origin_attribute
+     * [347]11595 (c++) ICE on duplicate label definition
+     * [348]11646 (c++) ICE in commit_one_edge_insertion with
+       -fnon-call-exceptions -fgcse -O
+     * [349]11665 ICE in struct initializer when taking address
+     * [350]11852 (c++) ICE with bad struct initializer.
+     * [351]11878 (c++) ICE in cp_expr_size
+     * [352]11883 ICE with any -O on mercury-generated C code
+     * [353]11991 (c++) ICE in cxx_incomplete_type_diagnostic, in
+       cp/typeck2.c when applying typeid operator to template template
+       parameter
+     * [354]12146 ICE in lookup_template_function, in cp/pt.c
+     * [355]12215 ICE in make_label_edge with -fnon-call-exceptions
+       -fno-gcse -O2
+     * [356]12369 (c++) ICE with templates and friends
+     * [357]12446 ICE in emit_move_insn on complicated array reference
+     * [358]12510 ICE in final_scan_insn
+     * [359]12544 ICE with large parameters used in nested functions
+
+    C and optimization bugs
+
+     * [360]9862 spurious warnings with -W -finline-functions
+     * [361]10962 lookup_field is a linear search on a linked list (can be
+       slow if large struct)
+     * [362]11370 -Wunreachable-code gives false complaints
+     * [363]11637 invalid assembly with -fnon-call-exceptions
+     * [364]11885 Problem with bitfields in packed structs
+     * [365]12082 Inappropriate unreachable code warnings
+     * [366]12180 Inline optimization fails for variadic function
+     * [367]12340 loop unroller + gcse produces wrong code
+
+    C++ compiler and library
+
+     * [368]3907 nested template parameter collides with member name
+     * [369]5293 confusing message when binding a temporary to a reference
+     * [370]5296 [DR115] Pointers to functions and to template functions
+       behave differently in deduction
+     * [371]7939 ICE on function template specialization
+     * [372]8656 Unable to assign function with __attribute__ and pointer
+       return type to an appropriate variable
+     * [373]10147 Confusing error message for invalid template function
+       argument
+     * [374]11400 std::search_n() makes assumptions about Size parameter
+     * [375]11409 issues with using declarations, overloading, and
+       built-in functions
+     * [376]11740 ctype<wchar_t>::do_is(mask, wchar_t) doesn't handle
+       multiple bits in mask
+     * [377]11786 operator() call on variable in other namespace not
+       recognized
+     * [378]11867 static_cast ignores ambiguity
+     * [379]11928 bug with conversion operators that are typedefs
+     * [380]12114 Uninitialized memory accessed in dtor
+     * [381]12163 static_cast + explicit constructor regression
+     * [382]12181 Wrong code with comma operator and c++
+     * [383]12236 regparm and fastcall messes up parameters
+     * [384]12266 incorrect instantiation of unneeded template during
+       overload resolution
+     * [385]12296 istream::peek() doesn't set eofbit
+     * [386]12298 [sjlj exceptions] Stack unwind destroys
+       not-yet-constructed object
+     * [387]12369 ICE with templates and friends
+     * [388]12337 apparently infinite loop in g++
+     * [389]12344 stdcall attribute ignored if function returns a pointer
+     * [390]12451 missing(late) class forward declaration in cxxabi.h
+     * [391]12486 g++ accepts invalid use of a qualified name
+
+    x86 specific (Intel/AMD)
+
+     * [392]8869 [x86 MMX] ICE with const variable optimization and MMX
+       builtins
+     * [393]9786 ICE in fixup_abnormal_edges with -fnon-call-exceptions
+       -O2
+     * [394]11689 g++3.3 emits un-assembleable code for k6 architecture
+     * [395]12116 [k6] Invalid assembly output values with X-MAME code
+     * [396]12070 ICE converting between double and long double with
+       -msoft-float
+
+    ia64-specific
+
+     * [397]11184 [ia64 hpux] ICE on __builtin_apply building libobjc
+     * [398]11535 __builtin_return_address may not work on ia64
+     * [399]11693 [ia64] ICE in gen_nop_type
+     * [400]12224 [ia64] Thread-local storage doesn't work
+
+    PowerPC-specific
+
+     * [401]11087 [powerpc64-linux] GCC miscompiles raid1.c from linux
+       kernel
+     * [402]11319 loop miscompiled on ppc32
+     * [403]11949 ICE Compiler segfault with ffmpeg -maltivec code
+
+    SPARC-specific
+
+     * [404]11662 wrong code for expr. with cast to long long and
+       exclusive or
+     * [405]11965 invalid assembler code for a shift < 32 operation
+     * [406]12301 (c++) stack corruption when a returned expression throws
+       an exception
+
+    Alpha-specific
+
+     * [407]11717 [alpha-linux] unrecognizable insn compiling for.c of
+       kernel 2.4.22-pre8
+
+    HPUX-specific
+
+     * [408]11313 problem with #pragma weak and static inline functions
+     * [409]11712 __STDC_EXT__ not defined for C++ by default anymore?
+
+    Solaris specific
+
+     * [410]12166 Profiled programs crash if PROFDIR is set
+
+    Solaris-x86 specific
+
+     * [411]12101 i386 Solaris no longer works with GNU as?
+
+    Miscellaneous embedded target-specific bugs
+
+     * [412]10988 [m32r-elf] wrong blockmove code with -O3
+     * [413]11805 [h8300-unknown-coff] [H8300] ICE for simple code with
+       -O2
+     * [414]11902 [sh4] spec file improperly inserts rpath even when none
+       needed
+     * [415]11903 [sh4] -pthread fails to link due to error in spec file
+       on sh4
+     __________________________________________________________________
+
+GCC 3.3.3
+
+  Minor features
+
+   In addition to the bug fixes documented below, this release contains
+   few minor features such as:
+     * Support for --with-sysroot
+     * Support for automatic detection of executable stacks
+     * Support for SSE3 instructions
+     * Support for thread local storage debugging under GDB on S390
+
+  Bug Fixes
+
+   This section lists the problem reports (PRs) from GCC's bug tracker
+   that are known to be fixed in the 3.3.3 release. This list might not be
+   complete (that is, it is possible that some PRs that have been fixed
+   are not listed here).
+
+    Bootstrap failures and issues
+
+     * [416]11890 Building cross gcc-3.3.1 for sparc-sun-solaris2.6 fails
+     * [417]12399 boehm-gc fails (when building a cross compiler): libtool
+       unable to infer tagged configuration
+     * [418]13068 mklibgcc.in doesn't handle multi-level multilib
+       subdirectories properly
+
+    Internal compiler errors (multi-platform)
+
+     * [419]10060 ICE (stack overflow) on huge file (300k lines) due to
+       recursive behaviour of copy_rtx_if_shared, in emit_rtl.c
+     * [420]10555 (c++) ICE on undefined template argument
+     * [421]10706 (c++) ICE in mangle_class_name_for_template
+     * [422]11496 (fortran) error in flow_loops_find when -funroll-loops
+       active
+     * [423]11741 ICE in pre_insert_copy_insn, in gcse.c
+     * [424]12440 GCC crashes during compilation of quicktime4linux 2.0.0
+     * [425]12632 (fortran) -fbounds-check ICE
+     * [426]12712 (c++) ICE on short legit C++ code fragment with gcc
+       3.3.2
+     * [427]12726 (c++) ICE (segfault) on trivial code
+     * [428]12890 (c++) ICE on compilation of class with throwing method
+     * [429]12900 (c++) ICE in rtl_verify_flow_info_1
+     * [430]13060 (fortran) ICE in fixup_var_refs_1, in function.c on
+       correct code with -O2 -fno-force-mem
+     * [431]13289 (c++) ICE in regenerate_decl_from_template on recursive
+       template
+     * [432]13318 ICE: floating point exception in the loop optimizer
+     * [433]13392 (c++) ICE in convert_from_eh_region_ranges_1, in
+       except.c
+     * [434]13574 (c++) invalid array default initializer in class lets
+       gcc consume all memory and die
+     * [435]13475 ICE on SIMD variables with partial value initialization
+     * [436]13797 (c++) ICE on invalid template parameter
+     * [437]13824 (java) gcj SEGV with simple .java program
+
+    C and optimization bugs
+
+     * [438]8776 loop invariants are not removed (most likely)
+     * [439]10339 [sparc,ppc,ppc64] Invalid optimization: replacing
+       strncmp by memcmp
+     * [440]11350 undefined labels with -Os -fPIC
+     * [441]12826 Optimizer removes reference through volatile pointer
+     * [442]12500 stabs debug info: void no longer a predefined / builtin
+       type
+     * [443]12941 builtin-bitops-1.c miscompilation (latent bug)
+     * [444]12953 tree inliner bug (in inline_forbidden_p) and fix
+     * [445]13041 linux-2.6/sound/core/oss/rate.c miscompiled
+     * [446]13507 spurious printf format warning
+     * [447]13382 Type information for const pointer disappears during
+       optimization.
+     * [448]13394 noreturn attribute ignored on recursive invokation
+     * [449]13400 Compiled code crashes storing to read-only location
+     * [450]13521 Endless loop in calculate_global_regs_live
+
+    C++ compiler and library
+
+   Some of the bug fixes in this list were made to implement decisions
+   that the ISO C++ standards committee has made concerning several defect
+   reports (DRs). Links in the list below point to detailed discussion of
+   the relevant defect report.
+     * [451]2094 unimplemented: use of `ptrmem_cst' in template type
+       unification
+     * [452]2294 using declaration confusion
+     * [453]5050 template instantiation depth exceeds limit: recursion
+       problem?
+     * [454]9371 Bad exception handling in
+       i/ostream::operator>>/<<(streambuf*)
+     * [455]9546 bad exception handling in ostream members
+     * [456]10081 basic_ios::_M_cache_locale leaves NULL members in the
+       face of unknown locales
+     * [457]10093 [458][DR 61] Setting failbit in exceptions doesn't work
+     * [459]10095 istream::operator>>(int&) sets ios::badbit when
+       ios::failbit is set.
+     * [460]11554 Warning about reordering of initializers doesn't mention
+       location of constructor
+     * [461]12297 istream::sentry::sentry() handles eof() incorrectly.
+     * [462]12352 Exception safety problems in src/localename.cc
+     * [463]12438 Memory leak in locale::combine()
+     * [464]12540 Memory leak in locale::locale(const char*)
+     * [465]12594 DRs [466]60 [TC] and [467]63 [TC] not implemented
+     * [468]12657 Resolution of [469]DR 292 (WP) still unimplemented
+     * [470]12696 memory eating infinite loop in diagnostics (error
+       recovery problem)
+     * [471]12815 Code compiled with optimization behaves unexpectedly
+     * [472]12862 Conflicts between typedefs/enums and namespace member
+       declarations
+     * [473]12926 Wrong value after assignment in initialize list using
+       bit-fields
+     * [474]12967 Resolution of [475]DR 300 [WP] still unimplemented
+     * [476]12971 Resolution of [477]DR 328 [WP] still unimplemented
+     * [478]13007 basic_streambuf::pubimbue, imbue wrong
+     * [479]13009 Implicitly-defined assignment operator writes to wrong
+       memory
+     * [480]13057 regparm attribute not applied to destructor
+     * [481]13070 -Wformat option ignored in g++
+     * [482]13081 forward template declarations in <complex> let inlining
+       fail
+     * [483]13239 Assertion does not seem to work correctly anymore
+     * [484]13262 "xxx is private within this context" when initializing a
+       self-contained template class
+     * [485]13290 simple typo in concept checking for std::generate_n
+     * [486]13323 Template code does not compile in presence of typedef
+     * [487]13369 __verify_grouping (and __add_grouping?) not correct
+     * [488]13371 infinite loop with packed struct and inlining
+     * [489]13445 Template argument replacement "dereferences" a typedef
+     * [490]13461 Fails to access protected-ctor from public constant
+     * [491]13462 Non-standard-conforming type set::pointer
+     * [492]13478 gcc uses wrong constructor to initialize a const
+       reference
+     * [493]13544 "conflicting types" for enums in different scopes
+     * [494]13650 string::compare should not (always) use
+       traits_type::length()
+     * [495]13683 bogus warning about passing non-PODs through ellipsis
+     * [496]13688 Derived class is denied access to protected base class
+       member class
+     * [497]13774 Member variable cleared in virtual multiple inheritance
+       class
+     * [498]13884 Protect sstream.tcc from extern template use
+
+    Java compiler and library
+
+     * [499]10746 [win32] garbage collection crash in GCJ
+
+    Objective-C compiler and library
+
+     * [500]11433 Crash due to dereferencing null pointer when querying
+       protocol
+
+    Fortran compiler and library
+
+     * [501]12633 logical expression gives incorrect result with
+       -fugly-logint option
+     * [502]13037 [gcse-lm] g77 generates incorrect code
+     * [503]13213 Hex constant problem when compiling with -fugly-logint
+       and -ftypeless-boz
+
+    x86-specific (Intel/AMD)
+
+     * [504]4490 ICE with -m128bit-long-double
+     * [505]12292 [x86_64] ICE: RTL check: expected code `const_int', have
+       `reg' in make_field_assignment, in combine.c
+     * [506]12441 ICE: can't find a register to spill
+     * [507]12943 array static-init failure under -fpic, -fPIC
+     * [508]13608 Incorrect code with -O3 -ffast-math
+
+    PowerPC-specific
+
+     * [509]11598 testcase gcc.dg/20020118-1.c fails runtime check of
+       __attribute__((aligned(16)))
+     * [510]11793 ICE in extract_insn, in recog.c (const_vector's)
+     * [511]12467 vmsumubm emitted when vmsummbm appropriate (typo in
+       altivec.md)
+     * [512]12537 g++ generates writeable text sections
+
+    SPARC-specific
+
+     * [513]12496 wrong result for __atomic_add(&value, -1) when using -O0
+       -m64
+     * [514]12865 mprotect call to make trampoline executable may fail
+     * [515]13354 ICE in sparc_emit_set_const32
+
+    ARM-specific
+
+     * [516]10467 [arm] ICE in pre_insert_copy_insn,
+
+    ia64-specific
+
+     * [517]11226 ICE passing struct arg with two floats
+     * [518]11227 ICE for _Complex float, _Complex long double args
+     * [519]12644 GCC 3.3.2 fails to compile glibc on ia64
+     * [520]13149 build gcc-3.3.2 1305 error:unrecognizable insn
+     * Various fixes for libunwind
+
+    Alpha-specific
+
+     * [521]12654 Incorrect comparison code generated for Alpha
+     * [522]12965 SEGV+ICE in cc1plus on alpha-linux with -O2
+     * [523]13031 ICE (unrecognizable insn) when building gnome-libs-1.4.2
+
+    HPPA-specific
+
+     * [524]11634 [hppa] ICE in verify_local_live_at_start, in flow.c
+     * [525]12158 [hppa] compilation does not terminate at -O1
+
+    S390-specific
+
+     * [526]11992 Wrong built-in code for memcmp with length 1<<24: only
+       (1<<24)-1 possible for CLCL-Instruction
+
+    SH-specific
+
+     * [527]9365 segfault in gen_far_branch (config/sh/sh.c)
+     * [528]10392 optimizer generates faulty array indexing
+     * [529]11322 SH profiler outputs multiple definitions of symbol
+     * [530]13069 gcc/config/sh/rtems.h broken
+     * [531]13302 Putting a va_list in a struct causes seg fault
+     * [532]13585 Incorrect optimization of call to sfunc
+     * Fix inappropriately exported libgcc functions from the shared
+       library
+
+    Other embedded target specific
+
+     * [533]8916 [mcore] unsigned char assign gets hosed.
+     * [534]11576 [h8300] ICE in change_address_1, in emit-rtl.c
+     * [535]13122 [h8300] local variable gets corrupted by function call
+       when -fomit-frame-pointer is given
+     * [536]13256 [cris] strict_low_part mistreated in delay slots
+     * [537]13373 [mcore] optimization with -frerun-cse-after-loop
+       -fexpensive-optimizations produces wrong code on mcore
+
+    GNU HURD-specific
+
+     * [538]12561 gcc/config/t-gnu needs updating to work with
+       --with-sysroot
+
+    Tru64 Unix specific
+
+     * [539]6243 testsuite fails almost all tests due to no libintl in
+       LD_LIBRARY_PATH during test.
+     * [540]11397 weak aliases broken on Tru64 UNIX
+
+    AIX-specific
+
+     * [541]12505 build failure due to defines of uchar in cpphash.h and
+       sys/types.h
+     * [542]13150 WEAK symbols not exported by collect2
+
+    IRIX-specific
+
+     * [543]12666 fixincludes problem on IRIX 6.5.19m
+
+    Solaris-specific
+
+     * [544]12969 Including sys/byteorder.h breaks configure checks
+
+    Testsuite problems (compiler is not affected)
+
+     * [545]10819 testsuite creates CR+LF on compiler version lines in
+       test summary files
+     * [546]11612 abi_check not finding correct libgcc_s.so.1
+
+    Miscellaneous
+
+     * [547]13211 using -###, incorrect warnings about unused linker file
+       are produced
+     __________________________________________________________________
+
+GCC 3.3.4
+
+   This is the [548]list of problem reports (PRs) from GCC's bug tracking
+   system that are known to be fixed in the 3.3.4 release. This list might
+   not be complete (that is, it is possible that some PRs that have been
+   fixed are not listed here).
+     __________________________________________________________________
+
+GCC 3.3.5
+
+   This is the [549]list of problem reports (PRs) from GCC's bug tracking
+   system that are known to be fixed in the 3.3.5 release. This list might
+   not be complete (that is, it is possible that some PRs that have been
+   fixed are not listed here).
+     __________________________________________________________________
+
+GCC 3.3.6
+
+   This is the [550]list of problem reports (PRs) from GCC's bug tracking
+   system that are known to be fixed in the 3.3.6 release. This list might
+   not be complete (that is, it is possible that some PRs that have been
+   fixed are not listed here).
+
+
+    For questions related to the use of GCC, please consult these web
+    pages and the [551]GCC manuals. If that fails, the
+    [552]gcc-help at gcc.gnu.org mailing list might help. Comments on these
+    web pages and the development of GCC are welcome on our developer
+    list at [553]gcc at gcc.gnu.org. All of [554]our lists have public
+    archives.
+
+   Copyright (C) [555]Free Software Foundation, Inc. Verbatim copying and
+   distribution of this entire article is permitted in any medium,
+   provided this notice is preserved.
+
+   These pages are [556]maintained by the GCC team. Last modified
+   2014-06-28[557].
+
+References
+
+   1. http://gcc.gnu.org/gcc-3.3/changes.html#3.3.6
+   2. http://gcc.gnu.org/gcc-3.1/changes.html#obsolete_systems
+   3. http://gcc.gnu.org/gcc-3.3/changes.html#obsolete_systems
+   4. http://gcc.gnu.org/gcc-3.3/changes.html#nonnull_attribute
+   5. http://gcc.gnu.org/news/dfa.html
+   6. http://gcc.gnu.org/c99status.html
+   7. https://gcc.gnu.org/onlinedocs/gcc-3.3.6/g77/News.html
+   8. https://gcc.gnu.org/PR10140
+   9. https://gcc.gnu.org/PR10198
+  10. https://gcc.gnu.org/PR10338
+  11. https://gcc.gnu.org/PR3581
+  12. https://gcc.gnu.org/PR4382
+  13. https://gcc.gnu.org/PR5533
+  14. https://gcc.gnu.org/PR6387
+  15. https://gcc.gnu.org/PR6412
+  16. https://gcc.gnu.org/PR6620
+  17. https://gcc.gnu.org/PR6663
+  18. https://gcc.gnu.org/PR7068
+  19. https://gcc.gnu.org/PR7083
+  20. https://gcc.gnu.org/PR7647
+  21. https://gcc.gnu.org/PR7675
+  22. https://gcc.gnu.org/PR7718
+  23. https://gcc.gnu.org/PR8116
+  24. https://gcc.gnu.org/PR8358
+  25. https://gcc.gnu.org/PR8511
+  26. https://gcc.gnu.org/PR8564
+  27. https://gcc.gnu.org/PR8660
+  28. https://gcc.gnu.org/PR8766
+  29. https://gcc.gnu.org/PR8803
+  30. https://gcc.gnu.org/PR8846
+  31. https://gcc.gnu.org/PR8906
+  32. https://gcc.gnu.org/PR9216
+  33. https://gcc.gnu.org/PR9261
+  34. https://gcc.gnu.org/PR9263
+  35. https://gcc.gnu.org/PR9429
+  36. https://gcc.gnu.org/PR9516
+  37. https://gcc.gnu.org/PR9600
+  38. https://gcc.gnu.org/PR9629
+  39. https://gcc.gnu.org/PR9672
+  40. https://gcc.gnu.org/PR9749
+  41. https://gcc.gnu.org/PR9794
+  42. https://gcc.gnu.org/PR9829
+  43. https://gcc.gnu.org/PR9916
+  44. https://gcc.gnu.org/PR9936
+  45. https://gcc.gnu.org/PR10262
+  46. https://gcc.gnu.org/PR10278
+  47. https://gcc.gnu.org/PR10446
+  48. https://gcc.gnu.org/PR10451
+  49. https://gcc.gnu.org/PR10506
+  50. https://gcc.gnu.org/PR10549
+  51. https://gcc.gnu.org/PR2001
+  52. https://gcc.gnu.org/PR2391
+  53. https://gcc.gnu.org/PR2960
+  54. https://gcc.gnu.org/PR4046
+  55. https://gcc.gnu.org/PR6405
+  56. https://gcc.gnu.org/PR6798
+  57. https://gcc.gnu.org/PR6871
+  58. https://gcc.gnu.org/PR6909
+  59. https://gcc.gnu.org/PR7189
+  60. https://gcc.gnu.org/PR7642
+  61. https://gcc.gnu.org/PR8634
+  62. https://gcc.gnu.org/PR8750
+  63. https://gcc.gnu.org/PR2161
+  64. https://gcc.gnu.org/PR4319
+  65. https://gcc.gnu.org/PR8602
+  66. https://gcc.gnu.org/PR9177
+  67. https://gcc.gnu.org/PR9853
+  68. https://gcc.gnu.org/PR45
+  69. https://gcc.gnu.org/PR3784
+  70. https://gcc.gnu.org/PR764
+  71. https://gcc.gnu.org/PR5116
+  72. https://gcc.gnu.org/PR2862
+  73. https://gcc.gnu.org/PR3663
+  74. https://gcc.gnu.org/PR3797
+  75. https://gcc.gnu.org/PR3948
+  76. https://gcc.gnu.org/PR4137
+  77. https://gcc.gnu.org/PR4361
+  78. https://gcc.gnu.org/PR4802
+  79. https://gcc.gnu.org/PR5837
+  80. https://gcc.gnu.org/PR4803
+  81. https://gcc.gnu.org/PR5094
+  82. https://gcc.gnu.org/PR5730
+  83. https://gcc.gnu.org/PR6713
+  84. https://gcc.gnu.org/PR7015
+  85. https://gcc.gnu.org/PR7086
+  86. https://gcc.gnu.org/PR7099
+  87. https://gcc.gnu.org/PR7247
+  88. https://gcc.gnu.org/PR7441
+  89. https://gcc.gnu.org/PR7768
+  90. https://gcc.gnu.org/PR7804
+  91. https://gcc.gnu.org/PR8099
+  92. https://gcc.gnu.org/PR8117
+  93. https://gcc.gnu.org/PR8205
+  94. https://gcc.gnu.org/PR8645
+  95. https://gcc.gnu.org/PR8724
+  96. https://gcc.gnu.org/PR8805
+  97. https://gcc.gnu.org/PR8691
+  98. https://gcc.gnu.org/PR8700
+  99. https://gcc.gnu.org/PR8724
+ 100. https://gcc.gnu.org/PR8949
+ 101. https://gcc.gnu.org/PR9016
+ 102. https://gcc.gnu.org/PR9053
+ 103. https://gcc.gnu.org/PR9152
+ 104. https://gcc.gnu.org/PR9182
+ 105. https://gcc.gnu.org/PR9297
+ 106. https://gcc.gnu.org/PR9318
+ 107. https://gcc.gnu.org/PR9320
+ 108. https://gcc.gnu.org/PR9400
+ 109. https://gcc.gnu.org/PR9424
+ 110. https://gcc.gnu.org/PR9425
+ 111. https://gcc.gnu.org/PR9439
+ 112. https://gcc.gnu.org/PR9474
+ 113. https://gcc.gnu.org/PR9548
+ 114. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#231
+ 115. https://gcc.gnu.org/PR9555
+ 116. https://gcc.gnu.org/PR9561
+ 117. https://gcc.gnu.org/PR9563
+ 118. https://gcc.gnu.org/PR9582
+ 119. https://gcc.gnu.org/PR9622
+ 120. https://gcc.gnu.org/PR9683
+ 121. https://gcc.gnu.org/PR9791
+ 122. https://gcc.gnu.org/PR9817
+ 123. https://gcc.gnu.org/PR9825
+ 124. https://gcc.gnu.org/PR9826
+ 125. https://gcc.gnu.org/PR9924
+ 126. https://gcc.gnu.org/PR9946
+ 127. https://gcc.gnu.org/PR9964
+ 128. https://gcc.gnu.org/PR9988
+ 129. https://gcc.gnu.org/PR10033
+ 130. https://gcc.gnu.org/PR10097
+ 131. https://gcc.gnu.org/PR10132
+ 132. https://gcc.gnu.org/PR10180
+ 133. https://gcc.gnu.org/PR10199
+ 134. https://gcc.gnu.org/PR10300
+ 135. https://gcc.gnu.org/PR10427
+ 136. https://gcc.gnu.org/PR10503
+ 137. https://gcc.gnu.org/PR5956
+ 138. https://gcc.gnu.org/PR1832
+ 139. https://gcc.gnu.org/PR3924
+ 140. https://gcc.gnu.org/PR5634
+ 141. https://gcc.gnu.org/PR6367
+ 142. https://gcc.gnu.org/PR6491
+ 143. https://gcc.gnu.org/PR6742
+ 144. https://gcc.gnu.org/PR7113
+ 145. https://gcc.gnu.org/PR7236
+ 146. https://gcc.gnu.org/PR7278
+ 147. https://gcc.gnu.org/PR7384
+ 148. https://gcc.gnu.org/PR7388
+ 149. https://gcc.gnu.org/PR8587
+ 150. https://gcc.gnu.org/PR9038
+ 151. https://gcc.gnu.org/PR10197
+ 152. https://gcc.gnu.org/PR6005
+ 153. https://gcc.gnu.org/PR6389
+ 154. https://gcc.gnu.org/PR6576
+ 155. https://gcc.gnu.org/PR6652
+ 156. https://gcc.gnu.org/PR7060
+ 157. https://gcc.gnu.org/PR7073
+ 158. https://gcc.gnu.org/PR7180
+ 159. https://gcc.gnu.org/PR7416
+ 160. https://gcc.gnu.org/PR7570
+ 161. https://gcc.gnu.org/PR7578
+ 162. https://gcc.gnu.org/PR7611
+ 163. https://gcc.gnu.org/PR7709
+ 164. https://gcc.gnu.org/PR7766
+ 165. https://gcc.gnu.org/PR7785
+ 166. https://gcc.gnu.org/PR7786
+ 167. https://gcc.gnu.org/PR8142
+ 168. https://gcc.gnu.org/PR8234
+ 169. https://gcc.gnu.org/PR8415
+ 170. https://gcc.gnu.org/PR8481
+ 171. https://gcc.gnu.org/PR8593
+ 172. https://gcc.gnu.org/PR8759
+ 173. https://gcc.gnu.org/PR8997
+ 174. https://gcc.gnu.org/PR9253
+ 175. https://gcc.gnu.org/PR9254
+ 176. https://gcc.gnu.org/PR9271
+ 177. https://gcc.gnu.org/PR6767
+ 178. https://gcc.gnu.org/PR9911
+ 179. https://gcc.gnu.org/PR10020
+ 180. https://gcc.gnu.org/PR10546
+ 181. https://gcc.gnu.org/PR7029
+ 182. https://gcc.gnu.org/PR2903
+ 183. https://gcc.gnu.org/PR7873
+ 184. https://gcc.gnu.org/PR7680
+ 185. https://gcc.gnu.org/PR8705
+ 186. https://gcc.gnu.org/PR9986
+ 187. https://gcc.gnu.org/PR10056
+ 188. https://gcc.gnu.org/PR6744
+ 189. https://gcc.gnu.org/PR7361
+ 190. https://gcc.gnu.org/PR9496
+ 191. https://gcc.gnu.org/PR7067
+ 192. https://gcc.gnu.org/PR8480
+ 193. https://gcc.gnu.org/PR8784
+ 194. https://gcc.gnu.org/PR10315
+ 195. https://gcc.gnu.org/PR10267
+ 196. https://gcc.gnu.org/PR7916
+ 197. https://gcc.gnu.org/PR7926
+ 198. https://gcc.gnu.org/PR8555
+ 199. https://gcc.gnu.org/PR8994
+ 200. https://gcc.gnu.org/PR9426
+ 201. https://gcc.gnu.org/PR9806
+ 202. https://gcc.gnu.org/PR10077
+ 203. https://gcc.gnu.org/PR10233
+ 204. https://gcc.gnu.org/PR10286
+ 205. https://gcc.gnu.org/PR10308
+ 206. https://gcc.gnu.org/PR11272
+ 207. https://gcc.gnu.org/PR5754
+ 208. https://gcc.gnu.org/PR6597
+ 209. https://gcc.gnu.org/PR6949
+ 210. https://gcc.gnu.org/PR7053
+ 211. https://gcc.gnu.org/PR8164
+ 212. https://gcc.gnu.org/PR8384
+ 213. https://gcc.gnu.org/PR9559
+ 214. https://gcc.gnu.org/PR9649
+ 215. https://gcc.gnu.org/PR9864
+ 216. https://gcc.gnu.org/PR10432
+ 217. https://gcc.gnu.org/PR10475
+ 218. https://gcc.gnu.org/PR10635
+ 219. https://gcc.gnu.org/PR10661
+ 220. https://gcc.gnu.org/PR10700
+ 221. https://gcc.gnu.org/PR10712
+ 222. https://gcc.gnu.org/PR10796
+ 223. https://gcc.gnu.org/PR10890
+ 224. https://gcc.gnu.org/PR10939
+ 225. https://gcc.gnu.org/PR10956
+ 226. https://gcc.gnu.org/PR11041
+ 227. https://gcc.gnu.org/PR11059
+ 228. https://gcc.gnu.org/PR11083
+ 229. https://gcc.gnu.org/PR11105
+ 230. https://gcc.gnu.org/PR11149
+ 231. https://gcc.gnu.org/PR11228
+ 232. https://gcc.gnu.org/PR11282
+ 233. https://gcc.gnu.org/PR11301
+ 234. https://gcc.gnu.org/PR11308
+ 235. https://gcc.gnu.org/PR11473
+ 236. https://gcc.gnu.org/PR11503
+ 237. https://gcc.gnu.org/PR11513
+ 238. https://gcc.gnu.org/PR11198
+ 239. https://gcc.gnu.org/PR11304
+ 240. https://gcc.gnu.org/PR11381
+ 241. https://gcc.gnu.org/PR11536
+ 242. https://gcc.gnu.org/PR11557
+ 243. https://gcc.gnu.org/PR5897
+ 244. https://gcc.gnu.org/PR11279
+ 245. https://gcc.gnu.org/PR11022
+ 246. https://gcc.gnu.org/PR2330
+ 247. https://gcc.gnu.org/PR5388
+ 248. https://gcc.gnu.org/PR5390
+ 249. https://gcc.gnu.org/PR7877
+ 250. https://gcc.gnu.org/PR9393
+ 251. https://gcc.gnu.org/PR10032
+ 252. https://gcc.gnu.org/PR10468
+ 253. https://gcc.gnu.org/PR10527
+ 254. https://gcc.gnu.org/PR10679
+ 255. https://gcc.gnu.org/PR10682
+ 256. https://gcc.gnu.org/PR10689
+ 257. https://gcc.gnu.org/PR10845
+ 258. https://gcc.gnu.org/PR10849
+ 259. https://gcc.gnu.org/PR10888
+ 260. https://gcc.gnu.org/PR10929
+ 261. https://gcc.gnu.org/PR10931
+ 262. https://gcc.gnu.org/PR10940
+ 263. https://gcc.gnu.org/PR10968
+ 264. https://gcc.gnu.org/PR10990
+ 265. https://gcc.gnu.org/PR11039
+ 266. https://gcc.gnu.org/PR11062
+ 267. https://gcc.gnu.org/PR11095
+ 268. https://gcc.gnu.org/PR11098
+ 269. https://gcc.gnu.org/PR11137
+ 270. https://gcc.gnu.org/PR11154
+ 271. https://gcc.gnu.org/PR11329
+ 272. https://gcc.gnu.org/PR11332
+ 273. https://gcc.gnu.org/PR11431
+ 274. https://gcc.gnu.org/PR11528
+ 275. https://gcc.gnu.org/PR11546
+ 276. https://gcc.gnu.org/PR11567
+ 277. https://gcc.gnu.org/PR11645
+ 278. https://gcc.gnu.org/PR5179
+ 279. https://gcc.gnu.org/PR8204
+ 280. https://gcc.gnu.org/PR10838
+ 281. https://gcc.gnu.org/PR10886
+ 282. https://gcc.gnu.org/PR11349
+ 283. https://gcc.gnu.org/PR4823
+ 284. https://gcc.gnu.org/PR8878
+ 285. https://gcc.gnu.org/PR9815
+ 286. https://gcc.gnu.org/PR10402
+ 287. https://gcc.gnu.org/PR10504
+ 288. https://gcc.gnu.org/PR10673
+ 289. https://gcc.gnu.org/PR11044
+ 290. https://gcc.gnu.org/PR11089
+ 291. https://gcc.gnu.org/PR11420
+ 292. https://gcc.gnu.org/PR9362
+ 293. https://gcc.gnu.org/PR10142
+ 294. https://gcc.gnu.org/PR10663
+ 295. https://gcc.gnu.org/PR10835
+ 296. https://gcc.gnu.org/PR10876
+ 297. https://gcc.gnu.org/PR10955
+ 298. https://gcc.gnu.org/PR11018
+ 299. https://gcc.gnu.org/PR11556
+ 300. https://gcc.gnu.org/PR10907
+ 301. https://gcc.gnu.org/PR11320
+ 302. https://gcc.gnu.org/PR11599
+ 303. https://gcc.gnu.org/PR9745
+ 304. https://gcc.gnu.org/PR10871
+ 305. https://gcc.gnu.org/PR11440
+ 306. https://gcc.gnu.org/PR7594
+ 307. https://gcc.gnu.org/PR10557
+ 308. https://gcc.gnu.org/PR11054
+ 309. https://gcc.gnu.org/PR10834
+ 310. https://gcc.gnu.org/PR10842
+ 311. https://gcc.gnu.org/PR11052
+ 312. https://gcc.gnu.org/PR11183
+ 313. https://gcc.gnu.org/PR11084
+ 314. https://gcc.gnu.org/PR10331
+ 315. https://gcc.gnu.org/PR10413
+ 316. https://gcc.gnu.org/PR11096
+ 317. https://gcc.gnu.org/PR2873
+ 318. https://gcc.gnu.org/PR3163
+ 319. https://gcc.gnu.org/PR5287
+ 320. https://gcc.gnu.org/PR10148
+ 321. https://gcc.gnu.org/PR8787
+ 322. https://gcc.gnu.org/PR10900
+ 323. https://gcc.gnu.org/PR1607
+ 324. https://gcc.gnu.org/PR4252
+ 325. https://gcc.gnu.org/PR4490
+ 326. https://gcc.gnu.org/PR10355
+ 327. https://gcc.gnu.org/PR10726
+ 328. https://gcc.gnu.org/PR10805
+ 329. https://gcc.gnu.org/PR10815
+ 330. https://gcc.gnu.org/PR10877
+ 331. https://gcc.gnu.org/PR11280
+ 332. https://gcc.gnu.org/PR11466
+ 333. https://gcc.gnu.org/PR10737
+ 334. https://gcc.gnu.org/PR10810
+ 335. https://gcc.gnu.org/PR8336
+ 336. https://gcc.gnu.org/PR9330
+ 337. https://gcc.gnu.org/PR9631
+ 338. https://gcc.gnu.org/PR9877
+ 339. https://gcc.gnu.org/PR11687
+ 340. https://gcc.gnu.org/PR12263
+ 341. https://gcc.gnu.org/PR12490
+ 342. https://gcc.gnu.org/PR7277
+ 343. https://gcc.gnu.org/PR7939
+ 344. https://gcc.gnu.org/PR11063
+ 345. https://gcc.gnu.org/PR11207
+ 346. https://gcc.gnu.org/PR11522
+ 347. https://gcc.gnu.org/PR11595
+ 348. https://gcc.gnu.org/PR11646
+ 349. https://gcc.gnu.org/PR11665
+ 350. https://gcc.gnu.org/PR11852
+ 351. https://gcc.gnu.org/PR11878
+ 352. https://gcc.gnu.org/PR11883
+ 353. https://gcc.gnu.org/PR11991
+ 354. https://gcc.gnu.org/PR12146
+ 355. https://gcc.gnu.org/PR12215
+ 356. https://gcc.gnu.org/PR12369
+ 357. https://gcc.gnu.org/PR12446
+ 358. https://gcc.gnu.org/PR12510
+ 359. https://gcc.gnu.org/PR12544
+ 360. https://gcc.gnu.org/PR9862
+ 361. https://gcc.gnu.org/PR10962
+ 362. https://gcc.gnu.org/PR11370
+ 363. https://gcc.gnu.org/PR11637
+ 364. https://gcc.gnu.org/PR11885
+ 365. https://gcc.gnu.org/PR12082
+ 366. https://gcc.gnu.org/PR12180
+ 367. https://gcc.gnu.org/PR12340
+ 368. https://gcc.gnu.org/PR3907
+ 369. https://gcc.gnu.org/PR5293
+ 370. https://gcc.gnu.org/PR5296
+ 371. https://gcc.gnu.org/PR7939
+ 372. https://gcc.gnu.org/PR8656
+ 373. https://gcc.gnu.org/PR10147
+ 374. https://gcc.gnu.org/PR11400
+ 375. https://gcc.gnu.org/PR11409
+ 376. https://gcc.gnu.org/PR11740
+ 377. https://gcc.gnu.org/PR11786
+ 378. https://gcc.gnu.org/PR11867
+ 379. https://gcc.gnu.org/PR11928
+ 380. https://gcc.gnu.org/PR12114
+ 381. https://gcc.gnu.org/PR12163
+ 382. https://gcc.gnu.org/PR12181
+ 383. https://gcc.gnu.org/PR12236
+ 384. https://gcc.gnu.org/PR12266
+ 385. https://gcc.gnu.org/PR12296
+ 386. https://gcc.gnu.org/PR12298
+ 387. https://gcc.gnu.org/PR12369
+ 388. https://gcc.gnu.org/PR12337
+ 389. https://gcc.gnu.org/PR12344
+ 390. https://gcc.gnu.org/PR12451
+ 391. https://gcc.gnu.org/PR12486
+ 392. https://gcc.gnu.org/PR8869
+ 393. https://gcc.gnu.org/PR9786
+ 394. https://gcc.gnu.org/PR11689
+ 395. https://gcc.gnu.org/PR12116
+ 396. https://gcc.gnu.org/PR12070
+ 397. https://gcc.gnu.org/PR11184
+ 398. https://gcc.gnu.org/PR11535
+ 399. https://gcc.gnu.org/PR11693
+ 400. https://gcc.gnu.org/PR12224
+ 401. https://gcc.gnu.org/PR11087
+ 402. https://gcc.gnu.org/PR11319
+ 403. https://gcc.gnu.org/PR11949
+ 404. https://gcc.gnu.org/PR11662
+ 405. https://gcc.gnu.org/PR11965
+ 406. https://gcc.gnu.org/PR12301
+ 407. https://gcc.gnu.org/PR11717
+ 408. https://gcc.gnu.org/PR11313
+ 409. https://gcc.gnu.org/PR11712
+ 410. https://gcc.gnu.org/PR12166
+ 411. https://gcc.gnu.org/PR12101
+ 412. https://gcc.gnu.org/PR10988
+ 413. https://gcc.gnu.org/PR11805
+ 414. https://gcc.gnu.org/PR11902
+ 415. https://gcc.gnu.org/PR11903
+ 416. https://gcc.gnu.org/PR11890
+ 417. https://gcc.gnu.org/PR12399
+ 418. https://gcc.gnu.org/PR13068
+ 419. https://gcc.gnu.org/PR10060
+ 420. https://gcc.gnu.org/PR10555
+ 421. https://gcc.gnu.org/PR10706
+ 422. https://gcc.gnu.org/PR11496
+ 423. https://gcc.gnu.org/PR11741
+ 424. https://gcc.gnu.org/PR12440
+ 425. https://gcc.gnu.org/PR12632
+ 426. https://gcc.gnu.org/PR12712
+ 427. https://gcc.gnu.org/PR12726
+ 428. https://gcc.gnu.org/PR12890
+ 429. https://gcc.gnu.org/PR12900
+ 430. https://gcc.gnu.org/PR13060
+ 431. https://gcc.gnu.org/PR13289
+ 432. https://gcc.gnu.org/PR13318
+ 433. https://gcc.gnu.org/PR13392
+ 434. https://gcc.gnu.org/PR13574
+ 435. https://gcc.gnu.org/PR13475
+ 436. https://gcc.gnu.org/PR13797
+ 437. https://gcc.gnu.org/PR13824
+ 438. https://gcc.gnu.org/PR8776
+ 439. https://gcc.gnu.org/PR10339
+ 440. https://gcc.gnu.org/PR11350
+ 441. https://gcc.gnu.org/PR12826
+ 442. https://gcc.gnu.org/PR12500
+ 443. https://gcc.gnu.org/PR12941
+ 444. https://gcc.gnu.org/PR12953
+ 445. https://gcc.gnu.org/PR13041
+ 446. https://gcc.gnu.org/PR13507
+ 447. https://gcc.gnu.org/PR13382
+ 448. https://gcc.gnu.org/PR13394
+ 449. https://gcc.gnu.org/PR13400
+ 450. https://gcc.gnu.org/PR13521
+ 451. https://gcc.gnu.org/PR2094
+ 452. https://gcc.gnu.org/PR2294
+ 453. https://gcc.gnu.org/PR5050
+ 454. https://gcc.gnu.org/PR9371
+ 455. https://gcc.gnu.org/PR9546
+ 456. https://gcc.gnu.org/PR10081
+ 457. https://gcc.gnu.org/PR10093
+ 458. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#61
+ 459. https://gcc.gnu.org/PR10095
+ 460. https://gcc.gnu.org/PR11554
+ 461. https://gcc.gnu.org/PR12297
+ 462. https://gcc.gnu.org/PR12352
+ 463. https://gcc.gnu.org/PR12438
+ 464. https://gcc.gnu.org/PR12540
+ 465. https://gcc.gnu.org/PR12594
+ 466. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#60
+ 467. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#63
+ 468. https://gcc.gnu.org/PR12657
+ 469. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#292
+ 470. https://gcc.gnu.org/PR12696
+ 471. https://gcc.gnu.org/PR12815
+ 472. https://gcc.gnu.org/PR12862
+ 473. https://gcc.gnu.org/PR12926
+ 474. https://gcc.gnu.org/PR12967
+ 475. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html
+ 476. https://gcc.gnu.org/PR12971
+ 477. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#328
+ 478. https://gcc.gnu.org/PR13007
+ 479. https://gcc.gnu.org/PR13009
+ 480. https://gcc.gnu.org/PR13057
+ 481. https://gcc.gnu.org/PR13070
+ 482. https://gcc.gnu.org/PR13081
+ 483. https://gcc.gnu.org/PR13239
+ 484. https://gcc.gnu.org/PR13262
+ 485. https://gcc.gnu.org/PR13290
+ 486. https://gcc.gnu.org/PR13323
+ 487. https://gcc.gnu.org/PR13369
+ 488. https://gcc.gnu.org/PR13371
+ 489. https://gcc.gnu.org/PR13445
+ 490. https://gcc.gnu.org/PR13461
+ 491. https://gcc.gnu.org/PR13462
+ 492. https://gcc.gnu.org/PR13478
+ 493. https://gcc.gnu.org/PR13544
+ 494. https://gcc.gnu.org/PR13650
+ 495. https://gcc.gnu.org/PR13683
+ 496. https://gcc.gnu.org/PR13688
+ 497. https://gcc.gnu.org/PR13774
+ 498. https://gcc.gnu.org/PR13884
+ 499. https://gcc.gnu.org/PR10746
+ 500. https://gcc.gnu.org/PR11433
+ 501. https://gcc.gnu.org/PR12633
+ 502. https://gcc.gnu.org/PR13037
+ 503. https://gcc.gnu.org/PR13213
+ 504. https://gcc.gnu.org/PR4490
+ 505. https://gcc.gnu.org/PR12292
+ 506. https://gcc.gnu.org/PR12441
+ 507. https://gcc.gnu.org/PR12943
+ 508. https://gcc.gnu.org/PR13608
+ 509. https://gcc.gnu.org/PR11598
+ 510. https://gcc.gnu.org/PR11793
+ 511. https://gcc.gnu.org/PR12467
+ 512. https://gcc.gnu.org/PR12537
+ 513. https://gcc.gnu.org/PR12496
+ 514. https://gcc.gnu.org/PR12865
+ 515. https://gcc.gnu.org/PR13354
+ 516. https://gcc.gnu.org/PR10467
+ 517. https://gcc.gnu.org/PR11226
+ 518. https://gcc.gnu.org/PR11227
+ 519. https://gcc.gnu.org/PR12644
+ 520. https://gcc.gnu.org/PR13149
+ 521. https://gcc.gnu.org/PR12654
+ 522. https://gcc.gnu.org/PR12965
+ 523. https://gcc.gnu.org/PR13031
+ 524. https://gcc.gnu.org/PR11634
+ 525. https://gcc.gnu.org/PR12158
+ 526. https://gcc.gnu.org/PR11992
+ 527. https://gcc.gnu.org/PR9365
+ 528. https://gcc.gnu.org/PR10392
+ 529. https://gcc.gnu.org/PR11322
+ 530. https://gcc.gnu.org/PR13069
+ 531. https://gcc.gnu.org/PR13302
+ 532. https://gcc.gnu.org/PR13585
+ 533. https://gcc.gnu.org/PR8916
+ 534. https://gcc.gnu.org/PR11576
+ 535. https://gcc.gnu.org/PR13122
+ 536. https://gcc.gnu.org/PR13256
+ 537. https://gcc.gnu.org/PR13373
+ 538. https://gcc.gnu.org/PR12561
+ 539. https://gcc.gnu.org/PR6243
+ 540. https://gcc.gnu.org/PR11397
+ 541. https://gcc.gnu.org/PR12505
+ 542. https://gcc.gnu.org/PR13150
+ 543. https://gcc.gnu.org/PR12666
+ 544. https://gcc.gnu.org/PR12969
+ 545. https://gcc.gnu.org/PR10819
+ 546. https://gcc.gnu.org/PR11612
+ 547. https://gcc.gnu.org/PR13211
+ 548. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=3.3.4
+ 549. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=3.3.5
+ 550. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=3.3.6
+ 551. https://gcc.gnu.org/onlinedocs/
+ 552. mailto:gcc-help at gcc.gnu.org
+ 553. mailto:gcc at gcc.gnu.org
+ 554. https://gcc.gnu.org/lists.html
+ 555. http://www.fsf.org/
+ 556. https://gcc.gnu.org/about.html
+ 557. http://validator.w3.org/check/referer
+======================================================================
+http://gcc.gnu.org/gcc-3.2/index.html
+                             GCC 3.2 Release Series
+
+   April 25, 2003
+
+   The [1]GNU project and the GCC developers are pleased to announce the
+   release of GCC 3.2.3.
+
+   The purpose of the GCC 3.2 release series is to provide a stable
+   platform for OS distributors to use building their next releases. A
+   primary objective was to stabilize the C++ ABI; we believe that the
+   interface to the compiler and the C++ standard library are now
+   relatively stable.
+
+   Be aware that C++ code compiled by GCC 3.2.x will (in general) not
+   interoperate with code compiled by GCC 3.1.1 or earlier.
+
+   Please refer to our [2]detailed list of news, caveats, and bug-fixes
+   for further information.
+
+Release History
+
+   GCC 3.2.3
+          April 25, 2003 ([3]changes)
+
+   GCC 3.2.2
+          February 5, 2003 ([4]changes)
+
+   GCC 3.2.1
+          November 19, 2002 ([5]changes)
+
+   GCC 3.2
+          August 14, 2002 ([6]changes)
+
+References and Acknowledgements
+
+   GCC used to stand for the GNU C Compiler, but since the compiler
+   supports several other languages aside from C, it now stands for the
+   GNU Compiler Collection.
+
+   A list of [7]successful builds is updated as new information becomes
+   available.
+
+   The GCC developers would like to thank the numerous people that have
+   contributed new features, improvements, bug fixes, and other changes as
+   well as test results to GCC. This [8]amazing group of volunteers is
+   what makes GCC successful.
+
+   For additional information about GCC please refer to the [9]GCC project
+   web site or contact the [10]GCC development mailing list.
+
+   To obtain GCC please use [11]our mirror sites, or our CVS server.
+
+
+    For questions related to the use of GCC, please consult these web
+    pages and the [12]GCC manuals. If that fails, the
+    [13]gcc-help at gcc.gnu.org mailing list might help. Comments on these
+    web pages and the development of GCC are welcome on our developer
+    list at [14]gcc at gcc.gnu.org. All of [15]our lists have public
+    archives.
+
+   Copyright (C) [16]Free Software Foundation, Inc. Verbatim copying and
+   distribution of this entire article is permitted in any medium,
+   provided this notice is preserved.
+
+   These pages are [17]maintained by the GCC team. Last modified
+   2014-06-28[18].
+
+References
+
+   1. http://www.gnu.org/
+   2. http://gcc.gnu.org/gcc-3.2/changes.html
+   3. http://gcc.gnu.org/gcc-3.2/changes.html#3.2.3
+   4. http://gcc.gnu.org/gcc-3.2/changes.html#3.2.2
+   5. http://gcc.gnu.org/gcc-3.2/changes.html#3.2.1
+   6. http://gcc.gnu.org/gcc-3.2/changes.html#3.2
+   7. http://gcc.gnu.org/gcc-3.2/buildstat.html
+   8. https://gcc.gnu.org/onlinedocs/gcc/Contributors.html
+   9. http://gcc.gnu.org/index.html
+  10. mailto:gcc at gcc.gnu.org
+  11. http://gcc.gnu.org/mirrors.html
+  12. https://gcc.gnu.org/onlinedocs/
+  13. mailto:gcc-help at gcc.gnu.org
+  14. mailto:gcc at gcc.gnu.org
+  15. https://gcc.gnu.org/lists.html
+  16. http://www.fsf.org/
+  17. https://gcc.gnu.org/about.html
+  18. http://validator.w3.org/check/referer
+======================================================================
+http://gcc.gnu.org/gcc-3.2/changes.html
+                             GCC 3.2 Release Series
+                        Changes, New Features, and Fixes
+
+   The latest release in the 3.2 release series is [1]GCC 3.2.3.
+
+Caveats and New Features
+
+  Caveats
+
+     * The C++ compiler does not correctly zero-initialize
+       pointers-to-data members. You must explicitly initialize them. For
+       example: int S::*m(0); will work, but depending on
+       default-initialization to zero will not work. This bug cannot be
+       fixed in GCC 3.2 without inducing unacceptable risks. It will be
+       fixed in GCC 3.3.
+     * This GCC release is based on the GCC 3.1 sourcebase, and thus has
+       all the [2]changes in the GCC 3.1 series. In addition, GCC 3.2 has
+       a number of C++ ABI fixes which make its C++ compiler generate
+       binary code which is incompatible with the C++ compilers found in
+       earlier GCC releases, including GCC 3.1 and GCC 3.1.1.
+
+  Frontend Enhancements
+
+    C/C++/Objective-C
+
+     * The method of constructing the list of directories to be searched
+       for header files has been revised. If a directory named by a -I
+       option is a standard system include directory, the option is
+       ignored to ensure that the default search order for system
+       directories and the special treatment of system header files are
+       not defeated.
+     * The C and Objective-C compilers no longer accept the "Naming Types"
+       extension (typedef foo = bar); it was already unavailable in C++.
+       Code which uses it will need to be changed to use the "typeof"
+       extension instead: typedef typeof(bar) foo. (We have removed this
+       extension without a period of deprecation because it has caused the
+       compiler to crash since version 3.0 and no one noticed until very
+       recently. Thus we conclude it is not in widespread use.)
+
+    C++
+
+     * GCC 3.2 fixed serveral differences between the C++ ABI implemented
+       in GCC and the multi-vendor standard, but more have been found
+       since the release. 3.2.1 adds a new warning, -Wabi, to warn about
+       code which is affected by these bugs. We will fix these bugs in
+       some future release, once we are confident that all have been
+       found; until then, it is our intention to make changes to the ABI
+       only if they are necessary for correct compilation of C++, as
+       opposed to conformance to the ABI documents.
+     * For details on how to build an ABI compliant compiler for GNU/Linux
+       systems, check the [3]common C++ ABI page.
+
+  New Targets and Target Specific Improvements
+
+    IA-32
+
+     * Fixed a number of bugs in SSE and MMX intrinsics.
+     * Fixed common compiler crashes with SSE instruction set enabled
+       (implied by -march=pentium3, pentium4, athlon-xp)
+     * __m128 and __m128i is not 128bit aligned when used in structures.
+
+    x86-64
+
+     * A bug whereby the compiler could generate bad code for bzero has
+       been fixed.
+     * ABI fixes (implying ABI incompatibilities with previous version in
+       some corner cases)
+     * Fixed prefetch code generation
+     __________________________________________________________________
+
+GCC 3.2.3
+
+   3.2.3 is a bug fix release only; there are no new features that were
+   not present in GCC 3.2.2.
+
+  Bug Fixes
+
+   This section lists the problem reports (PRs) from GCC's bug tracking
+   system that are known to be fixed in the 3.2.3 release. This list might
+   not be complete (that is, it is possible that some PRs that have been
+   fixed are not listed here), and some of the titles have been changed to
+   make them more clear.
+
+    Internal Compiler Errors (multi-platform)
+
+     * [4]3782: (c++) -quiet -fstats produces a segmentation fault in
+       cc1plus
+     * [5]6440: (c++) template specializations cause ICE
+     * [6]7050: (c++) ICE on: (i ? get_string() : throw)
+     * [7]7741: ICE on conflicting types (make_decl_rtl in varasm.c)
+     * [8]7982: (c++) ICE due to infinite recursion (using STL set)
+     * [9]8068: exceedingly high (infinite) memory usage
+     * [10]8178: ICE with __builtin_ffs
+     * [11]8396: ICE in copy_to_mode_reg, in explow.c
+     * [12]8674: (c++) ICE in cp_expr_size, in cp/cp-lang.c
+     * [13]9768: ICE when optimizing inline code at -O2
+     * [14]9798: (c++) Infinite recursion (segfault) in
+       cp/decl.c:push_using_directive with recursive using directives
+     * [15]9799: mismatching structure initializer with nested flexible
+       array member: ICE
+     * [16]9928: ICE on duplicate enum declaration
+     * [17]10114: ICE in mem_loc_descriptor, in dwarf2out.c (affects
+       sparc, alpha)
+     * [18]10352: ICE in find_reloads_toplev
+     * [19]10336: ICE with -Wunreachable-code
+
+    C/optimizer bugs:
+
+     * [20]8224: Incorrect joining of signed and unsigned division
+     * [21]8613: -O2 produces wrong code with builtin strlen and
+       postincrements
+     * [22]8828: gcc reports some code is unreachable when it is not
+     * [23]9226: GCSE breaking argument passing
+     * [24]9853: miscompilation of non-constant structure initializer
+     * [25]9797: C99-style struct initializers are miscompiled
+     * [26]9967: Some standard C function calls should not be replaced
+       when optimizing for size
+     * [27]10116: ce2: invalid merge of join_bb in the context of switch
+       statements
+     * [28]10171: wrong code for inlined function
+     * [29]10175: -Wunreachable-code doesn't work for single lines
+
+    C++ compiler and library:
+
+     * [30]8316: Confusing diagnostic for code that misuses conversion
+       operators
+     * [31]9169: filebuf output fails if codecvt<>::out returns noconv
+     * [32]9420: incomplete type incorrectly reported
+     * [33]9459: typeof in return type specification of template not
+       supported
+     * [34]9507: filebuf::open handles ios_base::ate incorrectly
+     * [35]9538: Out-of-bounds memory access in streambuf::sputbackc
+     * [36]9602: Total confusion about template/friend/virtual/abstract
+     * [37]9993: destructor not called for local object created within and
+       returned from infinite loop
+     * [38]10167: ieee_1003.1-2001 locale specialisations on a glibc-2.3.2
+       system
+
+    Java compiler and library:
+
+     * [39]9652: libgcj build fails on irix6.5.1[78]
+     * [40]10144: gas on solaris complains about bad .stabs lines for
+       java, native as unaffected
+
+    x86-specific (Intel/AMD):
+
+     * [41]8746: gcc miscompiles Linux kernel ppa driver on x86
+     * [42]9888: -mcpu=k6 -Os produces out of range loop instructions
+     * [43]9638: Cross-build for target i386-elf and i586-pc-linux-gnu
+       failed
+     * [44]9954: Cross-build for target i586-pc-linux-gnu (--with-newlib)
+       failed
+
+    SPARC-specific:
+
+     * [45]7784: [Sparc] ICE in extract_insn, in recog.c
+     * [46]7796: sparc extra failure with -m64 on execute/930921-1.c in
+       unroll.c
+     * [47]8281: ICE when compiling with -O2 -fPIC for Ultrasparc
+     * [48]8366: [Sparc] C testsuite failure with -m64 -fpic -O in
+       execute/loop-2d.c
+     * [49]8726: gcc -O2 miscompiles Samba 2.2.7 on 32-bit sparc
+     * [50]9414: Scheduling bug on Ultrasparc
+     * [51]10067: GCC-3.2.2 outputs invalid asm on sparc64
+
+    m68k-specific:
+
+     * [52]7248: broken "inclusive or" code
+     * [53]8343: m68k-elf/rtems ICE at instantiate_virtual_regs_1
+
+    PowerPC-specific:
+
+     * [54]9732: Wrong code with -O2 -fPIC
+     * [55]10073: ICE: powerpc cannot split insn
+
+    Alpha-specific:
+
+     * [56]7702: optimization problem on a DEC alpha under OSF1
+     * [57]9671: gcc.3.2.2 does not build on a HP Tru64 Unix v5.1B system
+
+    HP-specific:
+
+     * [58]8694: <string> breaks <ctype.h> on HP-UX 10.20 (DUP: 9275)
+     * [59]9953: (ada) gcc 3.2.x can't build 3.3-branch ada on HP-UX 10
+       (missing symbol)
+     * [60]10271: Floating point args don't get reloaded across function
+       calls with -O2
+
+    MIPS specific:
+
+     * [61]6362: mips-irix6 gcc-3.1 C testsuite failure with -mips4 in
+       compile/920501-4.c
+
+    CRIS specific:
+
+     * [62]10377: gcc-3.2.2 creates bad assembler code for cris
+
+    Miscellaneous and minor bugs:
+
+     * [63]6955: collect2 says "core dumped" when there is no core
+     __________________________________________________________________
+
+GCC 3.2.2
+
+   Beginning with 3.2.2, GCC's Makefile suite supports redirection of make
+   install by means of the DESTDIR variable. Parts of the GCC tree have
+   featured that support long before, but now it is available even from
+   the top level.
+
+   Other than that, GCC 3.2.2 is a bug fix release only; there are no new
+   features that were not present in GCC 3.2.1.
+
+  Bug Fixes
+
+   On the following i386-based systems GCC 3.2.1 broke the C ABI wrt.
+   functions returning structures: Cygwin, FreeBSD (GCC 3.2.1 as shipped
+   with FreeBSD 5.0 does not have this problem), Interix, a.out-based
+   GNU/Linux and NetBSD, OpenBSD, and Darwin. GCC 3.2.2 reverts this ABI
+   change, and thus restores ABI-compatibility with previous releases
+   (except GCC 3.2.1) on these platforms.
+
+   This section lists the problem reports (PRs) from GCC's bug tracking
+   system that are known to be fixed in the 3.2.2 release. This list might
+   not be complete (that is, it is possible that some PRs that have been
+   fixed are not listed here) and some of the titles have been changed to
+   make them more clear.
+
+    Internal Compiler Errors (multi-platform)
+
+     * [64]5919: (c++) ICE when passing variable array to template
+       function
+     * [65]7129: (c++) ICE with min/max assignment operators (<?= and >?=)
+     * [66]7507: ICE with -O2 when address of called function is a
+       complicated expression
+     * [67]7622: ICE with nested inline functions if function's address is
+       taken
+     * [68]7681: (fortran) ICE in compensate_edge, in reg-stack.c (also PR
+       [69]9258)
+     * [70]8031: (c++) ICE in code comparing typeids and casting from
+       virtual base
+     * [71]8275: ICE in simplify_subreg
+     * [72]8332: (c++) builtin strlen/template interaction causes ICE
+     * [73]8372: (c++) ICE on explicit call of destructor
+     * [74]8439: (c, not c++) empty struct causes ICE
+     * [75]8442: (c++) ICE with nested template classes
+     * [76]8518: ICE when compiling mplayer ("extern inline" issue)
+     * [77]8615: (c++) ICE with out-of-range character constant template
+       argument
+     * [78]8663: (c++) ICE in cp_expr_size, at cp-lang.c:307
+     * [79]8799: (c++) ICE: error reporting routines re-entered
+     * [80]9328: (c++) ICE with typeof(X) for overloaded X
+     * [81]9465: (preprocessor) cpp -traditional ICE on null bytes
+
+    C++ (compiler and library) bugs
+
+     * [82]47: scoping in nested classes is broken
+     * [83]6745: problems with iostream rdbuf() member function
+     * [84]8214: conversion from const char* const to char* sometimes
+       accepted illegally
+     * [85]8493: builtin strlen and overload resolution (same bug as
+       [86]8332)
+     * [87]8503: strange behaviour of function types
+     * [88]8727: compiler confused by inheritance from an anonymous struct
+     * [89]7445: poor performance of std::locale::classic() in
+       multi-threaded applications
+     * [90]8230: mishandling of overflow in vector<T>::resize
+     * [91]8399: sync_with_stdio(false) breaks unformatted input
+     * [92]8662: illegal access of private member of unnamed class is
+       accepted
+     * [93]8707: "make distclean" fails in libstdc++-v3 directory
+     * [94]8708: __USE_MALLOC doesn't work
+     * [95]8790: Use of non-thread-safe strtok in src/localename.cc
+     * [96]8887: Bug in date formats with --enable-clocale=generic
+     * [97]9076: Call Frame Instructions are not handled correctly during
+       unwind operation
+     * [98]9151: std::setprecision limited to 16 digits when outputting a
+       double to a stream
+     * [99]9168: codecvt<char, char, mbstate_t> overwrites output buffers
+     * [100]9269: libstdc++ headers: explicit specialization of function
+       must precede its first use
+     * [101]9322: return value of basic_streambuf<>::getloc affected by
+       locale::global
+     * [102]9433: segfault in runtime support for dynamic_cast
+
+    C and optimizer bugs
+
+     * [103]8032: GCC incorrectly initializes static structs that have
+       flexible arrays
+     * [104]8639: simple arithmetic expression broken
+     * [105]8794: optimization improperly eliminates certain expressions
+     * [106]8832: traditional "asm volatile" code is illegally optimized
+     * [107]8988: loop optimizer bug: with -O2, code is generated that
+       segfaults (found on i386, bug present for all platforms)
+     * [108]9492: structure copy clobbers subsequent stores to structure
+
+    Objective-C bugs
+
+     * [109]9267: Objective-C parser won't build with newer bison versions
+       (e.g. 1.875)
+
+    Ada bugs
+
+     * [110]8344: Ada build problem due to conflict between gcc/final.o,
+       gcc/ada/final.o
+
+    Preprocessor bugs
+
+     * [111]8524: _Pragma within macros is improperly expanded
+     * [112]8880: __WCHAR_TYPE__ macro incorrectly set to "long int" with
+       -fshort-wchar
+
+    ARM-specific
+
+     * [113]9090: arm ICE with >= -O2; regression from gcc-2.95
+
+    x86-specific (Intel/AMD)
+
+     * [114]8588: ICE in extract_insn, at recog.c:NNNN (shift instruction)
+     * [115]8599: loop unroll bug with -march=k6-3
+     * [116]9506: ABI breakage in structure return (affects BSD and
+       Cygwin, but not GNU/Linux)
+
+    FreeBSD 5.0 specific
+
+     * [117]9484: GCC 3.2.1 Bootstrap failure on FreeBSD 5.0
+
+    RTEMS-specific
+
+     * [118]9292: hppa1.1-rtems configurery problems
+     * [119]9293: [m68k-elf/rtems] config/m68k/t-crtstuff bug
+     * [120]9295: [mips-rtems] config/mips/rtems.h init/fini issue
+     * [121]9296: gthr-rtems regression
+     * [122]9316: powerpc-rtems: extending multilibs
+
+    HP-PA specific
+
+     * [123]9493: ICE with -O2 when building a simple function
+
+    Documentation
+
+     * [124]7341: hyperlink to gcov in GCC documentation doesn't work
+     * [125]8947: Please add a warning about "-malign-double" in docs
+     * [126]7448, [127]8882: typo cleanups
+     __________________________________________________________________
+
+GCC 3.2.1
+
+   3.2.1 adds a new warning, -Wabi. This option warns when GNU C++
+   generates code that is known not to be binary-compatible with the
+   vendor-neutral ia32/ia64 ABI. Please consult the GCC manual, included
+   in the distribution, for details.
+
+   This release also removes an old GCC extension, "naming types", and the
+   documentation now directs users to use a different GCC extension,
+   __typeof__, instead. The feature had evidently been broken for a while.
+
+   Otherwise, 3.2.1 is a bug fix release only; other than bug fixes and
+   the new warning there are no new features that were not present in GCC
+   3.2.
+
+   In addition, the previous fix for [128]PR 7445 (poor performance of
+   std::locale::classic() in multi-threaded applications) was reverted
+   ("unfixed"), because the "fix" was not thread-safe.
+
+  Bug Fixes
+
+   This section lists the problem reports (PRs) from GCC's bug tracking
+   system that are known to be fixed in the 3.2.1 release. This list might
+   not be complete (that is, it is possible that some PRs that have been
+   fixed are not listed here). As you can see, the number of bug fixes is
+   quite large, so it is strongly recommended that users of earlier GCC
+   3.x releases upgrade to GCC 3.2.1.
+
+    Internal Compiler Errors (multi-platform)
+
+     * [129]2521: (c++) ICE in build_ptrmemfunc, in cp/typeck.c
+     * [130]5661: (c++) ICE instantiating template on array of unknown
+       size (bad code)
+     * [131]6419: (c++) ICE in make_decl_rtl for "longest" attribute on
+       64-bit platforms
+     * [132]6994: (c++) ICE in find_function_data
+     * [133]7150: preprocessor: GCC -dM -E gives an ICE
+     * [134]7160: ICE when optimizing branches without a return value
+     * [135]7228: (c++) ICE when using member template and template
+       function
+     * [136]7266: (c++) ICE with -pedantic on missing typename
+     * [137]7353: ICE from use of "Naming Types" extension, see above
+     * [138]7411: ICE in instantiate_virtual_regs_1, in function.c
+     * [139]7478: (c++) ICE on static_cast inside template
+     * [140]7526: preprocessor core dump when _Pragma implies #pragma
+       dependency
+     * [141]7721: (c++) ICE on simple (but incorrect) template ([142]7803
+       is a duplicate)
+     * [143]7754: (c++) ICE on union with template parameter
+     * [144]7788: (c++) redeclaring a definition as an incomplete class
+       causes ICE
+     * [145]8031: (c++) ICE in comptypes, in cp/typeck.c
+     * [146]8055: preprocessor dies with SIG11 when building FreeBSD
+       kernel
+     * [147]8067: (c++) ICE due to mishandling of __FUNCTION__ and related
+       variables
+     * [148]8134: (c++) ICE in force_store_init_value on legal code
+     * [149]8149: (c++) ICE on incomplete type
+     * [150]8160: (c++) ICE in build_modify_expr, in cp/typeck.c: array
+       initialization
+
+    C++ (compiler and library) bugs
+
+     * [151]5607: No pointer adjustment in covariant return types
+     * [152]6579: Infinite loop with statement expressions in member
+       initialization
+     * [153]6803: Default copy constructor bug in GCC 3.1
+     * [154]7176: g++ confused by friend and static member with same name
+     * [155]7188: Segfault with template class and recursive (incorrect)
+       initializer list
+     * [156]7306: Regression: GCC 3.x fails to compile code with virtual
+       inheritance if a method has a variable number of arguments
+     * [157]7461: ctype<char>::classic_table() returns offset array on
+       Cygwin
+     * [158]7524: f(const float arg[3]) fails
+     * [159]7584: Erroneous ambiguous base error on using declaration
+     * [160]7676: Member template overloading problem
+     * [161]7679: infinite loop when a right parenthesis is missing
+     * [162]7811: default locale not taken from environment
+     * [163]7961: compare( char *) implemented incorrectly in
+       basic_string<>
+     * [164]8071: basic_ostream::operator<<(streambuf*) loops forever if
+       streambuf::underflow() leaves gptr() NULL (dups: [165]8127,
+       [166]6745)
+     * [167]8096: deque::at() throws std::range_error instead of
+       std::out_of_range
+     * [168]8127: cout << cin.rdbuf() infinite loop
+     * [169]8218: Excessively large memory consumed for classes with large
+       array members
+     * [170]8287: GCC 3.2: Destructor called for non-constructed local
+       object
+     * [171]8347: empty vector range used in string construction causes
+       core dump
+     * [172]8348: fail() flag is set in istringstream when eof() flag is
+       set
+     * [173]8391: regression: infinite loop in cp/decl2.c(finish_file)
+
+    C and optimizer bugs
+
+     * [174]6627: -fno-align-functions doesn't seem to disable function
+       alignment
+     * [175]6631: life_analysis misoptimizes code to initialize fields of
+       a structure
+     * [176]7102: unsigned char division results in floating exception
+     * [177]7120: Run once loop should *always* be unrolled
+       (pessimization)
+     * [178]7209: Bug involving array referencing and ?: operator
+     * [179]7515: invalid inlining of global function with -O3
+     * [180]7814: incorrect scheduling for glibc-2.2.92 strcpy test
+     * [181]8467: bug in sibling call optimization
+
+    Preprocessor bugs
+
+     * [182]4890: incorrect line markers from the traditional preprocessor
+     * [183]7357: -M option omits system headers files (making it the same
+       as -MM)
+     * [184]7358: Changes to Sun's make Dependencies
+     * [185]7602: C++ header files found in CPLUS_INCLUDE_PATH treated as
+       C headers
+     * [186]7862: Interrupting GCC -MD removes .d file but not .o
+     * [187]8190: Failed compilation deletes -MD dependency file
+     * [188]8524: _Pragma within macro is improperly expanded
+
+    x86 specific (Intel/AMD)
+
+     * [189]5351: (i686-only) function pass-by-value structure copy
+       corrupts stack ([190]7591 is a duplicate)
+     * [191]6845, [192]7034, [193]7124, [194]7174: ICE's with
+       -march=pentium3/pentium2/athlon (these are all the same underlying
+       bug, in MMX register use)
+     * [195]7134, [196]7375, [197]7390: ICE with -march=athlon (maybe same
+       as above?)
+     * [198]6890: xmmintrin.h, _MM_TRANSPOSE4_PS is broken
+     * [199]6981: wrong code in 64-bit manipulation on x86
+     * [200]7242: GCC -mcpu=pentium[23] doesn't define __tune_pentiumpro__
+       macro
+     * [201]7396: ix86: cmpgt_ss, cmpge_ss, cmpngt_ss, and cmpnge_ss SSE
+       intrinsics are broken
+     * [202]7630: GCC 3.2 breaks on Mozilla 1.0's JS sources with
+       -march=pentium4
+     * [203]7693: Typo in i386 mmintrin.h header
+     * [204]7723: ICE - Pentium3 sse - GCC 3.2
+     * [205]7951: ICE on -march=pentium4 -O2 -mfpmath=sse
+     * [206]8146: (i686 only) gcc 3.2 miscompiles gcc 2.95.3
+
+    PowerPC specific
+
+     * [207]5967: GCC bug when profiling nested functions on powerpc
+     * [208]6984: wrong code generated with -O2, -O3, -Os for do-while
+       loop on PowerPC
+     * [209]7114: PowerPC: ICE building strcoll.op from glibc-2.2.5
+     * [210]7130: miscompiled code for GCC-3.1 on
+       powerpc-unknown-linux-gnu with -funroll-all-loops
+     * [211]7133: PowerPC ICE: unrecognizable insn
+     * [212]7380: ICE in extract_insn, at recog.c:2148
+     * [213]8252: ICE on Altivec code with optimization turned on
+     * [214]8451: Altivec ICE in GCC 3.2
+
+    HP/PA specific
+
+     * [215]7250: __ashrdi3 returns wrong value on 32 bit hppa
+
+    SPARC specific
+
+     * [216]6668: when using --disable-multilib, libgcc_s.so is installed
+       in the wrong place on sparc-solaris
+     * [217]7151: ICE when compiling for UltraSPARC
+     * [218]7335: SPARC: ICE in verify_wide_reg (flow.c:557) with long
+       double and -O1
+     * [219]7842: [REGRESSION] SPARC code gen bug
+
+    ARM specific
+
+     * [220]7856: [arm] invalid offset in constant pool reference
+     * [221]7967: optimization produces wrong code (ARM)
+
+    Alpha specific
+
+     * [222]7374: __builtin_fabsl broken on alpha
+
+    IBM s390 specific
+
+     * [223]7370: ICE in fixup_var_refs_1 on s390x
+     * [224]7409: loop optimization bug on s390x-linux-gnu
+     * [225]8232: s390x: ICE when using bcmp with int length argument
+
+    SCO specific
+
+     * [226]7623: SCO OpenServer build fails with machmode.def: undefined
+       symbol: BITS_PER_UNIT
+
+    m68k/Coldfire specific
+
+     * [227]8314: crtbegin, crtend need to be multilib'ed for this
+       platform
+
+    Documentation
+
+     * [228]761: Document some undocumented options
+     * [229]5610: Fix documentation about invoking SSE instructions
+       (-mfpmath=sse)
+     * [230]7484: List -Wmissing-declarations as C-only option
+     * [231]7531: -mcmodel not documented for x86-64
+     * [232]8120: Update documentation of bad use of ##
+     __________________________________________________________________
+
+GCC 3.2
+
+   3.2 is a small bug fix release, but there is a change to the
+   application binary interface (ABI), hence the change to the second part
+   of the version number.
+
+   The main purpose of the 3.2 release is to correct a couple of problems
+   in the C++ ABI, with the intention of providing a stable interface
+   going forward.  Accordingly, 3.2 is only a small change to 3.1.1.
+
+  Bug Fixes
+
+    C++
+
+     * [233]7320: g++ 3.2 relocation problem
+     * [234]7470: vtable: virtual function pointers not in declaration
+       order
+
+    libstdc++
+
+     * [235]6410: Trouble with non-ASCII monetary symbols and wchar_t
+     * [236]6503, [237]6642, [238]7186: Problems with comparing or
+       subtracting various types of const and non-const iterators
+     * [239]7216: ambiguity with basic_iostream::traits_type
+     * [240]7220: problem with basic_istream::ignore(0,delimiter)
+     * [241]7222: locale::operator==() doesn't work on std::locale("")
+     * [242]7286: placement operator delete issue
+     * [243]7442: cxxabi.h does not match the C++ ABI
+     * [244]7445: poor performance of std::locale::classic() in
+       multi-threaded applications
+
+    x86-64 specific
+
+     * [245]7291: off-by-one in generated inline bzero code for x86-64
+
+
+    For questions related to the use of GCC, please consult these web
+    pages and the [246]GCC manuals. If that fails, the
+    [247]gcc-help at gcc.gnu.org mailing list might help. Comments on these
+    web pages and the development of GCC are welcome on our developer
+    list at [248]gcc at gcc.gnu.org. All of [249]our lists have public
+    archives.
+
+   Copyright (C) [250]Free Software Foundation, Inc. Verbatim copying and
+   distribution of this entire article is permitted in any medium,
+   provided this notice is preserved.
+
+   These pages are [251]maintained by the GCC team. Last modified
+   2014-06-27[252].
+
+References
+
+   1. http://gcc.gnu.org/gcc-3.2/changes.html#3.2.3
+   2. http://gcc.gnu.org/gcc-3.1/changes.html
+   3. http://gcc.gnu.org/gcc-3.2/c++-abi.html
+   4. https://gcc.gnu.org/PR3782
+   5. https://gcc.gnu.org/PR6440
+   6. https://gcc.gnu.org/PR7050
+   7. https://gcc.gnu.org/PR7741
+   8. https://gcc.gnu.org/PR7982
+   9. https://gcc.gnu.org/PR8068
+  10. https://gcc.gnu.org/PR8178
+  11. https://gcc.gnu.org/PR8396
+  12. https://gcc.gnu.org/PR8674
+  13. https://gcc.gnu.org/PR9768
+  14. https://gcc.gnu.org/PR9798
+  15. https://gcc.gnu.org/PR9799
+  16. https://gcc.gnu.org/PR9928
+  17. https://gcc.gnu.org/PR10114
+  18. https://gcc.gnu.org/PR10352
+  19. https://gcc.gnu.org/PR10336
+  20. https://gcc.gnu.org/PR8224
+  21. https://gcc.gnu.org/PR8613
+  22. https://gcc.gnu.org/PR8828
+  23. https://gcc.gnu.org/PR9226
+  24. https://gcc.gnu.org/PR9853
+  25. https://gcc.gnu.org/PR9797
+  26. https://gcc.gnu.org/PR9967
+  27. https://gcc.gnu.org/PR10116
+  28. https://gcc.gnu.org/PR10171
+  29. https://gcc.gnu.org/PR10175
+  30. https://gcc.gnu.org/PR8316
+  31. https://gcc.gnu.org/PR9169
+  32. https://gcc.gnu.org/PR9420
+  33. https://gcc.gnu.org/PR9459
+  34. https://gcc.gnu.org/PR9507
+  35. https://gcc.gnu.org/PR9538
+  36. https://gcc.gnu.org/PR9602
+  37. https://gcc.gnu.org/PR9993
+  38. https://gcc.gnu.org/PR10167
+  39. https://gcc.gnu.org/PR9652
+  40. https://gcc.gnu.org/PR10144
+  41. https://gcc.gnu.org/PR8746
+  42. https://gcc.gnu.org/PR9888
+  43. https://gcc.gnu.org/PR9638
+  44. https://gcc.gnu.org/PR9954
+  45. https://gcc.gnu.org/PR7784
+  46. https://gcc.gnu.org/PR7796
+  47. https://gcc.gnu.org/PR8281
+  48. https://gcc.gnu.org/PR8366
+  49. https://gcc.gnu.org/PR8726
+  50. https://gcc.gnu.org/PR9414
+  51. https://gcc.gnu.org/PR10067
+  52. https://gcc.gnu.org/PR7248
+  53. https://gcc.gnu.org/PR8343
+  54. https://gcc.gnu.org/PR9732
+  55. https://gcc.gnu.org/PR10073
+  56. https://gcc.gnu.org/PR7702
+  57. https://gcc.gnu.org/PR9671
+  58. https://gcc.gnu.org/PR8694
+  59. https://gcc.gnu.org/PR9953
+  60. https://gcc.gnu.org/PR10271
+  61. https://gcc.gnu.org/PR6362
+  62. https://gcc.gnu.org/PR10377
+  63. https://gcc.gnu.org/PR6955
+  64. https://gcc.gnu.org/PR5919
+  65. https://gcc.gnu.org/PR7129
+  66. https://gcc.gnu.org/PR7507
+  67. https://gcc.gnu.org/PR7622
+  68. https://gcc.gnu.org/PR7681
+  69. https://gcc.gnu.org/PR9528
+  70. https://gcc.gnu.org/PR8031
+  71. https://gcc.gnu.org/PR8275
+  72. https://gcc.gnu.org/PR8332
+  73. https://gcc.gnu.org/PR8372
+  74. https://gcc.gnu.org/PR8439
+  75. https://gcc.gnu.org/PR8442
+  76. https://gcc.gnu.org/PR8518
+  77. https://gcc.gnu.org/PR8615
+  78. https://gcc.gnu.org/PR8663
+  79. https://gcc.gnu.org/PR8799
+  80. https://gcc.gnu.org/PR9328
+  81. https://gcc.gnu.org/PR9465
+  82. https://gcc.gnu.org/PR47
+  83. https://gcc.gnu.org/PR6745
+  84. https://gcc.gnu.org/PR8214
+  85. https://gcc.gnu.org/PR8493
+  86. https://gcc.gnu.org/PR8332
+  87. https://gcc.gnu.org/PR8503
+  88. https://gcc.gnu.org/PR8727
+  89. https://gcc.gnu.org/PR7445
+  90. https://gcc.gnu.org/PR8230
+  91. https://gcc.gnu.org/PR8399
+  92. https://gcc.gnu.org/PR8662
+  93. https://gcc.gnu.org/PR8707
+  94. https://gcc.gnu.org/PR8708
+  95. https://gcc.gnu.org/PR8790
+  96. https://gcc.gnu.org/PR8887
+  97. https://gcc.gnu.org/PR9076
+  98. https://gcc.gnu.org/PR9151
+  99. https://gcc.gnu.org/PR9168
+ 100. https://gcc.gnu.org/PR9269
+ 101. https://gcc.gnu.org/PR9322
+ 102. https://gcc.gnu.org/PR9433
+ 103. https://gcc.gnu.org/PR8032
+ 104. https://gcc.gnu.org/PR8639
+ 105. https://gcc.gnu.org/PR8794
+ 106. https://gcc.gnu.org/PR8832
+ 107. https://gcc.gnu.org/PR8988
+ 108. https://gcc.gnu.org/PR9492
+ 109. https://gcc.gnu.org/PR9267
+ 110. https://gcc.gnu.org/PR8344
+ 111. https://gcc.gnu.org/PR8524
+ 112. https://gcc.gnu.org/PR8880
+ 113. https://gcc.gnu.org/PR9090
+ 114. https://gcc.gnu.org/PR8588
+ 115. https://gcc.gnu.org/PR8599
+ 116. https://gcc.gnu.org/PR9506
+ 117. https://gcc.gnu.org/PR9484
+ 118. https://gcc.gnu.org/PR9292
+ 119. https://gcc.gnu.org/PR9293
+ 120. https://gcc.gnu.org/PR9295
+ 121. https://gcc.gnu.org/PR9296
+ 122. https://gcc.gnu.org/PR9316
+ 123. https://gcc.gnu.org/PR9493
+ 124. https://gcc.gnu.org/PR7341
+ 125. https://gcc.gnu.org/PR8947
+ 126. https://gcc.gnu.org/PR7448
+ 127. https://gcc.gnu.org/PR8882
+ 128. https://gcc.gnu.org/PR7445
+ 129. https://gcc.gnu.org/PR2521
+ 130. https://gcc.gnu.org/PR5661
+ 131. https://gcc.gnu.org/PR6419
+ 132. https://gcc.gnu.org/PR6994
+ 133. https://gcc.gnu.org/PR7150
+ 134. https://gcc.gnu.org/PR7160
+ 135. https://gcc.gnu.org/PR7228
+ 136. https://gcc.gnu.org/PR7266
+ 137. https://gcc.gnu.org/PR7353
+ 138. https://gcc.gnu.org/PR7411
+ 139. https://gcc.gnu.org/PR7478
+ 140. https://gcc.gnu.org/PR7526
+ 141. https://gcc.gnu.org/PR7721
+ 142. https://gcc.gnu.org/PR7803
+ 143. https://gcc.gnu.org/PR7754
+ 144. https://gcc.gnu.org/PR7788
+ 145. https://gcc.gnu.org/PR8031
+ 146. https://gcc.gnu.org/PR8055
+ 147. https://gcc.gnu.org/PR8067
+ 148. https://gcc.gnu.org/PR8134
+ 149. https://gcc.gnu.org/PR8149
+ 150. https://gcc.gnu.org/PR8160
+ 151. https://gcc.gnu.org/PR5607
+ 152. https://gcc.gnu.org/PR6579
+ 153. https://gcc.gnu.org/PR6803
+ 154. https://gcc.gnu.org/PR7176
+ 155. https://gcc.gnu.org/PR7188
+ 156. https://gcc.gnu.org/PR7306
+ 157. https://gcc.gnu.org/PR7461
+ 158. https://gcc.gnu.org/PR7524
+ 159. https://gcc.gnu.org/PR7584
+ 160. https://gcc.gnu.org/PR7676
+ 161. https://gcc.gnu.org/PR7679
+ 162. https://gcc.gnu.org/PR7811
+ 163. https://gcc.gnu.org/PR7961
+ 164. https://gcc.gnu.org/PR8071
+ 165. https://gcc.gnu.org/PR8127
+ 166. https://gcc.gnu.org/PR6745
+ 167. https://gcc.gnu.org/PR8096
+ 168. https://gcc.gnu.org/PR8127
+ 169. https://gcc.gnu.org/PR8218
+ 170. https://gcc.gnu.org/PR8287
+ 171. https://gcc.gnu.org/PR8347
+ 172. https://gcc.gnu.org/PR8348
+ 173. https://gcc.gnu.org/PR8391
+ 174. https://gcc.gnu.org/PR6627
+ 175. https://gcc.gnu.org/PR6631
+ 176. https://gcc.gnu.org/PR7102
+ 177. https://gcc.gnu.org/PR7120
+ 178. https://gcc.gnu.org/PR7209
+ 179. https://gcc.gnu.org/PR7515
+ 180. https://gcc.gnu.org/PR7814
+ 181. https://gcc.gnu.org/PR8467
+ 182. https://gcc.gnu.org/PR4890
+ 183. https://gcc.gnu.org/PR7357
+ 184. https://gcc.gnu.org/PR7358
+ 185. https://gcc.gnu.org/PR7602
+ 186. https://gcc.gnu.org/PR7862
+ 187. https://gcc.gnu.org/PR8190
+ 188. https://gcc.gnu.org/PR8524
+ 189. https://gcc.gnu.org/PR5351
+ 190. https://gcc.gnu.org/PR7591
+ 191. https://gcc.gnu.org/PR6845
+ 192. https://gcc.gnu.org/PR7034
+ 193. https://gcc.gnu.org/PR7124
+ 194. https://gcc.gnu.org/PR7174
+ 195. https://gcc.gnu.org/PR7134
+ 196. https://gcc.gnu.org/PR7375
+ 197. https://gcc.gnu.org/PR7390
+ 198. https://gcc.gnu.org/PR6890
+ 199. https://gcc.gnu.org/PR6981
+ 200. https://gcc.gnu.org/PR7242
+ 201. https://gcc.gnu.org/PR7396
+ 202. https://gcc.gnu.org/PR7630
+ 203. https://gcc.gnu.org/PR7693
+ 204. https://gcc.gnu.org/PR7723
+ 205. https://gcc.gnu.org/PR7951
+ 206. https://gcc.gnu.org/PR8146
+ 207. https://gcc.gnu.org/PR5967
+ 208. https://gcc.gnu.org/PR6984
+ 209. https://gcc.gnu.org/PR7114
+ 210. https://gcc.gnu.org/PR7130
+ 211. https://gcc.gnu.org/PR7133
+ 212. https://gcc.gnu.org/PR7380
+ 213. https://gcc.gnu.org/PR8252
+ 214. https://gcc.gnu.org/PR8451
+ 215. https://gcc.gnu.org/PR7250
+ 216. https://gcc.gnu.org/PR6668
+ 217. https://gcc.gnu.org/PR7151
+ 218. https://gcc.gnu.org/PR7335
+ 219. https://gcc.gnu.org/PR7842
+ 220. https://gcc.gnu.org/PR7856
+ 221. https://gcc.gnu.org/PR7967
+ 222. https://gcc.gnu.org/PR7374
+ 223. https://gcc.gnu.org/PR7370
+ 224. https://gcc.gnu.org/PR7409
+ 225. https://gcc.gnu.org/PR8232
+ 226. https://gcc.gnu.org/PR7623
+ 227. https://gcc.gnu.org/PR8314
+ 228. https://gcc.gnu.org/PR761
+ 229. https://gcc.gnu.org/PR5610
+ 230. https://gcc.gnu.org/PR7484
+ 231. https://gcc.gnu.org/PR7531
+ 232. https://gcc.gnu.org/PR8120
+ 233. https://gcc.gnu.org/PR7320
+ 234. https://gcc.gnu.org/PR7470
+ 235. https://gcc.gnu.org/PR6410
+ 236. https://gcc.gnu.org/PR6503
+ 237. https://gcc.gnu.org/PR6642
+ 238. https://gcc.gnu.org/PR7186
+ 239. https://gcc.gnu.org/PR7216
+ 240. https://gcc.gnu.org/PR7220
+ 241. https://gcc.gnu.org/PR7222
+ 242. https://gcc.gnu.org/PR7286
+ 243. https://gcc.gnu.org/PR7442
+ 244. https://gcc.gnu.org/PR7445
+ 245. https://gcc.gnu.org/PR7291
+ 246. https://gcc.gnu.org/onlinedocs/
+ 247. mailto:gcc-help at gcc.gnu.org
+ 248. mailto:gcc at gcc.gnu.org
+ 249. https://gcc.gnu.org/lists.html
+ 250. http://www.fsf.org/
+ 251. https://gcc.gnu.org/about.html
+ 252. http://validator.w3.org/check/referer
+======================================================================
+http://gcc.gnu.org/gcc-3.1/index.html
+                                    GCC 3.1
+
+   July 27, 2002
+
+   The [1]GNU project and the GCC developers are pleased to announce the
+   release of GCC 3.1.1.
+
+   The links below still apply to GCC 3.1.1.
+
+   May 15, 2002
+
+   The [2]GNU project and the GCC developers are pleased to announce the
+   release of GCC 3.1.
+
+   GCC used to stand for the GNU C Compiler, but since the compiler
+   supports several other languages aside from C, it now stands for the
+   GNU Compiler Collection.
+
+   A list of [3]successful builds is updated as new information becomes
+   available.
+
+   The GCC developers would like to thank the numerous people that have
+   contributed [4]new features, improvements, bug fixes, and other changes
+   as well as test results to GCC. This [5]amazing group of volunteers is
+   what makes GCC successful.
+
+   For additional information about GCC please refer to the [6]GCC project
+   web site or contact the [7]GCC development mailing list.
+
+   To obtain GCC please use [8]our mirror sites, or our CVS server.
+     __________________________________________________________________
+
+
+    For questions related to the use of GCC, please consult these web
+    pages and the [9]GCC manuals. If that fails, the
+    [10]gcc-help at gcc.gnu.org mailing list might help. Comments on these
+    web pages and the development of GCC are welcome on our developer
+    list at [11]gcc at gcc.gnu.org. All of [12]our lists have public
+    archives.
+
+   Copyright (C) [13]Free Software Foundation, Inc. Verbatim copying and
+   distribution of this entire article is permitted in any medium,
+   provided this notice is preserved.
+
+   These pages are [14]maintained by the GCC team. Last modified
+   2014-06-28[15].
+
+References
+
+   1. http://www.gnu.org/
+   2. http://www.gnu.org/
+   3. http://gcc.gnu.org/gcc-3.1/buildstat.html
+   4. http://gcc.gnu.org/gcc-3.1/changes.html
+   5. https://gcc.gnu.org/onlinedocs/gcc/Contributors.html
+   6. http://gcc.gnu.org/index.html
+   7. mailto:gcc at gcc.gnu.org
+   8. http://gcc.gnu.org/mirrors.html
+   9. https://gcc.gnu.org/onlinedocs/
+  10. mailto:gcc-help at gcc.gnu.org
+  11. mailto:gcc at gcc.gnu.org
+  12. https://gcc.gnu.org/lists.html
+  13. http://www.fsf.org/
+  14. https://gcc.gnu.org/about.html
+  15. http://validator.w3.org/check/referer
+======================================================================
+http://gcc.gnu.org/gcc-3.1/changes.html
+                             GCC 3.1 Release Series
+                        Changes, New Features, and Fixes
+
+Additional changes in GCC 3.1.1
+
+     * A bug related to how structures and unions are returned has been
+       fixed for powerpc-*-netbsd*.
+     * An important bug in the implementation of -fprefetch-loop-arrays
+       has been fixed. Previously the optimization prefetched random
+       blocks of memory for most targets except for i386.
+     * The Java compiler now compiles Java programs much faster and also
+       works with parallel make.
+     * Nested functions have been fixed for mips*-*-netbsd*.
+     * Some missing floating point support routines have beed added for
+       mips*-*-netbsd*.
+     * This [1]message gives additional information about the bugs fixed
+       in this release.
+
+Caveats
+
+     * The -traditional C compiler option has been deprecated and will be
+       removed in GCC 3.3. (It remains possible to preprocess non-C code
+       with the traditional preprocessor.)
+     * The default debugging format for most ELF platforms (including
+       GNU/Linux and FreeBSD; notable exception is Solaris) has changed
+       from stabs to DWARF2. This requires GDB 5.1.1 or later.
+
+General Optimizer Improvements
+
+     * Jan Hubicka, SuSE Labs, together with Richard Henderson, Red Hat,
+       and Andreas Jaeger, SuSE Labs, has contributed [2]infrastructure
+       for profile driven optimizations.
+       Options -fprofile-arcs and -fbranch-probabilities can now be used
+       to improve speed of the generated code by profiling the actual
+       program behaviour on typical runs. In the absence of profile info
+       the compiler attempts to guess the profile statically.
+     * [3]SPEC2000 and SPEC95 benchmark suites are now used daily to
+       monitor performance of the generated code.
+       According to the SPECInt2000 results on an AMD Athlon CPU, the code
+       generated by GCC 3.1 is 6% faster on the average (8.2% faster with
+       profile feedback) compared to GCC 3.0. The code produced by GCC 3.0
+       is about 2.1% faster compared to 2.95.3. Tests were done using the
+       -O2 -march=athlon command-line options.
+     * Alexandre Oliva, of Red Hat, has generalized the tree inlining
+       infrastructure developed by CodeSourcery, LLC for the C++ front
+       end, so that it is now used in the C front end too. Inlining
+       functions as trees exposes them earlier to the compiler, giving it
+       more opportunities for optimization.
+     * Support for data prefetching instructions has been added to the GCC
+       back end and several targets. A new __builtin_prefetch intrinsic is
+       available to explicitly insert prefetch instructions and
+       experimental support for loop array prefetching has been added (see
+       -fprefetch-loop-array documentation).
+     * Support for emitting debugging information for macros has been
+       added for DWARF2. It is activated using -g3.
+
+New Languages and Language specific improvements
+
+  C/C++
+
+     * A few more [4]ISO C99 features.
+     * The preprocessor is 10-50% faster than the preprocessor in GCC 3.0.
+     * The preprocessor's symbol table has been merged with the symbol
+       table of the C, C++ and Objective-C front ends.
+     * The preprocessor consumes less memory than the preprocessor in GCC
+       3.0, often significantly so. On normal input files, it typically
+       consumes less memory than pre-3.0 cccp-based GCC, too.
+
+  C++
+
+     * -fhonor-std and -fno-honor-std have been removed. -fno-honor-std
+       was a workaround to allow std compliant code to work with the
+       non-std compliant libstdc++-v2. libstdc++-v3 is std compliant.
+     * The C++ ABI has been fixed so that void (A::*)() const is mangled
+       as "M1AKFvvE", rather than "MK1AFvvE" as before. This change only
+       affects pointer to cv-qualified member function types.
+     * The C++ ABI has been changed to correctly handle this code:
+    struct A {
+      void operator delete[] (void *, size_t);
+    };
+
+    struct B : public A {
+    };
+
+    new B[10];
+
+       The amount of storage allocated for the array will be greater than
+       it was in 3.0, in order to store the number of elements in the
+       array, so that the correct size can be passed to operator delete[]
+       when the array is deleted. Previously, the value passed to operator
+       delete[] was unpredictable.
+       This change will only affect code that declares a two-argument
+       operator delete[] with a second parameter of type size_t in a base
+       class, and does not override that definition in a derived class.
+     * The C++ ABI has been changed so that:
+    struct A {
+      void operator delete[] (void *, size_t);
+      void operator delete[] (void *);
+    };
+
+       does not cause unnecessary storage to be allocated when an array of
+       A objects is allocated.
+       This change will only affect code that declares both of these forms
+       of operator delete[], and declared the two-argument form before the
+       one-argument form.
+     * The C++ ABI has been changed so that when a parameter is passed by
+       value, any cleanup for that parameter is performed in the caller,
+       as specified by the ia64 C++ ABI, rather than the called function
+       as before. As a result, classes with a non-trivial destructor but a
+       trivial copy constructor will be passed and returned by invisible
+       reference, rather than by bitwise copy as before.
+     * G++ now supports the "named return value optimization": for code
+       like
+    A f () {
+      A a;
+      ...
+      return a;
+    }
+
+       G++ will allocate a in the return value slot, so that the return
+       becomes a no-op. For this to work, all return statements in the
+       function must return the same variable.
+     * Improvements to the C++ library are listed in [5]the libstdc++-v3
+       FAQ.
+
+  Objective-C
+
+     * Annoying linker warnings (due to incorrect code being generated)
+       have been fixed.
+     * If a class method cannot be found, the compiler no longer issues a
+       warning if a corresponding instance method exists in the root
+       class.
+     * Forward @protocol declarations have been fixed.
+     * Loading of categories has been fixed in certain situations (GNU run
+       time only).
+     * The class lookup in the run-time library has been rewritten so that
+       class method dispatch is more than twice as fast as it used to be
+       (GNU run time only).
+
+  Java
+
+     * libgcj now includes RMI, java.lang.ref.*, javax.naming, and
+       javax.transaction.
+     * Property files and other system resources can be compiled into
+       executables which use libgcj using the new gcj --resource feature.
+     * libgcj has been ported to more platforms. In particular there is
+       now a mostly-functional mingw32 (Windows) target port.
+     * JNI and CNI invocation interfaces were implemented, so gcj-compiled
+       Java code can now be called from a C/C++ application.
+     * gcj can now use builtin functions for certain known methods, for
+       instance Math.cos.
+     * gcj can now automatically remove redundant array-store checks in
+       some common cases.
+     * The --no-store-checks optimization option was added. This can be
+       used to omit runtime store checks for code which is known not to
+       throw ArrayStoreException
+     * The following third party interface standards were added to libgcj:
+       org.w3c.dom and org.xml.sax.
+     * java.security has been merged with GNU Classpath. The new package
+       is now JDK 1.2 compliant, and much more complete.
+     * A bytecode verifier was added to the libgcj interpreter.
+     * java.lang.Character was rewritten to comply with the Unicode 3.0
+       standard, and improve performance.
+     * Partial support for many more locales was added to libgcj.
+     * Socket timeouts have been implemented.
+     * libgcj has been merged into a single shared library. There are no
+       longer separate shared libraries for the garbage collector and
+       zlib.
+     * Several performance improvements were made to gcj and libgcj:
+          + Hash synchronization (thin locks)
+          + A special allocation path for finalizer-free objects
+          + Thread-local allocation
+          + Parallel GC, and other GC tweaks
+
+  Fortran
+
+   Fortran improvements are listed in [6]the Fortran documentation.
+
+  Ada
+
+   [7]Ada Core Technologies, Inc, has contributed its GNAT Ada 95 front
+   end and associated tools. The GNAT compiler fully implements the Ada
+   language as defined by the ISO/IEC 8652 standard.
+
+   Please note that the integration of the Ada front end is still work in
+   progress.
+
+New Targets and Target Specific Improvements
+
+     * Hans-Peter Nilsson has contributed a port to [8]MMIX, the CPU
+       architecture used in new editions of Donald E. Knuth's The Art of
+       Computer Programming.
+     * [9]Axis Communications has contributed its port to the CRIS CPU
+       architecture, used in the ETRAX system-on-a-chip series. See
+       [10]Axis' developer site for technical information.
+     * Alexandre Oliva, of Red Hat, has contributed a port to the
+       [11]SuperH SH5 64-bit RISC microprocessor architecture, extending
+       the existing SH port.
+     * UltraSPARC is fully supported in 64-bit mode. The option -m64
+       enables it.
+     * For compatibility with the Sun compiler #pragma redefine_extname
+       has been implemented on Solaris.
+     * The x86 back end has had some noticeable work done to it.
+          + SuSE Labs developers Jan Hubicka, Bo Thorsen and Andreas
+            Jaeger have contributed a port to the AMD x86-64 architecture.
+            For more information on x86-64 see [12]http://www.x86-64.org.
+          + The compiler now supports MMX, 3DNow!, SSE, and SSE2
+            instructions. Options -mmmx, -m3dnow, -msse, and -msse2 will
+            enable the respective instruction sets. Intel C++ compatible
+            MMX/3DNow!/SSE intrinsics are implemented. SSE2 intrinsics
+            will be added in next major release.
+          + Following those improvements, targets for Pentium MMX, K6-2,
+            K6-3, Pentium III, Pentium 4, and Athlon 4 Mobile/XP/MP were
+            added. Refer to the documentation on -march= and -mcpu=
+            options for details.
+          + For those targets that support it, -mfpmath=sse will cause the
+            compiler to generate SSE/SSE2 instructions for floating point
+            math instead of x87 instructions. Usually, this will lead to
+            quicker code — especially on the Pentium 4. Note that only
+            scalar floating point instructions are used and GCC does not
+            exploit SIMD features yet.
+          + Prefetch support has been added to the Pentium III, Pentium 4,
+            K6-2, K6-3, and Athlon series.
+          + Code generated for floating point to integer conversions has
+            been improved leading to better performance of many 3D
+            applications.
+     * The PowerPC back end has added 64-bit PowerPC GNU/Linux support.
+     * C++ support for AIX has been improved.
+     * Aldy Hernandez, of Red Hat, Inc, has contributed extensions to the
+       PowerPC port supporting the AltiVec programming model (SIMD). The
+       support, though presently useful, is experimental and is expected
+       to stabilize for 3.2. The support is written to conform to
+       Motorola's AltiVec specs. See -maltivec.
+
+Obsolete Systems
+
+   Support for a number of older systems has been declared obsolete in GCC
+   3.1. Unless there is activity to revive them, the next release of GCC
+   will have their sources permanently removed.
+
+   All configurations of the following processor architectures have been
+   declared obsolete:
+     * MIL-STD-1750A, 1750a-*-*
+     * AMD A29k, a29k-*-*
+     * Convex, c*-convex-*
+     * Clipper, clipper-*-*
+     * Elxsi, elxsi-*-*
+     * Intel i860, i860-*-*
+     * Sun picoJava, pj-*-* and pjl-*-*
+     * Western Electric 32000, we32k-*-*
+
+   Most configurations of the following processor architectures have been
+   declared obsolete, but we are preserving a few systems which may have
+   active developers. It is unlikely that the remaining systems will
+   survive much longer unless we see definite signs of port activity.
+     * Motorola 88000 except
+          + Generic a.out, m88k-*-aout*
+          + Generic SVR4, m88k-*-sysv4
+          + OpenBSD, m88k-*-openbsd*
+     * NS32k except
+          + NetBSD, ns32k-*-netbsd*
+          + OpenBSD, ns32k-*-openbsd*.
+     * ROMP except
+          + OpenBSD, romp-*-openbsd*.
+
+   Finally, only some configurations of these processor architectures are
+   being obsoleted.
+     * Alpha:
+          + OSF/1, alpha*-*-osf[123]*. (Digital Unix and Tru64 Unix, aka
+            alpha*-*-osf[45], are still supported.)
+     * ARM:
+          + RISCiX, arm-*-riscix*.
+     * i386:
+          + 386BSD, i?86-*-bsd*
+          + Chorus, i?86-*-chorusos*
+          + DG/UX, i?86-*-dgux*
+          + FreeBSD 1.x, i?86-*-freebsd1.*
+          + IBM AIX, i?86-*-aix*
+          + ISC UNIX, i?86-*-isc*
+          + GNU/Linux with pre-BFD linker, i?86-*-linux*oldld*
+          + NEXTstep, i?86-next-*
+          + OSF UNIX, i?86-*-osf1* and i?86-*-osfrose*
+          + RTEMS/coff, i?86-*-rtemscoff*
+          + RTEMS/go32, i?86-go32-rtems*
+          + Sequent/BSD, i?86-sequent-bsd*
+          + Sequent/ptx before version 3, i?86-sequent-ptx[12]* and
+            i?86-sequent-sysv3*
+          + SunOS, i?86-*-sunos*
+     * Motorola 68000:
+          + Altos, m68[k0]*-altos-*
+          + Apollo, m68[k0]*-apollo-*
+          + Apple A/UX, m68[k0]*-apple-*
+          + Bull, m68[k0]*-bull-*
+          + Convergent, m68[k0]*-convergent-*
+          + Generic SVR3, m68[k0]*-*-sysv3*
+          + ISI, m68[k0]*-isi-*
+          + LynxOS, m68[k0]*-*-lynxos*
+          + NEXT, m68[k0]*-next-*
+          + RTEMS/coff, m68[k0]*-*-rtemscoff*
+          + Sony, m68[k0]*-sony-*
+     * MIPS:
+          + DEC Ultrix, mips-*-ultrix* and mips-dec-*
+          + Generic BSD, mips-*-bsd*
+          + Generic System V, mips-*-sysv*
+          + IRIX before version 5, mips-sgi-irix[1234]*
+          + RiscOS, mips-*-riscos*
+          + Sony, mips-sony-*
+          + Tandem, mips-tandem-*
+     * SPARC:
+          + RTEMS/a.out, sparc-*-rtemsaout*.
+
+Documentation improvements
+
+     * The old manual ("Using and Porting the GNU Compiler Collection")
+       has been replaced by a users manual ("Using the GNU Compiler
+       Collection") and a separate internals reference manual ("GNU
+       Compiler Collection Internals").
+     * More complete and much improved documentation about GCC's internal
+       representation used by the C and C++ front ends.
+     * Many cleanups and improvements in general.
+
+
+    For questions related to the use of GCC, please consult these web
+    pages and the [13]GCC manuals. If that fails, the
+    [14]gcc-help at gcc.gnu.org mailing list might help. Comments on these
+    web pages and the development of GCC are welcome on our developer
+    list at [15]gcc at gcc.gnu.org. All of [16]our lists have public
+    archives.
+
+   Copyright (C) [17]Free Software Foundation, Inc. Verbatim copying and
+   distribution of this entire article is permitted in any medium,
+   provided this notice is preserved.
+
+   These pages are [18]maintained by the GCC team. Last modified
+   2014-06-28[19].
+
+References
+
+   1. https://gcc.gnu.org/ml/gcc/2002-07/msg01208.html
+   2. http://gcc.gnu.org/news/profiledriven.html
+   3. http://gcc.gnu.org/benchmarks/
+   4. http://gcc.gnu.org/c99status.html
+   5. https://gcc.gnu.org/onlinedocs/libstdc++/faq.html
+   6. https://gcc.gnu.org/onlinedocs/gcc-3.1.1/g77/News.html
+   7. http://www.adacore.com/
+   8. http://www-cs-faculty.stanford.edu/~knuth/mmix.html
+   9. http://www.axis.com/
+  10. http://developer.axis.com/
+  11. http://www.superh.com/
+  12. http://www.x86-64.org/
+  13. https://gcc.gnu.org/onlinedocs/
+  14. mailto:gcc-help at gcc.gnu.org
+  15. mailto:gcc at gcc.gnu.org
+  16. https://gcc.gnu.org/lists.html
+  17. http://www.fsf.org/
+  18. https://gcc.gnu.org/about.html
+  19. http://validator.w3.org/check/referer
+======================================================================
+http://gcc.gnu.org/gcc-3.0/index.html
+                                   GCC 3.0.4
+
+   February 20, 2002
+
+   The [1]GNU project and the GCC developers are pleased to announce the
+   release of GCC 3.0.4, which is a bug-fix release for the GCC 3.0
+   series.
+
+   GCC used to stand for the GNU C Compiler, but since the compiler
+   supports several other languages aside from C, it now stands for the
+   GNU Compiler Collection.
+
+   GCC 3.0.x has several new optimizations, new targets, new languages and
+   many other new features, relative to GCC 2.95.x. See the [2]new
+   features page for a more complete list.
+
+   A list of [3]successful builds is updated as new information becomes
+   available.
+
+   The GCC developers would like to thank the numerous people that have
+   contributed new features, test results, bug fixes, etc to GCC. This
+   [4]amazing group of volunteers is what makes GCC successful.
+
+   And finally, we can't in good conscience fail to mention some
+   [5]caveats to using GCC 3.0.x.
+
+   For additional information about GCC please refer to the [6]GCC project
+   web site or contact the [7]GCC development mailing list.
+
+   To obtain GCC please use [8]our mirror sites, or our CVS server.
+     __________________________________________________________________
+
+Previous 3.0.x Releases
+
+   December 20, 2001: GCC 3.0.3 has been released.
+   October 25, 2001: GCC 3.0.2 has been released.
+   August 20, 2001: GCC 3.0.1 has been released.
+   June 18, 2001: GCC 3.0 has been released.
+
+
+    For questions related to the use of GCC, please consult these web
+    pages and the [9]GCC manuals. If that fails, the
+    [10]gcc-help at gcc.gnu.org mailing list might help. Comments on these
+    web pages and the development of GCC are welcome on our developer
+    list at [11]gcc at gcc.gnu.org. All of [12]our lists have public
+    archives.
+
+   Copyright (C) [13]Free Software Foundation, Inc. Verbatim copying and
+   distribution of this entire article is permitted in any medium,
+   provided this notice is preserved.
+
+   These pages are [14]maintained by the GCC team. Last modified
+   2014-06-28[15].
+
+References
+
+   1. http://www.gnu.org/
+   2. http://gcc.gnu.org/gcc-3.0/features.html
+   3. http://gcc.gnu.org/gcc-3.0/buildstat.html
+   4. https://gcc.gnu.org/onlinedocs/gcc/Contributors.html
+   5. http://gcc.gnu.org/gcc-3.0/caveats.html
+   6. http://gcc.gnu.org/index.html
+   7. mailto:gcc at gcc.gnu.org
+   8. http://gcc.gnu.org/mirrors.html
+   9. https://gcc.gnu.org/onlinedocs/
+  10. mailto:gcc-help at gcc.gnu.org
+  11. mailto:gcc at gcc.gnu.org
+  12. https://gcc.gnu.org/lists.html
+  13. http://www.fsf.org/
+  14. https://gcc.gnu.org/about.html
+  15. http://validator.w3.org/check/referer
+======================================================================
+http://gcc.gnu.org/gcc-3.0/features.html
+                              GCC 3.0 New Features
+
+Additional changes in GCC 3.0.4
+
+     * GCC 3.0 now supports newer versions of the [1]NetBSD operating
+       system, which use the ELF object file format, on x86 processors.
+     * Correct debugging information is generated from functions that have
+       lines from multiple files (e.g. yacc output).
+     * A fix for whitespace handling in the -traditional preprocessor,
+       which can affect Fortran.
+     * Fixes to the exception handling runtime.
+     * More fixes for bad code generation in C++.
+     * A fix for shared library generation under AIX 4.3.
+     * Documentation updates.
+     * Port of GCC to Tensilica's Xtensa processor contributed.
+     * A fix for compiling the PPC Linux kernel (FAT fs wouldn't link).
+
+Additional changes in GCC 3.0.3
+
+     * A fix to correct an accidental change to the PowerPC ABI.
+     * Fixes for bad code generation on a variety of architectures.
+     * Improvements to the debugging information generated for C++
+       classes.
+     * Fixes for bad code generation in C++.
+     * A fix to avoid crashes in the C++ demangler.
+     * A fix to the C++ standard library to avoid buffer overflows.
+     * Miscellaneous improvements for a variety of architectures.
+
+Additional changes in GCC 3.0.2
+
+     * Fixes for bad code generation during loop unrolling.
+     * Fixes for bad code generation by the sibling call optimization.
+     * Minor improvements to x86 code generation.
+     * Implementation of function descriptors in C++ vtables for IA64.
+     * Numerous minor bug-fixes.
+
+Additional changes in GCC 3.0.1
+
+     * C++ fixes for incorrect code-generation.
+     * Improved cross-compiling support for the C++ standard library.
+     * Fixes for some embedded targets that worked in GCC 2.95.3, but not
+       in GCC 3.0.
+     * Fixes for various exception-handling bugs.
+     * A port to the S/390 architecture.
+
+General Optimizer Improvements
+
+     * [2]Basic block reordering pass.
+     * New if-conversion pass with support for conditional (predicated)
+       execution.
+     * New tail call and sibling call elimination optimizations.
+     * New register renaming pass.
+     * New (experimental) [3]static single assignment (SSA) representation
+       support.
+     * New dead-code elimination pass implemented using the SSA
+       representation.
+     * [4]Global null pointer test elimination.
+     * [5]Global code hoisting/unification.
+     * More builtins and optimizations for stdio.h, string.h and old BSD
+       functions, as well as for ISO C99 functions.
+     * New builtin __builtin_expect for giving hints to the branch
+       predictor.
+
+New Languages and Language specific improvements
+
+     * The GNU Compiler for the Java(TM) language (GCJ) is now integrated
+       and supported, including the run-time library containing most
+       common non-GUI Java classes, a bytecode interpreter, and the Boehm
+       conservative garbage collector. Many bugs have been fixed. GCJ can
+       compile Java source or Java bytecodes to either native code or Java
+       class files, and supports native methods written in either the
+       standard JNI or the more efficient and convenient CNI.
+     * Here is a [6]partial list of C++ improvements, both new features
+       and those no longer supported.
+     * New C++ ABI. On the IA-64 platform GCC is capable of
+       inter-operating with other IA-64 compilers.
+     * The new ABI also significantly reduces the size of symbol and debug
+       information.
+     * New [7]C++ support library and many C++ bug fixes, vastly improving
+       our conformance to the ISO C++ standard.
+     * New [8]inliner for C++.
+     * Rewritten C preprocessor, integrated into the C, C++ and Objective
+       C compilers, with very many improvements including ISO C99 support
+       and [9]improvements to dependency generation.
+     * Support for more [10]ISO C99 features.
+     * Many improvements to support for checking calls to format functions
+       such as printf and scanf, including support for ISO C99 format
+       features, extensions from the Single Unix Specification and GNU
+       libc 2.2, checking of strfmon formats and features to assist in
+       auditing for format string security bugs.
+     * New warnings for C code that may have undefined semantics because
+       of violations of sequence point rules in the C standard (such as a
+       = a++;, a[n] = b[n++]; and a[i++] = i;), included in -Wall.
+     * Additional warning option -Wfloat-equal.
+     * Improvements to -Wtraditional.
+     * Fortran improvements are listed in [11]the Fortran documentation.
+
+New Targets and Target Specific Improvements
+
+     * New x86 back end, generating much improved code.
+     * Support for a generic i386-elf target contributed.
+     * New option to emit x86 assembly code using Intel style syntax
+       (-mintel-syntax).
+     * HPUX 11 support contributed.
+     * Improved PowerPC code generation, including scheduled prologue and
+       epilogue.
+     * Port of GCC to Intel's IA-64 processor contributed.
+     * Port of GCC to Motorola's MCore 210 and 340 contributed.
+     * New unified back-end for Arm, Thumb and StrongArm contributed.
+     * Port of GCC to Intel's XScale processor contributed.
+     * Port of GCC to Atmel's AVR microcontrollers contributed.
+     * Port of GCC to Mitsubishi's D30V processor contributed.
+     * Port of GCC to Matsushita's AM33 processor (a member of the MN10300
+       processor family) contributed.
+     * Port of GCC to Fujitsu's FR30 processor contributed.
+     * Port of GCC to Motorola's 68HC11 and 68HC12 processors contributed.
+     * Port of GCC to Sun's picoJava processor core contributed.
+
+Documentation improvements
+
+     * Substantially rewritten and improved C preprocessor manual.
+     * Many improvements to other documentation.
+     * Manpages for gcc, cpp and gcov are now generated automatically from
+       the master Texinfo manual, eliminating the problem of manpages
+       being out of date. (The generated manpages are only extracts from
+       the full manual, which is provided in Texinfo form, from which
+       info, HTML, other formats and a printed manual can be generated.)
+     * Generated info files are included in the release tarballs alongside
+       their Texinfo sources, avoiding problems on some platforms with
+       building makeinfo as part of the GCC distribution.
+
+Other significant improvements
+
+     * Garbage collection used internally by the compiler for most memory
+       allocation instead of obstacks.
+     * Lengauer and Tarjan algorithm used for computing dominators in the
+       CFG. This algorithm can be significantly faster and more space
+       efficient than our older algorithm.
+     * gccbug script provided to assist in submitting bug reports to our
+       bug tracking system. (Bug reports previously submitted directly to
+       our mailing lists, for which you received no bug tracking number,
+       should be submitted again using gccbug if you can reproduce the
+       problem with GCC 3.0.)
+     * The internal libgcc library is [12]built as a shared library on
+       systems that support it.
+     * Extensive testsuite included with GCC, with many new tests. In
+       addition to tests for GCC bugs that have been fixed, many tests
+       have been added for language features, compiler warnings and
+       builtin functions.
+     * Additional language-independent warning options -Wpacked, -Wpadded,
+       -Wunreachable-code and -Wdisabled-optimization.
+     * Target-independent options -falign-functions, -falign-loops and
+       -falign-jumps.
+
+   Plus a great many bug fixes and almost all the [13]features found in
+   GCC 2.95.
+
+
+    For questions related to the use of GCC, please consult these web
+    pages and the [14]GCC manuals. If that fails, the
+    [15]gcc-help at gcc.gnu.org mailing list might help. Comments on these
+    web pages and the development of GCC are welcome on our developer
+    list at [16]gcc at gcc.gnu.org. All of [17]our lists have public
+    archives.
+
+   Copyright (C) [18]Free Software Foundation, Inc. Verbatim copying and
+   distribution of this entire article is permitted in any medium,
+   provided this notice is preserved.
+
+   These pages are [19]maintained by the GCC team. Last modified
+   2014-06-28[20].
+
+References
+
+   1. http://www.netbsd.org/
+   2. http://gcc.gnu.org/news/reorder.html
+   3. http://gcc.gnu.org/news/ssa.html
+   4. http://gcc.gnu.org/news/null.html
+   5. http://gcc.gnu.org/news/unify.html
+   6. http://gcc.gnu.org/gcc-3.0/c++features.html
+   7. http://gcc.gnu.org/libstdc++/
+   8. http://gcc.gnu.org/news/inlining.html
+   9. http://gcc.gnu.org/news/dependencies.html
+  10. http://gcc.gnu.org/c99status.html
+  11. https://gcc.gnu.org/onlinedocs/gcc-3.4.6/g77/News.html
+  12. http://gcc.gnu.org/gcc-3.0/libgcc.html
+  13. http://gcc.gnu.org/gcc-2.95/features.html
+  14. https://gcc.gnu.org/onlinedocs/
+  15. mailto:gcc-help at gcc.gnu.org
+  16. mailto:gcc at gcc.gnu.org
+  17. https://gcc.gnu.org/lists.html
+  18. http://www.fsf.org/
+  19. https://gcc.gnu.org/about.html
+  20. http://validator.w3.org/check/referer
+======================================================================
+http://gcc.gnu.org/gcc-3.0/caveats.html
+                                GCC 3.0 Caveats
+
+     * -fstrict-aliasing is now part of -O2 and higher optimization
+       levels. This allows the compiler to assume the strictest aliasing
+       rules applicable to the language being compiled. For C and C++,
+       this activates optimizations based on the type of expressions. This
+       optimization may thus break old, non-compliant code.
+     * Enumerations are now properly promoted to int in function
+       parameters and function returns. Normally this change is not
+       visible, but when using -fshort-enums this is an ABI change.
+     * The undocumented extension that allowed C programs to have a label
+       at the end of a compound statement has been deprecated and may be
+       removed in a future version. Programs that now generate a warning
+       about this may be fixed by adding a null statement (a single
+       semicolon) after the label.
+     * The poorly documented extension that allowed string constants in C,
+       C++ and Objective C to contain unescaped newlines has been
+       deprecated and may be removed in a future version. Programs using
+       this extension may be fixed in several ways: the bare newline may
+       be replaced by \n, or preceded by \n\, or string concatenation may
+       be used with the bare newline preceded by \n" and " placed at the
+       start of the next line.
+     * The Chill compiler is not included in GCC 3.0, because of the lack
+       of a volunteer to convert it to use garbage collection.
+     * Certain non-standard iostream methods from earlier versions of
+       libstdc++ are not included in libstdc++ v3, i.e. filebuf::attach,
+       ostream::form, and istream::gets.
+     * The new C++ ABI is not yet fully supported by current (as of
+       2001-07-01) releases and development versions of GDB, or any
+       earlier versions. There is a problem setting breakpoints by line
+       number, and other related issues that have been fixed in GCC 3.0
+       but not yet handled in GDB:
+       [1]https://gcc.gnu.org/ml/gcc-bugs/2001-06/msg00421.html
+
+
+    For questions related to the use of GCC, please consult these web
+    pages and the [2]GCC manuals. If that fails, the
+    [3]gcc-help at gcc.gnu.org mailing list might help. Comments on these
+    web pages and the development of GCC are welcome on our developer
+    list at [4]gcc at gcc.gnu.org. All of [5]our lists have public archives.
+
+   Copyright (C) [6]Free Software Foundation, Inc. Verbatim copying and
+   distribution of this entire article is permitted in any medium,
+   provided this notice is preserved.
+
+   These pages are [7]maintained by the GCC team. Last modified
+   2014-06-27[8].
+
+References
+
+   1. https://gcc.gnu.org/ml/gcc-bugs/2001-06/msg00421.html
+   2. https://gcc.gnu.org/onlinedocs/
+   3. mailto:gcc-help at gcc.gnu.org
+   4. mailto:gcc at gcc.gnu.org
+   5. https://gcc.gnu.org/lists.html
+   6. http://www.fsf.org/
+   7. https://gcc.gnu.org/about.html
+   8. http://validator.w3.org/check/referer
+======================================================================
+http://gcc.gnu.org/gcc-2.95/index.html
+                                    GCC 2.95
+
+   March 16, 2001: The GNU project and the GCC developers are pleased to
+   announce the release of GCC version 2.95.3.
+
+Release History
+
+   GCC 2.95.3
+          March 16, 2001
+
+   GCC 2.95.2
+          October 27, 1999
+
+   GCC 2.95.1
+          August 19, 1999
+
+   GCC 2.95
+          July 31, 1999. This is the first release of GCC since the April
+          1999 GCC/EGCS reunification and includes nearly a year's worth
+          of new development and bugfixes.
+
+References and Acknowledgements
+
+   GCC used to stand for the GNU C Compiler, but since the compiler
+   supports several other languages aside from C, it now stands for the
+   GNU Compiler Collection.
+
+   The whole suite has been extensively [1]regression tested and
+   [2]package tested. It should be reliable and suitable for widespread
+   use.
+
+   The compiler has several new optimizations, new targets, new languages
+   and other new features. See the [3]new features page for a more
+   complete list of new features found in the GCC 2.95 releases.
+
+   The sources include installation instructions in both HTML and
+   plaintext forms in the install directory in the distribution. However,
+   the most up to date installation instructions and [4]build/test status
+   are on the web pages. We will update those pages as new information
+   becomes available.
+
+   The GCC developers would like to thank the numerous people that have
+   contributed new features, test results, bugfixes, etc to GCC. This
+   [5]amazing group of volunteers is what makes GCC successful.
+
+   And finally, we can't in good conscience fail to mention some
+   [6]caveats to using GCC 2.95.
+
+   Download GCC 2.95 from one of our many [7]mirror sites.
+
+   For additional information about GCC please see the [8]GCC project web
+   server or contact the [9]GCC development mailing list.
+
+
+    For questions related to the use of GCC, please consult these web
+    pages and the [10]GCC manuals. If that fails, the
+    [11]gcc-help at gcc.gnu.org mailing list might help. Comments on these
+    web pages and the development of GCC are welcome on our developer
+    list at [12]gcc at gcc.gnu.org. All of [13]our lists have public
+    archives.
+
+   Copyright (C) [14]Free Software Foundation, Inc. Verbatim copying and
+   distribution of this entire article is permitted in any medium,
+   provided this notice is preserved.
+
+   These pages are [15]maintained by the GCC team. Last modified
+   2014-06-28[16].
+
+References
+
+   1. http://gcc.gnu.org/gcc-2.95/regress.html
+   2. http://gcc.gnu.org/gcc-2.95/othertest.html
+   3. http://gcc.gnu.org/gcc-2.95/features.html
+   4. http://gcc.gnu.org/gcc-2.95/buildstat.html
+   5. https://gcc.gnu.org/onlinedocs/gcc/Contributors.html
+   6. http://gcc.gnu.org/gcc-2.95/caveats.html
+   7. http://gcc.gnu.org/mirrors.html
+   8. http://gcc.gnu.org/index.html
+   9. mailto:gcc at gcc.gnu.org
+  10. https://gcc.gnu.org/onlinedocs/
+  11. mailto:gcc-help at gcc.gnu.org
+  12. mailto:gcc at gcc.gnu.org
+  13. https://gcc.gnu.org/lists.html
+  14. http://www.fsf.org/
+  15. https://gcc.gnu.org/about.html
+  16. http://validator.w3.org/check/referer
+======================================================================
+http://gcc.gnu.org/gcc-2.95/features.html
+                             GCC 2.95 New Features
+
+     * General Optimizer Improvements:
+          + [1]Localized register spilling to improve speed and code
+            density especially on small register class machines.
+          + [2]Global CSE using lazy code motion algorithms.
+          + [3]Improved global constant/copy propagation.
+          + [4]Improved control flow graph analysis and manipulation.
+          + [5]Local dead store elimination.
+          + [6]Memory Load hoisting/store sinking in loops.
+          + [7]Type based alias analysis is enabled by default. Note this
+            feature will expose bugs in the Linux kernel. Please refer to
+            the FAQ (as shipped with GCC 2.95) for additional information
+            on this issue.
+          + Major revamp of GIV detection, combination and simplification
+            to improve loop performance.
+          + Major improvements to register allocation and reloading.
+     * New Languages and Language specific improvements
+          + [8]Many C++ improvements.
+          + [9]Many Fortran improvements.
+          + [10]Java front-end has been integrated. [11]runtime library is
+            available separately.
+          + [12]ISO C99 support
+          + [13]Chill front-end and runtime has been integrated.
+          + Boehm garbage collector support in libobjc.
+          + More support for various pragmas which appear in vendor
+            include files
+     * New Targets and Target Specific Improvements
+          + [14]SPARC backend rewrite.
+          + -mschedule=8000 will optimize code for PA8000 class
+            processors; -mpa-risc-2-0 will generate code for PA2.0
+            processors
+          + Various micro-optimizations for the ia32 port. K6
+            optimizations
+          + Compiler will attempt to align doubles in the stack on the
+            ia32 port
+          + Alpha EV6 support
+          + PowerPC 750
+          + RS6000/PowerPC: -mcpu=401 was added as an alias for -mcpu=403.
+            -mcpu=e603e was added to do -mcpu=603e and -msoft-float.
+          + c3x, c4x
+          + HyperSPARC
+          + SparcLite86x
+          + sh4
+          + Support for new systems (OpenBSD, FreeBSD, UWIN, Interix,
+            arm-linux)
+          + vxWorks targets include support for vxWorks threads
+          + StrongARM 110 and ARM9 support added. ARM Scheduling
+            parameters rewritten.
+          + Various changes to the MIPS port to avoid assembler macros,
+            which in turn improves performance
+          + Various performance improvements to the i960 port.
+          + Major rewrite of ns32k port
+     * Other significant improvements
+          + [15]Ability to dump cfg information and display it using vcg.
+          + The new faster scheme for fixing vendor header files is
+            enabled by default.
+          + Experimental internationalization support.
+          + multibyte character support
+          + Some compile-time speedups for pathological problems
+          + Better support for complex types
+     * Plus the usual mountain of bugfixes
+     * Core compiler is based on the gcc2 development tree from Sept 30,
+       1998, so we have all of the [16]features found in GCC 2.8.
+
+Additional Changes in GCC 2.95.1
+
+     * Generic bugfixes and improvements
+          + Various documentation fixes related to the GCC/EGCS merger.
+          + Fix memory management bug which could lead to spurious aborts,
+            core dumps or random parsing errors in the compiler.
+          + Fix a couple bugs in the dwarf1 and dwarf2 debug record
+            support.
+          + Fix infinite loop in the CSE optimizer.
+          + Avoid undefined behavior in compiler FP emulation code
+          + Fix install problem when prefix is overridden on the make
+            install command.
+          + Fix problem with unwanted installation of assert.h on some
+            systems.
+          + Fix problem with finding the wrong assembler in a single tree
+            build.
+          + Avoid increasing the known alignment of a register that is
+            already known to be a pointer.
+     * Platform specific bugfixes and improvements
+          + Codegen bugfix for prologue/epilogue for cpu32 target.
+          + Fix long long code generation bug for the Coldfire target.
+          + Fix various aborts in the SH compiler.
+          + Fix bugs in libgcc support library for the SH.
+          + Fix alpha ev6 code generation bug.
+          + Fix problems with EXIT_SUCCESS/EXIT_FAILURE redefinitions on
+            AIX platforms.
+          + Fix -fpic code generation bug for rs6000/ppc svr4 targets.
+          + Fix varargs/stdarg code generation bug for rs6000/ppc svr4
+            targets.
+          + Fix weak symbol handling for rs6000/ppc svr4 targets.
+          + Fix various problems with 64bit code generation for the
+            rs6000/ppc port.
+          + Fix codegen bug which caused tetex to be mis-compiled on the
+            x86.
+          + Fix compiler abort in new cfg code exposed by x86 port.
+          + Fix out of range array reference in code convert flat
+            registers to the x87 stacked FP register file.
+          + Fix minor vxworks configuration bug.
+          + Fix return type of bsearch for SunOS 4.x.
+     * Language & Runtime specific fixes.
+          + The G++ signature extension has been deprecated. It will be
+            removed in the next major release of G++. Use of signatures
+            will result in a warning from the compiler.
+          + Several bugs relating to templates and namespaces were fixed.
+          + A bug that caused crashes when combining templates with -g on
+            DWARF1 platforms was fixed.
+          + Pointers-to-members, virtual functions, and multiple
+            inheritance should now work together correctly.
+          + Some code-generation bugs relating to function try blocks were
+            fixed.
+          + G++ is a little bit more lenient with certain archaic
+            constructs than in GCC 2.95.
+          + Fix to prevent shared library version #s from bring truncated
+            to 1 digit
+          + Fix missing std:: in the libstdc++ library.
+          + Fix stream locking problems in libio.
+          + Fix problem in java compiler driver.
+
+Additional Changes in GCC 2.95.2
+
+   The -fstrict-aliasing is not enabled by default for GCC 2.95.2. While
+   the optimizations performed by -fstrict-aliasing are valid according to
+   the C and C++ standards, the optimization have caused some problems,
+   particularly with old non-conforming code.
+
+   The GCC developers are experimenting with ways to warn users about code
+   which violates the C/C++ standards, but those warnings are not ready
+   for widespread use at this time. Rather than wait for those warnings
+   the GCC developers have chosen to disable -fstrict-aliasing by default
+   for the GCC 2.95.2 release.
+
+   We strongly encourage developers to find and fix code which violates
+   the C/C++ standards as -fstrict-aliasing may be enabled by default in
+   future releases. Use the option -fstrict-aliasing to re-enable these
+   optimizations.
+     * Generic bugfixes and improvements
+          + Fix incorrectly optimized memory reference in global common
+            subexpression elimination (GCSE) optimization pass.
+          + Fix code generation bug in regmove.c in which it could
+            incorrectly change a "const" value.
+          + Fix bug in optimization of conditionals involving volatile
+            memory references.
+          + Avoid over-allocation of stack space for some procedures.
+          + Fixed bug in the compiler which caused incorrect optimization
+            of an obscure series of bit manipulations, shifts and
+            arithmetic.
+          + Fixed register allocator bug which caused teTeX to be
+            mis-compiled on SPARC targets.
+          + Avoid incorrect optimization of degenerate case statements for
+            certain targets such as the ARM.
+          + Fix out of range memory reference in the jump optimizer.
+          + Avoid dereferencing null pointer in fix-header.
+          + Fix test for GCC specific features so that it is possible to
+            bootstrap with gcc-2.6.2 and older versions of GCC.
+          + Fix typo in scheduler which could potentially cause out of
+            range memory accesses.
+          + Avoid incorrect loop reversal which caused incorrect code for
+            certain loops on PowerPC targets.
+          + Avoid incorrect optimization of switch statements on certain
+            targets (for example the ARM).
+     * Platform specific bugfixes and improvements
+          + Work around bug in Sun V5.0 compilers which caused bootstrap
+            comparison failures on SPARC targets.
+          + Fix SPARC backend bug which caused aborts in final.c.
+          + Fix sparc-hal-solaris2* configuration fragments.
+          + Fix bug in sparc block profiling.
+          + Fix obscure code generation bug for the PARISC targets.
+          + Define __STDC_EXT__ for HPUX configurations.
+          + Various POWERPC64 code generation bugfixes.
+          + Fix abort for PPC targets using ELF (ex GNU/Linux).
+          + Fix collect2 problems for AIX targets.
+          + Correct handling of .file directive for PPC targets.
+          + Fix bug in fix_trunc x86 patterns.
+          + Fix x86 port to correctly pop the FP stack for functions that
+            return structures in memory.
+          + Fix minor bug in strlen x86 pattern.
+          + Use stabs debugging instead of dwarf1 for x86-solaris targets.
+          + Fix template repository code to handle leading underscore in
+            mangled names.
+          + Fix weak/weak alias support for OpenBSD.
+          + GNU/Linux for the ARM has C++ compatible include files.
+     * Language & Runtime specific fixes.
+          + Fix handling of constructor attribute in the C front-end which
+            caused problems building the Chill runtime library on some
+            targets.
+          + Fix minor problem merging type qualifiers in the C front-end.
+          + Fix aliasing bug for pointers and references (C/C++).
+          + Fix incorrect "non-constant initializer bug" when -traditional
+            or -fwritable-strings is enabled.
+          + Fix build error for Chill front-end on SunOS.
+          + Do not complain about duplicate instantiations when using
+            -frepo (C++).
+          + Fix array bounds handling in C++ front-end which caused
+            problems with dwarf debugging information in some
+            circumstances.
+          + Fix minor namespace problem.
+          + Fix problem linking java programs.
+
+Additional Changes in GCC 2.95.3
+
+     * Generic bugfixes and improvements
+          + Fix numerous problems that caused incorrect optimization in
+            the register reloading code.
+          + Fix numerous problems that caused incorrect optimization in
+            the loop optimizer.
+          + Fix aborts in the functions build_insn_chain and scan_loops
+            under some circumstances.
+          + Fix an alias analysis bug.
+          + Fix an infinite compilation bug in the combiner.
+          + A few problems with complex number support have been fixed.
+          + It is no longer possible for gcc to act as a fork bomb when
+            installed incorrectly.
+          + The -fpack-struct option should be recognized now.
+          + Fixed a bug that caused incorrect code to be generated due to
+            a lost stack adjustment.
+     * Platform specific bugfixes and improvements
+          + Support building ARM toolchains hosted on Windows.
+          + Fix attribute calculations in ARM toolchains.
+          + arm-linux support has been improved.
+          + Fix a PIC failure on sparc targets.
+          + On ix86 targets, the regparm attribute should now work
+            reliably.
+          + Several updates for the h8300 port.
+          + Fix problem building libio with glibc 2.2.
+
+
+    For questions related to the use of GCC, please consult these web
+    pages and the [17]GCC manuals. If that fails, the
+    [18]gcc-help at gcc.gnu.org mailing list might help. Comments on these
+    web pages and the development of GCC are welcome on our developer
+    list at [19]gcc at gcc.gnu.org. All of [20]our lists have public
+    archives.
+
+   Copyright (C) [21]Free Software Foundation, Inc. Verbatim copying and
+   distribution of this entire article is permitted in any medium,
+   provided this notice is preserved.
+
+   These pages are [22]maintained by the GCC team. Last modified
+   2014-06-28[23].
+
+References
+
+   1. http://gcc.gnu.org/news/spill.html
+   2. http://gcc.gnu.org/news/lcm.html
+   3. http://gcc.gnu.org/news/cprop.html
+   4. http://gcc.gnu.org/news/cfg.html
+   5. http://gcc.gnu.org/news/dse.html
+   6. http://gcc.gnu.org/news/hoist.html
+   7. http://gcc.gnu.org/news/alias.html
+   8. http://gcc.gnu.org/gcc-2.95/c++features.html
+   9. https://gcc.gnu.org/onlinedocs/gcc-3.4.6/g77/News.html
+  10. http://gcc.gnu.org/java/gcj-announce.txt
+  11. http://gcc.gnu.org/news/javaannounce.html
+  12. http://gcc.gnu.org/c99status.html
+  13. http://gcc.gnu.org/news/chill.html
+  14. http://gcc.gnu.org/news/sparc.html
+  15. http://gcc.gnu.org/news/egcs-vcg.html
+  16. http://gcc.gnu.org/egcs-1.0/features-2.8.html
+  17. https://gcc.gnu.org/onlinedocs/
+  18. mailto:gcc-help at gcc.gnu.org
+  19. mailto:gcc at gcc.gnu.org
+  20. https://gcc.gnu.org/lists.html
+  21. http://www.fsf.org/
+  22. https://gcc.gnu.org/about.html
+  23. http://validator.w3.org/check/referer
+======================================================================
+http://gcc.gnu.org/gcc-2.95/caveats.html
+                                GCC 2.95 Caveats
+
+     * GCC 2.95 will issue an error for invalid asm statements that had
+       been silently accepted by earlier versions of the compiler. This is
+       particularly noticeable when compiling older versions of the Linux
+       kernel (2.0.xx). Please refer to the FAQ (as shipped with GCC 2.95)
+       for more information on this issue.
+     * GCC 2.95 implements type based alias analysis to disambiguate
+       memory references. Some programs, particularly the Linux kernel
+       violate ANSI/ISO aliasing rules and therefore may not operate
+       correctly when compiled with GCC 2.95. Please refer to the FAQ (as
+       shipped with GCC 2.95) for more information on this issue.
+     * GCC 2.95 has a known bug in its handling of complex variables for
+       64bit targets. Instead of silently generating incorrect code, GCC
+       2.95 will issue a fatal error for situations it can not handle.
+       This primarily affects the Fortran community as Fortran makes more
+       use of complex variables than C or C++.
+     * GCC 2.95 has an integrated libstdc++, but does not have an
+       integrated libg++. Furthermore old libg++ releases will not work
+       with GCC 2.95. You can retrieve a recent copy of libg++ from the
+       [1]GCC ftp server.
+       Note most C++ programs only need libstdc++.
+     * Exception handling may not work with shared libraries, particularly
+       on alphas, hppas, rs6000/powerpc and mips based platforms.
+       Exception handling is known to work on x86 GNU/Linux platforms with
+       shared libraries.
+     * In general, GCC 2.95 is more rigorous about rejecting invalid C++
+       code or deprecated C++ constructs than G++ 2.7, G++ 2.8, EGCS 1.0,
+       or EGCS 1.1. As a result it may be necessary to fix C++ code before
+       it will compile with GCC 2.95.
+     * G++ is also converting toward the ISO C++ standard; as a result
+       code which was previously valid (and thus accepted by other
+       compilers and older versions of g++) may no longer be accepted. The
+       flag -fpermissive may allow some non-conforming code to compile
+       with GCC 2.95.
+     * GCC 2.95 compiled C++ code is not binary compatible with EGCS
+       1.1.x, EGCS 1.0.x or GCC 2.8.x.
+     * GCC 2.95 does not have changes from the GCC 2.8 tree that were made
+       between Sept 30, 1998 and April 30, 1999 (the official end of the
+       GCC 2.8 project). Future GCC releases will include all the changes
+       from the defunct GCC 2.8 sources.
+
+
+    For questions related to the use of GCC, please consult these web
+    pages and the [2]GCC manuals. If that fails, the
+    [3]gcc-help at gcc.gnu.org mailing list might help. Comments on these
+    web pages and the development of GCC are welcome on our developer
+    list at [4]gcc at gcc.gnu.org. All of [5]our lists have public archives.
+
+   Copyright (C) [6]Free Software Foundation, Inc. Verbatim copying and
+   distribution of this entire article is permitted in any medium,
+   provided this notice is preserved.
+
+   These pages are [7]maintained by the GCC team. Last modified
+   2014-06-12[8].
+
+References
+
+   1. ftp://gcc.gnu.org/pub/gcc/infrastructure/libg++-2.8.1.3.tar.gz
+   2. https://gcc.gnu.org/onlinedocs/
+   3. mailto:gcc-help at gcc.gnu.org
+   4. mailto:gcc at gcc.gnu.org
+   5. https://gcc.gnu.org/lists.html
+   6. http://www.fsf.org/
+   7. https://gcc.gnu.org/about.html
+   8. http://validator.w3.org/check/referer
+======================================================================
+http://gcc.gnu.org/egcs-1.1/index.html
+                                    EGCS 1.1
+
+   September 3, 1998: We are pleased to announce the release of EGCS 1.1.
+   December 1, 1998: We are pleased to announce the release of EGCS 1.1.1.
+   March 15, 1999: We are pleased to announce the release of EGCS 1.1.2.
+
+   EGCS is a free software project to further the development of the GNU
+   compilers using an open development environment.
+
+   EGCS 1.1 is a major new release of the EGCS compiler system. It has
+   been [1]extensively tested and is believed to be stable and suitable
+   for widespread use.
+
+   EGCS 1.1 is based on an June 6, 1998 snapshot of the GCC 2.8
+   development sources; it contains all of the new features found in GCC
+   2.8.1 as well as all new development from GCC up to June 6, 1998.
+
+   EGCS 1.1 also contains many improvements and features not found in GCC
+   or in older versions of EGCS:
+     * Global common subexpression elimination and global constant/copy
+       propagation (aka [2]gcse)
+     * Ongoing improvements to the [3]alias analysis support to allow for
+       better optimizations throughout the compiler.
+     * Vastly improved [4]C++ compiler and integrated C++ runtime
+       libraries.
+     * Fixes for the /tmp symlink race security problems.
+     * New targets including mips16, arm-thumb and 64 bit PowerPC.
+     * Improvements to GNU Fortran (g77) compiler and runtime library made
+       since g77 version 0.5.23.
+
+   See the [5]new features page for a more complete list of new features
+   found in EGCS 1.1 releases.
+
+   EGCS 1.1.1 is a minor update to fix several serious problems in EGCS
+   1.1:
+     * General improvements and fixes
+          + Avoid some stack overflows when compiling large functions.
+          + Avoid incorrect loop invariant code motions.
+          + Fix some core dumps on Linux kernel code.
+          + Bring back the imake -Di386 and friends fix from EGCS 1.0.2.
+          + Fix code generation problem in gcse.
+          + Various documentation related fixes.
+     * g++/libstdc++ improvements and fixes
+          + MT safe EH fix for setjmp/longjmp based exception handling.
+          + Fix a few bad interactions between optimization and exception
+            handling.
+          + Fixes for demangling of template names starting with "__".
+          + Fix a bug that would fail to run destructors in some cases
+            with -O2.
+          + Fix 'new' of classes with virtual bases.
+          + Fix crash building Qt on the Alpha.
+          + Fix failure compiling WIFEXITED macro on GNU/Linux.
+          + Fix some -frepo failures.
+     * g77 and libf2c improvements and fixes
+          + Various documentation fixes.
+          + Avoid compiler crash on RAND intrinsic.
+          + Fix minor bugs in makefiles exposed by BSD make programs.
+          + Define _XOPEN_SOURCE for libI77 build to avoid potential
+            problems on some 64-bit systems.
+          + Fix problem with implicit endfile on rewind.
+          + Fix spurious recursive I/O errors.
+     * platform specific improvements and fixes
+          + Match all versions of UnixWare7.
+          + Do not assume x86 SVR4 or UnixWare targets can handle stabs.
+          + Fix PPC/RS6000 LEGITIMIZE_ADDRESS macro and bug in conversion
+            from unsigned ints to double precision floats.
+          + Fix ARM ABI issue with NetBSD.
+          + Fix a few arm code generation bugs.
+          + Fixincludes will fix additional broken SCO OpenServer header
+            files.
+          + Fix a m68k backend bug which caused invalid offsets in reg+d
+            addresses.
+          + Fix problems with 64bit AIX 4.3 support.
+          + Fix handling of long longs for varargs/stdarg functions on the
+            ppc.
+          + Minor fixes to CPP predefines for Windows.
+          + Fix code generation problems with gpr<->fpr copies for 64bit
+            ppc.
+          + Fix a few coldfire code generation bugs.
+          + Fix some more header file problems on SunOS 4.x.
+          + Fix assert.h handling for RTEMS.
+          + Fix Windows handling of TREE_SYMBOL_REFERENCED.
+          + Fix x86 compiler abort in reg-stack pass.
+          + Fix cygwin/windows problem with section attributes.
+          + Fix Alpha code generation problem exposed by SMP Linux
+            kernels.
+          + Fix typo in m68k 32->64bit integer conversion.
+          + Make sure target libraries build with -fPIC for PPC & Alpha
+            targets.
+
+   EGCS 1.1.2 is a minor update to fix several serious problems in EGCS
+   1.1.1:
+     * General improvements and fixes
+          + Fix bug in loop optimizer which caused the SPARC (and
+            potentially other) ports to segfault.
+          + Fix infinite recursion in alias analysis and combiner code.
+          + Fix bug in regclass preferencing.
+          + Fix incorrect loop reversal which caused incorrect code to be
+            generated for several targets.
+          + Fix return value for builtin memcpy.
+          + Reduce compile time for certain loops which exposed quadratic
+            behavior in the loop optimizer.
+          + Fix bug which caused volatile memory to be written multiple
+            times when only one write was needed/desired.
+          + Fix compiler abort in caller-save.c
+          + Fix combiner bug which caused incorrect code generation for
+            certain division by constant operations.
+          + Fix incorrect code generation due to a bug in range check
+            optimizations.
+          + Fix incorrect code generation due to mis-handling of clobbered
+            values in CSE.
+          + Fix compiler abort/segfault due to incorrect register
+            splitting when unrolling loops.
+          + Fix code generation involving autoincremented addresses with
+            ternary operators.
+          + Work around bug in the scheduler which caused qt to be
+            mis-compiled on some platforms.
+          + Fix code generation problems with -fshort-enums.
+          + Tighten security for temporary files.
+          + Improve compile time for codes which make heavy use of
+            overloaded functions.
+          + Fix multiply defined constructor/destructor symbol problems.
+          + Avoid setting bogus RPATH environment variable during
+            bootstrap.
+          + Avoid GNU-make dependencies in the texinfo subdir.
+          + Install CPP wrapper script in $(prefix)/bin if --enable-cpp.
+            --enable-cpp=<dirname> can be used to specify an additional
+            install directory for the cpp wrapper script.
+          + Fix CSE bug which caused incorrect label-label refs to appear
+            on some platforms.
+          + Avoid linking in EH routines from libgcc if they are not
+            needed.
+          + Avoid obscure bug in aliasing code.
+          + Fix bug in weak symbol handling.
+     * Platform-specific improvements and fixes
+          + Fix detection of PPro/PII on Unixware 7.
+          + Fix compiler segfault when building spec99 and other programs
+            for SPARC targets.
+          + Fix code-generation bugs for integer and floating point
+            conditional move instructions on the PPro/PII.
+          + Use fixincludes to fix byteorder problems on i?86-*-sysv.
+          + Fix build failure for the arc port.
+          + Fix floating point format configuration for i?86-gnu port.
+          + Fix problems with hppa1.0-hp-hpux10.20 configuration when
+            threads are enabled.
+          + Fix coldfire code generation bugs.
+          + Fix "unrecognized insn" problems for Alpha and PPC ports.
+          + Fix h8/300 code generation problem with floating point values
+            in memory.
+          + Fix unrecognized insn problems for the m68k port.
+          + Fix namespace-pollution problem for the x86 port.
+          + Fix problems with old assembler on x86 NeXT systems.
+          + Fix PIC code-generation problems for the SPARC port.
+          + Fix minor bug with LONG_CALLS in PowerPC SVR4 support.
+          + Fix minor ISO namespace violation in Alpha varargs/stdarg
+            support.
+          + Fix incorrect "braf" instruction usage for the SH port.
+          + Fix minor bug in va-sh which prevented its use with -ansi.
+          + Fix problems recognizing and supporting FreeBSD.
+          + Handle OpenBSD systems correctly.
+          + Minor fixincludes fix for Digital UNIX 4.0B.
+          + Fix problems with ctors/dtors in SCO shared libraries.
+          + Abort instead of generating incorrect code for PPro/PII
+            floating point conditional moves.
+          + Avoid multiply defined symbols on GNU/Linux systems using
+            libc-5.4.xx.
+          + Fix abort in alpha compiler.
+     * Fortran-specific fixes
+          + Fix the IDate intrinsic (VXT) (in libg2c) so the returned year
+            is in the documented, non-Y2K-compliant range of 0-99, instead
+            of being returned as 100 in the year 2000.
+          + Fix the `Date_and_Time' intrinsic (in libg2c) to return the
+            milliseconds value properly in Values(8).
+          + Fix the `LStat' intrinsic (in libg2c) to return device-ID
+            information properly in SArray(7).
+
+   Each release includes installation instructions in both HTML and
+   plaintext forms (see the INSTALL directory in the toplevel directory of
+   the distribution). However, we also keep the most up to date
+   installation instructions and [6]build/test status on our web page. We
+   will update those pages as new information becomes available.
+
+   The EGCS project would like to thank the numerous people that have
+   contributed new features, test results, bugfixes, etc. This [7]amazing
+   group of volunteers is what makes EGCS successful.
+
+   And finally, we can't in good conscience fail to mention some
+   [8]caveats to using EGCS 1.1.
+
+   Download EGCS from egcs.cygnus.com (USA California).
+
+   The EGCS 1.1 release is also available on many mirror sites.
+   [9]Goto mirror list to find a closer site.
+
+
+    For questions related to the use of GCC, please consult these web
+    pages and the [10]GCC manuals. If that fails, the
+    [11]gcc-help at gcc.gnu.org mailing list might help. Comments on these
+    web pages and the development of GCC are welcome on our developer
+    list at [12]gcc at gcc.gnu.org. All of [13]our lists have public
+    archives.
+
+   Copyright (C) [14]Free Software Foundation, Inc. Verbatim copying and
+   distribution of this entire article is permitted in any medium,
+   provided this notice is preserved.
+
+   These pages are [15]maintained by the GCC team. Last modified
+   2014-06-28[16].
+
+References
+
+   1. http://gcc.gnu.org/egcs-1.1/egcs-1.1-test.html
+   2. http://gcc.gnu.org/news/gcse.html
+   3. http://gcc.gnu.org/news/alias.html
+   4. http://gcc.gnu.org/egcs-1.1/c++features.html
+   5. http://gcc.gnu.org/egcs-1.1/features.html
+   6. http://gcc.gnu.org/egcs-1.1/buildstat.html
+   7. https://gcc.gnu.org/onlinedocs/gcc/Contributors.html
+   8. http://gcc.gnu.org/egcs-1.1/caveats.html
+   9. http://gcc.gnu.org/mirrors.html
+  10. https://gcc.gnu.org/onlinedocs/
+  11. mailto:gcc-help at gcc.gnu.org
+  12. mailto:gcc at gcc.gnu.org
+  13. https://gcc.gnu.org/lists.html
+  14. http://www.fsf.org/
+  15. https://gcc.gnu.org/about.html
+  16. http://validator.w3.org/check/referer
+======================================================================
+http://gcc.gnu.org/egcs-1.1/features.html
+                             EGCS 1.1 new features
+
+     * Integrated GNU Fortran (g77) compiler and runtime library with
+       improvements, based on g77 version 0.5.23.
+     * Vast improvements in the C++ compiler; so many they have [1]page of
+       their own!
+     * Compiler implements [2]global common subexpression elimination and
+       global copy/constant propagation.
+     * More major improvements in the [3]alias analysis code.
+     * More major improvements in the exception handling code to improve
+       performance, lower static overhead and provide the infrastructure
+       for future improvements.
+     * The infamous /tmp symlink race security problems have been fixed.
+     * The regmove optimization pass has been nearly completely rewritten
+       to improve performance of generated code.
+     * The compiler now recomputes register usage information before local
+       register allocation. By providing more accurate information to the
+       priority based allocator, we get better register allocation.
+     * The register reloading phase of the compiler optimizes spill code
+       much better than in previous releases.
+     * Some bad interactions between the register allocator and
+       instruction scheduler have been fixed, resulting in much better
+       code for certain programs. Additionally, we have tuned the
+       scheduler in various ways to improve performance of generated code
+       for some architectures.
+     * The compiler's branch shortening algorithms have been significantly
+       improved to work better on targets which align jump targets.
+     * The compiler now supports -Os to prefer optimizing for code space
+       over optimizing for code speed.
+     * The compiler will now totally eliminate library calls which compute
+       constant values. This primarily helps targets with no integer
+       div/mul support and targets without floating point support.
+     * The compiler now supports an extensive "--help" option.
+     * cpplib has been greatly improved and may be suitable for limited
+       use.
+     * Memory footprint for the compiler has been significantly reduced
+       for some pathological cases.
+     * The time to build EGCS has been improved for certain targets
+       (particularly the alpha and mips platforms).
+     * Many infrastructure improvements throughout the compiler, plus the
+       usual mountain of bugfixes and minor improvements.
+     * Target dependent improvements:
+          + SPARC port now includes V8 plus and V9 support as well as
+            performance tuning for Ultra class machines. The SPARC port
+            now uses the Haifa scheduler.
+          + Alpha port has been tuned for the EV6 processor and has an
+            optimized expansion of memcpy/bzero. The Alpha port now uses
+            the Haifa scheduler.
+          + RS6000/PowerPC: support for the Power64 architecture and AIX
+            4.3. The RS6000/PowerPC port now uses the Haifa scheduler.
+          + x86: Alignment of static store data and jump targets is per
+            Intel recommendations now. Various improvements throughout the
+            x86 port to improve performance on Pentium processors
+            (including improved epilogue sequences for Pentium chips and
+            backend improvements which should help register allocation on
+            all x86 variants. Conditional move support has been fixed and
+            enabled for PPro processors. The x86 port also better supports
+            64bit operations now. Unixware 7, a System V Release 5 target,
+            is now supported and SCO OpenServer targets can support GAS.
+          + MIPS has improved multiply/multiply-add support and now
+            includes mips16 ISA support.
+          + M68k has many micro-optimizations and Coldfire fixes.
+     * Core compiler is based on the GCC development tree from June 9,
+       1998, so we have all of the [4]features found in GCC 2.8.
+
+
+    For questions related to the use of GCC, please consult these web
+    pages and the [5]GCC manuals. If that fails, the
+    [6]gcc-help at gcc.gnu.org mailing list might help. Comments on these
+    web pages and the development of GCC are welcome on our developer
+    list at [7]gcc at gcc.gnu.org. All of [8]our lists have public archives.
+
+   Copyright (C) [9]Free Software Foundation, Inc. Verbatim copying and
+   distribution of this entire article is permitted in any medium,
+   provided this notice is preserved.
+
+   These pages are [10]maintained by the GCC team. Last modified
+   2014-06-12[11].
+
+References
+
+   1. http://gcc.gnu.org/egcs-1.1/c++features.html
+   2. http://gcc.gnu.org/news/gcse.html
+   3. http://gcc.gnu.org/news/alias.html
+   4. http://gcc.gnu.org/egcs-1.0/features-2.8.html
+   5. https://gcc.gnu.org/onlinedocs/
+   6. mailto:gcc-help at gcc.gnu.org
+   7. mailto:gcc at gcc.gnu.org
+   8. https://gcc.gnu.org/lists.html
+   9. http://www.fsf.org/
+  10. https://gcc.gnu.org/about.html
+  11. http://validator.w3.org/check/referer
+======================================================================
+http://gcc.gnu.org/egcs-1.1/caveats.html
+                                EGCS 1.1 Caveats
+
+     * EGCS has an integrated libstdc++, but does not have an integrated
+       libg++. Furthermore old libg++ releases will not work with EGCS; HJ
+       Lu has made a libg++-2.8.1.2 snapshot available which may work with
+       EGCS.
+       Note most C++ programs only need libstdc++.
+     * Exception handling may not work with shared libraries, particularly
+       on alphas, hppas, rs6000/powerpc and mips based platforms.
+       Exception handling is known to work on x86-linux platforms with
+       shared libraries.
+     * Some versions of the Linux kernel have bugs which prevent them from
+       being compiled or from running when compiled by EGCS. See the FAQ
+       (as shipped with EGCS 1.1) for additional information.
+     * In general, EGCS is more rigorous about rejecting invalid C++ code
+       or deprecated C++ constructs than g++-2.7, g++-2.8 or EGCS 1.0. As
+       a result it may be necessary to fix C++ code before it will compile
+       with EGCS.
+     * G++ is also converting toward the ISO C++ standard; as a result
+       code which was previously valid (and thus accepted by other
+       compilers and older versions of g++) may no longer be accepted.
+     * EGCS 1.1 compiled C++ code is not binary compatible with EGCS 1.0.x
+       or GCC 2.8.x due to changes necessary to support thread safe
+       exception handling.
+
+
+    For questions related to the use of GCC, please consult these web
+    pages and the [1]GCC manuals. If that fails, the
+    [2]gcc-help at gcc.gnu.org mailing list might help. Comments on these
+    web pages and the development of GCC are welcome on our developer
+    list at [3]gcc at gcc.gnu.org. All of [4]our lists have public archives.
+
+   Copyright (C) [5]Free Software Foundation, Inc. Verbatim copying and
+   distribution of this entire article is permitted in any medium,
+   provided this notice is preserved.
+
+   These pages are [6]maintained by the GCC team. Last modified
+   2014-06-12[7].
+
+References
+
+   1. https://gcc.gnu.org/onlinedocs/
+   2. mailto:gcc-help at gcc.gnu.org
+   3. mailto:gcc at gcc.gnu.org
+   4. https://gcc.gnu.org/lists.html
+   5. http://www.fsf.org/
+   6. https://gcc.gnu.org/about.html
+   7. http://validator.w3.org/check/referer
+======================================================================
+http://gcc.gnu.org/egcs-1.0/index.html
+                                    EGCS 1.0
+
+   December 3, 1997: We are pleased to announce the release of EGCS 1.0.
+   January 6, 1998: We are pleased to announce the release of EGCS 1.0.1.
+   March 16, 1998: We are pleased to announce the release of EGCS 1.0.2.
+   May 15, 1998 We are pleased to announce the release of EGCS 1.0.3.
+
+   EGCS is a collaborative effort involving several groups of hackers
+   using an open development model to accelerate development and testing
+   of GNU compilers and runtime libraries.
+
+   An important goal of EGCS is to allow wide scale testing of
+   experimental features and optimizations; therefore, EGCS contains some
+   features and optimizations which are still under development. However,
+   EGCS has been carefully tested and should be comparable in quality to
+   most GCC releases.
+
+   EGCS 1.0 is based on an August 2, 1997 snapshot of the GCC 2.8
+   development sources; it contains nearly all of the new features found
+   in GCC 2.8.
+
+   EGCS 1.0 also contains many improvements and features not found in GCC
+   2.7 and even the GCC 2.8 series (which was released after the original
+   EGCS 1.0 release).
+     * Integrated C++ runtime libraries, including support for most major
+       GNU/Linux systems!
+     * The integrated libstdc++ library includes a verbatim copy of SGI's
+       STL release.
+     * Integrated GNU Fortran compiler.
+     * New instruction scheduler.
+     * New alias analysis code.
+
+   See the [1]new features page for a more complete list of new features.
+
+   EGCS 1.0.1 is a minor update to the EGCS 1.0 compiler to fix a few
+   critical bugs and add support for Red Hat 5.0 Linux. Changes since the
+   EGCS 1.0 release:
+     * Add support for Red Hat 5.0 Linux and better support for Linux
+       systems using glibc2.
+       Many programs failed to link when compiled with EGCS 1.0 on Red Hat
+       5.0 or on systems with newer versions of glibc2. EGCS 1.0.1 should
+       fix these problems.
+     * Compatibility with both EGCS 1.0 and GCC 2.8 libgcc exception
+       handling interfaces.
+       To avoid future compatibility problems, we strongly urge anyone who
+       is planning on distributing shared libraries that contain C++ code
+       to upgrade to EGCS 1.0.1 first.
+       Soon after EGCS 1.0 was released, the GCC developers made some
+       incompatible changes in libgcc's exception handling interfaces.
+       These changes were needed to solve problems on some platforms. This
+       means that GCC 2.8.0, when released, will not be seamlessly
+       compatible with shared libraries built by EGCS 1.0. The reason is
+       that the libgcc.a in GCC 2.8.0 will not contain a function needed
+       by the old interface.
+       The result of this is that there may be compatibility problems with
+       shared libraries built by EGCS 1.0 when used with GCC 2.8.0.
+       With EGCS 1.0.1, generated code uses the new (GCC 2.8.0) interface,
+       and libgcc.a has the support routines for both the old and the new
+       interfaces (so EGCS 1.0.1 and EGCS 1.0 code can be freely mixed,
+       and EGCS 1.0.1 and GCC 2.8.0 code can be freely mixed).
+       The maintainers of GCC 2.x have decided against including seamless
+       support for the old interface in 2.8.0, since it was never
+       "official", so to avoid future compatibility problems we recommend
+       against distributing any shared libraries built by EGCS 1.0 that
+       contain C++ code (upgrade to 1.0.1 and use that).
+     * Various bugfixes in the x86, hppa, mips, and rs6000/ppc back ends.
+       The x86 changes fix code generation errors exposed when building
+       glibc2 and the usual GNU/Linux dynamic linker (ld.so).
+       The hppa change fixes a compiler abort when configured for use with
+       RTEMS.
+       The MIPS changes fix problems with the definition of LONG_MAX on
+       newer systems, allow for command line selection of the target ABI,
+       and fix one code generation problem.
+       The rs6000/ppc change fixes some problems with passing structures
+       to varargs/stdarg functions.
+     * A few machine independent bugfixes, mostly to fix code generation
+       errors when building Linux kernels or glibc.
+     * Fix a few critical exception handling and template bugs in the C++
+       compiler.
+     * Fix Fortran namelist bug on alphas.
+     * Fix build problems on x86-solaris systems.
+
+   EGCS 1.0.2 is a minor update to the EGCS 1.0.1 compiler to fix several
+   serious problems in EGCS 1.0.1.
+     * General improvements and fixes
+          + Memory consumption significantly reduced, especially for
+            templates and inline functions.
+          + Fix various problems with glibc2.1.
+          + Fix loop optimization bug exposed by rs6000/ppc port.
+          + Fix to avoid potential code generation problems in jump.c.
+          + Fix some undefined symbol problems in dwarf1 debug support.
+     * g++/libstdc++ improvements and fixes
+          + libstdc++ in the EGCS release has been updated and should be
+            link compatible with libstdc++-2.8.
+          + Various fixes in libio/libstdc++ to work better on GNU/Linux
+            systems.
+          + Fix problems with duplicate symbols on systems that do not
+            support weak symbols.
+          + Memory corruption bug and undefined symbols in bastring have
+            been fixed.
+          + Various exception handling fixes.
+          + Fix compiler abort for very long thunk names.
+     * g77 improvements and fixes
+          + Fix compiler crash for omitted bound in Fortran CASE
+            statement.
+          + Add missing entries to g77 lang-options.
+          + Fix problem with -fpedantic in the g77 compiler.
+          + Fix "backspace" problem with g77 on alphas.
+          + Fix x86 backend problem with Fortran literals and -fpic.
+          + Fix some of the problems with negative subscripts for g77 on
+            alphas.
+          + Fixes for Fortran builds on cygwin32/mingw32.
+     * platform specific improvements and fixes
+          + Fix long double problems on x86 (exposed by glibc).
+          + x86 ports define i386 again to keep imake happy.
+          + Fix exception handling support on NetBSD ports.
+          + Several changes to collect2 to fix many problems with AIX.
+          + Define __ELF__ for GNU/Linux on rs6000.
+          + Fix -mcall-linux problem on GNU/Linux on rs6000.
+          + Fix stdarg/vararg problem for GNU/Linux on rs6000.
+          + Allow autoconf to select a proper install problem on AIX 3.1.
+          + m68k port support includes -mcpu32 option as well as cpu32
+            multilibs.
+          + Fix stdarg bug for irix6.
+          + Allow EGCS to build on irix5 without the gnu assembler.
+          + Fix problem with static linking on sco5.
+          + Fix bootstrap on sco5 with native compiler.
+          + Fix for abort building newlib on H8 target.
+          + Fix fixincludes handling of math.h on SunOS.
+          + Minor fix for Motorola 3300 m68k systems.
+
+   EGCS 1.0.3 is a minor update to the EGCS 1.0.2 compiler to fix a few
+   problems reported by Red Hat for builds of Red Hat 5.1.
+     * Generic bugfixes:
+          + Fix a typo in the libio library which resulted in incorrect
+            behavior of istream::get.
+          + Fix the Fortran negative array index problem.
+          + Fix a major problem with the ObjC runtime thread support
+            exposed by glibc2.
+          + Reduce memory consumption of the Haifa scheduler.
+     * Target specific bugfixes:
+          + Fix one x86 floating point code generation bug exposed by
+            glibc2 builds.
+          + Fix one x86 internal compiler error exposed by glibc2 builds.
+          + Fix profiling bugs on the Alpha.
+          + Fix ImageMagick & emacs 20.2 build problems on the Alpha.
+          + Fix rs6000/ppc bug when converting values from integer types
+            to floating point types.
+
+   The EGCS 1.0 releases include installation instructions in both HTML
+   and plaintext forms (see the INSTALL directory in the toplevel
+   directory of the distribution). However, we also keep the most up to
+   date installation instructions and [2]build/test status on our web
+   page. We will update those pages as new information becomes available.
+
+   And, we can't in good conscience fail to mention some [3]caveats to
+   using EGCS.
+
+   Update: Big thanks to Stanford for providing a high speed link for
+   downloading EGCS (go.cygnus.com)!
+
+   Download EGCS from ftp.cygnus.com (USA California) or go.cygnus.com
+   (USA California -- High speed link provided by Stanford).
+
+   The EGCS 1.0 release is also available many mirror sites.
+   [4]Goto mirror list to find a closer site
+
+   We'd like to thank the numerous people that have contributed new
+   features, test results, bugfixes, etc. Unfortunately, they're far too
+   numerous to mention by name.
+
+
+    For questions related to the use of GCC, please consult these web
+    pages and the [5]GCC manuals. If that fails, the
+    [6]gcc-help at gcc.gnu.org mailing list might help. Comments on these
+    web pages and the development of GCC are welcome on our developer
+    list at [7]gcc at gcc.gnu.org. All of [8]our lists have public archives.
+
+   Copyright (C) [9]Free Software Foundation, Inc. Verbatim copying and
+   distribution of this entire article is permitted in any medium,
+   provided this notice is preserved.
+
+   These pages are [10]maintained by the GCC team. Last modified
+   2014-06-28[11].
+
+References
+
+   1. http://gcc.gnu.org/egcs-1.0/features.html
+   2. http://gcc.gnu.org/egcs-1.0/buildstat.html
+   3. http://gcc.gnu.org/egcs-1.0/caveats.html
+   4. http://gcc.gnu.org/mirrors.html
+   5. https://gcc.gnu.org/onlinedocs/
+   6. mailto:gcc-help at gcc.gnu.org
+   7. mailto:gcc at gcc.gnu.org
+   8. https://gcc.gnu.org/lists.html
+   9. http://www.fsf.org/
+  10. https://gcc.gnu.org/about.html
+  11. http://validator.w3.org/check/referer
+======================================================================
+http://gcc.gnu.org/egcs-1.0/features.html
+                               EGCS 1.0 features
+
+     * Core compiler is based on the gcc2 development tree from Aug 2,
+       1997, so we have most of the [1]features found in GCC 2.8.
+     * Integrated GNU Fortran compiler based on g77-0.5.22-19970929.
+     * Vast improvements in the C++ compiler; so many they have [2]page of
+       their own!
+     * Integrated C++ runtime libraries, including support for most major
+       GNU/Linux systems!
+     * New instruction scheduler from IBM Haifa which includes support for
+       function wide instruction scheduling as well as superscalar
+       scheduling.
+     * Significantly improved alias analysis code.
+     * Improved register allocation for two address machines.
+     * Significant code generation improvements for Fortran code on
+       Alphas.
+     * Various optimizations from the g77 project as well as improved loop
+       optimizations.
+     * Dwarf2 debug format support for some targets.
+     * egcs libstdc++ includes the SGI STL implementation without changes.
+     * As a result of these and other changes, egcs libstc++ is not binary
+       compatible with previous releases of libstdc++.
+     * Various new ports -- UltraSPARC, Irix6.2 & Irix6.3 support, The SCO
+       Openserver 5 family (5.0.{0,2,4} and Internet FastStart 1.0 and
+       1.1), Support for RTEMS on several embedded targets, Support for
+       arm-linux, Mitsubishi M32R, Hitachi H8/S, Matsushita MN102 and
+       MN103, NEC V850, Sparclet, Solaris & GNU/Linux on PowerPCs, etc.
+     * Integrated testsuites for gcc, g++, g77, libstdc++ and libio.
+     * RS6000/PowerPC ports generate code which can run on all
+       RS6000/PowerPC variants by default.
+     * -mcpu= and -march= switches for the x86 port to allow better
+       control over how the x86 port generates code.
+     * Includes the template repository patch (aka repo patch); note the
+       new template code makes repo obsolete for ELF systems using gnu-ld
+       such as GNU/Linux.
+     * Plus the usual assortment of bugfixes and improvements.
+
+
+    For questions related to the use of GCC, please consult these web
+    pages and the [3]GCC manuals. If that fails, the
+    [4]gcc-help at gcc.gnu.org mailing list might help. Comments on these
+    web pages and the development of GCC are welcome on our developer
+    list at [5]gcc at gcc.gnu.org. All of [6]our lists have public archives.
+
+   Copyright (C) [7]Free Software Foundation, Inc. Verbatim copying and
+   distribution of this entire article is permitted in any medium,
+   provided this notice is preserved.
+
+   These pages are [8]maintained by the GCC team. Last modified
+   2014-06-12[9].
+
+References
+
+   1. http://gcc.gnu.org/egcs-1.0/features-2.8.html
+   2. http://gcc.gnu.org/egcs-1.0/c++features.html
+   3. https://gcc.gnu.org/onlinedocs/
+   4. mailto:gcc-help at gcc.gnu.org
+   5. mailto:gcc at gcc.gnu.org
+   6. https://gcc.gnu.org/lists.html
+   7. http://www.fsf.org/
+   8. https://gcc.gnu.org/about.html
+   9. http://validator.w3.org/check/referer
+======================================================================
+http://gcc.gnu.org/egcs-1.0/caveats.html
+                                EGCS 1.0 Caveats
+
+     * EGCS has an integrated libstdc++, but does not have an integrated
+       libg++. Furthermore old libg++ releases will not work with egc; HJ
+       Lu has made a libg++-2.8.1.2 available which may work with EGCS.
+       Note most C++ programs only need libstdc++.
+     * Note that using -pedantic or -Wreturn-type can cause an explosion
+       in the amount of memory needed for template-heavy C++ code, such as
+       code that uses STL. Also note that -Wall includes -Wreturn-type, so
+       if you use -Wall you will need to specify -Wno-return-type to turn
+       it off.
+     * Exception handling may not work with shared libraries, particularly
+       on alphas, hppas, and mips based platforms. Exception handling is
+       known to work on x86-linux platforms with shared libraries.
+     * Some versions of the Linux kernel have bugs which prevent them from
+       being compiled or from running when compiled by EGCS. See the FAQ
+       (as shipped with EGCS 1.0) for additional information.
+     * In general, EGCS is more rigorous about rejecting invalid C++ code
+       or deprecated C++ constructs than G++ 2.7. As a result it may be
+       necessary to fix C++ code before it will compile with EGCS.
+     * G++ is also aggressively tracking the C++ standard; as a result
+       code which was previously valid (and thus accepted by other
+       compilers and older versions of G++) may no longer be accepted.
+     * EGCS 1.0 may not work with Red Hat Linux 5.0 on all targets. EGCS
+       1.0.x and later releases should work with Red Hat Linux 5.0.
+
+
+    For questions related to the use of GCC, please consult these web
+    pages and the [1]GCC manuals. If that fails, the
+    [2]gcc-help at gcc.gnu.org mailing list might help. Comments on these
+    web pages and the development of GCC are welcome on our developer
+    list at [3]gcc at gcc.gnu.org. All of [4]our lists have public archives.
+
+   Copyright (C) [5]Free Software Foundation, Inc. Verbatim copying and
+   distribution of this entire article is permitted in any medium,
+   provided this notice is preserved.
+
+   These pages are [6]maintained by the GCC team. Last modified
+   2014-06-12[7].
+
+References
+
+   1. https://gcc.gnu.org/onlinedocs/
+   2. mailto:gcc-help at gcc.gnu.org
+   3. mailto:gcc at gcc.gnu.org
+   4. https://gcc.gnu.org/lists.html
+   5. http://www.fsf.org/
+   6. https://gcc.gnu.org/about.html
+   7. http://validator.w3.org/check/referer
+======================================================================
diff --git a/debian/NEWS.html b/debian/NEWS.html
new file mode 100644
index 0000000..43981ed
--- /dev/null
+++ b/debian/NEWS.html
@@ -0,0 +1,971 @@
+<?xml version="1.0" encoding="utf-8"?>
+  <!DOCTYPE html
+            PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+            "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+ 
+
+
+ 
+
+
+
+
+
+
+
+
+
+
+     <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  
+  
+   <head>
+ 
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    <link rev="made" href="mailto:gcc at gcc.gnu.org" />
+    <link rel="stylesheet" type="text/css" href="https://gcc.gnu.org/gcc.css" />
+  
+ <title>
+GCC 5 Release Series — Changes, New Features, and Fixes
+- GNU Project - Free Software Foundation (FSF)</title>
+   </head>
+ 
+
+<!-- GCC maintainers, please do not hesitate to update/contribute entries
+     concerning those part of GCC you maintain!  2002-03-23, Gerald.
+-->
+
+<body>
+
+
+
+<h1>GCC 5 Release Series<br />Changes, New Features, and Fixes</h1>
+
+
+<h2>Caveats</h2>
+  <ul>
+    <li>The default mode for C is now <code>-std=gnu11</code> instead of
+        <code>-std=gnu89</code>.</li>
+    <li>The C++ runtime library (libstdc++) uses a new ABI by default
+        (see <a href="#libstdcxx">below</a>).</li>
+    <li>The Graphite framework for loop optimizations no longer requires the
+	CLooG library, only ISL version 0.14 (recommended) or 0.12.2.  The
+        installation manual contains more information about requirements to
+        build GCC.</li>
+    <li>The non-standard C++0x type traits
+        <code>has_trivial_default_constructor</code>,
+        <code>has_trivial_copy_constructor</code> and
+        <code>has_trivial_copy_assign</code> have been deprecated and will
+        be removed in a future version. The standard C++11 traits
+        <code>is_trivially_default_constructible</code>,
+        <code>is_trivially_copy_constructible</code> and
+        <code>is_trivially_copy_assignable</code> should be used instead.</li>
+  </ul>
+
+<h2 id="general">General Optimizer Improvements</h2>
+
+  <ul>
+    <li>Inter-procedural optimization improvements:
+    <ul>
+     <li>An Identical Code Folding (ICF) pass (controlled via
+	 <code>-fipa-icf</code>) has been added.  Compared to the identical
+	 code folding performed by the Gold linker this
+	 pass does not require function sections.  It also performs merging
+	 before inlining, so inter-procedural optimizations are aware of the
+	 code re-use. On the other hand not all unifications performed
+	 by a linker are doable by GCC which must honor
+	 aliasing information. During link-time optimization of Firefox,
+	 this pass unifies about 31000 functions, that is 14% overall.</li>
+     <li>The devirtualization pass was significantly improved by adding
+	 better support for speculative devirtualization and dynamic type
+	 detection. About 50% of virtual calls in Firefox are now
+	 speculatively devirtualized during link-time optimization.</li>
+     <li>A new comdat localization pass allows the linker to eliminate more
+         dead code in presence of C++ inline functions.</li>
+     <li>Virtual tables are now optimized. Local aliases are used to reduce
+	 dynamic linking time of C++ virtual tables on ELF targets and
+	 data alignment has been reduced to limit data segment bloat.</li>
+     <li>A new <code>-fno-semantic-interposition</code> option can be used
+	 to improve code quality of shared libraries where interposition of
+	 exported symbols is not allowed.</li>
+     <li>Write-only variables are now detected and optimized out.</li>
+     <li>With profile feedback the function inliner can now bypass
+	 <code>--param inline-insns-auto</code> and <code>--param
+	 inline-insns-single</code> limits for hot calls.</li>
+     <li>The IPA reference pass was significantly sped up making it feasible
+	 to enable <code>-fipa-reference</code> with
+	 <code>-fprofile-generate</code>. This also solves a bottleneck
+	 seen when building Chromium with link-time optimization.</li>
+     <li>The symbol table and call-graph API was reworked to C++ and
+	 simplified.</li>
+     <li>The interprocedural propagation of constants now also propagates
+         alignments of pointer parameters.  This for example means that the
+         vectorizer often does not need to generate loop prologues and epilogues
+         to make up for potential misalignments.</li>
+    </ul></li>
+    <li>Link-time optimization improvements:
+    <ul>
+      <li>One Definition Rule based merging of C++ types has been implemented.
+	  Type merging enables better devirtualization and alias analysis.
+	  Streaming extra information needed to merge types adds about 2-6% of
+	  memory size and object size increase. This can be controlled by
+	  <code>-flto-odr-type-merging</code>.</li>
+       <li><p>Command-line optimization and target options are now streamed on
+	  a per-function basis and honored by the link-time optimizer.
+	  This change makes link-time optimization a more transparent
+	  replacement of per-file optimizations.
+	  It is now possible to build projects that require
+	  different optimization
+	  settings for different translation units (such as
+	  <code>-ffast-math</code>, <code>-mavx</code>, or
+	  <code>-finline</code>).
+	  Contrary to earlier GCC releases, the optimization and target
+	  options passed on the link command line are ignored.</p>
+	  <p>Note that this applies only to those command-line options
+	  that can be passed to <code>optimize</code> and
+	  <code>target</code> attributes.
+	  Command-line options affecting global code generation
+	  (such as <code>-fpic</code>), warnings
+	  (such as <code>-Wodr</code>),
+	  optimizations affecting the way static variables
+	  are optimized (such as <code>-fcommon</code>), debug output (such as
+	  <code>-g</code>),
+	  and <code>--param</code> parameters can be applied only
+	  to the whole link-time optimization unit. 
+	  In these cases, it is recommended to consistently use the same
+	  options at both compile time and link time.</p></li>
+      <li>GCC bootstrap now uses slim LTO object files.</li>
+      <li>Memory usage and link times were improved.  Tree merging was sped up,
+	  memory usage of GIMPLE declarations and types was reduced, and,
+	  support for on-demand streaming of variable constructors was added.</li>
+    </ul></li>
+    <li>Feedback directed optimization improvements:
+    <ul>
+      <li>A new auto-FDO mode uses profiles collected by low overhead
+	  profiling tools (perf) instead of more expensive program
+	  instrumentation (via <code>-fprofile-generate</code>). SPEC2006
+	  benchmarks on x86-64 improve by 4.7% with auto-FDO and by 7.3% with
+	  traditional feedback directed optimization.</li>
+      <li>Profile precision was improved in presence of C++ inline and extern
+	  inline functions.</li>
+      <li>The new <code>gcov-tool</code> utility allows manipulating
+          profiles.</li>
+      <li>Profiles are now more tolerant to source file changes (this can be
+	  controlled by <code>--param profile-func-internal-id</code>).</li>
+    </ul></li>
+    <li>Register allocation improvements:
+    <ul>
+      <li>A new local register allocator (LRA) sub-pass, controlled by
+          <code>-flra-remat</code>, implements control-flow sensitive
+          global register rematerialization.  Instead of spilling and
+          restoring a register value, it is recalculated if it is
+          profitable.  The sub-pass improved SPEC2000 generated code
+          by 1% and 0.5% correspondingly on ARM and x86-64.</li>
+      <li>Reuse of the PIC hard register, instead of using a fixed
+          register, was implemented on x86/x86-64 targets.  This
+          improves generated PIC code performance as more hard
+          registers can be used.  Shared libraries can significantly
+          benefit from this optimization.  Currently it is switched on
+          only for x86/x86-64 targets.  As RA infrastructure is
+          already implemented for PIC register reuse, other targets
+          might follow this in the future.</li>
+      <li>A simple form of inter-procedural RA was implemented.  When
+          it is known that a called function does not use caller-saved
+          registers, save/restore code is not generated around the
+          call for such registers. This optimization can be controlled
+          by <code>-fipa-ra</code></li>
+      <li>LRA is now much more effective at generating spills of
+          general registers into vector registers instead of memory on
+          architectures (e.g., modern Intel processors) where this is
+          profitable.</li>
+    </ul></li>
+    <li>UndefinedBehaviorSanitizer gained a few new sanitization options:
+    <ul>
+      <li><code>-fsanitize=float-divide-by-zero</code>: detect floating-point
+	   division by zero;</li>
+      <li><code>-fsanitize=float-cast-overflow</code>: check that the result
+	   of floating-point type to integer conversions do not overflow;</li>
+      <li><code>-fsanitize=bounds</code>: enable instrumentation of array
+	  bounds and detect out-of-bounds accesses;</li>
+      <li><code>-fsanitize=alignment</code>: enable alignment checking, detect
+	  various misaligned objects;</li>
+      <li><code>-fsanitize=object-size</code>: enable object size checking, detect
+	  various out-of-bounds accesses.</li>
+      <li><code>-fsanitize=vptr</code>: enable checking of C++ member function
+	  calls, member accesses and some conversions between pointers to base
+	  and derived classes, detect if the referenced object does not have
+	  the correct dynamic type.</li>
+    </ul>
+    </li>
+    <li>Pointer Bounds Checker, a bounds violation detector, has been added and
+      can be enabled via <code>-fcheck-pointer-bounds</code>.  Memory accesses are
+      instrumented with run-time checks of used pointers against their bounds to
+      detect pointer bounds violations (overflows).  The Pointer Bounds Checker
+      is available on x86/x86-64 GNU/Linux targets with a new ISA extension
+      Intel MPX support.  See the Pointer Bounds Checker
+      <a href="https://gcc.gnu.org/wiki/Intel%20MPX%20support%20in%20the%20GCC%20compiler">
+	Wiki page</a> for more details.
+    </li>
+  </ul>
+
+<h2 id="languages">New Languages and Language specific improvements</h2>
+  <ul>
+    <li id="offload"><a href="http://www.openmp.org/mp-documents/OpenMP4.0.0.pdf">
+      OpenMP 4.0 specification</a> offloading features are now supported by the C, C++,
+	and Fortran compilers. Generic changes:
+	<ul>
+	  <li>Infrastructure (suitable for any vendor).</li>
+	  <li>Testsuite which covers offloading from the
+	  <a href="http://openmp.org/mp-documents/OpenMP4.0.0.Examples.pdf">
+	  OpenMP 4.0 Examples</a> document.</li>
+	</ul>
+	Specific for upcoming Intel Xeon Phi products:
+	<ul>
+	  <li>Run-time library.</li>
+	  <li>Card emulator.</li>
+	</ul>
+    </li>
+    <li id="openacc">
+      GCC 5 includes a preliminary implementation of the OpenACC 2.0a
+      specification.  OpenACC is intended for programming accelerator devices
+      such as GPUs.  See <a href="https://gcc.gnu.org/wiki/OpenACC">the OpenACC
+      wiki page</a> for more information.
+    </li>
+  </ul>
+
+
+<!-- h3 id="ada">Ada</h3 -->
+
+<h3 id="c-family">C family</h3>
+  <ul>
+    <li>The default setting of the <code>-fdiagnostics-color=</code>
+        command-line option is now
+        <a href="https://gcc.gnu.org/install/configure.html">configurable
+        when building GCC</a> using configuration option
+        <code>--with-diagnostics-color=</code>. The possible values
+        are: <code>never</code>, <code>always</code>, <code>auto</code>
+        and <code>auto-if-env</code>.  The new
+        default <code>auto</code> uses color only when the
+        standard error is a terminal.  The default in GCC 4.9
+        was <code>auto-if-env</code>, which is equivalent to
+        <code>auto</code> if there is a
+        non-empty <code>GCC_COLORS</code> environment variable,
+        and <code>never</code> otherwise.  As in GCC 4.9, an empty
+        <code>GCC_COLORS</code> variable in the environment will
+        always disable colors, no matter what the default is or what
+        command-line options are used.</li>
+    <li>A new command-line option <code>-Wswitch-bool</code> has been added for
+	the C and C++ compilers, which warns whenever a <code>switch</code>
+	statement has an index of boolean type.</li>
+    <li>A new command-line option <code>-Wlogical-not-parentheses</code> has
+	been added for the C and C++ compilers, which warns about "logical not"
+	used on the left hand side operand of a comparison.</li>
+    <li>A new command-line option <code>-Wsizeof-array-argument</code> has been
+	added for the C and C++ compilers, which warns when the
+	<code>sizeof</code> operator is applied to a parameter that has been
+	declared as an array in a function definition.</li>
+    <li>A new command-line option <code>-Wbool-compare</code> has been added
+	for the C and C++ compilers, which warns about boolean expressions
+	compared with an integer value different from
+	<code>true</code>/<code>false</code>.</li>
+    <li>Full support for <a href="https://www.cilkplus.org/">Cilk Plus</a>
+	has been added to the GCC compiler. Cilk Plus is an extension to
+	the C and C++ languages to support data and task parallelism.</li>
+    <li>A new attribute <code>no_reorder</code> prevents reordering of
+        selected symbols against other such symbols or inline assembler.
+        This enables to link-time optimize the Linux kernel without having
+        to resort to <code>-fno-toplevel-reorder</code> that disables
+        several optimizations.</li>
+    <li>New preprocessor constructs, <code>__has_include</code>
+        and <code>__has_include_next</code>, to test the availability of headers
+        have been added.<br/>
+        This demonstrates a way to include the header <code><optional></code>
+        only if it is available:<br/>
+<blockquote><pre>
+#ifdef __has_include
+#  if __has_include(<optional>)
+#    include <optional>
+#    define have_optional 1
+#  elif __has_include(<experimental/optional>)
+#    include <experimental/optional>
+#    define have_optional 1
+#    define experimental_optional
+#  else
+#    define have_optional 0
+#  endif
+#endif
+</pre></blockquote>
+        The header search paths for <code>__has_include</code>
+        and <code>__has_include_next</code> are equivalent to those
+        of the standard directive <code>#include</code>
+        and the extension <code>#include_next</code> respectively.
+    </li>
+    <li>A new built-in function-like macro to determine the existence of an
+	attribute, <code>__has_attribute</code>, has been added.
+	The equivalent built-in macro <code>__has_cpp_attribute</code> was
+	added to C++ to support
+	<a href="http://isocpp.org/std/standing-documents/sd-6-sg10-feature-test-recommendations">
+	Feature-testing recommendations for C++</a>.
+	The macro <code>__has_attribute</code> is added to all C-like
+	languages as an extension:
+<blockquote><pre>
+int
+#ifdef __has_attribute
+#  if __has_attribute(__noinline__)
+  __attribute__((__noinline__))
+#  endif
+#endif
+foo(int x);
+</pre></blockquote>
+	If an attribute exists, a nonzero constant integer is returned.
+	For standardized C++ attributes a date is returned, otherwise the
+	constant returned is 1.
+	Both <code>__has_attribute</code> and
+	<code>__has_cpp_attribute</code> will add underscores to an
+	attribute name if necessary to resolve the name.
+	For C++11 and onwards the attribute may be scoped.
+    </li>
+    <li>A new set of built-in functions for arithmetics with overflow checking
+	has been added: <code>__builtin_add_overflow</code>,
+	<code>__builtin_sub_overflow</code> and <code>__builtin_mul_overflow</code>
+	and for compatibility with clang also other variants.
+	These builtins have two integral arguments (which don't need to have
+	the same type), the arguments are extended to infinite precision
+	signed type, <code>+</code>, <code>-</code> or <code>*</code>
+	is performed on those, and the result is stored in an integer
+	variable pointed to by the last argument.  If the stored value is
+	equal to the infinite precision result, the built-in functions return
+	<code>false</code>, otherwise <code>true</code>.  The type of
+	the integer variable that will hold the result can be different from
+	the types of the first two arguments.  The following snippet
+	demonstrates how this can be used in computing the size for the
+	<code>calloc</code> function:
+<blockquote><pre>
+void *
+calloc (size_t x, size_t y)
+{
+  size_t sz;
+  if (__builtin_mul_overflow (x, y, &sz))
+    return NULL;
+  void *ret = malloc (sz);
+  if (ret) memset (res, 0, sz);
+  return ret;
+}
+</pre></blockquote>
+	On e.g. i?86 or x86-64 the above will result in a <code>mul</code>
+	instruction followed by a jump on overflow.
+    </li>
+    <li>The option <code>-fextended-identifiers</code> is now enabled
+	by default for C++, and for C99 and later C versions.  Various
+	bugs in the implementation of extended identifiers have been
+	fixed.</li>
+  </ul>
+
+<h3 id="c">C</h3>
+  <ul>
+    <li>The default mode has been changed to <code>-std=gnu11</code>.</li>
+    <li>A new command-line option <code>-Wc90-c99-compat</code> has been added
+	to warn about features not present in ISO C90, but present in ISO
+	C99.</li>
+    <li>A new command-line option <code>-Wc99-c11-compat</code> has been added
+	to warn about features not present in ISO C99, but present in ISO
+	C11.</li>
+    <li>It is possible to disable warnings about conversions between pointers
+	that have incompatible types via a new warning option
+	<code>-Wno-incompatible-pointer-types</code>; warnings about implicit
+	incompatible integer to pointer and pointer to integer conversions via
+	a new warning option <code>-Wno-int-conversion</code>; and warnings
+	about qualifiers on pointers being discarded via a new warning option
+	<code>-Wno-discarded-qualifiers</code>.</li>
+    <li>To allow proper use of const qualifiers with multidimensional arrays,
+	GCC will not warn about incompatible pointer types anymore for
+	conversions between pointers to arrays with and without const qualifier
+	(except when using <code>-pedantic</code>). Instead, a new warning is
+	emitted only if the const qualifier is lost. This can be controlled with
+	a new warning option <code>-Wno-discarded-array-qualifiers</code>.</li> 
+    <li>The C front end now generates more precise caret diagnostics.</li>
+    <li>The <code>-pg</code> command-line option now only affects the current
+        file in an LTO build.</li>
+  </ul>
+
+<h3 id="cxx">C++</h3>
+<ul>
+  <li>G++ now supports <a href="../projects/cxx1y.html">C++14</a> variable
+  templates.</li>
+  <li><code>-Wnon-virtual-dtor</code> doesn't warn anymore
+  for <code>final</code> classes.</li>
+  <li>Excessive template instantiation depth is now a fatal error. This
+  prevents excessive diagnostics that usually do not help to identify the
+  problem.</li>
+  <li>G++ and libstdc++ now implement the feature-testing macros from
+    <a href="http://isocpp.org/std/standing-documents/sd-6-sg10-feature-test-recommendations">Feature-testing
+    recommendations for C++</a>.</li>
+  <li>G++ now allows <code>typename</code> in a template template parameter.
+    <blockquote><pre>
+template<template<typename> <b>typename</b> X> struct D; // OK</pre></blockquote>
+  </li>
+  <li>G++ now supports <a href="../projects/cxx1y.html">C++14</a> aggregates with non-static data member initializers.
+    <blockquote><pre>
+struct A { int i, j = i; };
+A a = { 42 }; // a.j is also 42</pre></blockquote>
+  </li>
+  <li>G++ now supports <a href="../projects/cxx1y.html">C++14</a> extended <code>constexpr</code>.
+    <blockquote><pre>
+constexpr int f (int i)
+{
+  int j = 0;
+  for (; i > 0; --i)
+    ++j;
+  return j;
+}
+
+constexpr int i = f(42); // i is 42</pre></blockquote>
+  </li>
+  <li>G++ now supports the <a href="../projects/cxx1y.html">C++14</a> sized
+  deallocation functions.
+    <blockquote><pre>
+void operator delete (void *, std::size_t) noexcept;
+void operator delete[] (void *, std::size_t) noexcept;</pre></blockquote>
+  </li>
+  <li>A new One Definition Rule violation warning (controlled by <code>-Wodr</code>)
+      detects mismatches in type definitions and virtual table contents
+      during link-time optimization.</li>
+  <li>New warnings <code>-Wsuggest-final-types</code> and
+      <code>-Wsuggest-final-methods</code> help developers
+      to annotate programs with  <code>final</code> specifiers (or anonymous
+      namespaces) to improve code generation.
+      These warnings can be used at compile time, but they are more
+      useful in combination with link-time optimization.</li>
+<li>G++ no longer supports
+  <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3639.html">N3639</a>
+  variable length arrays, as they were removed from the C++14 working paper
+  prior to ratification.  GNU VLAs are still supported, so VLA support is
+  now the same in C++14 mode as in C++98 and C++11 modes.</li>
+<li>G++ now allows passing a non-trivially-copyable class via C varargs,
+  which is conditionally-supported with implementation-defined semantics in
+  the standard.  This uses the same calling convention as a normal value
+  parameter.</li>
+<li>G++ now defaults to <code>-fabi-version=0</code>
+and <code>-fabi-compat-version=2</code>.  So various mangling bugs are
+fixed, but G++ will still emit aliases with the old, wrong mangling where
+feasible.  <code>-Wabi</code> continues to warn about differences.</li>
+</ul>
+
+  <h4 id="libstdcxx">Runtime Library (libstdc++)</h4>
+  <ul>
+    <li>A <a href="/onlinedocs/gcc-5.1.0/libstdc++/manual/using_dual_abi.html">Dual
+        ABI</a> is provided by the library. A new ABI is enabled by default.
+        The old ABI is still supported and can be used by defining the macro
+        <code>_GLIBCXX_USE_CXX11_ABI</code> to <code>0</code> before
+        including any C++ standard library headers. </li>
+    <li>A new implementation of <code>std::string</code> is enabled by default,
+        using the <em>small string optimization</em> instead of
+        <em>copy-on-write</em> reference counting.</li>
+    <li> A new implementation of <code>std::list</code> is enabled by default,
+        with an O(1) <code>size()</code> function; </li>
+    <li><a href="https://gcc.gnu.org/onlinedocs/gcc-5.1.0/libstdc++/manual/status.html#status.iso.2011">
+      Full support for C++11</a>, including the following new features:
+      <ul>
+        <li> <code>std::deque</code> and <code>std::vector<bool></code>
+             meet the allocator-aware container requirements;</li>
+        <li> movable and swappable iostream classes;</li>
+        <li> support for <code>std::align</code> and
+             <code>std::aligned_union</code>;</li>
+        <li> type traits <code>std::is_trivially_copyable</code>,
+             <code>std::is_trivially_constructible</code>,
+             <code>std::is_trivially_assignable</code> etc.;
+        </li>
+        <li> I/O manipulators <code>std::put_time</code>, <code>std::get_time</code>,
+             <code>std::hexfloat</code> and <code>std::defaultfloat</code>;
+        </li>
+        <li> generic locale-aware <code>std::isblank</code>; </li>
+        <li> locale facets for Unicode conversion; </li>
+        <li> atomic operations for <code>std::shared_ptr</code>; </li>
+        <li> <code>std::notify_all_at_thread_exit()</code> and functions
+          for making futures ready at thread exit.</li>
+      </ul>
+    </li>
+    <li> Support for the C++11 <code>hexfloat</code> manipulator changes how
+      the <code>num_put</code> facet formats floating point types when
+      <code>ios_base::fixed|ios_base::scientific</code> is set in a stream's
+      <code>fmtflags</code>. This change affects all language modes, even
+      though the C++98 standard gave no special meaning to that combination
+      of flags. To prevent the use of hexadecimal notation for floating point
+      types use <code>str.unsetf(std::ios_base::floatfield)</code> to clear
+      the relevant bits in <code>str.flags()</code>.
+    </li>
+    <li><a href="https://gcc.gnu.org/onlinedocs/gcc-5.1.0/libstdc++/manual/status.html#status.iso.2014">
+      Full experimental support for C++14</a>, including the following
+      new features:
+      <ul>
+        <li> <code>std::is_final</code> type trait; </li>
+        <li> heterogeneous comparison lookup in associative containers. </li>
+        <li> global functions <code>cbegin</code>, <code>cend</code>, <code>rbegin</code>,
+        <code>rend</code>, <code>crbegin</code>, and <code>crend</code> for
+        range access to containers, arrays and initializer lists. </li>
+      </ul>
+    </li>
+    <li><a href="https://gcc.gnu.org/onlinedocs/gcc-5.1.0/libstdc++/manual/status.html#status.iso.2014">
+      Improved experimental support for the Library Fundamentals TS</a>, including:
+      <ul>
+        <li> class <code>std::experimental::any</code>; </li>
+        <li> function template <code>std::experimental::apply</code>; </li>
+        <li> function template <code>std::experimental::sample</code>; </li>
+        <li> function template <code>std::experimental::search</code> and
+          related searcher types; </li>
+        <li> variable templates for type traits; </li>
+        <li> function template <code>std::experimental::not_fn</code>.</li>
+      </ul>
+    </li>
+    <li>New random number distributions <code>logistic_distribution</code> and
+      <code>uniform_on_sphere_distribution</code> as extensions.</li>
+    <li><a href="https://sourceware.org/gdb/current/onlinedocs/gcc-5.1.0/gdb/Xmethods-In-Python.html">GDB
+      Xmethods</a> for containers and <code>std::unique_ptr</code>.</li>
+  </ul>
+
+<h3 id="fortran">Fortran</h3>
+  <ul>
+    <li>Compatibility notice:<ul>
+      <li>The version of the module files (.mod) has been incremented.</li>
+      <li>For free-form source files,
+        <a href="https://gcc.gnu.org/onlinedocs/gcc-5.1.0/gfortran/Error-and-Warning-Options.html"><code>-Werror=line-truncation</code></a>
+        is now enabled by default; note that comments exceeding the line length
+        are not diagnosed.  (For fixed-form source code, the same warning is
+        available but turned off by default, such that excess characters are
+        ignored. <code>-ffree-line-length-<em>n</em></code> and
+        <code>-ffixed-line-length-<em>n</em></code> can be used to modify the
+        default line lengths of 132 and 72 columns, respectively.)</li>
+      <li>The <code>-Wtabs</code> option is now more sensible: with
+        <code>-Wtabs</code> the compiler warns if it encounters tabs and with
+        <code>-Wno-tabs</code> this warning is turned off.  Before,
+        <code>-Wno-tabs</code> warned and <code>-Wtabs</code> turned the warning
+        off.  As before, the warning is also enabled by <code>-Wall</code>,
+        <code>-pedantic</code> and the <code>f95</code>, <code>f2003</code>,
+        <code>f2008</code> and <code>f2008ts</code> options of <code>-std=</code>.</li>
+      </ul></li>
+    <li>Incomplete support for colorizing diagnostics emitted by
+      gfortran has been added. The
+      option <code><a href="https://gcc.gnu.org/onlinedocs/gcc-5.1.0/gcc/Language-Independent-Options.html"
+      >-fdiagnostics-color</a></code> controls when color is used in
+      diagnostics. The default value of this option can
+      be <a href="https://gcc.gnu.org/install/configure.html">configured
+      when building GCC</a>. The <code>GCC_COLORS</code> environment
+      variable can be used to customize the colors or disable coloring
+      completely. Sample diagnostics output:<br/>
+      <pre>
+      $ gfortran -fdiagnostics-color=always -Wuse-without-only test.f90
+      <b>test.f90:6:1:</b>
+
+       0 continue
+       <b style='color:lime'>1</b>
+      <b style='color:red'>Error:</b> Zero is not a valid statement label at (1)    
+      <b>test.f90:9:6:</b>
+
+         USE foo
+            <b style='color:lime'>1</b>
+      <b style='color:magenta'>Warning:</b> USE statement at (1) has no ONLY qualifier [-Wuse-without-only]
+    </pre></li>
+
+    <li>The <code>-Wuse-without-only</code> option has been added to warn when a
+      <code>USE</code> statement has no <code>ONLY</code> qualifier and, thus,
+      implicitly imports all public entities of the used module.</li>
+    <li>Formatted READ and WRITE statements now work correctly in locale-aware
+      programs.  For more information and potential caveats, see
+      <a href="https://gcc.gnu.org/onlinedocs/gcc-5.1.0/gfortran/Thread-safety-of-the-runtime-library.html">Section
+      5.3 Thread-safety of the runtime library in the manual</a>.</li>
+    <li><a href="https://gcc.gnu.org/wiki/Fortran2003Status">Fortran 2003</a>:
+    <ul>
+      <li>The intrinsic IEEE modules (<code>IEEE_FEATURES</code>,
+	<code>IEEE_EXCEPTIONS</code> and <code>IEEE_ARITHMETIC</code>) are
+	now supported.</li>
+    </ul></li>
+    <li><a href="https://gcc.gnu.org/wiki/Fortran2008Status">Fortran 2008</a>:
+    <ul>
+      <li><a href="https://gcc.gnu.org/wiki/Coarray">Coarrays</a>: Full
+	experimental support of Fortran 2008's coarrays with
+	<code>-fcoarray=lib</code> except for allocatable/pointer
+	components of derived-type coarrays.  GCC currently only ships with a
+	single-image library (<code>libcaf_single</code>), but
+	multi-image support based on MPI and GASNet is provided by the libraries
+	of the <a href="http://www.opencoarrays.org/">OpenCoarrays project</a>. 
+	</li>
+    </ul></li>
+    <li>TS18508 Additional Parallel Features in Fortran:
+    <ul>
+      <li>Support for the collective intrinsic subroutines <code>CO_MAX</code>,
+	<code>CO_MIN</code>, <code>CO_SUM</code>, <code>CO_BROADCAST</code> and
+	<code>CO_REDUCE</code> has been added, including
+	<code>-fcoarray=lib</code> support.</li>
+      <li>Support for the new atomic intrinsics has been added, including
+	<code>-fcoarray=lib</code> support.</li>
+    </ul></li>
+    <li>Fortran 2015:
+    <ul>
+      <li>Support for <code>IMPLICIT NONE (external, type)</code>.</li>
+      <li><code>ERROR STOP</code> is now permitted in pure procedures.</li>
+    </ul></li>
+  </ul>
+
+<h3 id="go">Go</h3>
+  <ul>
+    <li>GCC 5 provides a complete implementation of the Go 1.4.2
+    release.</li>
+    <li>Building GCC 5 with Go enabled will install two new
+      programs: <a href="http://golang.org/cmd/go">go</a>
+      and <a href="http://golang.org/cmd/gofmt">gofmt</a>.</li>
+  </ul>
+
+<!--h3 id="java">Java (GCJ)</h3-->
+
+<h2 id="jit">libgccjit</h2>
+<p>New in GCC 5 is the ability to build GCC as a shared library for embedding
+in other processes (such as interpreters), suitable for Just-In-Time
+compilation to machine code.</p>
+
+<p>The shared library has a <a href="https://gcc.gnu.org/onlinedocs/gcc-5.1.0/jit/intro/index.html">C API</a>
+and a
+<a href="https://gcc.gnu.org/onlinedocs/gcc-5.1.0/jit/cp/index.html">C++ wrapper API</a>
+providing some "syntactic sugar".
+There are also bindings available from 3rd parties for
+<a href="https://github.com/davidmalcolm/pygccjit">Python</a> and for
+<a href="https://github.com/ibuclaw/gccjitd">D</a>.</p>
+
+<p>For example, this library can be used by interpreters for
+<a href="https://gcc.gnu.org/onlinedocs/gcc-5.1.0/jit/intro/tutorial04.html">compiling
+functions from bytecode to machine code</a>.</p>
+
+<p>The library can also be used for ahead-of-time compilation, enabling
+GCC to be plugged into a pre-existing frontend.  An example of using
+this to build a compiler for an esoteric language we'll refer to as "brainf"
+can be seen <a href="https://gcc.gnu.org/onlinedocs/gcc-5.1.0/jit/intro/tutorial05.html">
+here</a>.</p>
+
+<p>libgccjit is licensed under the GPLv3 (or at your option, any later version)</p>
+
+<p>It should be regarded as experimental at this time.</p>
+
+<h2 id="targets">New Targets and Target Specific Improvements</h2>
+
+<h3 id="aarch64">AArch64</h3>
+   <ul>
+     <li>Code generation for the ARM Cortex-A57 processor has been improved.
+       A more accurate instruction scheduling model for the processor is
+       now used, and a number of compiler tuning parameters have been set
+       to offer increased performance when compiling with
+       <code>-mcpu=cortex-a57</code> or <code>-mtune=cortex-a57</code>.
+     </li>
+     <li> A workaround for the ARM Cortex-A53 erratum 835769 has been
+       added and can be enabled by giving the
+       <code>-mfix-cortex-a53-835769</code> option.
+       Alternatively it can be enabled by default by configuring GCC with the
+       <code>--enable-fix-cortex-a53-835769</code> option.
+     </li>
+     <li> The optional cryptographic extensions to the ARMv8-A architecture
+       are no longer enabled by default when specifying the
+       <code>-mcpu=cortex-a53</code>, <code>-mcpu=cortex-a57</code> or
+       <code>-mcpu=cortex-a57.cortex-a53</code> options.  To enable these
+       extensions add <code>+crypto</code> to the value of
+       <code>-mcpu</code> or <code>-march</code> e.g.
+       <code>-mcpu=cortex-a53+crypto</code>.
+     </li>
+     <li> Support has been added for the following processors
+      (GCC identifiers in parentheses): ARM Cortex-A72
+      (<code>cortex-a72</code>) and initial support for its big.LITTLE
+      combination with the ARM Cortex-A53 (<code>cortex-a72.cortex-a53</code>),
+      Cavium ThunderX (<code>thunderx</code>), Applied Micro X-Gene 1
+      (<code>xgene1</code>), and Samsung Exynos M1 (<code>exynos-m1</code>).
+      The GCC identifiers can be used
+      as arguments to the <code>-mcpu</code> or <code>-mtune</code> options,
+      for example: <code>-mcpu=xgene1</code> or
+      <code>-mtune=cortex-a72.cortex-a53</code>.
+      Using <code>-mcpu=cortex-a72</code> requires a version of GNU binutils
+      that has support for the Cortex-A72.
+     </li>
+     <li>The transitional options <code>-mlra</code> and <code>-mno-lra</code>
+       have been removed. The AArch64 backend now uses the local register
+       allocator (LRA) only.
+     </li>
+   </ul>
+
+<h3 id="arm">ARM</h3>
+     <ul>
+      <li>Thumb-1 assembly code is now generated in unified syntax. The new option
+        <code>-masm-syntax-unified</code> specifies whether inline assembly
+        code is using unified syntax. By default the option is off which means
+        non-unified syntax is used. However this is subject to change in future releases.
+        Eventually the non-unified syntax will be deprecated.
+      </li>
+      <li> It is now a configure-time error to use the <code>--with-cpu</code>
+      configure option with either of <code>--with-tune</code> or
+      <code>--with-arch</code>.
+      </li>
+      <li>Code generation for the ARM Cortex-A57 processor has been improved.
+       A more accurate instruction scheduling model for the processor is
+       now used, and a number of compiler tuning parameters have been set
+       to offer increased performance when compiling with
+       <code>-mcpu=cortex-a57</code> or <code>-mtune=cortex-a57</code>.
+      </li>
+      <li> Support has been added for the following processors
+       (GCC identifiers in parentheses): ARM Cortex-A17 (<code>cortex-a17</code>) and
+       initial support for its big.LITTLE combination with the ARM Cortex-A7
+       (<code>cortex-a17.cortex-a7</code>), ARM Cortex-A72
+       (<code>cortex-a72</code>) and initial support for its big.LITTLE
+       combination with the ARM Cortex-A53 (<code>cortex-a72.cortex-a53</code>),
+       ARM Cortex-M7 (<code>cortex-m7</code>), Applied Micro X-Gene 1
+       (<code>xgene1</code>), and Samsung Exynos M1 (<code>exynos-m1</code>).
+       The GCC identifiers can be used
+       as arguments to the <code>-mcpu</code> or <code>-mtune</code> options,
+       for example: <code>-mcpu=xgene1</code> or
+       <code>-mtune=cortex-a72.cortex-a53</code>.
+       Using <code>-mcpu=cortex-a72</code> requires a version of GNU binutils
+       that has support for the Cortex-A72.
+      </li>
+      <li> The deprecated option <code>-mwords-little-endian</code>
+       has been removed.
+      </li>
+      <li> The options <code>-mapcs</code>, <code>-mapcs-frame</code>,
+      <code>-mtpcs-frame</code> and <code>-mtpcs-leaf-frame</code>
+      which are only applicable to the old ABI have been deprecated.
+      </li>
+      <li>The transitional options <code>-mlra</code> and <code>-mno-lra</code>
+       have been removed. The ARM backend now uses the local register allocator
+       (LRA) only.
+     </li>
+     </ul>
+
+<h3 id="x86">IA-32/x86-64</h3>
+  <ul>
+    <li>New ISA extensions support
+	<a href="https://software.intel.com/sites/default/files/managed/0d/53/319433-022.pdf">
+	AVX-512{BW,DQ,VL,IFMA,VBMI}</a> of Intel's CPU
+	codenamed Skylake Server was added to GCC.  That includes inline
+	assembly support, new intrinsics, and basic autovectorization.  These
+	new AVX-512 extensions are available via
+	the following GCC switches: AVX-512 Vector Length EVEX feature:
+	<code>-mavx512vl</code>, AVX-512 Byte and Word instructions:
+	<code>-mavx512bw</code>, AVX-512 Dword and Qword instructions:
+	<code>-mavx512dq</code>, AVX-512 FMA-52 instructions:
+	<code>-mavx512ifma</code> and for AVX-512 Vector Bit Manipulation
+	Instructions: <code>-mavx512vbmi</code>.</li>
+	<li>New ISA extensions support
+	<a href="https://software.intel.com/sites/default/files/managed/0d/53/319433-022.pdf">
+	Intel MPX</a> was added to GCC.  This new extension is available via the
+	<code>-mmpx</code> compiler switch.  Intel MPX is a set of processor features which,
+	with compiler, run-time library and OS support, brings increased robustness to
+	software by run-time checking pointer references against their bounds.
+	In GCC Intel MPX is supported by Pointer Bounds Checker and libmpx run-time
+	libraries.</li>
+	<li>The new <code>-mrecord-mcount</code> option for <code>-pg</code>
+	generates a Linux kernel style table of pointers to
+	<code>mcount</code> or <code>__fentry__</code> calls at the beginning
+	of functions. The new <code>-mnop-mcount</code> option in addition
+	also generates nops in place of the <code>__fentry__</code> or
+	<code>mcount</code> call, so that a call per function can be later
+	patched in. This can be used for low overhead tracing or hot code
+	patching.</li>
+	<li>The new <code>-malign-data</code> option controls how
+	GCC aligns variables.  <code>-malign-data=compat</code> uses
+	increased alignment compatible with GCC 4.8 and earlier,
+	<code>-malign-data=abi</code> uses alignment as specified by
+	the psABI, and <code>-malign-data=cacheline</code> uses increased
+	alignment to match the cache line size.
+	<code>-malign-data=compat</code> is the default.</li>
+	<li>The new <code>-mskip-rax-setup</code> option skips setting
+	up the RAX register when SSE is disabled and there are no variable
+	arguments passed in vector registers.  This can be used to
+	optimize the Linux kernel.</li>
+  </ul>
+
+<h3 id="mips">MIPS</h3>
+  <ul>
+    <li>MIPS Releases 3 and 5 are now directly supported.  Use the
+      command-line options <code>-mips32r3</code>, <code>-mips64r3</code>,
+      <code>-mips32r5</code> and <code>-mips64r5</code> to enable
+      code-generation for these processors.</li>
+    <li>The Imagination P5600 processor is now supported using the
+      <code>-march=p5600</code> command-line option.</li>
+    <li>The Cavium Octeon3 processor is now supported using the
+      <code>-march=octeon3</code> command-line option.</li>
+    <li>MIPS Release 6 is now supported using the <code>-mips32r6</code>
+       and <code>-mips64r6</code> command-line options.</li>
+    <li>The o32 ABI has been modified and extended.  The o32 64-bit
+      floating-point register support is now obsolete and has been removed.
+      It has been replaced by three ABI extensions FPXX, FP64A, and FP64.
+      The meaning of the <code>-mfp64</code> command-line option has
+      changed.  It is now used to enable the FP64A and FP64 ABI extensions.
+      <ul>
+	<li>The FPXX extension requires that code generated to access
+	    double-precision values use even-numbered registers.  Code that
+	    adheres to this extension is link-compatible with all other o32
+	    double-precision ABI variants and will execute correctly in all
+	    hardware FPU modes.  The command-line options <code>-mabi=32 
+	    -mfpxx</code> can be used to enable this extension.  MIPS II is
+	    the minimum processor required.</li>
+	<li>The o32 FP64A extension requires that floating-point registers be
+	    64-bit and odd-numbered single-precision registers are not
+	    allowed.  Code that adheres to the o32 FP64A variant is
+	    link-compatible with all other o32 double-precision ABI variants.
+	    The command-line options <code>-mabi=32 -mfp64 -mno-odd-spreg
+	    </code> can be used to enable this extension.  MIPS32R2 is the
+	    minimum processor required.</li>
+	<li>The o32 FP64 extension also requires that floating-point registers
+	    be 64-bit, but permits the use of single-precision registers.
+	    Code that adheres to the o32 FP64 variant is link-compatible with
+	    o32 FPXX and o32 FP64A variants only, i.e. it is not compatible
+	    with the original o32 double-precision ABI. The command-line
+	    options <code>-mabi=32 -mfp64 -modd-spreg</code> can be used to
+	    enable this extension.  MIPS32R2 is the minimum processor required.
+	    </li>
+      </ul>
+      The new ABI variants can be enabled by default using the configure time
+      options <code>--with-fp-32=[32|xx|64]</code> and
+      <code>--with(out)-odd-sp-reg-32</code>.  It is strongly recommended that
+      all vendors begin to set o32 FPXX as the default ABI.  This will be
+      required to run the generated code on MIPSR5 cores in conjunction with
+      future MIPS SIMD (MSA) code and MIPSR6 cores.</li>
+    <li>GCC will now pass all floating-point options to the assembler if GNU
+      binutils 2.25 is used.  As a result, any inline assembly code that
+      uses hard-float instructions should be amended to include a
+      <code>.set</code> directive to override the global assembler options
+      when compiling for soft-float targets.</li>
+  </ul>
+
+<h3 id="nds32">NDS32</h3>
+  <ul>
+    <li>The variadic function ABI implementation is now compatible with
+    past Andes toolchains where the caller uses registers to pass arguments
+    and the callee is in charge of pushing them on stack.</li>
+    <li>The options <code>-mforce-fp-as-gp</code>, <code>-mforbid-fp-as-gp</code>,
+    and <code>-mex9</code> have been removed since they are not yet available
+    in the nds32 port of GNU binutils.</li>
+    <li>A new option <code>-mcmodel=[small|medium|large]</code> supports
+    varied code models on code generation.  The <code>-mgp-direct</code>
+    option became meaningless and can be discarded.</li>
+  </ul>
+
+<h3 id="rx">RX</h3>
+  <ul>
+    <li>A new command line option <code>-mno-allow-string-insns</code> can be
+    used to disable the generation of the <code>SCMPU</code>, <code>SMOVU</code>,
+    <code>SMOVB</code>, <code>SMOVF</code>, <code>SUNTIL</code>, <code>SWHILE</code>
+    and <code>RMPA</code> instructions.  An erratum released by Renesas shows
+    that it is unsafe to use these instructions on addresses within the I/O
+    space of the processor.  The new option can be used when the programmer is
+    concerned that the I/O space might be accessed.  The default is still to
+    enable these instructions.</li>
+  </ul>
+
+<h3 id="sh">SH</h3>
+  <ul>
+    <li>The compiler will now pass the appropriate <code>--isa=</code> option
+    to the assembler.</li>
+
+    <li>The default handling for the <code>GBR</code> has been changed from
+    call clobbered to call preserved.  The old behavior can be reinstated by
+    specifying the option <code>-fcall-used-gbr</code>.</li>
+
+    <li>Support for the SH4A <code>fpchg</code> instruction has been added which
+    will be utilized when switching between single and double precision FPU
+    modes.</li>
+
+    <li>The compiler no longer uses the <code>__fpscr_values</code> array for
+    switching between single and double FPU precision modes on non-SH4A targets.
+    Instead mode switching will now be performed by storing, modifying and
+    reloading the <code>FPSCR</code>, so that other <code>FPSCR</code> bits are
+    preserved across mode switches.   The <code>__fpscr_values</code> array that
+    is defined in libgcc is still present for backwards compatibility, but it
+    will not be referenced by compiler generated code anymore.</li>
+
+    <li>New builtin functions <code>__builtin_sh_get_fpscr</code> and
+    <code>__builtin_sh_set_fpscr</code> have been added.  The
+    <code>__builtin_sh_set_fpscr</code> function will mask the specified bits
+    in such a way that the <code>SZ</code>, <code>PR</code> and <code>FR</code>
+    mode bits will be preserved, while changing the other bits.  These new
+    functions do not reference the <code>__fpscr_values</code> array.  The old
+    functions <code>__set_fpscr</code> and <code>__get_fpscr</code> in libgcc
+    which access the <code>__fpscr_values</code> array are still present for
+    backwards compatibility, but their usage is highly discouraged.</li>
+
+    <li>Some improvements to code generated for <code>__atomic</code> built-in
+    functions.</li>
+
+    <li>When compiling for SH2E the compiler will no longer force the usage of
+    delay slots for conditional branch instructions <code>bt</code> and
+    <code>bf</code>.  The old behavior can be reinstated (e.g. to work around a
+    hardware bug in the original SH7055) by specifying the new option
+    <code>-mcbranch-force-delay-slot</code>.</li>
+  </ul>
+
+<h2 id="os">Operating Systems</h2>
+
+  <h3 id="dragonfly">DragonFly BSD</h3>
+
+  <ul>
+    <li>GCC now supports the DragonFly BSD operating system.</li>
+  </ul>
+
+  <h3 id="freebsd">FreeBSD</h3>
+
+  <ul>
+    <li>GCC now supports the FreeBSD operating system for the arm port
+    through the <code>arm*-*-freebsd*</code> target triplets.</li>
+  </ul>
+
+  <h3 id="vxmils">VxWorks MILS</h3>
+
+  <ul>
+    <li>GCC now supports the MILS (Multiple Independent Levels
+    of Security) variant of WindRiver's VxWorks operating system
+    for PowerPC targets.</li>
+  </ul>
+
+<!-- h2>Documentation improvements</h2-->
+<h2>Other significant improvements</h2>
+  <h3 id="gcc-ar"></h3>
+  <ul>
+    <li>The <code>gcc-ar</code>, <code>gcc-nm</code>, <code>gcc-ranlib</code>
+      wrappers now understand a <code>-B</code> option to set the compiler
+      to use.</li>
+  </ul>
+  <h3 id="driver"></h3>
+  <ul>
+    <li>When the new command-line option <code>-freport-bug</code> is
+      used, GCC automatically generates a developer-friendly reproducer
+      whenever an internal compiler error is encountered.</li>
+  </ul>
+
+
+
+<!-- ==================================================================== -->
+
+<div class="copyright">
+
+<address style="margin-top:0;">For questions related to the use of GCC,
+please consult these web pages and the
+<a href="https://gcc.gnu.org/onlinedocs/">GCC manuals</a>. If that fails,
+the <a href="mailto:gcc-help at gcc.gnu.org">gcc-help at gcc.gnu.org</a>
+mailing list might help.
+Comments on these web pages and the development of GCC are welcome on our
+developer list at <a href="mailto:gcc at gcc.gnu.org">gcc at gcc.gnu.org</a>.
+All of <a href="https://gcc.gnu.org/lists.html">our lists</a>
+have public archives.
+</address>
+
+<p>Copyright (C)
+<a href="http://www.fsf.org">Free Software Foundation, Inc.</a>
+Verbatim copying and distribution of this entire article is
+permitted in any medium, provided this notice is preserved.</p>
+
+<p style="margin-bottom:0;">These pages are
+<a href="https://gcc.gnu.org/about.html">maintained by the GCC team</a>.
+Last modified 2015-04-22<!-- IGNORE DIFF
+--><a href="http://validator.w3.org/check/referer">.</a></p>
+
+</div>
+
+<!-- ==================================================================== -->
+
+</body>
+     </html>
+  
+ 
diff --git a/debian/README.Bugs.m4 b/debian/README.Bugs.m4
new file mode 100644
index 0000000..a2d1606
--- /dev/null
+++ b/debian/README.Bugs.m4
@@ -0,0 +1,333 @@
+Reporting Bugs in the GNU Compiler Collection for DIST
+========================================================
+
+Before reporting a bug, please
+------------------------------
+
+- Check that the behaviour really is a bug. Have a look into some
+  ANSI standards document.
+
+- Check the list of well known bugs: http://gcc.gnu.org/bugs.html#known
+
+- Try to reproduce the bug with a current GCC development snapshot. You
+  usually can get a recent development snapshot from the gcc-snapshot
+ifelse(DIST,`Debian',`dnl
+  package in the unstable (or experimental) distribution.
+
+  See: http://packages.debian.org/gcc-snapshot
+', DIST, `Ubuntu',`dnl
+  package in the current development distribution.
+
+  See: http://archive.ubuntu.com/ubuntu/pool/universe/g/gcc-snapshot/
+')dnl
+
+- Try to find out if the bug is a regression (an older GCC version does
+  not show the bug).
+
+- Check if the bug is already reported in the bug tracking systems.
+
+ifelse(DIST,`Debian',`dnl
+    Debian:   http://bugs.debian.org/debian-gcc@lists.debian.org
+', DIST, `Ubuntu',`dnl
+    Ubuntu:   https://bugs.launchpad.net/~ubuntu-toolchain/+packagebugs
+    Debian:   http://bugs.debian.org/debian-gcc@lists.debian.org
+')dnl
+    Upstream: http://gcc.gnu.org/bugzilla/
+
+
+Where to report a bug
+---------------------
+
+ifelse(DIST,`Debian',`dnl
+Please report bugs found in the packaging of GCC to the Debian bug tracking
+system. See http://www.debian.org/Bugs/ for instructions (or use the
+reportbug script).
+', DIST, `Ubuntu',`dnl
+Please report bugs found in the packaging of GCC to Launchpad. See below
+how issues should be reported.
+')dnl
+
+DIST's current policy is to closely follow the upstream development and
+only apply a minimal set of patches (which are summarized in the README.Debian
+document).
+
+ifelse(DIST,`Debian',`dnl
+If you think you have found an upstream bug, you did check the section
+above ("Before reporting a bug") and are able to provide a complete bug
+report (see below "How to report a bug"), then you may help the Debian
+GCC package maintainers, if you report the bug upstream and then submit
+a bug report to the Debian BTS and tell us the upstream report number.
+This way you are able to follow the upstream bug handling as well. If in
+doubt, report the bug to the Debian BTS (but read "How to report a bug"
+below).
+', DIST, `Ubuntu',`dnl
+If you think you have found an upstream bug, you did check the section
+above ("Before reporting a bug") and are able to provide a complete bug
+report (see below "How to report a bug"), then you may help the Ubuntu
+GCC package maintainers, if you report the bug upstream and then submit
+a bug report to Launchpad and tell us the upstream report number.
+This way you are able to follow the upstream bug handling as well. If in
+doubt, report the bug to Launchpad (but read "How to report a bug" below).
+
+Report the issue to https://bugs.launchpad.net/ubuntu/+source/SRCNAME.
+')dnl
+
+
+How to report a bug
+-------------------
+
+There are complete instructions in the gcc info manual (found in the
+gcc-doc package), section Bugs.
+
+The manual can be read using `M-x info' in Emacs, or if the GNU info
+program is installed on your system by `info --node "(gcc)Bugs"'. Or see
+the file BUGS included with the gcc source code.
+
+Online bug reporting instructions can be found at
+
+	http://gcc.gnu.org/bugs.html
+
+[Some paragraphs taken from the above URL]
+
+The main purpose of a bug report is to enable us to fix the bug. The
+most important prerequisite for this is that the report must be
+complete and self-contained, which we explain in detail below.
+
+Before you report a bug, please check the list of well-known bugs and,
+if possible in any way, try a current development snapshot.
+
+Summarized bug reporting instructions
+-------------------------------------
+
+What we need
+
+Please include in your bug report all of the following items, the
+first three of which can be obtained from the output of gcc -v:
+
+    * the exact version of GCC;
+    * the system type;
+    * the options given when GCC was configured/built;
+    * the complete command line that triggers the bug;
+    * the compiler output (error messages, warnings, etc.); and
+    * the preprocessed file (*.i*) that triggers the bug, generated by
+      adding -save-temps to the complete compilation command, or, in
+      the case of a bug report for the GNAT front end, a complete set
+      of source files (see below).
+
+What we do not want
+
+    * A source file that #includes header files that are left out
+      of the bug report (see above)
+    * That source file and a collection of header files.
+    * An attached archive (tar, zip, shar, whatever) containing all
+      (or some :-) of the above.
+    * A code snippet that won't cause the compiler to produce the
+      exact output mentioned in the bug report (e.g., a snippet with
+      just a few lines around the one that apparently triggers the
+      bug, with some pieces replaced with ellipses or comments for
+      extra obfuscation :-)
+    * The location (URL) of the package that failed to build (we won't
+      download it, anyway, since you've already given us what we need
+      to duplicate the bug, haven't you? :-)
+    * An error that occurs only some of the times a certain file is
+      compiled, such that retrying a sufficient number of times
+      results in a successful compilation; this is a symptom of a
+      hardware problem, not of a compiler bug (sorry)
+    * E-mail messages that complement previous, incomplete bug
+      reports. Post a new, self-contained, full bug report instead, if
+      possible as a follow-up to the original bug report
+    * Assembly files (*.s) produced by the compiler, or any binary files,
+      such as object files, executables, core files, or precompiled
+      header files
+    * Duplicate bug reports, or reports of bugs already fixed in the
+      development tree, especially those that have already been
+      reported as fixed last week :-)
+    * Bugs in the assembler, the linker or the C library. These are
+      separate projects, with separate mailing lists and different bug
+      reporting procedures
+    * Bugs in releases or snapshots of GCC not issued by the GNU
+      Project. Report them to whoever provided you with the release
+    * Questions about the correctness or the expected behavior of
+      certain constructs that are not GCC extensions. Ask them in
+      forums dedicated to the discussion of the programming language
+
+
+Known Bugs and Non-Bugs
+-----------------------
+
+[Please see /usr/share/doc/gcc/FAQ or http://gcc.gnu.org/faq.html first]
+
+
+C++ exceptions don't work with C libraries
+------------------------------------------
+
+[Taken from the closed bug report #22769] C++ exceptions don't work
+with C libraries, if the C code wasn't designed to be thrown through.
+A solution could be to translate all C libraries with -fexceptions.
+Mostly trying to throw an exception in a callback function (qsort,
+Tcl command callbacks, etc ...). Example:
+
+    #include <stdio.h>
+    #include <tcl.h>
+
+    class A {};
+
+    static
+    int SortCondition(void const*, void const*)
+    {
+        printf("throwing 'sortcondition' exception\n");
+        throw A();
+    }
+
+    int main(int argc, char *argv[])
+    {
+        int list[2];
+
+        try {
+            SortCondition(NULL,NULL);
+        } catch (A) {
+            printf("caught test-sortcondition exception\n");
+        }
+        try {
+            qsort(&list, sizeof(list)/sizeof(list[0]),sizeof(list[0]),
+                 &SortCondition);
+        } catch (A) {
+            printf("caught real-sortcondition exception\n");
+        }
+        return 0;
+}
+
+Andrew Macleod <amacleod at cygnus.com> responded:
+
+When compiled with the table driven exception handling, exception can only
+be thrown through functions which have been compiled with the table driven EH.
+If a function isn't compiled that way, then we do not have the frame
+unwinding information required to restore the registers when unwinding.
+
+I believe the setjmp/longjmp mechanism will throw through things like this, 
+but its produces much messier code.  (-fsjlj-exceptions)
+
+The C compiler does support exceptions, you just have to turn them on
+with -fexceptions.
+
+Your main options are to:
+  a) Don't use callbacks, or at least don't throw through them.
+  b) Get the source and compile the library with -fexceptions (You have to
+     explicitly turn on exceptions in the C compiler)
+  c) always use -fsjlj-exceptions (boo, bad choice :-)
+
+
+g++: "undefined reference" to static const array in class
+---------------------------------------------------------
+
+The following code compiles under GNU C++ 2.7.2 with correct results,
+but produces the same linker error with GNU C++ 2.95.2.
+Alexandre Oliva <oliva at lsd.ic.unicamp.br> responded:
+
+All of them are correct.  A static data member *must* be defined
+outside the class body even if it is initialized within the class
+body, but no diagnostic is required if the definition is missing.  It
+turns out that some releases do emit references to the missing symbol,
+while others optimize it away.
+
+#include <iostream>
+
+class Test
+{
+  public:
+    Test(const char *q);
+  protected:
+    static const unsigned char  Jam_signature[4]   = "JAM";
+};
+
+Test::Test(const char *q)
+{
+  if (memcmp(q, Jam_signature, sizeof(Jam_signature)) != 0)
+  cerr << "Hello world!\n";
+}
+
+int main(void)
+{
+  Test::Test("JAM");
+  return 0;
+}
+
+g++: g++ causes passing non const ptr to ptr to a func with const arg
+     to cause an error (not a bug)
+---------------------------------------------------------------------
+
+Example:
+
+#include <stdio.h>
+void test(const char **b){
+        printf ("%s\n",*b);
+}
+int main(void){
+        char *test1="aoeu";
+        test(&test1);
+}
+
+make const
+g++     const.cc   -o const
+const.cc: In function `int main()':
+const.cc:7: passing `char **' as argument 1 of `test(const char **)' adds cv-quals without intervening `const'
+make: *** [const] Error 1
+
+Answer from "Martin v. Loewis" <martin at loewis.home.cs.tu-berlin.de>:
+
+> ok... maybe I missed something.. I haven't really kept up with the latest in
+> C++ news.  But I've never heard anything even remotly close to passing a non
+> const var into a const arg being an error before.
+
+Thanks for your bug report. This is a not a bug in the compiler, but
+in your code. The standard, in 4.4/4, puts it that way
+
+# A conversion can add cv-qualifiers at levels other than the first in
+# multi-level pointers, subject to the following rules:
+# Two pointer types T1 and T2 are similar if there exists a type T and
+# integer n > 0 such that:
+#   T1 is cv(1,0) pointer to cv(1,1) pointer to ... cv(1,n-1)
+#   pointer to cv(1,n) T
+# and
+#   T2 is cv(2,0) pointer to cv(2,1) pointer to ... cv(2,n-1)
+#   pointer to cv(2,n) T
+# where each cv(i,j) is const, volatile, const volatile, or
+# nothing. The n-tuple of cv-qualifiers after the first in a pointer
+# type, e.g., cv(1,1) , cv(1,2) , ... , cv(1,n) in the pointer type
+# T1, is called the cv-qualification signature of the pointer type. An
+# expression of type T1 can be converted to type T2 if and only if the
+# following conditions are satisfied:
+#  - the pointer types are similar.
+#  - for every j > 0, if const is in cv(1,j) then const is in cv(2,j) ,
+#    and similarly for volatile.
+#  - if the cv(1,j) and cv(2,j) are different, then const is in every
+#    cv(2,k) for 0 < k < j.
+
+It is the last rule that your code violates. The standard gives then
+the following example as a rationale:
+
+# [Note: if a program could assign a pointer of type T** to a pointer
+# of type const T** (that is, if line //1 below was allowed), a
+# program could inadvertently modify a const object (as it is done on
+# line //2). For example,
+# int main() { 
+#   const char c = 'c'; 
+#   char* pc; 
+#   const char** pcc = &pc; //1: not allowed 
+#   *pcc = &c; 
+#   *pc = 'C'; //2: modifies a const object 
+# }
+# - end note]
+
+If you question this line of reasoning, please discuss it in one of
+the public C++ fora first, eg. comp.lang.c++.moderated, or
+comp.std.c++.
+
+
+cpp removes blank lines
+-----------------------
+
+With the new cpp, you need to add -traditional to the "cpp -P" args, else 
+blank lines get removed.
+
+[EDIT ME: scan Debian bug reports and write some nice summaries ...]
diff --git a/debian/README.C++ b/debian/README.C++
new file mode 100644
index 0000000..8cc40f8
--- /dev/null
+++ b/debian/README.C++
@@ -0,0 +1,35 @@
+libstdc++ is an implementation of the Standard C++ Library, including the
+Standard Template Library (i.e. as specified by ANSI and ISO).
+
+Some notes on porting applications from libstdc++-2.90 (or earlier versions)    
+to libstdc++-v3 can be found in the libstdc++6-4.3-doc package. After the
+installation of the package, look at:
+
+  file:///usr/share/doc/gcc-4.3-base/libstdc++/html/17_intro/porting-howto.html
+
+On Debian GNU/Linux you find additional documentation in the
+libstdc++6-4.3-doc package. After installing these packages,
+point your browser to
+
+  file:///usr/share/doc/libstdc++6-4.3-doc/libstdc++/html/index.html
+
+Other documentation can be found:
+
+    http://www.sgi.com/tech/stl/
+
+with a good, recent, book on C++.
+
+A great deal of useful C++ documentation can be found in the C++ FAQ-Lite,
+maintained by Marshall Cline <cline at parashift.com>.  It can be found at the
+mirror sites linked from the following URL (this was last updated on
+2010/09/11):
+
+     http://www.parashift.com/c++-faq/
+
+or use some search engin site to find it, e.g.:
+
+     http://www.google.com/search?q=c%2B%2B+faq+lite
+
+Be careful not to use outdated mirors.
+
+Please send updates to this list as bug report for the g++ package.
diff --git a/debian/README.Debian b/debian/README.Debian
new file mode 100644
index 0000000..b2275d4
--- /dev/null
+++ b/debian/README.Debian
@@ -0,0 +1,45 @@
+               The Debian GNU Compiler Collection setup
+               ========================================
+
+Please see the README.Debian in /usr/share/doc/gcc, contained in the
+gcc package for a description of the setup of the different compiler
+versions.
+
+For general discussion about the Debian toolchain (GCC, glibc, binutils)
+please use the mailing list debian-toolchain at lists.debian.org; for GCC
+specific things, please use debian-gcc at lists.debian.org.  When in doubt
+use the debian-toolchain ML.
+
+
+Maintainers of these packages
+-----------------------------
+
+Matthias Klose <doko at debian.org>
+Ludovic Brenta <ludovic at ludovic-brenta.org>	(gnat)
+Iain Buclaw <ibuclaw at ubuntu.com>		(gdc)
+Aurelien Jarno <aurel32 at debian.org>		(mips*-linux)
+Aurelien Jarno <aurel32 at debian.org>		(s390X*-linux)
+
+The following ports lack maintenance in Debian: powerpc, ppc64,
+sparc, sparc64 (unmentioned ports are usually handled by the Debian
+porters).
+
+Former and/or inactive maintainers of these packages
+----------------------------------------------------
+
+Falk Hueffner <falk at debian.org>			(alpha-linux)
+Ray Dassen <jdassen at debian.org>
+Jeff Bailey <jbailey at nisa.net>			(hurd-i386)
+Joel Baker <fenton at debian.org>			(netbsd-i386)
+Randolph Chung <tausq at debian.org>		(ia64-linux)
+Philip Blundell <pb at debian.org>			(arm-linux)
+Ben Collins <bcollins at debian.org>		(sparc-linux)
+Dan Jacobowitz <dan at debian.org>			(powerpc-linux)
+Thiemo Seufer <ths at networkno.de>		(mips*-linux)
+Matt Taggart <taggart at carmen.fc.hp.com>		(hppa-linux)
+Gerhard Tonn <GerhardTonn at swol.de>		(s390-linux)
+Roman Zippel <zippel at linux-m68k.org>		(m68k-linux)
+Arthur Loiret <arthur.loiret at gmail.com>		(gdc)
+
+===============================================================================
+
diff --git a/debian/README.cross b/debian/README.cross
new file mode 100644
index 0000000..a91829e
--- /dev/null
+++ b/debian/README.cross
@@ -0,0 +1,144 @@
+Building cross-compiler Debian packages
+---------------------------------------
+
+It is possible to build C and C++ cross compilers and support libraries
+from gcc-4.0 source package. This document describes how to do so.
+Cross-compiler build support is not perfect yet, please send fixes
+and improvements to debian-gcc at lists.debian.org and 
+debian-embedded at lists.debian.org
+
+Before you start, you should probably check available pre-built
+cross-toolchain debs. Available at http://www.emdebian.org
+
+Old patches could be reached at
+  http://zigzag.lvk.cs.msu.su/~nikita/debian/
+  
+If they are no longer there, you may check EmDebian web site at
+  http://www.emdebian.org/
+or ask debian-embedded at lists.debian.org for newer location.
+
+Please check http://bugs.debian.org/391445 if you are about building
+gcc-4.3 or above.
+
+Most of them has been merged with gcc debian sources.
+
+0. What's wrong with toolchain-source approach
+
+Package toolchain-source contains sources for binutils and gcc, as well as
+some support scripts to build cross-compiler packages. They seem to work.
+
+However, there is one fundamental problem with this approach.
+Gcc package is actively maintained and frequently updated. These updates
+do contain bug fixes and improvements, especially for non-x86 architectures.
+Cross-compilers built using toolchain-source will not get those fixes unless
+toolchain-source package is updated after each binutils and gcc update.
+The later is not hapenning in real life. For example, toolchain-source
+was upgraded from gcc-3.2 to gcc-3.3 half a year later than gcc-3.3 became
+Debian default compiler.
+
+Keeping toolchain-source package up-to-date requires lots of work, and seems
+to be a waste of time. It is much better to build cross-compilers directly
+from gcc source package.
+
+
+1. What is needed to build a cross-compiler from gcc-4.3 source
+
+1.1. dpkg-cross package
+
+Dpkg-cross package contains several tools to manage cross-compile environment.
+
+It can convert native debian library and lib-dev packages for the target
+architecture to binary-all packages that keep libraries and headers under
+/usr/$(TARGET)/.
+
+Also it contains helper tools for cross-compiling debian packages. Some of
+these tools are used while building libgcc1 and libstdc++ library packages.
+The resulting library packages follow the same convensions as library packages
+converted by dpkg-cross.
+
+Currently, at least version 1.18 of dpkg-cross is needed for cross-gcc
+package build. Version 1.32 of dpkg-cross is needed in order to build gcc-4.3.
+
+1.2. cross-binutils for the target
+
+You need cross-binutils for your target to build cross-compiler.
+Binutils-multiarch package will not work because it does not provide cross-
+assemblers.
+
+If you don't want to use pre-built cross-binutils packages, you may build
+your own from binutils debian source package, using patches posted to
+bug #231707. Please use the latest of patch versions available there.
+
+Alternatively, you may use toolchain-source package to build cross-binutils
+(but in this case you will probably also want to use toolchain-source
+to build cross-compiler itself). However, multilib'ed cross-compilers may
+not build or work with these binutils.
+
+1.3. libc for target
+
+You also need libc library and development packages for the target
+architecture installed.
+
+To get those, download linux-kernel-headers, libc6, and libc6-dev binary
+debs for your target, convert those using dpkg-cross -b, and install
+resulting -arch-cross debs. Consult dpkg-cross manual page for more
+information.
+
+Building with/for alternative libc's is not supported yet (but this is in
+TODO).
+
+Note that if you plan to use your cross-toolchain to develop kernel drivers
+or similar low-level things, you will probably also need kernel headers
+for the exact kernel version that your target hardware uses.
+
+
+2. Building cross-compiler packages
+
+Get gcc-4.3 source package.
+
+Unpack it using dpkg-source -x, and cd to the package directory.
+
+Set GCC_TARGET environment variable to the target architectire name. Note
+that currently you should use debian architecture name (i.e 'powerpc' or 'arm'),
+not GNU system type (i.e. 'powerpc-linux' or 'arm-linux'). Setting GCC_TARGET
+to GNU system type will cause cross-compiler build to fail.
+
+Instead of setting GCC_TARGET, target architecture name may be put into
+debian/target file. If both GCC_TARGET is defined and debian/target file
+exists, GCC_TARGET is used.
+
+Run debian/rules control. This will change debian/control file,
+adjusting build-depends.  By default, the packages will not depend on the
+system -base package. A variable DEB_CROSS_INDEPENDENT has been merged with DEB_CROSS variable.
+
+You can then build with either
+
+$ GCC_TARGET=[arch] dpkg-buildpackage -rfakeroot
+
+3. Using crosshurd
+
+Jeff Bailey <jbailey at raspberryginger.com> suggests alternate way to setup
+environment to build cross-compiler, using 'crosshurd' package. 
+Crosshurd is like debootstrap but cross-arch, and works on the Hurd,
+Linux and FreeBSD.  (The name is historical).
+
+If you setup your environment with crosshurd, you will need to fix symlinks
+in lib and usr/lib to be relative instead of absolute. For example:
+
+lrwxrwxrwx    1 root     root           20 2004-05-06 23:02 libcom_err.so -> /lib/libcom_err.so.2
+
+Needs to be changed to:
+
+lrwxrwxrwx    1 root     root           20 2004-05-06 23:02 libcom_err.so -> ../../lib/libcom_err.so.2
+
+Also, if you choose this method, set the environment variable 'with_sysroot'
+to point to the ABSOLUTE PATH where the crosshurd was done.
+
+Note however that build-depends of cross-gcc and dependencies in generated
+libgcc1 and libstdc++ packages assume that you use dpkg-cross to set up
+your environment, and may be wrong or incomplete if you use alternate methods.
+But probably you don't care.
+
+--
+Nikita V. Youshchenko <yoush at debian.org> - Jun 2004
+Hector Oron Martinez  <hector.oron at gmail.com> - Oct 2006
diff --git a/debian/README.gnat b/debian/README.gnat
new file mode 100644
index 0000000..f352ce6
--- /dev/null
+++ b/debian/README.gnat
@@ -0,0 +1,35 @@
+If you want to develop Ada programs and libraries on Debian, please
+read the Debian Policy for Ada:
+
+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
+are all ABI-compatible.
+
+Starting with gnat-4.2, Debian provides both zero-cost and
+setjump/longjump versions of the run-time library.  The zero-cost
+exception handling mechanism is the default as it provides the best
+performance.  The setjump/longjump exception handling mechanism is new
+and only provided as a static library.  It is necessary to use this
+exception handling mechanism in distributed (annex E) programs.  If
+you wish to use the new sjlj library:
+
+1) call gnatmake with --RTS=sjlj
+2) call gnatbind with -static
+
+Do NOT link your programs with libgnat-4.2.so, because it uses the ZCX
+mechanism.
+
+
+This package also includes small tools covering specific needs.
+
+* When linking objects compiled from both Ada and C sources, you need
+  to use compatible versions of the Ada and C compilers. The
+  /usr/bin/gnatgcc symbolic link targets a version of the C compiler
+  compatible with the default Ada compiler, and may differ from the
+  default C compiler /usr/bin/gcc.
+
+* When packaging Ada sources for Debian, you may want to read the
+  /usr/share/ada/debian_packaging.mk Makefile snippet and/or include
+  it from debian/rules in order to set sensible defaults.
diff --git a/debian/README.libstdc++-baseline.in b/debian/README.libstdc++-baseline.in
new file mode 100644
index 0000000..e771c16
--- /dev/null
+++ b/debian/README.libstdc++-baseline.in
@@ -0,0 +1,2 @@
+The libstdc++ baseline file is a list of symbols exported by the
+libstdc++ library.
diff --git a/debian/README.maintainers b/debian/README.maintainers
new file mode 100644
index 0000000..bb6e9f7
--- /dev/null
+++ b/debian/README.maintainers
@@ -0,0 +1,196 @@
+-*- Outline -*-
+
+Read this file if you are a Debian Developer or would like to become
+one, or if you would like to create your own binary packages of GCC.
+
+* Overview
+
+From the GCC sources, Debian currently builds 3 source packages and
+almost 100 binary packages, using a single set of build scripts.  The
+3 source packages are:
+
+gcc-x.y: C, C++, Fortran, Objective-C and Objective-C++, plus many
+         common libraries like libssp and libgcc.
+gcj-x.y: Java.
+gnat-x.y: Ada.
+
+The way we do this is quite peculiar, so listen up :)
+
+When we build from the gcc-x.y source package, we produce, among many
+others, a gcc-x.y-source binary package that contains the pristine
+upstream tarball and some Debian-specific patches.  Any user can then
+install this package on their Debian system, and will have the full
+souces in /usr/src/gcc-x.y/gcc-<timestamp>.tar.bz2, along with the
+Makefile snippets that unpack and patch them.
+
+The intended use for this package is twofold: (a) allow users to build
+their own cross-compilers, and (b) build the other two packages,
+gcj-x.y and gnat-x.y.
+
+- gcc-x.y requires only a C compiler to build and produces C, C++,
+  Fortran, Go and Objective-C compilers and libraries. It also
+  produces the binary package gcc-x.y-source containing all the
+  sources and patches in a tarball.
+
+- gcj-x.y build-depends on gcc-x.y-source and C++ and Java compilers.
+  Its .orig.tar.bz2 file only contains an empty directory; the real
+  sources from which it builds the binary packages are in
+  gcc-x.y-source.
+
+- gnat-x.y build-depends on gcc-x.y-source and an Ada compiler.  It
+  does not even have an .orig.tar.bz2 package; it is a Debian native
+  package.
+
+The benefits of this split are many:
+
+- bootstrapping a subset of languages is much faster than
+  bootstrapping all languages and libraries (which can take a full
+  week on slow architectures like mips or arm)
+
+- the language maintainers don't have to wait for each other
+
+- for new ports, the absence of a port of, say, gnat-x.y does not
+  block the porting of gcc-x.y.
+
+gcc-x.y-source is also intended for interested users to build
+cross-compiler packages.  Debian cannot provide all possible
+cross-compiler packages (i.e. all possible host, target, language and
+library combinations), so instead tries to facilitate building them.
+
+* The build sequence
+
+As for all other Debian packages, you build GCC by calling
+debian/rules.
+
+The first thing debian/rules does it to look at the top-most entry in
+debian/changelog: this tells it which source package it is building.
+For example, if the first entry in debian/changelog reads:
+
+gcj-4.3 (4.3-20070609-1) unstable; urgency=low
+
+  * Upload as gcj-4.3.
+
+ -- Ludovic Brenta <lbrenta at debian.org>  Tue, 26 Jun 2007 00:26:42 +0200
+
+then, debian/rules will build only the Java binary packages.
+
+The second step is to build debian/control from debian/control.m4 and
+a complex set of rules specified in debian/rules.conf.  The resulting
+control file contains only the binary packages to be built.
+
+The third step is to select which patches to apply (this is done in
+debian/rules.defs), and then to apply the selected patches (see
+debian/rules.patch).  The result of this step is a generated
+debian/patches/series file for use by quilt.
+
+The fourth step is to unpack the GCC source tarball.  This tarball is
+either in the build directory (when building gcc-x.y), or in
+/usr/src/gcc-x.y/gcc-x.y.z.tar.xz (when building the other source
+packages).
+
+The fifth step is to apply all patches to the unpacked sources with
+quilt.
+
+The sixth step is to create a "build" directory, cd into it, call
+../src/configure, and bootstrap the compiler and libraries selected.
+This is in debian/rules2.
+
+The seventh step is to call "make install" in the build directory:
+this installs the compiler and libraries into debian/tmp
+(i.e. debian/tmp/usr/bin/gcc, etc.)
+
+The eighth step is to run the GCC test suite.  This actually takes at
+least as much time as bootstrapping, and you can disable it by setting
+WITHOUT_CHECK to "yes" in the environment.
+
+The ninth step is to build the binary packages, i.e. the .debs.  This
+is done by a set of language- and architecture-dependent Makefile
+snippets in the debian/rules.d/ directory, which move files from the
+debian/tmp tree to the debian/<package> trees.
+
+* Making your own packages
+
+In this example, we will build our own gnat-x.y package.
+
+1) Install gcc-x.y-source, which contains the real sources:
+
+# aptitude install gcc-x.y-source
+
+2) Create a build directory:
+
+$ mkdir gnat-x.y-x.y.z; cd gnat-x.y-x.y.z
+
+3) Checkout from Subversion:
+
+$ svn checkout svn://svn.debian.org/gcccvs/branches/sid/gcc-x.y/debian
+
+4) Edit the debian/changelog file, adding a new entry at the top that
+   starts with "gnat-x.y".
+
+5) Generate the debian/control file, adjusted for gnat:
+
+$ debian/rules control
+
+8) Build:
+
+$ dpkg-buildpackage
+
+* Hints
+
+You need a powerful machine to build GCC.  The larger, the better.
+The build scripts take advantage of as many CPU threads as are
+available in your box (for example: 2 threads on a dual-core amd64; 4
+threads on a dual-core POWER5; 32 threads on an 8-core UltraSPARC T1,
+etc.).
+
+If you have 2 GB or more of physical RAM, you can achieve maximum
+performance by building in a tmpfs, like this:
+
+1) as root, create the new tmpfs:
+
+# mount -t tmpfs -o size=1280m none /home/lbrenta/src/debian/ram
+
+By default, the tmpfs will be limited to half your physical RAM.  The
+beauty of it is that it only consumes as much physical RAM as
+necessary to hold the files in it; deleting files frees up RAM.
+
+2) As your regular user, create the working directory in the tmpfs
+
+$ cp --archive ~/src/debian/gcc-x.y-x.y.z ~/src/debian/ram
+
+3) Build in there.  On my dual-core, 2 GHz amd64, it takes 34 minutes
+   to build gnat, and the tmpfs takes 992 MiB of physical RAM but
+   exceeds 1 GiB during the build.
+
+Note that the build process uses a lot of temporary files.  Your $TEMP
+directory should therefore also be in a ram disk.  You can achieve
+that either by mounting it as tmpfs, or by setting TEMP to point to
+~/src/debian/ram.
+
+Also note that each thread in your processor(s) will run a compiler in
+it and use up RAM.  Therefore your physical memory should be:
+
+Physical_RAM >= 1.2 + 0.4 * Threads (in GiB)
+
+(this is an estimate; your mileage may vary).  If you have less
+physical RAM than recommended, reduce the number of threads allocated
+to the build process, or do not use a tmpfs to build.
+
+* Patching GCC
+
+Debian applies a large number of patches to GCC as part of the build
+process.  It uses quilt but the necessary debian/patches/series is not
+part of the packaging scripts; instead, "debian/rules patch" generates
+this file by looking at debian/control (which is itself generated!),
+debian/changelog and other files.  Then it applies all the patches.
+At this point, you can use quilt as usual:
+
+$ cd ~/src/debian/gcc-x.y
+$ export QUILT_PATCHES=$PWD/debian/patches
+$ quilt series
+
+If you add new patches, remember to add them to the version control
+system too.
+
+-- 
+Ludovic Brenta, 2012-04-02.
diff --git a/debian/README.snapshot b/debian/README.snapshot
new file mode 100644
index 0000000..978bf80
--- /dev/null
+++ b/debian/README.snapshot
@@ -0,0 +1,36 @@
+Debian gcc-snapshot package
+===========================
+
+This package contains  a recent development SNAPSHOT of all files
+contained in the GNU Compiler Collection (GCC).
+
+DO NOT USE THIS SNAPSHOT FOR BUILDING DEBIAN PACKAGES!
+
+This package will NEVER hit the testing distribution. It's used for
+tracking gcc bugs submitted to the Debian BTS in recent development
+versions of gcc.
+
+To use this snapshot, you should set the following environment variables:
+
+	LD_LIBRARY_PATH=/usr/lib/gcc-snapshot/lib:$LD_LIBRARY_PATH
+	PATH=/usr/lib/gcc-snapshot/bin:$PATH
+
+You might also like to use a shell script to wrap up this 
+funcationality, e.g. 
+ 
+place in /usr/local/bin/gcc-snapshot and chmod +x it 
+ 
+----------- snip ----------
+#! /bin/sh
+LD_LIBRARY_PATH=/usr/lib/gcc-snapshot/lib:$LD_LIBRARY_PATH
+PATH=/usr/lib/gcc-snapshot/bin:$PATH
+gcc "$@"
+----------- snip ----------
+
+Make the same for g++, g77, gij, gcj, cpp, ...
+ 
+Don't forget the quotes around the $@ or gcc will not parse it's 
+command line correctly! 
+
+Unset these variables before building Debian packages destined for an
+upload to ftp-master.debian.org.
diff --git a/debian/README.source b/debian/README.source
new file mode 100644
index 0000000..10ec227
--- /dev/null
+++ b/debian/README.source
@@ -0,0 +1,16 @@
+Patches applied to the Debian version of GCC
+--------------------------------------------
+
+Debian specific patches can be found in the debian/patches directory.
+Quilt is used as the patch system.  See /usr/share/doc/quilt/README.source
+for details about quilt.
+
+Patches are applied by calling `debian/rules patch'.  The `series'
+file is constructed on the fly based on the files found in the to
+debian/rules.patch "debian_patches" variable, configure scripts are
+regenerated in the `patch' target. The gcc source is unpacked under
+src/ this needs to be reflected in the patch header.
+
+The source packages gcj-x.y and gnat-x.y do not contain copies of the
+source code but build-depend on the appropriate gcc-x.y-source package
+instead.
diff --git a/debian/README.ssp b/debian/README.ssp
new file mode 100644
index 0000000..9facca7
--- /dev/null
+++ b/debian/README.ssp
@@ -0,0 +1,28 @@
+Stack smashing protection is a feature of GCC that enables a program to
+detect buffer overflows and immediately terminate execution, rather than
+continuing execution with corrupt internal data structures. It uses
+"canaries" and local variable reordering to reduce the likelihood of
+stack corruption through buffer overflows.
+
+Options that affect stack smashing protection:
+
+-fstack-protector
+    Enables protection for functions that are vulnerable to stack
+    smashing, such as those that call alloca() or use pointers.
+
+-fstack-protector-all
+    Enables protection for all functions.
+
+-Wstack-protector
+    Warns about functions that will not be protected. Only active when
+    -fstack-protector has been used.
+
+Applications built with stack smashing protection should link with the
+ssp library by using the option "-lssp" for systems with glibc-2.3.x or
+older; glibc-2.4 and newer versions provide this functionality in libc.
+
+The Debian architectures alpha, hppa, ia64, m68k, mips, mipsel do not
+have support for stack smashing protection.
+
+More documentation can be found at the project's website:
+http://researchweb.watson.ibm.com/trl/projects/security/ssp/
diff --git a/debian/TODO b/debian/TODO
new file mode 100644
index 0000000..a765c08
--- /dev/null
+++ b/debian/TODO
@@ -0,0 +1,50 @@
+(It is recommended to edit this file with emacs' todoo mode)
+Last updated: 2008-05-02
+
+* General
+
+- Clean up the sprawl of debian/rules.  I'm sure there are neater
+  ways to do some of it; perhaps split it up into some more files?
+  Partly done.
+
+- Make debian/rules control build the control file without unpacking
+  the sources or applying patches.  Currently, it unpacks the sources,
+  patches them, creates the control file, and a subsequent
+  dpkg-buildpackage deletes the sources, re-unpacks them, and
+  re-patches them.
+
+- Reorganise debian/rules.defs to decide which packages to build in a
+  more straightforward and less error-prone fashion: (1) start with
+  all languages; override the list of languages depending on the name
+  of the source package (gcc-4.3, gnat-4.3, gdc-4.3, gcj-4.3).  (2)
+  filter the list of languages depending on the target platform; (3)
+  depending on the languages to build, decide on which libraries to
+  build.
+
+o [Ludovic Brenta] Ada
+
+- Done: Link the gnat tools with libgnat.so, instead of statically.
+
+- Done: Build libgnatvsn containing parts of the compiler (version
+  string, etc.) under GNAT-Modified GPL.  Link the gnat tools with it.
+
+- Done: Build libgnatprj containing parts of the compiler (the project
+  manager) under pure GPL.  Link the gnat tools with it.
+
+- Done: Build both the zero-cost and setjump/longjump exceptions
+  versions of libgnat.  In particular, gnat-glade (distributed systems)
+  works best with SJLJ.
+
+- Done: Re-enable running the test suite.
+
+- Add support for building cross-compilers.
+
+- Add support for multilib (not yet supported upstream).
+
+* Fortran
+
+- gfortran man page generation
+
+* Java
+
+- build java-gcj-compat from the gcc source?
diff --git a/debian/acats-killer.sh b/debian/acats-killer.sh
new file mode 100644
index 0000000..29a2550
--- /dev/null
+++ b/debian/acats-killer.sh
@@ -0,0 +1,62 @@
+#! /bin/sh
+
+# on ia64 systems, the acats hangs in unaligned memory accesses.
+# kill these testcases.
+
+pidfile=acats-killer.pid
+
+usage()
+{
+    echo >&2 "usage: `basename $0` [-p <pidfile>] <ada logfile> <next logfile>"
+    exit 1
+}
+
+while [ $# -gt 0 ]; do
+    case $1 in
+    -p)
+	pidfile=$2
+	shift
+	shift
+	;;
+    -*)
+	usage
+	;;
+    *)
+	break
+    esac
+done
+
+[ $# -eq 2 ] || usage
+
+logfile=$1
+stopfile=$2
+interval=30
+
+echo $$ > $pidfile
+
+while true; do
+    if [ -f "$stopfile" ]; then
+	echo "`basename $0`: finished."
+	rm -f $pidfile
+	exit 0
+    fi
+    sleep $interval
+    if [ ! -f "$logfile" ]; then
+	continue
+    fi
+    pids=$(ps aux | awk '/testsuite\/ada\/acats\/tests/ { print $2 }')
+    if [ -n "$pids" ]; then
+	sleep $interval
+        pids2=$(ps aux | awk '/testsuite\/ada\/acats\/tests/ { print $2 }')
+	if [ "$pids" = "$pids2" ]; then
+	    #echo kill: $pids
+	    kill $pids
+	    sleep 1
+            pids2=$(ps aux | awk '/testsuite\/ada\/acats\/tests/ { print $2 }')
+	    if [ "$pids" = "$pids2" ]; then
+	        #echo kill -9: $pids
+	        kill -9 $pids
+	    fi
+	fi
+    fi
+done
diff --git a/debian/ada/confirm_debian_bugs.py b/debian/ada/confirm_debian_bugs.py
new file mode 100644
index 0000000..9a6e155
--- /dev/null
+++ b/debian/ada/confirm_debian_bugs.py
@@ -0,0 +1,1016 @@
+#!/usr/bin/env python
+
+# Helper when migrating bugs from a gnat version to another.
+
+from __future__ import print_function
+import os.path
+import re
+import shutil
+import subprocess
+import tempfile
+
+os.environ ['LC_ALL'] = 'C'
+
+# If == new_version, "reassign" -> "found" and "retitle" -> "fixed".
+# Once the bug tracking system is informed,
+# please update this number.
+old_version = "4.8"
+
+# The current version.
+new_version = "4.9"
+deb_version = \
+    subprocess.check_output (("dpkg", "--status", "gnat-" + new_version)) \
+    .split ("\n") [7] [len ("Version: "):]
+
+# Each bug has its own subdirectory in WORKSPACE.
+# Every bug subdir is removed if the bug is confirmed,
+# and WORKSPACE is removed if empty.
+workspace = tempfile.mkdtemp (suffix = "-gnat-" + deb_version + "-bugs")
+
+def attempt_to_reproduce (bug, make, sources):
+    tmp_dir = os.path.join (workspace, "bug{}".format (bug))
+    os.mkdir (tmp_dir)
+
+    for (name, contents) in sources:
+        with open (os.path.join (tmp_dir, name), "w") as f:
+            f.write (contents)
+
+    path = os.path.join (tmp_dir, "stderr.log")
+    with open (path, "w") as e:
+        status = subprocess.call (make, stderr=e, cwd=tmp_dir)
+    with open (path, "r") as e:
+        stderr = e.read ()
+    return tmp_dir, status, stderr
+
+def reassign_and_remove_dir (bug, tmp_dir):
+    if old_version == new_version:
+        print ("found {} {}".format (bug, deb_version))
+    else:
+        print ("reassign {} {} {}".format (bug, "gnat-" + new_version, deb_version))
+    shutil.rmtree (tmp_dir)
+
+def report (bug, message, output):
+    print ("# {}: {}.".format (bug, message))
+    for line in output.split ("\n"):
+        print ("# " + line)
+
+def report_and_retitle (bug, message, output):
+    report (bug, message, output)
+    if old_version == new_version:
+        print ("fixed {} {}".format (bug, deb_version))
+    else:
+        print ("retitle {} [Fixed in {}] <current title>".format (bug, new_version))
+
+def check_compiles_but_should_not (bug, make, sources):
+    tmp_dir, status, stderr = attempt_to_reproduce (bug, make, sources)
+    if status == 0:
+        reassign_and_remove_dir (bug, tmp_dir)
+    else:
+        report_and_retitle (bug, "now fails to compile (bug is fixed?)", stderr)
+
+def check_reports_an_error_but_should_not (bug, make, sources, regex):
+    tmp_dir, status, stderr = attempt_to_reproduce (bug, make, sources)
+    if status == 0:
+        report_and_retitle (bug, "now compiles (bug is fixed?)", stderr)
+    elif re.search (regex, stderr):
+        reassign_and_remove_dir (bug, tmp_dir)
+    else:
+        report (bug, "still fails to compile, but with a new stderr", stderr)
+
+def check_reports_error_but_forgets_one (bug, make, sources, regex):
+    tmp_dir, status, stderr = attempt_to_reproduce (bug, make, sources)
+    if status == 0:
+        report (bug, "now compiles (?)", stderr);
+    elif re.search (regex, stderr):
+        report_and_retitle (bug, "now reports the error (bug is fixed ?)", stderr)
+    else:
+        reassign_and_remove_dir (bug, tmp_dir)
+
+def check_produces_a_faulty_executable (bug, make, sources, regex, trigger):
+    tmp_dir, status, stderr = attempt_to_reproduce (bug, make, sources)
+    if status != 0:
+        report (bug, "cannot compile the trigger anymore", stderr)
+    else:
+        output = subprocess.check_output ((os.path.join (tmp_dir, trigger),), cwd=tmp_dir)
+        if re.search (regex, output):
+            reassign_and_remove_dir (bug, tmp_dir)
+        else:
+            report_and_retitle (bug, "output of the trigger changed (bug fixed?)", output)
+
+def print_skipped (bug, message):
+    print ("# {} skipped: {}".format (bug, message))
+
+######################################################################
+
+print_skipped (182360, "cannot be reproduced automatically.")
+
+check_reports_an_error_but_should_not (
+    bug = 244936,
+    make = ("gnatmake", "p"),
+    regex = 'p\.ads:3:25: "foo" is hidden within declaration of instance',
+    sources = (
+        ("foo.ads", """generic
+procedure foo;
+"""),
+        ("foo.adb", """procedure foo is
+begin
+   null;
+end foo;
+"""), ("p.ads", """with foo;
+package p is
+   procedure FOO is new foo;        -- OK
+end p;
+""")))
+
+check_compiles_but_should_not (
+    bug = 244970,
+    make = ("gnatmake", "pak5"),
+    sources = (
+        ("pak1.ads", """generic
+package pak1 is
+end pak1;
+"""),
+        ("pak1-pak2.ads", """generic
+package pak1.pak2 is
+end pak1.pak2;
+"""),
+        ("pak5.ads", """with pak1.pak2;
+generic
+   with package new_pak2 is new pak1.pak2;  -- ERROR: illegal use of pak1
+package pak5 is
+end pak5;
+""")))
+
+check_reports_an_error_but_should_not (
+    bug = 246187,
+    make = ("gnatmake", "test_43"),
+    regex = "Error detected at system.ads:152:5",
+    sources = (
+        ("test_43.ads", """package Test_43 is
+  type T1 is private;
+
+private
+
+   type T2 is record
+      a: T1;
+   end record;
+   type T2_Ptr is access T2;
+
+   type T1 is record
+      n: T2_Ptr := new T2;
+   end record;
+
+end Test_43;
+"""),))
+
+check_compiles_but_should_not (
+    bug = 247013,
+    make = ("gnatmake", "test_53"),
+    sources = (
+        ("test_53.ads", """generic
+   type T1 is private;
+package Test_53 is
+   type T2 (x: integer) is new T1;  -- ERROR: x not used
+end Test_53;
+"""),))
+
+check_compiles_but_should_not (
+    bug = 247017,
+    make = ("gnatmake", "test_59"),
+    sources = (
+        ("test_59.adb", """procedure Test_59 is
+
+    generic
+       type T1 (<>) is private;
+    procedure p1(x: out T1);
+
+    procedure p1 (x: out T1) is
+    b: boolean := x'constrained;   --ERROR: not a discriminated type
+    begin
+       null;
+    end p1;
+
+begin
+   null;
+end Test_59;
+"""),))
+
+check_compiles_but_should_not (
+    bug = 247018,
+    make = ("gnatmake", "test_60"),
+    sources = (
+        ("pak1.ads", """package pak1 is
+   generic
+   package pak2 is
+   end pak2;
+end pak1;
+"""),
+        ("test_60.ads", """with pak1;
+package Test_60 is
+   package PAK1 is new pak1.pak2;   --ERROR: illegal reference to pak1
+end Test_60;
+""")))
+
+check_compiles_but_should_not (
+    bug =  247019,
+    make = ("gnatmake", "test_61"),
+    sources = (
+        ("test_61.adb", """procedure Test_61 is
+   procedure p1;
+
+   generic
+   package pak1 is
+      procedure p2 renames p1;
+   end pak1;
+
+   package new_pak1 is new pak1;
+   procedure p1 renames new_pak1.p2;   --ERROR: circular renames
+begin
+   p1;
+end Test_61;
+"""),))
+
+check_reports_an_error_but_should_not (
+    bug = 247564,
+    make = ("gnatmake", "test_70"),
+    regex = "in gnat_to_gnu_entity, at ada/gcc-interface/decl\.c:568",
+    sources = (
+        ("test_70.adb", """procedure Test_70 is
+
+   package pak2 is
+      type t2(b2: boolean) is private;
+   private
+      type t2(b2: boolean) is null record;
+   end pak2;
+
+   package pak1 is
+      type T1(b1 : boolean) is private;
+   private
+      type T1(b1 : boolean) is new pak2.t2(b1);
+   end pak1;
+
+   x: pak1.t1(false);
+   b: boolean;
+begin
+   b := x.b1;
+end Test_70;
+"""),))
+
+check_produces_a_faulty_executable (
+    bug = 247569,
+    make = ("gnatmake", "test_75"),
+    trigger = "test_75",
+    regex = "failed: wrong p1 called",
+    sources = (
+        ("test_75.adb", """with text_io;
+procedure Test_75 is
+   generic
+   package pak1 is
+      type T1 is null record;
+   end pak1;
+
+   generic
+      with package A is new pak1(<>);
+      with package B is new pak1(<>);
+   package pak2 is
+      procedure p1(x: B.T1);
+      procedure p1(x: A.T1);
+   end pak2;
+
+   package body pak2 is
+
+      procedure p1(x: B.T1) is
+      begin
+         text_io.put_line("failed: wrong p1 called");
+      end p1;
+
+      procedure p1(x: A.T1) is
+      begin
+         text_io.put_line("passed");
+      end p1;
+
+      x: A.T1;
+   begin
+      p1(x);
+   end pak2;
+
+   package new_pak1 is new pak1;
+   package new_pak2 is new pak2(new_pak1, new_pak1); -- (1)
+
+begin
+   null;
+end Test_75;
+"""),))
+
+check_compiles_but_should_not (
+    bug = 247570,
+    make = ("gnatmake", "test_76"),
+    sources = (
+        ("test_76.adb", """procedure Test_76 is
+
+   generic
+   procedure p1;
+
+   pragma Convention (Ada, p1);
+
+   procedure p1 is
+   begin
+      null;
+   end p1;
+
+   procedure new_p1 is new p1;
+   pragma Convention (Ada, new_p1);    --ERROR: new_p1 already frozen
+
+begin
+   null;
+end Test_76;
+"""),))
+
+check_produces_a_faulty_executable (
+    bug =  247571,
+    make = ("gnatmake", "test_77"),
+    trigger = "test_77",
+    regex = "failed: wrong p1 called",
+    sources = (
+        ("pak.ads", """package pak is
+   procedure p1;
+   procedure p1(x: integer);
+   pragma export(ada, p1);
+end pak;
+"""),
+        ("pak.adb", """with text_io; use text_io;
+package body pak is
+   procedure p1 is
+   begin
+      put_line("passed");
+   end;
+
+   procedure p1(x: integer) is
+   begin
+      put_line("failed: wrong p1 called");
+   end;
+end pak;
+"""),
+        ("test_77.adb", """with pak;
+procedure Test_77 is
+   procedure p1;
+   pragma import(ada, p1);
+begin
+   p1;
+end Test_77;
+""")))
+
+check_compiles_but_should_not (
+    bug = 248166,
+    make = ("gnatmake", "test_82"),
+    sources = (
+        ("test_82.adb", """procedure Test_82 is
+   package pak1 is
+      type T1 is tagged null record;
+   end pak1;
+
+   package body pak1 is
+      -- type T1 is tagged null record;  -- line 7
+
+      function "=" (x, y : T1'class) return boolean is -- line 9
+      begin
+         return true;
+      end "=";
+
+      procedure proc (x, y : T1'class) is
+         b : boolean;
+      begin
+         b := x = y;     --ERROR: ambiguous "="
+      end proc;
+
+   end pak1;
+
+begin
+   null;
+end Test_82;
+"""),))
+
+check_compiles_but_should_not (
+    bug = 248168,
+    make = ("gnatmake", "test_84"),
+    sources = (
+        ("test_84.adb", """procedure Test_84 is
+   package pak1 is
+      type T1 is abstract tagged null record;
+      procedure p1(x: in out T1) is abstract;
+   end pak1;
+
+   type T2 is new pak1.T1 with null record;
+
+   protected type T3 is
+   end T3;
+
+   protected body T3 is
+   end T3;
+
+   procedure p1(x: in out T2) is    --ERROR: declared after body of T3
+   begin
+      null;
+   end p1;
+
+begin
+   null;
+end Test_84;
+"""),))
+
+check_compiles_but_should_not (
+    bug = 248678,
+    make = ("gnatmake", "test_80"),
+    sources = (
+        ("test_80.ads", """package Test_80 is
+   generic
+      type T1(<>) is private;
+      with function "=" (Left, Right : T1) return Boolean is <>;
+   package pak1 is
+   end pak1;
+
+   package pak2 is
+      type T2 is abstract tagged null record;
+      package new_pak1 is new pak1 (T2'Class);  --ERROR: no matching "="
+   end pak2;
+end Test_80;
+"""),))
+
+check_compiles_but_should_not (
+    bug = 248680,
+    make = ("gnatmake", "test_90"),
+    sources = (
+        ("test_90.adb", """procedure Test_90 is
+   type T1 is tagged null record;
+
+   procedure p1 (x : access T1) is
+      b: boolean;
+      y: aliased T1;
+   begin
+      B := Y'Access = X;     -- ERROR: no matching "="
+--    B := X = Y'Access;     -- line 11: error detected
+   end p1;
+
+begin
+   null;
+end Test_90;
+"""),))
+
+check_compiles_but_should_not (
+    bug = 248681,
+    make = ("gnatmake", "test_91"),
+    sources = (
+        ("test_91.adb", """--  RM 8.5.4(5)
+--  ...the convention of the renamed subprogram shall not be
+--  Intrinsic.
+with unchecked_deallocation;
+procedure Test_91 is
+   generic -- when non generic, we get the expected error
+   package pak1 is
+      type int_ptr is access integer;
+      procedure free(x: in out int_ptr);
+   end pak1;
+
+   package body pak1 is
+      procedure deallocate is new
+        unchecked_deallocation(integer, int_ptr);
+      procedure free(x: in out int_ptr) renames
+        deallocate;  --ERROR: renaming as body can't rename intrinsic
+   end pak1;
+begin
+   null;
+end Test_91;
+"""),))
+
+check_compiles_but_should_not (
+    bug = 248682,
+    make = ("gnatmake", "main"),
+    sources = (
+        ("main.adb", """--  RM 6.3.1(9)
+--  The default calling convention is Intrinsic for ...  an attribute
+--  that is a subprogram;
+
+--  RM 8.5.4(5)
+--  ...the convention of the renamed subprogram shall not be
+--  Intrinsic.
+procedure main is
+   package pak1 is
+      function f1(x: integer'base) return integer'base;
+   end pak1;
+
+   package body pak1 is
+      function f1(x: integer'base) return integer'base renames
+        integer'succ;  --ERROR: renaming as body can't rename intrinsic
+   end pak1;
+begin
+   null;
+end;
+"""),))
+
+check_reports_an_error_but_should_not (
+    bug = 251265,
+    make = ("gnatmake", "test_106"),
+    regex = "in Case_Statement_to_gnu, at ada/gcc-interface/trans.c:2366",
+    sources = (
+        ("test_106.adb", """pragma Ada_83;
+procedure Test_106(x: integer) is
+begin
+   case x is
+      when integer'last +1 => null;
+      when 0               => null; -- line 5
+      when others          => null;
+   end case;
+end Test_106;
+"""),))
+
+check_reports_an_error_but_should_not (
+    bug = 253737,
+    make = ("gnatmake", "test_4"),
+    regex = 'test_4.ads:.:01: "pak2" not declared in "pak1"',
+    sources = (
+        ("parent.ads", """generic
+package parent is
+end parent;
+"""),
+        ("parent-pak2.ads", """generic
+package parent.pak2 is
+end parent.pak2;
+"""),
+        ("parent-pak2-pak3.ads", """generic
+package parent.pak2.pak3 is
+end parent.pak2.pak3;
+"""),
+        ("parent-pak2-pak4.ads", """with parent.pak2.pak3;
+generic
+package parent.pak2.pak4 is
+   package pak3 is new parent.pak2.pak3;
+end parent.pak2.pak4;
+"""),
+        ("pak1.ads", """with parent;
+package pak1 is new parent;
+"""),
+        ("pak6.ads", """with parent.pak2;
+with pak1;
+package pak6 is new pak1.pak2;
+"""),
+        ("test_4.ads", """with parent.pak2.pak4;
+with pak6;
+package Test_4 is new pak6.pak4;
+""")))
+
+check_compiles_but_should_not (
+    bug = 269948,
+    make = ("gnatmake", "test_119"),
+    sources = (
+        ("test_119.ads", """--  RM 3.9.3/11 A generic actual subprogram shall not be an abstract
+--  subprogram.  works OK if unrelated line (A) is commented out.
+package Test_119 is
+   generic
+      with function "=" (X, Y : integer) return Boolean is <>;   -- Removing this allows GCC to detect the problem.
+   package pak1 is
+      function "=" (X, Y: float) return Boolean is abstract;
+      generic
+         with function Equal (X, Y : float) return Boolean is "=";  --ERROR:
+      package pak2 is
+      end pak2;
+   end pak1;
+
+   package new_pak1 is new pak1;
+   package new_pak2 is new new_pak1.pak2;
+end Test_119;
+"""),))
+
+check_compiles_but_should_not (
+    bug = 269951,
+    make = ("gnatmake", "test_118"),
+    sources = (
+        ("pak1.ads", """generic
+package pak1 is
+end pak1;
+"""),
+        ("pak1-foo.ads", """generic
+package pak1.foo is
+end pak1.foo;
+"""),
+        ("test_118.ads", """with pak1.foo;
+package Test_118 is
+   package pak3 is
+      foo: integer;
+   end pak3;
+   use pak3;
+
+   package new_pak1 is new pak1;
+   use new_pak1;
+
+   x: integer := foo;       -- ERROR: foo hidden by use clauses
+end Test_118;
+"""),))
+
+# As long as 24:14 is detected, it inhibits detection of 25:21.
+check_reports_error_but_forgets_one (
+    bug = 276224,
+    make = ("gnatmake", "test_121"),
+    regex = "test_121\.adb:25:21: dynamically tagged expression not allowed",
+    sources = (
+        ("test_121.adb", """--  If the expected type for an expression or name is some specific
+--  tagged type, then the expression or name shall not be dynamically
+--  tagged unless it is a controlling operand in a call on a
+--  dispatching operation.
+procedure Test_121 is
+   package pak1 is
+      type T1 is tagged null record;
+      function f1 (x1: T1) return T1;
+   end pak1;
+
+   package body pak1 is
+      function f1 (x1: T1) return T1 is
+      begin
+         return x1;
+      end;
+   end pak1;
+   use pak1;
+
+   type T2 is record
+      a1: T1;
+   end record;
+
+   z0: T1'class := T1'(null record);
+   z1: T1 := f1(z0);           -- ERROR: gnat correctly rejects
+   z2: T2 := (a1 => f1(z0));   -- ERROR: gnat mistakenly allows
+begin
+   null;
+end Test_121;
+"""),))
+
+check_reports_an_error_but_should_not (
+    bug = 276227,
+    make = ("gnatmake", "test_124"),
+    regex = 'test_124\.ads:6:35: size for "T_arr_constrained" too small, minimum allowed is 256',
+    sources = (
+        ("test_124.ads", """package Test_124 is
+   type T is range 1 .. 32;
+   type T_arr_unconstrained is array (T range <>) of boolean;
+   type T_arr_constrained is new T_arr_unconstrained (T);
+   pragma pack (T_arr_unconstrained);
+   for T_arr_constrained'size use 32;
+end Test_124;
+"""),))
+
+check_reports_an_error_but_should_not (
+    bug = 278687,
+    make = ("gnatmake", "test_127"),
+    regex = 'test_127\.adb:1.:21: expected type "T2" defined at line .',
+    sources = (
+        ("test_127.ads", """-- The second parameter of T2'Class'Read is of type T2'Class,
+-- which should match an object of type T3, which is derived
+-- from T2.
+package test_127 is
+   pragma elaborate_body;
+end test_127;
+"""),
+        ("test_127.adb", """with ada.streams;
+package body test_127 is
+   type T1 is access all ada.streams.root_stream_type'class;
+   type T2 is tagged null record;
+   type T3 is new T2 with null record;
+
+   x: T1;
+   y: T3;
+begin
+   T2'class'read(x, y);
+end test_127;
+""")))
+
+check_compiles_but_should_not (
+    bug = 278831,
+    make = ("gnatmake", "test_128"),
+    sources = (
+        ("test_128.ads", """package Test_128 is
+   package inner is
+   private
+      type T1;
+   end inner;
+   type T1_ptr is access inner.T1; -- line  9 ERROR: gnat mistakenly accepts
+end Test_128;
+"""),
+        ("test_128.adb", """package body test_128 is
+   package body inner is
+      type T1 is new Integer;
+   end inner;
+end Test_128;
+""")))
+
+# Note that we also check the absence of the next inhibited message.
+check_reports_an_error_but_should_not (
+    bug = 279893,
+    make = ("gnatmake", "test_129"),
+    regex = """^gcc-[0-9.]+ -c test_129\.ads
+test_129\.ads:1.:49: designated type of actual does not match that of formal "T2"
+test_129\.ads:1.:49: instantiation abandoned
+gnatmake: "test_129\.ads" compilation error$""",
+    sources = (
+        ("pak1.ads", """-- legal instantiation rejected; illegal instantiation accepted
+-- adapted from John Woodruff c.l.a. post
+
+generic
+   type T1 is private;
+package pak1 is
+   subtype T3 is T1;
+end pak1;
+"""),
+        ("pak2.ads", """with pak1;
+generic
+   type T2 is private;
+package pak2 is
+   package the_pak1 is new pak1 (T1 => T2);
+end pak2;
+"""),
+        ("pak2-pak3.ads", """generic
+   type T2 is access the_pak1.T3;
+package pak2.pak3 is
+end pak2.pak3;
+"""),
+        ("test_129.ads", """with pak1;
+with pak2.pak3;
+package Test_129 is
+
+   type T4 is null record;
+   type T5 is null record;
+   subtype T3 is T5; -- line 9: triggers the bug at line 16
+
+   type T4_ptr is access T4;
+   type T5_ptr is access T5;
+
+   package new_pak2 is new pak2 (T2 => T4);
+   package new_pak3a is new new_pak2.pak3(T2 => T4_ptr);  -- line 15: Legal
+   package new_pak3b is new new_pak2.pak3(T2 => T5_ptr);  -- line 16: Illegal
+end Test_129;
+""")))
+
+print ("# Please ignore the gnatlink message.")
+check_reports_an_error_but_should_not (
+    bug = 280939,
+    make = ("gnatmake", "test_130"),
+    regex = "test_130\.adb:\(\.text\+0x5\): undefined reference to \`p2\'",
+    sources = (
+        ("pak1.ads", """--  RM 10.1.5(4) "the pragma shall have an argument that is a name
+--  denoting that declaration."
+--  RM 8.1(16) "The children of a parent library unit are inside the
+--  parent's declarative region."
+
+package pak1 is
+   pragma Pure;
+end pak1;
+"""),
+        ("pak1-p2.ads", """procedure pak1.p2;
+pragma Pure (p2);          -- ERROR: need expanded name
+pragma Import (ada, p2);   -- ERROR: need expanded name
+pragma Inline (p2);        -- ERROR: need expanded name
+"""),
+        ("test_130.adb", """with Pak1.P2;
+procedure Test_130 is
+begin
+   Pak1.P2;
+end Test_130;
+""")))
+
+check_compiles_but_should_not (
+    bug = 283833,
+    make = ("gnatmake", "test_132"),
+    sources = (
+        ("pak1.ads", """-- RM 8.5.4(5)  the convention of the renamed subprogram shall not
+-- be Intrinsic, if the renaming-as-body completes that declaration
+-- after the subprogram it declares is frozen.
+
+-- RM 13.14(3)  the end of the declaration of a library package
+-- causes freezing of each entity declared within it.
+
+-- RM 6.3.1(7)  the default calling convention is Intrinsic for
+-- any other implicitly declared subprogram unless it is a
+-- dispatching operation of a tagged type.
+
+package pak1 is
+   type T1 is null record;
+   procedure p1 (x1: T1);
+   type T2 is new T1;
+end pak1;
+"""),
+        ("pak1.adb", """package body Pak1 is
+   procedure P1 (X1 : T1) is begin null; end P1;
+end Pak1;
+"""),
+        ("test_132.ads", """with pak1;
+package Test_132 is
+   procedure p2 (x2: pak1.T2);
+end Test_132;
+"""),
+        ("test_132.adb", """package body Test_132 is
+   procedure p2 (x2: pak1.T2) renames pak1.p1; --ERROR: can't rename intrinsic
+end Test_132;
+""")))
+
+check_compiles_but_should_not (
+    bug = 283835,
+    make = ("gnatmake", "test_133"),
+    sources = (
+        ("test_133.ads", """package Test_133 is
+   package pak1 is
+      type T1 is null record;
+   end pak1;
+
+   package pak2 is
+      subtype boolean is standard.boolean;
+      function "=" (x, y: pak1.T1) return boolean;
+   end pak2;
+
+   use pak1, pak2;
+
+   x1: pak1.T1;
+   b1: boolean := x1 /= x1;  -- ERROR: ambigous  (gnat misses)
+   --  b2: boolean := x1 = x1;   -- ERROR: ambigous
+end Test_133;
+"""),
+        ("test_133.adb", """package body test_133 is
+   package body pak2 is
+      function "=" (x, y: pak1.T1) return boolean is
+      begin
+         return true;
+      end "=";
+   end pak2;
+end test_133;
+""")))
+
+check_compiles_but_should_not (
+    bug = 416979,
+    make = ("gnatmake", "pak1"),
+    sources = (
+        ("pak1.ads", """package pak1 is
+   -- RM 7.3(13), 4.9.1(1)
+   -- check that discriminants statically match
+   type T1(x1: integer) is tagged null record;
+   x2: integer := 2;
+   x3: constant integer := x2;
+   type T2 is new T1 (x2) with private;
+   type T3 is new T1 (x3) with private;
+private
+   type T2 is new T1 (x2) with null record;  --ERROR: nonstatic discriminant
+   type T3 is new T1 (x3) with null record;  --ERROR: nonstatic discriminant
+end pak1;
+"""),))
+
+# Once the bug box disappears, check the executable.
+# check_produces_a_faulty_executable (
+check_reports_an_error_but_should_not (
+    bug = 427108,
+    make = ("gnatmake", "test1"),
+#     regex = "FAILED",
+    regex = "Program_Error exp_disp.adb:8462 explicit raise",
+    sources = (
+        ("test1.adb", """-- "For the execution of a call on an inherited subprogram,
+-- a call on the corresponding primitive subprogram of the
+-- parent or progenitor type is performed; the normal conversion
+-- of each actual parameter to the subtype of the corresponding
+-- formal parameter (see 6.4.1) performs any necessary type
+-- conversion as well."
+
+with Text_IO; use Text_IO;
+procedure Test1 is
+   package Pak1 is
+      type T1 is tagged null record;
+      function Eq(X, Y: T1) return Boolean renames "=";
+   end Pak1;
+
+   package Pak2 is
+      type T2 is new Pak1.T1 with record
+         F1: Integer;
+      end record;
+   end Pak2;
+
+   Z1: Pak2.T2 := (F1 => 1);
+   Z2: Pak2.T2 := (F1 => 2);
+begin
+   if Pak2.Eq(Z1, Z2) = Pak1.Eq(Pak1.T1(Z1), Pak1.T1(Z2))
+      then Put_Line("PASSED");
+      else Put_Line("FAILED");
+   end if;
+end Test1;
+"""),))
+
+print_skipped (559447, "not handled by this script")
+
+print_skipped (569343, "not handled by this script")
+
+check_reports_an_error_but_should_not (
+    bug = 660698,
+    make = ("gnatmake", "proc.adb"),
+    regex = 'proc\.adb:17:28: there is no applicable operator "And" for type "Standard\.Integer"',
+    sources = (
+        ("proc.adb", """procedure Proc is
+   package P1 is
+      type T is new Integer;
+      function "and" (L, R : in Integer) return T;
+   end P1;
+   package body P1 is
+      function "and" (L, R : in Integer) return T is
+         pragma Unreferenced (L, R);
+      begin
+         return 0;
+      end "and";
+   end P1;
+   use type P1.T;
+   package P2 is
+      use P1;
+   end P2;
+   G : P1.T := Integer'(1) and Integer'(2);
+begin
+   null;
+end Proc;
+"""), ))
+
+check_produces_a_faulty_executable (
+    bug = 737225,
+    make = ("gnatmake", "round_decimal"),
+    trigger = "round_decimal",
+    regex = "Bug reproduced.",
+    sources = (
+        ("round_decimal.adb", """with Ada.Text_IO;
+
+procedure Round_Decimal is
+
+   --  OJBECTIVE:
+   --    Check that 'Round of a decimal fixed point type does round
+   --    away from zero if the operand is of a decimal fixed point
+   --    type with a smaller delta.
+
+   Unexpected_Compiler_Bug : exception;
+
+   type Milli is delta 0.001 digits 9;
+   type Centi is delta 0.01 digits 9;
+
+   function Rounded (Value : Milli) return Centi;
+   --  Value, rounded using Centi'Round
+
+   function Rounded (Value : Milli) return Centi is
+   begin
+      return Centi'Round (Value);
+   end Rounded;
+
+begin
+   --  Operands used directly:
+   if not (Milli'Round (0.999) = Milli'(0.999)
+             and
+           Centi'Round (0.999) = Centi'(1.0)
+             and
+           Centi'Round (Milli'(0.999)) = Centi'(1.0))
+   then
+      raise Unexpected_Compiler_Bug;
+   end if;
+   if Rounded (Milli'(0.999)) /= Centi'(1.0) then
+      Ada.Text_IO.Put_Line ("Bug reproduced.");
+   end if;
+end Round_Decimal;
+"""),))
+
+# Even if an error is reported, the problem with the atomic variable
+# should be checked.
+check_reports_an_error_but_should_not (
+    bug = 643663,
+    make = ("gnatmake", "test"),
+    regex = 'test\.adb:4:25: no value supplied for component "Reserved"',
+    sources = (
+        ("pkg.ads", """package Pkg is
+   type Byte is mod 2**8;
+   type Reserved_24 is mod 2**24;
+
+   type Data_Record is
+      record
+         Data : Byte;
+         Reserved : Reserved_24;
+      end record;
+
+   for Data_Record use
+      record
+         Data at 0 range 0 .. 7;
+         Reserved at 0 range 8 .. 31;
+      end record;
+
+   for Data_Record'Size use 32;
+   for Data_Record'Alignment use 4;
+
+   Data_Register : Data_Record;
+   pragma Atomic (Data_Register);
+end Pkg;
+"""), ("test.adb", """with Pkg;
+procedure Test is
+begin
+   Pkg.Data_Register := (
+      Data => 255,
+      others => <> -- expected error: no value supplied for component "Reserved"
+   );
+end Test;
+""")))
+
+try:
+    os.rmdir (workspace)
+except:
+    print ("Some unconfirmed, not removing directory {}.".format (workspace))
diff --git a/debian/ada/debian_packaging.mk b/debian/ada/debian_packaging.mk
new file mode 100644
index 0000000..b0329b4
--- /dev/null
+++ b/debian/ada/debian_packaging.mk
@@ -0,0 +1,91 @@
+# Common settings for Ada Debian packaging.
+#
+#  Copyright (C) 2012-2014 Nicolas Boulenguez <nicolas at debian.org>
+#
+#  This program is free software: you can redistribute it and/or
+#  modify it under the terms of the GNU General Public License as
+#  published by the Free Software Foundation, either version 3 of the
+#  License, or (at your option) any later version.
+#  This program 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 program. If not, see <http://www.gnu.org/licenses/>.
+#
+
+# dpkg-dev (>= 1.16.1) provides /usr/share/dpkg/default.mk (or the
+# more specific buildflags.mk) to set standard variables like
+# DEB_HOST_MULTIARCH, CFLAGS, LDFLAGS...) according to the build
+# environment (DEB_BUILD_OPTIONS...) and the policy (hardening
+# flags...).
+# You must include it before this file.
+ifeq (,$(findstring /usr/share/dpkg/buildflags.mk,$(MAKEFILE_LIST)))
+  $(error Please include /usr/share/dpkg/default.mk (or the more specific \
+          buildflags.mk) before $(lastword $(MAKEFILE_LIST)))
+endif
+
+# Ada is not in dpkg-dev flag list. We add a sensible default here.
+
+# Format checking is meaningless for Ada sources.
+ADAFLAGS := $(filter-out -Wformat -Werror=format-security, $(CFLAGS))
+
+ifdef DPKG_EXPORT_BUILDFLAGS
+  export ADAFLAGS
+endif
+
+# Avoid dpkg-shlibdeps warning about depending on a library from which
+# no symbol is used, see http://wiki.debian.org/ToolChain/DSOLinking.
+# Gnatmake users must upgrade to >= 4.6.4-1 to circumvent #680292.
+LDFLAGS += -Wl,--as-needed
+
+# Warn during build time if undefined symbols.
+LDFLAGS += -Wl,-z,defs
+
+ifdef DPKG_EXPORT_BUILDFLAGS
+  export LDFLAGS
+endif
+
+######################################################################
+# C compiler version
+
+# GCC binaries must be compatible with GNAT at the binary level, use
+# the same version. This setting is mandatory for every upstream C
+# compilation ("export CC" is enough for dh_auto_configure with a
+# normal ./configure).
+
+CC := gnatgcc
+
+######################################################################
+# Options for gprbuild/gnatmake.
+
+# Let Make delegate parallelism to gnatmake/gprbuild.
+.NOTPARALLEL:
+
+# Use all processors unless parallel=n is set in DEB_BUILD_OPTIONS.
+# http://www.debian.org/doc/debian-policy/ch-source.html#s-debianrules-options
+BUILDER_JOBS := $(filter parallel=%,$(DEB_BUILD_OPTIONS))
+ifneq (,$(BUILDER_JOBS))
+  BUILDER_JOBS := $(subst parallel=,,$(BUILDER_JOBS))
+else
+  BUILDER_JOBS := $(shell getconf _NPROCESSORS_ONLN)
+endif
+BUILDER_OPTIONS += -j$(BUILDER_JOBS)
+
+BUILDER_OPTIONS += -R
+# Avoid lintian warning about setting an explicit library runpath.
+# http://wiki.debian.org/RpathIssue
+
+BUILDER_OPTIONS += -v
+# Make exact command lines available for automatic log checkers.
+
+BUILDER_OPTIONS += -eS
+# Tell gnatmake to echo commands to stdout instead of stderr, avoiding
+# buildds thinking it is inactive and killing it.
+# -eS is the default on gprbuild.
+
+# You may be interested in
+# -s  recompile if compilation switches have changed
+#     (bad default because of interactions between -amxs and standard library)
+# -we handle warnings as errors
+# -vP2 verbose when parsing projects.
diff --git a/debian/bin-wrapper.in b/debian/bin-wrapper.in
new file mode 100644
index 0000000..f8ca63b
--- /dev/null
+++ b/debian/bin-wrapper.in
@@ -0,0 +1,11 @@
+#! /bin/sh
+
+# some build tools are linked with a new libstdc++ and fail to run
+# when building libstdc++.
+
+if [ -n "$LD_LIBRARY_PATH" ]; then
+  ma=$(dpkg-architecture -qDEB_BUILD_MULTIARCH)
+  export LD_LIBRARY_PATH="/lib/$ma:/usr/lib/$ma:/lib:/usr/lib:$LD_LIBRARY_PATH"
+fi
+
+exec /usr/bin/$(basename $0) "$@"
diff --git a/debian/changelog b/debian/changelog
new file mode 100644
index 0000000..2cf89f4
--- /dev/null
+++ b/debian/changelog
@@ -0,0 +1,12762 @@
+gcc-5 (5.3.1-4) UNRELEASED; urgency=medium
+
+  * 
+
+ -- Matthias Klose <doko at debian.org>  Tue, 08 Dec 2015 15:57:06 +0100
+
+gcc-5 (5.3.1-3) unstable; urgency=medium
+
+  * Update to SVN 20151207 (r231361, 5.3.1) from the gcc-5-branch.
+  * Remove upstreamed chunks from the ada-kfreebsd patch.
+
+ -- Matthias Klose <doko at debian.org>  Tue, 08 Dec 2015 02:10:51 +0100
+
+gcc-5 (5.3.1-2) unstable; urgency=medium
+
+  * Update to SVN 20151206 (r231339, 5.3.1) from the gcc-5-branch.
+  * Re-enable building gdc/libphobos, fixing the profiled build.
+  * Fix PR sanitizer/67899, build failure on sparc/sparc64.
+
+ -- Matthias Klose <doko at debian.org>  Sun, 06 Dec 2015 19:15:46 +0100
+
+gcc-5 (5.3.1-1) unstable; urgency=medium
+
+  * Update to SVN 20151205 (r231314, 5.3.1) from the gcc-5-branch.
+
+ -- Matthias Klose <doko at debian.org>  Sat, 05 Dec 2015 20:45:53 +0100
+
+gcc-5 (5.3.0-3) unstable; urgency=medium
+
+  * Update libgcc symbols file.
+  * Restore libgcc.symbols.aebi.
+  * Disabled profiled bootstraps for backports.
+
+ -- Matthias Klose <doko at debian.org>  Sat, 05 Dec 2015 07:50:48 +0100
+
+gcc-5 (5.3.0-1) experimental; urgency=medium
+
+  * GCC 5.3 release.
+    - Fix PR libstdc++/65142 (CVE-2015-5276).
+  * Update gdc to the gcc-5 branch 20151130.
+  * Enable the profiled bootstrap on amd64, arm64, armel armhf, i386, powerpc,
+    ppc64, ppc64el, s390x, x32 (excluding builds from the Linaro branch).
+  * Move test summary into the gcc-test-results package.
+  * Simplify libatomic, libcilkrts, libgcc, libgfortran, libgomp, libitm,
+    libmpx, libquadmath symbols files using versioned symbol references.
+    Closes: #806784.
+  * Only build the hppa64 cross compiler when either building the native compiler,
+    or when cross building the native compiler. Closes: #806479.
+  * Configure staged build with --enable-linker-build-id.
+
+ -- Matthias Klose <doko at debian.org>  Fri, 04 Dec 2015 12:01:04 +0100
+
+gcc-5 (5.2.1-27) unstable; urgency=medium
+
+  * Update to SVN 20151129 (r231053, 5.2.1) from the gcc-5-branch.
+  * Don't strip cc1plus when shipping with unstripped frontends.
+  * Relax libgnatvsn5-dev-*-cross and libgnatprj5-dev-*-cross dependencies
+    on gnat-5-*-linux-gnu.
+  * Fix setting the explicit libc dependency for cross builds.
+  * Don't build m4-nofpu multilibs on sh4, install the default multilib
+    into the standard location.
+  * Stop building gnat on mips64, see https://gcc.gnu.org/PR65337 (#806370).
+  * Update the patch for PR go/67508 and re-enable Go on sparc and sparc64.
+  * Fix gnat sparc/sparc64 architecture detection.
+  * Update libgcc and libstdc++ symbols files.
+  * Don't ship the gcov tools in the gcc-hppa64-linux-gnu package.
+  * Run the autoconf generation in parallel.
+  * Add --enable-default-pie option to GCC configure, taken from the trunk.
+  * Enable gnat for m68k cross builds.
+  * Link gnat tools, gnat libs and libgccjit with the defaults LDFLAGS.
+  * Skip non-default multilib and libstdc++-v3 debug builds in bootstrap builds.
+  * Ship an empty debian/rules.parameters in the gcc-5-source package.
+
+ -- Matthias Klose <doko at debian.org>  Sun, 29 Nov 2015 23:48:58 +0100
+
+gcc-5 (5.2.1-26) unstable; urgency=medium
+
+  * Update to SVN 20151125 (r230897, 5.2.1) from the gcc-5-branch.
+  * Fix the rtlibs stage build. Closes: #806186.
+  * Fix packaging the cross libphobos package.
+  * Build the hppa64 cross compiler on x86 architectures.
+  * gcc-5-hppa64-linux-gnu: Stop providing unversioned tools using
+    alternatives. Build a gcc-hppa64-linux-gnu package instead.
+  * Split out a gcc-5-test-results package from g++-5, allowing a post
+    build analysis, and reducing the size of the g++-5 package.
+
+ -- Matthias Klose <doko at debian.org>  Wed, 25 Nov 2015 20:33:08 +0100
+
+gcc-5 (5.2.1-25) unstable; urgency=medium
+
+  * Update to SVN 20151123 (r230734, 5.2.1) from the gcc-5-branch.
+  * Fix libgcc4-dbg dependency on libgcc4. Closes: #805839.
+  * Fix building epoch prefixed cross packages.
+
+ -- Matthias Klose <doko at debian.org>  Mon, 23 Nov 2015 05:48:00 +0100
+
+gcc-5 (5.2.1-24) unstable; urgency=medium
+
+  * Update to SVN 20151121 (r230703, 5.2.1) from the gcc-5-branch.
+  * Fix PR libstdc++/56158, taken from the trunk. Closes: #804521. LP: #1514309.
+  * Don't try to build a gnat cross compiler when there is no gnat compiler
+    for the build architecture.
+  * Update gnat build dependencies for backports.
+  * Parallelize building documentation and parallelize the packaging step.
+  * Update the Linaro support to the 5-2015.11 snapshot.
+
+ -- Matthias Klose <doko at debian.org>  Sat, 21 Nov 2015 11:22:16 +0100
+
+gcc-5 (5.2.1-23) unstable; urgency=medium
+
+  * Update to SVN 20151028 (r229478, 5.2.1) from the gcc-5-branch.
+
+  [ Matthias Klose ]
+  * Update the Linaro support to the 5-2015.10 snapshot.
+  * gcj: On ppc64el, use the same jvm archdir name as for openjdk (ppc64le).
+  * gcj: Fix priority of java alternatives. Closes: #803055.
+  * gnat-5: Reintroduce the unversioned gnatgcc name. Closes: #802838.
+
+  [ Aurelien Jarno ]
+  * Replace proposed patch for PR rtl-optimization/67736 by the one
+    committed on trunk.
+
+ -- Matthias Klose <doko at debian.org>  Wed, 28 Oct 2015 10:36:54 +0100
+
+gcc-5 (5.2.1-22) unstable; urgency=medium
+
+  * Update to SVN 20151010 (r228681, 5.2.1) from the gcc-5-branch.
+    - Fix PR libstdc++/65913, PR libstdc++/67173, PR libstdc++/67747,
+      PR c/67730, PR middle-end/67563, PR lto/67699, PR tree-optimization/67821,
+      PR debug/58315.
+
+  [ Matthias Klose ]
+  * Restore the work around for PR libstdc++/65913, still needed at least
+    for powerpc.
+  * Rename gcc-5-hppa64 to gcc-5-hppa64-linux-gnu, update (build) dependency
+    on binutils. Closes: #800563.
+  * Adjust setting DH_COMPAT for dh_movefiles with updated debhelper supporting
+    globbing of arguments. Closes: #800250.
+  * Build-depend on gnat-5 instead of gnat-4.9.
+
+  [ Aurelien Jarno ]
+  * Do not Use --with-mips-plt on mips and mipsel. Closes: #799811.
+
+ -- Matthias Klose <doko at debian.org>  Sat, 10 Oct 2015 22:17:09 +0200
+
+gcc-5 (5.2.1-21) unstable; urgency=medium
+
+  * Update to SVN 20151003 (r228449, 5.2.1) from the gcc-5-branch.
+  * Fix building gnat. Closes: #800781.
+
+ -- Matthias Klose <doko at debian.org>  Sat, 03 Oct 2015 17:28:45 +0200
+
+gcc-5 (5.2.1-20) unstable; urgency=medium
+
+  * Update to SVN 20151002 (r228373, 5.2.1) from the gcc-5-branch.
+  * Fix packaging the ada cross library packages.
+
+ -- Matthias Klose <doko at debian.org>  Fri, 02 Oct 2015 10:24:38 +0200
+
+gcc-5 (5.2.1-19) unstable; urgency=medium
+
+  * Update to SVN 20150930 (r228302, 5.2.1) from the gcc-5-branch.
+    - Fix PR ipa/66424. Closes: #800318.
+
+  [ Matthias Klose ]
+  * Update the Linaro support to the 5-2015.09 snapshot.
+  * Fix PR libstdc++/67707, taken from the trunk. LP: #1499564.
+  * Ship libgcj.spec in gcj-5 instead of gcj-5-jdk. Closes: #800010.
+  * gcj-5: Suggest gcj-5-jdk.
+  * Fix base dependency for ada cross library packages.
+  * Add ${shlibs:Depends} for libgnatvsn and libgnatprj.
+  * Link lrealpath.o into libgnatprj. Closes: #800045.
+  * libgnat{svn,prj}-dev: For cross builds, move adainclude and adalib files
+    into the gcc libdir.
+  * Default to POWER8 on ppc64el.
+  * armv8: Fix slt lda missing conditional code (taken from the trunk).
+  * Fix lintian pre-depends-directly-on-multiarch-support warnings.
+
+  [ Aurelien Jarno ]
+  * Apply proposed patch for PR rtl-optimization/67736 when building for
+    mips64 or mips64el. Closes: #800321.
+
+ -- Matthias Klose <doko at debian.org>  Wed, 30 Sep 2015 20:36:50 +0200
+
+gcc-5 (5.2.1-18) unstable; urgency=medium
+
+  * Update to SVN 20150922 (r228023, 5.2.1) from the gcc-5-branch.
+
+  [ Matthias Klose ]
+  * gcc-5-plugin-dev: Depend on libmpc-dev. Closes: #798997.
+  * Fix PR libstdc++/65913, taken from the trunk. Closes: #797577.
+
+  [ YunQiang Su ]
+  * Build again the gnat-5-sjlj package. Closes: #798782.
+  * Fix gnat cross builds, and cross building gnat.
+
+ -- Matthias Klose <doko at debian.org>  Tue, 22 Sep 2015 23:15:17 +0200
+
+gcc-5 (5.2.1-17) unstable; urgency=medium
+
+  * Update to SVN 20150911 (r227671, 5.2.1) from the gcc-5-branch.
+    - Fix PR c++/67369, ICE on valid code. LP: #1489173.
+
+  [ Matthias Klose ]
+  * Build-depend on linux-libc-dev [m68k] for gcc and gcc-snapshot builds.
+    Closes: #796906.
+  * Don't ignore anymore bootstrap comparison failures on sh4. Closes: #796939.
+  * Fix stage1 cross build for KFreeBSD. Closes: #796901.
+  * libgo: Fix PR go/67508, rewrite lfstack packing/unpacking to look more
+    like that in Go (Michael Hudson). LP: #1472650.
+  * Fix PR target/67143 (AArch64), ICE on valid code. LP: #1481333.
+
+  [ Aurelien Jarno ]
+  * Use --with-mips-plt on mips*.
+  * Build for R2 ISA on mips, mips64 and mips64el.
+  * Optimize for R2 ISA on mipsel.
+  * Only apply mips-fix-loongson2f-nop on mipsel.
+
+  [ YunQiang Su ]
+  * Fix running the acats tests. Closes: #798531.
+
+ -- Matthias Klose <doko at debian.org>  Fri, 11 Sep 2015 03:17:20 +0200
+
+gcc-5 (5.2.1-16) unstable; urgency=medium
+
+  * Update to SVN 20150903 (r227431, 5.2.1) from the gcc-5-branch.
+    - Backport the filesystem TS library.
+  * libstdc++-dev: Install libstdc++fs.a.
+  * Again, configure with --enable-targets=powerpcle-linux on ppc64el.
+  * Apply proposed patch for PR target/67211 (ppc64el).
+  * libgo-dev: Install libgolibbegin.a.
+  * Apply proposed patch for PR target/67280 (ARM). LP: #1482320.
+
+ -- Matthias Klose <doko at debian.org>  Thu, 03 Sep 2015 12:16:15 +0200
+
+gcc-5 (5.2.1-15) unstable; urgency=medium
+
+  * Update to SVN 20150808 (r226731, 5.2.1) from the gcc-5-branch.
+  * Adjust libstdc++-breaks: Break libantlr-dev instead of antlr;
+    adjust libreoffice version (closes: #794203), drop xxsd break (see
+    #793289), remove cython breaks (closes: #794511), add breaks for
+    packages built using cython (chemps2, fiona, guiqwt, htseq, imposm,
+    pysph, pytaglib, python-scipy, python-sfml, rasterio).
+  * Ignore missing libstdc++ symbols on sparc64 (work around #792204).
+
+ -- Matthias Klose <doko at debian.org>  Sat, 08 Aug 2015 11:18:24 +0200
+
+gcc-5 (5.2.1-14) unstable; urgency=high
+
+  * Fix libstdc++6 breaks.
+
+ -- Matthias Klose <doko at debian.org>  Fri, 31 Jul 2015 04:12:08 +0200
+
+gcc-5 (5.2.1-13) unstable; urgency=high
+
+  * Upload to unstable (https://wiki.debian.org/GCC5). See also
+    https://lists.debian.org/debian-devel-announce/2015/07/msg00000.html
+  * Update to SVN 20150730 (r226411, 5.2.1) from the gcc-5-branch.
+    - Fix PR libstdc++/67015. Closes: #793784.
+  * Fix version macros in the plugin-header.h header. Closes: #793478.
+  * libstdc++6: Add breaks for issues tagged with gcc-pr66145.
+  * Add libcpprest2.4 to libstdc++6 breaks. Closes: #784655.
+  * Fix PR c++/66857, taken from the trunk.
+  * Ignore differences in gcc/real.o in the bootstrap build for
+    sh*-*linux-gnu targets.  According to PR 67002, "A rare indeterminacy
+    of the register choice.  Both codes are valid.  It seems very hard to
+    find where has this indeterminacy come from". Suggested by Adrian
+    Glaubitz.
+
+ -- Matthias Klose <doko at debian.org>  Thu, 30 Jul 2015 21:51:25 +0200
+
+gcc-5 (5.2.1-12) experimental; urgency=medium
+
+  * Update to SVN 20150723 (r226105, 5.2.1) from the gcc-5-branch.
+  * Fix PR libstdc++/66145, std::ios_base::failure objects thrown from
+    libstdc++.so using the gcc4-compatible ABI.
+    Just build src/c++11/functexcept.cc using the new ABI. It will break
+    code, which will be handled in the archive by adding Breaks for the
+    affected packages.  Third party code using such code will need a rebuild.
+  * Remove the work around to build with -O1 on sh4.
+
+ -- Matthias Klose <doko at debian.org>  Thu, 23 Jul 2015 14:18:44 +0200
+
+gcc-5 (5.2.1-11) experimental; urgency=medium
+
+  * Configure without --disable-libstdcxx-dual-abi.
+  * Configure with --with-default-libstdcxx-abi=c++11.
+
+ -- Matthias Klose <doko at debian.org>  Fri, 17 Jul 2015 08:13:08 +0200
+
+gcc-5 (5.2.1-1) experimental; urgency=medium
+
+  * GCC 5.2 release.
+  * Update to SVN 20150716 (r225880, 5.2.1) from the gcc-5-branch.
+  * Require version 5.2 for the libstdc++6 cxx symbols.
+  * Ignore missing libstdc++ symbols on sparc64 (work around #792204).
+  * Go escape analysis: analyze multiple result type assertions (taken
+    from the trunk).
+
+ -- Matthias Klose <doko at debian.org>  Thu, 16 Jul 2015 15:35:44 +0200
+
+gcc-5 (5.1.1-14) unstable; urgency=medium
+
+  * Update to SVN 20150711 (r225710, 5.1.1) from the gcc-5-branch.
+
+ -- Matthias Klose <doko at debian.org>  Sat, 11 Jul 2015 11:57:19 +0200
+
+gcc-5 (5.1.1-13) unstable; urgency=medium
+
+  * Update to SVN 20150706 (r225471, 5.1.1) from the gcc-5-branch.
+  * Update libasan symbol files.
+  * Configure --with-fp-32=xx on all mips targets, setting MIPS O32 default
+    to FPXX (YunQiang Su). Closes: #789612.
+  * Update libgccjit symbol file.
+  * Add x32 symbols files for libgcc1 and libstdc++6.
+  * libgccjit0: Add breaks for python-gccjit and python3-gccjit.
+
+ -- Matthias Klose <doko at debian.org>  Mon, 06 Jul 2015 19:55:08 +0200
+
+gcc-5 (5.1.1-12) unstable; urgency=medium
+
+  * Update to SVN 20150622 (r224724, 5.1.1) from the gcc-5-branch.
+  * Update symbols files for mips64 libatomic and libstdc++ (YunQiang Su).
+    Closes: #788990.
+  * Fix "empty-binary-package" lintian warnings.
+
+ -- Matthias Klose <doko at debian.org>  Mon, 22 Jun 2015 14:37:49 +0200
+
+gcc-5 (5.1.1-11) unstable; urgency=medium
+
+  * Update to SVN 20150616 (r224519, 5.1.1) from the gcc-5-branch.
+  * gccgo: escape: Analyze binary expressions (taken from the trunk).
+  * Explicitly build with -Wl,--no-relax on alpha again.
+  * Build with -O1 on sh4 (try to work around PR target/66358).
+
+ -- Matthias Klose <doko at debian.org>  Tue, 16 Jun 2015 16:11:59 +0200
+
+gcc-5 (5.1.1-10) unstable; urgency=medium
+
+  * Update to SVN 20150613 (r224454, 5.1.1) from the gcc-5-branch.
+  * Make removal of byte-compiled libstdc++ pretty printer files more
+    robust. Closes: #787630.
+  * Fix mips 32bit (o32) multilib builds (YunQiang Su).
+  * Build target libraries with -Wl,-z,relro.
+  * Build libstdc++6 when building the common libraries.
+  * Fix a bunch of lintian warnings.
+
+ -- Matthias Klose <doko at debian.org>  Sat, 13 Jun 2015 12:59:17 +0200
+
+gcc-5 (5.1.1-9) unstable; urgency=medium
+
+  * Update to SVN 20150602 (r224029, 5.1.1) from the gcc-5-branch.
+  * Remove byte-compiled libstdc++ pretty printer files on upgrade.
+    Closes: #785939.
+  * Fix dangling libgccjit.so symlink.
+  * Fix base dependency for rtlibs stage builds.
+  * Fix build failure of the hppa64 cross compiler, introduced by the
+    gnat cross patches. Closes: #786692.
+  * Update README.source (Michael Vogt).
+  * libgo: syscall.Sendfile(): Apply proposed patch for PR go/66378.
+    (Michael Vogt). LP: #1460530.
+  * Set CC and CXX matching the same GCC version for the stage1 build.
+  * Work around PR go/66368, build libgo with -fno-stack-protector.
+    LP: #1454183.
+
+ -- Matthias Klose <doko at debian.org>  Wed, 03 Jun 2015 00:49:41 +0200
+
+gcc-5 (5.1.1-8) unstable; urgency=medium
+
+  * Update to SVN 20150528 (r223816, 5.1.1) from the gcc-5-branch.
+  * Set the priorities of the *-dev-*-cross packages to extra.
+  * Prepare to change the base dependency for *-cross packages.
+  * Fix dependencies for stage1 and stage2 builds.
+  * Relax dependencies on binary indep *-dev-*-cross packages.
+  * Disable building gdc on sh4 (bootstrap comparison failure).
+
+ -- Matthias Klose <doko at debian.org>  Thu, 28 May 2015 15:51:00 +0200
+
+gcc-5 (5.1.1-7) unstable; urgency=medium
+
+  * Update to SVN 20150522 (r223579, 5.1.1) from the gcc-5-branch.
+  * Add description for the ada-gnattools-cross patch (YunQiang Su).
+  * Provide a rtlibs stage to build a subset of target library packages.
+  * Make symbols file symlinking for cross builds more robust.
+  * Prefer gnatgcc-5 over gnatgcc when building native packages.
+  * Various fixes to build a gnat cross compiler:
+    - Fix dependencies of packages.
+    - Fix building libgnatprj and libgnatvsn (still needed to figure
+      out if these are target or host libraries).
+  * Fix building cross compilers with dpkg 1.18.
+
+ -- Matthias Klose <doko at debian.org>  Fri, 22 May 2015 18:20:01 +0200
+
+gcc-5 (5.1.1-6) unstable; urgency=medium
+
+  * Update to SVN 20150519 (r223346, 5.1.1) from the gcc-5-branch.
+  * Don't build gdc-multilib on armel.
+  * Remove old CFLAGS/LDFLAGS settings to build gdc.
+  * Remove reference to .ico file in NEWS.html.
+  * Fix gcc's dependency on libcc1-0 for native builds.
+  * Fix stripping the rpath when cross-building cross compilers.
+  * Remove work arounds to build 64bit multilibs on 32bit targets,
+    now properly fixed upstream.
+  * Partially apply patches to build a gnat cross compiler (submitted
+    by YunQiang Su).
+    - gnatmake: Call the versioned gnatbind and gnatlink commands.
+      Closes: #782257.
+    - Allow libgnatprj and libgnatvsn to cross build. Addresses: #783372.
+    - New patch ada-gnattools-cross.diff (no documentation).
+  * Backport patch for gccgo:
+    - gccgo: If unary & does not escape, the var does not escape.
+  * Apply the backported patches for the go escape analysis. Need to
+    be enabled with -fgo-optimize-alloc (this option may go away again).
+  * Re-enable running the tests.
+
+ -- Matthias Klose <doko at debian.org>  Tue, 19 May 2015 10:33:40 +0200
+
+gcc-5 (5.1.1-5) unstable; urgency=medium
+
+  * Update to SVN 20150507 (r222873, 5.1.1) from the gcc-5-branch.
+  * Fix 32bit libstdc++ symbols files for kfreebsd-amd64.
+  * libx32phobos-dev: Don't depend on libx32z-dev, when not available.
+  * Fix gotools configury.
+  * Configure with
+      --disable-libstdcxx-dual-abi --with-default-libstdcxx-abi=c++98
+    While libstdc++ provides a dual ABI to support both the c++98 and c++11
+    ABI, there is no committment on compatibility of the old experimental
+    c++11 ABI from GCC 4.9 and the stable c++11 ABI in GCC 5.
+    Closes: #784655.
+
+ -- Matthias Klose <doko at debian.org>  Fri, 08 May 2015 18:48:49 +0200
+
+gcc-5 (5.1.1-4) unstable; urgency=medium
+
+  * Update to SVN 20150503 (r222751, 5.1.1) from the gcc-5-branch.
+    - Fix build failure on alpha.
+  * Fix applying the cross-biarch patch for stage1 builds.
+  * Fix libstdc++ symbols files for kfreebsd-amd64.
+  * Remove libn32phobos-5-dev from the control file.
+  * Really disable gnat on x32.
+
+ -- Matthias Klose <doko at debian.org>  Sat, 02 May 2015 19:18:57 +0200
+
+gcc-5 (5.1.1-3) unstable; urgency=high
+
+  * Update to SVN 20150430 (r222660, 5.1.1) from the gcc-5-branch.
+  * Fix libstdc++ symbols files for kfreebsd-i386.
+  * PR libstdc++/62258, fix for std::uncaught_exception, taken from the trunk.
+    LP: #1439451.
+  * Backport patches for gccgo (not yet applied):
+    - Consider multi-result calls in escape analysis.
+    - Propagate escape info from closures to enclosed variables.
+    - Analyze function values and conversions.
+    - Use backend interface for stack allocation.
+  * More libstdc++ symbols updates for the Hurd and KFreeBSD.
+  * config-ml.in: Add D support.
+  * Update cross-biarch.diff to support D and Go.
+  * Apply the cross-biarch patch for every cross build.
+
+ -- Matthias Klose <doko at debian.org>  Thu, 30 Apr 2015 15:42:05 +0200
+
+gcc-5 (5.1.1-2) unstable; urgency=medium
+
+  * Update to SVN 20150428 (r222550, 5.1.1) from the gcc-5-branch.
+  * Fix the gnat build dependency.
+  * Don't build go and gofmt for cross compilers.
+
+ -- Matthias Klose <doko at ubuntu.com>  Tue, 28 Apr 2015 23:57:14 +0200
+
+gcc-5 (5.1.1-1) unstable; urgency=medium
+
+  * GCC 5.1.0 release.
+  * Update to SVN 20150424 (r222416, 5.1.1) from the gcc-5-branch.
+  * Update NEWS files.
+  * Apply the ada-bootstrap-compare patch for snapshot builds as well.
+  * Update libasan, libgomp and libstdc++ symbols files.
+  * Don't ignore errors in dh_makeshlibs and dh_shlibdeps anymore, symbols
+    files should be uptodate now.
+  * Split out the sjlj build related things from the ada-acats patch into
+    a new ada-acats-sjlj patch.
+  * Don't build libx32phobos-5-dev when not building x32 multilibs.
+  * Fix standard C++ include directory for cross builds. Closes: #783241.
+  * Ignore bootstrap comparison failure on ia64. Filed upstream as
+    PR middle-end/65874.
+  * gccgo: Add (don't yet apply) a patch to implement escape analysis (taken
+    from the trunk). Turned off by default, enable with -fgo-optimize-alloc.
+
+ -- Matthias Klose <doko at debian.org>  Fri, 24 Apr 2015 18:42:39 +0200
+
+gcc-5 (5.1~rc1-1) experimental; urgency=medium
+
+  * GCC 5.1 release candidate 1.
+  * Update to SVN 20150414 (r222066) from the gcc-5-branch.
+  * Update GDC to the gcc-5 branch, 20140414.
+  * Don't build libobjc, when not building the common libraries.
+  * Don't run the gccjit tests on KFreeBSD. Works around #782444:.
+  * Fix not building libs built by the next GCC version.
+
+ -- Matthias Klose <doko at debian.org>  Tue, 14 Apr 2015 02:03:53 +0200
+
+gcc-5 (5-20150410-1) experimental; urgency=medium
+
+  * Update to SVN 20150410
+
+  [ Matthias Klose ]
+  * Fix /usr/include/c++/5.0.0 symlink.
+  * Re-enable building the D frontend. Closes: #782254.
+  * gccgo: Install libnetgo.
+
+  [ Samuel Thibault ]
+  * Fix ada builds on the Hurd and KFreeBSD. Closes: #781424.
+
+ -- Matthias Klose <doko at debian.org>  Sat, 11 Apr 2015 02:24:08 +0200
+
+gcc-5 (5-20150404-1) experimental; urgency=medium
+
+  * Update to SVN 20150404.
+  * Don't explicitly configure --with-gxx-include-dir and an absolute path,
+    so the toolchain remains relocatible. Instead, canonicalize the include
+    path names at runtime.
+  * Don't link libgnatprj using --no-allow-shlib-undefined on older releases.
+  * Don't build libmpx on older releases.
+  * Remove the work around to build libgccjit on arm64.
+  * Fix the libgccjit build using the just built compiler.
+  * Don't break other gcc, gcj, gnat -base packages for backports, only
+    needed for dist-upgrades.
+  * Don't add -gtoggle to STAGE3_CFLAGS (disabling the bootstrap comparison).
+    Instead, ignore the one differing file (gcc/ada/a-except.o) for now.
+    See #781457, PR ada/65618.
+  * Update libasan, libtsan, libgfortran and libstdc++ symbols files.
+  * Add symbols files for libmpx, libgccjit and libcc1.
+
+ -- Matthias Klose <doko at debian.org>  Sat, 04 Apr 2015 21:53:45 +0200
+
+gcc-5 (5-20150329-1) experimental; urgency=medium
+
+  * Update to SVN 20150329.
+  * Fix building the gnat-5-doc package.
+  * Fix gnat build dependencies.
+  * Fix installation of the gnat upstream ChangeLog. Closes: #781451.
+  * Restore the bootstrap-debug.mk patch to the ada-mips patch
+    for debugging purposes. See #781457.
+
+ -- Matthias Klose <doko at debian.org>  Sun, 29 Mar 2015 18:53:29 +0200
+
+gcc-5 (5-20150327-1) experimental; urgency=medium
+
+  * Update to SVN 20150327.
+  * Update libcc1 build support.
+  * Fix syntax in libstdc++ symbols file. Closes: #780991.
+  * Fix PR go/65417: Add support for PPC32 relocs to debug/elf. LP: #1431388.
+  * Fix PR go/65462: Fix go get dependencies. LP: #1432497.
+  * Limit the omp.h multilib fix to Linux. Closes: #778440.
+  * For ICEs, dump the preprocessed source file to stderr when in a
+    distro build environment.
+  * Remove the bootstrap-debug.mk patch from the ada-mips patch.
+  * gnat related work (partly based on #780640):
+    - Update patches for GCC 5.
+    - Build the gnat packages from the gcc-5 source package.
+    - Don't build a gnat-base package from the gcc-5 source.
+    - Stop building the gnat-5-sjlj package for now, patch needs an update.
+    - Fix the packaging when not building the gnat-5-sjlj package.
+    - Don't apply the ada-symbolic-tracebacks, patch needs an update.
+    - Fix the libgnatprj build, build with -DIN_GCC.
+  * Replace cloog/ppl build bits with isl build bits.
+
+ -- Matthias Klose <doko at debian.org>  Fri, 27 Mar 2015 21:05:16 +0100
+
+gcc-5 (5-20150321-1) experimental; urgency=medium
+
+  * Update to SVN 20150321.
+  * Move the libcc1plugin from the gcc-5-plugin-dev package into the
+    gcc-5 package.
+
+ -- Matthias Klose <doko at debian.org>  Sat, 21 Mar 2015 15:01:15 +0100
+
+gcc-5 (5-20150316-1) experimental; urgency=medium
+
+  * Update to SVN 20150316.
+    - Fix bootstrap failures on armel, armhh and arm64.
+  * Configure with --enable-checking=yes (instead of =release).
+
+ -- Matthias Klose <doko at debian.org>  Tue, 17 Mar 2015 00:30:27 +0100
+
+gcc-5 (5-20150314-1) experimental; urgency=medium
+
+  * Update to SVN 20150314.
+    - libgo: Add arm64 to the pointer size map (Michael Hudson).
+    - libgo: Add ppc to the pointer size map.
+    - PR go/65404, enable cgo on arm64 and powerpc. LP: #1431032.
+    - Fix PR/tree-optimization 65418. Closes: #778163.
+    - Fix PR c++/65370. Closes: #778073.
+  * Enable libmpx builds on amd64 and i386.
+  * Update the gcc-multiarch patch for mips64 (YunQiang Su).
+    Closes: #776402, #780271.
+  * Remove pr52306 and pr52714 patches, applied upstream. Closes: #780468.
+
+ -- Matthias Klose <doko at debian.org>  Sat, 14 Mar 2015 14:48:19 +0100
+
+gcc-5 (5-20150307-1) experimental; urgency=medium
+
+  * Update to SVN 20150307.
+    - Update gccgo to Go 1.4.2.
+  * Enable libsanitizer for AArch64 and POWERPC LE (asan, ubsan).
+  * Remove the support to build empty libsanitizer packages on powerpc
+    and ppc64; libsanitizer should be stable on these architectures.
+  * Fix libcc1.so symlink. Closes: #779341.
+  * Revert the fix for PR65150 on armel and armhf to restore bootstrap.
+  * Don't strip the libgo library, or some things won't work as documented,
+    like runtime.Callers. Still keep the -dbg packages and check if some
+    debug information can be stripped.
+  * gccgo-5: Install alternatives for go and gofmt.
+
+ -- Matthias Klose <doko at debian.org>  Sat, 07 Mar 2015 12:20:59 +0100
+
+gcc-5 (5-20150226-1) experimental; urgency=medium
+
+  * Update to SVN 20150226.
+    - Fix PR c/65040 (closes: #778514), PR tree-optimization/65053
+      (closes: #778070, #778071), PR c++/64898 (closes: #778472).
+  * Allow not to strip the compiler executables to be able to print backtraces
+    for ICEs.
+  * Fix gnat build on mips64el (James Cowgill). Addresses: #779191.
+  * Fix the hppa64 cross build (John David Anglin). Closes: #778658.
+  * Fix libstdc++ pretty printers for Python3. Closes: #778436.
+
+ -- Matthias Klose <doko at debian.org>  Thu, 26 Feb 2015 08:18:23 +0100
+
+gcc-5 (5-20150205-1) experimental; urgency=medium
+
+  * Update to SVN 20150205.
+  * Update GDC for GCC 5.
+  * Build GDC multilib packages.
+  * Update cross-install-location.diff for gcc-5. Closes: #776100.
+  * Configure --with-default-libstdcxx-abi=c++11 for development,
+    --with-default-libstdcxx-abi=c++98 for backports.
+  * Apply proposed patch for PR target/64893 (AArch64), build using
+    4.9 on AArch64 for now.
+  * Don't disable bootstrap mode for the jit build on arm64, gets
+    miscompiled.
+  * Allow one to build using gettext built with a newer GCC.
+
+ -- Matthias Klose <doko at debian.org>  Thu, 05 Feb 2015 18:31:17 +0100
+
+gcc-5 (5-20150127-1) experimental; urgency=medium
+
+  * Update to SVN 20150127.
+  * More symbol file updates.
+  * Fix libbacktrace and libsanitizer multilib builds.
+  * Fix libssp builds on 64bit architectures.
+  * Update hardening testsuite patches for GCC 5.
+
+ -- Matthias Klose <doko at debian.org>  Tue, 27 Jan 2015 14:10:30 +0100
+
+gcc-5 (5-20150121-1) experimental; urgency=medium
+
+  * GCC 5 (SVN trunk 20150121).
+  * Build new binary packages libcc1-0, libgccjit0, libgccjit-5-dev,
+    libgccjit-5-dbg, libgccjit-5-doc.
+  * Update symbols files (still incomplete).
+
+ -- Matthias Klose <doko at debian.org>  Wed, 21 Jan 2015 21:02:05 +0100
+
+gcc-4.9 (4.9.2-10) UNRELEASED; urgency=medium
+
+  * Update to SVN 20150120 (r219885) from the gcc-4_9-branch.
+    - Fix PR libstdc++/64476, PR libstdc++/60966, PR libstdc++/64239,
+      PR libstdc++/64649, PR libstdc++/64584, PR libstdc++/64585,
+      PR libstdc++/64646,
+      PR middle-end/63704 (ice on valid), PR target/64513 (x86),
+      PR rtl-optimization/64286 (wrong code), PR tree-optimization/64563 (ice),
+      PR middle-end/64391 (ice on valid), PR c++/54442 (ice on valid),
+      PR target/64358 (rs6000, wrong code), PR target/63424 (AArch64, ice on
+      valid), PR target/64479 (SH), PR rtl-optimization/64536, PR target/64505
+      (rs6000), PR target/61413 (ARM, wrong code), PR target/64507 (SH),
+      PR target/64409 (x32, ice on valid), PR c++/64487 (ice on valid),
+      PR c++/64352, PR c++/64251 (rejects valid), PR c++/64297 (ice on valid),
+      PR c++/64029 (ice on valid), PR c++/63657 (diagnostic), PR c++/38958
+      (diagnostic), PR c++/63658 (rejects valid), PR ada/64492 (build),
+      PR fortran/64528 (ice on valid), PR fortran/63733 (wrong code),
+      PR fortran/56867 (wrong code), PR fortran/64244 (ice on valid).
+  * Update the Linaro support to the 4.9-2015.01 release.
+
+ -- Matthias Klose <doko at debian.org>  Tue, 20 Jan 2015 12:45:13 +0100
+
+gcc-4.9 (4.9.2-10) unstable; urgency=medium
+
+  * Really add x32 multilib packages for i386 cross builds to the control file.
+    Closes: #773265.
+  * Use the final binutils 2.25 release.
+  * Tighten the gcc-4.9 dependency on libgcc-4.9-dev (YunQiang Su).
+
+ -- Matthias Klose <doko at debian.org>  Thu, 25 Dec 2014 18:10:51 +0100
+
+gcc-4.9 (4.9.2-9) unstable; urgency=medium
+
+  * Update to SVN 20141220 (r218987) from the gcc-4_9-branch.
+    - Fix PR libstdc++/64302, PR libstdc++/64303, PR c++/60955,
+      PR rtl-optimization/64010 (wrong code), PR sanitizer/64265 (wrong code).
+  * Add x32 multilib packages for i386 cross builds to the control file.
+    Closes: #773265.
+  * Fix mips64el multilib cross builds. Closes: #772665.
+  * libphobos-4.x-dev: Stop providing libphobos-dev, now a real package.
+
+ -- Matthias Klose <doko at debian.org>  Sat, 20 Dec 2014 07:47:15 +0100
+
+gcc-4.9 (4.9.2-8) unstable; urgency=medium
+
+  * Update to SVN 20141214 (r218721) from the gcc-4_9-branch.
+    - Fix PR tree-optimization/62021 (ice), PR middle-end/64225 (missed
+      optimization), PR libstdc++/64239, PR rtl-optimization/64037 (wrong
+      code), PR target/64200 (x86, ice), PR tree-optimization/64269 (ice).
+  * Don't build libphobos multilibs, there is no gdc-multilib build.
+  * Really disable the sanitizer libs on powerpc, ppc64 and ppc64el.
+  * Paste config.log files to stdout in case of build errors.
+
+ -- Matthias Klose <doko at debian.org>  Sun, 14 Dec 2014 18:43:49 +0100
+
+gcc-4.9 (4.9.2-7) unstable; urgency=medium
+
+  * Update to SVN 20141210 (r218575) from the gcc-4_9-branch.
+    - Fix PR libstdc++/64203, PR target/55351 (SH), PR tree-optimization/61686,
+      PR bootstrap/64213.
+    - libgcc hppa backports.
+  * Fix cross builds with dpkg-architecture unconditionally exporting
+    target variables. For now specify the target architecture
+    in debian/target. This still needs to work with older dpkg versions,
+    so don't "simplify" the packaging. Closes: #768167.
+
+ -- Matthias Klose <doko at debian.org>  Wed, 10 Dec 2014 13:32:42 +0100
+
+gcc-4.9 (4.9.2-6) unstable; urgency=medium
+
+  * Update to SVN 20141209 (r218510) from the gcc-4_9-branch.
+    - Fix PR libstdc++/63840, PR libstdc++/61947, PR libstdc++/64140,
+      PR target/50751 (SH), PR target/64108 (x86, ice),
+      PR rtl-optimization/64037 (wrong-code), PR c++/56493 (performance),
+      PR c/59708, PR ipa/64153, PR target/64167) (wrong code,
+      closes: #771974), PR target/59593 (ARM, wrong code),
+      PR middle-end/63762 (ARM. wrong code), PR target/63661 (x86,
+      wrong code), PR target/64113 (alpha, wrong code), PR c++/64191. 
+    - Allow one to build with ISL 0.14.
+
+ -- Matthias Klose <doko at debian.org>  Tue, 09 Dec 2014 11:00:08 +0100
+
+gcc-4.9 (4.9.2-5) unstable; urgency=medium
+
+  * Update to SVN 20141202 (r218271) from the gcc-4_9-branch.
+    - Fix PR middle-end/64111 (ice), PR ipa/63551 (wrong code).
+      PR libstdc++/64102 (closes: #770843), PR target/64115 (powerpc).
+  * Move libphobos2.a into the gcc_lib_dir. Closes: #771647.
+  * Fix typo in last powerpcspe patch. Closes: #771654.
+
+ -- Matthias Klose <doko at debian.org>  Tue, 02 Dec 2014 17:42:07 +0100
+
+gcc-4.9 (4.9.2-4) unstable; urgency=medium
+
+  * Update to SVN 20141128 (r218142) from the gcc-4_9-branch.
+    -PR PR target/56846 (ARM), PR libstdc++/63497,
+     PR middle-end/63738 (wrong code), PR tree-optimization/62238 (ice),
+     PR tree-optimization/61927 (wrong code),
+     PR tree-optimization/63605 (wrong code), PR middle-end/63665 (wrong code),
+     PR fortran/63938 (OpenMP), PR middle-end/64067 (ice),
+     PR tree-optimization/63915 (wrong code), PR sanitizer/63913 (ice valid),
+     PR rtl-optimization/63659 (wrong code).
+  * Don't let stage1 multilib builds depend on the multilib libc-dev.
+    Closes: #771243.
+  * Fix an exception problem on powerpcspe (Roland Stigge). Closes: #771324.
+  * Remove unsupported with_deps_on_target_arch_pkgs configurations.
+    Closes: #760770, #766924, #770413.
+
+ -- Matthias Klose <doko at debian.org>  Fri, 28 Nov 2014 15:26:23 +0100
+
+gcc-4.9 (4.9.2-3) unstable; urgency=medium
+
+  * Update to SVN 20141125 (r218048) from the gcc-4_9-branch.
+    - PR target/53976 (SH), PR target/63783 (SH), PR target/51244 (SH),
+      PR target/60111 (SH), PR target/63673 (ppc),
+      PR tree-optimization/61750 (ice), PR target/63947 (x86, wrong code),
+      PR tree-optimization/62167 (wrong code), PR c++/63849 (ice),
+      PR ada/47500.
+
+  [ Aurelien Jarno ]
+  * Always configure sh4-linux with --with-multilib-list=m4,m4-nofpu,
+    even with multilib disabled, as it doesn't produce additional
+    libraries.
+
+  [ Matthias Klose ]
+  * gcc-4.9-base: Add Breaks: gcc-4.7-base (<< 4.7.3). Closes: #770025.
+
+ -- Matthias Klose <doko at debian.org>  Tue, 25 Nov 2014 17:04:19 +0100
+
+gcc-4.9 (4.9.2-2) unstable; urgency=medium
+
+  * Update to SVN 20141117 (r217768) from the gcc-4_9-branch.
+    - Fix PR rtl-optimization/63475, PR rtl-optimization/63483 (gfortran
+      aliasing fixes for alpha), PR target/63538 (x86), PR ipa/63838 (wrong
+      code), PR target/61535 (sparc), PR c++/63265 (diagnostic), PR ada/42978.
+  * Fix PR c/61553 (ice on illegal code), backported from the trunk.
+    Closes: #767668.
+  * Disable building the sanitizer libs on powerpc and ppc64. Not yet
+    completely ported, and causing kernel crashes running the tests.
+  * Update the Linaro support to the 4.9-2014.11 release.
+
+ -- Matthias Klose <doko at debian.org>  Tue, 18 Nov 2014 00:34:01 +0100
+
+gcc-4.9 (4.9.2-1) unstable; urgency=medium
+
+  * GCC 4.9.2 release.
+  * Update GDC from the 4.9 branch.
+
+  [ Matthias Klose ]
+  * Allow one to build the gcc-base package only.
+
+  [Ludovic Brenta]
+  Merge from gnat-4.9 (4.9.1-4) unstable; urgency=low.
+  * debian/patches/ada-libgnatvsn.diff: compile the version.o of
+    libgnatvsn.{a,so} with -DBASEVER=$(FULLVER) to align it with the
+    change made in gcc-base-version.diff, which is compiled into gcc and
+    gnat1.  Fixes: #759038.
+  * debian/patches/ada-revert-pr63225.diff: new; preserve the aliversion
+    compatibility of libgnatvsn4.9-dev with -3.
+
+  Merge from gnat-4.9 (4.9.1-3) unstable; urgency=low
+  Merge from gnat-4.9 (4.9.1-2) unstable; urgency=low
+
+  [Svante Signell]
+  * debian/patches/ada-hurd.diff: update and bring up to par with
+    ada-kfreebsd.diff.
+
+  [Ludovic Brenta]
+  * Rebuild with newer dpkg.  Fixes: #761248.
+
+  Merge from gnat-4.9 (4.9.1-1) unstable; urgency=low
+
+  * New upstream release.  Build-depend on gcc-4.9-source (>= 4.9.1).
+    Fixes: #755490.
+  * debian/rules.d/binary-ada.mk: install the test-summary file in package
+    gnat-4.9 instead of gnat-4.9-base.  test-summary is actually
+    architecture-dependent.  This change reflects what happens in gcc-4.9
+    and gcc-4.9-base as well.  Fixes: #749869.
+
+  Merge from gnat-4.9 (4.9.0-2) unstable; urgency=low
+
+  * Lintian warnings:
+  * debian/control.m4 (gnat-4.9-base): Multi-Arch: same.
+  * debian/patches/ada-749574.diff: new.  Fixes: #749574.
+
+ -- Matthias Klose <doko at debian.org>  Tue, 04 Nov 2014 02:58:33 +0100
+
+gcc-4.9 (4.9.1-19) unstable; urgency=medium
+
+  * GCC 4.9.2 release candidate.
+  * Update to SVN 20141023 (r216594) from the gcc-4_9-branch.
+  * Install sanitizer header files.
+  * Apply patch for PR 60655, taken from the trunk.
+  * Fix typo in the libstdc++ HTML docs. Closes: #766498.
+  * Use doxygen's copy of jquery.js for the libstdc++ docs. Closes: #766499.
+  * Force self-contained cross builds.
+  * Don't build functionally non-equivalent cross compilers.
+  * Update the Linaro support to the 4.9-2014.10-1 release.
+
+ -- Matthias Klose <doko at debian.org>  Fri, 24 Oct 2014 14:20:00 +0200
+
+gcc-4.9 (4.9.1-18) unstable; urgency=medium
+
+  * Update to SVN 20141018 (r216426) from the gcc-4_9-branch.
+
+  [ Matthias Klose ]
+  * Update libstdc++ symbols file for powerpcspe (Roland Stigge).
+    Closes: #765078.
+
+ -- Matthias Klose <doko at debian.org>  Sat, 18 Oct 2014 16:28:09 +0200
+
+gcc-4.9 (4.9.1-17) unstable; urgency=medium
+
+  * Update to SVN 20141015 (r216240) from the gcc-4_9-branch.
+    - Fix PR c++/63405 (ice) Closes: #761549.
+    - Fix PR ipa/61144 (wrong code). Closes: #748681.
+
+ -- Matthias Klose <doko at debian.org>  Wed, 15 Oct 2014 10:29:23 +0200
+
+gcc-4.9 (4.9.1-16) unstable; urgency=medium
+
+  * Update to SVN 20140930 (r215717) from the gcc-4_9-branch.
+  * Don't suggest libvtv and binutils-gold. Closes: #761612.
+
+ -- Matthias Klose <doko at debian.org>  Tue, 30 Sep 2014 11:37:48 +0200
+
+gcc-4.9 (4.9.1-15) unstable; urgency=medium
+
+  * Update to SVN 20140919 (r215401) from the gcc-4_9-branch.
+
+  [ Matthias Klose ]
+  * Extend the fix for PR target/63190 (AArch64). Closes: #758964.
+  * Apply proposed fix for Linaro #331, LP: #1353729 (AArch64).
+
+  [ Aurelien Jarno ]
+  * Default to mips64 ISA on mips64el, with tuning for mips64r2.
+
+ -- Matthias Klose <doko at debian.org>  Fri, 19 Sep 2014 20:17:27 +0200
+
+gcc-4.9 (4.9.1-14) unstable; urgency=medium
+
+  * Update to SVN 20140912 (r215228) from the gcc-4_9-branch.
+  * Update the Linaro support to the 4.9-2014.09 release.
+  * Fix installation of the libstdc++ documentation. Closes: #760872.
+
+ -- Matthias Klose <doko at debian.org>  Fri, 12 Sep 2014 19:15:23 +0200
+
+gcc-4.9 (4.9.1-13) unstable; urgency=medium
+
+  * Update to SVN 20140908 (r215008) from the gcc-4_9-branch.
+  * Enable cgo on AArch64 (Michael Hudson). LP: #1361940.
+  * Update the Linaro support from the Linaro/4.9 branch.
+  * Fix PR target/63190 (AArch64), taken from the trunk. Closes: #758964.
+
+ -- Matthias Klose <doko at debian.org>  Mon, 08 Sep 2014 09:56:50 +0200
+
+gcc-4.9 (4.9.1-12) unstable; urgency=medium
+
+  [ Samuel Thibault ]
+  * boehm-gc: use anonymous mmap instead of brk also on hurd-*.
+    Closes: #753791.
+
+ -- Matthias Klose <doko at debian.org>  Sun, 31 Aug 2014 18:40:46 +0200
+
+gcc-4.9 (4.9.1-11) unstable; urgency=medium
+
+  * Update to SVN 20140830 (r214759) from the gcc-4_9-branch.
+  * Update cross installation patches for the branch.
+  * Use the base version (4.9) when accessing files in gcc_lib_dir.
+
+ -- Matthias Klose <doko at debian.org>  Sat, 30 Aug 2014 22:05:47 +0200
+
+gcc-4.9 (4.9.1-10) unstable; urgency=medium
+
+  * Update to SVN 20140830 (r214751) from the gcc-4_9-branch.
+  * Fix jni symlinks in /usr/lib/jvm. Closes: #759558.
+  * Update the Linaro support from the Linaro/4.9 branch.
+    - Fixes Aarch64 cross build on i386.
+
+ -- Matthias Klose <doko at debian.org>  Sat, 30 Aug 2014 04:47:19 +0200
+
+gcc-4.9 (4.9.1-9) unstable; urgency=medium
+
+  * Update to SVN 20140824 (r214405) from the gcc-4_9-branch.
+  * Fix -dumpversion output to print the full version number.
+    Addresses: #759038. LP: #1360404.
+    Use the GCC base version for the D include dir name.
+
+ -- Matthias Klose <doko at debian.org>  Sun, 24 Aug 2014 10:09:28 +0200
+
+gcc-4.9 (4.9.1-8) unstable; urgency=medium
+
+  * Update to SVN 20140820 (r214215) from the gcc-4_9-branch.
+  * Fix PR middle-end/61294, -Wmemset-transposed-args, taken from the trunk.
+    LP: #1352836.
+  * Update the Linaro support to 4.9-2014.08.
+  * Fix PR tree-optimization/59586, graphite segfault, taken from the trunk.
+    LP: #1227789.
+  * Fix multilib castrated cross builds on mips64el (YunQiang Su, Helmut
+    Grohne). Closes: #758408.
+  * Apply Proposed patch for PR target/62040 (AArch64). LP: #1351227.
+    Closes: #757738.
+
+ -- Matthias Klose <doko at debian.org>  Wed, 20 Aug 2014 11:36:40 +0200
+
+gcc-4.9 (4.9.1-7) unstable; urgency=medium
+
+  * Build-depend on dpkg-dev (>= 1.17.11).
+
+ -- Matthias Klose <doko at debian.org>  Thu, 14 Aug 2014 22:12:29 +0200
+
+gcc-4.9 (4.9.1-6) unstable; urgency=medium
+
+  * Update to SVN 20140813 (r213955) from the gcc-4_9-branch.
+  * Really fix the GFDL build on AArch64. Closes: #757153.
+  * Disable Ada for snapshot builds on kfreebsd-i386, kfreebsd-amd64.
+    Local patch needs an update and upstreaming.
+  * Apply the local ada-mips patch for snapshot builds too.
+  * Disable Ada for snapshot builds on mips, mipsel. Bootstrap comparision
+    failure. Local patch needs upstreaming.
+  * Disable Ada for snapshot builds on hurd-i386, build dependencies are
+    not installable.
+  * Don't build the sanitizer libs for sparc snapshot builds.
+  * Proposed backport for PR libstdc++/61841. Closes: #749290.
+
+ -- Matthias Klose <doko at debian.org>  Thu, 14 Aug 2014 17:53:43 +0200
+
+gcc-4.9 (4.9.1-5) unstable; urgency=medium
+
+  * Update to SVN 20140808 (r213759) from the gcc-4_9-branch.
+    - Fix PR tree-optimization/61964. LP: #1347147.
+  * Fix libphobos cross build.
+
+ -- Matthias Klose <doko at debian.org>  Fri, 08 Aug 2014 17:28:55 +0200
+
+gcc-4.9 (4.9.1-4) unstable; urgency=high
+
+  * Update to SVN 20140731 (r213317) from the gcc-4_9-branch.
+    - CVE-2014-5044, fix integer overflows in array allocation in libgfortran.
+      Closes: #756325.
+  * Build libphobos on armel and armhf. Closes: #755390.
+  * Fix java.security symlink. Closes: #756484.
+
+ -- Matthias Klose <doko at debian.org>  Thu, 31 Jul 2014 10:15:27 +0200
+
+gcc-4.9 (4.9.1-3) unstable; urgency=medium
+
+  * Update to SVN 20140727 (r213100) from the gcc-4_9-branch.
+  * Fix the GFDL build on AArch64.
+  * Fix PR libobjc/61920, libobjc link failure on powerpc*. Closes: #756096.
+
+ -- Matthias Klose <doko at debian.org>  Sun, 27 Jul 2014 15:25:24 +0200
+
+gcc-4.9 (4.9.1-2) unstable; urgency=medium
+
+  * Update to SVN 20140724 (r213031) from the gcc-4_9-branch.
+
+  * Fix installing test logs and summaries.
+  * Warn about ppc ELFv2 ABI issues, which will change in GCC 4.10.
+  * Don't gzip the xz compressed testsuite logs and summaries.
+  * Build libphobos on armel and armhf. Closes: #755390.
+  * Update the Linaro support to the 4.9-2014.07 release.
+
+ -- Matthias Klose <doko at debian.org>  Thu, 24 Jul 2014 23:59:49 +0200
+
+gcc-4.9 (4.9.1-1) unstable; urgency=medium
+
+  * GCC 4.9.1 release.
+  * Update GDC form the 4.9 branch (20140712).
+
+ -- Matthias Klose <doko at debian.org>  Wed, 16 Jul 2014 17:15:14 +0200
+
+gcc-4.9 (4.9.0-11) unstable; urgency=medium
+
+  * GCC 4.9.1 release candidate 1.
+  * Update to SVN 20140712 (r212479) from the gcc-4_9-branch.
+    - Fix PR middle-end/61725. Closes: #754548.
+
+  * Add libstdc++ symbols files for mips64 and mips64el (Yunqiang Su).
+    Closes: #745372.
+  * Set java_cpu to ppc64 on ppc64el.
+  * Build AArch64 from the Linaro 4.9-2014.06 release.
+  * Re-enable running the testsuite on KFreeBSD and the Hurd.
+  * Re-enable running the libstdc++ testsuite on arm*, mips* and hppa.
+
+ -- Matthias Klose <doko at debian.org>  Sat, 12 Jul 2014 13:10:46 +0200
+
+gcc-4.9 (4.9.0-10) unstable; urgency=medium
+
+  * Update to SVN 20140704 (r212295) from the gcc-4_9-branch.
+
+  * Explicitly set cpu_32 to ultrasparc for sparc64 builds.
+  * Fix --with-long-double-128 for sparc32 when defaulting to 64-bit.
+  * Ignore missing libstdc++ symbols on armel and hppa. The future and
+    exception_ptr implementation is incomplete. For more information see
+    https://gcc.gnu.org/ml/gcc/2014-07/msg00000.html.
+
+ -- Matthias Klose <doko at debian.org>  Fri, 04 Jul 2014 15:55:09 +0200
+
+gcc-4.9 (4.9.0-9) unstable; urgency=medium
+
+  * Update to SVN 20140701 (r212192) from the gcc-4_9-branch.
+  * Update libstdc++ symbols files for ARM.
+  * Configure --with-cpu-32=ultrasparc on sparc64.
+
+ -- Matthias Klose <doko at debian.org>  Tue, 01 Jul 2014 10:47:11 +0200
+
+gcc-4.9 (4.9.0-8) unstable; urgency=medium
+
+  * Update to SVN 20140624 (r211959) from the gcc-4_9-branch.
+
+  * Don't ignore dpkg-shlibdeps errors for libstdc++6, left over from initial
+    4.9 uploads.
+  * Update libgcc1 symbols for sh4. Closes: #751919.
+  * Stop building the libvtv packages. Not usable unless the build is
+    configured with --enable-vtable-verify, which comes with a performance
+    penalty just for the stubs in libstdc++.
+  * Update libstdc++ and libvtv symbols files for builds configured with
+    --enable-vtable-verify.
+  * Remove version requirement for dependency on make. Closes: #751891.
+  * Fix removal of python byte-code files in libstdc++6. Closes: #751435.
+  * Fix a segfault in the driver from calling free on non-malloc'd area.
+  * Drop versioned build dependency on gdb, and apply the pretty printer
+    patch for libstdc++ based on the release.
+  * Add support to build with isl-0.13.
+
+ -- Matthias Klose <doko at debian.org>  Wed, 25 Jun 2014 20:08:09 +0200
+
+gcc-4.9 (4.9.0-7) unstable; urgency=medium
+
+  * Update to SVN 20140616 (r211699) from the gcc-4_9-branch.
+
+  [ Matthias Klose ]
+  * Fix patch application for powerpcspe (Helmit Grohne). Closes: #751001.
+    + Update context for powerpc_remove_many.
+    + Drop gcc-powerpcspe-ldbl-fix applied upstream.
+
+  [ Aurelien Jarno ]
+  * Fix PR c++/61336, taken from the trunk.
+
+ -- Matthias Klose <doko at debian.org>  Mon, 16 Jun 2014 10:59:16 +0200
+
+gcc-4.9 (4.9.0-6) unstable; urgency=medium
+
+  * Update to SVN 20140608 (r211353) from the gcc-4_9-branch.
+  * Fix -Wno-format when -Wformat-security is the default (Steve Beattie).
+    LP: #1317305.
+  * Don't install the libstdc++ pretty printer file into the debug directory,
+    but into the gdb auto-load directory.
+  * Fix the removal of the libstdc++6 package, removing byte-compiled pretty
+    printer files and pycache directories.
+  * Fix PR c++/61046, taken from the trunk. LP: #1313102.
+  * Fix installation of gcc-{ar,nm,ranlib} man pages for snapshot builds.
+    Closes: #745906.
+  * Update patches for snapshot builds.
+
+ -- Matthias Klose <doko at debian.org>  Sun, 08 Jun 2014 11:57:07 +0200
+
+gcc-4.9 (4.9.0-5) unstable; urgency=medium
+
+  * Update to SVN 20140527 (r210956) from the gcc-4_9-branch.
+  * Limit systemtap-sdt-dev build dependency to enumerated linux architectures.
+  * Build libitm on AArch64, patch taken from the trunk.
+  * Update the testsuite to allow more testcases to pass with hardening options
+    turned on (Steve Beattie). LP: #1317307.
+  * Revert the fix for PR rtl-optimization/60969, causing bootstrap failure
+    on ppc64el.
+  * Fix PR other/61257, check for working sys/sdt.h.
+  * Drop the libstdc++-arm-wno-abi patch, not needed anymore in 4.9.
+
+ -- Matthias Klose <doko at debian.org>  Tue, 27 May 2014 08:58:07 +0200
+
+gcc-4.9 (4.9.0-4) unstable; urgency=medium
+
+  * Update to SVN 20140518 (r210592) from the gcc-4_9-branch.
+  * Update the local ada-libgnatprj patch for AArch64. Addresses: #748233.
+  * Update the libstdc++v-python3 patch. Closes: #748317, #738341, 747903.
+  * Build-depend on systemtap-sdt-dev, on every architecure, doesn't seem to hurt
+    on architectures where it is not supported. Closes: #748315.
+  * Update the gcc-default-format-security patch (Steve Beattie). LP: #1317305.
+  * Apply the proposed patch for PR c/57653. Closes: #734345.
+
+ -- Matthias Klose <doko at debian.org>  Sun, 18 May 2014 23:29:43 +0200
+
+gcc-4.9 (4.9.0-3) unstable; urgency=medium
+
+  * Update to SVN 20140512 (r210323) from the gcc-4_9-branch.
+
+  [ Matthias Klose ]
+  * Update build dependencies for ada enabled snapshot builds.
+  * Fix PR tree-optimization/60902, taken from the trunk. Closes: #746944.
+  * Ensure that the common libs (built from the next GCC version) are
+    available when building without common libs.
+  * Fix java.security symlink in libgcj15. Addresses: #746786.
+  * Move the libstdc++ gdb pretty printers into libstdc++6, install the
+    -gdb.py files into /usr/share/gdb/auto-load.
+  * Set the 'Multi-Arch: same' attribute for packages, cross built with
+    with_deps_on_target_arch_pkgs=yes (Helmit Grohne). Closes: #716795.
+  * Build the gcc-X.Y-base package with with_deps_on_target_arch_pkgs=yes
+    (Helmit Grohne). Addresses: #744782.
+  * Apply the proposed patches for PR driver/61106, PR driver/61126.
+    Closes: #747345.
+
+  [ Aurelien Jarno ]
+  * Fix libasan1 symbols file for sparc and sparc64.
+
+ -- Matthias Klose <doko at debian.org>  Tue, 13 May 2014 02:15:27 +0200
+
+gcc-4.9 (4.9.0-2) unstable; urgency=medium
+
+  * Update to SVN 20140503 (r210033) from the gcc-4_9-branch.
+    - Fix PR go/60931, garbage collector issue with non 4kB system page size.
+      LP: #1304754.
+
+  [Matthias Klose]
+  * Fix libgcc-dev dependency on gcc, when not building libgcc.
+  * Fix gnat for snapshot builds on ppc64el.
+  * Update the libsanitizer build fix for sparc.
+  * Install only versioned gcc-ar gcc-nm gcc-ranlib binaries for the hppa64
+    cross compiler. Install hppa64 alternatives. Addresses: #745967.
+  * Fix the as and ld symlinks for the hppa64 cross compiler.
+  * Add the gnat backport for AArch64.
+  * Update gnat patches not to use tabs and too long lines.
+  * libgnatvsn: Use CC and CXX passed from the toplevel makefile, drop gnat
+    build dependency on g++. Addresses: #746688.
+
+  Merge from gnat-4.9 (4.9.0-1) unstable; urgency=low:
+
+  [Ludovic Brenta]
+  * debian/patches/ada-hurd.diff: refresh for new upstream version that
+    restores POSIX compliance in System.OS_Interface.timespec.
+  * debian/patches/ada-kfreebsd.diff: make System.OS_Interface.To_Timespec
+    consistent with s-osinte-posix.adb.
+  [Nicolas Boulenguez]
+  * rules.conf (Build-Depends): mention gnat before gnat-x.y so that
+    buildds can bootstrap 4.9 in unstable.  Fixes: #744724.
+
+ -- Matthias Klose <doko at debian.org>  Sat, 03 May 2014 14:00:41 +0200
+
+gcc-4.9 (4.9.0-1) unstable; urgency=medium
+
+  * GCC 4.9.0 release.
+  * Update to SVN 20140423 (r209695) from the gcc-4_9-branch.
+
+  [Matthias Klose]
+  * Fix PR target/59758 (sparc), libsanitizer build failure (proposed patch).
+  * Update gold architectures.
+  * Update NEWS files.
+  * Remove more mudflap left overs. Closes: #742606.
+  * Add new libraries  src/libvtv and src/libcilkrts to
+    cross-ma-install-location.diff (Helmur Grohne). Closes: #745267.
+  * Let lib*gcc-dev depend on the corresponding libtsan packages.
+  * Build the liblsan packages (amd64 only).
+  * Install the libcilkrts spec file.
+  * Build the D frontend and libphobos from the gdc trunk.
+
+  Merge from gnat-4.9 (4.9-20140411-1) unstable; urgency=medium
+
+  [Nicolas Boulenguez]
+  * Revert g4.9-base to Architecture: all. Fixes: #743833.
+  * g4.9 Breaks/Replaces -base 4.6.4-2 and 4.9-20140330-1. Fixes: #743376.
+
+  [Ludovic Brenta]
+  * debian/patches/ada-symbolic-tracebacks.diff: refresh.
+
+  Merge from gnat-4.9 (4.9-20140406-1) experimental; urgency=low
+
+  * debian/patches/ada-arm.diff: new.  Improve support for ZCX on this
+    architecture.
+  * debian/patches/rules.patch: apply architecture- and Ada-specific
+    patches before Debian-specific patches.
+  * debian/patches/ada-link-lib.diff,
+    debian/patches/ada-libgnatvsn.diff,
+    debian/patches/ada-libgnatprj.diff: refresh for the new upstream
+    sources.
+
+  Merge from gnat-4.9 (4.9-20140330-3) experimental; urgency=low
+
+  [Nicolas Boulenguez]
+  * Install debian_packaging.mk to gnat-x.y, not -base. Fixes: #743375.
+  * rules.conf (Build-Depends): gnatgcc symlink provided by gnat-4.9 |
+    gnat-4.6 (>= 4.6.4-2) | gnat (>= 4.1 and << 4.6.1).
+
+  Merge from gnat-4.9 (4.9-20140330-2) experimental; urgency=medium
+
+  * Uploading to unstable was a mistake.  Upload to experimental.
+
+  Merge from gnat-4.9 (4.9-20140330-1) unstable; urgency=medium
+
+  [Nicolas Boulenguez]
+  * patches/ada-ppc64.diff: replace undefined variable arch with
+    target_cpu; this overrides the patch proposed by Ulrich Weigand as
+    it is more correct; approved by Ludovic Brenta.  Fixes: #742590.
+  * control.m4: Break/Replace: dh-ada-library 5.9. Fixes: #743219.
+
+  Merge from gnat-4.9 (4.9-20140322-1) experimental; urgency=low
+
+  [Nicolas Boulenguez]
+  * debian/control.m4:
+    (Suggests): suggest the correct version of ada-reference-manual.
+    (Vcs-Svn): specify the publicly accessible repository.
+  * Receive debian_packaging.mk from dh-ada-library (not library specific).
+  * Receive gnatgcc symlink from gnat (useful outside default compiler).
+  * debian/source/local-options: new.
+
+  [Ludovic Brenta]
+  * debian/control.m4: conflict with gnat-4.7, gnat-4.8.
+  * debian/patches/ada-default-project-path.diff: when passed options such
+    as -m32 or -march, do not look for the RTS in
+    /usr/share/ada/adainclude but in
+    /usr/lib/gcc/$target_triplet/$version/{,rts-}$arch.  Still look
+    for project files in /usr/share/ada/adainclude.
+  * debian/rules.d/binary-ada.mk, debian/rules.defs, debian/rules.patch:
+    Switch to ZCX by default on arm, armel, armhf; built SJLJ as the
+    package gnat-4.9-sjlj like on all other architectures.  This is made
+    possible by the new upstream version.
+  * debian/patches/ada-hurd.diff (s-osinte-gnu.ads): change the type of
+    timespec.tv_nsec from long to time_t, for compatibility with
+    s-osinte-posix.adb, even though this violates POSIX.  Better solution
+    to come from upstream.  Fixes: #740286.
+
+ -- Matthias Klose <doko at debian.org>  Wed, 23 Apr 2014 13:35:43 +0200
+
+gcc-4.9 (4.9-20140411-2) unstable; urgency=medium
+
+  * Disable running the testsuite on kfreebsd, hangs the buildds.
+  * Stop building the sanitizer libs on sparc, fails to build.  No reaction
+    from the Debian port maintainers and upstream. See PR sanitize/59758.
+
+ -- Matthias Klose <doko at debian.org>  Sat, 12 Apr 2014 15:42:34 +0200
+
+gcc-4.9 (4.9-20140411-1) unstable; urgency=medium
+
+  * GCC 4.9.0 release candidate 1.
+  * Configure for i586-linux-gnu on i386.
+
+ -- Matthias Klose <doko at debian.org>  Fri, 11 Apr 2014 19:57:07 +0200
+
+gcc-4.9 (4.9-20140406-1) experimental; urgency=medium
+
+  [Matthias Klose]
+  * Include include and include-fixed header files into the stage1
+    gcc-4.9 package.
+  * Explicitly configure with --disable-multilib on sparc64 when no
+    multilibs are requested (Helmut Grohne). Addresses: #743342.
+  * Drop mudflap from cross-install-location.diff since mudflap was removed
+    from gcc 4.9. Closes: #742606
+  * Build gnat in ppc64el snapshot builds.
+  * Apply the ada-ppc64 patch for snapshot builds as well.
+  * Fix PR target/60609 (ARM), proposed patch (Charles Baylis). LP: #1295653.
+  * Include the gnu triplet prefixed gcov and gcc-{ar,nm,ranlib} binaries.
+  * Add replaces when upgrading from a standalone gccgo build.
+
+  [Yunqiang Su]
+  * Lower default optimization for mips64/n32 to mips3/mips64(32).
+    Closes: #742617.
+
+ -- Matthias Klose <doko at debian.org>  Sun, 06 Apr 2014 02:24:16 +0200
+
+gcc-4.9 (4.9-20140330-1) experimental; urgency=medium
+
+  * Package GCC 4.9 snapshot 20140330.
+
+  [Matthias Klose]
+  * Update symbols files.
+  * debian/patches/ada-ppc64.diff: Fix for ppc64el (Ulrich Weigand).
+  * Fix cross building targeting x32 (Helmut Grohne). Addresses: #742539.
+
+  [Ludovic Brenta]
+  * debian/control.m4 (Build-Depends), debian/rules.conf: remove
+    AUTOGEN_BUILD_DEP and hardcode autogen.  It is called by
+    fixincludes/genfixes during bootstrap and also when building gnat-*,
+    not just when running checks on gcc-*.
+
+ -- Matthias Klose <doko at debian.org>  Sun, 30 Mar 2014 09:46:29 +0100
+
+gcc-4.9 (4.9-20140322-1) experimental; urgency=medium
+
+  * Package GCC 4.9 snapshot 20140322.
+    - Fixes build error on the Hurd. Closes: #740153.
+
+  [Matthias Klose]
+  * Re-apply lost patch for config.gcc for mips64el. Closes: #741543.
+
+  Merge from gnat-4.9 (4.9-20140218-3) UNRELEASED; urgency=low
+
+  [Nicolas Boulenguez]
+  * debian/control.m4: suggest the correct version of
+    ada-reference-manual.
+
+  [Ludovic Brenta]
+  * debian/control.m4: conflict with gnat-4.7, gnat-4.8.
+
+  Merge from gnat-4.9 (4.9-20140218-2) experimental; urgency=low
+
+  * debian/patches/ada-hurd.diff (Makefile.in): match *86-pc-gnu but
+    not *86-linux-gnu, the target tripled used by GNU/Linux.
+
+  Merge from gnat-4.9 (4.9-20140218-1) experimental; urgency=low
+
+  [Ludovic Brenta]
+  * debian/patches/ada-symbolic-tracebacks.diff: refresh and fix compiler
+    warnings.
+  * debian/patches/ada-link-lib.diff (.../ada/gcc-interface/Make-lang.in):
+    do not try to install the gnattools, this is the job of
+    gnattools/Makefile.in.
+  * debian/patches/ada-ajlj.diff: specify EH_MECHANISM to sub-makes even
+    when making install-gnatlib.
+
+  [Xavier Grave]
+  * debian/patches/ada-kfreebsd.diff: refresh.
+  * debian/rules.patch: re-enable the above.
+
+ -- Matthias Klose <doko at debian.org>  Sat, 22 Mar 2014 14:19:43 +0100
+
+gcc-4.9 (4.9-20140303-1) experimental; urgency=medium
+
+  * Package GCC 4.9 snapshot 20140303.
+
+ -- Matthias Klose <doko at debian.org>  Tue, 04 Mar 2014 02:13:20 +0100
+
+gcc-4.9 (4.9-20140218-1) experimental; urgency=medium
+
+  * Fix gij wrapper script on hppa. Closes: #739224.
+
+ -- Matthias Klose <doko at debian.org>  Tue, 18 Feb 2014 23:59:31 +0100
+
+gcc-4.9 (4.9-20140205-1) experimental; urgency=medium
+
+  * Package GCC 4.9 snapshot 20140205.
+  * Install the libsanitizer spec file.
+  * Fix building standalone gccgo, including the libgcc packages.
+  * On AArch64, use "generic" target, if no other default.
+
+ -- Matthias Klose <doko at debian.org>  Wed, 05 Feb 2014 12:53:52 +0100
+
+gcc-4.9 (4.9-20140122-1) experimental; urgency=medium
+
+  * Package GCC 4.9 snapshot 20140122.
+  * Update  libstdc++ -dbg and -doc conflicts.
+  * Link libstdc++ tests requiring libpthread symbols with --no-as-needed.
+  * armhf: Fix ffi_call_VFP with no VFP arguments (Will Newton).
+  * Apply proposed patch for PR target/59799, allow passing arrays in
+    registers on AArch64 (Michael Hudson).
+
+ -- Matthias Klose <doko at debian.org>  Wed, 22 Jan 2014 21:28:56 +0100
+
+gcc-4.9 (4.9-20140116-1) experimental; urgency=medium
+
+  * Package GCC 4.9 snapshot 20140116.
+  * Fix PR target/59588 (AArch64), backport proposed patch. LP: #1263576.
+  * Fix call frame information in ffi_closure_SYSV on AArch64.
+
+ -- Matthias Klose <doko at debian.org>  Fri, 17 Jan 2014 00:31:19 +0100
+
+gcc-4.9 (4.9-20140111-1) experimental; urgency=medium
+
+  * Package GCC 4.9 snapshot 20140111.
+  * Update libstdc++ -dbg and -doc conflicts. Closes: #734913.
+  * Disable libcilkrts on KFreeBSD and the Hurd. See #734973.
+
+ -- Matthias Klose <doko at debian.org>  Sat, 11 Jan 2014 13:11:16 +0100
+
+gcc-4.9 (4.9-20140110-1) experimental; urgency=medium
+
+  * Package GCC 4.9 snapshot 20140110.
+
+ -- Matthias Klose <doko at debian.org>  Fri, 10 Jan 2014 18:03:07 +0100
+
+gcc-4.9 (4.9-20140109-1) experimental; urgency=medium
+
+  * Package GCC 4.9 snapshot.
+
+ -- Matthias Klose <doko at debian.org>  Thu, 09 Jan 2014 18:57:46 +0100
+
+gcc-4.8 (4.8.2-11) unstable; urgency=low
+
+  * Update to SVN 20131230 (r206241) from the gcc-4_8-branch.
+  * Don't build x32 multilibs for wheezy backports.
+  * Set the goarch to arm64 for aarch64-linux-gnu.
+  * Fix statically linked gccgo binaries on AArch64 (Michael Hudson).
+    LP: #1261604.
+  * Merge accumulated Ada changes from gnat-4.8.
+  * Update gnat build dependencies when not built from a separate source.
+  * Default to -mieee on alpha again (Michael Cree). Closes: #733291.
+  * Prepare gnat package for cross builds.
+
+ -- Matthias Klose <doko at debian.org>  Mon, 30 Dec 2013 08:52:29 +0100
+
+gcc-4.8 (4.8.2-10) unstable; urgency=low
+
+  * Update to SVN 20131213 (r205948) from the gcc-4_8-branch.
+  * Add missing commit in libjava for gcc-linaro.
+
+ -- Matthias Klose <doko at debian.org>  Fri, 13 Dec 2013 01:01:47 +0100
+
+gcc-4.8 (4.8.2-9) unstable; urgency=low
+
+  * Update to SVN 20131212 (r205924) from the gcc-4_8-branch.
+
+  [ Matthias Klose ]
+  * Fix libitm symbols files for ppc64.
+  * Update libatomic symbol file for arm64 and ppc64.
+  * libgcj-dev: Drop dependencies on gcj-jre-lib and gcj-jdk.
+  * Fix permissions of some override files.
+  * Let cross compilers conflict with gcc-multilib (providing
+    /usr/include/asm for the non-default multilib).
+  * Configure --with-long-double-128 on powerpcspe (Roland Stigge).
+    Closes: #731941.
+  * Update the Linaro support to the 4.8-2013.12 release.
+  * Update the ibm branch to 20131212.
+
+  [ Aurelien Jarno ]
+  * patches/note-gnu-stack.diff: restore and rebase lost parts.
+
+ -- Matthias Klose <doko at debian.org>  Thu, 12 Dec 2013 12:34:55 +0100
+
+gcc-4.8 (4.8.2-8) unstable; urgency=medium
+
+  * Update to SVN 20131203 (r205647) from the gcc-4_8-branch.
+  * Fix PR libgcc/57363, taken from the trunk.
+
+ -- Matthias Klose <doko at debian.org>  Wed, 04 Dec 2013 01:21:10 +0100
+
+gcc-4.8 (4.8.2-7) unstable; urgency=low
+
+  * Update to SVN 20131129 (r205535) from the gcc-4_8-branch.
+  * Introduce aarch64 goarch.
+  * libgo: Backport fix for calling a function or method that takes or returns
+    an empty struct via reflection.
+  * go frontend: Backport fix for the generated hash functions of types that
+    are aliases for structures containing unexported fields.
+  * Skip Go testcase on AArch64 which hangs on the buildds.
+  * Fix freetype includes in libjava/classpath.
+
+ -- Matthias Klose <doko at debian.org>  Fri, 29 Nov 2013 18:19:12 +0100
+
+gcc-4.8 (4.8.2-6) unstable; urgency=low
+
+  * Update to SVN 20131128 (r205478) from the gcc-4_8-branch.
+
+  [ Matthias Klose ]
+  * gcc-4.8-base: Breaks gcc-4.4-base (<< 4.4.7). Closes: #729963.
+  * Update the gcc-as-needed patch for mips*. Closes: #722067.
+  * Use dpkg-vendor information for distribution specific settings.
+    Closes: #697805.
+  * Check for the sys/auxv.h header file.
+  * On AArch64, make the frame grow downwards, taken from the trunk.
+    Enable ssp on AArch64.
+  * Pass -fuse-ld=gold to gccgo on targets supporting split-stack.
+
+  [ Aurelien Jarno ]
+  * Update README.Debian for s390 and s390x.
+
+  [ Thorsten Glaser ]
+  * m68k-ada.diff: Add gcc-4.8.0-m68k-ada-pr48835-2.patch and
+    gcc-4.8.0-m68k-ada-pr51483.patch by Mikael Pettersson, to
+    fix more CC0-specific and m68k/Ada-specific problems.
+  * m68k-picflag.diff: New, backport from trunk, by Andreas Schwab,
+    to avoid relocation errors when linking big shared objects.
+  * pr58369.diff: New, backport from trunk, by Jeffrey A. Law,
+    to fix ICE while building boost 1.54 on m68k.
+  * pr52306.diff: Disables -fauto-inc-dec by default on m68k to
+    work around ICE when building C++ code (e.g. Qt-related).
+
+ -- Matthias Klose <doko at debian.org>  Thu, 28 Nov 2013 10:29:09 +0100
+
+gcc-4.8 (4.8.2-5) unstable; urgency=low
+
+  * Update to SVN 20131115 (r204839) from the gcc-4_8-branch.
+  * Update the Linaro support to the 4.8-2013.11 release.
+  * Add missing replaces in libgcj14. Closes: #729022.
+
+ -- Matthias Klose <doko at debian.org>  Sat, 16 Nov 2013 20:15:09 +0100
+
+gcc-4.8 (4.8.2-4) unstable; urgency=low
+
+  * Really fix disabling the gdc tests.
+
+ -- Matthias Klose <doko at debian.org>  Wed, 13 Nov 2013 00:44:35 +0100
+
+gcc-4.8 (4.8.2-3) unstable; urgency=low
+
+  * Update to SVN 20131112 (r204704) from the gcc-4_8-branch.
+  * Don't ship java.security in both libgcj14 and gcj-4.8-headless.
+    Closes: #729022.
+  * Disable gdc tests on architectures without libphobos port.
+
+ -- Matthias Klose <doko at debian.org>  Tue, 12 Nov 2013 18:08:44 +0100
+
+gcc-4.8 (4.8.2-2) unstable; urgency=low
+
+  * Update to SVN 20131107 (r204496) from the gcc-4_8-branch.
+  * Build ObjC, Obj-C++ and Go for AArch64.
+  * Fix some gcj symlinks. Closes: #726792, #728403.
+  * Stop building libmudflap (removed in GCC 4.9).
+
+ -- Matthias Klose <doko at debian.org>  Thu, 07 Nov 2013 01:40:15 +0100
+
+gcc-4.8 (4.8.2-1) unstable; urgency=low
+
+  * GCC 4.8.2 release.
+
+  * Update to SVN 20131017 (r203751) from the gcc-4_8-branch.
+  * Update the Linaro support to the 4.8-2013.10 release.
+  * Fix PR c++/57850, option -fdump-translation-unit not working.
+  * Don't run the testsuite on aarch64.
+  * Fix PR target/58578, wrong-code regression on ARM. LP: #1232017.
+  * [ARM] Fix bug in add patterns due to commutativity modifier,
+    backport from trunk. LP: #1234060.
+  * Build libatomic on AArch64.
+  * Fix dependency generation for the cross gcc-4.8 package.
+  * Make the libstdc++ pretty printers compatible with Python3, if
+    gdb is built with Python3 support.
+  * Fix loading of libstdc++ pretty printers. Closes: #701935.
+  * Don't let gcc-snapshot build-depend on gnat on AArch64.
+
+ -- Matthias Klose <doko at debian.org>  Thu, 17 Oct 2013 14:37:55 +0200
+
+gcc-4.8 (4.8.1-10) unstable; urgency=low
+
+  * Update to SVN 20130904 (r202243) from the gcc-4_8-branch.
+
+  [ Matthias Klose ]
+  * Don't rely on the most recent Debian release name for configuration
+    of the package. Addresses: #720263. Closes: #711824.
+  * Fix a cross build issue without DEB_* env vars set (Eleanor Chen).
+    Closes: #718614.
+  * Add packaging support for mips64(el) and mipsn32(el) including multilib
+    configurations (YunQiang Su). Addresses: #708143.
+  * Fix gcc dependencies for stage1 builds (YunQiang Su). Closes: #710240.
+  * Fix boehm-gc test failures with a linker defaulting to
+    --no-copy-dt-needed-entries.
+  * Fix libstdc++ and libjava test failures with a linker defaulting
+    to --as-needed.
+  * Mark the libjava/sourcelocation test as expected to fail on amd64 cpus.
+  * Fix some gcc and g++ test failures for a compiler with hardening
+    defaults enabled.
+  * Fix gcc-default-format-security.diff for GCC 4.8.
+  * Run the testsuite again on armel and armhf.
+  * Disable running the testsuite on mips.  Fails on the buildds, preventing
+    migration to testing for three months. No feedback from the mips porters.
+
+  [ Thorsten Glaser ]
+  * Merge several old m68k-specific patches from gcc-4.6 package:
+    - libffi-m68k: Rebased against gcc-4.8 and libffi 3.0.13-4.
+    - m68k-revert-pr45144: Needed for Ada.
+    - pr52714: Revert optimisation that breaks CC0 arch.
+  * Fix PR49847 (Mikael Pettersson). Closes: #711558.
+  * Use -fno-auto-inc-dec for PR52306 (Mikael Pettersson).
+
+ -- Matthias Klose <doko at debian.org>  Wed, 04 Sep 2013 21:30:07 +0200
+
+gcc-4.8 (4.8.1-9) unstable; urgency=low
+
+  * Update to SVN 20130815 (r201764) from the gcc-4_8-branch.
+  * Enable gomp on AArch64.
+  * Update the Linaro support to the 4.8-2013.08 release.
+
+ -- Matthias Klose <doko at debian.org>  Thu, 15 Aug 2013 10:47:38 +0200
+
+gcc-4.8 (4.8.1-8) unstable; urgency=low
+
+  * Fix PR rtl-optimization/57878, taken from the 4.8 branch.
+  * Fix PR target/57909 (ARM), Linaro only.
+
+ -- Matthias Klose <doko at debian.org>  Mon, 22 Jul 2013 13:03:57 +0200
+
+gcc-4.8 (4.8.1-7) unstable; urgency=low
+
+  * Update to SVN 20130717 (r200995) from the gcc-4_8-branch.
+    - Go 1.1.1 updates.
+  * Define CPP_SPEC for aarch64.
+  * Don't include <limits.h> in libgcc/libgcc2.c, taken from the trunk.
+    Closes: #696267.
+  * boehm-gc: use mmap instead of brk also on kfreebsd-* (Petr Salinger).
+    Closes: #717024.
+
+ -- Matthias Klose <doko at debian.org>  Thu, 18 Jul 2013 02:02:13 +0200
+
+gcc-4.8 (4.8.1-6) unstable; urgency=low
+
+  * Update to SVN 20130709 (r200810) from the gcc-4_8-branch.
+
+  [ Aurelien Jarno ]
+  * Add 32-bit biarch packages on sparc64.
+
+  [ Matthias Klose ]
+  * Fix multiarch include path for aarch64.
+  * Update the Linaro support to the 4.8-2013.07 release.
+  * Revert the proposed fix for PR target/57637 (ARM only).
+  * Let gfortran-4.8 provide gfortran-mod-10. Addresses #714730.
+
+  [ Iain Buclaw ]
+  * Avoid compiler warnings redefining D builtin macros.
+
+ -- Matthias Klose <doko at debian.org>  Tue, 09 Jul 2013 16:18:16 +0200
+
+gcc-4.8 (4.8.1-5) unstable; urgency=low
+
+  * Update to SVN 20130629 (r200565) from the gcc-4_8-branch.
+
+  [ Aurelien Jarno ]
+  * Don't pass --with-mips-plt on mips/mipsel.
+
+  [ Matthias Klose ]
+  * Fix documentation builds with texinfo-5.1.
+  * Update the ARM libsanitizer backport from the 4.8 Linaro branch.
+  * libphobos-4.8-dev provides libphobos-dev (Peter de Wachter).
+  * The gdc cross compiler doesn't depend on libphobos-4.8-dev.
+  * Work around libgo build failure on ia64. PR 57689. #714090.
+  * Apply proposed fix for PR target/57637 (ARM only).
+
+ -- Matthias Klose <doko at debian.org>  Sat, 29 Jun 2013 14:59:45 +0200
+
+gcc-4.8 (4.8.1-4) unstable; urgency=low
+
+  * Update to SVN 20130619 (r200219) from the gcc-4_8-branch.
+    - Bump the libgo soname (change in type layout for functions that take
+      function arguments).
+    - Fix finding the liblto_plugin.so without x permissions set (see
+      PR driver/57651). Closes: #712704.
+  * Update maintainer list.
+  * Fall back to the binutils version of the binutils build dependency
+    if the binutils version used for the build cannot be determined.
+  * For ARM multilib builds, use libsf/libhf system directories to lookup
+    files for the non-default multilib (for now, only for the cross compilers).
+  * Split out a gcj-4.8 package, allow to build a gcj cross compiler.
+  * Allow one to cross build gcj.
+  * Don't include object.di in the D cross compiler, but depend on gdc instead.
+  * Allow one to cross build gdc.
+  * Pass --hash-style=gnu instead of --hash-style=both to the linker.
+
+ -- Matthias Klose <doko at debian.org>  Wed, 19 Jun 2013 23:48:02 +0200
+
+gcc-4.8 (4.8.1-3) unstable; urgency=low
+
+  * Update to SVN 20130612 (r200018) from the gcc-4_8-branch.
+
+  [ Matthias Klose ]
+  * Prepare gdc for cross builds, and multiarch installation.
+  * Prepare gnat to build out of the gcc-4.8 source package, not
+    building the gnat-4.8-base package anymore.
+  * Don't build a gcj cross compiler by default (not yet tested).
+  * Disable D on s390 (doesn't terminate the D testsuite).
+  * Build libphobos on x32.
+  * Fix build with DEB_BUILD_OPTIONS="nolang=d".
+  * Disable D for arm64.
+  * Update the Linaro support to the 4.8-2013.06 release.
+  * Fix cross building a native compiler.
+  * Work around dh_shlibdeps not working on target libraries (see #698881).
+  * Add build dependency on kfreebsd-kernel-headers (>= 0.84) [kfreebsd-any].
+  * Add handling for unwind inside signal trampoline for kfreebsd (Petr
+    Salinger). Closes: #712016.
+  * Let gcc depend on the binutils upstream version it was built with.
+    Addresses #710142.
+  * Force a build using binutils 2.23.52 in unstable.
+
+  [ Iain Buclaw ]
+  * Update gdc to 20130610.
+  * Build libphobos on kFreeBSD.
+
+ -- Matthias Klose <doko at debian.org>  Wed, 12 Jun 2013 16:47:25 +0200
+
+gcc-4.8 (4.8.1-2) unstable; urgency=low
+
+  * Update to SVN 20130604 (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 <doko at debian.org>  Tue, 04 Jun 2013 17:28:06 +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 <doko at debian.org>  Mon, 03 Jun 2013 09:28:11 +0200
+
+gcc-4.8 (4.8.0-9) unstable; urgency=low
+
+  * Update to SVN 20130529 (r199410) from the gcc-4_8-branch.
+  * Drop build dependency on automake, not used anymore.
+  * Build with binutils from unstable (the 4.8.0-8 package was accidentally
+    built with binutils from experimental). Closes: #710142.
+  * Explicity configure with --disable-lib{atomic,quadmath,sanitizer} when
+    not building these libraries. Closes: #710224.
+
+ -- Matthias Klose <doko at debian.org>  Wed, 29 May 2013 16:59:50 +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 <doko at debian.org>  Mon, 27 May 2013 15:43:08 +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 <doko at debian.org>  Sun, 12 May 2013 19:26:50 +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 <doko at debian.org>  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 <doko at debian.org>  Mon, 06 May 2013 21:49:44 +0200
+
+gcc-4.8 (4.8.0-4) experimental; urgency=low
+
+  * Update to SVN 20130421 (r198115) from the gcc-4_8-branch.
+  * Ignore the return value for dh_shlibdeps for builds on precise/ARM.
+  * Use target specific names for libstdc++ baseline files. LP: #1168267.
+  * Update gcc-d-lang.diff for GDC port.
+  * Don't use extended libstdc++-doc build dependencies for older releases.
+  * In gnatlink, pass the options and libraries after objects to the
+    linker to avoid link failures with --as-needed. Addresses: #680292.
+  * Build gcj for aarch64-linux-gnu.
+  * Update the Linaro support to the 4.8-2013.04 release.
+  * Fix gdc build on architectures not providing libphobos.
+
+ -- Matthias Klose <doko at debian.org>  Mon, 22 Apr 2013 01:36:19 +0200
+
+gcc-4.8 (4.8.0-3) experimental; urgency=low
+
+  * Update to SVN 20130411 (r197813) from the gcc-4_8-branch.
+
+  [ Iain Buclaw ]
+  * Port GDC to GCC 4.8.0 release.
+
+ -- Matthias Klose <doko at debian.org>  Thu, 11 Apr 2013 19:18:24 +0200
+
+gcc-4.8 (4.8.0-2) experimental; urgency=low
+
+  * Update to SVN 20130328 (r197185) from the gcc-4_8-branch.
+  * Update NEWS files.
+  * Apply proposed patch for PR c++/55951. Closes: #703945.
+  * Configure with --disable-libatomic for hppa64. Closes: #704020.
+
+ -- Matthias Klose <doko at debian.org>  Thu, 28 Mar 2013 06:10:29 +0100
+
+gcc-4.8 (4.8.0-1) experimental; urgency=low
+
+  * GCC 4.8.0 release.
+  * Fix build failure on powerpcspe (Roland Stigge). Closes: #703074.
+
+ -- Matthias Klose <doko at debian.org>  Fri, 22 Mar 2013 07:47:12 -0700
+
+gcc-4.8 (4.8-20130318-1) experimental; urgency=low
+
+  * GCC snapshot 20130318, taken from the trunk.
+    - Fix the build failures on ARM.
+  * Install the libasan_preinit.o files. Closes: #703229.
+
+ -- Matthias Klose <doko at debian.org>  Mon, 18 Mar 2013 16:18:25 -0700
+
+gcc-4.8 (4.8-20130315-1) experimental; urgency=low
+
+  * GCC snapshot 20130315, taken from the trunk.
+
+ -- Matthias Klose <doko at debian.org>  Fri, 15 Mar 2013 18:51:15 -0700
+
+gcc-4.8 (4.8-20130308-1) experimental; urgency=low
+
+  * GCC snapshot 20130308, taken from the trunk.
+
+ -- Matthias Klose <doko at debian.org>  Fri, 08 Mar 2013 12:08:12 +0800
+
+gcc-4.8 (4.8-20130222-1) experimental; urgency=low
+
+  * GCC snapshot 20130222, taken from the trunk.
+  * Update libasan symbols files.
+
+ -- Matthias Klose <doko at debian.org>  Sat, 23 Feb 2013 04:47:15 +0100
+
+gcc-4.8 (4.8-20130217-1) experimental; urgency=low
+
+  * GCC snapshot 20130217, taken from the trunk.
+
+  * Update libasan symbols files.
+  * On alpha, link with --no-relax. Update libgcc1 symbols files (Michael
+    Cree). Closes: #699220.
+
+ -- Matthias Klose <doko at debian.org>  Mon, 18 Feb 2013 03:12:31 +0100
+
+gcc-4.8 (4.8-20130209-1) experimental; urgency=low
+
+  * GCC snapshot 20130209, taken from the trunk.
+
+  [ Matthias Klose ]
+  * Add a Build-Using attribute for each binary package, which can be
+    built from the gcc-4.7-source package (patch derived from a proposal by
+    Ansgar Burchardt).
+    - Use it for cross-compiler packages.
+    - Not yet used when building gcj, gdc or gnat using the gcc-source package.
+      These packages don't require an exact version of the gcc-source package,
+      but just a versions which is specified by the build dependencies.
+  * Fix dh_shlibdeps calls for the libgo packages.
+  * libstdc-doc: Depend on libjs-jquery.
+  * Update libstdc++ symbols files.
+  * Downgrade the priority of the non-default multilib libasan packages.
+
+  [ Thibaut Girka ]
+  * Fix dh_shlibdeps and dh_gencontrol cross-build mangling for
+    libgfortran-dev packages.
+
+ -- Matthias Klose <doko at debian.org>  Sat, 09 Feb 2013 17:00:06 +0100
+
+gcc-4.8 (4.8-20130127-1) experimental; urgency=low
+
+  * GCC snapshot 20130127, taken from the trunk.
+
+  [ Matthias Klose ]
+  * Fix MULTILIB_OS_DIRNAME for the default multilib on x32.
+
+  [ Thibaut Girka ]
+  * Fix installation path for libatomic and libsanitizer when building a
+    cross-compiler with with_deps_on_target_arch_pkgs.
+  * Fix regexp used to list patched autotools files.
+
+ -- Matthias Klose <doko at debian.org>  Sun, 27 Jan 2013 21:02:34 +0100
+
+gcc-4.8 (4.8-20130113-1) experimental; urgency=low
+
+  * GCC snapshot 20130113, taken from the trunk.
+  * Always configure --with-system-zlib.
+  * Search library dependencies in the build-sysroot too.
+  * Don't complain about missing .substvars files when trying to mangle
+    these files.
+  * Add ARM multilib packages to the control file for staged cross builds.
+  * Fix ARM multilib shlibs dependency generation for cross builds.
+  * Don't call dh_shlibdeps for staged cross builds. These packages
+    are never shipped, and the information is irrelevant.
+  * Build the libasan and libtsan packages before libstdc++.
+  * Bump build dependencies on isl and cloog.
+  * Don't ship libiberty.a in gcc-4.8-hppa64. Closes: #659556.
+
+ -- Matthias Klose <doko at debian.org>  Sun, 13 Jan 2013 16:42:33 +0100
+
+gcc-4.8 (4.8-20130105-1) experimental; urgency=low
+
+  * GCC snapshot 20130105, taken from the trunk.
+  * Keep the debug link for libstdc++6. Closes: #696854.
+  * Update libgfortran symbols file for the trunk.
+  * Fix libstdc++ symbols files for sparc 128bit symbols.
+  * Update libgcc and libstdc++ symbols files for s390.
+  * Keep the rt.jar symlink in the gcj-jre-headless package.
+  * Explicitly search multiarch and multilib system directories when
+    calling dh_shlibdeps.
+  * Let gjdoc accept -source 1.5|1.6|1.7. Addresses: #678945.
+  * Fix build configured with --enable-java-maintainer-mode.
+  * Don't ship .md5 files in the libstdc++-doc package.
+
+ -- Matthias Klose <doko at debian.org>  Sat, 05 Jan 2013 13:47:51 +0100
+
+gcc-4.8 (4.8-20130102-1) experimental; urgency=low
+
+  * GCC snapshot 20130102, taken from the trunk.
+
+  [ Matthias Klose ]
+  * Resolve libgo dependencies with the built runtime libraries.
+  * Fix g++-4.8-multilib dependencies.
+
+  [ Thibaut Girka ]
+  * Prepare for optional dependencies on the packages built on the
+    target architecture.
+  * When using the above,
+    - use the same settings for gcc_lib_dir, sysroot, header and C++ header
+      locations as for the native build.
+    - install libraries into the multiarch directories.
+    - use cpp-4.x-<triplet> instead of gcc-4.x-base to collect doc files.
+
+ -- Matthias Klose <doko at debian.org>  Wed, 02 Jan 2013 14:51:59 +0100
+
+gcc-4.8 (4.8-20121218-1) experimental; urgency=low
+
+  * GCC snapshot 20121217, taken from the trunk.
+  * Fix dependency generation for asan and atomic multilibs.
+  * Fix libobjc-dbg dependencies on libgcc-dbg packages.
+  * Fix MULTIARCH_DIRNAME definition for powerpcspe (Roland Stigge).
+    Closes: #695661.
+  * Move .jar symlinks from the -jre-lib into the -jre-headless package.
+
+ -- Matthias Klose <doko at debian.org>  Tue, 18 Dec 2012 16:44:42 +0100
+
+gcc-4.8 (4.8-20121217-1) experimental; urgency=low
+
+  * GCC snapshot 20121217, taken from the trunk.
+  * Fix package builds with the common libraries provided by a newer
+    gcc-X.Y package.
+  * Drop build-dependency on libelf.
+  * Drop the g++-multilib build dependency, use the built compiler to
+    check which multilib variants can be run. Provide an asm symlink for
+    the build.
+  * Stop configuring cross compilers --with-headers --with-libs.
+  * Always call dh_shlibdeps with -l, pointing to the correct dependency
+    packages.
+  * Fix cross build stage1 package installation, only including the target
+    files in the gcc package.
+  * Explicitly configure with --enable-multiarch when doing builds
+    supporting the multiarch layout.
+  * Only configure --with-sysroot, --with-build-sysroot when values are set.
+  * Revert: For stage1 builds, include gcc_lib_dir files in the gcc package.
+  * Allow multilib enabled stage1 and stage2 cross builds.
+  * Don't check glibc version to configure --with-long-double-128.
+  * Don't auto-detect multilib osdirnames.
+  * Don't set a LD_LIBRARY_PATH when calling dh_shlibdeps in cross builds.
+  * Allow building a gcj cross compiler.
+  * Pretend that wheezy has x32 support (sid is now known as wheezy :-/).
+
+ -- Matthias Klose <doko at debian.org>  Mon, 17 Dec 2012 18:37:14 +0100
+
+gcc-4.8 (4.8-20121211-1) experimental; urgency=low
+
+  * GCC snapshot 20121211, taken from the trunk.
+  * Fix build failure on multilib configurations.
+
+ -- Matthias Klose <doko at debian.org>  Tue, 11 Dec 2012 08:04:30 +0100
+
+gcc-4.8 (4.8-20121210-1) experimental; urgency=low
+
+  * GCC snapshot 20121210, taken from the trunk.
+  * For cross builds, don't use the multiarch location for the C++ headers.
+  * For cross builds, fix multilib inter package dependencies.
+  * For cross builds, fix libc6 dependencies for non-default multilib packages.
+  * Build libasan packages on powerpc, ppc64.
+  * Only run the libgo testsuite for flags configured in RUNTESTFLAGS.
+  * Remove the cross-includes patch, not needed anymore with --with-sysroot=/.
+  * For cross builds, install into /usr/lib/gcc-cross to avoid file conflicts
+    with the native compiler for the target architecture.
+  * For cross builds, don't add /usr/local/include to the standard include
+    path, however /usr/local/include/<multiarch> is still on the path.
+  * For cross builds, provide symbols files based on the symbols files for
+    the native build. Not picked up by dh_makeshlibs yet.
+  * Drop the g++-multilib build dependency, use the built compiler to
+    check which multilib variants can be run.
+  * Fix spu cross build on powerpc/ppc64.
+  * Make libgcj packages Multi-Arch: same, append the Debian architecture
+    name to the gcj java home.
+  * Don't encode versioned build dependencies on binutils and dpkg-dev in
+    the control file (makes the package cross-buildable).
+  * Only include gengtype for native builds. Needs upstream changes.
+    See #645018.
+  * Fix cross build failure with --enable-libstdcxx-debug.
+  * Only install libbacktrace if it is built.
+  * When cross building the native compiler, configure --with-sysroot=/
+    and without --without-isl.
+
+ -- Matthias Klose <doko at debian.org>  Mon, 10 Dec 2012 14:40:14 +0100
+
+gcc-4.8 (4.8-20121128-1) experimental; urgency=low
+
+  [ Matthias Klose ]
+  * Update patches for GCC 4.8.
+  * Update debian/copyright for libatomic, libbacktrace, libsanitizer.
+  * Remove the soversion from the libstdc++*-dev packages.
+  * Build libatomic and libasan packages.
+  * Install the static libbacktrace library and header files.
+  * Update build-indep dependencies for building the libstdc++ docs.
+  * Fix build failure in libatomic with x32 multilibs, handle -mx32 like -m64.
+  * Apply proposed fix for PR fortran/55395, supposed to fix the build
+    failure on armhf and powerpc.
+  * For hardened builds, disable gcc-default-format-security for now, causing
+    build failure building the target libstdc++ library.
+  * Drop the gcc-no-add-needed patch, depend on binutils 2.22 instead.
+  * Fix gnat build failure on kfreebsd.
+  * Rename the gccgo info to gccgo-4.8 on installation.
+  * Install the libitm documentation (if built).
+  * Rename the gccgo info to gccgo-4.8 on installation, install into gccgo-4.8.
+  * Include libquadmath documentation in the gcc-4.8-doc package.
+  * Build libtsan packages.
+  * Add weak __aeabi symbols to the libgcc1 ARM symbol files. Closes: #677139.
+  * For stage1 builds, include gcc_lib_dir files in the gcc package.
+  * Point to gcc's README.Bugs when building gcj packages. Addresses: #623987.
+
+  [ Thibaut Girka ]
+  * Fix libstdc++ multiarch include path for cross builds.
+
+ -- Matthias Klose <doko at debian.org>  Sun, 28 Nov 2012 12:55:27 +0100
+
+gcc-4.7 (4.7.2-12) experimental; urgency=low
+
+  * Update to SVN 20121127 (r193840) from the gcc-4_7-branch.
+    - Fix PR middle-end/55331 (ice on valid), PR tree-optimization/54976 (ice
+      on valid), PR tree-optimization/54894 (ice on valid),
+      PR middle-end/54735 (ice on valid), PR c++/55446 (wrong code),
+      PR fortran/55314 (rejects valid).
+
+  [ Matthias Klose ]
+  * Fix x32 multiarch name (x86_64-linux-gnux32).
+  * gcc-4.7-base: Add break to gcc-4.4-base (<< 4.4.7). Closes: #690172.
+  * Add weak __aeabi symbols to the libgcc1 ARM symbol files. Closes: #677139.
+  * For stage1 builds, include gcc_lib_dir files in the gcc package.
+
+  [ Thibaut Girka ]
+  * Fix libstdc++ multiarch include path for cross builds.
+
+ -- Matthias Klose <doko at debian.org>  Tue, 27 Nov 2012 11:02:10 +0100
+
+gcc-4.7 (4.7.2-11) experimental; urgency=low
+
+  * Update to SVN 20121124 (r193776) from the gcc-4_7-branch.
+    - Fix PR libgomp/55411, PR libstdc++/55413, PR middle-end/55142,
+      PR fortran/55352.
+
+  * Update build-indep dependencies for building the libstdc++ docs.
+  * Drop the gcc-no-add-needed patch, depend on binutils 2.22 instead.
+  * Pass --hash-style=gnu instead of --hash-style=both.
+  * Link using --hash-style=gnu on arm64 by default.
+  * Split multiarch patches into local and upstreamed parts.
+  * Fix PR54974: Thumb literal pools don't handle PC rounding (Matthew
+    Gretton-Dann). LP: #1049614, #1065509.
+  * Rename the gccgo info to gccgo-4.7 on installation, install into gccgo-4.7.
+  * Include libquadmath documentation in the gcc-4.7-doc package.
+  * Don't pretend to understand .d files, no D frontend available for 4.7.
+  * Fix the multiarch c++ include path for multilib'd targets. LP: #1082344.
+  * Make explicit --{en,dis}able-multiarch options effecitive (Thorsten Glaser).
+
+ -- Matthias Klose <doko at debian.org>  Sat, 24 Nov 2012 03:57:00 +0100
+
+gcc-4.7 (4.7.2-10) experimental; urgency=low
+
+  * Update to SVN 20121118 (r193598) from the gcc-4_7-branch.
+    - Fix PR target/54892 (ARM, LP: #1065122), PR rtl-optimization/54870,
+      PR rtl-optimization/53701, PR target/53975 (ia64),
+      PR tree-optimization/54902 (LP: #1065559), PR middle-end/54945,
+      PR target/55019 (ARM), PR c++/54984, PR target/55175,
+      PR tree-optimization/53708, PR tree-optimization/54985,
+      PR libstdc++/55169, PR libstdc++/55047, PR libstdc++/55123,
+      PR libstdc++/54075, PR libstdc++/28811, PR libstdc++/54482,
+      PR libstdc++/55028, PR libstdc++/55215, PR middle-end/55219,
+      PR tree-optimization/54986, PR target/55204, PR debug/54828,
+      PR tree-optimization/54877, PR c++/54988, PR other/52438,
+      PR fortran/54917, PR libstdc++/55320, PR libstdc++/53841.
+
+  [ Matthias Klose ]
+  * Update the Linaro support to the 4.7-2012.11 release.
+  * Define MULTIARCH_DIRNAME for arm64 (Wookey).
+  * Let the lib*objc-dev packages depend on the lib*gcc-dev packages.
+  * Let the libstdc++-dev package depend on the libgcc-dev package.
+  * Drop the dependency of the libstdc++-dev package on g++, make
+    libstdc++-dev and libstdc++-pic Multi-Arch: same. Closes: #678623.
+  * Install override files before calling dh_fixperms.
+  * Backport the libffi arm64 port.
+  * Build libx32gcc-dev, libx32objc-dev and libx32gfortran-dev packages.
+  * Allow conditional building of the x32 multilibs.
+  * Fix libmudflap build failure for x32 multilibs.
+  * Fix dependency on glibc for triarch builds.
+  * Add build-{arch,indep} targets.
+  * Fix libquadmath x32 multilib builds on kernels which don't support x32.
+  * Fix location of x32 specific C++ header files.
+  * Turn on -D_FORTIFY_SOURCE=2 by default for C, C++, ObjC, ObjC++,
+    only if the optimization level is > 0.
+  * Keep the host alias when building multilib libraries which need to
+    be cross-built on some architectures/buildds.
+  * Update arm64 from the aarch64 branch 20121105.
+  * Fix PR other/54411, libiberty: objalloc_alloc integer overflows
+    (CVE-2012-3509).
+  * Use /usr/include/<multiarch>/c++/4.x as the include directory
+    for host dependent c++ header files.
+  * Add alternative libelf-dev build dependency. Closes: #690952.
+  * Always build the aarch64-linux-gnu target from the Linaro branch.
+  * Add __gnu_* symbols to the libgcc1 symbols file for armel and armhf.
+  * For powerpcspe prevent floating point register handling when there
+    are none available (Roland Stigge). Closes: #693328.
+  * Don't apply hurd-pthread.diff for trunk builds, integrated
+    upstream (Samuel Thibault). Addresses: #692538.
+  * Again, suggest graphite runtime dependencies.
+  * Clean up libstdc++ man pages. Closes: #692445.
+
+  [ Thibaut Girka ]
+  * Split out lib*gcc-dev packages.
+  * Split out lib*objc-dev packages.
+  * Split out lib*gfortran-dev packages.
+
+  [ Daniel Schepler ]
+  * Add support for x32. Closes: #667005.
+  * New patch hjl-x32-gcc-4_7-branch.diff to incorporate changes from
+    that branch, including --with-abi=mx32 option.
+  * Split out lib*stdc++-dev packages.
+
+  [ Marcin Juszkiewicz ]
+  * lib*-dev packages for cross builds are not Multi-Arch: same. LP: #1070694.
+  * Remove conflicts for armhf/armel cross packages.
+
+ -- Matthias Klose <doko at debian.org>  Sun, 18 Nov 2012 17:54:15 +0100
+
+gcc-4.7 (4.7.2-4) unstable; urgency=low
+
+  * Fix PR c++/54858 (ice on valid), taken from the branch.
+  * Build again Go on armel and armhf.
+
+ -- Matthias Klose <doko at debian.org>  Tue, 09 Oct 2012 12:00:59 +0200
+
+gcc-4.7 (4.7.2-3) unstable; urgency=low
+
+  * Revert the fix PR c/33763, and just disable the sorry message,
+    taken from the branch. Closes: #678589. LP: #1062343.
+  * Update libgo to 1.0.3.
+  * Go fixes:
+    - Fix a, b, c := b, a, 1 when a and b already exist.
+    - Fix some type reflection strings.
+    - Fix parse of (<- chan <- chan <- int)(x).
+    - Fix handling of omitted expression in switch.
+    - Better error for switch on non-comparable type.
+  * Fix PR debug/53135 (ice on valid), PR target/54703 (x86, wrong code),
+    PR c++/54777 (c++11, rejects valid), taken from the 4.7 branch.
+  * gcc-4.7-base: ensure smooth upgrades from squeeze by adding
+      Breaks: gcj-4.4-base (<< 4.4.6-9~), gnat-4.4-base (<< 4.4.6-3~)
+    as in gcc-4.4-base (multiarch patches re-worked in 4.6.1-8/4.4.6-9).
+    Fixes some squeeze->wheezy upgrade paths where apt chooses to hold back
+    gcc-4.4-base and keep gcj-4.4-base installed instead of upgrading
+    gcc-4.4-base and removing the obsolete gcj-4.4-base (Andreas Beckmann).
+    Closes: #677582.
+  * Add arm64 support, partly based on Wookey's patches (only applied for
+    arm64). Disabled for arm64 are ssp, gomp, mudflap, boehm-gc, Ada, ObjC,
+    Obj-C++ and Java).
+
+ -- Matthias Klose <doko at debian.org>  Fri, 05 Oct 2012 20:00:30 +0200
+
+gcc-4.7 (4.7.2-2) unstable; urgency=low
+
+  * Fix PR tree-optimization/54563 (ice on valid), PR target/54564 (fma builtin
+    fix), PR c/54552 (ice on valid), PR lto/54312 (memory hog), PR c/54103 (ice
+    on valid), PR middle-end/54638 (memory corruption), taken from the 4.7
+    branch.
+  * Go fixes, taken from the 4.7 branch.
+  * On ARM, don't warn anymore that 4.4 has changed the `va_list' mangling,
+    taken from the trunk.
+  * Mention the NEWS changes for all uploads. Closes: #688278.
+
+ -- Matthias Klose <doko at debian.org>  Fri, 21 Sep 2012 11:58:10 +0200
+
+gcc-4.7 (4.7.2-1) unstable; urgency=low
+
+  * GCC 4.7.2 release.
+  * Issues addressed after the release candidate:
+    - PR c++/53661 (wrong warning), LTO backport from trunk, documentation fix.
+  * Update NEWS files.
+
+ -- Matthias Klose <doko at debian.org>  Thu, 20 Sep 2012 12:19:07 +0200
+
+gcc-4.7 (4.7.1-9) unstable; urgency=low
+
+  * GCC 4.7.2 release candidate 1.
+  * Update to SVN 20120914 (r191306) from the gcc-4_7-branch.
+    - Fix PR libstdc++/54388, PR libstdc++/54172, PR libstdc++/54172,
+      PR debug/54534, PR target/54536 (AVR), PR middle-end/54515 (ice on valid),
+      PR c++/54506 (rejects valid), PR c++/54341 (ice on valid),
+      PR c++/54253 (ice on valid), PR c/54559 (closes: #687496),
+      PR gcov-profile/54487, PR c++/53839, PR c++/54511, PR c++/53836,
+      PR fortran/54556.
+  * Update the Linaro support to the 4.7-2012.09 release.
+    - Adds support for the NEON vext instruction when shuffling.
+    - Backports improvements to scheduling transfers between VFP and core
+      registers.
+    - Backports support for the UBFX instruction on certain bit extract idioms.
+
+ -- Matthias Klose <doko at debian.org>  Fri, 14 Sep 2012 19:12:47 +0200
+
+gcc-4.7 (4.7.1-8) unstable; urgency=low
+
+  * Update to SVN 20120908 (r191092) from the gcc-4_7-branch.
+    - Fix PR libstdc++/54376, PR libstdc++/54297, PR libstdc++/54351,
+      PR libstdc++/54297, PR target/54461 (AVR), PR target/54476 (AVR),
+      PR target/54220 (AVR), PR fortran/54208 (rejects valid),
+      PR middle-end/53667 (wrong code), PR target/54252 (ARM, wrong code),
+      PR rtl-optimization/54455 (ice on valid), PR driver/54335 (docs),
+      PR tree-optimization/54498 (wrong code), PR target/45070 (wrong code),
+      PR tree-optimization/54494 (wrong code), PR target/54436 (x86),
+      PR c/54428 (ice on valid), PR c/54363 (ice on valid, closes: #684635),
+      PR rtl-optimization/54369 (mips, sparc, wrong code), PR middle-end/54146,
+      PR target/46254 (ice on valid), PR rtl-optimization/54088 (ice on valid),
+      PR target/54212 (ARM, wrong code), PR c++/54197 (wrong code),
+      PR lto/53572, PR tree-optimization/53922 (wrong code).
+    - Go fixes.
+
+  [ Nobuhiro Iwamatsu ]
+  * Remove sh4-enable-ieee.diff, -mieee enabled by default. Closes: #685975.
+
+  [ Matthias Klose ]
+  * Fix PR c++/54341, PR c++/54253, taken from the trunk. Closes: #685430.
+  * Update libitm package description. Closes: #686802.
+
+ -- Matthias Klose <doko at debian.org>  Fri, 07 Sep 2012 22:16:55 +0200
+
+gcc-4.7 (4.7.1-7) unstable; urgency=low
+
+  * Update to SVN 20120814 (r190380) from the gcc-4_7-branch.
+    - Fix PR libstdc++/54036, PR target/53961 (x86), PR libstdc++/54185,
+      PR rtl-optimization/53942, PR rtl-optimization/54157.
+
+  [ Thibaut Girka ]
+  * Fix cross compilers for 64bit architectures when using
+    DEB_CROSS_NO_BIARCH.
+  * Fix glibc dependency for multiarch enabled builds for architectures
+    with a different libc-dev package name.
+
+  [ Aurelien Jarno ]
+  * powerpc64: Fix non-multilib builds.
+
+  [ Matthias Klose ]
+  * Fix syntax error generating the control file for cross builds.
+    Closes: #682104.
+  * spu build: Move static libraries to version specific directories.
+    Closes: #680022.
+  * Don't run the libstdc++ tests on mipsel, times out on the buildds.
+  * Update the Linaro support to the 4.7-2012.08 release.
+
+ -- Matthias Klose <doko at debian.org>  Tue, 14 Aug 2012 13:58:03 +0200
+
+gcc-4.7 (4.7.1-6) unstable; urgency=low
+
+  * Update to SVN 20120731 (r190015) from the gcc-4_7-branch.
+    - Fix PR libstdc++/54075, PR libstdc++/53270, PR libstdc++/53978,
+      PR target/33135 (SH), PR target/53877 (x86), PR rtl-optimization/52250,
+      PR middle-end/54017, PR target/54029, PR target/53961 (x86),
+      PR target/53110 (x86), PR rtl-optimization/53908, PR c++/54038,
+      PR c++/54026, PR c++/53995, PR c++/53989, PR c++/53549 (closes: #680931),
+      PR c++/53953.
+
+ -- Matthias Klose <doko at debian.org>  Tue, 31 Jul 2012 20:00:56 +0200
+
+gcc-4.7 (4.7.1-5) unstable; urgency=high
+
+  * Update to SVN 20120713 (r189464) from the gcc-4_7-branch.
+    - Fix PR libstdc++/53657, PR c++/53733 (DR 1402), PR target/53811,
+      PR target/53853.
+
+ -- Matthias Klose <doko at debian.org>  Fri, 13 Jul 2012 16:59:59 +0200
+
+gcc-4.7 (4.7.1-4) unstable; urgency=medium
+
+  * Update to SVN 20120709 (r189388) from the gcc-4_7-branch.
+    - Fix PR libstdc++/53872, PR libstdc++/53830, PR bootstrap/52947,
+      PR middle-end/52786, PR middle-end/50708, PR tree-optimization/53693,
+      PR middle-end/52621, PR middle-end/53433, PR fortran/53732,
+      PR libstdc++/53578, PR c++/53882 (closes: #680521), PR c++/53826.
+  * Update the Linaro support to the 4.7-2012.07 release.
+  * Fix build on pre-multiarch releases (based on a patch from Chip Salzenberg).
+    Closes: #680590.
+
+ -- Matthias Klose <doko at debian.org>  Mon, 09 Jul 2012 18:58:47 +0200
+
+gcc-4.7 (4.7.1-3) unstable; urgency=low
+
+  * Update to SVN 20120703 (r189219) from the gcc-4_7-branch.
+    - Fix PR preprocessor/37215, PR middle-end/38474, PR target/53595 (AVR),
+      PR middle-end/53790, PR debug/53682, PR target/53759 (x86),
+      PR c++/53816, PR c++/53821, PR c++/51214, PR c++/53498, PR c++/53305,
+      PR c++/52988 (wrong code), PR c++/53202 (wrong code), PR c++/53594.
+    - The change for PR libstdc++/49561 was reverted. The std::list size is
+      now the same again in c++98 and c++11 mode.
+  * Revert the local std::list work around.
+  * Build using isl instead of ppl for snapshot builds.
+
+ -- Matthias Klose <doko at debian.org>  Tue, 03 Jul 2012 15:07:14 +0200
+
+gcc-4.7 (4.7.1-2) unstable; urgency=medium
+
+  * Update to SVN 20120623 (r188906) from the gcc-4_7-branch.
+    - Fix PR rtl-optimization/53700 (closes: #677678), PR target/52908,
+      PR libstdc++/53270, PR libstdc++/53678, PR gcov-profile/53744,
+      PR c++/52637, PR middle-end/53470, PR c++/53651, PR c++/53137,
+      PR c++/53599, PR fortran/53691, PR fortran/53685, PR ada/53592.
+  * Update NEWS files for 4.7.1.
+  * Bump gcc/FULL-VERSION to 4.7.1.
+  * Update the Linaro support to the 4.7-2012.06 release.
+  * Restore std::list ABI compatibility in c++11 mode. The upstream behaviour
+    can be enabled defining __CXX0X_STD_LIST_ABI_INCOMPAT__. This work around
+    will be replaced with an upstream solution.
+  * Fix PR debug/53682, taken from the trunk. Closes: #677606.
+  * Use $(with_gccbase) and $(with_gccxbase) to determine whether to enable it
+    in the control file (Thibaut Girka).
+  * When building a cross-compiler, runtime libraries for the target
+    architecture may be cross-built. Tell debhelper/dpkg-dev those packages
+    are indeed for a foreign architecture (Thibaut Girka).
+
+ -- Matthias Klose <doko at debian.org>  Sat, 23 Jun 2012 11:58:35 +0200
+
+gcc-4.7 (4.7.1-1) unstable; urgency=low
+
+  * GCC 4.7.1 release.
+
+ -- Matthias Klose <doko at debian.org>  Fri, 15 Jun 2012 00:38:27 +0200
+
+gcc-4.7 (4.7.0-13) unstable; urgency=low
+
+  * Update to SVN 20120612 (r188457) from the gcc-4_7-branch.
+    - Fix PR c++/53602 (LP: #1007616).
+
+  * Document the changed ssp-buffer-size default in Ubuntu 10.10 and
+    later (Kees Cook). LP: #990141.
+  * Fix PR c++/26155, ICE after error with namespace alias. LP: #321883.
+  * Fix PR c++/53599 (reverting the fix for PR c++/53137).
+    Closes: #676729. LP: #1010896.
+  * Fix manual page names for cross builds (Thibaut Girka). Closes: #675516.
+  * Remove dpkg-cross build dependency for cross builds (Thibaut Girka).
+    Closes: #675511.
+
+ -- Matthias Klose <doko at debian.org>  Tue, 12 Jun 2012 15:47:57 +0200
+
+gcc-4.7 (4.7.0-12) unstable; urgency=low
+
+  * Update to SVN 20120606 (r188261) from the gcc-4_7-branch (release
+    candidate 1 or 4.7.1).
+    - Fix PR libstdc++/52007, PR c++/53524, PR target/53559,
+      PR middle-end/47530, PR middle-end/53471, PR middle-end/52979,
+      PR target/46261, PR tree-optimization/53550, PR middle-end/52080,
+      PR middle-end/52097, PR middle-end/48124, PR middle-end/53501,
+      PR target/52667, PR target/52642, PR middle-end/48493, PR c++/53524,
+      PR c++/52973, PR c++/52725, PR c++/53137, PR c++/53484, PR c++/53500,
+      PR c++/52905, PR fortran/53521.
+    - Go and libgo updates.
+  * Include README.Debian in README.Debian.<arch>.
+  * Fix PR c/33763, proposed patch from the issue. Closes: #672411.
+  * Fix build failure in libgo with hardening defaults.
+
+ -- Matthias Klose <doko at debian.org>  Wed, 06 Jun 2012 13:22:27 +0200
+
+gcc-4.7 (4.7.0-11) unstable; urgency=low
+
+  * Update to SVN 20120530 (r188035) from the gcc-4_7-branch.
+    - Fix PR c++/53356, PR c++/53491, PR c++/53503, PR c++/53220,
+      PR middle-end/53501, PR rtl-optimization/53519,
+      PR tree-optimization/53516, PR tree-optimization/53438,
+      PR target/52999, PR middle-end/53008.
+
+  [ Matthias Klose ]
+  * Build-depend on netbase when building Go. Closes: #674306.
+
+  [ Marcin Juszkiewicz ]
+  * Use the multiarch default for staged builds.
+
+ -- Matthias Klose <doko at debian.org>  Thu, 31 May 2012 08:25:08 +0800
+
+gcc-4.7 (4.7.0-10) unstable; urgency=low
+
+  * Update to SVN 20120528 (r187927) from the gcc-4_7-branch.
+    - Fix PR rtl-optimization/52528, PR lto/52178, PR target/53435,
+      PR ada/52362, PR target/53385, PR middle-end/53460,
+      PR tree-optimization/53465, PR target/53448, PR tree-optimization/53408,
+      PR ada/52362, PR fortran/53389.
+  * Fix warning building libiberty/md5.c. PR other/53285. Closes: #674830.
+
+ -- Matthias Klose <doko at debian.org>  Mon, 28 May 2012 11:30:36 +0800
+
+gcc-4.7 (4.7.0-9) unstable; urgency=low
+
+  * Update to SVN 20120522 (r187756) from the gcc-4_7-branch.
+    - Fix PR bootstrap/53183, PR tree-optimization/53436,
+      PR tree-optimization/53366, PR tree-optimization/53409,
+      PR tree-optimization/53410, PR c/53418, PR target/53416,
+      PR middle-end/52584, PR debug/52727, PR tree-optimization/53364,
+      PR target/53358, PR rtl-optimization/52804, PR target/46098,
+      PR target/53256, PR c++/53209, PR c++/53301, PR ada/52494,
+      PR fortran/53310 
+  * Update the Linaro support to the 4.7-2012.05 release.
+
+ -- Matthias Klose <doko at debian.org>  Tue, 22 May 2012 13:01:33 +0800
+
+gcc-4.7 (4.7.0-8) unstable; urgency=low
+
+  * Update to SVN 20120509 (r187339) from the gcc-4_7-branch.
+    - Fix PR libstdc++/53193, PR target/53272, PR tree-optimization/53239,
+      PR tree-optimization/53195, PR target/52999, PR target/53228,
+      PR tree-optimization/52633, PR tree-optimization/52870, PR target/48496,
+      PR target/53199, PR target/52684, PR lto/52605, PR plugins/53126,
+      PR debug/53174, PR target/53187, PR tree-optimization/53144,
+      PR c++/53186, PR fortran/53255, PR fortran/53111, PR fortran/52864.
+    - Fix plugin check in gcc-{ar,nm,ranlib}-4.7.
+  * Install man pages for gcc-{ar,nm,ranlib}-4.7.
+
+ -- Matthias Klose <doko at debian.org>  Mon, 07 May 2012 21:56:42 +0200
+
+gcc-4.7 (4.7.0-7) unstable; urgency=low
+
+  * Update to SVN 20120502 (r187039) from the gcc-4_7-branch.
+    - Fix PR libstdc++/53115, PR tree-optimization/53163,
+      PR rtl-optimization/53160, PR middle-end/53136, PR fortran/53148.
+    - libgo fix for mips.
+  * Fix setting MULTILIB_DEFAULTS for ARM multilib builds.
+  * Build Go on mips.
+  * Revert: Don't build multilib gnat on armel and armhf.
+  * Fix multiarch patch for alpha (Michael Cree). Closes: #670571.
+  * Fix Go multilib packaging issue for mips and mipsel.
+
+ -- Matthias Klose <doko at debian.org>  Wed, 02 May 2012 12:42:01 +0200
+
+gcc-4.7 (4.7.0-6) unstable; urgency=low
+
+  * Update to SVN 20120430 (r186964) from the gcc-4_7-branch.
+    - Fix PR target/53138.
+  * Build Go on ARM.
+  * Treat wheezy the same as sid in more places (Peter Green).
+    Addresses: #670821.
+
+ -- Matthias Klose <doko at debian.org>  Mon, 30 Apr 2012 13:06:21 +0200
+
+gcc-4.7 (4.7.0-5) unstable; urgency=medium
+
+  * Update to SVN 20120428 (r186932) from the gcc-4_7-branch.
+    - Fix PR c/52880, PR target/53065, PR tree-optimization/53085,
+      PR c/51527, PR target/53120.
+
+  [ Matthias Klose ]
+  * Don't build multilib gnat on armel and armhf.
+  * Don't try to run the libstdc++ testsuite if the C++ frontend isn't built.
+  * Install the unwind-arm-common.h header file.
+  * Fix ARM biarch package builds.
+
+  [ Aurelien Jarno ]
+  * Reenable parallel builds on GNU/kFreeBSD.
+  * Fix libgcc building on MIPS N32/64. Closes: #669858.
+  * Add libn32gcc1 and lib64gcc1 symbols files on mips and mipsel.
+
+ -- Matthias Klose <doko at debian.org>  Sat, 28 Apr 2012 11:59:36 +0200
+
+gcc-4.7 (4.7.0-4) unstable; urgency=low
+
+  * Update to SVN 20120424 (r186746) from the gcc-4_7-branch.
+    - Fix PR libstdc++/52924, PR libstdc++/52591, PR middle-end/52894,
+      PR testsuite/53046, PR libstdc++/53067, PR libstdc++/53027,
+      PR libstdc++/52839, PR bootstrap/52840, PR libstdc++/52689,
+      PR libstdc++/52699, PR libstdc++/52822, PR libstdc++/52942,
+      PR middle-end/53084, PR middle-end/52999, PR c/53060,
+      PR tree-optimizations/52891, PR target/53033, PR target/53020,
+      PR target/52932, PR middle-end/52939, PR tree-optimization/52969,
+      PR c/52862, PR target/52775, PR tree-optimization/52943, PR c++/53003,
+      PR c++/38543, PR c++/50830, PR c++/50303, PR c++/52292, PR c++/52380,
+      PR c++/52465, PR c++/52824, PR c++/52906.
+
+  [ Matthias Klose ]
+  * Update the Linaro support to the 4.7-2012.04 release.
+  * Set the ARM hard-float linker path according to the consensus:
+    http://lists.linaro.org/pipermail/cross-distro/2012-April/000261.html
+  * Reenable the spu build on ppc64. Closes: #668272.
+  * Update and reenable the gcc-cloog-dl patch.
+
+  [ Samuel Thibault ]
+  * ada-s-osinte-gnu.adb.diff, ada-s-osinte-gnu.ads.diff,
+    ada-s-taprop-gnu.adb.diff, gcc_ada_gcc-interface_Makefile.in.diff:
+    Add ada support for GNU/Hurd, thanks Svante Signell for the patches
+    and bootstrap! (Closes: #668426).
+
+ -- Matthias Klose <doko at debian.org>  Tue, 24 Apr 2012 08:44:15 +0200
+
+gcc-4.7 (4.7.0-3) unstable; urgency=low
+
+  * Update to SVN 20120409 (r186249) from the gcc-4_7-branch.
+    - Fix PR libitm/52854, PR libstdc++/52476, PR target/52717,
+      PR tree-optimization/52406, PR c++/52596, PR c++/52796,
+      PR fortran/52893, PR fortran/52668.
+
+  [ Matthias Klose ]
+  * Re-add missing dependency on libgcc in gcc-multilib. Closes: #667519.
+  * Add support for GNU locales for GNU/Hurd (Svante Signell).
+    Closes: #667662.
+  * Reenable the spu build on ppc64. Closes: #664617.
+  * Apply proposed patch for PR52894, stage1 bootstrap failure on hppa
+    (John David Anglin). Closes: #667969.
+
+  [ Nobuhiro Iwamatsu ]
+  * Fix cross build targeting sh4. Closes: #663028.
+  * Enable -mieee by default on sh4. Closes: #665328.
+
+ -- Matthias Klose <doko at debian.org>  Mon, 09 Apr 2012 22:24:14 +0200
+
+gcc-4.7 (4.7.0-2) unstable; urgency=low
+
+  * Update to SVN 20120403 (r186107) from the gcc-4_7-branch.
+    - Fix PR middle-end/52547, PR libstdc++/52540, PR libstdc++/52433,
+      PR target/52507, PR target/52505, PR target/52461, PR target/52508,
+      PR c/52682, PR target/52610, PR middle-end/52640, PR target/50310,
+      PR target/48596, PR target/48806, PR middle-end/52547, R target/52496,
+      PR rtl-optimization/52543, PR target/52461, PR target/52488,
+      PR target/52499, PR target/52148, PR target/52496, PR target/52484,
+      PR target/52506, PR target/52505, PR target/52461, PR other/52545,
+      PR c/52577, PR c++/52487, PR c++/52671, PR c++/52582, PR c++/52521,
+      PR fortran/52452, PR target/52737, PR target/52698, PR middle-end/52693,
+      PR middle-end/52691, PR middle-end/52750, PR target/52692,
+      PR middle-end/51893, PR target/52737, PR target/52736, PR middle-end/52720,
+      PR c++/52672, PR c++/52718, PR c++/52685, PR c++/52759, PR c++/52743,
+      PR c++/52746, PR libstdc++/52799, PR libgfortran/52758,
+      PR middle-end/52580, PR middle-end/52493, PR tree-optimization/52678,
+      PR tree-optimization/52701, PR tree-optimization/52754,
+      PR tree-optimization/52835.
+
+  [ Matthias Klose ]
+  * Update NEWS files for 4.7.
+  * Include -print-multiarch option in gcc --help output. Closes: #656998.
+  * Don't build Go on MIPS.
+  * Update alpha-ieee.diff for 4.7.
+  * Update gcc-multiarch.diff for sh4 (untested). Closes: #665935.
+  * Update gcc-multiarch.diff for hppa (untested). Closes: #666162.
+  * Re-add build dependency on doxygen.
+
+  [ Samuel Thibault ]
+  * debian/patches/ada-bug564232.diff: Enable on hurd too.
+  * debian/patches/ada-libgnatprj.diff: Add hurd configuration.
+
+ -- Matthias Klose <doko at debian.org>  Tue, 03 Apr 2012 16:30:58 +0200
+
+gcc-4.7 (4.7.0-1) unstable; urgency=low
+
+  * GCC 4.7.0 release.
+
+ -- Matthias Klose <doko at debian.org>  Fri, 23 Mar 2012 05:44:37 +0100
+
+gcc-4.7 (4.7.0~rc2-1) experimental; urgency=low
+
+  * GCC-4.7 release candidate 2 (r185376).
+  * libgo: Work around parse error of struct timex_ on ARM.
+  * Update libstdc++6 symbols files.
+  * Allow building Go from a separate source package.
+  * Don't configure with --enable-gnu-unique-object on kfreebsd and hurd.
+  * Include -print-multiarch option in gcc --help output. Closes: #656998.
+  * Disable Go on mips* (PR go/52586).
+
+ -- Matthias Klose <doko at debian.org>  Wed, 14 Mar 2012 15:49:39 +0100
+
+gcc-4.7 (4.7.0~rc1-2) experimental; urgency=low
+
+  * Update to SVN 20120310 (r185183) from the gcc-4_6-branch.
+  * Always configure with --enable-gnu-unique-object. LP: #949805.
+  * Enable Go for ARM on releases with working getcontext/setcontext.
+
+ -- Matthias Klose <doko at debian.org>  Sat, 10 Mar 2012 23:29:45 +0100
+
+gcc-4.7 (4.7.0~rc1-1) experimental; urgency=low
+
+  * GCC-4.7 release candidate 1 (r184777).
+
+  [ Marcin Juszkiewicz ]
+  * Fix ARM sf/hf multilib dpkg-shlibdeps dependency generation.
+
+  [ Matthias Klose ]
+  * PR go/52218, don't build Go on ARM, getcontext/setcontext exists,
+    but return ENOSYS.
+  * Fix multiarch build on ia64.
+  * Fix path calculation for the libstdc++ -gdb.py file when installed into
+    multiarch locations. Closes: #661385. LP: #908163.
+  * Disable Go on sparc (libgo getcontext/setcontext check failing).
+
+  [ Thorsten Glaser ]
+  * Apply patch from Alan Hourihane to fix err_bad_abi testcase on m68k.
+
+  [ Jonathan Nieder ]
+  * libstdc++6: Depends on libc (>= 2.11) for STB_GNU_UNIQUE support
+    (Eugene V. Lyubimkin). Closes: #584572.
+  * libstdc++6, libobjc2, libgfortran3, libmudflap0, libgomp1: Breaks
+    pre-multiarch gcc. Closes: #651550.
+  * libstdc++6: Lower priority from required to important. Closes: #661118.
+
+  [Samuel Thibault]
+  * Remove local patch, integrated upstream. Closes: ##661859.
+
+ -- Matthias Klose <doko at debian.org>  Fri, 02 Mar 2012 18:42:56 +0100
+
+gcc-4.7 (4.7-20120210-1) experimental; urgency=low
+
+  * GCC-4.7 snapshot build, taken from the trunk 20120210 (r184114).
+  * kbsd-gnu.diff: Remove, integrated upstream.
+  * Strip whitespace from with_libssp definition. Closes: #653255.
+  * Remove soft-float symbols from 64bit powerpc libgcc1 symbols files.
+  * Fix control file generation for cross packages. LP: #913734.
+
+ -- Matthias Klose <doko at debian.org>  Fri, 10 Feb 2012 21:38:12 +0100
+
+gcc-4.7 (4.7-20120205-1) experimental; urgency=low
+
+  * GCC-4.7 snapshot build, taken from the trunk 20120205 (r183903).
+  * Enable Go on arm*, ia64, mips*, powerpc, s390*, sparc*.
+  * libgo: Fix ioctl macro extracton.
+  * Fix PR middle-end/52074, ICE in libgo on powerpc.
+  * Revert: * Install static libc++{98,11} libraries.
+  * Don't strip a `/' sysroot from the C++ include directories.
+    Closes: #658442.
+
+ -- Matthias Klose <doko at debian.org>  Sun, 05 Feb 2012 09:16:03 +0100
+
+gcc-4.7 (4.7-20120129-1) experimental; urgency=low
+
+  * GCC-4.7 snapshot build, taken from the trunk 20120129 (r183674).
+  * Configure --with-sysroot for wheezy and sid.
+  * Install static libc++{98,11} libraries.
+  * Install libstdc++ gdb.py file into /usr/lib/debug.
+  * Just copy libstdc++convenience.a for the libstdc++_pic installation.
+  * Remove trailing dir separator from system root.
+
+ -- Matthias Klose <doko at debian.org>  Sun, 29 Jan 2012 08:19:27 +0100
+
+gcc-4.7 (4.7-20120121-1) experimental; urgency=low
+
+  * GCC-4.7 snapshot build, taken from the trunk 20120121 (r183370).
+
+  [ Matthias Klose ]
+  * Fix C++ include paths when configured --with-system-root.
+
+  [ Marcin Juszkiewicz ]
+  * Fix control file generation for ARM multiarch cross builds.
+
+ -- Matthias Klose <doko at debian.org>  Sat, 21 Jan 2012 20:24:29 +0100
+
+gcc-4.7 (4.7-20120107-1) experimental; urgency=low
+
+  * GCC-4.7 snapshot build, taken from the trunk 20120107 (r182981).
+
+  * On armel/armhf, allow g*-multilib installation using the runtime
+    libraries of the corresponding multiarch architecture.
+  * Fix location of .jinfo files. Addresses: #654579.
+  * Replace Fortran 95 with Fortran in package descriptions.
+
+ -- Matthias Klose <doko at debian.org>  Sat, 07 Jan 2012 21:24:56 +0100
+
+gcc-4.7 (4.7-20111231-1) experimental; urgency=low
+
+  * GCC-4.7 snapshot build, taken from the trunk 20111231 (r182754).
+
+  [ Aurelien Jarno ]
+  * Re-enable parallel builds on kfreebsd-i386, as the problem from bug
+    #637236 only affects kfreebsd-amd64.
+
+  [ Matthias Klose ]
+  * Fix generating libphobos dependency for gdc. Addresses: #653078.
+  * Link libmudflapth.so with -lpthread.
+
+ -- Matthias Klose <doko at debian.org>  Sat, 31 Dec 2011 09:42:13 +0100
+
+gcc-4.7 (4.7-20111222-1) experimental; urgency=low
+
+  * Update to SVN 20111222 (r182617) from the trunk.
+
+  [Matthias Klose]
+  * Remove obsolete ARM patch.
+  * Install loongson.h header.
+  * Update libgcc and libstdc++ symbols files.
+
+  [Samuel Thibault]
+  * Update hurd patch for 4.7, fixing build failure. Closes: #652693.
+
+  [Robert Millan]
+  * Update kbsd-gnu.diff for the trunk.
+
+ -- Matthias Klose <doko at debian.org>  Thu, 22 Dec 2011 10:52:01 +0100
+
+gcc-4.7 (4.7-20111217-2) experimental; urgency=low
+
+  * Don't provide 4.6.x symlinks.
+  * Disable multilib for armhf.
+  * Fix spu installation.
+
+ -- Matthias Klose <doko at debian.org>  Sun, 18 Dec 2011 17:22:10 +0100
+
+gcc-4.7 (4.7-20111217-1) experimental; urgency=low
+
+  * GCC-4.7 snapshot build.
+    - Including the GFDL documentation; will stay in experimental
+      until the 4.7.0 release sometime next year.
+  * Update patches for the trunk.
+  * Update symbols files.
+  * Build libitm packages.
+
+ -- Matthias Klose <doko at debian.org>  Sat, 17 Dec 2011 23:19:46 +0100
+
+gcc-4.6 (4.6.2-9) unstable; urgency=medium
+
+  * Update to SVN 20111217 (r182430) from the gcc-4_6-branch.
+    - Fix PR c++/51331.
+  * Fix build dependencies for armel/armhf.
+
+ -- Matthias Klose <doko at debian.org>  Sat, 17 Dec 2011 10:40:26 +0100
+
+gcc-4.6 (4.6.2-8) unstable; urgency=low
+
+  * Update to SVN 20111216 (r182407) from the gcc-4_6-branch.
+    - Fix PR tree-optimization/51485, PR tree-optimization/50569, PR c++/51248,
+      PR c++/51406, PR c++/51161, PR rtl-optimization/49720, PR fortran/50923,
+      PR fortran/51338, PR fortran/51550, PR fortran/47545, PR fortran/49050,
+      PR fortran/51075.
+
+  [ Matthias Klose ]
+  * gdc-4.6: Provide <gnu-triplet>-{gdc,gdmd}-4.6 symlinks.
+
+  [Ludovic Brenta]
+  Merge from gnat-4.6 (4.6.2-2) unstable; urgency=low
+  [Євгеній Мещеряков]
+  * debian/patches/pr47818.diff: new.  Fixes: #614402.
+  * debian/rules.patch: apply it.
+
+  Merge from gnat-4.6 (4.6.2-1) unstable; urgency=low
+  [Ludovic Brenta]
+  * Suggest ada-reference-manual-{html,info,pdf,text} instead of just
+    ada-reference-manual which no longer exists.
+  * Do not suggest gnat-gdb, superseded by gdb.
+  * Downgrade libgnat{vsn,prj}4.6-dev to priority extra; they conflict
+    with their 4.4 counterparts and priority optional packages may not
+    conflict with one another, per Policy 2.5.
+
+ -- Matthias Klose <doko at debian.org>  Fri, 16 Dec 2011 16:59:30 +0100
+
+gcc-4.6 (4.6.2-7) unstable; urgency=medium
+
+  * Update to SVN 20111210 (r182189) from the gcc-4_6-branch.
+    - Fix PR rtl-optimization/51469, PR tree-optimization/51466,
+      PR tree-optimization/50078, PR target/51408, PR fortran/51310,
+      PR fortran/51448.
+
+ -- Matthias Klose <doko at debian.org>  Sat, 10 Dec 2011 20:12:33 +0100
+
+gcc-4.6 (4.6.2-6) unstable; urgency=low
+
+  * Update to SVN 20111208 (r182120) from the gcc-4_6-branch.
+    - Fix PR c++/51265, PR bootstrap/50888, PR target/51393 (ix86),
+      PR target/51002 (AVR), PR target/51345 (AVR), PR debug/48190,
+      PR fortran/50684, PR fortran/51218, PR target/50906 (closes: #650318),
+      PR tree-optimization/51315 (closes: #635126), PR tree-optimization/50622,
+      PR fortran/51435, PR debug/51410, PR c/51339, PR rtl-optimization/48721,
+      PR middle-end/51323 (LP: #897583), PR middle-end/50074,
+      PR middle-end/50074.
+
+  [ Matthias Klose ]
+  * Run the libstdc++ testsuite on all architectures again. Closes: #622699.
+  * Apply proposed patch for PR target/50906 (powerpcspe only). Closes: #650318.
+  * Fix PR target/49030 (ARM), taken from Linaro. Closes: #633479.
+  * Fix PR target/50193 (ARM), taken from Linaro. Closes: #642127.
+  * Install the libstdc++.so-gdb.py file. LP: #883269.
+  * Fix PR c++/50114, backport from trunk. LP: #827806.
+  * Merge changes to allow gcc-snapshot cross builds, taken from Linaro.
+  * Update the Linaro support to the 4.6 branch.
+
+  [ Marcin Juszkiewicz ]
+  * Fix issues with gcc-snapshot cross builds.
+  * Allow building Linaro binary packages in a single package.
+  * Apply hardening patches for cross builds when enabled for native builds.
+
+ -- Matthias Klose <doko at debian.org>  Thu, 08 Dec 2011 17:14:35 +0100
+
+gcc-4.6 (4.6.2-5) unstable; urgency=low
+
+  * Update to SVN 20111121 (r181596) from the gcc-4_6-branch.
+    - Fix PR c++/50870, PR c++/50608, PR target/47997, PR target/48108,
+      PR target/45233, PR middle-end/51077, PR target/30282, PR c++/50608,
+      PR target/50979, PR target/4810, PR rtl-optimization/51187,
+      PR target/50493, PR target/49992, PR target/49641, PR c++/51150,
+      PR target/50678, PR libstdc++/51142, PR libstdc++/51133.
+
+  [ Matthias Klose ]
+  * Use the default gcc as stage1 compiler for all architectures.
+
+  [ Marcin Juszkiewicz ]
+  * debian/control.m4: Use BASEDEP in more places.
+  * Work around debhelper not calling the correct strip for cross builds.
+  * Drop dpkg-cross build dependency for cross builds.
+
+ -- Matthias Klose <doko at debian.org>  Mon, 21 Nov 2011 22:26:49 +0100
+
+gcc-4.6 (4.6.2-4) unstable; urgency=low
+
+  * Update to SVN 20111103 (r180830) from the gcc-4_6-branch.
+    - Fix PR target/50691, PR c++/50901, PR target/50945,
+      PR rtl-optimization/47918, PR libstdc++/50880.
+
+  * Configure the armel build by explicitly passing --with-arch=armv4t
+    --with-float=soft.
+  * libffi: Simplify PowerPC assembly and avoid CPU-specific string
+    instructions (Kyle Moffett).
+  * Fix MULTIARCH_DIRNAME on powerpcspe (Kyle Moffett). Closes: #647324.
+
+ -- Matthias Klose <doko at debian.org>  Thu, 03 Nov 2011 12:03:41 -0400
+
+gcc-4.6 (4.6.2-3) unstable; urgency=low
+
+  * disable parallel builds on kfreebsd-* even if DEB_BUILD_OPTIONS
+    enables them (continued investigation for #637236).
+
+ -- Ludovic Brenta <lbrenta at debian.org>  Sat, 29 Oct 2011 00:42:46 +0200
+
+gcc-4.6 (4.6.2-2) unstable; urgency=low
+
+  * Update to SVN 20111028 (r180603) from the gcc-4_6-branch.
+    - Fix PR target/50875.
+
+  * Fix gcj, gdc and gnat builds, broken by the stage1 cross-compiler
+    package dependency fixes.
+  * Update the Linaro support to the 4.6 branch.
+  * Fix gcc-4.6-hppa64 installation. Closes: #646805.
+  * For ARM hard float, set the dynamic linker to
+    /lib/arm-linux-gnueabihf/ld-linux.so.3.
+  * Don't use parallel builds on kfreebsd.
+
+ -- Matthias Klose <doko at debian.org>  Fri, 28 Oct 2011 16:36:55 +0200
+
+gcc-4.6 (4.6.2-1) unstable; urgency=low
+
+  * GCC 4.6.2 release.
+
+  * Fix libgcc installation into /usr/lib/gcc/<triplet>/4.6. Closes: #645021.
+  * Fix stage1 cross-compiler package dependencies (Kyle Moffett).
+    Closes: #644439.
+
+ -- Matthias Klose <doko at debian.org>  Wed, 26 Oct 2011 13:10:44 +0200
+
+gcc-4.6 (4.6.1-16) unstable; urgency=medium
+
+  * Update to SVN 20111019 (r180208) from the gcc-4_6-branch.
+    - Fix PR target/49967 (ia64), PR tree-optimization/50189, PR fortran/50273,
+      PR tree-optimization/50700, PR c/50565 (closes: #642144),
+      PR target/49965 (sparc), PR middle-end/49801, PR c++/49216,
+      PR c++/49855, PR c++/49896, PR c++/44473, PR c++/50611, PR fortran/50659,
+      PR tree-optimization/50723, PR tree-optimization/50712, PR obj-c++/48275,
+      PR c++/50618, PR fortran/47023, PR fortran/50570, PR fortran/50718,
+      PR libobjc/49883, PR libobjc/50002, PR target/50350, PR middle-end/50386,
+      PR middle-end/50326, PR target/50737, PR c++/50787, PR c++/50531,
+      PR fortran/50016, PR target/50737.
+
+  [ Matthias Klose ]
+  * Fix libjava installation into /usr/lib/gcc/<triplet>/4.6.
+  * Fix powerpc and ppc64 libffi builds (Kyle Moffett).
+  * Apply proposed patch for PR target/50350. Closes: #642313.
+  * Re-apply the fix for PR tree-optimization/49911 on ia64.
+  * Apply proposed patch for PR target/50106 (ARM).
+
+  [Xavier Grave]
+  * debian/patches/address-clauses-timed-entry-calls.diff: new; backport
+    bug fix about address clauses and timed entry calls.
+
+  [Ludovic Brenta]
+  * debian/patches/ada-kfreebsd-gnu.diff: new; provide dummy
+    implementations of some optional POSIX Threads functions missing in
+    GNU/kFreeBSD. Closes: #642128.
+
+ -- Matthias Klose <doko at debian.org>  Thu, 20 Oct 2011 00:24:13 +0200
+
+gcc-4.6 (4.6.1-15) unstable; urgency=low
+
+  * Update to SVN 20111010 (r179753) from the gcc-4_6-branch.
+    - Fix PR target/50652.
+  * Update the Linaro support to the 4.6-2011.10-1 release.
+  * Fix gcc-spu installation.
+  * Restore symlink for subminor GCC version. Closes: #644849.
+
+ -- Matthias Klose <doko at debian.org>  Mon, 10 Oct 2011 17:10:40 +0200
+
+gcc-4.6 (4.6.1-14) unstable; urgency=low
+
+  * Update to SVN 20111008 (r179710) from the gcc-4_6-branch.
+    - Fix PR inline-asm/50571, PR c++/46105, PR c++/50508, PR libstdc++/50529,
+      PR libstdc++/49559, PR c++/40831, PR fortran/48706, PR target/49049,
+      PR tree-optimization/49279, PR fortran/50585, PR fortran/50625,
+      PR libstdc++/48698.
+
+  [ Matthias Klose ]
+  * Configure and build to install into /usr/lib/gcc/<triplet>/4.6.
+    Closes: #643891.
+  * libgcc1: Versioned break to gcc-4.3.
+  * Fix gcc-multiarch for i386-linux-gnu with disabled multilibs.
+  * libffi: Fix PowerPC soft-floating-point support (Kyle Moffett).
+
+  [ Marcin Juszkiewicz ]
+  * Enable gcc-snapshot cross builds.
+
+  [ Iain Buclaw ]
+  * Port gdc to GCC-4.6.
+
+  [ Aurelien Jarno ]
+  * Backport fix for PR target/49696 from the trunk (Closes: #633443).
+
+ -- Matthias Klose <doko at debian.org>  Sat, 08 Oct 2011 14:40:49 +0200
+
+gcc-4.6 (4.6.1-13) unstable; urgency=low
+
+  * Update to SVN 20110926 (r179207) from the gcc-4_6-branch.
+    - Fix PR tree-optimization/50472, PR tree-optimization/50413,
+      PR tree-optimization/50412, PR c++/20039, PR c++/42844,
+      PR libstdc++/50510, PR libstdc++/50509.
+  * Revert the fix for PR tree-optimization/49911, bootstrap error on ia64.
+  * libffi: Define FFI_MMAP_EXEC_WRIT on kfreebsd-* (Petr Salinger).
+
+ -- Matthias Klose <doko at debian.org>  Mon, 26 Sep 2011 19:59:55 +0200
+
+gcc-4.6 (4.6.1-12) unstable; urgency=low
+
+  * Update to SVN 20110924 (r179140) from the gcc-4_6-branch.
+    - Fix PR target/50464, PR target/50341, PR middle-end/49886,
+      PR target/50091, PR c++/50491, PR c++/50442 (Closes: #642176).
+
+ -- Matthias Klose <doko at debian.org>  Sat, 24 Sep 2011 10:39:32 +0200
+
+gcc-4.6 (4.6.1-11) unstable; urgency=low
+
+  * Update to SVN 20110917 (r178926) from the gcc-4_6-branch.
+    - Fix PR c++/50424, PR c++/48320, PR fortran/49479.
+
+  [ Matthias Klose ]
+  * Update the Linaro support to the 4.6-2011.09-1 release.
+
+  [ Aurelien Jarno ]
+  * gcc.c (for_each_path): Allocate memory for multiarch suffix.
+
+ -- Matthias Klose <doko at debian.org>  Sat, 17 Sep 2011 10:53:36 +0200
+
+gcc-4.6 (4.6.1-10) unstable; urgency=medium
+
+  * Update to SVN 20110910 (r178746) from the gcc-4_6-branch.
+    - Fix PR middle-end/50266, PR tree-optimization/49911,
+      PR tree-optimization/49518, PR tree-optimization/49628,
+      PR tree-optimization/49628, PR target/50310, PR target/50289,
+      PR c++/50255, PR c++/50309, PR c++/49267, PR libffi/49594.
+    - Revert fix for PR middle-end/49886, causing PR middle-end/50295.
+
+ -- Matthias Klose <doko at debian.org>  Sat, 10 Sep 2011 03:38:48 +0200
+
+gcc-4.6 (4.6.1-9) unstable; urgency=low
+
+  * Update to SVN 20110903 (r178501) from the gcc-4_6-branch.
+    - Fix PR target/50090, PR middle-end/50116, PR target/50202, PR c/50179,
+      PR c++/50157, PR fortran/50163, PR libfortran/50192,
+      PR middle-end/49886, PR tree-optimization/50178, PR c++/50207,
+      PR c++/50089, PR c++/50220, PR c++/50234, PR c++/50224,
+      PR libstdc++/50268.
+
+  [ Matthias Klose ]
+  * Fix gcc --print-multilib-osdir for non-biarch architectures.
+  * Fix multiarch for non-biarch builds. Closes: #635860.
+  * Move the lto plugin to the cpp packge. Closes: #639531.
+
+  [ Thorsten Glaser ]
+  * [m68k] Disable multilib. Closes: #639303.
+
+ -- Matthias Klose <doko at debian.org>  Sat, 03 Sep 2011 20:11:50 +0200
+
+gcc-4.6 (4.6.1-8) unstable; urgency=low
+
+  * Update to SVN 20110824 (r178027) from the gcc-4_6-branch.
+    Fix PR fortran/49792, PR tree-optimization/48739, PR target/50092,
+    PR c++/50086, PR c++/50054, PR fortran/50050, PR fortran/50130,
+    PR fortran/50129, PR fortran/49792, PR fortran/50109, PR c++/50024,
+    PR c++/46862.
+
+  * Properly disable multilib builds for selected libraries on armel and armhf.
+  * Update and re-enable the gcc-ice patch.
+  * Update and re-enable the gcc-cloog-dl patch.
+  * Fix [ARM] PR target/50090: aliases in libgcc.a with default visibility,
+    taken from the trunk.
+  * Re-work the multiarch patches.
+  * Break older gcj-4.6 and gnat-4.6 versions, changed gcc_lib_dir.
+  * Omit the target alias from the go libdir.
+  * Linaro updates from the 4.6-2011.07-stable branch.
+  * Revert:
+    - libjava: Build with the system libffi PIC library.
+  * For native builds, gcc -print-file-name now resolve . and ..,
+    and removes the subminor version number.
+
+ -- Matthias Klose <doko at debian.org>  Wed, 24 Aug 2011 10:22:42 +0200
+
+gcc-4.6 (4.6.1-7) unstable; urgency=low
+
+  * Update to SVN 20110816 (r177780) from the gcc-4_6-branch.
+    - Fix PR middle-end/49923.
+
+  [ Matthias Klose ]
+  * gcc-4.6-multilib: Depend on biarch quadmath library. Closes: #637174.
+  * Don't hard-code build dependency on gcc-multilib.
+  * Build-depends on python when building java.
+  * Fix thinko in java::lang::Class::finalize (taken from the trunk).
+  * Add support for ARM 64bit sync intrinsics (David Gilbert). Only
+    enable for armv7 or better.
+  * libjava: Build with the system libffi PIC library.
+  * Disable gnat multilib builds on armel and armhf.
+
+  Merge from gnat-4.6 (4.6.1-4) unstable; urgency=low
+
+  [Ludovic Brenta]
+  * debian/patches/ada-symbolic-tracebacks.diff
+    (src/gcc/ada/gcc-interface/Makefile.in): pass -iquote instead of -I-
+    to gnatgcc; fixes FTBFS on i386 and closes: #637418.
+
+  Merge from gnat-4.6 (4.6.1-3) unstable; urgency=low
+
+  [Євгеній Мещеряков]
+  * debian/patches/ada-mips.diff: do not use the alternate stack on mips,
+    as on mipsel.  Closes: #566234.
+
+  [Ludovic Brenta]
+  * debian/patches/pr49940.diff: new; copy the definition of function
+    lwp_self from s-osinte-freebsd.ads to s-osinte-kfreebsd-gnu.ads.
+    Closes: #636291.
+  * debian/patches/pr49944.diff: new.  Closes: #636692.
+  * debian/patches/pr49819.diff: drop, merged upstream.
+
+ -- Matthias Klose <doko at debian.org>  Tue, 16 Aug 2011 13:11:25 +0200
+
+gcc-4.6 (4.6.1-6) unstable; urgency=low
+
+  * Update to SVN 20110807 (r177547) from the gcc-4_6-branch.
+    - Fix PR rtl-optimization/49799, PR debug/49871, PR target/47364,
+      PR target/49866, PR tree-optimization/49671, PR target/39386,
+      PR ada/4981, PR fortran/45586, PR fortran/49791, PR middle-end/49897,
+      PR middle-end/49898, PR target/49920, PR target/47908 (closes: #635919),
+      PR c++/43886, PR c++/49593, PR c++/49803, PR c++/49924, PR c++/49260,
+      PR fortran/49885, PR fortran/48876, PR libstdc++/49925, PR target/50001,
+      PR tree-optimization/49948, PR c++/48993, PR c++/49921, PR c++/49669,
+      PR c++/49988, PR fortran/49112.
+
+  [ Aurelien Jarno ]
+  * Update patches/kbsd-gnu.diff for recent changes. Closes: #635195.
+  * Add s390x support.
+
+  [ Marcin Juszkiewicz ]
+  * Fixes for multilib cross builds. LP: #816852, #819147.
+
+  [ Matthias Klose ]
+  * Fix libgo installation for cross builds.
+  * Only apply arm-multilib when building for multilib.
+
+ -- Matthias Klose <doko at debian.org>  Sun, 07 Aug 2011 18:20:00 +0200
+
+gcc-4.6 (4.6.1-5) unstable; urgency=low
+
+  * Update to SVN 20110723 (r176672) from the gcc-4_6-branch.
+    - Fix PR target/49541, PR tree-optimization/49768, PR middle-end/49675,
+      PR target/49746, PR middle-end/49732, PR tree-optimization/49725,
+      PR target/49723, PR target/49541, PR tree-opt/49309, PR c++/49785,
+      PR ada/48711, PR ada/46350, PR fortran/49648, PR testsuite/49753,
+      PR tree-optimization/49309, PR tree-optimization/45819, PR target/49600,
+      PR fortran/49708, PR libstdc++/49293.
+  * Update the Linaro support to the 4.6-2011.07-0 release.
+    - Fix PR target/49335. LP: #791327.
+  * Update gcc-multiarch:
+    - Add -print-multiarch option.
+    - Fix library path for non-default multilib(s).
+    - Handle `.' in MULTILIB_DIRNAMES.
+  * Add support to build multilib on armel and armhf, only enable it for
+    Ubuntu/oneiric. LP: #810360.
+  * cpp-4.6: Add empty multiarch directories for the non-default multilibs,
+    needed for relative lookups from startfile_prefixes.
+  * Fix PR c++/49756, backport from trunk. LP: #721378.
+  * libgcc1: Add breaks to gcc-4.1 and gcc-4.3. Closes: #634821.
+  * Configure for DEB_TARGET_MULTIARCH defaults.
+
+ -- Matthias Klose <doko at debian.org>  Sat, 23 Jul 2011 08:15:50 +0200
+
+gcc-4.6 (4.6.1-4) unstable; urgency=low
+
+  * Update to SVN 20110714 (r176280) from the gcc-4_6-branch.
+    - Fix PR tree-optimization/49094, PR target/39633, PR c++/49672,
+      PR fortran/49698, PR fortran/49690, PR fortran/49562, PR libfortran/49296,
+      PR target/49487, PR tree-optimization/49651, PR ada/48711.
+
+  [ Matthias Klose ]
+  * Build Go on alpha for gcc-snapshot builds.
+  * For multicore ARM, clear both caches, not just the dcache (proposed
+    patch by Andrew Haley).
+  * Fix for PR rtl-optimization/{48830,48808,48792}, taken from the trunk.
+    LP: #807573.
+  * Fix PR tree-optimization/49169, optimisations strip the Thumb/ARM mode bit
+    off function pointers (Richard Sandiford). LP: #721531.
+
+  [ Marcin Juszkiewicz ]
+  * Define DEB_TARGET_MULTIARCH macro.
+  * debian/rules2: Macro and configuration consolidation.
+
+ -- Matthias Klose <doko at debian.org>  Thu, 14 Jul 2011 19:38:49 +0200
+
+gcc-4.6 (4.6.1-3) unstable; urgency=medium
+
+  * Update to SVN 20110709 (r176108) from the gcc-4_6-branch.
+    - Fix PR target/49335, PR tree-optimization/49618, PR c++/49598,
+      PR fortran/49479, PR target/49621, PR target/46779, PR target/49660,
+      PR c/49644, PR debug/49522, PR debug/49522, PR middle-end/49640,
+      PR c++/48157, PR c/49644, PR fortran/48926.
+    - Apparently fixes a boost issue. Closes: #632938.
+  * Apply proposed patch for PR fortran/49690. Closes: #631204.
+
+  * README.Debian: New section 'Former and/or inactive maintainers'.
+
+ -- Matthias Klose <doko at debian.org>  Sun, 10 Jul 2011 00:04:34 +0200
+
+gcc-4.6 (4.6.1-2) unstable; urgency=medium
+
+  * Update to SVN 20110705 (r175840) from the gcc-4_6-branch.
+    - Fix PR target/47997, PR c++/49528, PR c++/49440, PR c++/49418,
+      PR target/44643, PR tree-optimization/49615, PR tree-optimization/49572,
+      PR target/34734, PR tree-optimization/49539, PR tree-optimizations/49516,
+      PR target/49089, PR rtl-optimization/49014, PR target/48273,
+      PR fortran/49466, PR libfortran/49296, PR libffi/46660, PR debug/49262,
+      PR rtl-optimization/49472, PR rtl-optimization/49619, PR fortran/49623,
+      PR fortran/49540.
+
+  [Ludovic Brenta, Євгеній Мещеряков, Xavier Grave]
+  * Adjust patches to GCC 4.6.
+  * Remove patches merged upstream:
+    - debian/patches/ada-arm-eabi.diff
+    - debian/patches/ada-bug589164.diff
+    - debian/patches/ada-bug601133.diff
+    - debian/patches/ada-gnatvsn.diff
+    - debian/patches/ada-mips.diff
+    - debian/patches/ada-polyorb-dsa.diff
+
+  [Ludovic Brenta]
+  * debian/patches/ada-acats.diff: set LD_LIBRARY_PATH, ADA_INCLUDE_PATH
+    and ADA_OBJECTS_PATH so that the GNAT testsuite runs.
+  * debian/patches/adalibgnat{vsn,prj}.diff,
+    debian/rules.d/binary-ada.mk: install libgnat{vsn,prj}.so.* in the correct
+    multiarch directory.
+  * debian/control.m4, debian/rules.d/binary-ada.mk: move the SJLJ version
+    of the Ada run-time library to a new package, gnat-4.6-sjlj.
+  * debian/control.m4 (libgnatvsn4.6, libgnatvsn4.6-dbg, libgnatprj4.6,
+    libgnatprj4.6-dbg): pre-depend on multiarch-support and add
+    Multi-Arch: same.
+
+  [Nicolas Boulenguez]
+  * debian/rules.d/binary-ada.mk: add gnathtml to the package gnat-4.6.
+  * debian/gnat.1: remove the version number of GCC.  Mention gnathtml.
+
+  [ Matthias Klose ]
+  * Do not install the spu and hppa64 cross compilers into the multiarch path.
+  * Update the Linaro support to 20110704.
+
+  [ Thorsten Glaser ]
+  * Apply changes from src:gcc-4.4 for m68k support. Closes: #632380.
+    - debian/rules.defs: Remove m68k from locale_no_cpus.
+    - debian/patches/gcc-multiarch.diff: Add m68k multiarch_mappings.
+    - debian/patches/pr43804.diff: Fix backported from SVN.
+    - debian/rules.patch: Add pr43804.
+
+ -- Matthias Klose <doko at debian.org>  Tue, 05 Jul 2011 10:45:56 +0200
+
+gcc-4.6 (4.6.1-1) unstable; urgency=low
+
+  * GCC 4.6.1 release.
+
+  [Ludovic Brenta]
+  * debian/patches/ada-gnatvsn.diff,
+    debian/patches/ada-polyorb-dsa.diff: remove backports, no longer
+    needed.
+
+  [ Matthias Klose ]
+  * Fix plugin header installation. Closes: #631082.
+  * Stop passing -Wno-error=unused-but-set-parameter and
+    -Wno-error=unused-but-set-variable if -Werror is present.
+    This was a temporary workaround introduced in 4.6.0~rc1-2. Closes: #615157.
+  * gcc-4.6-spu: Install the lto plugin. Closes: #631772.
+
+ -- Matthias Klose <doko at debian.org>  Mon, 27 Jun 2011 13:54:04 +0200
+
+gcc-4.6 (4.6.0-14) unstable; urgency=low
+
+  * Update to SVN 20110616 (r175102) from the gcc-4_6-branch.
+    - Fix PR debug/48459, PR fortran/49103, PR rtl-optimization/49390,
+      PR c++/49117, PR c++/49369, PR c++/49290, PR target/44618,
+      PR tree-optimization/49419 (closes: #630567).
+  * Update the Linaro support to the 4.6-2011.06-0 release.
+
+ -- Matthias Klose <doko at debian.org>  Thu, 16 Jun 2011 16:10:33 +0200
+
+gcc-4.6 (4.6.0-13) unstable; urgency=low
+
+  * Update to SVN 20110611 (r174958) from the gcc-4_6-branch.
+  * Extend multiarch support for mips/mipsel.
+  * Fix control files for gcj multiarch builds.
+  * Update libstdc++ symbols files.
+
+ -- Matthias Klose <doko at debian.org>  Sat, 11 Jun 2011 20:49:42 +0200
+
+gcc-4.6 (4.6.0-12) unstable; urgency=medium
+
+  * Update to SVN 20110608 (r174800) from the gcc-4_6-branch.
+    - PR target/49186, PR rtl-optimization/49235, PR tree-optimization/48702,
+      PR tree-optimization/49243, PR c++/49134, PR target/49238,
+      PR gcov-profile/49299, PR c++/48780, PR c++/49298, PR fortran/49268.
+  * Fix c++ biarch header installation on i386. LP: #793411.
+  * Enable multiarch.
+  * Add multiarch attributes for gnat and libgnat packages.
+  * Add multiarch attributes for libgcj* packages.
+  * Adjust build dependency on multiarch glibc.
+
+ -- Matthias Klose <doko at debian.org>  Wed, 08 Jun 2011 11:26:52 +0200
+
+gcc-4.6 (4.6.0-11) unstable; urgency=low
+
+  * Update to SVN 20110604 (r174637) from the gcc-4_6-branch.
+    - Fix PR c++/49165, PR tree-optimization/49218, PR target/45263,
+      PR target/43700, PR target/43995, PR tree-optimization/49217,
+      PR c++/49223, PR c++/47049, PR c++/47277, PR c++/48284, PR c++/48657,
+      PR c++/49176, PR fortran/48955, PR tree-optimization/49038,
+      PR tree-optimization/49093, PR middle-end/48985, PR middle-end/48953,
+      PR c++/49276, PR fortran/49265, PR fortran/45786.
+  * Configure the hppa64 and spu cross builds with --enable-plugin.
+
+ -- Matthias Klose <doko at debian.org>  Sat, 04 Jun 2011 16:12:27 +0200
+
+gcc-4.6 (4.6.0-10) unstable; urgency=high
+
+  * Update to SVN 20110526 (r174290) from the gcc-4_6-branch.
+    - Fix PR target/44643, PR c++/49165, PR tree-optimization/49161,
+      PR target/49128, PR tree-optimization/44897, PR target/49133,
+      PR c++/44994, PR c++/49156, PR c++/45401, PR c++/44311, PR c++/44311,
+      PR c++/45698, PR c++/46145, PR c++/46245, PR c++/46696, PR c++/47184,
+      PR c++/48935, PR c++/45418, PR c++/45080, PR c++/48292, PR c++/49136,
+      PR c++/49042, PR c++/48884, PR c++/49105, PR c++/47263, PR c++/47336,
+      PR c++/47544, PR c++/48617, PR c++/48424, PR libstdc++/49141,
+      PR libobjc/48177.
+  * Proposed fix for PR tree-optimization/48702, PR tree-optimization/49144.
+    Closes: #627795.
+  * Proposed fix for PR fortran/PR48955.
+  * Add some conditionals to build the package on older releases.
+
+ -- Matthias Klose <doko at debian.org>  Thu, 26 May 2011 16:00:49 +0200
+
+gcc-4.6 (4.6.0-9) unstable; urgency=low
+
+  * Update to SVN 20110524 (r174102) from the gcc-4_6-branch.
+    - Fix PR lto/49123, PR debug/49032, PR c/49120, PR middle-end/48973,
+      PR target/49104, PR middle-end/49029, PR c++/48647, PR c++/48945,
+      PR c++/48780, PR c++/49066, PR libstdc++/49058, PR target/49104.
+  * Use gcc-4.4 as the bootstrap compiler for kfreebsd to work around
+    a bootstrap issue.
+
+ -- Matthias Klose <doko at debian.org>  Tue, 24 May 2011 09:41:35 +0200
+
+gcc-4.6 (4.6.0-8) unstable; urgency=low
+
+  * Update to SVN 20110521 (r173994) from the gcc-4_6-branch.
+    - Fix PR target/48986, PR preprocessor/48677, PR tree-optimization/48975,
+      PR tree-optimization/48822, PR debug/48967, PR debug/48159,
+      PR target/48857, PR target/48495, PR tree-optimization/48837,
+      PR tree-optimization/48611, PR tree-optimization/48794, PR c++/48859,
+      PR c++/48574, PR fortran/48889, PR target/49002, PR lto/48207,
+      PR tree-optimization/49039, PR tree-optimization/49018, PR lto/48703,
+      PR tree-optimization/48172, PR tree-optimization/48172, PR c++/48873,
+      PR tree-optimization/49000, PR c++/48869, PR c++/49043, PR c++/49082,
+      PR c++/48948, PR c++/48745, PR c++/48736, PR bootstrap/49086,
+      PR tree-optimization/49079, PR tree-optimization/49073.
+  * Update the Linaro support to the 4.6-2011.05-0 release.
+  * pr45979.diff: Update to the version from the trunk.
+
+ -- Matthias Klose <doko at debian.org>  Sat, 21 May 2011 12:19:10 +0200
+
+gcc-4.6 (4.6.0-7) unstable; urgency=low
+
+  * Update to SVN 20110507 (r173528) from the gcc-4_6-branch.
+    - Fix PR middle-end/48597, PR c++/48656, PR fortran/48112,
+      PR fortran/48279, PR fortran/48788, PR tree-optimization/48809,
+      PR target/48262, PR fortran/48462, PR fortran/48746,
+      PR fortran/48810, PR fortran/48800, PR libstdc++/48760,
+      PR libgfortran/48030, PR preprocessor/48192, PR lto/48846,
+      PR target/48723, PR fortran/48894, PR target/48900, PR target/48252,
+      PR c++/40975, PR target/48252, PR target/48774, PR c++/48838,
+      PR c++/48749, PR ada/48844, PR fortran/48720, PR libstdc++/48750,
+      PR c++/48909, PR c++/48911, PR c++/48446, PR c++/48089.
+
+  * Fix issue with volatile bitfields vs. inline asm memory constraints,
+    taken from the trunk, apply for ARM only. Addresses: #625825.
+
+ -- Matthias Klose <doko at debian.org>  Sat, 07 May 2011 14:54:51 +0200
+
+gcc-4.6 (4.6.0-6) unstable; urgency=low
+
+  * Update to SVN 20110428 (r173059) from the gcc-4_6-branch.
+    - Fix PR c/48685 (closes: #623161), PR tree-optimization/48717, PR c/48716,
+      PR c/48742, PR debug/48768, PR tree-optimization/48734,
+      PR tree-optimization/48731, PR other/48748, PR c++/42687, PR c++/48726,
+      PR c++/48707, PR fortran/48588, PR libstdc++/48521, PR c++/48046,
+      PR preprocessor/48740.
+  * Update the ibm/gcc-4_6-branch to 20110428.
+  * Use gcc-4.6 as bootstrap compiler on kfreebsd-*.
+
+ -- Matthias Klose <doko at debian.org>  Thu, 28 Apr 2011 10:33:52 +0200
+
+gcc-4.6 (4.6.0-5) unstable; urgency=low
+
+  * Update to SVN 20110421 (r172845) from the gcc-4_6-branch.
+    - Fix PR target/48288, PR tree-optimization/48611, PR lto/48148,
+      PR lto/48492, PR fortran/47976, PR c++/48594, PR c++/48657,
+      PR c++/46304, PR target/48708, PR middle-end/48695.
+
+  * Update the Linaro support to the 4.6-2011.04-0 release.
+
+ -- Matthias Klose <doko at debian.org>  Thu, 21 Apr 2011 22:50:25 +0200
+
+gcc-4.6 (4.6.0-4) unstable; urgency=medium
+
+  * Update to SVN 20110419 (r172584) from the gcc-4_6-branch.
+    - Fix PR target/48678, PR middle-end/48661, PR tree-optimization/48616,
+      PR lto/48538, PR c++/48537, PR c++/48632, PR testsuite/48675,
+      PR libstdc++/48635, PR libfortran/47571.
+
+  [ Aurelien Jarno ]
+  * Enable SSP on mips/mipsel.
+
+  [ Matthias Klose ]
+  * (Build-)depend on binutils 2.21.51.
+
+ -- Matthias Klose <doko at debian.org>  Tue, 19 Apr 2011 23:45:16 +0200
+
+gcc-4.6 (4.6.0-3) unstable; urgency=high
+
+  * Update to SVN 20110416 (r172584) from the gcc-4_6-branch.
+    - Fix PR rtl-optimization/48143, PR target/48142, PR target/48349,
+      PR debug/48253, PR fortran/48291, PR target/16292, PR c++/48280,
+      PR c++/48212, PR c++/48369, PR c++/48281, PR c++/48265, PR lto/48246,
+      PR libstdc++/48398, PR bootstrap/48431, PR tree-optimization/48377,
+      PR debug/48343, PR rtl-optimization/48144, PR debug/48466, PR c/48517,
+      PR middle-end/48335, PR c++/48450, PR target/47829, PR c++/48534,
+      PR c++/48523, PR libstdc++/48566, PR libstdc++/48541, PR target/48366,
+      PR libstdc++/48465, PR middle-end/48591, PR target/48605,
+      PR middle-end/48591, PR target/48090, PR tree-optimization/48195,
+      PR rtl-optimization/48549, PR c++/48594, PR c++/48570, PR c++/48574,
+      PR fortran/48360, PR fortran/48456, PR libstdc++/48631,
+      PR libstdc++/48635, PR libstdc++/48476.
+
+  [ Matthias Klose ]
+  * libjava-jnipath.diff: Add /usr/lib/<multiarch>/jni as jnipath too.
+  * Add mudflap support for varargs (patch taken from the trunk).
+  * gcc-4.6-plugin-dev: Install gtype.state.
+  * Bootstrap with gcc-4.4 -g -O2 on armel.
+  * Fix linker plugin configuration. Closes: #620661.
+  * Update the Linaro support for GCC-4.6.
+  * gcc-snapshot builds:
+    - Fix build with multiarch changes.
+    - Use gcc-snapshot as the bootstrap compiler on armel.
+    - Re-enable building java in the gcc-snapshot package.
+  * Build supporting multiarch on wheezy/sid.
+  * Adjust (build)-dependency to new libgmp-dev name.
+
+  [ Marcin Juszkiewicz ]
+  * Configure stage1 cross builds with --disable-libquadmath.
+
+ -- Matthias Klose <doko at debian.org>  Sat, 16 Apr 2011 17:02:30 +0200
+
+gcc-4.6 (4.6.0-2) unstable; urgency=low
+
+  * Update to SVN 20110329 (r171700) from the gcc-4_6-branch.
+    - Fix PR bootstrap/48135, PR target/47553, PR middle-end/48269,
+      PR tree-optimization/48228, PR middle-end/48134, PR middle-end/48031,
+      PR other/48179, PR other/48221, PR other/48234, PR target/48237,
+      PR debug/48204, PR c/42544, PR c/48197, PR rtl-optimization/48141,
+      PR rtl-optimization/48141, PR c++/48166, PR c++/48296, PR c++/48289,
+      PR c++/47999, PR c++/48313, Core 1232, Core 1148, PR c++/47504,
+      PR c++/47570, PR preprocessor/48248, PR c++/48319.
+
+  [ Matthias Klose ]
+  * Update NEWS files.
+  * Configure the hppa64 cross build with --disable-libquadmath.
+  * Don't build armhf from the Linaro branch.
+  * Don't try to build Go on sh4.
+
+  [ Marcin Juszkiewicz ]
+  * Fixes issues with staged cross builds. LP: #741855, #741853.
+  * Fix libdir setting for multiarch enabled cross builds. LP: #741846.
+  * Drop alternatives for cross builds. LP: #676454.
+
+ -- Matthias Klose <doko at debian.org>  Tue, 29 Mar 2011 23:22:07 +0200
+
+gcc-4.6 (4.6.0-1) unstable; urgency=low
+
+  * GCC 4.6.0 release.
+
+  * Build the gold LTO plugin for ppc64 (Hiroyuki Yamamoto). Closes: #618865.
+  * Fix PR target/48226, Allow Iterator::vector vector on powerpc with VSX,
+    taken from the trunk.
+  * Fix PR target/47487 ICE building libgo, taken from the trunk.
+  * Merge multiarch changes from the gcc-4.5 package.
+  * Apply proposed patch to reduce the overhead of dwarf2 location tracking.
+    Addresses: #618748.
+
+ -- Matthias Klose <doko at debian.org>  Sat, 26 Mar 2011 03:03:21 +0100
+
+gcc-4.6 (4.6.0~rc1-3) experimental; urgency=low
+
+  * GCC 4.6.0 release candidate 2.
+
+ -- Matthias Klose <doko at debian.org>  Tue, 22 Mar 2011 22:11:42 +0100
+
+gcc-4.6 (4.6.0~rc1-2) experimental; urgency=low
+
+  [ Loic Minier ]
+  * Rework config/vxworks-dummy.h installation snippet to test
+    DEB_TARGET_GNU_CPU against patterns close to the upstream ones (arm% mips%
+    sh% sparc%) as to also install this header on other ports targetting the
+    relevant upstream CPUs such as armhf.  Add a comment pointing at the
+    upstream bug.
+  * Update __aeabi symbol handling to test whether DEB_TARGET_GNU_TYPE matches
+    arm-linux-gnueabi% instead of testing whether DEB_TARGET_ARCH equals
+    armel.  Add a comment pointing at the Debian bug and indicating that this
+    is only useful for older dpkg-dev versions.
+  * debian/rules.def: fix "armel" entry to "arm" in list of
+    DEB_TARGET_ARCH_CPUs for Debian experimental GCC 4.5/4.6 libraries.
+  * debian/rules2: drop commented out GCC #42509 workaround as this was fixed
+    upstream in 4.4+.
+  * Change bogus DEB_TARGET_GNU_CPU test on armel and armhf to just test for
+    arm as ths is what the Debian arm, armel and armhf port use.
+  * Rework snippet setting armv7 on Debian armhf / Ubuntu to avoid
+    duplication, as a comment called out for.
+  * Use "arm" instead of armel/armhf in DEB_TARGET_GNU_CPU test when deciding
+    whether to enable profiledbootstrap.
+  * Set DEJAGNU_TIMEOUT=600 on Ubuntu armhf as well.
+  * Fix a couple more uses of armel or armhf against DEB_TARGET_GNU_CPU.
+  * Patched a couple of comments mentioning armel to also mention armhf.
+  * Add patch armhf-triplet-backport, support for arm-linux-*eabi* backported
+    from a patch sent on the upstream mailing-list.
+
+  [ Matthias Klose ]
+  * Update libstdc++ symbols files.
+  * Update libgfortran symbols files.
+
+ -- Matthias Klose <doko at debian.org>  Sun, 20 Mar 2011 13:53:48 +0100
+
+gcc-4.6 (4.6.0~rc1-2) experimental; urgency=low
+
+  * Update to SVN 20110320 (r171192) from the gcc-4_6-branch.
+
+  [ Matthias Klose ]
+  * Update gcc-default-ssp* patches for the release candidate.
+  * Pass -Wno-error=unused-but-set-parameter if -Werror is present (temporary
+    for rebuild tests).
+  * Always configure --with-plugin-ld, always install liblto_plugin.so.
+
+  [ Marcin Juszkiewicz ]
+  * Add conflicts with -4.5-*dev packages. Closes: #618450.
+
+  [ Petr Salinger]
+  * Disable lock-2.c test on kfreebsd-*. Closes: #618988.
+  * Re-enable parallel builds on kfreebsd.
+  * Package lto_plugin for kfreebsd-* and Hurd.
+
+ -- Matthias Klose <doko at debian.org>  Sun, 20 Mar 2011 13:53:48 +0100
+
+gcc-4.6 (4.6.0~rc1-1) experimental; urgency=low
+
+  * Build from the GCC 4.6.0 release candidate tarball.
+
+  [ Matthias Klose ]
+  * Disable Go on powerpc. Closes: #615827.
+  * Fix lintian errors for the -plugin-dev package.
+  * Update kbsd-gnu.diff (Petr Salinger). Closes: #615826.
+  * Disable parallel builds on kfreebsd (Petr Salinger).
+  * Update gmp (build) dependencies.
+  * Update GFDL compliant builds. Closes: #609161.
+  * For GFDL compliant builds, build a dummy s-tm-texi without access
+    to the texinfo sources.
+  
+  [ Aurelien Jarno ]
+  * Import symbol files for kfreebsd-amd64, kfreebsd-i386, sh4 and 
+    sparc64 from gcc-4.5.
+
+ -- Matthias Klose <doko at debian.org>  Mon, 14 Mar 2011 19:01:08 +0100
+
+gcc-4.6 (4.6-20110227-1) experimental; urgency=low
+
+  [ Matthias Klose ]
+  * Update libquadmath symbols file.
+  * gcc-4.6-plugin-dev: Install gengtype.
+
+  [ Sebastian Andrzej Siewior ]
+  * Remove -many on powerpcspe (__SPE__).
+  * Remove classic FPU opcodes from libgcc if target has no support for them
+    (powerpcspe).
+
+ -- Matthias Klose <doko at debian.org>  Sun, 27 Feb 2011 22:33:45 +0100
+
+gcc-4.6 (4.6-20110216-1) experimental; urgency=low
+
+  * GCC snapshot, taken from the trunk.
+  * Pass --no-add-needed by default to the linker. See
+    http://wiki.debian.org/ToolChain/DSOLinking, section "Not resolving symbols
+    in indirect dependent shared libraries" for more information.
+
+ -- Matthias Klose <doko at debian.org>  Wed, 16 Feb 2011 23:55:32 +0100
+
+gcc-4.6 (4.6-20110125-1) experimental; urgency=low
+
+  * debian/copyright: Add unicode copyright for
+    libjava/classpath/resource/gnu/java/locale/* files. Addresses: #609161.
+
+ -- Matthias Klose <doko at debian.org>  Wed, 26 Jan 2011 03:42:10 +0100
+
+gcc-4.6 (4.6-20110123-1) experimental; urgency=low
+
+  * GCC snapshot, taken from the trunk.
+  * Don't run the libstdc++ testsuite on mipsel, times out on the buildd.
+
+  [ Marcin Juszkiewicz ]
+  * Fix biarch/triarch cross builds.
+    - dpkg-shlibdeps failed to find libraries for 64 or n32 builds
+    - LD_LIBRARY_PATH for dpkg-shlibdeps lacked host dirs.
+
+ -- Matthias Klose <doko at debian.org>  Sun, 23 Jan 2011 12:14:49 +0100
+
+gcc-4.6 (4.6-20110116-1) experimental; urgency=low
+
+  * GCC snapshot, taken from the trunk.
+  * Update patches for the trunk.
+  * Pass -Wno-error=unused-but-set-variable if -Werror is present (temporary
+    for rebuild tests).
+  * Work around PR libffi/47248, force a read only eh frame section.
+
+ -- Matthias Klose <doko at debian.org>  Sun, 16 Jan 2011 23:28:28 +0100
+
+gcc-4.6 (4.6-20110105-1) experimental; urgency=low
+
+  [ Matthias Klose ]
+  * Rename and update libobjc symbols files.
+  * Update cloog/ppl build dependencies.
+  * Adjust libstdc++ configure and paths for stylesheets and dtds.
+  * Update copyright for libquadmath, libgo, gcc/go/gofrontend.
+  * Enable Go for more architectures.
+  * DP: libgo: Fix GOARCH for i386 biarch, add GOARCH for powerpc
+
+  [ Kees Cook ]
+  * Update hardening patches for GCC-4.6. LP: #696990.
+
+ -- Matthias Klose <doko at debian.org>  Wed, 05 Jan 2011 22:29:57 +0100
+
+gcc-4.6 (4.6-20101220-1) maverick; urgency=low
+
+  * GCC snapshot, taken from the trunk.
+
+ -- Matthias Klose <doko at ubuntu.com>  Tue, 21 Dec 2010 00:16:19 +0100
+
+gcc-4.5 (4.5.2-7) unstable; urgency=low
+
+  * Update to SVN 20110323 (r171351) from the gcc-4_5-branch.
+    - Fix PR c++/47125, PR fortran/47348, PR libstdc++/48114,
+      PR libfortran/48066, PR target/48171, PR target/47862.
+      PR preprocessor/48192.
+
+  [ Steve Langasek ]
+  * Make dpkg-dev versioned build-dependency conditional on whether we want
+    to build for multiarch.
+  * Add a new patch, gcc-multiarch+biarch.diff, used only when building for
+    multiarch to set our multilib paths to the correct relative directories.
+  * debian/rules.defs: support turning on multiarch build by architecture;
+    but don't enable this yet, we still need to wait for dpkg-dev.
+  * When DEB_HOST_MULTIARCH is available (i.e., with the next dpkg upload),
+    use it as our multiarch path.
+  * debian/rules.d/binary-java.mk: jvm-exports path is /usr/lib/jvm-exports,
+    not $(libdir)/jvm-exports.
+  * OTOH, libgcj_bc *is* in $(libdir).
+  * the spu build is not a multiarch build; look in the correct
+    non-multiarch directory.
+  * debian/rules2: pass --libdir also for stageX builds, needed in order to
+    successfully build for multiarch.
+  * debian/rules2: $(usr_lib) for a cross-build should not include the
+    multiarch dir as part of the path.
+  * debian/patches/gcc-multiarch+biarch.diff: restore the original intent of
+    the patch, namely, that the multilib dir for the default variant is
+    always equal to libdir (the multiarch dir), and we walk up the tree
+    to find lib<qual> for the secondary variant.
+  * debian/patches/gcc-multiarch+biarch32.diff: apply the same multilib
+    directory rewriting for biarch paths with multiarch as we do without;
+    still needed in the near term.
+  * Put our list of patches in README.Debian.$(DEB_TARGET_ARCH) instead of
+    in README.Debian, so that the individual files are architecture-neutral
+    and play nicely with multiarch.  LP: #737846.
+  * Add a comment at the bottom of README.Debian with a pointer to the new
+    file listing the patches.
+
+  [ Loic Minier ]
+  * Rework config/vxworks-dummy.h installation snippet to test
+    DEB_TARGET_GNU_CPU against patterns close to the upstream ones (arm% mips%
+    sh% sparc%) as to also install this header on other ports targetting the
+    relevant upstream CPUs such as armhf.  Add a comment pointing at the
+    upstream bug.
+  * Update __aeabi symbol handling to test whether DEB_TARGET_GNU_TYPE matches
+    arm-linux-gnueabi% instead of testing whether DEB_TARGET_ARCH equals
+    armel.  Add a comment pointing at the Debian bug and indicating that this
+    is only useful for older dpkg-dev versions.
+  * debian/rules.def: fix "armel" entry to "arm" in list of
+    DEB_TARGET_ARCH_CPUs for Debian experimental GCC 4.5/4.6 libraries.
+  * debian/rules2: drop commented out GCC #42509 workaround as this was fixed
+    upstream in 4.4+.
+  * Change bogus DEB_TARGET_GNU_CPU test on armel and armhf to just test for
+    arm as ths is what the Debian arm, armel and armhf port use.
+  * Rework snippet setting armv7 on Debian armhf / Ubuntu to avoid
+    duplication, as a comment called out for.
+  * Use "arm" instead of armel/armhf in DEB_TARGET_GNU_CPU test when deciding
+    whether to enable profiledbootstrap.
+  * Set DEJAGNU_TIMEOUT=600 on Ubuntu armhf as well.
+  * Fix a couple more uses of armel or armhf against DEB_TARGET_GNU_CPU.
+  * Patched a couple of comments mentioning armel to also mention armhf.
+  * Add patch armhf-triplet-backport, support for arm-linux-*eabi* backported
+    from a patch sent on the upstream mailing-list.
+
+  [ Matthias Klose ]
+  * Fix PR target/48226, Allow Iterator::vector vector on powerpc with VSX,
+    taken from the trunk.
+  * Fix PR preprocessor/48192, make conditional macros not defined for
+    #ifdef, proposed patch.
+  * Build the gold LTO plugin for ppc64 (Hiroyuki Yamamoto). Closes: #618864.
+  * Fix issue with volatile bitfields, default to -fstrict-volatile-bitfields
+    again on armel for Linaro builds. LP: #675347.
+
+ -- Matthias Klose <doko at debian.org>  Wed, 23 Mar 2011 15:44:01 +0100
+
+gcc-4.5 (4.5.2-6) unstable; urgency=low
+
+  * Update to SVN 20110312 (r170895) from the gcc-4_5-branch.
+    - Fix PR tree-optimization/45967, PR tree-optimization/47278,
+      PR target/47862, PR c++/44629, PR c++/45651, PR c++/47289, PR c++/47705,
+      PR c++/47488, PR libgfortran/47778, PR c++/48029.
+
+  [ Steve Langasek ]
+  * Make sure our libs Pre-Depend on 'multiarch-support' when building for
+    multiarch.
+  * debian/patches/gcc-multiarch*, debian/rules.patch: use i386 in the
+    multiarch path for amd64 / kfreebsd-amd64, not i486 or i686.  This lets
+    us use a common set of paths on both Debian and Ubuntu, regardless of
+    the target default optimization level.
+  * debian/rules.conf: when building for multiarch, we need to be sure we
+    are building against a libc-dev that supports the corresponding paths. 
+    (the referenced version number for this needs to be bumped once this is
+    officially in the archive.)
+
+  [ Matthias Klose ]
+  * Don't run the libmudflap testsuite on hppa; times out on the buildd.
+  * Don't run the libstdc++ testsuite on mipsel; times out on the buildd.
+  * Post Linaro 4.5-2011.03-0 release changes (up to 20110313).
+  * Undefine LINK_EH_SPEC before redefining it to turn off warnings on
+    powerpc.
+  * Update gmp (build) dependencies.
+
+  [ Aurelien Jarno ]
+  * Add symbol files on kfreebsd-i386.
+  * Add symbol files on kfreebsd-amd64.
+  * Add symbol files on sparc64.
+  * Add symbol files on sh4.
+
+ -- Matthias Klose <doko at debian.org>  Sun, 13 Mar 2011 17:30:48 +0100
+
+gcc-4.5 (4.5.2-5) unstable; urgency=low
+
+  * Update to SVN 20110305 (r170696) from the gcc-4_5-branch.
+    - Fix PR target/43810, PR fortran/47886, PR tree-optimization/47615,
+      PR middle-end/47639, PR tree-optimization/47890, PR libfortran/47830,
+      PR tree-optimization/46723, PR target/45261, PR target/45808,
+      PR c++/46159, PR c++/47904, PR fortran/47886, PR libstdc++/47433,
+      PR target/42240, PR fortran/47878, PR libfortran/47694.
+  * Update the Linaro support to the 4.5-2011.03-0 release.
+    - Fix LP: #705689, LP: #695302, LP: #710652, LP: #710623, LP: #721021,
+      LP: #721021, LP: #709453.
+
+ -- Matthias Klose <doko at debian.org>  Sun, 06 Mar 2011 02:58:01 +0100
+
+gcc-4.5 (4.5.2-4) unstable; urgency=low
+
+  * Update to SVN 20110222 (r170382) from the gcc-4_5-branch.
+    - Fix PR target/43653, PR fortran/47775, PR target/47840,
+      PR libfortran/47830.
+
+  [ Matthias Klose ]
+  * Don't apply a patch twice.
+  * Build libgcc_s with -fno-stack-protector, when not building from the
+    Linaro branch.
+  * Backport proposed fix for PR tree-optimization/46723 from the trunk.
+
+  [ Steve Langasek ]
+  * debian/control.m4: add missing Multi-Arch: same for libgcc4; make sure
+    Multi-Arch: same doesn't get set for libmudflap when building an
+    Architecture: all cross-compiler package.
+  * debian/rules2: use $libdir for libiberty.a.
+  * debian/patches/gcc-multiarch-*.diff: make sure we're using the same
+    set_multiarch_path definition for all variants.
+
+  [ Sebastian Andrzej Siewior ]
+  * PR target/44364
+  * Remove -many on powerpcspe (__SPE__)
+  * Remove classic FPU opcodes from libgcc if target has no support for them
+    (powerpcspe)
+
+ -- Matthias Klose <doko at debian.org>  Wed, 23 Feb 2011 00:35:54 +0100
+
+gcc-4.5 (4.5.2-3) experimental; urgency=low
+
+  * Update to SVN 20110215 (r170181) from the gcc-4_5-branch.
+    - Fix PR rtl-optimization/44469, PR tree-optimization/47411,
+      PR bootstrap/44699, PR target/44392, PR fortran/47331, PR fortran/47448,
+      PR pch/14940, PR rtl-optimization/47166, PR target/47272, PR target/47580,
+      PR tree-optimization/47541, PR target/44606, PR boehm-gc/34544,
+      PR fortran/47569, PR libstdc++/47709, PR libstdc++/46914, PR libffi/46661.
+  * Update the Linaro support to the 4.5 2011.02-0 release.
+  * Pass --no-add-needed by default to the linker. See
+    http://wiki.debian.org/ToolChain/DSOLinking, section "Not resolving symbols
+    in indirect dependent shared libraries" for more information.
+
+ -- Matthias Klose <doko at debian.org>  Wed, 16 Feb 2011 15:29:26 +0100
+
+gcc-4.5 (4.5.2-2) experimental; urgency=low
+
+  * Update to SVN 20110123 (r169142) from the gcc-4_5-branch.
+    - Fix PR target/46915, PR target/46729, PR libgcj/46774, PR target/47038,
+      PR target/46685, PR target/45447, PR tree-optimization/46758,
+      PR tree-optimization/45552, PR tree-optimization/43023,
+      PR middle-end/46734, PR fortran/45338, PR preprocessor/39213,
+      PR target/43309, PR fortran/46874, PR tree-optimization/47286,
+      PR tree-optimization/44592, PR target/47201, PR c/47150, PR target/46880,
+      PR middle-end/45852, PR tree-optimization/43655, PR debug/46893,
+      PR rtl-optimization/46804, PR rtl-optimization/46865, PR target/41082,
+      PR tree-optimization/46864, PR fortran/45777, PR tree-optimization/47365,
+      PR tree-optimization/47167, PR target/47318, PR target/46655,
+      PR fortran/47394, PR libstdc++/47354.
+
+  [ Matthias Klose ]
+  * Update the Linaro support to the 4.5 2011.01-1 release.
+  * Don't build packages now built from the gcc-4.6 package for architectures
+    with a sucessful gcc-4.6 build.
+
+  [ Kees Cook ]
+  * debian/patches/gcc-default-ssp.patch: do not ignore -fstack-protector-all
+    (LP: #691722).
+
+  [ Marcin Juszkiewicz ]
+  * Fix biarch/triarch cross builds.
+    - dpkg-shlibdeps failed to find libraries for 64 or n32 builds
+    - LD_LIBRARY_PATH for dpkg-shlibdeps lacked host dirs.
+
+ -- Matthias Klose <doko at debian.org>  Sun, 23 Jan 2011 11:54:52 +0100
+
+gcc-4.5 (4.5.2-1) experimental; urgency=low
+
+  * GCC 4.5.2 release.
+
+ -- Matthias Klose <doko at debian.org>  Sat, 18 Dec 2010 14:14:38 +0100
+
+gcc-4.5 (4.5.1-12) experimental; urgency=low
+
+  * Update to SVN 20101129 (r167272) from the gcc-4_5-branch.
+    - Fix PR fortran/45742, PR tree-optimization/46498, PR target/45807,
+      PR target/44266, PR rtl-optimization/46315, PR tree-optimization/44545,
+      PR tree-optimization/46491, PR rtl-optimization/46571, PR target/31100,
+      PR c/46547, PR fortran/46638, PR tree-optimization/46675, PR debug/46258,
+      PR ada/40777.
+
+  [ Matthias Klose ]
+  * Use lib instead of lib64 as the 64bit system dir on biarch
+    architectures defaulting to 64bit. Closes: #603597.
+  * Fix powerpc and s390 builds when biarch is disabled.
+  * Backport PR bootstrap/44768, miscompilation of dpkg on ARM
+    with -O2 (Chung-Lin Tang). LP: #674146.
+  * Update libgcc2 symbols file. Closes: #602099.
+
+  [ Marcin Juszkiewicz ]
+  * Do not depend on target mpfr and zlib -dev packages for cross builds.
+    LP: #676027.
+
+  [ Konstantinos Margaritis ]
+  * Add support for new target architecture `armhf'. Closes: #603948.
+
+ -- Matthias Klose <doko at debian.org>  Mon, 22 Nov 2010 08:12:08 +0100
+
+gcc-4.5 (4.5.1-11) experimental; urgency=low
+
+  * Update to SVN 20101114 (r166728) from the gcc-4_5-branch.
+    - Fix PR fortran/45742.
+  * Don't hardcode debian/patches when referencing patches. Closes: #600502.
+
+ -- Matthias Klose <doko at debian.org>  Sun, 14 Nov 2010 08:36:27 +0100
+
+gcc-4.5 (4.5.1-10) experimental; urgency=low
+
+  * Update to SVN 20101112 (r166653) from the gcc-4_5-branch.
+    - Fix PR rtl-optimization/44691, PR tree-optimization/46355,
+      PR tree-optimization/46177, PR c/44772, PR tree-optimization/46099,
+      PR middle-end/43690, PR tree-optimization/46165, PR middle-end/46419,
+      PR tree-optimization/46107, PR tree-optimization/45314, PR debug/45939,
+      PR rtl-optimization/46237, PR middle-end/44569, PR middle-end/44569,
+      PR tree-optimization/45902, PR target/46153, PR rtl-optimization/46226,
+      PR tree-optimization/46167, PR target/46098, PR target/45946,
+      PR fortran/42169, PR middle-end/46019, PR c/45969, PR c++/45894,
+      PR c++/46160, PR c++/45983, PR fortran/46152, PR fortran/46140,
+      PR libstdc++/45999, PR libgfortran/46373, PR libgfortran/46010,
+      PR fortran/46007, PR c++/46024.
+  * Update the Linaro support to the 4.5 2010.11 release.
+  * Update gcc-4.5 source dependencies. Closes: #600503.
+  * ARM: Fix Thumb-1 reload ICE with nested functions (Julian Brown),
+    taken from the trunk.
+  * Fix earlyclobbers on some arm.md DImode shifts (may miscompile "x >> 1"),
+    taken from the trunk. Closes: #600888.
+
+ -- Matthias Klose <doko at debian.org>  Fri, 12 Nov 2010 18:34:47 +0100
+
+gcc-4.5 (4.5.1-9) experimental; urgency=low
+
+  * Update to SVN 20101014 (r165474) from the gcc-4_5-branch.
+    - Fix PR target/45820, PR tree-optimization/45854, PR target/45843,
+      PR target/43764, PR rtl-optimization/43358, PR bootstrap/44621,
+      PR libffi/45677, PR middle-end/45869, PR middle-end/45569,
+      PR tree-optimization/45752, PR fortran/45748, PR libstdc++/45403,
+      PR libstdc++/45924, PR libfortran/45710, PR bootstrap/44455,
+      PR java/43839, PR debug/45656, PR debug/44832, PR libstdc++/45711,
+      PR tree-optimization/45982.
+
+  [ Matthias Klose ]
+  * Update the Linaro support to the 4.5 2010.10 release.
+  * Just try to build java on mips/mipsel (was disabled in 4.5.0-9, when
+    java was built from the same source package). Addresses: #599976.
+  * Remove the gpc packaging support.
+  * Fix libmudflap.so symlink. Addresses: #600161.
+  * Fix pch test failures with heap randomization on armel (PR pch/45979).
+
+  [ Kees Cook ]
+  * Don't enable -fstack-protector with -ffreestanding.
+
+ -- Matthias Klose <doko at debian.org>  Thu, 14 Oct 2010 19:17:41 +0200
+
+gcc-4.5 (4.5.1-8) experimental; urgency=low
+
+  * Update to SVN 20100925 (r164618) from the gcc-4_5-branch.
+    - Fix PR middle-end/44763, PR java/44095, PR target/35664,
+      PR rtl-optimization/41085, PR rtl-optimization/45051,
+      PR target/45694, PR middle-end/45678, PR middle-end/45678,
+      PR middle-end/45704, PR rtl-optimization/45728, PR libfortran/45532,
+      PR rtl-optimization/45695, PR rtl-optimization/42775, PR target/45726,
+      PR tree-optimization/45623, PR tree-optimization/45709, PR debug/43628,
+      PR tree-optimization/45709, PR rtl-optimization/45593, PR fortran/45081,
+  * Find 32bit system libraries on sparc64, s390x.
+  * Remove README.Debian from the source package to avoid confusion for
+    readers of the packaging.
+  * Don't include info files and man pages in hppa64 and spu builds.
+    Closes: #597435.
+  * Apply proposed patch for PR mudflap/24619 (instrumentation of dlopen)
+    (Brian M. Carlson) Closes: #507514.
+
+ -- Matthias Klose <doko at debian.org>  Sat, 25 Sep 2010 14:11:39 +0200
+
+gcc-4.5 (4.5.1-7) experimental; urgency=low
+
+  * Update to SVN 20100914 (r164279) from the gcc-4_5-branch.
+    - Fix PR target/40959, PR middle-end/45567, PR debug/45660,
+      PR rtl-optimization/41087, PR rtl-optimization/44919, PR target/36502,
+      PR target/42313, PR target/44651.
+  * Add support to build from the Linaro 4.5 2010.09 release.
+  * gcc-4.5-plugin-dev: Install config/arm/arm-cores.def.
+  * Remove non-existing URL's in README.c++ (Osamu Aoki). Closes: #596406.
+  * Don't provide c++abi2-dev for g++ cross builds.
+  * Don't pass -mimplicit-it=thumb if -mthumb to as on ARM, rejected upstream.
+
+ -- Matthias Klose <doko at debian.org>  Tue, 14 Sep 2010 12:52:34 +0200
+
+gcc-4.5 (4.5.1-6) experimental; urgency=low
+
+  * Update to SVN 20100909 (r164132) from the gcc-4_5-branch.
+    - Fix PR middle-end/45312, PR bootstrap/43847, PR middle-end/44554,
+      PR middle-end/40386, PR other/45443, PR c++/45200, PR c++/45293,
+      PR c++/45558, PR fortran/45595, PR fortran/45530, PR fortran/45489,
+      PR fortran/45019, PR libstdc++/45398.
+
+  [ Matthias Klose ]
+  * Tighten binutils dependencies to 2.20.1-14.
+
+  [ Marcin Juszkiewicz ]
+  * Fix the gcc-4.5-plugin-dev package name for cross builds. LP: #631474.
+  * Build the gcc-4.5-plugin-dev for stage1 cross builds.
+  * Fix priorities and sections for some cross packages.
+
+  [ Al Viro ]
+  * Fix installation of libgcc_s.so as a linker script for biarch builds.
+
+  [ Kees Cook ]
+  * Push glibc stack traces into stderr when building the package.
+  * debian/patches/gcc-default-ssp.patch: Lower ssp-buffer-size to 4.
+
+ -- Matthias Klose <doko at debian.org>  Fri, 10 Sep 2010 21:25:37 +0200
+
+gcc-4.5 (4.5.1-5) experimental; urgency=low
+
+  * Always add dependencies on multilib library packages in *-multilib
+    packages.
+  * Fix installation of libgcc_s.so on architectures when libgcc_s.so is
+    a linker script, not a symlink (Steve Langasek). Closes: #595474.
+  * Remove the lib32gcc1 preinst script. Closes: #595495.
+
+ -- Matthias Klose <doko at debian.org>  Sat, 04 Sep 2010 12:41:40 +0200
+
+gcc-4.5 (4.5.1-4) experimental; urgency=low
+
+  * Update to SVN 20100903 (r163833) from the gcc-4_5-branch.
+    - Fix PR target/45070, PR middle-end/45458, PR rtl-optimization/45353,
+      PR middle-end/45423, PR c/45079, PR tree-optimization/45393,
+      PR c++/44991, PR middle-end/45484, PR debug/45500, PR lto/45496.
+
+  [ Matthias Klose ]
+  * Install config/vxworks-dummy.h in the gcc-4.5-plugin-dev package
+    on armel, mipsel and sparc64 too.
+  * Cleanup packaging files in gcc-source package.
+  * [ARM] Provide __builtin_expect() hints in linux-atomic.c (backport).
+
+  [ Al Viro ]
+  * Fix builds with disabled biarch library packages.
+  * New variables {usr_lib,gcc_lib_dir,libgcc_dir}{,32,64,n32}, and switch
+    to using them in rules.d/*; as the result, most of the explicit pathnames
+    in there are gone _and_ we get uniformity across different flavours.
+  * New variables {usr_lib,gcc_lib_dir,libgcc_dir}{,32,64,n32}, and switch
+    to using them in rules.d/*; as the result, most of the explicit pathnames
+    in there are gone _and_ we get uniformity across different flavours.
+  * Merge bi-/tri-arch stuff in binary-gcc.mk.
+  * Merge rules for libgcc biarch variants.
+  * Merge rules for libstdc++ biarch variants. Fix n32 variant of
+    libstdc++-dbg removing _pic.a from the wrong place.
+  * Merge libgfortran rules.
+  * Merge rules for cxx-multi and objc-multi packages.
+  * Enable gcc-hppa64 in cross-gcc-to-hppa build.
+
+  [ Marcin Juszkiewicz ]
+  * Create libgcc1 and gcc-*-base packages for stage2 cross builds.
+    LP: #628855.
+
+ -- Matthias Klose <doko at debian.org>  Fri, 03 Sep 2010 18:09:40 +0200
+
+gcc-4.5 (4.5.1-3) experimental; urgency=low
+
+  * Update to SVN 20100829 (r163627) from the gcc-4_5-branch.
+    - Fix PR target/45327, PR middle-end/45292, PR fortran/45344,
+      PR target/41484, PR rtl-optimization/44858, PR rtl-optimization/45400,
+      PR tree-optimization/45260, PR c++/45315.
+
+  [ Matthias Klose ]
+  * Don't run the libstdc++ testsuite on armel on the buildds.
+  * Integrate and extend bi/tri-arch cross builds patches.
+  * Fix dependencies for mips* triarch library packages depend on *both* lib64*
+    and libn32* packages. Closes: #594540.
+  * Tighten binutils dependencies to 2.20.1-13.
+  * Update LAST_UPDATED file when applying upstream updates.
+
+  [ Al Viro ]
+  * Bi/tri-arch cross builds patches.
+  * Fix installation paths in bi/tri-arch libobjc and libmudflap packages.
+  * Merge rules for all flavours of libgomp, libmudflap, libobjc.
+  * Crossbuild fix for lib32gomp (use $(PFL)/lib32 instead of $(lib32)).
+  * gcc-4.5: libgcc_s.so.1 symlink creation on cross-builds.
+  * Enable gcc-multilib for cross-builds and fix what needs fixing.
+  * Enable g++-multilib for cross-builds, fix pathnames.
+  * Enable gobjc/gobjc++ multilib for cross-builds, fixes.
+  * Enable gfortran multilib for cross-builds, fix paths.
+  * Multilib dependency fixes for cross-builds.
+
+ -- Matthias Klose <doko at debian.org>  Sun, 29 Aug 2010 18:24:37 +0200
+
+gcc-4.5 (4.5.1-2) experimental; urgency=low
+
+  * Update to SVN 20100818 (r163323) from the gcc-4_5-branch.
+    - Fix PR target/41089, PR tree-optimization/44914, PR c++/45112,
+      PR fortran/44929, PR middle-end/45262, PR debug/45259, PR debug/45055,
+      PR target/44805, PR middle-end/45034, PR tree-optimization/45109,
+      PR target/44942, PR fortran/31588, PR fortran/43954, PR fortran/44660,
+      PR fortran/42051, PR fortran/44064, PR fortran/45151, PR libstdc++/44963,
+      PR tree-optimization/45241, PR middle-end/44632 (closes: #585925),
+      PR libstdc++/45283, PR target/45296.
+
+  [ Matthias Klose ]
+  * Allow overwriting of the PF macro used in the build from the environment
+    (Jim Heck). Closes: #588381.
+  * Fix libc-dbg build dependency for java enabled builds. Addresses: #591424.
+  * gcj: Align data in .rodata.jutf8.* sections, patch taken from the trunk.
+  * Configure with --enable-checking+release. LP: #612822.
+  * Add the complete packaging to the -source package. LP: #608650.
+  * Drop the gcc-ix86-asm-generic32.diff patch.
+  * Tighten (build-) dependency on cloog-ppl (>= 0.15.9-2).
+  * Apply proposed patch for PR middle-end/45292.
+  * Re-enable running the libstdc++ testsuite on armel and ia64 on the buildds.
+
+  [ Steve Langasek ]
+  * s,/lib/,/$(libdir)/, throughout debian/rules*; a no-op in the current
+    case, but required for us to find the libraries when building for
+    multiarch
+  * Don't append multiarch paths to any multilib paths except for the default;
+    our biarch (multilib) builds need to remain independent of multiarch in
+    the near term, so we want to make sure we can find /usr/lib32 without
+    /usr/lib/i486-linux-gnu being available.
+  * debian/control.m4, debian/rules.conf: conditionally set packages to be
+    Multi-Arch: yes when MULTIARCH is defined.
+
+  [ Marcin Juszkiewicz ]
+  * Allow building intermediate stages for cross builds. LP: #603497.
+
+ -- Matthias Klose <doko at debian.org>  Wed, 18 Aug 2010 07:00:12 +0200
+
+gcc-4.5 (4.5.1-1) experimental; urgency=low
+
+  * GCC-4.5.1 release.
+  * Update to SVN 20100731 (r162781) from the gcc-4_5-branch.
+    - Fix PR tree-optimization/45052, PR target/43698.
+  * Apply proposed fixes for PR c++/45112, PR c/45079.
+  * Install config/vxworks-dummy.h in the gcc-4.5-plugin-dev package
+    on armel, mips, mipsel, sh4, sparc, sparc64. Closes: #590054.
+  * Link executables statically when `static' is passed in DEB_BUILD_OPTIONS
+    (Jim Heck). Closes: #590102.
+  * Stop building java packages from the gcc-4.5 source package.
+
+ -- Matthias Klose <doko at debian.org>  Sat, 31 Jul 2010 16:30:20 +0200
+
+gcc-4.5 (4.5.0-10) experimental; urgency=low
+
+  * Update to SVN 20100725 (r162508) from the gcc-4_5-branch.
+    - Fix PR tree-optimization/45047, PR c++/43016, PR c++/45008.
+  * Disable building gcj/libjava on mips/mipsel (fails to link libgcj).
+  * Update libstdc++6 symbols files.
+
+ -- Matthias Klose <doko at debian.org>  Sun, 25 Jul 2010 16:39:11 +0200
+
+gcc-4.5 (4.5.0-9) experimental; urgency=low
+
+  * Update to SVN 20100723 (r162448) from the gcc-4_5-branch (post
+    GCC-4.5.1 release candidate 1).
+    - Fix PR debug/45015, PR target/44942, PR tree-optimization/44900,
+      PR tree-optimization/44977, PR c++/44996, PR fortran/44929,
+      PR fortran/30668, PR fortran/31346, PR fortran/34260,
+      PR fortran/40011.
+
+  [ Marcin Juszkiewicz ]
+  * Fix dependencies on cross library packages.
+  * Copy all debian/rules* files to the -source package.
+
+  [ Matthias Klose ]
+  * Fix versioned build dependency on gcc-4.x-source package for cross builds.
+    LP: #609060.
+  * Set Vcs attributes in control file.
+
+ -- Matthias Klose <doko at debian.org>  Fri, 23 Jul 2010 13:08:07 +0200
+
+gcc-4.5 (4.5.0-8) experimental; urgency=low
+
+  * Update to SVN 20100718 (r161892) from the gcc-4_5-branch.
+    - Fixes: PR target/44531, PR bootstrap/44820, PR target/44597,
+      PR target/44705, PR middle-end/44777, PR debug/44694, PR c++/44039,
+      PR tree-optimization/43801, PR target/44575, PR debug/44104,
+      PR middle-end/44671, PR middle-end/44686, PR tree-optimization/44357,
+      PR debug/44694, PR middle-end/43866, PR debug/42278, PR c++/44059,
+      PR tree-optimization/43905, PR middle-end/44133, PR tree-optimize/44063,
+      PR tree-optimization/44683, PR rtl-optimization/43332, PR debug/44610,
+      PR middle-end/44684, PR tree-optimization/44393, PR middle-end/44674,
+      PR c++/44628, PR c++/44587, PR fortran/44582, PR fortran/43841,
+      PR fortran/43843, PR libstdc++/44708, PR tree-optimization/44886,
+      PR target/43888, PR tree-optimization/44284, PR middle-end/44828,
+      PR middle-end/41355, PR c++/44703, PR ada/43731, PR fortran/44773,
+      PR fortran/44847.
+
+  [ Marcin Juszkiewicz ]
+  * debian/rules2: Merge rules.d includes.
+  * Properly -name -dbg packages for cross builds.
+  * Various cross build fixes.
+  * Build libmudflap packages for cross builds.
+  * Fix generation of maintainer scripts for cross packages.
+  * Build a gcc-base package for cross builds.
+
+  [ Kees Cook ]
+  * Fix additional libstdc++ testsuite failures for hardening defaults.
+
+  [ Samuel Thibault ]
+  * Update hurd patch for 4.5, fixing build failure. Closes: #584819.
+
+  [ Matthias Klose ]
+  * gcc-arm-implicit-it.diff: Only pass -mimplicit-it=thumb when in
+    thumb mode (Andrew Stubbs).
+
+ -- Matthias Klose <doko at debian.org>  Sun, 18 Jul 2010 10:53:51 +0200
+
+gcc-4.5 (4.5.0-7) experimental; urgency=low
+
+  * Update to SVN 20100625 (r161383) from the gcc-4_5-branch.
+    - Fixes: PR bootstrap/44426, PR target/44546, PR target/44261,
+      PR target/43740, PR libstdc++/44630 (closes: #577458),
+      PR c++/44627 (LP: #503668), PR target/39690, PR target/44615,
+      PR fortran/44556, PR c/44555.
+    - Update libstdc++'s pretty printer for python2.6. Closes: #585202.
+
+  [ Matthias Klose ]
+  * Fix libstdc++ symbols files for powerpc and sparc.
+  * Add maintainer scripts for cross packages.
+
+  [ Samuel Thibault ]
+  * Update hurd patch for 4.5, fixing build failure. Closes: #584454,
+    #584819.
+
+  [ Marcin Juszkiewicz ]
+  * Merge the rules.d/binary-*-cross.mk files into rules.d/binary-*.mk.
+
+ -- Matthias Klose <doko at debian.org>  Fri, 25 Jun 2010 15:57:38 +0200
+
+gcc-4.5 (4.5.0-6) experimental; urgency=low
+
+  [ Matthias Klose ]
+
+  * Update to SVN 20100617 (r161901) from the gcc-4_5-branch. Fixes:
+    PR target/44169, PR bootstrap/43170, PR objc/35996, PR objc++/32052,
+    PR objc++/23716, PR lto/44464, PR rtl-optimization/42461, PR fortran/44536,
+    PR tree-optimization/44258, PR tree-optimization/44423, PR target/44534,
+    PR bootstrap/44426, PR tree-optimization/44508, PR tree-optimization/44507,
+    PR lto/42776, PR target/44481, PR debug/41371, PR bootstrap/37304,
+    PR target/44067, PR debug/41371, PR debug/41371, PR target/44075,
+    PR c++/44366, PR c++/44401, PR fortran/44347, PR fortran/44430,
+    PR lto/42776, PR libstdc++/44487, PR other/43838, PR libgcj/44216.
+  * debian/patches/cross-fixes.diff: Update for 4.5 (Marcin Juszkiewicz).
+  * debian/patches/libstdc++-pic.diff: Fix installation for cross builds.
+  * Fix PR bootstrap/43847, --enable-plugin for cross builds.
+  * Export long double versions of "C" math library for arm-linux-gnueabi,
+    m68k-linux-gnu (ColdFire), mips*-linux-gnu (o32 ABI), sh*-linux-gnu
+    (not 32 bit). Merge the libstdc++-*-ldbl-compat.diff patches.
+  * Merge binary-libgcc.mk packaging changes into binary-libgcc-cross.mk
+    (Loic Minier).
+  * Update libgcc and libstdc++ symbols files.
+
+  [ Aurelien Jarno ]
+  
+  * libstdc++-mips-ldbl-compat.diff: On MIPS provide the long double
+    versions of "C" math functions in libstdc++ as we need to keep the
+    ABI. Closes: #584610.
+
+ -- Matthias Klose <doko at debian.org>  Thu, 17 Jun 2010 14:56:14 +0200
+
+gcc-4.5 (4.5.0-5) experimental; urgency=low
+
+  * Update to SVN 20100602 (r160097) from the gcc-4_5-branch. Fixes:
+    PR target/44338, PR middle-end/44337, PR tree-optimization/44182,
+    PR target/44161, PR c++/44358, PR fortran/44360, PR lto/44385.
+  * Fix PR target/44261, taken from the trunk. Closes: #582787.
+  * Fix passing the expanded -iplugindir option.
+  * Disable broken profiled bootstrap on alpha.
+  * On ix86, pass -mtune=generic32 in 32bit mode to the assembler, when
+    configured for i586-linux-gnu or i686-linux-gnu.
+
+ -- Matthias Klose <doko at debian.org>  Thu, 03 Jun 2010 00:44:37 +0200
+
+gcc-4.5 (4.5.0-4) experimental; urgency=low
+
+  * Update to SVN 20100527 (r160047) from the gcc-4_5-branch. Fixes:
+    PR rtl-optimization/44164, PR middle-end/44069, PR target/44199,
+    PR lto/44196, PR target/43733, PR target/44245, PR target/43869,
+    PR debug/44223, PR tree-optimization/44038, PR tree-optimization/43949,
+    PR debug/44205, PR debug/44178, PR bootstrap/43870, PR target/44202,
+    PR target/44074, PR lto/43455, PR lto/42653, PR lto/42425, PR lto/43080,
+    PR lto/43946, PR c++/43382, PR c++/41510, PR c++/44193, PR c++/44157,
+    PR c++/44158, PR lto/44256, PR libstdc++/44190, PR lto/44312,
+    PR target/43636, PR target/43726, PR c++/43555PR libstdc++/40497.
+
+  [ Matthias Klose ]
+
+  * Enable multilibs again on powerpcspe. Closes: #579780.
+  * Fix setting CC for REVERSE_CROSS build (host ==  target,host != build).
+    Closes: #579779.
+  * Fix setting biarch_cpu macro.
+  * Don't bother with un-normalized paths in .la files, just remove them.
+  * debian/locale-gen: Update locales needed for the libstdc++-v3 testsuite.
+  * If libstdc++6 is built from newer gcc-4.x source, run the libstdc++-v3
+    testsuite against the installed lib too.
+  * Configure with --enable-secureplt on powerpcspe.
+
+  [ Aurelien Jarno ]
+
+  * Fix $(distrelease) on non-official archives. Fix powerpcspe, sh4 and
+    sparc64 builds.
+
+ -- Matthias Klose <doko at debian.org>  Sun, 30 May 2010 12:52:02 +0200
+
+gcc-4.5 (4.5.0-3) experimental; urgency=low
+
+  * Update to SVN 20100519 (r159556) from the gcc-4_5-branch. Fixes:
+    PR c++/43704, PR fortran/43339, PR middle-end/43337, PR target/43635,
+    PR tree-optimization/43783, PR tree-optimization/43796, PR middle-end/43570,
+    PR libgomp/43706, PR libgomp/43569, PR middle-end/43835, PR c/43893,
+    PR tree-optimization/43572, PR tree-optimization/43845, PR libgcj/40860,
+    PR target/43744, PR debug/43370, PR c++/43880, PR middle-end/43671,
+    PR debug/43972, PR target/43921, PR c++/38064, PR c++/43953,
+    PR fortran/43985, PR fortran/43592, PR fortran/40539, PR c++/43787,
+    PR middle-end/44085, PR middle-end/44071, PR middle-end/43812,
+    PR debug/44028, PR rtl-optimization/44012, PR target/44046,
+    PR documentation/44016, PR fortran/44036, PR fortran/40728,
+    PR libstdc++/44014, PR lto/44184, PR bootstrap/42347, PR middle-end/44102,
+    PR c++/44127, PR debug/44136, PR target/44088, PR tree-optimization/44124,
+    PR fortran/43591, PR fortran/44135, PR libstdc++/43259.
+
+  [ Matthias Klose ]
+  * Revert gcj-arm-no-merge-exidx-entries patch, fixed by PR libgcj/40860.
+  * Don't run the libstdc++-v3 testsuite on the ia64 buildds. Timeouts.
+  * Backport two libjava fixes from the trunk to run josm with gcj.
+  * Ubuntu only:
+    - Pass --hash-style=gnu instead of --hash-style=both to the linker.
+  * Preliminary architecture port for powerpcspe (Kyle Moffett).
+    Closes: #579780.
+  * Update configury to be able to target i686 instead of i486 on i386.
+
+  [ Aurelien Jarno]
+  * Don't link with --hash-style=both on mips/mipsel as GNU hash is not
+    compatible with the MIPS ABI.
+  * Default to -mplt on mips(el), -march=mips2 and -mtune=mips32 on 32-bit
+    mips(el), -march=mips3 and -mtune=mips64 on 64-bit mips(el).
+
+ -- Matthias Klose <doko at debian.org>  Wed, 19 May 2010 09:48:20 +0200
+
+gcc-4.5 (4.5.0-2) experimental; urgency=low
+
+  * Update to SVN 20100419 from the gcc-4_5-branch.
+    - Fix PR tree-optimization/43627, c++/43641, PR c++/43621, PR c++/43611,
+      PR fortran/31538, PR fortran/30073, PR target/43662,
+      PR tree-optimization/43572, PR tree-optimization/43771.
+  * Install the linker plugin.
+  * Search the linker plugin as a readable, not an executable file.
+  * Link with --hash-style=both on mips/mipsel.
+  * On mips, pass -mfix-loongson2f-nop to as, if -mno-fix-loongson2f-nop
+    is not passed.
+  * Sequel to PR40521, fix -g to generate .eh_frame on ARM.
+  * On ARM, let gcj pass --no-merge-exidx-entries to the linker.
+  * Build-depend/depend on binutils snapshot.
+  * Update NEWS.html and NEWS.gcc.
+
+ -- Matthias Klose <doko at debian.org>  Mon, 19 Apr 2010 15:22:55 +0200
+
+gcc-4.5 (4.5.0-1) experimental; urgency=low
+
+  * GCC 4.5.0 release.
+  * Always apply biarch patches.
+  * Build the lto-linker plugin again. Closes: #575448.
+  * Run the libstdc++v3 testsuite on armel again.
+  * Fix --enable-libstdcxx-time documentation, show configure result.
+  * On linux targets always pass --no-add-needed to the linker.
+  * Update the patch to search for plugins in a default plugin directory.
+  * Fix java installations in snapshot builds.
+  * Configure --with-plugin-ld=ld.gold.
+  * Linker selection: ld is used by default, to use the gold linker,
+    pass -fuse-linker-plugin (no other side effects if -flto/-fwhopr
+    is not passed). To force ld.bfd or ld.gold, pass -B/usr/lib/compat-ld
+    for ld.bfd or /usr/lib/gold-ld for ld.gold.
+  * Don't apply the gold-and-ld patch for now.
+  * Stop building the documentation for dfsg compliant builds. Closes: #571759.
+
+ -- Matthias Klose <doko at debian.org>  Wed, 14 Apr 2010 13:29:20 +0200
+
+gcc-4.5 (4.5-20100404-1) experimental; urgency=low
+
+  * Update to SVN 20100404 from the trunk.
+  * Fix build failures building cross compilers configure --with-ld.
+  * lib32gcc1: Set priority to `extra'.
+  * Apply proposed patch to search for plugins in a default plugin directory.
+  * In snapshot builds, use for javac/ecj1 the jvm provided by the package.
+  * libstdc++-arm-ldbl-compat.diff: On ARM provide the long double versions
+    of "C" math functions in libstdc++; these are dropped when built
+    against glibc-2.11.
+
+ -- Matthias Klose <doko at debian.org>  Sun, 04 Apr 2010 15:51:25 +0200
+
+gcc-4.5 (4.5-20100321-1) experimental; urgency=low
+
+  * Update to SVN 20100321 from the trunk.
+  * gcj-4.5-jre-headless: Stop providing java-virtual-machine.
+  * gcj-4.5-plugin-dev: Don't suggest mudflap packages.
+  * Apply proposed patch to enable both gold and ld in a single toolchain.
+    New option -fuse-ld=ld.bfd, -fuse-ld=gold.
+
+ -- Matthias Klose <doko at debian.org>  Sun, 21 Mar 2010 11:45:48 +0100
+
+gcc-4.5 (4.5-20100227-1) experimental; urgency=low
+
+  * Update to SVN 20100227 from the trunk.
+  * Don't run the libstdc++-v3 testsuite on arm*-*-linux-gnueabi, when
+    defaulting to thumb mode (Timeouts on the Ubuntu buildd).
+
+ -- Matthias Klose <doko at debian.org>  Sat, 27 Feb 2010 08:29:55 +0100
+
+gcc-4.5 (4.5-20100222-1) experimental; urgency=low
+
+  * Update to SVN 20100222 from the trunk.
+    - Install additional header files needed by plugins. Closes: #562881.
+  * gcc-4.5-plugin-dev: Should depend on libgmp3-dev. Closes: #566366.
+  * Update libstdc++6 symbols files.
+
+ -- Matthias Klose <doko at debian.org>  Tue, 23 Feb 2010 02:16:22 +0100
+
+gcc-4.5 (4.5-20100216-0ubuntu1~ppa1) lucid; urgency=low
+
+  * Update to SVN 20100216 from the trunk.
+  * Don't call dh_makeshlibs with -V for shared libraries with
+    symbol files.
+  * Don't run the libstdc++-v3 testsuite in thumb mode on armel
+    to work around buildd timeout (see PR target/42509).
+
+ -- Matthias Klose <doko at ubuntu.com>  Wed, 17 Feb 2010 02:06:02 +0100
+
+gcc-4.5 (4.5-20100204-1) experimental; urgency=low
+
+  * Update to SVN 20100204 from the trunk.
+
+ -- Matthias Klose <doko at debian.org>  Thu, 04 Feb 2010 19:44:19 +0100
+
+gcc-4.5 (4.5-20100202-1) experimental; urgency=low
+
+  * Update to SVN 20100202 from the trunk.
+    - gcc-stack_chk_fail-check.diff: Remove, applied upstream.
+  * Update libstdc++6 symbol files.
+  * Build gnat in snapshot builds on arm.
+  * Configure with --enable-checking=yes for snapshot builds, and for
+    4.5 builds before the release.
+  * Temporary workaround: On arm-linux-gnueabi run the libstdc++v3 testsuite
+    with -Wno-abi.
+  * When building the hppa64 cross compiler, add $(builddir)/gcc to
+    LD_LIBRARY_PATH to find the just built libgcc6. Closes: #565862.
+  * On sh4-linux, use sh as java architecture name instead of sh4.
+  * On armel, build gnat-4.5 using gcc-snapshot.
+  * Revert the bump of the libgcc soversion on hppa (6 -> 4).
+
+ -- Matthias Klose <doko at debian.org>  Tue, 02 Feb 2010 19:35:25 +0100
+
+gcc-4.5 (4.5-20100107-1) experimental; urgency=low
+
+  [ Matthias Klose ]
+  * Update to SVN 20100107 from the trunk.
+  * Revert the workaround for the alpha build (PR bootstrap/42511 is fixed).
+  * testsuite-hardening-format.diff: Add a fix for the libstdc++ testsuite.
+  * Build-depend again on autogen.
+  * Work around PR lto/41569 (installation bug when configured with
+    --enabled-gold).
+  * On armel run the testsuite both in arm and thumb mode, when the
+    distribution is supporthing tumb processors.
+  * Work around PR target/42509 (armel), not setting BOOT_CFLAGS, but
+    applying libcpp-arm-workaround.diff.
+
+  [ Nobuhiro Iwamatsu ]
+  * Update gcc-multiarch patch for sh4.
+
+ -- Matthias Klose <doko at debian.org>  Thu, 07 Jan 2010 16:34:57 +0100
+
+gcc-4.5 (4.5-20100106-0ubuntu1) lucid; urgency=low
+
+  * Update to SVN 20100106 from the trunk.
+  * gcj-4.5-jdk: Include /usr/lib/jvm-exports.
+  * Rename libgcc symbols file for hppa.
+  * On alpha and armel, set BOOT_CFLAGS to -g -O1 to work around bootstrap
+    failures (see PR target/42509 (armel) and PR bootstrap/42511 (alpha)).
+  * Base the source build-dependency on the package version instead of the 
+    gcc version.
+
+ -- Matthias Klose <doko at ubuntu.com>  Wed, 06 Jan 2010 14:17:29 +0100
+
+gcc-4.5 (4.5-20100103-1) experimental; urgency=low
+
+  * Update to SVN 20100103 from the trunk.
+
+  [ Samuel Thibault ]
+  * Update hurd patch for 4.5. Closes: #562802.
+
+  [ Aurelien Jarno ]
+  * Remove patches/kbsd-gnu-ada.diff (merged upstream). 
+
+  [ Matthias Klose ]
+  * libgcj11: Move .so symlinks into gcj-4.5-jdk. Addresses: #563280.
+  * gcc-snapshot: On sparc64, use gcc-snapshot as bootstrap compiler.
+  * Don't use expect-tcl8.3 on hppa anymore.
+  * Merge gnat-4.4 changes back from 4.4.2-5.
+  * Bump libgcc soversion on hppa (4 -> 6).
+  * Default to v9a (ultrasparc) on sparc*-linux.
+
+ -- Matthias Klose <doko at debian.org>  Sun, 03 Jan 2010 17:25:27 +0100
+
+gcc-4.5 (4.5-20091226-1) experimental; urgency=low
+
+  * Update to SVN 20091226 from the trunk.
+  * Fix powerpc spu installation.
+  * Enable multiarch for sh4.
+  * Fix libffi multilib test runs.
+  * Configure the hppa -> hppa64 cross compiler --with-system-zlib.
+  * gcc-4.5-hppa64: Don't ship info dir file.
+  * lib32stdc++6{,-dbg}: Add dependency on 32bit glibc.
+
+ -- Matthias Klose <doko at debian.org>  Sat, 26 Dec 2009 15:38:23 +0100
+
+gcc-4.5 (4.5-20091223-1) experimental; urgency=low
+
+  * Update to SVN 20091223 from the trunk.
+
+  [ Matthias Klose ]
+  * Update hardening patches for 4.5.
+  * Don't call install-info directly, depend on dpkg | install-info instead.
+  * Add conflicts with packages built from GCC 4.4 sources.
+  * On ARM, pass --hash-style=both to ld.
+  * Update libgfortran3 symbols file.
+  * Update libstdc++6 symbols file.
+
+  [ Arthur Loiret ]
+  * debian/rules.conf (gen_no_archs): Handle multiple arm ports.
+
+ -- Matthias Klose <doko at debian.org>  Wed, 23 Dec 2009 18:02:24 +0100
+
+gcc-4.5 (4.5-20091220-1) experimental; urgency=low
+
+  * Update to SVN 20091220 from the trunk.
+    - Remove patches applied upstream: arm-boehm-gc-locks.diff,
+      arm-gcc-gcse.diff, deb-protoize.diff, gcc-arm-thumb2-sched.diff,
+      gcc-atom-doc.diff, gcc-atom.diff, gcc-build-id.diff,
+      gcc-unwind-debug-hook.diff, gcj-use-atomic-builtins-doc.diff,
+      gcj-use-atomic-builtins.diff, libjava-atomic-builtins-eabi.diff,
+      libjava-nobiarch-check-snap.diff, lp432222.diff, pr25509-doc.diff,
+      pr25509.diff, pr39429.diff, pr40133.diff, pr40134.diff, rev146451.diff,
+      s390-biarch-snap.diff, sh4-scheduling.diff, sh4_atomic_update.diff.
+    - Update patches: gcc-multiarch.diff, gcc-textdomain.diff,
+      libjava-nobiarch-check.diff, libjava-subdir.diff, libstdc++-doclink.diff,
+      libstdc++-man-3cxx.diff, libstdc++-pic.diff, note-gnu-stack.diff,
+      rename-info-files.diff, s390-biarch.diff.
+  * Stop building the protoize package, removed from the GCC 4.5 sources.
+  * gcc-4.5: Install lto1, lto-wrapper, and new header files for intrinsics.
+  * libstdc++6-4.5-dbg: Install the python files for use with gdb.
+  * Build java packages from the gcc-4.5 source package.
+
+ -- Matthias Klose <doko at debian.org>  Sun, 20 Dec 2009 10:56:56 +0100
+
+gcc-4.4 (4.4.2-6) unstable; urgency=low
+
+  * Update to SVN 20091220 from the gcc-4_4-branch (r155367).
+    Fix PR c++/42387, PR c++/41183.
+
+  [ Matthias Klose ]
+  * Apply svn-doc-updates.diff for non DFSG builds.
+  * gcc-snapshot:
+    - Remove patches integrated upstream: pr40133.diff. Closes: #561550.
+
+  [ Nobuhiro Iwamatsu ]
+  * Backport linux atomic ops changes for sh4 from the trunk. Closes: #561550.
+  * Backport from trunk: [SH] Not run scheduling before reload as default.
+    Closes: #561429.
+
+  [ Arthur Loiret ]
+  * Apply spu patches independently of the hardening patches; fix build
+    failure on powerpc.
+
+ -- Matthias Klose <doko at debian.org>  Sun, 20 Dec 2009 10:20:19 +0100
+
+gcc-4.4 (4.4.2-5) unstable; urgency=low
+
+  * Update to SVN 20091212 from the gcc-4_4-branch (r155122).
+    Revert the fix for PR libstdc++/42261, fix PR fortran/42268,
+    PR target/42263, PR target/42263, PR target/41196, PR target/41939,
+    PR rtl-optimization/41574.
+
+  [ Matthias Klose ]
+  * Regenerate svn-updates.diff.
+  * Disable biarch testsuite runs for libffi (broken and unused).
+  * Support xz compression of source tarballs.
+  * Fix typo in PR libstdc++/40133 to do the link tests.
+  * gcc-snapshot:
+    - Remove patches integrated upstream: pr40134-snap.diff.
+    - Update s390-biarch.diff for trunk.
+
+  [ Aurelien Jarno ]
+  * Add sparc64 support: disable multilib and install the libraries
+    in /lib.
+
+ -- Matthias Klose <doko at debian.org>  Sun, 13 Dec 2009 10:28:19 +0100
+
+gcc-4.4 (4.4.2-4) unstable; urgency=low
+
+  * Update to SVN 20091210 from the gcc-4_4-branch (r155122), Fixes:
+    PR target/42165, PR target/42113, PR libgfortran/42090,
+    PR middle-end/42049, PR c++/42234, PR fortran/41278, PR libstdc++/42261,
+    PR libstdc++/42273 PR java/41991.
+
+  [ Matthias Klose ]
+  * gcc-arm-thumb2-sched.diff: Don't restrict reloads to LO_REGS for Thumb-2.
+  * PR target/40134: Don't redefine LIB_SPEC on hppa.
+  * PR target/42263, fix wrong code bugs in SMP support on ARM, backport from
+    the trunk.
+  * Pass -mimplicit-it=thumb to as by default on ARM, when configured
+    --with-mode=thumb.
+  * Fix boehm-gc build on ARM --with-mode=thumb.
+  * ARM: Don't copy uncopyable instructions in gcse.c (backport from trunk).
+  * Build the spu cross compiler for powerpc from the cell-4_4-branch.
+  * gcj: add option -fuse-atomic-builtins (backport from the trunk).
+
+  [ Arthur Loiret ]
+  * Make svn update interdiffs more readable.
+
+ -- Matthias Klose <doko at debian.org>  Thu, 10 Dec 2009 04:29:36 +0100
+
+gcc-4.4 (4.4.2-3) unstable; urgency=low
+
+  * Update to SVN 20091118 from the gcc-4_4-branch (r154294).
+    Fix PR PR c++/9381, PR c++/21008, PR c++/35067, PR c++/36912, PR c++/37037,
+    PR c++/37093, PR c++/38699, PR c++/39786, c++/36959, PR c++/41754,
+    PR c++/41876, PR c++/41967, PR c++/41972, PR c++/41994, PR c++/42059,
+    PR c++/42061,
+    PR fortran/41772, PR fortran/41850, PR fortran/41909,
+    PR middle-end/40946, PR middle-end/41317, R tree-optimization/41643,
+    PR target/41900, PR rtl-optimization/41917, PR middle-end/41963,
+    PR middle-end/42029.
+  * Snapshot builds:
+    - Patch updates.
+    - Configure with --disable-browser-plugin.
+  * Configure with --disable-libstdcxx-pch on hppa.
+  * Backport armel patches form the trunk:
+    - Fix PR objc/41848 - workaround ObjC and -fsection-anchors.
+    - Enable scheduling for Thumb-2, including the fix for PR target/42031.
+    - Fix PR target/41939, EABI violation in accessing values below the stack.
+
+ -- Matthias Klose <doko at debian.org>  Wed, 18 Nov 2009 08:37:18 -0600
+
+gcc-4.4 (4.4.2-2) unstable; urgency=low
+
+  * Update to SVN 20091031 from the gcc-4_4-branch (r153603).
+    - Fix PR debug/40521, PR target/40913, PR middle-end/22072,
+      PR target/41665, PR c++/38798, PR c++/40092, PR c++/37875,
+      PR c++/37204, PR fortran/41755, PR libstdc++/40654, PR libstdc++/40826,
+      PR target/41702, PR c/41842, PR target/41762, PR c++/40808,
+      PR fortran/41777, PR libstdc++/40852.
+  * Snapshot builds:
+    - Configure with --enable-plugin, disable the gcjwebplugin by a patch.
+      Addresses: #551200.
+    - Proposed patch for PR lto/41652, compile lto-plugin with
+      -D_FILE_OFFSET_BITS=64
+    - Allow disabling the ada build via DEB_BUILD_OPTIONS nolang=ada.
+  * Fixes for reverse cross builds.
+  * On sparc default to v9 in 32bit mode.
+  * Fix __stack_chk_fail check for cross builds configured --with-headers.
+  * Apply some fixes for uClibc cross builds (Jonas Meyer, Hector Oron).
+
+ -- Matthias Klose <doko at debian.org>  Sat, 31 Oct 2009 14:16:03 +0100
+
+gcc-4.4 (4.4.2-1) unstable; urgency=low
+
+  * GCC 4.4.2 release.
+    - Fixes PR target/26515, PR target/41680, PR rtl-optimization/41646,
+      PR c++/39863, PR c++/41038.
+  * Fix setting timeout for testsuite runs.
+  * gcj-4.4/gcc-snapshot: Drop build-dependency on libgconf2-dev, disabled
+    by default.
+  * gcj-4.4: Run the libffi testsuite as well.
+  * Add explicit build dependency on zlib1g-dev.
+  * Fix cross builds, add support for gomp and gfortran (only tested for
+    non-biarch targets).
+  * (Build-)depend on binutils-2.20.
+  * Fix up omp.h for multilibs (taken from Fedora).
+
+ -- Matthias Klose <doko at debian.org>  Sun, 18 Oct 2009 02:31:32 +0200
+
+gcc-4.4 (4.4.1-6) unstable; urgency=low
+
+  * Snapshot builds:
+    - Add build dependency on libelfg0-dev (>= 0.8.12).
+    - Add build dependency on binutils-gold where available.
+    - Suggest binutils-gold; not perfect, it is required when using
+      -use-linker-plugin.
+    - Work around installation failure in the lto-plugin (PR lto/41569).
+    - Install java home symlinks in /usr/lib/jvm.
+    - Revert the dwarf2cfi_asm workaround, obsoleted by PR debug/40521.
+  * PR debug/40521:
+    - Apply patch for PR debug/40521, taken from the trunk.
+    - Revert the dwarf2cfi_asm workaround, obsoleted by PR debug/40521.
+    - Depend on binutils (>= 2.19.91.20091005).
+  * Update to SVN 20091005 from the gcc-4_4-branch (r152450).
+    - Fixes PR fortran/41479.
+  * In the test summary, add more information about package versions
+    used for the build.
+
+ -- Matthias Klose <doko at debian.org>  Wed, 07 Oct 2009 02:12:56 +0200
+
+gcc-4.4 (4.4.1-5) unstable; urgency=medium
+
+  * Update to SVN 20091003 from the gcc-4_4-branch (r152174).
+    - Fixes PR target/22093, PR c/39779, PR libffi/40242, PR target/40473, 
+      PR debug/40521, PR c/41049, PR debug/41065, PR ada/41100,
+      PR tree-optimization/41101, PR libgfortran/41328, PR libffi/41443,
+      PR fortran/41515.
+  * Updates for snapshot builds:
+    - Fix build dependency on automake for snapshot builds.
+    - Update patches pr40134-snap and libjava-nobiarch-check-snap.
+  * Fix lintian errors in libstdc++ packages and lintian warnings in the
+    source package.
+  * Add debian/README.source.
+  * Don't apply PR libstdc++/39491 for the trunk anymore.
+  * Install java home symlinks for snapshot builds in /usr/lib/jvm,
+    including javac. Depend on ecj. Addresses #536102.
+  * Fix build failure on armel with -mfloat-abi=softfp.
+  * Don't pessimize the code for newer armv6 and armv7 processors.
+  * libjava: Use atomic builtins For Linux ARM/EABI, backported from the
+    trunk.
+  * Proposed patch to fix wrong-code on powerpc (Alan Modra). LP: #432222.
+  * Link against -ldl instead of -lcloog -lppl. Exit with an error when using
+    the Graphite loop transformation infrastructure without having the
+    libcloog-ppl0 package installed (patch taken from Fedora). Packages
+    using these optimizations should build-depend on libcloog-ppl0.
+    gcc-4.4: Suggest the cloog runtime libraries.
+  * Install a hook _Unwind_DebugHook, called during unwinding. Intended as
+    a hook for a debugger to intercept exceptions. CFA is the CFA of the
+    target frame.  HANDLER is the PC to which control will be transferred
+    (patch taken from Fedora).
+
+ -- Matthias Klose <doko at debian.org>  Sat, 03 Oct 2009 13:33:05 +0100
+
+gcc-4.4 (4.4.1-4) unstable; urgency=low
+
+  * Update to SVN 20090911 from the gcc-4_4-branch (r151649).
+    - Fixes PR target/34412, PR middle-end/41094, PR target/40718,
+      PR fortran/41062, PR libstdc++/41005, PR target/41184,
+      PR bootstrap/41180, PR c++/41127, PR fortran/41258,
+      PR rtl-optimization/40861, PR target/41315, PR fortran/39876.
+
+  [ Matthias Klose ]
+  * Avoid underscores in doc-base document id's to workaround a
+    dh_installdocs bug.
+  * Update file names for the Ada user's guide.
+  * Set Homepage attribute for packages.
+  * Update the patch for gnat on armel.
+  * gcj-4.4-jdk: Depend on libantlr-java. Addresses: #546062.
+  * Backport patch for PR tree-optimization/41101 from the trunk.
+    Closes: #541816.
+  * Update libstdc++6.symbols for symbols introduced with the fix
+    for PR libstdc++/41005.
+  * Apply proposed patches for PR libstdc++/40133 and PR target/40134.
+    Add symbols exception propagation support in libstdc++ on armel
+    to the libstdc++6 symbols.
+
+  [ Ludovic Brenta]
+  Merge from gnat-4.4 (4.4.1-3) unstable; urgency=low
+  * debian/rules.defs, debian/rules.d/binary-ada.mk, debian/rules.patch:
+    better support for architectures that support only one exception
+    handling mechanism (SJLJ or ZCX).
+
+ -- Matthias Klose <doko at debian.org>  Sat, 12 Sep 2009 03:18:17 +0200
+
+gcc-4.4 (4.4.1-3) unstable; urgency=low
+
+  * Update to SVN 20090822 from the gcc-4_4-branch (r151011).
+    - Fixes PR tree-optimization/41016, PR tree-optimization/41011,
+      PR tree-optimization/41008, PR tree-optimization/40991,
+      PR tree-optimization/40964, PR target/8603 (closes: #161432),
+      PR target/41019, PR target/41015, PR target/40957, PR target/40934,
+      PR rtl-optimization/41033, PR middle-end/41047, PR middle-end/41006,
+      PR fortran/41070, PR fortran/40995, PR fortran/40847, PR debug/40990,
+      PR debug/37801, PR c/41046, PR c/40948, PR c/40866, PR bootstrap/41018,
+      PR middle-end/41123,PR target/40971, PR c++/41131, PR fortran/41102,
+      PR libfortran/40962.
+
+  [ Arthur Loiret ]
+  * Only use -fno-stack-protector when known to the stage1 compiler.
+
+  [ Aurelien Jarno ]
+  * lib32* packages: remove the Pre-Depends: libc6-i386 (>= 2.9-18) and
+    upgrade the Conflicts: libc6-i386 from (<< 2.9-18) to (<< 2.9-22).
+    Closes: #537466.
+  * kbsd-gnu-ada.dpatch: add support for kfreebsd-amd64.
+
+  [ Matthias Klose ]
+  * Build gnat on armel, the gnat-4.4 build still failing, gcc-snapshot
+    builds good enough to build itself.
+  * Merge enough of the gnat-4.4 changes back to allow a combined build
+    from the gcc-4.4 source.
+  * Build libgnatprj for armel.
+  * On armel build just one version of the ada run-time library.
+  * Update auto* build dependencies for snapshot builds.
+  * Apply proposed patch for PR target/40718.
+
+ -- Matthias Klose <doko at debian.org>  Sun, 23 Aug 2009 11:50:38 +0200
+
+gcc-4.4 (4.4.1-2) unstable; urgency=low
+
+  [ Matthias Klose ]
+  * Update to SVN 20090808 from the gcc-4_4-branch (r150577).
+    - Fixes PR target/40832, PR rtl-optimization/40710,
+      PR tree-optimization/40321, PR build/40010, PR fortran/40727,
+      PR build/40010, PR rtl-optimization/40924, PR c/39902,
+      PR middle-end/40943, PR target/40577, PR c++/39987, PR debug/39706,
+      PR c++/40948, PR c++/40749, PR fortran/40851, PR fortran/40878,
+      PR target/40906.
+  * Bump GCC version required in dependencies to 4.4.1.
+  * Enable Ada for snapshot builds on all archs with a gnat package
+    available in the archive.
+  * Build-depend on binutils 2.19.51.20090805, needed at least for armel.
+
+  [ Aurelien Jarno ]
+  * kbsd-gnu-ada.dpatch: new patch to fix build on GNU/kFreeBSD.
+
+ -- Matthias Klose <doko at ubuntu.com>  Sat, 08 Aug 2009 10:17:39 +0200
+
+gcc-4.4 (4.4.1-1) unstable; urgency=low
+
+  * GCC 4.4.1 release.
+    - Fixes PR target/39943, PR tree-optimization/40792, PR c++/40780,
+      PR middle-end/40747, PR libstdc++/40691, PR libfortran/40714,
+      PR tree-optimization/40813 (ICE in OpenJDK build on sparc).
+  * Apply proposed patch for PR target/39429, an ARM wrong-code error.
+  * Fix a typo in the arm back-end (proposed patch).
+  * Build-depend on libmpc-dev for snapshot builds.
+  * Fix build failure in cross builds (Hector Oron). Closes: #522597.
+  * Run the testsuite as part of the build target, not the install target.
+
+ -- Matthias Klose <doko at debian.org>  Wed, 22 Jul 2009 13:24:39 +0200
+
+gcc-4.4 (4.4.0-11) unstable; urgency=medium
+
+  [ Matthias Klose ]
+  * Update to SVN 20090715 from the gcc-4_4-branch (r149690).
+    - Corresponds to the 4.4.1 release candidate.
+    - Fixes PR target/38900, PR debug/40666, PR middle-end/40669,
+      PR middle-end/40328, PR target/40587, PR middle-end/40585,
+      PR c++/40566, PR tree-optimization/40542, PR c/39902,
+      PR tree-optimization/40579, PR tree-optimization/40550, PR c++/40684,
+      PR c++/35828, PR c++/37816, PR c++/40639, PR c++/40633, PR c++/40619,
+      PR c++/40595, PR fortran/40440, PR fortran/40551, PR fortran/40638,
+      PR fortran/40443, PR libstdc++/40600, PR rtl-optimization/40667, PR c++/40740,
+      PR c++/36628, PR c++/37206, PR c++/40689, PR c++/40502, PR middle-end/40747.
+  * Backport of PR c/25509, new option -Wno-unused-result. LP: #305176.
+  * gcc-4.4: Depend on libgomp1, even if not building the libgomp1 package.
+  * Add proposed patches for PR libstdc++/40133, PR target/40134; don't apply
+    yet.
+
+  [Emilio Pozuelo Monfort]
+  * Backport build-id support, configure with --enable-linker-build-id.
+
+ -- Matthias Klose <doko at debian.org>  Tue, 14 Jul 2009 16:09:33 -0400
+
+gcc-4.4 (4.4.0-10) unstable; urgency=low
+
+  [ Arthur Loiret ]
+  * debian/rules.patch: Record the auto* calls to run them once only.
+
+  [ Matthias Klose ]
+  * Update to SVN 20090627 from the gcc-4_4-branch (r149023).
+    - Fixes PR other/40024.
+  * Fix typo, adding blacklisted symbols to the libgcc1 symbols file on armel.
+  * On mips/mipsel use -O2 in STAGE1_CFLAGS until binutils is updated.
+
+ -- Matthias Klose <doko at debian.org>  Sun, 28 Jun 2009 10:13:08 +0200
+
+gcc-4.4 (4.4.0-9) unstable; urgency=high
+
+  * Update to SVN 20090624 from the gcc-4_4-branch (r148821).
+    - Fix PR objc/28050 (LP: #362217), PR libstdc++/40297, PR c++/40342.
+  * Continue the well planned lib32 transition on amd64, adding pre-dependencies
+    on libc6-i386 (>= 2.9-18) on Debian. Closes: #533767.
+  * Enable SSP on arm and armel, run the testsuite with -fstack-protector.
+    LP: #375189.
+  * Fix spu fortran build in gcc-snapshot builds.
+  * Add missing symbols for 64bit libgfortran library.
+  * Update libstdc++ symbol files for sparc 64bit, adding symbols
+    for exception propagation support.
+  * Explicitely add __aeabi symbols to the libgcc1 symbols file on armel.
+    Closes: #533843.
+
+ -- Matthias Klose <doko at debian.org>  Wed, 24 Jun 2009 23:46:02 +0200
+
+gcc-4.4 (4.4.0-8) unstable; urgency=medium
+
+  * Let all 32bit libs conflict with libc6-i386 (<< 2.9-17). Closes: #533767.
+  * Update to SVN 20090620 from the gcc-4_4-branch (r148747).
+    - Fixes PR fortran/39800, PR fortran/40402.
+  * Work around tar bug on kfreebsd unpacking java class file updates (#533356).
+
+ -- Matthias Klose <doko at debian.org>  Sat, 20 Jun 2009 15:15:22 +0200
+
+gcc-4.4 (4.4.0-7) unstable; urgency=medium
+
+  * Update to SVN 20090618 from the gcc-4_4-branch (r148685).
+    - Fixes PR middle-end/40446, PR middle-end/40389, PR middle-end/40460,
+      PR fortran/40168, PR target/40470.
+  * On amd64, install 32bit libraries into /lib32 and /usr/lib32.
+  * lib32gcc1, lib32gomp1, lib32stdc++6: Conflict with libc6-i386 (= 2.9-15),
+    libc6-i386 (= 2.9-16).
+  * Handle serialver alternative in -jdk install scripts, not in -jre-headless.
+
+ -- Matthias Klose <doko at debian.org>  Fri, 19 Jun 2009 01:36:00 +0200
+
+gcc-4.4 (4.4.0-6) unstable; urgency=low
+
+  [ Matthias Klose ]
+  * Update to SVN 20090612 from the gcc-4_4-branch (r148433).
+    - Fixes PR c++/38064, PR c++/40139, PR target/40017, PR target/40266,
+      PR bootstrap/40027, PR tree-optimization/40087, PR target/39856,
+      PR rtl-optimization/40105, PR target/39942, PR middle-end/40204,
+      PR debug/40109, PR tree-optimization/39999, PR libfortran/37754,
+      PR fortran/22423, PR libfortran/39667, PR libfortran/39782,
+      PR libfortran/38668, PR libfortran/39665, PR libfortran/39702,
+      PR libfortran/39709, PR libfortran/39665i, PR libgfortran/39664,
+      PR fortran/38654, PR libfortran/37754, PR libfortran/37754,
+      PR libfortran/25561, PR libfortran/37754, PR middle-end/40291,
+      PR target/40017, PR middle-end/40340, PR c++/40308, PR c++/40311,
+      PR c++/40306, PR c++/40307, PR c++/40370, PR c++/40372, PR c++/40373,
+      PR c++/40381, PR fortran/40019, PR fortran/39893.
+  * gcj-4.4-jdk: Depend on libecj-java-gcj instead of libecj-java.
+  * Let gjdoc --version use the Configuration class instead of
+    version.properties (Alexander Sack). LP: #385682.
+  * Preserve libgcc_s.so linker scripts. Closes: #532263.
+
+  [Ludovic Brenta]
+  * debian/patches/ppc64-ada.dpatch,
+    debian/patches/ada-mips.dpatch,
+    debian/patches/ada-mipsel.dpatch: remove, merged upstream.
+  * debian/patches/*ada*.dpatch:
+    - rename to *.diff;
+    - remove the dpatch prologue shell script
+    - refresh with quilt -p ab and without time stamps
+    - adjust to GCC 4.4
+  * debian/patches/ada-library-project-files-soname.diff,
+    debian/patches/ada-polyorb-dsa.diff,
+    debian/patches/pr39856.diff: new.
+  * debian/rules.patch: adjust accordingly.
+  * debian/rules.defs: re-enable Ada.
+  * debian/rules2: do a lean bootstrap when building Ada.
+  * debian/rules.d/binary-ada.mk: do not build gnatbl or gprmake anymore,
+    removed upstream.
+
+ -- Matthias Klose <doko at debian.org>  Fri, 12 Jun 2009 18:34:13 +0200
+
+gcc-4.4 (4.4.0-5) unstable; urgency=medium
+
+  * Update to SVN 20090517 from the gcc-4_4-branch (r147630).
+    - Fixes PR tree-optimization/40062, PR middle-end/39986,
+      PR middle-end/40057, PR fortran/39879, PR libstdc++/40038,
+      PR middle-end/40035, PR target/37179, PR middle-end/39666,
+      PR tree-optimization/40074, PR fortran/40018, PR fortran/38863,
+      PR middle-end/40147, PR fortran/40018, PR target/40153.
+
+  [ Matthias Klose ]
+  * Update libstdc++ symbols files.
+  * Update libgcc, libobjc, libstdc++ symbols files for armel.
+  * Fix version symlink in gcc_lib_dir. Closes: #527837.
+  * Fix symlinks for javac and header files in /usr/lib/jvm.
+    Closes: #528084.
+  * Don't build the stage1 compiler with -O with recent binutils (trunk).
+  * Revert doing link tests to check for the atomic builtins, disabling
+    exception propagation support in libstdc++ on armel. See PR40133, PR40134.
+  * On mips/mipsel don't run the java testsuite with -mabi=64.
+  * Default to armv4 for the gcc-snapshot package as well. Closes: #523936.
+  * Mention GCC trunk in the gcc-snapshot package description. Closes: #526309.
+  * Remove unneed '..' elements from symlinks in JAVA_HOME.
+  * Fix some lintian warnings for gcc-snapshot.
+
+  [ Arthur Loiret ]
+  * Add missing dir separator to multiarch path.  Closes: #527537.
+
+ -- Matthias Klose <doko at debian.org>  Sun, 17 May 2009 11:15:52 +0200
+
+gcc-4.4 (4.4.0-4) unstable; urgency=medium
+
+  * Update to SVN 20090506 from the gcc-4_4-branch (r147161).
+    - Fixes PR rtl-optimization/39914, PR testsuite/39776,
+      PR tree-optimization/40022, PR libstdc++/39909.
+
+  [ Matthias Klose ]
+  * gcc-4.4-source: Don't depend on gcc-4.4-base, depend on quilt
+    and patchutils.
+  * On armel, link the shared libstdc++ with both -lgcc_s and -lgcc.
+  * Update libgcc and libstdc++ symbol files for mips and mipsel.
+  * Update libstdc++ symbol files for armel and hppa, adding symbols
+    for exception propagation support.
+  * Add ARM EABI symbols to libstdc++ symbol files for armel.
+  * Add libobjc symbols file for armel.
+  * Fix PR libstdc++/40038, missing ceill/tanhl symbols in libstdc++.
+  
+  [ Aurelien Jarno ]
+  * Fix libc name for biarch packages on kfreebsd-amd64.
+
+ -- Matthias Klose <doko at debian.org>  Wed, 06 May 2009 15:10:36 +0200
+
+gcc-4.4 (4.4.0-3) unstable; urgency=low
+
+  * libstdc++-doc: Install the man pages again.
+  * Fix build configuration for the GC enabled ObjC runtime library.
+  * Fix thinko in autotools_files, resulting in autoconf not run in
+    some cases.
+  * Do link tests to check for the atomic builtins, enables exception
+    propagation support in libstdc++ on armel and hppa.
+
+ -- Matthias Klose <doko at debian.org>  Sun, 03 May 2009 23:38:56 +0200
+
+gcc-4.4 (4.4.0-2) unstable; urgency=low
+
+  [ Samuel Thibault ]
+  * Enable java build on the hurd.
+
+  [ Matthias Klose ]
+  * libobjc2.symbols.armel: Remove, use the default one.
+  * Address PR libstdc++/39491, removing __signbitl from the libstdc++6
+    symbols file on hppa.
+  * libstdc++6.symbols.armel: Fix error introduced with copy from the
+    arm symbols file.
+  * libstdc++6.symbols.*: Don't assume exception propagation support
+    enabled for all architectures (although it should on armel, hppa,
+    sparc).
+  * Disable the build of the ObjC garbage collection library on mips*,
+    working around a build failure.
+
+ -- Matthias Klose <doko at debian.org>  Sat, 02 May 2009 14:22:35 +0200
+
+gcc-4.4 (4.4.0-1) unstable; urgency=low
+
+  [ Matthias Klose ]
+  * Update to SVN 20090429 from the gcc-4_4-branch (r146989).
+  * Configure java enabled builds with --enable-java-home.
+  * Integrate the bits previously found in java-gcj-compat.
+  * Rename the packages using the naming schema used for OpenJDK:
+    gcj-X.Y-{jre-headless,jre,jre-lib,jdk,source}.  The packages
+    {gij,gcj,gappletviewer}-X.Y and libgcjN-{jar,source} are gone.
+  * Build the libgcj documentation with the just built gjdoc.
+  * Don't use profiled bootstrap when building the gcj source.
+  * Apply proposed patch for PR target/39856.
+  * Fix some lintian warnings.
+  * Don't include debug symbols for libstdc++.so.6, if the library is
+    built by a newer GCC version.
+  * Adjust hrefs to point to the local libstdc++ documentation. LP: #365414.
+  * Update libgcc, libgfortran, libobjc, libstdc++ symbol files.
+  * gcc-4.4: Include libssp_nonshared.a.
+  * For ix86, set the java architecture directory to i386.
+
+  [ Samuel Thibault ]
+  * Update Hurd changes.
+  * Configure with --enable-clocale=gnu on hurd-i386.
+  * debian/patches/hurd-pthread.diff: Reapply.
+
+ -- Matthias Klose <doko at debian.org>  Thu, 30 Apr 2009 00:30:20 +0200
+
+gcc-4.4 (4.4.0-1~exp2) experimental; urgency=low
+
+  * Update to SVN 20090423 from the gcc-4_4-branch.
+
+  [ Aurelien Jarno ]
+  * kbsd-gnu.diff: remove parts merged upstream.
+
+  [ Matthias Klose ]
+  * Remove conflicts/replaces for *-spu packages.
+  * Configure the spu cross compiler without --with-sysroot and
+    --enable-multiarch.
+  * Fix and reenable the gfortran-spu build.
+  * Work around build failures with missing libstdc++ baseline files.
+  * Install gjdoc man page.
+  * Fix java configuration with --enable-java-home and include symlinks
+    for JAVA_HOME in /usr/lib/jvm.
+  * Apply proposed fix for PR middle-end/39794.
+  * Install libstdc++ man pages with suffix .3cxx instead of .3.
+    Closes: #525244.
+  * lib*stdc++6-{dbg,doc}: Add conflicts to the corresponding 4.3 packages.
+
+ -- Matthias Klose <doko at debian.org>  Thu, 23 Apr 2009 18:11:49 +0200
+
+gcc-4.4 (4.4.0-1~exp1) experimental; urgency=low
+
+  * Final GCC 4.4.0 release.
+
+  * Don't build the Fortran SPU cross compiler, currently broken.
+  * spu cross build: Build without spucache and spumea64.
+  * Configure --with-arch-32=i486 on amd64, i386, and kfreebsd-{amd64,i386},
+    --with-arch-32=i586 on hurd-i386, --with-cpu=atom on lpia.
+  * Build using profiled bootstrap.
+  * Remove the gcc-4.4-base.postinst. Addresses: #524708.
+  * Update debian/copyright: Include runtime library exception, remove
+    D and Phobas license.
+  * Apply proposed patch for PR libstdc++/39491, missing symbol in libstdc++
+    on hppa.
+  * Remove unsused soft-fp functions in the 64bit libgcc on powerpc (PR39828).
+  * Update NEWS files for 4.4.
+  * Build again libgfortran for the non-default multilib configuration.
+  * Restore missing chunks in note-gnu-stack.diff, lost during the conversion
+    to quilt.
+
+ -- Matthias Klose <doko at debian.org>  Wed, 22 Apr 2009 00:53:16 +0200
+
+gcc-4.4 (4.4-20090418-1) experimental; urgency=low
+
+  * Update to SVN 20090418 from the gcc-4_4-branch.
+
+  [ Arthur Loiret ]
+  * Update patches:
+    - boehm-gc-nocheck, cross-include, libjava-rpath, link-libs:
+      Rebase on trunk.
+    - gcc-m68k-pch, libjava-debuginfo, libjava-loading-constraints:
+      Remove, merged in trunk.
+    - cell-branch, cell-branch-doc: Remove, there is no upstream cell 4.4
+      branch yet.
+    - gdc-fix-build-kbsd-gnu, svn-gdc-updates, gpc-4.1, gpc-gcc-4.x,
+      gpc-names: Remove, gpc and gdc are not ported to GCC 4.4 yet.
+    - svn-class-updates, svn-doc-updates, svn-updates: Make empty.
+    - Refresh all others, and convert them all to quilt.
+
+  * Build system improvements:
+    - Partial rewrite/refactor of rules files.
+    - Switch patch system to quilt.
+    - Autogenerate debian/copyright.
+    - Use the autoconf2.59 package.
+
+  * multilib/multiarch support improvements: Closes: #369064, #484589.
+    - mips-triarch.diff: Replace with a newer version (approved upstream).
+    - s390-biarch.diff: Ditto.
+    - debian/rules2: Configure with --enable-targets=all on mips-linux,
+      mipsel-linux and s390-linux.
+    - gcc-multiarch.diff: New, add multiarch include directories and
+      libraries path to the system paths.
+    - debian/rules2: Configure with --enable-multiarch. Configure spu build
+      with --with-multiarch-defaults=spu-elf.
+    - multiarch-include.diff: Remove.
+    - debian/multiarch.inc: Ditto.
+
+  * cross-compilers changes:
+    - Never build a separated -base package, don't symlink any doc dir.
+    - Build gobjc again.
+
+  * Run the 64-bit tests with -mabi=64 instead of -m64 on mips/mipsel to
+    hopefully fix the massive failure.
+  * Always set $(distribution) to "Debian" on mips/mipsel, workarounds FTBFS
+    on those archs due to a kernel bug triggered by lsb_release call.
+    Adresses: #524416.
+  * debian/rules.patch: Only apply the ada-nobiarch-check patch when ada is
+    enabled. Remove gpc and gdc patches.
+  * debian/rules.unpack (install_autotools_stamp): Remove.
+  * debian/rules.defs (configure_dependencies): Remove autotools dependency.
+  * debian/rules.conf: Add a copyright-file target.
+  * debian/control.m4: Build-Depends on autoconf2.59 and patchutils.
+    Make gcc-4.4-source Depends on autoconf2.59.
+    Add myself to Uploaders.
+  * debian/rules.d/binary-source.mk: Don't build and install an embedded
+    copy or autoconf2.59 in gcc-4.4-source.
+  * debian/copyright.in: New.
+
+  [ Matthias Klose ]
+  * Build gcj on hppa.
+  * Add support to build vfp optimized runtime libraries on armel.
+  * gcc-4.4-spu: Depend on newlib-spu.
+  * Fix sections of -dbg and java packages.
+  * gcc-default-ssp.dpatch: Set the default as well, when calling the
+    preprocessor. LP: #346126.
+  * Build-depend on quilt.
+  * Keep the copyright file in the archive.
+  * Remove conflict of the gcc-X.Y-source packages.
+  * Update removal of gfdl doc files for 4.4.
+  * Don't re-run the autotools (introduced with the switch to quilt).
+  * On arm and armel, install the arm_neon.h header. LP: #360819.
+  * When hardening options are turned on by default, patch the testsuite
+    to handle the hardening defaults (Kees Cook).
+  * Only run the patch target once. Avoids multiple autotool runs, but
+    doesn't reflect changes in the series file anymore.
+  * libgcj-doc: Fix documentation title.
+  * Fix gcj source build with recent build changes.
+  * Don't check for libraries in DEB_BUILD_OPTIONS/nolang.
+  * gappletviewer: Include missing binary.
+
+  [ Aurelien Jarno ]
+  * Remove: patches/kbsd-gnu-ada.dpatch (merged upstream).
+  * kbsd-gnu.diff: add fix for stuff broken by upstream.
+
+ -- Matthias Klose <doko at debian.org>  Mon, 20 Apr 2009 01:34:26 +0200
+
+gcc-4.4 (4.4-20090317-1) experimental; urgency=low
+
+  * Initial upload of GCC-4.4, based on trunk 20090317 (r144904).
+
+  [Matthias Klose]
+  * Branch from the gcc-4.3 packaging.
+  * Remove *-trunk patches, update remaining patches for the trunk.
+  * Remove patches integrated upstream: libobjc-gc-link, libjava-file-support,
+    libjava-realloc-leak, libjava-armel-ldflags, libstdc++-symbols-hppa,
+    gcc-m68k-pch, libjava-extra-cflags, libjava-javah-bridge-tgts,
+    hppa-atomic-builtins, armel-atomic-builtins, libssp-gnu, libobjc-armel,
+    gfortran-armel-updates, sparc-biarch, libjava-xulrunner-1.9.
+  * Update patches for 4.4, mostly using the patches converted for quilt by
+    Arthur Loiret.
+  * debian/patches/libjava-soname.dpatch: Remove, unmodifed upstream library.
+  * debian/patches/gcc-driver-extra-langs.dpatch: Search Ada files in subdir.
+  * debian/rules.unpack, debian/rules.d/binary-source.mk: Update for included
+    autoconf tarball.
+  * debian/rules.d/binary-{gcc,java}.mk: Install new header files.
+  * debian/libgfortran3.symbols.common: Remove symbol not generated by
+    gfortran (__iso_c_binding_c_f_procpointer at GFORTRAN_1.0), PR38871.
+  * debian/rules.conf: Update for 4.4.
+  * Fix build dependencies and configure options for 4.4, which were applied
+    for snapshot builds only.
+
+  [Arthur Loiret]
+  * Update patches from debian/patches:
+    - Remove backported fixes:
+      PR ada: pr10768.dpatch, pr15808.dpatch, pr15915.dpatch, pr16086.dpatch,
+      pr16087.dpatch, pr16098.dpatch, pr17985.dpatch, pr18680.dpatch,
+      pr22255.dpatch, pr22387.dpatch, pr28305.dpatch, pr28733.dpatch,
+      pr29015.dpatch, pr30740.dpatch, pr30827.dpatch pr33688.dpatch,
+      pr34466.dpatch, pr35050.dpatch, pr35792.dpatch.
+      PR target: pr27880.dpatch, pr28102.dpatch, pr30961.dpatch,
+      pr35965.dpatch, pr37661.dpatch.
+      PR libgcj: pr24170.dpatch, pr35020.dpatch.
+      PR gcov-profile: pr38292.dpatch.
+      PR other: pr28322.dpatch.
+  * debian/rules.patch: Update.
+  * debian/symbols/libgomp1.symbols.common: Add new symbols from OpenMP 3.0.
+
+ -- Matthias Klose <doko at debian.org>  Tue, 17 Mar 2009 02:28:01 +0100
+
+gcc-4.3 (4.3.3-5) unstable; urgency=low
+
+  Merge from gnat-4.3 (4.3.3-1):
+
+  [Petr Salinger]
+  * debian/patches/ada-libgnatprj.dpatch: enable support for GNU/kFreeBSD.
+    Fixes: #512277.
+
+  [Ludovic Brenta]
+  * debian/patches/ada-acats.dpatch: attempt to fix ACATS tests (not entirely
+    successful yet).
+  * New upstream version.  Fixes: #514565.
+
+  [Matthias Klose]
+  * Update to SVN 20090301 from the gcc-4_3-branch.
+    - Fix PR c/35446, PR c++/38950, PR fortran/38852, PR fortran/39006,
+      PR c++/39225 (closes: #516727), PR c++/38950, PR target/38056,
+      PR target/39228, PR middle-end/36578, PR inline-asm/39058,
+      PR middle-end/37861.
+  * Don't provide the 4.3.2 symlink in gcc_lib_dir anymore.
+  * Require binutils-2.19.1.
+
+ -- Matthias Klose <doko at debian.org>  Sun, 01 Mar 2009 14:18:09 +0100
+
+gcc-4.3 (4.3.3-4) unstable; urgency=low
+
+  * Fix Fix PR gcov-profile/38292 (wrong profile information), taken
+    from the trunk.
+  * Update to SVN 20090215 from the gcc-4_3-branch.
+    Fix PR c/35435, PR tree-optimization/39100, PR rtl-optimization/39076,
+    PR c/35433, PR tree-optimization/39041, PR target/38988,
+    PR middle-end/38969, PR c++/36897, PR c++/39054, PR c/39035, PR c/35434,
+    PR c/36432, PR target/38991, PR c/39084, PR target/39118.
+  * Reapply the fix for PR middle-end/38615.
+  * Include autoconf-2.59 sources into the source package, and install as
+    part of the gcc-4.3-source package.
+  * Explicitely use autoconf-1.9.
+  * Disable building the gcjwebplugin.
+  * Don't configure with --enable-cld on amd64 and i386.
+
+ -- Matthias Klose <doko at debian.org>  Sun, 15 Feb 2009 23:40:09 +0100
+
+gcc-4.3 (4.3.3-3) unstable; urgency=medium
+
+  * Revert fix for PR middle-end/38615. Closes: #513420.
+
+ -- Matthias Klose <doko at debian.org>  Thu, 29 Jan 2009 07:05:15 +0100
+
+gcc-4.3 (4.3.3-2) unstable; urgency=low
+
+  * Update to SVN 20090127 from the gcc-4_3-branch.
+    - Fix PR tree-optimization/38359. Closes: #492505.
+    - Fix PR tree-optimization/38932 (ice-on-valid-code), PR target/38931
+      (ice-on-valid-code), PR rtl-optimization/38879 (wrong-code),
+      PR c++/23287 (rejects-valid), PR fortran/38907 (ice-on-valid-code),
+      PR fortran/38859 (wrong-code), PR fortran/38657 (rejects-valid),
+      PR fortran/38672 (ice-on-valid-code).
+  * Fix PR middle-end/38969, taken from the trunk. Closes: #513007.
+
+ -- Matthias Klose <doko at debian.org>  Tue, 27 Jan 2009 23:42:45 +0100
+
+gcc-4.3 (4.3.3-1) unstable; urgency=low
+
+  * GCC-4.3.3 release (no changes compared to the 4.3.2-4 upload).
+  * Fix PR middle-end/38615 (wrong code, taken from the trunk).
+
+ -- Matthias Klose <doko at debian.org>  Sat, 24 Jan 2009 14:43:09 +0100
+
+gcc-4.3 (4.3.2-4) unstable; urgency=medium
+
+  * Update to SVN 20090119 from the gcc-4_3-branch.
+    - Fix PR tree-optimization/36765 (wrong code).
+  * Remove patch for PR 34571, applied upstream (fix build failure on alpha).
+  * Apply proposed patch for PR middle-end/38902 (wrong code).
+
+ -- Matthias Klose <doko at debian.org>  Tue, 20 Jan 2009 00:22:41 +0100
+
+gcc-4.3 (4.3.2-3) unstable; urgency=low
+
+  * Update to SVN 20090117 from the gcc-4_3-branch (4.3.3 release candidate).
+    - Fix PR target/34571, PR debug/7055, PR tree-optimization/37194,
+      PR tree-optimization/38529, PR fortran/38763, PR fortran/38765,
+      PR fortran/38669, PR fortran/38487, PR fortran/35681, PR fortran/38657,
+      PR c++/36019, PR c++/31488, PR c++/37646, PR c++/36334, PR c++/38357,
+      PR c++/31260, PR c++/38877, PR libstdc++/36801, PR libgcj/38396.
+    - debian/patches/libgcj-bc.dpatch: Remove, applied upstream.
+  * Fix PR middle-end/38616 (wrong code with -fstack-protector).
+  * Update backport for PR28322 (Gunther Nikl).
+
+ -- Matthias Klose <doko at debian.org>  Sat, 17 Jan 2009 21:09:35 +0100
+
+gcc-4.3 (4.3.2-2) unstable; urgency=low
+
+  * Update to SVN 20090110 from the gcc-4_3-branch.
+    - Fix PR target/36654, PR tree-optimization/38752, PR fortran/38675,
+      PR fortran/37469, PR libstdc++/38000.
+
+ -- Matthias Klose <doko at debian.org>  Sat, 10 Jan 2009 18:32:34 +0100
+
+gcc-4.3 (4.3.2-2~exp5) experimental; urgency=low
+
+  * Adjust build-dependencies for cross builds. Closes: #499998.
+  * Update to SVN 20081231 from the gcc-4_3-branch.
+    - Fix PR middle-end/38565, PR target/38062, PR bootstrap/38383,
+      PR target/38402, PR testsuite/35677, PR tree-optimization/38478,
+      PR target/38054, PR middle-end/29056, PR testsuite/28870,
+      PR target/38254.
+    - Fix PR libstdc++/37144, PR c++/37582, PR libstdc++/38080.
+    - Fix PR fortran/38602, PR fortran/38602, PR fortran/38487,
+      PR fortran/38113, PR fortran/35983, PR fortran/35937, PR testsuite/36889.
+  * Update the spu cross compiler from the cell-gcc-4_3-branch 20081217.
+  * debian/patches/libobjc-armel.dpatch: Don't define EH_USES.
+  * Apply the Atomic builtins patch for PARISC.
+
+ -- Matthias Klose <doko at debian.org>  Thu, 18 Dec 2008 00:34:46 +0100
+
+gcc-4.3 (4.3.2-2~exp4) experimental; urgency=low
+
+  * Update to SVN 20081130 from the gcc-4_3-branch.
+    - Fix PR bootstrap/33304, PR middle-end/37807, PR middle-end/37809,
+      PR rtl-optimization/37489, PR target/35574, PR c/37924,
+      PR tree-optimization/37879, PR middle-end/37858, PR middle-end/37870,
+      PR target/38016, PR target/37939, PR rtl-optimization/37769,
+      PR target/37909, PR fortran/37597, PR fortran/35820, PR fortran/37445,
+      PR fortran/PR35769, PR fortran/37903, PR fortran/37749.
+    - Fix PR target/37640, PR tree-optimization/37868, PR bootstrap/33100,
+      PR other/38214, PR c++/37142, PR c++/35405, PR c++/37563, PR c++/38030,
+      PR c++/37932, PR c++/38007.
+    - Fix PR fortran/37836, PR fortran/38171, PR fortran/35681,
+      PR fortran/37792, PR fortran/37926, PR fortran/38033, PR fortran/36526.
+    - Fix PR target/38287. Closes: #506713.
+  * Atomic builtins using kernel helpers for PARISC and ARM Linux/EABI, taken
+    from the trunk.
+
+ -- Matthias Klose <doko at debian.org>  Mon, 01 Dec 2008 01:29:51 +0100
+
+gcc-4.3 (4.3.2-2~exp3) experimental; urgency=low
+
+  * Update to SVN 20081117 from the gcc-4_3-branch.
+  * Add build dependencies on spu packages for snapshot builds.
+  * Add build dependency on libantlr-java for snapshot builds.
+  * Disable fortran on spu for snapshot builds.
+  * Add dependency on binutils-{hppa64,spu} for snapshot builds.
+
+ -- Matthias Klose <doko at debian.org>  Mon, 17 Nov 2008 21:57:51 +0100
+
+gcc-4.3 (4.3.2-2~exp2) experimental; urgency=low
+
+  * Update to SVN 20081023 from the gcc-4_3-branch.
+    - General regression fixes: PR rtl-optimization/37882 (wrong code),
+    - Fortran regression fixes: PR fortran/37787, PR fortran/37723.
+  * Use gij-4.3 for builds in java maintainer mode.
+  * Don't run the testsuite with -fstack-protector for snapshot builds.
+  * Update the spu cross compiler from the cell-gcc-4_3-branch 20081023.
+    Don't disable multilibs, install additional components in the gcc-4.3-spu
+    package.
+  * Enable building the spu cross compiler for powerpc and ppc64 snapshot
+    builds.
+  * Apply proposed patch for PR tree-optimization/37868 (wrong code).
+  * Apply proposed patch to parallelize make check.
+  * For biarch builds, disable the gnat testsuite for the non-default
+    architecture (no biarch support in gnat yet).
+
+ -- Matthias Klose <doko at debian.org>  Thu, 23 Oct 2008 22:06:38 +0200
+
+gcc-4.3 (4.3.2-2~exp1) experimental; urgency=low
+
+  * Update to SVN 20081017 from the gcc-4_3-branch.
+    - General regression fixes: PR rtl-optimization/37408 (wrong code),
+      PR tree-optimization/36630, PR tree-optimization/37102 (wrong code),
+      PR c/35437 (ice on invalid code), PR middle-end/37731 (wrong code),
+      PR target/37603 (wrong code, hppa), PR tree-optimization/35737 (ice on
+      valid code), PR middle-end/36575 (wrong code), PR c/37645 (ice on valid
+      code), PR tree-optimization/37539 (compile time hog), PR middle-end/37236
+      (ice on invalid code), PR tree-optimization/36343 (wrong code),
+      PR rtl-optimization/37544 (wrong code), PR target/35620 (ice on valid
+      code), PR target/35713 (ice on valid code, wrong code), PR c/35712 (wrong
+      code), PR target/37466 (wrong code, AVR).
+    - C++ regression fixes: PR c++/37389 (LP: #252301), PR c++/37555 (ice on
+      invalid code).
+    - Fortran regression fixes: PR fortran/37199, PR fortran/36214,
+      PR fortran/35770, PR fortran/36454, PR fortran/36374, PR fortran/37274,
+      PR fortran/37583, PR fortran/36700, PR fortran/35945, PR fortran/37626,
+      PR fortran/37504, PR fortran/37580, PR fortran/37706, PR fortran/35680,
+      PR fortran/37794.
+  * Remove obsolete patches: ada-driver.dpatch, pr33148.dpatch.
+  * Fix naming of bridge targets in gjavah (wrong header generation).
+  * Fix PR target/37661, SPARC64 int-to-TFmode conversions.
+  * Include the complete test summaries in a binary package, to allow
+    regression checking from the previous build.
+  * Tighten inter-package dependencies to (>= 4.3.2-1).
+  * Drop the 4.3.1 symlink in gcc_lib_dir, add a 4.3.3 symlink to 4.3.
+
+ -- Matthias Klose <doko at debian.org>  Fri, 17 Oct 2008 23:26:50 +0200
+
+gcc-4.3 (4.3.2-1) unstable; urgency=medium
+
+  [Matthias Klose]
+  * Final gcc-4.3.2 release (regression fixes).
+    - Remove the generated install docs from the tarball (GFDL licensed).
+    - C++ regression fixes: PR debug/37156.
+    - general regression fixes: PR debug/37156, PR target/37101.
+    - Java regression fixes: PR libgcj/8995.
+  * Update to SVN 20080905 from the gcc-4_3-branch.
+    - C++ regression fixes: PR c++/36741 (wrong diagnostic),
+    - general regression fixes: PR target/37184 (ice on valid code),
+      PR target/37191 (ice on valid code), PR target/37197 (ice on valid code),
+      PR middle-end/36817 (ice on valid code), PR middle-end/36548 (wrong code),
+      PR middle-end/37125 (wrong code), PR c/37261 (wrong diagnostic),
+      PR target/37168 (ice on valid code), PR middle-end/36449 (wrong code),
+      PR middle-end/37248 (missed optimization), PR target/36332 (wrong code).
+    - Fortran regression fixes: PR fortran/37193 (rejects valid code).
+  * Move symlinks in gcc_lib_dir from cpp-4.3 to gcc-4.3-base. Closes: #497369.
+  * Don't build-depend on autogen on architectures where it is not installable
+    (needed for the fixincludes testsuite only); don't build-depend on it for
+    source packages not running the fixincludes testsuite.
+
+  [Ludovic Brenta]
+  * Add sdefault.ads to libgnatprj4.3-dev.  Fixes: #492866.
+  * turn gnatvsn.gpr and gnatprj.gpr into proper library project files.
+  * Unconditionally build-depend on gnat when building gnat-4.3.
+    Fixes: #487564.
+  * (debian/rules.d/binary-ada.mk): Add a symlink libgnat.so to
+    /usr/lib/libgnat-4.3.so in the adalib directory.  Fixes: #493814.
+  * (debian/patches/ada-sjlj.dpatch): remove dangling symlinks from all
+    adalib directories.
+  * debian/patches/ada-alpha.dpatch: remove, applied upstream.
+
+  [Samuel Tardieu, Ludovic Brenta]
+  * debian/patches/pr16086.dpatch: new; backport from GCC 4.4.
+    Closes: #248172.
+  * debian/patches/pr35792.dpatch: new; backport from GCC 4.4.
+  * debian/patches/pr15808.dpatch (fixes: #246392),
+    debian/patches/pr30827.dpatch: new; backport from the trunk.
+
+ -- Matthias Klose <doko at debian.org>  Fri, 05 Sep 2008 22:52:58 +0200
+
+gcc-4.3 (4.3.1-9) unstable; urgency=low
+
+  * Update to SVN 20080814 from the gcc-4_3-branch.
+    - C++/libstdc++ regression fixes: PR c++/36688, PR c++/37016, PR c++/36999,
+      PR c++/36405, PR c++/36767, PR c++/36852.
+    - general regression fixes: PR target/36613, PR rtl-optimization/36998,
+      PR middle-end/37042, PR middle-end/35432, PR target/35659,
+      PR middle-end/37026, PR middle-end/36691, PR tree-optimization/36991,
+      PR rtl-optimization/35542, PR bootstrap/35752, PR rtl-optimization/36419,
+      PR debug/36278, PR preprocessor/36649, PR rtl-optimization/36929,
+      PR tree-optimization/36830, PR c/35746, PR middle-end/37014,
+      PR middle-end/37103.
+    - Fortran regression fixes: PR fortran/36132.
+    - Java regression fixes: PR libgcj/31890.
+    - Fixes PR middle-end/37090. Closes: #494815.
+
+ -- Matthias Klose <doko at debian.org>  Thu, 14 Aug 2008 18:02:52 +0000
+
+gcc-4.3 (4.3.1-8) unstable; urgency=low
+
+  * Undo Revert PR tree-optimization/36262 on i386 (PR 36917 is invalid).
+
+ -- Matthias Klose <doko at debian.org>  Fri, 25 Jul 2008 21:47:52 +0200
+
+gcc-4.3 (4.3.1-7) unstable; urgency=low
+
+  * Update to SVN 20080722 from the gcc-4_3-branch.
+    - Fix PR middle-end/36811, infinite loop building with -O3.
+    - C++/libstdc++ regression fixes: PR c++/36407, PR c++/34963,
+      PR libstdc++/36832, PR libstdc++/36552, PR libstdc++/36729.
+    - Fortran regression fixes: PR fortran/36366, PR fortran/36824.
+    - general regression fixes: PR middle-end/36877, PR target/36780,
+      PR target/36827, PR rtl-optimization/35281, PR rtl-optimization/36753,
+      PR target/36827, PR target/36784, PR target/36782, PR middle-end/36369,
+      PR target/36780, PR target/35492, PR middle-end/36811,
+      PR rtl-optimization/36419, PR target/35802, PR target/36736,
+      PR target/34780.
+  * Revert PR tree-optimization/36262 on i386, causing miscompilation of
+    OpenJDK hotspot.
+  * gij/gcj: Don't remove alternatives on upgrade. Addresses: #479950.
+
+ -- Matthias Klose <doko at debian.org>  Tue, 22 Jul 2008 23:55:54 +0200
+
+gcc-4.3 (4.3.1-6) unstable; urgency=low
+
+  * Start the logwatch script on alpha as well to avoid timeouts in
+    the testsuite.
+
+ -- Matthias Klose <doko at debian.org>  Mon, 07 Jul 2008 11:31:58 +0200
+
+gcc-4.3 (4.3.1-5) unstable; urgency=low
+
+  * Update to SVN 20080705 from the gcc-4_3-branch.
+    - Fix PR target/36634, wrong-code on powerpc with -msecure-plt.
+  * Fix PR target/35965, PIC + -fstack-protector on arm/armel. Closes: #469517.
+  * Don't run the libjava testsuite with -mabi=n32.
+  * Update patch for PR other/28322, that unknown -Wno-* options do not
+    cause errors, but warnings instead.
+  * On m68k, add -fgnu89-inline when in gnu99 mode (requested by Michael
+    Casadeval for the m68k port). Closes: #489234.
+
+ -- Matthias Klose <doko at debian.org>  Sun, 06 Jul 2008 01:39:30 +0200
+
+gcc-4.3 (4.3.1-4) unstable; urgency=low
+
+  * Revert: debian/patches/gcc-multilib64dir.dpatch: Remove obsolete patch.
+  * Remove obsolete multiarch-lib patch.
+
+ -- Matthias Klose <doko at debian.org>  Mon, 30 Jun 2008 23:05:17 +0200
+
+gcc-4.3 (4.3.1-3) unstable; urgency=medium
+
+  [Arthur Loiret]
+  * debian/rules2:
+    - configure sh4-linux with --with-multilib-list=m4,m4-nofpu
+      and --with-cpu=sh4.
+    - configure sparc-linux with --enable-targets=all on snapshot builds
+      (change already in 4.3.1-1).
+  * debian/rules.patch: Don't apply sh4-multilib.dpatch.
+
+  [Matthias Klose]
+  * Update to SVN 20080628 from the gcc-4_3-branch.
+    - Fix PR target/36533, wrong-code with incorrectly assumed aligned_operand.
+      Closes: #487115.
+  * debian/rules.defs: Remove hurd-i386 from ssp_no_archs (Samuel Thibault).
+    Closes: #483613.
+  * Do not create a /usr/lib/gcc/<target-arch>/4.3.0 symlink.
+  * debian/patches/gcc-multilib64dir.dpatch: Remove obsolete patch.
+  * libjava/classpath: Set and use EXTRA_CFLAGS (taken from the trunk).
+
+ -- Matthias Klose <doko at debian.org>  Sat, 28 Jun 2008 16:00:38 +0200
+
+gcc-4.3 (4.3.1-2) unstable; urgency=low
+
+  * Update to SVN 20080610 from the gcc-4_3-branch.
+    - config.gcc: Fix quoting for in the enable_cld test.
+  * Use GNU locales on hurd-i386 (Samuel Thibault). Closes: #485395.
+  * libstdc++-doc: Fix URL's for locally installed docs. Closes: #485133.
+  * libjava: On armel apply kludge to fix unwinder infinitely looping 'til
+    it runs out of memory.
+  * Adjust dependencies to require GCC 4.3.1.
+
+ -- Matthias Klose <doko at debian.org>  Wed, 11 Jun 2008 00:35:38 +0200
+
+gcc-4.3 (4.3.1-1) unstable; urgency=high
+
+  [Samuel Tardieu, Ludovic Brenta]
+  * debian/patches/pr16087.dpatch: new. Fixes: #248173.
+  * Correct the patches from the previous upload.
+
+  [Ludovic Brenta]
+  * debian/patches/ada-acats.dpatch: really run the just-built gnat, not the
+    bootstrap gnat.
+  * debian/rules2: when running the Ada test suite, do not run the multilib
+    tests as gnat does not support multilib yet.
+  * Run the ACATS testsuite again (patch it so it correctly finds gnatmake).
+
+  [Thiemo Seufer]
+  * debian/patches/ada-libgnatprj.dpatch,
+    debian/patches/ada-mips{,el}.dpatch: complete support for mips and mipsel.
+    Fixes: #482433.
+
+  [Matthias Klose]
+  * GCC-4.3.1 release.
+  * Do not include standard system paths in libgcj pkgconfig file.
+  * Suggest the correct libmudflap0-dbg package.
+  * Fix PR libjava/35020, taken from the trunk.
+  * Apply proposed patch for PR tree-optimization/36343.
+  * On hurd-i386 with -fstack-protector do not link with libssp_nonshared
+    (Samuel Thibault). Closes: #483613.
+  * Apply proposed patch for PR tree-optimization/34244.
+  * Remove debian-revision in symbols files.
+  * Fix installation of all biarch -multilib packages which are not triarch.
+  * Fix some lintian warnings.
+  * Include library symlinks in gobjc and gfortran multilib packages, when
+    not building the library packages.
+  * Fix sections in doc-base files.
+  * Don't apply the sparc-biarch patch when building the gcc-snapshot package.
+  * libjava: Add @file support for gjavah & gjar.
+  * Apply patch for PR rtl-optimization/36111, taken from the trunk.
+
+  * Closing reports reported against gcc-4.0 and fixed in gcc-4.3:
+    - General
+      + Fix PR optimization/3511, inlined strlen() could be smarter.
+        Close: #86251.
+    - C
+      + Fix PR c/9072, Split of -Wconversion in two different flags.
+        Closes: #128950, #226952.
+    - C++/libstdc++
+      + PR libstdc++/24660, implement versioning weak symbols in libstdc++.
+        Closes: #328421.
+    - Architecture specific:
+      - mips
+        + PR target/26560, unable to find a register to spill in class
+          'FP_REGS'. Closes: #354439.
+      - sparc
+        + Fix PR rtl-optimization/23454, ICE in invert_exp_1. Closes: #340951.
+  * Closing reports reported against gcc-4.1 and fixed in gcc-4.2:
+    - General
+      + PR tree-optimization/30132, ICE in find_lattice_value. Closes: #400484.
+      + PR other/29534, ICE in "gcc -O -ftrapv" with decreasing array index.
+        Closes: #405065.
+      + Incorrect SSE2 code generation for vector initialization.
+        Closes: #406442.
+      + Fix segfault in cc1 due to infinite loop in error() when using -ftrapv.
+        Closes: #458072.
+      + Fix regression in code size with -Os compared to GCC-3.3.
+        Closes: #348298.
+    - C++
+      + Fix initialization of global variables with non-constant initializer.
+        Closes: #446067.
+      + Fix ICE building muse. Closes: #429385.
+  * Closing reports reported against gcc-4.1 and fixed in gcc-4.3:
+    - C++
+      + PR c++/28705, ICE: in type_dependent_expression_p. Closes: #406324.
+      + PR c++/7302, -Wnon-virtual-dtor should't complain of protected dtor.
+        Closes: #356316.
+      + PR c++/28316, PR c++/24791, PR c++/20133, ICE in instantiate_decl.
+        Closes: #327346, #355909.
+    - Fortran
+      + PR fortran/31639, ICE in gfc_conv_constant. Closes: #401496.
+    - Java
+      + Fix ICE using gcj with --coverage. Closes: #416326.
+      + PR libgcj/29869, LogManager class loading failure. Closes: #399251
+      + PR swing/29547 setText (String) of JButton does not work
+        with HTML code. Closes: #392791.
+      + PR libgcj/29178, CharsetEncoder.canEncode() gives different results
+        than Sun version. Closes: #388596.
+      + PR java/8923, ICE when modifying a variable decleared "final static".
+        Closes: #351512.
+      + PR java/22507, segfault building Apache Cocoon. Closes: #318534.
+      + PR java/2499, class members should be inherited from implemented
+        interfaces. Closes: #225434.
+      + PR java/10581, ICE compiling freenet. Closes: #186922.
+      + PR libgcj/28340, gij ignores -Djava.security.manager. Closes: #421098.
+      + PR java/32846, build failure on GNU/Hurd. Closes: #408888.
+      + PR java/29194, fails to import package from project. Closes: #369873.
+      + PR libgcj/31700, -X options not recognised by JNI_CreateJavaVM.
+        Closes: #426742.
+      + java.util.Calendar.setTimeZone fails to set ZONE_OFFSET.
+        Closes: #433636.
+    - Architecture specific:
+      - alpha
+        + C++, fix segfault in constructor with -Os. Closes: #438436.
+      - hppa
+        + PR target/30131, ICE in propagate_one_insn. Closes: #397341.
+      - m32r
+        + PR target/28508, assembler error (operand out of range).
+          Closes: #417542.
+      - m68k
+        + PR target/34688, ICE in output_operand. Closes: #459429.
+  * Closing reports reported against gcc-4.2 and fixed in gcc-4.3:
+    - General
+      + PR tree-optimization/33826, wrong code generation for infinitely
+        recursive functions. Closes: #445536.
+    - C++
+      + PR c++/24791, ICE on invalid instantiation of template's static member.
+        Closes: #446698.
+
+  [Aurelien Jarno]
+  * Really apply arm-funroll-loops.dpatch on arm and armel. Closes: #476460.
+
+ -- Matthias Klose <doko at debian.org>  Sat, 07 Jun 2008 23:16:21 +0200
+
+gcc-4.3 (4.3.0-5) unstable; urgency=medium
+
+  * Update to SVN 20080523 from the gcc-4_3-branch.
+    - Remove gcc-i386-emit-cld patch.
+    - On Debian amd64 and i386 configure with --enable-cld.
+  * Fix PR tree-optimization/36129, ICE with -fprofile-use.
+  * Add spu build dependencies independent of the architecture.
+  * Move arm -funroll-loops fix to arm-funroll-loops from 
+    gfortran-armel-updates. Apply it on both arm and armel. 
+    Closes: #476460.
+  * Use iceape-dev as a build dependency for Java enabled builds.
+  * Build the sru cross compiler from a separate source dir without applying
+    the hardening patches.
+
+ -- Matthias Klose <doko at debian.org>  Fri, 23 May 2008 10:12:02 +0200
+
+gcc-4.3 (4.3.0-4) unstable; urgency=low
+
+  [ Aurelien Jarno ]
+  * Fix gnat-4.3 build on mips/mipsel. 
+  * Update libgcc1 symbols for hurd-i386.
+
+  [ Arthur Loiret ]
+  * Make gcc-4.3-spu Recommends newlib-spu. Closes: #476088
+  * Build depend on spu build dependencies only when building
+    as gcc-4.x source package.
+  * Disable spu for snapshot builds.
+  * Support sh4 targets:
+    - sh4-multilib.dpatch: Add, fix multilib (m4/m4-nofpu) for sh4-linux
+    - multiarch-include.dpatch: Don't apply on sh4.
+
+  [ Matthias Klose ]
+  * Stop building libffi packages.
+  * Update to SVN 20080501 from the gcc-4_3-branch.
+    - Fix PR target/35662, wrong gfortran code on mips/mipsel. Closes: #476427.
+    - Fixes mplayer build on powerpc. Closes: #475153.
+  * Stop building gij/gcj on alpha, arm and hppa. Closes: #459560.
+  * libstdc++6-4.3-doc: Fix file location in doc-base file. Closes: #476253.
+  * debian/patches/template.dpatch: Remove the `exit 0' line.
+  * Fix alternative names for amd64 cross builds. Addresses: #466422.
+  * debian/copyright: Update to GPLv3, remove the text of the GFDL
+    and reference the copy in common-licenses.
+  * Generate the locale data for the testsuite, if the locales package
+    is installed (not a dependency on all archs).
+  * Update libgcc2 symbols for m68k, libstdc++6 symbols for arm, m68k, mips
+    and mipsel.
+  * Do not include a symbols file for libobjc_gc.so.
+  * Add four more symbols to libgcj_bc, patch taken from the trunk.
+  * Adjust names of manual pages in the spu build on powerpc.
+  * ARM EABI (armel) updates (Andrew Jenner, Julian Brown):
+    - Add Objective-C support.
+    - Fortran support patches.
+    - Fix ICE in gfortran.dg/vector_subscript_1.f90 for -Os -mthumb reload.
+  * Build ObjC and Obj-C++ packages on armel.
+  * Reenable running the testsuite on m68k.
+
+  [Samuel Tardieu, Ludovic Brenta]
+  * debian/patches/gnalasup_to_lapack.dpatch: new.
+  * debian/patches/pr34466.dpatch,
+    debian/patches/pr22255.dpatch,
+    debian/patches/pr33688.dpatch,
+    debian/patches/pr10768.dpatch,
+    debian/patches/pr28305.dpatch,
+    debian/patches/pr17985.dpatch (#278685)
+    debian/patches/pr15915.dpatch,
+    debian/patches/pr16098.dpatch,
+    debian/patches/pr18680.dpatch,
+    debian/patches/pr28733.dpatch,
+    debian/patches/pr22387.dpatch,
+    debian/patches/pr29015.dpatch: new; backport Ada bug fixes from GCC 4.4.
+  * debian/patches/rules.patch: apply them.
+  * debian/patches/pr35050.dpatch: update.
+
+  [Andreas Jochens]
+  * debian/patches/ppc64-ada.dpatch: update, adding support for ppc64.
+    (#476868).
+
+  [Ludovic Brenta]
+  * Apply ppc64-ada.dpatch whenever we build libgnat, not just on ppc64.
+  * debian/patches/pr28322.dpatch: never pass -Wno-overlength-strings to
+    the bootstrap compiler, as the patch breaks the detection of whether
+    the bootstrap compiler supports this option or not.
+    Fixes: #471192.  Works around #471767.
+  * Merge Aurélien Jarno's mips patch.  Fixes: #472854.
+
+  [ Samuel Tardieu ]
+  * debian/patches/pr30740.dpatch: new Ada bug fix.
+  * debian/patches/pr35050.dpatch: new Ada bug fix.
+
+  [ Xavier Grave ]
+  * debian/patches/ada-mips{,el}.dpatch: new; split mips/mipsel support
+    into new patches, out of ada-sjlj.dpatch.
+  * debian/rules.d/binary-ada.mk: fix the version number of libgnarl-4.3.a.
+
+  [Roman Zippel]
+  * PR target/25343, fix gcc.dg/pch/pch for m68k.
+
+ -- Matthias Klose <doko at debian.org>  Thu, 01 May 2008 21:08:09 +0200
+
+gcc-4.3 (4.3.0-3) unstable; urgency=medium
+
+  [ Matthias Klose ]
+  * Update to SVN 20080401 from the gcc-4_3-branch.
+    - Fix PR middle-end/35705 (hppa only).
+  * Update libstdc++6 symbols for hurd-i386. Closes: #472334.
+  * Update symbol files for libgomp (ppc64).
+  * Only apply the gcc-i386-emit-cld patch on amd64 and i386 architectures.
+  * Update libstdc++ baseline symbols for hppa.
+  * Install powerpc specific header files new in 4.3.
+  * gcc-4.3-hppa64: Don't include the install tools in the package.
+
+  [ Aurelien Jarno ]
+  * Fix gobjc-4.3-multilib dependencies. Closes: #473455.
+  * Fix gnat-4.3 build on mips/mipsel. 
+  * patches/ada-alpha.dpatch: new patch to fix gnat-4.3 build on alpha.
+    Closes: #472852.
+  * patches/config-ml.dpatch: also check for n32 multidir.
+
+  [ Arthur Loiret ]
+  * Build-Depends on binutils (>= 2.18.1~cvs20080103-2) on mips and mipsel,
+    required for triarch.
+  * libstdc++-pic.dpatch: Update, don't fail anymore if shared lib is disabled.
+
+  [ Andreas Jochens ]
+  * Fix build failures on ppc64. Closes: #472917.
+    - gcc-multilib64dir.dpatch: Remove "msoft-float" and "nof" from MULTILIB
+      variables.
+    - Removed ppc64-biarch.dpatch.
+    - Add debian/lib32gfortan3.symbols.ppc64.
+
+  [ Arthur Loiret, Matthias Klose ]
+  * Build compilers for spu-elf target on powerpc and ppc64.
+    - Add gcc-4.3-spu, g++-4.3-spu and gfortran-4.3-spu packages.
+    - Partly based on the work in Ubuntu on the spu toolchain.
+
+ -- Matthias Klose <doko at debian.org>  Tue, 01 Apr 2008 23:29:21 +0000
+
+gcc-4.3 (4.3.0-2) unstable; urgency=low
+
+  [Matthias Klose]
+  * Update to SVN 20080321 from the gcc-4_3-branch.
+    - Remove some broken code that attempts to enforce linker
+      constraints. Closes: #432541.
+  * Temporary fix, will be removed once a fixed kernel is available
+    in testing: Emit cld instruction when stringops are used (i386).
+    Do not expose the -mcld option until added upstream. Closes: #469567.
+  * Update NEWS files.
+  * libjava: Don't leak upon failed realloc (taken from the trunk).
+  * debian/rules2: The build is not yet prepared to take variables from
+    the environment; unexport and unset those.
+
+  [Arthur Loiret/Aurelien Jarno]
+  * MIPS tri-arch support:
+    - mips-triarch.dpatch: new patch to default to o32 and follow the
+      glibc convention for n32 & 64 bit names.
+    - Rename $(biarch) and related vars into $(biarch64).
+    - Fix biarchsubdir to allow triarch.
+    - Add biarchn32 support.
+    - Add mips and mipsel to biarch64 and biarchn32 archs.
+    - Update binary rules for biarchn32 and libn32 targets.
+    - Fix multilib deps for triarch.
+    - control.m4: Add libn32 packages.
+
+ -- Matthias Klose <doko at debian.org>  Sat, 22 Mar 2008 00:06:33 +0100
+
+gcc-4.3 (4.3.0-1) unstable; urgency=low
+
+  [Matthias Klose]
+  * GCC-4.3.0, final release.
+  * Update to SVN 20080309 from the gcc-4_3-branch.
+  * Build from a modified tarball, without GFDL documentation with
+    invariant sections and cover texts.
+  * debian/rules.unpack: Avoid make warnings.
+  * debian/rules.d/binary-cpp.mk: Add 4.3.0 symlink in gcclibdir.
+  * Stop building treelang (removed upstream).
+  * gcj-4.3: Hardcode libgcj-bc dependency, don't run dh_shlibdeps on ecj1.
+
+  [Aurelien Jarno]
+  * Update libssp-gnu.dpatch and reenable it.
+
+ -- Matthias Klose <doko at debian.org>  Sun, 09 Mar 2008 15:18:08 +0100
+
+gcc-4.3 (4.3.0~rc2-1) unstable; urgency=medium
+
+  * Update to SVN 20080301 from the gcc-4_3-branch.
+  * Include the biarch libobjc_gc library in the packages.
+  * Link libobjc_gc with libgcjgc_convenience.la.
+  * Add new symbols to libstdc++6 symbol files, remove the symbols for
+    <system_error> support (reverted upstream for the 4.3 branch).
+  * Disable running the testsuite on m68k.
+  * Update PR other/28322, ignore only unknown -W* options.
+
+ -- Matthias Klose <doko at debian.org>  Sat, 01 Mar 2008 15:09:16 +0100
+
+gcc-4.3 (4.3-20080227-1) unstable; urgency=low
+
+  [Matthias Klose]
+  * Update to SVN 20080227 from the gcc-4_3-branch.
+  * Fix PR other/28322, GCC new warnings and compatibility.
+    Addresses: #367657.
+
+  [Hector Oron]
+  * Fix cross-compile builds. Closes: #467471.
+
+ -- Matthias Klose <doko at debian.org>  Thu, 28 Feb 2008 00:30:38 +0100
+
+gcc-4.3 (4.3-20080219-1) unstable; urgency=medium
+
+  [Matthias Klose]
+  * Update to SVN 20080219 from the gcc-4_3-branch.
+  * Apply proposed patch for PR target/34571 (alpha).
+  * libgcj9-dev: Don't claim that the package contains the static
+    libraries.
+  * libjava-xulrunner1.9.dpatch: Add configure check for xulrunner-1.9.
+    Name the alternative xulrunner-1.9-javaplugin.so.
+  * libgcj-doc: Don't include the examples; these cannot be built
+    with the existing Makefile anyway. Addresses: #449608.
+  * Manpages for gc-analyze and grmic are GFDL. Don't include these when
+    building DFSG compliant packages.
+  * Fix build failure building amd64 cross-target libstdc++ packages
+    (Tim Bagot). Addresses: #464365.
+  * Fix typos in rename-info-files patch (Richard Guenther).
+  * Fix PR libgcj/24170.
+
+  [Aurelien Jarno]
+  * kbsd-gnu-ada.dpatch: new patch to fix build on GNU/kFreeBSD.
+
+  [Ludovic Brenta]
+  * debian/rules.defs: Temporarily disable the testsuite when building gnat.
+  * debian/patches/libffi-configure.dpatch: run autoconf in the top-level
+    directory, where we've changed configure.ac; not in src/gcc.
+  * debian/patches/ada-sjlj.dpatch: do not run autoconf since we don't
+    change configure.ac.
+  * debian/control.m4 (gnat-4.3-doc): conflict with gnat-4.[12]-doc.
+    Closes: #464801.
+
+ -- Matthias Klose <doko at debian.org>  Tue, 19 Feb 2008 23:20:45 +0000
+
+gcc-4.3 (4.3-20080202-1) unstable; urgency=low
+
+  [ Matthias Klose ]
+  * Update to SVN 20080202 from the trunk.
+    - Fix PR c/35017, pedwarns about valid code. Closes: #450506.
+    - Fix PR target/35045, wrong code generation with -O3 on i386.
+      Closes: #463478.
+  * gcj-4.3: On armel depend on g++-4.3.
+  * Re-enable build of libobjc_gc, using the internal version of boehm-gc.
+    Closes: #212248.
+
+  [Ludovic Brenta]
+  * debian/patches/ada-default-project-path.dpatch,
+    debian/patches/ada-gcc-name.dpatch,
+    debian/patches/ada-symbolic-tracebacks.dpatch,
+    debian/patches/ada-link-lib.dpatch,
+    debian/patches/ada-libgnatvsn.dpatch,
+    debian/patches/ada-libgnatprj.dpatch,
+    debian/patches/ada-sjlj.dpatch: adjust to GCC 4.3.
+  * debian/README.gnat, debian/TODO,
+    debian/rules.d/binary-ada.mk: merge from gnat-4.2.
+  * debian/README.maintainers: add instructions for patching GCC.
+  * debian/patches/ada-driver.dpatch: remove, no longer used.
+  * debian/patches/libffi-configure.dpatch: do not patch the top-level
+    configure anymore; instead, rerun autoconf.  This allows removing the
+    patch cleanly.
+  * debian/rules2: use gnatgcc as the bootstrap compiler, not gcc-4.2.
+
+ -- Matthias Klose <doko at debian.org>  Sat, 02 Feb 2008 19:58:48 +0100
+
+gcc-4.3 (4.3-20080127-1) unstable; urgency=low
+
+  [ Matthias Klose ]
+  * Update to SVN 20080126 from the trunk.
+  * Tighten build dependency on doxygen.
+  * Update libstdc++ patches to current svn.
+  * gij-4.3: Provide java*-runtime-headless instead of java*-runtime.
+  
+  [ Aurelien Jarno]
+  * debian/multiarch.inc: change mipsel64 into mips64el.
+
+ -- Matthias Klose <doko at debian.org>  Sun, 27 Jan 2008 01:33:35 +0100
+
+gcc-4.3 (4.3-20080116-1) unstable; urgency=medium
+
+  * Update to SVN 20080116 from the trunk.
+  * Update debian/watch.
+  * Build libgomp documentation without building libgomp. Addresses: #460660.
+  * Handle lzma compressed tarballs.
+  * Fix dependency generation for the gcc-snapshot package: Addresses: #454667.
+  * Restore lost chunk in libjava-subdir.dpatch.
+
+ -- Matthias Klose <doko at debian.org>  Wed, 16 Jan 2008 20:33:50 +0100
+
+gcc-4.3 (4.3-20080112-1) unstable; urgency=low
+
+  * Update to SVN 20080112 from the trunk.
+  * Tighten build-dependency on dpkg-dev (closes: #458894).
+  * Update symbol definitions for alpha.
+  * Build-depend on libmpfr-dev for all source packages.
+
+ -- Matthias Klose <doko at debian.org>  Sun, 13 Jan 2008 00:40:28 +0100
+
+gcc-4.3 (4.3-20080104-1) unstable; urgency=low
+
+  * Update to SVN 20080104 from the trunk.
+  * Update symbol definitions for alpha, hppa, ia64, mips, mipsel, powerpc,
+    s390, sparc.
+
+ -- Matthias Klose <doko at debian.org>  Fri, 04 Jan 2008 07:34:15 +0100
+
+gcc-4.3 (4.3-20080102-1) unstable; urgency=low
+
+  [ Matthias Klose ]
+  * Update to SVN 20080102 from the trunk.
+    - Fix 64bit biarch builds (addresses: #447443).
+  * debian/rules.d/binary-java.mk: Reorder packaging to get shlibs
+    dependencies right.
+  * Use lib instead of lib64 as multilibdir on amd64 and ppc64.
+  * Build the java plugin always using libxul-dev.
+  * Add libgcj_bc to the libgcj9-0 shlibs file.
+  * Add symbol files for libgcc1, lib32gcc1, lib64gcc1, libstdc++6,
+    lib32stdc++6, lib64stdc++6, libgomp1, lib32gomp1, lib64gomp1, libffi4,
+    lib32ffi4, lib64ffi4, libobjc2, lib32objc2, lib64objc2, libgfortran3,
+    lib32gfortran3, lib64gfortran3.
+    Adjust build dependencies on dpkg-dev and debhelper.
+  * Do not build the java packages from the gcc-4.3 source package.
+
+  [ Aurelien Jarno ]
+  * Disable amd64-biarch patch on kfreebsd-amd64.
+
+ -- Matthias Klose <doko at debian.org>  Wed, 02 Jan 2008 23:48:14 +0100
+
+gcc-4.3 (4.3-20071124-1) experimental; urgency=low
+
+  [ Matthias Klose ]
+  * Update to SVN 20071124 from the trunk.
+  * Fix dependencies of lib*gcc1-dbg packages.
+  * gcjwebplugin: Fix path of the gcj subdirectory. LP: #149792.
+  * gij-hppa: Call gij-4.2, not gij-4.1. Addresses: #446282.
+  * Don't run the testsuite on hppa when expect-tcl8.3 is not available.
+  * Fix libgcc1-dbg doc directory symlink. Closes: #447969.
+
+  [ Aurelien Jarno ]
+  * Update kbsd-gnu patch.
+  * Remove kbsd-gnu-ada patch (merged upstream).
+
+ -- Matthias Klose <doko at debian.org>  Sat, 24 Nov 2007 13:14:29 +0100
+
+gcc-4.3 (4.3-20070930-1) experimental; urgency=low
+
+  [Matthias Klose]
+  * Update to SVN 20070929 from the trunk.
+  * Update debian patches to the current trunk.
+  * Regenerate the control file.
+  * On powerpc-linux-gnu and i486-linux-gnu cross-compile the 64bit
+    multilib libraries to allow a sucessful build on 32bit kernels
+    (our buildds). Although we won't get 64bit test results this way ...
+  * Remove the build dependency on expect-tcl8.3.
+  * Fix MULTILIB_OSDIRNAMES for cross builds targeted for amd64 and ppc64.
+  * When -fstack-protector is the default (Ubuntu), do not enable
+    -fstack-protector when -nostdlib is specified. LP: #77865.
+  * Always set STAGE1_CFLAGS to -g -O2, only pass other settings
+    when configuring when required.
+  * Configure --with-bugurl, adjust the bug reporting instructions.
+  * gcc-4.3: Install new cpuid.h header.
+  * Fix installation of the s390 libstdc++ biarch headers.
+  * Install new bmmintrin.h, mmintrin-common.h headers.
+  * Build -dbg packages for libgcc, libgomp, libmudflap, libffi, libobjc,
+    libgfortran.
+  * Downgrade libmudflap-dev recommendation to a suggestion. Closes: #443929.
+
+  [Riku Voipio]
+  * Configure armeabi with --disable-sjlj-exceptions.
+  * armel testsuite takes ages, adjust build accordingly.
+
+ -- Matthias Klose <doko at debian.org>  Sun, 30 Sep 2007 12:06:02 +0200
+
+gcc-4.3 (4.3-20070902-1) experimental; urgency=low
+
+  * Upload to experimental.
+
+ -- Matthias Klose <doko at debian.org>  Sun,  2 Sep 2007 20:51:16 +0200
+
+gcc-4.3 (4.3-20070902-0ubuntu1) gutsy; urgency=low
+
+  * Update to SVN 20070902 from the trunk.
+  * Fix the build logic for the Ubuntu i386 buildd; we can't build biarch.
+  * Only remove libgcj9's classmap db if no other libgcj9* library is
+    installed.
+  * A lot more updates for 4.3 packaging.
+
+ -- Matthias Klose <doko at ubuntu.com>  Sat, 01 Sep 2007 21:01:43 +0200
+
+gcc-4.3 (4.3-20070901-0ubuntu1) gutsy; urgency=low
+
+  * Update to SVN 20070901 from the trunk.
+  * First gcc-4.3 package build.
+    - Update patches for the *-linux-gnu builds.
+    - Update build files for 4.3.
+  * Add proposed patch for PR middle-end/33029.
+  * gcj-4.3: Install gc-analyze.
+
+ -- Matthias Klose <doko at ubuntu.com>  Sat,  1 Sep 2007 20:52:16 +0200
+
+gcc-4.2 (4.2.2-7) unstable; urgency=low
+
+  * Update to SVN 20080114 from the ubuntu/gcc-4_2-branch.
+    - Fix PR middle-end/34762. LP: #182412.
+  * Update debian/watch. Closes: #459259. Addresses: #459391, #459392.
+  * Build libgomp documentation without building libgomp. Closes: #460660.
+  * Restore gomp development files. Closes: #460736.
+
+ -- Matthias Klose <doko at debian.org>  Mon, 14 Jan 2008 23:20:04 +0100
+
+gcc-4.2 (4.2.2-6) unstable; urgency=low
+
+  * Update to SVN 20080113 from the ubuntu/gcc-4_2-branch.
+  * Adjust build-dependency on debhelper, dpkg-dev.
+  * Fix gnat-4.2 build failure (addresses: #456867).
+  * Do not build packages built from the gcc-4.3 source.
+
+ -- Matthias Klose <doko at debian.org>  Sun, 13 Jan 2008 13:48:49 +0100
+
+gcc-4.2 (4.2.2-5) unstable; urgency=low
+
+  [Matthias Klose]
+  * Update to SVN 20080102 from the ubuntu/gcc-4_2-branch.
+    - Fix PR middle-end/32889, ICE in delete_output_reload.
+      Closes: #444873, #445336, #451047.
+    - Fix PR target/34215, ICE in assign_386_stack_local.
+      Closes: #446714, #452451.
+    - Fix PR target/33848, reference to non-existent label at -O1 on
+      mips/mipsel. Closes: #441633.
+  * debian/rules.d/binary-java.mk: dpkg-shlibsdeps can't handle the dangling
+    symlink to libgcj_bc.so.1. Remove it temporarily.
+  * Add libgcj_bc to the libgcj8-1 shlibs file.
+  * Fix build failures for gnat-4.2, gpc-4.2, gdc-4.2 introduced by recent
+    gdc changes.
+  * Add symbol files for libgcc1, lib32gcc1, lib64gcc1, libstdc++6,
+    lib32stdc++6, lib64stdc++6, libgomp1, lib32gomp1, lib64gomp1, libffi4,
+    lib32ffi4, lib64ffi4, libobjc2, lib32objc2, lib64objc2. Adjust build
+    dependencies on dpkg-dev and debhelper.
+    Adjust build-dependency on dpkg-dev.
+
+  [Arthur Loiret]
+  * Fix gdc-4.2 build failure.
+  * Update gdc to upstream SVN 20071124.
+    - d-bi-attrs: Support attributes on declarations in other modules.
+    - d-codegen.cc (IRState::attributes): Support constant declarations as
+      string arguments.
+  * Enable libphobos:
+    - gdc-4.2.dpatch: Fix ICEs.
+    - gdc-4.2-build.dpatch: Update, make it cleaner.
+  * Install libphobos in the private gcc lib dir.
+  * gdc-4.2.dpatch: Update from gdc-4.1.dpatch.
+    - gcc/tree-sra.c: Do not use SRA on structs with aliased fields created
+      for anonymous unions.
+    - gcc/predict.c: Add null-pointer check.
+  * debian/rules.defs: Disable phobos on hurd-i386.
+    - gdc-hurd-proc_maps.dpatch: Remove.
+
+ -- Matthias Klose <doko at debian.org>  Wed, 02 Jan 2008 15:49:30 +0100
+
+gcc-4.2 (4.2.2-4) unstable; urgency=low
+
+  [Matthias Klose]
+  * Update to SVN 20071123 from the ubuntu/gcc-4_2-branch.
+    - Fix PR middle-end/34130, wrong code with some __builtin_abs expressions.
+      Closes: #452108.
+  * Don't run the testsuite on hppa when expect-tcl8.3 is not available.
+  * Fix libgcc1-dbg doc directory symlink. Closes: #447969.
+  * Use gcc-multilib as build-dependency instead of gcc-4.1-mulitlib.
+  * Support for fast-math on hurd-i386 (Michael Banck). Closes: #451520.
+  * Fix again profiling support on the Hurd (Thomas Schwinge). Closes: #434937.
+
+  [Arthur Loiret]
+  * Merge gdc-4.1 patches and build infrastructure:
+    - gdc-4.2.dpatch: Add, setup gcc-4.2.x for D.
+    - gdc-4.2-build.dpatch: Add, update gdc builtins and driver objs.
+    - gdc-driver-zlib.dpatch: Add, use up-to-date system zlib.
+    - gdc-driver-defaultlib.dpatch: Add, add -defaultlib/-debuglib switches.
+    - gdc-driver-nophobos.dpatch: Add, disable libphobos when unsupported.
+    - gdc-libphobos-build.dpatch: Add, enable libphobos build when supported.
+    - gdc-fix-build.dpatch: Add, fix build on non-biarched 64bits targets.
+    - gdc-libphobos-std-format.dpatch: Add, replace assert when formating a
+      struct on non-x86_64 archs by a FormatError.
+    - gdc-arm-unwind_ptr.dpatch: Add, fix build on arm.
+    - gdc-mips-gcc-config.dpatch: Add, fix build on mips.
+    - gdc-hurd-proc_maps.dpatch: Add, fix build on hurd.
+
+ -- Matthias Klose <doko at debian.org>  Sat, 24 Nov 2007 12:01:06 +0100
+
+gcc-4.2 (4.2.2-3) unstable; urgency=low
+
+  * Update to SVN 20071014 from the ubuntu/gcc-4_2-branch.
+    - Fix build failure in libjava on mips/mipsel.
+  * Make 4.2.2-2 a requirement for frontends built from separate sources.
+    Addresses: #446596.
+
+ -- Matthias Klose <doko at debian.org>  Sun, 14 Oct 2007 14:13:00 +0200
+
+gcc-4.2 (4.2.2-2) unstable; urgency=low
+
+  * Update to SVN 20071011 from the ubuntu/gcc-4_2-branch.
+    - Fix PR middle-end/33448, ICE in create_tmp_var. Closes: #439687.
+    - Remove debian/patches/pr31899.dpatch, applied upstream.
+    - Remove debian/patches/pr33381.dpatch, applied upstream.
+  * gij-hppa: Call gij-4.2, not gij-4.1. Addresses: #446282.
+
+ -- Matthias Klose <doko at debian.org>  Thu, 11 Oct 2007 23:41:52 +0200
+
+gcc-4.2 (4.2.2-1) unstable; urgency=low
+
+  * Update to SVN 20071008 from the ubuntu/gcc-4_2-branch, corresponding
+    to the GCC-4.2.2 release.
+  * Fix dependencies of lib*gcc1-dbg packages. Closes: #445190.
+  * Remove libjava-armeabi patch integrated upstream.
+  * gcjwebplugin: Fix path of the gcj subdirectory. LP: #149792.
+  * Apply proposed patch for PR debug/31899. Closes: #445268.
+
+  * Add niagara2 optimization support (David Miller).
+
+ -- Matthias Klose <doko at debian.org>  Mon, 08 Oct 2007 21:12:41 +0200
+
+gcc-4.2 (4.2.1-6) unstable; urgency=high
+
+  [Matthias Klose]
+  * Update to SVN 20070929 from the ubuntu/gcc-4_2-branch.
+    - Fix PR middle-end/33382, ICE (closes: #441481).
+    - Fix PR tree-optimization/28544 (4.2.1, closes: #380482).
+    - Fix PR libffi/28313, port to mips64 (closes: #358235).
+  * Fix PR tree-optimization/33099, PR tree-optimization/33381,
+    wrong code generation with VRP/SCEV. Closes: #440545, #443576.
+  * Update Hurd fixes (Samuel Thibault).
+  * When -fstack-protector is the default (Ubuntu), do not enable
+    -fstack-protector when -nostdlib is specified. LP: #77865.
+  * Add -g to BOOT_CFLAGS, set STAGE1_CFLAGS to -g -O, only pass
+    other settings when required.
+  * Fix installation of the s390 libstdc++ biarch headers.
+  * Allow the powerpc build on a 32bit machine (without running the
+    biarch testsuite).
+  * Build -dbg packages for libgcc, libgomp, libmudflap, libffi, libobjc,
+    libgfortran.
+  * Drop the build dependency on expect-tcl8.3 (the hppa testsuite seems
+    to complete sucessfully with the expect package).
+  * Downgrade libmudflap-dev recommendation to a suggestion. Closes: #443929.
+
+  * Closing reports reported against gcc-4.1 and fixed in gcc-4.2:
+    - General
+      + PR rtl-optimization/21299, error in invalid asm statement.
+        Closes: #380121.
+    - C++
+      + PR libstdc++/19664, libstdc++ headers have pop/push of the visibility
+        around the declarations (closes: #307207, #324290, #423547).
+      + PR c++/21581, functions in anonymous namespaces default to "hidden"
+        visibility (closes: #278310).
+      + PR c++/4882, specialization of inner template using outer template
+        argument (closes: #269513).
+      + PR c++/6634, wrong parsing of "long long double" (closes: #247112).
+      + PR c++/10891, code using dynamic_cast causes segfaults when -fno-rtti
+        is used (closes: #188943).
+      + PR libstdc++/14991, stream::attach(int fd) porting entry out-of-date.
+        Closes: #178561.
+      + PR libstdc++/31638, string usage leads to warning with -Wcast-align.
+        Closes: #382153.
+      + Fix memory hog seen with g++-4.1. Closes: #411234.
+    - Fortran
+      + PR fortran/29228, ICE in gfc_trans_deferred_array (closes: #387222).
+      + PR fortran/24285, allow dollars everywhere in format (closes: #324600).
+      + PR libfortran/28354, 0.99999 printed as 0. instead of 1. by
+        format(f3.0). Closes: #397671.
+      + Fix ICE in gfc_get_extern_function_decl (closes: #396292).
+    - Architecture specific:
+      - i386
+        + Fix error with -m64 (unable to find a register to spill in class
+          'DIREG'). Closes: #430049.
+      - mips
+        + Fix ICE in tsubst (closes: #422303).
+      - s390
+        + Fix ICE (segmentation fault) building dcmtk (closes: #435736).
+
+  [Roman Zippel]
+  * Update the m68k patches.
+
+  [Riku Voipio]
+  * Configure armeabi with --disable-sjlj-exceptions.
+  * armel testsuite takes ages, adjust build accordingly.
+
+  [Ludovic Brenta and Xavier Grave]
+  * Add a version of the Ada run-time library using the setjump/longjump
+    exception handling mechanism (static library only).  Use with
+    gnatmake --RTS=sjlj.  Particularly useful for distributed (Annex E)
+    programs.
+  * Restore building libgnatvsn-dev and libgnatprj-dev.
+
+ -- Matthias Klose <doko at debian.org>  Sat, 29 Sep 2007 11:19:40 +0200
+
+gcc-4.2 (4.2.1-5) unstable; urgency=low
+
+  * Update to SVN 20070825 from the ubuntu/gcc-4_2-branch.
+    - Fix PR debug/32610, LP: #121911.
+  * Apply proposed patches:
+    - Improve debug info for packed arrays with constant bounds
+      (PR fortran/22244).
+    - Fix ICE in rtl_for_decl_init on const vector initializers
+      (PR debug/32914).
+    - Fix (neg (lt X 0)) optimization (PR rtl-optimization/33148).
+    - Fix libgcc.a(tramp.o) on ppc32.
+    - Fix redundant reg/mem stores/moves (PR target/30961).
+  * Update the -fdirectives-only backport.
+  * gappletviewer-4.2: Include the gcjwebplugin binary. LP: #131114.
+  * Update gpc patches and build support (not yet enabled).
+  * Fix gcc-snapshot hppa64 install target.
+  * Set the priority of the source package to optional.
+  * Remove .la files from the biarch libstdc++ debug packages,
+    conflict with the 3.4 package. Closes: #440490.
+
+  [Arthur Loiret]
+  * Add build support for GDC.
+
+ -- Matthias Klose <doko at debian.org>  Mon, 27 Aug 2007 01:39:32 +0200
+
+gcc-4.2 (4.2.1-4) unstable; urgency=medium
+
+  * gcc-4.2: Include missing std*.h header files.
+
+ -- Matthias Klose <doko at debian.org>  Tue, 14 Aug 2007 11:14:35 +0200
+
+gcc-4.2 (4.2.1-3) unstable; urgency=low
+
+  * Update to SVN 20070812 from the ubuntu/gcc-4_2-branch.
+  * debian/rules.defs: Fix typo, run the checks in biarch mode too.
+  * libgcj8-awt: Loosen dependency on gcj-4.2-base.
+  * Build only needed multilib libraries when building as gcj or gnat.
+  * Always build biarch libgomp in biarch builds.
+  * debian/rules2: Adjust testsuite logs files for logwatch.sh.
+  * Include header files from $/gcc_lib_dir)/include-fixed.
+  * Backport from trunk: -fdirectives-only (when preprocessing, handle
+    directives, but do not expand macros).
+  * Report an ICE to apport (if apport is available and the environment
+    variable GCC_NOAPPORT is not set)
+  * Fix gcj build failure on the Hurd (Samuel Thibault). Closes: #437470.
+
+ -- Matthias Klose <doko at debian.org>  Sun, 12 Aug 2007 21:11:00 +0200
+
+gcc-4.2 (4.2.1-2) unstable; urgency=low
+
+  [Matthias Klose]
+  * Update to SVN 20070804 from the ubuntu/gcc-4_2-branch (20070804):
+    - Merge gcc-4_2-branch SVN 20070804.
+    - Imported classpath CVS 20070727.
+    - Bump the libgcj soname, add conflict with java-gcj-compat (<< 1.0.76-4).
+    - Remove patches integrated in the branches: pr32862.
+    - Update patches: libjava-subdir, libjava-jar.
+    - Add regenerated class files: svn-class-updates.
+
+  * Fix profiling support on the Hurd (Michael Casadeval). Closes: #434937.
+  * Fix build on kfreebsd-amd64 (Aurelien Jarno). Closes: #435053.
+  * Period of grace is over, run the testsuite on m68k-linux again.
+  * Update infrastructure for the gcc-source package (Bastian Blank).
+  * Update profiling on the Hurd (Samuel Thibault, Michael Casadevall). 
+    Closes: #433539.
+  * debian/rules2: Allow DEB_BUILD_OPTIONS=parallel=<n> to overwrite NJOBS.
+  * Allow lang=<l1>,<l2> nolang=<l3,l4> in DEB_BUILD_OPTIONS; deprecating
+    WITHOUT_LANG, and WITHOUT_CHECK.
+  * debian/rules.defs, debian/rules.conf: Cache some often used macros.
+
+  * Preliminary work: Enable Java for ARM EABI (Andrew Haley), build
+    libffi for armel.
+  * gcj: Don't build the browser plugin in gcc-snapshot builds to get
+    rid of the xulrunner dependency.
+  * gcjwebplugin: Register for more browsers (package currently not built).
+  * gij/boehm-gc: Use sysconf as fallback, if reading /proc/stat fails.
+    Closes: #422469.
+  * libjava: Avoid dependency on MAXHOSTNAMELEN (Samuel Thibault).
+  * gcj: On arm and armel, use the ecj1 binary built from the ecj package.
+  * gcj: Don't require javac without java maintainer mode, remove build
+    dependencies on gcj and ecj, add build dependency on libecj-java.
+
+ -- Matthias Klose <doko at debian.org>  Sun, 05 Aug 2007 15:56:07 +0200
+
+gcc-4.2 (4.2.1-1) unstable; urgency=medium
+
+  [Ludovic Brenta]
+  * debian/patches/ada-symbolic-tracebacks.c: remove all trace of
+    the function convert_addresses from adaint.c.  Fixes FTBFS on alpha,
+    s390 and possibly other platforms.  Closes: #433633.
+  * debian/control.m4: list myself as uploader if the source package name
+    is gnat.  Relax build-dependency on gnat-4.2-source.
+  * debian/control.m4, debian/rules.conf: Build-depend on libmpfr-dev only
+    if building Fortran.
+
+  [Matthias Klose]
+  * debian/rules.conf: Fix breakage of Fortran build dependencies introduced
+    by merge of the Ada bits.
+  * Don't include the gccbug binary anymore in the gcc package; upstream bug
+    reports should be reported to the upstream bug tracker at
+    http://gcc.gnu.org/bugzilla.
+  * Don't build and test libjava for the biarch architecture.
+  * Install gappletviewer man page. Addresses: #423094.
+  * debian/patches/m68k-java.dpatch: Readd.
+  * gjar: support @ arguments.
+  * Update to SVN 20070726 from the ubuntu/gcc-4_2-branch.
+    - Fix mips/mipsel builds.
+  * libmudflap0: Fix update leaving an empty doc dir. Closes: #428306.
+  * arm/armel doesn't have ssp support. Closes: #433172.
+  * Update kbsd-gnu-ada patch (Aurelien Jarno): Addresses: #434754. 
+  * gcj-4.2: Build depend on gcj-4.2 to build the classpath examples files
+    for the binary-indep target.
+  * Fix PR java/32862, bugs in EnumMap implementation. Addresses: #423160.
+
+  [Arthur Loiret]
+  * Fix cross builds targeting x86_64. Closes: LP: #121834.
+
+ -- Matthias Klose <doko at debian.org>  Thu, 26 Jul 2007 21:46:03 +0200
+
+gcc-4.2 (4.2.1-0) unstable; urgency=low
+
+  [Matthias Klose]
+  * Update to SVN 20070719 from the ubuntu/gcc-4_2-branch, corresponding
+    to the GCC-4.2.1 release.
+    - debian/patches/arm-gij.dpatch: Remove. Closes: #433714.
+  * Apply proposed patch for PR tree-optimization/32723.
+  * Tighten build dependency on libmpfr-dev.
+  * On ia64, apply proposed patch for PR target/27880. Closes: #433719.
+
+  [Hector Oron]
+  * Fix cross and reverse-cross builds. Closes: #432356.
+
+ -- Matthias Klose <doko at debian.org>  Thu, 19 Jul 2007 17:59:37 +0200
+
+gnat-4.2 (4.2-20070712-1) unstable; urgency=low
+
+  * debian/rules.d/binary-ada.mk, debian/control.m4:
+    disable building libgnatvsn-dev and libgnatprj-dev, as they conflict
+    with packages from gnat-4.1.  Will reenable them for the transition to
+    gnat-4.2.
+  * Upload as gnat-4.2.  Closes: #432525.
+
+ -- Ludovic Brenta <lbrenta at debian.org>  Sat, 14 Jul 2007 15:12:34 +0200
+
+gcc-4.2 (4.2-20070712-1) unstable; urgency=high
+
+  [Matthias Klose]
+  * Update to SVN 20070712 from the ubuntu/gcc-4_2-branch.
+    - 4.2.1 RC2, built from SVN.
+    - same as gcc-4_2-branch, plus backport of gcc/java, boehm-gc, libffi,
+      libjava, zlib from the trunk.
+    - debian/patches/arm-libffi.dpatch: Remove.
+    - Fixes ICE in update_equiv_regs. Closes: #432604.
+  * debian/control.m4: Restore build dependency on dejagnu.
+  * debian/patches/arm-gij.dpatch: Update.
+  * i386-biarch.dpatch: Update for the backport for PR target/31868.
+    Closes: #432599.
+
+ -- Matthias Klose <doko at debian.org>  Fri, 13 Jul 2007 08:07:51 +0200
+
+gcc-4.2 (4.2-20070707-1) unstable; urgency=low
+
+  [Matthias Klose]
+  * Update to SVN 20070707 from the ubuntu/gcc-4_2-branch.
+    - debian/patches/libjava-soname.dpatch: Remove.
+    - debian/patches/disable-configure-run-check.dpatch: Update.
+  * Only suggest multilib packages on multilib architectures.
+  * Point ICE messages to the 4.2 docdir.
+  * Explicitely use fastjar to build gcj-4.1. Addresses: #416001.
+  * Configure with --enable-libgcj on m32r (Kazuhiro Inaoka).
+  * Include the hppa64 cross compiler on hppa snapshot builds.
+  * debian/patches/arm-libffi.dpatch: Update.
+  * libgcj-doc: Include the generated documentation.
+  * Fix building the libjava/classpath examples.
+  * Support reverse cross builds (Neil Williams). Closes: #431086.
+
+ -- Matthias Klose <doko at debian.org>  Sat, 07 Jul 2007 10:59:26 +0200
+
+gcc-4.2 (4.2-20070627-1) unstable; urgency=high
+
+  [Matthias Klose]
+  * Update to SVN gcc-4_2-branch/20070626.
+  * Update to SVN trunk/20070626 (gcc/java, libjava, libffi, boehm-gc).
+  * On mips*-linux, always imply -lpthread for -pthread (Thiemo Seufer).
+    Addresses: #428741.
+  * Fix libstdc++ cross builds (Arthur Loiret). Closes: #430395.
+  * README.Debian: Point to debian-toolchain for general toolchain topics.
+  * Use the generated locales for the libstdc++ build to fix the setting
+    of the gnu locale model. Closes: #428926, #429660.
+  * For ix86 lpia targets, configure --with-tune=i586.
+  * Make build dependency on gcc-4.1-multilib architecture specific.
+  * Do not ignore bootstrap comparision failure on ia64.
+
+  [Ludovic Brenta]
+  * ada-link-lib.dpatch: update to apply cleanly on GCC 4.2.
+  * ada-libgnat{vsn,prj}.dpatch: adjust to GCC 4.2.  Reenable in rules.patch.
+  * rules.conf: do not build libgomp as part of gnat-4.2.
+  * rules.conf, control.m4: build-depend on libz-dev, lib32z-dev or
+    lib64-dev only when building Java.
+  * rules2, rules.defs: $(with_mudflap): remove, use $(with_libmudflap) only.
+  * config.m4, binary-ada.mk: tighten dependencies; no Ada package depends
+    on gcc-4.2-base anymore.
+  * TODO: rewrite.
+  * README.gnat: include in gnat-4.2-base.  Remove outdated information.
+  * README.maintainers: new.  Include in gnat-4.2-base.
+
+  [Hector Oron]
+  * Merge DEB_CROSS_INDEPENDENT with DEB_CROSS.
+  * Disables libssp0 for arm and armel targets when cross compiling.
+  * Updates README.cross.
+  * Fixes linker mapping problem on binary-libstdcxx-cross.mk. Closes: #430688.
+
+ -- Matthias Klose <doko at debian.org>  Wed, 27 Jun 2007 21:54:08 +0200
+
+gcc-4.2 (4.2-20070609-1) unstable; urgency=low
+
+  * Update to SVN gcc-4_2-branch/20070609.
+    - Remove patches integrated upstream: pr30052, hppa-caller-save-pic-tls.
+  * Update to SVN trunk/20070609 (gcc/java, libjava, libffi, boehm-gc).
+    - Remove patches integrated upstream: libjava-qt-peer,
+      classpath-config-guess.
+  * Do not build with --enable-java-maintainer-mode.
+  * debian/rules.patch: Comment out m68k-peephole, requires m68k-split_shift.
+  * Add target to apply patches up to a specific patch (Wouter Verhelst).
+    Closes: #424855.
+  * libstdc++6-4.2-*: Add conflicts with 4.1 packages. Closes: #419511.
+  * Apply proposed fix for PR target/28102. Closes: #426905.
+  * Fix build failure for cross compiler builds (Jiri Palecek). Closes: #393897.
+  * Update build macros for kfreebsd-amd64. Closes: #424693.
+
+ -- Matthias Klose <doko at ubuntu.com>  Sat,  9 Jun 2007 06:54:13 +0200
+
+gcc-4.2 (4.2-20070528-1) unstable; urgency=low
+
+  * Update to SVN gcc-4_2-branch/20070528.
+  * Add backport for PR middle-end/20218.
+  * Add proposed PTA solver backport, PR tree-optimization/30052.
+  * Add backport for PR target/31868.
+  * Reenable the testsuite for arm, mips, mipsel.
+
+ -- Matthias Klose <doko at debian.org>  Mon, 28 May 2007 09:03:04 +0200
+
+gcc-4.2 (4.2-20070525-1) unstable; urgency=low
+
+  * Update to SVN gcc-4_2-branch/20070525.
+  * Update to SVN trunk/20070520 (gcc/java, libjava, libffi, boehm-gc).
+  * Do not explicitely configure for __cxa_atexit.
+  * libstdc++6-4.2-doc: Conflict with libstdc++6-4.1-doc. Closes: #424896.
+  * Update m68k patches:
+    - Remove patches applied upstream: m68k-jumptable, m68k-gc, 
+    - Reenable patches: m68k-save_pic, m68k-dwarf, m68k-limit_reload,
+      m68k-prevent-qipush, m68k-peephole, m68k-return, m68k-sig-unwind,
+      m68k-align-code m68k-align-stack, m68k-symbolic-operand,
+      m68k-bitfield-offset.
+    - Update: m68k-return, m68k-secondary-addr-reload, m68k-notice-move
+      m68k-secondary-addr-reload, m68k-notice-move.
+    - TODO: m68k-split_shift, m68k-dwarf3, m68k-fpcompare.
+  * Update the kfreebsd and arm patches (Aurelien Jarno). Closes: #425011.
+  * Temporarily disable the testsuite on slow architectures to get the
+    package built soon.
+
+ -- Matthias Klose <doko at debian.org>  Fri, 25 May 2007 07:14:36 +0200
+
+gcc-4.2 (4.2-20070516-1) unstable; urgency=low
+
+  * Update to SVN gcc-4_2-branch/20070516.
+  * Update to SVN trunk/20070516 (gcc/java, libjava, libffi, boehm-gc).
+  * Merge changes from gcc-4.1_4.1.2-7.
+  * Update NEWS files.
+
+ -- Matthias Klose <doko at debian.org>  Wed, 16 May 2007 02:33:57 +0200
+
+gcc-4.2 (4.2-20070502-1) unstable; urgency=low
+
+  * Update to SVN gcc-4_2-branch/20070502.
+    - Remove pr11953 patch, integrated upstream.
+  * Update to SVN trunk/20070502 (gcc/java, libjava, libffi, boehm-gc).
+  * Adjust tetex/tex-live build dependency.
+  * Fix gobjc-4.2's, gobjc++-4.2's dependency on libobjc2.
+  * Tighten (build) dependency on binutils. Addresses: #421197.
+  * gfortran-4.2: Depend on libgfortran2, provide the libgfortran.so
+    symlink. Adresses: #421362.
+  * Build-depend on gcc-multilib [amd64 i386 powerpc ppc64 s390 sparc].
+  * (Build-) depend on glibc (>= 2.5) for all architectures.
+  * Remove libssp packages from the control file.
+
+ -- Matthias Klose <doko at debian.org>  Wed,  2 May 2007 18:46:57 +0200
+
+gcc-4.2 (4.2-20070405-1) experimental; urgency=low
+
+  * Update to SVN gcc-4_2-branch/20070405.
+  * Update to SVN trunk/20070405 (gcc/java, libjava, libffi, boehm-gc).
+  * gcc-4.2-hppa64: Don't depend on libc6-dev.
+  * Robustify setting of make's -j flag. Closes: #410919.
+  * gcc-snapshot: Use the install_snap_stamp target for installation.
+
+ -- Matthias Klose <doko at debian.org>  Thu,  5 Apr 2007 23:56:35 +0200
+
+gcc-4.2 (4.2-20070307-1) experimental; urgency=low
+
+  * Update to SVN gcc-4_2-branch/20070307.
+  * Update to SVN trunk/20070307 (gcc/java, libjava, libffi, boehm-gc).
+  * Build gnat from separate sources.
+  * Merge changes from gcc-4.1-4.1.2-1.
+  * Install into /usr/lib/gcc/<target_alias>/4.2, to ease upgrades
+    between subminor versions.
+  * Configure --with-gxx-include-dir=/usr/include/c++/4.2
+
+ -- Matthias Klose <doko at debian.org>  Thu,  8 Mar 2007 02:52:00 +0100
+
+gcc-4.2 (4.2-20070210-1) experimental; urgency=low
+
+  * Merge Java backport from Ubuntu:
+    - Update to SVN gcc-4_2-branch/20070210.
+    - Update to SVN trunk/20070210 (gcc/java, libjava).
+    - Backout trunk specific gcc/java changes.
+    - Build-depend on gcj-4.1 and ecj-bootstrap.
+    - gcj-4.2: Depend on ecj-bootstrap, recommend ecj-bootstrap-gcj.
+    - Merge libgcj8-awt-gtk back into libgcj8-awt; the Qt peers
+      are disabled by upstream again.
+    - Generate manual pages for the classpath tools from the classpath
+      documentation.
+    - Adopt packaging for the merged libjava.
+    - Update patches for the merged libjava: libjava-lib32-properties,
+      i386-biarch, reporting, libjava-soname, libjava-subdir,
+      libjava-lib32subdir.
+    - Remove obsolete patches: libjava-plugin-binary, libjava-ia32fix,
+      libstdc++-docfixes.
+
+  * Set priority of development packages to optional.
+  * debian/libgcjGCJ.postrm: Don't fail on purge when directories
+    don't exist anymore. Closes: #406017.
+  * debian/patches/gcc-textdomain.dpatch: Update for 4.2.
+  * Generate and install libgomp docs into gcc-4.2-doc.
+
+ -- Matthias Klose <doko at debian.org>  Sat, 10 Feb 2007 16:53:11 +0100
+
+gcc-4.2 (4.2-20070105-1) experimental; urgency=low
+
+  * Update to SVN 20070105.
+  * Add tetex-extra to Build-Depend-Indep (libstd++ doxygen docs),
+    fix doxygen build (libstdc++-docfixes.dpatch).
+  * Enable parallel build by default on SMP machines.
+
+ -- Matthias Klose <doko at debian.org>  Fri,  5 Jan 2007 22:42:18 +0100
+
+gcc-4.2 (4.2-20061217-1) experimental; urgency=low
+
+  * Update to SVN 20061217.
+  * Merge changes from gcc-4.1_4.1.1-16 to gcc-4.1_4.1.1-21.
+  * Update patches to the current branch.
+  * Add multilib packages for gcc, g++, gobjc, gobjc++, gfortran.
+  * Link using --hash-style=gnu (alpha, amd64, ia64, i386, powerpc, ppc64,
+    s390, sparc).
+
+ -- Matthias Klose <doko at debian.org>  Sun, 17 Dec 2006 15:54:54 +0100
+
+gcc-4.2 (4.2-20061003-1) experimental; urgency=low
+
+  * libgcj.postinst: Remove /var/lib/gcj-4.2 on package removal.
+  * Don't install backup files in the doc directory, only one gcc-4.1
+    upgrade was broken. Closes: #389366.
+  * Merge gcc-biarch-generic.dpatch into i386-biarch.dpatch.
+  * Update link-libs.dpatch.
+  * Merge libgfortran2-dev into gfortran-4.2.
+
+ -- Matthias Klose <doko at debian.org>  Tue,  3 Oct 2006 16:26:38 +0000
+
+gcc-4.2 (4.2-20060923-1) experimental; urgency=low
+
+  * Update to SVN 20060923.
+  * Remove patches applied upstream: kbsd-gnu-java, kbsd-gnu.
+
+ -- Matthias Klose <doko at debian.org>  Sat, 23 Sep 2006 15:11:36 +0200
+
+gcc-4.2 (4.2-20060905-1) experimental; urgency=low
+
+  * Update to SVN 20060905.
+  * Merge changes from gcc-4.1 (4.1.1-10 - 4.1.1-12).
+  * Move gomp development files into gcc and gfortran.
+  * Build-depend on binutils (>= 2.17).
+
+ -- Matthias Klose <doko at debian.org>  Tue,  5 Sep 2006 03:33:00 +0200
+
+gcc-4.2 (4.2-20060818-1) experimental; urgency=low
+
+  * Update to SVN 20060818.
+    - libjava-libgcjbc.dpatch: Remove, applied upstream. 
+  * Merge changes from the Ubuntu gcj-4.2 package:
+    - libjava-soname.dpatch: Remove, applied upstream.
+    - libjava-native-libdir.dpatch: update.
+    - libffi-without-libgcj.dpatch: Remove, new libffi-configure to
+      enable --disable-libffi.
+    - Changes required for the classpath-0.92 update:
+      - New packages gappletviewer-4.2, gcjwebplugin-4.2.
+      - gij-4.2: Add keytool alternative.
+      - gcj-4.2: Add jarsigner alternative.
+    - libgcj8-dev: Remove conflicts with older libgcjX-dev packages.
+    - lib32gcj8: Populate the /usr/lib32/gcj-4.2 directory.
+    - libjava-library-path.dpatch:
+      - When running the i386 binaries on amd64, look in
+        /usr/lib32/gcj-x.y and /usr/lib32/jni instead.
+      - Add /usr/lib/jni to java.library.path. Adresses: #364820.
+    - Add more debugging symbols to libgcj8-dbg. Adresses: #383705.
+    - Fix and renable the biarch build for sparc.
+  * Disable gnat for alpha, fails to build.
+  * Configure without --enable-objc-gc, fails to build.
+
+ -- Matthias Klose <doko at debian.org>  Sat, 19 Aug 2006 18:25:50 +0200
+
+gcc-4.2 (4.2-20060709-1) experimental; urgency=low
+
+  * Test build, SVN trunk 20060709.
+  * Merge libssp0-dev into gcc-4.1 (-fstack-protector is a common option).
+  * Rename libmudflap0-dev to libmudflap0-4.2-dev.
+  * Ignore compiler warnings when checking whether compiler driver understands
+    Ada fails.
+  * Merge changes from the gcc-4.1 package.
+
+ -- Matthias Klose <doko at debian.org>  Sun,  9 Jul 2006 14:28:03 +0200
+
+gcc-4.2 (4.2-20060617-1) experimental; urgency=low
+
+  * Test build, SVN trunk 20060617.
+
+  [Matthias Klose]
+  * Configure using --enable-objc-gc, using the internal boehm-gc.
+  * Build-depend on bison (>= 1:2.3).
+  * Build the QT based awt peer library, not yet the same functionality
+    as the GTK based peer library.
+  * Update libjava-* patches.
+
+  [Ludovic Brenta]
+  * Do not provide the symbolic link /usr/bin/gnatgcc; this will now
+    be provided by package gnat from the source package gcc-defaults.
+  * debian/control.m4, debian/control (gnat): conflict with gnat (<< 4.1),
+    not all versions of gnat, since gcc-defaults will now provide gnat (= 4.1)
+    which depends on gnat-4.1.
+
+  [Bastian Blank]
+  * Make it possible to overwrite arch per DEB_TARGET_ARCH and
+    DEB_TARGET_GNU_TYPE.
+  * Disable biarch only on request for cross builds.
+  * Use correct source directory for tarballs.
+  * Produce correct multiarch.inc for source builds.
+
+ -- Matthias Klose <doko at debian.org>  Sat, 17 Jun 2006 19:02:01 +0200
+
+gcc-4.2 (4.2-20060606-1) experimental; urgency=low
+
+  * Test build, SVN trunk 20060606.
+  * Remove obsolete patches, update patches for 4.2.
+  * Update the biarch-include patches to work with mips-triarch.
+  * Disable Ada, not yet updated.
+  * New packages: libgomp*.
+  * Remove fastjar, not included upstream anymore.
+
+ -- Matthias Klose <doko at debian.org>  Tue,  6 Jun 2006 10:52:28 +0200
+
+gcc-4.1 (4.1.2-12) unstable; urgency=high
+
+  * i386-biarch.dpatch: Update for the backport for PR target/31868.
+    Closes: #427185.
+  * m68k-libffi2.dpatch: Update. Closes: #425399.
+
+ -- Matthias Klose <doko at debian.org>  Mon,  4 Jun 2007 23:53:23 +0200
+
+gcc-4.1 (4.1.2-11) unstable; urgency=low
+
+  * Update to SVN 20070601.
+  * Build the libmudflap0-dev package again.
+  * Don't build libffi, when the packages are not built.
+
+ -- Matthias Klose <doko at debian.org>  Fri,  1 Jun 2007 23:55:22 +0200
+
+gcc-4.1 (4.1.2-10) unstable; urgency=low
+
+  * Regenerate the control file.
+
+ -- Matthias Klose <doko at debian.org>  Wed, 30 May 2007 00:29:29 +0200
+
+gcc-4.1 (4.1.2-9) unstable; urgency=low
+
+  * Update to SVN 20070528.
+  * Don't build packages now built from the gcc-4.2 source (arm, m68k,
+    mips, mipsel).
+  * Add backport for PR middle-end/20218.
+  * Add backport for PR target/31868.
+
+ -- Matthias Klose <doko at debian.org>  Tue, 29 May 2007 00:01:12 +0200
+
+gcc-4.1 (4.1.2-8) unstable; urgency=low
+
+  * Update to SVN 20070518.
+  * Don't build packages now built from the gcc-4.2 source.
+
+  [ Aurelian Jarno ]
+  * Update libffi patch for ARM. Closes: #425011.
+  * arm-pr30486, arm-pr28516, arm-unbreak-eabi-armv4t: New.
+  * Disable FFI, Java, ObjC for armel.
+
+ -- Matthias Klose <doko at debian.org>  Sun, 20 May 2007 10:31:24 +0200
+
+gcc-4.1 (4.1.2-7) unstable; urgency=low
+
+  * Update to SVN 20070514.
+  * Link using --hash-style=both on supported architectures. Addresses: #421790.
+  * On hppa, build ecjx as a native binary.
+  * note-gnu-stack.dpatch: Fix ARM comment marker (Daniel Jacobowitz).
+    Closes: #422978.
+  * Add build dependency on libxul-dev for *-freebsd. Closes: #422995.
+  * Update config.guess/config.sub and build gcjwebplugin on GNU/kFreeBSD
+    (Aurelian Jarno). Closes: #422995.
+  * Disable ssp on hurd-i386. Closes: #423757.
+
+ -- Matthias Klose <doko at debian.org>  Mon, 14 May 2007 08:40:08 +0200
+
+gcc-4.1 (4.1.2-6) unstable; urgency=low
+
+  * Update libjava from the gcc-4.1 Fedora branch 20070504.
+  * gfortran-4.1: Fix the target of the libgfortran.so symlink.
+    Closes: #421362.
+  * Build-depend on gcc-multilib [amd64 i386 powerpc ppc64 s390 sparc].
+  * Readd build dependency on binutils on arm.
+  * (Build-) depend on glibc (>= 2.5) for all architectures.
+  * Remove libssp packages from the control file.
+  * Fix wrong code generation on hppa when TLS variables are used.
+    Closes: #422421.
+
+ -- Matthias Klose <doko at debian.org>  Sun,  6 May 2007 10:00:23 +0200
+
+gcc-4.1 (4.1.2-5) unstable; urgency=low
+
+  * Update to SVN 20070429.
+  * Update libjava from the gcc-4.1 Fedora branch 20070428.
+  * Update m68k patches:
+    - Remove pr25514, pr27736, applied upstream.
+    - Update m68k-java.
+  * Link using --hash-style=gnu/both.
+  * Tighten (build) dependency on binutils. Closes: #421197.
+  * gij-4.1: Add a conflict with java-gcj-compat (<< 1.0.69).
+  * gfortran-4.1: Depend on libgfortran1, provide the libgfortran.so
+    symlink. Closes: #421362.
+  * gcc-4.1, gcc-4.1-multilib: Fix compatibility symlinks. Closes: #421382.
+  * Temporarily remove build dependency on locales on arm, hppa, m68k, mipsel.
+  * Temporarily remove build dependency on binutils on arm.
+  * Fix FTBFS on GNU/kFreeBSD (Aurelian Jarno). Closes: #421423.
+  * gij-4.1 postinst: Create /var/lib/gcj-4.1. Closes: #421526.
+
+ -- Matthias Klose <doko at debian.org>  Mon, 30 Apr 2007 08:13:32 +0200
+
+gcc-4.1 (4.1.2-4) unstable; urgency=medium
+
+  * Update to SVN 20070423.
+    - Remove pr11953, applied upstream.
+    - Fix ld version detection in libstdc++v3.
+  * Update libjava from the gcc-4.1 Fedora branch 20070423.
+  * Merge libgfortran1-dev into gfortran-4.1.
+  * Add multilib packages for gcc, g++, gobjc, gobjc++, gfortran.
+  * Don't link using --hash-style=gnu/both; loosen dependency on binutils.
+  * Don't revert the patch to fix PR c++/27227.
+
+ -- Matthias Klose <doko at debian.org>  Mon, 23 Apr 2007 23:13:14 +0200
+
+gcc-4.1 (4.1.2-3) experimental; urgency=low
+
+  * Update to SVN 20070405.
+  * Update libjava from the gcc-4.1 Fedora branch 20070405.
+  * Robustify setting of make's -j flag. Closes: #414316.
+  * Only build the libssp packages, when building the common libraries.
+  * gcc-4.1-hppa64: Don't depend on libc6-dev.
+
+ -- Matthias Klose <doko at debian.org>  Fri,  6 Apr 2007 00:28:29 +0200
+
+gcc-4.1 (4.1.2-2) experimental; urgency=low
+
+  * Update to SVN 20070306.
+  * Update libjava from the gcc-4.1 Fedora branch 20070306.
+
+  [Matthias Klose]
+  * Don't install gij-wrapper anymore, directly register gij as a java
+    alternative.
+  * Don't install gcjh-wrapper anymore.
+  * Don't use exact versioned dependencies on gcj-base for libgcj and
+    libgcj-awt.
+  * Fix glibc build dependency for alpha.
+  * Support -ffast-math on hurd-i386 (Samuel Thibault). Closes: #413342.
+  * Update kfreebsd-amd64 patches (Aurelien Jarno). Closes: #406015.
+  * gij: Consistently use $(dbexecdir) to reference the gcj sub dir.
+  * Install into /usr/lib/gcc/<target_alias>/4.1, to ease upgrades
+    between minor versions.
+    Add compatibility symlinks in <target_alias>/4.1.2 to build gnat-4.1
+    and gcj-4.1 from separate sources.
+
+ -- Matthias Klose <doko at debian.org>  Wed,  7 Mar 2007 03:51:47 +0100
+
+gcc-4.1 (4.1.2-1) experimental; urgency=low
+
+  [Matthias Klose]
+  * Update to gcc-4.1.2.
+  * Update libjava backport patches, split out boehm-gc-backport patch.
+  * Enable the cpu-default-generic patch (i386, amd64), backport from 4.2.
+  * Correct mfctl instruction syntax (hppa), backport from the trunk.
+  * Backport PR java/9861 (name mangling updates).
+  * gcc.c (main): Call expandargv (backport from 4.2).
+  * Apply gcc dwarf2 unwinding patches from the trunk.
+  * Apply backport for PR 20208 on amd64 i386 powerpc ppc64 sparc s390.
+  * Apply patches from the 4.1 branch for PR rtl-optimization/28772,
+    PR middle-end/30313, PR middle-end/30473, PR c++/30536, PR debug/30189,
+    PR fortran/30478, PR rtl-optimization/30787, PR tree-optimization/30823,
+    PR rtl-optimization/28173, PR ada/30684, bug in pointer dependency test,
+    PR rtl-optimization/30931, PR fortran/25392, PR fortran/30400,
+    PR libgfortran/30910, PR libgfortran/30918, PR fortran/29441,
+    PR target/30634.
+  * Update NEWS files.
+  * Include a backport of the ecj+generics java updates as
+    gcj-ecj-20070215.tar.bz2. Install it into the gcc-4.1-source package.
+  * Do not build fastjar anymore from this source.
+  * debian/control.m4: Move expect-tcl8.3 before dejagnu.
+  * Work around firefox/icewhatever dropping plugin dependencies on xpcom.
+  * Refactor naming of libgcj packages in the build files.
+  * Make libstdc++-doc's build dependencies depending on the source package.
+  * Do not build packages on architectures, which are already built by gcc-4.2.
+
+  * Merge the gcj generics backport from Ubuntu:
+
+    - Merge the Java bits (eclipse based compiler, 1.5 compatibility,
+      classpath generics) from the gcc-4.1 Fedora branch.
+    - Drop all previous patches from the classpath-0.93 merge, keep
+      the boehm-gc backport (splitted out as a separate patch).
+    - Add a gcj-ecj-generics.tar.bz2 tarball, containing gcc/java, libjava,
+      config/unwind_ipinfo.m4, taken from the Fedora branch.
+    - Drop the libjava-hppa, libjava-plugin-binary, pr29362, pr29805 patches
+      integrated in the backport.
+    - Update patches for the merge: reporting, libjava-subdir, i386-biarch,
+      classpath-tooldoc, pr26885
+    - Add libjava-dropped, libjava-install; dropped chunks from the merge.
+    - Add pr9861-nojava mangling changes, non-java parts for PR 9861.
+    - Add gcc-expandv, expand `@' parameters on the commandline; backport
+      from the trunk.
+    - Disable the m68k-gc patch, needs update for the merge.
+    - Configure --with-java-home set for 1.5.0.
+    - Configure with --enable-java-maintainer-mode to build the header
+      and class files on the fly.
+    - Add build dependency on ecj-bootstrap, configure --with-ecj-jar.
+    - Build an empty libgcj-doc package; gjdoc currently cannot handle
+      generics.
+    - Apply gcc dwarf2 unwinding patches from the trunk, allowing the Events
+      testcase to pass.
+      - Tighten dependencies on shared libraries.
+    - Use /usr/lib/gcj-4-1-71 as private gcj subdir.
+    - Bump the libgcj soversion to 71, rename the libgcj7-0 package
+      to libgcj7-1, rename the libgcj7-awt package to libgcj7-1-awt.
+    - gij-4.1: Add and provide alternatives for gorbd, grmid, gserialver.
+    - gcj-4.1: Remove gcjh, gcjh-wrapper, gjnih.
+    - gcj-4.1: Add and provide alternatives for jar, javah, native2ascii,
+      tnameserv.
+    - gcj-4.1: Add dependency on ecj-bootstrap, recommend fastjar,
+      ecj-bootstrap-gcj.
+    - Add build dependency on ecj-bootstrap version providing the GCCMain
+      class.
+    - libgcj7-1: Recommend libgcj7-1-awt.
+    - Add build dependency on libmagic-dev.
+    - Build-depend on gcj-4.1; build our own ecj1 and gjdoc before
+      starting the build.
+    - Make ecj1 available when running the testsuite.
+    - Fix build failure on sparc-linux.
+    - Fix gjavah compatibility problems (PR cp-tools/3070[67]).
+    - Fixed driver issue source files (PR driver/30714).
+    - Add (rudimentary) manual pages for classpath tools.
+
+  [Kevin Brown]
+  * debian/control.m4, debian/rules.d/binary-ada.mk: provide new packages
+    containing debugging symbols for Ada libraries: libgnat-4.1-dbg,
+    libgnatprj4.1-dbg, and libgnatvsn4.1-dbg.  Adresses: #401385.
+
+ -- Matthias Klose <doko at debian.org>  Sat,  3 Mar 2007 23:12:08 +0100
+
+gcc-4.1 (4.1.1ds2-30) experimental; urgency=low
+
+  * Update to SVN 20070106.
+  * Do not revert the fixes for PR 25878, PR 29138, PR 29408.
+  * Don't build the packages built by gcc-4.2 source.
+  * debian/patches/note-gnu-stack.dpatch: Add .note.GNU-stack sections
+    for gcc's crt files, libffi and boehm-gc. Taken from FC. Closes: #382741.
+  * Merge from Ubuntu:
+    - Backport g++ visibility patches from the FC gcc-4_1-branch.
+    - Update the long-double patches; require glibc-2.4 as a build dependency
+      on alpha, powerpc, sparc, s390. Bump the shlibs dependencies to
+      require 4.1.1-21.
+    - On powerpc-linux configure using --enable-secureplt. Closes: #382748.
+    - When using the cpu-default-generic patch, build for generic x86-64
+      on amd64 and i386 biarch.
+    - Link using --hash-style=both (alpha, amd64, ia64, i386, powerpc, ppc64,
+      s390, sparc).
+  * gij-4.1: Recommends libgcj7-awt instead of suggesting it. Closes: #394917.
+  * Split the gcc-long-double patch into a code and doc part.
+  * Set priority of development packages to optional.
+  * Add support for kfreebsd-amd64 (Aurelian Jarno). Closes: #406015.
+
+ -- Matthias Klose <doko at debian.org>  Sat,  6 Jan 2007 10:35:42 +0100
+
+gcc-4.1 (4.1.1ds2-22) unstable; urgency=high
+
+  * Enable -pthread for GNU/Hurd (Michael Banck). Closes: #400031.
+  * Update the m68k-fpcompare patch (Roman Zippel). Closes: #401585.
+
+ -- Matthias Klose <doko at debian.org>  Sun, 10 Dec 2006 12:35:06 +0100
+
+gcc-4.1 (4.1.1ds2-20) unstable; urgency=low
+
+  [Matthias Klose]
+  * Update to SVN 20061115.
+    - Fix PR tree-optimization/27891, ICE in tree_split_edge.
+      Closes: #370248, #391657, #394630.
+    - Fix PR tree-optimization/9814, duplicate of PR tree-optimization/29797.
+      Closes: #181096.
+  * Apply the libjava/net backport from the redhat/gcc-4_1-branch.
+  * Apply proposed patch for PR java/29805.
+
+  [Roman Zippel]
+  * Build the ObjC and ObjC++ compilers in cross builds.
+  * debian/patches/m68k-symbolic-operand.dpatch: Better recognize
+    symbolic operands in addresses.
+  * debian/patches/m68k-bitfield-offset.dpatch: Only use constant offset
+    for register bitfields (combine expects shifts, but does a rotate).
+  * debian/patches/m68k-bitfield-offset.dpatch: Update and apply.
+
+  [Daniel Jacobowitz]
+  * Don't try to use _Unwind_Backtrace on SJLJ targets.
+    See bug #387875, #388505, GCC PR 29206.
+
+ -- Matthias Klose <doko at debian.org>  Wed, 15 Nov 2006 08:59:53 -0800
+
+gcc-4.1 (4.1.1ds2-19) unstable; urgency=low
+
+  * Fix typo in arm-pragma-pack.dpatch.
+
+ -- Matthias Klose <doko at debian.org>  Sat, 28 Oct 2006 11:04:00 +0200
+
+gcc-4.1 (4.1.1ds2-18) unstable; urgency=medium
+
+  [Matthias Klose]
+  * Update to SVN 20061028.
+  * Fix #pragma pack on ARM (Paul Brook). Closes: #394703.
+  * Revert PR c++/29138, PR c++/29408. Closes: #392559.
+  * Revert PR c++/25878. Addresses: #387989.
+  * fastjar: Provide jar. Closes: #395397.
+
+  [Ludovic Brenta]
+  * debian/control.m4 (libgnatprj-dev): depend on libgnatvsn-dev.
+    debian/gnatprj.gpr: with gnatvsn.gpr. Closes: #395000.
+
+ -- Matthias Klose <doko at debian.org>  Thu, 26 Oct 2006 23:51:10 +0200
+
+gcc-4.1 (4.1.1ds2-17) unstable; urgency=low
+
+  [Matthias Klose]
+  * Update to SVN 20061020.
+    - Fix PR debug/26881, ICE in dwarf2out_finish. Closes: #377613.
+    - Fix PR PR c++/29408, parse error for valid code. Closes: #392327, #393010.
+    - Fix PR c++/29435, segfault with sizeof and templates. Closes: #393071.
+    - Fix PR target/29338, segfault with -finline-limit on arm. Closes: 390620.
+    - Fix 3.4/4.0 backwards compatibility problem in libstdc++.
+  * Fix PR classpath/29362, taken from the redhat/gcc-4_1-branch.
+  * Remove the INSTALL directory from the source tarball. Closes: #392974.
+  * Disable building the static libgcj; non-functional, and cutting
+    down build times.
+  * libgcj7-0: Tighten dependency on libgcj-common.
+  * libgcj7-dev: Install .pc file as libgcj-4.1.pc.
+  * README.cross: Updated (Hector Oron). Addresses: #380251.
+  * config-ml.dpatch: Use *-linux-gnu as *_GNU_TYPE. Closes: #394034.
+
+  [Nikita V. Youshchenko]
+  * Fix typo in the cross build scripts.  Closes: #391445.
+
+  [Falk Hueffner]
+  * alpha-no-ev4-directive.dpatch: Fix kernel build failure.
+
+  [Roman Zippel]
+  * debian/patches/m68k-align-code.dpatch: Use "move.l %a4,%a4" to advance
+    within code.
+  * debian/patches/m68k-align-stack.dpatch: Try to keep the stack word aligned.
+  * debian/patches/m68k-dwarf3.dpatch: Emit correct dwarf info for cfa offset
+    and register with -fomit-frame-pointer.
+  * debian/patches/m68k-fpcompare.dpatch: Bring fp compare early to its
+    desired form to relieve reload. Closes: #390879.
+  * debian/patches/m68k-prevent-swap.dpatch: Don't swap operands
+    during reloads.
+  * debian/patches/m68k-reg-inc.dpatch: Reinsert REG_INC notes after splitting
+    an instruction.
+  * debian/patches/m68k-secondary-addr-reload.dpatch: Add secondary reloads
+    to allow reload to get byte values into addr regs. Closes: #385327.
+  * debian/patches/m68k-symbolic-operand.dpatch: Better recognize symbolic
+    operands in addresses.
+  * debian/patches/m68k-limit_reload.dpatch: Remove, superseded by
+    m68k-secondary-addr-reload.dpatch.
+  * debian/patches/m68k-notice-move.dpatch: Apply, was checked in in -16.
+  * debian/patches/m68k-autoinc.dpatch: Updated, don't attempt to increment
+    the register, if it's used multiple times in the instruction .
+
+ -- Matthias Klose <doko at debian.org>  Sat, 21 Oct 2006 00:25:05 +0200
+
+gcc-4.1 (4.1.1ds1-16) unstable; urgency=low
+
+  [Matthias Klose]
+  * Update to SVN 20061008.
+    - Fix PR c++/29226, ICE in make_decl_rtl. Closes: #388263.
+  * libgcj7-0: Fix package removal. Closes: #390874.
+  * Configure with --disable-libssp on architectures that don't
+    support it (alpha, hppa, ia64, m68k, mips, mipsel).
+  * On hppa, remove build-dependency on dash.
+  * gij/gcj: Do not install slave links for the non DFSG manpages.
+    Closes: #390425, #390532.
+  * libgcj-common: rebuild-gcj-db: Don't do anything, if no classmap
+    files are found. Closes: #390966.
+  * Fix PR libstdc++/11953, extended for all linux architectures.
+    Closes: #391268.
+  * libffi4-dev: Conflict with libffi. Closes: #387561.
+  * Backport PR target/27880 to the gcc-4_1-branch. Patch by Steve Ellcey.
+    Closes: #390693.
+  * On ia64, don't use _Unwind_GetIPInfo in libjava and libstdc++.
+  * Add a README.ssp with minimal documentation about stack smashing
+    protection. Closes: #366094.
+  * Do not build libgcj-common from the gcc-4.1/gcj-4.1 sources anymore.
+
+  [Roman Zippel]
+  * debian/patches/m68k-notice-move.dpatch: Don't set cc_status
+    for fp move without fp register.
+
+ -- Matthias Klose <doko at debian.org>  Sun,  8 Oct 2006 02:21:49 +0200
+
+gcc-4.1 (4.1.1ds1-15) unstable; urgency=medium
+
+  * Update to SVN 20060927.
+    - Fix PR debug/29132, exception handling on mips. Closes: #389468, #390042.
+    - Fix typo in gcc documentation. Closes: #386180.
+    - Fix PR target/29230, wrong code generation on arm. Closes: #385505.
+  * libgcj-common: Ignore exit value of gcj-dbtool in rebuild-gcj-db on
+    arm, m68k, hppa. Adresses: #388505.
+  * libgcj-common: Replaces java-gcj-compat-dev and java-gcj-compat.
+    Closes: #389539.
+  * libgcj-common: /usr/share/gcj/debian_defaults: Define gcj_native_archs.
+  * Update the java backport from the redhat/gcc-4_1-branch upto 2006-09-27;
+    remove libjava-str2double.dpatch, pr28661.dpatch.
+  * Disable ssp on hppa, not supported.
+  * i386-biarch.dpatch: Avoid warnings about macro redefinitions.
+
+ -- Matthias Klose <doko at debian.org>  Fri, 29 Sep 2006 22:32:41 +0200
+
+gcc-4.1 (4.1.1ds1-14) unstable; urgency=medium
+	
+  [Matthias Klose]
+  * Update to SVN 20060920.
+    - Fix PR c++/26957. Closes: #373257, #386910.
+    - Fix PR rtl-optimization/28243. Closes: #378325.
+  * Remove patch for PR rtl-optimization/28634, applied upstream.
+  * Fix FTBFS on GNU/kFreeBSD (fallout from the backport of classpath-0.92).
+    (Petr Salinger). Closes: #385974.
+  * Merge from Ubuntu:
+    - Do not encode the subminor version in the jar files.
+    - Fix typo for the versioned gcj subdirectory in lib32gcj-0.
+    - When running the i386 binaries on amd64, adjust the properties
+      java.home, gnu.classpath.home.url, sun.boot.class.path,
+      gnu.gcj.precompiled.db.path.
+    - Configure the 32bit build on amd64 
+      --with-java-home=/usr/lib32/jvm/java-1.4.2-gcj-4.1-1.4.2.0/jre.
+    - Configure --with-long-double-128 for glibc-2.4 on alpha, powerpc, ppc64,
+      s390, s390x, sparc, sparc64.
+    - Update the java backport from the redhat/gcc-4_1-branch upto 2006-09-20.
+      - Fix PR java/29013, invalid byte code generation. Closes: #386926.
+    - debian/patches/gcc-pfrs-2.dpatch: Apply a fix for a regression in the
+      backport of PR 28946 from the trunk (H.J. Lu).
+  * Backport PR classpath/28661 from the trunk.
+  * Don't ship the .la files for the java modules. Closes: #386228.
+  * gcj-4.1: Remove dangling symlink. Closes: #386430.
+  * gij: Suggest java-gcj-compat, gcj: Suggest java-gcj-compat-dev.
+    Closes: #361942.
+  * Fix infinite loop in string-to-double conversion on 64bit targets.
+    Closes: #348792.
+  * gij-4.1: Ignore exit value of gcj-dbtool in postinst. Adresses: #388505.
+  * libgcj-common: Move rebuild-gcj-db from java-gcj-compat into libgcj-common.
+  * On hppa, install a wrapper around gij-4.1 to ignore unaligned memory
+    accesses. Works around buildd configurations enabling this check by
+    default. Addresses: #364819.
+
+  [Ludovic Brenta]
+  * debian/patches/ada-libgnatprj.dpatch: Build mlib-tgt-linux.adb instead of
+    mlib-tgt.adb.  Closes: #387826.
+  * debian/patches/ada-pr15802.dpatch: Backport from the trunk.
+    Closes: #246384.
+  * debian/control.m4 (gnat-4.1): do not provide gnat (supplied by
+    gcc-defaults instead); conflict with gnat-4.2 which will soon be in
+    unstable.
+
+  [Roman Zippel]
+  * debian/patches/m68k-dwarf2.dpatch: Recognize stack adjustments also
+    in the src of an instruction.
+  * debian/patches/m68k-jumptable.dpatch: Don't force byte offset when
+    accessing the jumptable, gas can generate the correct offset size instead.
+  * debian/patches/m68k-peephole.dpatch: Convert some text peepholes to rtl
+    peepholes, so the correct DWARF2 information can be generated for stack
+    manipulations (Keep a few peepholes temporarily disabled).
+  * debian/patches/m68k-peephole-note.dpatch: Don't choke on notes while
+    reinserting REG_EH_REGION notes.
+  * debian/patches/m68k-return.dpatch: Don't use single return if fp register
+    have to be restored. Closes: #386864.
+  * debian/patches/m68k-sig-unwind.dpatch: Add support for unwinding over
+    signal frames.
+  * Fix PR rtl-optimization/27736, backport from the trunk.
+  * Add java support for m68k. Closes: #312830, #340874, #381022.
+
+ -- Matthias Klose <doko at debian.org>  Sun, 24 Sep 2006 19:36:31 +0200
+
+gcc-4.1 (4.1.1ds1-13) unstable; urgency=medium
+
+  * Update to SVN 20060901; remove patches applied upstream:
+    - PR target/24367.
+    - PR c++/26670.
+  * Apply proposed patch for PR fortran/28908.
+  * Fix biarch symlinks in lib64stdc++ for cross builds.
+  * Fix biarch symlinks in lib32objc on amd64.
+
+ -- Matthias Klose <doko at debian.org>  Fri,  1 Sep 2006 00:04:05 +0200
+
+gcc-4.1 (4.1.1ds1-12) unstable; urgency=medium
+
+  [Matthias Klose]
+  * Update to SVN 20060830.
+  * Add backport of PR other/26208, bump libgcc1 shlibs dependency.
+  * Add backport of PR c++/26670. Closes: #356548.
+  * Apply proposed patch for PR target/24367 (s390).
+  * Add /usr/lib/jni to the libjava dlsearch path. Closes: #364820.
+  * Build without GFDL licensed docs. Closes: #384036.
+    - debian/patches/{svn-doc-updates,pr25524-doc,pr26885-doc}.dpatch:
+      Split out -doc specific patches.
+    - debian/*.texi, debian/porting.html: Add dummy documentation.
+    - debian/rules.unpack, debian/rules.patch: Update for non-gfdl build.
+    - fastjar.texi: Directly define the gcctabopt and gccoptlist macros.
+
+  * Merge from Ubuntu:
+    - Backport the classpath-0.92, libjava, gcc/java merge from the
+      redhat/gcc-4_1-branch branch.
+    - Apply the proposed patch for PR libgcj/28698.
+    - Change the libgcj/libgij sonames. Rename libgcj7 to libgcj7-0.
+    - Do not remove the rpath from libjvm.so and libjawt.so. Some
+      configure scripts rely on being able to link that libraries
+      directly.
+    - When running the i386 binaries on amd64, look in
+      /usr/lib32/gcj-x.y and /usr/lib32/jni instead.
+    - Add /usr/lib/jni to java.library.path. Closes: #364820.
+    - Add debugging symbols for more binary packages to libgcj7-dbg.
+      Closes: #383705.
+    - libgcj7-dev: Remove conflicts with older libgcjX-dev packages.
+    - Do not build the libgcj-bc and lib32gcj-bc packages anymore from
+      the gcj-4.1 source.
+
+  [Roman Zippel]
+  * debian/patches/m68k-limit_reload.dpatch: Correctly limit reload class.
+    Closes: #375522.
+  * debian/patches/m68k-split_shift.dpatch: Use correct predicates for long long
+    shifts and use more splits. Closes: #381572.
+  * debian/patches/m68k-prevent-qipush.dpatch: Prevent combine from creating
+    a byte push on the stack (invalid on m68k). Closes: #385021.
+  * debian/patches/m68k-autoinc.dpatch: Recognize a few more autoinc possibilities.
+  * debian/patches/pr25514.dpatch: Backport from the trunk.
+  * debian/patches/m68k-gc.dpatch: Change STACKBOTTOM to LINUX_STACKBOTTOM
+    so it works with 2.6 kernels.
+  * Other m68k bug reports fixed in 4.1.1-11 and 4.1.1-12:
+    Closes: #378599, #345574, #344041, #323426, #340293.
+  * Build the stage1 compiler using -g -O2; saves a few hours build time
+    and apparently is working at the moment.
+
+ -- Matthias Klose <doko at debian.org>  Tue, 29 Aug 2006 21:37:28 +0200
+
+gcc-4.1 (4.1.1-11) unstable; urgency=low
+
+  * The "Our priority are our users, remove the documentation!" release.
+
+  [Matthias Klose]
+  * Fix build failure building the hppa->hppa64 cross compiler.
+  * Update to SVN 20060814.
+    - Fix directory traversal vulnerability in fastjar. Closes: #368397.
+      CVE-2006-3619.
+    - Fix PR rtl-optimization/23454, ICE in invert_exp_1 on sparc.
+      Closes: #321215.
+    - Fix PR c++/26757, C++ front-end producing two DECLs with the same UID.
+      Closes: #356569.
+  * Remove patch for PR rtl-optimization/28075, applied upstream.
+  * Apply proposed patch for PR rtl-optimization/28634, rounding problem with
+    -fdelayed-branch on hppa/mips. Closes: #381710.
+  * Fixed at least in 4.1.1-10: boost::date_time build failure.
+    Closes: #382352.
+  * Build-depend on make (>= 3.81), add make (>= 3.81) as dependency to
+    gcc-4.1-source. Closes: #381117.
+  * Backport of libffi from the trunk; needed for the java backport in
+    experimental.
+  * libffi4-dev: Install the libffi_convenience library as libffi_pic.a.
+  * When building a package without the GFDL'd documentation, don't create
+    the alternative's slave links for manual pages for the java tools.
+  * Do not build the -doc packages and derived manual pages licensed under
+    the GFDL with invariant sections or cover texts.
+  * Only build the libssp package, if the target libc doesn't provide
+    ssp support.
+  * Run the complete testsuite, when building a standalone gcj package.
+
+  [Roman Zippel]
+  * debian/patches/m68k-fjump.dpatch:
+    Always use as fjcc pseudo op, we rely heavily on as to generate the
+    right size for the jump instructions. Closes: #359281.
+  * debian/patches/m68k-gc.dpatch:
+    The thread suspend handler has to save all registers.
+    Reenable MPROTECT_VDB, it should work, otherwise it's probably a kernel bug.
+  * debian/patches/m68k-save_pic.dpatch:
+    Correctly save the pic register, when not done by reload().
+    (fixes _Unwind_RaiseException and thus exception handling).
+  * debian/patches/m68k-libffi.dpatch: Add support for closures.
+  * debian/patches/m68k-bitfield.dpatch: Avoid propagation of mem expression
+    past a zero_extract lvalue.
+  * debian/patches/m68k-dwarf.dpatch: Correct the dwarf frame information,
+    but preserve compatibility.
+
+  [Christian Aichinger]
+  * Fix building a cross compiler targeted for ia64. Closes: #382627.
+
+ -- Matthias Klose <doko at debian.org>  Tue, 15 Aug 2006 00:41:00 +0200
+
+gcc-4.1 (4.1.1-10) unstable; urgency=low
+
+  * Update to SVN 20060729.
+    - Fix PR c++/28225, segfault in type_dependent_expression_p.
+      Closes: #376148.
+  * Apply proposed patch for PR rtl-optimization/28075.
+    Closes: #373820.
+  * Apply proposed backport and proposed patch for PR rtl-optimization/28221.
+    Closes: #376084.
+  * libgcj7-jar: Loosen dependency on gcj-4.1-base.
+  * Add ssp header files to the private gcc includedir.
+  * Do not build the Ada packages from the gcc-4.1 source, introducing
+    a new gnat-4.1 source package.
+  * Build libgnat on alpha and s390 as well.
+  * Do not build the gnat-4.1-doc package (GFDL with invariant sections or
+    cover texts).
+  * Remove references to the stl-manual package. Closes: #378698.
+
+ -- Matthias Klose <doko at debian.org>  Sat, 29 Jul 2006 22:08:59 +0200
+
+gcc-4.1 (4.1.1-9) unstable; urgency=low
+
+  * Update to SVN 20060715.
+    - Fix PR c++/28016, do not emit uninstantiated static data members.
+      Closes: #373895, #376871.
+  * Revert the patch to fix PR c++/27227. Closes: #378321.
+  * multiarch-include.dpatch: Renamed from biarch-include.dpatch;
+    apply for all architectures.
+  * Do not build the java compiler in gcc-4.1 package, just include the
+    options and specs in the gcc driver.
+  * Remove gnat-4.0 as an alternative build dependency.
+  * Add a patch to enable -fstack-protector by default for C, C++, ObjC, ObjC++.
+    The patch is disabled by default.
+
+ -- Matthias Klose <doko at debian.org>  Sat, 15 Jul 2006 17:07:29 +0200
+
+gcc-4.1 (4.1.1-8) unstable; urgency=medium
+
+  * Update to SVN 20060708.
+    - Fix typo in gcov documentation. Closes: #375140.
+    - Fix typo in gccint documentation. Closes: #376412.
+    - [alpha], Fix -fvisibility-inlines-hidden segfaults on reference to
+      static method. PR target/27082. Closes: #369642.
+
+  * Fix ppc64 architecture string in debian/multiarch.inc. Closes: #374535.
+  * Fix conflict, replace and provide libssp0-dev for cross compilers.
+    Closes: #377012.
+  * Ignore compiler warnings when checking whether compiler driver understands
+    Ada fails. Closes: #376660.
+  * Backport fix for PR libmudflap/26864 from the trunk. Closes: #26864.
+  * README.C++: Remove non-existing URL. Closes: #347601.
+  * gij-4.1: Provide java2-runtime. Closes: #360906.
+
+  * Closed reports reported against gcc-3.0 and fixed in gcc-4.1:
+    - C++
+      + PR libstdc++/13943, call of overloaded `llabs(int)' is ambiguous.
+        Closes: #228645.
+    - Java
+      + Fixed segmentation fault on compiling bad program. Closes: #165635
+  * Closed reports reported against gcc-3.3 and fixed in gcc-4.1:
+    - Stack protector available. Closes: #213994, #233208.
+    - Better documentation of -finline-limit option. Closes: #296047.
+  * Closed reports reported against gcc-3.4 and fixed in gcc-4.1:
+    - General
+      + Fixed [unit-at-a-time] Using -O2 cannot detect missing return
+        statement in a function. Closes: #276843.
+    - C++
+      + PR13943, call of overloaded `llabs(int)' is ambiguous. Closes: #228645.
+      + PR c++/21280, #pragma interface, templates, and "inline function used
+        but never defined". Closes: #364412.
+    - Architecture specific:
+      - m68k
+        + Segfault building glibc. Closes: #353618.
+        + ICE when trying to build boost. Closes: #321486.
+  * Closed reports reported against gcc-4.0 and fixed in gcc-4.1:
+    - General
+      + Handling of #pragma GCC visibility for builtin functions.
+        Closes: #330279.
+      + gettext interpretation the two conditional strings as one.
+        Closes: #227193.
+      + ICE due to if-conversion. Closes: #335078.
+      + Fix unaligned accesses with __attribute__(packed) and memcpy.
+        Closes: #355297.
+      + Fix ICE in expand_expr_real_1, at expr.c. Closes: #369817.
+    - Ada
+      + Link error not finding -laddr2line. Closes: #322849.
+      + ICE on invalid code. Closes: #333564.
+    - C++
+      + libstdc++: bad thousand separator with fr_FR.UTF-8. Closes: #351786.
+      + The Compiler uses less memory than 4.0. Closes: #336225.
+      + Fix "fails to compare reverse map iterators". Closes: #362840.
+      + Fix "fail to generate code for base destructor defined inline with
+        pragma interface". Closes: #356435.
+      + Fix ICE in cp_expr_size, at cp/cp-objcp-common.c. Closes: #317455.
+      + Fix wrong warning: control may reach end of non-void function.
+        Closes: #319309.
+      + Fix bogus warning "statement has no effect" with template and
+        statement-expression. Closes: #336915.
+      + Fixed segfault on syntax error. Closes: #349087.
+      + Fix ICE with __builtin_constant_p in template argument.
+        Closes: #353366.
+      + Implement DR280 (fixing "no operator!= for const_reverse_iterator").
+        Closes: #244894.
+    - Fortran
+      + Fix wrong behaviour in unformatted writing. Closes: #369547.
+    - Java
+      + Fixed segfault on -fdump-tree-all-all. Closes: #344265.
+      + Fixed ant code completion in eclipse generating a nullpointer
+        exception. Closes: #337510.
+      + Fixed abort in gnu_java_awt_peer_gtk_GtkImage.c. Closes: #343112.
+      + Fixed assertion failure in gij with rhdb-explain. Closes: #335650.
+      + Fixed assertion failure when calling JTabbedPane.addTab(null, ...).
+        Closes: #314704.
+      + Fixed error when displaying empty window with bound larger than the
+        displayed content. Closes: #324502.
+      + Fixed: Exception in JComboBox.removeAllItems(). Closes: #314706.
+      + Fixed assertian error in gnu_java_awt_peer_gtk_GtkImage.c.
+        Closes: #333733.
+    - libmudflap
+      + PR libmudflap/23170, libmudflap should not use functions marked
+        obsolescent by POSIX/SUS. Closes: #320398.
+    - Architecture specific:
+      - m68k
+        + FTBFS building tin. Closes: #323016.
+        + ICE with -g -fomit-frame-pointer. Closes: #331150.
+        + ICE in instantiate_virtual_regs_lossage. Closes: #333536.
+        + Wrong code generation with loop unrolling. Closes: #342121.
+        + ICEs while building gst-ffmpeg. Closes: #343692.
+      - mips
+        + Fix gjdoc build failure. Closes: #344986.
+        + Fix link failure for static libs and object files when xgot
+          needs to be used. Closes: #274942.
+  * gnat bug reports fixed since gnat-3.15p:
+    - GNAT miscounts UTF8 characters in string with -gnaty. Closes: #66175.
+    - Bug box from "with Text_IO" when compiling optimized. Closes: #243795.
+    - Nonconforming parameter lists not detected. Closes: #243796.
+    - Illegal use clause not detected. Closes: #243797.
+    - Compiler enters infinite loop on illegal program with tagged records.
+      Closes: #243799.
+    - Compiler crashes on illegal program (missing discriminant, unconstrained
+      parent). Closes: #243800.
+    - Bug box at sinfo.adb:1215 on illegal program. Closes: #243801.
+    - Bug box at sinfo.adb:1651 on illegal program. Closes: #243802.
+    - Illegal program not detected (entry families). Closes: #243803.
+    - Illegal program not detected, RM 10.1.1(14). Closes: #243807.
+    - Bug box at exp_ch9.adb:7254 on illegal code. Closes: #243812.
+    - Illegal program not detected, RM 4.1.4(14). Closes: #243816.
+    - Bug box in Gigi, code=116, on legal program. Closes: #244225.
+    - Illegal program not detected, 12.7(10) (generic parameter is visible,
+      shouldn't be). Closes: #244483.
+    - Illegal program not detected, ambiguous aggregate. Closes: #244496.
+    - Bug box at sem_ch3.adb:8003. Closes: #244940.
+    - Bug box in Gigi, code=103, on illegal program. Closes: #244945.
+    - Legal program rejected, overloaded procedures. Closes: #246188.
+    - Bug box in Gigi, code=999, on legal program. Closes: #246388.
+    - Illegal program not detected, RM 10.1.6(3). Closes: #246389.
+    - Illegal program not detected, RM 3.10.2(24). Closes: #247014.
+    - Illegal program not detected, RM 3.9(17). Closes: #247015.
+    - Legal program rejected. Closes: #247016.
+    - Legal program rejected. Closes: #247021.
+    - Illegal program not detected, RM 4.7(3). Closes: #247022.
+    - Illegal program not detected, RM 3.10.2(27). Closes: #247562.
+    - Legal program rejected, "limited type has no stream attributes".
+      Closes: #247563.
+    - Wrong output from legal program. Closes: #247565.
+    - Compiler enters infinite loop on illegal program. Closes: #247567.
+    - Illegal program not detected, RM 8.6(31). Closes: #247568.
+    - Legal program rejected, visible declaration not seen. Closes: #247572.
+    - Illegal program not detected, RM 8.2(9). Closes: #247573.
+    - Wrong output from legal program, dereferencing access all T'Class.
+      Closes: #248171.
+    - Compiler crashes on illegal program, RM 5.2(6). Closes: #248174.
+    - Cannot find generic package body, RM 1.1.3(4). Closes: #248677.
+    - Illegal program not detected, RM 3.4.1(5). Closes: #248679.
+    - Compiler ignores legal override of abstract subprogram. Closes: #248686.
+    - Bug box, Assert_Failure at sinfo.adb:2365 on illegal program.
+      Closes: #251266.
+    - Ada.Numerics.Generic_Elementary_Functions.Log erroneout with -gnatN.
+      Closes: #263498.
+    - Bug box, Assert_Failure at atree.adb:2906 or Gigi abort, code=102
+      with -gnat -gnatc. Closes: #267788.
+    - Bug box in Gigi, code=116, 'Unrestricted_Access of a protected
+      subprogram. Closes: #269775.
+    - Stack overflow on illegal program, AI-306. Closes: #276225.
+    - Illegal program not detected, RM B.1(24). Closes: #276226.
+    - Wrong code generated with -O -fPIC. Closes: #306833.
+    - Obsolete: bashism's in debian/rules file. Closes: #370681.
+    - Supports more debian architectures. Closes: #171477.
+
+ -- Matthias Klose <doko at debian.org>  Sat,  8 Jul 2006 16:24:47 +0200
+
+gcc-4.1 (4.1.1-7) unstable; urgency=low
+
+  * Prefer gnat-4.1 over gnat-4.0 as a build dependency.
+  * libssp0: Set priority to standard.
+
+ -- Matthias Klose <doko at debian.org>  Sun,  2 Jul 2006 10:22:50 +0000
+
+gcc-4.1 (4.1.1-6) unstable; urgency=low
+
+  [Ludovic Brenta]
+  * Do not provide the symbolic link /usr/bin/gnatgcc; this will now
+    be provided by package gnat from the source package gcc-defaults.
+  * debian/control.m4, debian/control (gnat): conflict with gnat (<< 4.1),
+    not all versions of gnat, since gcc-defaults will now provide gnat (= 4.1)
+    which depends on gnat-4.1.
+
+  [Matthias Klose]
+  * libjava: Change the default for enable_hash_synchronization_default
+    on PA-RISC. Tighten the libgcj7 shlibs version on hppa.
+  * Update to SVN 20060630.
+  * Apply proposed patch for PR 26991.
+  * Don't use the version for the libstdc++ shlibs dependency for the libgcj
+    shlibs dependency.
+  * Merge from Ubuntu edgy:
+    - Fix %g7 usage in TLS, add patch sparc-g7.dpatch, fixes glibc-2.4 build
+      failure on sparc (Fabio M. Di Nitto).
+    - Merge libssp0-dev into gcc-4.1 (-fstack-protector is a common option).
+    - Run the testsuite with -fstack-protector as well.
+
+  [Bastian Blank]
+  * Make it possible to overwrite arch per DEB_TARGET_ARCH and DEB_TARGET_GNU_TYPE.
+  * Disable biarch only on request for cross builds.
+  * Use correct source directory for tarballs.
+  * Produce correct multiarch.inc for source builds.
+
+ -- Matthias Klose <doko at debian.org>  Sat,  1 Jul 2006 01:49:55 +0200
+
+gcc-4.1 (4.1.1-5) unstable; urgency=low
+
+  * Fix build error running with dpkg-buildpackage -rsudo.
+
+ -- Matthias Klose <doko at debian.org>  Wed, 14 Jun 2006 01:54:13 +0200
+
+gcc-4.1 (4.1.1-4) unstable; urgency=low
+
+  * Really do not backout the fix for PR c++/26068.
+    Closes: #372152, #372559.
+  * Update fastjar version string to 4.1.
+  * Disable pascal again.
+
+ -- Matthias Klose <doko at debian.org>  Mon, 12 Jun 2006 20:29:57 +0200
+
+gcc-4.1 (4.1.1-3) unstable; urgency=low
+
+  * Update to SVN 20060608, do not revert the fix for PR c++/26068.
+    Closes: #372152, #372559.
+  * Fix build failures for Pascal, enable Pascal on all architectures.
+  * Fix another build failure on GNU/kFreeBSD (Aurelien Jarno).
+    Closes: #370661.
+  * Fix build fauilure in gcc/p with parallel make.
+  * Remove cross-configure patch (Kazuhiro Inaoka). Closes: #370649.
+  * Only build the gcc-4.1-source package, when building from the gcc-4.1
+    source.
+  * Fix upgrade problem from standalone gcj-4.1.
+  * Fix build error using bison-2.2, build-depend on bison (>= 2.3).
+    Closes: #372605.
+  * Backport PR libstdc++/25524 from the trunk, update the biarch-include
+    patch. mips triarch support can be added more easily.
+
+ -- Matthias Klose <doko at debian.org>  Mon, 12 Jun 2006 00:23:45 +0200
+
+gcc-4.1 (4.1.1-2) unstable; urgency=low
+
+  * Update to SVN 20060604.
+    - Fix PR c++/26757, C++ front-end producing two DECLs with the same UID.
+      Closes: #356569.
+    - Fix PR target/27158, ICE in extract_insn with -maltivec.
+      Closes: #362307.
+  * Revert PR c++/26068 to work around PR c++/27884 (Martin Michlmayr).
+    Closes: #370308.
+  * Mention Ada in copyright, update copyright file (Ludovic Brenta).
+    Closes: #366744.
+  * Fix kbsd-gnu-java.dpatch (Petr Salinger). Closes: #370320.
+  * Don't include version control files in gcc-4.1-source.
+
+ -- Matthias Klose <doko at debian.org>  Sun,  4 Jun 2006 19:13:37 +0000
+
+gcc-4.1 (4.1.1-1) unstable; urgency=low
+
+  [Matthias Klose]
+  * Update to SVN 20060601.
+  * Reenable the gpc build.
+  * PR libgcj/26483, libffi patch for IA-64 denorms, taken from trunk.
+  * Disable Ada for m32r targets. Closes: #367595.
+  * lib32gfortran1: Do not create empty directory /usr/lib32. Closes: #367999.
+  * gcc-4.1: Add a conflict to the gcj-4.1 version with a different
+    gcc_libdir.
+  * Build gij/gcj for GNU/k*BSD. Closes: #367166.
+  * Update hurd-changes patch (Michael Banck). Closes: #369690.
+  * debian/copyright: Add exception for the gpc runtime library.
+  * Update gpc/gpc-doc package descriptions.
+
+  [Ludovic Brenta]
+  * patches/ada-libgnatprj.dpatch: add prj-pars.ad[bs] and sfn_scan.ad[bs]
+    to libgnatprj; remove them from gnatmake.
+
+ -- Matthias Klose <doko at debian.org>  Thu,  1 Jun 2006 20:35:54 +0200
+
+gcc-4.1 (4.1.0-4) unstable; urgency=low
+
+  [Ludovic Brenta]
+  * Fix a stupid bug whereby fname.ad{b,s} would be included in both
+    libgnatvsn-dev and libgnatprj-dev, preventing use of gnatprj.gpr.
+    Closes: #366733.
+
+ -- Matthias Klose <doko at debian.org>  Thu, 11 May 2006 04:34:50 +0200
+
+gcc-4.1 (4.1.0-3) unstable; urgency=low
+
+  * Update to SVN 20060507.
+  * debian/rules.d/binary-java.mk: Use $(lib32) everywhere. Closes: #365388.
+  * Always configure hppa64-linux-gnu with
+    --includedir=/usr/hppa64-linux-gnu/include.
+  * Make libgnatvsn4.1 and libgnatprj4.1 priority optional. Closes: #365900.
+  * Call autoconf2.13 explicitely in the Ada patches, build-depend on
+    autoconf2.13. Closes: #365780.
+  * Fix libgnatprj-dev and libgnatvsn-dev dependencies on their shared
+    libraries.
+  * Deduce softfloat and vfp (ARM) configure options (Pjotr Kourzanov).
+  * Update proposed patch for PR26885 (May 2 version).
+  * Build the libxxstdc++-dbg packages, when not building the library pacakges.
+  * Do not include the _pic library in the libxxstdc++-dbg packages.
+
+ -- Matthias Klose <doko at debian.org>  Sun,  7 May 2006 15:29:53 +0200
+
+gcc-4.1 (4.1.0-2) unstable; urgency=medium
+
+  * Update to SVN 20060428.
+  * Apply proposed patches for PR26885.
+
+  * Keep libffi doc files in its own directory. Closes: #360466.
+  * Update ppc64 patches for 4.1 (Andreas Jochens). Closes: #360498.
+  * Fix PR tree-optimization/26763, wrong-code, taken from the 4.1 branch.
+    Closes: #356896. CVE-2006-1902.
+  * hppa-cbranch, hppa-cbranch2 patches: Fix for PR target/26743,
+    PR target/11254, PR target/10274, backport from trunk (Randolph Chung).
+  * Let libgccN provide -dcv1 when cross-compiling (Pjotr Kourzanov).
+    Closes: #363289.
+  * (Build-)depend on glibc-2.3.6-7. Closes: #360895, #361904.
+  * Fix a pedantic report about a package description. Add a hint that
+    we do not like bug reports with locales other than "C". Closes: #361409.
+  * Enable the libjava interpreter on mips/mipsel.
+  * gcc-4.1-source: Depend on gcc-4.1-base.
+  * gnat-4.1: Fix permissions of .ali files.
+  * Build lib32gcj7 on amd64.
+  * debian/patches/ada-gnatvsn.dpatch: New.  Apply proposed fix for
+    PR27194.
+
+  [Ludovic Brenta]
+  * debian/patches/ada-default-project-path.dpatch: new.  Change the
+    default search path for project files to the one specified
+    by the Debian Policy for Ada: /usr/share/ada/adainclude.
+  * debian/patches/ada-symbolic-tracebacks.dpatch: new.  Enable support for
+    symbolic tracebacks in exceptions.
+  * debian/patches/ada-missing-lib.dpatch: remove, superseded by the above.
+  * debian/patches/ada-link-lib.dpatch: changed.
+    - Instead of building libada as a target library only, build it as
+      both a host and, if different, target library.
+    - Build the GNAT tools in their top-level directory; do not use
+      recursive makefiles.
+    - Link the GNAT tools dynamically against libgnat.
+    - Apply proposed fix for PR27300.
+    - Rerun autoconf (Matthias Klose).
+  * debian/patches/ada-libgnatvsn.dpatch: new.
+    - Introduce a new shared library named libgnatvsn, containing
+      common components of GNAT under the GNAT-Modified GPL, for
+      use in GNAT tools, ASIS, GLADE and GPS.
+    - Link the gnat tools against this new library.
+    - Rerun autoconf (Matthias Klose).
+  * debian/patches/ada-libgnatprj.dpatch: new.
+    - Introduce a new shared library named libgnatprj, containing the
+      GNAT Project Manager, i.e. the parts of GNAT that parses project
+      files (*.gpr).  Licensed under pure GPL; for use in GLADE and GPS.
+    - Link the gnat tools against this new library.
+    - Rerun autoconf (Matthias Klose).
+  * debian/patches/ada-acats.dpatch: new.
+     - When running the ACATS, look for the gnat tools in their new
+       directory (build/gnattools), and for the shared libraries in
+       build/gcc/ada/rts, build/libgnatvsn and build/libgnatprj.
+  * debian/gnatvsn.gpr, debian/gnatprj.gpr: new.
+  * debian/rules.d/binary-ada.mk, debian/control.m4: new binary packages:
+    libgnatvsn-dev, libgnatvsn4.1, libgnatprj-dev, libgnatprj4.1. Place
+    the *.gpr files in their respective -dev packages.
+
+ -- Matthias Klose <doko at debian.org>  Sat, 29 Apr 2006 00:32:09 +0200
+
+gcc-4.1 (4.1.0-1) unstable; urgency=low
+
+  * libstdc++CXX-BV-dev.preinst: Remove (handling of c++ include dir for 4.0).
+  * libgcj-common: Move removal of docdir from preinst into postinst.
+  * libgcj7: Move removal of docdir from preinst into postinst.
+  * Drop alternative build dependency on gnat-3.4, not built anymore.
+  * Fix PR libgcj/26103, wrong exception thrown (4.1 branch).
+  * debian/patches/libjava-stacktrace.dpatch: Add support to print file names
+    and line numbers in stacktraces.
+  * Add debugging symbols for libgcjawt and lib-gnu-java-awt-peer-gtk
+    in the libgcj7-dbg and lib32gcj7-dbg packages.
+  * Remove dependency of the libgcj-dbg packages on the libgcj-dev packages,
+    add recommendations on binutils and libgcj-dev. Mention the requirement
+    of binutils for the stacktraces.
+  * Fix upgrade from version 4.0.2-9, loosing the Debian changelog.
+    Closes: #355439.
+  * gij/gcj: Install one alternative for each command, do not use slave
+    links for rmiregistry, javah, rmic. Ubuntu #26781. Closes: #342557.
+  * Fix for PR tree-optimization/26587, taken from the 4.1 branch.
+  * Fix PR libstdc++/26526 (link failure when _GLIBCXX_DEBUG is defined).
+  * Configure with --enable-clocale=gnu, even if not building C++ packages.
+  * Remove runtime path from biarch libraries as well.
+  * PR middle-end/26557 (ice-on-vaild-code, regression), taken from
+    the gcc-4_1-branch. Closes: #349083.
+  * PR tree-optimization/26672 (ice-on-vaild-code, regression), taken from
+    the gcc-4_1-branch. Closes: #356231.
+  * PR middle-end/26004 (rejects-vaild-code, regression), taken from
+    the gcc-4_1-branch.
+  * When building as standalone gcj, build libgcc4 (hppa only) and fastjar.
+  * Configure --with-cpu=v8 on sparc.
+  * debian/patches/libjava-hppa.dpatch: pa/pa32-linux.h
+    (CRT_CALL_STATIC_FUNCTION): Define when CRTSTUFFS_O is defined.
+    (John David Anglin). Closes: #353346.
+  * Point to the 4.1 version of README.Bugs (closes: #356230).
+  * Disable the libmudflap testsuite on alpha (getting killed).
+
+ -- Matthias Klose <doko at debian.org>  Sat, 18 Mar 2006 23:00:39 +0100
+
+gcc-4.1 (4.1.0-0) experimental; urgency=low
+
+  * GCC 4.1.0 final release.
+  * Build the packages for the Java language from a separate source.
+  * Update NEWS.html, NEWS.gcc.
+  * libgcj-doc: Auto generated API documentation for libgcj7, classpath
+    example programs.
+  * Add gjdoc to Build-Depends-Indep.
+  * On amd64, build-depend on libc6-dev-i386 instead of ia32-libs-dev.
+  * Internal ssp headers now installed in the gcc libdir.
+  * Do not build gcj-4.1-base when building the gcc-4.1 packages.
+  * When building as gcj-4.1, use the tarball from the gcc-4.1-source
+    package.
+
+  [Ludovic Brenta]
+  * Allow one to enable and disable NLS and bootstrapping from the environment.
+    - Adding "nls" to WITHOUT_LANG disables NLS support.
+    - If WITH_BOOTSTRAP is set, debian/rules2 calls configure
+      --enable-bootstrap=$(WITH_BOOTSTRAP) and just "make".  If
+      WITH_BOOTSTRAP is unset, it calls configure without a bootstrapping
+      option and calls "make profiledbootstrap" or "make bootstrap-lean"
+      depending on the target CPU.
+      Currently overwritten to default to "bootstrap".
+
+ -- Matthias Klose <doko at debian.org>  Thu,  2 Mar 2006 00:03:45 +0100
+
+gcc-4.1 (4.1ds9-0exp9) experimental; urgency=low
+
+  * Update to GCC 4.1.0 release candidate 1 (gcc-4.1.0-20060219 tarball).
+  * Update gcc-version patch for gcc-4.1.
+  * libgccN, libstdc++N*: Fix upgrade of /usr/share/doc symlinks.
+  * libjava awt & swing update, taken from trunk 2006-02-16.
+  * libgcj7-dev: Suggest libgcj-doc, built from a separate source package.
+  * Shorten build-dependency line (work around buildd problems
+    on arm* and mips*).
+  * New patch gcc-ice-hack (saving the preprocessed source on an ICE),
+    taken from Fedora.
+
+ -- Matthias Klose <doko at debian.org>  Mon, 20 Feb 2006 10:07:23 +0100
+
+gcc-4.1 (4.1ds8-0exp8) experimental; urgency=low
+
+  * Update to SVN 20060212, taken from the 4.1 release branch.
+  * libgccN: Fix upgrade of /usr/share/doc/libgccN symlink.
+
+ -- Matthias Klose <doko at debian.org>  Sun, 12 Feb 2006 19:48:31 +0000
+
+gcc-4.1 (4.1ds7-0exp7) experimental; urgency=low
+
+  * Update to SVN 20060127, taken from the 4.1 release branch.
+    - On hppa, bump the libgcc soversion to 4.
+  * Add an option not to depend on the system -base package for cross compiler
+    (Ian Wienand). Closes: #347484.
+  * Remove workaround increasing the stack size limit for some architectures,
+    not needed anymore on ia64.
+  * On amd64, build-depend on libc6-dev-i386, depend on libc6-i386, where
+    available.
+  * libstdc++6: Properly upgrade the doc directory. Closes: #346171.
+  * libstdc++6: Add a conflict to scim (<< 1.4.2-1). Closes: #343313.
+  * Set default 32bit ix86 architecture to i486.
+
+ -- Matthias Klose <doko at debian.org>  Fri, 27 Jan 2006 22:23:22 +0100
+
+gcc-4.1 (4.1ds6-0ubuntu6) experimental; urgency=low
+
+  * Update to SVN 20060107, taken from the 4.1 release branch.
+    - Remove fix for PR ada/22533, fixed by patch for PR c++/23171.
+  * Remove binary packages from the control file, which aren't built
+    yet on any architecture.
+  * gcc-hppa64: Use /usr/hppa64-linux-gnu/include as location for the glibc
+    headers, tighten glibc (build-)dependency.
+  * libffi [arm]: Add support for closures, libjava [arm]: enable the gij
+    interpreter (Phil Blundell). Addresses: #337263.
+  * For the gcj standalone build, include cc1 into the gcj-4.1 package,
+    needed for linking java programs compiled to native code.
+
+ -- Matthias Klose <doko at debian.org>  Sat,  7 Jan 2006 03:36:33 +0100
+
+gcc-4.1 (4.1ds4-0exp4) experimental; urgency=low
+
+  * Update to SVN 20051210, taken from the 4.1 release branch.
+  * Prepare to build the java packages from it's own source (merged
+    from Ubuntu).
+    - Build the java packages from the gcc-4.1 source, as long as packages
+      are prepared for experimental.
+    - When built as gcj, run only the libjava testsuite, don't build the
+      libstdc++ debug packages, don't package the gcc source.
+    - Loosen package dependencies, when java packages are built from
+      separate sources.
+    - Fix gcj hppa build, when java packages are built from separate sources.
+    - gij-4.1: Install test-summary, when doing separate builds.
+    - Allow java packages be installed independent from other packages built
+      from the source package.
+    - Rename libgcj7-common to libgcj7-jar.
+    - Introduce a gcj-4.1-base package to completely separate the two and not
+      duplicate the changelog in each gcj/gij package.
+  * Java related changes:
+    - libjava-xml-transform: Update from classpath trunk, needed for
+      eclipse (Michael Koch), applied upstream.
+    - Fix java wrapper scripts to point to 4.1 (closes: #341710).
+    - Reenable java on mips and mipsel.
+    - Fix libgcj6 dependency. Ubuntu #19935.
+    - Add libxt-dev as a java build dependency. autoconf explicitely checks
+      for X11/Intrinsic.h.
+  * Ada related changes:
+    - Apply proposed fix for PR ada/22533, reenable ada on alpha, powerpc,
+      mips, mipsel and s390.
+    - Add Ada support for GNU/kFreeBSD (Aurelien Jarno). Closes: #341356.
+    - Remove ada bootstrap workaround for alpha.
+  * Build a separate gcc-4.1-source package (Bastian Blank). Closes: #333922.
+  * Remove obsolete patch: libstdc++-automake.
+  * Remove patch integrated upstream: libffi-mips.
+  * Fix the installation of the hppa64 compiler in snapshot builds.
+  * Rename libgfortran0* to libgfortran1* (upstream soversion change).
+  * Add a dependency on libc-dev for all compilers / -dev packages except
+    gcc (which can be used for kernel builds without libc-dev).
+  * libffi4-dev: Fix package description.
+  * On amd64, install 32bit libraries into /emul/ia32-linux/usr/lib.
+    Addresses: #341147.
+  * Fix installation of biarch libstdc++ headers on amd64.
+  * Configure --with-tune=i686 on ix86 architectures (on Ubuntu with
+    -mtune=pentium4). Remove the cpu-default-* patches.
+  * debian/control.m4: Fix libxxgcc package names.
+  * Update the build infrastructure to build cross compilers
+    (Nikita V. Youshchenko).
+  * Tighten binutils (build-)dependency. Closes: #342484.
+  * Symlink more doc directories.
+  * debian/control.m4: Explicitely set Architecture for biarch packages.
+
+ -- Matthias Klose <doko at debian.org>  Sat, 10 Dec 2005 16:56:45 +0100
+
+gcc-4.1 (4.1ds1-0ubuntu1) UNRELEASED; urgency=low
+
+  * Build Java packages only.
+  * Update to SVN 20051121, taken from the 4.1 release branch.
+    - Remove libjava-saxdriver-fix patch, applied upstream.
+    - Remove ada-gnat-version patch, applied upstream.
+  * Fix FTBFS in biarch builds on 32bit kernels.
+  * Update libstdc++-doc doc-base file (closes: #339046).
+  * Remove obsolete patch: gcc-alpha-ada_fix.
+  * Fix installation of biarch libstdc++ headers (Ubuntu #19655).
+  * Fix sparc and s390 biarch patches to build the 64bit libffi.
+  * Work around biarch build failure in libjava/classpath/native/jni/midi-alsa.
+  * Install spe.h header on powerpc.
+  * Add libasound build dependencies.
+  * libgcj: Fix installation of libgjsmalsa library.
+  * Remove patches not used anymore: libjava-no-rpath, i386-config-ml-nomf,
+    libobjc, multiarch-include, disable-biarch-check-mf, gpc-profiled,
+    gpc-no-gpidump, libgpc-shared, acats-expect.
+  * Fix references to manuals in gnat(1). Ubuntu #19772.
+  * Remove build dependency on xlibs-dev, add libxtst-dev.
+  * Do not configure with --disable-werror.
+  * Merge *-config-ml patches into one config-ml patch, configure the biarch
+    libs in debian/rules.defs.
+  * debian/gcj-wrapper: Accept -Xss.
+  * Do not build biarch java on Debian (missing biarch libasound).
+  * Do not build the java packages from this source package, avoiding
+    dependencies on X.
+
+ -- Matthias Klose <doko at ubuntu.com>  Mon, 21 Nov 2005 20:29:43 +0100
+
+gcc-4.1 (4.1ds0-0exp0) experimental; urgency=low
+
+  * Configure libstdc++ using the default allocator.
+  * Update to 20051112, taken from the svn trunk.
+
+ -- Matthias Klose <doko at debian.org>  Sat, 12 Nov 2005 23:47:01 +0100
+
+gcc-4.1 (4.1ds0-0ubuntu0) breezy; urgency=low
+
+  * UNRELEASED
+  * First snapshot of gcc-4.1 (CVS 20051019).
+    - adds SSP support (closes: #213994, #233208).
+  * Remove patches applied upstream/not needed anymore.
+  * Update patches for 4.1: link-libs, gcc-textdomain, libjava-dlsearch-path,
+    rename-info-files, reporting, classmap-path, i386-biarch, sparc-biarch,
+    libjava-biarch-awt, ada-gcc-name.
+  * Disable patches:
+    - 323016, m68k, necessary for 4.1?
+  * debian/copyright: Update for 4.1.
+  * debian/control, debian/control.m4, debian/rules.defs, debian/rules.conf:
+    Update for 4.1, add support for Obj-C++ and SSP.
+  * Fix generation of Ada docs in info format.
+  * Set Ada library version to 4.1.
+  * Drop gnat-3.3 as an alternative build dependency.
+  * Use fortran instead of f95 for the build files.
+  * Update build support for awt peer libs.
+  * Add packaging support for SSP library.
+  * Add packaging support for Obj-C++.
+  * Run the testsuite for -march=i686 on i386 and amd64 as well.
+  * Fix generation of Pascal docs in html format.
+  * Update config-ml patches to build libssp biarch.
+  * Disable libssp for hppa64 build.
+  * libgcj7-dev: Install jni_md.h.
+  * Disable gnat for powerpc, currently fails to build.
+  * Add biarch runtime lib packages for ssp, mudflap, ffi.
+  * Do not explicitely configure with --enable-java-gc=boehm, which is the
+    default.
+  * libjava-saxdriver-fix: Fix a problem in the Aelfred2 SAX parser.
+  * libstdc++6-4.0-dev: Depend on the libc-dev package. Ubuntu #18885.
+  * Build-depend on expect-tcl8.3 on all architectures.
+  * Build-depend on lib32z1-dev on amd64 and ppc64, drop build dependency on
+    amd64-libs.
+  * Disable ada on alpha mips mipsel powerpc s390, currently broken.
+
+ -- Matthias Klose <doko at ubuntu.com>  Wed, 19 Oct 2005 11:02:31 +0200
+
+gcc-4.0 (4.0.2-3) unstable; urgency=low
+
+  * Update to CVS 20051015, taken from the gcc-4_0-branch.
+    - gcc man page fixes (closes: #327254, #330099).
+    - PR java/19870, PR java/20338, PR java/21844, PR java/21540:
+      Remove Debian patches.
+    - Applied libjava-echo-fix patch.
+    - Fix PR target/24284, ICE (Segmentation fault) on sparc-linux.
+      Closes: #329840.
+    - Fix PR c++/23797, ICE on typename outside template. Closes: #325545.
+    - Fix PR c++/22551, ICE in tree_low_cst. Closes: #318932.
+  * libstdc++6: Tighten libstdc++ shlibs version to 4.0.2-3 (new symbol).
+  * Update generated Ada files.
+  * Fix logic to disable mudflap and Obj-C++ via the environment.
+  * Remove f77 build bits.
+  * gij-4.0: Remove /var/lib/gcj-4.0/classmap.db on purge (closes: #330800).
+  * Let gcj-4.0 depend on libgcj6-dev, instead of recommending it. This is
+    not necessary for byte-code compilations, but for compilations to native
+    code. For compilations to byte-code, use a better compiler like ecj
+    for now (found in the ecj-bootstrap package).
+  * Disable biarch setup in cross compilers (Josh Triplett). Closes: #333952.
+  * Fix with_libnof logic for cross-compilations (Josh Triplett).
+    Closes: #333951.
+  * Depend on binutils (>= 2.16.1cvs20050902-1) on the alpha architecture.
+    Closes: #333954.
+  * On i386, build-depend on libc6-dev-amd64. Closes: #329108.
+  * (Build-)depend on glibc 2.3.5-5.
+
+ -- Matthias Klose <doko at debian.org>  Sun,  2 Oct 2005 14:25:54 +0200
+
+gcc-4.0 (4.0.2-2) unstable; urgency=low
+
+  * Update to CVS 20051001, taken from the gcc-4_0-branch. Includes the
+    changes between 4.0.2 RC3 and the final 4.0.2 release, missing from
+    the upstream tarball. Remove patches applied upstream (gcc-c-decl,
+    pr23182, pr23043, pr23367, pr23891, pr21418, pr24018).
+  * On ix86 architectures run the testsuite for -march=i686 as well.
+  * Build libffi on the Hurd (closes: #328705).
+  * Add big-endian arm (armeb) support (Lennert Buytenhek). Closes: #330730.
+  * Update libjava xml to classpath CVS HEAD 20050930 (Michael Koch).
+  * Reapply patch to make -mieee the default on alpha-linux. Closes: #330826.
+  * Add workaround not to make libmudflap _start/_end not small data on
+    mips/mipsel, taken from CVS HEAD.
+  * Don't build the nof libraries on powerpc.
+  * Number crunching time on m68k, reenable gfortran on m68k-linux-gnu.
+
+ -- Matthias Klose <doko at debian.org>  Sat,  1 Oct 2005 15:42:10 +0200
+
+gcc-4.0 (4.0.2-1) unstable; urgency=low
+
+  * GCC 4.0.2 release.
+  * lib64stdc++6: Set priority to optional.
+  * Fix bug in StreamSerializer, seen with eclipse-3.1 (Ubuntu 12744).
+    Backport from CVS HEAD, Michael Koch.
+  * Apply java patches, proposed for the 4.0 branch: PR java/24018,
+    PR libgcj/23182, PR java/19870, PR java/21844, PR libgcj/23367,
+    PR java/20338.
+  * Update the expect/pty test to actually call expect directly, rather
+    than test for the existence of PTYs, since a working expect is what
+    we really care about, not random device files (Adam Conrad).
+    Closes: #329715.
+  * Add build dependencies on lib64z1-dev.
+  * gcc-c-decl.dpatch: Fix C global decl handling regression in 4.0.2 from
+    4.0.1
+
+ -- Matthias Klose <doko at debian.org>  Thu, 29 Sep 2005 19:50:08 +0200
+
+gcc-4.0 (4.0.1-9) unstable; urgency=low
+
+  * Update to CVS 20050922, taken from the gcc-4_0-branch (4.0.2 RC3).
+  * Apply patches:
+    - Fix PR java/21418: Order of source files matters when compiling,
+      backported from mainline.
+    - Fix for PR 23043, backported form mainline.
+    - Proposed patch for #323016 (m68k only). Patch by Roman Zippel.
+  * libstdc++6: Tighten libstdc++ shlibs version to 4.0.1-9 (new symbol).
+  * Fail the build early, if the system doesn't have any pty devices
+    created in /dev. Needed for running the testsuite.
+  * Update hurd changes again (closes: #328973).
+
+ -- Matthias Klose <doko at debian.org>  Thu, 22 Sep 2005 07:28:18 +0200
+
+gcc-4.0 (4.0.1-8) unstable; urgency=medium
+
+  * Update to CVS 20050917, taken from the gcc-4_0-branch.
+    - Fix FTBFS for boost, introduced in 4.0.1-7 (closes: #328684).
+  * Fix PR java/23891, eclipse bootstrap.
+  * Set priority of gcc-4.0-hppa64 package to standard.
+  * Bump standards version to 3.6.2.
+  * Fix java wrapper script, mishandles command line options with arguments.
+    Patch from Olly Betts. Closes: #296456.
+  * Bump epoch of the lib32gcc1 package to the same epoch as for the the
+    libgcc1 and lib64gcc1 packages.
+  * Fix some lintian warnings.
+  * Build libffi on the Hurd (closes: #328705).
+  * For biarch builds, disable the testsuite for the non-default architecture
+    for runtime libraries, which are not built by default (libjava).
+  * Add gsfonts-x11 to Build-Depends-Indep to avoid warnings from doxygen.
+  * Install Ada .ali files read-only.
+
+ -- Matthias Klose <doko at debian.org>  Sat, 17 Sep 2005 10:35:23 +0200
+
+gcc-4.0 (4.0.1-7) unstable; urgency=low
+
+  * Update to CVS 20050913, taken from the gcc-4_0-branch.
+    - Fix PR c++/19004, ICE in uses_template_parms (closes: #284777).
+    - Fix PR rtl-optimization/23454, ICE in invert_exp_1 on sparc.
+      Closes: #321215.
+    - Fix PR libstdc++/23417, make bits/stl_{list,tree}.h -Weffc++ clean.
+      Closes: ##322170.
+  * Install 'altivec.h' on ppc64 (closes: #323945).
+  * Install locale data with the versioned package name (closes: #321591).
+  * Fix fastjar build without building libjava.
+  * On hppa, don't build using gcc-3.3 when ada is disabled.
+  * On m68k, don't build the stage1 compiler using -O.
+
+  * Ludovic Brenta <ludovic at ludovic-brenta.org>
+    - Allow the choice whether or not to build with NLS.
+    - Fix a typo whereby libffi was always enabled on i386.
+
+ -- Matthias Klose <doko at debian.org>  Tue, 13 Sep 2005 23:23:11 +0200
+
+gcc-4.0 (4.0.1-6) unstable; urgency=low
+
+  * Update to CVS 20050821, taken from the gcc-4_0-branch.
+    - debian/patches/pr21562.dpatch: Removed, applied upstream.
+    - debian/patches/libjava-awt-name.dpatch: Updated.
+    - debian/patches/classpath-20050618.dpatch: Updated.
+  * Use all available CPU's for the check target, unless USE_NJOBS == no.
+  * debian/patches/biarch-include.dpatch: Include
+    /usr/local/include/<arch>-linux-gnu before including /usr/local/include.
+  * Fix biarch system include directories for the non-default architecture.
+  * Prefer gnat-4.0 over gnat-3.4 over gnat-3.3 as a build-dependency.
+
+ -- Matthias Klose <doko at debian.org>  Thu, 18 Aug 2005 18:36:23 +0200
+
+gcc-4.0 (4.0.1-5) unstable; urgency=low
+
+  * Update to CVS 20050816, taken from the gcc-4_0-branch.
+    - Fix PR middle-end/23369, wrong code generation for funcptr comparison
+      on hppa. Closes: #321785.
+    - Fix PR fortran/23368 ICE with NAG routines (closes: #322912).
+  * Build-depend on libcairo2-dev (they say, that's the final package name ...)
+  * libgcj: Search /usr/lib/gcj-4.0 for dlopened libraries, place a copy
+    of the .la files in the libgcj6 package into this directory.
+    Closes: #322576.
+  * Tighten the dependencies between the compiler packages to the same
+    version and release. Use some substitution variables for control file
+    generation.
+  * Remove build dependencies for gpc.
+  * Don't use '/emul/ia32-linux' on ppc64 (closes: #322890).
+  * Synchronize with Ubuntu.
+
+ -- Matthias Klose <doko at debian.org>  Tue, 16 Aug 2005 22:45:47 +0200
+
+gcc-4.0 (4.0.1-4ubuntu1) breezy; urgency=low
+
+  * Jeff Bailey <jbailey at ubuntu.com>
+
+    Enable i386 biarch using biarch glibc (not yet enabled for unstable).
+    - debian/rules.d/binary-libgcc.mk: Make i386 lib64gcc1 depend on
+      libc6-amd64
+    - debian/control.m4: Suggest libc6-amd64 rather than amd64-libs.
+    - debian/rules.conf: Build-Dep on libc6-dev-amd64 [i386]
+      Build-Dep on binutils >= 2.16.1-2ubuntu3
+    - debian/rules2: Enable biarch build in Ubuntu.
+
+  * Matthias Klose <doko at ubuntu.com>
+
+    - Add shlibs file and dependency information for the lib32gcc1 package.
+    - debian/patches/gcc-textdomain.dpatch: Update (closes: #321591).
+    - Set priority of gcc-4.0-base and libstdc++6 packages to `required'.
+      Closes: #321016.
+    - libffi-hppa.dpatch: Remove, applied upstream.
+
+ -- Matthias Klose <doko at debian.org>  Mon,  8 Aug 2005 19:39:02 +0200
+
+gcc-4.0 (4.0.1-4) unstable; urgency=low
+
+  * Enable the biarch compiler for powerpc (closes: #268023).
+  * Update to CVS 20050806, taken from the gcc-4_0-branch.
+  * Build depend on libcairo0.6.0-dev (closes: #321540).
+  * Fix Ada build on the hurd (closes: #321350).
+  * Update libffi for mips (Thiemo Seufer). Closes: #321100.
+  * Fix segfault on 64bit archs in the AWT Gtk peer library (Dan Frazier).
+    Closes: #320915.
+  * Add libXXgcc1 build dependencies for biarch builds.
+
+ -- Matthias Klose <doko at debian.org>  Sun,  7 Aug 2005 07:01:59 +0000
+
+gcc-4.0 (4.0.1-3) unstable; urgency=medium
+
+  * Update to CVS 20050725, taken from the gcc-4_0-branch.
+    - Fix ICE with -O and -mno-ieee-fp/-ffast-math (closes: #319087).
+  * Synchronize with Ubuntu.
+  * Fix applying hurd specific patches for the hurd build (closes: #318443).
+  * Do not build-depend on libmpfr-dev on architectures, where fortran
+    is not built.
+  * Apply biarch include patch on ppc64 as well (closes: #318603).
+  * Correct libstdc++-dev package description (closes: #319082).
+  * debian/rules.defs: Replace DEB_TARGET_GNU_CPU with DEB_TARGET_ARCH_CPU.
+  * gcc-4.0-hppa64: Rename hppa64-linux-gcc to hppa64-linux-gnu-gcc.
+    Closes: #319818.
+
+ -- Matthias Klose <doko at debian.org>  Mon, 25 Jul 2005 10:43:06 +0200
+
+gcc-4.0 (4.0.1-2ubuntu3) breezy; urgency=low
+
+  * Update to CVS 20050720, taken from the gcc-4_0-branch.
+    - Fix PR22278, volatile issues, seen when building xorg.
+  * Build against new libcairo1-dev (0.5.2).
+
+ -- Matthias Klose <doko at debian.org>  Wed, 20 Jul 2005 12:29:50 +0200
+
+gcc-4.0 (4.0.1-2ubuntu2) breezy; urgency=low
+
+  * Acknowledge that i386 biarch builds still need to be fixed for glibc-2.3.5.
+
+ -- Matthias Klose <doko at ubuntu.com>  Tue, 19 Jul 2005 08:29:30 +0000
+
+gcc-4.0 (4.0.1-2ubuntu1) breezy; urgency=low
+
+  * Synchronize with Debian.
+  * Update to CVS 20050718, taken from the gcc-4_0-branch.
+    - Fix PR c++/22132 (closes: #318488), upcasting a const class pointer
+      to struct the class derives from generates wrong code.
+  * Build biarch runtime libraries for Fortran and ObjC.
+  * Apply proposed patch for PR22309 (crash with mt_allocator if libstdc++
+    is dlclosed). Closes: #293466.
+
+ -- Matthias Klose <doko at ubuntu.com>  Mon, 18 Jul 2005 17:10:18 +0200
+
+gcc-4.0 (4.0.1-2) unstable; urgency=low
+
+  * Don't apply the patch to make -mieee the default on alpha-linux-gnu.
+    Causes the bootstrap to fail on alpha-linux-gnu.
+
+ -- Matthias Klose <doko at debian.org>  Tue, 12 Jul 2005 00:14:12 +0200
+
+gcc-4.0 (4.0.1-1) unstable; urgency=high
+
+  * GCC 4.0.1 final release.  See /usr/share/doc/gcc-4.0/NEWS.{gcc,html}.
+  * Build fastjar on mips/mipsel, fix fastjar build without building java.
+  * Disable the comparision check on unstable/ia64. adaint.o differs,
+    currently cannot be reproduced with glibc-2.3.5 and binutils-2.16.1.
+  * libffi/hppa: Fix handling of 3 and 5-7 byte struct returns.
+  * amd64: Fix libgcc symlinks to point to /usr/lib32, instead of /lib32.
+  * On powerpc, don't build with -j >1, apparently doesn't succeeds
+    on the Debian buildd.
+  * Apply revised patch to make -mieee the default on alpha-linux,
+    and add -mieee-disable switch to turn the default off (Tyson Whitehead).
+  * Disable multiarch-includes; redo biarch-includes to include the paths
+    for the non-default biarch, when called with -m32/-m64.
+  * Move new java headers from libstdc++-dev to libgcj-dev, add replaces
+    line.
+  * Update classpath patch to work with cairo-0.5.1. Patch provided by
+    Michael Koch.
+  * Further classpath updates for gnu.xml and javax.swing.text.html.
+    Patch provided by Michael Koch.
+  * Require binutils (>= 2.16.1) as a build dependency and a dependency.
+  * On i386, require amd64-libs-dev (>= 1.2).
+  * Update debian/NEWS.{html,gcc}.
+
+  * Closing bug reports reported against older gcc versions (some of them
+    still present in Debian, but not anymore as the default compiler).
+    Usually, forwarded bug reports are linked to
+        http://gcc.gnu.org/PR<upstream bug number>
+    The upstream bug number usually can be found in the Debian reports.
+
+  * Closed reports reported against gcc-3.3 and fixed in gcc-3.4:
+    - General:
+      + PR rtl-optimization/2960: Duplicate loop conditions even with -Os
+        Closes: #94701.
+      + PR optimization/3995: i386 optimisation: joining tests.
+        Closes: #105309.
+      + PR rtl-optimization/11635: Unnecessary store onto stack, more
+        curefully expand union cast (closes: #202016).
+      + PR target/7618: vararg disallowed in virtual function. Closes: #205404.
+      + Large array problem on 64 bit platforms (closes: #209152).
+      + Mark more strings as translatable (closes: #227129).
+      + PR gcc/14711: ICE when compiling a huge source file Closes: #234711.
+      + Better code generation for if(!p) return NULL;return p;
+        Closes: #242318.
+      + PR rtl-optimization/16152: Perl ftbfs on {ia64,arm,m68k}-linux.
+        Closes: #255801.
+      + ICE (segfault) while compiling Linux 2.6.9 (closes: #277206).
+      + Link error building memtest (closes: #281445).
+    - Ada:
+      + PR ada/12450: Constraint error for valid input (closes: #210844).
+      + PR ada/13620: miscompilation of array initializer with
+        -O3 -fprofile-arcs. Closes: #226244.
+    - C:
+      + PR c/6897: Code produced with -fPIC reserves EBX, but compiles
+        bad __asm__ anyway (closes: #73065).
+      + PR c/9209: On i386, gcc-3.0 allows $ in indentifiers but not the asm.
+        Closes: #121282.
+      + PR c/11943: Accepts invalid declaration "int x[2, 3];" in C99 mode.
+        Closes: #177303.
+      + PR c/11942: restrict keyword broken in C99 mode. Closes: #187091.
+      + PR other/11370: -Wunreachable-code gives false complaints.
+        Closes: #196600.
+      + PR c/11369: Too relaxed checking with -Wstrict-prototypes.
+        Closes: #197504.
+      + PR c/11445: False positive warning with -Wunreachable-code.
+        Closes: #200140.
+      + PR c/11459: -stdc=c90 -pedantic warns about C90's non long-long
+         support when in C99 mode. Closes: #200392.
+      + PR c/456: Handling of constant expressions. Closes: #225935.
+      + ICE on invalid #define with -traditional (closes: #242916).
+      + No warning when initializing a variable with itself, new option
+        -Winit-self (closes: #293957).
+    - C++:
+      + C++ parse error (closes: #42946).
+      + PR libstdc++/9073: Replacement for __STL_ASSERTIONS (libstdc++v3
+        debug mode). Closes: #128993.
+      + Parse errors in nested constructor calls (closes: #138561).
+      + PR optimization/1823: -ftrapv aborts with pointer difference due to
+        division optimization. Closes: #169862.
+      + ICE on invalid code (closes: #176101).
+      + PR c++/10199: ICE handling method parametrized by template.
+        Closes: #185604.
+      + High memory usage building packages OpenOffice.org and MythTV.
+        Closes: #194345, #194513.
+      + Improved documentation of std::lower_bound (closes: #196380).
+      + ICE in regenerate_decl_from_template (closes: #197674).
+      + PR c++/11444: Function fails to propagate up class tree
+        (template-related).  Closes: #198042.
+      + ICE when using namespaced typedef of primitive type as struct.
+        Closes: #198261.
+      + Bug using streambuf / iostream to read from a named pipe.
+        Closes: #216105.
+      + PR c++/11437: ICE in lookup_name_real (closes: #200011).
+      + Add large file support (LFS) in libstdc++ (closes: #220000).
+      + PR c++/13621: ICE compiling a statement expression returning type
+        string (closes: #224413).
+      + g++ doesn't find inherited inner class after template instantiation.
+        Closes: #227518.
+      + PR libstdc++/13928: Add whatis info in man pages generated by doxygen.
+        Closes: #229642.
+      + Missing symbol _M_setstate in libstdc++ (closes: #232709).
+      + Unable to parse declaration of inline constructor explicit
+        specialization (closes: #234709).
+      + ICE (segfault) on invalid C++ code (closes: #246031).
+      + ICE in lookup_tempate_function (closes: #262441).
+      + Undefined symbols in libstdc++, when using specials char_traits.
+        Closes: #266110.
+      + PR libstdc++/16011: Outputting numbers with ostream in the locale fr_BE
+        causes infinite recursion (closes: #270795).
+      + ICE in tree_low_cst (closes: #276291).
+      + ICE in in expand_call (closes: #283503).
+      + typeof operator is misparsed in a template function (closes: #288555).
+      + ICE in tree_low_cs (closes: #291374).
+      + Improve uninformative error messages (closes: #292961, #293076).
+      + ICE on array initialization (closes: #294560).
+      + Failure to build xine-lib with -finline-functions (closes: #306854).
+    - Java:
+      + Fix error finding files in subdirectories (closes: #195480).
+      + Implement java.text.CollationElementIterator lacks getOffset().
+        Closes: #259789.
+    - Treelang:
+      + Pointer truncation on 64bit architectures (closes: #308367).
+    - Architecture specific:
+      - alpha
+        + PR debug/10695: ICE on alpha while building agistudio.
+          Closes: #192568.
+        + ICE when building fceu (closes: #228018, #252764).
+      - amd64
+        + Miscompilation of Objective-C code (closes: #250174).
+        + g++ hangs compiling k3d on amd64 (closes: #285364).
+      - arm
+        + PR target/19008: gcc -O3 -fPIC produces wrong code via auto inlining.
+          Closes: #285238.
+      - i386
+        + PR target/4106: i386 -fPIC asm ebx clobber no error.
+          Closes: #153472.
+        + PR target/10984: x86/sse2 ICEs on vector intrinsics. Closes: #166940.
+        + Wrong code generation on at least ix86 (closes: #275655).
+      - m68k
+        + PR target/9201: ICE compiling octave-2.1 (closes: #175478).
+        + ICE in verify_initial_elim_offsets (closes: #204407, #257012).
+        + g77 generates invalid assembly code (closes: #225621).
+        + ICE in verify_local_live_at_start (closes #245584).
+      - powerpc
+        + PR optimization/12828: -floop-optimize is unstable on PowerPC (float
+          to int conversion problem). Closes: #218219.
+        + PR target/13619: ICE building altivec code in ffmpeg.
+          Closes: #226148.
+        + PR target/20046: Miscompilation of bind 9.3.0. Closes: #292958.
+      - sparc
+        + ICE (segfault) while building atlas3 on sparc32 (closes: #249108).
+        + Wrong optimization on sparc32 when building linux kernel.
+          Closes: #254626.
+
+  * Closed reports reported against gcc-3.3 or gcc-3.4 and fixed in gcc-4.0:
+    - General:
+      + PR rtl-optimization/6901: Optimizer improvement (removing unused
+        local variables). Closes: #67206.
+      + PR middle-end/179: Failure to detect use of unitialized variable
+        with -O -Wall. Closes: #117765.
+      + ICE building glibc's nptl on amd64 (closes: #260710, #307993).
+      + PR middle-end/17827: ICE in make_decl_rtl. Closes: #270854.
+      + PR middle-end/21709: ICE on compile-time complex NaN. Closes: #305344.
+    - Ada:
+      + PR ada/10889: Convention Fortran matrices mishandled in generics.
+        Closes: #192135.
+      + PR ada/13897: Implement tasking on powerpc. Closes: #225346.
+    - C:
+      + PR c/13072: Bogus warning with VLA in switch. Closes: #218803.
+      + PR c/13519: typeof(nonconst+const) is const. Closes: #208981.
+      + PR c/12867: Incorrect warning message (void format, should be void*
+        format). Closes: #217360.
+      + PR c/16066: PR 16066] i386 loop strength reduction bug.
+        Closes: #254659.
+    - C++:
+      + PR c++/13518: -Wnon-virtual-dtor doesn't always work. Closes: #212260.
+      + PR translation/16025: ICE with unsupported locale(closes: #242158).
+      + PR c++/15125: -Wformat doesn't warn for different types in fprintf.
+        Closes: #243507.
+      + PR c++/15214: Warn only if the dtor is non-private or the class has
+        friends. (closes: #246639).
+      + PR libstdc++/17218: Unknown subjects in generated libstdc++ manpages.
+        Closes: #262934.
+      + PR libstdc++/17223: Missing .so references in generated libstdc++
+        manpages. Closes: #262956.
+      + libstdc++-doc: Improve man pages (closes: #280910).
+      + PR c++/19006: ICE in tree_low_cst. Closes: #285692.
+      + g++ does not check arguments to fprintf. Closes: #281847.
+    - Java:
+      + PR java/7304: gcj ICE (closes: #152501).
+      + PR libgcj/7305: Installation of headers not directly in /usr/include.
+        Closes: #195483.
+      + PR libgcj/11941: libgcj timezone handling (closes: #203212).
+      + PR java/14709: gcj fails to wait for its child processes on exec().
+        Closes: #238432.
+      + PR libgcj/21703: gcj hangs when rapidly calling String.intern().
+        Closes: #275547.
+      + SocketChannel.get(ByteBuffer) returns 0 at EOF. Closes: #281602.
+      + PR java/19711: gcj segfaults instead of reporting the ambiguous
+        expression. Closes: #286715.
+      + Static libgcj contains repeated archive members (closes: #298263).
+    - Architecture specific:
+      - alpha
+        + Unaligned accesses with ?-operator (closes: #301983).
+      - arm
+        + Compilation error of glibc-2.3.4 on arm (closes: #298508).
+      - m68k
+        + ICE in add_insn_before (closes: #248432).
+      - mips
+        + Fix o32 ABI breakage in gcc 3.3/3.4 (closes: #270620).
+      - powerpc
+        + ICE in extract_insn (closes: #311128).
+
+  * Closing bug reports as wontfix:
+    - g++ defines _GNU_SOURCE when using the libstdc++ header files.
+      Behaviour did change since 3.0. Closes: #126703, #164872.
+
+ -- Matthias Klose <doko at debian.org>  Sat,  9 Jul 2005 17:10:54 +0000
+
+gcc-4.0 (4.0.0ds2-12) unstable; urgency=high
+
+  * Update to CVS 20050701, taken from the gcc-4_0-branch.
+  * Apply proposed patch for MMAP configure fix; aka PR 19877. Backport
+    from mainline.
+  * Disable Fortran on m68k. Currently FTBFS.
+  * Split multiarch-include/lib patches. Update multiarch-include patch.
+  * Fix FTBFS of the hppa64-linux cross compiler. Don't add the
+    multiarch include dirs when cross compiling.
+  * Configure --with-java-home, as used by java-gcj-compat.
+    Closes: #315646.
+  * Make libgcj-dbg packages priority extra.
+  * Set the path of classmap.db to /var/lib/gcj- at gcc_version@.
+  * On m68k, do not create the default classmap.db in the gcj postinst.
+    See #312830.
+  * On amd64, install the 32bit libraries into /emul/ia32-linux/usr/lib.
+    Restore the /usr/lib32 symlink.
+  * On amd64, don't reference lib64, but instead lib (lib64 is a symlink
+    to lib). Closes: #293050.
+  * Remove references to build directories from the .la files.
+  * Make cpp-X.Y conflict with earlier versions of gcc-X.Y, g++-X.Y, gobjc-X.Y,
+    gcj-X.Y, gfortran-X.Y, gnat-X.Y, treelang-X.Y, if a path component in
+    the gcc library path changes (i.e. version or target alias).
+  * Disable Ada for sh3 sh3eb sh4 sh4eb.
+  * For gcj-4.0, add a conflict to libgcj4-dev and libgcj5-dev.
+    Closes: #316499.
+
+ -- Matthias Klose <doko at debian.org>  Sat,  2 Jul 2005 11:04:35 +0200
+
+gcc-4.0 (4.0.0ds1-11) unstable; urgency=low
+
+  * debian/rules.defs: Disable Ada for alpha.
+  * debian/rules.conf: Fix typo in type-handling replacement code.
+  * Don't ship an empty libgcj6-dbg package.
+
+ -- Matthias Klose <doko at debian.org>  Thu, 23 Jun 2005 09:03:21 +0200
+
+gcc-4.0 (4.0.0ds1-10) unstable; urgency=medium
+
+  * debian/patches/libstdc++-api-compat.dpatch: Apply proposed patch
+    to fix libstdc++ 3.4.5/4.0 compatibility.
+  * type-handling output became insane. Don't use it anymore.
+  * Drop the reference to the stl-manual package (closes: #314983).
+  * Disable java on GNU/kFreeBSD targets, requested by Robert Millan.
+    Closes: #315140.
+  * Terminate the acats-killer process, even if the build is aborted
+    by the user (closes: #314405).
+  * debian/rules.defs: Define DEB_TARGET_ARCH_{OS,CPU}.
+  * Start converting the use of DEB_*_GNU_* to DEB_*_ARCH_* in the build
+    files.
+  * Do not configure with --enable-gtk-cairo. Needs newer gtk. Drop
+    build dependency on libcairo-dev.
+  * Fix setting of the system header directory for the hurd (Michael Banck).
+    Closes: #315386.
+  * Fix FTBFS on hurd-i386: MAXPATHLEN issue (Michael Banck). Closes: #315384.
+
+ -- Matthias Klose <doko at debian.org>  Wed, 22 Jun 2005 19:45:50 +0200
+
+gcc-4.0 (4.0.0ds1-9ubuntu2) breezy; urgency=low
+
+  * Fix version number in libgcj shlibs file.
+
+ -- Matthias Klose <doko at ubuntu.com>  Sun, 19 Jun 2005 10:34:02 +0200
+
+gcc-4.0 (4.0.0ds1-9ubuntu1) breezy; urgency=low
+
+  * Update to 4.0.1, release candidate 2.
+  * libstdc++ shlibs file: Require 4.0.0ds1-9ubuntu1 as minimum version.
+  * Rename libawt to libgcjawt to avoid conflicts with other
+    libawt implementations (backport from HEAD).
+  * Update classpath awt, swing and xml parser for HTML support in swing.
+    Taken from classpath CVS HEAD 2005-06-18. Patch provided by Michael Koch.
+  * Remove the libgcj-buffer-strategy path, part of the classpath update.
+  * libgcj shlibs file: Require 4.0.0ds1-9ubuntu1 as minimum version.
+  * Require cairo-0.5 as build dependency.
+  * gij-4.0: Provide java1-runtime.
+  * gij-4.0: Provide an rmiregistry alternative (using grmiregistry-4.0).
+  * gcj-4.0: Provide an rmic alternative (using grmic-4.0).
+  * libgcj6-dev conflicts with libgcj5-dev, libgcj4-dev, not libgcj6.
+    Closes: #312741.
+  * libmudflap-entry-point.dpatch: Correct name of entry point on mips/mipsel.
+  * Apply proposed patch for PR 18421 and PR 18719 (m68k only).
+  * Apply proposed path for PR 21562.
+  * Add build dependency on dpkg (>= 1.13.7).
+  * On linux systems, configure for <cpu>-linux-gnu.
+  * Configure the hppa64 cross compiler to target hppa64-linux-gnu.
+  * (Build-)depend on binutils-2.16.1.
+  * libstdc{32,64}++6-4.0-dbg: Depend on libstdc++6-4.0-dev.
+  * gnat-4.0: only depend on libgnat, when a shared libgnat is built.
+  * gfortran-4.0: Depend on libgmp3c2 | libgmp3.
+  * On hppa, explicitely use gcc-3.3 as a build dependency in the case
+    that Ada is disabled.
+  * libmudflap: Always build the library for the non-default biarch
+    architecture, or else the test results show link failures.
+
+ -- Matthias Klose <doko at ubuntu.com>  Sat, 18 Jun 2005 00:42:55 +0000
+
+gcc-4.0 (4.0.0-9) unstable; urgency=low
+
+  * Upload to unstable.
+
+ -- Matthias Klose <doko at debian.org>  Wed, 25 May 2005 19:02:20 +0200
+
+gcc-4.0 (4.0.0-8ubuntu3) breezy; urgency=low
+
+  * debian/control: Regenerate.
+
+ -- Matthias Klose <doko at ubuntu.com>  Sat,  4 Jun 2005 10:56:27 +0200
+
+gcc-4.0 (4.0.0-8ubuntu2) breezy; urgency=low
+
+  * Fix powerpc-config-ml patch.
+
+ -- Matthias Klose <doko at ubuntu.com>  Fri,  3 Jun 2005 15:47:52 +0200
+
+gcc-4.0 (4.0.0-8ubuntu1) breezy; urgency=low
+
+  * powerpc biarch support:
+    - Enable powerpc biarch support, build lib64gcc1 on powerpc.
+    - Add patch to disable libstdc++'s configure checking, if it can't run
+      64bit binaries on 32bit kernels (Sven Luther).
+    - Apply the same patch to the other runtime librararies as well.
+    - Run the testsuite with -m64, if we can execute 64bit binaries.
+    - Add libc6-dev-ppc64 as build dependency for powerpc.
+  * 32bit gcj libs for amd64.
+  * debian/logwatch.sh: Don't remove logwatch pid file on exit (suggested
+    by Ryan Murray).
+  * Update to CVS 20050603, taken from the gcc-4_0-branch.
+  * g++-4.0 provides c++abi2-dev.
+  * Loosen dependencies on packages of architecture `all' to not break
+    binary only uploads.
+  * Build libgfortran for biarch as well, else the testsuite will fail.
+
+ -- Matthias Klose <doko at ubuntu.com>  Fri,  3 Jun 2005 13:38:19 +0200
+
+gcc-4.0 (4.0.0-8) experimental; urgency=low
+
+  * Synchronize with Ubuntu.
+
+ -- Matthias Klose <doko at debian.org>  Mon, 23 May 2005 01:56:28 +0000
+
+gcc-4.0 (4.0.0-7ubuntu7) breezy; urgency=low
+
+  * Fix build failures for builds with disabled testsuite.
+  * Adjust debian/rules conditionals to work with all dpkg versions.
+  * Build separate lib32stdc6-4.0-dbg/lib64stdc6-4.0-dbg packages.
+  * Add the debugging symbols of the optimzed libstdc++ build in the
+    lib*stdc++6-dbg packages as well.
+  * Build a libgcj6-dbg package.
+  * Update to CVS 20050522, taken from the gcc-4_0-branch.
+  * Add Ada support for the ppc64 architecture (Andreas Jochens):
+    * debian/patches/ppc64-ada.dpatch
+      - Add gcc/ada/system-linux-ppc64.ads, which has been copied from
+        gcc/ada/system-linux-ppc.ads and changed to use 'Word_Size' 64
+        instead of 32.
+      - gcc/ada/Makefile.in: Use gcc/ada/system-linux-ppc64.ads on powerpc64.
+    * debian/rules.patch
+      - Use ppc64-ada patch on ppc64.
+    * debian/rules.d/binary-ada.mk
+      Place the symlinks libgnat.so, libgnat-4.0.so, libgnarl.so,
+      libgnarl-4.0.so in '/usr/lib' instead of '<gcc_lib_dir>/adalib'.
+    Closes: #308948.
+  * Add libc6-dev-i386 as an alternative build dependency for amd64.
+    Closes: #305690.
+
+ -- Matthias Klose <doko at ubuntu.com>  Sun, 22 May 2005 22:14:20 +0200
+
+gcc-4.0 (4.0.0-7ubuntu6) breezy; urgency=low
+
+  * Don't trust dpkg-architecture (1.13.4), it "hurds" ...
+
+ -- Matthias Klose <doko at ubuntu.com>  Wed, 18 May 2005 11:36:38 +0200
+
+gcc-4.0 (4.0.0-7ubuntu5) breezy; urgency=low
+
+  * libgcj6-dev: Don't provide libgcj-dev.
+
+ -- Matthias Klose <doko at ubuntu.com>  Wed, 18 May 2005 00:30:32 +0000
+
+gcc-4.0 (4.0.0-7ubuntu4) breezy; urgency=low
+
+  * Update to CVS 20050517, taken from the gcc-4_0-branch.
+  * Apply proposed patch for PR21293.
+
+ -- Matthias Klose <doko at ubuntu.com>  Tue, 17 May 2005 23:05:40 +0000
+
+gcc-4.0 (4.0.0-7ubuntu2) breezy; urgency=low
+
+  * Update to CVS 20050515, taken from the gcc-4_0-branch.
+
+ -- Matthias Klose <doko at ubuntu.com>  Sun, 15 May 2005 23:48:00 +0200
+
+gcc-4.0 (4.0.0-7ubuntu1) breezy; urgency=low
+
+  * Synchronize with Debian.
+
+ -- Matthias Klose <doko at ubuntu.com>  Mon,  9 May 2005 19:35:29 +0200
+
+gcc-4.0 (4.0.0-7) experimental; urgency=low
+
+  * Update to CVS 20050509, taken from the gcc-4_0-branch.
+  * Remove the note from the fastjar package description, stating, that
+    fastjar is incomplete compared to the "standard" jar utility.
+  * Fix typo in build depends. dpkg-checkbuilddeps doesn't like a comma
+    inside [].
+  * Tighten shlibs dependencies to require the current version.
+
+ -- Matthias Klose <doko at debian.org>  Mon,  9 May 2005 19:02:03 +0200
+
+gcc-4.0 (4.0.0-6) experimental; urgency=low
+
+  * Update to CVS 20050508, taken from the gcc-4_0-branch.
+
+ -- Matthias Klose <doko at debian.org>  Sun,  8 May 2005 14:08:28 +0200
+
+gcc-4.0 (4.0.0-5ubuntu1) breezy; urgency=low
+
+  * Temporarily disable the i386 biarch build. Remove the amd64-libs-dev
+    build dependency, add (build-)conflict (<= 1.1ubuntu1).
+
+ -- Matthias Klose <doko at ubuntu.com>  Sat,  7 May 2005 16:56:21 +0200
+
+gcc-4.0 (4.0.0-5) breezy; urgency=low
+
+  * gnat-3.3 and gnat-4.0 are alternative build dependencies (closes: #308002).
+  * Update to CVS 20050507, taken from the gcc-4_0-branch.
+  * gcj-4.0: Install gjnih.
+  * Add libgcj buffer strategy framework (Thomas Fitzsimmons), needed for OOo2.
+    Backport from 4.1.
+  * Fix all lintian errors and most of the warnings.
+
+ -- Matthias Klose <doko at ubuntu.com>  Sat,  7 May 2005 12:26:15 +0200
+
+gcc-4.0 (4.0.0-4) breezy; urgency=low
+
+  * Still prefer gnat-3.3 over gnat-4.0 as a build dependency.
+
+ -- Matthias Klose <doko at ubuntu.com>  Fri,  6 May 2005 22:30:43 +0200
+
+gcc-4.0 (4.0.0-3) breezy; urgency=low
+
+  * Update to CVS 20050506, taken from the gcc-4_0-branch.
+  * Update priority of java alternatives to 40.
+  * Move gcj-dbtool to gij package, move the default classmap.db to
+    /var/lib/gcj-4.0/classmap.db. Create it in the postinst.
+  * Fix gcc-4.0-hppa64 postinst (closes: #307762).
+  * Fix gcc-4.0-hppa64, gij-4.0 and gcj-4.0 postinst, to not ignore errors
+    from update-alternatives.
+  * Fix gcc-4.0-hppa64, fastjar, gij-4.0 and gcj-4.0 prerm,
+    to not ignore errors from update-alternatives.
+
+ -- Matthias Klose <doko at ubuntu.com>  Fri,  6 May 2005 17:50:58 +0200
+
+gcc-4.0 (4.0.0-2) experimental; urgency=low
+
+  * GCC 4.0.0 release.
+  * Update to CVS 20050503, taken from the gcc-4_0-branch.
+  * Add gnat-4.0 as an alternative build dependency (closes: #305690).
+
+ -- Matthias Klose <doko at debian.org>  Tue,  3 May 2005 15:41:26 +0200
+
+gcc-4.0 (4.0.0-1) experimental; urgency=low
+
+  * GCC 4.0.0 release.
+
+ -- Matthias Klose <doko at debian.org>  Sun, 24 Apr 2005 11:28:42 +0200
+
+gcc-4.0 (4.0ds11-0pre11) breezy; urgency=low
+
+  * CVS 20050413, taken from the gcc-4_0-branch.
+  * Add proposed patches for PR20126, PR20490, PR20929.
+
+ -- Matthias Klose <doko at ubuntu.com>  Wed, 13 Apr 2005 09:43:00 +0200
+
+gcc-4.0 (4.0ds10-0pre10) experimental; urgency=low
+
+  * gcc-4.0.0-20050410 release candidate 1, built from the prerelease tarball.
+    - C++ fix for "optimizer breaks function inlining". Closes: #302989.
+  * Append the GCC version to the fastjar/grepjar version string.
+  * Use short file names in the libstdc++ docs (closes: #301140).
+  * Fix libstdc++-dbg dependencies (closes: #303866).
+
+ -- Matthias Klose <doko at debian.org>  Mon, 11 Apr 2005 13:16:01 +0200
+
+gcc-4.0 (4.0ds9-0pre9) experimental; urgency=low
+
+  * CVS 20050326, taken from the gcc-4_0-branch.
+  * Reenable Ada on ia64.
+  * Build libgnat on hppa, sparc, s390 again.
+  * ppc64 support (Andreas Jochens):
+    * debian/control.m4
+      - Add libc6-dev-powerpc [ppc64] to the Build-Depends.
+      - Change the Description for lib32gcc1: s/ia32/32 bit Version/
+    * debian/rules.defs
+      - Define 'biarch_ia32' for ppc64 to use the same 32 bit multilib
+        facilities as amd64.
+    * debian/rules.d/binary-gcc.mk
+      - Correct an error in the 'files_gcc' definition for biarch_ia32
+        (replace '64' by '32').
+    * debian/rules2
+      - Do not use '--disable-multilib' on powerpc64-linux.
+        Use '--disable-nof --disable-softfloat' instead.
+    * debian/rules.d/binary-libstdcxx.mk
+      - Put the 32 bit libstdc++ files in '/usr/lib32'.
+    * debian/rules.patch
+      - Apply 'ppc64-biarch' patch on ppc64.
+    * debian/patches/ppc64-biarch.dpatch
+      - MULTILIB_OSDIRNAMES: Use /lib for native 64 bit libraries and
+        /lib32 for 32 bit libraries.
+      - Add multilib handling to src/config-ml.in (taken from
+        amd64-biarch.dpatch).
+  * Rename biarch_ia32 to biarch32, as suggsted by Andreas.
+  * Use /bin/dash on hppa.
+  * Reenable the build of the hppa64 compiler.
+  * Enable parallel builds by defaults (set environment variale USE_NJOBS=no
+    or USE_NJOBS=<number> to modify the default, which is to use the
+    number of available processors).
+
+ -- Matthias Klose <doko at debian.org>  Sat, 26 Mar 2005 19:07:30 +0100
+
+gcc-4.0 (4.0ds8-0pre8) experimental; urgency=low
+
+  * CVS 20050322, taken from the gcc-4_0-branch.
+    - Add proposed fix for PR19406.
+  * Configure --with-gtk-cairo only if version 0.3.0 is found.
+  * Split out gcc-4.0-locales package. Better chance of getting
+    bug reports in english language.
+
+ -- Matthias Klose <doko at debian.org>  Tue, 22 Mar 2005 14:20:24 +0100
+
+gcc-4.0 (4.0ds7-0pre7) experimental; urgency=low
+
+  * CVS 20050304, taken from the gcc-4_0-branch.
+  * Build the treelang compiler.
+
+ -- Matthias Klose <doko at debian.org>  Fri,  4 Mar 2005 21:29:56 +0100
+
+gcc-4.0 (4.0ds6-0pre6ubuntu6) hoary; urgency=low
+
+  * Fix lib32gcc1 symlink on amd64. Ubuntu #7099.
+
+ -- Matthias Klose <doko at ubuntu.com>  Thu,  3 Mar 2005 00:17:26 +0100
+
+gcc-4.0 (4.0ds6-0pre6ubuntu5) hoary; urgency=low
+
+  * Add patch from PR20160, avoid creating archives with components
+    that have duplicate basenames.
+
+ -- Matthias Klose <doko at ubuntu.com>  Wed,  2 Mar 2005 14:22:04 +0100
+
+gcc-4.0 (4.0ds6-0pre6ubuntu4) hoary; urgency=low
+
+  * CVS 20050301, taken from the gcc-4_0-branch.
+    Test builds on i386, amd64, powerpc, ia64, check libgcc_s.so.1.
+  * Add fastjar-4.0 binary and manpage. Some java packages append it
+    for all java related tools.
+  * Add libgcj6-src package for source code availability in IDE's.
+  * On hppa, disable the build of the hppa64 cross compiler, disable
+    java, disable running the testsuite (request by Lamont).
+  * On amd64, lib32gcc1 replaces ia32-libs.openoffice.org (<< 1ubuntu3).
+  * Build-Depend on libcairo1-dev, configure with --enable-gtk-cairo.
+    Work around libtool problems install libjawt.
+    Install jawt header files in libgcj6-dev.
+  * Add workaround for PR debug/19769.
+
+ -- Matthias Klose <doko at ubuntu.com>  Tue,  1 Mar 2005 11:26:19 +0100
+
+gcc-4.0 (4.0ds5-0pre6ubuntu3) hoary; urgency=low
+
+  * Drop libgmp3-dev (<< 4.1.4-3) as an alterntative build dependency.
+
+ -- Matthias Klose <doko at ubuntu.com>  Thu, 10 Feb 2005 15:16:27 +0100
+
+gcc-4.0 (4.0ds5-0pre6ubuntu2) hoary; urgency=low
+
+  * Disable Ada for powerpc.
+
+ -- Matthias Klose <doko at ubuntu.com>  Wed,  9 Feb 2005 16:47:07 +0100
+
+gcc-4.0 (4.0ds5-0pre6ubuntu1) hoary; urgency=low
+
+  * Avoid build dependency on type-handling.
+  * Install 32bit libs on amd64 in /lib32 and /usr/lib32.
+
+ -- Matthias Klose <doko at ubuntu.com>  Wed,  9 Feb 2005 08:27:21 +0100
+
+gcc-4.0 (4.0ds5-0pre6) experimental; urgency=low
+
+  * gcc-4.0 snapshot, taken from the HEAD branch CVS 20050208.
+  * Build-depend on graphviz (moved to main), remove the pregenerated
+    libstdc++ docs from the diff.
+  * Fix PR19162, libobjc build failure on arm-linux (closes: #291497).
+
+ -- Matthias Klose <doko at debian.org>  Tue,  8 Feb 2005 11:47:31 +0000
+
+gcc-4.0 (4.0ds4-0pre5) experimental; urgency=low
+
+  * gcc-4.0 snapshot, taken from the HEAD branch CVS 20050125.
+  * Call the 4.0 gcx versions in the java wrappers (closes: #291075).
+  * Correctly install libgij (closes: #291077).
+  * libgcj6-dev: Add conflicts to other libgcj-dev packages (closes: #290950).
+
+ -- Matthias Klose <doko at debian.org>  Mon, 24 Jan 2005 23:59:54 +0100
+
+gcc-4.0 (4.0ds3-0pre4) experimental; urgency=low
+
+  * gcc-4.0 snapshot, taken from the HEAD branch CVS 20050115.
+  * Update cross build patches (Nikita V. Youshchenko).
+  * Enable Ada on i386, amd64, mips, mipsel, powerpc, sparc, s390.
+    Doesn't yet bootstrap on alpha, hppa, ia64.
+
+ -- Matthias Klose <doko at debian.org>  Sat, 15 Jan 2005 18:44:03 +0100
+
+gcc-4.0 (4.0ds2-0pre3) experimental; urgency=low
+
+  * gcc-4.0 snapshot, taken from the HEAD branch CVS 20041224.
+
+ -- Matthias Klose <doko at debian.org>  Wed, 22 Dec 2004 00:31:44 +0100
+
+gcc-4.0 (4.0ds1-0pre2) experimental; urgency=low
+
+  * gcc-4.0 snapshot, taken from the HEAD branch CVS 20041205.
+  * Lot's of merges and updates from the gcc-3.4 packages.
+
+ -- Matthias Klose <doko at debian.org>  Sat, 04 Dec 2004 12:14:51 +0100
+
+gcc-4.0 (4.0ds0-0pre1) experimental; urgency=low
+
+  * gcc-4.0 snapshot, taken from the HEAD branch CVS 20041114.
+    - Addresses many issues with the libstdc++ man pages (closes: #278549).
+  * Disable Ada on hppa, ia64, mips, mipsel, powerpc, s390 and sparc, at least
+    these are known to be broken at the time of the snapshot.
+  * Minor kbsd.gnu build fixes (Robert Millan). Closes: #273004.
+  * For amd64, add missing libstdc++ files to 'libstdc++6-dev' package.
+    (Andreas Jochens). Fixes: #274362.
+  * Update libffi-mips patch (closes: #274096).
+  * Updated i386-biarch patch. Don't build 64bit libstdc++, ICE.
+  * Update sparc biarch patch.
+  * Fix symlinks for gfortran manpage (closes: #278548).
+  * Update cross build patches (Nikita V. Youshchenko).
+  * Update Ada patches (Ludovic Brenta).
+
+ -- Matthias Klose <doko at debian.org>  Sat, 13 Nov 2004 10:38:25 +0100
+
+gcc-4.0 (4.0-0pre0) experimental; urgency=low
+
+  * gcc-4.0 snapshot, taken from the HEAD branch CVS 20040912.
+
+  * Matthias Klose <doko at debian.org>
+
+    - Integrate accumulated packaging patches from gcc-3.4.
+    - Rename libstdc++6-* packages to libstdc++6-4-* (closes: #261693).
+    - libffi4-dev: conflict with libffi3-dev (closes: #265939).
+
+  * Robert Millan <rmh at debian.org>
+
+    * control.m4: 
+      - s/locale_no_archs !hurd-i386/locale_no_archs/g 
+        (This is now handled in rules.defs. [1]) 
+      - s/procps [check_no_archs]/procps [linux_gnu_archs]/g [2] 
+      - Add type-handling to build-deps. [3] 
+    * rules.conf: 
+      - Don't require (>= $(libc_ver)) for libc0.1-dev. [4] 
+      - Generate *_no_archs variables with type-handling and use them for 
+        for m4's -D parameters. [3] 
+    * rules.defs: 
+      - use filter instead of findstring [1]. 
+      - s/netbsd-elf-gnu/netbsdelf-gnu/g [5]. 
+      - enable java for kfreebsd-gnu [6] 
+      - enable ffi for kfreebsd-gnu and knetbsd-gnu [6] 
+      - enable libgc for kfreebsd-gnu [6] 
+      - enable checks for kfreebsd-gnu and knetbsd-gnu [7] 
+      - enable locales for kfreebsd-gnu and gnu [1] [8]. 
+    * Closes: #264025.
+
+ -- Matthias Klose <doko at debian.org>  Sun, 12 Sep 2004 12:52:56 +0200
+
+gcc-3.5 (3.5ds1-0pre1) experimental; urgency=low
+
+  * gcc-3.5 snapshot, taken from the HEAD branch CVS 20040724.
+  * Install locale data with versioned package name (closes: #260497).
+  * Fix libgnat symlinks.
+
+ -- Matthias Klose <doko at debian.org>  Sat, 24 Jul 2004 21:26:23 +0200
+
+gcc-3.5 (3.5-0pre0) experimental; urgency=low
+
+  * gcc-3.5 snapshot, taken from the HEAD branch CVS 20040718.
+
+ -- Matthias Klose <doko at debian.org>  Sun, 18 Jul 2004 12:26:00 +0200
+
+gcc-3.4 (3.4.1-1) experimental; urgency=low
+
+  * gcc-3.4.1 final release.
+    - configured wth --enable-libstdcxx-allocator=mt.
+  * Fixes for generating cross compiler packages (Jeff Bailey).
+
+ -- Matthias Klose <doko at debian.org>  Fri,  2 Jul 2004 22:49:05 +0200
+
+gcc-3.4 (3.4.0-4) experimental; urgency=low
+
+  * gcc-3.4.1 release candidate 1.
+  * Add logic to build biarch compiler on powerpc (disabled, needs lib64c).
+  * Don't build the libg2c0 package on mipsel-linux (no clear answer on
+    debian-mips, if the libg2c0's built by gcc-3.3 and gcc-3.4 are compatible
+    (post-sarge issue).
+  * Don't use gcc-2.95 as bootstrap compiler on m68k anymore.
+
+ -- Matthias Klose <doko at debian.org>  Sat, 26 Jun 2004 22:40:20 +0200
+
+gcc-3.4 (3.4.0-3) experimental; urgency=low
+
+  * Update to gcc-3.4 CVS 20040613.
+  * On sparc, set the the build target to sparc64-linux, build with
+    switch defaulting to code generation for v7. To generate code for
+    sparc64, use the -m64 switch.
+  * Add missing doc-base files to -doc packages.
+  * Add portability patches and kbsd-gnu patch (Robert Millan).
+    Closes: #251293, #251294.
+  * Apply fixes for cross build (Nikita V. Youshchenko).
+  * Do not include the precompiled libstdc++ header files into the -dev
+    package (still experimental). Closes: #251707.
+  * Reflect renaming of Ada user's guide.
+  * Move AWT peer libraries for libgcj into it's own package (fixes: #247791).
+
+ -- Matthias Klose <doko at debian.org>  Mon, 14 Jun 2004 00:03:18 +0200
+
+gcc-3.4 (3.4.0-2) experimental; urgency=low
+
+  * Update to gcc-3.4 CVS 20040516.
+  * Do not provide the /usr/hppa64-linux/include in the gcc-hppa64 package,
+    migrated to libc6-dev. Adjust dependencies.
+  * Integrate gpc test results into the GCC test summary.
+  * gnatchop calls gcc-3.4 (closes: #245438).
+  * debian/locale-gen.sh: Update for recent libstdc+++ testsuite.
+  * debian/copyright: Add libstdc++-v3's exception clause.
+  * Add libffi update for mips (Thiemo Seufer).
+  * Reference Debian specific bug reporting instructions.
+  * Update README.Bugs.
+  * Fix FTBFS for libstdc++-doc.
+  * Update libjava patch for hppa (Randolph Chung).
+  * Fix installation of ffitarget.h header file.
+  * On amd64-linux, configure --without-multilib, disable Ada.
+
+ -- Matthias Klose <doko at debian.org>  Sun, 16 May 2004 07:53:39 +0200
+
+gcc-3.4 (3.4.0-1) experimental; urgency=low
+
+  * gcc-3.4.0 final release.
+
+  * Why experimental?
+    - Do not interfer with packages currently built from gcc-3.3 sources,
+      i.e. libgcc1, libobjc1, libffi2, libffi2-dev, libg2c0.
+    - Biarch sparc compiler doesn't built yet.
+    - Use of configure flags affecting binary ABI's not yet determined.
+    - Several ABI bugs have been fixed. Unfortunately, these changes will break
+      binary compatibility with earlier releases on several architectures:
+      alpha, mips, sparc, 
+    - hppa and m68k changed sjlj based exception handling to dwarf2 based
+      exception handling.
+
+      See NEWS.html or http://gcc.gnu.org/gcc-3.4/changes.html for more
+      specific information.
+
+ -- Matthias Klose <doko at debian.org>  Tue, 20 Apr 2004 20:54:56 +0200
+
+gcc-3.4 (3.4ds3-0pre4) experimental; urgency=low
+
+  * Update to gcc-3.4 CVS 20040403.
+  * Add gpc tarball, gpc patches for 3.4 (Waldek Hebisch).
+  * Reenable sparc-biarch patches (closes: #239856).
+  * Build the shared libgnat library, needed to fix FTBFS for some
+    Ada library packages (Ludovic Brenta).
+    Currently enabled for hppa, i386, ia64.
+
+ -- Matthias Klose <doko at debian.org>  Sat,  3 Apr 2004 08:47:55 +0200
+
+gcc-3.4 (3.4ds1-0pre2) experimental; urgency=low
+
+  * Update to gcc-3.4 CVS 20040320.
+  * For libstdc++6-doc, add a conflict to libstdc++5-3.3-doc (closes: #236560).
+  * For libstdc++6-dbg, add a conflict to libstdc++5-3.3-dbg (closes: #236798).
+  * Reenable s390-biarch patches.
+  * Update the cross compiler build files (Nikita V. Youshchenko).
+
+ -- Matthias Klose <doko at debian.org>  Sat, 20 Mar 2004 09:15:10 +0100
+
+gcc-3.4 (3.4ds0-0pre1) experimental; urgency=low
+
+  * Start gcc-3.4 packaging, get rid of the epoch for most of the
+    packages.
+
+ -- Matthias Klose <doko at debian.org>  Sun, 22 Feb 2004 16:00:03 +0100
+
+gcc-3.3 (1:3.3.3ds6-6) unstable; urgency=medium
+
+  * Update to gcc-3_3-branch CVS 20040401.
+    - Fixed ICE in emit_move_insn_1 on legal code (closed: #223215).
+    - Fix PR 14755, miscompilation of loops with bitfield counter.
+      Closes: #241255.
+    - Fix PR 16040, crash in function initializing const data with
+      reinterpret_cast-ed pointer-to-member function crashes (closes: #238621).
+    - Remove patches integrated upstream.
+  * Reenable build of gpidump on powerpc and s390.
+
+ -- Matthias Klose <doko at debian.org>  Thu,  1 Apr 2004 23:51:54 +0200
+
+gcc-3.3 (1:3.3.3ds6-5) unstable; urgency=medium
+
+  * Update to gcc-3_3-branch CVS 20040321.
+    - Fix PR target/13889 (ICE on valid code on m68k).
+  * Fix FTFBS on s390. Do not build gpc's gpidump on s390.
+  * Reenable gpc on arm.
+
+ -- Matthias Klose <doko at debian.org>  Mon, 22 Mar 2004 07:37:26 +0100
+
+gcc-3.3 (1:3.3.3ds6-4) unstable; urgency=low
+
+  * Update to gcc-3_3-branch CVS 20040320.
+    - Revert patch for PR14640 (with this, at least mozilla-firefox was
+      miscompiled on x86 (closes: #238621).
+  * Update the gpc tarball (there were two releases with the same name ...).
+  * Reenable gpc on alpha and ia64.
+
+ -- Matthias Klose <doko at debian.org>  Sat, 20 Mar 2004 07:39:24 +0100
+
+gcc-3.3 (1:3.3.3ds5-3) unstable; urgency=low
+
+  * Update to gcc-3_3-branch CVS 20040314.
+    - Fixes miscompilation with -O -funroll-loops on powerpc (closes: #229567).
+    - Fix ICE in dwarf-2 on code using altivec (closes: #203835).
+  * Update hurd-changes patch.
+  * Add libgcj4-dev as a recommendation for gcj (closes: #236547).
+  * debian/copyright: Added exemption to static linking of libgcc.
+
+  * Phil Blundell:
+    - debian/patches/arm-ldm.dpatch, debian/patches/arm-gotoff.dpatch: Update.
+
+ -- Matthias Klose <doko at debian.org>  Sun, 14 Mar 2004 09:56:06 +0100
+
+gcc-3.3 (1:3.3.3ds5-2) unstable; urgency=low
+
+  * Update to gcc-3_3-branch CVS 20040306.
+    - Fixes bootstrap comparision error on ia64.
+    - Allows ghc build with gcc-3.3.
+    - On amd64, don't imply 3DNow! for -m64 by default.
+    - Some arm specific changes
+    - Fix C++/13944: exception in constructor of a class to be thrown is not
+      caught. Closes: #228099.
+  * Enable the build of gcc-3.3-hppa64 on hppa.
+    Add symlinks for as and ld to point to hppa64-linux-{as,ld}.
+  * gcj-3.3 depends on g++-3.3, recommends gij-3.3. gij-3.3 suggests gcj-3.3.
+  * Fix libgc2c-pic compatibility links (closes: #234333).
+    The link will be removed for gcc-3.4.
+  * g77-3.3: Conflict with other g77-x.y packages.
+  * Tighten shlibs dependencies to latest released versions.
+
+  * Phil Blundell:
+    - debian/patches/arm-233633.dpatch: New  Fixes problems with half-word
+      loads on ARMv3 architecture.  (Closes: #233633)
+    - debian/patches/arm-ldm.dpatch: New.  Avoids inefficient epilogue for
+      leaf functions in PIC code on ARM.
+
+ -- Matthias Klose <doko at debian.org>  Sat,  6 Mar 2004 10:57:14 +0100
+
+gcc-3.3 (1:3.3.3ds5-1) unstable; urgency=medium
+
+  * gcc-3.3.3 final release.
+    See /usr/share/doc/gcc-3.3/NEWS.{gcc,html}.
+
+ -- Matthias Klose <doko at debian.org>  Mon, 16 Feb 2004 08:59:52 +0100
+
+gcc-3.3 (1:3.3.3ds4-0pre4) unstable; urgency=low
+
+  * Update to gcc-3.3.3 CVS 20040214 (2nd gcc-3.3.3 prerelease).
+  * Fix title of libstdc++'s html main index (closes: #196381).
+  * Move libg2c libraray files out of the gcc specific libdir to /usr/lib.
+    For g77-3.3 add conflicts to other g77 packages. Closes: #224848.
+  * Update the stack protector patch to 3.3-7, but don't apply it by default.
+    Closes: #230338.
+  * On arm, use arm6 as the cpu default (backport from mainline, PR12527).
+  * Add libffi and libjava support for hppa (Randolph Chung). Closes: #232615.
+
+ -- Matthias Klose <doko at debian.org>  Sat, 14 Feb 2004 09:26:15 +0100
+
+gcc-3.3 (1:3.3.3ds3-0pre3) unstable; urgency=low
+
+  * Update to gcc-3.3.3 CVS 20040125.
+    - Fixed PR11350, undefined labels with -Os -fPIC (closes: #195911).
+    - Fixed PR11793, ICE in extract_insn, at recog.c (closes: #203835).
+    - Fixed PR13544, removed backport for PR12862.
+    - Integrated backport for PR12441.
+  * Fixed since 3.3: java: not implemented interface methods of abstract
+    classes not found (closes: #225438).
+  * Disable pascal on arm architecture (currently broken).
+  * Update the build files to build a cross compiler (Nikita V. Youshchenko).
+    See debian/README.cross in the source package.
+  * Apply revised patch to make -mieee the default on alpha-linux,
+    and add -mieee-disable switch to turn the default off (closes: #212912).
+    (Tyson Whitehead)
+
+ -- Matthias Klose <doko at debian.org>  Sun, 25 Jan 2004 17:41:04 +0100
+
+gcc-3.3 (1:3.3.3ds2-0pre2) unstable; urgency=medium
+
+  * Update to gcc-3.3.3 CVS 20040110.
+    - Fixes compilation not terminating at -O1 on hppa (closes: #207516).
+  * Add backport to fix PR12441 (closes: #224576).
+  * Revert backport to 3.3 branch to fix PR12862, which introduced another
+    regression (PR13544). Closes: #225663.
+  * Tighten dependency of gnat-3.3 on gcc-3.3 (closes: #226273).
+  * Disable treelang build for cross compiler build.
+  * Disable pascal on alpha and ia64 architectures (currently broken).
+
+ -- Matthias Klose <doko at debian.org>  Sat, 10 Jan 2004 12:33:59 +0100
+
+gcc-3.3 (1:3.3.3ds1-0pre1) unstable; urgency=low
+
+  * Update to gcc-3.3.3 CVS 20031229.
+    - Fixes bootstrap error on ia64-linux.
+    - Fix -pthread on mips{,el}-linux (closes: #224875).
+    - Fix -Wformat for C++ (closes: #217075).
+  * Backport from mainline: Preserve inline-ness when redeclaring
+    a function template (closes: #195264).
+  * Add missing intrinsics headers on ix86 (closes: #224593).
+  * Fix location of libg2c libdir in libg2c.la file (closes: #224848).
+
+ -- Matthias Klose <doko at debian.org>  Mon, 29 Dec 2003 10:36:29 +0100
+
+gcc-3.3 (1:3.3.3ds0-0pre0.1) unstable; urgency=high
+
+   * NMU
+   * Fixed mips(el) spec file for -pthread: (Closes: #224875)
+   * [debian/patches/mips-pthread.dpatch] New.
+   * [debian/rules.patch] Added it to debian_patches.
+
+ -- J.H.M. Dassen (Ray) <jdassen at debian.org>  Sat, 27 Dec 2003 15:51:47 +0100
+
+gcc-3.3 (1:3.3.3ds0-0pre0) unstable; urgency=low
+
+  * Update to gcc-3.3.3 CVS 20031206.
+    - Fixes ICE in verify_local_live_at_start (hppa). Closes: #201550.
+    - Fixes miscompilation of linux-2.6/sound/core/oss/rate.c.
+      Closes: #219949.
+  * Add missing unwind.h to gcc package (closes: #220846).
+  * Regenerate control file to fix build dependencies for m68k.
+  * More gpc only patches to fix test failures on m68k.
+  * Reenable gpc for the Hurd (closes: #189851).
+
+ -- Matthias Klose <doko at debian.org>  Sat,  6 Dec 2003 10:29:07 +0100
+
+gcc-3.3 (1:3.3.2ds5-4) unstable; urgency=low
+
+  * Update libffi-dev package description (closes: #219508).
+  * For gij and libgcj fix dependency on the libstdc++ package, if
+    the latter isn't installed during the build.
+  * Apply patch to emit .note.GNU-stack section on linux arches
+    which by default need executable stack.
+  * Prefer gnat-3.3 over gnat-3.2 as a build dependency.
+  * Update the pascal tarball (different version released with the
+    same name).
+  * Add pascal patches to address various gpc testsuite failures.
+    On alpha and ia64, build gpc from the 20030830 version. Reenable
+    the build on m68k.
+    Remove the 20030507 gpc version from the tarball.
+  * Apply patch to build the shared ada libs and link the ada tools
+    against the shared libs. Not enabled by default, because gnat
+    and gnatlib are rebuilt during install. (Ludovic Brenta)
+
+ -- Matthias Klose <doko at debian.org>  Sun,  9 Nov 2003 22:34:33 +0100
+
+gcc-3.3 (1:3.3.2ds4-3) unstable; urgency=low
+
+  * Fix rules to omit inclusion of gnatpsta in mips(el) gnat package.
+
+ -- Matthias Klose <doko at debian.org>  Sun,  2 Nov 2003 14:29:59 +0100
+
+gcc-3.3 (1:3.3.2ds4-2) unstable; urgency=medium
+
+  * s390-ifcvt patch added. Fixes gcl miscompilation (closes: #217240).
+    (Gerhard Tonn)
+  * Fix an infinite loop in g++ compiling lufs, regression from 3.3.1.
+  * Fix a wrong code generation bug on alpha.
+    (Falk Hueffner)
+  * Update NEWS files.
+  * Add Falk Hueffner to the Debian GCC maintainers.
+  * Enable ada on mips and mipsel, but don't build the gnatpsta tool.
+
+ -- Matthias Klose <doko at debian.org>  Wed, 29 Oct 2003 00:12:37 +0100
+
+gcc-3.3 (1:3.3.2ds4-1) unstable; urgency=medium
+
+  * Update to gcc-3.3.2.
+  * Update NEWS files.
+  * Miscompilation in the pari package at -O3 fixed (closes: #198172).
+  * On alpha-linux, revert -mieee as the default (Falk Hueffner).
+    Reopens: #212912.
+  * Add ia64-unwind patch (Jeff Bailey).
+  * Closed reports reported against gcc-2.96 (ia64), fixed at least in gcc-3.3:
+    - ICE in verify_local_live_at_start, at flow.c:2733 (closes: #135404).
+    - Compilation failure of stlport (closes: #135224).
+    - Infinite loop compiling cssc's pfile.cc with -O2 (closes: #115390).
+    - Added missing some string::compare() members (closes: #141199).
+    - <cmath> header declares std::pow (closes: #161853).
+    - <vector> does have at() method (closes: #59776).
+    - Fixed error in stl_deque.h (closes: #69530).
+    - Fixed problem with bastring (closes: #75759, #96539).
+    - bad_alloc and std:: namespace problem (closes: #75120).
+    - Excessive warnings from headers with -Weffc++ (closes: #76827).
+
+ -- Matthias Klose <doko at debian.org>  Fri, 17 Oct 2003 08:07:01 +0200
+
+gcc-3.3 (1:3.3.2ds3-0pre5) unstable; urgency=low
+
+  * Update to gcc-3.3.2 CVS 20031005.
+    - Fixes cpp inserting a spurious newline (closes: #210478, #210482).
+    - Fixes generation of unrecognizable insn compiling kernel source
+      on alpha (closes: #202762).
+    - Fixes ICE in add_abstract_origin_attribute (closes: #212406).
+    - Fixes forward declaration in libstdc++ (closes: #209386).
+    - Fixes ICE in in extract_insn, at recog.c on alpha (closes: #207564).
+  * Make libgcj-common architecture all (closes: #211909).
+  * Build depend on: flex-old | flex (<< 2.5.31).
+  * Fix spec linking libraries with -pthread on powerpc (closes: #211054).
+  * debian/patches/arm-gotoff.dpatch: fix two kinds of PIC lossage.
+    (Phil Blundell)
+  * debian/patches/arm-common.dpatch: fix excessive alignment of common
+    blocks causing binutils testsuite failures.
+    (Phil Blundell)
+  * Update priorities in debian/control to match the archive.
+    (Ryan Murray)
+  * s390-nonlocal-goto patch added. Fixes some pascal testcase failures. 
+    (Gerhard Tonn)
+  * On alpha-linux, make -mieee default and add -mieee-disable switch
+    to turn default off (closes: #212912).
+    (Tyson Whitehead)
+  * Add gpc upstream patch for memory corruption fix.
+
+ -- Matthias Klose <doko at debian.org>  Sun,  5 Oct 2003 19:53:49 +0200
+
+gcc-3.3 (1:3.3.2ds2-0pre4) unstable; urgency=low
+
+  * Add gcc-unsharing_lhs patch (closes: #210848)
+
+ -- Ryan Murray <rmurray at debian.org>  Fri, 19 Sep 2003 22:51:19 -0600
+
+gcc-3.3 (1:3.3.2ds2-0pre3) unstable; urgency=low
+
+  * Update to gcc-3.3.2 CVS 20030908.
+  * PR11716 (Michael Eager, Dan Jacobowitz):
+    Make GCC think that the maximum length of a short branch is
+    64K instead of 128K.  It's a big hammer, but it works.
+    Closes: #207915.
+  * Downgrade gpc to 20030507 on alpha and ia64 (closes: #208717).
+
+ -- Matthias Klose <doko at debian.org>  Mon,  8 Sep 2003 21:49:52 +0200
+
+gcc-3.3 (1:3.3.2ds1-0pre2) unstable; urgency=low
+
+  * Update to gcc-3.3.2 CVS 20030831.
+    - Fix java NullPointerException detection with 2.6 kernels.
+      Closes: #206377.
+    - Fix bug in C++ typedef handling (closes: #205402).
+    - Fix -Wunreachable-code giving false complaints (closes: #196600).
+  * Update to gpc-20030830.
+  * Don't include /usr/share/java/repository into the class path according
+    to the new version of th Debian Java policy (closes: #205643).
+  * Build-Depend/Depend on libgc-dev.
+
+ -- Matthias Klose <doko at debian.org>  Sun, 31 Aug 2003 08:56:53 +0200
+
+gcc-3.3 (1:3.3.2ds0-0pre1) unstable; urgency=low
+
+  * Remove the build dependency on locales for now.
+
+ -- Matthias Klose <doko at debian.org>  Fri, 15 Aug 2003 07:48:18 +0200
+
+gcc-3.3 (1:3.3.2ds0-0pre0) unstable; urgency=medium
+
+  * Update to gcc-3.3.2 CVS 20030812.
+    - Fixes generation of wrong code for XDM-AUTHORIZATION-1 key generation
+      and/or validation. Closes: #196090.
+  * Update NEWS files.
+  * Change ix86 default CPU type for code generation:
+    - i386-linux       -> i486-linux
+    - i386-gnu         -> i586-gnu
+    - i386-freebsd-gnu -> i486-freebsd-gnu
+    Use -march=i386 to target i386 CPUs.
+
+ -- Matthias Klose <doko at debian.org>  Tue, 12 Aug 2003 10:31:28 +0200
+
+gcc-3.3 (1:3.3.1ds3-1) unstable; urgency=low
+
+  * gcc-3.3.1 (taken from CVS 20030805).
+    - C++: Fix declaration conflicts (closes: #203351).
+    - Fix ICE on ia64 (closes: #203840).
+
+ -- Matthias Klose <doko at debian.org>  Tue,  5 Aug 2003 20:38:02 +0200
+
+gcc-3.3 (1:3.3.1ds2-0rc2) unstable; urgency=low
+
+  * Update to gcc-3.3.1 CVS 20030728.
+    - Fix ICE in extract_insn, at recog.c:2148 on m68k.
+      Closes: #177840, #180375, #190818.
+    - Fix ICE while building libquicktime on alpha (closes: #192576).
+    - Fix failure to deal with using and private inheritance (closes: #202696).
+  * On sparc, /usr/lib was added to the library search path. Fix it.
+  * Closed reports reported against gcc-3.2.x and fixed in gcc-3.3:
+    - Fix error building the gcl package on arm (closes: #199835).
+
+ -- Matthias Klose <doko at debian.org>  Mon, 28 Jul 2003 20:39:07 +0200
+
+gcc-3.3 (1:3.3.1ds1-0rc1) unstable; urgency=low
+
+  * Update to gcc-3.3.1 CVS 20030722 (3.3.1 release candidate 1).
+    - Fix ICE in copy_to_mode_reg on 64-bit targets (closes: #189365).
+    - Remove documentation about multi-line strings (closes: #194391).
+    - Correctly document -falign-* parameters (closes: #198269).
+    - out-of-class specialization of a private nested template class.
+      Closes: #193830.
+    - Tighten shlibs dependency due to new symbols in libgcc.
+  * README.Debian for libg2c0, describing the need for g77-x.y when
+    working with the g2c header and library (closes: #189059).
+  * Call make with -j<number of CPU's>, if USE_NJOBS is set and non-empty
+    in the environment.
+  * Add another two m68k patches, partly replacing the workarounds provided
+    by Roman Zippel.
+  * Add the stack protector patch, but don't apply it by default. Edit
+    debian/rules.patch to apply it (closes: #171699, #189494).
+  * Remove wrong symlinks from gnat package (closes: #201882).
+  * Closed reports reported against gcc-2.95 and fixed in newer versions:
+    - SMP kernel compilation on alpha (closes: #134197, #146883).
+    - ICE on arm while building imagemagick (closes: #173475).
+  * Closed reports reported against gcc-3.2.x and fixed in gcc-3.3:
+    - Miscompilation of octave2.1 on hppa (closes: #192296, #193804).
+
+ -- Matthias Klose <doko at debian.org>  Sun, 13 Jul 2003 10:26:30 +0200
+
+gcc-3.3 (1:3.3.1ds0-0pre0) unstable; urgency=medium
+
+  * Update to gcc-3.3.1 CVS 20030626.
+    - Fix ICE on arm compiling xfree86 (closes: #195424).
+    - Fix ICE on arm compiling fftw (closes: #186185).
+    - Fix ICE on arm in change_address_1, affecting a few packages.
+      Closes: #197099.
+    - Fix ICE in merge_assigned_reloads building Linux 2.4.2x sched.c.
+      Closes: #195237.
+    - Do not warn about failing to inline functions declared in system headers.
+      Closes: #193049.
+    - Fix ICE on mips{,el} in propagate_one_insn (closes: #194330, #196091).
+    - Fix ICE on m68k in reg_overlap_mentioned_p (closes: #194749).
+    - Build crtbeginT.o on m68k (closes: #197613).
+  * Fix g++ man page symlink (closes: #196271).
+  * mips/mipsel: Depend on binutils (>= 2.14.90.0.4). Closes: #196744.
+  * Disable treelang on powerpc (again). Closes: #196915.
+  * Pass -encoding in gcj-wrapper.
+
+ -- Matthias Klose <doko at debian.org>  Fri, 27 Jun 2003 00:14:43 +0200
+
+gcc-3.3 (1:3.3ds9-3) unstable; urgency=low
+
+  * Closing more reports, fixed in 3.2/3.3:
+    - ICE building texmacs on m68k (closes: #177433).
+    - libstdc++: <cmath> doesn't define trunc(...) (closes: #105285).
+    - libstdc++: setw is ignored for strings output (closes: #52382, #76645).
+  * Add build support to omit the manual pages and info docs from the
+    packages, disabled by default. Wait for a Debian statement, which can
+    be cited. Adresses: #193787.
+  * Reenable the m68k-const patch, don't run the g77 testsuite on m68k.
+    Addresses ICEs (#177840, #190818).
+  * Update arm-xscale patch.
+  * libstdc++: use __attribute__(__unknown__), instead of (unknown).
+    Closes: #195796.
+  * Build-Depend on glibc (>= 2.3.1) to prevent incorrect builds on woody.
+    Request from Adrian Bunk.
+  * Add treelang-update patch (Tim Josling), reenable treelang on powerpc.
+  * Add <GNU_TYPE>-{cpp,gcc,g++,gcj,g77} symlinks (addresses: #189466).
+  * Make sure not to build using binutils-2.14.90.0.[12].
+
+ -- Matthias Klose <doko at debian.org>  Mon,  2 Jun 2003 22:35:45 +0200
+
+gcc-3.3 (1:3.3ds9-2) unstable; urgency=medium
+
+  * Correct autoconf-related snafu in newly added ARM patches (Phil Blundell).
+  * Correct libgcc1 dependency (closes: #193689).
+  * Work around ldd/dpkg-shlibs failure on s390x.
+
+ -- Matthias Klose <doko at debian.org>  Sun, 18 May 2003 09:40:15 +0200
+
+gcc-3.3 (1:3.3ds9-1) unstable; urgency=low
+
+  * gcc-3.3 final release.
+    See /usr/share/doc/gcc-3.3/NEWS.{gcc,html}.
+  * First merge of i386/x86-64 biarch support (Arnd Bergmann).
+    Disabled by default. Closes: #190066.
+  * New gpc-20030507 version.
+  * Upstream gpc update to fix netbsd build failure (closes: #191407).
+  * Add arm-xscale.dpatch, arm-10730.dpatch, arm-tune.dpatch, copied
+    from gcc-3.2 (Phil Blundell).
+  * Closing bug reports reported against older gcc versions (some of them
+    still present in Debian, but not anymore as the default compiler).
+    Usually, forwarded bug reports are linked to
+        http://gcc.gnu.org/PR<upstream bug number>
+    The upstream bug number usually can be found in the Debian reports.
+
+  * Closed reports reported against gcc-3.1.x, gcc-3.2.x and fixed in gcc-3.3:
+    - General:
+      + GCC accepts multi-line strings without \ or " " &c (closes: #2910).
+      + -print-file-name sometimes fails (closes: #161615).
+      + ICE: reporting routines re-entered (closes: #179597, #180937).
+      + Misplaced paragraph in gcc documentation (closes: #179363).
+      + Error: suffix or operands invalid for `div' (closes: #150558).
+      + builtin memcmp() could be optimised (closes: #85535).
+    - Ada:
+      + Preelaborate, exceptions, and -gnatN (closes: #181679).
+    - C:
+      + Duplicate loop conditions even with -Os (closes: #94701).
+      + ICE (signal 11) (closes: #65686).
+    - C++:
+      + C++ error on virtual function which uses ... (closes: #165829).
+      + ICE when warning about cleanup nastiness in switch statements
+        (closes: #184108).
+      + Fails to compile virtual inheritance with variable number of
+        argument method (closes: #151357).
+      + xmmintrin.h broken for c++ (closes: #168310).
+      + Stack corruption with variable-length automatic arrays and virtual
+        destructors (closes: #188527).
+      + ICE on illegal code (closes: #184862).
+      + _attribute__((unused)) is ignored in C++ (closes: #45440).
+      + g++ handles &(void *)foo bizzarely (closes: #79225).
+      + ICE (with wrong code, though) (closes: #81122).
+    - Java:
+      + Broken zip file handling (closes: #180567).
+    - ObjC:
+      + @protocol forward definitions do not work (closes: #80468).
+    - Architecture specific:
+      - alpha
+        + va_start is off by one (closes: #186139).
+        + ICE while building kseg/ddd (closes: #184753).
+        + g++ -O2 optimization error (closes: #70743).
+      - arm
+        + ICE with -O2 in change_address_1 (closes: #180750).
+        + gcc optimization error with -O2, affecting bison (closes: #185903).
+      - hppa
+        + ICE in insn_default_length (closes: #186447).
+      - ia64
+        + gcc-3.2 fails w/ optimization (closes: #178830).
+      - i386
+        + unnecessary generation of instruction cwtl (closes: #95318).
+        + {athlon} ICE building mplayer (closes: #184800).
+        + {pentium4} ICE while compiling mozilla with -march=pentium4
+          (closes: #187910).
+        + i386 optimisation: joining tests (closes: #105309).
+      - m68k
+        + ICE in instantiate_virtual_regs_1 (closes: #180493).
+        + gcc optimizer bug on m68k (closes: #64832).
+      - powerpc
+        + ICE in extract_insn, at recog.c:2175 building php3 (closes: #186299).
+        + ICE with -O -Wunreachable-code (closes: #189702).
+      - s390
+        + Operand out of range at assembly time when using -O2
+          (closes: #178596).
+      - sparc
+        + gcc-3.2 regression (wrong code) (closes: #176387).
+        + ICE in mem_loc_descriptor when optimizing (closes: #178909).
+        + ICE in gen_reg_rtx when optimizing (closes: #178965).
+        + Optimisation leads to unaligned access in memcpy (closes: #136659).
+
+  * Closed reports reported against gcc-3.0 and fixed in gcc-3.2.x:
+    - General:
+      + Use mkstemp instead of mktemp (closed: #127802).
+    - Preprocessor:
+      + Fix redundant error message from cpp (closed: #100722).
+    - C:
+      + Optimization issue on ix86 (pointless moving) (closed: #97904).
+      + Miscompilation of allegro on ix86 (closed: #105741).
+      + Fix generation of ..ng references for static aliases (alpha-linux).
+        (closed: #108036).
+      + ICE compiling pari on hppa (closed: #111613).
+      + ICE on ia64 in instantiate_virtual_regs_1 (closed: #121668).
+      + ICE in c-typeck.c (closed: #123687).
+      + ICE in gen_subprogram_die on alpha (closed: #127890).
+      + SEGV in initialization of flexible char array member (closed: #131399).
+      + ICE on arm compiling lapack (closed: #135967).
+      + ICE in incomplete_type_error (closed: #140606).
+      + Fix -Wswitch (also part of -Wall) (closed: #140995).
+      + Wrong code in mke2fs on hppa (closed: #150232).
+      + sin(a) * sin(b) gives wrong result (closed: #164135).
+    - C++:
+      + Error in std library headers on arm (closed: #107633).
+      + ICE nr. 19970302 (closed: #119635).
+      + std::wcout does not perform encoding conversions (closed: #128026).
+      + SEGV, when compiling iostream.h with -fPIC (closed: #134315).
+      + Fixed segmentation fault in included code for <rope> (closed: #137017).
+      + Fix with exception handling and -O (closed: #144232).
+      + Fix octave-2.1 build failure on ia64 (closed: #144584).
+      + nonstandard overloads in num_get facet (closed: #155900).
+      + ICE in expand_end_loop with -O (closed: #158371).
+    - Fortran:
+      + Fix blas build failure on arm (closed: #137959).
+    - Java:
+      + Interface members are public by default (closed: #94974).
+      + Strange message with -fno-bounds-check in combination with -W.
+        (closed: #102353).
+      + Crash in FileWriter using IOException (closed: #116128).
+      + Fix ObjectInputStream.readObject() calling constructors.
+        (closed: #121636).
+      + gij: better error reporting on `class not found' (closed: #125649).
+      + Lockup during .java->.class compilation (closed: #141899).
+      + Compile breaks using temporary inner class instance (closed: #141900).
+      + Default constructor for inner class causes broken bytecode.
+        (closed: #141902).
+      + gij-3.2 linked against libgcc1 (closed: #165180).
+      + gij-wrapper understands -classpath parameter (closed: #146634).
+      + gij-3.2 doesn't ignore -jar when run as "java" (closed: #167673).
+    - ObjC:
+      + ICE on alpha (closed: #172353).
+
+  * Closed reports reported against gcc-2.95 and fixed in newer versions:
+    - General:
+      + Undocumented option -pthread (closes: #165110).
+      + stdbool.h broken (closes: #167439).
+      + regparm/profiling breakage (closes: #20695).
+      + another gcc optimization error (closes: #51456).
+      + ICE in `output_fix_trunc' (closes: #55967).
+      + Fix "Unable to generate reloads for" (closes: #58219, #131890).
+      + gcc -c -MD x/y.c -o x/y.o leaves y.d in cwd (closes: #59232).
+      + Compiler error with -O2 (closes: #67631).
+      + ICE (unrecognizable insn) compiling php4 (closes: #83550, #84969).
+      + Another ICE (closes: #90666).
+      + man versus info inconsistency (-W and -Wall) (closes: #93708).
+      + ICE on invalid extended asm (closes: #136630).
+      + ICE in `emit_no_conflict_block' compiling perl (closes: #154599).
+      + ICE in `gen_tagged_type_instantiation_die'(closes: #166766).
+      + ICE on __builtin_memset(s, 0, -1) (closes: #170994).
+      + -Q option to gcc appears twice in the documentation (closes: #137382).
+      + New options for specifying targets:- -MQ and -MT (closes: #27878).
+      + Configure using --enable-nls (closes: #51651).
+      + gcc -dumpspecs undocumented (closes: #65406).
+    - Preprocessor:
+      + cpp fails to parse macros with varargs correctly(closes: #154767).
+      + __VA_ARGS__ stringification crashes preprocessor if __VA_ARGS__ is
+        empty (closes: #152709).
+      + gcc doesn't handle empty args in macro function if there is only
+        one arg(closes: #156450).
+    - C:
+      + Uncaught floating point exception causes ICE (closes: #33786).
+      + gcc -fpack-struct doesn't pack structs (closes: #64628).
+      + ICE in kernel (matroxfb) code (closes: #151196).
+      + gcc doesn't warn about unreachable code (closes: #158704).
+      + Fix docs for __builtin_return_address(closes: #165992).
+      + C99 symbols in limits.h not defined (closes: #168346).
+      + %zd printf spec generates warning, even in c9x mode (closes: #94891).
+      + Update GCC attribute syntax (closes: #12253, #43119).
+    - C++ & libstdc++-v3:
+      + template and virtual inheritance bug (closes: #152315).
+      + g++ has some troubles with nested templates (closes: #21255).
+      + vtable thunks implementation is broken (closes: #34876, #35477).
+      + ICE for templated friend (closes: #42662).
+      + ICE compiling mnemonic (closes: #42989).
+      + Deprecated: result naming doesn't work for functions defined in a
+        class (closes: #43170).
+      + volatile undefined ... (closes: #50529).
+      + ICE concerning templates (closes: #53698).
+      + Program compiled -O3 -malign-double segfaults in ofstream::~ofstream
+        (closes: #56867).
+      + __attribute__ ((constructor)) doesn't work with C++ (closes: #61806).
+      + Another ICE (closes: #65687).
+      + ICE in `const_hash' (closes: #72933).
+      + ICE on illegal code (closes: #83221).
+      + Wrong code with -O2 (closes: #83363).
+      + ICE on template class (closes: #85934).
+      + No warning for missing return in non-void member func (closes: #88260).
+      + Not a bug/fixed in libgcc1: libgcc.a symbols end up exported by
+        shared libraries (closes: #118670).
+      + ICE using nested templates (closes: #118781).
+      + Another ICE with templates (closes: #127489).
+      + More ICEs (closes: #140427, #141797).
+      + ICE when template declared after use(closes: #148603).
+      + template function default arguments are not handled (closes: #157292).
+      + Warning when including stl.h (closes: #162074).
+      + g++ -pedantic-errors -D_GNU_SOURCE cannot #include <complex>
+        (closes: #151671).
+      + c++ error message improvement suggestion (closes: #46181).
+      + Compilation error in stl_alloc.h with -fhonor-std (closes: #59005).
+      + libstdc++ has no method at() in stl_= (closes: #68963).
+    - Fortran:
+      + g77 crash (closes: #130415).
+    - ObjC:
+      + ICE: program cc1obj got fatal signal 11 (closes: #62309).
+      + Interface to garbage collector is undocumented. (closes: #68987).
+    - Architecture specific:
+      - alpha
+        + Can't compile with define gnu_source with stdio and curses
+          (closes: #97603).
+        + Header conflicts on alpha (closes: #134558).
+        + lapack-dev: cannot link on alpha (closes: #144602).
+        + ICE `fixup_var_refs_1' (closes: #43001).
+        + Mutt segv on viewing list of attachments (closes: #47981).
+        + ICE building open-amulet (closes: #48530).
+        + ICE compiling hatman (closes: #55291).
+        + dead code removal in switch() broken (closes: #142844).
+      - arm
+        + Miscompilation using -fPIC on arm (closes: #90363).
+        + infinite loop with -O on arm (closes: #151675).
+      - i386
+        + ICE when using -mno-ieee-fp and -march=i686 (closes: #87540).
+      - m68k
+        + Optimization (-O2) broken on m68k (closes: #146006).
+      - mips
+        + g++ exception catching does not work... (closes: #105569).
+        + update-menus gets Bus Error (closes: #120333).
+      - mipsel
+        + aspell: triggers ICE on mipsel (closes: #128367).
+      - powerpc
+        + -O2 produces wrong code (gnuchess example) (closes: #131454).
+      - sparc
+        + Misleading documentation for -malign-{jump,loop,function}s
+          (closes: #114029).
+        + Sparc GCC issue with -mcpu=ultrasparc (closes: #172956).
+        + flightgear: build failure on sparc (closes: #88694).
+
+ -- Matthias Klose <doko at debian.org>  Fri, 16 May 2003 07:13:57 +0200
+
+gcc-3.3 (1:3.3ds8-0pre9) unstable; urgency=high
+
+  * gcc-3.3 second prerelease.
+    - Fixing exception handling on s390 (urgency high).
+  * Reenabled gpc build (I had it disabled ...). Closes: #192347.
+
+ -- Matthias Klose <doko at debian.org>  Fri,  9 May 2003 07:32:14 +0200
+
+gcc-3.3 (1:3.3ds8-0pre8) unstable; urgency=low
+
+  * gcc-3.3 prerelease.
+    - Fixes gcj ICE (closes: #189545).
+  * For libstdc++ use the i486 atomicity implementation, introduced with
+    0pre6, left out in 0pre7 (closes: #191684).
+  * Add README.Debian for treelang (closes: #190812).
+  * Apply NetBSD changes (Joel Baker). Closes: #191551.
+  * New symbols in libgcc1, tighten the shlibs dependency.
+  * Disable testsuite run on mips/mipsel because of an outdated libc-dev
+    package.
+  * Do not build libffi with debug information, although configuring
+    with --enable-debug.
+
+ -- Matthias Klose <doko at debian.org>  Tue,  6 May 2003 06:53:49 +0200
+
+gcc-3.3 (1:3.3ds7-0pre7) unstable; urgency=low
+
+  * gcc-3.3 prerelease taken from the gcc-3_3-branch (CVS 20030429).
+  * Revert upstream libstdc++ change (closes: #191145, #191147, #191148,
+    #191149, #149159, #149151, and other reports).
+    Sorry for not detecting this before the upload, seems to be
+    broken on i386 "only".
+  * hurd-i386: Use /usr/include, not /include.
+  * Disable gpc on hurd-i386 (closes: #189851).
+  * Disable building the debug version of libstdc++ on powerpc-linux
+    (fixes about 200 java test cases).
+  * Install libstdc++v3 man pages (closes: #127263).
+
+ -- Matthias Klose <doko at debian.org>  Tue, 29 Apr 2003 23:28:44 +0200
+
+gcc-3.3 (1:3.3ds6-0pre6) unstable; urgency=high
+
+  * gcc-3.3 prerelease taken from the gcc-3_3-branch (CVS 20030426).
+  * libstdc++-doc: Fix index.html link (closes: #189424).
+  * Revert back to the i486 atomicity implementation, that was used
+    for gcc-3.2 as well. Reopens: #184446, #185662. Closes: #189983.
+    For this reason, tighten the libstdc++5 shlibs dependency. See
+    http://lists.debian.org/debian-devel/2003/debian-devel-200304/msg01895.html
+    Don't build the ix86 specfic libstdc++ libs anymore.
+
+ -- Matthias Klose <doko at debian.org>  Sun, 27 Apr 2003 19:47:54 +0200
+
+gcc-3.3 (1:3.3ds5-0pre5) unstable; urgency=low
+
+  * gcc-3.3 prerelease taken from the gcc-3_3-branch (CVS 20030415).
+  * Disable treelang on powerpc.
+  * Disable gpc on m68k.
+  * Install locale data. Conflict with gcc-3.2 (<= 1:3.2.3-0pre8).
+  * Fix generated bits/atomicity.h (closes: #189183).
+  * Tighten libgcc1 shlibs dependency (new symbol _Unwind_Backtrace).
+
+ -- Matthias Klose <doko at debian.org>  Wed, 16 Apr 2003 00:37:05 +0200
+
+gcc-3.3 (1:3.3ds4-0pre4) unstable; urgency=low
+
+  * gcc-3.3 prerelease taken from the gcc-3_3-branch (CVS 20030412).
+  * Avoid sparc64 dependencies for libgcc1 on sparc (Clint Adams).
+  * Make the default sparc 32bit target v8 instead of v7. This mainly
+    enables hardmul, which should speed up v8 and v9 systems by a large
+    margin (Ben Collins).
+  * Tighten binutils dependency for sparc.
+  * On i386, build libstdc++ optimized for i486 and above. The library
+    in /usr/lib is built for i386. Closes: #184446, #185662.
+  * Add gpc build (from gcc-snapshot package).
+  * debian/control: Include all packages, that _can_ be built from
+    this source package (except the cross packages).
+  * Add m68k patches: m68k-const, m68k-subreg, m68k-loop.
+  * Run the 3.3 testsuite a second time with the installed gcc-3.2
+    to check for regressions (promised, only this time, and for the
+    final release ;). Add build dependencies (gobjc-3.2, g77-3.2, g++-3.2).
+
+ -- Matthias Klose <doko at debian.org>  Sat, 12 Apr 2003 10:11:11 +0200
+
+gcc-3.3 (1:3.3ds3-0pre3) unstable; urgency=low
+
+  * gcc-3.3 prerelease taken from the gcc-3_3-branch (CVS 20030331).
+  * Reenable java on arm.
+  * Build-Depend on binutils-2.13.90.0.18-1.3 on m68k. Fixes all
+    bprob/gcov testsuite failures.
+  * Enable C++ build on arm.
+  * Enable the sparc64 build.
+
+ -- Matthias Klose <doko at debian.org>  Mon, 31 Mar 2003 23:24:54 +0200
+
+gcc-3.3 (1:3.3ds2-0pre2) unstable; urgency=low
+
+  * gcc-3.3 prerelease taken from the gcc-3_3-branch (CVS 20030317).
+  * Disable building the gcc-3.3-nof package.
+  * Disable Ada on mips and mipsel.
+  * Remove the workaround to build Ada on powerpc.
+  * Add GNU Free documentation license to copyright file.
+  * Update the sparc64 build patches (Clint Adams). Not yet enabled.
+  * Disable C++ on arm (Not yet tested).
+  * Add fix for ICE on powerpc (see: #184684).
+
+ -- Matthias Klose <doko at debian.org>  Sun, 16 Mar 2003 21:40:57 +0100
+
+gcc-3.3 (1:3.3ds1-0pre1) unstable; urgency=low
+
+  * gcc-3.3 prerelease taken from the gcc-3_3-branch (CVS 20030310).
+  * Add gccbug manpage.
+  * Don't build libgnat package (no shared library).
+  * Configure with --enable-sjlj-exceptions on hppa and m68k for
+    binary compatibility with libstdc++ built with gcc-3.2.
+  * Disable Java on arm-linux (never seen it sucessfully bootstrap).
+  * Install non-conflicting baseline README.
+  * multilib *.so and *.a moved to /usr/lib/gcc-lib/... , so that several
+    compiler versions can be installed concurrently.
+  * Remove libstdc++-incdir patch applied upstream.
+  * libstdc++ 64 bit development files now handled in -dev target.
+    (Gerhard Tonn)
+  * Drop build dependencies for gpc (tetex-bin, help2man, libncurses5-dev).
+  * Add libstdc++5-3.3-dev confict to libstdc++5-dev (<= 1:3.2.3-0pre3).
+  * Enable builds on m68k (all but C++ for the moment). gcc-3.3 bootstraps,
+    while gcc-3.2 doesn't.
+
+ -- Matthias Klose <doko at debian.org>  Mon, 10 Mar 2003 23:41:00 +0100
+
+gcc-3.3 (1:3.3ds0-0pre0) unstable; urgency=low
+
+  * First gcc-3.3 package, built for s390 only. All other architectures
+    build the gcc-3.3-base package only.
+    To build the package on other architectures, edit debian/rules.defs
+    (macro no_dummy_archs).
+  * gcc-3.3 prerelease taken from the gcc-3_3-branch (CVS 20030301).
+  * Don't include the gcc locale files (would conflict with 3.2).
+  * Remove libffi-install-fix patch.
+  * Fix netbsd-i386 patches.
+  * Change priority of libstdc++5 and gcc-3.2-base to important.
+  * Install gcjh-wrapper for javah.
+  * gij suggests fastjar, gcj recommends fastjar.
+  * Allow builds using automake1.4 | automake (<< 1.5).
+  * Backport fix for to output more correct line numbers.
+  * Add help2man to build dependencies needed for some gpc man pages.
+  * gpc: Install binobj and gpidump binaries and man pages.
+  * Apply cross compilation patches submitted by Bastian Blank.
+  * Replace s390-biarch patch and copy s390-config-ml patch from 3.2
+    (Gerhard Tonn).
+  * Configure using --enable-debug.
+  * Add infrastructure to only build a subset of binary packages.
+  * Rename libstdc++-{dev,dbg,pic,doc} packages.
+  * Build treelang compiler.
+
+ -- Matthias Klose <doko at debian.org>  Sat,  1 Mar 2003 12:56:42 +0100
+
+gcc-3.2 (1:3.2.3ds2-0pre3) unstable; urgency=low
+
+  * gcc-3.2.3 prerelease (CVS 20030228)
+    - Fixes bootstrap failure on alpha-linux.
+    - Fixes ICE on m68k (closes: #177016).
+  * Build Pascal with -O1 on powerpc, disable Pascal on arm, m68k and
+    sparc (due to wrong code generation for fwrite in glibc,
+    see PR optimization/9279).
+  * Apply cross compilation patches submitted by Bastian Blank.
+
+ -- Matthias Klose <doko at debian.org>  Fri, 28 Feb 2003 20:26:30 +0100
+
+gcc-3.2 (1:3.2.3ds1-0pre2) unstable; urgency=medium
+
+  * gcc-3.2.3 prerelease (CVS 20030221)
+    - Fixes ICE on hppa (closes: #181813).
+  * Patch for ffitest in s390-java.dpatch deleted, since already fixed
+    upstream. (Gerhard Tonn)
+  * Build crtbeginT.o on m68k-linux (closes: #179807).
+  * Install gcjh-wrapper for javah (closes: #180218).
+  * gij suggests fastjar, gcj recommends fastjar (closes: #179298).
+  * Allow builds using automake1.4 | automake (<< 1.5) (closes: #180048).
+  * Backport fix for to output more correct line numbers (closes: #153965).
+  * Add help2man to build dependencies needed for some gpc man pages.
+  * gpc: Install binobj and gpidump binaries and man pages.
+  * Disable gpc on arm due to wrong code generation for fwrite in
+    glibc (see PR optimization/9279).
+
+ -- Matthias Klose <doko at debian.org>  Sat, 22 Feb 2003 19:58:20 +0100
+
+gcc-3.2 (1:3.2.3ds0-0pre1) unstable; urgency=low
+
+  * gcc-3.2.3 prerelease (CVS 20030210)
+    - Fixes long millicode calls on hppa (closes: #180520)
+  * New gpc-20030209 version.  Remove gpc-update.dpatch and gpc-testsuite.dptch
+    as they are no longer needed.
+  * Fix netbsd-i386 patches (closes: #180129, #179931)
+  * m68k-bootstrap.dpatch: backport gcse.c changes from 3.3/MAIN to 3.2
+  * Change priority of libstdc++5 and gcc-3.2-base to important.
+
+ -- Ryan Murray <rmurray at debian.org>  Tue, 11 Feb 2003 06:18:09 -0700
+
+gcc-3.2 (1:3.2.2ds8-1) unstable; urgency=low
+
+  * gcc-3.2.2 release.
+    - Fixes ICE, regression from 2.95 (closes: #176117).
+    - Fixes ICE, regression from 2.95 (closes: #179161).
+  * libstdc++ for biarch installs now upstream to usr/lib64,
+    therefore mv usr/lib/64 usr/lib64 no longer necessary. (Gerhard Tonn)
+
+ -- Ryan Murray <rmurray at debian.org>  Wed,  5 Feb 2003 01:35:29 -0700
+
+gcc-3.2 (1:3.2.2ds7-0pre8) unstable; urgency=low
+
+  * gcc-3.2.2 prerelease (CVS 20030130).
+  * update s390 libffi patch
+  * debian/control: add myself to uploaders and change libc12-dev depends to
+    libc-dev on i386 (closes: #179128)
+  * Build-Depend on procps so that ps is available for logwatch
+
+ -- Ryan Murray <rmurray at debian.org>  Fri, 31 Jan 2003 04:00:15 -0700
+
+gcc-3.2 (1:3.2.2ds6-0pre7) unstable; urgency=low
+
+  * gcc-3.2.2 prerelease (CVS 20030128).
+    - Update needed for hppa.
+    - Fixes ICE on arm, regression from 2.95.x (closes: #168086).
+    - Can use default bison (1.875).
+  * Apply netbsd build patches (closes: #177674, #178328, #178325,
+    #178326, #178327).
+  * Run the logwatch script on "slow" architectures (arm, m68k) only.
+  * autoreconf.dpatch: Only update libtool.m4, which is newer conceptually
+    than libtool 1.4 (Ryan Murray).
+  * Apply autoreconf patch universally (Ryan Murray).
+  * More robust gij/gcj wrapper scripts, include /usr/lib/jni in default
+    JNI search path (Ben Burton). Closes: #167932.
+  * Build crtbeginT.o on m68k (closes: #177036).
+  * Fixed libc-dev source dependency (closes: #178602).
+  * Tighten shlib dependency to the current package version; should be
+    1:3.2.2-1 for the final release (closes: #178867).
+
+ -- Matthias Klose <doko at debian.org>  Tue, 28 Jan 2003 21:59:30 +0100
+
+gcc-3.2 (1:3.2.2ds5-0pre6) unstable; urgency=low
+
+  * gcc-3.2 snapshot taken from the gcc-3_2-branch (CVS 20030123).
+  * Build locales needed by the libstdc++ testsuite.
+  * Update config.{guess,sub} files from autotools-dev (closes: #177674).
+  * Disable Ada and Java on netbsd-i386 (closes: #177679).
+  * gnat: Add suggests for gnat-doc and ada-reference-manual.
+
+ -- Matthias Klose <doko at debian.org>  Thu, 23 Jan 2003 22:16:53 +0100
+
+gcc-3.2 (1:3.2.2ds4-0pre5.1) unstable; urgency=low
+
+  * Readd build dependency `locales' on arm.  locales is now installable
+  * Add autoreconf patch for mips{,el}. (closes: #176311)
+
+ -- Ryan Murray <rmurray at debian.org>  Wed, 22 Jan 2003 14:31:14 -0800
+
+gcc-3.2 (1:3.2.2ds4-0pre5) unstable; urgency=low
+
+  * Remove build dependency `libc6-dev-sparc64 [sparc]' for now.
+  * Remove build dependency `locales' on arm. locales is uninstallable
+    on arm due to the missing glibc-2.3.
+  * Use bison-1.35. bison-1.875 causes an hard error on the reduce/reduce
+    conflict in objc-parse.y.
+
+ -- Matthias Klose <doko at debian.org>  Fri, 10 Jan 2003 10:10:43 +0100
+
+gcc-3.2 (1:3.2.2ds4-0pre4) unstable; urgency=low
+
+  * Try building with gcc-2.95 on m68k-linux. Building gcc-3.2 with gcc-3.2
+    does not work for me. m68k-linux doesn't look good at all ...
+  * Fix s390 build error.
+  * Add locales to build dependencies. A still unsolved issue is the
+    presence of the locales de_DE, en_PH, en_US, es_MX, fr_FR and it_IT,
+    or else some tests in the libstdc++ testsuite will fail.
+  * Put all -nof files in the -nof package (closes: #175253).
+  * Correctly exit logwatch script (closes: #175251).
+  * Install linker-map.gnu file for libstdc++_pic (closes: #175144).
+  * Install versioned gpcs docs only (closes: #173844).
+  * Include gpc test results in gpc package.
+  * Link local libstdc++ documentation to local source-level documentation.
+  * Clarify libstdc++ description (so version and library version).
+    Closes: #175799.
+  * Include library in libstdc++-dbg package (closes: #176005).
+
+ -- Matthias Klose <doko at debian.org>  Wed,  8 Jan 2003 23:39:50 +0100
+
+gcc-3.2 (1:3.2.2ds3-0pre3) unstable; urgency=low
+
+  * gcc-3.2 snapshot taken from the gcc-3_2-branch (CVS 20021231).
+    - Fix loop count computation for preconditioned unrolled loops.
+      Closes: #162919.
+    - Fix xmmintrin.h (_MM_TRANSPOSE4_PS) CVS 20021027 (closes: #163647).
+    - Fix [PR 8601] strlen/template interaction causes ICE CVS 20021201.
+      Closes: #166143.
+  * Watch the log files, which are written during the testsuite runs and print
+    out a message, if there is still activity. No more buildd timeouts on arm
+    and m68k ...
+  * Remove gpc's reference to librx1g-dev package (closes: #172953).
+  * Remove trailing dots on package descriptions.
+  * Fix external reference to cpp.info in gcc.info (closes: #174598).
+
+ -- Matthias Klose <doko at debian.org>  Tue, 31 Dec 2002 13:47:52 +0100
+
+gcc-3.2 (1:3.2.2ds2-0pre2) unstable; urgency=medium
+
+  * Friday, 13th upload, so what do you expect ...
+  * gcc-3.2 snapshot taken from the gcc-3_2-branch (CVS 20021212).
+  * Fix gnat build (autobuild maintainers: please revert back to gnat-3.2
+    (<= 1:3.2.1ds6-1) for building gnat-3.2, if the build fails building
+    gnatlib and gnattools).
+  * Really disable sparc64 support.
+
+ -- Matthias Klose <doko at debian.org>  Fri, 13 Dec 2002 00:26:37 +0100
+
+gcc-3.2 (1:3.2.2ds1-0pre1) unstable; urgency=low
+
+  * A candidate for the transition ...
+  * gcc-3.2 snapshot taken from the gcc-3_2-branch (CVS 20021210).
+    - doc/invoke.texi: Remove last reference to -a (closes: #171748).
+  * Disable sparc64 support. For now please use egcs64 to build sparc64
+    kernels.
+  * Disable Pascal on the sparc architecture (doesn't bootstrap).
+
+ -- Matthias Klose <doko at debian.org>  Tue, 10 Dec 2002 22:33:13 +0100
+
+gcc-3.2 (1:3.2.2ds0-0pre0) unstable; urgency=low
+
+  * gcc-3.2 snapshot taken from the gcc-3_2-branch (CVS 20021202).
+    - Should fix _Pragma expansion within macros (closes: #157416).
+  * New gpc-20021128 version. Run check using EXTRA_TEST_PFLAGS=-g0
+  * Add tetex-bin to build dependencies (gpc needs it). Closes: #171203.
+
+ -- Matthias Klose <doko at debian.org>  Tue,  3 Dec 2002 08:22:33 +0100
+
+gcc-3.2 (1:3.2.1ds6-1) unstable; urgency=low
+
+  * gcc-3.2.1 final release.
+  * Build gpc-20021111 for all architectures. hppa and i386 are
+    known to work. For the other architectures, send the usual FTBFS ...
+    WARNING: this gpc version is an alpha version, especially debug info
+    doesn't work well, so use -g0 for compiling. If you need a stable
+    gpc compiler, use gpc-2.95.
+  * Encode the gpc upstream version in the package name, the gpc release
+    date in the version number (requested by gpc upstream).
+  * Added libncurses5-dev and libgmp3-dev as build dependencies for the
+    gpc tests and runtime.
+  * Clean CVS files as well (closes: #169101).
+  * s390-biarch.dpatch added, backported from CVS (Gerhard Tonn).
+  * s390-config-ml.dpatch added, disables biarch for java,
+    libffi and boehm-gc on s390. They need a 64 bit runtime
+    during build which is not yet available on s390 (Gerhard Tonn).
+  * Biarch support for packaging adapted (Gerhard Tonn).
+    biarch variable added and with-sparc64 variable substituted in
+    most places by biarch.
+    dh_shlibdeps is applied only to 32 bit libraries on s390, since
+    ldd for 64 bit libraries don't work on 32 bit runtime.
+    Build dependency to libc6-dev-s390x added.
+
+ -- Matthias Klose <doko at debian.org>  Wed, 20 Nov 2002 00:20:58 +0100
+
+gcc-3.2 (1:3.2.1ds5-0pre6) unstable; urgency=medium
+
+  * gcc-3.2.1 prerelease.
+  * Removed arm patch integrated upstream.
+  * Adjust gnat build dependency (closes: #167116).
+  * Always configure with --enable-clocale=gnu. The autobuilders do have
+    locales installed, but not generated the "de_DE" locale needed for
+    the autoconf test in libstdcc++-v3/aclocal.m4.
+  * libstdc++ documentaion: Don't compresss '*.txt' referenced by html pages.
+
+ -- Matthias Klose <doko at debian.org>  Tue, 12 Nov 2002 07:19:44 +0100
+
+gcc-3.2 (1:3.2.1ds4-0pre5) unstable; urgency=medium
+
+  * gcc-3.2.1 snapshot (CVS 20021103).
+  * sparc64-build.dpatch: Updated. Lets sparc boostrap again.
+  * s390-loop.dpatch removed, already fixed upstream (Gerhard Tonn).
+  * bison.dpatch: Removed, patch submitted upstream.
+  * backport-java-6865.dpatch: Apply again during build.
+  * Tighten glibc dependency (closes: #166703).
+
+ -- Matthias Klose <doko at debian.org>  Sun,  3 Nov 2002 12:22:02 +0100
+
+gcc-3.2 (1:3.2.1ds3-0pre4) unstable; urgency=high
+
+  * gcc-3.2.1 snapshot (CVS 20021020).
+    - Expansion of _Pragma within macros fixed (closes: #157416).
+  * FTBFS: With the switch to bison-1.50 (and 1.75), gcc-3.2 fails to build from
+    source on Debian unstable systems. This is fixed in gcc HEAD, but not on
+    the current release branch.
+    HELP NEEDED:
+    - check what is missing from the patches in debian/patches/bison.dpatch.
+      This is a backport of the bison related patches, but showing regressions
+      in the gcc testsuite, so it cannot be applied.
+    - build gcc using byacc (bootstrap currently fails using byacc).
+    - build bison-1.35 in it's own package (the current 1.35-3 package fails
+      to build form source).
+    - and finally ask upstream to backport the patch to the branch. It's not
+      helpful not beeing able to follow the stable branch. Maybe we should
+      just switch to gcc HEAD as BSD does ...
+    As a terrible workaround, build the sources from CVS first on a machine,
+    with bison-1.35 installed, then package the tarball, so the bison
+    generated files are not rebuilt.
+
+  * re-add lost patch: configure with --enable-__cxa_atexit (closes: #163422),
+    Therefore urgency high.
+  * gcj-wrapper, gij-wrapper: Accept names starting with `.' (closes: #163172,
+    #164009).
+  * Point g++ manpage to correct g++ version (closes: #162843).
+  * Support for i386-freebsd-gnu (closes: #163883).
+  * s390-java.dpatch replaced with backport from cvs head (Gerhard Tonn).
+  * Disable the testsuite run on the Hurd (closes: #159650).
+  * s390-loop.dpatch added, fixes runtime problem (Gerhard Tonn).
+  * debian/patches/bison.dpatch: Backport for bison-1.75 compatibility.
+    Don't use it due to regressions.
+  * debian/patches/backport-java-6865.dpatch: Directly applied in the
+    included tarball because of bison problems.
+  * Make fixincludes priority optional, so linda can depend on it.
+  * Tighten binutils dependency.
+
+ -- Matthias Klose <doko at debian.org>  Sun, 20 Oct 2002 10:52:49 +0200
+
+gcc-3.2 (1:3.2.1ds2-0pre3) unstable; urgency=low
+
+  * gcc-3.2.1 snapshot (CVS 20020923).
+  * Run the libstdc++ check-abi script. Results are put into the file
+    /usr/share/doc/libstdc++5/README.libstdc++-baseline in the libstdc++5-dev
+    package. This file contains a new baseline, if no baseline for this
+    architecture is included in the gcc sources.
+  * gcj-wrapper: Accept files starting with an underscore, accept
+    path names (closes: #160859, #161517).
+  * Explicitely call automake-1.4 when rebuilding Makefiles (closes: #161438).
+  * Let installed fixincludes script find files in /usr/lib/fixincludes.
+  * debian/rules.patch: Add .NOTPARALLEL as target, so that patches are
+    applied sequentially (closes: #159395).
+
+ -- Matthias Klose <doko at debian.org>  Tue, 24 Sep 2002 07:36:56 +0200
+
+gcc-3.2 (1:3.2.1ds1-0pre2) unstable; urgency=low
+
+  * gcc-3.2.1 snapshot (CVS 20020913). Welcome back m68k in bootstrap land!
+  * Fix arm-tune.dpatch (closes: #159354).
+  * Don't overwrite LD_LIBRARY_PATH in build (closes: #158459).
+  * --disable-__cxa_atexit on NetBSD (closes: #159620).
+  * Reenable installation of message catalogs (disabled in 3.2-0pre2).
+    Closes: #160175.
+  * Ben Collins
+    - Re-enable sparc64 build. This time, it's part of the default compiler.
+      I have disabled 64/alt libraries as they are too much overhead. All
+      libraries build 64bit, but currently only libgcc/libstdc++ include the
+      64bit libraries.
+    Closes: #160404.
+  * Depend on autoconf2.13, instead of autoconf.
+  * Phil Blundell
+    - debian/patches/arm-update.dpatch: Fix python2.2 build failure.
+
+ -- Matthias Klose <doko at debian.org>  Sat,  7 Sep 2002 08:05:02 +0200
+
+gcc-3.2 (1:3.2.1ds0-0pre1) unstable; urgency=medium
+
+  * gcc-3.2.1 snapshot (CVS 20020829).
+    New g++ option -Wabi:
+      Warn when G++ generates code that is probably not compatible with the
+      vendor-neutral C++ ABI.  Although an effort has been made to warn about
+      all such cases, there are probably some cases that are not warned about,
+      even though G++ is generating incompatible code.  There may also be
+      cases where warnings are emitted even though the code that is generated
+      will be compatible.
+    The current version of the ABI is 102, defined by the __GXX_ABI_VERSION
+    macro.
+  * debian/NEWS.*: Updated.
+  * Fix libstdc++-dev dependency on libc-dev for the Hurd (closes: #157004).
+  * Add versioned expect build dependency.
+  * Tighten binutils dependency to 2.13.90.0.4.
+  * debian/patches/arm-tune.dpatch: Increase stack limit for configure.
+  * 3.2-0pre4 did build gnat-3.2 compilers for all architectures. Build-Depend
+    on gnat-3.2 now (closes: #156734).
+  * Remove bashism's in gcj-wrapper (closes: #157982).
+  * Add -cp and -classpath options to gij(1). Backport from HEAD (#146634).
+  * Add fastjar documentation.
+
+ -- Matthias Klose <doko at debian.org>  Fri, 30 Aug 2002 10:35:00 +0200
+
+gcc-3.2 (1:3.2ds0-0pre4) unstable; urgency=low
+
+  * Correct build dependency on gnat-3.1.
+
+ -- Matthias Klose <doko at debian.org>  Mon, 12 Aug 2002 01:21:58 +0200
+
+gcc-3.2 (1:3.2ds0-0pre3) unstable; urgency=low
+
+  * gcc-3.2 upstream prerelease.
+  * Disable all configure options, which are standard:
+    --enable-threads=posix --enable-long-long, --enable-clocale=gnu
+
+ -- Matthias Klose <doko at debian.org>  Fri,  9 Aug 2002 21:59:08 +0200
+
+gcc-3.2 (1:3.2ds0-0pre2) unstable; urgency=low
+
+  * gcc-3.2 snapshot (CVS 20020802).
+  * Fix g++-include dir.
+  * Don't install the locale files (temporarily, until we don't build
+    gcc-3.1 anymore).
+  * New package libgcj-common to avoid conflict with classpath package.
+
+ -- Matthias Klose <doko at debian.org>  Sat,  3 Aug 2002 09:08:34 +0200
+
+gcc-3.2 (1:3.2ds0-0pre1) unstable; urgency=low
+
+  * gcc-3.2 snapshot (CVS 20020729).
+
+ -- Matthias Klose <doko at debian.org>  Mon, 29 Jul 2002 20:36:54 +0200
+
+gcc-3.1 (1:3.1.1ds3-1) unstable; urgency=low
+
+  * gcc-3.1.1 release. Following this release we will have a gcc-3.2
+    release soon, which is gcc-3.1.1 plus some C++ ABI changes. Once
+    gcc-3.2 hits the archives, gcc-3.1.1 will go away.
+  * Don't build the sparc64 compiler. The packaging/patches are
+    currently broken.
+  * Add missing headers on m68k and powerpc.
+  * Install libgcc_s_nof on powerpc.
+  * Install libffi's copyright and doc files (closes: #152198).
+  * Remove dangling symlink (closes: #149002).
+  * libgcj3: Add a conflict to the classpath package (closes: #148664).
+  * README.C++: Fix URLs.
+  * libstdc++-dbg: Install into /usr/lib/debug, document it.
+  * backport-java-6865.dpatch: backport from HEAD.
+  * Fix typo in gcj docs (closes: #148890).
+  * Change libstdc++ include dir: /usr/include/c++/3.1.
+  * libstdc++-codecvt.dpatch: New patch (closes: #149776).
+  * Build libstdc++-pic package.
+  * Move 64bit libgcc in its own package libgcc1-64 (closes: #147249).
+  * Tighten glibc dependency.
+
+ -- Matthias Klose <doko at debian.org>  Mon, 29 Jul 2002 00:34:49 +0200
+
+gcc-3.1 (1:3.1.1ds2-0pre3) unstable; urgency=low
+
+  * Updated to CVS 2002-06-06 (gcc-3_1-branch).
+  * Updated s390-java patch (Gerhard Tonn).
+  * Don't use -O in STAGE1_FLAGS on m68k.
+  * Fix `-classpath' option in gcj-wrapper script (closes: #150142).
+  * Remove g++-cxa-atexit patch, use --enable-__cxa_atexit configure option.
+
+ -- Matthias Klose <doko at debian.org>  Wed,  3 Jul 2002 23:52:58 +0200
+
+gcc-3.1 (1:3.1.1ds1-0pre2) unstable; urgency=low
+
+  * Updated to CVS 2002-06-06 (gcc-3_1-branch), fixing an ObjC regression.
+  * Welcome m68k to bootstrap land (thanks to Andreas Schwab).
+  * Add javac wrapper for gcj-3.1 (Michael Koch).
+  * Remove dangling symlink in /usr/share/doc/gcc-3.1 (closes: #149002).
+
+ -- Matthias Klose <doko at debian.org>  Fri,  7 Jun 2002 00:26:05 +0200
+
+gcc-3.1 (1:3.1.1ds0-0pre1) unstable; urgency=low
+
+  * Updated to CVS 2002-05-31 (gcc-3_1-branch).
+  * Change priorities from fastjar and gij-wrapper-3.1 from 30 to 31.
+  * Update arm-tune patch.
+  * Install xmmintrin.h header on i386 (closes: #148181).
+  * Install altivec.h header on powerpc.
+  * Call correct gij in gij-wrapper (closes: #148662, #148682).
+
+ -- Matthias Klose <doko at debian.org>  Wed, 29 May 2002 22:47:40 +0200
+
+gcc-3.1 (1:3.1ds2-2) unstable; urgency=low
+
+  * Tighten binutils dependency.
+  * Fix libstdc include dir for multilibs (Dan Jacobowitz).
+
+ -- Matthias Klose <doko at debian.org>  Tue, 21 May 2002 08:03:49 +0200
+
+gcc-3.1 (1:3.1ds2-1) unstable; urgency=low
+
+  * GCC 3.1 release.
+  * Ada cannot be built by the autobuilders for the first time. Do it by hand.
+    gnatgcc and gnatbind need to be in the PATH.
+  * Build with CC=gnatgcc, when building the Ada compiler.
+  * Hurd fixes.
+  * Don't build the sparc64 compiler; the hack isn't up to date and glibc
+    isn't converted to use /lib64 and /usr/lib64.
+  * m68k-linux shows bootstrap comparision failures. If you want to build
+    the compiler anyway and ignore the bootstrap comparision failure, edit
+    debian/rules.patch and uncomment the patch to ignore the failure. See
+    /usr/share/doc/gcc-3.1/BOOTSTRAP_COMPARISION_FAILURE for the differences.
+
+ -- Matthias Klose <doko at debian.org>  Wed, 15 May 2002 09:53:00 +0200
+
+gcc-3.1 (1:3.1ds1-0pre6) unstable; urgency=low
+
+  * Build from the "final prerelease" tarball (gcc-3.1-20020508.tar.gz).
+  * Build gnat-3.1-doc package.
+  * Build fastjar package without building java packages.
+  * Hurd fixes.
+  * Updated sparc64-build patch.
+  * Add s390-ada patch (Gerhard Tonn).
+  * Undo the dwarf2 support for hppa from -0pre5.
+
+ -- Matthias Klose <doko at debian.org>  Thu,  9 May 2002 17:21:09 +0200
+
+gcc-3.1 (1:3.1ds0-0pre5) unstable; urgency=low
+
+  * Use /usr/include/g++-v3-3.1 as C++ include dir.
+  * Update s390-java patch (Gerhard Tonn).
+  * Tighten binutils dependency (gas patch for m68k-linux).
+  * Use gnat-3.1 as the gnat package name (as found in gcc/ada/gnatvsn.ads).
+  * dwarf2 support hppa: a snapshot of the gcc/config/pa directory
+    from the trunk dated 2002-05-02.
+
+ -- Matthias Klose <doko at debian.org>  Fri,  3 May 2002 22:51:37 +0200
+
+gcc-3.1 (1:3.1ds0-0pre4) unstable; urgency=low
+
+  * Use gnat-5.00w as the gnat package name (as found in gcc/ada/gnatvsn.ads).
+  * Don't build the shared libgnat library. It assumes an existing shared
+    libiberty library.
+  * Don't install the libgcjgc library.
+
+ -- Matthias Klose <doko at debian.org>  Thu, 25 Apr 2002 08:48:04 +0200
+
+gcc-3.1 (1:3.1ds0-0pre3) unstable; urgency=low
+
+  * Build fastjar on all architectures.
+  * Update m68k patches.
+  * Update s390-java patch (Gerhard Tonn).
+
+ -- Matthias Klose <doko at debian.org>  Sun, 14 Apr 2002 15:34:47 +0200
+
+gcc-3.1 (1:3.1ds0-0pre2) unstable; urgency=low
+
+  * Add Ada support. To successfully build, a working gnatbind and gcc
+    driver with Ada support is needed.
+  * Apply needed arm patches from 3.0.4.
+
+ -- Matthias Klose <doko at debian.org>  Sat,  6 Apr 2002 13:17:08 +0200
+
+gcc-3.1 (1:3.1ds0-0pre1) unstable; urgency=low
+
+  * First try for gcc-3.1.
+
+ -- Matthias Klose <doko at debian.org>  Mon,  1 Apr 2002 23:39:30 +0200
+
+gcc-3.0 (1:3.0.4ds3-6) unstable; urgency=medium
+
+  * Second try at fixing sparc build problems.
+
+ -- Phil Blundell <pb at debian.org>  Sun, 24 Mar 2002 14:49:26 +0000
+
+gcc-3.0 (1:3.0.4ds3-5) unstable; urgency=medium
+
+  * Enable java on ARM.
+  * Create missing directory to fix sparc build.
+
+ -- Phil Blundell <pb at debian.org>  Fri, 22 Mar 2002 20:21:59 +0000
+
+gcc-3.0 (1:3.0.4ds3-4) unstable; urgency=low
+
+  * Link with system zlib (closes: #136359).
+
+ -- Matthias Klose <doko at debian.org>  Tue, 12 Mar 2002 20:47:59 +0100
+
+gcc-3.0 (1:3.0.4ds3-3) unstable; urgency=low
+
+  * Build libf2c (pic and non-pic) with -mieee on alpha-linux.
+
+ -- Matthias Klose <doko at debian.org>  Sun, 10 Mar 2002 00:37:24 +0100
+
+gcc-3.0 (1:3.0.4ds3-2) unstable; urgency=medium
+
+  * Apply hppa-build patch (Randolph Chung). Closes: #136731.
+  * Make libgcc1 conflict/replace with libgcc1-sparc64. Closes: #135709.
+  * gij-3.0 provides the `java' command. Closes: #128947.
+  * Depend on binutils (>= 2.11.93.0.2-2), allows stripping of libgcj.a
+    again. Closes: #99307.
+  * Update README.cross pointing to the README of the toolchain-source
+    package.
+
+ -- Matthias Klose <doko at debian.org>  Wed,  6 Mar 2002 21:53:34 +0100
+
+gcc-3.0 (1:3.0.4ds3-1) unstable; urgency=low
+
+  * Final gcc-3.0.4 release.
+  * debian/rules.d/binary-java.mk: Fix dormant typo, exposed by removing the
+    duplicate libgcj dependency and adding the gij-3.0 package.
+    Closes: #134005.
+  * New patch by Phil Blundell to fix scalapack build error on m68k.
+
+ -- Matthias Klose <doko at debian.org>  Wed, 20 Feb 2002 23:59:43 +0100
+
+gcc-3.0 (1:3.0.4ds2-0pre020210) unstable; urgency=low
+
+  * Make the base package dependent on the binary-arch target. Closes: #133433.
+  * Get libstdc++ on arm woring (define _GNU_SOURCE). Closes: #133435.
+
+ -- Matthias Klose <doko at debian.org>  Mon, 11 Feb 2002 20:31:12 +0100
+
+gcc-3.0 (1:3.0.4ds2-0pre020209) unstable; urgency=high
+
+  * Update to CVS sources (20020209 gcc-3_0-branch).
+  * Apply patch to fix bootstrap error on arm-linux (submitted upstream
+    by Phil Blundell). Closes: #130422.
+  * Make base package architecture any.
+  * Decouple versioned shlib dependencies from release number for
+    libobjc as well.
+
+ -- Matthias Klose <doko at debian.org>  Sat,  9 Feb 2002 01:30:11 +0100
+
+gcc-3.0 (1:3.0.4ds1-0pre020203) unstable; urgency=medium
+
+  * One release critical bug outstanding:
+    - bootstrap error on arm.
+  * Update to CVS sources (20020203 gcc-3_0-branch).
+  * Fixed upstream: PR c/3504: Correct documentation of __alignof__.
+    Closes: #85445.
+  * Remove libgcc-powerpc patch, integrated upstream (closes: #131977).
+  * Tighten binutils build dependency (to address #126162).
+  * Move jv-convert to gcj package (closes: #131985).
+
+ -- Matthias Klose <doko at debian.org>  Sun,  3 Feb 2002 14:47:14 +0100
+
+gcc-3.0 (1:3.0.4ds0-0pre020127) unstable; urgency=low
+
+  * Two release critical bugs outstanding:
+    - bootstrap error on arm.
+    - bus errors for C++ and java executables on sparc (see the testsuite
+      results).
+  * Update to CVS sources (20020125 gcc-3_0-branch).
+  * Enable java support for s390 architecture (patch from Gerhard Tonn).
+  * Updated NEWS file for 3.0.3.
+  * Disable building the gcc-sparc64, but build a multilibbed compiler
+    for sparc as the default.
+  * Disabled the subreg-byte patch for sparc (request from Ben Collins).
+  * Fixed reference to libgcc1 package in README (closes: #126218).
+  * Do recommend libc-dev, not depend on it. For low-end or embedded systems
+    the dependency on libc-dev can make the difference between
+    having enough or having too little space to build a kernel.
+  * README.cross: Updated by Hakan Ardo.
+  * Decouple versioned shlib dependencies from release number. Closes: #118391.
+  * Fix diversions for gcc-3.0-sparc64 package (closes: #128178),
+    unconditionally remove `sparc64-linux-gcc' alternative.
+  * g77/README.libg2c.Debian: New file mentioning `libg2c-pic'. The next
+    g77 version (3.1) does build a static and shared library (closes: #104250).
+  * Fix formatting errors in the synopsis of the java man pages. Maybe the
+    reason for #127571. Closes: #127571.
+  * fastjar: Fail for the (currently incorrect) -u option. Addresses: #116145.
+    Add alternative for `jar' using priority 30 (closes: #118648).
+  * jv-convert: Add --help option and man page. Backport from HEAD branch.
+  * libgcj2-dev: Remove duplicate dependency (closes: #127805).
+  * Giving up and make just another new package gij-X.Y with only the gij-X.Y
+    binary for policy conformance (closes: #127111).
+  * gij: Provides an alternative for `java' (priority 30) using a wrapper
+    script (Stephen Zander) (closes: #128974). Added simple manpage.
+
+ -- Matthias Klose <doko at debian.org>  Sun, 27 Jan 2002 13:33:41 +0100
+
+gcc-3.0 (1:3.0.3ds3-1) unstable; urgency=low
+
+  * Final gcc-3.0.3 release.
+  * Do not compress .txt files in libstdc++ docs referenced from html
+    pages (closes: #124136).
+  * libstdc++-dev suggests libstdc++-doc.
+  * debian/patches/gcc-ia64-NaT.dpatch: Update (closes: #123685).
+
+ -- Matthias Klose <doko at debian.org>  Fri, 21 Dec 2001 02:54:11 +0100
+
+gcc-3.0 (1:3.0.3ds2-0pre011215) unstable; urgency=low
+
+  * Update to CVS sources (011215).
+  * libstdc++ documentation updated upstream (closes: #123790).
+  * debian/patches/gcc-ia64-NaT.dpatch: Disable. Fixes bootstrap error
+    on ia64 (#123685).
+
+ -- Matthias Klose <doko at debian.org>  Sat, 15 Dec 2001 14:43:21 +0100
+
+gcc-3.0 (1:3.0.3ds1-0pre011210) unstable; urgency=medium
+
+  * Update to CVS sources (011208).
+  * Supposed to fix powerpc build error (closes: #123155).
+
+ -- Matthias Klose <doko at debian.org>  Thu, 13 Dec 2001 07:26:05 +0100
+
+gcc-3.0 (1:3.0.3ds0-0pre011209) unstable; urgency=medium
+
+  * Update to CVS sources (011208). Frozen for upstream 3.0.3 release.
+  * Apply contrib/PR3145.patch, a backport of Nathan Sidwell's patch to
+    fix PR c++/3145, the infamous "virtual inheritance" bug. This affected
+    especially KDE2 (eg. artsd). Franz Sirl <Franz.Sirl-kernel at lauterbach.com>
+  * cc1plus segfault in strength reduction fixed upstream. Closes: #122547.
+  * debian/patches/gcc-ia64-NaT.dpatch: Add patch to avoid a bug that can
+    cause miscompiled userapps to crash the kernel. Closes: #121924.
+  * Reenable shared libgcc for powerpc. Fixed upstream.
+    http://gcc.gnu.org/ml/gcc-patches/2001-11/msg00340.html
+    debian/patches/libgcc-powerpc.dpatch: New patch.
+  * Add upstream changelogs.
+  * Remove gij alternative. Move to gij package.
+
+ -- Matthias Klose <doko at debian.org>  Sun,  9 Dec 2001 09:36:48 +0100
+
+gcc-3.0 (1:3.0.2ds4-4) unstable; urgency=medium
+
+  * Disable building of libffi on mips and mipsel.
+    (closes: #117503).
+  * Enable building of shared libgcc on s390
+    (closes: #120452).
+
+ -- Christopher C. Chimelis <chris at debian.org>  Sat, 1 Dec 2001 06:15:29 -0500
+
+gcc-3.0 (1:3.0.2ds4-3) unstable; urgency=medium
+
+  * Fix logic to build libffi without java (closes: #117503).
+
+ -- Matthias Klose <doko at debian.org>  Sun,  4 Nov 2001 14:34:50 +0100
+
+gcc-3.0 (1:3.0.2ds4-2) unstable; urgency=medium
+
+  * Enable java for ia64 (Jeff Licquia). Closes: #116798.
+  * Allow building of libffi without gcj (Jeff Licquia).
+    New libffi packages for arm hurd-i386 mips mipsel,
+    still missing: hppa, s390.
+  * debian/NEWS.gcc: Add 3.0.2 release notes.
+  * debian/patches/hppa-align.dpatch: New patch from Alan Modra,
+    submitted by Randolph Tausq.
+
+ -- Matthias Klose <doko at debian.org>  Thu, 25 Oct 2001 23:59:31 +0200
+
+gcc-3.0 (1:3.0.2ds4-1) unstable; urgency=medium
+
+  * Final gcc-3.0.2 release. The source tarball is not the released
+    tarball, but taken from CVS 011024).
+  * Remove patch for s390, included upstream.
+
+ -- Matthias Klose <doko at debian.org>  Wed, 24 Oct 2001 00:49:40 +0200
+
+gcc-3.0 (1:3.0.2ds3-0pre011014) unstable; urgency=low
+
+  * Update to CVS sources (011014). Frozen for upstream 3.0.2 release.
+    Closes: #109351, #114099, #114216, #105741 (allegro3938).
+  * Added debian/patches/fastjar.dpatch, which makes fastjar extract
+    filenames correctly (previously, some had incorrect names on extract).
+    Closes: #113236.
+  * Priorities fixed in the past (closes: #94404).
+
+ -- Matthias Klose <doko at debian.org>  Sun, 14 Oct 2001 13:19:43 +0200
+
+gcc-3.0 (1:3.0.2ds2-0pre010923) unstable; urgency=low
+
+  * Bootstraps on powerpc again (closes: #112777).
+
+ -- Matthias Klose <doko at debian.org>  Sun, 23 Sep 2001 01:32:11 +0200
+
+gcc-3.0 (1:3.0.2ds2-0pre010922) unstable; urgency=low
+
+  * Update to CVS sources (010922).
+  * Fixed upstream (closes: #111801). #105569 on hppa.
+  * Update hppa patch (Matt Taggart).
+  * Fix libstdc++-dev package description (closes: #112758).
+  * debian/rules.d/binary-objc.mk: Fix build error (closes: #112462).
+  * Make gobjc-3.0 conflict with gcc-3.0-sparc64 (closes: #111772).
+
+ -- Matthias Klose <doko at debian.org>  Sat, 22 Sep 2001 09:34:49 +0200
+
+gcc-3.0 (1:3.0.2ds1-0pre010908) unstable; urgency=low
+
+  * Update to CVS sources (010908).
+  * Update hppa patch (Matt Taggart).
+  * Depend on libgc6-dev, not libgc5-dev, which got obsolete (during
+    the freeze ...). However adds s390 support (closes: #110189).
+  * debian/patches/m68k-reload.dpatch: New patch (Roman Zippel).
+    Fixes #89023.
+  * debian/patches/gcc-sparc.dpatch: New patch ("David S. Miller").
+    Fixes libstdc++ testsuite failures on sparc.
+
+ -- Matthias Klose <doko at debian.org>  Sat, 8 Sep 2001 14:26:20 +0200
+
+gcc-3.0 (1:3.0.2ds0-0pre010826) unstable; urgency=low
+
+  * gcc-3.0-nof: Fix symlink to gcc-3.0-base doc directory.
+  * debian/patches/gcj-without-rpath: New patch.
+  * Remove self dependency on libgcj package.
+  * Handle diversions for upgrades from 3.0 and 3.0.1 -> 3.0.2
+    in gcc-3.0-sparc64 package.
+  * Build libg2c.a with -fPIC -DPIC and name the result libg2c-pic.a.
+    Link with this library to avoid linking with non-pic code.
+    Use this library when building dynamically loadable objects (python
+    modules, gimp plugins, ...), which need to be linked against g2c or
+    a library which is linked against g2c (i.e. lapack).
+    Packages needing '-lg2c-pic' must have a build dependency on
+    'g77-3.0 (>= 1:3.0.2-0pre010826).
+
+ -- Matthias Klose <doko at debian.org>  Sun, 26 Aug 2001 13:59:03 +0200
+
+gcc-3.0 (1:3.0.2ds0-0pre010825) unstable; urgency=low
+
+  * Update to CVS sources (010825).
+  * Add libc6-dev-sparc64 to gcc-3.0-sparc64 and to sparc build dependencies.
+  * Remove conflicts on egcc package (closes: #109718).
+  * Fix gcc-3.0-nof dependency.
+  * s390 patches against gcc-3.0.1 (Gerhard Tonn).
+  * debian/control: Require binutils (>= 2.11.90.0.27)
+
+ -- Matthias Klose <doko at debian.org>  Sat, 25 Aug 2001 10:59:15 +0200
+
+gcc-3.0 (1:3.0.1ds3-1) unstable; urgency=low
+
+  * Final gcc-3.0.1 release.
+  * Changed upstream: default of -flimit-inline is 600 (closes: #106716).
+  * Add fastjar man page (submitted by "The Missing Man Pages Project",
+    http://www.netmeister.org/misc/m2p2i/) (closes: #103051).
+  * Fixed in last upload as well: #105246.
+  * debian/patches/cpp-memory-leak.dpatch: New patch
+  * Disable installation of shared libgcc on s390 (Gerhard Tonn).
+
+ -- Matthias Klose <doko at debian.org>  Mon, 20 Aug 2001 20:47:13 +0200
+
+gcc-3.0 (1:3.0.1ds2-0pre010811) unstable; urgency=high
+
+  * Update to CVS sources (010811). Includes s390 support.
+  * Add xlibs-dev to Build-Depends (libgcj).
+  * Enable java for powerpc, disable java for ia64.
+  * Enable ObjC garbage collection for all archs, which have a libgc5-dev
+    package.
+  * New patch libstdc++-codecvt (Michael Piefel) (closes: #104614).
+  * Don't strip static libgcj library (work around binutils bug #107812).
+  * Handle diversions for upgrade 3.0 -> 3.0.1 in gcc-3.0-sparc64 package
+    (closes: #107569).
+
+ -- Matthias Klose <doko at debian.org>  Sat, 11 Aug 2001 20:42:15 +0200
+
+gcc-3.0 (1:3.0.1ds1-0pre010801) unstable; urgency=high
+
+  * Update to CVS sources (010801). (closes: #107012).
+  * Remove build dependency on non-free graphviz and include pregenerated
+    docs (closes: #107124).
+  * Fixed in 3.0.1 (closes: #99307).
+  * Updated m68k-updates patch (Roman Zippel).
+  * Another fix for ia64 packaging bits (Randolph Chung).
+
+ -- Matthias Klose <doko at debian.org>  Tue, 31 Jul 2001 21:52:55 +0200
+
+gcc-3.0 (1:3.0.1ds0-0pre010727) unstable; urgency=high
+
+  * Update to CVS sources (010727).
+  * Add epoch to source version. Change '.dsx' to 'dsx', so that
+    3.1.1ds0 gt 3.1ds7 (closes: #106538).
+
+ -- Matthias Klose <doko at debian.org>  Sat, 28 Jul 2001 09:56:29 +0200
+
+gcc-3.0 (3.0.1.ds0-0pre010723) unstable; urgency=high
+
+  * ia64 packaging bits (Randolph Chung) (closes: #106252).
+
+ -- Matthias Klose <doko at debian.org>  Mon, 23 Jul 2001 23:02:03 +0200
+
+gcc-3.0 (3.0.1.ds0-0pre010721) unstable; urgency=high
+
+  * Update to CVS sources (010721).
+    - Remove patches applied upstream: libstdc++-limits.dpatch,
+      objc-data-references
+    - Updated other patches.
+  * Fix gij alternative (closes: #103468, #103883).
+  * Patch to fix bootstrap on sparc (closes: #103568).
+  * Corrected (closes: #105371) and updated README.Debian.
+  * m68k patches for sucessful bootstrap (Roman Zippel).
+  * Add libstdc++v3 porting hints to README.Debian and README.C++.
+  * m68k md fix (#105622) (Roman Zippel).
+  * debian/rules2: Disable non-functional ulimit on Hurd (#105884).
+  * debian/control: Require binutils (>= 2.11.90.0.24)
+  * Java is enabled for alpha (closes: #87300).
+
+ -- Matthias Klose <doko at debian.org>  Sun, 22 Jul 2001 08:24:04 +0200
+
+gcc-3.0 (3.0.ds9-4) unstable; urgency=high
+
+  * Move this version to testing ASAP. testing still has a prerelease
+    version with now incompatible ABI's. If sparc doesn't build,
+    then IMHO it's better to remove it from testing.
+  * debian/control.m4: Set uploaders field. Adjust description of
+    gcc-3.0 (binary) package (closes: #102271, #102620).
+  * Separate gij.1 in it's own pseudo man page (closes: #99523).
+  * debian/patches/java-manpages.dpatch: New patch.
+  * libgcj: Install unversioned gij.
+
+ -- Matthias Klose <doko at debian.org>  Tue,  3 Jul 2001 07:38:08 +0200
+
+gcc-3.0 (3.0.ds9-3) unstable; urgency=high
+
+  * Reenable configuration with posix threads on i386 (lost in hurd-i386
+    merge).
+
+ -- Matthias Klose <doko at debian.org>  Sun, 24 Jun 2001 22:21:45 +0200
+
+gcc-3.0 (3.0.ds9-2) unstable; urgency=medium
+
+  * Move this version to testing ASAP. testing still has a prerelease
+    version with now incompatible ABI's.
+  * Add libgcc0 and libgcc300 to the build conflicts (#102041).
+  * debian/README.FIRST: Removed (#101534).
+  * Updated subreg-byte patch (doc files).
+  * Disable java for the Hurd, mips and mipsel (#101570).
+  * Patch for building on the Hurd (#101708) (Jeff Bailey <jbailey at nisa.net>).
+  * Packaging fixes for the Hurd (#101711) (Jeff Bailey <jbailey at nisa.net>).
+  * Include pregenerated doxygen (1.2.6) docs for libstdc++-v3 (#101557).
+    The current doxygen-1.2.8.1 segaults.
+  * C++: Enable -fuse-cxa-atexit by default (#101901).
+  * Correct mail address in gccbug (#101743).
+  * Make rules resumable after failure in binary-xxx targets (#101637).
+
+ -- Matthias Klose <doko at debian.org>  Sun, 24 Jun 2001 16:04:53 +0200
+
+gcc-3.0 (3.0.ds9-1) unstable; urgency=low
+
+  * Final 3.0 release.
+  * Update libgcc version number (#100983, #100988, #101069, #101115, #101328).
+  * Updated hppa-build patch (Matt Taggart <taggart at carmen.fc.hp.com>).
+  * Disable java for hppa.
+  * Updated subreg-byte patch for sparc (Ben Collins).
+
+ -- Matthias Klose <doko at debian.org>  Mon, 18 Jun 2001 18:26:04 +0200
+
+gcc-3.0 (3.0.ds8-0pre010613) unstable; urgency=low
+
+  * Update patches for recent (010613 23:13 +0200) CVS sources.
+  * Fix packaging bugs (#100459, #100447, #100483).
+  * Build-Depend on gawk, mawk doesn't work well with test_summary.
+
+ -- Matthias Klose <doko at debian.org>  Wed, 13 Jun 2001 23:13:38 +0200
+
+gcc-3.0 (3.0.ds7-0pre010609) unstable; urgency=low
+
+  * Fix build dependency for the hurd (#99164).
+  * Update patches for recent (010609) CVS sources.
+  * Disable java on powerpc (link error in libjava).
+  * gcc-3.0-base.postinst: Don't prompt for non-interactive installs (#100110).
+
+ -- Matthias Klose <doko at debian.org>  Sun, 10 Jun 2001 09:45:57 +0200
+
+gcc-3.0 (3.0.ds6-0pre010526) unstable; urgency=high
+
+  * Urgency "high" for replacing the gcc-3.0 snapshots in testing, which
+    now are incompatile due to the changed ABIs.
+  * Upstream begins tagging with "gcc-3_0_pre_2001mmdd".
+  * Tighten dependencies to install only binary packages derived from
+    one source (#98851). Tighten libc6-dev dependency to match libc6.
+
+ -- Matthias Klose <doko at debian.org>  Sun, 27 May 2001 11:35:31 +0200
+
+gcc-3.0 (3.0.ds6-0pre010525) unstable; urgency=low
+
+  * ATTENTION: The ABI (exception handling) changed. No upgrade path from
+    earlier snapshots (you had been warned in the postinst ...)
+    Closing #93597, #94576, #96448, #96461.
+    You have to rebuild
+  * HELP is appreciated for scanning the Debian BTS and sending followups
+    to bug reports!!!
+  * Should we name debian gcc uploads? What about a "still seeking
+    g++ maintainer" upload?
+  * Fixed in gcc-3.0: #97030
+  * Update patches for recent (010525) CVS sources.
+  * Make check depend on build target (fakeroot problmes).
+  * debian/rules.d/binary-libgcc.mk: new file, build first.
+  * Free memory detection on the hurd for running the testsuite.
+  * Update debhelper build dependency.
+  * libstdc++-doc: Include doxygen generated docs.
+  * Fix boring packaging bugs, too tired for appropriate changelogs ...
+    #93343, #96348, #96262, #97134, #97905, #96451, #95812, #93157
+  * Fixed bugs: #87000.
+
+ -- Matthias Klose <doko at debian.org>  Sat, 26 May 2001 23:10:42 +0200
+
+gcc-3.0 (3.0.ds5-0pre010510) unstable; urgency=low
+
+  * Update patches for recent (010506) CVS sources.
+  * New version of source, as of 2001-05-10
+  * New version of gpc source, as of 2001-05-06 (disabled by default).
+  * Make gcc-3.0-sparc64 provide an alternative for sparc64-linux-gcc,
+    since it can build kernels just fine (it seems)
+  * Add hppa patch from Matt Taggart
+  * Fix objc info inclusion...now merged with gcc info
+  * Do not install the .la for libstdc++, since it confuses libtool linked
+    applications when libstdc++3-dev and libstdc++2.10-dev are both
+    installed (closes #97905).
+  * Fixed gcc-base and libgcc section/prio to match overrides
+
+ -- Ben Collins <bcollins at debian.org>  Mon,  7 May 2001 00:08:52 +0200
+
+gcc-3.0 (3.0.ds5-0pre010427) unstable; urgency=low
+
+  * Fixed priority for fastjar from optional to extra
+  * New version of source, as of 2001-04-27
+  * Fix description of libgcj-dev
+  * libffi-install: Make libffi installable
+  * Add libffi and libffi-dev packages. libffi is only enabled for java
+    targets right now. Perhaps more will be enabled later.
+  * Fixes to build cross compiler package (for avr)
+    (Hakan Ardo <hakan at debian.org>).
+  * Better fixincludes description (#93157).
+  * Remove all remnants of libg++
+  * Remove all hacks around libstdc++ version. Since we are strictly v3 now,
+    we can treat it like a normal shared lib, and not worry about all those
+    ABI changes.
+  * Remove all cruft control scripts. Note, debhelper will create scripts
+    that it needs to. It will do the doc link stuff and the ldconfig stuff
+    explicitly.
+  * Clean up the SONAME parsing stuff, make it a little more cleaner over
+    all the lib packages
+  * Make libffi install when built (IOW, whenever java is enabled). This
+    should obsolete the libffi package, which is old and broken
+  * Revert to normal sonames, except for ia64 (for now)
+  * Remove all references to dh_testversion, since they are deprecated for
+    Build-Depends
+  * Fix powerpc nof build
+  * Remove all references to the MULTILIB stuff, since the arches are
+    using specialized builds anyway (nof, softfloat).
+  * Added 64bit sparc64 package (gcc-3.0-sparc64, libgcc0-sparc64)
+  * Removed obsolete shlibs.local file
+
+ -- Ben Collins <bcollins at debian.org>  Sun, 15 Apr 2001 21:33:15 -0400
+
+gcc-3.0 (3.0.ds4-0pre010403) unstable; urgency=low
+
+  * debian/README: Updated for gcc-3.0
+  * debian/rules.patch: Added subreg-byte patch for sparc
+  * debian/rules.unpack: Update to current CVS for gcc tarball name
+  * debian/patches/subreg-byte.dpatch: sparc subreg-byte support
+  * debian/patches/gcc-rawhide.dpatch: Removed
+    debian/patches/gpc-2.95.dpatch: Removed
+    debian/patches/sparc32-rfi.dpatch: Removed
+    debian/patches/temporary.dpatch: Removed
+  * Moving to unstable now
+  * debian/patches/gcc-ppc-disable-shared-libgcc.dpatch: New patch,
+    disables shared libgcc for powerpc target, since it isn't compatible
+    with the EABI objects.
+  * Create $(with_shared_libgcc) var
+  * debian/rules.d/binary-gcc.mk: Use this new variable to determine if
+    the libgcc package actually has any files
+
+ -- Ben Collins <bcollins at debian.org>  Tue,  3 Apr 2001 23:00:55 -0400
+
+gcc-3.0 (3.0.ds2-0pre010223) experimental; urgency=low
+
+  * New snapshot. Use distinct shared object names for shared libraries:
+    we don't know if binary API's still change until the final release.
+  * Versioned package names.
+  * debian/control.m4: New file. Add gcc-base, libgcc0, libobjc1,
+    libstdc++-doc, libgcj1, libgcj1-dev, fastjar, fixincludes packages.
+    Remove gcc-docs package.
+  * debian/gcov.1: Remove.
+  * debian/*: Remove 2.95.x support. Prepare for 3.0.
+  * debian/patches: Remove 2.95.x patches.
+  * Changed source package name. It's not allowed anymore to overwrite
+    source packages with different content. Introducing a 'debian source
+    element' (.ds<num>), which is stripped again from the version number
+    for the binary packages.
+  * Fixed bugs and added functionality:
+    #26436, #27878, #33786, #34876, #35477, #42662, #46181, #42989,
+    #47981, #48530, #50529, #51227, #51456, #51651, #52382, #53698,
+    #55291, #55967, #56867, #58219, #59005, #59232, #59776, #64628,
+    #65687, #67631, #68632, #68963, #68987, #69530, #72933, #75120,
+    #75759, #76645, #76827, #83221, #87540
+  * libgcj fixes: 42894, #51266, #68560, #71187, #79984
+
+ -- Matthias Klose <doko at debian.org>  Sat, 24 Feb 2001 13:41:11 +0100
+
+gcc-2.95 (2.95.3-2.001222) experimental; urgency=low
+
+  * New upstream version 2.95.3 experimental (CVS 20001222).
+  * debian/control.in: Versioned package names, removal of snapshot logic.
+    Remove fake gcc-docs package.
+  * Reserve -1 release numbers for woody.
+  * Updated to gpc-20001218.
+
+ -- Matthias Klose <doko at debian.org>  Fri, 22 Dec 2000 19:53:03 +0100
+
+gcc (2.95.2-20) unstable; urgency=low
+
+    * Apply patch from gcc-2_95-branch; remove ulimit for make check.
+
+ -- Matthias Klose <doko at debian.org>  Sun, 10 Dec 2000 17:01:13 +0100
+
+gcc (2.95.2-19) unstable; urgency=low
+
+  * Added testsuite-20001207 from current snapshots. We'll need results
+    for 2.95.2 to make sure there are no regressions against that release.
+    Dear build daemons and porters to other architectures, please send an
+    email to gcc-testresults at gcc.gnu.org.
+    You can do this by running "debian/rules mail-summary".
+  * Updated to gpc-20001206.
+  * Added S/390 patch prepared by Chu-yeon Park <kokids at debian.org> (#78983).
+  * debian/patches/libio.dpatch: Fix iostream doc (fixes #77647).
+  * debian/patches/gcc-doc.dpatch: Update URL (fixes #77542).
+  * debian/patches/gcc-reload1.dpatch Patch from the gcc-bug list which
+    fixes a problem in "long long" on i[345]86 (i686 was not affected).
+
+ -- Matthias Klose <doko at debian.org>  Sat,  9 Dec 2000 12:30:32 +0100
+
+gcc (2.95.2-18) unstable; urgency=low
+
+  * debian/control.in: Fix syntax errors (fixes #76146, #76458).
+    Disable gpc on the hurd by request (#75686).
+  * debian/patches/arm-various.dpatch: Patches from Philip Blundell
+    for ARM arch (fixes #75801).
+  * debian/patches/gcc-alpha-mi-thunk.dpatch: Patches from Chris Chimelis
+    for alpha arch.
+  * debian/patches/g77-docs.dpatch: Adjust g77 docs (fixes #72594).
+  * Update gpc to gpc-20001118.
+  * Reenable gpc for alpha.
+  * debian/README.C++: Merge debian/README.libstdc++ and C++ FAQ information
+    provided by Matt Zimmermann.
+  * Build gcj only on architectures, where libgcj-2.95.1 can be built as well.
+    Probably needs some adjustments ...
+  * Conditionalize for chill, fortran, java, objc and chill.
+
+  * NOT APPLIED:
+    debian/patches/libstdc++-bastring.dpatch: Apply fix (fixes #75759).
+
+ -- Matthias Klose <doko at debian.org>  Sun, 19 Nov 2000 10:40:41 +0100
+
+gcc (2.95.2-17) unstable; urgency=low
+
+  * Disable gpc for alpha.
+  * Include gpc-cpp in gpc package (fixes #74492).
+  * Don't build gcc-docs compatibility package anymore.
+
+ -- Matthias Klose <doko at debian.org>  Wed, 11 Oct 2000 06:16:53 +0200
+
+gcc (2.95.2-16) unstable; urgency=low
+
+  * Applied the emdebian/cross compiler patch and documentation
+    (Frank Smith <smith at amirix.com>).
+  * Applied patch for avr target (Hakan Ardo <hakan at debian.org>).
+  * debian/control.in: Add awk to Build-Depends.
+    Tighten libc6-dev dependency for libstdc++-dev (fixes #73031,
+    #72531, #72534).
+  * Disable libobjc_gc for m68k again (fixes #74380).
+  * debian/patches/arm-namespace.dpatch: Apply patch from Philip
+    Blundell <pb at futuretv.com> to fix name space pollution on arm
+    (fixes #70937).
+  * Fix more warnings in STL headers (fixes #69352, #71943).
+
+ -- Matthias Klose <doko at debian.org>  Mon,  9 Oct 2000 21:51:41 +0200
+
+gcc (2.95.2-15) unstable; urgency=low
+
+  * debian/control.in: Add libgc5-dev to build depends (fixes #67015).
+  * debian/rules.def: Build GC enabled ObjC runtime for sparc.
+  * Bug #58741 fixed (in some version since 2.95.2-5).
+  * debian/control.in: Recommend librx1g-dev, libgmp2-dev, libncurses5-dev
+    (unit dependencies).
+  * Patches from Marcus Brinkmann for the hurd (fixes #67763):
+    - debian/rules.defs: Disable objc_gc on hurd-i386.
+      Disable libg++ on GNU systems.
+    - debian/rules2: Set correct names of libstdc++/libg++
+      libraries on GNU systems.
+      Write out correct shlibs and shlibs.local file content.
+    - Keep _G_config.h for the Hurd.
+  * Apply patch for ObjC linker warnings.
+  * Don't apply gcj backport patch for sparc.
+  * Apply libio compatability patch
+  * debian/glibcver.sh: generate appropriate version for glibc
+  * debian/rules.conf: for everything after glibc 2.1, we always append
+    "-glibc$(ver)" to the C++ libs for linux.
+  * Back down gpc to -13 version (-14 wont compile on anything but i386
+    and m68k becuase of gpc).
+  * Remove extraneous and obsolete sparc64 patches/files from debian/*
+
+ -- Ben Collins <bcollins at debian.org>  Thu, 21 Sep 2000 08:08:35 -0400
+
+gcc-snapshot (20000901-2.2) experimental; urgency=low
+
+  * New snapshot.
+  * debian/rules2: Move tradcpp0 to cpp package.
+
+ -- Matthias Klose <doko at debian.org>  Sat,  2 Sep 2000 01:14:28 +0200
+
+gcc-snapshot (20000802-2.1) experimental; urgency=low
+
+  * New snapshot.
+  * debian/rules2: Fixes. tradcpp0 is in gcc package, not cpp.
+
+ -- Matthias Klose <doko at debian.org>  Thu,  3 Aug 2000 07:40:05 +0200
+
+gcc-snapshot (20000720-2) experimental; urgency=low
+
+  * New snapshot.
+  * Enable libstdc++-v3.
+  * debian/rules2: Don't use -D for /usr/bin/install.
+
+ -- Matthias Klose <doko at debian.org>  Thu, 20 Jul 2000 22:33:37 +0200
+
+gcc (2.95.2-14) unstable; urgency=low
+
+  * Update gpc patch.
+
+ -- Matthias Klose <doko at debian.org>  Wed,  5 Jul 2000 20:51:16 +0200
+
+gcc (2.95.2-13) frozen unstable; urgency=low
+
+  * Update debian/README: document how to compile 2.0.xx kernels; don't
+    register gcc272 as an alternative for gcc (closes #62419).
+    Clarify compiler setup (closes #65548).
+  * debian/control.in: Make libstdc++-dev depend on current version of g++.
+  * Undo CVS update from release -8 (problems on alpha, #55263).
+
+ -- Matthias Klose <doko at debian.org>  Mon, 19 Jun 2000 23:06:48 +0200
+
+gcc (2.95.2-12) frozen unstable; urgency=low
+
+  * debian/gpc.postinst: Correct typo introduced with -11 (fixes #64193).
+  * debian/patches/gcc-rs600.dpatch: ppc codegen fix (fixes #63933).
+
+ -- Matthias Klose <doko at debian.org>  Sun, 21 May 2000 15:56:05 +0200
+
+gcc (2.95.2-11) frozen unstable; urgency=medium
+
+  * Upload to unstable again (fixes critical #63784).
+  * Fix doc-base files (fixes important #63810).
+  * gpc wasn't built in -10 (fixes #63977).
+  * Make /usr/bin/pc an alternative (fixes #63888).
+  * Add SYSCALLS.c.X to gcc package.
+
+ -- Matthias Klose <doko at debian.org>  Sun, 14 May 2000 22:17:44 +0200
+
+gcc (2.95.2-10) frozen; urgency=low
+
+  * debian/control.in: make gcc conflict on any version of egcc
+    (slink to potato upgrade problem, fixes grave #62084).
+  * Build protoize programs, separate out in new package (fixes #59436,
+    #62911).
+  * Create dummy gcc-docs package for smooth update from slink (fixes #62537).
+  * Add doc-base support for all -doc packages (fixes #63380).
+
+ -- Matthias Klose <doko at debian.org>  Mon,  1 May 2000 22:24:28 +0200
+
+gcc (2.95.2-9) frozen unstable; urgency=low
+
+  * Disable the sparc-bi-arch.dpatch (patch from Ben Collins, built
+    for sparc as NMU 8.1) (fixes critical #61529 and #61511).
+    "Seems that when you compile gcc 2.95.x for sparc64-linux and compile
+     sparc32 programs, the code is not the same as sparc-linux compile for
+     sparc32 (this is a bug, and is fixed in gcc 2.96 CVS)."
+  * debian/patches/gcj-vs-iconv.dpatch: Option '--encoding' for
+    encoding of input files. Patch from Tom Tromey  <tromey at cygnus.com>
+    backported to 2.95.2 (fixes #42895).
+    Compile a Latin-1 encoded file with `gcj --encoding=Latin1 ...'.
+  * debian/control.in: gcc, g++ and gobjc suggest their corresponding
+    task packages (fixes #59623).
+
+ -- Matthias Klose <doko at debian.org>  Sat,  8 Apr 2000 20:19:15 +0200
+
+gcc (2.95.2-8) frozen unstable; urgency=low
+
+  * Post-2.95.2 CVS updates of the gcc-2_95-branch until 20000313.
+  * debian/rules2: configure with --enable-java-gc=no for sparc. Fixes
+    gcj side of #60535.
+  * debian/rules.patch: Disable gcc-emit-rtl patch for all archs but
+    alpha. Disable g++-is-tree patch ("just for 2.95.1").
+  * debian/README: Update for gcc-2.95.
+
+ -- Matthias Klose <doko at debian.org>  Mon, 27 Mar 2000 00:03:16 +0200
+
+gcc (2.95.2-7) frozen unstable; urgency=low
+
+  * debian/patches/gcc-empty-struct-init.dpatch; Apply patch from
+    http://gcc.gnu.org/ml/gcc-patches/2000-02/msg00637.html. Fixes
+    compilation of 2.3.4x kernels.
+  * debian/patches/gcc-emit-rtl.dpatch: Apply patch from David Huggins-Daines
+    <dhuggins at linuxcare.com> (backport from 2.96 CVS to fix #55263).
+  * debian/patches/gcc-pointer-arith.dpatch: Apply patch from Jim Kingdon
+    <kingdon at redhat.com> (backport from 2.96 CVS to fix #54951).
+
+ -- Matthias Klose <doko at debian.org>  Thu,  2 Mar 2000 23:16:43 +0100
+
+gcc (2.95.2-6) frozen unstable; urgency=low
+
+  * Post-2.95.2 CVS updates of the gcc-2_95-branch until 20000220.
+  * Remove dangling symlink probably left over from libstdc++2.9
+    package (fixes #53661).
+  * debian/patches/gcc-alpha-complex-float.dpatch: Fixed patch by
+    David Huggins-Daines (fixes #58486).
+  * debian/g++.{postinst,prerm}: Remove outdated g++FAQ registration
+    (fixes #58253).
+  * debian/control.in: gcc-doc replaces gcc-docs (fixes #58108).
+  * debian/rules2: Include some fixed headers (asm, bits, linux, ...).
+  * debian/patches/{gcc-alpha-ev5-fix,libstdc++-valarray}.dpatch: Remove.
+    Applied upstream.
+  * debian/patches/libstdc++-bastring.dpatch: Add patch from
+    sicard at bigruth.solsoft.fr (fixes #56715).
+
+ -- Matthias Klose <doko at debian.org>  Sun, 20 Feb 2000 15:08:13 +0100
+
+gcc (2.95.2-5) frozen unstable; urgency=low
+
+  * Post-2.95.2 CVS updates of the gcc-2_95-branch until 20000116.
+  * Add more build dependencies (fixes #53204).
+  * debian/patches/gcc-alpha-complex-float.dpatch: Patch from
+    Joel Klecker <jk at espy.org> to compile glibc correctly on alpha.
+    "Should fix the g77 problems too."
+  * debian/patches/{libio,libstdc++-wall2}.dpatch. Remove patches
+    applied upstream.
+
+ -- Matthias Klose <doko at debian.org>  Sun, 16 Jan 2000 19:16:54 +0100
+
+gcc (2.95.2-4) unstable; urgency=low
+
+  * debian/patches/libio.dpatch: Patch from Martin v. Loewis.
+    (fixes: #35628).
+  * debian/patches/libstdc++-deque.dpatch: Patch from Martin v. Loewis.
+    (fixes: #52689).
+  * debian/control.in: Updated Build-Depends, removed outdated README.build.
+    Fixes #51246.
+  * Tighten dependencies to cpp (>= 2.95.2-4) (closes: #50294).
+  * debian/rules.patch: Really do not apply patches/gcj-backport.dpatch.
+    Fixes #51636.
+  * Apply updated sparc-bi-arch.dpatch from Ben Collins.
+  * libstdc++: Define wstring type, if __ENABLE_WSTRING is defined. Request
+    from the author of the War FTP Daemon for Linux ("Jarle Aase"
+    <jgaa at jgaa.com>).
+  * debain/g++.preinst: Remove dangling sysmlinks (fixes #52359).
+
+ -- Matthias Klose <doko at debian.org>  Sun, 19 Dec 1999 21:53:48 +0100
+
+gcc (2.95.2-3) unstable; urgency=low
+
+  * debian/rules2: Don't install $(gcc_lib_dir)/include/asm; these are
+    headers fixed for glibc-1.x (closes: #49434).
+  * debian/patches/cpp-dos-newlines.dpatch: Keep CR's without
+    following LF (closes: #49186).
+  * Bug #37358 (internal compiler errors when building vdk_0.6.0-5)
+    fixed in gcc-2.95.? (closes: #37358).
+  * Apply patch gcc-alpha-ev5-fix from Richard Henderson <rth at cygnus.com>
+    (should fix #48527 and #46963).
+  * debian/README.Bugs: Documented non bug #44554.
+  * Applied patch from Alexandre Oliva to fix gpc boostrap on alpha.
+    Reenabled gpc on all architectures.
+  * Post-2.95.2 CVS updates of the gcc-2_95-branch until 19991108.
+  * Explicitely generate postinst/prerm chunks for usr/doc transition.
+    debhelper currently doesn't handle generation for packages with
+    symlinked directories.
+  * debian/patches/libstdc++-wall3.dpatch: Fix warnings in stl_deque.h
+    and stl_rope.h (closes: #46444, #46720).
+  * debian/patches/gcj-backport.dpatch: Add file, don't apply (yet).
+
+ -- Matthias Klose <doko at debian.org>  Wed, 10 Nov 1999 18:58:45 +0100
+
+gcc (2.95.2-2) unstable; urgency=low
+
+  * New gpc-19991030 snapshot.
+  * Post-2.95.2 CVS updates of the gcc-2_95-branch until 19991103.
+  * Reintegrated sparc patches (bcollins at debian.org), which were lost
+    in 2.95.2-1.
+  * debian/rules2: Only install $(gcc_lib_dir)/include/asm, when existing.
+  * debian/patches/gpc-2.95.{dpatch,diff}: updated patch to drop
+    initialization in stor-layout.c.
+  * debian/NEWS.gcc: Updated for gcc-2.95.2.
+  * debian/bugs/bug-...: Removed testcases for fixed bugs.
+  * debian/patches/...dpatch: Removed patches applied upstream.
+  * debian/{rules2,g++.postinst,g++.prerm}: Handle c++ alternative.
+  * debian/changelog: Merged gcc272, egcs and snapshot changelogs.
+
+ -- Matthias Klose <doko at debian.org>  Tue,  2 Nov 1999 23:09:23 +0200
+
+gcc (2.95.2-1.1) unstable; urgency=low
+
+  * Most of the powerpc patches have been applied upstream.  Remove all
+    but ppc-ice, ppc-andrew-dwarf-eh, and ppc-descriptions.
+  * mulilib-install.dpatch was definitely a bad idea.  Fix it properly
+    by using install -D.
+  * Also, don't make directories before installing any more.  Simplifies
+    rules a (tiny) bit.
+  * Do not build with LDFLAGS=-s.  Everything gets stripped out anyway by
+    dh_strip -a -X_debug; so leave the binaries in the build tree with
+    debugging symbols for simplified debugging of the packages.
+
+ -- Daniel Jacobowitz <dan at debian.org>  Sat, 30 Oct 1999 12:40:12 -0400
+
+gcc (2.95.2-1) unstable; urgency=low
+
+  * gcc-2.95.2 release (taken from the CVS archive). -fstrict-aliasing
+    is disabled upstream.
+
+ -- Matthias Klose <doko at debian.org>  Mon, 25 Oct 1999 10:26:19 +0200
+
+gcc (2.95.2-0pre4) unstable; urgency=low
+
+  * Updated to cvs updates of the gcc-2_95-branch until 19991021.
+  * Updated gpc to gpc-19991018 snapshot (closes: #33037, #47453).
+    Enable gpc for all architectures ...
+  * Document gcc exit codes (closes: #43863).
+  * According to the bug submitter (Sergey V Kovalyov <sqk0316 at scires.nyu.edu>)
+    the original source of these CERN librarties is outdated now. The latest
+    version of cernlibs compiles and works fine with slink (closes #31546).
+  * According to the bug submitter (Gergely Madarasz <gorgo at sztaki.hu>),
+    the problem triggered on i386 cannot be reproduced with the current
+    jade and php3 versions anymore (closes: #35215).
+  * Replace corrupted m68k-pic.dpatch (from Roman Hodek and Andreas Schwab
+    <Roman.Hodek at informatik.uni-erlangen.de> <schwab at suse.de> and apply to
+    all architectures (closes: #48011).
+  * According to the bug submitter (Herbert Xu <herbert at gondor.apana.org.au>)
+    this bug "probably has been fixed". Setting it to severity "fixed"
+    (fixes: #39616), will close it later ...
+  * debian/README.Bugs: Document throwing C++ exceptions "through" C
+    libraries (closes: #22769).
+
+ -- Matthias Klose <doko at debian.org>  Fri, 22 Oct 1999 20:33:00 +0200
+
+gcc (2.95.2-0pre3) unstable; urgency=low
+
+  * Updated to cvs updates of the gcc-2_95-branch until 19991019.
+  * Apply NMU patches (closes: #46217).
+  * debian/control.in: Fix egcs64 conflict-dependency for sparc
+    architecture (closes: #47088).
+  * debian/rules2: dbg-packages share doc dir with lib packages
+    (closes #45067).
+  * debian/patches/gcj-debian-policy.dpatch: Patch from Stephane
+    Bortzmeyer to conform to Debian policy (closes: #44463).
+  * debian/bugs/bug-*: Added test cases for new bug reports.
+  * debian/patches/libstdc++-bastring.dpatch: Patch by Richard Kettlewell
+    (closes #46550).
+  * debian/rules.patch: Apply libstdc++-wall2 patch (closes #46609).
+  * debian/README: Fix typo (closes: #45253).
+  * debian/control.in: Remove primary/secondary distinction;
+    dbg-packages don't provide their normal counterparts (closes #45206).
+  * debian/rules.patch: gcc-combine patch applied upstream.
+  * debian/rules2: Only use mail if with_check is set (off by default).
+  * debian/rules.conf: Tighten binutils dependency to 2.9.5.0.12.
+
+ -- Matthias Klose <doko at debian.org>  Tue, 19 Oct 1999 20:33:00 +0200
+
+gcc (2.95.2-0pre2.0.2) unstable; urgency=HIGH (for m68k)
+
+  * Binary-only NMU for m68k as quick fix for another bug; the patch
+    is in CVS already, too.
+  * Applied another patch by Andreas Schwab to fix %a5 restauration in
+    some cases.
+
+ -- Roman Hodek <Roman.Hodek at informatik.uni-erlangen.de>  Thu, 30 Sep 1999 16:09:15 +0200
+
+gcc (2.95.2-0pre2.0.1) unstable; urgency=HIGH (for m68k)
+
+  * Binary-only NMU for m68k as quick fix for serious bugs; the patches
+    are already checked into gcc CVS and should be in the next official
+    version, too.
+  * Applied two patches by Andreas Schwab to fix -fpic and loop optimization.
+
+ -- Roman Hodek <Roman.Hodek at informatik.uni-erlangen.de>  Mon, 27 Sep 1999 15:32:49 +0200
+
+gcc (2.95.2-0pre2) unstable; urgency=low
+
+  * Fixed in 2.95.2 (closes: #43478).
+  * Previous version had Pascal examples missing in doc directory.
+
+ -- Matthias Klose <doko at debian.org>  Wed, 8 Sep 1999 22:18:17 +0200
+
+gcc (2.95.2-0pre1) unstable; urgency=low
+
+  * Updated to cvs updates of the gcc-2_95-branch until 19990828.
+  * Apply work around memory corruption (just for 2.95.1)  by
+    Daniel Jacobowitz <dan at debian.org>.
+  * debian/patches/libstdc++-wall2.dpatch: Patch from Franck Sicard
+    <sicard at miniruth.solsoft.fr> to fix some warnings (closes: #44670).
+  * debian/patches/libstdc++-valarray.dpatch: Patch from Hideaki Fujitani
+    <fjtani at flab.fujitsu.co.jp> to fix a bug in valarray_array.h.
+  * Applied NMU from Jim Pick minus the jump.c and fold-const.c patches
+    already in the gcc-2_95-branch (closes: #44690).
+  * Conform to debian-java policy (closes: #44463).
+  * Move docs to /usr/share/doc (closes: #44782).
+  * Remove debian/patches/gcc-align.dpatch applied upstream.
+  * debian/*.postinst: Call install-info only, when configuring.
+  * debian/*.{postinst,prerm}: Add #DEBHELPER# comments to handle
+    /usr/doc -> /usr/share/doc transition.
+
+ -- Matthias Klose <doko at debian.org>  Wed,  8 Sep 1999 22:18:17 +0200
+
+gcc (2.95.1-2.1) unstable; urgency=low
+
+  * Non-maintainer upload.
+  * ARM platform no longer needs library-prefix patch.
+  * Updated patches from Philip Blundell.
+
+ -- Jim Pick <jim at jimpick.com>  Wed,  8 Sep 1999 20:14:07 -0700
+
+gcc (2.95.1-2) unstable; urgency=low
+
+  * debian/gcc.{postinst,prerm}: gcc provides an alternative for
+    sparc64-linux-gcc.
+  * Applied patch from Ben Collins to enable bi-architecture (32/64)
+    support for sparc.
+  * Rebuild debian/control and debian/rules.parameters after unpacking.
+  * debian/rules2: binary-indep. Conditionalize on with_pascal.
+
+ -- Matthias Klose <doko at debian.org>  Sat,  4 Sep 1999 13:47:30 +0200
+
+gcc (2.95.1-1) unstable; urgency=low
+
+  * Updated to release gcc-2.95.1 and cvs updates of the gcc-2_95-branch
+    until 19990828.
+  * debian/README.gcc: Updated NEWS file to include 2.95 and 2.95.1 news.
+  * debian/README.java: New file.
+  * debian/rules.defs: Disabled gpc for alpha, arm. Disabled ObjC-GC
+    for alpha.
+  * debian/rules [clean]: Remove debian/rules.parameters.
+  * debian/rules2 [binary-arch]: Call dh_shlibdeps with LD_LIBRARY_PATH set
+    to installation dir of libstdc++. Why isn't this the default?
+  * debian/control.in: *-dev packages do not longer conflict with
+    libg++272-dev package.
+  * Apply http://egcs.cygnus.com/ml/gcc-patches/1999-08/msg00599.html.
+  * Only define BAD_THROW_ALLOC, when using exceptions (fixes #43462).
+  * For ObjC (when configured with GC) recommend libgc4-dev, not libgc4.
+  * New version of 68060 build patch.
+  * debian/rules.conf: For m68k, depend on binutils version 2.9.1.
+
+ -- Matthias Klose <doko at debian.org>  Sat, 28 Aug 1999 18:16:31 +0200
+
+gcc (2.95.1-0pre2) unstable; urgency=medium
+
+  * gpc is back again (fixes grave #43022).
+  * debian/patches/gpc-updates.dpatch: Patches sent to upstream authors.
+  * Work around the fatal dependtry assertion failure bug in dpkg (hint
+    from "Antti-Juhani Kaijanaho" <ajk at debian.org>, fixes important #43072).
+
+ -- Matthias Klose <doko at debian.org>  Mon, 16 Aug 1999 19:34:14 +0200
+
+gcc (2.95.1-0pre1) unstable; urgency=low
+
+  * Updated to cvs 19990815 gcc-2_95-branch; included install docs and
+    FAQ from 2.95 release; upload source package as well.
+  * Source package contains tarballs only (gcc, libg++, installdocs).
+  * debian/rules: Splitted into debian/rules{,.unpack,.patch,.conf,2}.
+  * debian/gcc.postinst: s/any key/RETURN; warn only when upgrading from
+    pre 2.95 version; reference /usr/doc, not /usr/share/doc.
+  * Checked syntax for attributes of functions; checked for #35068;
+    checked for bad gmon.out files (at least with libc6 2.1.2-0pre5 and
+    binutils 2.9.1.0.25-2 the problem doesn't show up anymore).
+  * debian/patches/cpp-macro-doc.dpatch: Document macro varargs in cpp.texi.
+  * gcc is primary compiler for all platforms but m68k. Setting
+    severity of #22513 to fixed.
+  * debian/patches/gcc-default-arch.dpatch: New patch to enable generation
+    of i386 instruction as default (fixes #42743).
+  * debian/rules: Removed outdated gcc NEWS file (fixes #42742).
+  * debian/patches/libstdc++-out-of-mem.dpatch: Throw exception instead
+    of aborting when out of memory (fixes #42622).
+  * debian/patches/cpp-dos-newlines.dpatch: Handle ibackslashes after
+    DOS newlines (fixes #29240).
+  * Fixed in gcc-2.95.1: #43001.
+  * Bugs closed in this version:
+    Closes: #11525, #12253, #22513, #29240, #35068, #36182, #42584, #42585,
+    #42602, #42622, #42742 #42743, #43001, #43002.
+
+ -- Matthias Klose <doko at debian.org>  Sun, 15 Aug 1999 10:31:50 +0200
+
+gcc (2.95-3) unstable; urgency=high
+
+  * Provide /lib/cpp again (fixes important bug #42524).
+  * Updated to cvs 19990805 gcc-2_95-branch.
+  * Build with the default scheduler.
+  * Apply install-multilib patch from Dan Jacobowitz.
+  * Apply revised cpp-A- patch from Dan Jacobowitz.
+
+ -- Matthias Klose <doko at debian.org>  Fri,  6 Aug 1999 07:25:19 +0200
+
+gcc (2.95-2) unstable; urgency=low
+
+  * Remove /lib/cpp. This driver uses files from /usr/lib/gcc-lib anyway.
+  * The following bugs are fixed (compared to egcs-1.1.2).
+    Closes: #4429, #20889, #21122, #26369, #28417, #28261, #31416, #35261,
+    #35900, #35906, #38246, #38872, #39098, #39526, #40659, #40991, #41117,
+    #41290, #41302, #41313.
+  * The following by Joel Klecker:
+    - Adopt dpkg-architecture variables.
+    - Go back to SHELL = bash -e or it breaks where /bin/sh is not bash.
+    - Disabled the testsuite, it is not included in the gcc 2.95 release.
+
+ -- Matthias Klose <doko at debian.org>  Sat, 31 Jul 1999 18:00:42 +0200
+
+gcc (2.95-1) unstable; urgency=low
+
+  * Update for official gcc-2.95 release.
+  * Built without gpc.
+  * debian/rules: Remove g++FAQ from rules, which is outdated.
+    For ix86, build for i386, not i486.
+  * Apply patch from Jim Pick for building multilib package on arm.
+
+ -- Matthias Klose <doko at debian.org>  Sat, 31 Jul 1999 16:38:21 +0200
+
+gcc (2.95-0pre10) unstable; urgency=low
+
+  * Use ../builddir-gcc-$(VER) by default instead of ./builddir; upstream
+    strongly advises configuring outside of the source tree, and it makes
+    some things much easier.
+  * Add patch to prevent @local branches to weak symbols on powerpc (fixes
+    apt compilation).
+  * Add patch to make cpp -A- work as expected.
+  * Renamed debian/patches/ppc-library-prefix.dpatch to library-prefix.dpatch;
+    apply on all architectures.
+  * debian/control.in: Remove snapshot dependencies.
+  * debian/*.postinst: Reflect use of /usr/share/{info,man}.
+
+ -- Daniel Jacobowitz <dan at debian.org>  Thu, 22 Jul 1999 19:27:12 -0400
+
+gcc (2.95-0pre9) unstable; urgency=low
+
+  * The following bugs are fixed (compared to egcs-1.1.2): #4429, #20889,
+    #21122, #26369, #28417, #28261, #35261, #38246, #38872, #39526, #40659,
+    #40991, #41117, #41290.
+  * Updated to CVS gcc-19990718 snapshot.
+  * debian/control.in: Removed references to egcs in descriptions.
+    Changed gcj's Recommends libgcj-dev to Depends.
+  * debian/rules: Apply ppc-library-prefix for alpha as well.
+  * debian/patches/arm-config.dpatch: Updated patch sent by Jim Pick.
+
+ -- Matthias Klose <doko at debian.org>  Sun, 18 Jul 1999 12:21:07 +0200
+
+gcc (2.95-0pre8) unstable; urgency=low
+
+  * Updated CVS.
+  * debian/copyright: s%doc/copyright%share/common-licenses%
+  * debian/README.Bugs: s/egcs.cygnus.com/gcc.gnu.org/ s/egcs-bugs/gcc-bugs/
+  * debian/patches/reporting.dpatch: Remake diff for current sources.
+  * debian/libstdc++-dev.postinst: It's /usr/share/info/iostream.info.
+  * debian/rules: Current dejagnu snapshot reports a framework version
+    of 1.3.1.
+
+ -- Joel Klecker <espy at debian.org>  Sun, 18 Jul 1999 02:09:57 -0700
+
+gcc-snapshot (19990714-0pre6) experimental; urgency=low
+
+  * Updated to CVS gcc-19990714 snapshot.
+  * Applied ARM patch (#40515).
+  * Converted DOS style linefeeds in debian/patches/ppc-* files.
+  * debian/rules: Reflect change in gcc/version.c; use sh -e as shell:
+    for some obscure reason, bash -e doesn't work.
+  * Reflect version change for libstdc++ (2.10). Remove libg++-name
+    patch; libg++ now has version 2.8.1.3. Removed libc version from
+    the package name.
+
+ -- Matthias Klose <doko at debian.org>  Wed, 14 Jul 1999 18:43:57 +0200
+
+gcc-snapshot (19990625-0pre5.1) experimental; urgency=low
+
+  * Non-maintainer upload.
+  * Added ARM specific patch.
+
+ -- Jim Pick <jim at jimpick.com>  Tue, 29 Jun 1999 22:36:08 -0700
+
+gcc-snapshot (19990625-0pre5) experimental; urgency=low
+
+  * Updated to CVS gcc-19990625 snapshot.
+
+ -- Matthias Klose <doko at debian.org>  Fri, 25 Jun 1999 16:11:53 +0200
+
+gcc-snapshot (19990609-0pre4.1) experimental; urgency=low
+
+  * Added and re-added a few last PPC patches.
+
+ -- Daniel Jacobowitz <dan at debian.org>  Sat, 12 Jun 1999 16:48:01 -0500
+
+gcc-snapshot (19990609-0pre4) experimental; urgency=low
+
+  * Updated to CVS egcs-19990611 snapshot.
+
+ -- Matthias Klose <doko at debian.org>  Fri, 11 Jun 1999 10:20:09 +0200
+
+gcc-snapshot (19990609-0pre3) experimental; urgency=low
+
+  * CVS gcc-19990609 snapshot.
+  * New gpc-19990607 snapshot.
+
+ -- Matthias Klose <doko at debian.org>  Wed,  9 Jun 1999 19:40:44 +0200
+
+gcc-snapshot (19990524-0pre1) experimental; urgency=low
+
+  * egcs-19990524 snapshot.
+  * First snapshot of the gcc-2_95-branch. egcs-1.2 is renamed to gcc-2.95,
+    which is now the "official" successor to gcc-2.8.1. The full version
+    name is: gcc-2.95 19990521 (prerelease).
+  * debian/control.in: Changed maintainers to `Debian GCC maintainers'.
+  * Moved all version numbers to epoch 1.
+  * debian/rules: Major changes. The support for secondary compilers
+    was already removed for the egcs-1.2 snapshots. Many fixes by
+    Joel Klecker <espy at debian.org>.
+    - Send mail to Debian maintainers for successful builds.
+    - Fix VER and VERNO sed expressions.
+    - Replace remaining GNUARCH occurrences.
+  * New gpc snapshot (but don't build).
+  * debian/patches/valarray.dpatch: Backport from libstdc++-v3.
+  * debian/gcc-doc.*: Info is now gcc.info* (Joel Klecker <espy at debian.org>).
+  * Use cpp driver provided by the package.
+  * New script c89 (fixes #28261).
+
+ -- Matthias Klose <doko at debian.org>  Sat, 22 May 1999 16:10:36 +0200
+
+egcs (1.1.2-2) unstable; urgency=low
+
+  * Integrate NMU's for arm and sparc (fixes #37582, #36857).
+  * Apply patch for the Hurd (fixes #37753).
+  * Describe open bugs in TODO.Debian. Please have a look if you can help.
+  * Update README / math functions section (fixes #35906).
+  * Done by J.H.M. Dassen (Ray) <jdassen at wi.LeidenUniv.nl>:
+    - At Richard Braakman's request, made -dbg packages for libstdc++
+      and libg++.
+    - Provide egcc(1) (fixes lintian error).
+
+ -- Matthias Klose <doko at debian.org>  Sun, 16 May 1999 14:30:56 +0200
+
+egcs-snapshot (19990502-1) experimental; urgency=low
+
+  * New snapshot.
+
+ -- Matthias Klose <doko at debian.org>  Thu,  6 May 1999 11:51:02 +0200
+
+egcs-snapshot (19990418-2) experimental; urgency=low
+
+  * Merged Rays changes to build debug packages.
+
+ -- Matthias Klose <doko at debian.org>  Wed, 21 Apr 1999 16:54:56 +0200
+
+egcs-snapshot (19990418-1) experimental; urgency=low
+
+  * New snapshot.
+  * Disable cpplib.
+
+ -- Matthias Klose <doko at debian.org>  Mon, 19 Apr 1999 11:32:19 +0200
+
+egcs (1.1.2-1.2) unstable; urgency=low
+
+  * NMU for arm
+  * Added arm-optimizer.dpatch with optimizer workaround for ARM
+
+ -- Jim Pick <jim at jimpick.com>  Mon, 19 Apr 1999 06:17:13 -0700
+
+egcs (1.1.2-1.1) unstable; urgency=low
+
+  * NMU for sparc
+  * Included dpatch to modify the references to gcc/crtstuff.c so that
+    __register_frame_info is not a weak reference. This allows potato to
+    remain binary compatible with slink, while still retaining compatibility
+    with other sparc/egcs1.1.2 distributions. Diff in .dpatch format has
+    been sent to the maintainer with a note it may not be needed for 1.1.3.
+
+ -- Ben Collins <bcollins at debian.org>  Tue, 27 Apr 1999 10:15:03 -0600
+
+egcs (1.1.2-1) unstable; urgency=low
+
+  * Final egcs-1.1.2 release built for potato as primary compiler
+    for all architectures except m68k.
+
+ -- J.H.M. Dassen (Ray) <jdassen at wi.LeidenUniv.nl>  Thu,  8 Apr 1999 13:14:29 +0200
+
+egcs-snapshot (19990321-1) experimental; urgency=low
+
+  * New snapshot.
+  * Disable gpc.
+  * debian/rules: Simplified (no secondary compiler, bumped all versions
+    to same epoch, libapi patch is included upstream).
+  * Separated out cpp documentation to cpp-doc package.
+  * Fixed in this version: #28417.
+
+ -- Matthias Klose <doko at debian.org>  Tue, 23 Mar 1999 02:11:18 +0100
+
+egcs (1.1.2-0slink2) stable; urgency=low
+
+  * Applied H.J.Lu's egcs-19990315.linux patch.
+  * Install faq.html and egcs-1.1.2 announcment.
+
+ -- Matthias Klose <doko at debian.org>  Tue, 23 Mar 1999 01:14:54 +0100
+
+egcs (1.1.2-0slink1) stable; urgency=low
+
+  * Final egcs-1.1.2 release; compiled with glibc-2.0 for slink on i386.
+  * debian/control.in: gcc provides egcc, when FIRST_PRIMARY defined.
+  * Fixes #30767, #32278, #34252, #34352.
+  * Don't build the libstdc++.so.2.9 library on architectures, which have
+    switched to glibc-2.1.
+
+ -- Matthias Klose <doko at debian.org>  Wed, 17 Mar 1999 12:55:59 +0100
+
+egcs (1.1.1.63-2.2) unstable; urgency=low
+
+  * Non-maintainer upload.
+  * Incorporate patch from Joel Klecker to fix snapshot packages
+    by moving/removing the application of libapi.
+  * Disable the new libstdc++-dev-config and the postinst message in
+    glibc 2.1 versions.
+
+ -- Daniel Jacobowitz <dan at debian.org>  Mon, 12 Mar 1999 14:16:02 -0500
+
+egcs (1.1.1.63-2.1) unstable; urgency=low
+
+  * Non-maintainer upload.
+  * Compile with glibc 2.1 release version.
+  * New upstream version egcs-1.1.2 pre3.
+  * Miscellaneous rules updates (see changelog.snapshot).
+  * New set of powerpc-related patches from Franz Sirl,
+    <fsirl at kernel.crashing.org>.
+  * Disable libgcc.dpatch (new solution implemented upstream).  Remove it.
+  * Also pass $target to config.if.
+  * Enable Dwarf2 EH for powerpc.  Bump the C++ binary version.  No
+    loss in -backwards- compatibility as far as I can tell, so add a
+    compatibility symlink, and add to shlibs file.
+  * Add --no-backup-if-mismatch to the debian/patches/*.dpatch files,
+    to prevent bogus .orig's in diffs.
+  * Merged with (unreleased) 1.1.1.62-1 and 1.1.1.63-{1,2} packages from
+    Matthias Klose <doko at debian.org>.
+  * Stop adding a backwards compatibility link for egcs-nof on powerpc.
+    To my knowledge, nothing uses it.  Do add the libstdc++ API change
+    link, though.
+
+ -- Daniel Jacobowitz <dan at debian.org>  Mon, 8 Mar 1999 14:24:01 -0500
+
+egcs (1.1.1.63-2) stable; urgency=low
+
+  * Provide a libstdc++ with a shared object name, which is compatible
+    to other distributions. Documented the change in README.Debian,
+    the libstdc++-2.9.postinst and the libstdc++-dev-config script.
+
+ -- Matthias Klose <doko at debian.org>  Fri, 12 Mar 1999 00:36:20 +0100
+
+egcs (1.1.1.63-1.1) unstable; urgency=low
+
+  * Non-Maintainer release.
+  * Build against glibc 2.1.
+  * Make egcs the primary compiler on i386.
+  * Also confilct with egcc (<< FIRST_PRIMARY)
+    if FIRST_PRIMARY is defined.
+    (this tells dpkg that gcc completely obsoletes egcc)
+  * Remove hjl-12 patch again, HJL says it should not be
+    necessary with egcs 1.1.2.
+    (as per forwarded reply from Christopher Chimelis)
+  * Apply libapi patch in clean target before regenerating debian/control
+    and remove the patch afterward. Otherwise, the libstdc++ and libg++
+    package names are generated wrong on a glibc 2.1 system.
+
+ -- Joel Klecker <espy at debian.org>  Tue,  9 Mar 1999 15:31:02 -0800
+
+egcs (1.1.1.63-1) unstable; urgency=low
+
+  * New upstream version egcs-1.1.1-pre3.
+  * Applied improved libstdc++ warning patch from Rob Browning.
+
+ -- Matthias Klose <doko at debian.org>  Tue,  9 Mar 1999 16:14:07 +0100
+
+egcs (1.1.1.62-1) unstable; urgency=low
+
+  * New upstream version egcs-1.1.1-pre2.
+  * New upstream version libg++-2.8.1.3.
+  * Readded ARM support
+  * Readded hjl-12 per request from Christopher C Chimelis
+    <chris at classnet.med.miami.edu>
+
+ -- Matthias Klose <doko at debian.org>  Fri, 26 Feb 1999 09:54:01 +0100
+
+egcs-snapshot (19990224-0.1) experimental; urgency=low
+
+  * New snapshot.
+  * Add the ability to disable CPPLIB by setting CPPLIB=no in
+    the environment.
+  * Disable gpc for powerpc; I spent a long time getting it to
+    make correctly, and then it goes and ICEs.
+
+ -- Daniel Jacobowitz <dan at debian.org>  Tue, 24 Feb 1999 23:34:12 -0500
+
+egcs (1.1.1.61-1) unstable; urgency=low
+
+  * New upstream version egcs-1.1.1-pre1.
+  * debian/control.in: Applied patch from bug report #32987.
+  * Split up H.J.Lu's hjl-19990115-linux patch into several small
+    chunks: libapi, arm-mips, libgcc, hjl-other. The changelog.Linux
+    aren't included in the separate chunks. Please refer to the
+    unmodified hjl-19990115-linux patch file in the egcs source pkg.
+  * Apply warning patch to fix the annoying spew you get if you try to
+    use ropes or deques with -Wall (which makes -Wall mostly useless for
+    spotting errors in your own code). Fixes #32996.
+  * debian/rules: Unapply patches in the exact reverse order they were
+    applied.
+
+ -- Matthias Klose <doko at debian.org>  Sat, 20 Feb 1999 22:06:21 +0100
+
+egcs (1.1.1-5) frozen unstable; urgency=medium
+
+  * Move libgcc.map file to g++ package, where gcc is the secondary
+    compiler (fixes #32329, #32605, #32631).
+  * Prepare to rename libstdc++2.9 package for glibc-2.1 (fixes #32148).
+  * Apply NMU patch for arm architecure (fixes #32367).
+  * Don't apply hjl-12 patch for alpha architectures (requested by the
+    alpha developers, Christopher C Chimelis <chris at classnet.med.miami.edu>).
+  * Call makeinfo with --no-validate to fix obscure build failure on alpha.
+  * Build gpc info files in doc subdirectory.
+  * Remove c++filt diversion (C++ name demangling patch is now in binutils,
+    fixes #30820 and #32502).
+
+ -- Matthias Klose <doko at debian.org>  Sun, 31 Jan 1999 23:19:35 +0100
+
+egcs (1.1.1-4.1) unstable; urgency=low
+
+  * Non-maintainer upload.
+  * Pascal doesn't build for ARM.
+
+ -- Jim Pick <jim at jimpick.com>  Sun, 24 Jan 1999 16:13:34 -0800
+
+egcs (1.1.1-4) frozen unstable; urgency=high
+
+  * Don't strip compiler libraries libgcc.a libobjc.a libg2c.a libgpc.a
+  * Move Pascal examples to the right place (fixes #32149, part 1).
+  * Add dependencies for switching from secondary to primary compiler,
+    if FIRST_PRIMARY is defined (fixes #32149, part 2).
+
+ -- Matthias Klose <doko at debian.org>  Wed, 20 Jan 1999 16:51:30 +0100
+
+egcs (1.1.1-3) frozen unstable; urgency=low
+
+  * Updated with the H.J.Lu's hjl-19990115-linux patch (fixes the
+    __register_frame_info problems, mips and arm port included).
+  * Update gpc to 19990118 (beta release candidate).
+  * Strip static libraries (fixes #31247 and #31248).
+  * Changed maintainer address.
+
+ -- Matthias Klose <doko at debian.org>  Tue, 19 Jan 1999 16:34:28 +0100
+
+egcs (1.1.1-2) frozen unstable; urgency=low
+
+  * Moved egcs-docs, g77-doc and gpc-doc packages to doc section.
+  * Downgraded Recommends: egcs-docs to Suggests: egcs-docs dependencies
+    (for archs, where egcs is the primary compiler).
+  * Add 'Suggests: stl-manual' dependency to libstdc++2.9-dev.
+  * Applied one more alpha patch:
+    ftp://ftp.yggdrasil.com/private/hjl/egcs/1.1.1/egcs-1.1.1.diff.12.gz
+  * Applied PPro optimization patch.
+  * Apply emit-rtl-nan patch.
+  * Upgraded to libg++-2.8.1.2a-19981218.tar.gz.
+  * Upgraded to gpc-19981218.
+  * Make symlinks for gobjc, libstdc++2.9-dev and libg++2.8.2 doc directories.
+
+ -- Matthias Klose <doko at debian.org>  Wed, 23 Dec 1998 18:04:53 +0200
+
+egcs-snapshot (19981211-1) experimental; urgency=low
+
+  * New snapshot.
+  * Adapted gpc to egcs-2.92.x (BOOT_CFLAGS must include -g).
+  * New libg++-2.8.1.2a-19981209.tar.gz.
+  * debian/rules: new target mail-summary.
+
+ -- Matthias Klose <doko at debian.org>  Fri, 11 Dec 1998 18:14:53 +0200
+
+egcs (1.1.1-1) frozen unstable; urgency=high
+
+  * Final egcs-1.1.1 release.
+  * The last version depended on a versioned libc6 again.
+  * Add lost dependency for libg++ on libstdc++.
+  * Added debian-libstdc++.sh script to generate a libstdc++ on a Linux
+    system, which doesn't use the libapi patch.
+
+ -- Matthias Klose <doko at cs.tu-berlin.de>  Wed,  2 Dec 1998 12:06:15 +0200
+
+egcs (1.1.0.91.59-2) frozen unstable; urgency=high
+
+  * Fixes bugs from libc6 2.0.7u-6 upload without dependency line
+    Conflicts: libstdc++-2.9 (<< 2.91.59): #30019, #30066, #30078.
+  * debian/copyright: Updated URLs.
+  * gcc --help now mentions /usr/doc/debian/bug-reporting.txt.
+  * Install README.Debian and include information about patches applied.
+  * Depend on unversioned libc6 on i386, such that libstdc++2.9 can be used
+    on a hamm system.
+
+ -- Matthias Klose <doko at cs.tu-berlin.de>  Fri, 27 Nov 1998 18:32:02 +0200
+
+egcs (1.1.0.91.59-1) frozen unstable; urgency=low
+
+  * This is egcs-1.1.1 prerelease #3, compiled with libc6 2.0.7u-6.
+  * Added dependency for libstdc++2.9-dev on g++ (fixes #29631).
+  * Package g77 provides f77 (fixes #29817).
+  * Already fixed in earlier egcs-1.1 releases: #2493, #25271, #10620.
+  * Bugs reported for gcc-2.7.x and fixed in the egcs version of gcc:
+    #2493, #4430, #4954, #5367, #6047, #10612, #12375, #20606, #24788, #26100.
+  * Upgraded libg++ to libg++-2.8.1.2a-19981114.
+  * Upgraded gpc to gpc-19981124.
+  * Close #25869: egcs and splay maintainers are unable to reproduce this
+    bug with the current Debian packages. Bug submitter doesn't respond.
+  * Close #25407: egcs maintainer cannot reproduce this bug with the current
+    Debian compiler. Bug submitter doesn't respond.
+  * Use debhelper 1.2.7 for building.
+  * Replace the libstdc++ and libg++ compatibility links with fake libraries.
+
+ -- Matthias Klose <doko at cs.tu-berlin.de>  Wed, 25 Nov 1998 12:11:42 +0200
+
+egcs (1.1.0.91.58-5) frozen unstable; urgency=low
+
+  * Applied patch to build on the m68060.
+  * Added c++filt and c++filt.1 to the g++ package.
+  * Updated gpc to gpc-981105; fixes some regressions compared to egcs-1.1.
+  * Separated out g77 and gpc doumentation to new packages g77-doc and gpc-doc.
+  * Closed bugs (#22158).
+  * Close #20248; on platforms where gas and gld are the default versions,
+    it makes no difference to configure with or without enable-ld.
+  * Close #24349. The bugs are in the amulet source.
+    See http://www.cs.cmu.edu/afs/cs/project/amulet/www/FAQ.html#GCC28x
+  * Rename gcc.info* files to egcs.info* (fixes #24088).
+  * Documented known bugs (and workarounds) in BUGS.Debian.
+  * Fixed demangling of C++ names (fixes #28787).
+  * Applied patch form aspell to libstdc++/stl/stl_rope.h.
+  * Updated from cvs 16 Nov 1998.
+
+ -- Matthias Klose <doko at cs.tu-berlin.de>  Tue, 17 Nov 1998 09:41:24 +0200
+
+egcs-snapshot (19981115-2) experimental; urgency=low
+
+  * New snapshot. Disabled gpc.
+  * New packages g77-doc and gpc-doc.
+
+ -- Matthias Klose <doko at debian.org>  Mon, 16 Nov 1998 12:48:09 +0200
+
+egcs (1.1.0.91.58-3) frozen unstable; urgency=low
+
+  * Previous version installed in potato, not slink.
+  * Updated from cvs 3 Nov 1998.
+
+ -- Matthias Klose <doko at cs.tu-berlin.de>  Tue, 3 Nov 1998 18:34:44 +0200
+
+egcs (1.1.0.91.58-2) unstable; urgency=low
+
+  * [debian/rules]: added targets to apply and unapply patches.
+  * [debian/README.patches]: New file.
+  * Moved patches dir to debian/patches. debian/rules has to select
+    the patches to apply.
+  * Manual pages for genclass and gcov (fixes #5995, #20950, #22196).
+  * Apply egcs-1.1-reload patch needed for powerpc architecture.
+  * Fixed bugs (#17768, #20252, #25508, #27788).
+  * Reapplied alpha patch (#20875).
+  * Fixes first part of #22513, extended README.Debian (combining C & C++).
+  * Already fixed in earlier egcs-1.1 releases: #17963, #20252, #20524,
+    #20640, #22450, #24244, #24288, #28520.
+
+ -- Matthias Klose <doko at cs.tu-berlin.de>  Fri, 30 Oct 1998 13:41:45 +0200
+
+egcs (1.1.0.91.58-1) experimental; urgency=low
+
+  * New upstream version. That's the egcs-1.1.1 prerelease plus patches from
+    the cvs archive upto 29 Oct 1998.
+  * Merged files from the egcs and snapshot packages.
+  * Updated libg++ to libg++-2.8.1.2 (although the Debian package name is still
+    2.8.2).
+  * Moved patches dir to patches-1.1.
+  * Dan Jacobowitz:
+    * This is a snapshot from the egcs_1_1_branch, with
+      libapi, reload, builtin-apply, and egcs patches from
+      the debian/patches/ dir applied, along with the egcs-gpc-patches
+      and gcc/p/diffs/gcc-egcs-2.91.55.diff.
+    * Conditionalize gcj and chill (since they aren't in this branch).
+    * Fake snapshots drop the -snap-main.
+
+ -- Matthias Klose <doko at cs.tu-berlin.de>  Thu, 29 Oct 1998 15:15:19 +0200
+
+egcs-snapshot (1.1-19981019-5.1) experimental; urgency=low
+
+  * This is a snapshot from the egcs_1_1_branch, with
+    libapi, reload, builtin-apply, and egcs patches from
+    the debian/patches/ dir applied, along with the egcs-gpc-patches
+    and gcc/p/diffs/gcc-egcs-2.91.55.diff.
+  * Conditionalize gcj and chill (since they aren't in this
+    branch).
+  * Fake snapshots drop the -snap-main.
+
+ -- Daniel Jacobowitz <dan at debian.org>  Mon, 19 Oct 1998 22:19:23 -0400
+
+egcs (1.1b-5) unstable; urgency=low
+
+  * [debian/control.in] Fixed typo in dependencies (#28076, #28087, #28092).
+
+ -- J.H.M. Dassen (Ray) <jdassen at wi.LeidenUniv.nl>  Sun, 18 Oct 1998 22:56:51 +0200
+
+egcs (1.1b-4) unstable; urgency=low
+
+  * Strengthened g++ dependency on libstdc++_LIB_SO_-dev from
+    `Recommends' to `Depends'.
+  * Updated README.Debian for egcs-1.1.
+  * Updated TODO.
+
+ -- Matthias Klose <doko at cs.tu-berlin.de>  Thu, 15 Oct 1998 12:38:47 +0200
+
+egcs-snapshot (19981005-0.1) experimental; urgency=low
+
+  * Make libstdc++2.9-snap-main and libg++-snap-main provide
+    their mainstream equivalents and put those equivalents into
+    their shlibs file.
+  * Package gcj, the GNU Compiler for Java(TM).
+
+  * New upstream version of egcs (The -regcs_latest_snapshot branch).
+  * Build without libg++ entirely.
+  * Leave out gpc for now - the internals are sufficiently different
+    that it does not trivially compile.
+  * Include an experimental reload patch for powerpc - this is,
+    in the words of its author, not release quality, but it allows
+    powerpc linuxthreads to function.
+  * On architectures where we are the primary compiler, let snapshots
+    build with --prefix=/usr and conflict with the stable versions.
+  * Package chill, a front end for the language Chill.
+  * Other applied patches from debian/patches/: egcs-patches and
+    builtin-apply-patch.
+  * Use reload.c revision 1.43 to avoid a nasty bug.
+
+ -- Daniel Jacobowitz <dan at debian.org>  Wed,  7 Oct 1998 00:27:42 -0400
+
+egcs (1.1b-3.1) unstable; urgency=low
+
+  * NMU to fix the egcc -> gcc link once and for all
+
+ -- Christopher C. Chimelis <chris at classnet.med.miami.edu>  Tue, 22 Sep 1998 16:11:19 -0500
+
+egcs (1.1b-3) unstable; urgency=low
+
+  * Oops. The egcc -> gcc link on archs where gcc is egcc was broken.
+    Thanks to Chris Chimelis for pointing this out.
+
+ -- J.H.M. Dassen (Ray) <jdassen at wi.LeidenUniv.nl>  Mon, 21 Sep 1998 20:51:35 +0200
+
+egcs (1.1b-2) unstable; urgency=low
+
+  * New upstream spellfix release (Debian revision is 2 as the internal
+    version numbers didn't change).
+  * Added egcc -> gcc symlink on architectures where egcc is the primary C
+    compiler. Thus, maintainers of packages that require egcc, can now
+    simply use "egcc" without conditionals.
+  * Porters: we hope/plan to make egcs's gcc the default C compiler on all
+    platforms once the 2.2.x kernels are available. Please test this version
+    thoroughly, and give us a GO / NO GO for your architecture.
+  * Some symbols cpp used to predefine were removed upstream in order to clean
+    up the cpp namespace, but imake requires them for determining the proper
+    settings for LinuxMachineDefines (see /usr/X11R6/lib/X11/{Imake,linux}.cf),
+    thus we put them back. Thanks to Paul Slootman for reporting his imake
+    problems on Alpha.
+    * [gcc/config/alpha/linux.h] Added -D__alpha to CPP_PREDEFINES .
+      Thanks to Chris Chimelis for the alpha-only 1.1a-1.1 NMU which fixed
+      this already.
+    * [gcc/config/i386/linux.h] Added -D__i386__ to CPP_PREDEFINES .
+    * [gcc/config/sparc/linux.h] Has -Dsparc in CPP_PREDEFINES .
+    * [gcc/config/sparc/linux64.h] Has -Dsparc in CPP_PREDEFINES .
+    * [gcc/config/m68k/linux.h] Has -Dmc68000 in CPP_PREDEFINES .
+    * [gcc/config/rs6000/linux.h] Has -Dpowerpc in CPP_PREDEFINES .
+    * [gcc/config/arm/linux.h] Has -Darm in CPP_PREDEFINES .
+    * [gcc/config/i386/gnu.h] Has -Di386 in CPP_PREDEFINES .
+  * Small fixes and updates in README.
+  * Changes affecting the source package only:
+    * [gcc/Makefile.in, gcc/cp/Make-lang.in, gcc/p/Make-lang.in]
+      Daniel Jacobowitz: Ugly hacks of various kinds to make cplib2.txt get
+      properly regenerated with multilib.
+    * [debian/TODO] Created.
+    * [INSTALL/index.html] Fixed broken link.
+
+ -- J.H.M. Dassen (Ray) <jdassen at wi.LeidenUniv.nl>  Sun, 20 Sep 1998 14:05:15 +0200
+
+egcs (1.1a-1) unstable; urgency=low
+
+  * New upstream release.
+  * Added README.libstdc++ .
+  * Updated Standards-Version.
+  * Matthias:
+    * Downgraded gobjc dependency on egcs-docs from Recommends: to Suggests: .
+    * [libg++/Makefile.in] Patched not to rely on a `-f' flag of `ln'.
+
+ -- J.H.M. Dassen (Ray) <jdassen at wi.LeidenUniv.nl>  Wed,  2 Sep 1998 19:57:43 +0200
+
+egcs (1.1-1) unstable; urgency=low
+
+  * egcs-1.1 prerelease (from the last Debian package only the version file
+    changed).
+  * "Final" gpc Beta 2.1 gpc-19980830.
+  * Included libg++ and gpc in the .orig tarball. so that diffs are getting
+    smaller.
+  * debian/control.in: Changed maintainer address to galenh-egcs at debian.org.
+  * debian/copyright: Updated URLs.
+
+ -- Matthias Klose <doko at cs.tu-berlin.de>  Mon, 31 Aug 1998 12:43:13 +0200
+
+egcs (1.0.99.56-0.1) unstable; urgency=low
+
+  * New upstream snapshot 19980830 from CVS (called egcs-1.1 19980830).
+  * New libg++ snapshot 980828.
+  * Put all patches patches subdirectory; see patches/README in the source.
+  * debian/control.in: readded for libg++2.8.2-dev:
+    Replaces: libstdc++2.8-dev (<= 2.90.29-0.5)
+  * Renamed libg++2.9 package to libg++2.8.2.
+  * gcc/p/gpc-decl.c: Fix from Peter at Gerwinski.de; fixes optimization errors.
+  * patches/gpc-patch2: Fix from Peter at Gerwinski.de; fixes alpha errors.
+  * debian/rules: New configuration flag for building with and without
+    libstdc++api patch; untested without ...
+
+ -- Matthias Klose <doko at cs.tu-berlin.de>  Sun, 30 Aug 1998 12:04:22 +0200
+
+egcs (1.0.99-0.6) unstable; urgency=low
+
+  * PowerPC fixes.
+  * On powerpc, generate the -msoft-float libs and package them
+    as egcs-nof.
+  * Fix signed char error in gpc.
+  * Create a libg++.so.2.9 compatibility symlink.
+
+ -- Daniel Jacobowitz <dan at debian.org>  Tue, 25 Aug 1998 11:44:09 -0400
+
+egcs (1.0.99-0.5) unstable; urgency=low
+
+  * New upstream snapshot 19980824.
+  * New gpc snapshot gpc-980822; reenabled gpc for alpha.
+
+ -- Matthias Klose <doko at cs.tu-berlin.de>  Tue, 25 Aug 1998 01:21:08 +0200
+
+egcs (1.0.99-0.4) unstable; urgency=low
+
+  * New upstream snapshot 19980819. Should build glibc 2.0.9x on PPC.
+
+ -- Matthias Klose <doko at cs.tu-berlin.de>  Wed, 19 Aug 1998 14:18:07 +0200
+
+egcs (1.0.99-0.3) unstable; urgency=low
+
+  * New upstream snapshot 19980816.
+  * debian/rules: build correct debian/control and debian/*.shlibs
+  * Enabled Haifa scheduler for ix86.
+
+ -- Matthias Klose <doko at cs.tu-berlin.de>  Mon, 17 Aug 1998 16:29:35 +0200
+
+egcs (1.0.99-0.2) unstable; urgency=low
+
+  * New upstream snapshot: egcs-19980812, minor changes only.
+  * Fixes for building on `primary' targets.
+  * Disabled gpc on `alpha' architecture.
+  * Uses debhelper 1.1.6
+  * debian/control.in: Replace older snapshot versions in favor of newer
+    normal versions.
+  * debian/rules: Fixes building of binary-arch target only.
+
+ -- Matthias Klose <doko at cs.tu-berlin.de>  Thu, 13 Aug 1998 11:59:41 +0200
+
+egcs (1.0.99-0.1) unstable; urgency=low
+
+  * New upstream version: pre egcs-1.1 version.
+  * Many changes ... for details see debian/changelog.snapshot in the
+    source package.
+  * New packages libstdc++2.9 and libstdc++2.9-dev.
+  * New libg++ snapshot 980731: new packages libg++2.9 and libg++2.9-dev.
+  * New gpc snapshot gpc-980729: new package gpc.
+  * Uses debhelper 1.1
+
+ -- Matthias Klose <doko at cs.tu-berlin.de>  Mon, 10 Aug 1998 13:00:27 +0200
+
+egcs-snapshot (19980803-4) experimental; urgency=low
+
+  * rebuilt debian/control.
+
+ -- Matthias Klose <doko at debian.org>  Wed,  5 Aug 1998 08:51:47 +0200
+
+egcs-snapshot (19980803-3) experimental; urgency=low
+
+  * debian/rules: fix installation locations of NEWS, header and
+    `undocumented' files.
+  * man pages aren't compressed for the snapshot package.
+
+ -- Matthias Klose <doko at debian.org>  Tue,  4 Aug 1998 17:34:31 +0200
+
+egcs-snapshot (19980803-2) experimental; urgency=low
+
+  * debian/rules: Uses debhelper. Old in debian/rules.old.
+    renamed postinst, prerm files for use with debhelper.
+  * debian/{libg++2.9,libstdc++2.9}/postinst: call ldconfig only,
+    when called for configure.
+  * egcs-docs is architecture independent package.
+  * new libg++ snapshot 980731.
+  * installed libstdc++ api patch (still buggy).
+
+ -- Matthias Klose <doko at debian.org>  Mon,  3 Aug 1998 13:20:59 +0200
+
+egcs-snapshot (19980729-1) experimental; urgency=low
+
+  * New snapshot version 19980729 from CVS archive.
+  * New gpc snapshot gpc-980729.
+  * Let gcc/configure decide about using the Haifa scheduler.
+  * Remove -DDEBIAN. That was needed for the security improvements with
+    regard to the /tmp problem. egcs-1.1 chooses another approach.
+  * Save test-protocol and extract gpc errors to gpc-test-summary.
+  * Tighten binutils dependency to 2.9.1.
+  * debian/rules: new build-info target
+  * debian/{control.in,rules}: _SO_ and BINUTILSV substitution.
+  * debian/rules: add dependency for debian/control.
+  * debian/rules: remove bin/c++filt
+  * TODO: next version will use debhelper; the unorganized moving of
+    files becomes unmanageable ...
+  * TODO: g++ headers in stdc++ package? check!
+
+ -- Matthias Klose <doko at debian.org>  Thu, 30 Jul 1998 12:10:20 +0200
+
+egcs-snapshot (19980721-1) experimental; urgency=low
+
+  * Unreleased. Infinite loops in executables made by gpc.
+
+ -- Matthias Klose <doko at debian.org>  Wed, 22 Jul 1998 18:07:20 +0200
+
+egcs-snapshot (19980715-1) experimental; urgency=low
+
+  * New snapshot version from CVS archive.
+  * New gpc snapshot gpc-980715.
+  * New libg++ version libg++-2.8.2-980708. Changed versioning
+    schema for library. The major versions of libc, libstdc++ and the
+    g++ interface are coded in the library name. Use this new schema,
+    but provide a symlink to our previous schema, since the library
+    seems to be binary compatible.
+  * [debian/rules]: Fixed bug in build target, when bootstrap returns
+    with an error
+
+ -- Matthias Klose <doko at debian.org>  Wed, 15 Jul 1998 10:55:05 +0200
+
+egcs-snapshot (19980701-1) experimental; urgency=low
+
+  * New snapshot version from CVS archive.
+    Two check programs in libg++ had to be manually killed to finish the
+    testsuite (tBag and tSet).
+  * New gpc snapshot gpc-980629.
+  * Incorporated debian/rules changes from egcs-1.0.3a-0.5 (but don't remove
+    gcc/cp/parse.c gcc/c-parse.c gcc/c-parse.y gcc/objc/objc-parse.c
+    gcc/objc/objc-parse.y, since these files are part of the release).
+  * Disable the -DMKTEMP_EACH_FILE -DHAVE_MKSTEMP -DDEBIAN flags for the
+    snapshot. egcs-1.1 will have another solution.
+  * Don't bootstrap the snapshot with -fno-force-mem. Internal compiler
+    error :-(
+  * libf2c.a and f2c.h have changed names to libg2c.a and g2c.h and
+    have moved again into the gcc-lib dir. They are installed under
+    libg2c.a and g2c.h. Is it necessary to provide links f2c -> g2c ?
+  * debian/rules: reflect change of build dir of libraries.
+
+ -- Matthias Klose <doko at debian.org>  Wed,  2 Jul 1998 13:15:28 +0200
+
+egcs-snapshot (19980628-0.1) experimental; urgency=low
+
+  * New upstream snapshot version.
+  * Non-maintainer upload; Matthias appears to be absent currently.
+  * Updated shlibs.
+  * Merged changes from regular egcs:
+    * [debian/control] Tightened dependency on binutils to 2.8.1.0.23 or
+      newer, as according to INSTALL/SPECIFIC PowerPC (and possibly Sparc)
+      need this.
+    * [debian/rules] Clean up some generated files outside builddir,
+      so the .diff.gz becomes smaller.
+    * [debian/rules] Partial sync/update with the one for the regular egcs
+      version.
+  * [debian/rules] Make gcc/p/configure executable.
+
+ -- J.H.M. Dassen (Ray) <jdassen at wi.LeidenUniv.nl>  Wed,  1 Jul 1998 07:12:15 +0200
+
+egcs (1.0.3a-0.6) frozen unstable; urgency=low
+
+  * Some libg++ development files were in libstdc++2.8-dev rather than
+    libg++2.8-dev. Fixed this and dealt with upgrading from the earlier
+    versions (fixes #23908; this bug is not marked release-critical, but
+    is annoying and can be quite confusing for users. Therefore, I think
+    this fix should go in 2.0).
+
+ -- J.H.M. Dassen (Ray) <jdassen at wi.LeidenUniv.nl>  Tue, 30 Jun 1998 11:10:14 +0200
+
+egcs (1.0.3a-0.5) frozen unstable; urgency=low
+
+  * Fixed location of .hP files (Fixes #23448).
+  * [debian/rules] simplified extraction of the files for libg++2.8-dev.
+
+ -- J.H.M. Dassen (Ray) <jdassen at wi.LeidenUniv.nl>  Wed, 17 Jun 1998 09:33:41 +0200
+
+egcs (1.0.3a-0.4) frozen unstable; urgency=low
+
+  * [gcc/gcc.c] There is one call to choose_temp_base for determining the
+    tempdir to be used only; #ifdef HAVE_MKSTEMP delete the tempfile created
+    as a side effect. (fixes #23123 for egcs).
+  * [gcc/collect2.c] There's still a vulnerability here; I don't see how
+    I can fix it without leaving behind tempfiles though.
+  * [debian/control] Tightened dependency on binutils to 2.8.1.0.23 or
+    newer, as according to INSTALL/SPECIFIC PowerPC (and possibly Sparc)
+    need this.
+  * [debian/rules] Clean up some generated files outside builddir, so the
+    .diff.gz becomes smaller.
+
+ -- J.H.M. Dassen (Ray) <jdassen at wi.LeidenUniv.nl>  Sat, 13 Jun 1998 09:06:52 +0200
+
+egcs-snapshot (19980608-1) experimental; urgency=low
+
+  * New snapshot version.
+
+ -- Matthias Klose <doko at debian.org>  Tue,  9 Jun 1998 14:07:44 +0200
+
+egcs (1.0.3a-0.3) frozen unstable; urgency=high (security fixes)
+
+  * [gcc/toplev.c] set flag_force_mem to 1 at optimisation level 3 or higher.
+    This works around #17768 which is considered release-critical.
+  * Changes by Matthias:
+    * [debian/README] Documentation of the compiler situation for Objective C.
+    * [debian/rules, debian/control.*] Generate control file from a master
+      file.
+    * [debian/rules] Updates for Pascal and Fortran parts; brings it in sync
+      with the one for the egcs snapshots.
+  * Use the recommended settings LDFLAGS=-s CFLAGS= BOOT_CFLAGS='-O2'.
+  * Really compile -DMKTEMP_EACH_FILE -DHAVE_MKSTEMP (really fixes #19453
+    for egcs).
+  * [gcc/gcc.c] A couple of temp files weren't marked for deletion.
+
+ -- J.H.M. Dassen (Ray) <jdassen at wi.LeidenUniv.nl>  Sun, 31 May 1998 22:56:22 +0200
+
+egcs (1.0.3a-0.2) frozen unstable; urgency=high (security fixes)
+
+  * Security improvements with regard to the /tmp problem
+    (gcc opens predictably named files in TMPDIR which can be abused via
+    symlinks)  (Fixes #19453 for egcs).
+    * Compile -DMKTEMP_EACH_FILE to ensure the %u name is generated randomly
+      every time; affects gcc/gcc.c .
+    * [gcc/choose-temp.c, libiberty/choose-temp.c]: use mktemp(3) if compiled
+      -DUSE_MKSTEMP .
+    * Security improvements: don't use the result of choose_temp_base in a
+      predictable fashion.
+      [gcc/gcc.c]:
+      * @c, @objective-c: use random name rather then tempbasename.i for
+        intermediate preprocessor output (%g.i -> %d%u).
+      * @c, @objective-c: use random name rather then tempbasename.s for
+        intermediate compiler output (%g.s -> %d%u).
+      * @c, @objective-c, @cpp-output, @assembler-with-cpp: switched
+        "as [-o output file] <input file>" to
+        "as <input file> [-o output file]".
+      * @c, @objective-c, @assembler-with-cpp: use previous random name
+        (cc1|cpp output) rather then tempbasename.s for intermediate assembler
+        input (%g.s -> %U)
+      [gcc/f/lang-specs.h]:
+      * @f77-cpp-input: use random name rather then tempbasename.i for
+        intermediate cpp output (%g.i -> %d%u).
+      * @f77-cpp-input: use previous random name (cpp output) rather than
+        tempbasename.i for f771 input (%g.i -> %U).
+      * @f77-cpp-input: switched
+        "as [-o output file] <input file>" to
+        "as <input file> [-o output file]".
+      * @f77-cpp-input: use random name rather then tempbasename.s for
+        intermediate compiler output (%g.s -> %d%u).
+      * @ratfor: use random name rather then tempbasename.i for
+        intermediate ratfor output (%g.f -> %d%u).
+      * @ratfor: use previous random name (ratfor output) rather than
+        tempbasename.i for f771 input (%g.f -> %U).
+      * @ratfor: use random name rather then tempbasename.s for
+        intermediate compiler output (%g.s -> %d%u).
+      * @ratfor: switched
+        "as [-o output file] <input file>" to
+        "as <input file> [-o output file]".
+      * @ratfor: use previous random name
+        (ratfor output) rather then tempbasename.s for intermediate assembler
+        input (%g.s -> %U).
+      * @f77: use random name rather then tempbasename.s for
+        intermediate ratfor output (%g.f -> %d%u).
+      * @ratfor: use previous random name (ratfor output) rather than
+        tempbasename.i for f771 input (%g.f -> %U).
+      * @ratfor: use random name rather then tempbasename.s for
+        intermediate compiler output (%g.s -> %d%u).
+      * @ratfor: switched
+        "as [-o output file] <input file>" to
+        "as <input file> [-o output file]".
+      * @ratfor: use previous random name
+        (ratfor output) rather then tempbasename.s for intermediate assembler
+        input (%g.s -> %U).
+      * @f77: use random name rather then tempbasename.s for
+        intermediate compiler output (%g.s -> %d%u).
+      * @f77: switched
+        "as [-o output file] <input file>" to
+        "as <input file> [-o output file]".
+      * @ratfor: use random name rather then tempbasename.s for
+        intermediate compiler output (%g.s -> %U).
+  * Run the testsuite (this requires the dejagnu package in experimental;
+    unfortunately, it is difficult to distinguish this version from the one
+    in frozen).
+    if possible, and log the results in warn_summary and bootstrap-summary.
+  * [gcc/choose-temp.c, libiberty/choose-temp.c]: s|returh|return| in
+    comment.
+  * Added notes on the Debian compiler setup [debian/README] to the
+    development packages.
+  * Matthias:
+    * [libg++/etc/lf/Makefile.in] Replaced "-ltermcap" by "-lncurses".
+    * [debian/rules] Updated so it can be used for both egcs releases and
+      snapshots easily; added support for the GNU Pascal Compiler gpc.
+    * [contrib/test_summary, contrib/warn_summary] Added from CVS.
+    * Run compiler checks and include results in /usr/doc/<package>.
+    * Updates to the README.
+    * [debian/rules] Use assignments to speed up startup.
+  * [debian/rules] Show the important variables at the start of the build
+    process.
+  * [debian/control.secondary] Added a dependency of gobjc on egcc on
+    architectures where egcs provides the secondary compiler, as
+    /usr/bin/egcc is the compiler driver for gobjc. (Fixes #22829).
+  * [debian/control.*] Bumped Standards-Version; used shorter version
+    numbers in the dependency relationships (esthetic difference only);
+    fixed typo.
+
+ -- J.H.M. Dassen (Ray) <jdassen at wi.LeidenUniv.nl>  Tue, 26 May 1998 21:47:41 +0200
+
+egcs-snapshot (19980525-1) experimental; urgency=low
+
+  * New snapshot version.
+
+ -- Matthias Klose <doko at debian.org>  Tue, 26 May 1998 18:04:06 +0200
+
+egcs-snapshot (19980517-1) experimental; urgency=low
+
+  * "Initial" release of the egcs-snapshot package; many debian/* files
+    derived from the egcs-1.0.3a-0.1 package (maintained by Galen Hazelwood
+    <galenh at micron.net>, NMU's by J.H.M. Dassen (Ray) <jdassen at wi.LeidenUniv.nl>)
+  * The egcs-snapshot packages can coexist with the packages of the
+    egcs release. Package names have a '-ss' appended.
+  * All packages are installed in a separate tree (/usr/lib/egcs-ss following
+    the FHSS).
+  * Made all snapshot packages extra, all snapshot packages conflict
+    with correspondent egcs packages, which are newer than the snapshot.
+  * Included libg++-2.8.1-980505.
+  * Included GNU Pascal (gpc-980511).
+  * Haifa scheduler enabled for all snapshot packages.
+  * Run compiler checks and include results in /usr/doc/<package>.
+  * Further information in /usr/doc/<package>/README.snapshot.
+
+ -- Matthias Klose <doko at debian.org>  Wed, 20 May 1998 11:14:06 +0200
+
+egcs (1.0.3a-0.1) frozen unstable; urgency=low
+
+  * New upstream release egcs-2.90.29 980515 (egcs-1.0.3 release)
+    (we were using 1.0.3-prerelease).  This includes the Haifa patches
+    we had since 1.0.3-0.2 and the gcc/objc/thr-posix.c patch we had
+    since 1.0.3-0.1; the differences with 1.0.3-prerelease + patches
+    we had is negligable.
+  * iostream info documentation was in the wrong package (libg++2.8-dev).
+    Now it's in libstdc++2.8-dev. (Thanks to Jens Rosenboom for bringing
+    this to my attention). As 1.0.3-0.3 didn't make it out of Incoming,
+    I'm not adding "Replaces:" for this; folks who had 1.0.3-0.3 installed
+    already know enough to use --force-overwrite.
+  * [gcc/objc/objc-act.c] Applied patch Matthias Klose supplied me with that
+    demangles Objective C method names in gcc error messages.
+  * Explicitly disable Haifa scheduling on Alpha, to make it easier to use
+    this package's diff with egcs snapshots, which may turn on Haifa
+    scheduling even though it is still unstable. (Requested by Chris Chimelis)
+  * Don't run "configure" again if builddir already exists (makes it faster
+    to restart builds in case one is hacking internals). Requested by
+    Johnnie Ingram.
+  * [gcc/gbl-ctors.h] Don't use extern declaration for atexit on glibc 2.1
+    and higher (the prototype has probably changed; having the declaration
+    broke Sparc compiles).
+  * [debian/rules] Determine all version number automatically (from the
+    version string in gcc/version.c).
+  * [debian/copyright] Updated FTP locations; added text about libg++ (fixes
+    #22465).
+
+ -- J.H.M. Dassen (Ray) <jdassen at wi.LeidenUniv.nl>  Sat, 16 May 1998 17:41:44 +0200
+
+egcs (1.0.3-0.3) frozen unstable; urgency=low
+
+  * Made an "egcs-doc" package containing documentation for egcs (e)gcc,
+    g++, gobjc, so that administrators can choose whether to have this
+    documenation or the documentation that comes with the GNU gcc package.
+    Dependency on this is Recommends: on architectures where egcs provides
+    the primary C compiler; Suggests: on the others (where GNU gcc is still
+    the primary C compiler).
+  * Use the g++ FAQ from gcc/cp rather than libg++, as that version is more
+    up to date.
+  * Added iostream info documentation to libstdc++2.8-dev.
+
+ -- J.H.M. Dassen (Ray) <jdassen at wi.LeidenUniv.nl>  Wed, 13 May 1998 08:46:10 +0200
+
+egcs (1.0.3-0.2) frozen unstable; urgency=low
+
+  * Added libg++ that works with egcs, found at
+    ftp://ftp.yggdrasil.com/private/hjl/libg++-2.8.1-980505.tar.gz
+    (fixes #20587 (Severity: important)).
+  * The "libg++" and "libg++-dev" virtual packages now refer to the GNU
+    extensions.
+  * Added the g++ FAQ that comes with libg++ to the g++ package.
+  * libg++/Makefile.in: added $(srcdir) to rule for g++FAQ.info so that it
+    builds OK in builddir.
+  * Added -D__i386__ to the cpp predefines on intel.
+  * Patches Matthias supplied me with:
+    * Further 1.0.3 prerelease patches from CVS.
+      This includes patches to the Haifa scheduler. Alpha porters, please
+      check if this makes the Haifa scheduler OK again.
+    * Objective C patches from CVS.
+
+ -- J.H.M. Dassen (Ray) <jdassen at wi.LeidenUniv.nl>  Fri,  8 May 1998 14:43:20 +0200
+
+egcs (1.0.3-0.1) frozen unstable; urgency=low (high for maintainers that use objc)
+
+  * bug fixes only in new upstream version
+  * Applied patches from egcs CVS archive (egcs_1_03_prerelease)
+    (see gcc/ChangeLog in the egcs source package).
+  * libstdc++2.8-dev no longer Provides: libg++-dev (fixes #21153).
+  * libstdc++2.8-dev now Conflicts: libg++27-dev (bo),
+    libg++272-dev (hamm) [regular packages] rather than
+    Conflicts: libg++-dev [virtual package] to prepare the way for "libg++"
+    to be used as a virtual package for a new libg++ package (i.e. an up to
+    date one, which not longer contains libstdc++, but only the GNU
+    extensions) that is compatible with the egcs g++ packages. Such a package
+    isn't available yet. Joel Klecker tried building libg++2.8.1.1a within
+    egcs's libstdc++ setup, but it appears to need true gcc 2.8.1 .
+  * Filed Severity: important bugs against wxxt1-dev (#21707) because these
+    still depend on libg++-dev, which is removed in this version.
+    A fixed libsidplay1-dev has already been uploaded.
+  * libstdc++2.8 is now Section: base and Priority: required (as dselect is
+    linked against it).
+  * Disabled Haifa scheduling on Alpha again; Chris Chimelis reported
+    that this caused problems on some machines.
+  * [gcc/extend.texi]
+    ftp://maya.idiap.ch/pub/tmb/usenix88-lexic.ps.Z is no longer available;
+    use http://master.debian.org/~karlheg/Usenix88-lexic.pdf .
+    (fixes the egcs part of #20002).
+  * Updated Standards-Version.
+  * Changed chmod in debian/rules at Johnie Ingram's request.
+  * Rather than hardwire the Debian part of the packages' version number,
+    extract it from debian/changelog .
+  * Use gcc/objc/thr-posix.c from 980418 egcs snapshot to make objc work.
+    (Fixes #21192).
+  * Applied workaround for the GNUstep packages on sparc systems.
+    See README.sparc (on sparc packages only) in the doc directory.
+    This affects the other compilers as well.
+  * Already done in 1.0.2-0.7: the gobjc package now provides a virtual
+    package objc-compiler.
+
+ -- J.H.M. Dassen (Ray) <jdassen at wi.LeidenUniv.nl>  Tue, 28 Apr 1998 12:05:28 +0200
+
+egcs (1.0.2-0.7) frozen unstable; urgency=low
+
+  * Separated out Objective-C compiler.
+  * Applied patch from http://www.cygnus.com/ml/egcs/1998-Apr/0614.html
+
+ -- Matthias Klose <doko at debian.org>  Fri, 17 Apr 1998 10:25:48 +0200
+
+egcs (1.0.2-0.6) frozen unstable; urgency=low
+
+  * Due to upstream changes (libg++ is now only the GNU specific C++
+    classes, and is no longer maintained; libstdc++ contains the C++
+    standard library, including STL), the virtual "libg++-dev"
+    package's meaning has become confusing. Therefore, new or updated
+    packages should no longer use the virtual "libg++-dev" package.
+  * Corrected g++'s Recommends to libstdc++2.8-dev (>=2.90.27-0.1).
+    The previous version had Recommends: libstdc++-dev (>=2.90.27-0.1)
+    which doesn't work, as libstc++-dev is a virtual package.
+  * Bumped Standards-Version.
+
+ -- J.H.M. Dassen (Ray) <jdassen at wi.LeidenUniv.nl>  Tue, 14 Apr 1998 11:52:08 +0200
+
+egcs (1.0.2-0.5) frozen unstable; urgency=low (high for maintainers of packages that use libstdc++)
+
+  * Modified shlibs file for libstdc++ to generate versioned dependencies,
+    as it is not link compatible with the 1.0.1-x versions in
+    project/experimental. (Fixes #20247, #20033)
+    Packages depending on libstd++ should be recompiled to fix their
+    dependencies.
+  * Strenghtened g++'s Recommends: libstdc++-dev to the 1.0.2 version or
+    newer.
+  * Fixed problems with the unknown(7) symlink for gcov.
+  * Reordering links now works.
+
+ -- Adam Heath <adam.heath at usa.net>  Sun, 12 Apr 1998 13:09:30 -0400
+
+egcs (1.0.2-0.4) frozen unstable; urgency=low
+
+  * Unreleased. This is the version Adam Heath received from me.
+  * Replaces: gcc (<= 2.7.2.3-3) so that the overlap with the older gcc
+    packages (including bo's gcc_2.7.2.1-8) is handled properly
+    (fixes #19931, #19672, #20217, #20593).
+  * Alpha architecture (fixes #20875):
+    * Patched gcc/config/alpha/linux.h for the gmon functions to operate
+      properly.
+    * Made egcs the primary C compiler.
+    * Enabled Hafia scheduling.
+  * Lintian-detected problems:
+    * E: libstdc++2.8: ldconfig-symlink-before-shlib-in-deb usr/lib/libstdc++.so.2.8
+    * E: egcc: binary-without-manpage gcov
+      Reported as wishlist bug; added link to undocumented(7).
+    * W: libstdc++2.8: non-standard-executable-perm usr/lib/libstdc++.so.2.8.0 0555
+    * E: libstdc++2.8: shlib-with-executable-bit usr/lib/libstdc++.so.2.8.0 0555
+
+ -- J.H.M. Dassen (Ray) <jdassen at wi.LeidenUniv.nl>  Fri, 10 Apr 1998 14:46:46 +0200
+
+egcs (1.0.2-0.3) frozen unstable; urgency=low
+
+  * Really fixed dependencies.
+
+ -- J.H.M. Dassen (Ray) <jdassen at wi.LeidenUniv.nl>  Mon, 30 Mar 1998 11:30:26 +0200
+
+egcs (1.0.2-0.2) frozen unstable; urgency=low
+
+  * Fixed dependencies.
+
+ -- J.H.M. Dassen (Ray) <jdassen at wi.LeidenUniv.nl>  Sat, 28 Mar 1998 13:58:58 +0100
+
+egcs (1.0.2-0.1) frozen unstable; urgency=low
+
+  * New upstream version; it now has -Di386 in CPP_PREDEFINES.
+  * Only used the debian/* patches from 1.0.1-2; the rest of it appears
+    to be in 1.0.2 already.
+
+ -- J.H.M. Dassen (Ray) <jdassen at wi.LeidenUniv.nl>  Fri, 27 Mar 1998 11:47:14 +0100
+
+egcs (1.0.1-2) unstable; urgency=low
+
+  * Integrated pre-release 1.0.2 patches
+  * Split out g++
+  * egcs may now provide either the primary or secondary C compiler
+
+ -- Galen Hazelwood <galenh at micron.net>  Sat, 14 Mar 1998 14:15:32 -0700
+
+egcs (1.0.1-1) unstable; urgency=low
+
+  * New upstream version
+  * egcs is now the standard Debian gcc!
+  * gcc now provides c-compiler (#15248 et al.)
+  * g77 now provides fortran77-compiler
+  * g77 dependencies now correct (#16991)
+  * /usr/doc/gcc/changelog.gz now has correct permissions (#16139)
+
+ -- Galen Hazelwood <galenh at micron.net>  Sat,  7 Feb 1998 19:22:30 -0700
+
+egcs (1.0-1) experimental; urgency=low
+
+  * First official release
+
+ -- Galen Hazelwood <galenh at micron.net>  Thu,  4 Dec 1997 16:30:11 -0700
+
+egcs (970917-1) experimental; urgency=low
+
+  * New upstream snapshot (There's a lot of stuff here as well, including
+    a new libstdc++, but it _still_ won't build...)
+  * eg77 driver now works properly
+
+ -- Galen Hazelwood <galenh at micron.net>  Wed, 17 Sep 1997 20:44:29 -0600
+
+egcs (970904-1) experimental; urgency=low
+
+  * New upstream snapshot
+
+ -- Galen Hazelwood <galenh at micron.net>  Sun,  7 Sep 1997 18:25:06 -0600
+
+egcs (970814-1) experimental; urgency=low
+
+  * Initial packaging (of initial snapshot!)
+
+ -- Galen Hazelwood <galenh at micron.net>  Wed, 20 Aug 1997 00:36:28 +0000
+
+gcc272 (2.7.2.3-12) unstable; urgency=low
+
+  * Compiled on a glibc-2.0 based system.
+  * Reflect move of manpage to /usr/share in gcc.postinst as well.
+  * Moved gcc272-docs to section doc, priority optional.
+
+ -- Matthias Klose <doko at cs.tu-berlin.de>  Sat, 28 Aug 1999 13:42:13 +0200
+
+gcc272 (2.7.2.3-11) unstable; urgency=low
+
+  * Follow Debian policy for GNU system type (fixes #42657).
+  * config/i386/linux.h: Remove %[cpp_cpu] from CPP_SPEC. Stops gcc-2.95
+    complaining about obsolete spec operators (using gcc -V 2.7.2.3).
+    Patch suggested by Zack Weinberg <zack at bitmover.com>.
+
+ -- Matthias Klose <doko at cs.tu-berlin.de>  Sun, 15 Aug 1999 20:12:21 +0200
+
+gcc272 (2.7.2.3-10) unstable; urgency=low
+
+  * Renamed source package to gcc272. The egcs source package is renamed
+    to gcc, because it's now the "official" GNU C compiler.
+  * Changed maintainer address to "Debian GCC maintainers".
+  * Install info and man stuff to /usr/share.
+
+ -- Matthias Klose <doko at cs.tu-berlin.de>  Thu, 27 May 1999 12:29:23 +0200
+
+gcc (2.7.2.3-9) unstable; urgency=low
+
+  * debian/{postinst,prerm}-doc: handle gcc272.info, not gcc.info.
+    Fixes #36306.
+
+ -- Matthias Klose <doko at cs.tu-berlin.de>  Tue, 20 Apr 1999 07:32:58 +0200
+
+gcc (2.7.2.3-8) unstable; urgency=low
+
+  * Make gcc-2.7 the secondary compiler. Rename gcc package to gcc272.
+    On i386, sparc and m68k, this package is compiled against glibc2.0.
+  * The cpp package is built from the egcs source package.
+
+ -- Matthias Klose <doko at cs.tu-berlin.de>  Mon, 29 Mar 1999 22:48:50 +0200
+
+gcc (2.7.2.3-7) frozen unstable; urgency=low
+
+  * Separated out ObjC compiler to gobjc27 package.
+  * Changed maintainer address.
+  * Synchronized README.Debian with egcs-1.1.1-3.
+
+ -- Matthias Klose <doko at cs.tu-berlin.de>  Tue, 29 Dec 1998 19:05:26 +0100
+
+gcc (2.7.2.3-6) frozen unstable; urgency=low
+
+  * Link with -lc on i386, m68k, sparc, when building shared libraries
+    (fixes #25122).
+
+ -- Matthias Klose <doko at cs.tu-berlin.de>  Thu,  3 Dec 1998 12:12:12 +0200
+
+gcc (2.7.2.3-5) frozen unstable; urgency=low
+
+  * Updated maintainer info.
+  * Updated Standards-Version; made lintian-clean.
+  * gcc-docs can coexist with the latest egcs-docs, so added (<= version) to
+    the Conflicts.
+  * Updated the README and renamed it to README.Debian .
+  * Put a reference to /usr/doc/gcc/README.Debian in the info docs.
+  * Updated description of g++272 .
+  * Clean up generated info files, to keep the diff small.
+
+ -- J.H.M. Dassen (Ray) <jdassen at wi.LeidenUniv.nl>  Tue, 17 Nov 1998 20:05:59 +0100
+
+gcc (2.7.2.3-4.8) frozen unstable; urgency=high
+
+  * Non-maintainer release
+  * Fix type in extended description
+  * Removed wrong test in postinst
+  * Add preinst to clean up some stuff from an older gcc package properly
+    and stop man complaining about dangling symlinks
+
+ -- Wichert Akkerman <wakkerma at debian.org>  Fri, 17 Jul 1998 18:48:32 +0200
+
+gcc (2.7.2.3-4.7) frozen unstable; urgency=high
+
+  * Really fixed gcc-docs postinst (Fixes #23470), so that `gcc-docs'
+    becomes installable.
+
+ -- J.H.M. Dassen (Ray) <jdassen at wi.LeidenUniv.nl>  Mon, 15 Jun 1998 07:53:40 +0200
+
+gcc (2.7.2.3-4.6) frozen unstable; urgency=high
+
+  * [gcc.c] There is one call to choose_temp_base for determining the
+    tempdir to be used only;
+    #ifdef HAVE_MKSTEMP delete the tempfile created as a side effect.
+    (fixes #23123 for gcc).
+  * gcc-docs postinst was broken (due to a broken line) (fixes #23391, #23401).
+  * [debian/control] description for gcc-docs said `egcs' where it should have
+    said `gcc' (fixes #23396).
+
+ -- J.H.M. Dassen (Ray) <jdassen at wi.LeidenUniv.nl>  Thu, 11 Jun 1998 12:48:50 +0200
+
+gcc (2.7.2.3-4.5) frozen unstable; urgency=high
+
+  * The previous version left temporary files behind, as they were not
+    marked for deletion afterwards.
+
+ -- J.H.M. Dassen (Ray) <jdassen at wi.LeidenUniv.nl>  Sun, 31 May 1998 22:49:14 +0200
+
+gcc (2.7.2.3-4.4) frozen unstable; urgency=high (security fixes)
+
+  * Security improvements with regard to the /tmp problem
+    (gcc opens predictably named files in TMPDIR which can be abused via
+    symlinks)  (Fixes #19453 for gcc):
+    * Compile -DMKTEMP_EACH_FILE to ensure the %u name is generated randomly
+      every time; affects gcc/gcc.c .
+    * [cp/g++.c, collect2.c, gcc.c] If compiled -DHAVE_MKSTEMP use mkstemp(3)
+      rather than mktemp(3).
+    * Security improvements: don't use the result of choose_temp_base in a
+      predictable fashion.
+      [gcc.c]:
+      * @c, @objective-c: use random name rather then tempbasename.i for
+        intermediate preprocessor output (%g.i -> %d%u).
+      * @c, @objective-c: use random name rather then tempbasename.s for
+        intermediate compiler output (%g.s -> %d%u).
+      * @c, @objective-c, @cpp-output, @assembler-with-cpp: switched
+        "as [-o output file] <input file>" to
+        "as <input file> [-o output file]".
+      * @c, @objective-c, @assembler-with-cpp: use previous random name
+        (cc1|cpp output) rather then tempbasename.s for intermediate assembler
+        input (%g.s -> %U)
+      [f/lang-specs.h]:
+      * @f77-cpp-input: use random name rather then tempbasename.i for
+        intermediate cpp output (%g.i -> %d%u).
+      * @f77-cpp-input: use previous random name (cpp output) rather than
+        tempbasename.i for f771 input (%g.i -> %U).
+      * @f77-cpp-input: switched
+        "as [-o output file] <input file>" to
+        "as <input file> [-o output file]".
+      * @f77-cpp-input: use random name rather then tempbasename.s for
+        intermediate compiler output (%g.s -> %d%u).
+      * @ratfor: use random name rather then tempbasename.i for
+        intermediate ratfor output (%g.f -> %d%u).
+      * @ratfor: use previous random name (ratfor output) rather than
+        tempbasename.i for f771 input (%g.f -> %U).
+      * @ratfor: use random name rather then tempbasename.s for
+        intermediate compiler output (%g.s -> %d%u).
+      * @ratfor: switched
+        "as [-o output file] <input file>" to
+        "as <input file> [-o output file]".
+      * @ratfor: use previous random name
+        (ratfor output) rather then tempbasename.s for intermediate assembler
+        input (%g.s -> %U).
+      * @f77: use random name rather then tempbasename.s for
+        intermediate ratfor output (%g.f -> %d%u).
+      * @ratfor: use previous random name (ratfor output) rather than
+        tempbasename.i for f771 input (%g.f -> %U).
+      * @ratfor: use random name rather then tempbasename.s for
+        intermediate compiler output (%g.s -> %d%u).
+      * @ratfor: switched
+        "as [-o output file] <input file>" to
+        "as <input file> [-o output file]".
+      * @ratfor: use previous random name
+        (ratfor output) rather then tempbasename.s for intermediate assembler
+        input (%g.s -> %U).
+      * @f77: use random name rather then tempbasename.s for
+        intermediate compiler output (%g.s -> %d%u).
+      * @f77: switched
+        "as [-o output file] <input file>" to
+        "as <input file> [-o output file]".
+      * @ratfor: use random name rather then tempbasename.s for
+        intermediate compiler output (%g.s -> %U).
+
+ -- J.H.M. Dassen (Ray) <jdassen at wi.LeidenUniv.nl>  Sat, 30 May 1998 17:27:03 +0200
+
+gcc (2.7.2.3-4.3) frozen unstable; urgency=high
+
+  * The "alpha" patches from -4 affected a lot more than alpha support,
+    and in all likeliness broke compilation of libc6 2.0.7pre3-1
+    and 2.0.7pre1-4 . I removed them by selective application of the
+    diff between -4 and -4. (should fix #22292).
+  * Fixed reference to the trampolines paper (fixes #20002 for Debian;
+    this still needs to be forwarded).
+  * This is for frozen too. (obsoletes #22390 (request to move -4.2 to
+    frozen)).
+  * Split of gcc-docs package, so that the gcc can be succesfully installed
+    on systems that have egcs-docs installed.
+  * Added the README on the compiler situation that's already in the egcs
+    packages.
+  * Use the recommended settings LDFLAGS=-s CFLAGS= BOOT_CFLAGS='-O2'.
+
+ -- J.H.M. Dassen (Ray) <jdassen at wi.LeidenUniv.nl>  Thu, 28 May 1998 20:03:59 +0200
+
+gcc (2.7.2.3-4.2) unstable; urgency=low
+
+  * Still for unstable, as I have received no feedback about the g++272
+    package yet.
+  * gcc now Provides: objc-compiler .
+  * Clean up /etc/alternatives/{g++,g++.1.gz} if they are dangling.
+    (fixes #19765, #20563)
+
+ -- J.H.M. Dassen (Ray) <jdassen at wi.LeidenUniv.nl>  Wed, 22 Apr 1998 12:40:45 +0200
+
+gcc (2.7.2.3-4.1) unstable; urgency=low
+
+  * Bumped Standards-Version.
+  * Forked off a g++272 package (e.g. for code that uses the GNU extensions
+    in libg++); for now this is in "unstable" only; feedback appreciated.
+  * Some cleanup (lintian): permissions, absolute link, gzip manpage.
+
+ -- J.H.M. Dassen (Ray) <jdassen at wi.LeidenUniv.nl>  Fri, 17 Apr 1998 13:05:25 +0200
+
+gcc (2.7.2.3-4) unstable; urgency=low
+
+  * Added alpha patches
+  * Only build C and objective-c compilers, split off g++
+
+ -- Galen Hazelwood <galenh at micron.net>  Sun,  8 Mar 1998 21:16:39 -0700
+
+gcc (2.7.2.3-3) unstable; urgency=low
+
+  * Added patches for m68k
+  * Added patches for sparc (#13968)
+
+ -- Galen Hazelwood <galenh at micron.net>  Fri, 17 Oct 1997 18:25:21 -0600
+
+gcc (2.7.2.3-2) unstable; urgency=low
+
+  * Added g77 support (g77 0.5.21)
+
+ -- Galen Hazelwood <galenh at micron.net>  Wed, 10 Sep 1997 18:44:54 -0600
+
+gcc (2.7.2.3-1) unstable; urgency=low
+
+  * New upstream version
+  * Now using pristine source
+  * Removed misplaced paragraph in cpp.texi (#10877)
+  * Fix security bug for temporary files (#5298)
+  * Added Suggests: libg++-dev (#12335)
+  * Patched objc/thr-posix.c to support conditions (#12502)
+
+ -- Galen Hazelwood <galenh at micron.net>  Mon,  8 Sep 1997 12:20:07 -0600
+
+gcc (2.7.2.2-7) unstable; urgency=low
+
+  * Made cc and c++ managed through alternates mechanism (for egcs)
+
+ -- Galen Hazelwood <galenh at micron.net>  Tue, 19 Aug 1997 22:37:03 +0000
+
+gcc (2.7.2.2-6) unstable; urgency=low
+
+  * Tweaked Objective-C thread support (#11069)
+
+ -- Galen Hazelwood <galenh at micron.net>  Wed,  9 Jul 1997 11:56:57 -0600
+
+gcc (2.7.2.2-5) unstable; urgency=low
+
+  * More updated m68k patches
+  * Now conflicts with libc5-dev (#10006, #10112)
+  * More strict Depends: cpp, prevents version mismatch (#9954)
+
+ -- Galen Hazelwood <galenh at micron.net>  Thu, 19 Jun 1997 01:29:02 -0600
+
+gcc (2.7.2.2-4) unstable; urgency=low
+
+  * Moved to unstable
+  * Temporarily removed fortran support (waiting for new g77)
+  * Updated m68k patches
+
+ -- Galen Hazelwood <galenh at micron.net>  Fri,  9 May 1997 13:35:14 -0600
+
+gcc (2.7.2.2-3) experimental; urgency=low
+
+  * Built against libc6 (fixes bug #8511)
+
+ -- Galen Hazelwood <galenh at micron.net>  Fri, 4 Apr 1997 13:30:10 -0700
+
+gcc (2.7.2.2-2) experimental; urgency=low
+
+  * Fixed configure to build crt{begin,end}S.o on i386
+
+ -- Galen Hazelwood <galenh at micron.net>  Tue, 11 Mar 1997 16:15:02 -0700
+
+gcc (2.7.2.2-1) experimental; urgency=low
+
+  * Built for use with libc6-dev (experimental purposes only!)
+  * Added m68k patches from Andreas Schwab
+
+ -- Galen Hazelwood <galenh at micron.net>  Fri, 7 Mar 1997 12:44:17 -0700
+
+gcc (2.7.2.1-7) unstable; urgency=low
+
+  * Patched to support g77 0.5.20
+
+ -- Galen Hazelwood <galenh at micron.net>  Thu, 6 Mar 1997 22:20:23 -0700
+
+gcc (2.7.2.1-6) unstable; urgency=low
+
+  * Added (small) manpage for protoize/unprotoize (fixes bug #6904)
+  * Removed -lieee from specs file (fixes bug #7741)
+  * No longer builds aout-gcc
+
+ -- Galen Hazelwood <galenh at micron.net>  Mon, 3 Mar 1997 11:10:20 -0700
+
+gcc (2.7.2.1-5) unstable; urgency=low
+
+  * debian/control now lists cpp in section "interpreters"
+  * Re-added Objective-c patches for unstable
+
+ -- Galen Hazelwood <galenh at micron.net>  Wed, 22 Jan 1997 10:27:52 -0700
+
+gcc (2.7.2.1-4) stable unstable; urgency=low
+
+  * Changed original source file so dpkg-source -x works
+  * Removed Objective-c patches (unsafe for stable)
+  * Built against rex's libc, so fixes placed in -3 are available to
+    those still using rex
+
+ -- Galen Hazelwood <galenh at micron.net>  Tue, 21 Jan 1997 11:11:53 -0700
+
+gcc (2.7.2.1-3) unstable; urgency=low
+
+  * New (temporary) maintainer
+  * Updated to new standards and source format
+  * Integrated aout-gcc into gcc source package
+  * Demoted aout-gcc to Priority "extra"
+  * cpp package description more clear (fixes bug #5428)
+  * Removed cpp "Replaces: gcc" (fixes bug #5762)
+  * Minor fix to invoke.texi (fixes bug #2909)
+  * Added latest Objective-C patches for GNUstep people (fixes bug #4657)
+
+ -- Galen Hazelwood <galenh at micron.net>  Sun, 5 Jan 1997 09:57:36 -0700
diff --git a/debian/compat b/debian/compat
new file mode 100644
index 0000000..7ed6ff8
--- /dev/null
+++ b/debian/compat
@@ -0,0 +1 @@
+5
diff --git a/debian/control b/debian/control
new file mode 100644
index 0000000..be54b1e
--- /dev/null
+++ b/debian/control
@@ -0,0 +1,2481 @@
+Source: gcc-5
+Section: devel
+Priority: optional
+Maintainer: Debian GCC Maintainers <debian-gcc at lists.debian.org>
+Uploaders: Matthias Klose <doko at debian.org>
+Standards-Version: 3.9.6
+Build-Depends: debhelper (>= 5.0.62), dpkg-dev (>= 1.17.11), 
+  g++-multilib [amd64 i386 kfreebsd-amd64 mips mips64 mips64el mipsel mipsn32 mipsn32el powerpc ppc64 s390 s390x sparc sparc64 x32], g++-4.9 [arm64], 
+  libc6.1-dev (>= 2.13-5) [alpha ia64] | libc0.3-dev (>= 2.13-5) [hurd-i386] | libc0.1-dev (>= 2.13-5) [kfreebsd-i386 kfreebsd-amd64] | libc6-dev (>= 2.13-5), libc6-dev (>= 2.13-31) [armel armhf], libc6-dev-amd64 [i386 x32], libc6-dev-sparc64 [sparc], libc6-dev-sparc [sparc64], 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 mipsn32 mi [...]
+  kfreebsd-kernel-headers (>= 0.84) [kfreebsd-any], linux-libc-dev [m68k], 
+  m4, libtool, autoconf2.64, 
+  libunwind7-dev (>= 0.98.5-6) [ia64], libatomic-ops-dev [ia64], 
+  autogen, gawk, lzma, xz-utils, patchutils, 
+  zlib1g-dev, systemtap-sdt-dev [linux-any kfreebsd-any hurd-any], 
+  binutils (>= 2.25.90) | binutils-multiarch (>= 2.25.90), binutils-hppa64-linux-gnu (>= 2.25.90) [hppa amd64 i386 x32], 
+  gperf (>= 3.0.1), bison (>= 1:2.3), flex, gettext, 
+  gdb, 
+  texinfo (>= 4.3), locales, sharutils, 
+  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, gnat-5 [!m32r !sh3 !sh3eb !sh4eb !powerpcspe !mips64 !x32 !m68k !sh4 !sparc64], g++-5, netbase, 
+  libisl-dev (>= 0.14), libmpc-dev (>= 1.0), libmpfr-dev (>= 3.0.0-9~), libgmp-dev (>= 2:5.0.1~), 
+  dejagnu [!m68k], 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, 
+Homepage: http://gcc.gnu.org/
+Vcs-Browser: http://svn.debian.org/viewsvn/gcccvs/branches/sid/gcc-5/
+Vcs-Svn: svn://anonscm.debian.org/gcccvs/branches/sid/gcc-5
+
+Package: gcc-5-base
+Architecture: any
+Multi-Arch: same
+Section: libs
+Priority: required
+Depends: ${misc:Depends}
+Replaces: ${base:Replaces}
+Breaks: ${base:Breaks}
+Description: GCC, the GNU Compiler Collection (base package)
+ This package contains files common to all languages and libraries
+ contained in the GNU Compiler Collection (GCC).
+
+Package: libgcc1
+Architecture: any
+Section: libs
+Priority: required
+Depends: gcc-5-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends}
+Provides: libgcc1-armel [armel], libgcc1-armhf [armhf]
+Multi-Arch: same
+Pre-Depends: ${misc:Pre-Depends}
+Breaks: ${multiarch:breaks}
+Description: GCC support library
+ Shared version of the support library, a library of internal subroutines
+ that GCC uses to overcome shortcomings of particular machines, or
+ special needs for some languages.
+
+Package: libgcc1-dbg
+Architecture: any
+Section: debug
+Priority: extra
+Depends: gcc-5-base (= ${gcc:Version}), libgcc1 (= ${gcc:EpochVersion}), ${misc:Depends}
+Provides: libgcc1-dbg-armel [armel], libgcc1-dbg-armhf [armhf]
+Multi-Arch: same
+Description: GCC support library (debug symbols)
+ Debug symbols for the GCC support library.
+
+Package: libgcc2
+Architecture: m68k
+Section: libs
+Priority: required
+Depends: gcc-5-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends}
+Multi-Arch: same
+Pre-Depends: ${misc:Pre-Depends}
+Breaks: ${multiarch:breaks}
+Description: GCC support library
+ Shared version of the support library, a library of internal subroutines
+ that GCC uses to overcome shortcomings of particular machines, or
+ special needs for some languages.
+
+Package: libgcc2-dbg
+Architecture: m68k
+Section: debug
+Priority: extra
+Depends: gcc-5-base (= ${gcc:Version}), libgcc2 (= ${gcc:EpochVersion}), ${misc:Depends}
+Multi-Arch: same
+Description: GCC support library (debug symbols)
+ Debug symbols for the GCC support library.
+
+Package: libgcc-5-dev
+Architecture: any
+Section: libdevel
+Priority: optional
+Recommends: ${dep:libcdev}
+Depends: gcc-5-base (= ${gcc:Version}), ${dep:libgcc}, ${dep:libssp}, ${dep:libgomp}, ${dep:libitm},
+ ${dep:libatomic}, ${dep:libbtrace}, ${dep:libasan}, ${dep:liblsan},
+ ${dep:libtsan}, ${dep:libubsan}, ${dep:libcilkrts}, ${dep:libvtv},
+ ${dep:libmpx},
+ ${dep:libqmath}, ${dep:libunwinddev}, ${shlibs:Depends}, ${misc:Depends}
+Multi-Arch: same
+Replaces: gccgo-5 (<< ${gcc:Version})
+Description: GCC support library (development files)
+ This package contains the headers and static library files necessary for
+ building C programs which use libgcc, libgomp, libquadmath, libssp or libitm.
+
+Package: libgcc4
+Architecture: hppa
+Multi-Arch: same
+Pre-Depends: ${misc:Pre-Depends}
+Breaks: ${multiarch:breaks}
+Section: libs
+Priority: required
+Depends: gcc-5-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends}
+Description: GCC support library
+ Shared version of the support library, a library of internal subroutines
+ that GCC uses to overcome shortcomings of particular machines, or
+ special needs for some languages.
+
+Package: libgcc4-dbg
+Architecture: hppa
+Multi-Arch: same
+Section: debug
+Priority: extra
+Depends: gcc-5-base (= ${gcc:Version}), libgcc4 (= ${gcc:EpochVersion}), ${misc:Depends}
+Description: GCC support library (debug symbols)
+ Debug symbols for the GCC support library.
+
+Package: lib64gcc1
+Architecture: i386 powerpc sparc s390 mips mipsel mipsn32 mipsn32el x32
+Section: libs
+Priority: optional
+Depends: gcc-5-base (= ${gcc:Version}), ${dep:libcbiarch}, ${misc:Depends}
+Conflicts: libgcc1 (<= 1:3.3-0pre9)
+Description: GCC support library (64bit)
+ Shared version of the support library, a library of internal subroutines
+ that GCC uses to overcome shortcomings of particular machines, or
+ special needs for some languages.
+
+Package: lib64gcc1-dbg
+Architecture: i386 powerpc sparc s390 mips mipsel mipsn32 mipsn32el x32
+Section: debug
+Priority: extra
+Depends: gcc-5-base (= ${gcc:Version}), lib64gcc1 (= ${gcc:EpochVersion}), ${misc:Depends}
+Description: GCC support library (debug symbols)
+ Debug symbols for the GCC support library.
+
+Package: lib64gcc-5-dev
+Architecture: i386 powerpc sparc s390 mips mipsel mipsn32 mipsn32el x32
+Section: libdevel
+Priority: optional
+Recommends: ${dep:libcdev}
+Depends: gcc-5-base (= ${gcc:Version}), ${dep:libgccbiarch}, ${dep:libsspbiarch},
+ ${dep:libgompbiarch}, ${dep:libitmbiarch}, ${dep:libatomicbiarch},
+ ${dep:libbtracebiarch}, ${dep:libasanbiarch}, ${dep:liblsanbiarch},
+ ${dep:libtsanbiarch}, ${dep:libubsanbiarch},
+ ${dep:libvtvbiarch}, ${dep:libcilkrtsbiarch}, ${dep:libmpxbiarch},
+ ${dep:libqmathbiarch}, ${shlibs:Depends}, ${misc:Depends}
+Replaces: gccgo-5-multilib (<< ${gcc:Version})
+Description: GCC support library (64bit development files)
+ This package contains the headers and static library files necessary for
+ building C programs which use libgcc, libgomp, libquadmath, libssp or libitm.
+
+Package: lib32gcc1
+Architecture: amd64 ppc64 kfreebsd-amd64 s390x sparc64 x32 mipsn32 mipsn32el mips64 mips64el
+Section: libs
+Priority: optional
+Depends: gcc-5-base (= ${gcc:Version}), ${dep:libcbiarch}, ${misc:Depends}
+Conflicts: ${confl:lib32}
+Description: GCC support library (32 bit Version)
+ Shared version of the support library, a library of internal subroutines
+ that GCC uses to overcome shortcomings of particular machines, or
+ special needs for some languages.
+
+Package: lib32gcc1-dbg
+Architecture: amd64 ppc64 kfreebsd-amd64 s390x sparc64 x32 mipsn32 mipsn32el mips64 mips64el
+Section: debug
+Priority: extra
+Depends: gcc-5-base (= ${gcc:Version}), lib32gcc1 (= ${gcc:EpochVersion}), ${misc:Depends}
+Description: GCC support library (debug symbols)
+ Debug symbols for the GCC support library.
+
+Package: lib32gcc-5-dev
+Architecture: amd64 ppc64 kfreebsd-amd64 s390x sparc64 x32 mipsn32 mipsn32el mips64 mips64el
+Section: libdevel
+Priority: optional
+Recommends: ${dep:libcdev}
+Depends: gcc-5-base (= ${gcc:Version}), ${dep:libgccbiarch}, ${dep:libsspbiarch},
+ ${dep:libgompbiarch}, ${dep:libitmbiarch}, ${dep:libatomicbiarch},
+ ${dep:libbtracebiarch}, ${dep:libasanbiarch}, ${dep:liblsanbiarch},
+ ${dep:libtsanbiarch}, ${dep:libubsanbiarch},
+ ${dep:libvtvbiarch}, ${dep:libcilkrtsbiarch}, ${dep:libmpxbiarch},
+ ${dep:libqmathbiarch}, ${shlibs:Depends}, ${misc:Depends}
+Replaces: gccgo-5-multilib (<< ${gcc:Version})
+Description: GCC support library (32 bit development files)
+ This package contains the headers and static library files necessary for
+ building C programs which use libgcc, libgomp, libquadmath, libssp or libitm.
+
+Package: libn32gcc1
+Architecture: mips mipsel mips64 mips64el
+Section: libs
+Priority: optional
+Depends: gcc-5-base (= ${gcc:Version}), ${dep:libcbiarch}, ${misc:Depends}
+Conflicts: libgcc1 (<= 1:3.3-0pre9)
+Description: GCC support library (n32)
+ Shared version of the support library, a library of internal subroutines
+ that GCC uses to overcome shortcomings of particular machines, or
+ special needs for some languages.
+
+Package: libn32gcc1-dbg
+Architecture: mips mipsel mips64 mips64el
+Section: debug
+Priority: extra
+Depends: gcc-5-base (= ${gcc:Version}), libn32gcc1 (= ${gcc:EpochVersion}), ${misc:Depends}
+Description: GCC support library (debug symbols)
+ Debug symbols for the GCC support library.
+
+Package: libn32gcc-5-dev
+Architecture: mips mipsel mips64 mips64el
+Section: libdevel
+Priority: optional
+Recommends: ${dep:libcdev}
+Depends: gcc-5-base (= ${gcc:Version}), ${dep:libgccbiarch}, ${dep:libsspbiarch},
+ ${dep:libgompbiarch}, ${dep:libitmbiarch}, ${dep:libatomicbiarch},
+ ${dep:libbtracebiarch}, ${dep:libasanbiarch}, ${dep:liblsanbiarch},
+ ${dep:libtsanbiarch}, ${dep:libubsanbiarch},
+ ${dep:libvtvbiarch}, ${dep:libcilkrtsbiarch}, ${dep:libmpxbiarch},
+ ${dep:libqmathbiarch}, ${shlibs:Depends}, ${misc:Depends}
+Replaces: gccgo-5-multilib (<< ${gcc:Version})
+Description: GCC support library (n32 development files)
+ This package contains the headers and static library files necessary for
+ building C programs which use libgcc, libgomp, libquadmath, libssp or libitm.
+
+Package: libx32gcc1
+Architecture: amd64 i386
+Section: libs
+Priority: optional
+Depends: gcc-5-base (= ${gcc:Version}), ${dep:libcbiarch}, ${misc:Depends}
+Description: GCC support library (x32)
+ Shared version of the support library, a library of internal subroutines
+ that GCC uses to overcome shortcomings of particular machines, or
+ special needs for some languages.
+
+Package: libx32gcc1-dbg
+Architecture: amd64 i386
+Section: debug
+Priority: extra
+Depends: gcc-5-base (= ${gcc:Version}), libx32gcc1 (= ${gcc:EpochVersion}), ${misc:Depends}
+Description: GCC support library (debug symbols)
+ Debug symbols for the GCC support library.
+
+Package: libx32gcc-5-dev
+Architecture: amd64 i386
+Section: libdevel
+Priority: optional
+Recommends: ${dep:libcdev}
+Depends: gcc-5-base (= ${gcc:Version}), ${dep:libgccbiarch}, ${dep:libsspbiarch},
+ ${dep:libgompbiarch}, ${dep:libitmbiarch}, ${dep:libatomicbiarch},
+ ${dep:libbtracebiarch}, ${dep:libasanbiarch}, ${dep:liblsanbiarch},
+ ${dep:libtsanbiarch}, ${dep:libubsanbiarch},
+ ${dep:libvtvbiarch}, ${dep:libcilkrtsbiarch}, ${dep:libmpxbiarch},
+ ${dep:libqmathbiarch}, ${shlibs:Depends}, ${misc:Depends}
+Replaces: gccgo-5-multilib (<< ${gcc:Version})
+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.
+
+Package: gcc-5
+Architecture: any
+Section: devel
+Priority: optional
+Depends: cpp-5 (= ${gcc:Version}), gcc-5-base (= ${gcc:Version}),
+    ${dep:libcc1}, 
+  binutils (>= ${binutils:Version}), 
+  ${dep:libgccdev}, ${shlibs:Depends}, ${misc:Depends}
+Recommends: ${dep:libcdev}
+Replaces: gccgo-5 (<< ${gcc:Version}), gcc-5-plugin-dev (<< 5-20150321-1),
+  gcc-5-base (<< 5-20150329-1)
+Suggests: ${gcc:multilib}, gcc-5-doc (>= ${gcc:SoftVersion}),
+ gcc-5-locales (>= ${gcc:SoftVersion}),
+ libgcc1-dbg (>= ${libgcc:Version}),
+ libgomp1-dbg (>= ${gcc:Version}),
+ libitm1-dbg (>= ${gcc:Version}),
+ libatomic1-dbg (>= ${gcc:Version}),
+ libasan2-dbg (>= ${gcc:Version}),
+ liblsan0-dbg (>= ${gcc:Version}),
+ libtsan0-dbg (>= ${gcc:Version}),
+ libubsan0-dbg (>= ${gcc:Version}),
+ libcilkrts5-dbg (>= ${gcc:Version}),
+ libmpx0-dbg (>= ${gcc:Version}),
+ libquadmath0-dbg (>= ${gcc:Version})
+Provides: c-compiler
+Description: GNU C compiler
+ This is the GNU C compiler, a fairly portable optimizing compiler for C.
+
+Package: gcc-5-multilib
+Architecture: amd64 i386 kfreebsd-amd64 mips mips64 mips64el mipsel mipsn32 mipsn32el powerpc ppc64 s390 s390x sparc sparc64 x32
+Section: devel
+Priority: optional
+Depends: gcc-5-base (= ${gcc:Version}), gcc-5 (= ${gcc:Version}), ${dep:libcbiarchdev}, ${dep:libgccbiarchdev}, ${shlibs:Depends}, ${misc:Depends}
+Description: GNU C compiler (multilib support)
+ This is the GNU C compiler, a fairly portable optimizing compiler for C.
+ .
+ This is a dependency package, depending on development packages
+ for the non-default multilib architecture(s).
+
+Package: gcc-5-test-results
+Architecture: any
+Section: devel
+Priority: extra
+Depends: gcc-5-base (= ${gcc:Version}), ${misc:Depends}
+Replaces: g++-5 (<< 5.2.1-28)
+Description: Test results for the GCC test suite
+ This package contains the test results for running the GCC test suite
+ for a post build analysis.
+
+Package: gcc-5-plugin-dev
+Architecture: any
+Section: devel
+Priority: optional
+Depends: gcc-5-base (= ${gcc:Version}), gcc-5 (= ${gcc:Version}), libgmp-dev (>= 2:5.0.1~), libmpc-dev (>= 1.0), ${shlibs:Depends}, ${misc:Depends}
+Description: Files for GNU GCC plugin development.
+ This package contains (header) files for GNU GCC plugin development. It
+ is only used for the development of GCC plugins, but not needed to run
+ plugins.
+
+Package: gcc-5-hppa64-linux-gnu
+Architecture: hppa amd64 i386 x32
+Section: devel
+Priority: optional
+Depends: gcc-5-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends}, binutils-hppa64-linux-gnu | binutils-hppa64
+Replaces: gcc-5-hppa64 (<< 5.2.1-22)
+Provides: gcc-5-hppa64
+Conflicts: gcc-3.3-hppa64 (<= 1:3.3.4-5), gcc-3.4-hppa64 (<= 3.4.1-3), gcc-4.7-hppa64 (<< 4.7.3-13), gcc-4.8-hppa64 (<< 4.8.2-22), gcc-4.9-hppa64 (<< 4.9.3-1)
+Description: GNU C compiler (cross compiler for hppa64)
+ This is the GNU C compiler, a fairly portable optimizing compiler for C.
+
+Package: cpp-5
+Architecture: any
+Section: interpreters
+Priority: optional
+Depends: gcc-5-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends}
+Suggests: gcc-5-locales (>= ${gcc:SoftVersion})
+Replaces: gccgo-5 (<< ${gcc:Version})
+Description: GNU C preprocessor
+ A macro processor that is used automatically by the GNU C compiler
+ to transform programs before actual compilation.
+ .
+ This package has been separated from gcc for the benefit of those who
+ require the preprocessor but not the compiler.
+
+Package: gcc-5-locales
+Architecture: all
+Section: devel
+Priority: optional
+Depends: gcc-5-base (>= ${gcc:SoftVersion}), cpp-5 (>= ${gcc:SoftVersion}), ${misc:Depends}
+Recommends: gcc-5 (>= ${gcc:SoftVersion})
+Description: GCC, the GNU compiler collection (native language support files)
+ Native language support for GCC. Lets GCC speak your language,
+ if translations are available.
+ .
+ Please do NOT submit bug reports in other languages than "C".
+ Always reset your language settings to use the "C" locales.
+
+Package: g++-5
+Architecture: any
+Section: devel
+Priority: optional
+Depends: gcc-5-base (= ${gcc:Version}), gcc-5 (= ${gcc:Version}), libstdc++-5-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends}
+Provides: c++-compiler, c++abi2-dev
+Suggests: ${gxx:multilib}, gcc-5-doc (>= ${gcc:SoftVersion}), libstdc++6-5-dbg (>= ${gcc:Version})
+Description: GNU C++ compiler
+ This is the GNU C++ compiler, a fairly portable optimizing compiler for C++.
+
+Package: g++-5-multilib
+Architecture: amd64 i386 kfreebsd-amd64 mips mips64 mips64el mipsel mipsn32 mipsn32el powerpc ppc64 s390 s390x sparc sparc64 x32
+Section: devel
+Priority: optional
+Depends: gcc-5-base (= ${gcc:Version}), g++-5 (= ${gcc:Version}), gcc-5-multilib (= ${gcc:Version}), ${dep:libcxxbiarchdev}, ${shlibs:Depends}, ${misc:Depends}
+Suggests: ${dep:libcxxbiarchdbg}
+Description: GNU C++ compiler (multilib support)
+ This is the GNU C++ compiler, a fairly portable optimizing compiler for C++.
+ .
+ This is a dependency package, depending on development packages
+ for the non-default multilib architecture(s).
+
+Package: libgomp1
+Section: libs
+Architecture: any
+Provides: libgomp1-armel [armel], libgomp1-armhf [armhf]
+Multi-Arch: same
+Pre-Depends: ${misc:Pre-Depends}
+Breaks: ${multiarch:breaks}
+Priority: optional
+Depends: gcc-5-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends}
+Description: GCC OpenMP (GOMP) support library
+ GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers
+ in the GNU Compiler Collection.
+
+Package: libgomp1-dbg
+Architecture: any
+Section: debug
+Priority: extra
+Depends: gcc-5-base (= ${gcc:Version}), libgomp1 (= ${gcc:Version}), ${misc:Depends}
+Provides: libgomp1-dbg-armel [armel], libgomp1-dbg-armhf [armhf]
+Multi-Arch: same
+Description: GCC OpenMP (GOMP) support library (debug symbols)
+ GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers
+ in the GNU Compiler Collection.
+
+Package: lib32gomp1
+Section: libs
+Architecture: amd64 ppc64 kfreebsd-amd64 s390x sparc64 x32 mipsn32 mipsn32el mips64 mips64el
+Priority: optional
+Depends: gcc-5-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+Conflicts: ${confl:lib32}
+Description: GCC OpenMP (GOMP) support library (32bit)
+ GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers
+ in the GNU Compiler Collection.
+
+Package: lib32gomp1-dbg
+Architecture: amd64 ppc64 kfreebsd-amd64 s390x sparc64 x32 mipsn32 mipsn32el mips64 mips64el
+Section: debug
+Priority: extra
+Depends: gcc-5-base (= ${gcc:Version}), lib32gomp1 (= ${gcc:Version}), ${misc:Depends}
+Description: GCC OpenMP (GOMP) support library (32 bit debug symbols)
+ GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers
+ in the GNU Compiler Collection.
+
+Package: lib64gomp1
+Section: libs
+Architecture: i386 powerpc sparc s390 mips mipsel mipsn32 mipsn32el x32
+Priority: optional
+Depends: gcc-5-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+Description: GCC OpenMP (GOMP) support library (64bit)
+ GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers
+ in the GNU Compiler Collection.
+
+Package: lib64gomp1-dbg
+Architecture: i386 powerpc sparc s390 mips mipsel mipsn32 mipsn32el x32
+Section: debug
+Priority: extra
+Depends: gcc-5-base (= ${gcc:Version}), lib64gomp1 (= ${gcc:Version}), ${misc:Depends}
+Description: GCC OpenMP (GOMP) support library (64bit debug symbols)
+ GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers
+ in the GNU Compiler Collection.
+
+Package: libn32gomp1
+Section: libs
+Architecture: mips mipsel mips64 mips64el
+Priority: optional
+Depends: gcc-5-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+Description: GCC OpenMP (GOMP) support library (n32)
+ GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers
+ in the GNU Compiler Collection.
+
+Package: libn32gomp1-dbg
+Architecture: mips mipsel mips64 mips64el
+Section: debug
+Priority: extra
+Depends: gcc-5-base (= ${gcc:Version}), libn32gomp1 (= ${gcc:Version}), ${misc:Depends}
+Description: GCC OpenMP (GOMP) support library (n32 debug symbols)
+ GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers
+
+Package: libx32gomp1
+Section: libs
+Architecture: amd64 i386
+Priority: optional
+Depends: gcc-5-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+Description: GCC OpenMP (GOMP) support library (x32)
+ GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers
+ in the GNU Compiler Collection.
+
+Package: libx32gomp1-dbg
+Architecture: amd64 i386
+Section: debug
+Priority: extra
+Depends: gcc-5-base (= ${gcc:Version}), libx32gomp1 (= ${gcc:Version}), ${misc:Depends}
+Description: GCC OpenMP (GOMP) support library (x32 debug symbols)
+ GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers
+
+Package: libitm1
+Section: libs
+Architecture: any
+Provides: libitm1-armel [armel], libitm1-armhf [armhf]
+Multi-Arch: same
+Pre-Depends: ${misc:Pre-Depends}
+Priority: optional
+Depends: gcc-5-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends}
+Description: GNU Transactional Memory Library
+ GNU Transactional Memory Library (libitm) provides transaction support for
+ accesses to the memory of a process, enabling easy-to-use synchronization of
+ accesses to shared memory by several threads.
+
+Package: libitm1-dbg
+Architecture: any
+Section: debug
+Priority: extra
+Depends: gcc-5-base (= ${gcc:Version}), libitm1 (= ${gcc:Version}), ${misc:Depends}
+Provides: libitm1-dbg-armel [armel], libitm1-dbg-armhf [armhf]
+Multi-Arch: same
+Description: GNU Transactional Memory Library (debug symbols)
+ GNU Transactional Memory Library (libitm) provides transaction support for
+ accesses to the memory of a process, enabling easy-to-use synchronization of
+ accesses to shared memory by several threads.
+
+Package: lib32itm1
+Section: libs
+Architecture: amd64 ppc64 kfreebsd-amd64 s390x sparc64 x32 mipsn32 mipsn32el mips64 mips64el
+Priority: optional
+Depends: gcc-5-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+Conflicts: ${confl:lib32}
+Description: GNU Transactional Memory Library (32bit)
+ GNU Transactional Memory Library (libitm) provides transaction support for
+ accesses to the memory of a process, enabling easy-to-use synchronization of
+ accesses to shared memory by several threads.
+
+Package: lib32itm1-dbg
+Architecture: amd64 ppc64 kfreebsd-amd64 s390x sparc64 x32 mipsn32 mipsn32el mips64 mips64el
+Section: debug
+Priority: extra
+Depends: gcc-5-base (= ${gcc:Version}), lib32itm1 (= ${gcc:Version}), ${misc:Depends}
+Description: GNU Transactional Memory Library (32 bit debug symbols)
+ GNU Transactional Memory Library (libitm) provides transaction support for
+ accesses to the memory of a process, enabling easy-to-use synchronization of
+ accesses to shared memory by several threads.
+
+Package: lib64itm1
+Section: libs
+Architecture: i386 powerpc sparc s390 mips mipsel mipsn32 mipsn32el x32
+Priority: optional
+Depends: gcc-5-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+Description: GNU Transactional Memory Library (64bit)
+ GNU Transactional Memory Library (libitm) provides transaction support for
+ accesses to the memory of a process, enabling easy-to-use synchronization of
+ accesses to shared memory by several threads.
+
+Package: lib64itm1-dbg
+Architecture: i386 powerpc sparc s390 mips mipsel mipsn32 mipsn32el x32
+Section: debug
+Priority: extra
+Depends: gcc-5-base (= ${gcc:Version}), lib64itm1 (= ${gcc:Version}), ${misc:Depends}
+Description: GNU Transactional Memory Library (64bit debug symbols)
+ GNU Transactional Memory Library (libitm) provides transaction support for
+ accesses to the memory of a process, enabling easy-to-use synchronization of
+ accesses to shared memory by several threads.
+
+#Package: libn32itm`'ITM_SO`'LS
+#Section: ifdef(`TARGET',`devel',`libs')
+#Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs')
+#Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+#Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+#BUILT_USING`'dnl
+#Description: GNU Transactional Memory Library (n32)
+# GNU Transactional Memory Library (libitm) provides transaction support for
+# accesses to the memory of a process, enabling easy-to-use synchronization of
+# accesses to shared memory by several threads.
+
+#Package: libn32itm`'ITM_SO-dbg`'LS
+#Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs')
+#Section: debug
+#Priority: extra
+#Depends: BASELDEP, libdep(itm`'ITM_SO,n32,=), ${misc:Depends}
+#BUILT_USING`'dnl
+#Description: GNU Transactional Memory Library (n32 debug symbols)
+# GNU Transactional Memory Library (libitm) provides transaction support for
+# accesses to the memory of a process, enabling easy-to-use synchronization of
+# accesses to shared memory by several threads.
+
+Package: libx32itm1
+Section: libs
+Architecture: amd64 i386
+Priority: optional
+Depends: gcc-5-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+Description: GNU Transactional Memory Library (x32)
+ This manual documents the usage and internals of libitm. It provides
+ transaction support for accesses to the memory of a process, enabling
+ easy-to-use synchronization of accesses to shared memory by several threads.
+
+Package: libx32itm1-dbg
+Architecture: amd64 i386
+Section: debug
+Priority: extra
+Depends: gcc-5-base (= ${gcc:Version}), libx32itm1 (= ${gcc:Version}), ${misc:Depends}
+Description: GNU Transactional Memory Library (x32 debug symbols)
+ This manual documents the usage and internals of libitm. It provides
+ transaction support for accesses to the memory of a process, enabling
+ easy-to-use synchronization of accesses to shared memory by several threads.
+
+Package: libatomic1
+Section: libs
+Architecture: any
+Provides: libatomic1-armel [armel], libatomic1-armhf [armhf]
+Multi-Arch: same
+Pre-Depends: ${misc:Pre-Depends}
+Priority: optional
+Depends: gcc-5-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends}
+Description: support library providing __atomic built-in functions
+ library providing __atomic built-in functions. When an atomic call cannot
+ be turned into lock-free instructions, GCC will make calls into this library.
+
+Package: libatomic1-dbg
+Architecture: any
+Section: debug
+Priority: extra
+Depends: gcc-5-base (= ${gcc:Version}), libatomic1 (= ${gcc:Version}), ${misc:Depends}
+Provides: libatomic1-dbg-armel [armel], libatomic1-dbg-armhf [armhf]
+Multi-Arch: same
+Description: support library providing __atomic built-in functions (debug symbols)
+ library providing __atomic built-in functions. When an atomic call cannot
+ be turned into lock-free instructions, GCC will make calls into this library.
+
+Package: lib32atomic1
+Section: libs
+Architecture: amd64 ppc64 kfreebsd-amd64 s390x sparc64 x32 mipsn32 mipsn32el mips64 mips64el
+Priority: optional
+Depends: gcc-5-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+Conflicts: ${confl:lib32}
+Description: support library providing __atomic built-in functions (32bit)
+ library providing __atomic built-in functions. When an atomic call cannot
+ be turned into lock-free instructions, GCC will make calls into this library.
+
+Package: lib32atomic1-dbg
+Architecture: amd64 ppc64 kfreebsd-amd64 s390x sparc64 x32 mipsn32 mipsn32el mips64 mips64el
+Section: debug
+Priority: extra
+Depends: gcc-5-base (= ${gcc:Version}), lib32atomic1 (= ${gcc:Version}), ${misc:Depends}
+Description: support library providing __atomic built-in functions (32 bit debug symbols)
+ library providing __atomic built-in functions. When an atomic call cannot
+ be turned into lock-free instructions, GCC will make calls into this library.
+
+Package: lib64atomic1
+Section: libs
+Architecture: i386 powerpc sparc s390 mips mipsel mipsn32 mipsn32el x32
+Priority: optional
+Depends: gcc-5-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+Description: support library providing __atomic built-in functions (64bit)
+ library providing __atomic built-in functions. When an atomic call cannot
+ be turned into lock-free instructions, GCC will make calls into this library.
+
+Package: lib64atomic1-dbg
+Architecture: i386 powerpc sparc s390 mips mipsel mipsn32 mipsn32el x32
+Section: debug
+Priority: extra
+Depends: gcc-5-base (= ${gcc:Version}), lib64atomic1 (= ${gcc:Version}), ${misc:Depends}
+Description: support library providing __atomic built-in functions (64bit debug symbols)
+ library providing __atomic built-in functions. When an atomic call cannot
+ be turned into lock-free instructions, GCC will make calls into this library.
+
+Package: libn32atomic1
+Section: libs
+Architecture: mips mipsel mips64 mips64el
+Priority: optional
+Depends: gcc-5-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+Description: support library providing __atomic built-in functions (n32)
+ library providing __atomic built-in functions. When an atomic call cannot
+ be turned into lock-free instructions, GCC will make calls into this library.
+
+Package: libn32atomic1-dbg
+Architecture: mips mipsel mips64 mips64el
+Section: debug
+Priority: extra
+Depends: gcc-5-base (= ${gcc:Version}), libn32atomic1 (= ${gcc:Version}), ${misc:Depends}
+Description: support library providing __atomic built-in functions (n32 debug symbols)
+ library providing __atomic built-in functions. When an atomic call cannot
+ be turned into lock-free instructions, GCC will make calls into this library.
+
+Package: libx32atomic1
+Section: libs
+Architecture: amd64 i386
+Priority: optional
+Depends: gcc-5-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+Description: support library providing __atomic built-in functions (x32)
+ library providing __atomic built-in functions. When an atomic call cannot
+ be turned into lock-free instructions, GCC will make calls into this library.
+
+Package: libx32atomic1-dbg
+Architecture: amd64 i386
+Section: debug
+Priority: extra
+Depends: gcc-5-base (= ${gcc:Version}), libx32atomic1 (= ${gcc:Version}), ${misc:Depends}
+Description: support library providing __atomic built-in functions (x32 debug symbols)
+ library providing __atomic built-in functions. When an atomic call cannot
+ be turned into lock-free instructions, GCC will make calls into this library.
+
+Package: libasan2
+Section: libs
+Architecture: any
+Provides: libasan2-armel [armel], libasan2-armhf [armhf]
+Multi-Arch: same
+Pre-Depends: ${misc:Pre-Depends}
+Priority: optional
+Depends: gcc-5-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends}
+Description: AddressSanitizer -- a fast memory error detector
+ AddressSanitizer (ASan) is a fast memory error detector.  It finds
+ use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs.
+
+Package: libasan2-dbg
+Architecture: any
+Section: debug
+Priority: extra
+Depends: gcc-5-base (= ${gcc:Version}), libasan2 (= ${gcc:Version}), ${misc:Depends}
+Provides: libasan2-dbg-armel [armel], libasan2-dbg-armhf [armhf]
+Multi-Arch: same
+Description: AddressSanitizer -- a fast memory error detector (debug symbols)
+ AddressSanitizer (ASan) is a fast memory error detector.  It finds
+ use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs.
+
+Package: lib32asan2
+Section: libs
+Architecture: amd64 ppc64 kfreebsd-amd64 s390x sparc64 x32 mipsn32 mipsn32el mips64 mips64el
+Priority: optional
+Depends: gcc-5-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+Conflicts: ${confl:lib32}
+Description: AddressSanitizer -- a fast memory error detector (32bit)
+ AddressSanitizer (ASan) is a fast memory error detector.  It finds
+ use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs.
+
+Package: lib32asan2-dbg
+Architecture: amd64 ppc64 kfreebsd-amd64 s390x sparc64 x32 mipsn32 mipsn32el mips64 mips64el
+Section: debug
+Priority: extra
+Depends: gcc-5-base (= ${gcc:Version}), lib32asan2 (= ${gcc:Version}), ${misc:Depends}
+Description: AddressSanitizer -- a fast memory error detector (32 bit debug symbols)
+ AddressSanitizer (ASan) is a fast memory error detector.  It finds
+ use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs.
+
+Package: lib64asan2
+Section: libs
+Architecture: i386 powerpc sparc s390 mips mipsel mipsn32 mipsn32el x32
+Priority: optional
+Depends: gcc-5-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+Description: AddressSanitizer -- a fast memory error detector (64bit)
+ AddressSanitizer (ASan) is a fast memory error detector.  It finds
+ use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs.
+
+Package: lib64asan2-dbg
+Architecture: i386 powerpc sparc s390 mips mipsel mipsn32 mipsn32el x32
+Section: debug
+Priority: extra
+Depends: gcc-5-base (= ${gcc:Version}), lib64asan2 (= ${gcc:Version}), ${misc:Depends}
+Description: AddressSanitizer -- a fast memory error detector (64bit debug symbols)
+ AddressSanitizer (ASan) is a fast memory error detector.  It finds
+ use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs.
+
+#Package: libn32asan`'ASAN_SO`'LS
+#Section: ifdef(`TARGET',`devel',`libs')
+#Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs')
+#Priority: ifdef(`TARGET',`extra',`PRI(extra)')
+#Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+#BUILT_USING`'dnl
+#Description: AddressSanitizer -- a fast memory error detector (n32)
+# AddressSanitizer (ASan) is a fast memory error detector.  It finds
+# use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs.
+
+#Package: libn32asan`'ASAN_SO-dbg`'LS
+#Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs')
+#Section: debug
+#Priority: extra
+#Depends: BASELDEP, libdep(asan`'ASAN_SO,n32,=), ${misc:Depends}
+#BUILT_USING`'dnl
+#Description: AddressSanitizer -- a fast memory error detector (n32 debug symbols)
+# AddressSanitizer (ASan) is a fast memory error detector.  It finds
+# use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs.
+
+Package: libx32asan2
+Section: libs
+Architecture: amd64 i386
+Priority: optional
+Depends: gcc-5-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+Description: AddressSanitizer -- a fast memory error detector (x32)
+ AddressSanitizer (ASan) is a fast memory error detector.  It finds
+ use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs.
+
+Package: libx32asan2-dbg
+Architecture: amd64 i386
+Section: debug
+Priority: extra
+Depends: gcc-5-base (= ${gcc:Version}), libx32asan2 (= ${gcc:Version}), ${misc:Depends}
+Description: AddressSanitizer -- a fast memory error detector (x32 debug symbols)
+ AddressSanitizer (ASan) is a fast memory error detector.  It finds
+ use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs.
+
+Package: liblsan0
+Section: libs
+Architecture: any
+Multi-Arch: same
+Pre-Depends: ${misc:Pre-Depends}
+Priority: optional
+Depends: gcc-5-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends}
+Description: LeakSanitizer -- a memory leak detector (runtime)
+ LeakSanitizer (Lsan) is a memory leak detector which is integrated
+ into AddressSanitizer.
+
+Package: liblsan0-dbg
+Architecture: any
+Section: debug
+Priority: extra
+Depends: gcc-5-base (= ${gcc:Version}), liblsan0 (= ${gcc:Version}), ${misc:Depends}
+Multi-Arch: same
+Description: LeakSanitizer -- a memory leak detector (debug symbols)
+ LeakSanitizer (Lsan) is a memory leak detector which is integrated
+ into AddressSanitizer.
+
+Package: lib32lsan0
+Section: libs
+Architecture: amd64 ppc64 kfreebsd-amd64 s390x sparc64 x32 mipsn32 mipsn32el mips64 mips64el
+Priority: optional
+Depends: gcc-5-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+Conflicts: ${confl:lib32}
+Description: LeakSanitizer -- a memory leak detector (32bit)
+ LeakSanitizer (Lsan) is a memory leak detector which is integrated
+ into AddressSanitizer (empty package).
+
+Package: lib32lsan0-dbg
+Architecture: amd64 ppc64 kfreebsd-amd64 s390x sparc64 x32 mipsn32 mipsn32el mips64 mips64el
+Section: debug
+Priority: extra
+Depends: gcc-5-base (= ${gcc:Version}), lib32lsan0 (= ${gcc:Version}), ${misc:Depends}
+Description: LeakSanitizer -- a memory leak detector (32 bit debug symbols)
+ LeakSanitizer (Lsan) is a memory leak detector which is integrated
+ into AddressSanitizer (empty package).
+
+#Package: lib64lsan`'LSAN_SO`'LS
+#Section: ifdef(`TARGET',`devel',`libs')
+#Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs')
+#Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+#Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+#BUILT_USING`'dnl
+#Description: LeakSanitizer -- a memory leak detector (64bit)
+# LeakSanitizer (Lsan) is a memory leak detector which is integrated
+# into AddressSanitizer.
+
+#Package: lib64lsan`'LSAN_SO-dbg`'LS
+#Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs')
+#Section: debug
+#Priority: extra
+#Depends: BASELDEP, libdep(lsan`'LSAN_SO,64,=), ${misc:Depends}
+#BUILT_USING`'dnl
+#Description: LeakSanitizer -- a memory leak detector (64bit debug symbols)
+# LeakSanitizer (Lsan) is a memory leak detector which is integrated
+# into AddressSanitizer.
+
+#Package: libn32lsan`'LSAN_SO`'LS
+#Section: ifdef(`TARGET',`devel',`libs')
+#Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs')
+#Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+#Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+#BUILT_USING`'dnl
+#Description: LeakSanitizer -- a memory leak detector (n32)
+# LeakSanitizer (Lsan) is a memory leak detector which is integrated
+# into AddressSanitizer.
+
+#Package: libn32lsan`'LSAN_SO-dbg`'LS
+#Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs')
+#Section: debug
+#Priority: extra
+#Depends: BASELDEP, libdep(lsan`'LSAN_SO,n32,=), ${misc:Depends}
+#BUILT_USING`'dnl
+#Description: LeakSanitizer -- a memory leak detector (n32 debug symbols)
+# LeakSanitizer (Lsan) is a memory leak detector which is integrated
+# into AddressSanitizer.
+
+Package: libx32lsan0
+Section: libs
+Architecture: amd64 i386
+Priority: optional
+Depends: gcc-5-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+Description: LeakSanitizer -- a memory leak detector (x32)
+ LeakSanitizer (Lsan) is a memory leak detector which is integrated
+ into AddressSanitizer (empty package).
+
+Package: libx32lsan0-dbg
+Architecture: amd64 i386
+Section: debug
+Priority: extra
+Depends: gcc-5-base (= ${gcc:Version}), libx32lsan0 (= ${gcc:Version}), ${misc:Depends}
+Description: LeakSanitizer -- a memory leak detector (x32 debug symbols)
+ LeakSanitizer (Lsan) is a memory leak detector which is integrated
+ into AddressSanitizer (empty package).
+
+Package: libtsan0
+Section: libs
+Architecture: any
+Provides: libtsan0-armel [armel], libtsan0-armhf [armhf]
+Multi-Arch: same
+Pre-Depends: ${misc:Pre-Depends}
+Priority: optional
+Depends: gcc-5-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends}
+Description: ThreadSanitizer -- a Valgrind-based detector of data races (runtime)
+ ThreadSanitizer (Tsan) is a data race detector for C/C++ programs. 
+ The Linux and Mac versions are based on Valgrind. 
+
+Package: libtsan0-dbg
+Architecture: any
+Section: debug
+Priority: extra
+Depends: gcc-5-base (= ${gcc:Version}), libtsan0 (= ${gcc:Version}), ${misc:Depends}
+Provides: libtsan0-dbg-armel [armel], libtsan0-dbg-armhf [armhf]
+Multi-Arch: same
+Description: ThreadSanitizer -- a Valgrind-based detector of data races (debug symbols)
+ ThreadSanitizer (Tsan) is a data race detector for C/C++ programs. 
+ The Linux and Mac versions are based on Valgrind. 
+
+Package: libubsan0
+Section: libs
+Architecture: any
+Provides: libubsan0-armel [armel], libubsan0-armhf [armhf]
+Multi-Arch: same
+Pre-Depends: ${misc:Pre-Depends}
+Priority: optional
+Depends: gcc-5-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends}
+Description: UBSan -- undefined behaviour sanitizer (runtime)
+ UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined.
+ Various computations will be instrumented to detect undefined behavior
+ at runtime. Available for C and C++.
+
+Package: libubsan0-dbg
+Architecture: any
+Section: debug
+Priority: extra
+Depends: gcc-5-base (= ${gcc:Version}), libubsan0 (= ${gcc:Version}), ${misc:Depends}
+Provides: libubsan0-dbg-armel [armel], libubsan0-dbg-armhf [armhf]
+Multi-Arch: same
+Description: UBSan -- undefined behaviour sanitizer (debug symbols)
+ UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined.
+ Various computations will be instrumented to detect undefined behavior
+ at runtime. Available for C and C++.
+
+Package: lib32ubsan0
+Section: libs
+Architecture: amd64 ppc64 kfreebsd-amd64 s390x sparc64 x32 mipsn32 mipsn32el mips64 mips64el
+Priority: optional
+Depends: gcc-5-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+Conflicts: ${confl:lib32}
+Description: UBSan -- undefined behaviour sanitizer (32bit)
+ UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined.
+ Various computations will be instrumented to detect undefined behavior
+ at runtime. Available for C and C++.
+
+Package: lib32ubsan0-dbg
+Architecture: amd64 ppc64 kfreebsd-amd64 s390x sparc64 x32 mipsn32 mipsn32el mips64 mips64el
+Section: debug
+Priority: extra
+Depends: gcc-5-base (= ${gcc:Version}), lib32ubsan0 (= ${gcc:Version}), ${misc:Depends}
+Description: UBSan -- undefined behaviour sanitizer (32 bit debug symbols)
+ UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined.
+ Various computations will be instrumented to detect undefined behavior
+ at runtime. Available for C and C++.
+
+Package: lib64ubsan0
+Section: libs
+Architecture: i386 powerpc sparc s390 mips mipsel mipsn32 mipsn32el x32
+Priority: optional
+Depends: gcc-5-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+Description: UBSan -- undefined behaviour sanitizer (64bit)
+ UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined.
+ Various computations will be instrumented to detect undefined behavior
+ at runtime. Available for C and C++.
+
+Package: lib64ubsan0-dbg
+Architecture: i386 powerpc sparc s390 mips mipsel mipsn32 mipsn32el x32
+Section: debug
+Priority: extra
+Depends: gcc-5-base (= ${gcc:Version}), lib64ubsan0 (= ${gcc:Version}), ${misc:Depends}
+Description: UBSan -- undefined behaviour sanitizer (64bit debug symbols)
+ UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined.
+ Various computations will be instrumented to detect undefined behavior
+ at runtime. Available for C and C++.
+
+#Package: libn32ubsan`'UBSAN_SO`'LS
+#Section: ifdef(`TARGET',`devel',`libs')
+#Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs')
+#Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+#Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+#BUILT_USING`'dnl
+#Description: UBSan -- undefined behaviour sanitizer (n32)
+# UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined.
+# Various computations will be instrumented to detect undefined behavior
+# at runtime. Available for C and C++.
+
+#Package: libn32ubsan`'UBSAN_SO-dbg`'LS
+#Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs')
+#Section: debug
+#Priority: extra
+#Depends: BASELDEP, libdep(ubsan`'UBSAN_SO,n32,=), ${misc:Depends}
+#BUILT_USING`'dnl
+#Description: UBSan -- undefined behaviour sanitizer (n32 debug symbols)
+# UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined.
+# Various computations will be instrumented to detect undefined behavior
+# at runtime. Available for C and C++.
+
+Package: libx32ubsan0
+Section: libs
+Architecture: amd64 i386
+Priority: optional
+Depends: gcc-5-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+Description: UBSan -- undefined behaviour sanitizer (x32)
+ UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined.
+ Various computations will be instrumented to detect undefined behavior
+ at runtime. Available for C and C++.
+
+Package: libx32ubsan0-dbg
+Architecture: amd64 i386
+Section: debug
+Priority: extra
+Depends: gcc-5-base (= ${gcc:Version}), libx32ubsan0 (= ${gcc:Version}), ${misc:Depends}
+Description: UBSan -- undefined behaviour sanitizer (x32 debug symbols)
+ UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined.
+ Various computations will be instrumented to detect undefined behavior
+ at runtime. Available for C and C++.
+
+Package: libcilkrts5
+Section: libs
+Architecture: any
+Provides: libcilkrts5-armel [armel], libcilkrts5-armhf [armhf]
+Multi-Arch: same
+Pre-Depends: ${misc:Pre-Depends}
+Priority: optional
+Depends: gcc-5-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends}
+Description: Intel Cilk Plus language extensions (runtime)
+ Intel Cilk Plus is an extension to the C and C++ languages to support
+ data and task parallelism.
+
+Package: libcilkrts5-dbg
+Architecture: any
+Section: debug
+Priority: extra
+Depends: gcc-5-base (= ${gcc:Version}), libcilkrts5 (= ${gcc:Version}), ${misc:Depends}
+Provides: libcilkrts5-dbg-armel [armel], libcilkrts5-dbg-armhf [armhf]
+Multi-Arch: same
+Description: Intel Cilk Plus language extensions (debug symbols)
+ Intel Cilk Plus is an extension to the C and C++ languages to support
+ data and task parallelism.
+
+Package: lib32cilkrts5
+Section: libs
+Architecture: amd64 ppc64 kfreebsd-amd64 s390x sparc64 x32 mipsn32 mipsn32el mips64 mips64el
+Priority: optional
+Depends: gcc-5-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+Conflicts: ${confl:lib32}
+Description: Intel Cilk Plus language extensions (32bit)
+ Intel Cilk Plus is an extension to the C and C++ languages to support
+ data and task parallelism.
+
+Package: lib32cilkrts5-dbg
+Architecture: amd64 ppc64 kfreebsd-amd64 s390x sparc64 x32 mipsn32 mipsn32el mips64 mips64el
+Section: debug
+Priority: extra
+Depends: gcc-5-base (= ${gcc:Version}), lib32cilkrts5 (= ${gcc:Version}), ${misc:Depends}
+Description: Intel Cilk Plus language extensions (32 bit debug symbols)
+ Intel Cilk Plus is an extension to the C and C++ languages to support
+ data and task parallelism.
+
+Package: lib64cilkrts5
+Section: libs
+Architecture: i386 powerpc sparc s390 mips mipsel mipsn32 mipsn32el x32
+Priority: optional
+Depends: gcc-5-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+Description: Intel Cilk Plus language extensions (64bit)
+ Intel Cilk Plus is an extension to the C and C++ languages to support
+ data and task parallelism.
+
+Package: lib64cilkrts5-dbg
+Architecture: i386 powerpc sparc s390 mips mipsel mipsn32 mipsn32el x32
+Section: debug
+Priority: extra
+Depends: gcc-5-base (= ${gcc:Version}), lib64cilkrts5 (= ${gcc:Version}), ${misc:Depends}
+Description: Intel Cilk Plus language extensions (64bit debug symbols)
+ Intel Cilk Plus is an extension to the C and C++ languages to support
+ data and task parallelism.
+
+Package: libx32cilkrts5
+Section: libs
+Architecture: amd64 i386
+Priority: optional
+Depends: gcc-5-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+Description: Intel Cilk Plus language extensions (x32)
+ Intel Cilk Plus is an extension to the C and C++ languages to support
+ data and task parallelism.
+
+Package: libx32cilkrts5-dbg
+Architecture: amd64 i386
+Section: debug
+Priority: extra
+Depends: gcc-5-base (= ${gcc:Version}), libx32cilkrts5 (= ${gcc:Version}), ${misc:Depends}
+Description: Intel Cilk Plus language extensions (x32 debug symbols)
+ Intel Cilk Plus is an extension to the C and C++ languages to support
+ data and task parallelism.
+
+Package: libmpx0
+Section: libs
+Architecture: any
+Provides: libmpx0-armel [armel], libmpx0-armhf [armhf]
+Multi-Arch: same
+Pre-Depends: ${misc:Pre-Depends}
+Priority: optional
+Depends: gcc-5-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends}
+Description: Intel memory protection extensions (runtime)
+ Intel MPX is a set of processor features which, with compiler,
+ runtime library and OS support, brings increased robustness to
+ software by checking pointer references whose compile time normal
+ intentions are usurped at runtime due to buffer overflow.
+
+Package: libmpx0-dbg
+Architecture: any
+Section: debug
+Priority: extra
+Depends: gcc-5-base (= ${gcc:Version}), libmpx0 (= ${gcc:Version}), ${misc:Depends}
+Provides: libmpx0-dbg-armel [armel], libmpx0-dbg-armhf [armhf]
+Multi-Arch: same
+Description: Intel memory protection extensions (debug symbols)
+ Intel MPX is a set of processor features which, with compiler,
+ runtime library and OS support, brings increased robustness to
+ software by checking pointer references whose compile time normal
+ intentions are usurped at runtime due to buffer overflow.
+
+Package: lib32mpx0
+Section: libs
+Architecture: amd64 ppc64 kfreebsd-amd64 s390x sparc64 x32 mipsn32 mipsn32el mips64 mips64el
+Priority: optional
+Depends: gcc-5-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+Conflicts: ${confl:lib32}
+Description: Intel memory protection extensions (32bit)
+ Intel MPX is a set of processor features which, with compiler,
+ runtime library and OS support, brings increased robustness to
+ software by checking pointer references whose compile time normal
+ intentions are usurped at runtime due to buffer overflow.
+
+Package: lib32mpx0-dbg
+Architecture: amd64 ppc64 kfreebsd-amd64 s390x sparc64 x32 mipsn32 mipsn32el mips64 mips64el
+Section: debug
+Priority: extra
+Depends: gcc-5-base (= ${gcc:Version}), lib32mpx0 (= ${gcc:Version}), ${misc:Depends}
+Description: Intel memory protection extensions (32 bit debug symbols)
+ Intel MPX is a set of processor features which, with compiler,
+ runtime library and OS support, brings increased robustness to
+ software by checking pointer references whose compile time normal
+ intentions are usurped at runtime due to buffer overflow.
+
+Package: lib64mpx0
+Section: libs
+Architecture: i386 powerpc sparc s390 mips mipsel mipsn32 mipsn32el x32
+Priority: optional
+Depends: gcc-5-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+Description: Intel memory protection extensions (64bit)
+ Intel MPX is a set of processor features which, with compiler,
+ runtime library and OS support, brings increased robustness to
+ software by checking pointer references whose compile time normal
+ intentions are usurped at runtime due to buffer overflow.
+
+Package: lib64mpx0-dbg
+Architecture: i386 powerpc sparc s390 mips mipsel mipsn32 mipsn32el x32
+Section: debug
+Priority: extra
+Depends: gcc-5-base (= ${gcc:Version}), lib64mpx0 (= ${gcc:Version}), ${misc:Depends}
+Description: Intel memory protection extensions (64bit debug symbols)
+ Intel MPX is a set of processor features which, with compiler,
+ runtime library and OS support, brings increased robustness to
+ software by checking pointer references whose compile time normal
+ intentions are usurped at runtime due to buffer overflow.
+
+Package: libquadmath0
+Section: libs
+Architecture: any
+Multi-Arch: same
+Pre-Depends: ${misc:Pre-Depends}
+Priority: optional
+Depends: gcc-5-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends}
+Description: GCC Quad-Precision Math Library
+ A library, which provides quad-precision mathematical functions on targets
+ supporting the __float128 datatype. The library is used to provide on such
+ targets the REAL(16) type in the GNU Fortran compiler.
+
+Package: libquadmath0-dbg
+Architecture: any
+Section: debug
+Priority: extra
+Depends: gcc-5-base (= ${gcc:Version}), libquadmath0 (= ${gcc:Version}), ${misc:Depends}
+Multi-Arch: same
+Description: GCC Quad-Precision Math Library (debug symbols)
+ A library, which provides quad-precision mathematical functions on targets
+ supporting the __float128 datatype.
+
+Package: lib32quadmath0
+Section: libs
+Architecture: amd64 ppc64 kfreebsd-amd64 s390x sparc64 x32 mipsn32 mipsn32el mips64 mips64el
+Priority: optional
+Depends: gcc-5-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+Conflicts: ${confl:lib32}
+Description: GCC Quad-Precision Math Library (32bit)
+ A library, which provides quad-precision mathematical functions on targets
+ supporting the __float128 datatype. The library is used to provide on such
+ targets the REAL(16) type in the GNU Fortran compiler.
+
+Package: lib32quadmath0-dbg
+Architecture: amd64 ppc64 kfreebsd-amd64 s390x sparc64 x32 mipsn32 mipsn32el mips64 mips64el
+Section: debug
+Priority: extra
+Depends: gcc-5-base (= ${gcc:Version}), lib32quadmath0 (= ${gcc:Version}), ${misc:Depends}
+Description: GCC Quad-Precision Math Library (32 bit debug symbols)
+ A library, which provides quad-precision mathematical functions on targets
+ supporting the __float128 datatype.
+
+Package: lib64quadmath0
+Section: libs
+Architecture: i386 powerpc sparc s390 mips mipsel mipsn32 mipsn32el x32
+Priority: optional
+Depends: gcc-5-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+Description: GCC Quad-Precision Math Library  (64bit)
+ A library, which provides quad-precision mathematical functions on targets
+ supporting the __float128 datatype. The library is used to provide on such
+ targets the REAL(16) type in the GNU Fortran compiler.
+
+Package: lib64quadmath0-dbg
+Architecture: i386 powerpc sparc s390 mips mipsel mipsn32 mipsn32el x32
+Section: debug
+Priority: extra
+Depends: gcc-5-base (= ${gcc:Version}), lib64quadmath0 (= ${gcc:Version}), ${misc:Depends}
+Description: GCC Quad-Precision Math Library  (64bit debug symbols)
+ A library, which provides quad-precision mathematical functions on targets
+ supporting the __float128 datatype.
+
+#Package: libn32quadmath`'QMATH_SO`'LS
+#Section: ifdef(`TARGET',`devel',`libs')
+#Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs')
+#Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+#Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+#BUILT_USING`'dnl
+#Description: GCC Quad-Precision Math Library (n32)
+# A library, which provides quad-precision mathematical functions on targets
+# supporting the __float128 datatype. The library is used to provide on such
+# targets the REAL(16) type in the GNU Fortran compiler.
+
+#Package: libn32quadmath`'QMATH_SO-dbg`'LS
+#Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs')
+#Section: debug
+#Priority: extra
+#Depends: BASELDEP, libdep(quadmath`'QMATH_SO,n32,=), ${misc:Depends}
+#BUILT_USING`'dnl
+#Description: GCC Quad-Precision Math Library (n32 debug symbols)
+# A library, which provides quad-precision mathematical functions on targets
+# supporting the __float128 datatype.
+
+Package: libx32quadmath0
+Section: libs
+Architecture: amd64 i386
+Priority: optional
+Depends: gcc-5-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+Description: GCC Quad-Precision Math Library (x32)
+ A library, which provides quad-precision mathematical functions on targets
+ supporting the __float128 datatype. The library is used to provide on such
+ targets the REAL(16) type in the GNU Fortran compiler.
+
+Package: libx32quadmath0-dbg
+Architecture: amd64 i386
+Section: debug
+Priority: extra
+Depends: gcc-5-base (= ${gcc:Version}), libx32quadmath0 (= ${gcc:Version}), ${misc:Depends}
+Description: GCC Quad-Precision Math Library (x32 debug symbols)
+ A library, which provides quad-precision mathematical functions on targets
+ supporting the __float128 datatype.
+
+Package: libcc1-0
+Section: libs
+Architecture: any
+Multi-Arch: same
+Pre-Depends: ${misc:Pre-Depends}
+Priority: optional
+Depends: gcc-5-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends}
+Description: GCC cc1 plugin for GDB
+ libcc1 is a plugin for GDB.
+
+Package: libgccjit0
+Section: libs
+Architecture: any
+Multi-Arch: same
+Pre-Depends: ${misc:Pre-Depends}
+Priority: optional
+Depends: gcc-5-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends}
+Breaks: python-gccjit (<< 0.4-4), python3-gccjit (<< 0.4-4)
+Description: GCC just-in-time compilation (shared library)
+ libgccjit provides an embeddable shared library with an API for adding
+ compilation to existing programs using GCC.
+
+Package: libgccjit-5-dev
+Section: libdevel
+Architecture: any
+Multi-Arch: same
+Pre-Depends: ${misc:Pre-Depends}
+Priority: optional
+Depends: gcc-5-base (= ${gcc:Version}), libgccjit0 (= ${gcc:Version}),
+ ${shlibs:Depends}, ${misc:Depends}
+Suggests: libgccjit-5-dbg
+Description: GCC just-in-time compilation (development files)
+ libgccjit provides an embeddable shared library with an API for adding
+ compilation to existing programs using GCC.
+
+Package: libgccjit-5-dbg
+Section: debug
+Architecture: any
+Multi-Arch: same
+Pre-Depends: ${misc:Pre-Depends}
+Priority: extra
+Depends: gcc-5-base (= ${gcc:Version}), libgccjit0 (= ${gcc:Version}),
+ ${shlibs:Depends}, ${misc:Depends}
+Description: GCC just-in-time compilation (debug information)
+ libgccjit provides an embeddable shared library with an API for adding
+ compilation to existing programs using GCC.
+
+Package: libgccjit-5-doc
+Section: doc
+Architecture: all
+Priority: extra
+Depends: gcc-5-base (= ${gcc:Version}), ${misc:Depends}
+Description: GCC just-in-time compilation (documentation)
+ libgccjit provides an embeddable shared library with an API for adding
+ compilation to existing programs using GCC.
+
+Package: gobjc++-5
+Architecture: any
+Priority: optional
+Depends: gcc-5-base (= ${gcc:Version}), gobjc-5 (= ${gcc:Version}), g++-5 (= ${gcc:Version}), ${shlibs:Depends}, libobjc-5-dev (= ${gcc:Version}), ${misc:Depends}
+Suggests: ${gobjcxx:multilib}, gcc-5-doc (>= ${gcc:SoftVersion})
+Provides: objc++-compiler
+Description: GNU Objective-C++ compiler
+ This is the GNU Objective-C++ compiler, which compiles
+ Objective-C++ on platforms supported by the gcc compiler. It uses the
+ gcc backend to generate optimized code.
+
+Package: gobjc++-5-multilib
+Architecture: amd64 i386 kfreebsd-amd64 mips mips64 mips64el mipsel mipsn32 mipsn32el powerpc ppc64 s390 s390x sparc sparc64 x32
+Section: devel
+Priority: optional
+Depends: gcc-5-base (= ${gcc:Version}), gobjc++-5 (= ${gcc:Version}), g++-5-multilib (= ${gcc:Version}), gobjc-5-multilib (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends}
+Description: GNU Objective-C++ compiler (multilib support)
+ This is the GNU Objective-C++ compiler, which compiles Objective-C++ on
+ platforms supported by the gcc compiler.
+ .
+ This is a dependency package, depending on development packages
+ for the non-default multilib architecture(s).
+
+Package: gobjc-5
+Architecture: any
+Priority: optional
+Depends: gcc-5-base (= ${gcc:Version}), gcc-5 (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, libobjc-5-dev (= ${gcc:Version}), ${misc:Depends}
+Suggests: ${gobjc:multilib}, gcc-5-doc (>= ${gcc:SoftVersion}), libobjc4-dbg (>= ${gcc:Version})
+Provides: objc-compiler
+Description: GNU Objective-C compiler
+ This is the GNU Objective-C compiler, which compiles
+ Objective-C on platforms supported by the gcc compiler. It uses the
+ gcc backend to generate optimized code.
+
+Package: gobjc-5-multilib
+Architecture: amd64 i386 kfreebsd-amd64 mips mips64 mips64el mipsel mipsn32 mipsn32el powerpc ppc64 s390 s390x sparc sparc64 x32
+Section: devel
+Priority: optional
+Depends: gcc-5-base (= ${gcc:Version}), gobjc-5 (= ${gcc:Version}), gcc-5-multilib (= ${gcc:Version}), ${dep:libobjcbiarchdev}, ${shlibs:Depends}, ${misc:Depends}
+Description: GNU Objective-C compiler (multilib support)
+ This is the GNU Objective-C compiler, which compiles Objective-C on platforms
+ supported by the gcc compiler.
+ .
+ This is a dependency package, depending on development packages
+ for the non-default multilib architecture(s).
+
+Package: libobjc-5-dev
+Architecture: any
+Section: libdevel
+Priority: optional
+Depends: gcc-5-base (= ${gcc:Version}), libgcc-5-dev (= ${gcc:Version}), libobjc4 (>= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends}
+Multi-Arch: same
+Description: Runtime library for GNU Objective-C applications (development files)
+ This package contains the headers and static library files needed to build
+ GNU ObjC applications.
+
+Package: lib64objc-5-dev
+Architecture: i386 powerpc sparc s390 mips mipsel mipsn32 mipsn32el x32
+Section: libdevel
+Priority: optional
+Depends: gcc-5-base (= ${gcc:Version}), lib64gcc-5-dev (= ${gcc:Version}), lib64objc4 (>= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends}
+Description: Runtime library for GNU Objective-C applications (64bit development files)
+ This package contains the headers and static library files needed to build
+ GNU ObjC applications.
+
+Package: lib32objc-5-dev
+Architecture: amd64 ppc64 kfreebsd-amd64 s390x sparc64 x32 mipsn32 mipsn32el mips64 mips64el
+Section: libdevel
+Priority: optional
+Depends: gcc-5-base (= ${gcc:Version}), lib32gcc-5-dev (= ${gcc:Version}), lib32objc4 (>= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends}
+Description: Runtime library for GNU Objective-C applications (32bit development files)
+ This package contains the headers and static library files needed to build
+ GNU ObjC applications.
+
+Package: libn32objc-5-dev
+Architecture: mips mipsel mips64 mips64el
+Section: libdevel
+Priority: optional
+Depends: gcc-5-base (= ${gcc:Version}), libn32gcc-5-dev (= ${gcc:Version}), libn32objc4 (>= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends}
+Description: Runtime library for GNU Objective-C applications (n32 development files)
+ This package contains the headers and static library files needed to build
+ GNU ObjC applications.
+
+Package: libx32objc-5-dev
+Architecture: amd64 i386
+Section: libdevel
+Priority: optional
+Depends: gcc-5-base (= ${gcc:Version}), libx32gcc-5-dev (= ${gcc:Version}), libx32objc4 (>= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends}
+Description: Runtime library for GNU Objective-C applications (x32 development files)
+ This package contains the headers and static library files needed to build
+ GNU ObjC applications.
+
+Package: libobjc4
+Section: libs
+Architecture: any
+Provides: libobjc4-armel [armel], libobjc4-armhf [armhf]
+Multi-Arch: same
+Pre-Depends: ${misc:Pre-Depends}
+Priority: optional
+Depends: gcc-5-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends}
+Description: Runtime library for GNU Objective-C applications
+ Library needed for GNU ObjC applications linked against the shared library.
+
+Package: libobjc4-dbg
+Section: debug
+Architecture: any
+Provides: libobjc4-dbg-armel [armel], libobjc4-dbg-armhf [armhf]
+Multi-Arch: same
+Priority: extra
+Depends: gcc-5-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.
+
+Package: lib64objc4
+Section: libs
+Architecture: i386 powerpc sparc s390 mips mipsel mipsn32 mipsn32el x32
+Priority: optional
+Depends: gcc-5-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+Description: Runtime library for GNU Objective-C applications (64bit)
+ Library needed for GNU ObjC applications linked against the shared library.
+
+Package: lib64objc4-dbg
+Section: debug
+Architecture: i386 powerpc sparc s390 mips mipsel mipsn32 mipsn32el x32
+Priority: extra
+Depends: gcc-5-base (= ${gcc:Version}), lib64objc4 (= ${gcc:Version}), lib64gcc1-dbg (>= ${gcc:EpochVersion}), ${misc:Depends}
+Description: Runtime library for GNU Objective-C applications (64 bit debug symbols)
+ Library needed for GNU ObjC applications linked against the shared library.
+
+Package: lib32objc4
+Section: libs
+Architecture: amd64 ppc64 kfreebsd-amd64 s390x sparc64 x32 mipsn32 mipsn32el mips64 mips64el
+Priority: optional
+Depends: gcc-5-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+Conflicts: ${confl:lib32}
+Description: Runtime library for GNU Objective-C applications (32bit)
+ Library needed for GNU ObjC applications linked against the shared library.
+
+Package: lib32objc4-dbg
+Section: debug
+Architecture: amd64 ppc64 kfreebsd-amd64 s390x sparc64 x32 mipsn32 mipsn32el mips64 mips64el
+Priority: extra
+Depends: gcc-5-base (= ${gcc:Version}), lib32objc4 (= ${gcc:Version}), lib32gcc1-dbg (>= ${gcc:EpochVersion}), ${misc:Depends}
+Description: Runtime library for GNU Objective-C applications (32 bit debug symbols)
+ Library needed for GNU ObjC applications linked against the shared library.
+
+Package: libn32objc4
+Section: libs
+Architecture: mips mipsel mips64 mips64el
+Priority: optional
+Depends: gcc-5-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+Description: Runtime library for GNU Objective-C applications (n32)
+ Library needed for GNU ObjC applications linked against the shared library.
+
+Package: libn32objc4-dbg
+Section: debug
+Architecture: mips mipsel mips64 mips64el
+Priority: extra
+Depends: gcc-5-base (= ${gcc:Version}), libn32objc4 (= ${gcc:Version}), libn32gcc1-dbg (>= ${gcc:EpochVersion}), ${misc:Depends}
+Description: Runtime library for GNU Objective-C applications (n32 debug symbols)
+ Library needed for GNU ObjC applications linked against the shared library.
+
+Package: libx32objc4
+Section: libs
+Architecture: amd64 i386
+Priority: optional
+Depends: gcc-5-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+Description: Runtime library for GNU Objective-C applications (x32)
+ Library needed for GNU ObjC applications linked against the shared library.
+
+Package: libx32objc4-dbg
+Section: debug
+Architecture: amd64 i386
+Priority: extra
+Depends: gcc-5-base (= ${gcc:Version}), libx32objc4 (= ${gcc:Version}), libx32gcc1-dbg (>= ${gcc:EpochVersion}), ${misc:Depends}
+Description: Runtime library for GNU Objective-C applications (x32 debug symbols)
+ Library needed for GNU ObjC applications linked against the shared library.
+
+Package: gfortran-5
+Architecture: any
+Priority: optional
+Depends: gcc-5-base (= ${gcc:Version}), gcc-5 (= ${gcc:Version}), libgfortran-5-dev (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends}
+Provides: fortran95-compiler, ${fortran:mod-version}
+Suggests: ${gfortran:multilib}, gfortran-5-doc, libgfortran3-dbg (>= ${gcc:Version})
+Description: GNU Fortran compiler
+ This is the GNU Fortran compiler, which compiles
+ Fortran on platforms supported by the gcc compiler. It uses the
+ gcc backend to generate optimized code.
+
+Package: gfortran-5-multilib
+Architecture: amd64 i386 kfreebsd-amd64 mips mips64 mips64el mipsel mipsn32 mipsn32el powerpc ppc64 s390 s390x sparc sparc64 x32
+Section: devel
+Priority: optional
+Depends: gcc-5-base (= ${gcc:Version}), gfortran-5 (= ${gcc:Version}), gcc-5-multilib (= ${gcc:Version}), ${dep:libgfortranbiarchdev}, ${shlibs:Depends}, ${misc:Depends}
+Description: GNU Fortran compiler (multilib support)
+ This is the GNU Fortran compiler, which compiles Fortran on platforms
+ supported by the gcc compiler.
+ .
+ This is a dependency package, depending on development packages
+ for the non-default multilib architecture(s).
+
+Package: libgfortran-5-dev
+Architecture: any
+Section: libdevel
+Priority: optional
+Depends: gcc-5-base (= ${gcc:Version}), libgcc-5-dev (= ${gcc:Version}), libgfortran3 (>= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends}
+Multi-Arch: same
+Description: Runtime library for GNU Fortran applications (development files)
+ This package contains the headers and static library files needed to build
+ GNU Fortran applications.
+
+Package: lib64gfortran-5-dev
+Architecture: i386 powerpc sparc s390 mips mipsel mipsn32 mipsn32el x32
+Section: libdevel
+Priority: optional
+Depends: gcc-5-base (= ${gcc:Version}), lib64gcc-5-dev (= ${gcc:Version}), lib64gfortran3 (>= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends}
+Description: Runtime library for GNU Fortran applications (64bit development files)
+ This package contains the headers and static library files needed to build
+ GNU Fortran applications.
+
+Package: lib32gfortran-5-dev
+Architecture: amd64 ppc64 kfreebsd-amd64 s390x sparc64 x32 mipsn32 mipsn32el mips64 mips64el
+Section: libdevel
+Priority: optional
+Depends: gcc-5-base (= ${gcc:Version}), lib32gcc-5-dev (= ${gcc:Version}), lib32gfortran3 (>= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends}
+Description: Runtime library for GNU Fortran applications (32bit development files)
+ This package contains the headers and static library files needed to build
+ GNU Fortran applications.
+
+Package: libn32gfortran-5-dev
+Architecture: mips mipsel mips64 mips64el
+Section: libdevel
+Priority: optional
+Depends: gcc-5-base (= ${gcc:Version}), libn32gcc-5-dev (= ${gcc:Version}), libn32gfortran3 (>= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends}
+Description: Runtime library for GNU Fortran applications (n32 development files)
+ This package contains the headers and static library files needed to build
+ GNU Fortran applications.
+
+Package: libx32gfortran-5-dev
+Architecture: amd64 i386
+Section: libdevel
+Priority: optional
+Depends: gcc-5-base (= ${gcc:Version}), libx32gcc-5-dev (= ${gcc:Version}), libx32gfortran3 (>= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends}
+Description: Runtime library for GNU Fortran applications (x32 development files)
+ This package contains the headers and static library files needed to build
+ GNU Fortran applications.
+
+Package: libgfortran3
+Section: libs
+Architecture: any
+Provides: libgfortran3-armel [armel], libgfortran3-armhf [armhf]
+Multi-Arch: same
+Pre-Depends: ${misc:Pre-Depends}
+Breaks: ${multiarch:breaks}
+Priority: optional
+Depends: gcc-5-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends}
+Description: Runtime library for GNU Fortran applications
+ Library needed for GNU Fortran applications linked against the
+ shared library.
+
+Package: libgfortran3-dbg
+Section: debug
+Architecture: any
+Provides: libgfortran3-dbg-armel [armel], libgfortran3-dbg-armhf [armhf]
+Multi-Arch: same
+Priority: extra
+Depends: gcc-5-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.
+
+Package: lib64gfortran3
+Section: libs
+Architecture: i386 powerpc sparc s390 mips mipsel mipsn32 mipsn32el x32
+Priority: optional
+Depends: gcc-5-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+Description: Runtime library for GNU Fortran applications (64bit)
+ Library needed for GNU Fortran applications linked against the
+ shared library.
+
+Package: lib64gfortran3-dbg
+Section: debug
+Architecture: i386 powerpc sparc s390 mips mipsel mipsn32 mipsn32el x32
+Priority: extra
+Depends: gcc-5-base (= ${gcc:Version}), lib64gfortran3 (= ${gcc:Version}), ${misc:Depends}
+Description: Runtime library for GNU Fortran applications (64bit debug symbols)
+ Library needed for GNU Fortran applications linked against the
+ shared library.
+
+Package: lib32gfortran3
+Section: libs
+Architecture: amd64 ppc64 kfreebsd-amd64 s390x sparc64 x32 mipsn32 mipsn32el mips64 mips64el
+Priority: optional
+Depends: gcc-5-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+Conflicts: ${confl:lib32}
+Description: Runtime library for GNU Fortran applications (32bit)
+ Library needed for GNU Fortran applications linked against the
+ shared library.
+
+Package: lib32gfortran3-dbg
+Section: debug
+Architecture: amd64 ppc64 kfreebsd-amd64 s390x sparc64 x32 mipsn32 mipsn32el mips64 mips64el
+Priority: extra
+Depends: gcc-5-base (= ${gcc:Version}), lib32gfortran3 (= ${gcc:Version}), ${misc:Depends}
+Description: Runtime library for GNU Fortran applications (32 bit debug symbols)
+ Library needed for GNU Fortran applications linked against the
+ shared library.
+
+Package: libn32gfortran3
+Section: libs
+Architecture: mips mipsel mips64 mips64el
+Priority: optional
+Depends: gcc-5-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+Description: Runtime library for GNU Fortran applications (n32)
+ Library needed for GNU Fortran applications linked against the
+ shared library.
+
+Package: libn32gfortran3-dbg
+Section: debug
+Architecture: mips mipsel mips64 mips64el
+Priority: extra
+Depends: gcc-5-base (= ${gcc:Version}), libn32gfortran3 (= ${gcc:Version}), ${misc:Depends}
+Description: Runtime library for GNU Fortran applications (n32 debug symbols)
+ Library needed for GNU Fortran applications linked against the
+ shared library.
+
+Package: libx32gfortran3
+Section: libs
+Architecture: amd64 i386
+Priority: optional
+Depends: gcc-5-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+Description: Runtime library for GNU Fortran applications (x32)
+ Library needed for GNU Fortran applications linked against the
+ shared library.
+
+Package: libx32gfortran3-dbg
+Section: debug
+Architecture: amd64 i386
+Priority: extra
+Depends: gcc-5-base (= ${gcc:Version}), libx32gfortran3 (= ${gcc:Version}), ${misc:Depends}
+Description: Runtime library for GNU Fortran applications (x32 debug symbols)
+ Library needed for GNU Fortran applications linked against the
+ shared library.
+
+Package: gccgo-5
+Architecture: any
+Priority: optional
+Depends: gcc-5-base (= ${gcc:Version}), gcc-5 (= ${gcc:Version}), libgo7 (>= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends}
+Provides: go-compiler
+Suggests: ${go:multilib}, gccgo-5-doc, libgo7-dbg (>= ${gcc:Version})
+Conflicts: ${golang:Conflicts}
+Description: GNU Go compiler
+ This is the GNU Go compiler, which compiles Go on platforms supported
+ by the gcc compiler. It uses the gcc backend to generate optimized code.
+
+Package: gccgo-5-multilib
+Architecture: amd64 i386 kfreebsd-amd64 mips mips64 mips64el mipsel mipsn32 mipsn32el powerpc ppc64 s390 s390x sparc sparc64 x32
+Section: devel
+Priority: optional
+Depends: gcc-5-base (= ${gcc:Version}), gccgo-5 (= ${gcc:Version}), gcc-5-multilib (= ${gcc:Version}), ${dep:libgobiarch}, ${shlibs:Depends}, ${misc:Depends}
+Suggests: ${dep:libgobiarchdbg}
+Description: GNU Go compiler (multilib support)
+ This is the GNU Go compiler, which compiles Go on platforms supported
+ by the gcc compiler.
+ .
+ This is a dependency package, depending on development packages
+ for the non-default multilib architecture(s).
+
+Package: libgo7
+Section: libs
+Architecture: any
+Provides: libgo7-armel [armel], libgo7-armhf [armhf]
+Multi-Arch: same
+Pre-Depends: ${misc:Pre-Depends}
+Priority: optional
+Depends: gcc-5-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends}
+Replaces: libgo3
+Description: Runtime library for GNU Go applications
+ Library needed for GNU Go applications linked against the
+ shared library.
+
+Package: libgo7-dbg
+Section: debug
+Architecture: any
+Provides: libgo7-dbg-armel [armel], libgo7-dbg-armhf [armhf]
+Multi-Arch: same
+Priority: extra
+Depends: gcc-5-base (= ${gcc:Version}), libgo7 (= ${gcc:Version}), ${misc:Depends}
+Description: Runtime library for GNU Go applications (debug symbols)
+ Library needed for GNU Go applications linked against the
+ shared library. This currently is an empty package, because the
+ library is completely unstripped.
+
+Package: lib64go7
+Section: libs
+Architecture: i386 powerpc sparc s390 mips mipsel mipsn32 mipsn32el x32
+Priority: optional
+Depends: gcc-5-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+Replaces: lib64go3
+Description: Runtime library for GNU Go applications (64bit)
+ Library needed for GNU Go applications linked against the
+ shared library.
+
+Package: lib64go7-dbg
+Section: debug
+Architecture: i386 powerpc sparc s390 mips mipsel mipsn32 mipsn32el x32
+Priority: extra
+Depends: gcc-5-base (= ${gcc:Version}), lib64go7 (= ${gcc:Version}), ${misc:Depends}
+Description: Runtime library for GNU Go applications (64bit debug symbols)
+ Library needed for GNU Go applications linked against the
+ shared library. This currently is an empty package, because the
+ library is completely unstripped.
+
+Package: lib32go7
+Section: libs
+Architecture: amd64 ppc64 kfreebsd-amd64 s390x sparc64 x32 mipsn32 mipsn32el mips64 mips64el
+Priority: optional
+Depends: gcc-5-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+Conflicts: ${confl:lib32}
+Replaces: lib32go3
+Description: Runtime library for GNU Go applications (32bit)
+ Library needed for GNU Go applications linked against the
+ shared library.
+
+Package: lib32go7-dbg
+Section: debug
+Architecture: amd64 ppc64 kfreebsd-amd64 s390x sparc64 x32 mipsn32 mipsn32el mips64 mips64el
+Priority: extra
+Depends: gcc-5-base (= ${gcc:Version}), lib32go7 (= ${gcc:Version}), ${misc:Depends}
+Description: Runtime library for GNU Go applications (32 bit debug symbols)
+ Library needed for GNU Go applications linked against the
+ shared library. This currently is an empty package, because the
+ library is completely unstripped.
+
+Package: libn32go7
+Section: libs
+Architecture: mips mipsel mips64 mips64el
+Priority: optional
+Depends: gcc-5-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+Replaces: libn32go3
+Description: Runtime library for GNU Go applications (n32)
+ Library needed for GNU Go applications linked against the
+ shared library.
+
+Package: libn32go7-dbg
+Section: debug
+Architecture: mips mipsel mips64 mips64el
+Priority: extra
+Depends: gcc-5-base (= ${gcc:Version}), libn32go7 (= ${gcc:Version}), ${misc:Depends}
+Description: Runtime library for GNU Go applications (n32 debug symbols)
+ Library needed for GNU Go applications linked against the
+ shared library. This currently is an empty package, because the
+ library is completely unstripped.
+
+Package: libx32go7
+Section: libs
+Architecture: amd64 i386
+Priority: optional
+Depends: gcc-5-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+Replaces: libx32go3
+Description: Runtime library for GNU Go applications (x32)
+ Library needed for GNU Go applications linked against the
+ shared library.
+
+Package: libx32go7-dbg
+Section: debug
+Architecture: amd64 i386
+Priority: extra
+Depends: gcc-5-base (= ${gcc:Version}), libx32go7 (= ${gcc:Version}), ${misc:Depends}
+Description: Runtime library for GNU Go applications (x32 debug symbols)
+ Library needed for GNU Go applications linked against the
+ shared library. This currently is an empty package, because the
+ library is completely unstripped.
+
+Package: gcj-5
+Section: java
+Architecture: any
+Priority: optional
+Depends: gcc-5-base (= ${gcc:Version}), ${dep:gcj}, ${dep:gcjcross}, ${dep:libcdev}, ${dep:ecj}, ${shlibs:Depends}, dpkg (>= 1.15.4) | install-info, ${misc:Depends}
+Recommends: libecj-java-gcj
+Replaces: gcj-5-jdk (<< 5.2.1-19)
+Suggests: gcj-5-jdk
+Description: GCJ byte code and native compiler 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.
+ .
+ Install the gcj-5-jdk package for a more complete SDK environment.
+
+Package: gcj-5-jdk
+Section: java
+Architecture: any
+Priority: optional
+Depends: gcc-5-base (= ${gcc:Version}), ${dep:gcj}, ${dep:libcdev}, gcj-5 (= ${gcj:Version}), gcj-5-jre (= ${gcj:Version}), libgcj16-dev (= ${gcj:Version}), fastjar, libgcj-bc, java-common, libantlr-java, ${shlibs:Depends}, dpkg (>= 1.15.4) | install-info, ${misc:Depends}
+Recommends: libecj-java-gcj
+Suggests: gcj-5-source (>= ${gcj:SoftVersion}), libgcj16-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-5-jre-headless
+Priority: optional
+Section: java
+Architecture: any
+Depends: gcc-5-base (= ${gcc:Version}), gcj-5-jre-lib (>= ${gcj:SoftVersion}), libgcj16 (= ${gcj:Version}), ${dep:prctl}, ${shlibs:Depends}, ${misc:Depends}
+Suggests: fastjar, gcj-5-jdk (= ${gcj:Version}), libgcj16-awt (= ${gcj:Version})
+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-5-jre
+Section: java
+Architecture: any
+Priority: optional
+Depends: gcc-5-base (= ${gcc:Version}), gcj-5-jre-headless (= ${gcj:Version}), libgcj16-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: libgcj16
+Section: libs
+Architecture: any
+Priority: optional
+Pre-Depends: ${misc:Pre-Depends}
+Multi-Arch: same
+Depends: gcc-5-base (>= ${gcc:SoftVersion}), libgcj-common (>= 1:4.1.1-21), ${shlibs:Depends}, ${misc:Depends}
+Recommends: gcj-5-jre-lib (>= ${gcj:SoftVersion})
+Suggests: libgcj16-dbg (>= ${gcc:Version}), libgcj16-awt (= ${gcj:Version})
+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
+ libgcj16-dbg and binutils are required.
+
+Package: gcj-5-jre-lib
+Section: java
+Architecture: all
+Priority: optional
+Depends: gcc-5-base (>= ${gcc:SoftVersion}), libgcj16 (>= ${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: libgcj16-awt
+Section: libs
+Architecture: any
+Priority: optional
+Pre-Depends: ${misc:Pre-Depends}
+Multi-Arch: same
+Depends: gcc-5-base (>= ${gcc:SoftVersion}), libgcj16 (= ${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: libgcj16-dev
+Section: libdevel
+Architecture: any
+Multi-Arch: same
+Priority: optional
+Depends: gcc-5-base (= ${gcc:Version}), libgcj16-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: libgcj16-dbg
+Section: debug
+Architecture: any
+Priority: extra
+Pre-Depends: ${misc:Pre-Depends}
+Multi-Arch: same
+Depends: gcc-5-base (= ${gcc:Version}), libgcj16 (= ${gcj:Version}), ${misc:Depends}
+Recommends: binutils, libc6-dbg | libc-dbg
+Description: Debugging symbols for libraries provided in libgcj16-dev
+ The package provides debugging symbols for the libraries provided
+ in libgcj16-dev.
+ .
+ binutils is required to show file names and line numbers in stack traces.
+
+Package: gcj-5-source
+Section: java
+Architecture: all
+Priority: optional
+Depends: gcc-5-base (>= ${gcc:SoftVersion}), gcj-5-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-5-base (>= ${gcc:SoftVersion}), ${misc:Depends}
+Enhances: libgcj16-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
+Priority: important
+Depends: gcc-5-base (= ${gcc:Version}), ${dep:libc}, ${shlibs:Depends}, ${misc:Depends}
+Provides: libstdc++6-armel [armel], libstdc++6-armhf [armhf]
+Multi-Arch: same
+Pre-Depends: ${misc:Pre-Depends}
+Breaks: ${multiarch:breaks}, libantlr-dev (<= 2.7.7+dfsg-6), libaqsis1 (<= 1.8.2-1), libassimp3 (<= 3.0~dfsg-4), blockattack (<= 1.4.1+ds1-2.1+b2), boo (<= 0.9.5~git20110729.r1.202a430-2), libboost-date-time1.54.0, libboost-date-time1.55.0, libcpprest2.4 (<= 2.4.0-2), printer-driver-brlaser (<= 3-3), c++-annotations (<= 10.2.0-1), clustalx (<= 2.1+lgpl-3), libdavix0 (<= 0.4.0-1+b1), libdballe6 (<= 6.8-1), dff (<= 1.3.0+dfsg.1-4.1+b3), libdiet-sed2.8 (<= 2.8.0-1+b3), libdiet-client2.8 (<= [...]
+Conflicts: scim (<< 1.4.2-1)
+Replaces: libstdc++6-5-dbg (<< 4.9.0-3)
+Description: GNU Standard C++ Library v3
+ This package contains an additional runtime library for C++ programs
+ built with the GNU compiler.
+ .
+ libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which
+ was included up to g++-2.95. The first version of libstdc++-v3 appeared
+ in g++-3.0.
+
+Package: lib32stdc++6
+Architecture: amd64 ppc64 kfreebsd-amd64 s390x sparc64 x32 mipsn32 mipsn32el mips64 mips64el
+Section: libs
+Priority: optional
+Depends: gcc-5-base (= ${gcc:Version}), lib32gcc1 (>= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends}
+Conflicts: ${confl:lib32}
+Description: GNU Standard C++ Library v3 (32 bit Version)
+ This package contains an additional runtime library for C++ programs
+ built with the GNU compiler.
+
+Package: lib64stdc++6
+Architecture: i386 powerpc sparc s390 mips mipsel mipsn32 mipsn32el x32
+Section: libs
+Priority: optional
+Depends: gcc-5-base (= ${gcc:Version}), lib64gcc1 (>= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends}
+Description: GNU Standard C++ Library v3 (64bit)
+ This package contains an additional runtime library for C++ programs
+ built with the GNU compiler.
+ .
+ libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which
+ was included up to g++-2.95. The first version of libstdc++-v3 appeared
+ in g++-3.0.
+
+Package: libn32stdc++6
+Architecture: mips mipsel mips64 mips64el
+Section: libs
+Priority: optional
+Depends: gcc-5-base (= ${gcc:Version}), libn32gcc1 (>= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends}
+Description: GNU Standard C++ Library v3 (n32)
+ This package contains an additional runtime library for C++ programs
+ built with the GNU compiler.
+ .
+ libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which
+ was included up to g++-2.95. The first version of libstdc++-v3 appeared
+ in g++-3.0.
+
+Package: libx32stdc++6
+Architecture: amd64 i386
+Section: libs
+Priority: optional
+Depends: gcc-5-base (= ${gcc:Version}), libx32gcc1 (>= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends}
+Description: GNU Standard C++ Library v3 (x32)
+ This package contains an additional runtime library for C++ programs
+ built with the GNU compiler.
+ .
+ libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which
+ was included up to g++-2.95. The first version of libstdc++-v3 appeared
+ in g++-3.0.
+
+Package: libstdc++-5-dev
+Architecture: any
+Multi-Arch: same
+Section: libdevel
+Priority: optional
+Depends: gcc-5-base (= ${gcc:Version}), libgcc-5-dev (= ${gcc:Version}),
+ libstdc++6 (>= ${gcc:Version}), ${dep:libcdev}, ${misc:Depends}
+Conflicts: libg++27-dev, libg++272-dev (<< 2.7.2.8-1), libstdc++2.8-dev,
+ libg++2.8-dev, libstdc++2.9-dev, libstdc++2.9-glibc2.1-dev,
+ libstdc++2.10-dev (<< 1:2.95.3-2), libstdc++3.0-dev
+Suggests: libstdc++-5-doc
+Provides: libstdc++-dev
+Description: GNU Standard C++ Library v3 (development files)
+ This package contains the headers and static library files necessary for
+ building C++ programs which use libstdc++.
+ .
+ libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which
+ was included up to g++-2.95. The first version of libstdc++-v3 appeared
+ in g++-3.0.
+
+Package: libstdc++-5-pic
+Architecture: any
+Multi-Arch: same
+Section: libdevel
+Priority: extra
+Depends: gcc-5-base (= ${gcc:Version}), libstdc++6 (>= ${gcc:Version}),
+ libstdc++-5-dev (= ${gcc:Version}), ${misc:Depends}
+Description: GNU Standard C++ Library v3 (shared library subset kit)
+ This is used to develop subsets of the libstdc++ shared libraries for
+ use on custom installation floppies and in embedded systems.
+ .
+ Unless you are making one of those, you will not need this package.
+
+Package: libstdc++6-5-dbg
+Architecture: any
+Section: debug
+Priority: extra
+Depends: gcc-5-base (= ${gcc:Version}), libstdc++6 (>= ${gcc:Version}),
+ libgcc1-dbg (>= ${libgcc:Version}), ${shlibs:Depends}, ${misc:Depends}
+Provides: libstdc++6-5-dbg-armel [armel], libstdc++6-5-dbg-armhf [armhf]
+Multi-Arch: same
+Recommends: libstdc++-5-dev (= ${gcc:Version})
+Conflicts: libstdc++5-dbg, libstdc++5-3.3-dbg, libstdc++6-dbg,
+ libstdc++6-4.0-dbg, libstdc++6-4.1-dbg, libstdc++6-4.2-dbg,
+ libstdc++6-4.3-dbg, libstdc++6-4.4-dbg, libstdc++6-4.5-dbg,
+ libstdc++6-4.6-dbg, libstdc++6-4.7-dbg, libstdc++6-4.8-dbg,
+ libstdc++6-4.9-dbg
+Description: GNU Standard C++ Library v3 (debugging files)
+ This package contains the shared library of libstdc++ compiled with
+ debugging symbols.
+
+Package: lib32stdc++-5-dev
+Architecture: amd64 ppc64 kfreebsd-amd64 s390x sparc64 x32 mipsn32 mipsn32el mips64 mips64el
+Section: libdevel
+Priority: optional
+Depends: gcc-5-base (= ${gcc:Version}), lib32gcc-5-dev (= ${gcc:Version}),
+ lib32stdc++6 (>= ${gcc:Version}), libstdc++-5-dev (= ${gcc:Version}), ${misc:Depends}
+Description: GNU Standard C++ Library v3 (development files)
+ This package contains the headers and static library files necessary for
+ building C++ programs which use libstdc++.
+ .
+ libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which
+ was included up to g++-2.95. The first version of libstdc++-v3 appeared
+ in g++-3.0.
+
+Package: lib32stdc++6-5-dbg
+Architecture: amd64 ppc64 kfreebsd-amd64 s390x sparc64 x32 mipsn32 mipsn32el mips64 mips64el
+Section: debug
+Priority: extra
+Depends: gcc-5-base (= ${gcc:Version}), lib32stdc++6 (>= ${gcc:Version}),
+ libstdc++-5-dev (= ${gcc:Version}), lib32gcc1-dbg (>= ${gcc:EpochVersion}),
+ ${shlibs:Depends}, ${misc:Depends}
+Conflicts: lib32stdc++6-dbg, lib32stdc++6-4.0-dbg,
+ lib32stdc++6-4.1-dbg, lib32stdc++6-4.2-dbg, lib32stdc++6-4.3-dbg,
+ lib32stdc++6-4.4-dbg, lib32stdc++6-4.5-dbg, lib32stdc++6-4.6-dbg,
+ lib32stdc++6-4.7-dbg, lib32stdc++6-4.8-dbg, lib32stdc++6-4.9-dbg
+Description: GNU Standard C++ Library v3 (debugging files)
+ This package contains the shared library of libstdc++ compiled with
+ debugging symbols.
+
+Package: lib64stdc++-5-dev
+Architecture: i386 powerpc sparc s390 mips mipsel mipsn32 mipsn32el x32
+Section: libdevel
+Priority: optional
+Depends: gcc-5-base (= ${gcc:Version}), lib64gcc-5-dev (= ${gcc:Version}),
+ lib64stdc++6 (>= ${gcc:Version}), libstdc++-5-dev (= ${gcc:Version}), ${misc:Depends}
+Description: GNU Standard C++ Library v3 (development files)
+ This package contains the headers and static library files necessary for
+ building C++ programs which use libstdc++.
+ .
+ libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which
+ was included up to g++-2.95. The first version of libstdc++-v3 appeared
+ in g++-3.0.
+
+Package: lib64stdc++6-5-dbg
+Architecture: i386 powerpc sparc s390 mips mipsel mipsn32 mipsn32el x32
+Section: debug
+Priority: extra
+Depends: gcc-5-base (= ${gcc:Version}), lib64stdc++6 (>= ${gcc:Version}),
+ libstdc++-5-dev (= ${gcc:Version}), lib64gcc1-dbg (>= ${gcc:EpochVersion}),
+ ${shlibs:Depends}, ${misc:Depends}
+Conflicts: lib64stdc++6-dbg, lib64stdc++6-4.0-dbg,
+ lib64stdc++6-4.1-dbg, lib64stdc++6-4.2-dbg, lib64stdc++6-4.3-dbg,
+ lib64stdc++6-4.4-dbg, lib64stdc++6-4.5-dbg, lib64stdc++6-4.6-dbg,
+ lib64stdc++6-4.7-dbg, lib64stdc++6-4.8-dbg, lib64stdc++6-4.9-dbg
+Description: GNU Standard C++ Library v3 (debugging files)
+ This package contains the shared library of libstdc++ compiled with
+ debugging symbols.
+
+Package: libn32stdc++-5-dev
+Architecture: mips mipsel mips64 mips64el
+Section: libdevel
+Priority: optional
+Depends: gcc-5-base (= ${gcc:Version}), libn32gcc-5-dev (= ${gcc:Version}),
+ libn32stdc++6 (>= ${gcc:Version}), libstdc++-5-dev (= ${gcc:Version}), ${misc:Depends}
+Description: GNU Standard C++ Library v3 (development files)
+ This package contains the headers and static library files necessary for
+ building C++ programs which use libstdc++.
+ .
+ libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which
+ was included up to g++-2.95. The first version of libstdc++-v3 appeared
+ in g++-3.0.
+
+Package: libn32stdc++6-5-dbg
+Architecture: mips mipsel mips64 mips64el
+Section: debug
+Priority: extra
+Depends: gcc-5-base (= ${gcc:Version}), libn32stdc++6 (>= ${gcc:Version}),
+ libstdc++-5-dev (= ${gcc:Version}), libn32gcc1-dbg (>= ${gcc:EpochVersion}),
+ ${shlibs:Depends}, ${misc:Depends}
+Conflicts: libn32stdc++6-dbg, libn32stdc++6-4.0-dbg,
+ libn32stdc++6-4.1-dbg, libn32stdc++6-4.2-dbg, libn32stdc++6-4.3-dbg,
+ libn32stdc++6-4.4-dbg, libn32stdc++6-4.5-dbg, libn32stdc++6-4.6-dbg,
+ libn32stdc++6-4.7-dbg, libn32stdc++6-4.8-dbg, libn32stdc++6-4.9-dbg
+Description: GNU Standard C++ Library v3 (debugging files)
+ This package contains the shared library of libstdc++ compiled with
+ debugging symbols.
+
+Package: libx32stdc++-5-dev
+Architecture: amd64 i386
+Section: libdevel
+Priority: optional
+Depends: gcc-5-base (= ${gcc:Version}), libx32gcc-5-dev (= ${gcc:Version}), libx32stdc++6 (>= ${gcc:Version}),
+ libstdc++-5-dev (= ${gcc:Version}), ${misc:Depends}
+Description: GNU Standard C++ Library v3 (development files)
+ This package contains the headers and static library files necessary for
+ building C++ programs which use libstdc++.
+ .
+ libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which
+ was included up to g++-2.95. The first version of libstdc++-v3 appeared
+ in g++-3.0.
+
+Package: libx32stdc++6-5-dbg
+Architecture: amd64 i386
+Section: debug
+Priority: extra
+Depends: gcc-5-base (= ${gcc:Version}), libx32stdc++6 (>= ${gcc:Version}),
+ libstdc++-5-dev (= ${gcc:Version}), libx32gcc1-dbg (>= ${gcc:EpochVersion}),
+ ${shlibs:Depends}, ${misc:Depends}
+Conflicts: libx32stdc++6-dbg, libx32stdc++6-4.6-dbg,
+ libx32stdc++6-4.7-dbg, libx32stdc++6-4.8-dbg, libx32stdc++6-4.9-dbg
+Description: GNU Standard C++ Library v3 (debugging files)
+ This package contains the shared library of libstdc++ compiled with
+ debugging symbols.
+
+Package: libstdc++-5-doc
+Architecture: all
+Section: doc
+Priority: optional
+Depends: gcc-5-base (>= ${gcc:SoftVersion}), ${misc:Depends}
+Conflicts: libstdc++5-doc, libstdc++5-3.3-doc, libstdc++6-doc,
+ libstdc++6-4.0-doc, libstdc++6-4.1-doc, libstdc++6-4.2-doc, libstdc++6-4.3-doc,
+ libstdc++6-4.4-doc, libstdc++6-4.5-doc, libstdc++6-4.6-doc, libstdc++6-4.7-doc,
+ libstdc++-4.8-doc, libstdc++-4.9-doc
+Description: GNU Standard C++ Library v3 (documentation files)
+ This package contains documentation files for the GNU stdc++ library.
+ .
+ One set is the distribution documentation, the other set is the
+ source documentation including a namespace list, class hierarchy,
+ alphabetical list, compound list, file list, namespace members,
+ compound members and file members.
+
+Package: gnat-5
+Architecture: any
+Priority: optional
+Pre-Depends: ${misc:Pre-Depends}
+Depends: gcc-5-base (= ${gcc:Version}), gcc-5 (>= ${gcc:SoftVersion}), ${dep:libgnat}, ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends}
+Suggests: gnat-5-doc, ada-reference-manual-2012, gnat-5-sjlj
+Breaks:   gnat (<< 4.6.1), dh-ada-library (<< 6.0), gnat-4.6-base (= 4.6.4-2),
+ gnat-4.9-base (= 4.9-20140330-1)
+Replaces: gnat (<< 4.6.1), dh-ada-library (<< 6.0), gnat-4.6-base (= 4.6.4-2),
+ gnat-4.9-base (= 4.9-20140330-1)
+# Takes over symlink from gnat (<< 4.6.1): /usr/bin/gnatgcc.
+# Takes over file from dh-ada-library (<< 6.0): debian_packaging.mk.
+# g-base 4.6.4-2, 4.9-20140330-1 contain debian_packaging.mk by mistake.
+# Newer versions of gnat and dh-ada-library will not provide these files.
+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, gnat-4.7, gnat-4.8,
+ gnat-4.9
+# These other packages will continue to provide /usr/bin/gnatmake and
+# other files.
+Description: GNU Ada compiler
+ GNAT is a compiler for the Ada programming language. It produces optimized
+ code on platforms supported by the GNU Compiler Collection (GCC).
+ .
+ This package provides the compiler, tools and runtime library that handles
+ exceptions using the default zero-cost mechanism.
+
+Package: gnat-5-sjlj
+Architecture: any
+Priority: extra
+Pre-Depends: ${misc:Pre-Depends}
+Depends: gcc-5-base (= ${gcc:Version}), gnat-5 (= ${gnat:Version}), ${misc:Depends}
+Description: GNU Ada compiler (setjump/longjump runtime library)
+ GNAT is a compiler for the Ada programming language. It produces optimized
+ code on platforms supported by the GNU Compiler Collection (GCC).
+ .
+ This package provides an alternative runtime library that handles
+ exceptions using the setjump/longjump mechanism (as a static library
+ only).  You can install it to supplement the normal compiler.
+
+Package: libgnat-5
+Section: libs
+Architecture: any
+Multi-Arch: same
+Pre-Depends: ${misc:Pre-Depends}
+Priority: optional
+Depends: gcc-5-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends}
+Description: runtime for applications compiled with GNAT (shared library)
+ GNAT is a compiler for the Ada programming language. It produces optimized
+ code on platforms supported by the GNU Compiler Collection (GCC).
+ .
+ The libgnat library provides runtime components needed by most
+ applications produced with GNAT.
+ .
+ This package contains the runtime shared library.
+
+Package: libgnat-5-dbg
+Section: debug
+Architecture: any
+Multi-Arch: same
+Pre-Depends: ${misc:Pre-Depends}
+Priority: extra
+Depends: gcc-5-base (= ${gcc:Version}), libgnat-5 (= ${gnat:Version}), ${misc:Depends}
+Description: runtime for applications compiled with GNAT (debugging symbols)
+ GNAT is a compiler for the Ada programming language. It produces optimized
+ code on platforms supported by the GNU Compiler Collection (GCC).
+ .
+ The libgnat library provides runtime components needed by most
+ applications produced with GNAT.
+ .
+ This package contains the debugging symbols.
+
+Package: libgnatvsn5-dev
+Section: libdevel
+Architecture: any
+Priority: extra
+Depends: gcc-5-base (= ${gcc:Version}), gnat-5 (= ${gnat:Version}),
+ libgnatvsn5 (= ${gnat:Version}), ${misc:Depends}
+Conflicts: libgnatvsn-dev (<< 5), libgnatvsn4.1-dev, libgnatvsn4.3-dev, libgnatvsn4.4-dev, libgnatvsn4.5-dev, libgnatvsn4.6-dev
+Description: GNU Ada compiler selected components (development files)
+ GNAT is a compiler for the Ada programming language. It produces optimized
+ code on platforms supported by the GNU Compiler Collection (GCC).
+ .
+ The libgnatvsn library exports selected GNAT components for use in other
+ packages, most notably ASIS tools. It is licensed under the GNAT-Modified
+ GPL, allowing to link proprietary programs with it.
+ .
+ This package contains the development files and static library.
+
+Package: libgnatvsn5
+Architecture: any
+Multi-Arch: same
+Pre-Depends: ${misc:Pre-Depends}
+Priority: optional
+Section: libs
+Depends: gcc-5-base (= ${gcc:Version}), libgnat-5 (= ${gnat:Version}),
+ ${shlibs:Depends}, ${misc:Depends}
+Description: GNU Ada compiler selected components (shared library)
+ GNAT is a compiler for the Ada programming language. It produces optimized
+ code on platforms supported by the GNU Compiler Collection (GCC).
+ .
+ The libgnatvsn library exports selected GNAT components for use in other
+ packages, most notably ASIS tools. It is licensed under the GNAT-Modified
+ GPL, allowing to link proprietary programs with it.
+ .
+ This package contains the runtime shared library.
+
+Package: libgnatvsn5-dbg
+Architecture: any
+Multi-Arch: same
+Pre-Depends: ${misc:Pre-Depends}
+Priority: extra
+Section: debug
+Depends: gcc-5-base (= ${gcc:Version}), libgnatvsn5 (= ${gnat:Version}), ${misc:Depends}
+Suggests: gnat
+Description: GNU Ada compiler selected components (debugging symbols)
+ GNAT is a compiler for the Ada programming language. It produces optimized
+ code on platforms supported by the GNU Compiler Collection (GCC).
+ .
+ The libgnatvsn library exports selected GNAT components for use in other
+ packages, most notably ASIS tools. It is licensed under the GNAT-Modified
+ GPL, allowing to link proprietary programs with it.
+ .
+ This package contains the debugging symbols.
+
+Package: libgnatprj5-dev
+Section: libdevel
+Architecture: any
+Priority: extra
+Depends: gcc-5-base (= ${gcc:Version}), gnat-5 (= ${gnat:Version}),
+ libgnatprj5 (= ${gnat:Version}),
+ libgnatvsn5-dev (= ${gnat:Version}), ${misc:Depends}
+Conflicts: libgnatprj-dev (<< 5), libgnatprj4.1-dev, libgnatprj4.3-dev, libgnatprj4.4-dev, libgnatprj4.5-dev, libgnatprj4.6-dev
+Description: GNU Ada compiler Project Manager (development files)
+ GNAT is a compiler for the Ada programming language. It produces optimized
+ code on platforms supported by the GNU Compiler Collection (GCC).
+ .
+ GNAT uses project files to organise source and object files in large-scale
+ development efforts. The libgnatprj library exports GNAT project files
+ management for use in other packages, most notably ASIS tools (package
+ asis-programs) and GNAT Programming Studio (package gnat-gps). It is
+ licensed under the pure GPL; all programs that use it must also be
+ distributed under the GPL, or not distributed at all.
+ .
+ This package contains the development files and static library.
+
+Package: libgnatprj5
+Architecture: any
+Multi-Arch: same
+Pre-Depends: ${misc:Pre-Depends}
+Priority: optional
+Section: libs
+Depends: gcc-5-base (= ${gcc:Version}), libgnat-5 (= ${gnat:Version}),
+ libgnatvsn5 (= ${gnat:Version}),
+ ${shlibs:Depends}, ${misc:Depends}
+Description: GNU Ada compiler Project Manager (shared library)
+ GNAT is a compiler for the Ada programming language. It produces optimized
+ code on platforms supported by the GNU Compiler Collection (GCC).
+ .
+ GNAT uses project files to organise source and object files in large-scale
+ development efforts. The libgnatprj library exports GNAT project files
+ management for use in other packages, most notably ASIS tools (package
+ asis-programs) and GNAT Programming Studio (package gnat-gps). It is
+ licensed under the pure GPL; all programs that use it must also be
+ distributed under the GPL, or not distributed at all.
+ .
+ This package contains the runtime shared library.
+
+Package: libgnatprj5-dbg
+Architecture: any
+Multi-Arch: same
+Pre-Depends: ${misc:Pre-Depends}
+Priority: extra
+Section: debug
+Depends: gcc-5-base (= ${gcc:Version}), libgnatprj5 (= ${gnat:Version}), ${misc:Depends}
+Suggests: gnat
+Description: GNU Ada compiler Project Manager (debugging symbols)
+ GNAT is a compiler for the Ada programming language. It produces optimized
+ code on platforms supported by the GNU Compiler Collection (GCC).
+ .
+ GNAT uses project files to organise source and object files in large-scale
+ development efforts. The libgnatprj library exports GNAT project files
+ management for use in other packages, most notably ASIS tools (package
+ asis-programs) and GNAT Programming Studio (package gnat-gps). It is
+ licensed under the pure GPL; all programs that use it must also be
+ distributed under the GPL, or not distributed at all.
+ .
+ This package contains the debugging symbols.
+
+Package: gdc-5
+Architecture: any
+Priority: optional
+Depends: gcc-5-base (>= ${gcc:SoftVersion}), g++-5 (>= ${gcc:SoftVersion}), ${dep:gdccross}, ${dep:phobosdev}, ${shlibs:Depends}, ${misc:Depends}
+Provides: gdc, d-compiler, d-v2-compiler
+Replaces: gdc (<< 4.4.6-5)
+Description: GNU D compiler (version 2)
+ 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: gdc-5-multilib
+Architecture: any
+Priority: optional
+Depends: gcc-5-base (>= ${gcc:SoftVersion}), gdc-5 (= ${gcc:Version}), gcc-5-multilib (= ${gcc:Version}), ${dep:libphobosbiarchdev}${shlibs:Depends}, ${misc:Depends}
+Description: GNU D compiler (version 2, multilib support)
+ This is the GNU D compiler, which compiles D on platforms supported by gcc.
+ It uses the gcc backend to generate optimised code.
+ .
+ This is a dependency package, depending on development packages
+ for the non-default multilib architecture(s).
+
+Package: libphobos-5-dev
+Architecture: amd64 armel armhf i386 x32 kfreebsd-amd64 kfreebsd-i386
+Section: libdevel
+Priority: optional
+Depends: gcc-5-base (= ${gcc:Version}), zlib1g-dev, ${shlibs:Depends}, ${misc:Depends}
+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`'PHOBOS_V`'PV`'TS-dbg
+#Section: debug
+#Architecture: ifdef(`TARGET',`CROSS_ARCH',`libphobos_archs')
+#Priority: extra
+#Depends: BASELDEP, libphobos`'PHOBOS_V`'PV-dev (= ${gdc:Version}), ${misc:Depends}
+#Provides: libphobos`'PHOBOS_V`'TS-dbg
+#BUILT_USING`'dnl
+#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: lib64phobos-5-dev
+Architecture: i386 powerpc sparc s390 mips mipsel mipsn32 mipsn32el x32
+Section: libdevel
+Priority: optional
+Depends: gcc-5-base (= ${gcc:Version}), lib64gcc-5-dev (= ${gcc:Version}), lib64z1-dev, ${shlibs:Depends}, ${misc:Depends}
+Description: Phobos D standard library (64bit development files)
+ This is the Phobos standard library that comes with the D2 compiler.
+ .
+ For more information check http://www.dlang.org/phobos/
+
+Package: lib32phobos-5-dev
+Architecture: amd64 ppc64 kfreebsd-amd64 s390x sparc64 x32 mipsn32 mipsn32el mips64 mips64el
+Section: libdevel
+Priority: optional
+Depends: gcc-5-base (= ${gcc:Version}), lib32gcc-5-dev (= ${gcc:Version}), lib32z1-dev, ${shlibs:Depends}, ${misc:Depends}
+Description: Phobos D standard library (64bit development files)
+ This is the Phobos standard library that comes with the D2 compiler.
+ .
+ For more information check http://www.dlang.org/phobos/
+
+Package: libx32phobos-5-dev
+Architecture: amd64 i386
+Section: libdevel
+Priority: optional
+Depends: gcc-5-base (= ${gcc:Version}), libx32gcc-5-dev (= ${gcc:Version}), ${dep:libx32z}, ${shlibs:Depends}, ${misc:Depends}
+Description: Phobos D standard library (x32 development files)
+ This is the Phobos standard library that comes with the D2 compiler.
+ .
+ For more information check http://www.dlang.org/phobos/
+
+#Package: gcc`'PV-soft-float
+#Architecture: arm armel armhf
+#Priority: PRI(optional)
+#Depends: BASEDEP, depifenabled(`cdev',`gcc`'PV (= ${gcc:Version}),') ${shlibs:Depends}, ${misc:Depends}
+#Conflicts: gcc-4.4-soft-float, gcc-4.5-soft-float, gcc-4.6-soft-float
+#BUILT_USING`'dnl
+#Description: GCC soft-floating-point gcc libraries (ARM)
+# These are versions of basic static libraries such as libgcc.a compiled
+# with the -msoft-float option, for CPUs without a floating-point unit.
+
+Package: fixincludes
+Architecture: any
+Priority: optional
+Depends: gcc-5-base (= ${gcc:Version}), gcc-5 (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends}
+Description: Fix non-ANSI header files
+ FixIncludes was created to fix non-ANSI system header files. Many
+ system manufacturers supply proprietary headers that are not ANSI compliant.
+ The GNU compilers cannot compile non-ANSI headers. Consequently, the
+ FixIncludes shell script was written to fix the header files.
+ .
+ Not all packages with header files are installed on the system, when the
+ package is built, so we make fixincludes available at build time of other
+ packages, such that checking tools like lintian can make use of it.
+
+Package: gcc-5-source
+Architecture: all
+Priority: optional
+Depends: make, 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 --git a/debian/control.m4 b/debian/control.m4
new file mode 100644
index 0000000..066c0ee
--- /dev/null
+++ b/debian/control.m4
@@ -0,0 +1,5283 @@
+divert(-1)
+
+define(`checkdef',`ifdef($1, , `errprint(`error: undefined macro $1
+')m4exit(1)')')
+define(`errexit',`errprint(`error: undefined macro `$1'
+')m4exit(1)')
+
+dnl The following macros must be defined, when called:
+dnl ifdef(`SRCNAME',	, errexit(`SRCNAME'))
+dnl ifdef(`PV',		, errexit(`PV'))
+dnl ifdef(`ARCH',		, errexit(`ARCH'))
+
+dnl The architecture will also be defined (-D__i386__, -D__powerpc__, etc.)
+
+define(`PN', `$1')
+ifdef(`PRI', `', `
+    define(`PRI', `$1')
+')
+define(`MAINTAINER', `Debian GCC Maintainers <debian-gcc at lists.debian.org>')
+
+define(`depifenabled', `ifelse(index(enabled_languages, `$1'), -1, `', `$2')')
+define(`ifenabled', `ifelse(index(enabled_languages, `$1'), -1, `dnl', `$2')')
+
+ifdef(`TARGET',`ifdef(`CROSS_ARCH',`',`undefine(`MULTIARCH')')')
+define(`CROSS_ARCH', ifdef(`CROSS_ARCH', CROSS_ARCH, `all'))
+define(`libdep', `lib$2$1`'LS`'AQ (ifelse(`$3',`',`>=',`$3') ifelse(`$4',`',`${gcc:Version}',`$4'))')
+define(`libdevdep', `lib$2$1`'LS`'AQ (ifelse(`$3',`',`=',`$3') ifelse(`$4',`',`${gcc:Version}',`$4'))')
+define(`libidevdep', `lib$2$1`'LS`'AQ (ifelse(`$3',`',`=',`$3') ifelse(`$4',`',`${gcc:Version}',`$4'))')
+ifdef(`TARGET',`ifelse(CROSS_ARCH,`all',`
+define(`libidevdep', `lib$2$1`'LS`'AQ (>= ifelse(`$4',`',`${gcc:SoftVersion}',`$4'))')
+')')
+define(`libdbgdep', `lib$2$1`'LS`'AQ (ifelse(`$3',`',`>=',`$3') ifelse(`$4',`',`${gcc:Version}',`$4'))')
+
+define(`BUILT_USING', ifelse(add_built_using,yes,`Built-Using: ${Built-Using}
+'))
+
+divert`'dnl
+dnl --------------------------------------------------------------------------
+Source: SRCNAME
+Section: devel
+Priority: PRI(optional)
+ifelse(DIST,`Ubuntu',`dnl
+ifelse(regexp(SRCNAME, `gnat\|gdc-'),0,`dnl
+Maintainer: Ubuntu MOTU Developers <ubuntu-motu at lists.ubuntu.com>
+', `dnl
+Maintainer: Ubuntu Core developers <ubuntu-devel-discuss at lists.ubuntu.com>
+')dnl SRCNAME
+XSBC-Original-Maintainer: MAINTAINER
+', `dnl
+Maintainer: MAINTAINER
+')dnl DIST
+ifelse(regexp(SRCNAME, `gnat'),0,`dnl
+Uploaders: Ludovic Brenta <lbrenta at debian.org>
+', regexp(SRCNAME, `gdc'),0,`dnl
+Uploaders: Iain Buclaw <ibuclaw at ubuntu.com>, Matthias Klose <doko at debian.org>
+', `dnl
+Uploaders: Matthias Klose <doko at debian.org>
+')dnl SRCNAME
+Standards-Version: 3.9.6
+ifdef(`TARGET',`dnl cross
+Build-Depends: debhelper (>= 5.0.62), DPKG_BUILD_DEP
+  LIBC_BUILD_DEP, LIBC_BIARCH_BUILD_DEP
+  kfreebsd-kernel-headers (>= 0.84) [kfreebsd-any], linux-libc-dev [m68k],
+  LIBUNWIND_BUILD_DEP LIBATOMIC_OPS_BUILD_DEP AUTO_BUILD_DEP
+  SOURCE_BUILD_DEP CROSS_BUILD_DEP
+  ISL_BUILD_DEP MPC_BUILD_DEP MPFR_BUILD_DEP GMP_BUILD_DEP,
+  autogen, zlib1g-dev, gawk, lzma, xz-utils, patchutils,
+  zlib1g-dev, SDT_BUILD_DEP
+  bison (>= 1:2.3), flex, realpath (>= 1.9.12), lsb-release, quilt
+',`dnl native
+Build-Depends: debhelper (>= 5.0.62), DPKG_BUILD_DEP
+  GCC_MULTILIB_BUILD_DEP
+  LIBC_BUILD_DEP, LIBC_BIARCH_BUILD_DEP LIBC_DBG_DEP
+  kfreebsd-kernel-headers (>= 0.84) [kfreebsd-any], linux-libc-dev [m68k],
+  AUTO_BUILD_DEP BASE_BUILD_DEP
+  libunwind7-dev (>= 0.98.5-6) [ia64], libatomic-ops-dev [ia64],
+  autogen, gawk, lzma, xz-utils, patchutils,
+  zlib1g-dev, SDT_BUILD_DEP
+  BINUTILS_BUILD_DEP,
+  gperf (>= 3.0.1), bison (>= 1:2.3), flex, gettext,
+  gdb,
+  texinfo (>= 4.3), locales, sharutils,
+  procps, FORTRAN_BUILD_DEP JAVA_BUILD_DEP GNAT_BUILD_DEP GO_BUILD_DEP GDC_BUILD_DEP
+  ISL_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
+')dnl
+ifelse(regexp(SRCNAME, `gnat'),0,`dnl
+Homepage: http://gcc.gnu.org/
+', regexp(SRCNAME, `gdc'),0,`dnl
+Homepage: http://gdcproject.org/
+', `dnl
+Homepage: http://gcc.gnu.org/
+')dnl SRCNAME
+Vcs-Browser: http://svn.debian.org/viewsvn/gcccvs/branches/sid/gcc`'PV/
+Vcs-Svn: svn://anonscm.debian.org/gcccvs/branches/sid/gcc`'PV
+
+ifelse(regexp(SRCNAME, `gcc-snapshot'),0,`dnl
+Package: gcc-snapshot`'TS
+Architecture: any
+Section: devel
+Priority: extra
+Depends: binutils`'TS (>= ${binutils:Version}), ${dep:libcbiarchdev}, ${dep:libcdev}, ${dep:libunwinddev}, ${snap:depends}, ${shlibs:Depends}, ${dep:ecj}, python, ${misc:Depends}
+Recommends: ${snap:recommends}
+Suggests: ${dep:gold}
+Provides: c++-compiler`'TS`'ifdef(`TARGET',`',`, c++abi2-dev')
+BUILT_USING`'dnl
+Description: A SNAPSHOT of the GNU Compiler Collection
+ This package contains a recent development SNAPSHOT of all files
+ contained in the GNU Compiler Collection (GCC).
+ .
+ The source code for this package has been exported from SVN trunk.
+ .
+ DO NOT USE THIS SNAPSHOT FOR BUILDING DEBIAN PACKAGES!
+ .
+ This package will NEVER hit the testing distribution. It is used for
+ tracking gcc bugs submitted to the Debian BTS in recent development
+ versions of gcc.
+',`dnl gcc-X.Y
+
+dnl default base package dependencies
+define(`BASEDEP', `gcc`'PV`'TS-base (= ${gcc:Version})')
+define(`SOFTBASEDEP', `gcc`'PV`'TS-base (>= ${gcc:SoftVersion})')
+
+ifdef(`TARGET',`
+define(`BASELDEP', `gcc`'PV-cross-base`'GCC_PORTS_BUILD (= ${gcc:Version})')
+define(`SOFTBASELDEP', `gcc`'PV-cross-base`'GCC_PORTS_BUILD (>= ${gcc:SoftVersion})')
+',`dnl
+define(`BASELDEP', `BASEDEP')
+define(`SOFTBASELDEP', `SOFTBASEDEP')
+')
+
+dnl base, when building libgcc out of the gcj source; needed if new symbols
+dnl in libgcc are used in libgcj.
+ifelse(index(SRCNAME, `gcj'), 0, `
+define(`BASEDEP', `gcj`'PV-base (= ${gcj:Version})')
+define(`SOFTBASEDEP', `gcj`'PV-base (>= ${gcj:SoftVersion})')
+')
+
+ifelse(index(SRCNAME, `gnat'), 0, `
+define(`BASEDEP', `gnat`'PV-base (= ${gnat:Version})')
+define(`SOFTBASEDEP', `gnat`'PV-base (>= ${gnat:SoftVersion})')
+')
+
+ifenabled(`gccbase',`
+Package: gcc`'PV`'TS-base
+Architecture: any
+Multi-Arch: same
+Section: ifdef(`TARGET',`devel',`libs')
+Priority: ifdef(`TARGET',`extra',`PRI(required)')
+Depends: ${misc:Depends}
+Replaces: ${base:Replaces}
+Breaks: ${base:Breaks}
+BUILT_USING`'dnl
+Description: GCC, the GNU Compiler Collection (base package)
+ This package contains files common to all languages and libraries
+ contained in the GNU Compiler Collection (GCC).
+ifdef(`BASE_ONLY', `dnl
+ .
+ This version of GCC is not yet available for this architecture.
+ Please use the compilers from the gcc-snapshot package for testing.
+')`'dnl
+')`'dnl gccbase
+
+ifenabled(`gcclbase',`
+Package: gcc`'PV-cross-base`'GCC_PORTS_BUILD
+Architecture: all
+Section: ifdef(`TARGET',`devel',`libs')
+Priority: ifdef(`TARGET',`extra',`PRI(required)')
+Depends: ${misc:Depends}
+BUILT_USING`'dnl
+Description: GCC, the GNU Compiler Collection (library base package)
+ This empty package contains changelog and copyright files common to
+ all libraries contained in the GNU Compiler Collection (GCC).
+ifdef(`BASE_ONLY', `dnl
+ .
+ This version of GCC is not yet available for this architecture.
+ Please use the compilers from the gcc-snapshot package for testing.
+')`'dnl
+')`'dnl gcclbase
+
+ifenabled(`java',`
+ifdef(`TARGET', `', `
+ifenabled(`gcjbase',`
+Package: gcj`'PV-base
+Architecture: any
+ifdef(`MULTIARCH', `Multi-Arch: same
+')`'dnl
+Section: libs
+Priority: PRI(optional)
+Depends: ${misc:Depends}
+BUILT_USING`'dnl
+Description: GCC, the GNU Compiler Collection (gcj base package)
+ This package contains files common to all java related packages
+ built from the GNU Compiler Collection (GCC).
+')`'dnl gccbase
+')`'dnl native
+
+ifenabled(`gcjxbase',`
+dnl override default base package dependencies to cross version
+dnl This creates a toolchain that doesnt depend on the system -base packages
+define(`BASEDEP', `gcj`'`PV`'TS'-base (= ${gcc:Version})')
+define(`SOFTBASEDEP', `gcj`'`PV`'TS'-base (>= ${gcc:SoftVersion})')
+
+Package: gcj`'`PV`'TS'-base
+Architecture: any
+Section: devel
+Priority: PRI(extra)
+Depends: ${misc:Depends}
+BUILT_USING`'dnl
+Description: GCC, the GNU Compiler Collection (gcj base package)
+ This package contains files common to all java related packages
+ built from the GNU Compiler Collection (GCC).
+')`'dnl
+')`'dnl java
+
+ifenabled(`gnatbase',`
+Package: gnat`'PV-base`'TS
+Architecture: any
+# "all" causes build instabilities for "any" dependencies (see #748388).
+Section: libs
+Priority: PRI(optional)
+Depends: ${misc:Depends}
+Breaks: gcc-4.6 (<< 4.6.1-8~)
+BUILT_USING`'dnl
+Description: GNU Ada compiler (common files)
+ GNAT is a compiler for the Ada programming language. It produces optimized
+ code on platforms supported by the GNU Compiler Collection (GCC).
+ .
+ This package contains files common to all GNAT related packages.
+')`'dnl gnatbase
+
+ifenabled(`libgcc',`
+Package: libgcc1`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`any')
+Section: ifdef(`TARGET',`devel',`libs')
+Priority: ifdef(`TARGET',`extra',required)
+Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends}
+Provides: ifdef(`TARGET',`libgcc1-TARGET-dcv1',`libgcc1-armel [armel], libgcc1-armhf [armhf]')
+ifdef(`MULTIARCH', `Multi-Arch: same
+Pre-Depends: ${misc:Pre-Depends}
+Breaks: ${multiarch:breaks}
+')`'dnl
+BUILT_USING`'dnl
+Description: GCC support library`'ifdef(`TARGET)',` (TARGET)', `')
+ Shared version of the support library, a library of internal subroutines
+ that GCC uses to overcome shortcomings of particular machines, or
+ special needs for some languages.
+ifdef(`TARGET', `dnl
+ .
+ This package contains files for TARGET architecture, for use in cross-compile
+ environment.
+')`'dnl
+
+Package: libgcc1-dbg`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`any')
+Section: debug
+Priority: extra
+Depends: BASELDEP, libdep(gcc1,,=,${gcc:EpochVersion}), ${misc:Depends}
+ifdef(`TARGET',`',`Provides: libgcc1-dbg-armel [armel], libgcc1-dbg-armhf [armhf]
+')dnl
+ifdef(`MULTIARCH',`Multi-Arch: same
+')dnl
+BUILT_USING`'dnl
+Description: GCC support library (debug symbols)`'ifdef(`TARGET)',` (TARGET)', `')
+ Debug symbols for the GCC support library.
+ifdef(`TARGET', `dnl
+ .
+ This package contains files for TARGET architecture, for use in cross-compile
+ environment.
+')`'dnl
+
+Package: libgcc2`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`m68k')
+Section: ifdef(`TARGET',`devel',`libs')
+Priority: ifdef(`TARGET',`extra',required)
+Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends}
+ifdef(`TARGET',`Provides: libgcc2-TARGET-dcv1
+')`'dnl
+ifdef(`MULTIARCH', `Multi-Arch: same
+Pre-Depends: ${misc:Pre-Depends}
+Breaks: ${multiarch:breaks}
+')`'dnl
+BUILT_USING`'dnl
+Description: GCC support library`'ifdef(`TARGET)',` (TARGET)', `')
+ Shared version of the support library, a library of internal subroutines
+ that GCC uses to overcome shortcomings of particular machines, or
+ special needs for some languages.
+ifdef(`TARGET', `dnl
+ .
+ This package contains files for TARGET architecture, for use in cross-compile
+ environment.
+')`'dnl
+
+Package: libgcc2-dbg`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`m68k')
+Section: debug
+Priority: extra
+Depends: BASELDEP, libdep(gcc2,,=,${gcc:EpochVersion}), ${misc:Depends}
+ifdef(`MULTIARCH', `Multi-Arch: same
+')`'dnl
+BUILT_USING`'dnl
+Description: GCC support library (debug symbols)`'ifdef(`TARGET)',` (TARGET)', `')
+ Debug symbols for the GCC support library.
+ifdef(`TARGET', `dnl
+ .
+ This package contains files for TARGET architecture, for use in cross-compile
+ environment.
+')`'dnl
+')`'dnl libgcc
+
+ifenabled(`cdev',`
+Package: libgcc`'PV-dev`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`any')
+Section: libdevel
+Priority: ifdef(`TARGET',`extra',PRI(optional))
+Recommends: ${dep:libcdev}
+Depends: BASELDEP, ${dep:libgcc}, ${dep:libssp}, ${dep:libgomp}, ${dep:libitm},
+ ${dep:libatomic}, ${dep:libbtrace}, ${dep:libasan}, ${dep:liblsan},
+ ${dep:libtsan}, ${dep:libubsan}, ${dep:libcilkrts}, ${dep:libvtv},
+ ${dep:libmpx},
+ ${dep:libqmath}, ${dep:libunwinddev}, ${shlibs:Depends}, ${misc:Depends}
+ifdef(`MULTIARCH', `Multi-Arch: same
+')`'dnl
+Replaces: gccgo-5 (<< ${gcc:Version})
+BUILT_USING`'dnl
+Description: GCC support library (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 libgcc
+
+Package: libgcc4`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`hppa')
+ifdef(`MULTIARCH', `Multi-Arch: same
+Pre-Depends: ${misc:Pre-Depends}
+Breaks: ${multiarch:breaks}
+')`'dnl
+Section: ifdef(`TARGET',`devel',`libs')
+Priority: ifdef(`TARGET',`extra',required)
+Depends: ifdef(`STANDALONEJAVA',`gcj`'PV-base (>= ${gcj:Version})',`BASELDEP'), ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: GCC support library`'ifdef(`TARGET)',` (TARGET)', `')
+ Shared version of the support library, a library of internal subroutines
+ that GCC uses to overcome shortcomings of particular machines, or
+ special needs for some languages.
+ifdef(`TARGET', `dnl
+ .
+ This package contains files for TARGET architecture, for use in cross-compile
+ environment.
+')`'dnl
+
+Package: libgcc4-dbg`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`hppa')
+ifdef(`MULTIARCH', `Multi-Arch: same
+')`'dnl
+Section: debug
+Priority: extra
+Depends: BASELDEP, libdep(gcc4,,=,${gcc:EpochVersion}), ${misc:Depends}
+BUILT_USING`'dnl
+Description: GCC support library (debug symbols)`'ifdef(`TARGET)',` (TARGET)', `')
+ Debug symbols for the GCC support library.
+ifdef(`TARGET', `dnl
+ .
+ This package contains files for TARGET architecture, for use in cross-compile
+ environment.
+')`'dnl
+
+ifenabled(`lib64gcc',`
+Package: lib64gcc1`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs')
+Section: ifdef(`TARGET',`devel',`libs')
+Priority: ifdef(`TARGET',`extra',PRI(optional))
+Depends: BASELDEP, ${dep:libcbiarch}, ${misc:Depends}
+ifdef(`TARGET',`Provides: lib64gcc1-TARGET-dcv1
+',`')`'dnl
+Conflicts: libdep(gcc`'GCC_SO,,<=,1:3.3-0pre9)
+BUILT_USING`'dnl
+Description: GCC support library`'ifdef(`TARGET)',` (TARGET)', `') (64bit)
+ Shared version of the support library, a library of internal subroutines
+ that GCC uses to overcome shortcomings of particular machines, or
+ special needs for some languages.
+ifdef(`TARGET', `dnl
+ .
+ This package contains files for TARGET architecture, for use in cross-compile
+ environment.
+')`'dnl
+
+Package: lib64gcc1-dbg`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs')
+Section: debug
+Priority: extra
+Depends: BASELDEP, libdep(gcc1,64,=,${gcc:EpochVersion}), ${misc:Depends}
+BUILT_USING`'dnl
+Description: GCC support library (debug symbols)`'ifdef(`TARGET)',` (TARGET)', `')
+ Debug symbols for the GCC support library.
+ifdef(`TARGET', `dnl
+ .
+ This package contains files for TARGET architecture, for use in cross-compile
+ environment.
+')`'dnl
+')`'dnl lib64gcc
+
+ifenabled(`cdev',`
+Package: lib64gcc`'PV-dev`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs')
+Section: libdevel
+Priority: ifdef(`TARGET',`extra',PRI(optional))
+Recommends: ${dep:libcdev}
+Depends: BASELDEP, ${dep:libgccbiarch}, ${dep:libsspbiarch},
+ ${dep:libgompbiarch}, ${dep:libitmbiarch}, ${dep:libatomicbiarch},
+ ${dep:libbtracebiarch}, ${dep:libasanbiarch}, ${dep:liblsanbiarch},
+ ${dep:libtsanbiarch}, ${dep:libubsanbiarch},
+ ${dep:libvtvbiarch}, ${dep:libcilkrtsbiarch}, ${dep:libmpxbiarch},
+ ${dep:libqmathbiarch}, ${shlibs:Depends}, ${misc:Depends}
+Replaces: gccgo-5-multilib (<< ${gcc:Version})
+BUILT_USING`'dnl
+Description: GCC support library (64bit 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 cdev
+
+ifenabled(`lib32gcc',`
+Package: lib32gcc1`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs')
+Section: ifdef(`TARGET',`devel',`libs')
+Priority: ifdef(`TARGET',`extra',PRI(optional))
+Depends: BASELDEP, ${dep:libcbiarch}, ${misc:Depends}
+Conflicts: ${confl:lib32}
+ifdef(`TARGET',`Provides: lib32gcc1-TARGET-dcv1
+',`')`'dnl
+BUILT_USING`'dnl
+Description: GCC support library (32 bit Version)
+ Shared version of the support library, a library of internal subroutines
+ that GCC uses to overcome shortcomings of particular machines, or
+ special needs for some languages.
+ifdef(`TARGET', `dnl
+ .
+ This package contains files for TARGET architecture, for use in cross-compile
+ environment.
+')`'dnl
+
+Package: lib32gcc1-dbg`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs')
+Section: debug
+Priority: extra
+Depends: BASELDEP, libdep(gcc1,32,=,${gcc:EpochVersion}), ${misc:Depends}
+BUILT_USING`'dnl
+Description: GCC support library (debug symbols)`'ifdef(`TARGET)',` (TARGET)', `')
+ Debug symbols for the GCC support library.
+ifdef(`TARGET', `dnl
+ .
+ This package contains files for TARGET architecture, for use in cross-compile
+ environment.
+')`'dnl
+')`'dnl lib32gcc1
+
+ifenabled(`cdev',`
+Package: lib32gcc`'PV-dev`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs')
+Section: libdevel
+Priority: ifdef(`TARGET',`extra',PRI(optional))
+Recommends: ${dep:libcdev}
+Depends: BASELDEP, ${dep:libgccbiarch}, ${dep:libsspbiarch},
+ ${dep:libgompbiarch}, ${dep:libitmbiarch}, ${dep:libatomicbiarch},
+ ${dep:libbtracebiarch}, ${dep:libasanbiarch}, ${dep:liblsanbiarch},
+ ${dep:libtsanbiarch}, ${dep:libubsanbiarch},
+ ${dep:libvtvbiarch}, ${dep:libcilkrtsbiarch}, ${dep:libmpxbiarch},
+ ${dep:libqmathbiarch}, ${shlibs:Depends}, ${misc:Depends}
+Replaces: gccgo-5-multilib (<< ${gcc:Version})
+BUILT_USING`'dnl
+Description: GCC support library (32 bit 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 cdev
+
+ifenabled(`libneongcc',`
+Package: libgcc1-neon`'LS
+Architecture: NEON_ARCHS
+Section: libs
+Priority: extra
+Depends: BASELDEP, libc6-neon`'LS, ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: GCC support library [neon optimized]
+ Shared version of the support library, a library of internal subroutines
+ that GCC uses to overcome shortcomings of particular machines, or
+ special needs for some languages.
+ .
+ This set of libraries is optimized to use a NEON coprocessor, and will
+ be selected instead when running under systems which have one.
+')`'dnl libneongcc1
+
+ifenabled(`libhfgcc',`
+Package: libhfgcc1`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs')
+Section: ifdef(`TARGET',`devel',`libs')
+Priority: ifdef(`TARGET',`extra',PRI(optional))
+Depends: BASELDEP, ${dep:libcbiarch}, ${misc:Depends}
+ifdef(`TARGET',`Provides: libhfgcc1-TARGET-dcv1
+',`Conflicts: libgcc1-armhf [biarchhf_archs]
+')`'dnl
+BUILT_USING`'dnl
+Description: GCC support library`'ifdef(`TARGET)',` (TARGET)', `') (hard float ABI)
+ Shared version of the support library, a library of internal subroutines
+ that GCC uses to overcome shortcomings of particular machines, or
+ special needs for some languages.
+ifdef(`TARGET', `dnl
+ .
+ This package contains files for TARGET architecture, for use in cross-compile
+ environment.
+')`'dnl
+
+Package: libhfgcc1-dbg`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs')
+Section: debug
+Priority: extra
+Depends: BASELDEP, libdep(gcc1,hf,=,${gcc:EpochVersion}), ${misc:Depends}
+ifdef(`TARGET',`dnl',`Conflicts: libgcc1-dbg-armhf [biarchhf_archs]')
+BUILT_USING`'dnl
+Description: GCC support library (debug symbols)`'ifdef(`TARGET)',` (TARGET)', `')
+ Debug symbols for the GCC support library.
+ifdef(`TARGET', `dnl
+ .
+ This package contains files for TARGET architecture, for use in cross-compile
+ environment.
+')`'dnl
+')`'dnl libhfgcc
+
+ifenabled(`cdev',`
+ifenabled(`armml',`
+Package: libhfgcc`'PV-dev`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs')
+Section: libdevel
+Priority: ifdef(`TARGET',`extra',PRI(optional))
+Recommends: ${dep:libcdev}
+Depends: BASELDEP, ${dep:libgccbiarch}, ${dep:libsspbiarch},
+ ${dep:libgompbiarch}, ${dep:libitmbiarch}, ${dep:libatomicbiarch},
+ ${dep:libbtracebiarch}, ${dep:libasanbiarch}, ${dep:liblsanbiarch},
+ ${dep:libtsanbiarch}, ${dep:libubsanbiarch},
+ ${dep:libvtvbiarch}, ${dep:libcilkrtsbiarch}, ${dep:libmpxbiarch},
+ ${dep:libqmathbiarch}, ${shlibs:Depends}, ${misc:Depends}
+Replaces: gccgo-5-multilib (<< ${gcc:Version})
+BUILT_USING`'dnl
+Description: GCC support library (hard float ABI 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 armml
+')`'dnl cdev
+
+ifenabled(`libsfgcc',`
+Package: libsfgcc1`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs')
+Section: ifdef(`TARGET',`devel',`libs')
+Priority: ifdef(`TARGET',`extra',PRI(optional))
+Depends: BASELDEP, ${dep:libcbiarch}, ${misc:Depends}
+ifdef(`TARGET',`Provides: libsfgcc1-TARGET-dcv1
+',`Conflicts: libgcc1-armel [biarchsf_archs]
+')`'dnl
+BUILT_USING`'dnl
+Description: GCC support library`'ifdef(`TARGET)',` (TARGET)', `') (soft float ABI)
+ Shared version of the support library, a library of internal subroutines
+ that GCC uses to overcome shortcomings of particular machines, or
+ special needs for some languages.
+ifdef(`TARGET', `dnl
+ .
+ This package contains files for TARGET architecture, for use in cross-compile
+ environment.
+')`'dnl
+
+Package: libsfgcc1-dbg`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs')
+Section: debug
+Priority: extra
+Depends: BASELDEP, libdep(gcc1,sf,=,${gcc:EpochVersion}), ${misc:Depends}
+ifdef(`TARGET',`dnl',`Conflicts: libgcc1-dbg-armel [biarchsf_archs]')
+BUILT_USING`'dnl
+Description: GCC support library (debug symbols)`'ifdef(`TARGET)',` (TARGET)', `')
+ Debug symbols for the GCC support library.
+ifdef(`TARGET', `dnl
+ .
+ This package contains files for TARGET architecture, for use in cross-compile
+ environment.
+')`'dnl
+')`'dnl libsfgcc
+
+ifenabled(`cdev',`
+ifenabled(`armml',`
+Package: libsfgcc`'PV-dev`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs')
+Section: libdevel
+Priority: ifdef(`TARGET',`extra',PRI(optional))
+Recommends: ${dep:libcdev}
+Depends: BASELDEP, ${dep:libgccbiarch}, ${dep:libsspbiarch},
+ ${dep:libgompbiarch}, ${dep:libitmbiarch}, ${dep:libatomicbiarch},
+ ${dep:libbtracebiarch}, ${dep:libasanbiarch}, ${dep:liblsanbiarch},
+ ${dep:libtsanbiarch}, ${dep:libubsanbiarch},
+ ${dep:libvtvbiarch}, ${dep:libcilkrtsbiarch}, ${dep:libmpxbiarch},
+ ${dep:libqmathbiarch}, ${shlibs:Depends}, ${misc:Depends}
+Replaces: gccgo-5-multilib (<< ${gcc:Version})
+BUILT_USING`'dnl
+Description: GCC support library (soft float ABI 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 armml
+')`'dnl cdev
+
+ifenabled(`libn32gcc',`
+Package: libn32gcc1`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs')
+Section: ifdef(`TARGET',`devel',`libs')
+Priority: ifdef(`TARGET',`extra',PRI(optional))
+Depends: BASELDEP, ${dep:libcbiarch}, ${misc:Depends}
+Conflicts: libdep(gcc`'GCC_SO,,<=,1:3.3-0pre9)
+ifdef(`TARGET',`Provides: libn32gcc1-TARGET-dcv1
+',`')`'dnl
+BUILT_USING`'dnl
+Description: GCC support library`'ifdef(`TARGET)',` (TARGET)', `') (n32)
+ Shared version of the support library, a library of internal subroutines
+ that GCC uses to overcome shortcomings of particular machines, or
+ special needs for some languages.
+ifdef(`TARGET', `dnl
+ .
+ This package contains files for TARGET architecture, for use in cross-compile
+ environment.
+')`'dnl
+
+Package: libn32gcc1-dbg`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs')
+Section: debug
+Priority: extra
+Depends: BASELDEP, libdep(gcc1,n32,=,${gcc:EpochVersion}), ${misc:Depends}
+BUILT_USING`'dnl
+Description: GCC support library (debug symbols)`'ifdef(`TARGET)',` (TARGET)', `')
+ Debug symbols for the GCC support library.
+ifdef(`TARGET', `dnl
+ .
+ This package contains files for TARGET architecture, for use in cross-compile
+ environment.
+')`'dnl
+')`'dnl libn32gcc
+
+ifenabled(`cdev',`
+Package: libn32gcc`'PV-dev`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs')
+Section: libdevel
+Priority: ifdef(`TARGET',`extra',PRI(optional))
+Recommends: ${dep:libcdev}
+Depends: BASELDEP, ${dep:libgccbiarch}, ${dep:libsspbiarch},
+ ${dep:libgompbiarch}, ${dep:libitmbiarch}, ${dep:libatomicbiarch},
+ ${dep:libbtracebiarch}, ${dep:libasanbiarch}, ${dep:liblsanbiarch},
+ ${dep:libtsanbiarch}, ${dep:libubsanbiarch},
+ ${dep:libvtvbiarch}, ${dep:libcilkrtsbiarch}, ${dep:libmpxbiarch},
+ ${dep:libqmathbiarch}, ${shlibs:Depends}, ${misc:Depends}
+Replaces: gccgo-5-multilib (<< ${gcc:Version})
+BUILT_USING`'dnl
+Description: GCC support library (n32 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 cdev
+
+ifenabled(`libx32gcc',`
+Package: libx32gcc1`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs')
+Section: ifdef(`TARGET',`devel',`libs')
+Priority: ifdef(`TARGET',`extra',PRI(optional))
+Depends: BASELDEP, ${dep:libcbiarch}, ${misc:Depends}
+ifdef(`TARGET',`Provides: libx32gcc1-TARGET-dcv1
+',`')`'dnl
+BUILT_USING`'dnl
+Description: GCC support library`'ifdef(`TARGET)',` (TARGET)', `') (x32)
+ Shared version of the support library, a library of internal subroutines
+ that GCC uses to overcome shortcomings of particular machines, or
+ special needs for some languages.
+ifdef(`TARGET', `dnl
+ .
+ This package contains files for TARGET architecture, for use in cross-compile
+ environment.
+')`'dnl
+
+Package: libx32gcc1-dbg`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs')
+Section: debug
+Priority: extra
+Depends: BASELDEP, libdep(gcc1,x32,=,${gcc:EpochVersion}), ${misc:Depends}
+BUILT_USING`'dnl
+Description: GCC support library (debug symbols)`'ifdef(`TARGET)',` (TARGET)', `')
+ Debug symbols for the GCC support library.
+ifdef(`TARGET', `dnl
+ .
+ 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
+Priority: ifdef(`TARGET',`extra',PRI(optional))
+Recommends: ${dep:libcdev}
+Depends: BASELDEP, ${dep:libgccbiarch}, ${dep:libsspbiarch},
+ ${dep:libgompbiarch}, ${dep:libitmbiarch}, ${dep:libatomicbiarch},
+ ${dep:libbtracebiarch}, ${dep:libasanbiarch}, ${dep:liblsanbiarch},
+ ${dep:libtsanbiarch}, ${dep:libubsanbiarch},
+ ${dep:libvtvbiarch}, ${dep:libcilkrtsbiarch}, ${dep:libmpxbiarch},
+ ${dep:libqmathbiarch}, ${shlibs:Depends}, ${misc:Depends}
+Replaces: gccgo-5-multilib (<< ${gcc:Version})
+BUILT_USING`'dnl
+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
+
+ifdef(`TARGET', `', `
+ifenabled(`libgmath',`
+Package: libgccmath`'GCCMATH_SO`'LS
+Architecture: i386
+ifdef(`MULTIARCH', `Multi-Arch: same
+Pre-Depends: ${misc:Pre-Depends}
+')`'dnl
+Section: libs
+Priority: PRI(optional)
+Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: GCC math support library
+ Support library for GCC.
+
+Package: lib32gccmath`'GCCMATH_SO`'LS
+Architecture: amd64
+Section: libs
+Priority: PRI(optional)
+Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: GCC math support library (32bit)
+ Support library for GCC.
+
+Package: lib64gccmath`'GCCMATH_SO`'LS
+Architecture: i386
+Section: libs
+Priority: PRI(optional)
+Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: GCC math support library (64bit)
+ Support library for GCC.
+')`'dnl
+')`'dnl native
+
+ifenabled(`cdev',`
+Package: gcc`'PV`'TS
+Architecture: any
+Section: devel
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: cpp`'PV`'TS (= ${gcc:Version}),ifenabled(`gccbase',` BASEDEP,')
+  ifenabled(`gccxbase',` BASEDEP,')
+  ${dep:libcc1},
+  binutils`'TS (>= ${binutils:Version}),
+  ${dep:libgccdev}, ${shlibs:Depends}, ${misc:Depends}
+Recommends: ${dep:libcdev}
+Replaces: gccgo-5 (<< ${gcc:Version}), gcc`'PV-plugin-dev`'TS (<< 5-20150321-1),
+  gcc-5-base (<< 5-20150329-1)
+Suggests: ${gcc:multilib}, 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(lsan`'LSAN_SO-dbg,),
+ libdbgdep(tsan`'TSAN_SO-dbg,),
+ libdbgdep(ubsan`'UBSAN_SO-dbg,),
+ifenabled(`libvtv',`',`
+ libdbgdep(vtv`'VTV_SO-dbg,),
+')`'dnl
+ libdbgdep(cilkrts`'CILKRTS_SO-dbg,),
+ libdbgdep(mpx`'MPX_SO-dbg,),
+ libdbgdep(quadmath`'QMATH_SO-dbg,)
+Provides: c-compiler`'TS
+ifdef(`TARGET',`Conflicts: gcc-multilib
+')`'dnl
+BUILT_USING`'dnl
+Description: GNU C compiler`'ifdef(`TARGET)',` (cross compiler for TARGET architecture)', `')
+ This is the GNU C compiler, a fairly portable optimizing compiler for C.
+ifdef(`TARGET', `dnl
+ .
+ This package contains C cross-compiler for TARGET architecture.
+')`'dnl
+
+ifenabled(`multilib',`
+Package: gcc`'PV-multilib`'TS
+Architecture: ifdef(`TARGET',`any',MULTILIB_ARCHS)
+Section: devel
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASEDEP, gcc`'PV`'TS (= ${gcc:Version}), ${dep:libcbiarchdev}, ${dep:libgccbiarchdev}, ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: GNU C compiler (multilib support)`'ifdef(`TARGET)',` (cross compiler for TARGET architecture)', `')
+ This is the GNU C compiler, a fairly portable optimizing compiler for C.
+ .
+ This is a dependency package, depending on development packages
+ for the non-default multilib architecture(s).
+')`'dnl multilib
+
+ifenabled(`testresults',`
+Package: gcc`'PV-test-results
+Architecture: any
+Section: devel
+Priority: extra
+Depends: BASEDEP, ${misc:Depends}
+Replaces: g++-5 (<< 5.2.1-28)
+BUILT_USING`'dnl
+Description: Test results for the GCC test suite
+ This package contains the test results for running the GCC test suite
+ for a post build analysis.
+')`'dnl testresults
+
+ifenabled(`plugindev',`
+Package: gcc`'PV-plugin-dev`'TS
+Architecture: any
+Section: devel
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASEDEP, gcc`'PV`'TS (= ${gcc:Version}), GMP_BUILD_DEP MPC_BUILD_DEP ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: Files for GNU GCC plugin development.
+ This package contains (header) files for GNU GCC plugin development. It
+ is only used for the development of GCC plugins, but not needed to run
+ plugins.
+')`'dnl plugindev
+')`'dnl cdev
+
+ifenabled(`cdev',`
+Package: gcc`'PV-hppa64-linux-gnu
+Architecture: ifdef(`TARGET',`any',hppa amd64 i386 x32)
+Section: devel
+Priority: PRI(optional)
+Depends: BASEDEP, ${shlibs:Depends}, ${misc:Depends}, binutils-hppa64-linux-gnu | binutils-hppa64
+Replaces: gcc-5-hppa64 (<< 5.2.1-22)
+Provides: gcc-5-hppa64
+Conflicts: gcc-3.3-hppa64 (<= 1:3.3.4-5), gcc-3.4-hppa64 (<= 3.4.1-3), gcc-4.7-hppa64 (<< 4.7.3-13), gcc-4.8-hppa64 (<< 4.8.2-22), gcc-4.9-hppa64 (<< 4.9.3-1)
+BUILT_USING`'dnl
+Description: GNU C compiler (cross compiler for hppa64)
+ This is the GNU C compiler, a fairly portable optimizing compiler for C.
+')`'dnl cdev
+
+ifenabled(`cdev',`
+Package: cpp`'PV`'TS
+Architecture: any
+Section: ifdef(`TARGET',`devel',`interpreters')
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASEDEP, ${shlibs:Depends}, ${misc:Depends}
+Suggests: gcc`'PV-locales (>= ${gcc:SoftVersion})
+Replaces: gccgo-5 (<< ${gcc:Version})
+BUILT_USING`'dnl
+Description: GNU C preprocessor
+ A macro processor that is used automatically by the GNU C compiler
+ to transform programs before actual compilation.
+ .
+ This package has been separated from gcc for the benefit of those who
+ require the preprocessor but not the compiler.
+ifdef(`TARGET', `dnl
+ .
+ This package contains preprocessor configured for TARGET architecture.
+')`'dnl
+
+ifdef(`TARGET', `', `
+ifenabled(`gfdldoc',`
+Package: cpp`'PV-doc
+Architecture: all
+Section: doc
+Priority: PRI(optional)
+Depends: gcc`'PV-base (>= ${gcc:SoftVersion}), dpkg (>= 1.15.4) | install-info, ${misc:Depends}
+Description: Documentation for the GNU C preprocessor (cpp)
+ Documentation for the GNU C preprocessor in info `format'.
+')`'dnl gfdldoc
+')`'dnl native
+
+ifdef(`TARGET', `', `
+Package: gcc`'PV-locales
+Architecture: all
+Section: devel
+Priority: PRI(optional)
+Depends: SOFTBASEDEP, cpp`'PV (>= ${gcc:SoftVersion}), ${misc:Depends}
+Recommends: gcc`'PV (>= ${gcc:SoftVersion})
+Description: GCC, the GNU compiler collection (native language support files)
+ Native language support for GCC. Lets GCC speak your language,
+ if translations are available.
+ .
+ Please do NOT submit bug reports in other languages than "C".
+ Always reset your language settings to use the "C" locales.
+')`'dnl native
+')`'dnl cdev
+
+ifenabled(`c++',`
+ifenabled(`c++dev',`
+Package: g++`'PV`'TS
+Architecture: any
+Section: devel
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASEDEP, gcc`'PV`'TS (= ${gcc:Version}), libidevdep(stdc++`'PV-dev,,=), ${shlibs:Depends}, ${misc:Depends}
+Provides: c++-compiler`'TS`'ifdef(`TARGET)',`',`, c++abi2-dev')
+Suggests: ${gxx:multilib}, gcc`'PV-doc (>= ${gcc:SoftVersion}), libdbgdep(stdc++CXX_SO`'PV-dbg,)
+BUILT_USING`'dnl
+Description: GNU C++ compiler`'ifdef(`TARGET)',` (cross compiler for TARGET architecture)', `')
+ This is the GNU C++ compiler, a fairly portable optimizing compiler for C++.
+ifdef(`TARGET', `dnl
+ .
+ This package contains C++ cross-compiler for TARGET architecture.
+')`'dnl
+
+ifenabled(`multilib',`
+Package: g++`'PV-multilib`'TS
+Architecture: ifdef(`TARGET',`any',MULTILIB_ARCHS)
+Section: devel
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASEDEP, g++`'PV`'TS (= ${gcc:Version}), gcc`'PV-multilib`'TS (= ${gcc:Version}), ${dep:libcxxbiarchdev}, ${shlibs:Depends}, ${misc:Depends}
+Suggests: ${dep:libcxxbiarchdbg}
+BUILT_USING`'dnl
+Description: GNU C++ compiler (multilib support)`'ifdef(`TARGET)',` (cross compiler for TARGET architecture)', `')
+ This is the GNU C++ compiler, a fairly portable optimizing compiler for C++.
+ .
+ This is a dependency package, depending on development packages
+ for the non-default multilib architecture(s).
+')`'dnl multilib
+')`'dnl c++dev
+')`'dnl c++
+
+ifdef(`TARGET', `', `
+ifenabled(`ssp',`
+Package: libssp`'SSP_SO`'LS
+Architecture: any
+ifdef(`MULTIARCH', `Multi-Arch: same
+Pre-Depends: ${misc:Pre-Depends}
+')`'dnl
+Section: libs
+Priority: PRI(optional)
+Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: GCC stack smashing protection library
+ GCC can now emit code for protecting applications from stack-smashing attacks.
+ The protection is realized by buffer overflow detection and reordering of
+ stack variables to avoid pointer corruption.
+
+Package: lib32ssp`'SSP_SO`'LS
+Architecture: biarch32_archs
+Section: libs
+Priority: PRI(optional)
+Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+Replaces: libssp0 (<< 4.1)
+Conflicts: ${confl:lib32}
+BUILT_USING`'dnl
+Description: GCC stack smashing protection library (32bit)
+ GCC can now emit code for protecting applications from stack-smashing attacks.
+ The protection is realized by buffer overflow detection and reordering of
+ stack variables to avoid pointer corruption.
+
+Package: lib64ssp`'SSP_SO`'LS
+Architecture: biarch64_archs
+Section: libs
+Priority: PRI(optional)
+Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+Replaces: libssp0 (<< 4.1)
+BUILT_USING`'dnl
+Description: GCC stack smashing protection library (64bit)
+ GCC can now emit code for protecting applications from stack-smashing attacks.
+ The protection is realized by buffer overflow detection and reordering of
+ stack variables to avoid pointer corruption.
+
+Package: libn32ssp`'SSP_SO`'LS
+Architecture: biarchn32_archs
+Section: libs
+Priority: PRI(optional)
+Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+Replaces: libssp0 (<< 4.1)
+BUILT_USING`'dnl
+Description: GCC stack smashing protection library (n32)
+ GCC can now emit code for protecting applications from stack-smashing attacks.
+ The protection is realized by buffer overflow detection and reordering of
+ stack variables to avoid pointer corruption.
+
+Package: libx32ssp`'SSP_SO`'LS
+Architecture: biarchx32_archs
+Section: libs
+Priority: PRI(optional)
+Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+Replaces: libssp0 (<< 4.1)
+BUILT_USING`'dnl
+Description: GCC stack smashing protection library (x32)
+ GCC can now emit code for protecting applications from stack-smashing attacks.
+ The protection is realized by buffer overflow detection and reordering of
+ stack variables to avoid pointer corruption.
+
+Package: libhfssp`'SSP_SO`'LS
+Architecture: biarchhf_archs
+Section: libs
+Priority: PRI(optional)
+Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: GCC stack smashing protection library (hard float ABI)
+ GCC can now emit code for protecting applications from stack-smashing attacks.
+ The protection is realized by buffer overflow detection and reordering of
+ stack variables to avoid pointer corruption.
+
+Package: libsfssp`'SSP_SO`'LS
+Architecture: biarchsf_archs
+Section: libs
+Priority: PRI(optional)
+Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: GCC stack smashing protection library (soft float ABI)
+ GCC can now emit code for protecting applications from stack-smashing attacks.
+ The protection is realized by buffer overflow detection and reordering of
+ stack variables to avoid pointer corruption.
+')`'dnl
+')`'dnl native
+
+ifenabled(`libgomp',`
+Package: libgomp`'GOMP_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`any')
+ifdef(`TARGET',`',`Provides: libgomp'GOMP_SO`-armel [armel], libgomp'GOMP_SO`-armhf [armhf]
+')`'dnl
+ifdef(`MULTIARCH', `Multi-Arch: same
+Pre-Depends: ${misc:Pre-Depends}
+Breaks: ${multiarch:breaks}
+')`'dnl
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: GCC OpenMP (GOMP) support library
+ GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers
+ in the GNU Compiler Collection.
+
+Package: libgomp`'GOMP_SO-dbg`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`any')
+Section: debug
+Priority: extra
+Depends: BASELDEP, libdep(gomp`'GOMP_SO,,=), ${misc:Depends}
+ifdef(`TARGET',`',`Provides: libgomp'GOMP_SO`-dbg-armel [armel], libgomp'GOMP_SO`-dbg-armhf [armhf]
+')`'dnl
+ifdef(`MULTIARCH', `Multi-Arch: same
+')`'dnl
+BUILT_USING`'dnl
+Description: GCC OpenMP (GOMP) support library (debug symbols)
+ GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers
+ in the GNU Compiler Collection.
+
+Package: lib32gomp`'GOMP_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs')
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+Conflicts: ${confl:lib32}
+BUILT_USING`'dnl
+Description: GCC OpenMP (GOMP) support library (32bit)
+ GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers
+ in the GNU Compiler Collection.
+
+Package: lib32gomp`'GOMP_SO-dbg`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs')
+Section: debug
+Priority: extra
+Depends: BASELDEP, libdep(gomp`'GOMP_SO,32,=), ${misc:Depends}
+BUILT_USING`'dnl
+Description: GCC OpenMP (GOMP) support library (32 bit debug symbols)
+ GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers
+ in the GNU Compiler Collection.
+
+Package: lib64gomp`'GOMP_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs')
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: GCC OpenMP (GOMP) support library (64bit)
+ GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers
+ in the GNU Compiler Collection.
+
+Package: lib64gomp`'GOMP_SO-dbg`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs')
+Section: debug
+Priority: extra
+Depends: BASELDEP, libdep(gomp`'GOMP_SO,64,=), ${misc:Depends}
+BUILT_USING`'dnl
+Description: GCC OpenMP (GOMP) support library (64bit debug symbols)
+ GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers
+ in the GNU Compiler Collection.
+
+Package: libn32gomp`'GOMP_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs')
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: GCC OpenMP (GOMP) support library (n32)
+ GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers
+ in the GNU Compiler Collection.
+
+Package: libn32gomp`'GOMP_SO-dbg`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs')
+Section: debug
+Priority: extra
+Depends: BASELDEP, libdep(gomp`'GOMP_SO,n32,=), ${misc:Depends}
+BUILT_USING`'dnl
+Description: GCC OpenMP (GOMP) support library (n32 debug symbols)
+ GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers
+
+ifenabled(`libx32gomp',`
+Package: libx32gomp`'GOMP_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs')
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: GCC OpenMP (GOMP) support library (x32)
+ GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers
+ in the GNU Compiler Collection.
+
+Package: libx32gomp`'GOMP_SO-dbg`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs')
+Section: debug
+Priority: extra
+Depends: BASELDEP, libdep(gomp`'GOMP_SO,x32,=), ${misc:Depends}
+BUILT_USING`'dnl
+Description: GCC OpenMP (GOMP) support library (x32 debug symbols)
+ GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers
+')`'dnl libx32gomp
+
+ifenabled(`libhfgomp',`
+Package: libhfgomp`'GOMP_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs')
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+ifdef(`TARGET',`dnl',`Conflicts: libgomp'GOMP_SO`-armhf [biarchhf_archs]')
+BUILT_USING`'dnl
+Description: GCC OpenMP (GOMP) support library (hard float ABI)
+ GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers
+ in the GNU Compiler Collection.
+
+Package: libhfgomp`'GOMP_SO-dbg`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs')
+Section: debug
+Priority: extra
+Depends: BASELDEP, libdep(gomp`'GOMP_SO,hf,=), ${misc:Depends}
+ifdef(`TARGET',`dnl',`Conflicts: libgomp'GOMP_SO`-dbg-armhf [biarchhf_archs]')
+BUILT_USING`'dnl
+Description: GCC OpenMP (GOMP) support library (hard float ABI debug symbols)
+ GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers
+')`'dnl libhfgomp
+
+ifenabled(`libsfgomp',`
+Package: libsfgomp`'GOMP_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs')
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+ifdef(`TARGET',`dnl',`Conflicts: libgomp'GOMP_SO`-armel [biarchsf_archs]')
+BUILT_USING`'dnl
+Description: GCC OpenMP (GOMP) support library (soft float ABI)
+ GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers
+ in the GNU Compiler Collection.
+
+Package: libsfgomp`'GOMP_SO-dbg`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs')
+Section: debug
+Priority: extra
+Depends: BASELDEP, libdep(gomp`'GOMP_SO,sf,=), ${misc:Depends}
+ifdef(`TARGET',`dnl',`Conflicts: libgomp'GOMP_SO`-dbg-armel [biarchsf_archs]')
+BUILT_USING`'dnl
+Description: GCC OpenMP (GOMP) support library (soft float ABI debug symbols)
+ GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers
+')`'dnl libsfgomp
+
+ifenabled(`libneongomp',`
+Package: libgomp`'GOMP_SO-neon`'LS
+Architecture: NEON_ARCHS
+Section: libs
+Priority: extra
+Depends: BASELDEP, libc6-neon`'LS, ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: GCC OpenMP (GOMP) support library [neon optimized]
+ GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers
+ in the GNU Compiler Collection.
+ .
+ This set of libraries is optimized to use a NEON coprocessor, and will
+ be selected instead when running under systems which have one.
+')`'dnl libneongomp
+')`'dnl libgomp
+
+ifenabled(`libitm',`
+Package: libitm`'ITM_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`any')
+ifdef(`TARGET',`',`Provides: libitm'ITM_SO`-armel [armel], libitm'ITM_SO`-armhf [armhf]
+')`'dnl
+ifdef(`MULTIARCH', `Multi-Arch: same
+Pre-Depends: ${misc:Pre-Depends}
+')`'dnl
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: GNU Transactional Memory Library
+ GNU Transactional Memory Library (libitm) provides transaction support for
+ accesses to the memory of a process, enabling easy-to-use synchronization of
+ accesses to shared memory by several threads.
+
+Package: libitm`'ITM_SO-dbg`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`any')
+Section: debug
+Priority: extra
+Depends: BASELDEP, libdep(itm`'ITM_SO,,=), ${misc:Depends}
+ifdef(`TARGET',`',`Provides: libitm'ITM_SO`-dbg-armel [armel], libitm'ITM_SO`-dbg-armhf [armhf]
+')`'dnl
+ifdef(`MULTIARCH', `Multi-Arch: same
+')`'dnl
+BUILT_USING`'dnl
+Description: GNU Transactional Memory Library (debug symbols)
+ GNU Transactional Memory Library (libitm) provides transaction support for
+ accesses to the memory of a process, enabling easy-to-use synchronization of
+ accesses to shared memory by several threads.
+
+Package: lib32itm`'ITM_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs')
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+Conflicts: ${confl:lib32}
+BUILT_USING`'dnl
+Description: GNU Transactional Memory Library (32bit)
+ GNU Transactional Memory Library (libitm) provides transaction support for
+ accesses to the memory of a process, enabling easy-to-use synchronization of
+ accesses to shared memory by several threads.
+
+Package: lib32itm`'ITM_SO-dbg`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs')
+Section: debug
+Priority: extra
+Depends: BASELDEP, libdep(itm`'ITM_SO,32,=), ${misc:Depends}
+BUILT_USING`'dnl
+Description: GNU Transactional Memory Library (32 bit debug symbols)
+ GNU Transactional Memory Library (libitm) provides transaction support for
+ accesses to the memory of a process, enabling easy-to-use synchronization of
+ accesses to shared memory by several threads.
+
+Package: lib64itm`'ITM_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs')
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: GNU Transactional Memory Library (64bit)
+ GNU Transactional Memory Library (libitm) provides transaction support for
+ accesses to the memory of a process, enabling easy-to-use synchronization of
+ accesses to shared memory by several threads.
+
+Package: lib64itm`'ITM_SO-dbg`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs')
+Section: debug
+Priority: extra
+Depends: BASELDEP, libdep(itm`'ITM_SO,64,=), ${misc:Depends}
+BUILT_USING`'dnl
+Description: GNU Transactional Memory Library (64bit debug symbols)
+ GNU Transactional Memory Library (libitm) provides transaction support for
+ accesses to the memory of a process, enabling easy-to-use synchronization of
+ accesses to shared memory by several threads.
+
+#Package: libn32itm`'ITM_SO`'LS
+#Section: ifdef(`TARGET',`devel',`libs')
+#Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs')
+#Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+#Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+#BUILT_USING`'dnl
+#Description: GNU Transactional Memory Library (n32)
+# GNU Transactional Memory Library (libitm) provides transaction support for
+# accesses to the memory of a process, enabling easy-to-use synchronization of
+# accesses to shared memory by several threads.
+
+#Package: libn32itm`'ITM_SO-dbg`'LS
+#Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs')
+#Section: debug
+#Priority: extra
+#Depends: BASELDEP, libdep(itm`'ITM_SO,n32,=), ${misc:Depends}
+#BUILT_USING`'dnl
+#Description: GNU Transactional Memory Library (n32 debug symbols)
+# GNU Transactional Memory Library (libitm) provides transaction support for
+# accesses to the memory of a process, enabling easy-to-use synchronization of
+# accesses to shared memory by several threads.
+
+ifenabled(`libx32itm',`
+Package: libx32itm`'ITM_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs')
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: GNU Transactional Memory Library (x32)
+ This manual documents the usage and internals of libitm. It provides
+ transaction support for accesses to the memory of a process, enabling
+ easy-to-use synchronization of accesses to shared memory by several threads.
+
+Package: libx32itm`'ITM_SO-dbg`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs')
+Section: debug
+Priority: extra
+Depends: BASELDEP, libdep(itm`'ITM_SO,x32,=), ${misc:Depends}
+BUILT_USING`'dnl
+Description: GNU Transactional Memory Library (x32 debug symbols)
+ This manual documents the usage and internals of libitm. It provides
+ transaction support for accesses to the memory of a process, enabling
+ easy-to-use synchronization of accesses to shared memory by several threads.
+')`'dnl libx32itm
+
+ifenabled(`libhfitm',`
+Package: libhfitm`'ITM_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs')
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+ifdef(`TARGET',`dnl',`Conflicts: libitm'ITM_SO`-armhf [biarchhf_archs]')
+BUILT_USING`'dnl
+Description: GNU Transactional Memory Library (hard float ABI)
+ GNU Transactional Memory Library (libitm) provides transaction support for
+ accesses to the memory of a process, enabling easy-to-use synchronization of
+ accesses to shared memory by several threads.
+
+Package: libhfitm`'ITM_SO-dbg`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs')
+Section: debug
+Priority: extra
+Depends: BASELDEP, libdep(itm`'ITM_SO,hf,=), ${misc:Depends}
+ifdef(`TARGET',`dnl',`Conflicts: libitm'ITM_SO`-armel [biarchsf_archs]')
+BUILT_USING`'dnl
+Description: GNU Transactional Memory Library (hard float ABI debug symbols)
+ GNU Transactional Memory Library (libitm) provides transaction support for
+ accesses to the memory of a process, enabling easy-to-use synchronization of
+ accesses to shared memory by several threads.
+')`'dnl libhfitm
+
+ifenabled(`libsfitm',`
+Package: libsfitm`'ITM_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs')
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: GNU Transactional Memory Library (soft float ABI)
+ GNU Transactional Memory Library (libitm) provides transaction support for
+ accesses to the memory of a process, enabling easy-to-use synchronization of
+ accesses to shared memory by several threads.
+
+Package: libsfitm`'ITM_SO-dbg`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs')
+Section: debug
+Priority: extra
+Depends: BASELDEP, libdep(itm`'ITM_SO,sf,=), ${misc:Depends}
+BUILT_USING`'dnl
+Description: GNU Transactional Memory Library (soft float ABI debug symbols)
+ GNU Transactional Memory Library (libitm) provides transaction support for
+ accesses to the memory of a process, enabling easy-to-use synchronization of
+ accesses to shared memory by several threads.
+')`'dnl libsfitm
+
+ifenabled(`libneonitm',`
+Package: libitm`'ITM_SO-neon`'LS
+Architecture: NEON_ARCHS
+Section: libs
+Priority: extra
+Depends: BASELDEP, libc6-neon`'LS, ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: GNU Transactional Memory Library [neon optimized]
+ GNU Transactional Memory Library (libitm) provides transaction support for
+ accesses to the memory of a process, enabling easy-to-use synchronization of
+ accesses to shared memory by several threads.
+ .
+ This set of libraries is optimized to use a NEON coprocessor, and will
+ be selected instead when running under systems which have one.
+')`'dnl libneonitm
+')`'dnl libitm
+
+ifenabled(`libatomic',`
+Package: libatomic`'ATOMIC_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`any')
+ifdef(`TARGET',`',`Provides: libatomic'ATOMIC_SO`-armel [armel], libatomic'ATOMIC_SO`-armhf [armhf]
+')`'dnl
+ifdef(`MULTIARCH', `Multi-Arch: same
+Pre-Depends: ${misc:Pre-Depends}
+')`'dnl
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: support library providing __atomic built-in functions
+ library providing __atomic built-in functions. When an atomic call cannot
+ be turned into lock-free instructions, GCC will make calls into this library.
+
+Package: libatomic`'ATOMIC_SO-dbg`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`any')
+Section: debug
+Priority: extra
+Depends: BASELDEP, libdep(atomic`'ATOMIC_SO,,=), ${misc:Depends}
+ifdef(`TARGET',`',`Provides: libatomic'ATOMIC_SO`-dbg-armel [armel], libatomic'ATOMIC_SO`-dbg-armhf [armhf]
+')`'dnl
+ifdef(`MULTIARCH', `Multi-Arch: same
+')`'dnl
+BUILT_USING`'dnl
+Description: support library providing __atomic built-in functions (debug symbols)
+ library providing __atomic built-in functions. When an atomic call cannot
+ be turned into lock-free instructions, GCC will make calls into this library.
+
+Package: lib32atomic`'ATOMIC_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs')
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+Conflicts: ${confl:lib32}
+BUILT_USING`'dnl
+Description: support library providing __atomic built-in functions (32bit)
+ library providing __atomic built-in functions. When an atomic call cannot
+ be turned into lock-free instructions, GCC will make calls into this library.
+
+Package: lib32atomic`'ATOMIC_SO-dbg`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs')
+Section: debug
+Priority: extra
+Depends: BASELDEP, libdep(atomic`'ATOMIC_SO,32,=), ${misc:Depends}
+BUILT_USING`'dnl
+Description: support library providing __atomic built-in functions (32 bit debug symbols)
+ library providing __atomic built-in functions. When an atomic call cannot
+ be turned into lock-free instructions, GCC will make calls into this library.
+
+Package: lib64atomic`'ATOMIC_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs')
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: support library providing __atomic built-in functions (64bit)
+ library providing __atomic built-in functions. When an atomic call cannot
+ be turned into lock-free instructions, GCC will make calls into this library.
+
+Package: lib64atomic`'ATOMIC_SO-dbg`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs')
+Section: debug
+Priority: extra
+Depends: BASELDEP, libdep(atomic`'ATOMIC_SO,64,=), ${misc:Depends}
+BUILT_USING`'dnl
+Description: support library providing __atomic built-in functions (64bit debug symbols)
+ library providing __atomic built-in functions. When an atomic call cannot
+ be turned into lock-free instructions, GCC will make calls into this library.
+
+Package: libn32atomic`'ATOMIC_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs')
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: support library providing __atomic built-in functions (n32)
+ library providing __atomic built-in functions. When an atomic call cannot
+ be turned into lock-free instructions, GCC will make calls into this library.
+
+Package: libn32atomic`'ATOMIC_SO-dbg`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs')
+Section: debug
+Priority: extra
+Depends: BASELDEP, libdep(atomic`'ATOMIC_SO,n32,=), ${misc:Depends}
+BUILT_USING`'dnl
+Description: support library providing __atomic built-in functions (n32 debug symbols)
+ library providing __atomic built-in functions. When an atomic call cannot
+ be turned into lock-free instructions, GCC will make calls into this library.
+
+ifenabled(`libx32atomic',`
+Package: libx32atomic`'ATOMIC_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs')
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: support library providing __atomic built-in functions (x32)
+ library providing __atomic built-in functions. When an atomic call cannot
+ be turned into lock-free instructions, GCC will make calls into this library.
+
+Package: libx32atomic`'ATOMIC_SO-dbg`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs')
+Section: debug
+Priority: extra
+Depends: BASELDEP, libdep(atomic`'ATOMIC_SO,x32,=), ${misc:Depends}
+BUILT_USING`'dnl
+Description: support library providing __atomic built-in functions (x32 debug symbols)
+ library providing __atomic built-in functions. When an atomic call cannot
+ be turned into lock-free instructions, GCC will make calls into this library.
+')`'dnl libx32atomic
+
+ifenabled(`libhfatomic',`
+Package: libhfatomic`'ATOMIC_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs')
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+ifdef(`TARGET',`dnl',`Conflicts: libatomic'ATOMIC_SO`-armhf [biarchhf_archs]')
+BUILT_USING`'dnl
+Description: support library providing __atomic built-in functions (hard float ABI)
+ library providing __atomic built-in functions. When an atomic call cannot
+ be turned into lock-free instructions, GCC will make calls into this library.
+
+Package: libhfatomic`'ATOMIC_SO-dbg`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs')
+Section: debug
+Priority: extra
+Depends: BASELDEP, libdep(atomic`'ATOMIC_SO,hf,=), ${misc:Depends}
+ifdef(`TARGET',`dnl',`Conflicts: libatomic'ATOMIC_SO`-armel [biarchsf_archs]')
+BUILT_USING`'dnl
+Description: support library providing __atomic built-in functions (hard float ABI debug symbols)
+ library providing __atomic built-in functions. When an atomic call cannot
+ be turned into lock-free instructions, GCC will make calls into this library.
+')`'dnl libhfatomic
+
+ifenabled(`libsfatomic',`
+Package: libsfatomic`'ATOMIC_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs')
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: support library providing __atomic built-in functions (soft float ABI)
+ library providing __atomic built-in functions. When an atomic call cannot
+ be turned into lock-free instructions, GCC will make calls into this library.
+
+Package: libsfatomic`'ATOMIC_SO-dbg`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs')
+Section: debug
+Priority: extra
+Depends: BASELDEP, libdep(atomic`'ATOMIC_SO,sf,=), ${misc:Depends}
+BUILT_USING`'dnl
+Description: support library providing __atomic built-in functions (soft float ABI debug symbols)
+ library providing __atomic built-in functions. When an atomic call cannot
+ be turned into lock-free instructions, GCC will make calls into this library.
+')`'dnl libsfatomic
+
+ifenabled(`libneonatomic',`
+Package: libatomic`'ATOMIC_SO-neon`'LS
+Architecture: NEON_ARCHS
+Section: libs
+Priority: extra
+Depends: BASELDEP, libc6-neon`'LS, ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: support library providing __atomic built-in functions [neon optimized]
+ library providing __atomic built-in functions. When an atomic call cannot
+ be turned into lock-free instructions, GCC will make calls into this library.
+ .
+ This set of libraries is optimized to use a NEON coprocessor, and will
+ be selected instead when running under systems which have one.
+')`'dnl libneonatomic
+')`'dnl libatomic
+
+ifenabled(`libasan',`
+Package: libasan`'ASAN_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`any')
+ifdef(`TARGET',`',`Provides: libasan'ASAN_SO`-armel [armel], libasan'ASAN_SO`-armhf [armhf]
+')`'dnl
+ifdef(`MULTIARCH', `Multi-Arch: same
+Pre-Depends: ${misc:Pre-Depends}
+')`'dnl
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: AddressSanitizer -- a fast memory error detector
+ AddressSanitizer (ASan) is a fast memory error detector.  It finds
+ use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs.
+
+Package: libasan`'ASAN_SO-dbg`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`any')
+Section: debug
+Priority: extra
+Depends: BASELDEP, libdep(asan`'ASAN_SO,,=), ${misc:Depends}
+ifdef(`TARGET',`',`Provides: libasan'ASAN_SO`-dbg-armel [armel], libasan'ASAN_SO`-dbg-armhf [armhf]
+')`'dnl
+ifdef(`MULTIARCH', `Multi-Arch: same
+')`'dnl
+BUILT_USING`'dnl
+Description: AddressSanitizer -- a fast memory error detector (debug symbols)
+ AddressSanitizer (ASan) is a fast memory error detector.  It finds
+ use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs.
+
+Package: lib32asan`'ASAN_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs')
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+Conflicts: ${confl:lib32}
+BUILT_USING`'dnl
+Description: AddressSanitizer -- a fast memory error detector (32bit)
+ AddressSanitizer (ASan) is a fast memory error detector.  It finds
+ use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs.
+
+Package: lib32asan`'ASAN_SO-dbg`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs')
+Section: debug
+Priority: extra
+Depends: BASELDEP, libdep(asan`'ASAN_SO,32,=), ${misc:Depends}
+BUILT_USING`'dnl
+Description: AddressSanitizer -- a fast memory error detector (32 bit debug symbols)
+ AddressSanitizer (ASan) is a fast memory error detector.  It finds
+ use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs.
+
+Package: lib64asan`'ASAN_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs')
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: AddressSanitizer -- a fast memory error detector (64bit)
+ AddressSanitizer (ASan) is a fast memory error detector.  It finds
+ use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs.
+
+Package: lib64asan`'ASAN_SO-dbg`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs')
+Section: debug
+Priority: extra
+Depends: BASELDEP, libdep(asan`'ASAN_SO,64,=), ${misc:Depends}
+BUILT_USING`'dnl
+Description: AddressSanitizer -- a fast memory error detector (64bit debug symbols)
+ AddressSanitizer (ASan) is a fast memory error detector.  It finds
+ use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs.
+
+#Package: libn32asan`'ASAN_SO`'LS
+#Section: ifdef(`TARGET',`devel',`libs')
+#Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs')
+#Priority: ifdef(`TARGET',`extra',`PRI(extra)')
+#Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+#BUILT_USING`'dnl
+#Description: AddressSanitizer -- a fast memory error detector (n32)
+# AddressSanitizer (ASan) is a fast memory error detector.  It finds
+# use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs.
+
+#Package: libn32asan`'ASAN_SO-dbg`'LS
+#Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs')
+#Section: debug
+#Priority: extra
+#Depends: BASELDEP, libdep(asan`'ASAN_SO,n32,=), ${misc:Depends}
+#BUILT_USING`'dnl
+#Description: AddressSanitizer -- a fast memory error detector (n32 debug symbols)
+# AddressSanitizer (ASan) is a fast memory error detector.  It finds
+# use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs.
+
+ifenabled(`libx32asan',`
+Package: libx32asan`'ASAN_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs')
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: AddressSanitizer -- a fast memory error detector (x32)
+ AddressSanitizer (ASan) is a fast memory error detector.  It finds
+ use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs.
+
+Package: libx32asan`'ASAN_SO-dbg`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs')
+Section: debug
+Priority: extra
+Depends: BASELDEP, libdep(asan`'ASAN_SO,x32,=), ${misc:Depends}
+BUILT_USING`'dnl
+Description: AddressSanitizer -- a fast memory error detector (x32 debug symbols)
+ AddressSanitizer (ASan) is a fast memory error detector.  It finds
+ use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs.
+')`'dnl libx32asan
+
+ifenabled(`libhfasan',`
+Package: libhfasan`'ASAN_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs')
+Priority: ifdef(`TARGET',`extra',`PRI(extra)')
+Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+ifdef(`TARGET',`dnl',`Conflicts: libasan'ASAN_SO`-armhf [biarchhf_archs]')
+BUILT_USING`'dnl
+Description: AddressSanitizer -- a fast memory error detector (hard float ABI)
+ AddressSanitizer (ASan) is a fast memory error detector.  It finds
+ use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs.
+
+Package: libhfasan`'ASAN_SO-dbg`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs')
+Section: debug
+Priority: extra
+Depends: BASELDEP, libdep(asan`'ASAN_SO,hf,=), ${misc:Depends}
+ifdef(`TARGET',`dnl',`Conflicts: libasan'ASAN_SO`-armel [biarchsf_archs]')
+BUILT_USING`'dnl
+Description: AddressSanitizer -- a fast memory error detector (hard float ABI debug symbols)
+ AddressSanitizer (ASan) is a fast memory error detector.  It finds
+ use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs.
+')`'dnl libhfasan
+
+ifenabled(`libsfasan',`
+Package: libsfasan`'ASAN_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs')
+Priority: ifdef(`TARGET',`extra',`PRI(extra)')
+Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: AddressSanitizer -- a fast memory error detector (soft float ABI)
+ AddressSanitizer (ASan) is a fast memory error detector.  It finds
+ use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs.
+
+Package: libsfasan`'ASAN_SO-dbg`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs')
+Section: debug
+Priority: extra
+Depends: BASELDEP, libdep(asan`'ASAN_SO,sf,=), ${misc:Depends}
+BUILT_USING`'dnl
+Description: AddressSanitizer -- a fast memory error detector (soft float ABI debug symbols)
+ AddressSanitizer (ASan) is a fast memory error detector.  It finds
+ use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs.
+')`'dnl libsfasan
+
+ifenabled(`libneonasan',`
+Package: libasan`'ASAN_SO-neon`'LS
+Architecture: NEON_ARCHS
+Section: libs
+Priority: extra
+Depends: BASELDEP, libc6-neon`'LS, ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: AddressSanitizer -- a fast memory error detector [neon optimized]
+ AddressSanitizer (ASan) is a fast memory error detector.  It finds
+ use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs.
+ .
+ This set of libraries is optimized to use a NEON coprocessor, and will
+ be selected instead when running under systems which have one.
+')`'dnl libneonasan
+')`'dnl libasan
+
+ifenabled(`liblsan',`
+Package: liblsan`'LSAN_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`any')
+ifdef(`MULTIARCH', `Multi-Arch: same
+Pre-Depends: ${misc:Pre-Depends}
+')`'dnl
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: LeakSanitizer -- a memory leak detector (runtime)
+ LeakSanitizer (Lsan) is a memory leak detector which is integrated
+ into AddressSanitizer.
+
+Package: liblsan`'LSAN_SO-dbg`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`any')
+Section: debug
+Priority: extra
+Depends: BASELDEP, libdep(lsan`'LSAN_SO,,=), ${misc:Depends}
+ifdef(`MULTIARCH', `Multi-Arch: same
+')`'dnl
+BUILT_USING`'dnl
+Description: LeakSanitizer -- a memory leak detector (debug symbols)
+ LeakSanitizer (Lsan) is a memory leak detector which is integrated
+ into AddressSanitizer.
+
+ifenabled(`lib32lsan',`
+Package: lib32lsan`'LSAN_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs')
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+Conflicts: ${confl:lib32}
+BUILT_USING`'dnl
+Description: LeakSanitizer -- a memory leak detector (32bit)
+ LeakSanitizer (Lsan) is a memory leak detector which is integrated
+ into AddressSanitizer (empty package).
+
+Package: lib32lsan`'LSAN_SO-dbg`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs')
+Section: debug
+Priority: extra
+Depends: BASELDEP, libdep(lsan`'LSAN_SO,32,=), ${misc:Depends}
+BUILT_USING`'dnl
+Description: LeakSanitizer -- a memory leak detector (32 bit debug symbols)
+ LeakSanitizer (Lsan) is a memory leak detector which is integrated
+ into AddressSanitizer (empty package).
+')`'dnl lib32lsan
+
+ifenabled(`lib64lsan',`
+#Package: lib64lsan`'LSAN_SO`'LS
+#Section: ifdef(`TARGET',`devel',`libs')
+#Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs')
+#Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+#Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+#BUILT_USING`'dnl
+#Description: LeakSanitizer -- a memory leak detector (64bit)
+# LeakSanitizer (Lsan) is a memory leak detector which is integrated
+# into AddressSanitizer.
+
+#Package: lib64lsan`'LSAN_SO-dbg`'LS
+#Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs')
+#Section: debug
+#Priority: extra
+#Depends: BASELDEP, libdep(lsan`'LSAN_SO,64,=), ${misc:Depends}
+#BUILT_USING`'dnl
+#Description: LeakSanitizer -- a memory leak detector (64bit debug symbols)
+# LeakSanitizer (Lsan) is a memory leak detector which is integrated
+# into AddressSanitizer.
+')`'dnl lib64lsan
+
+ifenabled(`libn32lsan',`
+#Package: libn32lsan`'LSAN_SO`'LS
+#Section: ifdef(`TARGET',`devel',`libs')
+#Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs')
+#Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+#Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+#BUILT_USING`'dnl
+#Description: LeakSanitizer -- a memory leak detector (n32)
+# LeakSanitizer (Lsan) is a memory leak detector which is integrated
+# into AddressSanitizer.
+
+#Package: libn32lsan`'LSAN_SO-dbg`'LS
+#Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs')
+#Section: debug
+#Priority: extra
+#Depends: BASELDEP, libdep(lsan`'LSAN_SO,n32,=), ${misc:Depends}
+#BUILT_USING`'dnl
+#Description: LeakSanitizer -- a memory leak detector (n32 debug symbols)
+# LeakSanitizer (Lsan) is a memory leak detector which is integrated
+# into AddressSanitizer.
+')`'dnl libn32lsan
+
+ifenabled(`libx32lsan',`
+Package: libx32lsan`'LSAN_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs')
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: LeakSanitizer -- a memory leak detector (x32)
+ LeakSanitizer (Lsan) is a memory leak detector which is integrated
+ into AddressSanitizer (empty package).
+
+Package: libx32lsan`'LSAN_SO-dbg`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs')
+Section: debug
+Priority: extra
+Depends: BASELDEP, libdep(lsan`'LSAN_SO,x32,=), ${misc:Depends}
+BUILT_USING`'dnl
+Description: LeakSanitizer -- a memory leak detector (x32 debug symbols)
+ LeakSanitizer (Lsan) is a memory leak detector which is integrated
+ into AddressSanitizer (empty package).
+')`'dnl libx32lsan
+
+ifenabled(`libhflsan',`
+Package: libhflsan`'LSAN_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs')
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+ifdef(`TARGET',`dnl',`Conflicts: liblsan'LSAN_SO`-armhf [biarchhf_archs]')
+BUILT_USING`'dnl
+Description: LeakSanitizer -- a memory leak detector (hard float ABI)
+ LeakSanitizer (Lsan) is a memory leak detector which is integrated
+ into AddressSanitizer.
+
+Package: libhflsan`'LSAN_SO-dbg`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs')
+Section: debug
+Priority: extra
+Depends: BASELDEP, libdep(lsan`'LSAN_SO,hf,=), ${misc:Depends}
+ifdef(`TARGET',`dnl',`Conflicts: liblsan'LSAN_SO`-armel [biarchsf_archs]')
+BUILT_USING`'dnl
+Description: LeakSanitizer -- a memory leak detector (hard float ABI debug symbols)
+ LeakSanitizer (Lsan) is a memory leak detector which is integrated
+ into AddressSanitizer.
+')`'dnl libhflsan
+
+ifenabled(`libsflsan',`
+Package: libsflsan`'LSAN_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs')
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: LeakSanitizer -- a memory leak detector (soft float ABI)
+ LeakSanitizer (Lsan) is a memory leak detector which is integrated
+ into AddressSanitizer.
+
+Package: libsflsan`'LSAN_SO-dbg`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs')
+Section: debug
+Priority: extra
+Depends: BASELDEP, libdep(lsan`'LSAN_SO,sf,=), ${misc:Depends}
+BUILT_USING`'dnl
+Description: LeakSanitizer -- a memory leak detector (soft float ABI debug symbols)
+ LeakSanitizer (Lsan) is a memory leak detector which is integrated
+ into AddressSanitizer.
+')`'dnl libsflsan
+
+ifenabled(`libneonlsan',`
+Package: liblsan`'LSAN_SO-neon`'LS
+Architecture: NEON_ARCHS
+Section: libs
+Priority: extra
+Depends: BASELDEP, libc6-neon`'LS, ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: LeakSanitizer -- a memory leak detector [neon optimized]
+ LeakSanitizer (Lsan) is a memory leak detector which is integrated
+ into AddressSanitizer.
+ .
+ This set of libraries is optimized to use a NEON coprocessor, and will
+ be selected instead when running under systems which have one.
+')`'dnl libneonlsan
+')`'dnl liblsan
+
+ifenabled(`libtsan',`
+Package: libtsan`'TSAN_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`any')
+ifdef(`TARGET',`',`Provides: libtsan'TSAN_SO`-armel [armel], libtsan'TSAN_SO`-armhf [armhf]
+')`'dnl
+ifdef(`MULTIARCH', `Multi-Arch: same
+Pre-Depends: ${misc:Pre-Depends}
+')`'dnl
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: ThreadSanitizer -- a Valgrind-based detector of data races (runtime)
+ ThreadSanitizer (Tsan) is a data race detector for C/C++ programs. 
+ The Linux and Mac versions are based on Valgrind. 
+
+Package: libtsan`'TSAN_SO-dbg`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`any')
+Section: debug
+Priority: extra
+Depends: BASELDEP, libdep(tsan`'TSAN_SO,,=), ${misc:Depends}
+ifdef(`TARGET',`',`Provides: libtsan'TSAN_SO`-dbg-armel [armel], libtsan'TSAN_SO`-dbg-armhf [armhf]
+')`'dnl
+ifdef(`MULTIARCH', `Multi-Arch: same
+')`'dnl
+BUILT_USING`'dnl
+Description: ThreadSanitizer -- a Valgrind-based detector of data races (debug symbols)
+ ThreadSanitizer (Tsan) is a data race detector for C/C++ programs. 
+ The Linux and Mac versions are based on Valgrind. 
+
+ifenabled(`lib32tsan',`
+Package: lib32tsan`'TSAN_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs')
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+Conflicts: ${confl:lib32}
+BUILT_USING`'dnl
+Description: ThreadSanitizer -- a Valgrind-based detector of data races (32bit)
+ ThreadSanitizer (Tsan) is a data race detector for C/C++ programs. 
+ The Linux and Mac versions are based on Valgrind. 
+
+Package: lib32tsan`'TSAN_SO-dbg`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs')
+Section: debug
+Priority: extra
+Depends: BASELDEP, libdep(tsan`'TSAN_SO,32,=), ${misc:Depends}
+BUILT_USING`'dnl
+Description: ThreadSanitizer -- a Valgrind-based detector of data races (32 bit debug symbols)
+ ThreadSanitizer (Tsan) is a data race detector for C/C++ programs. 
+ The Linux and Mac versions are based on Valgrind. 
+')`'dnl lib32tsan
+
+ifenabled(`lib64tsan',`
+Package: lib64tsan`'TSAN_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs')
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: ThreadSanitizer -- a Valgrind-based detector of data races (64bit)
+ ThreadSanitizer (Tsan) is a data race detector for C/C++ programs. 
+ The Linux and Mac versions are based on Valgrind. 
+
+Package: lib64tsan`'TSAN_SO-dbg`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs')
+Section: debug
+Priority: extra
+Depends: BASELDEP, libdep(tsan`'TSAN_SO,64,=), ${misc:Depends}
+BUILT_USING`'dnl
+Description: ThreadSanitizer -- a Valgrind-based detector of data races (64bit debug symbols)
+ ThreadSanitizer (Tsan) is a data race detector for C/C++ programs. 
+ The Linux and Mac versions are based on Valgrind. 
+')`'dnl lib64tsan
+
+ifenabled(`libn32tsan',`
+Package: libn32tsan`'TSAN_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs')
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: ThreadSanitizer -- a Valgrind-based detector of data races (n32)
+ ThreadSanitizer (Tsan) is a data race detector for C/C++ programs. 
+ The Linux and Mac versions are based on Valgrind. 
+
+Package: libn32tsan`'TSAN_SO-dbg`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs')
+Section: debug
+Priority: extra
+Depends: BASELDEP, libdep(tsan`'TSAN_SO,n32,=), ${misc:Depends}
+BUILT_USING`'dnl
+Description: ThreadSanitizer -- a Valgrind-based detector of data races (n32 debug symbols)
+ ThreadSanitizer (Tsan) is a data race detector for C/C++ programs. 
+ The Linux and Mac versions are based on Valgrind. 
+')`'dnl libn32tsan
+
+ifenabled(`libx32tsan',`
+Package: libx32tsan`'TSAN_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs')
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: ThreadSanitizer -- a Valgrind-based detector of data races (x32)
+ ThreadSanitizer (Tsan) is a data race detector for C/C++ programs. 
+ The Linux and Mac versions are based on Valgrind. 
+
+Package: libx32tsan`'TSAN_SO-dbg`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs')
+Section: debug
+Priority: extra
+Depends: BASELDEP, libdep(tsan`'TSAN_SO,x32,=), ${misc:Depends}
+BUILT_USING`'dnl
+Description: ThreadSanitizer -- a Valgrind-based detector of data races (x32 debug symbols)
+ ThreadSanitizer (Tsan) is a data race detector for C/C++ programs. 
+ The Linux and Mac versions are based on Valgrind. 
+')`'dnl libx32tsan
+
+ifenabled(`libhftsan',`
+Package: libhftsan`'TSAN_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs')
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+ifdef(`TARGET',`dnl',`Conflicts: libtsan'TSAN_SO`-armhf [biarchhf_archs]')
+BUILT_USING`'dnl
+Description: ThreadSanitizer -- a Valgrind-based detector of data races (hard float ABI)
+ ThreadSanitizer (Tsan) is a data race detector for C/C++ programs. 
+ The Linux and Mac versions are based on Valgrind. 
+
+Package: libhftsan`'TSAN_SO-dbg`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs')
+Section: debug
+Priority: extra
+Depends: BASELDEP, libdep(tsan`'TSAN_SO,hf,=), ${misc:Depends}
+ifdef(`TARGET',`dnl',`Conflicts: libtsan'TSAN_SO`-armel [biarchsf_archs]')
+BUILT_USING`'dnl
+Description: ThreadSanitizer -- a Valgrind-based detector of data races (hard float ABI debug symbols)
+')`'dnl libhftsan
+
+ifenabled(`libsftsan',`
+Package: libsftsan`'TSAN_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs')
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: ThreadSanitizer -- a Valgrind-based detector of data races (soft float ABI)
+ ThreadSanitizer (Tsan) is a data race detector for C/C++ programs. 
+ The Linux and Mac versions are based on Valgrind. 
+
+Package: libsftsan`'TSAN_SO-dbg`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs')
+Section: debug
+Priority: extra
+Depends: BASELDEP, libdep(tsan`'TSAN_SO,sf,=), ${misc:Depends}
+BUILT_USING`'dnl
+Description: ThreadSanitizer -- a Valgrind-based detector of data races (soft float ABI debug symbols)
+ ThreadSanitizer (Tsan) is a data race detector for C/C++ programs. 
+ The Linux and Mac versions are based on Valgrind. 
+')`'dnl libsftsan
+
+ifenabled(`libneontsan',`
+Package: libtsan`'TSAN_SO-neon`'LS
+Architecture: NEON_ARCHS
+Section: libs
+Priority: extra
+Depends: BASELDEP, libc6-neon`'LS, ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: ThreadSanitizer -- a Valgrind-based detector of data races [neon optimized]
+ ThreadSanitizer (Tsan) is a data race detector for C/C++ programs. 
+ The Linux and Mac versions are based on Valgrind. 
+ .
+ This set of libraries is optimized to use a NEON coprocessor, and will
+ be selected instead when running under systems which have one.
+')`'dnl libneontsan
+')`'dnl libtsan
+
+ifenabled(`libubsan',`
+Package: libubsan`'UBSAN_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`any')
+ifdef(`TARGET',`',`Provides: libubsan'UBSAN_SO`-armel [armel], libubsan'UBSAN_SO`-armhf [armhf]
+')`'dnl
+ifdef(`MULTIARCH', `Multi-Arch: same
+Pre-Depends: ${misc:Pre-Depends}
+')`'dnl
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: UBSan -- undefined behaviour sanitizer (runtime)
+ UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined.
+ Various computations will be instrumented to detect undefined behavior
+ at runtime. Available for C and C++.
+
+Package: libubsan`'UBSAN_SO-dbg`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`any')
+Section: debug
+Priority: extra
+Depends: BASELDEP, libdep(ubsan`'UBSAN_SO,,=), ${misc:Depends}
+ifdef(`TARGET',`',`Provides: libubsan'UBSAN_SO`-dbg-armel [armel], libubsan'UBSAN_SO`-dbg-armhf [armhf]
+')`'dnl
+ifdef(`MULTIARCH', `Multi-Arch: same
+')`'dnl
+BUILT_USING`'dnl
+Description: UBSan -- undefined behaviour sanitizer (debug symbols)
+ UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined.
+ Various computations will be instrumented to detect undefined behavior
+ at runtime. Available for C and C++.
+
+ifenabled(`lib32ubsan',`
+Package: lib32ubsan`'UBSAN_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs')
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+Conflicts: ${confl:lib32}
+BUILT_USING`'dnl
+Description: UBSan -- undefined behaviour sanitizer (32bit)
+ UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined.
+ Various computations will be instrumented to detect undefined behavior
+ at runtime. Available for C and C++.
+
+Package: lib32ubsan`'UBSAN_SO-dbg`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs')
+Section: debug
+Priority: extra
+Depends: BASELDEP, libdep(ubsan`'UBSAN_SO,32,=), ${misc:Depends}
+BUILT_USING`'dnl
+Description: UBSan -- undefined behaviour sanitizer (32 bit debug symbols)
+ UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined.
+ Various computations will be instrumented to detect undefined behavior
+ at runtime. Available for C and C++.
+')`'dnl lib32ubsan
+
+ifenabled(`lib64ubsan',`
+Package: lib64ubsan`'UBSAN_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs')
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: UBSan -- undefined behaviour sanitizer (64bit)
+ UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined.
+ Various computations will be instrumented to detect undefined behavior
+ at runtime. Available for C and C++.
+
+Package: lib64ubsan`'UBSAN_SO-dbg`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs')
+Section: debug
+Priority: extra
+Depends: BASELDEP, libdep(ubsan`'UBSAN_SO,64,=), ${misc:Depends}
+BUILT_USING`'dnl
+Description: UBSan -- undefined behaviour sanitizer (64bit debug symbols)
+ UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined.
+ Various computations will be instrumented to detect undefined behavior
+ at runtime. Available for C and C++.
+')`'dnl lib64ubsan
+
+ifenabled(`libn32ubsan',`
+#Package: libn32ubsan`'UBSAN_SO`'LS
+#Section: ifdef(`TARGET',`devel',`libs')
+#Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs')
+#Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+#Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+#BUILT_USING`'dnl
+#Description: UBSan -- undefined behaviour sanitizer (n32)
+# UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined.
+# Various computations will be instrumented to detect undefined behavior
+# at runtime. Available for C and C++.
+
+#Package: libn32ubsan`'UBSAN_SO-dbg`'LS
+#Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs')
+#Section: debug
+#Priority: extra
+#Depends: BASELDEP, libdep(ubsan`'UBSAN_SO,n32,=), ${misc:Depends}
+#BUILT_USING`'dnl
+#Description: UBSan -- undefined behaviour sanitizer (n32 debug symbols)
+# UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined.
+# Various computations will be instrumented to detect undefined behavior
+# at runtime. Available for C and C++.
+')`'dnl libn32ubsan
+
+ifenabled(`libx32ubsan',`
+Package: libx32ubsan`'UBSAN_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs')
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: UBSan -- undefined behaviour sanitizer (x32)
+ UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined.
+ Various computations will be instrumented to detect undefined behavior
+ at runtime. Available for C and C++.
+
+Package: libx32ubsan`'UBSAN_SO-dbg`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs')
+Section: debug
+Priority: extra
+Depends: BASELDEP, libdep(ubsan`'UBSAN_SO,x32,=), ${misc:Depends}
+BUILT_USING`'dnl
+Description: UBSan -- undefined behaviour sanitizer (x32 debug symbols)
+ UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined.
+ Various computations will be instrumented to detect undefined behavior
+ at runtime. Available for C and C++.
+')`'dnl libx32ubsan
+
+ifenabled(`libhfubsan',`
+Package: libhfubsan`'UBSAN_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs')
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+ifdef(`TARGET',`dnl',`Conflicts: libubsan'UBSAN_SO`-armhf [biarchhf_archs]')
+BUILT_USING`'dnl
+Description: UBSan -- undefined behaviour sanitizer (hard float ABI)
+ UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined.
+ Various computations will be instrumented to detect undefined behavior
+ at runtime. Available for C and C++.
+
+Package: libhfubsan`'UBSAN_SO-dbg`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs')
+Section: debug
+Priority: extra
+Depends: BASELDEP, libdep(ubsan`'UBSAN_SO,hf,=), ${misc:Depends}
+ifdef(`TARGET',`dnl',`Conflicts: libubsan'UBSAN_SO`-armel [biarchsf_archs]')
+BUILT_USING`'dnl
+Description: UBSan -- undefined behaviour sanitizer (hard float ABI debug symbols)
+ UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined.
+ Various computations will be instrumented to detect undefined behavior
+ at runtime. Available for C and C++.
+')`'dnl libhfubsan
+
+ifenabled(`libsfubsan',`
+Package: libsfubsan`'UBSAN_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs')
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: UBSan -- undefined behaviour sanitizer (soft float ABI)
+ UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined.
+ Various computations will be instrumented to detect undefined behavior
+ at runtime. Available for C and C++.
+
+Package: libsfubsan`'UBSAN_SO-dbg`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs')
+Section: debug
+Priority: extra
+Depends: BASELDEP, libdep(ubsan`'UBSAN_SO,sf,=), ${misc:Depends}
+BUILT_USING`'dnl
+Description: UBSan -- undefined behaviour sanitizer (soft float ABI debug symbols)
+ UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined.
+ Various computations will be instrumented to detect undefined behavior
+ at runtime. Available for C and C++.
+')`'dnl libsfubsan
+
+ifenabled(`libneonubsan',`
+Package: libubsan`'UBSAN_SO-neon`'LS
+Architecture: NEON_ARCHS
+Section: libs
+Priority: extra
+Depends: BASELDEP, libc6-neon`'LS, ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: UBSan -- undefined behaviour sanitizer [neon optimized]
+ UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined.
+ Various computations will be instrumented to detect undefined behavior
+ at runtime. Available for C and C++.
+ .
+ This set of libraries is optimized to use a NEON coprocessor, and will
+ be selected instead when running under systems which have one.
+')`'dnl libneonubsan
+')`'dnl libubsan
+
+ifenabled(`libvtv',`
+Package: libvtv`'VTV_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`any')
+ifdef(`MULTIARCH', `Multi-Arch: same
+Pre-Depends: ${misc:Pre-Depends}
+')`'dnl
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: GNU vtable verification library (runtime)
+ Vtable verification is a new security hardening feature for GCC that
+ is designed to detect and handle (during program execution) when a
+ vtable pointer that is about to be used for a virtual function call is
+ not a valid vtable pointer for that call.
+
+Package: libvtv`'VTV_SO-dbg`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`any')
+Section: debug
+Priority: extra
+Depends: BASELDEP, libdep(vtv`'VTV_SO,,=), ${misc:Depends}
+ifdef(`MULTIARCH', `Multi-Arch: same
+')`'dnl
+BUILT_USING`'dnl
+Description: GNU vtable verification library (debug symbols)
+ Vtable verification is a new security hardening feature for GCC that
+ is designed to detect and handle (during program execution) when a
+ vtable pointer that is about to be used for a virtual function call is
+ not a valid vtable pointer for that call.
+
+ifenabled(`lib32vtv',`
+Package: lib32vtv`'VTV_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs')
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+Conflicts: ${confl:lib32}
+BUILT_USING`'dnl
+Description: GNU vtable verification library (32bit)
+ Vtable verification is a new security hardening feature for GCC that
+ is designed to detect and handle (during program execution) when a
+ vtable pointer that is about to be used for a virtual function call is
+ not a valid vtable pointer for that call.
+
+Package: lib32vtv`'VTV_SO-dbg`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs')
+Section: debug
+Priority: extra
+Depends: BASELDEP, libdep(vtv`'VTV_SO,32,=), ${misc:Depends}
+BUILT_USING`'dnl
+Description: GNU vtable verification library (32 bit debug symbols)
+ Vtable verification is a new security hardening feature for GCC that
+ is designed to detect and handle (during program execution) when a
+ vtable pointer that is about to be used for a virtual function call is
+ not a valid vtable pointer for that call.
+')`'dnl lib32vtv
+
+ifenabled(`lib64vtv',`
+Package: lib64vtv`'VTV_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs')
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: GNU vtable verification library (64bit)
+ Vtable verification is a new security hardening feature for GCC that
+ is designed to detect and handle (during program execution) when a
+ vtable pointer that is about to be used for a virtual function call is
+ not a valid vtable pointer for that call.
+
+Package: lib64vtv`'VTV_SO-dbg`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs')
+Section: debug
+Priority: extra
+Depends: BASELDEP, libdep(vtv`'VTV_SO,64,=), ${misc:Depends}
+BUILT_USING`'dnl
+Description: GNU vtable verification library (64bit debug symbols)
+ Vtable verification is a new security hardening feature for GCC that
+ is designed to detect and handle (during program execution) when a
+ vtable pointer that is about to be used for a virtual function call is
+ not a valid vtable pointer for that call.
+')`'dnl lib64vtv
+
+ifenabled(`libn32vtv',`
+Package: libn32vtv`'VTV_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs')
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: GNU vtable verification library (n32)
+ Vtable verification is a new security hardening feature for GCC that
+ is designed to detect and handle (during program execution) when a
+ vtable pointer that is about to be used for a virtual function call is
+ not a valid vtable pointer for that call.
+
+Package: libn32vtv`'VTV_SO-dbg`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs')
+Section: debug
+Priority: extra
+Depends: BASELDEP, libdep(vtv`'VTV_SO,n32,=), ${misc:Depends}
+BUILT_USING`'dnl
+Description: GNU vtable verification library (n32 debug symbols)
+ Vtable verification is a new security hardening feature for GCC that
+ is designed to detect and handle (during program execution) when a
+ vtable pointer that is about to be used for a virtual function call is
+ not a valid vtable pointer for that call.
+')`'dnl libn32vtv
+
+ifenabled(`libx32vtv',`
+Package: libx32vtv`'VTV_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs')
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: GNU vtable verification library (x32)
+ Vtable verification is a new security hardening feature for GCC that
+ is designed to detect and handle (during program execution) when a
+ vtable pointer that is about to be used for a virtual function call is
+ not a valid vtable pointer for that call.
+
+Package: libx32vtv`'VTV_SO-dbg`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs')
+Section: debug
+Priority: extra
+Depends: BASELDEP, libdep(vtv`'VTV_SO,x32,=), ${misc:Depends}
+BUILT_USING`'dnl
+Description: GNU vtable verification library (x32 debug symbols)
+ Vtable verification is a new security hardening feature for GCC that
+ is designed to detect and handle (during program execution) when a
+ vtable pointer that is about to be used for a virtual function call is
+ not a valid vtable pointer for that call.
+')`'dnl libx32vtv
+
+ifenabled(`libhfvtv',`
+Package: libhfvtv`'VTV_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs')
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+ifdef(`TARGET',`dnl',`Conflicts: libvtv'VTV_SO`-armhf [biarchhf_archs]')
+BUILT_USING`'dnl
+Description: GNU vtable verification library (hard float ABI)
+ Vtable verification is a new security hardening feature for GCC that
+ is designed to detect and handle (during program execution) when a
+ vtable pointer that is about to be used for a virtual function call is
+ not a valid vtable pointer for that call.
+
+Package: libhfvtv`'VTV_SO-dbg`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs')
+Section: debug
+Priority: extra
+Depends: BASELDEP, libdep(vtv`'VTV_SO,hf,=), ${misc:Depends}
+ifdef(`TARGET',`dnl',`Conflicts: libvtv'VTV_SO`-armel [biarchsf_archs]')
+BUILT_USING`'dnl
+Description: GNU vtable verification library (hard float ABI debug symbols)
+ Vtable verification is a new security hardening feature for GCC that
+ is designed to detect and handle (during program execution) when a
+ vtable pointer that is about to be used for a virtual function call is
+ not a valid vtable pointer for that call.
+')`'dnl libhfvtv
+
+ifenabled(`libsfvtv',`
+Package: libsfvtv`'VTV_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs')
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: GNU vtable verification library (soft float ABI)
+ Vtable verification is a new security hardening feature for GCC that
+ is designed to detect and handle (during program execution) when a
+ vtable pointer that is about to be used for a virtual function call is
+ not a valid vtable pointer for that call.
+
+Package: libsfvtv`'VTV_SO-dbg`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs')
+Section: debug
+Priority: extra
+Depends: BASELDEP, libdep(vtv`'VTV_SO,sf,=), ${misc:Depends}
+BUILT_USING`'dnl
+Description: GNU vtable verification library (soft float ABI debug symbols)
+ Vtable verification is a new security hardening feature for GCC that
+ is designed to detect and handle (during program execution) when a
+ vtable pointer that is about to be used for a virtual function call is
+ not a valid vtable pointer for that call.
+')`'dnl libsfvtv
+
+ifenabled(`libneonvtv',`
+Package: libvtv`'VTV_SO-neon`'LS
+Architecture: NEON_ARCHS
+Section: libs
+Priority: extra
+Depends: BASELDEP, libc6-neon`'LS, ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: GNU vtable verification library [neon optimized]
+ Vtable verification is a new security hardening feature for GCC that
+ is designed to detect and handle (during program execution) when a
+ vtable pointer that is about to be used for a virtual function call is
+ not a valid vtable pointer for that call.
+ .
+ This set of libraries is optimized to use a NEON coprocessor, and will
+ be selected instead when running under systems which have one.
+')`'dnl libneonvtv
+')`'dnl libvtv
+
+ifenabled(`libcilkrts',`
+Package: libcilkrts`'CILKRTS_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`any')
+ifdef(`TARGET',`',`Provides: libcilkrts'CILKRTS_SO`-armel [armel], libcilkrts'CILKRTS_SO`-armhf [armhf]
+')`'dnl
+ifdef(`MULTIARCH', `Multi-Arch: same
+Pre-Depends: ${misc:Pre-Depends}
+')`'dnl
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: Intel Cilk Plus language extensions (runtime)
+ Intel Cilk Plus is an extension to the C and C++ languages to support
+ data and task parallelism.
+
+Package: libcilkrts`'CILKRTS_SO-dbg`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`any')
+Section: debug
+Priority: extra
+Depends: BASELDEP, libdep(cilkrts`'CILKRTS_SO,,=), ${misc:Depends}
+ifdef(`TARGET',`',`Provides: libcilkrts'CILKRTS_SO`-dbg-armel [armel], libcilkrts'CILKRTS_SO`-dbg-armhf [armhf]
+')`'dnl
+ifdef(`MULTIARCH', `Multi-Arch: same
+')`'dnl
+BUILT_USING`'dnl
+Description: Intel Cilk Plus language extensions (debug symbols)
+ Intel Cilk Plus is an extension to the C and C++ languages to support
+ data and task parallelism.
+
+ifenabled(`lib32cilkrts',`
+Package: lib32cilkrts`'CILKRTS_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs')
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+Conflicts: ${confl:lib32}
+BUILT_USING`'dnl
+Description: Intel Cilk Plus language extensions (32bit)
+ Intel Cilk Plus is an extension to the C and C++ languages to support
+ data and task parallelism.
+
+Package: lib32cilkrts`'CILKRTS_SO-dbg`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs')
+Section: debug
+Priority: extra
+Depends: BASELDEP, libdep(cilkrts`'CILKRTS_SO,32,=), ${misc:Depends}
+BUILT_USING`'dnl
+Description: Intel Cilk Plus language extensions (32 bit debug symbols)
+ Intel Cilk Plus is an extension to the C and C++ languages to support
+ data and task parallelism.
+')`'dnl lib32cilkrts
+
+ifenabled(`lib64cilkrts',`
+Package: lib64cilkrts`'CILKRTS_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs')
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: Intel Cilk Plus language extensions (64bit)
+ Intel Cilk Plus is an extension to the C and C++ languages to support
+ data and task parallelism.
+
+Package: lib64cilkrts`'CILKRTS_SO-dbg`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs')
+Section: debug
+Priority: extra
+Depends: BASELDEP, libdep(cilkrts`'CILKRTS_SO,64,=), ${misc:Depends}
+BUILT_USING`'dnl
+Description: Intel Cilk Plus language extensions (64bit debug symbols)
+ Intel Cilk Plus is an extension to the C and C++ languages to support
+ data and task parallelism.
+')`'dnl lib64cilkrts
+
+ifenabled(`libn32cilkrts',`
+Package: libn32cilkrts`'CILKRTS_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs')
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: Intel Cilk Plus language extensions (n32)
+ Intel Cilk Plus is an extension to the C and C++ languages to support
+ data and task parallelism.
+
+Package: libn32cilkrts`'CILKRTS_SO-dbg`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs')
+Section: debug
+Priority: extra
+Depends: BASELDEP, libdep(cilkrts`'CILKRTS_SO,n32,=), ${misc:Depends}
+BUILT_USING`'dnl
+Description: Intel Cilk Plus language extensions (n32 debug symbols)
+ Intel Cilk Plus is an extension to the C and C++ languages to support
+ data and task parallelism.
+')`'dnl libn32cilkrts
+
+ifenabled(`libx32cilkrts',`
+Package: libx32cilkrts`'CILKRTS_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs')
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: Intel Cilk Plus language extensions (x32)
+ Intel Cilk Plus is an extension to the C and C++ languages to support
+ data and task parallelism.
+
+Package: libx32cilkrts`'CILKRTS_SO-dbg`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs')
+Section: debug
+Priority: extra
+Depends: BASELDEP, libdep(cilkrts`'CILKRTS_SO,x32,=), ${misc:Depends}
+BUILT_USING`'dnl
+Description: Intel Cilk Plus language extensions (x32 debug symbols)
+ Intel Cilk Plus is an extension to the C and C++ languages to support
+ data and task parallelism.
+')`'dnl libx32cilkrts
+
+ifenabled(`libhfcilkrts',`
+Package: libhfcilkrts`'CILKRTS_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs')
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+ifdef(`TARGET',`dnl',`Conflicts: libcilkrts'CILKRTS_SO`-armhf [biarchhf_archs]')
+BUILT_USING`'dnl
+Description: Intel Cilk Plus language extensions (hard float ABI)
+ Intel Cilk Plus is an extension to the C and C++ languages to support
+ data and task parallelism.
+
+Package: libhfcilkrts`'CILKRTS_SO-dbg`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs')
+Section: debug
+Priority: extra
+Depends: BASELDEP, libdep(cilkrts`'CILKRTS_SO,hf,=), ${misc:Depends}
+ifdef(`TARGET',`dnl',`Conflicts: libcilkrts'CILKRTS_SO`-armel [biarchsf_archs]')
+BUILT_USING`'dnl
+Description: Intel Cilk Plus language extensions (hard float ABI debug symbols)
+ Intel Cilk Plus is an extension to the C and C++ languages to support
+ data and task parallelism.
+')`'dnl libhfcilkrts
+
+ifenabled(`libsfcilkrts',`
+Package: libsfcilkrts`'CILKRTS_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs')
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: Intel Cilk Plus language extensions (soft float ABI)
+ Intel Cilk Plus is an extension to the C and C++ languages to support
+ data and task parallelism.
+
+Package: libsfcilkrts`'CILKRTS_SO-dbg`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs')
+Section: debug
+Priority: extra
+Depends: BASELDEP, libdep(cilkrts`'CILKRTS_SO,sf,=), ${misc:Depends}
+BUILT_USING`'dnl
+Description: Intel Cilk Plus language extensions (soft float ABI debug symbols)
+ Intel Cilk Plus is an extension to the C and C++ languages to support
+ data and task parallelism.
+')`'dnl libsfcilkrts
+
+ifenabled(`libneoncilkrts',`
+Package: libcilkrts`'CILKRTS_SO-neon`'LS
+Architecture: NEON_ARCHS
+Section: libs
+Priority: extra
+Depends: BASELDEP, libc6-neon`'LS, ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: Intel Cilk Plus language extensions [neon optimized]
+ Intel Cilk Plus is an extension to the C and C++ languages to support
+ data and task parallelism.
+ .
+ This set of libraries is optimized to use a NEON coprocessor, and will
+ be selected instead when running under systems which have one.
+')`'dnl libneoncilkrts
+')`'dnl libcilkrts
+
+ifenabled(`libmpx',`
+Package: libmpx`'MPX_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`any')
+ifdef(`TARGET',`',`Provides: libmpx'MPX_SO`-armel [armel], libmpx'MPX_SO`-armhf [armhf]
+')`'dnl
+ifdef(`MULTIARCH', `Multi-Arch: same
+Pre-Depends: ${misc:Pre-Depends}
+')`'dnl
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: Intel memory protection extensions (runtime)
+ Intel MPX is a set of processor features which, with compiler,
+ runtime library and OS support, brings increased robustness to
+ software by checking pointer references whose compile time normal
+ intentions are usurped at runtime due to buffer overflow.
+
+Package: libmpx`'MPX_SO-dbg`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`any')
+Section: debug
+Priority: extra
+Depends: BASELDEP, libdep(mpx`'MPX_SO,,=), ${misc:Depends}
+ifdef(`TARGET',`',`Provides: libmpx'MPX_SO`-dbg-armel [armel], libmpx'MPX_SO`-dbg-armhf [armhf]
+')`'dnl
+ifdef(`MULTIARCH', `Multi-Arch: same
+')`'dnl
+BUILT_USING`'dnl
+Description: Intel memory protection extensions (debug symbols)
+ Intel MPX is a set of processor features which, with compiler,
+ runtime library and OS support, brings increased robustness to
+ software by checking pointer references whose compile time normal
+ intentions are usurped at runtime due to buffer overflow.
+
+ifenabled(`lib32mpx',`
+Package: lib32mpx`'MPX_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs')
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+Conflicts: ${confl:lib32}
+BUILT_USING`'dnl
+Description: Intel memory protection extensions (32bit)
+ Intel MPX is a set of processor features which, with compiler,
+ runtime library and OS support, brings increased robustness to
+ software by checking pointer references whose compile time normal
+ intentions are usurped at runtime due to buffer overflow.
+
+Package: lib32mpx`'MPX_SO-dbg`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs')
+Section: debug
+Priority: extra
+Depends: BASELDEP, libdep(mpx`'MPX_SO,32,=), ${misc:Depends}
+BUILT_USING`'dnl
+Description: Intel memory protection extensions (32 bit debug symbols)
+ Intel MPX is a set of processor features which, with compiler,
+ runtime library and OS support, brings increased robustness to
+ software by checking pointer references whose compile time normal
+ intentions are usurped at runtime due to buffer overflow.
+')`'dnl lib32mpx
+
+ifenabled(`lib64mpx',`
+Package: lib64mpx`'MPX_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs')
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: Intel memory protection extensions (64bit)
+ Intel MPX is a set of processor features which, with compiler,
+ runtime library and OS support, brings increased robustness to
+ software by checking pointer references whose compile time normal
+ intentions are usurped at runtime due to buffer overflow.
+
+Package: lib64mpx`'MPX_SO-dbg`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs')
+Section: debug
+Priority: extra
+Depends: BASELDEP, libdep(mpx`'MPX_SO,64,=), ${misc:Depends}
+BUILT_USING`'dnl
+Description: Intel memory protection extensions (64bit debug symbols)
+ Intel MPX is a set of processor features which, with compiler,
+ runtime library and OS support, brings increased robustness to
+ software by checking pointer references whose compile time normal
+ intentions are usurped at runtime due to buffer overflow.
+')`'dnl lib64mpx
+
+ifenabled(`libn32mpx',`
+Package: libn32mpx`'MPX_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs')
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: Intel memory protection extensions (n32)
+ Intel MPX is a set of processor features which, with compiler,
+ runtime library and OS support, brings increased robustness to
+ software by checking pointer references whose compile time normal
+ intentions are usurped at runtime due to buffer overflow.
+
+Package: libn32mpx`'MPX_SO-dbg`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs')
+Section: debug
+Priority: extra
+Depends: BASELDEP, libdep(mpx`'MPX_SO,n32,=), ${misc:Depends}
+BUILT_USING`'dnl
+Description: Intel memory protection extensions (n32 debug symbols)
+ Intel MPX is a set of processor features which, with compiler,
+ runtime library and OS support, brings increased robustness to
+ software by checking pointer references whose compile time normal
+ intentions are usurped at runtime due to buffer overflow.
+')`'dnl libn32mpx
+
+ifenabled(`libx32mpx',`
+Package: libx32mpx`'MPX_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs')
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: Intel memory protection extensions (x32)
+ Intel MPX is a set of processor features which, with compiler,
+ runtime library and OS support, brings increased robustness to
+ software by checking pointer references whose compile time normal
+ intentions are usurped at runtime due to buffer overflow.
+
+Package: libx32mpx`'MPX_SO-dbg`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs')
+Section: debug
+Priority: extra
+Depends: BASELDEP, libdep(mpx`'MPX_SO,x32,=), ${misc:Depends}
+BUILT_USING`'dnl
+Description: Intel memory protection extensions (x32 debug symbols)
+ Intel MPX is a set of processor features which, with compiler,
+ runtime library and OS support, brings increased robustness to
+ software by checking pointer references whose compile time normal
+ intentions are usurped at runtime due to buffer overflow.
+')`'dnl libx32mpx
+
+ifenabled(`libhfmpx',`
+Package: libhfmpx`'MPX_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs')
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+ifdef(`TARGET',`dnl',`Conflicts: libmpx'MPX_SO`-armhf [biarchhf_archs]')
+BUILT_USING`'dnl
+Description: Intel memory protection extensions (hard float ABI)
+ Intel MPX is a set of processor features which, with compiler,
+ runtime library and OS support, brings increased robustness to
+ software by checking pointer references whose compile time normal
+ intentions are usurped at runtime due to buffer overflow.
+
+Package: libhfmpx`'MPX_SO-dbg`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs')
+Section: debug
+Priority: extra
+Depends: BASELDEP, libdep(mpx`'MPX_SO,hf,=), ${misc:Depends}
+ifdef(`TARGET',`dnl',`Conflicts: libmpx'MPX_SO`-armel [biarchsf_archs]')
+BUILT_USING`'dnl
+Description: Intel memory protection extensions (hard float ABI debug symbols)
+ Intel MPX is a set of processor features which, with compiler,
+ runtime library and OS support, brings increased robustness to
+ software by checking pointer references whose compile time normal
+ intentions are usurped at runtime due to buffer overflow.
+')`'dnl libhfmpx
+
+ifenabled(`libsfmpx',`
+Package: libsfmpx`'MPX_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs')
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: Intel memory protection extensions (soft float ABI)
+ Intel MPX is a set of processor features which, with compiler,
+ runtime library and OS support, brings increased robustness to
+ software by checking pointer references whose compile time normal
+ intentions are usurped at runtime due to buffer overflow.
+
+Package: libsfmpx`'MPX_SO-dbg`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs')
+Section: debug
+Priority: extra
+Depends: BASELDEP, libdep(mpx`'MPX_SO,sf,=), ${misc:Depends}
+BUILT_USING`'dnl
+Description: Intel memory protection extensions (soft float ABI debug symbols)
+ Intel MPX is a set of processor features which, with compiler,
+ runtime library and OS support, brings increased robustness to
+ software by checking pointer references whose compile time normal
+ intentions are usurped at runtime due to buffer overflow.
+')`'dnl libsfmpx
+')`'dnl libmpx
+
+ifenabled(`libbacktrace',`
+Package: libbacktrace`'BTRACE_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`any')
+ifdef(`TARGET',`',`Provides: libbacktrace'BTRACE_SO`-armel [armel], libbacktrace'BTRACE_SO`-armhf [armhf]
+')`'dnl
+ifdef(`MULTIARCH', `Multi-Arch: same
+Pre-Depends: ${misc:Pre-Depends}
+')`'dnl
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: stack backtrace library
+ libbacktrace uses the GCC unwind interface to collect a stack trace,
+ and parses DWARF debug info to get file/line/function information.
+
+Package: libbacktrace`'BTRACE_SO-dbg`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`any')
+Section: debug
+Priority: extra
+Depends: BASELDEP, libdep(backtrace`'BTRACE_SO,,=), ${misc:Depends}
+ifdef(`TARGET',`',`Provides: libbacktrace'BTRACE_SO`-dbg-armel [armel], libbacktrace'BTRACE_SO`-dbg-armhf [armhf]
+')`'dnl
+ifdef(`MULTIARCH', `Multi-Arch: same
+')`'dnl
+BUILT_USING`'dnl
+Description: stack backtrace library (debug symbols)
+ libbacktrace uses the GCC unwind interface to collect a stack trace,
+ and parses DWARF debug info to get file/line/function information.
+
+Package: lib32backtrace`'BTRACE_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs')
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+Conflicts: ${confl:lib32}
+BUILT_USING`'dnl
+Description: stack backtrace library (32bit)
+ libbacktrace uses the GCC unwind interface to collect a stack trace,
+ and parses DWARF debug info to get file/line/function information.
+
+Package: lib32backtrace`'BTRACE_SO-dbg`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs')
+Section: debug
+Priority: extra
+Depends: BASELDEP, libdep(backtrace`'BTRACE_SO,32,=), ${misc:Depends}
+BUILT_USING`'dnl
+Description: stack backtrace library (32 bit debug symbols)
+ libbacktrace uses the GCC unwind interface to collect a stack trace,
+ and parses DWARF debug info to get file/line/function information.
+
+Package: lib64backtrace`'BTRACE_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs')
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: stack backtrace library (64bit)
+ libbacktrace uses the GCC unwind interface to collect a stack trace,
+ and parses DWARF debug info to get file/line/function information.
+
+Package: lib64backtrace`'BTRACE_SO-dbg`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs')
+Section: debug
+Priority: extra
+Depends: BASELDEP, libdep(backtrace`'BTRACE_SO,64,=), ${misc:Depends}
+BUILT_USING`'dnl
+Description: stack backtrace library (64bit debug symbols)
+ libbacktrace uses the GCC unwind interface to collect a stack trace,
+ and parses DWARF debug info to get file/line/function information.
+
+Package: libn32backtrace`'BTRACE_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs')
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: stack backtrace library (n32)
+ libbacktrace uses the GCC unwind interface to collect a stack trace,
+ and parses DWARF debug info to get file/line/function information.
+
+Package: libn32backtrace`'BTRACE_SO-dbg`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs')
+Section: debug
+Priority: extra
+Depends: BASELDEP, libdep(backtrace`'BTRACE_SO,n32,=), ${misc:Depends}
+BUILT_USING`'dnl
+Description: stack backtrace library (n32 debug symbols)
+ libbacktrace uses the GCC unwind interface to collect a stack trace,
+ and parses DWARF debug info to get file/line/function information.
+
+ifenabled(`libx32backtrace',`
+Package: libx32backtrace`'BTRACE_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs')
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: stack backtrace library (x32)
+ libbacktrace uses the GCC unwind interface to collect a stack trace,
+ and parses DWARF debug info to get file/line/function information.
+
+Package: libx32backtrace`'BTRACE_SO-dbg`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs')
+Section: debug
+Priority: extra
+Depends: BASELDEP, libdep(backtrace`'BTRACE_SO,x32,=), ${misc:Depends}
+BUILT_USING`'dnl
+Description: stack backtrace library (x32 debug symbols)
+ libbacktrace uses the GCC unwind interface to collect a stack trace,
+ and parses DWARF debug info to get file/line/function information.
+')`'dnl libx32backtrace
+
+ifenabled(`libhfbacktrace',`
+Package: libhfbacktrace`'BTRACE_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs')
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+ifdef(`TARGET',`dnl',`Conflicts: libbacktrace'BTRACE_SO`-armhf [biarchhf_archs]')
+BUILT_USING`'dnl
+Description: stack backtrace library (hard float ABI)
+ libbacktrace uses the GCC unwind interface to collect a stack trace,
+ and parses DWARF debug info to get file/line/function information.
+
+Package: libhfbacktrace`'BTRACE_SO-dbg`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs')
+Section: debug
+Priority: extra
+Depends: BASELDEP, libdep(backtrace`'BTRACE_SO,hf,=), ${misc:Depends}
+wifdef(`TARGET',`dnl',`Conflicts: libbacktrace'BTRACE_SO`-armel [biarchsf_archs]')
+BUILT_USING`'dnl
+Description: stack backtrace library (hard float ABI debug symbols)
+ libbacktrace uses the GCC unwind interface to collect a stack trace,
+ and parses DWARF debug info to get file/line/function information.
+')`'dnl libhfbacktrace
+
+ifenabled(`libsfbacktrace',`
+Package: libsfbacktrace`'BTRACE_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs')
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: stack backtrace library (soft float ABI)
+ libbacktrace uses the GCC unwind interface to collect a stack trace,
+ and parses DWARF debug info to get file/line/function information.
+
+Package: libsfbacktrace`'BTRACE_SO-dbg`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs')
+Section: debug
+Priority: extra
+Depends: BASELDEP, libdep(backtrace`'BTRACE_SO,sf,=), ${misc:Depends}
+BUILT_USING`'dnl
+Description: stack backtrace library (soft float ABI debug symbols)
+ libbacktrace uses the GCC unwind interface to collect a stack trace,
+ and parses DWARF debug info to get file/line/function information.
+')`'dnl libsfbacktrace
+
+ifenabled(`libneonbacktrace',`
+Package: libbacktrace`'BTRACE_SO-neon`'LS
+Architecture: NEON_ARCHS
+Section: libs
+Priority: extra
+Depends: BASELDEP, libc6-neon`'LS, ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: stack backtrace library [neon optimized]
+ libbacktrace uses the GCC unwind interface to collect a stack trace,
+ and parses DWARF debug info to get file/line/function information.
+ .
+ This set of libraries is optimized to use a NEON coprocessor, and will
+ be selected instead when running under systems which have one.
+')`'dnl libneonbacktrace
+')`'dnl libbacktrace
+
+
+ifenabled(`libqmath',`
+Package: libquadmath`'QMATH_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`any')
+ifdef(`MULTIARCH', `Multi-Arch: same
+Pre-Depends: ${misc:Pre-Depends}
+')`'dnl
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: GCC Quad-Precision Math Library
+ A library, which provides quad-precision mathematical functions on targets
+ supporting the __float128 datatype. The library is used to provide on such
+ targets the REAL(16) type in the GNU Fortran compiler.
+
+Package: libquadmath`'QMATH_SO-dbg`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`any')
+Section: debug
+Priority: extra
+Depends: BASELDEP, libdep(quadmath`'QMATH_SO,,=), ${misc:Depends}
+ifdef(`MULTIARCH', `Multi-Arch: same
+')`'dnl
+BUILT_USING`'dnl
+Description: GCC Quad-Precision Math Library (debug symbols)
+ A library, which provides quad-precision mathematical functions on targets
+ supporting the __float128 datatype.
+
+Package: lib32quadmath`'QMATH_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs')
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+Conflicts: ${confl:lib32}
+BUILT_USING`'dnl
+Description: GCC Quad-Precision Math Library (32bit)
+ A library, which provides quad-precision mathematical functions on targets
+ supporting the __float128 datatype. The library is used to provide on such
+ targets the REAL(16) type in the GNU Fortran compiler.
+
+Package: lib32quadmath`'QMATH_SO-dbg`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs')
+Section: debug
+Priority: extra
+Depends: BASELDEP, libdep(quadmath`'QMATH_SO,32,=), ${misc:Depends}
+BUILT_USING`'dnl
+Description: GCC Quad-Precision Math Library (32 bit debug symbols)
+ A library, which provides quad-precision mathematical functions on targets
+ supporting the __float128 datatype.
+
+Package: lib64quadmath`'QMATH_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs')
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: GCC Quad-Precision Math Library  (64bit)
+ A library, which provides quad-precision mathematical functions on targets
+ supporting the __float128 datatype. The library is used to provide on such
+ targets the REAL(16) type in the GNU Fortran compiler.
+
+Package: lib64quadmath`'QMATH_SO-dbg`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs')
+Section: debug
+Priority: extra
+Depends: BASELDEP, libdep(quadmath`'QMATH_SO,64,=), ${misc:Depends}
+BUILT_USING`'dnl
+Description: GCC Quad-Precision Math Library  (64bit debug symbols)
+ A library, which provides quad-precision mathematical functions on targets
+ supporting the __float128 datatype.
+
+#Package: libn32quadmath`'QMATH_SO`'LS
+#Section: ifdef(`TARGET',`devel',`libs')
+#Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs')
+#Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+#Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+#BUILT_USING`'dnl
+#Description: GCC Quad-Precision Math Library (n32)
+# A library, which provides quad-precision mathematical functions on targets
+# supporting the __float128 datatype. The library is used to provide on such
+# targets the REAL(16) type in the GNU Fortran compiler.
+
+#Package: libn32quadmath`'QMATH_SO-dbg`'LS
+#Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs')
+#Section: debug
+#Priority: extra
+#Depends: BASELDEP, libdep(quadmath`'QMATH_SO,n32,=), ${misc:Depends}
+#BUILT_USING`'dnl
+#Description: GCC Quad-Precision Math Library (n32 debug symbols)
+# A library, which provides quad-precision mathematical functions on targets
+# supporting the __float128 datatype.
+
+ifenabled(`libx32qmath',`
+Package: libx32quadmath`'QMATH_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs')
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: GCC Quad-Precision Math Library (x32)
+ A library, which provides quad-precision mathematical functions on targets
+ supporting the __float128 datatype. The library is used to provide on such
+ targets the REAL(16) type in the GNU Fortran compiler.
+
+Package: libx32quadmath`'QMATH_SO-dbg`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs')
+Section: debug
+Priority: extra
+Depends: BASELDEP, libdep(quadmath`'QMATH_SO,x32,=), ${misc:Depends}
+BUILT_USING`'dnl
+Description: GCC Quad-Precision Math Library (x32 debug symbols)
+ A library, which provides quad-precision mathematical functions on targets
+ supporting the __float128 datatype.
+')`'dnl libx32qmath
+
+ifenabled(`libhfqmath',`
+Package: libhfquadmath`'QMATH_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs')
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: GCC Quad-Precision Math Library (hard float ABI)
+ A library, which provides quad-precision mathematical functions on targets
+ supporting the __float128 datatype. The library is used to provide on such
+ targets the REAL(16) type in the GNU Fortran compiler.
+
+Package: libhfquadmath`'QMATH_SO-dbg`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs')
+Section: debug
+Priority: extra
+Depends: BASELDEP, libdep(quadmath`'QMATH_SO,hf,=), ${misc:Depends}
+BUILT_USING`'dnl
+Description: GCC Quad-Precision Math Library (hard float ABI debug symbols)
+ A library, which provides quad-precision mathematical functions on targets
+ supporting the __float128 datatype.
+')`'dnl libhfqmath
+
+ifenabled(`libsfqmath',`
+Package: libsfquadmath`'QMATH_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs')
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: GCC Quad-Precision Math Library (soft float ABI)
+ A library, which provides quad-precision mathematical functions on targets
+ supporting the __float128 datatype. The library is used to provide on such
+ targets the REAL(16) type in the GNU Fortran compiler.
+
+Package: libsfquadmath`'QMATH_SO-dbg`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs')
+Section: debug
+Priority: extra
+Depends: BASELDEP, libdep(quadmath`'QMATH_SO,sf,=), ${misc:Depends}
+BUILT_USING`'dnl
+Description: GCC Quad-Precision Math Library (hard float ABI debug symbols)
+ A library, which provides quad-precision mathematical functions on targets
+ supporting the __float128 datatype.
+')`'dnl libsfqmath
+')`'dnl libqmath
+
+ifenabled(`libcc1',`
+Package: libcc1-`'CC1_SO
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`any')
+ifdef(`MULTIARCH', `Multi-Arch: same
+Pre-Depends: ${misc:Pre-Depends}
+')`'dnl
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASEDEP, ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: GCC cc1 plugin for GDB
+ libcc1 is a plugin for GDB.
+')`'dnl libcc1
+
+ifenabled(`libjit',`
+Package: libgccjit`'GCCJIT_SO
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`any')
+ifdef(`MULTIARCH', `Multi-Arch: same
+Pre-Depends: ${misc:Pre-Depends}
+')`'dnl
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASEDEP, ${shlibs:Depends}, ${misc:Depends}
+Breaks: python-gccjit (<< 0.4-4), python3-gccjit (<< 0.4-4)
+BUILT_USING`'dnl
+Description: GCC just-in-time compilation (shared library)
+ libgccjit provides an embeddable shared library with an API for adding
+ compilation to existing programs using GCC.
+
+Package: libgccjit`'PV-dev
+Section: ifdef(`TARGET',`devel',`libdevel')
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`any')
+ifdef(`MULTIARCH', `Multi-Arch: same
+Pre-Depends: ${misc:Pre-Depends}
+')`'dnl
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASEDEP, libgccjit`'GCCJIT_SO (= ${gcc:Version}),
+ ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Suggests: libgccjit`'PV-dbg
+Description: GCC just-in-time compilation (development files)
+ libgccjit provides an embeddable shared library with an API for adding
+ compilation to existing programs using GCC.
+
+Package: libgccjit`'PV-dbg
+Section: debug
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`any')
+ifdef(`MULTIARCH', `Multi-Arch: same
+Pre-Depends: ${misc:Pre-Depends}
+')`'dnl
+Priority: extra
+Depends: BASEDEP, libgccjit`'GCCJIT_SO (= ${gcc:Version}),
+ ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: GCC just-in-time compilation (debug information)
+ libgccjit provides an embeddable shared library with an API for adding
+ compilation to existing programs using GCC.
+
+Package: libgccjit`'PV-doc
+Section: doc
+Architecture: all
+Priority: extra
+Depends: BASEDEP, ${misc:Depends}
+Description: GCC just-in-time compilation (documentation)
+ libgccjit provides an embeddable shared library with an API for adding
+ compilation to existing programs using GCC.
+')`'dnl libjit
+
+ifenabled(`objpp',`
+ifenabled(`objppdev',`
+Package: gobjc++`'PV`'TS
+Architecture: any
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASEDEP, gobjc`'PV`'TS (= ${gcc:Version}), g++`'PV`'TS (= ${gcc:Version}), ${shlibs:Depends}, libidevdep(objc`'PV-dev,,=), ${misc:Depends}
+Suggests: ${gobjcxx:multilib}, gcc`'PV-doc (>= ${gcc:SoftVersion})
+Provides: objc++-compiler`'TS
+BUILT_USING`'dnl
+Description: GNU Objective-C++ compiler
+ This is the GNU Objective-C++ compiler, which compiles
+ Objective-C++ on platforms supported by the gcc compiler. It uses the
+ gcc backend to generate optimized code.
+')`'dnl obcppdev
+
+ifenabled(`multilib',`
+Package: gobjc++`'PV-multilib`'TS
+Architecture: ifdef(`TARGET',`any',MULTILIB_ARCHS)
+Section: devel
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASEDEP, gobjc++`'PV`'TS (= ${gcc:Version}), g++`'PV-multilib`'TS (= ${gcc:Version}), gobjc`'PV-multilib`'TS (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: GNU Objective-C++ compiler (multilib support)
+ This is the GNU Objective-C++ compiler, which compiles Objective-C++ on
+ platforms supported by the gcc compiler.
+ .
+ This is a dependency package, depending on development packages
+ for the non-default multilib architecture(s).
+')`'dnl multilib
+')`'dnl obcpp
+
+ifenabled(`objc',`
+ifenabled(`objcdev',`
+Package: gobjc`'PV`'TS
+Architecture: any
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASEDEP, gcc`'PV`'TS (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, libidevdep(objc`'PV-dev,,=), ${misc:Depends}
+Suggests: ${gobjc:multilib}, gcc`'PV-doc (>= ${gcc:SoftVersion}), libdbgdep(objc`'OBJC_SO-dbg,)
+Provides: objc-compiler`'TS
+ifdef(`__sparc__',`Conflicts: gcc`'PV-sparc64', `dnl')
+BUILT_USING`'dnl
+Description: GNU Objective-C compiler
+ This is the GNU Objective-C compiler, which compiles
+ Objective-C on platforms supported by the gcc compiler. It uses the
+ gcc backend to generate optimized code.
+
+ifenabled(`multilib',`
+Package: gobjc`'PV-multilib`'TS
+Architecture: ifdef(`TARGET',`any',MULTILIB_ARCHS)
+Section: devel
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASEDEP, gobjc`'PV`'TS (= ${gcc:Version}), gcc`'PV-multilib`'TS (= ${gcc:Version}), ${dep:libobjcbiarchdev}, ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: GNU Objective-C compiler (multilib support)`'ifdef(`TARGET)',` (cross compiler for TARGET architecture)', `')
+ This is the GNU Objective-C compiler, which compiles Objective-C on platforms
+ supported by the gcc compiler.
+ .
+ This is a dependency package, depending on development packages
+ for the non-default multilib architecture(s).
+')`'dnl multilib
+
+Package: libobjc`'PV-dev`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`any')
+Section: libdevel
+Priority: ifdef(`TARGET',`extra',PRI(optional))
+Depends: BASELDEP, libdevdep(gcc`'PV-dev,), libdep(objc`'OBJC_SO,), ${shlibs:Depends}, ${misc:Depends}
+ifdef(`MULTIARCH', `Multi-Arch: same
+')`'dnl
+BUILT_USING`'dnl
+Description: Runtime library for GNU Objective-C applications (development files)
+ This package contains the headers and static library files needed to build
+ GNU ObjC applications.
+
+Package: lib64objc`'PV-dev`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs')
+Section: libdevel
+Priority: ifdef(`TARGET',`extra',PRI(optional))
+Depends: BASELDEP, libdevdep(gcc`'PV-dev,64), libdep(objc`'OBJC_SO,64), ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: Runtime library for GNU Objective-C applications (64bit development files)
+ This package contains the headers and static library files needed to build
+ GNU ObjC applications.
+
+Package: lib32objc`'PV-dev`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs')
+Section: libdevel
+Priority: ifdef(`TARGET',`extra',PRI(optional))
+Depends: BASELDEP, libdevdep(gcc`'PV-dev,32), libdep(objc`'OBJC_SO,32), ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: Runtime library for GNU Objective-C applications (32bit development files)
+ This package contains the headers and static library files needed to build
+ GNU ObjC applications.
+
+Package: libn32objc`'PV-dev`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs')
+Section: libdevel
+Priority: ifdef(`TARGET',`extra',PRI(optional))
+Depends: BASELDEP, libdevdep(gcc`'PV-dev,n32), libdep(objc`'OBJC_SO,n32), ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: Runtime library for GNU Objective-C applications (n32 development files)
+ This package contains the headers and static library files needed to build
+ GNU ObjC applications.
+
+ifenabled(`x32dev',`
+Package: libx32objc`'PV-dev`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs')
+Section: libdevel
+Priority: ifdef(`TARGET',`extra',PRI(optional))
+Depends: BASELDEP, libdevdep(gcc`'PV-dev,x32), libdep(objc`'OBJC_SO,x32), ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: Runtime library for GNU Objective-C applications (x32 development files)
+ This package contains the headers and static library files needed to build
+ GNU ObjC applications.
+')`'dnl libx32objc
+
+ifenabled(`armml',`
+Package: libhfobjc`'PV-dev`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs')
+Section: libdevel
+Priority: ifdef(`TARGET',`extra',PRI(optional))
+Depends: BASELDEP, libdevdep(gcc`'PV-dev,hf), libdep(objc`'OBJC_SO,hf), ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: Runtime library for GNU Objective-C applications (hard float ABI development files)
+ This package contains the headers and static library files needed to build
+ GNU ObjC applications.
+')`'dnl armml
+
+ifenabled(`armml',`
+Package: libsfobjc`'PV-dev`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs')
+Section: libdevel
+Priority: ifdef(`TARGET',`extra',PRI(optional))
+Depends: BASELDEP, libdevdep(gcc`'PV-dev,sf), libdep(objc`'OBJC_SO,sf), ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: Runtime library for GNU Objective-C applications (soft float development files)
+ This package contains the headers and static library files needed to build
+ GNU ObjC applications.
+')`'dnl armml
+')`'dnl objcdev
+
+ifenabled(`libobjc',`
+Package: libobjc`'OBJC_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`any')
+ifdef(`TARGET',`',`Provides: libobjc'OBJC_SO`-armel [armel], libobjc'OBJC_SO`-armhf [armhf]
+')`'dnl
+ifdef(`MULTIARCH', `Multi-Arch: same
+Pre-Depends: ${misc:Pre-Depends}
+ifelse(OBJC_SO,`2',`Breaks: ${multiarch:breaks}
+',`')')`'dnl
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: Runtime library for GNU Objective-C applications
+ Library needed for GNU ObjC applications linked against the shared library.
+
+Package: libobjc`'OBJC_SO-dbg`'LS
+Section: debug
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`any')
+ifdef(`TARGET',`',`Provides: libobjc'OBJC_SO`-dbg-armel [armel], libobjc'OBJC_SO`-dbg-armhf [armhf]
+')`'dnl
+ifdef(`MULTIARCH', `Multi-Arch: same
+')`'dnl
+Priority: extra
+Depends: BASELDEP, 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.
+')`'dnl libobjc
+
+ifenabled(`lib64objc',`
+Package: lib64objc`'OBJC_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs')
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: Runtime library for GNU Objective-C applications (64bit)
+ Library needed for GNU ObjC applications linked against the shared library.
+
+Package: lib64objc`'OBJC_SO-dbg`'LS
+Section: debug
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs')
+Priority: extra
+Depends: BASELDEP, libdep(objc`'OBJC_SO,64,=), libdbgdep(gcc`'GCC_SO-dbg,64,>=,${gcc:EpochVersion}), ${misc:Depends}
+BUILT_USING`'dnl
+Description: Runtime library for GNU Objective-C applications (64 bit debug symbols)
+ Library needed for GNU ObjC applications linked against the shared library.
+')`'dnl lib64objc
+
+ifenabled(`lib32objc',`
+Package: lib32objc`'OBJC_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs')
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+Conflicts: ${confl:lib32}
+BUILT_USING`'dnl
+Description: Runtime library for GNU Objective-C applications (32bit)
+ Library needed for GNU ObjC applications linked against the shared library.
+
+Package: lib32objc`'OBJC_SO-dbg`'LS
+Section: debug
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs')
+Priority: extra
+Depends: BASELDEP, libdep(objc`'OBJC_SO,32,=), libdbgdep(gcc`'GCC_SO-dbg,32,>=,${gcc:EpochVersion}), ${misc:Depends}
+BUILT_USING`'dnl
+Description: Runtime library for GNU Objective-C applications (32 bit debug symbols)
+ Library needed for GNU ObjC applications linked against the shared library.
+')`'dnl lib32objc
+
+ifenabled(`libn32objc',`
+Package: libn32objc`'OBJC_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs')
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: Runtime library for GNU Objective-C applications (n32)
+ Library needed for GNU ObjC applications linked against the shared library.
+
+Package: libn32objc`'OBJC_SO-dbg`'LS
+Section: debug
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs')
+Priority: extra
+Depends: BASELDEP, libdep(objc`'OBJC_SO,n32,=), libdbgdep(gcc`'GCC_SO-dbg,n32,>=,${gcc:EpochVersion}), ${misc:Depends}
+BUILT_USING`'dnl
+Description: Runtime library for GNU Objective-C applications (n32 debug symbols)
+ Library needed for GNU ObjC applications linked against the shared library.
+')`'dnl libn32objc
+
+ifenabled(`libx32objc',`
+Package: libx32objc`'OBJC_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs')
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: Runtime library for GNU Objective-C applications (x32)
+ Library needed for GNU ObjC applications linked against the shared library.
+
+Package: libx32objc`'OBJC_SO-dbg`'LS
+Section: debug
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs')
+Priority: extra
+Depends: BASELDEP, libdep(objc`'OBJC_SO,x32,=), libdbgdep(gcc`'GCC_SO-dbg,x32,>=,${gcc:EpochVersion}), ${misc:Depends}
+BUILT_USING`'dnl
+Description: Runtime library for GNU Objective-C applications (x32 debug symbols)
+ Library needed for GNU ObjC applications linked against the shared library.
+')`'dnl libx32objc
+
+ifenabled(`libhfobjc',`
+Package: libhfobjc`'OBJC_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs')
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+ifdef(`TARGET',`dnl',`Conflicts: libobjc'OBJC_SO`-armhf [biarchhf_archs]')
+BUILT_USING`'dnl
+Description: Runtime library for GNU Objective-C applications (hard float ABI)
+ Library needed for GNU ObjC applications linked against the shared library.
+
+Package: libhfobjc`'OBJC_SO-dbg`'LS
+Section: debug
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs')
+Priority: extra
+Depends: BASELDEP, libdep(objc`'OBJC_SO,hf,=), libdbgdep(gcc`'GCC_SO-dbg,hf,>=,${gcc:EpochVersion}), ${misc:Depends}
+ifdef(`TARGET',`dnl',`Conflicts: libobjc'OBJC_SO`-dbg-armhf [biarchhf_archs]')
+BUILT_USING`'dnl
+Description: Runtime library for GNU Objective-C applications (hard float ABI debug symbols)
+ Library needed for GNU ObjC applications linked against the shared library.
+')`'dnl libhfobjc
+
+ifenabled(`libsfobjc',`
+Package: libsfobjc`'OBJC_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs')
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+ifdef(`TARGET',`dnl',`Conflicts: libobjc'OBJC_SO`-armel [biarchsf_archs]')
+BUILT_USING`'dnl
+Description: Runtime library for GNU Objective-C applications (soft float ABI)
+ Library needed for GNU ObjC applications linked against the shared library.
+
+Package: libsfobjc`'OBJC_SO-dbg`'LS
+Section: debug
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs')
+Priority: extra
+Depends: BASELDEP, libdep(objc`'OBJC_SO,sf,=), libdbgdep(gcc`'GCC_SO-dbg,sf,>=,${gcc:EpochVersion}), ${misc:Depends}
+ifdef(`TARGET',`dnl',`Conflicts: libobjc'OBJC_SO`-dbg-armel [biarchsf_archs]')
+BUILT_USING`'dnl
+Description: Runtime library for GNU Objective-C applications (soft float ABI debug symbols)
+ Library needed for GNU ObjC applications linked against the shared library.
+')`'dnl libsfobjc
+
+ifenabled(`libneonobjc',`
+Package: libobjc`'OBJC_SO-neon`'LS
+Section: libs
+Architecture: NEON_ARCHS
+Priority: PRI(optional)
+Depends: BASELDEP, libc6-neon`'LS, ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: Runtime library for GNU Objective-C applications  [NEON version]
+ Library needed for GNU ObjC applications linked against the shared library.
+ .
+ This set of libraries is optimized to use a NEON coprocessor, and will
+ be selected instead when running under systems which have one.
+')`'dnl libneonobjc
+')`'dnl objc
+
+ifenabled(`fortran',`
+ifenabled(`fdev',`
+Package: gfortran`'PV`'TS
+Architecture: any
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASEDEP, gcc`'PV`'TS (= ${gcc:Version}), libidevdep(gfortran`'PV-dev,,=), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends}
+Provides: fortran95-compiler, ${fortran:mod-version}
+Suggests: ${gfortran:multilib}, gfortran`'PV-doc, libdbgdep(gfortran`'FORTRAN_SO-dbg,)
+BUILT_USING`'dnl
+Description: GNU Fortran compiler
+ This is the GNU Fortran compiler, which compiles
+ Fortran on platforms supported by the gcc compiler. It uses the
+ gcc backend to generate optimized code.
+
+ifenabled(`multilib',`
+Package: gfortran`'PV-multilib`'TS
+Architecture: ifdef(`TARGET',`any',MULTILIB_ARCHS)
+Section: devel
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASEDEP, gfortran`'PV`'TS (= ${gcc:Version}), gcc`'PV-multilib`'TS (= ${gcc:Version}), ${dep:libgfortranbiarchdev}, ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: GNU Fortran compiler (multilib support)`'ifdef(`TARGET)',` (cross compiler for TARGET architecture)', `')
+ This is the GNU Fortran compiler, which compiles Fortran on platforms
+ supported by the gcc compiler.
+ .
+ This is a dependency package, depending on development packages
+ for the non-default multilib architecture(s).
+')`'dnl multilib
+
+ifenabled(`gfdldoc',`
+Package: gfortran`'PV-doc
+Architecture: all
+Section: doc
+Priority: PRI(optional)
+Depends: gcc`'PV-base (>= ${gcc:SoftVersion}), dpkg (>= 1.15.4) | install-info, ${misc:Depends}
+Description: Documentation for the GNU Fortran compiler (gfortran)
+ Documentation for the GNU Fortran compiler in info `format'.
+')`'dnl gfdldoc
+
+Package: libgfortran`'PV-dev`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`any')
+Section: ifdef(`TARGET',`devel',`libdevel')
+Priority: ifdef(`TARGET',`extra',PRI(optional))
+Depends: BASELDEP, libdevdep(gcc`'PV-dev`',), libdep(gfortran`'FORTRAN_SO,), ${shlibs:Depends}, ${misc:Depends}
+ifdef(`MULTIARCH', `Multi-Arch: same
+')`'dnl
+BUILT_USING`'dnl
+Description: Runtime library for GNU Fortran applications (development files)
+ This package contains the headers and static library files needed to build
+ GNU Fortran applications.
+
+Package: lib64gfortran`'PV-dev`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs')
+Section: libdevel
+Priority: ifdef(`TARGET',`extra',PRI(optional))
+Depends: BASELDEP, libdevdep(gcc`'PV-dev`',64), libdep(gfortran`'FORTRAN_SO,64), ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: Runtime library for GNU Fortran applications (64bit development files)
+ This package contains the headers and static library files needed to build
+ GNU Fortran applications.
+
+Package: lib32gfortran`'PV-dev`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs')
+Section: libdevel
+Priority: ifdef(`TARGET',`extra',PRI(optional))
+Depends: BASELDEP, libdevdep(gcc`'PV-dev`',32), libdep(gfortran`'FORTRAN_SO,32), ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: Runtime library for GNU Fortran applications (32bit development files)
+ This package contains the headers and static library files needed to build
+ GNU Fortran applications.
+
+Package: libn32gfortran`'PV-dev`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs')
+Section: libdevel
+Priority: ifdef(`TARGET',`extra',PRI(optional))
+Depends: BASELDEP, libdevdep(gcc`'PV-dev`',n32), libdep(gfortran`'FORTRAN_SO,n32), ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: Runtime library for GNU Fortran applications (n32 development files)
+ This package contains the headers and static library files needed to build
+ GNU Fortran applications.
+
+ifenabled(`x32dev',`
+Package: libx32gfortran`'PV-dev`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs')
+Section: libdevel
+Priority: ifdef(`TARGET',`extra',PRI(optional))
+Depends: BASELDEP, libdevdep(gcc`'PV-dev`',x32), libdep(gfortran`'FORTRAN_SO,x32), ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: Runtime library for GNU Fortran applications (x32 development files)
+ This package contains the headers and static library files needed to build
+ GNU Fortran applications.
+')`'dnl libx32gfortran
+
+ifenabled(`armml',`
+Package: libhfgfortran`'PV-dev`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs')
+Section: libdevel
+Priority: ifdef(`TARGET',`extra',PRI(optional))
+Depends: BASELDEP, libdevdep(gcc`'PV-dev`',hf), libdep(gfortran`'FORTRAN_SO,hf), ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: Runtime library for GNU Fortran applications (hard float ABI development files)
+ This package contains the headers and static library files needed to build
+ GNU Fortran applications.
+')`'dnl armml
+
+ifenabled(`armml',`
+Package: libsfgfortran`'PV-dev`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs')
+Section: libdevel
+Priority: ifdef(`TARGET',`extra',PRI(optional))
+Depends: BASELDEP, libdevdep(gcc`'PV-dev`',sf), libdep(gfortran`'FORTRAN_SO,sf), ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: Runtime library for GNU Fortran applications (soft float ABI development files)
+ This package contains the headers and static library files needed to build
+ GNU Fortran applications.
+')`'dnl armml
+')`'dnl fdev
+
+ifenabled(`libgfortran',`
+Package: libgfortran`'FORTRAN_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`any')
+ifdef(`TARGET',`',`Provides: libgfortran'FORTRAN_SO`-armel [armel], libgfortran'FORTRAN_SO`-armhf [armhf]
+')`'dnl
+ifdef(`MULTIARCH', `Multi-Arch: same
+Pre-Depends: ${misc:Pre-Depends}
+Breaks: ${multiarch:breaks}
+')`'dnl
+Priority: ifdef(`TARGET',`extra',PRI(optional))
+Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: Runtime library for GNU Fortran applications
+ Library needed for GNU Fortran applications linked against the
+ shared library.
+
+Package: libgfortran`'FORTRAN_SO-dbg`'LS
+Section: debug
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`any')
+ifdef(`TARGET',`',`Provides: libgfortran'FORTRAN_SO`-dbg-armel [armel], libgfortran'FORTRAN_SO`-dbg-armhf [armhf]
+')`'dnl
+ifdef(`MULTIARCH', `Multi-Arch: same
+')`'dnl
+Priority: extra
+Depends: BASELDEP, 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
+ shared library.
+')`'dnl libgfortran
+
+ifenabled(`lib64gfortran',`
+Package: lib64gfortran`'FORTRAN_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs')
+Priority: ifdef(`TARGET',`extra',PRI(optional))
+Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: Runtime library for GNU Fortran applications (64bit)
+ Library needed for GNU Fortran applications linked against the
+ shared library.
+
+Package: lib64gfortran`'FORTRAN_SO-dbg`'LS
+Section: debug
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs')
+Priority: extra
+Depends: BASELDEP, libdep(gfortran`'FORTRAN_SO,64,=), ${misc:Depends}
+BUILT_USING`'dnl
+Description: Runtime library for GNU Fortran applications (64bit debug symbols)
+ Library needed for GNU Fortran applications linked against the
+ shared library.
+')`'dnl lib64gfortran
+
+ifenabled(`lib32gfortran',`
+Package: lib32gfortran`'FORTRAN_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs')
+Priority: ifdef(`TARGET',`extra',PRI(optional))
+Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+Conflicts: ${confl:lib32}
+BUILT_USING`'dnl
+Description: Runtime library for GNU Fortran applications (32bit)
+ Library needed for GNU Fortran applications linked against the
+ shared library.
+
+Package: lib32gfortran`'FORTRAN_SO-dbg`'LS
+Section: debug
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs')
+Priority: extra
+Depends: BASELDEP, libdep(gfortran`'FORTRAN_SO,32,=), ${misc:Depends}
+BUILT_USING`'dnl
+Description: Runtime library for GNU Fortran applications (32 bit debug symbols)
+ Library needed for GNU Fortran applications linked against the
+ shared library.
+')`'dnl lib32gfortran
+
+ifenabled(`libn32gfortran',`
+Package: libn32gfortran`'FORTRAN_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs')
+Priority: ifdef(`TARGET',`extra',PRI(optional))
+Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: Runtime library for GNU Fortran applications (n32)
+ Library needed for GNU Fortran applications linked against the
+ shared library.
+
+Package: libn32gfortran`'FORTRAN_SO-dbg`'LS
+Section: debug
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs')
+Priority: extra
+Depends: BASELDEP, libdep(gfortran`'FORTRAN_SO,n32,=), ${misc:Depends}
+BUILT_USING`'dnl
+Description: Runtime library for GNU Fortran applications (n32 debug symbols)
+ Library needed for GNU Fortran applications linked against the
+ shared library.
+')`'dnl libn32gfortran
+
+ifenabled(`libx32gfortran',`
+Package: libx32gfortran`'FORTRAN_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs')
+Priority: ifdef(`TARGET',`extra',PRI(optional))
+Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: Runtime library for GNU Fortran applications (x32)
+ Library needed for GNU Fortran applications linked against the
+ shared library.
+
+Package: libx32gfortran`'FORTRAN_SO-dbg`'LS
+Section: debug
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs')
+Priority: extra
+Depends: BASELDEP, libdep(gfortran`'FORTRAN_SO,x32,=), ${misc:Depends}
+BUILT_USING`'dnl
+Description: Runtime library for GNU Fortran applications (x32 debug symbols)
+ Library needed for GNU Fortran applications linked against the
+ shared library.
+')`'dnl libx32gfortran
+
+ifenabled(`libhfgfortran',`
+Package: libhfgfortran`'FORTRAN_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs')
+Priority: ifdef(`TARGET',`extra',PRI(optional))
+Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+ifdef(`TARGET',`dnl',`Conflicts: libgfortran'FORTRAN_SO`-armhf [biarchhf_archs]')
+BUILT_USING`'dnl
+Description: Runtime library for GNU Fortran applications (hard float ABI)
+ Library needed for GNU Fortran applications linked against the
+ shared library.
+
+Package: libhfgfortran`'FORTRAN_SO-dbg`'LS
+Section: debug
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs')
+Priority: extra
+Depends: BASELDEP, libdep(gfortran`'FORTRAN_SO,hf,=), ${misc:Depends}
+ifdef(`TARGET',`dnl',`Conflicts: libgfortran'FORTRAN_SO`-dbg-armhf [biarchhf_archs]')
+BUILT_USING`'dnl
+Description: Runtime library for GNU Fortran applications (hard float ABI debug symbols)
+ Library needed for GNU Fortran applications linked against the
+ shared library.
+')`'dnl libhfgfortran
+
+ifenabled(`libsfgfortran',`
+Package: libsfgfortran`'FORTRAN_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs')
+Priority: ifdef(`TARGET',`extra',PRI(optional))
+Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+ifdef(`TARGET',`dnl',`Conflicts: libgfortran'FORTRAN_SO`-armel [biarchsf_archs]')
+BUILT_USING`'dnl
+Description: Runtime library for GNU Fortran applications (soft float ABI)
+ Library needed for GNU Fortran applications linked against the
+ shared library.
+
+Package: libsfgfortran`'FORTRAN_SO-dbg`'LS
+Section: debug
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs')
+Priority: extra
+Depends: BASELDEP, libdep(gfortran`'FORTRAN_SO,sf,=), ${misc:Depends}
+ifdef(`TARGET',`dnl',`Conflicts: libgfortran'FORTRAN_SO`-dbg-armel [biarchsf_archs]')
+BUILT_USING`'dnl
+Description: Runtime library for GNU Fortran applications (hard float ABI debug symbols)
+ Library needed for GNU Fortran applications linked against the
+ shared library.
+')`'dnl libsfgfortran
+
+ifenabled(`libneongfortran',`
+Package: libgfortran`'FORTRAN_SO-neon`'LS
+Section: libs
+Architecture: NEON_ARCHS
+ifdef(`MULTIARCH', `Multi-Arch: same
+Pre-Depends: ${misc:Pre-Depends}
+Breaks: ${multiarch:breaks}
+')`'dnl
+Priority: extra
+Depends: BASELDEP, libgcc1-neon`'LS, ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: Runtime library for GNU Fortran applications [NEON version]
+ Library needed for GNU Fortran applications linked against the
+ shared library.
+ .
+ This set of libraries is optimized to use a NEON coprocessor, and will
+ be selected instead when running under systems which have one.
+')`'dnl libneongfortran
+')`'dnl fortran
+
+ifenabled(`ggo',`
+ifenabled(`godev',`
+Package: gccgo`'PV`'TS
+Architecture: any
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASEDEP, ifdef(`STANDALONEGO',`${dep:libcc1}, ',`gcc`'PV`'TS (= ${gcc:Version}), ')libidevdep(go`'GO_SO,,>=), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends}
+Provides: go-compiler
+Suggests: ${go:multilib}, gccgo`'PV-doc, libdbgdep(go`'GO_SO-dbg,)
+Conflicts: ${golang:Conflicts}
+BUILT_USING`'dnl
+Description: GNU Go compiler
+ This is the GNU Go compiler, which compiles Go on platforms supported
+ by the gcc compiler. It uses the gcc backend to generate optimized code.
+
+ifenabled(`multilib',`
+Package: gccgo`'PV-multilib`'TS
+Architecture: ifdef(`TARGET',`any',MULTILIB_ARCHS)
+Section: devel
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASEDEP, gccgo`'PV`'TS (= ${gcc:Version}), ifdef(`STANDALONEGO',,`gcc`'PV-multilib`'TS (= ${gcc:Version}), ')${dep:libgobiarch}, ${shlibs:Depends}, ${misc:Depends}
+Suggests: ${dep:libgobiarchdbg}
+BUILT_USING`'dnl
+Description: GNU Go compiler (multilib support)`'ifdef(`TARGET)',` (cross compiler for TARGET architecture)', `')
+ This is the GNU Go compiler, which compiles Go on platforms supported
+ by the gcc compiler.
+ .
+ This is a dependency package, depending on development packages
+ for the non-default multilib architecture(s).
+')`'dnl multilib
+
+ifenabled(`gfdldoc',`
+Package: gccgo`'PV-doc
+Architecture: all
+Section: doc
+Priority: PRI(optional)
+Depends: gcc`'PV-base (>= ${gcc:SoftVersion}), dpkg (>= 1.15.4) | install-info, ${misc:Depends}
+BUILT_USING`'dnl
+Description: Documentation for the GNU Go compiler (gccgo)
+ Documentation for the GNU Go compiler in info `format'.
+')`'dnl gfdldoc
+')`'dnl fdev
+
+ifenabled(`libggo',`
+Package: libgo`'GO_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`any')
+ifdef(`TARGET',`',`Provides: libgo'GO_SO`-armel [armel], libgo'GO_SO`-armhf [armhf]
+')`'dnl
+ifdef(`MULTIARCH', `Multi-Arch: same
+Pre-Depends: ${misc:Pre-Depends}
+')`'dnl
+Priority: ifdef(`TARGET',`extra',PRI(optional))
+Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends}
+Replaces: libgo3`'LS
+BUILT_USING`'dnl
+Description: Runtime library for GNU Go applications
+ Library needed for GNU Go applications linked against the
+ shared library.
+
+Package: libgo`'GO_SO-dbg`'LS
+Section: debug
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`any')
+ifdef(`TARGET',`',`Provides: libgo'GO_SO`-dbg-armel [armel], libgo'GO_SO`-dbg-armhf [armhf]
+')`'dnl
+ifdef(`MULTIARCH', `Multi-Arch: same
+')`'dnl
+Priority: extra
+Depends: BASELDEP, libdep(go`'GO_SO,,=), ${misc:Depends}
+BUILT_USING`'dnl
+Description: Runtime library for GNU Go applications (debug symbols)
+ Library needed for GNU Go applications linked against the
+ shared library. This currently is an empty package, because the
+ library is completely unstripped.
+')`'dnl libgo
+
+ifenabled(`lib64ggo',`
+Package: lib64go`'GO_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs')
+Priority: ifdef(`TARGET',`extra',PRI(optional))
+Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+Replaces: lib64go3`'LS
+BUILT_USING`'dnl
+Description: Runtime library for GNU Go applications (64bit)
+ Library needed for GNU Go applications linked against the
+ shared library.
+
+Package: lib64go`'GO_SO-dbg`'LS
+Section: debug
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs')
+Priority: extra
+Depends: BASELDEP, libdep(go`'GO_SO,64,=), ${misc:Depends}
+BUILT_USING`'dnl
+Description: Runtime library for GNU Go applications (64bit debug symbols)
+ Library needed for GNU Go applications linked against the
+ shared library. This currently is an empty package, because the
+ library is completely unstripped.
+')`'dnl lib64go
+
+ifenabled(`lib32ggo',`
+Package: lib32go`'GO_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs')
+Priority: ifdef(`TARGET',`extra',PRI(optional))
+Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+Conflicts: ${confl:lib32}
+Replaces: lib32go3`'LS
+BUILT_USING`'dnl
+Description: Runtime library for GNU Go applications (32bit)
+ Library needed for GNU Go applications linked against the
+ shared library.
+
+Package: lib32go`'GO_SO-dbg`'LS
+Section: debug
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs')
+Priority: extra
+Depends: BASELDEP, libdep(go`'GO_SO,32,=), ${misc:Depends}
+BUILT_USING`'dnl
+Description: Runtime library for GNU Go applications (32 bit debug symbols)
+ Library needed for GNU Go applications linked against the
+ shared library. This currently is an empty package, because the
+ library is completely unstripped.
+')`'dnl lib32go
+
+ifenabled(`libn32ggo',`
+Package: libn32go`'GO_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs')
+Priority: ifdef(`TARGET',`extra',PRI(optional))
+Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+Replaces: libn32go3`'LS
+BUILT_USING`'dnl
+Description: Runtime library for GNU Go applications (n32)
+ Library needed for GNU Go applications linked against the
+ shared library.
+
+Package: libn32go`'GO_SO-dbg`'LS
+Section: debug
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs')
+Priority: extra
+Depends: BASELDEP, libdep(go`'GO_SO,n32,=), ${misc:Depends}
+BUILT_USING`'dnl
+Description: Runtime library for GNU Go applications (n32 debug symbols)
+ Library needed for GNU Go applications linked against the
+ shared library. This currently is an empty package, because the
+ library is completely unstripped.
+')`'dnl libn32go
+
+ifenabled(`libx32ggo',`
+Package: libx32go`'GO_SO`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs')
+Priority: ifdef(`TARGET',`extra',PRI(optional))
+Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+Replaces: libx32go3`'LS
+BUILT_USING`'dnl
+Description: Runtime library for GNU Go applications (x32)
+ Library needed for GNU Go applications linked against the
+ shared library.
+
+Package: libx32go`'GO_SO-dbg`'LS
+Section: debug
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs')
+Priority: extra
+Depends: BASELDEP, libdep(go`'GO_SO,x32,=), ${misc:Depends}
+BUILT_USING`'dnl
+Description: Runtime library for GNU Go applications (x32 debug symbols)
+ Library needed for GNU Go applications linked against the
+ shared library. This currently is an empty package, because the
+ library is completely unstripped.
+')`'dnl libx32go
+')`'dnl ggo
+
+ifenabled(`java',`
+ifenabled(`gcj',`
+Package: gcj`'PV`'TS
+Section: java
+Architecture: any
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASEDEP, ${dep:gcj}, ${dep:gcjcross}, ${dep:libcdev}, ${dep:ecj}, ${shlibs:Depends}, dpkg (>= 1.15.4) | install-info, ${misc:Depends}
+Recommends: libecj-java-gcj
+Replaces: gcj-5-jdk (<< 5.2.1-19)
+Suggests: gcj`'PV-jdk
+BUILT_USING`'dnl
+Description: GCJ byte code and native compiler 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.
+ .
+ifdef(`TARGET',`'dnl
+,` Install the gcj`'PV`'TS-jdk package for a more complete SDK environment.
+')`'dnl
+')`'dnl gcj
+
+ifenabled(`libgcj',`
+ifenabled(`libgcjcommon',`
+Package: libgcj-common
+Section: java
+Architecture: all
+Priority: PRI(optional)
+Depends: BASEDEP, ${misc:Depends}
+Conflicts: classpath (<= 0.04-4)
+Replaces: java-gcj-compat (<< 1.0.65-3), java-gcj-compat-dev (<< 1.0.65-3)
+BUILT_USING`'dnl
+Description: Java runtime library (common files)
+ This package contains files shared by Classpath and libgcj libraries.
+')`'dnl libgcjcommon
+
+
+Package: gcj`'PV-jdk`'TS
+Section: java
+Architecture: any
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASEDEP, ${dep:gcj}, ${dep:libcdev}, gcj`'PV`'TS (= ${gcj:Version}), gcj`'PV-jre`'TS (= ${gcj:Version}), libidevdep(gcj`'GCJ_SO-dev,,=,${gcj:Version}), fastjar, libgcj-bc`'LS, java-common, libantlr-java, ${shlibs:Depends}, dpkg (>= 1.15.4) | install-info, ${misc:Depends}
+Recommends: libecj-java-gcj
+Suggests: gcj`'PV-source (>= ${gcj:SoftVersion}), libdbgdep(gcj`'GCJ_SO-dbg,)
+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)
+BUILT_USING`'dnl
+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`'PV-jre-headless`'TS
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Section: java
+Architecture: any
+Depends: BASEDEP, gcj`'PV-jre-lib`'TS (>= ${gcj:SoftVersion}), libdep(gcj`'LIBGCJ_EXT,,=,${gcj:Version}), ${dep:prctl}, ${shlibs:Depends}, ${misc:Depends}
+Suggests: fastjar, gcj`'PV-jdk`'TS (= ${gcj:Version}), libdep(gcj`'LIBGCJ_EXT-awt,,=,${gcj:Version})
+Provides: java5-runtime-headless, java2-runtime-headless, java1-runtime-headless, java-runtime-headless
+BUILT_USING`'dnl
+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`'PV-jre`'TS
+Section: java
+Architecture: any
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASEDEP, gcj`'PV-jre-headless`'TS (= ${gcj:Version}), libdep(gcj`'LIBGCJ_EXT-awt,,=,${gcj:Version}), ${shlibs:Depends}, ${misc:Depends}
+Provides: java5-runtime, java2-runtime, java1-runtime, java-runtime
+BUILT_USING`'dnl
+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: libgcj`'LIBGCJ_EXT`'LS
+Section: libs
+Architecture: any
+Priority: PRI(optional)
+ifdef(`MULTIARCH', `Pre-Depends: ${misc:Pre-Depends}
+Multi-Arch: same
+')`'dnl
+Depends: SOFTBASEDEP, libgcj-common (>= 1:4.1.1-21), ${shlibs:Depends}, ${misc:Depends}
+Recommends: gcj`'PV-jre-lib`'TS (>= ${gcj:SoftVersion})
+Suggests: libdbgdep(gcj`'GCJ_SO-dbg,), libdep(gcj`'LIBGCJ_EXT-awt,,=,${gcj:Version})
+BUILT_USING`'dnl
+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
+ libgcj`'GCJ_SO-dbg and binutils are required.
+
+Package: gcj`'PV-jre-lib`'TS
+Section: java
+Architecture: all
+Priority: PRI(optional)
+Depends: SOFTBASEDEP, libdep(gcj`'LIBGCJ_EXT,,>=,${gcj:SoftVersion}), ${misc:Depends}
+BUILT_USING`'dnl
+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.
+
+ifenabled(`gcjbc',`
+Package: libgcj-bc
+Section: java
+Architecture: any
+Priority: PRI(optional)
+ifdef(`MULTIARCH', `Pre-Depends: ${misc:Pre-Depends}
+Multi-Arch: same
+')`'dnl
+Depends: BASEDEP, libdep(gcj`'LIBGCJ_EXT,,>=,${gcj:Version}), ${misc:Depends}
+BUILT_USING`'dnl
+Description: Link time only library for use with gcj
+ A fake library that is used at link time only.  It ensures that
+ binaries built with the BC-ABI link against a constant SONAME.
+ This way, BC-ABI binaries continue to work if the SONAME underlying
+ libgcj.so changes.
+')`'dnl gcjbc
+
+Package: libgcj`'LIBGCJ_EXT-awt`'LS
+Section: libs
+Architecture: any
+Priority: PRI(optional)
+ifdef(`MULTIARCH', `Pre-Depends: ${misc:Pre-Depends}
+Multi-Arch: same
+')`'dnl
+Depends: SOFTBASEDEP, libdep(gcj`'LIBGCJ_EXT,,=,${gcj:Version}), ${shlibs:Depends}, ${misc:Depends}
+Suggests: ${pkg:gcjqt}
+BUILT_USING`'dnl
+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).
+
+ifenabled(`gtkpeer',`
+Package: libgcj`'GCJ_SO-awt-gtk`'LS
+Section: libs
+Architecture: any
+Priority: PRI(optional)
+ifdef(`MULTIARCH', `Pre-Depends: ${misc:Pre-Depends}
+Multi-Arch: same
+')`'dnl
+Depends: SOFTBASEDEP, libgcj`'LIBGCJ_EXT-awt`'LS (= ${gcj:Version}), ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: AWT GTK+ peer runtime library for use with libgcj
+ This is the runtime library holding the GTK+ based AWT peer
+ implementation for libgcj.
+')`'dnl gtkpeer
+
+ifenabled(`qtpeer',`
+Package: libgcj`'GCJ_SO-awt-qt`'LS
+Section: libs
+Architecture: any
+Priority: PRI(optional)
+ifdef(`MULTIARCH', `Pre-Depends: ${misc:Pre-Depends}
+Multi-Arch: same
+')`'dnl
+Depends: SOFTBASEDEP, libdep(gcj`'LIBGCJ_EXT-awt,,=,${gcj:Version}), ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: AWT QT peer runtime library for use with libgcj
+ This is the runtime library holding the QT based AWT peer
+ implementation for libgcj.
+')`'dnl qtpeer
+')`'dnl libgcj
+
+ifenabled(`libgcjdev',`
+Package: libgcj`'GCJ_SO-dev`'LS
+Section: libdevel
+Architecture: any
+ifdef(`MULTIARCH', `Multi-Arch: same
+')`'dnl
+Priority: PRI(optional)
+Depends: BASEDEP, libdep(gcj`'LIBGCJ_EXT-awt,,=,${gcj:Version}), libgcj-bc`'LS, ${pkg:gcjgtk}, ${pkg:gcjqt}, zlib1g-dev, ${shlibs:Depends}, ${misc:Depends}
+Suggests: libgcj-doc
+BUILT_USING`'dnl
+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: libgcj`'GCJ_SO-dbg`'LS
+Section: debug
+Architecture: any
+Priority: extra
+ifdef(`MULTIARCH', `Pre-Depends: ${misc:Pre-Depends}
+Multi-Arch: same
+')`'dnl
+Depends: BASEDEP, libdep(gcj`'LIBGCJ_EXT,,=,${gcj:Version}), ${misc:Depends}
+Recommends: binutils, libc6-dbg | libc-dbg
+BUILT_USING`'dnl
+Description: Debugging symbols for libraries provided in libgcj`'GCJ_SO-dev
+ The package provides debugging symbols for the libraries provided
+ in libgcj`'GCJ_SO-dev.
+ .
+ binutils is required to show file names and line numbers in stack traces.
+
+ifenabled(`gcjsrc',`
+Package: gcj`'PV-source
+Section: java
+Architecture: all
+Priority: PRI(optional)
+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
+ environments like eclipse and netbeans.
+')`'dnl
+
+ifenabled(`gcjdoc',`
+Package: libgcj-doc
+Section: doc
+Architecture: all
+Priority: PRI(optional)
+Depends: SOFTBASEDEP, ${misc:Depends}
+Enhances: libgcj`'GCJ_SO-dev
+Provides: classpath-doc
+BUILT_USING`'dnl
+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.
+')`'dnl gcjdoc
+')`'dnl libgcjdev
+')`'dnl java
+
+ifenabled(`c++',`
+ifenabled(`libcxx',`
+Package: libstdc++CXX_SO`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`any')
+Section: ifdef(`TARGET',`devel',`libs')
+Priority: ifdef(`TARGET',`extra',PRI(important))
+Depends: BASELDEP, ${dep:libc}, ${shlibs:Depends}, ${misc:Depends}
+Provides: ifdef(`TARGET',`libstdc++CXX_SO-TARGET-dcv1',`libstdc++'CXX_SO`-armel [armel], libstdc++'CXX_SO`-armhf [armhf]')
+ifdef(`MULTIARCH', `Multi-Arch: same
+Pre-Depends: ${misc:Pre-Depends}
+Breaks: ${multiarch:breaks}, PR66145BREAKS
+')`'dnl
+Conflicts: scim (<< 1.4.2-1)
+Replaces: libstdc++CXX_SO`'PV-dbg`'LS (<< 4.9.0-3)
+BUILT_USING`'dnl
+Description: GNU Standard C++ Library v3`'ifdef(`TARGET)',` (TARGET)', `')
+ This package contains an additional runtime library for C++ programs
+ built with the GNU compiler.
+ .
+ libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which
+ was included up to g++-2.95. The first version of libstdc++-v3 appeared
+ in g++-3.0.
+ifdef(`TARGET', `dnl
+ .
+ This package contains files for TARGET architecture, for use in cross-compile
+ environment.
+')`'dnl
+')`'dnl libcxx
+
+ifenabled(`lib32cxx',`
+Package: lib32stdc++CXX_SO`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs')
+Section: ifdef(`TARGET',`devel',`libs')
+Priority: ifdef(`TARGET',`extra',PRI(optional))
+Depends: BASELDEP, libdep(gcc1,32), ${shlibs:Depends}, ${misc:Depends}
+Conflicts: ${confl:lib32}
+ifdef(`TARGET',`Provides: lib32stdc++CXX_SO-TARGET-dcv1
+',`')`'dnl
+BUILT_USING`'dnl
+Description: GNU Standard C++ Library v3 (32 bit Version)
+ This package contains an additional runtime library for C++ programs
+ built with the GNU compiler.
+ifdef(`TARGET', `dnl
+ .
+ This package contains files for TARGET architecture, for use in cross-compile
+ environment.
+')`'dnl
+')`'dnl lib32cxx
+
+ifenabled(`lib64cxx',`
+Package: lib64stdc++CXX_SO`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs')
+Section: ifdef(`TARGET',`devel',`libs')
+Priority: ifdef(`TARGET',`extra',PRI(optional))
+Depends: BASELDEP, libdep(gcc1,64), ${shlibs:Depends}, ${misc:Depends}
+ifdef(`TARGET',`Provides: lib64stdc++CXX_SO-TARGET-dcv1
+',`')`'dnl
+BUILT_USING`'dnl
+Description: GNU Standard C++ Library v3`'ifdef(`TARGET)',` (TARGET)', `') (64bit)
+ This package contains an additional runtime library for C++ programs
+ built with the GNU compiler.
+ .
+ libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which
+ was included up to g++-2.95. The first version of libstdc++-v3 appeared
+ in g++-3.0.
+ifdef(`TARGET', `dnl
+ .
+ This package contains files for TARGET architecture, for use in cross-compile
+ environment.
+')`'dnl
+')`'dnl lib64cxx
+
+ifenabled(`libn32cxx',`
+Package: libn32stdc++CXX_SO`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs')
+Section: ifdef(`TARGET',`devel',`libs')
+Priority: ifdef(`TARGET',`extra',PRI(optional))
+Depends: BASELDEP, libdep(gcc1,n32), ${shlibs:Depends}, ${misc:Depends}
+ifdef(`TARGET',`Provides: libn32stdc++CXX_SO-TARGET-dcv1
+',`')`'dnl
+BUILT_USING`'dnl
+Description: GNU Standard C++ Library v3`'ifdef(`TARGET)',` (TARGET)', `') (n32)
+ This package contains an additional runtime library for C++ programs
+ built with the GNU compiler.
+ .
+ libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which
+ was included up to g++-2.95. The first version of libstdc++-v3 appeared
+ in g++-3.0.
+ifdef(`TARGET', `dnl
+ .
+ This package contains files for TARGET architecture, for use in cross-compile
+ environment.
+')`'dnl
+')`'dnl libn32cxx
+
+ifenabled(`libx32cxx',`
+Package: libx32stdc++CXX_SO`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs')
+Section: ifdef(`TARGET',`devel',`libs')
+Priority: ifdef(`TARGET',`extra',PRI(optional))
+Depends: BASELDEP, libdep(gcc1,x32), ${shlibs:Depends}, ${misc:Depends}
+ifdef(`TARGET',`Provides: libx32stdc++CXX_SO-TARGET-dcv1
+',`')`'dnl
+BUILT_USING`'dnl
+Description: GNU Standard C++ Library v3`'ifdef(`TARGET)',` (TARGET)', `') (x32)
+ This package contains an additional runtime library for C++ programs
+ built with the GNU compiler.
+ .
+ libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which
+ was included up to g++-2.95. The first version of libstdc++-v3 appeared
+ in g++-3.0.
+ifdef(`TARGET', `dnl
+ .
+ This package contains files for TARGET architecture, for use in cross-compile
+ environment.
+')`'dnl
+')`'dnl libx32cxx
+
+ifenabled(`libhfcxx',`
+Package: libhfstdc++CXX_SO`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs')
+Section: ifdef(`TARGET',`devel',`libs')
+Priority: ifdef(`TARGET',`extra',PRI(optional))
+Depends: BASELDEP, libdep(gcc1,hf), ${shlibs:Depends}, ${misc:Depends}
+ifdef(`TARGET',`Provides: libhfstdc++CXX_SO-TARGET-dcv1
+',`')`'dnl
+ifdef(`TARGET',`dnl',`Conflicts: libstdc++'CXX_SO`-armhf [biarchhf_archs]')
+BUILT_USING`'dnl
+Description: GNU Standard C++ Library v3`'ifdef(`TARGET)',` (TARGET)', `') (hard float ABI)
+ This package contains an additional runtime library for C++ programs
+ built with the GNU compiler.
+ .
+ libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which
+ was included up to g++-2.95. The first version of libstdc++-v3 appeared
+ in g++-3.0.
+ifdef(`TARGET', `dnl
+ .
+ This package contains files for TARGET architecture, for use in cross-compile
+ environment.
+')`'dnl
+')`'dnl libhfcxx
+
+ifenabled(`libsfcxx',`
+Package: libsfstdc++CXX_SO`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs')
+Section: ifdef(`TARGET',`devel',`libs')
+Priority: ifdef(`TARGET',`extra',PRI(optional))
+Depends: BASELDEP, libdep(gcc1,sf), ${shlibs:Depends}, ${misc:Depends}
+ifdef(`TARGET',`Provides: libsfstdc++CXX_SO-TARGET-dcv1
+',`')`'dnl
+ifdef(`TARGET',`dnl',`Conflicts: libstdc++'CXX_SO`-armel [biarchsf_archs]')
+BUILT_USING`'dnl
+Description: GNU Standard C++ Library v3`'ifdef(`TARGET)',` (TARGET)', `') (soft float ABI)
+ This package contains an additional runtime library for C++ programs
+ built with the GNU compiler.
+ .
+ libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which
+ was included up to g++-2.95. The first version of libstdc++-v3 appeared
+ in g++-3.0.
+ifdef(`TARGET', `dnl
+ .
+ This package contains files for TARGET architecture, for use in cross-compile
+ environment.
+')`'dnl
+')`'dnl libsfcxx
+
+ifenabled(`libneoncxx',`
+Package: libstdc++CXX_SO-neon`'LS
+Architecture: NEON_ARCHS
+Section: libs
+Priority: extra
+Depends: BASELDEP, libc6-neon`'LS, libgcc1-neon`'LS, ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: GNU Standard C++ Library v3 [NEON version]
+ This package contains an additional runtime library for C++ programs
+ built with the GNU compiler.
+ .
+ This set of libraries is optimized to use a NEON coprocessor, and will
+ be selected instead when running under systems which have one.
+')`'dnl
+
+ifenabled(`c++dev',`
+Package: libstdc++`'PV-dev`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`any')
+ifdef(`MULTIARCH', `Multi-Arch: same
+')`'dnl
+Section: ifdef(`TARGET',`devel',`libdevel')
+Priority: ifdef(`TARGET',`extra',PRI(optional))
+Depends: BASELDEP, libdevdep(gcc`'PV-dev,,=),
+ libdep(stdc++CXX_SO,,>=), ${dep:libcdev}, ${misc:Depends}
+ifdef(`TARGET',`',`dnl native
+Conflicts: libg++27-dev, libg++272-dev (<< 2.7.2.8-1), libstdc++2.8-dev,
+ libg++2.8-dev, libstdc++2.9-dev, libstdc++2.9-glibc2.1-dev,
+ libstdc++2.10-dev (<< 1:2.95.3-2), libstdc++3.0-dev
+Suggests: libstdc++`'PV-doc
+')`'dnl native
+Provides: libstdc++-dev`'LS`'ifdef(`TARGET',`, libstdc++-dev-TARGET-dcv1')
+BUILT_USING`'dnl
+Description: GNU Standard C++ Library v3 (development files)`'ifdef(`TARGET)',` (TARGET)', `')
+ This package contains the headers and static library files necessary for
+ building C++ programs which use libstdc++.
+ .
+ libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which
+ was included up to g++-2.95. The first version of libstdc++-v3 appeared
+ in g++-3.0.
+ifdef(`TARGET', `dnl
+ .
+ This package contains files for TARGET architecture, for use in cross-compile
+ environment.
+')`'dnl
+
+Package: libstdc++`'PV-pic`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`any')
+ifdef(`MULTIARCH', `Multi-Arch: same
+')`'dnl
+Section: ifdef(`TARGET',`devel',`libdevel')
+Priority: extra
+Depends: BASELDEP, libdep(stdc++CXX_SO,),
+ libdevdep(stdc++`'PV-dev,), ${misc:Depends}
+ifdef(`TARGET',`Provides: libstdc++-pic-TARGET-dcv1
+',`')`'dnl
+BUILT_USING`'dnl
+Description: GNU Standard C++ Library v3 (shared library subset kit)`'ifdef(`TARGET)',` (TARGET)', `')
+ This is used to develop subsets of the libstdc++ shared libraries for
+ use on custom installation floppies and in embedded systems.
+ .
+ Unless you are making one of those, you will not need this package.
+ifdef(`TARGET', `dnl
+ .
+ This package contains files for TARGET architecture, for use in cross-compile
+ environment.
+')`'dnl
+
+Package: libstdc++CXX_SO`'PV-dbg`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`any')
+Section: debug
+Priority: extra
+Depends: BASELDEP, libdep(stdc++CXX_SO,),
+ libdbgdep(gcc`'GCC_SO-dbg,,>=,${libgcc:Version}), ${shlibs:Depends}, ${misc:Depends}
+Provides: ifdef(`TARGET',`libstdc++CXX_SO-dbg-TARGET-dcv1',`libstdc++'CXX_SO`'PV`-dbg-armel [armel], libstdc++'CXX_SO`'PV`-dbg-armhf [armhf]')
+ifdef(`MULTIARCH', `Multi-Arch: same
+')`'dnl
+Recommends: libdevdep(stdc++`'PV-dev,)
+Conflicts: libstdc++5-dbg`'LS, libstdc++5-3.3-dbg`'LS, libstdc++6-dbg`'LS,
+ libstdc++6-4.0-dbg`'LS, libstdc++6-4.1-dbg`'LS, libstdc++6-4.2-dbg`'LS,
+ libstdc++6-4.3-dbg`'LS, libstdc++6-4.4-dbg`'LS, libstdc++6-4.5-dbg`'LS,
+ libstdc++6-4.6-dbg`'LS, libstdc++6-4.7-dbg`'LS, libstdc++6-4.8-dbg`'LS,
+ libstdc++6-4.9-dbg`'LS
+BUILT_USING`'dnl
+Description: GNU Standard C++ Library v3 (debugging files)`'ifdef(`TARGET)',` (TARGET)', `')
+ This package contains the shared library of libstdc++ compiled with
+ debugging symbols.
+ifdef(`TARGET', `dnl
+ .
+ This package contains files for TARGET architecture, for use in cross-compile
+ environment.
+')`'dnl
+
+Package: lib32stdc++`'PV-dev`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs')
+Section: ifdef(`TARGET',`devel',`libdevel')
+Priority: ifdef(`TARGET',`extra',PRI(optional))
+Depends: BASELDEP, libdevdep(gcc`'PV-dev,32),
+ libdep(stdc++CXX_SO,32), libdevdep(stdc++`'PV-dev,), ${misc:Depends}
+BUILT_USING`'dnl
+Description: GNU Standard C++ Library v3 (development files)`'ifdef(`TARGET',` (TARGET)', `')
+ This package contains the headers and static library files necessary for
+ building C++ programs which use libstdc++.
+ .
+ libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which
+ was included up to g++-2.95. The first version of libstdc++-v3 appeared
+ in g++-3.0.
+ifdef(`TARGET', `dnl
+ .
+ This package contains files for TARGET architecture, for use in cross-compile
+ environment.
+')`'dnl
+
+Package: lib32stdc++CXX_SO`'PV-dbg`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs')
+Section: debug
+Priority: extra
+Depends: BASELDEP, libdep(stdc++CXX_SO,32),
+ libdevdep(stdc++`'PV-dev,), libdbgdep(gcc`'GCC_SO-dbg,32,>=,${gcc:EpochVersion}),
+ ${shlibs:Depends}, ${misc:Depends}
+ifdef(`TARGET',`Provides: lib32stdc++CXX_SO-dbg-TARGET-dcv1
+',`')`'dnl
+Conflicts: lib32stdc++6-dbg`'LS, lib32stdc++6-4.0-dbg`'LS,
+ lib32stdc++6-4.1-dbg`'LS, lib32stdc++6-4.2-dbg`'LS, lib32stdc++6-4.3-dbg`'LS,
+ lib32stdc++6-4.4-dbg`'LS, lib32stdc++6-4.5-dbg`'LS, lib32stdc++6-4.6-dbg`'LS,
+ lib32stdc++6-4.7-dbg`'LS, lib32stdc++6-4.8-dbg`'LS, lib32stdc++6-4.9-dbg`'LS
+BUILT_USING`'dnl
+Description: GNU Standard C++ Library v3 (debugging files)`'ifdef(`TARGET)',` (TARGET)', `')
+ This package contains the shared library of libstdc++ compiled with
+ debugging symbols.
+ifdef(`TARGET', `dnl
+ .
+ This package contains files for TARGET architecture, for use in cross-compile
+ environment.
+')`'dnl
+
+Package: lib64stdc++`'PV-dev`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs')
+Section: ifdef(`TARGET',`devel',`libdevel')
+Priority: ifdef(`TARGET',`extra',PRI(optional))
+Depends: BASELDEP, libdevdep(gcc`'PV-dev,64),
+ libdep(stdc++CXX_SO,64), libdevdep(stdc++`'PV-dev,), ${misc:Depends}
+BUILT_USING`'dnl
+Description: GNU Standard C++ Library v3 (development files)`'ifdef(`TARGET',` (TARGET)', `')
+ This package contains the headers and static library files necessary for
+ building C++ programs which use libstdc++.
+ .
+ libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which
+ was included up to g++-2.95. The first version of libstdc++-v3 appeared
+ in g++-3.0.
+ifdef(`TARGET', `dnl
+ .
+ This package contains files for TARGET architecture, for use in cross-compile
+ environment.
+')`'dnl
+
+Package: lib64stdc++CXX_SO`'PV-dbg`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs')
+Section: debug
+Priority: extra
+Depends: BASELDEP, libdep(stdc++CXX_SO,64),
+ libdevdep(stdc++`'PV-dev,), libdbgdep(gcc`'GCC_SO-dbg,64,>=,${gcc:EpochVersion}),
+ ${shlibs:Depends}, ${misc:Depends}
+ifdef(`TARGET',`Provides: lib64stdc++CXX_SO-dbg-TARGET-dcv1
+',`')`'dnl
+Conflicts: lib64stdc++6-dbg`'LS, lib64stdc++6-4.0-dbg`'LS,
+ lib64stdc++6-4.1-dbg`'LS, lib64stdc++6-4.2-dbg`'LS, lib64stdc++6-4.3-dbg`'LS,
+ lib64stdc++6-4.4-dbg`'LS, lib64stdc++6-4.5-dbg`'LS, lib64stdc++6-4.6-dbg`'LS,
+ lib64stdc++6-4.7-dbg`'LS, lib64stdc++6-4.8-dbg`'LS, lib64stdc++6-4.9-dbg`'LS
+BUILT_USING`'dnl
+Description: GNU Standard C++ Library v3 (debugging files)`'ifdef(`TARGET)',` (TARGET)', `')
+ This package contains the shared library of libstdc++ compiled with
+ debugging symbols.
+ifdef(`TARGET', `dnl
+ .
+ This package contains files for TARGET architecture, for use in cross-compile
+ environment.
+')`'dnl
+
+Package: libn32stdc++`'PV-dev`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs')
+Section: ifdef(`TARGET',`devel',`libdevel')
+Priority: ifdef(`TARGET',`extra',PRI(optional))
+Depends: BASELDEP, libdevdep(gcc`'PV-dev,n32),
+ libdep(stdc++CXX_SO,n32), libdevdep(stdc++`'PV-dev,), ${misc:Depends}
+BUILT_USING`'dnl
+Description: GNU Standard C++ Library v3 (development files)`'ifdef(`TARGET',` (TARGET)', `')
+ This package contains the headers and static library files necessary for
+ building C++ programs which use libstdc++.
+ .
+ libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which
+ was included up to g++-2.95. The first version of libstdc++-v3 appeared
+ in g++-3.0.
+ifdef(`TARGET', `dnl
+ .
+ This package contains files for TARGET architecture, for use in cross-compile
+ environment.
+')`'dnl
+
+Package: libn32stdc++CXX_SO`'PV-dbg`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs')
+Section: debug
+Priority: extra
+Depends: BASELDEP, libdep(stdc++CXX_SO,n32),
+ libdevdep(stdc++`'PV-dev,), libdbgdep(gcc`'GCC_SO-dbg,n32,>=,${gcc:EpochVersion}),
+ ${shlibs:Depends}, ${misc:Depends}
+ifdef(`TARGET',`Provides: libn32stdc++CXX_SO-dbg-TARGET-dcv1
+',`')`'dnl
+Conflicts: libn32stdc++6-dbg`'LS, libn32stdc++6-4.0-dbg`'LS,
+ libn32stdc++6-4.1-dbg`'LS, libn32stdc++6-4.2-dbg`'LS, libn32stdc++6-4.3-dbg`'LS,
+ libn32stdc++6-4.4-dbg`'LS, libn32stdc++6-4.5-dbg`'LS, libn32stdc++6-4.6-dbg`'LS,
+ libn32stdc++6-4.7-dbg`'LS, libn32stdc++6-4.8-dbg`'LS, libn32stdc++6-4.9-dbg`'LS
+BUILT_USING`'dnl
+Description: GNU Standard C++ Library v3 (debugging files)`'ifdef(`TARGET)',` (TARGET)', `')
+ This package contains the shared library of libstdc++ compiled with
+ debugging symbols.
+ifdef(`TARGET', `dnl
+ .
+ This package contains files for TARGET architecture, for use in cross-compile
+ environment.
+')`'dnl
+
+ifenabled(`x32dev',`
+Package: libx32stdc++`'PV-dev`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs')
+Section: ifdef(`TARGET',`devel',`libdevel')
+Priority: ifdef(`TARGET',`extra',PRI(optional))
+Depends: BASELDEP, libdevdep(gcc`'PV-dev,x32), libdep(stdc++CXX_SO,x32),
+ libdevdep(stdc++`'PV-dev,), ${misc:Depends}
+BUILT_USING`'dnl
+Description: GNU Standard C++ Library v3 (development files)`'ifdef(`TARGET',` (TARGET)', `')
+ This package contains the headers and static library files necessary for
+ building C++ programs which use libstdc++.
+ .
+ libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which
+ was included up to g++-2.95. The first version of libstdc++-v3 appeared
+ in g++-3.0.
+ifdef(`TARGET', `dnl
+ .
+ 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
+Priority: extra
+Depends: BASELDEP, libdep(stdc++CXX_SO,x32),
+ libdevdep(stdc++`'PV-dev,), libdbgdep(gcc`'GCC_SO-dbg,x32,>=,${gcc:EpochVersion}),
+ ${shlibs:Depends}, ${misc:Depends}
+ifdef(`TARGET',`Provides: libx32stdc++CXX_SO-dbg-TARGET-dcv1
+',`')`'dnl
+Conflicts: libx32stdc++6-dbg`'LS, libx32stdc++6-4.6-dbg`'LS,
+ libx32stdc++6-4.7-dbg`'LS, libx32stdc++6-4.8-dbg`'LS, libx32stdc++6-4.9-dbg`'LS
+BUILT_USING`'dnl
+Description: GNU Standard C++ Library v3 (debugging files)`'ifdef(`TARGET)',` (TARGET)', `')
+ This package contains the shared library of libstdc++ compiled with
+ debugging symbols.
+ifdef(`TARGET', `dnl
+ .
+ This package contains files for TARGET architecture, for use in cross-compile
+ environment.
+')`'dnl
+')`'dnl libx32dbgcxx
+
+ifenabled(`libhfdbgcxx',`
+Package: libhfstdc++`'PV-dev`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs')
+Section: ifdef(`TARGET',`devel',`libdevel')
+Priority: ifdef(`TARGET',`extra',PRI(optional))
+Depends: BASELDEP, libdevdep(gcc`'PV-dev,hf),
+ libdep(stdc++CXX_SO,hf), libdevdep(stdc++`'PV-dev,), ${misc:Depends}
+BUILT_USING`'dnl
+Description: GNU Standard C++ Library v3 (development files)`'ifdef(`TARGET',` (TARGET)', `')
+ This package contains the headers and static library files necessary for
+ building C++ programs which use libstdc++.
+ .
+ libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which
+ was included up to g++-2.95. The first version of libstdc++-v3 appeared
+ in g++-3.0.
+ifdef(`TARGET', `dnl
+ .
+ This package contains files for TARGET architecture, for use in cross-compile
+ environment.
+')`'dnl
+
+Package: libhfstdc++CXX_SO`'PV-dbg`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs')
+Section: debug
+Priority: extra
+Depends: BASELDEP, libdep(stdc++CXX_SO,hf),
+ libdevdep(stdc++`'PV-dev,), libdbgdep(gcc`'GCC_SO-dbg,hf,>=,${gcc:EpochVersion}),
+ ${shlibs:Depends}, ${misc:Depends}
+ifdef(`TARGET',`Provides: libhfstdc++CXX_SO-dbg-TARGET-dcv1
+',`')`'dnl
+ifdef(`TARGET',`dnl',`Conflicts: libhfstdc++6-dbg`'LS, libhfstdc++6-4.3-dbg`'LS, libhfstdc++6-4.4-dbg`'LS, libhfstdc++6-4.5-dbg`'LS, libhfstdc++6-4.6-dbg`'LS, libhfstdc++6-4.7-dbg`'LS, libhfstdc++6-4.8-dbg`'LS, libstdc++'CXX_SO`-armhf [biarchhf_archs]')
+BUILT_USING`'dnl
+Description: GNU Standard C++ Library v3 (debugging files)`'ifdef(`TARGET)',` (TARGET)', `')
+ This package contains the shared library of libstdc++ compiled with
+ debugging symbols.
+ifdef(`TARGET', `dnl
+ .
+ This package contains files for TARGET architecture, for use in cross-compile
+ environment.
+')`'dnl
+')`'dnl libhfdbgcxx
+
+ifenabled(`libsfdbgcxx',`
+Package: libsfstdc++`'PV-dev`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs')
+Section: ifdef(`TARGET',`devel',`libdevel')
+Priority: ifdef(`TARGET',`extra',PRI(optional))
+Depends: BASELDEP, libdevdep(gcc`'PV-dev,sf),
+ libdep(stdc++CXX_SO,sf), libdevdep(stdc++`'PV-dev,), ${misc:Depends}
+BUILT_USING`'dnl
+Description: GNU Standard C++ Library v3 (development files)`'ifdef(`TARGET',` (TARGET)', `')
+ This package contains the headers and static library files necessary for
+ building C++ programs which use libstdc++.
+ .
+ libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which
+ was included up to g++-2.95. The first version of libstdc++-v3 appeared
+ in g++-3.0.
+ifdef(`TARGET', `dnl
+ .
+ This package contains files for TARGET architecture, for use in cross-compile
+ environment.
+')`'dnl
+
+Package: libsfstdc++CXX_SO`'PV-dbg`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs')
+Section: debug
+Priority: extra
+Depends: BASELDEP, libdep(stdc++CXX_SO,sf),
+ libdevdep(stdc++`'PV-dev,), libdbgdep(gcc`'GCC_SO-dbg,sf,>=,${gcc:EpochVersion}),
+ ${shlibs:Depends}, ${misc:Depends}
+ifdef(`TARGET',`Provides: libsfstdc++CXX_SO-dbg-TARGET-dcv1
+',`')`'dnl
+ifdef(`TARGET',`dnl',`Conflicts: libsfstdc++6-dbg`'LS, libsfstdc++6-4.3-dbg`'LS, libsfstdc++6-4.4-dbg`'LS, libsfstdc++6-4.5-dbg`'LS, libsfstdc++6-4.6-dbg`'LS, libsfstdc++6-4.7-dbg`'LS, libsfstdc++6-4.8-dbg`'LS, libstdc++'CXX_SO`-armel [biarchsf_archs]')
+BUILT_USING`'dnl
+Description: GNU Standard C++ Library v3 (debugging files)`'ifdef(`TARGET)',` (TARGET)', `')
+ This package contains the shared library of libstdc++ compiled with
+ debugging symbols.
+ifdef(`TARGET', `dnl
+ .
+ This package contains files for TARGET architecture, for use in cross-compile
+ environment.
+')`'dnl
+')`'dnl libsfdbgcxx
+
+ifdef(`TARGET', `', `
+Package: libstdc++`'PV-doc
+Architecture: all
+Section: doc
+Priority: PRI(optional)
+Depends: gcc`'PV-base (>= ${gcc:SoftVersion}), ${misc:Depends}
+Conflicts: libstdc++5-doc, libstdc++5-3.3-doc, libstdc++6-doc,
+ libstdc++6-4.0-doc, libstdc++6-4.1-doc, libstdc++6-4.2-doc, libstdc++6-4.3-doc,
+ libstdc++6-4.4-doc, libstdc++6-4.5-doc, libstdc++6-4.6-doc, libstdc++6-4.7-doc,
+ libstdc++-4.8-doc, libstdc++-4.9-doc
+Description: GNU Standard C++ Library v3 (documentation files)
+ This package contains documentation files for the GNU stdc++ library.
+ .
+ One set is the distribution documentation, the other set is the
+ source documentation including a namespace list, class hierarchy,
+ alphabetical list, compound list, file list, namespace members,
+ compound members and file members.
+')`'dnl native
+')`'dnl c++dev
+')`'dnl c++
+
+ifenabled(`ada',`
+Package: gnat`'-GNAT_V`'TS
+Architecture: any
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+ifdef(`MULTIARCH', `Pre-Depends: ${misc:Pre-Depends}
+')`'dnl
+Depends: BASEDEP, gcc`'PV`'TS (>= ${gcc:SoftVersion}), ${dep:libgnat}, ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends}
+Suggests: gnat`'PV-doc, ada-reference-manual-2012, gnat`'-GNAT_V-sjlj
+Breaks:   gnat (<< 4.6.1), dh-ada-library (<< 6.0), gnat-4.6-base (= 4.6.4-2),
+ gnat-4.9-base (= 4.9-20140330-1)
+Replaces: gnat (<< 4.6.1), dh-ada-library (<< 6.0), gnat-4.6-base (= 4.6.4-2),
+ gnat-4.9-base (= 4.9-20140330-1)
+# Takes over symlink from gnat (<< 4.6.1): /usr/bin/gnatgcc.
+# Takes over file from dh-ada-library (<< 6.0): debian_packaging.mk.
+# g-base 4.6.4-2, 4.9-20140330-1 contain debian_packaging.mk by mistake.
+# Newer versions of gnat and dh-ada-library will not provide these files.
+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, gnat-4.7, gnat-4.8,
+ gnat-4.9
+# These other packages will continue to provide /usr/bin/gnatmake and
+# other files.
+BUILT_USING`'dnl
+Description: GNU Ada compiler
+ GNAT is a compiler for the Ada programming language. It produces optimized
+ code on platforms supported by the GNU Compiler Collection (GCC).
+ .
+ This package provides the compiler, tools and runtime library that handles
+ exceptions using the default zero-cost mechanism.
+
+ifenabled(`adasjlj',`
+Package: gnat`'-GNAT_V-sjlj`'TS
+Architecture: any
+Priority: extra
+ifdef(`MULTIARCH', `Pre-Depends: ${misc:Pre-Depends}
+')`'dnl
+Depends: BASEDEP, gnat`'-GNAT_V`'TS (= ${gnat:Version}), ${misc:Depends}
+BUILT_USING`'dnl
+Description: GNU Ada compiler (setjump/longjump runtime library)
+ GNAT is a compiler for the Ada programming language. It produces optimized
+ code on platforms supported by the GNU Compiler Collection (GCC).
+ .
+ This package provides an alternative runtime library that handles
+ exceptions using the setjump/longjump mechanism (as a static library
+ only).  You can install it to supplement the normal compiler.
+')`'dnl adasjlj
+
+ifenabled(`libgnat',`
+Package: libgnat`'-GNAT_V`'LS
+Section: ifdef(`TARGET',`devel',`libs')
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`any')
+ifdef(`MULTIARCH', `Multi-Arch: same
+Pre-Depends: ${misc:Pre-Depends}
+')`'dnl
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: runtime for applications compiled with GNAT (shared library)
+ GNAT is a compiler for the Ada programming language. It produces optimized
+ code on platforms supported by the GNU Compiler Collection (GCC).
+ .
+ The libgnat library provides runtime components needed by most
+ applications produced with GNAT.
+ .
+ This package contains the runtime shared library.
+
+Package: libgnat`'-GNAT_V-dbg`'LS
+Section: debug
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`any')
+ifdef(`MULTIARCH', `Multi-Arch: same
+Pre-Depends: ${misc:Pre-Depends}
+')`'dnl
+Priority: extra
+Depends: BASELDEP, libgnat`'-GNAT_V`'LS (= ${gnat:Version}), ${misc:Depends}
+BUILT_USING`'dnl
+Description: runtime for applications compiled with GNAT (debugging symbols)
+ GNAT is a compiler for the Ada programming language. It produces optimized
+ code on platforms supported by the GNU Compiler Collection (GCC).
+ .
+ The libgnat library provides runtime components needed by most
+ applications produced with GNAT.
+ .
+ This package contains the debugging symbols.
+
+Package: libgnatvsn`'GNAT_V-dev`'LS
+Section: libdevel
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`any')
+Priority: extra
+Depends: BASELDEP, gnat`'PV`'TS (ifdef(`TARGET',`>= ${gnat:SoftVersion}',`= ${gnat:Version}')),
+ libgnatvsn`'GNAT_V`'LS (= ${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
+Description: GNU Ada compiler selected components (development files)
+ GNAT is a compiler for the Ada programming language. It produces optimized
+ code on platforms supported by the GNU Compiler Collection (GCC).
+ .
+ The libgnatvsn library exports selected GNAT components for use in other
+ packages, most notably ASIS tools. It is licensed under the GNAT-Modified
+ GPL, allowing to link proprietary programs with it.
+ .
+ This package contains the development files and static library.
+
+Package: libgnatvsn`'GNAT_V`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`any')
+ifdef(`MULTIARCH', `Multi-Arch: same
+Pre-Depends: ${misc:Pre-Depends}
+')`'dnl
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Section: ifdef(`TARGET',`devel',`libs')
+Depends: BASELDEP, libgnat`'-GNAT_V`'LS (= ${gnat:Version}),
+ ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: GNU Ada compiler selected components (shared library)
+ GNAT is a compiler for the Ada programming language. It produces optimized
+ code on platforms supported by the GNU Compiler Collection (GCC).
+ .
+ The libgnatvsn library exports selected GNAT components for use in other
+ packages, most notably ASIS tools. It is licensed under the GNAT-Modified
+ GPL, allowing to link proprietary programs with it.
+ .
+ This package contains the runtime shared library.
+
+Package: libgnatvsn`'GNAT_V-dbg`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`any')
+ifdef(`MULTIARCH', `Multi-Arch: same
+Pre-Depends: ${misc:Pre-Depends}
+')`'dnl
+Priority: extra
+Section: debug
+Depends: BASELDEP, libgnatvsn`'GNAT_V`'LS (= ${gnat:Version}), ${misc:Depends}
+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
+ code on platforms supported by the GNU Compiler Collection (GCC).
+ .
+ The libgnatvsn library exports selected GNAT components for use in other
+ packages, most notably ASIS tools. It is licensed under the GNAT-Modified
+ GPL, allowing to link proprietary programs with it.
+ .
+ This package contains the debugging symbols.
+
+Package: libgnatprj`'GNAT_V-dev`'LS
+Section: libdevel
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`any')
+Priority: extra
+Depends: BASELDEP, gnat`'PV`'TS (ifdef(`TARGET',`>= ${gnat:SoftVersion}',`= ${gnat:Version}')),
+ libgnatprj`'GNAT_V`'LS (= ${gnat:Version}),
+ libgnatvsn`'GNAT_V-dev`'LS (= ${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
+Description: GNU Ada compiler Project Manager (development files)
+ GNAT is a compiler for the Ada programming language. It produces optimized
+ code on platforms supported by the GNU Compiler Collection (GCC).
+ .
+ GNAT uses project files to organise source and object files in large-scale
+ development efforts. The libgnatprj library exports GNAT project files
+ management for use in other packages, most notably ASIS tools (package
+ asis-programs) and GNAT Programming Studio (package gnat-gps). It is
+ licensed under the pure GPL; all programs that use it must also be
+ distributed under the GPL, or not distributed at all.
+ .
+ This package contains the development files and static library.
+
+Package: libgnatprj`'GNAT_V`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`any')
+ifdef(`MULTIARCH', `Multi-Arch: same
+Pre-Depends: ${misc:Pre-Depends}
+')`'dnl
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Section: ifdef(`TARGET',`devel',`libs')
+Depends: BASELDEP, libgnat`'-GNAT_V`'LS (= ${gnat:Version}),
+ libgnatvsn`'GNAT_V`'LS (= ${gnat:Version}),
+ ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: GNU Ada compiler Project Manager (shared library)
+ GNAT is a compiler for the Ada programming language. It produces optimized
+ code on platforms supported by the GNU Compiler Collection (GCC).
+ .
+ GNAT uses project files to organise source and object files in large-scale
+ development efforts. The libgnatprj library exports GNAT project files
+ management for use in other packages, most notably ASIS tools (package
+ asis-programs) and GNAT Programming Studio (package gnat-gps). It is
+ licensed under the pure GPL; all programs that use it must also be
+ distributed under the GPL, or not distributed at all.
+ .
+ This package contains the runtime shared library.
+
+Package: libgnatprj`'GNAT_V-dbg`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`any')
+ifdef(`MULTIARCH', `Multi-Arch: same
+Pre-Depends: ${misc:Pre-Depends}
+')`'dnl
+Priority: extra
+Section: debug
+Depends: BASELDEP, libgnatprj`'GNAT_V`'LS (= ${gnat:Version}), ${misc:Depends}
+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
+ code on platforms supported by the GNU Compiler Collection (GCC).
+ .
+ GNAT uses project files to organise source and object files in large-scale
+ development efforts. The libgnatprj library exports GNAT project files
+ management for use in other packages, most notably ASIS tools (package
+ asis-programs) and GNAT Programming Studio (package gnat-gps). It is
+ licensed under the pure GPL; all programs that use it must also be
+ distributed under the GPL, or not distributed at all.
+ .
+ This package contains the debugging symbols.
+')`'dnl libgnat
+
+ifenabled(`lib64gnat',`
+Package: lib64gnat`'-GNAT_V
+Section: libs
+Architecture: biarch64_archs
+Priority: PRI(optional)
+Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: runtime for applications compiled with GNAT (64 bits shared library)
+ GNAT is a compiler for the Ada programming language. It produces optimized
+ code on platforms supported by the GNU Compiler Collection (GCC).
+ .
+ The libgnat library provides runtime components needed by most
+ applications produced with GNAT.
+ .
+ This package contains the runtime shared library for 64 bits architectures.
+')`'dnl libgnat
+
+ifenabled(`gfdldoc',`
+Package: gnat`'PV-doc
+Architecture: all
+Section: doc
+Priority: PRI(optional)
+Depends: dpkg (>= 1.15.4) | install-info, ${misc:Depends}
+Suggests: gnat`'PV
+Conflicts: gnat-4.1-doc, gnat-4.2-doc,
+  gnat-4.3-doc, gnat-4.4-doc,
+  gnat-4.6-doc, gnat-4.9-doc
+BUILT_USING`'dnl
+Description: GNU Ada compiler (documentation)
+ GNAT is a compiler for the Ada programming language. It produces optimized
+ code on platforms supported by the GNU Compiler Collection (GCC).
+ .
+ The libgnat library provides runtime components needed by most
+ applications produced with GNAT.
+ .
+ This package contains the documentation in info `format'.
+')`'dnl gfdldoc
+')`'dnl ada
+
+ifenabled(`d ',`
+Package: gdc`'PV`'TS
+Architecture: any
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: SOFTBASEDEP, g++`'PV`'TS (>= ${gcc:SoftVersion}), ${dep:gdccross}, ${dep:phobosdev}, ${shlibs:Depends}, ${misc:Depends}
+Provides: gdc, d-compiler, d-v2-compiler
+Replaces: gdc (<< 4.4.6-5)
+BUILT_USING`'dnl
+Description: GNU D compiler (version 2)`'ifdef(`TARGET)',` (cross compiler for TARGET architecture)', `')
+ 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.
+
+ifenabled(`multilib',`
+Package: gdc`'PV-multilib`'TS
+Architecture: any
+Priority: ifdef(`TARGET',`extra',`PRI(optional)')
+Depends: SOFTBASEDEP, gdc`'PV`'TS (= ${gcc:Version}), gcc`'PV-multilib`'TS (= ${gcc:Version}), ${dep:libphobosbiarchdev}${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: GNU D compiler (version 2, multilib support)`'ifdef(`TARGET)',` (cross compiler for TARGET architecture)', `')
+ This is the GNU D compiler, which compiles D on platforms supported by gcc.
+ It uses the gcc backend to generate optimised code.
+ .
+ This is a dependency package, depending on development packages
+ for the non-default multilib architecture(s).
+')`'dnl multilib
+
+ifenabled(`libphobos',`
+Package: libphobos`'PV-dev`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`libphobos_archs')
+Section: libdevel
+Priority: ifdef(`TARGET',`extra',PRI(optional))
+Depends: BASELDEP, zlib1g-dev, ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+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`'PHOBOS_V`'PV`'TS-dbg
+#Section: debug
+#Architecture: ifdef(`TARGET',`CROSS_ARCH',`libphobos_archs')
+#Priority: extra
+#Depends: BASELDEP, libphobos`'PHOBOS_V`'PV-dev (= ${gdc:Version}), ${misc:Depends}
+#Provides: libphobos`'PHOBOS_V`'TS-dbg
+#BUILT_USING`'dnl
+#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: lib64phobos`'PV-dev`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs')
+Section: libdevel
+Priority: ifdef(`TARGET',`extra',PRI(optional))
+Depends: BASELDEP, libdevdep(gcc`'PV-dev,64), lib64z1-dev, ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: Phobos D standard library (64bit development files)
+ This is the Phobos standard library that comes with the D2 compiler.
+ .
+ For more information check http://www.dlang.org/phobos/
+
+Package: lib32phobos`'PV-dev`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs')
+Section: libdevel
+Priority: ifdef(`TARGET',`extra',PRI(optional))
+Depends: BASELDEP, libdevdep(gcc`'PV-dev,32), lib32z1-dev, ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: Phobos D standard library (64bit development files)
+ This is the Phobos standard library that comes with the D2 compiler.
+ .
+ For more information check http://www.dlang.org/phobos/
+
+ifenabled(`libn32phobos',`
+Package: libn32phobos`'PV-dev`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs')
+Section: libdevel
+Priority: ifdef(`TARGET',`extra',PRI(optional))
+Depends: BASELDEP, libdevdep(gcc`'PV-dev,n32), libn32z1-dev, ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: Phobos D standard library (n32 development files)
+ This is the Phobos standard library that comes with the D2 compiler.
+ .
+ For more information check http://www.dlang.org/phobos/
+')`'dnl libn32phobos
+
+ifenabled(`libx32phobos',`
+Package: libx32phobos`'PV-dev`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs')
+Section: libdevel
+Priority: ifdef(`TARGET',`extra',PRI(optional))
+Depends: BASELDEP, libdevdep(gcc`'PV-dev,x32), ${dep:libx32z}, ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: Phobos D standard library (x32 development files)
+ This is the Phobos standard library that comes with the D2 compiler.
+ .
+ For more information check http://www.dlang.org/phobos/
+')`'dnl libx32phobos
+
+ifenabled(`armml',`
+Package: libhfphobos`'PV-dev`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchhf_archs')
+Section: libdevel
+Priority: ifdef(`TARGET',`extra',PRI(optional))
+Depends: BASELDEP, libdevdep(gcc`'PV-dev,hf), ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: Phobos D standard library (hard float ABI development files)
+ This is the Phobos standard library that comes with the D2 compiler.
+ .
+ For more information check http://www.dlang.org/phobos/
+
+Package: libsfphobos`'PV-dev`'LS
+Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchsf_archs')
+Section: libdevel
+Priority: ifdef(`TARGET',`extra',PRI(optional))
+Depends: BASELDEP, libdevdep(gcc`'PV-dev,sf), ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: Phobos D standard library (soft float ABI development files)
+ This is the Phobos standard library that comes with the D2 compiler.
+ .
+ For more information check http://www.dlang.org/phobos/
+')`'dnl armml
+')`'dnl libphobos
+')`'dnl d
+
+ifdef(`TARGET',`',`dnl
+ifenabled(`libs',`
+#Package: gcc`'PV-soft-float
+#Architecture: arm armel armhf
+#Priority: PRI(optional)
+#Depends: BASEDEP, depifenabled(`cdev',`gcc`'PV (= ${gcc:Version}),') ${shlibs:Depends}, ${misc:Depends}
+#Conflicts: gcc-4.4-soft-float, gcc-4.5-soft-float, gcc-4.6-soft-float
+#BUILT_USING`'dnl
+#Description: GCC soft-floating-point gcc libraries (ARM)
+# These are versions of basic static libraries such as libgcc.a compiled
+# with the -msoft-float option, for CPUs without a floating-point unit.
+')`'dnl commonlibs
+')`'dnl
+
+ifenabled(`fixincl',`
+Package: fixincludes
+Architecture: any
+Priority: PRI(optional)
+Depends: BASEDEP, gcc`'PV (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends}
+BUILT_USING`'dnl
+Description: Fix non-ANSI header files
+ FixIncludes was created to fix non-ANSI system header files. Many
+ system manufacturers supply proprietary headers that are not ANSI compliant.
+ The GNU compilers cannot compile non-ANSI headers. Consequently, the
+ FixIncludes shell script was written to fix the header files.
+ .
+ Not all packages with header files are installed on the system, when the
+ package is built, so we make fixincludes available at build time of other
+ packages, such that checking tools like lintian can make use of it.
+')`'dnl fixincl
+
+ifenabled(`cdev',`
+ifdef(`TARGET', `', `
+ifenabled(`gfdldoc',`
+Package: gcc`'PV-doc
+Architecture: all
+Section: doc
+Priority: PRI(optional)
+Depends: gcc`'PV-base (>= ${gcc:SoftVersion}), dpkg (>= 1.15.4) | install-info, ${misc:Depends}
+Conflicts: gcc-docs (<< 2.95.2)
+Replaces: gcc (<=2.7.2.3-4.3), gcc-docs (<< 2.95.2)
+Description: Documentation for the GNU compilers (gcc, gobjc, g++)
+ Documentation for the GNU compilers in info `format'.
+')`'dnl gfdldoc
+')`'dnl native
+')`'dnl cdev
+
+ifdef(`TARGET',`',`dnl
+ifenabled(`libnof',`
+#Package: gcc`'PV-nof
+#Architecture: powerpc
+#Priority: PRI(optional)
+#Depends: BASEDEP, ${shlibs:Depends}ifenabled(`cdev',`, gcc`'PV (= ${gcc:Version})'), ${misc:Depends}
+#Conflicts: gcc-3.2-nof
+#BUILT_USING`'dnl
+#Description: GCC no-floating-point gcc libraries (powerpc)
+# These are versions of basic static libraries such as libgcc.a compiled
+# with the -msoft-float option, for CPUs without a floating-point unit.
+')`'dnl libnof
+')`'dnl
+
+ifenabled(`source',`
+Package: gcc`'PV-source
+Architecture: all
+Priority: PRI(optional)
+Depends: make, 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).
+')`'dnl source
+dnl
+')`'dnl gcc-X.Y
+dnl last line in file
diff --git a/debian/copyright b/debian/copyright
new file mode 100644
index 0000000..88693af
--- /dev/null
+++ b/debian/copyright
@@ -0,0 +1,692 @@
+This is the Debian GNU/Linux prepackaged version of the GNU compiler
+collection, containing Ada, C, C++, Fortran 95, Java, Objective-C,
+Objective-C++, and Treelang compilers, documentation, and support
+libraries.  In addition, Debian provides the gdc compiler, either in
+the same source package, or built from a separate same source package.
+Packaging is done by the Debian GCC Maintainers
+<debian-gcc at lists.debian.org>, with sources obtained from:
+
+  ftp://gcc.gnu.org/pub/gcc/releases/  (for full releases)
+  svn://gcc.gnu.org/svn/gcc/           (for prereleases)
+  http://bitbucket.org/goshawk/gdc     (for D)
+
+The current gcc-5 source package is taken from the SVN gcc-5-branch.
+
+Changes: See changelog.Debian.gz
+
+Debian splits the GNU Compiler Collection into packages for each language,
+library, and documentation as follows:
+
+Language       Compiler package  Library package    Documentation
+---------------------------------------------------------------------------
+Ada            gnat-5          libgnat-5        gnat-5-doc
+C              gcc-5                              gcc-5-doc
+C++            g++-5           libstdc++6         libstdc++6-5-doc
+D              gdc-5
+Fortran 95     gfortran-5      libgfortran3       gfortran-5-doc
+Go             gccgo-5         libgo0
+Java           gcj-5           libgcj10           libgcj-doc
+Objective C    gobjc-5         libobjc2
+Objective C++  gobjc++-5
+
+For some language run-time libraries, Debian provides source files,
+development files, debugging symbols and libraries containing position-
+independent code in separate packages:
+
+Language  Sources      Development   Debugging            Position-Independent
+------------------------------------------------------------------------------
+C++                                  libstdc++6-5-dbg  libstdc++6-5-pic
+D         libphobos-5-dev
+Java      libgcj10-src libgcj10-dev  libgcj10-dbg
+
+Additional packages include:
+
+All languages:
+libgcc1, libgcc2, libgcc4       GCC intrinsics (platform-dependent)
+gcc-5-base                    Base files common to all compilers
+gcc-5-soft-float              Software floating point (ARM only)
+gcc-5-source                  The sources with patches
+
+Ada:
+libgnatvsn-dev, libgnatvsn5   GNAT version library
+libgnatprj-dev, libgnatprj5   GNAT Project Manager library
+
+C:
+cpp-5, cpp-5-doc            GNU C Preprocessor
+libssp0-dev, libssp0            GCC stack smashing protection library
+libquadmath0                    Math routines for the __float128 type
+fixincludes                     Fix non-ANSI header files
+
+Java:
+gij                             The Java bytecode interpreter and VM
+libgcj-common                   Common files for the Java run-time
+libgcj10-awt                    The Abstract Windowing Toolkit
+libgcj10-jar                    Java ARchive for the Java run-time
+
+C, C++ and Fortran 95:
+libgomp1-dev, libgomp1		GCC OpenMP (GOMP) support library
+libitm1-dev, libitm1		GNU Transactional Memory Library
+
+Biarch support: On some 64-bit platforms which can also run 32-bit code,
+Debian provides additional packages containing 32-bit versions of some
+libraries.  These packages have names beginning with 'lib32' instead of
+'lib', for example lib32stdc++6.  Similarly, on some 32-bit platforms which
+can also run 64-bit code, Debian provides additional packages with names
+beginning with 'lib64' instead of 'lib'.  These packages contain 64-bit
+versions of the libraries.  (At this time, not all platforms and not all
+libraries support biarch.)  The license terms for these lib32 or lib64
+packages are identical to the ones for the lib packages.
+
+
+COPYRIGHT STATEMENTS AND LICENSING TERMS
+
+
+GCC is Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994,
+1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
+2008, 2009, 2010, 2011, 2012, 2013, 2014 Free Software Foundation, Inc.
+
+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.
+
+Files that have exception clauses are licensed under the terms of the
+GNU General Public License; either version 3, or (at your option) any
+later version.
+
+On Debian GNU/Linux systems, the complete text of the GNU General
+Public License is in `/usr/share/common-licenses/GPL', version 3 of this
+license in `/usr/share/common-licenses/GPL-3'.
+
+The following runtime libraries are licensed under the terms of the
+GNU General Public License (v3 or later) with version 3.1 of the GCC
+Runtime Library Exception (included in this file):
+
+ - libgcc (libgcc/, gcc/libgcc2.[ch], gcc/unwind*, gcc/gthr*,
+   gcc/coretypes.h, gcc/crtstuff.c, gcc/defaults.h, gcc/dwarf2.h,
+   gcc/emults.c, gcc/gbl-ctors.h, gcc/gcov-io.h, gcc/libgcov.c,
+   gcc/tsystem.h, gcc/typeclass.h).
+ - libatomic
+ - libdecnumber
+ - libgomp
+ - libitm
+ - libssp
+ - libstdc++-v3
+ - libobjc
+ - libgfortran
+ - The libgnat-5 Ada support library and libgnatvsn library.
+ - Various config files in gcc/config/ used in runtime libraries.
+ - libvtv
+
+In contrast, libgnatprj is licensed under the terms of the pure GNU
+General Public License.
+
+The libbacktrace library is licensed under the following terms:
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+    (1) Redistributions of source code must retain the above copyright
+    notice, this list of conditions and the following disclaimer. 
+
+    (2) Redistributions in binary form must reproduce the above copyright
+    notice, this list of conditions and the following disclaimer in
+    the documentation and/or other materials provided with the
+    distribution.  
+    
+    (3) The name of the author may not be used to
+    endorse or promote products derived from this software without
+    specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
+IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
+
+
+The libsanitizer libraries (libasan, liblsan, libtsan, libubsan) are
+licensed under the following terms:
+
+Copyright (c) 2009-2014 by the LLVM contributors.
+
+All rights reserved.
+
+Developed by:
+
+    LLVM Team
+
+    University of Illinois at Urbana-Champaign
+
+    http://llvm.org
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal with
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is furnished to do
+so, subject to the following conditions:
+
+    * Redistributions of source code must retain the above copyright notice,
+      this list of conditions and the following disclaimers.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+      this list of conditions and the following disclaimers in the
+      documentation and/or other materials provided with the distribution.
+
+    * Neither the names of the LLVM Team, University of Illinois at
+      Urbana-Champaign, nor the names of its contributors may be used to
+      endorse or promote products derived from this Software without specific
+      prior written permission.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
+CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE
+SOFTWARE.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
+
+The libgcj library is licensed under the terms of the GNU General
+Public License, with a special exception:
+
+    Linking this library statically or dynamically with other modules
+    is making a combined work based on this library.  Thus, the terms
+    and conditions of the GNU General Public License cover the whole
+    combination.
+
+    As a special exception, the copyright holders of this library give
+    you permission to link this library with independent modules to
+    produce an executable, regardless of the license terms of these
+    independent modules, and to copy and distribute the resulting
+    executable under terms of your choice, provided that you also
+    meet, for each linked independent module, the terms and conditions
+    of the license of that module.  An independent module is a module
+    which is not derived from or based on this library.  If you modify
+    this library, you may extend this exception to your version of the
+    library, but you are not obligated to do so.  If you do not wish
+    to do so, delete this exception statement from your version.
+
+The libffi library is licensed under the following terms:
+
+    libffi - Copyright (c) 1996-2003  Red Hat, Inc.
+
+    Permission is hereby granted, free of charge, to any person obtaining
+    a copy of this software and associated documentation files (the
+    ``Software''), to deal in the Software without restriction, including
+    without limitation the rights to use, copy, modify, merge, publish,
+    distribute, sublicense, and/or sell copies of the Software, and to
+    permit persons to whom the Software is furnished to do so, subject to
+    the following conditions:
+
+    The above copyright notice and this permission notice shall be included
+    in all copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS
+    OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+    MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+    IN NO EVENT SHALL CYGNUS SOLUTIONS BE LIABLE FOR ANY CLAIM, DAMAGES OR
+    OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+    ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+    OTHER DEALINGS IN THE SOFTWARE.
+
+
+The documentation is licensed under the GNU Free Documentation License (v1.2).
+On Debian GNU/Linux systems, the complete text of this license is in
+`/usr/share/common-licenses/GFDL-1.2'.
+
+
+GCC RUNTIME LIBRARY EXCEPTION
+
+Version 3.1, 31 March 2009
+
+Copyright (C) 2009 Free Software Foundation, Inc. <http://fsf.org/>
+
+Everyone is permitted to copy and distribute verbatim copies of this
+license document, but changing it is not allowed.
+
+This GCC Runtime Library Exception ("Exception") is an additional
+permission under section 7 of the GNU General Public License, version
+3 ("GPLv3"). It applies to a given file (the "Runtime Library") that
+bears a notice placed by the copyright holder of the file stating that
+the file is governed by GPLv3 along with this Exception.
+
+When you use GCC to compile a program, GCC may combine portions of
+certain GCC header files and runtime libraries with the compiled
+program. The purpose of this Exception is to allow compilation of
+non-GPL (including proprietary) programs to use, in this way, the
+header files and runtime libraries covered by this Exception.
+
+0. Definitions.
+
+A file is an "Independent Module" if it either requires the Runtime
+Library for execution after a Compilation Process, or makes use of an
+interface provided by the Runtime Library, but is not otherwise based
+on the Runtime Library.
+
+"GCC" means a version of the GNU Compiler Collection, with or without
+modifications, governed by version 3 (or a specified later version) of
+the GNU General Public License (GPL) with the option of using any
+subsequent versions published by the FSF.
+
+"GPL-compatible Software" is software whose conditions of propagation,
+modification and use would permit combination with GCC in accord with
+the license of GCC.
+
+"Target Code" refers to output from any compiler for a real or virtual
+target processor architecture, in executable form or suitable for
+input to an assembler, loader, linker and/or execution
+phase. Notwithstanding that, Target Code does not include data in any
+format that is used as a compiler intermediate representation, or used
+for producing a compiler intermediate representation.
+
+The "Compilation Process" transforms code entirely represented in
+non-intermediate languages designed for human-written code, and/or in
+Java Virtual Machine byte code, into Target Code. Thus, for example,
+use of source code generators and preprocessors need not be considered
+part of the Compilation Process, since the Compilation Process can be
+understood as starting with the output of the generators or
+preprocessors.
+
+A Compilation Process is "Eligible" if it is done using GCC, alone or
+with other GPL-compatible software, or if it is done without using any
+work based on GCC. For example, using non-GPL-compatible Software to
+optimize any GCC intermediate representations would not qualify as an
+Eligible Compilation Process.
+
+1. Grant of Additional Permission.
+
+You have permission to propagate a work of Target Code formed by
+combining the Runtime Library with Independent Modules, even if such
+propagation would otherwise violate the terms of GPLv3, provided that
+all Target Code was generated by Eligible Compilation Processes. You
+may then convey such a combination under terms of your choice,
+consistent with the licensing of the Independent Modules.
+
+2. No Weakening of GCC Copyleft.
+
+The availability of this Exception does not imply any general
+presumption that third-party software is unaffected by the copyleft
+requirements of the license of GCC.
+
+
+libquadmath/*.[hc]:
+
+   Copyright (C) 2010 Free Software Foundation, Inc.
+   Written by Francois-Xavier Coudert  <fxcoudert at gcc.gnu.org>
+   Written by Tobias Burnus  <burnus at net-b.de>
+
+This file is part of the libiberty library.
+Libiberty is free software; you can redistribute it and/or
+modify it under the terms of the GNU Library General Public
+License as published by the Free Software Foundation; either
+version 2 of the License, or (at your option) any later version.
+
+Libiberty is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+Library General Public License for more details.
+
+libquadmath/gdtoa:
+
+The author of this software is David M. Gay.
+
+Copyright (C) 1998, 1999, 2000, 2001 by Lucent Technologies
+All Rights Reserved
+
+Permission to use, copy, modify, and distribute this software and
+its documentation for any purpose and without fee is hereby
+granted, provided that the above copyright notice appear in all
+copies and that both that the copyright notice and this
+permission notice and warranty disclaimer appear in supporting
+documentation, and that the name of Lucent or any of its entities
+not be used in advertising or publicity pertaining to
+distribution of the software without specific, written prior
+permission.
+
+LUCENT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS.
+IN NO EVENT SHALL LUCENT OR ANY OF ITS ENTITIES BE LIABLE FOR ANY
+SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER
+IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
+THIS SOFTWARE.
+
+libquadmath/math:
+
+atanq.c, expm1q.c, j0q.c, j1q.c, log1pq.c, logq.c:
+    Copyright 2001 by Stephen L. Moshier <moshier at na-net.ornl.gov> 
+
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public
+    License as published by the Free Software Foundation; either
+    version 2.1 of the License, or (at your option) any later version.
+
+    This library is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+    Lesser General Public License for more details.
+
+coshq.c, erfq.c, jnq.c, lgammaq.c, powq.c, roundq.c:
+   Changes for 128-bit __float128 are
+   Copyright (C) 2001 Stephen L. Moshier <moshier at na-net.ornl.gov>
+   and are incorporated herein by permission of the author.  The author 
+   reserves the right to distribute this material elsewhere under different
+   copying permissions.  These modifications are distributed here under 
+   the following terms:
+
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public
+    License as published by the Free Software Foundation; either
+    version 2.1 of the License, or (at your option) any later version.
+
+    This library is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+    Lesser General Public License for more details.
+
+ldexpq.c:
+   * Conversion to long double by Ulrich Drepper,
+   * Cygnus Support, drepper at cygnus.com.
+
+cosq_kernel.c, expq.c, sincos_table.c, sincosq.c, sincosq_kernel.c,
+sinq_kernel.c, truncq.c:
+   Copyright (C) 1997, 1999 Free Software Foundation, Inc.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+isinfq.c:
+ * Written by J.T. Conklin <jtc at netbsd.org>.
+ * Change for long double by Jakub Jelinek <jj at ultra.linux.cz>
+ * Public domain.
+
+llroundq.c, lroundq.c, tgammaq.c:
+   Copyright (C) 1997, 1999, 2002, 2004 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper at cygnus.com>, 1997 and
+                  Jakub Jelinek <jj at ultra.linux.cz>, 1999.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+log10q.c:
+   Cephes Math Library Release 2.2:  January, 1991
+   Copyright 1984, 1991 by Stephen L. Moshier
+   Adapted for glibc November, 2001
+
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public
+    License as published by the Free Software Foundation; either
+    version 2.1 of the License, or (at your option) any later version.
+
+    This library is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+    Lesser General Public License for more details.
+
+remaining files:
+
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+
+
+libjava/classpath/resource/gnu/java/locale/*
+
+They are copyrighted and covered by the terms of use:
+http://www.unicode.org/copyright.html
+
+EXHIBIT 1
+UNICODE, INC. LICENSE AGREEMENT - DATA FILES AND SOFTWARE
+
+ Unicode Data Files include all data files under the directories 
+http://www.unicode.org/Public/ and http://www.unicode.org/reports/. 
+Unicode Software includes any source code published in the Unicode Standard or 
+under the directories http://www.unicode.org/Public/ and 
+http://www.unicode.org/reports/.
+
+NOTICE TO USER: Carefully read the following legal agreement. BY DOWNLOADING, 
+INSTALLING, COPYING OR OTHERWISE USING UNICODE INC.'S DATA FILES ("DATA FILES"), 
+AND/OR SOFTWARE ("SOFTWARE"), YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, 
+ALL OF THE TERMS AND CONDITIONS OF THIS AGREEMENT. IF YOU DO NOT AGREE, 
+DO NOT DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE THE DATA FILES OR SOFTWARE.
+
+	    COPYRIGHT AND PERMISSION NOTICE
+
+Copyrigh (c) 1991-2011 Unicode, Inc. All rights reserved. 
+Distributed under the Terms of Use in http://www.unicode.org/copyright.html.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy 
+of the Unicode data files and any associated documentation (the "Data Files") 
+or Unicode software and any associated documentation (the "Software") to deal 
+in the Data Files or Software without restriction, including without limitation 
+the rights to use, copy, modify, merge, publish, distribute, and/or sell copies
+ of the Data Files or Software, and to permit persons to whom the Data Files 
+or Software are furnished to do so, provided that (a) the above copyright notice(s) 
+and this permission notice appear with all copies of the Data Files or Software, 
+(b) both the above copyright notice(s) and this permission notice appear 
+in associated documentation, and (c) there is clear notice in each modified 
+Data File or in the Software as well as in the documentation associated with 
+the Data File(s) or Software that the data or software has been modified.
+
+THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. 
+IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE
+ FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES 
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF 
+CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION 
+WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE.
+
+Except as contained in this notice, the name of a copyright holder shall not be used
+ in advertising or otherwise to promote the sale, use or other dealings in these 
+Data Files or Software without prior written authorization of the copyright holder.
+
+Unicode and the Unicode logo are trademarks of Unicode, Inc., and may be registered
+ in some jurisdictions. All other trademarks and registered trademarks mentioned 
+herein are the property of their respective owners.
+
+
+gcc/go/gofrontend, libgo:
+
+Copyright (c) 2009 The Go Authors. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+   * Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+   * Redistributions in binary form must reproduce the above
+copyright notice, this list of conditions and the following disclaimer
+in the documentation and/or other materials provided with the
+distribution.
+   * Neither the name of Google Inc. nor the names of its
+contributors may be used to endorse or promote products derived from
+this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+libcilkrts, libmpx:
+ Copyright (C) 2009-2014, Intel Corporation
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+   * Redistributions of source code must retain the above copyright
+     notice, this list of conditions and the following disclaimer.
+   * Redistributions in binary form must reproduce the above copyright
+     notice, this list of conditions and the following disclaimer in
+     the documentation and/or other materials provided with the
+     distribution.
+   * Neither the name of Intel Corporation nor the names of its
+     contributors may be used to endorse or promote products derived
+     from this software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
+ WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.
+
+
+D:
+gdc-5                         GNU D Compiler
+libphobos-5-dev               D standard runtime library
+
+The D source package is made up of the following components.
+
+The D front-end for GCC:
+ - d/*
+
+Copyright (C) 2004-2007 David Friedman
+Modified by Vincenzo Ampolo, Michael Parrot, Iain Buclaw, (C) 2009, 2010
+
+This program 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 2 of the License, or
+(at your option) any later version.
+
+On Debian GNU/Linux systems, the complete text of the GNU General
+Public License is in `/usr/share/common-licenses/GPL', version 2 of this
+license in `/usr/share/common-licenses/GPL-2'.
+
+
+The DMD Compiler implementation of the D programming language:
+ - d/dmd/*
+
+Copyright (c) 1999-2010 by Digital Mars
+All Rights Reserved
+written by Walter Bright
+http://www.digitalmars.com
+License for redistribution is by either the Artistic License or
+the GNU General Public License (v1).
+
+On Debian GNU/Linux systems, the complete text of the GNU General
+Public License is in `/usr/share/common-licenses/GPL', the Artistic
+license in `/usr/share/common-licenses/Artistic'.
+
+
+The Zlib data compression library:
+ - d/phobos/etc/c/zlib/*
+
+ (C) 1995-2004 Jean-loup Gailly and Mark Adler
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+
+
+The Phobos standard runtime library:
+ - d/phobos/*
+
+Unless otherwise marked within the file, each file in the source
+is under the following licenses:
+
+Copyright (C) 2004-2005 by Digital Mars, www.digitalmars.com
+Written by Walter Bright
+
+This software is provided 'as-is', without any express or implied
+warranty. In no event will the authors be held liable for any damages
+arising from the use of this software.
+
+Permission is granted to anyone to use this software for any purpose,
+including commercial applications, and to alter it and redistribute it
+freely, in both source and binary form, subject to the following
+restrictions:
+
+ o  The origin of this software must not be misrepresented; you must not
+    claim that you wrote the original software. If you use this software
+    in a product, an acknowledgment in the product documentation would be
+    appreciated but is not required.
+ o  Altered source versions must be plainly marked as such, and must not
+    be misrepresented as being the original software.
+ o  This notice may not be removed or altered from any source
+    distribution.
+
+By plainly marking modifications, something along the lines of adding to each
+file that has been changed a "Modified by Foo Bar" line
+underneath the "Written by" line would be adequate.
+
diff --git a/debian/copyright.in b/debian/copyright.in
new file mode 100644
index 0000000..101a95a
--- /dev/null
+++ b/debian/copyright.in
@@ -0,0 +1,692 @@
+This is the Debian GNU/Linux prepackaged version of the GNU compiler
+collection, containing Ada, C, C++, Fortran 95, Java, Objective-C,
+Objective-C++, and Treelang compilers, documentation, and support
+libraries.  In addition, Debian provides the gdc compiler, either in
+the same source package, or built from a separate same source package.
+Packaging is done by the Debian GCC Maintainers
+<debian-gcc at lists.debian.org>, with sources obtained from:
+
+  ftp://gcc.gnu.org/pub/gcc/releases/  (for full releases)
+  svn://gcc.gnu.org/svn/gcc/           (for prereleases)
+  http://bitbucket.org/goshawk/gdc     (for D)
+
+The current gcc- at BV@ source package is taken from the SVN @SVN_BRANCH at .
+
+Changes: See changelog.Debian.gz
+
+Debian splits the GNU Compiler Collection into packages for each language,
+library, and documentation as follows:
+
+Language       Compiler package  Library package    Documentation
+---------------------------------------------------------------------------
+Ada            gnat- at BV@          libgnat- at BV@        gnat- at BV@-doc
+C              gcc- at BV@                              gcc- at BV@-doc
+C++            g++- at BV@           libstdc++6         libstdc++6- at BV@-doc
+D              gdc- at BV@
+Fortran 95     gfortran- at BV@      libgfortran3       gfortran- at BV@-doc
+Go             gccgo- at BV@         libgo0
+Java           gcj- at BV@           libgcj10           libgcj-doc
+Objective C    gobjc- at BV@         libobjc2
+Objective C++  gobjc++- at BV@
+
+For some language run-time libraries, Debian provides source files,
+development files, debugging symbols and libraries containing position-
+independent code in separate packages:
+
+Language  Sources      Development   Debugging            Position-Independent
+------------------------------------------------------------------------------
+C++                                  libstdc++6- at BV@-dbg  libstdc++6- at BV@-pic
+D         libphobos- at BV@-dev
+Java      libgcj10-src libgcj10-dev  libgcj10-dbg
+
+Additional packages include:
+
+All languages:
+libgcc1, libgcc2, libgcc4       GCC intrinsics (platform-dependent)
+gcc- at BV@-base                    Base files common to all compilers
+gcc- at BV@-soft-float              Software floating point (ARM only)
+gcc- at BV@-source                  The sources with patches
+
+Ada:
+libgnatvsn-dev, libgnatvsn at BV@   GNAT version library
+libgnatprj-dev, libgnatprj at BV@   GNAT Project Manager library
+
+C:
+cpp- at BV@, cpp- at BV@-doc            GNU C Preprocessor
+libssp0-dev, libssp0            GCC stack smashing protection library
+libquadmath0                    Math routines for the __float128 type
+fixincludes                     Fix non-ANSI header files
+
+Java:
+gij                             The Java bytecode interpreter and VM
+libgcj-common                   Common files for the Java run-time
+libgcj10-awt                    The Abstract Windowing Toolkit
+libgcj10-jar                    Java ARchive for the Java run-time
+
+C, C++ and Fortran 95:
+libgomp1-dev, libgomp1		GCC OpenMP (GOMP) support library
+libitm1-dev, libitm1		GNU Transactional Memory Library
+
+Biarch support: On some 64-bit platforms which can also run 32-bit code,
+Debian provides additional packages containing 32-bit versions of some
+libraries.  These packages have names beginning with 'lib32' instead of
+'lib', for example lib32stdc++6.  Similarly, on some 32-bit platforms which
+can also run 64-bit code, Debian provides additional packages with names
+beginning with 'lib64' instead of 'lib'.  These packages contain 64-bit
+versions of the libraries.  (At this time, not all platforms and not all
+libraries support biarch.)  The license terms for these lib32 or lib64
+packages are identical to the ones for the lib packages.
+
+
+COPYRIGHT STATEMENTS AND LICENSING TERMS
+
+
+GCC is Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994,
+1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
+2008, 2009, 2010, 2011, 2012, 2013, 2014 Free Software Foundation, Inc.
+
+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.
+
+Files that have exception clauses are licensed under the terms of the
+GNU General Public License; either version 3, or (at your option) any
+later version.
+
+On Debian GNU/Linux systems, the complete text of the GNU General
+Public License is in `/usr/share/common-licenses/GPL', version 3 of this
+license in `/usr/share/common-licenses/GPL-3'.
+
+The following runtime libraries are licensed under the terms of the
+GNU General Public License (v3 or later) with version 3.1 of the GCC
+Runtime Library Exception (included in this file):
+
+ - libgcc (libgcc/, gcc/libgcc2.[ch], gcc/unwind*, gcc/gthr*,
+   gcc/coretypes.h, gcc/crtstuff.c, gcc/defaults.h, gcc/dwarf2.h,
+   gcc/emults.c, gcc/gbl-ctors.h, gcc/gcov-io.h, gcc/libgcov.c,
+   gcc/tsystem.h, gcc/typeclass.h).
+ - libatomic
+ - libdecnumber
+ - libgomp
+ - libitm
+ - libssp
+ - libstdc++-v3
+ - libobjc
+ - libgfortran
+ - The libgnat- at BV@ Ada support library and libgnatvsn library.
+ - Various config files in gcc/config/ used in runtime libraries.
+ - libvtv
+
+In contrast, libgnatprj is licensed under the terms of the pure GNU
+General Public License.
+
+The libbacktrace library is licensed under the following terms:
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+    (1) Redistributions of source code must retain the above copyright
+    notice, this list of conditions and the following disclaimer. 
+
+    (2) Redistributions in binary form must reproduce the above copyright
+    notice, this list of conditions and the following disclaimer in
+    the documentation and/or other materials provided with the
+    distribution.  
+    
+    (3) The name of the author may not be used to
+    endorse or promote products derived from this software without
+    specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
+IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
+
+
+The libsanitizer libraries (libasan, liblsan, libtsan, libubsan) are
+licensed under the following terms:
+
+Copyright (c) 2009-2014 by the LLVM contributors.
+
+All rights reserved.
+
+Developed by:
+
+    LLVM Team
+
+    University of Illinois at Urbana-Champaign
+
+    http://llvm.org
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal with
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is furnished to do
+so, subject to the following conditions:
+
+    * Redistributions of source code must retain the above copyright notice,
+      this list of conditions and the following disclaimers.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+      this list of conditions and the following disclaimers in the
+      documentation and/or other materials provided with the distribution.
+
+    * Neither the names of the LLVM Team, University of Illinois at
+      Urbana-Champaign, nor the names of its contributors may be used to
+      endorse or promote products derived from this Software without specific
+      prior written permission.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
+CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE
+SOFTWARE.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
+
+The libgcj library is licensed under the terms of the GNU General
+Public License, with a special exception:
+
+    Linking this library statically or dynamically with other modules
+    is making a combined work based on this library.  Thus, the terms
+    and conditions of the GNU General Public License cover the whole
+    combination.
+
+    As a special exception, the copyright holders of this library give
+    you permission to link this library with independent modules to
+    produce an executable, regardless of the license terms of these
+    independent modules, and to copy and distribute the resulting
+    executable under terms of your choice, provided that you also
+    meet, for each linked independent module, the terms and conditions
+    of the license of that module.  An independent module is a module
+    which is not derived from or based on this library.  If you modify
+    this library, you may extend this exception to your version of the
+    library, but you are not obligated to do so.  If you do not wish
+    to do so, delete this exception statement from your version.
+
+The libffi library is licensed under the following terms:
+
+    libffi - Copyright (c) 1996-2003  Red Hat, Inc.
+
+    Permission is hereby granted, free of charge, to any person obtaining
+    a copy of this software and associated documentation files (the
+    ``Software''), to deal in the Software without restriction, including
+    without limitation the rights to use, copy, modify, merge, publish,
+    distribute, sublicense, and/or sell copies of the Software, and to
+    permit persons to whom the Software is furnished to do so, subject to
+    the following conditions:
+
+    The above copyright notice and this permission notice shall be included
+    in all copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS
+    OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+    MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+    IN NO EVENT SHALL CYGNUS SOLUTIONS BE LIABLE FOR ANY CLAIM, DAMAGES OR
+    OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+    ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+    OTHER DEALINGS IN THE SOFTWARE.
+
+
+The documentation is licensed under the GNU Free Documentation License (v1.2).
+On Debian GNU/Linux systems, the complete text of this license is in
+`/usr/share/common-licenses/GFDL-1.2'.
+
+
+GCC RUNTIME LIBRARY EXCEPTION
+
+Version 3.1, 31 March 2009
+
+Copyright (C) 2009 Free Software Foundation, Inc. <http://fsf.org/>
+
+Everyone is permitted to copy and distribute verbatim copies of this
+license document, but changing it is not allowed.
+
+This GCC Runtime Library Exception ("Exception") is an additional
+permission under section 7 of the GNU General Public License, version
+3 ("GPLv3"). It applies to a given file (the "Runtime Library") that
+bears a notice placed by the copyright holder of the file stating that
+the file is governed by GPLv3 along with this Exception.
+
+When you use GCC to compile a program, GCC may combine portions of
+certain GCC header files and runtime libraries with the compiled
+program. The purpose of this Exception is to allow compilation of
+non-GPL (including proprietary) programs to use, in this way, the
+header files and runtime libraries covered by this Exception.
+
+0. Definitions.
+
+A file is an "Independent Module" if it either requires the Runtime
+Library for execution after a Compilation Process, or makes use of an
+interface provided by the Runtime Library, but is not otherwise based
+on the Runtime Library.
+
+"GCC" means a version of the GNU Compiler Collection, with or without
+modifications, governed by version 3 (or a specified later version) of
+the GNU General Public License (GPL) with the option of using any
+subsequent versions published by the FSF.
+
+"GPL-compatible Software" is software whose conditions of propagation,
+modification and use would permit combination with GCC in accord with
+the license of GCC.
+
+"Target Code" refers to output from any compiler for a real or virtual
+target processor architecture, in executable form or suitable for
+input to an assembler, loader, linker and/or execution
+phase. Notwithstanding that, Target Code does not include data in any
+format that is used as a compiler intermediate representation, or used
+for producing a compiler intermediate representation.
+
+The "Compilation Process" transforms code entirely represented in
+non-intermediate languages designed for human-written code, and/or in
+Java Virtual Machine byte code, into Target Code. Thus, for example,
+use of source code generators and preprocessors need not be considered
+part of the Compilation Process, since the Compilation Process can be
+understood as starting with the output of the generators or
+preprocessors.
+
+A Compilation Process is "Eligible" if it is done using GCC, alone or
+with other GPL-compatible software, or if it is done without using any
+work based on GCC. For example, using non-GPL-compatible Software to
+optimize any GCC intermediate representations would not qualify as an
+Eligible Compilation Process.
+
+1. Grant of Additional Permission.
+
+You have permission to propagate a work of Target Code formed by
+combining the Runtime Library with Independent Modules, even if such
+propagation would otherwise violate the terms of GPLv3, provided that
+all Target Code was generated by Eligible Compilation Processes. You
+may then convey such a combination under terms of your choice,
+consistent with the licensing of the Independent Modules.
+
+2. No Weakening of GCC Copyleft.
+
+The availability of this Exception does not imply any general
+presumption that third-party software is unaffected by the copyleft
+requirements of the license of GCC.
+
+
+libquadmath/*.[hc]:
+
+   Copyright (C) 2010 Free Software Foundation, Inc.
+   Written by Francois-Xavier Coudert  <fxcoudert at gcc.gnu.org>
+   Written by Tobias Burnus  <burnus at net-b.de>
+
+This file is part of the libiberty library.
+Libiberty is free software; you can redistribute it and/or
+modify it under the terms of the GNU Library General Public
+License as published by the Free Software Foundation; either
+version 2 of the License, or (at your option) any later version.
+
+Libiberty is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+Library General Public License for more details.
+
+libquadmath/gdtoa:
+
+The author of this software is David M. Gay.
+
+Copyright (C) 1998, 1999, 2000, 2001 by Lucent Technologies
+All Rights Reserved
+
+Permission to use, copy, modify, and distribute this software and
+its documentation for any purpose and without fee is hereby
+granted, provided that the above copyright notice appear in all
+copies and that both that the copyright notice and this
+permission notice and warranty disclaimer appear in supporting
+documentation, and that the name of Lucent or any of its entities
+not be used in advertising or publicity pertaining to
+distribution of the software without specific, written prior
+permission.
+
+LUCENT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS.
+IN NO EVENT SHALL LUCENT OR ANY OF ITS ENTITIES BE LIABLE FOR ANY
+SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER
+IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
+THIS SOFTWARE.
+
+libquadmath/math:
+
+atanq.c, expm1q.c, j0q.c, j1q.c, log1pq.c, logq.c:
+    Copyright 2001 by Stephen L. Moshier <moshier at na-net.ornl.gov> 
+
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public
+    License as published by the Free Software Foundation; either
+    version 2.1 of the License, or (at your option) any later version.
+
+    This library is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+    Lesser General Public License for more details.
+
+coshq.c, erfq.c, jnq.c, lgammaq.c, powq.c, roundq.c:
+   Changes for 128-bit __float128 are
+   Copyright (C) 2001 Stephen L. Moshier <moshier at na-net.ornl.gov>
+   and are incorporated herein by permission of the author.  The author 
+   reserves the right to distribute this material elsewhere under different
+   copying permissions.  These modifications are distributed here under 
+   the following terms:
+
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public
+    License as published by the Free Software Foundation; either
+    version 2.1 of the License, or (at your option) any later version.
+
+    This library is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+    Lesser General Public License for more details.
+
+ldexpq.c:
+   * Conversion to long double by Ulrich Drepper,
+   * Cygnus Support, drepper at cygnus.com.
+
+cosq_kernel.c, expq.c, sincos_table.c, sincosq.c, sincosq_kernel.c,
+sinq_kernel.c, truncq.c:
+   Copyright (C) 1997, 1999 Free Software Foundation, Inc.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+isinfq.c:
+ * Written by J.T. Conklin <jtc at netbsd.org>.
+ * Change for long double by Jakub Jelinek <jj at ultra.linux.cz>
+ * Public domain.
+
+llroundq.c, lroundq.c, tgammaq.c:
+   Copyright (C) 1997, 1999, 2002, 2004 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper at cygnus.com>, 1997 and
+                  Jakub Jelinek <jj at ultra.linux.cz>, 1999.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+log10q.c:
+   Cephes Math Library Release 2.2:  January, 1991
+   Copyright 1984, 1991 by Stephen L. Moshier
+   Adapted for glibc November, 2001
+
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public
+    License as published by the Free Software Foundation; either
+    version 2.1 of the License, or (at your option) any later version.
+
+    This library is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+    Lesser General Public License for more details.
+
+remaining files:
+
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+
+
+libjava/classpath/resource/gnu/java/locale/*
+
+They are copyrighted and covered by the terms of use:
+http://www.unicode.org/copyright.html
+
+EXHIBIT 1
+UNICODE, INC. LICENSE AGREEMENT - DATA FILES AND SOFTWARE
+
+ Unicode Data Files include all data files under the directories 
+http://www.unicode.org/Public/ and http://www.unicode.org/reports/. 
+Unicode Software includes any source code published in the Unicode Standard or 
+under the directories http://www.unicode.org/Public/ and 
+http://www.unicode.org/reports/.
+
+NOTICE TO USER: Carefully read the following legal agreement. BY DOWNLOADING, 
+INSTALLING, COPYING OR OTHERWISE USING UNICODE INC.'S DATA FILES ("DATA FILES"), 
+AND/OR SOFTWARE ("SOFTWARE"), YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, 
+ALL OF THE TERMS AND CONDITIONS OF THIS AGREEMENT. IF YOU DO NOT AGREE, 
+DO NOT DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE THE DATA FILES OR SOFTWARE.
+
+	    COPYRIGHT AND PERMISSION NOTICE
+
+Copyrigh (c) 1991-2011 Unicode, Inc. All rights reserved. 
+Distributed under the Terms of Use in http://www.unicode.org/copyright.html.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy 
+of the Unicode data files and any associated documentation (the "Data Files") 
+or Unicode software and any associated documentation (the "Software") to deal 
+in the Data Files or Software without restriction, including without limitation 
+the rights to use, copy, modify, merge, publish, distribute, and/or sell copies
+ of the Data Files or Software, and to permit persons to whom the Data Files 
+or Software are furnished to do so, provided that (a) the above copyright notice(s) 
+and this permission notice appear with all copies of the Data Files or Software, 
+(b) both the above copyright notice(s) and this permission notice appear 
+in associated documentation, and (c) there is clear notice in each modified 
+Data File or in the Software as well as in the documentation associated with 
+the Data File(s) or Software that the data or software has been modified.
+
+THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. 
+IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE
+ FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES 
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF 
+CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION 
+WITH THE USE OR PERFORMANCE OF THE DATA FILES OR SOFTWARE.
+
+Except as contained in this notice, the name of a copyright holder shall not be used
+ in advertising or otherwise to promote the sale, use or other dealings in these 
+Data Files or Software without prior written authorization of the copyright holder.
+
+Unicode and the Unicode logo are trademarks of Unicode, Inc., and may be registered
+ in some jurisdictions. All other trademarks and registered trademarks mentioned 
+herein are the property of their respective owners.
+
+
+gcc/go/gofrontend, libgo:
+
+Copyright (c) 2009 The Go Authors. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+   * Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+   * Redistributions in binary form must reproduce the above
+copyright notice, this list of conditions and the following disclaimer
+in the documentation and/or other materials provided with the
+distribution.
+   * Neither the name of Google Inc. nor the names of its
+contributors may be used to endorse or promote products derived from
+this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+libcilkrts, libmpx:
+ Copyright (C) 2009-2014, Intel Corporation
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+   * Redistributions of source code must retain the above copyright
+     notice, this list of conditions and the following disclaimer.
+   * Redistributions in binary form must reproduce the above copyright
+     notice, this list of conditions and the following disclaimer in
+     the documentation and/or other materials provided with the
+     distribution.
+   * Neither the name of Intel Corporation nor the names of its
+     contributors may be used to endorse or promote products derived
+     from this software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
+ WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.
+
+
+D:
+gdc- at BV@                         GNU D Compiler
+libphobos- at BV@-dev               D standard runtime library
+
+The D source package is made up of the following components.
+
+The D front-end for GCC:
+ - d/*
+
+Copyright (C) 2004-2007 David Friedman
+Modified by Vincenzo Ampolo, Michael Parrot, Iain Buclaw, (C) 2009, 2010
+
+This program 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 2 of the License, or
+(at your option) any later version.
+
+On Debian GNU/Linux systems, the complete text of the GNU General
+Public License is in `/usr/share/common-licenses/GPL', version 2 of this
+license in `/usr/share/common-licenses/GPL-2'.
+
+
+The DMD Compiler implementation of the D programming language:
+ - d/dmd/*
+
+Copyright (c) 1999-2010 by Digital Mars
+All Rights Reserved
+written by Walter Bright
+http://www.digitalmars.com
+License for redistribution is by either the Artistic License or
+the GNU General Public License (v1).
+
+On Debian GNU/Linux systems, the complete text of the GNU General
+Public License is in `/usr/share/common-licenses/GPL', the Artistic
+license in `/usr/share/common-licenses/Artistic'.
+
+
+The Zlib data compression library:
+ - d/phobos/etc/c/zlib/*
+
+ (C) 1995-2004 Jean-loup Gailly and Mark Adler
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+
+
+The Phobos standard runtime library:
+ - d/phobos/*
+
+Unless otherwise marked within the file, each file in the source
+is under the following licenses:
+
+Copyright (C) 2004-2005 by Digital Mars, www.digitalmars.com
+Written by Walter Bright
+
+This software is provided 'as-is', without any express or implied
+warranty. In no event will the authors be held liable for any damages
+arising from the use of this software.
+
+Permission is granted to anyone to use this software for any purpose,
+including commercial applications, and to alter it and redistribute it
+freely, in both source and binary form, subject to the following
+restrictions:
+
+ o  The origin of this software must not be misrepresented; you must not
+    claim that you wrote the original software. If you use this software
+    in a product, an acknowledgment in the product documentation would be
+    appreciated but is not required.
+ o  Altered source versions must be plainly marked as such, and must not
+    be misrepresented as being the original software.
+ o  This notice may not be removed or altered from any source
+    distribution.
+
+By plainly marking modifications, something along the lines of adding to each
+file that has been changed a "Modified by Foo Bar" line
+underneath the "Written by" line would be adequate.
+
diff --git a/debian/cpp-BV-CRB.preinst.in b/debian/cpp-BV-CRB.preinst.in
new file mode 100644
index 0000000..408889b
--- /dev/null
+++ b/debian/cpp-BV-CRB.preinst.in
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+set -e
+
+if [ "$1" = "upgrade" ] || [ "$1" = "configure" ]; then
+    update-alternatives --quiet --remove @TARGET at -cpp /usr/bin/@TARGET at -cpp-@BV@
+fi
+
+#DEBHELPER#
+
+exit 0
diff --git a/debian/cpp-BV-doc.doc-base.cpp b/debian/cpp-BV-doc.doc-base.cpp
new file mode 100644
index 0000000..d64e86f
--- /dev/null
+++ b/debian/cpp-BV-doc.doc-base.cpp
@@ -0,0 +1,16 @@
+Document: cpp- at BV@
+Title: The GNU C preprocessor
+Author: Various
+Abstract: The C preprocessor is a "macro processor" that is used automatically
+ by the C compiler to transform your program before actual compilation.
+ It is called a macro processor because it allows you to define "macros",
+ which are brief abbreviations for longer constructs.
+Section: Programming
+
+Format: html
+Index: /usr/share/doc/gcc- at BV@-base/cpp.html
+Files: /usr/share/doc/gcc- at BV@-base/cpp.html
+
+Format: info
+Index: /usr/share/info/cpp- at BV@.info.gz
+Files: /usr/share/info/cpp- at BV@*
diff --git a/debian/cpp-BV-doc.doc-base.cppint b/debian/cpp-BV-doc.doc-base.cppint
new file mode 100644
index 0000000..151d319
--- /dev/null
+++ b/debian/cpp-BV-doc.doc-base.cppint
@@ -0,0 +1,17 @@
+Document: cppinternals- at BV@
+Title: The GNU C preprocessor (internals)
+Author: Various
+Abstract: This brief manual documents the internals of cpplib, and
+ explains some of the tricky issues.  It is intended that, along with
+ the comments in the source code, a reasonably competent C programmer
+ should be able to figure out what the code is doing, and why things
+ have been implemented the way they have.
+Section: Programming
+
+Format: html
+Index: /usr/share/doc/gcc- at BV@-base/cppinternals.html
+Files: /usr/share/doc/gcc- at BV@-base/cppinternals.html
+
+Format: info
+Index: /usr/share/info/cppinternals- at BV@.info.gz
+Files: /usr/share/info/cppinternals- at BV@*
diff --git a/debian/dh_doclink b/debian/dh_doclink
new file mode 100755
index 0000000..8372658
--- /dev/null
+++ b/debian/dh_doclink
@@ -0,0 +1,12 @@
+#! /bin/sh
+
+pkg=`echo $1 | sed 's/^-p//'`
+target=$2
+
+[ -d debian/$pkg/usr/share/doc ] || mkdir -p debian/$pkg/usr/share/doc
+if [ -d debian/$pkg/usr/share/doc/$p -a ! -h debian/$pkg/usr/share/doc/$p ]
+then
+    echo "WARNING: removing doc directory  $pkg"
+    rm -rf debian/$pkg/usr/share/doc/$pkg
+fi
+ln -sf $target debian/$pkg/usr/share/doc/$pkg
diff --git a/debian/dh_rmemptydirs b/debian/dh_rmemptydirs
new file mode 100755
index 0000000..4a010c7
--- /dev/null
+++ b/debian/dh_rmemptydirs
@@ -0,0 +1,10 @@
+#! /bin/sh -e
+
+pkg=`echo $1 | sed 's/^-p//'`
+
+: # remove empty directories, when all components are in place
+for d in `find debian/$pkg -depth -type d -empty 2> /dev/null`; do \
+    while rmdir $d 2> /dev/null; do d=`dirname $d`; done; \
+done
+
+exit 0
diff --git a/debian/dummy-man.1 b/debian/dummy-man.1
new file mode 100644
index 0000000..966d935
--- /dev/null
+++ b/debian/dummy-man.1
@@ -0,0 +1,29 @@
+.TH @NAME@ 1 "May 24, 2003" @name@ "Debian Free Documentation"
+.SH NAME
+ at name@ \- A program with a man page covered by the GFDL with invariant sections
+.SH SYNOPSIS
+ at name@ [\fB\s-1OPTION\s0\fR] ... [\fI\s-1ARGS\s0\fR...]
+
+.SH DESCRIPTION
+
+\fB at name@\fR is documented by a man page, which is covered by the "GNU
+Free Documentation License" (GFDL) containing invariant sections.
+.P
+In November 2002, version 1.2 of the GNU Free Documentation License (GNU
+FDL) was released by the Free Software Foundation after a long period
+of consultation. Unfortunately, some concerns raised by members of the
+Debian Project were not addressed, and as such the GNU FDL can apply
+to works that do not pass the Debian Free Software Guidelines (DFSG),
+and may thus only be included in the non-free component of the Debian
+archive, not the Debian distribution itself.
+
+.SH "SEE ALSO"
+.BR http://gcc.gnu.org/onlinedocs/
+for the complete documentation,
+.BR http://lists.debian.org/debian-legal/2003/debian-legal-200304/msg00307.html
+for a proposed statement of Debian with respect to the GFDL,
+.BR gfdl(7)
+
+.SH AUTHOR
+This manual page was written by the Debian GCC maintainers,
+for the Debian GNU/Linux system.
diff --git a/debian/dummy.texi b/debian/dummy.texi
new file mode 100644
index 0000000..127ccaa
--- /dev/null
+++ b/debian/dummy.texi
@@ -0,0 +1 @@
+ at c This file is empty because the original one has a non DFSG free license (GFDL)
diff --git a/debian/fixincludes.in b/debian/fixincludes.in
new file mode 100644
index 0000000..23c6e71
--- /dev/null
+++ b/debian/fixincludes.in
@@ -0,0 +1,8 @@
+#! /bin/sh
+
+PATH="/@LIBEXECDIR@/install-tools:$PATH"
+
+TARGET_MACHINE=`dpkg-architecture -qDEB_HOST_GNU_TYPE`
+export TARGET_MACHINE
+
+exec fixinc.sh "$@"
diff --git a/debian/g++-BV-CRB.preinst.in b/debian/g++-BV-CRB.preinst.in
new file mode 100644
index 0000000..b69c8f8
--- /dev/null
+++ b/debian/g++-BV-CRB.preinst.in
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+set -e
+
+if [ "$1" = "upgrade" ] || [ "$1" = "configure" ]; then
+    update-alternatives --quiet --remove @TARGET at -g++ /usr/bin/@TARGET at -g++-@BV@
+fi
+
+#DEBHELPER#
+
+exit 0
diff --git a/debian/gcc-BV-CRB.preinst.in b/debian/gcc-BV-CRB.preinst.in
new file mode 100644
index 0000000..ca34796
--- /dev/null
+++ b/debian/gcc-BV-CRB.preinst.in
@@ -0,0 +1,12 @@
+#!/bin/sh
+
+set -e
+
+if [ "$1" = "upgrade" ] || [ "$1" = "configure" ]; then
+    update-alternatives --quiet --remove @TARGET at -gcc /usr/bin/@TARGET at -gcc-@BV@
+    update-alternatives --quiet --remove @TARGET at -gcov /usr/bin/@TARGET at -gcov-@BV@
+fi
+
+#DEBHELPER#
+
+exit 0
diff --git a/debian/gcc-BV-doc.doc-base.gcc b/debian/gcc-BV-doc.doc-base.gcc
new file mode 100644
index 0000000..106e18d
--- /dev/null
+++ b/debian/gcc-BV-doc.doc-base.gcc
@@ -0,0 +1,14 @@
+Document: gcc- at BV@
+Title: The GNU C and C++ compiler
+Author: Various
+Abstract: This manual documents how to run, install and port the GNU compiler,
+ as well as its new features and incompatibilities, and how to report bugs.
+Section: Programming
+
+Format: html
+Index: /usr/share/doc/gcc- at BV@-base/gcc.html
+Files: /usr/share/doc/gcc- at BV@-base/gcc.html
+
+Format: info
+Index: /usr/share/info/gcc- at BV@.info.gz
+Files: /usr/share/info/gcc- at BV@*
diff --git a/debian/gcc-BV-doc.doc-base.gccint b/debian/gcc-BV-doc.doc-base.gccint
new file mode 100644
index 0000000..85f4af1
--- /dev/null
+++ b/debian/gcc-BV-doc.doc-base.gccint
@@ -0,0 +1,17 @@
+Document: gccint- at BV@
+Title: Internals of the GNU C and C++ compiler
+Author: Various
+Abstract: This manual documents the internals of the GNU compilers,
+ including how to port them to new targets and some information about
+ how to write front ends for new languages.  It corresponds to GCC
+ version @BV at .x.  The use of the GNU compilers is documented in a
+ separate manual.
+Section: Programming
+
+Format: html
+Index: /usr/share/doc/gcc- at BV@-base/gccint.html
+Files: /usr/share/doc/gcc- at BV@-base/gccint.html
+
+Format: info
+Index: /usr/share/info/gccint- at BV@.info.gz
+Files: /usr/share/info/gccint- at BV@*
diff --git a/debian/gcc-BV-doc.doc-base.gomp b/debian/gcc-BV-doc.doc-base.gomp
new file mode 100644
index 0000000..69ccede
--- /dev/null
+++ b/debian/gcc-BV-doc.doc-base.gomp
@@ -0,0 +1,15 @@
+Document: gcc- at BV@-gomp
+Title: The GNU OpenMP Implementation (for GCC @BV@)
+Author: Various
+Abstract: This manual documents the usage of libgomp, the GNU implementation
+ of the OpenMP Application Programming Interface (API) for multi-platform
+ shared-memory parallel programming in C/C++ and Fortran.
+Section: Programming
+
+Format: html
+Index: /usr/share/doc/gcc- at BV@-base/libgomp.html
+Files: /usr/share/doc/gcc- at BV@-base/libgomp.html
+
+Format: info
+Index: /usr/share/info/libgomp- at BV@.info.gz
+Files: /usr/share/info/libgomp- at BV@*
diff --git a/debian/gcc-BV-doc.doc-base.itm b/debian/gcc-BV-doc.doc-base.itm
new file mode 100644
index 0000000..130a70f
--- /dev/null
+++ b/debian/gcc-BV-doc.doc-base.itm
@@ -0,0 +1,16 @@
+Document: gcc- at BV@-itm
+Title: The GNU Transactional Memory Library (for GCC @BV@)
+Author: Various
+Abstract: This manual documents the usage and internals of libitm,
+ the GNU Transactional Memory Library. It provides transaction support
+ for accesses to a process' memory, enabling easy-to-use synchronization
+ of accesses to shared memory by several threads.
+Section: Programming
+
+Format: html
+Index: /usr/share/doc/gcc- at BV@-base/libitm.html
+Files: /usr/share/doc/gcc- at BV@-base/libitm.html
+
+Format: info
+Index: /usr/share/info/libitm- at BV@.info.gz
+Files: /usr/share/info/libitm- at BV@*
diff --git a/debian/gcc-BV-doc.doc-base.qmath b/debian/gcc-BV-doc.doc-base.qmath
new file mode 100644
index 0000000..bdc2d4c
--- /dev/null
+++ b/debian/gcc-BV-doc.doc-base.qmath
@@ -0,0 +1,14 @@
+Document: gcc- at BV@-qmath
+Title: The GCC Quad-Precision Math Library (for GCC @BV@)
+Author: Various
+Abstract: This manual documents the usage of libquadmath, the GCC
+ Quad-Precision Math Library Application Programming Interface (API).
+Section: Programming
+
+Format: html
+Index: /usr/share/doc/gcc- at BV@-base/libquadmath.html
+Files: /usr/share/doc/gcc- at BV@-base/libquadmath.html
+
+Format: info
+Index: /usr/share/info/libquadmath- at BV@.info.gz
+Files: /usr/share/info/libquadmath- at BV@*
diff --git a/debian/gcc-BV-hppa64-linux-gnu.overrides b/debian/gcc-BV-hppa64-linux-gnu.overrides
new file mode 100644
index 0000000..3584aac
--- /dev/null
+++ b/debian/gcc-BV-hppa64-linux-gnu.overrides
@@ -0,0 +1,2 @@
+gcc- at BV@-hppa64-linux-gnu binary: binary-from-other-architecture
+gcc- at BV@-hppa64-linux-gnu binary: binary-without-manpage
diff --git a/debian/gcc-BV-multilib.overrides b/debian/gcc-BV-multilib.overrides
new file mode 100644
index 0000000..545ca0e
--- /dev/null
+++ b/debian/gcc-BV-multilib.overrides
@@ -0,0 +1 @@
+gcc- at BV@-multilib binary: binary-from-other-architecture
diff --git a/debian/gcc-BV-source.overrides b/debian/gcc-BV-source.overrides
new file mode 100644
index 0000000..46e8559
--- /dev/null
+++ b/debian/gcc-BV-source.overrides
@@ -0,0 +1,5 @@
+gcc- at BV@-source: changelog-file-not-compressed
+
+# these are patches taken over unmodified from 4.3
+gcc- at BV@-source: script-not-executable
+gcc- at BV@-source: shell-script-fails-syntax-check
diff --git a/debian/gcc-XX-BV.1 b/debian/gcc-XX-BV.1
new file mode 100644
index 0000000..4268c41
--- /dev/null
+++ b/debian/gcc-XX-BV.1
@@ -0,0 +1,17 @@
+.TH GCC- at TOOL@- at BV@ 1 "May 8, 2012" gcc- at TOOL@- at BV@ ""
+.SH NAME
+gcc- at TOOL@ \- a wrapper around @TOOL@ adding the --plugin option
+
+.SH SYNOPSIS
+gcc- at TOOL@ [\fB\s-1OPTION\s0\fR] ... [\fI\s-1ARGS\s0\fR...]
+
+.SH DESCRIPTION
+
+\fBgcc- at TOOL@\fR is a wrapper around @TOOL@(1) adding the appropriate
+\fB\-\-plugin\fR option for the GCC @BV@ compiler.
+
+.SH OPTIONS
+See @TOOL@(1) for a list of options that @TOOL@ understands.
+
+.SH "SEE ALSO"
+.BR @TOOL@(1)
diff --git a/debian/gcc-dummy.texi b/debian/gcc-dummy.texi
new file mode 100644
index 0000000..b84b670
--- /dev/null
+++ b/debian/gcc-dummy.texi
@@ -0,0 +1,41 @@
+\input texinfo  @c -*-texinfo-*-
+ at c %**start of header
+
+ at settitle The GNU Compiler Collection (GCC)
+
+ at c Create a separate index for command line options.
+ at defcodeindex op
+ at c Merge the standard indexes into a single one.
+ at syncodeindex fn cp
+ at syncodeindex vr cp
+ at syncodeindex ky cp
+ at syncodeindex pg cp
+ at syncodeindex tp cp
+
+ at paragraphindent 1
+
+ at c %**end of header
+
+ at copying
+The current documentation is licensed under the same terms as the Debian packaging.
+ at end copying
+ at ifnottex
+ at dircategory Programming
+ at direntry
+* @name@: (@name@).                  The GNU Compiler Collection (@name@).
+ at end direntry
+ at sp 1
+ at end ifnottex
+
+ at summarycontents
+ at contents
+ at page
+
+ at node Top
+ at top Introduction
+ at 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.
+ at bye
diff --git a/debian/gcc-snapshot.overrides b/debian/gcc-snapshot.overrides
new file mode 100644
index 0000000..98261f3
--- /dev/null
+++ b/debian/gcc-snapshot.overrides
@@ -0,0 +1,4 @@
+gcc-snapshot binary: bad-permissions-for-ali-file
+
+# keep patched ltdl copy
+gcc-snapshot binary: embedded-library
diff --git a/debian/gcc-snapshot.prerm b/debian/gcc-snapshot.prerm
new file mode 100644
index 0000000..0e3d9bb
--- /dev/null
+++ b/debian/gcc-snapshot.prerm
@@ -0,0 +1,5 @@
+#! /bin/sh -e
+
+rm -f /usr/lib/gcc-snapshot/share/python/*.py[co]
+
+#DEBHELPER#
diff --git a/debian/gccgo-BV-doc.doc-base b/debian/gccgo-BV-doc.doc-base
new file mode 100644
index 0000000..86ce258
--- /dev/null
+++ b/debian/gccgo-BV-doc.doc-base
@@ -0,0 +1,17 @@
+Document: gccgo- at BV@
+Title: The GNU Go compiler (version @BV@)
+Author: Various
+Abstract: This manual describes how to use gccgo, the GNU compiler for
+ the Go programming language.  This manual is specifically about
+ gccgo.  For more information about the Go programming
+ language in general, including language specifications and standard
+ package documentation, see http://golang.org/.
+Section: Programming
+
+Format: html
+Index: /usr/share/doc/gcc- at BV@-base/gccgo.html
+Files: /usr/share/doc/gcc- at BV@-base/gccgo.html
+
+Format: info
+Index: /usr/share/info/gccgo- at BV@.info.gz
+Files: /usr/share/info/gccgo- at BV@*
diff --git a/debian/gccgo-BV.postinst b/debian/gccgo-BV.postinst
new file mode 100644
index 0000000..0086d88
--- /dev/null
+++ b/debian/gccgo-BV.postinst
@@ -0,0 +1,16 @@
+#! /bin/sh -e
+
+# see #779503, base version (50) + go version (1.4)
+prio=54
+
+case "$1" in
+    configure)
+	update-alternatives \
+	    --install /usr/bin/go go /usr/bin/go- at BV@ $prio \
+	    --slave /usr/bin/gofmt gofmt /usr/bin/gofmt- at BV@
+	;;
+esac
+
+#DEBHELPER#
+
+exit 0
diff --git a/debian/gccgo-BV.prerm b/debian/gccgo-BV.prerm
new file mode 100644
index 0000000..fd12afc
--- /dev/null
+++ b/debian/gccgo-BV.prerm
@@ -0,0 +1,19 @@
+#!/bin/sh
+
+set -e
+
+case "$1" in
+  remove|upgrade|deconfigure)
+    update-alternatives --remove go /usr/bin/go- at BV@
+    ;;
+  failed-upgrade)
+    ;;
+  *)
+    echo "prerm called with unknown argument \`$1'" >&2
+    exit 0
+    ;;
+esac
+
+#DEBHELPER#
+
+exit 0
diff --git a/debian/gcj-BV-jdk.doc-base b/debian/gcj-BV-jdk.doc-base
new file mode 100644
index 0000000..4483852
--- /dev/null
+++ b/debian/gcj-BV-jdk.doc-base
@@ -0,0 +1,15 @@
+Document: gcj- at BV@
+Title: The GNU Ahead-of-time Compiler for the Java Language
+Author: Various
+Abstract: This manual describes how to use gcj, the GNU compiler for
+ the Java programming language.  gcj can generate both .class files and
+ object files, and it can read both Java source code and .class files.
+Section: Programming/Java
+
+Format: html
+Index: /usr/share/doc/gcc- at BV@-base/java/gcj.html
+Files: /usr/share/doc/gcc- at BV@-base/java/gcj.html
+
+Format: info
+Index: /usr/share/info/gcj- at BV@.info.gz
+Files: /usr/share/info/gcj- at BV@*
diff --git a/debian/gcj-BV-jdk.overrides b/debian/gcj-BV-jdk.overrides
new file mode 100644
index 0000000..6390e70
--- /dev/null
+++ b/debian/gcj-BV-jdk.overrides
@@ -0,0 +1 @@
+gcj- at BV@-jdk binary: wrong-name-for-upstream-changelog
diff --git a/debian/gcj-BV-jdk.postinst b/debian/gcj-BV-jdk.postinst
new file mode 100644
index 0000000..3da014d
--- /dev/null
+++ b/debian/gcj-BV-jdk.postinst
@@ -0,0 +1,45 @@
+#! /bin/sh -e
+
+if [ -d /usr/share/doc/gcc- at BV@-base/java ] && [ ! -h /usr/share/doc/gcc- at BV@-base/java ]; then
+    rm -rf /usr/share/doc/gcc- at BV@-base/java
+    ln -s ../gcj- at BV@-base /usr/share/doc/gcc- at BV@-base/java
+fi
+
+prio=@java_priority@
+update-alternatives --quiet \
+    --install /usr/bin/javac javac /usr/bin/gcj-wrapper- at BV@ $prio \
+    @GFDL at --slave /usr/share/man/man1/javac.1.gz javac.1.gz /usr/share/man/man1/gcj-wrapper- at BV@.1.gz
+
+update-alternatives --quiet \
+    --install /usr/bin/jar jar /usr/bin/gjar- at BV@ $prio \
+    --slave /usr/share/man/man1/jar.1.gz jar.1.gz /usr/share/man/man1/gjar- at BV@.1.gz
+
+update-alternatives --quiet \
+    --install /usr/bin/jarsigner jarsigner /usr/bin/gjarsigner- at BV@ $prio \
+    --slave /usr/share/man/man1/jarsigner.1.gz jarsigner.1.gz /usr/share/man/man1/gjarsigner- at BV@.1.gz
+
+update-alternatives --quiet \
+    --install /usr/bin/javah javah /usr/bin/gjavah- at BV@ $prio \
+    --slave /usr/share/man/man1/javah.1.gz javah.1.gz /usr/share/man/man1/gjavah- at BV@.1.gz
+
+update-alternatives --quiet \
+    --install /usr/bin/javadoc javadoc /usr/bin/gjdoc- at BV@ $prio \
+    --slave /usr/share/man/man1/javadoc.1.gz javadoc.1.gz /usr/share/man/man1/gjdoc- at BV@.1.gz
+
+update-alternatives --quiet \
+    --install /usr/bin/native2ascii native2ascii /usr/bin/gnative2ascii- at BV@ $prio \
+    --slave /usr/share/man/man1/native2ascii.1.gz native2ascii.1.gz /usr/share/man/man1/gnative2ascii- at BV@.1.gz
+
+update-alternatives --quiet \
+    --install /usr/bin/rmic rmic /usr/bin/grmic- at BV@ $prio \
+    @GFDL at --slave /usr/share/man/man1/rmic.1.gz rmic.1.gz /usr/share/man/man1/grmic- at BV@.1.gz
+
+update-alternatives --quiet \
+    --install /usr/bin/serialver serialver /usr/bin/gserialver- at BV@ $prio \
+    --slave /usr/share/man/man1/serialver.1.gz serialver.1.gz /usr/share/man/man1/gserialver- at BV@.1.gz
+
+update-alternatives --quiet \
+    --install /usr/bin/tnameserv tnameserv /usr/bin/gtnameserv- at BV@ $prio \
+    --slave /usr/share/man/man1/tnameserv.1.gz tnameserv.1.gz /usr/share/man/man1/gtnameserv- at BV@.1.gz
+
+#DEBHELPER#
diff --git a/debian/gcj-BV-jdk.prerm b/debian/gcj-BV-jdk.prerm
new file mode 100644
index 0000000..f69a11b
--- /dev/null
+++ b/debian/gcj-BV-jdk.prerm
@@ -0,0 +1,15 @@
+#! /bin/sh -e
+
+if [ "$1" = "remove" ] || [ "$1" = "deconfigure" ]; then
+    update-alternatives --quiet --remove javac /usr/bin/gcj-wrapper- at BV@
+    update-alternatives --quiet --remove jar /usr/bin/gjar- at BV@
+    update-alternatives --quiet --remove jarsigner /usr/bin/gjarsigner- at BV@
+    update-alternatives --quiet --remove javah /usr/bin/gjavah- at BV@
+    update-alternatives --quiet --remove javadoc /usr/bin/gjdoc- at BV@
+    update-alternatives --quiet --remove native2ascii /usr/bin/gnative2ascii- at BV@
+    update-alternatives --quiet --remove rmic /usr/bin/grmic- at BV@
+    update-alternatives --quiet --remove serialver /usr/bin/gserialver- at BV@
+    update-alternatives --quiet --remove tnameserv /usr/bin/gtnameserv- at BV@
+fi
+
+#DEBHELPER#
diff --git a/debian/gcj-BV-jre-headless.overrides b/debian/gcj-BV-jre-headless.overrides
new file mode 100644
index 0000000..6ba9d4c
--- /dev/null
+++ b/debian/gcj-BV-jre-headless.overrides
@@ -0,0 +1,5 @@
+# pick up the exact version, in case another gcj version is installed
+gcj- at BV@-jre-headless binary: binary-or-shlib-defines-rpath
+
+# don't strip the binaries, keep the libgcj13-dbg package Multi-Arch: same
+gcj- at BV@-jre-headless binary: unstripped-binary-or-object
diff --git a/debian/gcj-BV-jre-headless.postinst b/debian/gcj-BV-jre-headless.postinst
new file mode 100644
index 0000000..da2b813
--- /dev/null
+++ b/debian/gcj-BV-jre-headless.postinst
@@ -0,0 +1,48 @@
+#! /bin/sh -e
+
+prio=@java_priority@
+
+update-alternatives --quiet \
+    --install /usr/bin/java java /usr/bin/gij- at BV@ $prio \
+    @GFDL at --slave /usr/share/man/man1/java.1.gz java.1.gz /usr/share/man/man1/gij- at BV@.1.gz
+
+update-alternatives --quiet \
+    --install /usr/bin/rmiregistry rmiregistry /usr/bin/grmiregistry- at BV@ $prio \
+    --slave /usr/share/man/man1/rmiregistry.1.gz rmiregistry.1.gz /usr/share/man/man1/grmiregistry- at BV@.1.gz
+
+update-alternatives --quiet \
+    --install /usr/bin/keytool keytool /usr/bin/gkeytool- at BV@ $prio \
+    --slave /usr/share/man/man1/keytool.1.gz keytool.1.gz /usr/share/man/man1/gkeytool- at BV@.1.gz
+
+update-alternatives --quiet \
+    --install /usr/bin/orbd orbd /usr/bin/gorbd- at BV@ $prio \
+    --slave /usr/share/man/man1/orbd.1.gz orbd.1.gz /usr/share/man/man1/gorbd- at BV@.1.gz
+
+update-alternatives --quiet \
+    --install /usr/bin/rmid rmid /usr/bin/grmid- at BV@ $prio \
+    --slave /usr/share/man/man1/rmid.1.gz rmid.1.gz /usr/share/man/man1/grmid- at BV@.1.gz
+
+case "$1" in
+configure)
+    if [ ! -f /var/lib/gcj- at BV@/classmap.db ]; then
+	uname=$(uname -m)
+	mkdir -p /var/lib/gcj- at BV@
+	if gcj-dbtool- at BV@ -n /var/lib/gcj- at BV@/classmap.db; then
+	    case "$uname" in arm*|m68k|parisc*)
+	        echo >&2 "gcj-dbtool succeeded unexpectedly"
+	    esac
+	else
+	    case "$uname" in
+	    arm*|m68k|parisc*)
+	        echo >&2 "ERROR: gcj-dbtool did fail; known problem on $uname";;
+	    *)
+		exit 2
+	    esac
+	    touch /var/lib/gcj- at BV@/classmap.db
+	fi
+    fi
+esac
+
+#DEBHELPER#
+
+exit 0
diff --git a/debian/gcj-BV-jre-headless.postrm b/debian/gcj-BV-jre-headless.postrm
new file mode 100644
index 0000000..24eb42a
--- /dev/null
+++ b/debian/gcj-BV-jre-headless.postrm
@@ -0,0 +1,10 @@
+#! /bin/sh -e
+
+case "$1" in
+    purge)
+	rm -f /var/lib/gcj- at BV@/classmap.db
+esac
+
+#DEBHELPER#
+
+exit 0
diff --git a/debian/gcj-BV-jre-headless.prerm b/debian/gcj-BV-jre-headless.prerm
new file mode 100644
index 0000000..1d66dc3
--- /dev/null
+++ b/debian/gcj-BV-jre-headless.prerm
@@ -0,0 +1,13 @@
+#! /bin/sh -e
+
+if [ "$1" = "remove" ] || [ "$1" = "deconfigure" ]; then
+    update-alternatives --quiet --remove java /usr/bin/gij- at BV@
+    update-alternatives --quiet --remove rmiregistry /usr/bin/grmiregistry- at BV@
+    update-alternatives --quiet --remove keytool /usr/bin/gkeytool- at BV@
+    update-alternatives --quiet --remove orbd /usr/bin/gorbd- at BV@
+    update-alternatives --quiet --remove rmid /usr/bin/grmid- at BV@
+fi
+
+#DEBHELPER#
+
+exit 0
diff --git a/debian/gcj-wrapper-BV b/debian/gcj-wrapper-BV
new file mode 100644
index 0000000..4648d79
--- /dev/null
+++ b/debian/gcj-wrapper-BV
@@ -0,0 +1,91 @@
+#!/usr/bin/perl -w
+#
+# Starts the GNU Java compiler.
+#
+# Command-line arguments should be in the style of Sun's Java compiler;
+# these will be converted to gcj arguments before being passed to the
+# gcj itself.
+#
+# Copyright (C) 2002-2003 by Ben Burton <bab at debian.org>
+# Based on the original gcj-wrapper-3.2 shell script.
+
+use strict;
+
+# The real Java compiler:
+my $javaCompiler = '/usr/bin/gcj- at BV@';
+
+# The command-line arguments to pass to the real Java compiler:
+my @commandLine;
+
+# The warning flags to pass to the GNU Java compiler:
+my $warnings = '-Wall';
+
+# Build the command-line from the arguments given.
+my $parsingOptions = 1;
+my $copyNextArg = 0;
+my $ignoreNextArg = 0;
+my $appendNextArg = '';
+foreach my $arg (@ARGV) {
+    # See if we already know what to do with this argument.
+    if ($ignoreNextArg) {
+        # Throw it away.
+        $ignoreNextArg = 0;
+        next;
+    } elsif ($copyNextArg or not $parsingOptions) {
+        # Copy it directly.
+        push @commandLine, $arg;
+        $copyNextArg = 0;
+        next;
+    } elsif ($appendNextArg) {
+        # Append it to $appendNextArg and then copy directly.
+        push @commandLine, ($appendNextArg . $arg);
+        $appendNextArg = '';
+        next;
+    }
+
+    # Try to interpret Sun-style options.
+    if ($arg eq '-version') {
+        push @commandLine, '--version';
+    } elsif ($arg eq '-h' or $arg eq '-help') {
+        push @commandLine, '--help';
+    } elsif ($arg eq '-classpath' or $arg eq '--classpath' or $arg eq '--cp') {
+        $appendNextArg = '--classpath=';
+    } elsif ($arg eq '-encoding' or $arg eq '-bootclasspath' or
+             $arg eq '-extdirs') {
+        $appendNextArg = '-' . $arg . '=';
+    } elsif ($arg eq '-d') {
+        push @commandLine, '-d';
+        $copyNextArg = 1;
+    } elsif ($arg eq '-nowarn') {
+        $warnings = '';
+    } elsif ($arg =~ /^-g/) {
+        # Some kind of debugging option - just switch debugging on.
+        push @commandLine, '-g' if ($arg ne '-g:none');
+    } elsif ($arg eq '-O') {
+        push @commandLine, '-O2';
+    } elsif ($arg eq '-Xss') {
+        push @commandLine, $arg;
+    } elsif ($arg =~ /^-X/) {
+        # An extended Sun option (which we don't support).
+        push @commandLine, '--help' if ($arg eq '-X');
+    } elsif ($arg eq '-source' or $arg eq '-sourcepath' or $arg eq '-target') {
+        # An unsupported option with a following argument.
+        $ignoreNextArg = 1;
+    } elsif ($arg =~ /^-/) {
+        # An unsupported standalone option.
+    } else {
+        # Some non-option argument has been given.
+        # Stop parsing options at this point.
+        push @commandLine, $arg;
+        $parsingOptions = 0;
+    }
+}
+
+# Was there a partial argument that was never completed?
+push @commandLine, $appendNextArg if ($appendNextArg);
+
+# Call the real Java compiler.
+my @fullCommandLine = ( $javaCompiler, '-C' );
+push @fullCommandLine, $warnings if ($warnings);
+push @fullCommandLine, @commandLine;
+exec @fullCommandLine or exit(1);
diff --git a/debian/gcj-wrapper-BV.1 b/debian/gcj-wrapper-BV.1
new file mode 100644
index 0000000..8625073
--- /dev/null
+++ b/debian/gcj-wrapper-BV.1
@@ -0,0 +1,20 @@
+.TH GCJ-WRAPPER 1 "June 6, 2002" gcj-wrapper "Java User's Manual"
+.SH NAME
+gcj-wrapper \- a wrapper around gcj
+
+.SH SYNOPSIS
+gcj-wrapper [\fB\s-1OPTION\s0\fR] ... [\fI\s-1ARGS\s0\fR...]
+
+.SH DESCRIPTION
+
+\fBgcj-wrapper\fR is a wrapper around gcj(1) to be called as the java
+compiler. Options different for javac(1) and gcj(1) are translated,
+options unknown to gcj(1) are silently ignored.
+
+.SH OPTIONS
+See gcj- at BV@(1) for a list of options that gcj understands.
+
+.SH "SEE ALSO"
+.BR gcj- at BV@(1)
+,
+.BR javac(1)
diff --git a/debian/gcjh-wrapper-BV b/debian/gcjh-wrapper-BV
new file mode 100644
index 0000000..312c02c
--- /dev/null
+++ b/debian/gcjh-wrapper-BV
@@ -0,0 +1,86 @@
+#!/usr/bin/perl -w
+#
+# Starts the GNU Java header generator.
+#
+# Command-line arguments should be in the style of Sun's javah command;
+# these will be converted to gcjh arguments before being passed to the
+# gcjh itself.
+#
+# Copyright (C) 2003 by Peter Hawkins <peterh at debian.org>
+# Haphazardly hacked up based on the gcj-wrapper perl script.
+# Copyright (C) 2002-2003 by Ben Burton <bab at debian.org>
+# Based on the original gcj-wrapper-3.2 shell script.
+
+use strict;
+
+# The real Java header generator:
+my $javaHeaderGen = '/usr/bin/gcjh- at BV@';
+
+# The command-line arguments to pass to the real Java compiler:
+my @commandLine;
+
+# Build the command-line from the arguments given.
+my $parsingOptions = 1;
+my $copyNextArg = 0;
+my $ignoreNextArg = 0;
+my $appendNextArg = '';
+foreach my $arg (@ARGV) {
+    # See if we already know what to do with this argument.
+    if ($ignoreNextArg) {
+        # Throw it away.
+        $ignoreNextArg = 0;
+        next;
+    } elsif ($copyNextArg or not $parsingOptions) {
+        # Copy it directly.
+        push @commandLine, $arg;
+        $copyNextArg = 0;
+        next;
+    } elsif ($appendNextArg) {
+        # Append it to $appendNextArg and then copy directly.
+        push @commandLine, ($appendNextArg . $arg);
+        $appendNextArg = '';
+        next;
+    }
+
+    # Try to interpret Sun-style options.
+    if ($arg eq '-version') {
+        push @commandLine, '--version';
+    } elsif ($arg eq '-h' or $arg eq '-help') {
+        push @commandLine, '--help';
+    } elsif ($arg eq '-verbose') {
+        push @commandLine, '--verbose';
+    } elsif ($arg eq '-classpath' or $arg eq '--classpath' or $arg eq '--cp') {
+        $appendNextArg = '--classpath=';
+    } elsif ($arg eq '-encoding' or $arg eq '-bootclasspath' or
+             $arg eq '-extdirs') {
+        $appendNextArg = "-".$arg . '=';
+    } elsif ($arg eq '-d') {
+        push @commandLine, '-d';
+        $copyNextArg = 1;
+    } elsif ($arg eq '-o') {
+        push @commandLine, '-o';
+        $copyNextArg = 1;
+    } elsif ($arg eq '-stubs') {
+        push @commandLine, '-stubs';
+    } elsif ($arg eq '-jni') {
+        push @commandLine, '-jni';
+    } elsif ($arg =~ /^-old/) {
+        # An extended Sun option (which we don't support).
+        push @commandLine, '--help' if ($arg eq '-old');
+    } elsif ($arg =~ /^-/) {
+        # An unsupported standalone option.
+    } else {
+        # Some non-option argument has been given.
+        # Stop parsing options at this point.
+        push @commandLine, $arg;
+        $parsingOptions = 0;
+    }
+}
+
+# Was there a partial argument that was never completed?
+push @commandLine, $appendNextArg if ($appendNextArg);
+
+# Call the real Java header generator.
+my @fullCommandLine = ( $javaHeaderGen );
+push @fullCommandLine, @commandLine;
+exec @fullCommandLine or exit(1);
diff --git a/debian/gcjh-wrapper-BV.1 b/debian/gcjh-wrapper-BV.1
new file mode 100644
index 0000000..fa1ad03
--- /dev/null
+++ b/debian/gcjh-wrapper-BV.1
@@ -0,0 +1,20 @@
+.TH GCJH-WRAPPER 1 "June 6, 2002" gcjh-wrapper "Java User's Manual"
+.SH NAME
+gcjh-wrapper \- a wrapper around gcjh
+
+.SH SYNOPSIS
+gcjh-wrapper [\fB\s-1OPTION\s0\fR] ... [\fI\s-1ARGS\s0\fR...]
+
+.SH DESCRIPTION
+
+\fBgcjh-wrapper\fR is a wrapper around gcjh(1) to be called as the java header
+compiler. Options different for javah(1) and gcjh(1) are translated,
+options unknown to gcjh(1) are silently ignored.
+
+.SH OPTIONS
+See gcjh- at BV@(1) for a list of options that gcj understands.
+
+.SH "SEE ALSO"
+.BR gcjh- at BV@(1)
+,
+.BR javah(1)
diff --git a/debian/gen-libstdc-breaks.sh b/debian/gen-libstdc-breaks.sh
new file mode 100755
index 0000000..de35a4a
--- /dev/null
+++ b/debian/gen-libstdc-breaks.sh
@@ -0,0 +1,178 @@
+#! /bin/sh
+
+# https://bugs.debian.org/cgi-bin/pkgreport.cgi?tag=gcc-pr66145;users=debian-gcc@lists.debian.org
+
+vendor=Debian
+if dpkg-vendor --derives-from Ubuntu; then
+    vendor=Ubuntu
+fi
+
+if [ "$vendor" = Debian ]; then
+    :
+    pkgs=$(echo '
+antlr
+libaqsis1
+libassimp3
+blockattack
+boo
+libboost-date-time1.54.0
+libboost-date-time1.55.0
+libcpprest2.4
+printer-driver-brlaser
+c++-annotations
+clustalx
+libdavix0
+libdballe6
+dff
+libdiet-sed2.8
+libdiet-client2.8
+libdiet-admin2.8
+digikam-private-libs
+emscripten
+ergo
+fceux
+flush
+libfreefem++
+freeorion
+fslview
+fwbuilder
+libgazebo5
+libgetfem4++
+libgmsh2
+gnote
+gnudatalanguage
+python-healpy
+innoextract
+libinsighttoolkit4.7
+libdap17
+libdapclient6
+libdapserver7
+libkolabxml1
+libpqxx-4.0
+libreoffice-core
+librime1
+libwibble-dev
+lightspark
+libmarisa0
+mira-assembler
+mongodb
+mongodb-server
+ncbi-blast+
+libogre-1.8.0
+libogre-1.9.0
+openscad
+libopenwalnut1
+passepartout
+pdf2djvu
+photoprint
+plastimatch
+plee-the-bear
+povray
+powertop
+psi4
+python3-taglib
+realtimebattle
+ruby-passenger
+libapache2-mod-passenger
+schroot
+sqlitebrowser
+tecnoballz
+wesnoth-1.12-core
+widelands
+libwreport2
+xflr5
+libxmltooling6')
+else
+    pkgs=$(echo '
+antlr
+libaqsis1
+libassimp3
+blockattack
+boo
+libboost-date-time1.55.0
+libcpprest2.2
+printer-driver-brlaser
+c++-annotations
+chromium-browser
+clustalx
+libdavix0
+libdballe6
+dff
+libdiet-sed2.8
+libdiet-client2.8
+libdiet-admin2.8
+libkgeomap2
+libmediawiki1
+libkvkontakte1
+emscripten
+ergo
+fceux
+flush
+libfreefem++
+freeorion
+fslview
+fwbuilder
+libgazebo5
+libgetfem4++
+libgmsh2
+gnote
+gnudatalanguage
+python-healpy
+innoextract
+libinsighttoolkit4.6
+libdap17
+libdapclient6
+libdapserver7
+libkolabxml1
+libpqxx-4.0
+libreoffice-core
+librime1
+libwibble-dev
+lightspark
+libmarisa0
+mira-assembler
+mongodb
+mongodb-server
+ncbi-blast+
+libogre-1.8.0
+libogre-1.9.0
+openscad
+libopenwalnut1
+passepartout
+pdf2djvu
+photoprint
+plastimatch
+plee-the-bear
+povray
+powertop
+psi4
+python3-taglib
+realtimebattle
+ruby-passenger
+libapache2-mod-passenger
+sqlitebrowser
+tecnoballz
+wesnoth-1.12-core
+widelands
+libwreport2
+xflr5
+libxmltooling6')
+fi
+
+fn=debian/libstdc++-breaks.$vendor
+rm -f $fn
+echo $pkgs
+for p in $pkgs; do
+    #echo $p
+    if ! apt-cache show --no-all-versions $p >/dev/null; then
+	echo "not found: $p"
+    fi
+    v=$(apt-cache show --no-all-versions $p | awk '/^Version/ {print $2}')
+    case "$p" in
+    libboost-date-time*)
+      echo "$p," >> $fn
+      ;;
+    *)
+      echo "$p (<= $v)," >> $fn
+    esac
+done
diff --git a/debian/gfortran-BV-CRB.preinst.in b/debian/gfortran-BV-CRB.preinst.in
new file mode 100644
index 0000000..f6e7cfd
--- /dev/null
+++ b/debian/gfortran-BV-CRB.preinst.in
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+set -e
+
+if [ "$1" = "upgrade" ] || [ "$1" = "configure" ]; then
+    update-alternatives --quiet --remove @TARGET at -gfortran /usr/bin/@TARGET at -gfortran-@BV@
+fi
+
+#DEBHELPER#
+
+exit 0
diff --git a/debian/gfortran-BV-doc.doc-base b/debian/gfortran-BV-doc.doc-base
new file mode 100644
index 0000000..485d458
--- /dev/null
+++ b/debian/gfortran-BV-doc.doc-base
@@ -0,0 +1,14 @@
+Document: gfortran- at BV@
+Title: The GNU Fortran Compiler 
+Author: Various
+Abstract: This manual documents how to run, install and port `gfortran',
+ as well as its new features and incompatibilities, and how to report bugs.
+Section: Programming/Fortran
+
+Format: html
+Index: /usr/share/doc/gcc- at BV@-base/fortran/gfortran.html
+Files: /usr/share/doc/gcc- at BV@-base/fortran/gfortran.html
+
+Format: info
+Index: /usr/share/info/gfortran- at BV@.info.gz
+Files: /usr/share/info/gfortran- at BV@*
diff --git a/debian/gij-hppa b/debian/gij-hppa
new file mode 100644
index 0000000..49d7f4e
--- /dev/null
+++ b/debian/gij-hppa
@@ -0,0 +1,10 @@
+#! /bin/sh
+
+prctl=
+
+case "$(prctl --unaligned=)" in *signal)
+    echo >&2 "$(basename $0): ignore unaligned memory accesses"
+    prctl="prctl --unaligned=default"
+esac
+
+exec $prctl /usr/bin/gij-5.bin "$@"
diff --git a/debian/gij-wrapper-BV b/debian/gij-wrapper-BV
new file mode 100644
index 0000000..114ec1b
--- /dev/null
+++ b/debian/gij-wrapper-BV
@@ -0,0 +1,98 @@
+#!/usr/bin/perl -w
+#
+# Starts the GNU Java interpreter.
+#
+# Command-line arguments should be in the style of Sun's Java runtime;
+# these will be converted to gij arguments before being passed to the
+# gij itself.
+#
+# The Debian JNI module directory and any other specified JNI
+# directories will be included on the JNI search path.
+#
+# Copyright (C) 2002-2003 by Ben Burton <bab at debian.org>
+# Based on the original gij-wrapper-3.2 shell script.
+
+use strict;
+
+# The real Java runtime:
+my $javaRuntime = '/usr/bin/gij- at BV@';
+
+# The debian JNI module directory:
+my $debianJNIDir = '/usr/lib/jni';
+
+# The command-line arguments to pass to the real Java runtime:
+my @commandLine;
+
+# The full JNI search path to use:
+my $JNIPath = '';
+
+# Build the command-line from the arguments given.
+my $parsingOptions = 1;
+
+# Flag used to copy argument to -classpath or -cp.
+my $copyNext = 0;
+foreach my $arg (@ARGV) {
+  if (not $parsingOptions) {
+    # We're done parsing options; just copy all remaining arguments directly.
+    push @commandLine, $arg;
+    next;
+  }
+  if ($copyNext) {
+    push @commandLine, $arg;
+    $copyNext = 0;
+    next;
+  }
+
+  # Try to interpret Sun-style options.
+  if ($arg eq '-version') {
+    push @commandLine, '--version';
+  } elsif ($arg eq '-h' or $arg eq '-help') {
+    push @commandLine, '--help';
+  } elsif ($arg eq '-cp' or $arg eq '--cp') {
+    push @commandLine, '-cp';
+    $copyNext = 1;
+  } elsif ($arg eq '-classpath' or $arg eq '--classpath') {
+    push @commandLine, '-classpath';
+    $copyNext = 1;
+  } elsif ($arg =~ /^-Djava.library.path=(.+)$/) {
+    # A component of the JNI search path has been given.
+    if ($JNIPath) {
+      $JNIPath = $JNIPath . ':' . $1;
+    } else {
+      $JNIPath = $1;
+    }
+  } elsif ($arg eq '-jar' or $arg =~ /^-D/) {
+    # Copy the argument directly.
+    push @commandLine, $arg;
+  } elsif ($arg =~ /^-/) {
+    # An unrecognised option has been passed - just drop it.
+  } else {
+    # Some non-option argument has been given.
+    # Stop parsing options at this point.
+    push @commandLine, $arg;
+    $parsingOptions = 0;
+  }
+}
+
+# Add the debian JNI module directory to the JNI search path if it's not
+# already there.
+if ($JNIPath !~ /(^|:)$debianJNIDir($|:)/) {
+  if ($JNIPath) {
+    $JNIPath = $JNIPath . ':' . $debianJNIDir;
+  } else {
+    $JNIPath = $debianJNIDir;
+  }
+}
+
+# Use environment variable $LTDL_LIBRARY_PATH to store the JNI path,
+# since gij uses libltdl to dlopen JNI modules.
+if ($ENV{LTDL_LIBRARY_PATH}) {
+    $ENV{LTDL_LIBRARY_PATH} = $ENV{LTDL_LIBRARY_PATH} . ':' . $JNIPath;
+} else {
+    $ENV{LTDL_LIBRARY_PATH} = $JNIPath;
+}
+
+# Call the real Java runtime.
+my @fullCommandLine = ( $javaRuntime );
+push @fullCommandLine, @commandLine;
+exec @fullCommandLine or exit(1);
diff --git a/debian/gij-wrapper-BV.1 b/debian/gij-wrapper-BV.1
new file mode 100644
index 0000000..fe7d768
--- /dev/null
+++ b/debian/gij-wrapper-BV.1
@@ -0,0 +1,22 @@
+.TH GIJ-WRAPPER 1 "August 11, 2001" gij-wrapper "Java User's Manual"
+.SH NAME
+gij-wrapper \- a wrapper around gij
+
+.SH SYNOPSIS
+gij-wrapper [\fB\s-1OPTION\s0\fR] ... \fI\s-1JARFILE\s0\fR [\fI\s-1ARGS\s0\fR...]
+.PP
+gij-wrapper [\fB\-jar\fR] [\fB\s-1OPTION\s0\fR] ... \fI\s-1CLASS\s0\fR [\fI\s-1ARGS\s0\fR...]
+
+.SH DESCRIPTION
+
+\fBgij-wrapper\fR is a wrapper around gij(1) to be called as the java
+interpreter. Options different for java(1) and gij(1) are translated,
+options unknown to gij(1) are silently ignored.
+
+.SH OPTIONS
+See gij- at BV@(1) for a list of options that gij understands.
+
+.SH "SEE ALSO"
+.BR gij- at BV@(1)
+,
+.BR java(1)
diff --git a/debian/gnat-BV-doc.doc-base.rm b/debian/gnat-BV-doc.doc-base.rm
new file mode 100644
index 0000000..7957275
--- /dev/null
+++ b/debian/gnat-BV-doc.doc-base.rm
@@ -0,0 +1,16 @@
+Document: gnat-rm- at BV@
+Title: GNAT (GNU Ada) Reference Manual
+Author: Various
+Abstract: This manual contains useful information in writing programs
+ using the GNAT compiler.  It includes information on implementation
+ dependent characteristics of GNAT, including all the information
+ required by Annex M of the standard.
+Section: Programming/Ada
+
+Format: html
+Index: /usr/share/doc/gnat- at BV@-doc/gnat_rm.html
+Files: /usr/share/doc/gnat- at BV@-doc/gnat_rm.html
+
+Format: info
+Index: /usr/share/info/gnat_rm- at BV@.info.gz
+Files: /usr/share/info/gnat_rm- at BV@*
diff --git a/debian/gnat-BV-doc.doc-base.style b/debian/gnat-BV-doc.doc-base.style
new file mode 100644
index 0000000..db6dfc8
--- /dev/null
+++ b/debian/gnat-BV-doc.doc-base.style
@@ -0,0 +1,16 @@
+Document: gnat-style- at BV@
+Title: GNAT Coding Style
+Author: Various
+Abstract: Most of GNAT is written in Ada using a consistent style to
+ ensure readability of the code.  This document has been written to
+ help maintain this consistent style, while having a large group of
+ developers work on the compiler.
+Section: Programming/Ada
+
+Format: html
+Index: /usr/share/doc/gnat- at BV@-doc/gnat-style.html
+Files: /usr/share/doc/gnat- at BV@-doc/gnat-style.html
+
+Format: info
+Index: /usr/share/info/gnat-style- at BV@.info.gz
+Files: /usr/share/info/gnat-style- at BV@*
diff --git a/debian/gnat-BV-doc.doc-base.ug b/debian/gnat-BV-doc.doc-base.ug
new file mode 100644
index 0000000..00dedf1
--- /dev/null
+++ b/debian/gnat-BV-doc.doc-base.ug
@@ -0,0 +1,16 @@
+Document: gnat-ugn- at BV@
+Title: GNAT User's Guide for Unix Platforms
+Author: Various
+Abstract: This guide describes the use of GNAT, a compiler and
+ software development toolset for the full Ada 95 programming language.
+ It describes the features of the compiler and tools, and details how
+ to use them to build Ada 95 applications.
+Section: Programming/Ada
+
+Format: html
+Index: /usr/share/doc/gnat- at BV@-doc/gnat_ugn.html
+Files: /usr/share/doc/gnat- at BV@-doc/gnat_ugn.html
+
+Format: info
+Index: /usr/share/info/gnat_ugn- at BV@.info.gz
+Files: /usr/share/info/gnat_ugn- at BV@*
diff --git a/debian/gnat-BV.overrides b/debian/gnat-BV.overrides
new file mode 100644
index 0000000..f07d2d6
--- /dev/null
+++ b/debian/gnat-BV.overrides
@@ -0,0 +1 @@
+gnat- at BV@ binary: quilt-build-dep-but-no-series-file
diff --git a/debian/gnat.1 b/debian/gnat.1
new file mode 100644
index 0000000..33a42c7
--- /dev/null
+++ b/debian/gnat.1
@@ -0,0 +1,43 @@
+.\" Hey, Emacs!  This is an -*- nroff -*- source file.
+.\"
+.\" Copyright (C) 1996 Erick Branderhorst <branderh at debian.org>
+.\" Copyright (C) 2011 Nicolas Boulenguez <nicolas.boulenguez at free.fr>
+.\"
+.\" This 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 2, or (at your option) any later
+.\" version.
+.\"
+.\" This 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 with
+.\" your Debian GNU/Linux system, in /usr/doc/copyright/GPL, or with the
+.\" dpkg source package as the file COPYING.  If not, write to the Free
+.\" Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+.\"
+.\"
+.TH "GNAT TOOLBOX" 1 "Jun 2002" "Debian Project" "Debian Linux"
+.SH NAME
+gnat, gnatbind, gnatbl, gnatchop, gnatfind, gnathtml, gnatkr, gnatlink,
+gnatls, gnatmake, gnatprep, gnatpsta, gnatpsys, gnatxref \-
+GNAT toolbox
+.SH DESCRIPTION
+Those programs are part of GNU GNAT, a freely available Ada 95 compiler.
+.PP
+For accessing the full GNAT manuals, use
+.B info gnat-ug-4.8
+and
+.B info gnat-rm-4.8
+for the sections related to the reference manual.
+If those sections cannot be found, you will have to install the
+gnat-4.4-doc package as well (since these manuals contain invariant parts,
+the package is located in the non-free part of the Debian archive).
+You may also browse
+.B http://gcc.gnu.org/onlinedocs
+which provides the GCC online documentation.
+.SH AUTHOR
+This manpage has been written by Samuel Tardieu <sam at debian.org>, for the
+Debian GNU/Linux project.
diff --git a/debian/gnatprj.gpr b/debian/gnatprj.gpr
new file mode 100644
index 0000000..087869e
--- /dev/null
+++ b/debian/gnatprj.gpr
@@ -0,0 +1,32 @@
+--  Project file for use with GNAT
+--  Copyright (c) 2005, 2008 Ludovic Brenta <ludovic at ludovic-brenta.org>
+--
+--  This program is free software; you can redistribute it and/or modify
+--  it under the terms of the GNU General Public License as published by
+--  the Free Software Foundation; either version 3 of the License, or
+--  (at your option) any later version.
+--
+--  This program 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.
+--
+--  This project file is designed to help build applications that use
+--  GNAT project files.  Here is an example of how to use this project file:
+--
+--  with "gnatprj";
+--  project Example is
+--     for Object_Dir use "obj";
+--     for Exec_Dir use ".";
+--     for Main use ("example");
+--  end Example;
+
+with "gnatvsn.gpr";
+project Gnatprj is
+   for Library_Name use "gnatprj";
+   for Library_Dir use "/usr/lib";
+   for Library_Kind use "dynamic";
+   for Source_Dirs use ("/usr/share/ada/adainclude/gnatprj");
+   for Library_ALI_Dir use "/usr/lib/ada/adalib/gnatprj";
+   for Externally_Built use "true";
+end Gnatprj;
diff --git a/debian/gnatvsn.gpr b/debian/gnatvsn.gpr
new file mode 100644
index 0000000..461ca0d
--- /dev/null
+++ b/debian/gnatvsn.gpr
@@ -0,0 +1,31 @@
+--  Project file for use with GNAT
+--  Copyright (c) 2005, 2008 Ludovic Brenta <ludovic at ludovic-brenta.org>
+--
+--  This program is free software; you can redistribute it and/or modify
+--  it under the terms of the GNU General Public License as published by
+--  the Free Software Foundation; either version 3 of the License, or
+--  (at your option) any later version.
+--
+--  This program 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.
+--
+--  This project file is designed to help build applications that use
+--  GNAT project files.  Here is an example of how to use this project file:
+--
+--  with "gnatvsn";
+--  project Example is
+--     for Object_Dir use "obj";
+--     for Exec_Dir use ".";
+--     for Main use ("example");
+--  end Example;
+
+project Gnatvsn is
+   for Library_Name use "gnatvsn";
+   for Library_Dir use "/usr/lib";
+   for Library_Kind use "dynamic";
+   for Source_Dirs use ("/usr/share/ada/adainclude/gnatvsn");
+   for Library_ALI_Dir use "/usr/lib/ada/adalib/gnatvsn";
+   for Externally_Built use "true";
+end Gnatvsn;
diff --git a/debian/jdb.sh b/debian/jdb.sh
new file mode 100644
index 0000000..d14f139
--- /dev/null
+++ b/debian/jdb.sh
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+# Placeholder script to fake a
+# JDK compatible JAVA_HOME directory.
+
+echo >&2 "This script is only a placeholder."
+echo >&2 "Some programs need a JDK rather than only a JRE to work."
+echo >&2 "They test for this tool to detect a JDK installation, but"
+echo >&2 "don't really need its functionality to work correctly."
diff --git a/debian/lib32asan0.overrides b/debian/lib32asan0.overrides
new file mode 100644
index 0000000..5df1123
--- /dev/null
+++ b/debian/lib32asan0.overrides
@@ -0,0 +1,2 @@
+# automake gets it wrong for the multilib build
+lib32asan0 binary: binary-or-shlib-defines-rpath
diff --git a/debian/lib32asan0.symbols b/debian/lib32asan0.symbols
new file mode 100644
index 0000000..edd5ae2
--- /dev/null
+++ b/debian/lib32asan0.symbols
@@ -0,0 +1,3 @@
+libasan.so.0 lib32asan0 #MINVER#
+#include "libasan0.symbols.common"
+#include "libasan0.symbols.32"
diff --git a/debian/lib32gccLC.postinst b/debian/lib32gccLC.postinst
new file mode 100644
index 0000000..0163e03
--- /dev/null
+++ b/debian/lib32gccLC.postinst
@@ -0,0 +1,12 @@
+#! /bin/sh -e
+
+case "$1" in
+    configure)
+	docdir=/usr/share/doc/lib32gcc at LC@
+	if [ -d $docdir ] && [ ! -h $docdir ]; then
+	    rm -rf $docdir
+	    ln -s gcc- at BV@-base $docdir
+	fi
+esac
+
+#DEBHELPER#
diff --git a/debian/lib32objc4.symbols b/debian/lib32objc4.symbols
new file mode 100644
index 0000000..8be3e02
--- /dev/null
+++ b/debian/lib32objc4.symbols
@@ -0,0 +1,3 @@
+libobjc.so.4 lib32objc4 #MINVER#
+#include "libobjc4.symbols.common"
+ __gnu_objc_personality_v0 at Base 4.2.1
diff --git a/debian/lib32stdc++6.symbols.amd64 b/debian/lib32stdc++6.symbols.amd64
new file mode 100644
index 0000000..de46462
--- /dev/null
+++ b/debian/lib32stdc++6.symbols.amd64
@@ -0,0 +1,14 @@
+libstdc++.so.6 lib32stdc++6 #MINVER#
+#include "libstdc++6.symbols.32bit"
+#include "libstdc++6.symbols.excprop"
+#include "libstdc++6.symbols.money.ldbl"
+ __gxx_personality_v0 at CXXABI_1.3 4.1.1
+ _ZNKSt3tr14hashIeEclEe at GLIBCXX_3.4.10 4.3
+ _ZNKSt4hashIeEclEe at GLIBCXX_3.4.10 4.3
+ (optional)_Z16__VLTRegisterSetPPvPKvjjS0_ at CXXABI_1.3.8 4.9.0
+ (optional)_Z17__VLTRegisterPairPPvPKvjS2_ at CXXABI_1.3.8 4.9.0
+ (optional)_Z21__VLTRegisterSetDebugPPvPKvjjS0_ at CXXABI_1.3.8 4.9.0
+ (optional)_Z22__VLTRegisterPairDebugPPvPKvjS2_PKcS4_ at CXXABI_1.3.8 4.9.0
+ (optional)_Z24__VLTVerifyVtablePointerPPvPKv at CXXABI_1.3.8 4.9.0
+ (optional)_Z29__VLTVerifyVtablePointerDebugPPvPKvPKcS4_ at CXXABI_1.3.8 4.9.0
+ (optional)__VLTChangePermission at CXXABI_1.3.8 4.9.0
diff --git a/debian/lib32stdc++6.symbols.kfreebsd-amd64 b/debian/lib32stdc++6.symbols.kfreebsd-amd64
new file mode 100644
index 0000000..50f10af
--- /dev/null
+++ b/debian/lib32stdc++6.symbols.kfreebsd-amd64
@@ -0,0 +1,7 @@
+libstdc++.so.6 lib32stdc++6 #MINVER#
+#include "libstdc++6.symbols.32bit"
+#include "libstdc++6.symbols.excprop"
+#include "libstdc++6.symbols.money.ldbl"
+ __gxx_personality_v0 at CXXABI_1.3 4.1.1
+ _ZNKSt3tr14hashIeEclEe at GLIBCXX_3.4.10 4.3
+ _ZNKSt4hashIeEclEe at GLIBCXX_3.4.10 4.3
diff --git a/debian/lib32stdc++6.symbols.ppc64 b/debian/lib32stdc++6.symbols.ppc64
new file mode 100644
index 0000000..61fc768
--- /dev/null
+++ b/debian/lib32stdc++6.symbols.ppc64
@@ -0,0 +1,9 @@
+libstdc++.so.6 lib32stdc++6 #MINVER#
+#include "libstdc++6.symbols.32bit"
+#include "libstdc++6.symbols.excprop"
+ __gxx_personality_v0 at CXXABI_1.3 4.1.1
+#include "libstdc++6.symbols.glibcxxmath"
+#include "libstdc++6.symbols.ldbl.32bit"
+#include "libstdc++6.symbols.money.f128"
+ _ZNKSt3tr14hashIeEclEe at GLIBCXX_3.4.10 4.3.0~rc2
+ _ZNKSt4hashIeEclEe at GLIBCXX_3.4.10 4.3.0~rc2
diff --git a/debian/lib32stdc++6.symbols.s390x b/debian/lib32stdc++6.symbols.s390x
new file mode 100644
index 0000000..bcb77f6
--- /dev/null
+++ b/debian/lib32stdc++6.symbols.s390x
@@ -0,0 +1,558 @@
+libstdc++.so.6 lib32stdc++6 #MINVER#
+#include "libstdc++6.symbols.common"
+#include "libstdc++6.symbols.excprop"
+#include "libstdc++6.symbols.money.f128"
+ _ZN9__gnu_cxx12__atomic_addEPVii at GLIBCXX_3.4 4.1.1
+ _ZN9__gnu_cxx17__pool_alloc_base16_M_get_free_listEm at GLIBCXX_3.4.2 4.1.1
+ _ZN9__gnu_cxx17__pool_alloc_base9_M_refillEm at GLIBCXX_3.4.2 4.1.1
+ _ZN9__gnu_cxx18__exchange_and_addEPVii at GLIBCXX_3.4 4.1.1
+ _ZN9__gnu_cxx6__poolILb0EE16_M_reclaim_blockEPcm at GLIBCXX_3.4.4 4.1.1
+ _ZN9__gnu_cxx6__poolILb0EE16_M_reserve_blockEmm at GLIBCXX_3.4.4 4.1.1
+ _ZN9__gnu_cxx6__poolILb1EE16_M_reclaim_blockEPcm at GLIBCXX_3.4.4 4.1.1
+ _ZN9__gnu_cxx6__poolILb1EE16_M_reserve_blockEmm at GLIBCXX_3.4.4 4.1.1
+ _ZN9__gnu_cxx9free_list6_M_getEm at GLIBCXX_3.4.4 4.1.1
+ _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE6xsgetnEPci at GLIBCXX_3.4.10 4.3.0~rc2
+ _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE6xsputnEPKci at GLIBCXX_3.4.10 4.3.0~rc2
+ _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode at GLIBCXX_3.4.10 4.3.0~rc2
+ _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE6xsgetnEPwi at GLIBCXX_3.4.10 4.3.0~rc2
+ _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE6xsputnEPKwi at GLIBCXX_3.4.10 4.3.0~rc2
+ _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode at GLIBCXX_3.4.10 4.3.0~rc2
+ _ZNK10__cxxabiv117__class_type_info12__do_dyncastEiNS0_10__sub_kindEPKS0_PKvS3_S5_RNS0_16__dyncast_resultE at CXXABI_1.3 4.1.1
+ _ZNK10__cxxabiv117__class_type_info20__do_find_public_srcEiPKvPKS0_S2_ at CXXABI_1.3 4.1.1
+ _ZNK10__cxxabiv120__si_class_type_info12__do_dyncastEiNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE at CXXABI_1.3 4.1.1
+ _ZNK10__cxxabiv120__si_class_type_info20__do_find_public_srcEiPKvPKNS_17__class_type_infoES2_ at CXXABI_1.3 4.1.1
+ _ZNK10__cxxabiv121__vmi_class_type_info12__do_dyncastEiNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE at CXXABI_1.3 4.1.1
+ _ZNK10__cxxabiv121__vmi_class_type_info20__do_find_public_srcEiPKvPKNS_17__class_type_infoES2_ at CXXABI_1.3 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwm at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwmm at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofERKS2_m at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEwm at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEPKwm at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEPKwmm at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofERKS2_m at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEwm at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE15_M_check_lengthEmmPKc at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE15_M_check_lengthEmmPKc at GLIBCXX_3.4.5 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEPKwm at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEPKwmm at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofERKS2_m at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEwm at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEPKwm at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEPKwmm at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofERKS2_m at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEwm at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE2atEm at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE4copyEPwmm at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE4findEPKwm at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE4findEPKwmm at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE4findERKS2_m at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE4findEwm at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE5rfindEPKwm at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE5rfindEPKwmm at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE5rfindERKS2_m at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE5rfindEwm at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE6substrEmm at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE7compareEmmPKw at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE7compareEmmPKwm at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE7compareEmmRKS2_ at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE7compareEmmRKS2_mm at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE8_M_checkEmPKc at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE8_M_limitEmm at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEEixEm at GLIBCXX_3.4 4.1.1
+ _ZNKSs12find_last_ofEPKcm at GLIBCXX_3.4 4.1.1
+ _ZNKSs12find_last_ofEPKcmm at GLIBCXX_3.4 4.1.1
+ _ZNKSs12find_last_ofERKSsm at GLIBCXX_3.4 4.1.1
+ _ZNKSs12find_last_ofEcm at GLIBCXX_3.4 4.1.1
+ _ZNKSs13find_first_ofEPKcm at GLIBCXX_3.4 4.1.1
+ _ZNKSs13find_first_ofEPKcmm at GLIBCXX_3.4 4.1.1
+ _ZNKSs13find_first_ofERKSsm at GLIBCXX_3.4 4.1.1
+ _ZNKSs13find_first_ofEcm at GLIBCXX_3.4 4.1.1
+ _ZNKSs15_M_check_lengthEmmPKc at GLIBCXX_3.4 4.1.1
+ _ZNKSs15_M_check_lengthEmmPKc at GLIBCXX_3.4.5 4.1.1
+ _ZNKSs16find_last_not_ofEPKcm at GLIBCXX_3.4 4.1.1
+ _ZNKSs16find_last_not_ofEPKcmm at GLIBCXX_3.4 4.1.1
+ _ZNKSs16find_last_not_ofERKSsm at GLIBCXX_3.4 4.1.1
+ _ZNKSs16find_last_not_ofEcm at GLIBCXX_3.4 4.1.1
+ _ZNKSs17find_first_not_ofEPKcm at GLIBCXX_3.4 4.1.1
+ _ZNKSs17find_first_not_ofEPKcmm at GLIBCXX_3.4 4.1.1
+ _ZNKSs17find_first_not_ofERKSsm at GLIBCXX_3.4 4.1.1
+ _ZNKSs17find_first_not_ofEcm at GLIBCXX_3.4 4.1.1
+ _ZNKSs2atEm at GLIBCXX_3.4 4.1.1
+ _ZNKSs4copyEPcmm at GLIBCXX_3.4 4.1.1
+ _ZNKSs4findEPKcm at GLIBCXX_3.4 4.1.1
+ _ZNKSs4findEPKcmm at GLIBCXX_3.4 4.1.1
+ _ZNKSs4findERKSsm at GLIBCXX_3.4 4.1.1
+ _ZNKSs4findEcm at GLIBCXX_3.4 4.1.1
+ _ZNKSs5rfindEPKcm at GLIBCXX_3.4 4.1.1
+ _ZNKSs5rfindEPKcmm at GLIBCXX_3.4 4.1.1
+ _ZNKSs5rfindERKSsm at GLIBCXX_3.4 4.1.1
+ _ZNKSs5rfindEcm at GLIBCXX_3.4 4.1.1
+ _ZNKSs6substrEmm at GLIBCXX_3.4 4.1.1
+ _ZNKSs7compareEmmPKc at GLIBCXX_3.4 4.1.1
+ _ZNKSs7compareEmmPKcm at GLIBCXX_3.4 4.1.1
+ _ZNKSs7compareEmmRKSs at GLIBCXX_3.4 4.1.1
+ _ZNKSs7compareEmmRKSsmm at GLIBCXX_3.4 4.1.1
+ _ZNKSs8_M_checkEmPKc at GLIBCXX_3.4 4.1.1
+ _ZNKSs8_M_limitEmm at GLIBCXX_3.4 4.1.1
+ _ZNKSsixEm at GLIBCXX_3.4 4.1.1
+ _ZNKSt11__timepunctIcE6_M_putEPcmPKcPK2tm at GLIBCXX_3.4 4.1.1
+ _ZNKSt11__timepunctIwE6_M_putEPwmPKwPK2tm at GLIBCXX_3.4 4.1.1
+ _ZNKSt3tr14hashIeEclEe at GLIBCXX_3.4.10 4.3
+ _ZNKSt4hashIeEclEe at GLIBCXX_3.4.10 4.3
+ _ZNKSt7codecvtIcc11__mbstate_tE9do_lengthERS0_PKcS4_m at GLIBCXX_3.4 4.1.1
+ _ZNKSt7codecvtIwc11__mbstate_tE9do_lengthERS0_PKcS4_m at GLIBCXX_3.4 4.1.1
+ _ZNKSt7collateIcE12_M_transformEPcPKcm at GLIBCXX_3.4 4.1.1
+ _ZNKSt7collateIwE12_M_transformEPwPKwm at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE12_M_group_intEPKcmcRSt8ios_basePcS9_Ri at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE14_M_group_floatEPKcmcS6_PcS7_Ri at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6_M_padEciRSt8ios_basePcPKcRi at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE12_M_group_intEPKcmwRSt8ios_basePwS9_Ri at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE14_M_group_floatEPKcmwPKwPwS9_Ri at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6_M_padEwiRSt8ios_basePwPKwRi at GLIBCXX_3.4 4.1.1
+ _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_numES3_S3_RiiimRSt8ios_baseRSt12_Ios_Iostate at GLIBCXX_3.4 4.1.1
+ _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE15_M_extract_nameES3_S3_RiPPKcmRSt8ios_baseRSt12_Ios_Iostate at GLIBCXX_3.4 4.1.1
+ _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE24_M_extract_wday_or_monthES3_S3_RiPPKcmRSt8ios_baseRSt12_Ios_Iostate at GLIBCXX_3.4.14 4.5.0
+ _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_numES3_S3_RiiimRSt8ios_baseRSt12_Ios_Iostate at GLIBCXX_3.4 4.1.1
+ _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE15_M_extract_nameES3_S3_RiPPKwmRSt8ios_baseRSt12_Ios_Iostate at GLIBCXX_3.4 4.1.1
+ _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE24_M_extract_wday_or_monthES3_S3_RiPPKwmRSt8ios_baseRSt12_Ios_Iostate at GLIBCXX_3.4.14 4.5.0
+ _ZNSbIwSt11char_traitsIwESaIwEE10_S_compareEmm at GLIBCXX_3.4.16 4.7
+ _ZNKSt8valarrayImE4sizeEv at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE12_S_constructEmwRKS1_ at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE14_M_replace_auxEmmmw at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE15_M_replace_safeEmmPKwm at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE18_S_construct_aux_2EmwRKS1_ at GLIBCXX_3.4.14 4.5.0
+ _ZNSbIwSt11char_traitsIwESaIwEE2atEm at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE4_Rep26_M_set_length_and_sharableEm at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE4_Rep26_M_set_length_and_sharableEm at GLIBCXX_3.4.5 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE4_Rep8_M_cloneERKS1_m at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE4_Rep9_S_createEmmRKS1_ at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE5eraseEmm at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6appendEPKwm at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6appendERKS2_mm at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6appendEmw at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6assignEPKwm at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6assignERKS2_mm at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6assignEmw at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS2_EEmw at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6insertEmPKw at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6insertEmPKwm at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6insertEmRKS2_ at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6insertEmRKS2_mm at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6insertEmmw at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6resizeEm at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6resizeEmw at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7_M_copyEPwPKwm at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7_M_copyEPwPKwm at GLIBCXX_3.4.5 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7_M_moveEPwPKwm at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7_M_moveEPwPKwm at GLIBCXX_3.4.5 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_PKwm at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_mw at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmPKw at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmPKwm at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmRKS2_ at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmRKS2_mm at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmmw at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7reserveEm at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwmw at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwmw at GLIBCXX_3.4.5 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE9_M_mutateEmmm at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEC1EPKwmRKS1_ at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_mm at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_mmRKS1_ at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEC1EmwRKS1_ at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEC2EPKwmRKS1_ at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_mm at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_mmRKS1_ at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEC2EmwRKS1_ at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEixEm at GLIBCXX_3.4 4.1.1
+ _ZNSi3getEPci at GLIBCXX_3.4 4.1.1
+ _ZNSi3getEPcic at GLIBCXX_3.4 4.1.1
+ _ZNSi4readEPci at GLIBCXX_3.4 4.1.1
+ _ZNSi5seekgExSt12_Ios_Seekdir at GLIBCXX_3.4 4.1.1
+ _ZNSi6ignoreEi at GLIBCXX_3.4 4.1.1
+ _ZNSi6ignoreEi at GLIBCXX_3.4.5 4.1.1
+ _ZNSi6ignoreEii at GLIBCXX_3.4 4.1.1
+ _ZNSi7getlineEPci at GLIBCXX_3.4 4.1.1
+ _ZNSi7getlineEPcic at GLIBCXX_3.4 4.1.1
+ _ZNSi8readsomeEPci at GLIBCXX_3.4 4.1.1
+ _ZNSo5seekpExSt12_Ios_Seekdir at GLIBCXX_3.4 4.1.1
+ _ZNSo5writeEPKci at GLIBCXX_3.4 4.1.1
+ _ZNSo8_M_writeEPKci at GLIBCXX_3.4 4.1.1
+ _ZNSs10_S_compareEmm at GLIBCXX_3.4.16 4.7
+ _ZNSs12_S_constructEmcRKSaIcE at GLIBCXX_3.4 4.1.1
+ _ZNSs14_M_replace_auxEmmmc at GLIBCXX_3.4 4.1.1
+ _ZNSs15_M_replace_safeEmmPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSs18_S_construct_aux_2EmcRKSaIcE at GLIBCXX_3.4.14 4.5.0
+ _ZNSs2atEm at GLIBCXX_3.4 4.1.1
+ _ZNSs4_Rep26_M_set_length_and_sharableEm at GLIBCXX_3.4 4.1.1
+ _ZNSs4_Rep26_M_set_length_and_sharableEm at GLIBCXX_3.4.5 4.1.1
+ _ZNSs4_Rep8_M_cloneERKSaIcEm at GLIBCXX_3.4 4.1.1
+ _ZNSs4_Rep9_S_createEmmRKSaIcE at GLIBCXX_3.4 4.1.1
+ _ZNSs5eraseEmm at GLIBCXX_3.4 4.1.1
+ _ZNSs6appendEPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSs6appendERKSsmm at GLIBCXX_3.4 4.1.1
+ _ZNSs6appendEmc at GLIBCXX_3.4 4.1.1
+ _ZNSs6assignEPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSs6assignERKSsmm at GLIBCXX_3.4 4.1.1
+ _ZNSs6assignEmc at GLIBCXX_3.4 4.1.1
+ _ZNSs6insertEN9__gnu_cxx17__normal_iteratorIPcSsEEmc at GLIBCXX_3.4 4.1.1
+ _ZNSs6insertEmPKc at GLIBCXX_3.4 4.1.1
+ _ZNSs6insertEmPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSs6insertEmRKSs at GLIBCXX_3.4 4.1.1
+ _ZNSs6insertEmRKSsmm at GLIBCXX_3.4 4.1.1
+ _ZNSs6insertEmmc at GLIBCXX_3.4 4.1.1
+ _ZNSs6resizeEm at GLIBCXX_3.4 4.1.1
+ _ZNSs6resizeEmc at GLIBCXX_3.4 4.1.1
+ _ZNSs7_M_copyEPcPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSs7_M_copyEPcPKcm at GLIBCXX_3.4.5 4.1.1
+ _ZNSs7_M_moveEPcPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSs7_M_moveEPcPKcm at GLIBCXX_3.4.5 4.1.1
+ _ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKcm at GLIBCXX_3.4 4.1.1
+ _ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_mc at GLIBCXX_3.4 4.1.1
+ _ZNSs7replaceEmmPKc at GLIBCXX_3.4 4.1.1
+ _ZNSs7replaceEmmPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSs7replaceEmmRKSs at GLIBCXX_3.4 4.1.1
+ _ZNSs7replaceEmmRKSsmm at GLIBCXX_3.4 4.1.1
+ _ZNSs7replaceEmmmc at GLIBCXX_3.4 4.1.1
+ _ZNSs7reserveEm at GLIBCXX_3.4 4.1.1
+ _ZNSs9_M_assignEPcmc at GLIBCXX_3.4 4.1.1
+ _ZNSs9_M_assignEPcmc at GLIBCXX_3.4.5 4.1.1
+ _ZNSs9_M_mutateEmmm at GLIBCXX_3.4 4.1.1
+ _ZNSsC1EPKcmRKSaIcE at GLIBCXX_3.4 4.1.1
+ _ZNSsC1ERKSsmm at GLIBCXX_3.4 4.1.1
+ _ZNSsC1ERKSsmmRKSaIcE at GLIBCXX_3.4 4.1.1
+ _ZNSsC1EmcRKSaIcE at GLIBCXX_3.4 4.1.1
+ _ZNSsC2EPKcmRKSaIcE at GLIBCXX_3.4 4.1.1
+ _ZNSsC2ERKSsmm at GLIBCXX_3.4 4.1.1
+ _ZNSsC2ERKSsmmRKSaIcE at GLIBCXX_3.4 4.1.1
+ _ZNSsC2EmcRKSaIcE at GLIBCXX_3.4 4.1.1
+ _ZNSsixEm at GLIBCXX_3.4 4.1.1
+ _ZNSt10istrstreamC1EPKci at GLIBCXX_3.4 4.1.1
+ _ZNSt10istrstreamC1EPci at GLIBCXX_3.4 4.1.1
+ _ZNSt10istrstreamC2EPKci at GLIBCXX_3.4 4.1.1
+ _ZNSt10istrstreamC2EPci at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb0EEC1EP15__locale_structPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb0EEC1EPSt18__moneypunct_cacheIcLb0EEm at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb0EEC1Em at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb0EEC2EP15__locale_structPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb0EEC2EPSt18__moneypunct_cacheIcLb0EEm at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb0EEC2Em at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb1EEC1EP15__locale_structPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb1EEC1EPSt18__moneypunct_cacheIcLb1EEm at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb1EEC1Em at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb1EEC2EP15__locale_structPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb1EEC2EPSt18__moneypunct_cacheIcLb1EEm at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb1EEC2Em at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb0EEC1EP15__locale_structPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb0EEC1EPSt18__moneypunct_cacheIwLb0EEm at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb0EEC1Em at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb0EEC2EP15__locale_structPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb0EEC2EPSt18__moneypunct_cacheIwLb0EEm at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb0EEC2Em at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb1EEC1EP15__locale_structPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb1EEC1EPSt18__moneypunct_cacheIwLb1EEm at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb1EEC1Em at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb1EEC2EP15__locale_structPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb1EEC2EPSt18__moneypunct_cacheIwLb1EEm at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb1EEC2Em at GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIcEC1EP15__locale_structPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIcEC1EPSt17__timepunct_cacheIcEm at GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIcEC1Em at GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIcEC2EP15__locale_structPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIcEC2EPSt17__timepunct_cacheIcEm at GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIcEC2Em at GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIwEC1EP15__locale_structPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIwEC1EPSt17__timepunct_cacheIwEm at GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIwEC1Em at GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIwEC2EP15__locale_structPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIwEC2EPSt17__timepunct_cacheIwEm at GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIwEC2Em at GLIBCXX_3.4 4.1.1
+ _ZNSt12__basic_fileIcE6xsgetnEPci at GLIBCXX_3.4 4.1.1
+ _ZNSt12__basic_fileIcE6xsputnEPKci at GLIBCXX_3.4 4.1.1
+ _ZNSt12__basic_fileIcE7seekoffExSt12_Ios_Seekdir at GLIBCXX_3.4 4.1.1
+ _ZNSt12__basic_fileIcE8xsputn_2EPKciS2_i at GLIBCXX_3.4 4.1.1
+ _ZNSt12ctype_bynameIcEC1EPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt12ctype_bynameIcEC2EPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt12ctype_bynameIwEC1EPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt12ctype_bynameIwEC2EPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambuf6setbufEPci at GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambuf7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode at GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambuf8_M_allocEm at GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambuf8_M_setupEPcS0_i at GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC1EPFPvmEPFvS0_E at GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC1EPKai at GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC1EPKci at GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC1EPKhi at GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC1EPaiS0_ at GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC1EPciS0_ at GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC1EPhiS0_ at GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC1Ei at GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC2EPFPvmEPFvS0_E at GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC2EPKai at GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC2EPKci at GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC2EPKhi at GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC2EPaiS0_ at GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC2EPciS0_ at GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC2EPhiS0_ at GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC2Ei at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIcSt11char_traitsIcEE13_M_set_bufferEi at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIcSt11char_traitsIcEE22_M_convert_to_externalEPci at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIcSt11char_traitsIcEE6setbufEPci at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIcSt11char_traitsIcEE6xsgetnEPci at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIcSt11char_traitsIcEE6xsputnEPKci at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIcSt11char_traitsIcEE7_M_seekExSt12_Ios_Seekdir11__mbstate_t at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIcSt11char_traitsIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIwSt11char_traitsIwEE13_M_set_bufferEi at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIwSt11char_traitsIwEE22_M_convert_to_externalEPwi at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIwSt11char_traitsIwEE6setbufEPwi at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIwSt11char_traitsIwEE6xsgetnEPwi at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIwSt11char_traitsIwEE6xsputnEPKwi at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIwSt11char_traitsIwEE7_M_seekExSt12_Ios_Seekdir11__mbstate_t at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIwSt11char_traitsIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE3getEPwi at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE3getEPwiw at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE4readEPwi at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE5seekgExSt12_Ios_Seekdir at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEi at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEi at GLIBCXX_3.4.5 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEij at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE7getlineEPwi at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE7getlineEPwiw at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE8readsomeEPwi at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEE5seekpExSt12_Ios_Seekdir at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEE5writeEPKwi at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEE8_M_writeEPKwi at GLIBCXX_3.4 4.1.1
+ _ZNSt14codecvt_bynameIcc11__mbstate_tEC1EPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt14codecvt_bynameIcc11__mbstate_tEC2EPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt14codecvt_bynameIwc11__mbstate_tEC1EPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt14codecvt_bynameIwc11__mbstate_tEC2EPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt14collate_bynameIcEC1EPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt14collate_bynameIcEC2EPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt14collate_bynameIwEC1EPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt14collate_bynameIwEC2EPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE10pubseekoffExSt12_Ios_SeekdirSt13_Ios_Openmode at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE12__safe_gbumpEi at GLIBCXX_3.4.16 4.7
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE12__safe_pbumpEi at GLIBCXX_3.4.16 4.7
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE5sgetnEPci at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE5sputnEPKci at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE6setbufEPci at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE6xsgetnEPci at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE6xsputnEPKci at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE9pubsetbufEPci at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE10pubseekoffExSt12_Ios_SeekdirSt13_Ios_Openmode at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE12__safe_gbumpEi at GLIBCXX_3.4.16 4.7
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE12__safe_pbumpEi at GLIBCXX_3.4.16 4.7
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE5sgetnEPwi at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE5sputnEPKwi at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE6setbufEPwi at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE6xsgetnEPwi at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE6xsputnEPKwi at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE9pubsetbufEPwi at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE6setbufEPci at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7_M_syncEPcmm at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE8_M_pbumpEPcS4_x at GLIBCXX_3.4.16 4.7
+ _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE6setbufEPwi at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7_M_syncEPwmm at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE8_M_pbumpEPwS4_x at GLIBCXX_3.4.16 4.7
+ _ZNSt15messages_bynameIcEC1EPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt15messages_bynameIcEC2EPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt15messages_bynameIwEC1EPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt15messages_bynameIwEC2EPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt15numpunct_bynameIcEC1EPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt15numpunct_bynameIcEC2EPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt15numpunct_bynameIwEC1EPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt15numpunct_bynameIwEC2EPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1EPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2EPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1EPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2EPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1EPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2EPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1EPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2EPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt16__numpunct_cacheIcEC1Em at GLIBCXX_3.4 4.1.1
+ _ZNSt16__numpunct_cacheIcEC2Em at GLIBCXX_3.4 4.1.1
+ _ZNSt16__numpunct_cacheIwEC1Em at GLIBCXX_3.4 4.1.1
+ _ZNSt16__numpunct_cacheIwEC2Em at GLIBCXX_3.4 4.1.1
+ _ZNSt17__timepunct_cacheIcEC1Em at GLIBCXX_3.4 4.1.1
+ _ZNSt17__timepunct_cacheIcEC2Em at GLIBCXX_3.4 4.1.1
+ _ZNSt17__timepunct_cacheIwEC1Em at GLIBCXX_3.4 4.1.1
+ _ZNSt17__timepunct_cacheIwEC2Em at GLIBCXX_3.4 4.1.1
+ _ZNSt17moneypunct_bynameIcLb0EEC1EPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt17moneypunct_bynameIcLb0EEC2EPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt17moneypunct_bynameIcLb1EEC1EPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt17moneypunct_bynameIcLb1EEC2EPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt17moneypunct_bynameIwLb0EEC1EPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt17moneypunct_bynameIwLb0EEC2EPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt17moneypunct_bynameIwLb1EEC1EPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt17moneypunct_bynameIwLb1EEC2EPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt18__moneypunct_cacheIcLb0EEC1Em at GLIBCXX_3.4 4.1.1
+ _ZNSt18__moneypunct_cacheIcLb0EEC2Em at GLIBCXX_3.4 4.1.1
+ _ZNSt18__moneypunct_cacheIcLb1EEC1Em at GLIBCXX_3.4 4.1.1
+ _ZNSt18__moneypunct_cacheIcLb1EEC2Em at GLIBCXX_3.4 4.1.1
+ _ZNSt18__moneypunct_cacheIwLb0EEC1Em at GLIBCXX_3.4 4.1.1
+ _ZNSt18__moneypunct_cacheIwLb0EEC2Em at GLIBCXX_3.4 4.1.1
+ _ZNSt18__moneypunct_cacheIwLb1EEC1Em at GLIBCXX_3.4 4.1.1
+ _ZNSt18__moneypunct_cacheIwLb1EEC2Em at GLIBCXX_3.4 4.1.1
+ _ZNSt5ctypeIcEC1EP15__locale_structPKtbm at GLIBCXX_3.4 4.1.1
+ _ZNSt5ctypeIcEC1EPKtbm at GLIBCXX_3.4 4.1.1
+ _ZNSt5ctypeIcEC2EP15__locale_structPKtbm at GLIBCXX_3.4 4.1.1
+ _ZNSt5ctypeIcEC2EPKtbm at GLIBCXX_3.4 4.1.1
+ _ZNSt5ctypeIwEC1EP15__locale_structm at GLIBCXX_3.4 4.1.1
+ _ZNSt5ctypeIwEC1Em at GLIBCXX_3.4 4.1.1
+ _ZNSt5ctypeIwEC2EP15__locale_structm at GLIBCXX_3.4 4.1.1
+ _ZNSt5ctypeIwEC2Em at GLIBCXX_3.4 4.1.1
+ _ZNSt6gslice8_IndexerC1EmRKSt8valarrayImES4_ at GLIBCXX_3.4 4.1.1
+ _ZNSt6gslice8_IndexerC2EmRKSt8valarrayImES4_ at GLIBCXX_3.4 4.1.1
+ _ZNSt6locale5_Impl16_M_install_cacheEPKNS_5facetEm at GLIBCXX_3.4.7 4.1.1
+ _ZNSt6locale5_ImplC1EPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt6locale5_ImplC1ERKS0_m at GLIBCXX_3.4 4.1.1
+ _ZNSt6locale5_ImplC1Em at GLIBCXX_3.4 4.1.1
+ _ZNSt6locale5_ImplC2EPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt6locale5_ImplC2ERKS0_m at GLIBCXX_3.4 4.1.1
+ _ZNSt6locale5_ImplC2Em at GLIBCXX_3.4 4.1.1
+ _ZNSt7codecvtIcc11__mbstate_tEC1EP15__locale_structm at GLIBCXX_3.4 4.1.1
+ _ZNSt7codecvtIcc11__mbstate_tEC1Em at GLIBCXX_3.4 4.1.1
+ _ZNSt7codecvtIcc11__mbstate_tEC2EP15__locale_structm at GLIBCXX_3.4 4.1.1
+ _ZNSt7codecvtIcc11__mbstate_tEC2Em at GLIBCXX_3.4 4.1.1
+ _ZNSt7codecvtIwc11__mbstate_tEC1EP15__locale_structm at GLIBCXX_3.4 4.1.1
+ _ZNSt7codecvtIwc11__mbstate_tEC1Em at GLIBCXX_3.4 4.1.1
+ _ZNSt7codecvtIwc11__mbstate_tEC2EP15__locale_structm at GLIBCXX_3.4 4.1.1
+ _ZNSt7codecvtIwc11__mbstate_tEC2Em at GLIBCXX_3.4 4.1.1
+ _ZNSt7collateIcEC1EP15__locale_structm at GLIBCXX_3.4 4.1.1
+ _ZNSt7collateIcEC1Em at GLIBCXX_3.4 4.1.1
+ _ZNSt7collateIcEC2EP15__locale_structm at GLIBCXX_3.4 4.1.1
+ _ZNSt7collateIcEC2Em at GLIBCXX_3.4 4.1.1
+ _ZNSt7collateIwEC1EP15__locale_structm at GLIBCXX_3.4 4.1.1
+ _ZNSt7collateIwEC1Em at GLIBCXX_3.4 4.1.1
+ _ZNSt7collateIwEC2EP15__locale_structm at GLIBCXX_3.4 4.1.1
+ _ZNSt7collateIwEC2Em at GLIBCXX_3.4 4.1.1
+ _ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em at GLIBCXX_3.4 4.1.1
+ _ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em at GLIBCXX_3.4 4.1.1
+ _ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Em at GLIBCXX_3.4 4.1.1
+ _ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Em at GLIBCXX_3.4 4.1.1
+ _ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Em at GLIBCXX_3.4 4.1.1
+ _ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Em at GLIBCXX_3.4 4.1.1
+ _ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Em at GLIBCXX_3.4 4.1.1
+ _ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em at GLIBCXX_3.4 4.1.1
+ _ZNSt8messagesIcEC1EP15__locale_structPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt8messagesIcEC1Em at GLIBCXX_3.4 4.1.1
+ _ZNSt8messagesIcEC2EP15__locale_structPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt8messagesIcEC2Em at GLIBCXX_3.4 4.1.1
+ _ZNSt8messagesIwEC1EP15__locale_structPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt8messagesIwEC1Em at GLIBCXX_3.4 4.1.1
+ _ZNSt8messagesIwEC2EP15__locale_structPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt8messagesIwEC2Em at GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIcEC1EP15__locale_structm at GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIcEC1EPSt16__numpunct_cacheIcEm at GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIcEC1Em at GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIcEC2EP15__locale_structm at GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIcEC2EPSt16__numpunct_cacheIcEm at GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIcEC2Em at GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIwEC1EP15__locale_structm at GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIwEC1EPSt16__numpunct_cacheIwEm at GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIwEC1Em at GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIwEC2EP15__locale_structm at GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIwEC2EPSt16__numpunct_cacheIwEm at GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIwEC2Em at GLIBCXX_3.4 4.1.1
+ _ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em at GLIBCXX_3.4 4.1.1
+ _ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em at GLIBCXX_3.4 4.1.1
+ _ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Em at GLIBCXX_3.4 4.1.1
+ _ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Em at GLIBCXX_3.4 4.1.1
+ _ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Em at GLIBCXX_3.4 4.1.1
+ _ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Em at GLIBCXX_3.4 4.1.1
+ _ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Em at GLIBCXX_3.4 4.1.1
+ _ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em at GLIBCXX_3.4 4.1.1
+ _ZNSt8valarrayImEC1ERKS0_ at GLIBCXX_3.4 4.1.1
+ _ZNSt8valarrayImEC1Em at GLIBCXX_3.4 4.1.1
+ _ZNSt8valarrayImEC2ERKS0_ at GLIBCXX_3.4 4.1.1
+ _ZNSt8valarrayImEC2Em at GLIBCXX_3.4 4.1.1
+ _ZNSt8valarrayImED1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt8valarrayImED2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt8valarrayImEixEm at GLIBCXX_3.4 4.1.1
+ _ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em at GLIBCXX_3.4 4.1.1
+ _ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em at GLIBCXX_3.4 4.1.1
+ _ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Em at GLIBCXX_3.4 4.1.1
+ _ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Em at GLIBCXX_3.4 4.1.1
+ _ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Em at GLIBCXX_3.4 4.1.1
+ _ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Em at GLIBCXX_3.4 4.1.1
+ _ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Em at GLIBCXX_3.4 4.1.1
+ _ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em at GLIBCXX_3.4 4.1.1
+ _ZSt11_Hash_bytesPKvmm at CXXABI_1.3.5 4.6
+ _ZSt15_Fnv_hash_bytesPKvmm at CXXABI_1.3.5 4.6
+ _ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_i at GLIBCXX_3.4.9 4.2.1
+ _ZSt16__ostream_insertIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_PKS3_i at GLIBCXX_3.4.9 4.2.1
+ _ZSt17__copy_streambufsIcSt11char_traitsIcEEiPSt15basic_streambufIT_T0_ES6_ at GLIBCXX_3.4.6 4.1.1
+ _ZSt17__copy_streambufsIwSt11char_traitsIwEEiPSt15basic_streambufIT_T0_ES6_ at GLIBCXX_3.4.6 4.1.1
+ _ZSt17__verify_groupingPKcmRKSs at GLIBCXX_3.4.10 4.3
+ _ZSt21__copy_streambufs_eofIcSt11char_traitsIcEEiPSt15basic_streambufIT_T0_ES6_Rb at GLIBCXX_3.4.9 4.2.1
+ _ZSt21__copy_streambufs_eofIwSt11char_traitsIwEEiPSt15basic_streambufIT_T0_ES6_Rb at GLIBCXX_3.4.9 4.2.1
+ _ZThn8_NSdD0Ev at GLIBCXX_3.4 4.1.1
+ _ZThn8_NSdD1Ev at GLIBCXX_3.4 4.1.1
+ _ZThn8_NSt13basic_fstreamIcSt11char_traitsIcEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZThn8_NSt13basic_fstreamIcSt11char_traitsIcEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZThn8_NSt13basic_fstreamIwSt11char_traitsIwEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZThn8_NSt13basic_fstreamIwSt11char_traitsIwEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZThn8_NSt14basic_iostreamIwSt11char_traitsIwEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZThn8_NSt14basic_iostreamIwSt11char_traitsIwEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZThn8_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZThn8_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZThn8_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZThn8_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZThn8_NSt9strstreamD0Ev at GLIBCXX_3.4 4.1.1
+ _ZThn8_NSt9strstreamD1Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSdD0Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSdD1Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSiD0Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSiD1Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSoD0Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSoD1Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt10istrstreamD0Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt10istrstreamD1Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt10ostrstreamD0Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt10ostrstreamD1Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt13basic_fstreamIcSt11char_traitsIcEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt13basic_fstreamIcSt11char_traitsIcEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt13basic_fstreamIwSt11char_traitsIwEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt13basic_fstreamIwSt11char_traitsIwEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt13basic_istreamIwSt11char_traitsIwEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt13basic_istreamIwSt11char_traitsIwEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt13basic_ostreamIwSt11char_traitsIwEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt13basic_ostreamIwSt11char_traitsIwEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt14basic_ifstreamIcSt11char_traitsIcEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt14basic_ifstreamIcSt11char_traitsIcEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt14basic_ifstreamIwSt11char_traitsIwEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt14basic_ifstreamIwSt11char_traitsIwEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt14basic_iostreamIwSt11char_traitsIwEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt14basic_iostreamIwSt11char_traitsIwEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt14basic_ofstreamIcSt11char_traitsIcEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt14basic_ofstreamIcSt11char_traitsIcEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt14basic_ofstreamIwSt11char_traitsIwEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt14basic_ofstreamIwSt11char_traitsIwEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt19basic_istringstreamIcSt11char_traitsIcESaIcEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt19basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt19basic_istringstreamIwSt11char_traitsIwESaIwEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt19basic_istringstreamIwSt11char_traitsIwESaIwEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt9strstreamD0Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt9strstreamD1Ev at GLIBCXX_3.4 4.1.1
+ _Znam at GLIBCXX_3.4 4.1.1
+ _ZnamRKSt9nothrow_t at GLIBCXX_3.4 4.1.1
+ _Znwm at GLIBCXX_3.4 4.1.1
+ _ZnwmRKSt9nothrow_t at GLIBCXX_3.4 4.1.1
+ __gxx_personality_v0 at CXXABI_1.3 4.1.1
+#include "libstdc++6.symbols.glibcxxmath"
+#include "libstdc++6.symbols.ldbl.32bit.s390"
+ _ZNSt12__basic_fileIcEC1EP15pthread_mutex_t at GLIBCXX_3.4 4.1.1
+ _ZNSt12__basic_fileIcEC2EP15pthread_mutex_t at GLIBCXX_3.4 4.1.1
diff --git a/debian/lib32stdc++6.symbols.sparc64 b/debian/lib32stdc++6.symbols.sparc64
new file mode 100644
index 0000000..61fc768
--- /dev/null
+++ b/debian/lib32stdc++6.symbols.sparc64
@@ -0,0 +1,9 @@
+libstdc++.so.6 lib32stdc++6 #MINVER#
+#include "libstdc++6.symbols.32bit"
+#include "libstdc++6.symbols.excprop"
+ __gxx_personality_v0 at CXXABI_1.3 4.1.1
+#include "libstdc++6.symbols.glibcxxmath"
+#include "libstdc++6.symbols.ldbl.32bit"
+#include "libstdc++6.symbols.money.f128"
+ _ZNKSt3tr14hashIeEclEe at GLIBCXX_3.4.10 4.3.0~rc2
+ _ZNKSt4hashIeEclEe at GLIBCXX_3.4.10 4.3.0~rc2
diff --git a/debian/lib32stdc++CXX.postinst b/debian/lib32stdc++CXX.postinst
new file mode 100644
index 0000000..0ebbeb0
--- /dev/null
+++ b/debian/lib32stdc++CXX.postinst
@@ -0,0 +1,12 @@
+#! /bin/sh -e
+
+case "$1" in
+    configure)
+	docdir=/usr/share/doc/lib32stdc++ at CXX@
+	if [ -d $docdir ] && [ ! -h $docdir ]; then
+	    rm -rf $docdir
+	    ln -s gcc- at BV@-base $docdir
+	fi
+esac
+
+#DEBHELPER#
diff --git a/debian/lib64asan0.overrides b/debian/lib64asan0.overrides
new file mode 100644
index 0000000..2a2b184
--- /dev/null
+++ b/debian/lib64asan0.overrides
@@ -0,0 +1,2 @@
+# automake gets it wrong for the multilib build
+lib64asan0 binary: binary-or-shlib-defines-rpath
diff --git a/debian/lib64asan0.symbols b/debian/lib64asan0.symbols
new file mode 100644
index 0000000..0b75959
--- /dev/null
+++ b/debian/lib64asan0.symbols
@@ -0,0 +1,3 @@
+libasan.so.0 lib64asan0 #MINVER#
+#include "libasan0.symbols.common"
+#include "libasan0.symbols.64"
diff --git a/debian/lib64gccLC.postinst b/debian/lib64gccLC.postinst
new file mode 100644
index 0000000..f671fd6
--- /dev/null
+++ b/debian/lib64gccLC.postinst
@@ -0,0 +1,12 @@
+#! /bin/sh -e
+
+case "$1" in
+    configure)
+	docdir=/usr/share/doc/lib64gcc at LC@
+	if [ -d $docdir ] && [ ! -h $docdir ]; then
+	    rm -rf $docdir
+	    ln -s gcc- at BV@-base $docdir
+	fi
+esac
+
+#DEBHELPER#
diff --git a/debian/lib64objc4.symbols b/debian/lib64objc4.symbols
new file mode 100644
index 0000000..263faf4
--- /dev/null
+++ b/debian/lib64objc4.symbols
@@ -0,0 +1,3 @@
+libobjc.so.4 lib64objc4 #MINVER#
+#include "libobjc4.symbols.common"
+ __gnu_objc_personality_v0 at Base 4.2.1
diff --git a/debian/lib64stdc++6.symbols.i386 b/debian/lib64stdc++6.symbols.i386
new file mode 100644
index 0000000..13e386a
--- /dev/null
+++ b/debian/lib64stdc++6.symbols.i386
@@ -0,0 +1,40 @@
+libstdc++.so.6 lib64stdc++6 #MINVER#
+#include "libstdc++6.symbols.64bit"
+#include "libstdc++6.symbols.128bit"
+#include "libstdc++6.symbols.excprop"
+#include "libstdc++6.symbols.money.ldbl"
+ _ZN9__gnu_cxx12__atomic_addEPVii at GLIBCXX_3.4 4.1.1
+ _ZN9__gnu_cxx18__exchange_and_addEPVii at GLIBCXX_3.4 4.1.1
+#DEPRECATED: 4.2.2-4# acosl at GLIBCXX_3.4.3 4.1.1
+#DEPRECATED: 4.2.2-4# asinl at GLIBCXX_3.4.3 4.1.1
+#DEPRECATED: 4.2.2-4# atan2l at GLIBCXX_3.4 4.1.1
+#DEPRECATED: 4.2.2-4# atanl at GLIBCXX_3.4.3 4.1.1
+#DEPRECATED: 4.2.2-4# ceill at GLIBCXX_3.4.3 4.1.1
+#DEPRECATED: 4.2.2-4# coshl at GLIBCXX_3.4 4.1.1
+#DEPRECATED: 4.2.2-4# cosl at GLIBCXX_3.4 4.1.1
+#DEPRECATED: 4.2.2-4# expl at GLIBCXX_3.4 4.1.1
+#DEPRECATED: 4.2.2-4# floorl at GLIBCXX_3.4.3 4.1.1
+#DEPRECATED: 4.2.2-4# fmodl at GLIBCXX_3.4.3 4.1.1
+#DEPRECATED: 4.2.2-4# frexpl at GLIBCXX_3.4.3 4.1.1
+#DEPRECATED: 4.2.2-4# hypotl at GLIBCXX_3.4 4.1.1
+#DEPRECATED: 4.2.2-4# ldexpf at GLIBCXX_3.4.3 4.1.1
+#DEPRECATED: 4.2.2-4# ldexpl at GLIBCXX_3.4.3 4.1.1
+#DEPRECATED: 4.2.2-4# log10l at GLIBCXX_3.4 4.1.1
+#DEPRECATED: 4.2.2-4# logl at GLIBCXX_3.4 4.1.1
+#DEPRECATED: 4.2.2-4# modfl at GLIBCXX_3.4.3 4.1.1
+#DEPRECATED: 4.2.2-4# powf at GLIBCXX_3.4 4.1.1
+#DEPRECATED: 4.2.2-4# powl at GLIBCXX_3.4 4.1.1
+#DEPRECATED: 4.2.2-4# sinhl at GLIBCXX_3.4 4.1.1
+#DEPRECATED: 4.2.2-4# sinl at GLIBCXX_3.4 4.1.1
+#DEPRECATED: 4.2.2-4# sqrtl at GLIBCXX_3.4 4.1.1
+#DEPRECATED: 4.2.2-4# tanhl at GLIBCXX_3.4 4.1.1
+#DEPRECATED: 4.2.2-4# tanl at GLIBCXX_3.4 4.1.1
+ _ZNKSt3tr14hashIeEclEe at GLIBCXX_3.4.10 4.3
+ _ZNKSt4hashIeEclEe at GLIBCXX_3.4.10 4.3
+ (optional)_Z16__VLTRegisterSetPPvPKvmmS0_ at CXXABI_1.3.8 4.9.0
+ (optional)_Z17__VLTRegisterPairPPvPKvmS2_ at CXXABI_1.3.8 4.9.0
+ (optional)_Z21__VLTRegisterSetDebugPPvPKvmmS0_ at CXXABI_1.3.8 4.9.0
+ (optional)_Z22__VLTRegisterPairDebugPPvPKvmS2_PKcS4_ at CXXABI_1.3.8 4.9.0
+ (optional)_Z24__VLTVerifyVtablePointerPPvPKv at CXXABI_1.3.8 4.9.0
+ (optional)_Z29__VLTVerifyVtablePointerDebugPPvPKvPKcS4_ at CXXABI_1.3.8 4.9.0
+ (optional)__VLTChangePermission at CXXABI_1.3.8 4.9.0
diff --git a/debian/lib64stdc++6.symbols.powerpc b/debian/lib64stdc++6.symbols.powerpc
new file mode 100644
index 0000000..6dd040b
--- /dev/null
+++ b/debian/lib64stdc++6.symbols.powerpc
@@ -0,0 +1,11 @@
+libstdc++.so.6 lib64stdc++6 #MINVER#
+#include "libstdc++6.symbols.64bit"
+#include "libstdc++6.symbols.128bit"
+#include "libstdc++6.symbols.excprop"
+#include "libstdc++6.symbols.money.f128"
+ _ZN9__gnu_cxx12__atomic_addEPVii at GLIBCXX_3.4 4.1.1
+ _ZN9__gnu_cxx18__exchange_and_addEPVii at GLIBCXX_3.4 4.1.1
+#include "libstdc++6.symbols.glibcxxmath"
+#include "libstdc++6.symbols.ldbl.64bit"
+ _ZNKSt3tr14hashIeEclEe at GLIBCXX_3.4.10 4.3.0~rc2
+ _ZNKSt4hashIeEclEe at GLIBCXX_3.4.10 4.3.0~rc2
diff --git a/debian/lib64stdc++6.symbols.s390 b/debian/lib64stdc++6.symbols.s390
new file mode 100644
index 0000000..1a5a960
--- /dev/null
+++ b/debian/lib64stdc++6.symbols.s390
@@ -0,0 +1,12 @@
+libstdc++.so.6 lib64stdc++6 #MINVER#
+#include "libstdc++6.symbols.64bit"
+#include "libstdc++6.symbols.128bit"
+#include "libstdc++6.symbols.excprop"
+ _ZN9__gnu_cxx12__atomic_addEPVii at GLIBCXX_3.4 4.1.1
+ _ZN9__gnu_cxx18__exchange_and_addEPVii at GLIBCXX_3.4 4.1.1
+#DEPRECATED: 4.2.2-4# ldexpf at GLIBCXX_3.4.3 4.1.1
+#DEPRECATED: 4.2.2-4# powf at GLIBCXX_3.4 4.1.1
+#include "libstdc++6.symbols.glibcxxmath"
+#include "libstdc++6.symbols.ldbl.64bit"
+ _ZNKSt3tr14hashIeEclEe at GLIBCXX_3.4.10 4.3.0~rc2
+ _ZNKSt4hashIeEclEe at GLIBCXX_3.4.10 4.3.0~rc2
diff --git a/debian/lib64stdc++6.symbols.sparc b/debian/lib64stdc++6.symbols.sparc
new file mode 100644
index 0000000..f00b05a
--- /dev/null
+++ b/debian/lib64stdc++6.symbols.sparc
@@ -0,0 +1,11 @@
+libstdc++.so.6 lib64stdc++6 #MINVER#
+#include "libstdc++6.symbols.64bit"
+#include "libstdc++6.symbols.128bit"
+#include "libstdc++6.symbols.excprop"
+#include "libstdc++6.symbols.money.ldbl"
+ _ZN9__gnu_cxx12__atomic_addEPVli at GLIBCXX_3.4 4.1.1
+ _ZN9__gnu_cxx18__exchange_and_addEPVli at GLIBCXX_3.4 4.1.1
+# FIXME: Currently no ldbl symbols in the 64bit libstdc++ on sparc.
+# #include "libstdc++6.symbols.ldbl.64bit"
+ _ZNKSt3tr14hashIeEclEe at GLIBCXX_3.4.10 4.3
+ _ZNKSt4hashIeEclEe at GLIBCXX_3.4.10 4.3
diff --git a/debian/lib64stdc++CXX.postinst b/debian/lib64stdc++CXX.postinst
new file mode 100644
index 0000000..1c8e979
--- /dev/null
+++ b/debian/lib64stdc++CXX.postinst
@@ -0,0 +1,12 @@
+#! /bin/sh -e
+
+case "$1" in
+    configure)
+	docdir=/usr/share/doc/lib64stdc++ at CXX@
+	if [ -d $docdir ] && [ ! -h $docdir ]; then
+	    rm -rf $docdir
+	    ln -s gcc- at BV@-base $docdir
+	fi
+esac
+
+#DEBHELPER#
diff --git a/debian/libasan.symbols.16 b/debian/libasan.symbols.16
new file mode 100644
index 0000000..c6ae6da
--- /dev/null
+++ b/debian/libasan.symbols.16
@@ -0,0 +1,38 @@
+ __sanitizer_syscall_post_impl_chown16 at Base 5
+ __sanitizer_syscall_post_impl_fchown16 at Base 5
+ __sanitizer_syscall_post_impl_getegid16 at Base 5
+ __sanitizer_syscall_post_impl_geteuid16 at Base 5
+ __sanitizer_syscall_post_impl_getgid16 at Base 5
+ __sanitizer_syscall_post_impl_getgroups16 at Base 5
+ __sanitizer_syscall_post_impl_getresgid16 at Base 5
+ __sanitizer_syscall_post_impl_getresuid16 at Base 5
+ __sanitizer_syscall_post_impl_getuid16 at Base 5
+ __sanitizer_syscall_post_impl_lchown16 at Base 5
+ __sanitizer_syscall_post_impl_setfsgid16 at Base 5
+ __sanitizer_syscall_post_impl_setfsuid16 at Base 5
+ __sanitizer_syscall_post_impl_setgid16 at Base 5
+ __sanitizer_syscall_post_impl_setgroups16 at Base 5
+ __sanitizer_syscall_post_impl_setregid16 at Base 5
+ __sanitizer_syscall_post_impl_setresgid16 at Base 5
+ __sanitizer_syscall_post_impl_setresuid16 at Base 5
+ __sanitizer_syscall_post_impl_setreuid16 at Base 5
+ __sanitizer_syscall_post_impl_setuid16 at Base 5
+ __sanitizer_syscall_pre_impl_chown16 at Base 5
+ __sanitizer_syscall_pre_impl_fchown16 at Base 5
+ __sanitizer_syscall_pre_impl_getegid16 at Base 5
+ __sanitizer_syscall_pre_impl_geteuid16 at Base 5
+ __sanitizer_syscall_pre_impl_getgid16 at Base 5
+ __sanitizer_syscall_pre_impl_getgroups16 at Base 5
+ __sanitizer_syscall_pre_impl_getresgid16 at Base 5
+ __sanitizer_syscall_pre_impl_getresuid16 at Base 5
+ __sanitizer_syscall_pre_impl_getuid16 at Base 5
+ __sanitizer_syscall_pre_impl_lchown16 at Base 5
+ __sanitizer_syscall_pre_impl_setfsgid16 at Base 5
+ __sanitizer_syscall_pre_impl_setfsuid16 at Base 5
+ __sanitizer_syscall_pre_impl_setgid16 at Base 5
+ __sanitizer_syscall_pre_impl_setgroups16 at Base 5
+ __sanitizer_syscall_pre_impl_setregid16 at Base 5
+ __sanitizer_syscall_pre_impl_setresgid16 at Base 5
+ __sanitizer_syscall_pre_impl_setresuid16 at Base 5
+ __sanitizer_syscall_pre_impl_setreuid16 at Base 5
+ __sanitizer_syscall_pre_impl_setuid16 at Base 5
diff --git a/debian/libasan.symbols.32 b/debian/libasan.symbols.32
new file mode 100644
index 0000000..985c019
--- /dev/null
+++ b/debian/libasan.symbols.32
@@ -0,0 +1,8 @@
+ _ZdaPvj at Base 5
+ _ZdaPvm at Base 5
+ _ZdlPvj at Base 5
+ _ZdlPvm at Base 5
+ _Znaj at Base 4.8
+ _ZnajRKSt9nothrow_t at Base 4.8
+ _Znwj at Base 4.8
+ _ZnwjRKSt9nothrow_t at Base 4.8
diff --git a/debian/libasan.symbols.64 b/debian/libasan.symbols.64
new file mode 100644
index 0000000..8a84d3c
--- /dev/null
+++ b/debian/libasan.symbols.64
@@ -0,0 +1,8 @@
+ __interceptor_shmctl at Base 4.9
+ _ZdaPvm at Base 5
+ _ZdlPvm at Base 5
+ _Znam at Base 4.8
+ _ZnamRKSt9nothrow_t at Base 4.8
+ _Znwm at Base 4.8
+ _ZnwmRKSt9nothrow_t at Base 4.8
+ shmctl at Base 4.9
diff --git a/debian/libasan.symbols.common b/debian/libasan.symbols.common
new file mode 100644
index 0000000..069b87c
--- /dev/null
+++ b/debian/libasan.symbols.common
@@ -0,0 +1,1492 @@
+ _ZN11__sanitizer11CheckFailedEPKciS1_yy at Base 4.8
+ _ZN11__sanitizer7OnPrintEPKc at Base 4.9
+ _ZdaPv at Base 4.8
+ _ZdaPvRKSt9nothrow_t at Base 4.8
+ _ZdlPv at Base 4.8
+ _ZdlPvRKSt9nothrow_t at Base 4.8
+ __asan_addr_is_in_fake_stack at Base 5
+ __asan_address_is_poisoned at Base 4.8
+ __asan_after_dynamic_init at Base 4.8
+ __asan_backtrace_alloc at Base 4.9
+ __asan_backtrace_close at Base 4.9
+ __asan_backtrace_create_state at Base 4.9
+ __asan_backtrace_dwarf_add at Base 4.9
+ __asan_backtrace_free at Base 4.9
+ __asan_backtrace_get_view at Base 4.9
+ __asan_backtrace_initialize at Base 4.9
+ __asan_backtrace_open at Base 4.9
+ __asan_backtrace_pcinfo at Base 4.9
+ __asan_backtrace_qsort at Base 4.9
+ __asan_backtrace_release_view at Base 4.9
+ __asan_backtrace_syminfo at Base 4.9
+ __asan_backtrace_vector_finish at Base 4.9
+ __asan_backtrace_vector_grow at Base 4.9
+ __asan_backtrace_vector_release at Base 4.9
+ __asan_before_dynamic_init at Base 4.8
+ __asan_cplus_demangle_builtin_types at Base 4.9
+ __asan_cplus_demangle_fill_ctor at Base 4.9
+ __asan_cplus_demangle_fill_dtor at Base 4.9
+ __asan_cplus_demangle_fill_extended_operator at Base 4.9
+ __asan_cplus_demangle_fill_name at Base 4.9
+ __asan_cplus_demangle_init_info at Base 4.9
+ __asan_cplus_demangle_mangled_name at Base 4.9
+ __asan_cplus_demangle_operators at Base 4.9
+ __asan_cplus_demangle_print at Base 4.9
+ __asan_cplus_demangle_print_callback at Base 4.9
+ __asan_cplus_demangle_type at Base 4.9
+ __asan_cplus_demangle_v3 at Base 4.9
+ __asan_cplus_demangle_v3_callback at Base 4.9
+ __asan_describe_address at Base 4.8
+ __asan_get_alloc_stack at Base 5
+ __asan_get_current_fake_stack at Base 5
+ __asan_get_free_stack at Base 5
+ __asan_get_report_access_size at Base 5
+ __asan_get_report_access_type at Base 5
+ __asan_get_report_address at Base 5
+ __asan_get_report_bp at Base 5
+ __asan_get_report_description at Base 5
+ __asan_get_report_pc at Base 5
+ __asan_get_report_sp at Base 5
+ __asan_get_shadow_mapping at Base 5
+ __asan_handle_no_return at Base 4.8
+ __asan_init_v4 at Base 5
+ __asan_internal_memcmp at Base 4.9
+ __asan_internal_memcpy at Base 4.9
+ __asan_internal_memset at Base 4.9
+ __asan_internal_strcmp at Base 4.9
+ __asan_internal_strlen at Base 4.9
+ __asan_internal_strncmp at Base 4.9
+ __asan_internal_strnlen at Base 4.9
+ __asan_is_gnu_v3_mangled_ctor at Base 4.9
+ __asan_is_gnu_v3_mangled_dtor at Base 4.9
+ __asan_java_demangle_v3 at Base 4.9
+ __asan_java_demangle_v3_callback at Base 4.9
+ __asan_load16 at Base 5
+ __asan_load1 at Base 5
+ __asan_load2 at Base 5
+ __asan_load4 at Base 5
+ __asan_load8 at Base 5
+ __asan_loadN at Base 5
+ __asan_load_cxx_array_cookie at Base 5
+ __asan_locate_address at Base 5
+ __asan_memcpy at Base 5
+ __asan_memmove at Base 5
+ __asan_memset at Base 5
+ __asan_option_detect_stack_use_after_return at Base 4.9
+ __asan_poison_cxx_array_cookie at Base 5
+ __asan_poison_intra_object_redzone at Base 5
+ __asan_poison_memory_region at Base 4.8
+ __asan_poison_stack_memory at Base 4.8
+ __asan_print_accumulated_stats at Base 4.8
+ __asan_region_is_poisoned at Base 4.8
+ __asan_register_globals at Base 4.8
+ __asan_report_error at Base 4.8
+ __asan_report_load16 at Base 4.8
+ __asan_report_load1 at Base 4.8
+ __asan_report_load2 at Base 4.8
+ __asan_report_load4 at Base 4.8
+ __asan_report_load8 at Base 4.8
+ __asan_report_load_n at Base 4.8
+ __asan_report_present at Base 5
+ __asan_report_store16 at Base 4.8
+ __asan_report_store1 at Base 4.8
+ __asan_report_store2 at Base 4.8
+ __asan_report_store4 at Base 4.8
+ __asan_report_store8 at Base 4.8
+ __asan_report_store_n at Base 4.8
+ __asan_rt_version at Base 5
+ __asan_set_death_callback at Base 4.8
+ __asan_set_error_exit_code at Base 4.8
+ __asan_set_error_report_callback at Base 4.8
+ __asan_stack_free_0 at Base 4.9
+ __asan_stack_free_10 at Base 4.9
+ __asan_stack_free_1 at Base 4.9
+ __asan_stack_free_2 at Base 4.9
+ __asan_stack_free_3 at Base 4.9
+ __asan_stack_free_4 at Base 4.9
+ __asan_stack_free_5 at Base 4.9
+ __asan_stack_free_6 at Base 4.9
+ __asan_stack_free_7 at Base 4.9
+ __asan_stack_free_8 at Base 4.9
+ __asan_stack_free_9 at Base 4.9
+ __asan_stack_malloc_0 at Base 4.9
+ __asan_stack_malloc_10 at Base 4.9
+ __asan_stack_malloc_1 at Base 4.9
+ __asan_stack_malloc_2 at Base 4.9
+ __asan_stack_malloc_3 at Base 4.9
+ __asan_stack_malloc_4 at Base 4.9
+ __asan_stack_malloc_5 at Base 4.9
+ __asan_stack_malloc_6 at Base 4.9
+ __asan_stack_malloc_7 at Base 4.9
+ __asan_stack_malloc_8 at Base 4.9
+ __asan_stack_malloc_9 at Base 4.9
+ __asan_store16 at Base 5
+ __asan_store1 at Base 5
+ __asan_store2 at Base 5
+ __asan_store4 at Base 5
+ __asan_store8 at Base 5
+ __asan_storeN at Base 5
+ __asan_test_only_reported_buggy_pointer at Base 5
+ __asan_unpoison_intra_object_redzone at Base 5
+ __asan_unpoison_memory_region at Base 4.8
+ __asan_unpoison_stack_memory at Base 4.8
+ __asan_unregister_globals at Base 4.8
+ __cxa_atexit at Base 4.9
+ __cxa_throw at Base 4.8
+ __getdelim at Base 5
+ __interceptor___cxa_atexit at Base 4.9
+ __interceptor___cxa_throw at Base 4.8
+ __interceptor___getdelim at Base 5
+ __interceptor___isoc99_fprintf at Base 5
+ __interceptor___isoc99_fscanf at Base 4.8
+ __interceptor___isoc99_printf at Base 5
+ __interceptor___isoc99_scanf at Base 4.8
+ __interceptor___isoc99_snprintf at Base 5
+ __interceptor___isoc99_sprintf at Base 5
+ __interceptor___isoc99_sscanf at Base 4.8
+ __interceptor___isoc99_vfprintf at Base 5
+ __interceptor___isoc99_vfscanf at Base 4.8
+ __interceptor___isoc99_vprintf at Base 5
+ __interceptor___isoc99_vscanf at Base 4.8
+ __interceptor___isoc99_vsnprintf at Base 5
+ __interceptor___isoc99_vsprintf at Base 5
+ __interceptor___isoc99_vsscanf at Base 4.8
+ __interceptor___libc_memalign at Base 4.8
+ __interceptor___overflow at Base 5
+ __interceptor___tls_get_addr at Base 5
+ __interceptor___uflow at Base 5
+ __interceptor___underflow at Base 5
+ __interceptor___woverflow at Base 5
+ __interceptor___wuflow at Base 5
+ __interceptor___wunderflow at Base 5
+ __interceptor___xpg_strerror_r at Base 4.9
+ __interceptor__exit at Base 4.9
+ __interceptor__longjmp at Base 4.8
+ __interceptor__obstack_begin at Base 5
+ __interceptor__obstack_begin_1 at Base 5
+ __interceptor__obstack_newchunk at Base 5
+ __interceptor_accept4 at Base 4.9
+ __interceptor_accept at Base 4.9
+ __interceptor_aligned_alloc at Base 5
+ __interceptor_asctime at Base 4.8
+ __interceptor_asctime_r at Base 4.8
+ __interceptor_asprintf at Base 5
+ __interceptor_atoi at Base 4.8
+ __interceptor_atol at Base 4.8
+ __interceptor_atoll at Base 4.8
+ __interceptor_backtrace at Base 4.9
+ __interceptor_backtrace_symbols at Base 4.9
+ __interceptor_calloc at Base 4.8
+ __interceptor_canonicalize_file_name at Base 4.9
+ __interceptor_capget at Base 5
+ __interceptor_capset at Base 5
+ __interceptor_cfree at Base 4.8
+ __interceptor_clock_getres at Base 4.9
+ __interceptor_clock_gettime at Base 4.9
+ __interceptor_clock_settime at Base 4.9
+ __interceptor_confstr at Base 4.9
+ __interceptor_ctime at Base 4.8
+ __interceptor_ctime_r at Base 4.8
+ __interceptor_dlclose at Base 5
+ __interceptor_dlopen at Base 5
+ __interceptor_drand48_r at Base 4.9
+ __interceptor_endgrent at Base 5
+ __interceptor_endpwent at Base 5
+ __interceptor_ether_aton at Base 4.9
+ __interceptor_ether_aton_r at Base 4.9
+ __interceptor_ether_hostton at Base 4.9
+ __interceptor_ether_line at Base 4.9
+ __interceptor_ether_ntoa at Base 4.9
+ __interceptor_ether_ntoa_r at Base 4.9
+ __interceptor_ether_ntohost at Base 4.9
+ __interceptor_fclose at Base 5
+ __interceptor_fdopen at Base 5
+ __interceptor_fflush at Base 5
+ __interceptor_fgetgrent at Base 5
+ __interceptor_fgetgrent_r at Base 5
+ __interceptor_fgetpwent at Base 5
+ __interceptor_fgetpwent_r at Base 5
+ __interceptor_fgetxattr at Base 5
+ __interceptor_flistxattr at Base 5
+ __interceptor_fmemopen at Base 5
+ __interceptor_fopen64 at Base 5
+ __interceptor_fopen at Base 5
+ __interceptor_fork at Base 5
+ __interceptor_fprintf at Base 5
+ __interceptor_free at Base 4.8
+ __interceptor_freopen64 at Base 5
+ __interceptor_freopen at Base 5
+ __interceptor_frexp at Base 4.9
+ __interceptor_frexpf at Base 4.9
+ __interceptor_frexpl at Base 4.9
+ __interceptor_fscanf at Base 4.8
+ __interceptor_fstatfs64 at Base 4.9
+ __interceptor_fstatfs at Base 4.9
+ __interceptor_fstatvfs64 at Base 4.9
+ __interceptor_fstatvfs at Base 4.9
+ __interceptor_ftime at Base 5
+ __interceptor_get_current_dir_name at Base 4.9
+ __interceptor_getaddrinfo at Base 4.9
+ __interceptor_getcwd at Base 4.9
+ __interceptor_getdelim at Base 4.9
+ __interceptor_getgrent at Base 5
+ __interceptor_getgrent_r at Base 5
+ __interceptor_getgrgid at Base 4.9
+ __interceptor_getgrgid_r at Base 4.9
+ __interceptor_getgrnam at Base 4.9
+ __interceptor_getgrnam_r at Base 4.9
+ __interceptor_getgroups at Base 4.9
+ __interceptor_gethostbyaddr at Base 4.9
+ __interceptor_gethostbyaddr_r at Base 4.9
+ __interceptor_gethostbyname2 at Base 4.9
+ __interceptor_gethostbyname2_r at Base 4.9
+ __interceptor_gethostbyname at Base 4.9
+ __interceptor_gethostbyname_r at Base 4.9
+ __interceptor_gethostent at Base 4.9
+ __interceptor_gethostent_r at Base 4.9
+ __interceptor_getifaddrs at Base 5
+ __interceptor_getitimer at Base 4.9
+ __interceptor_getline at Base 4.9
+ __interceptor_getmntent at Base 4.9
+ __interceptor_getmntent_r at Base 4.9
+ __interceptor_getnameinfo at Base 4.9
+ __interceptor_getpass at Base 5
+ __interceptor_getpeername at Base 4.9
+ __interceptor_getpwent at Base 5
+ __interceptor_getpwent_r at Base 5
+ __interceptor_getpwnam at Base 4.9
+ __interceptor_getpwnam_r at Base 4.9
+ __interceptor_getpwuid at Base 4.9
+ __interceptor_getpwuid_r at Base 4.9
+ __interceptor_getresgid at Base 5
+ __interceptor_getresuid at Base 5
+ __interceptor_getsockname at Base 4.9
+ __interceptor_getsockopt at Base 4.9
+ __interceptor_getxattr at Base 5
+ __interceptor_glob64 at Base 4.9
+ __interceptor_glob at Base 4.9
+ __interceptor_gmtime at Base 4.8
+ __interceptor_gmtime_r at Base 4.8
+ __interceptor_iconv at Base 4.9
+ __interceptor_if_indextoname at Base 5
+ __interceptor_if_nametoindex at Base 5
+ __interceptor_index at Base 4.8
+ __interceptor_inet_aton at Base 4.9
+ __interceptor_inet_ntop at Base 4.9
+ __interceptor_inet_pton at Base 4.9
+ __interceptor_initgroups at Base 4.9
+ __interceptor_ioctl at Base 4.9
+ __interceptor_lgamma at Base 4.9
+ __interceptor_lgamma_r at Base 4.9
+ __interceptor_lgammaf at Base 4.9
+ __interceptor_lgammaf_r at Base 4.9
+ __interceptor_lgammal at Base 4.9
+ __interceptor_lgammal_r at Base 4.9
+ __interceptor_lgetxattr at Base 5
+ __interceptor_listxattr at Base 5
+ __interceptor_llistxattr at Base 5
+ __interceptor_localtime at Base 4.8
+ __interceptor_localtime_r at Base 4.8
+ __interceptor_longjmp at Base 4.8
+ __interceptor_lrand48_r at Base 4.9
+ __interceptor_mallinfo at Base 4.8
+ __interceptor_malloc at Base 4.8
+ __interceptor_malloc_stats at Base 4.8
+ __interceptor_malloc_usable_size at Base 4.8
+ __interceptor_mallopt at Base 4.8
+ __interceptor_mbsnrtowcs at Base 4.9
+ __interceptor_mbsrtowcs at Base 4.9
+ __interceptor_mbstowcs at Base 4.9
+ __interceptor_memalign at Base 4.8
+ __interceptor_memchr at Base 5
+ __interceptor_memcmp at Base 4.8
+ __interceptor_memcpy at Base 4.8
+ __interceptor_memmove at Base 4.8
+ __interceptor_memrchr at Base 5
+ __interceptor_memset at Base 4.8
+ __interceptor_mktime at Base 5
+ __interceptor_mlock at Base 4.8
+ __interceptor_mlockall at Base 4.8
+ __interceptor_modf at Base 4.9
+ __interceptor_modff at Base 4.9
+ __interceptor_modfl at Base 4.9
+ __interceptor_munlock at Base 4.8
+ __interceptor_munlockall at Base 4.8
+ __interceptor_open_memstream at Base 5
+ __interceptor_open_wmemstream at Base 5
+ __interceptor_poll at Base 4.9
+ __interceptor_posix_memalign at Base 4.8
+ __interceptor_ppoll at Base 4.9
+ __interceptor_prctl at Base 4.8
+ __interceptor_pread64 at Base 4.8
+ __interceptor_pread at Base 4.8
+ __interceptor_preadv64 at Base 4.9
+ __interceptor_preadv at Base 4.9
+ __interceptor_printf at Base 5
+ __interceptor_pthread_attr_getaffinity_np at Base 4.9
+ __interceptor_pthread_attr_getdetachstate at Base 4.9
+ __interceptor_pthread_attr_getguardsize at Base 4.9
+ __interceptor_pthread_attr_getinheritsched at Base 4.9
+ __interceptor_pthread_attr_getschedparam at Base 4.9
+ __interceptor_pthread_attr_getschedpolicy at Base 4.9
+ __interceptor_pthread_attr_getscope at Base 4.9
+ __interceptor_pthread_attr_getstack at Base 4.9
+ __interceptor_pthread_attr_getstacksize at Base 4.9
+ __interceptor_pthread_barrierattr_getpshared at Base 5
+ __interceptor_pthread_condattr_getclock at Base 5
+ __interceptor_pthread_condattr_getpshared at Base 5
+ __interceptor_pthread_create at Base 4.8
+ __interceptor_pthread_getschedparam at Base 4.9
+ __interceptor_pthread_mutex_lock at Base 4.9
+ __interceptor_pthread_mutex_unlock at Base 4.9
+ __interceptor_pthread_mutexattr_getprioceiling at Base 5
+ __interceptor_pthread_mutexattr_getprotocol at Base 5
+ __interceptor_pthread_mutexattr_getpshared at Base 5
+ __interceptor_pthread_mutexattr_getrobust at Base 5
+ __interceptor_pthread_mutexattr_getrobust_np at Base 5
+ __interceptor_pthread_mutexattr_gettype at Base 5
+ __interceptor_pthread_rwlockattr_getkind_np at Base 5
+ __interceptor_pthread_rwlockattr_getpshared at Base 5
+ __interceptor_pthread_setname_np at Base 4.9
+ __interceptor_pvalloc at Base 4.8
+ __interceptor_pwrite64 at Base 4.8
+ __interceptor_pwrite at Base 4.8
+ __interceptor_pwritev64 at Base 4.9
+ __interceptor_pwritev at Base 4.9
+ __interceptor_rand_r at Base 5
+ __interceptor_random_r at Base 4.9
+ __interceptor_read at Base 4.8
+ __interceptor_readdir64 at Base 4.9
+ __interceptor_readdir64_r at Base 4.9
+ __interceptor_readdir at Base 4.9
+ __interceptor_readdir_r at Base 4.9
+ __interceptor_readv at Base 4.9
+ __interceptor_realloc at Base 4.8
+ __interceptor_realpath at Base 4.9
+ __interceptor_recvmsg at Base 4.9
+ __interceptor_remquo at Base 4.9
+ __interceptor_remquof at Base 4.9
+ __interceptor_remquol at Base 4.9
+ __interceptor_scandir64 at Base 4.9
+ __interceptor_scandir at Base 4.9
+ __interceptor_scanf at Base 4.8
+ __interceptor_sched_getaffinity at Base 4.9
+ __interceptor_setgrent at Base 5
+ __interceptor_setitimer at Base 4.9
+ __interceptor_setlocale at Base 4.9
+ __interceptor_setpwent at Base 5
+ __interceptor_sigaction at Base 4.8
+ __interceptor_sigemptyset at Base 4.9
+ __interceptor_sigfillset at Base 4.9
+ __interceptor_siglongjmp at Base 4.8
+ __interceptor_signal at Base 4.8
+ __interceptor_sigpending at Base 4.9
+ __interceptor_sigprocmask at Base 4.9
+ __interceptor_sigtimedwait at Base 4.9
+ __interceptor_sigwait at Base 4.9
+ __interceptor_sigwaitinfo at Base 4.9
+ __interceptor_sincos at Base 4.9
+ __interceptor_sincosf at Base 4.9
+ __interceptor_sincosl at Base 4.9
+ __interceptor_snprintf at Base 5
+ __interceptor_sprintf at Base 5
+ __interceptor_sscanf at Base 4.8
+ __interceptor_statfs64 at Base 4.9
+ __interceptor_statfs at Base 4.9
+ __interceptor_statvfs64 at Base 4.9
+ __interceptor_statvfs at Base 4.9
+ __interceptor_strcasecmp at Base 4.8
+ __interceptor_strcat at Base 4.8
+ __interceptor_strchr at Base 4.8
+ __interceptor_strcmp at Base 4.8
+ __interceptor_strcpy at Base 4.8
+ __interceptor_strdup at Base 4.8
+ __interceptor_strerror at Base 4.9
+ __interceptor_strerror_r at Base 4.9
+ __interceptor_strlen at Base 4.8
+ __interceptor_strncasecmp at Base 4.8
+ __interceptor_strncat at Base 4.8
+ __interceptor_strncmp at Base 4.8
+ __interceptor_strncpy at Base 4.8
+ __interceptor_strnlen at Base 4.8
+ __interceptor_strptime at Base 4.9
+ __interceptor_strtoimax at Base 4.9
+ __interceptor_strtol at Base 4.8
+ __interceptor_strtoll at Base 4.8
+ __interceptor_strtoumax at Base 4.9
+ __interceptor_swapcontext at Base 4.8
+ __interceptor_sysinfo at Base 4.9
+ __interceptor_tcgetattr at Base 4.9
+ __interceptor_tempnam at Base 4.9
+ __interceptor_textdomain at Base 4.9
+ __interceptor_time at Base 4.9
+ __interceptor_timerfd_gettime at Base 5
+ __interceptor_timerfd_settime at Base 5
+ __interceptor_times at Base 4.9
+ __interceptor_tmpnam at Base 4.9
+ __interceptor_tmpnam_r at Base 4.9
+ __interceptor_tsearch at Base 5
+ __interceptor_valloc at Base 4.8
+ __interceptor_vasprintf at Base 5
+ __interceptor_vfprintf at Base 5
+ __interceptor_vfscanf at Base 4.8
+ __interceptor_vprintf at Base 5
+ __interceptor_vscanf at Base 4.8
+ __interceptor_vsnprintf at Base 5
+ __interceptor_vsprintf at Base 5
+ __interceptor_vsscanf at Base 4.8
+ __interceptor_wait3 at Base 4.9
+ __interceptor_wait4 at Base 4.9
+ __interceptor_wait at Base 4.9
+ __interceptor_waitid at Base 4.9
+ __interceptor_waitpid at Base 4.9
+ __interceptor_wcslen at Base 4.9
+ __interceptor_wcsnrtombs at Base 4.9
+ __interceptor_wcsrtombs at Base 4.9
+ __interceptor_wcstombs at Base 4.9
+ __interceptor_wordexp at Base 4.9
+ __interceptor_write at Base 4.8
+ __interceptor_writev at Base 4.9
+ __interceptor_xdr_bool at Base 5
+ __interceptor_xdr_bytes at Base 5
+ __interceptor_xdr_char at Base 5
+ __interceptor_xdr_double at Base 5
+ __interceptor_xdr_enum at Base 5
+ __interceptor_xdr_float at Base 5
+ __interceptor_xdr_hyper at Base 5
+ __interceptor_xdr_int16_t at Base 5
+ __interceptor_xdr_int32_t at Base 5
+ __interceptor_xdr_int64_t at Base 5
+ __interceptor_xdr_int8_t at Base 5
+ __interceptor_xdr_int at Base 5
+ __interceptor_xdr_long at Base 5
+ __interceptor_xdr_longlong_t at Base 5
+ __interceptor_xdr_quad_t at Base 5
+ __interceptor_xdr_short at Base 5
+ __interceptor_xdr_string at Base 5
+ __interceptor_xdr_u_char at Base 5
+ __interceptor_xdr_u_hyper at Base 5
+ __interceptor_xdr_u_int at Base 5
+ __interceptor_xdr_u_long at Base 5
+ __interceptor_xdr_u_longlong_t at Base 5
+ __interceptor_xdr_u_quad_t at Base 5
+ __interceptor_xdr_u_short at Base 5
+ __interceptor_xdr_uint16_t at Base 5
+ __interceptor_xdr_uint32_t at Base 5
+ __interceptor_xdr_uint64_t at Base 5
+ __interceptor_xdr_uint8_t at Base 5
+ __interceptor_xdrmem_create at Base 5
+ __interceptor_xdrstdio_create at Base 5
+ __isoc99_fprintf at Base 5
+ __isoc99_fscanf at Base 4.8
+ __isoc99_printf at Base 5
+ __isoc99_scanf at Base 4.8
+ __isoc99_snprintf at Base 5
+ __isoc99_sprintf at Base 5
+ __isoc99_sscanf at Base 4.8
+ __isoc99_vfprintf at Base 5
+ __isoc99_vfscanf at Base 4.8
+ __isoc99_vprintf at Base 5
+ __isoc99_vscanf at Base 4.8
+ __isoc99_vsnprintf at Base 5
+ __isoc99_vsprintf at Base 5
+ __isoc99_vsscanf at Base 4.8
+ __libc_memalign at Base 4.8
+ __lsan_disable at Base 4.9
+ __lsan_do_leak_check at Base 4.9
+ __lsan_enable at Base 4.9
+ __lsan_ignore_object at Base 4.9
+ __lsan_register_root_region at Base 5
+ __lsan_unregister_root_region at Base 5
+ __overflow at Base 5
+ __sanitizer_annotate_contiguous_container at Base 4.9
+ __sanitizer_cov at Base 4.9
+ __sanitizer_cov_dump at Base 4.9
+ __sanitizer_cov_indir_call16 at Base 5
+ __sanitizer_cov_init at Base 5
+ __sanitizer_cov_module_init at Base 5
+ __sanitizer_get_allocated_size at Base 5
+ __sanitizer_get_current_allocated_bytes at Base 5
+ __sanitizer_get_estimated_allocated_size at Base 5
+ __sanitizer_get_free_bytes at Base 5
+ __sanitizer_get_heap_size at Base 5
+ __sanitizer_get_ownership at Base 5
+ __sanitizer_get_unmapped_bytes at Base 5
+ __sanitizer_maybe_open_cov_file at Base 5
+ __sanitizer_print_stack_trace at Base 4.9
+ __sanitizer_ptr_cmp at Base 5
+ __sanitizer_ptr_sub at Base 5
+ __sanitizer_report_error_summary at Base 4.8
+ __sanitizer_sandbox_on_notify at Base 4.8
+ __sanitizer_set_report_path at Base 4.8
+ __sanitizer_syscall_post_impl_accept4 at Base 4.9
+ __sanitizer_syscall_post_impl_accept at Base 4.9
+ __sanitizer_syscall_post_impl_access at Base 4.9
+ __sanitizer_syscall_post_impl_acct at Base 4.9
+ __sanitizer_syscall_post_impl_add_key at Base 4.9
+ __sanitizer_syscall_post_impl_adjtimex at Base 4.9
+ __sanitizer_syscall_post_impl_alarm at Base 4.9
+ __sanitizer_syscall_post_impl_bdflush at Base 4.9
+ __sanitizer_syscall_post_impl_bind at Base 4.9
+ __sanitizer_syscall_post_impl_brk at Base 4.9
+ __sanitizer_syscall_post_impl_capget at Base 4.9
+ __sanitizer_syscall_post_impl_capset at Base 4.9
+ __sanitizer_syscall_post_impl_chdir at Base 4.9
+ __sanitizer_syscall_post_impl_chmod at Base 4.9
+ __sanitizer_syscall_post_impl_chown at Base 4.9
+ __sanitizer_syscall_post_impl_chroot at Base 4.9
+ __sanitizer_syscall_post_impl_clock_adjtime at Base 4.9
+ __sanitizer_syscall_post_impl_clock_getres at Base 4.9
+ __sanitizer_syscall_post_impl_clock_gettime at Base 4.9
+ __sanitizer_syscall_post_impl_clock_nanosleep at Base 4.9
+ __sanitizer_syscall_post_impl_clock_settime at Base 4.9
+ __sanitizer_syscall_post_impl_close at Base 4.9
+ __sanitizer_syscall_post_impl_connect at Base 4.9
+ __sanitizer_syscall_post_impl_creat at Base 4.9
+ __sanitizer_syscall_post_impl_delete_module at Base 4.9
+ __sanitizer_syscall_post_impl_dup2 at Base 4.9
+ __sanitizer_syscall_post_impl_dup3 at Base 4.9
+ __sanitizer_syscall_post_impl_dup at Base 4.9
+ __sanitizer_syscall_post_impl_epoll_create1 at Base 4.9
+ __sanitizer_syscall_post_impl_epoll_create at Base 4.9
+ __sanitizer_syscall_post_impl_epoll_ctl at Base 4.9
+ __sanitizer_syscall_post_impl_epoll_pwait at Base 4.9
+ __sanitizer_syscall_post_impl_epoll_wait at Base 4.9
+ __sanitizer_syscall_post_impl_eventfd2 at Base 4.9
+ __sanitizer_syscall_post_impl_eventfd at Base 4.9
+ __sanitizer_syscall_post_impl_exit at Base 4.9
+ __sanitizer_syscall_post_impl_exit_group at Base 4.9
+ __sanitizer_syscall_post_impl_faccessat at Base 4.9
+ __sanitizer_syscall_post_impl_fchdir at Base 4.9
+ __sanitizer_syscall_post_impl_fchmod at Base 4.9
+ __sanitizer_syscall_post_impl_fchmodat at Base 4.9
+ __sanitizer_syscall_post_impl_fchown at Base 4.9
+ __sanitizer_syscall_post_impl_fchownat at Base 4.9
+ __sanitizer_syscall_post_impl_fcntl64 at Base 4.9
+ __sanitizer_syscall_post_impl_fcntl at Base 4.9
+ __sanitizer_syscall_post_impl_fdatasync at Base 4.9
+ __sanitizer_syscall_post_impl_fgetxattr at Base 4.9
+ __sanitizer_syscall_post_impl_flistxattr at Base 4.9
+ __sanitizer_syscall_post_impl_flock at Base 4.9
+ __sanitizer_syscall_post_impl_fork at Base 4.9
+ __sanitizer_syscall_post_impl_fremovexattr at Base 4.9
+ __sanitizer_syscall_post_impl_fsetxattr at Base 4.9
+ __sanitizer_syscall_post_impl_fstat64 at Base 4.9
+ __sanitizer_syscall_post_impl_fstat at Base 4.9
+ __sanitizer_syscall_post_impl_fstatat64 at Base 4.9
+ __sanitizer_syscall_post_impl_fstatfs64 at Base 4.9
+ __sanitizer_syscall_post_impl_fstatfs at Base 4.9
+ __sanitizer_syscall_post_impl_fsync at Base 4.9
+ __sanitizer_syscall_post_impl_ftruncate at Base 4.9
+ __sanitizer_syscall_post_impl_futimesat at Base 4.9
+ __sanitizer_syscall_post_impl_get_mempolicy at Base 4.9
+ __sanitizer_syscall_post_impl_get_robust_list at Base 4.9
+ __sanitizer_syscall_post_impl_getcpu at Base 4.9
+ __sanitizer_syscall_post_impl_getcwd at Base 4.9
+ __sanitizer_syscall_post_impl_getdents64 at Base 4.9
+ __sanitizer_syscall_post_impl_getdents at Base 4.9
+ __sanitizer_syscall_post_impl_getegid at Base 4.9
+ __sanitizer_syscall_post_impl_geteuid at Base 4.9
+ __sanitizer_syscall_post_impl_getgid at Base 4.9
+ __sanitizer_syscall_post_impl_getgroups at Base 4.9
+ __sanitizer_syscall_post_impl_gethostname at Base 4.9
+ __sanitizer_syscall_post_impl_getitimer at Base 4.9
+ __sanitizer_syscall_post_impl_getpeername at Base 4.9
+ __sanitizer_syscall_post_impl_getpgid at Base 4.9
+ __sanitizer_syscall_post_impl_getpgrp at Base 4.9
+ __sanitizer_syscall_post_impl_getpid at Base 4.9
+ __sanitizer_syscall_post_impl_getppid at Base 4.9
+ __sanitizer_syscall_post_impl_getpriority at Base 4.9
+ __sanitizer_syscall_post_impl_getresgid at Base 4.9
+ __sanitizer_syscall_post_impl_getresuid at Base 4.9
+ __sanitizer_syscall_post_impl_getrlimit at Base 4.9
+ __sanitizer_syscall_post_impl_getrusage at Base 4.9
+ __sanitizer_syscall_post_impl_getsid at Base 4.9
+ __sanitizer_syscall_post_impl_getsockname at Base 4.9
+ __sanitizer_syscall_post_impl_getsockopt at Base 4.9
+ __sanitizer_syscall_post_impl_gettid at Base 4.9
+ __sanitizer_syscall_post_impl_gettimeofday at Base 4.9
+ __sanitizer_syscall_post_impl_getuid at Base 4.9
+ __sanitizer_syscall_post_impl_getxattr at Base 4.9
+ __sanitizer_syscall_post_impl_init_module at Base 4.9
+ __sanitizer_syscall_post_impl_inotify_add_watch at Base 4.9
+ __sanitizer_syscall_post_impl_inotify_init1 at Base 4.9
+ __sanitizer_syscall_post_impl_inotify_init at Base 4.9
+ __sanitizer_syscall_post_impl_inotify_rm_watch at Base 4.9
+ __sanitizer_syscall_post_impl_io_cancel at Base 4.9
+ __sanitizer_syscall_post_impl_io_destroy at Base 4.9
+ __sanitizer_syscall_post_impl_io_getevents at Base 4.9
+ __sanitizer_syscall_post_impl_io_setup at Base 4.9
+ __sanitizer_syscall_post_impl_io_submit at Base 4.9
+ __sanitizer_syscall_post_impl_ioctl at Base 4.9
+ __sanitizer_syscall_post_impl_ioperm at Base 4.9
+ __sanitizer_syscall_post_impl_ioprio_get at Base 4.9
+ __sanitizer_syscall_post_impl_ioprio_set at Base 4.9
+ __sanitizer_syscall_post_impl_ipc at Base 4.9
+ __sanitizer_syscall_post_impl_kexec_load at Base 4.9
+ __sanitizer_syscall_post_impl_keyctl at Base 4.9
+ __sanitizer_syscall_post_impl_kill at Base 4.9
+ __sanitizer_syscall_post_impl_lchown at Base 4.9
+ __sanitizer_syscall_post_impl_lgetxattr at Base 4.9
+ __sanitizer_syscall_post_impl_link at Base 4.9
+ __sanitizer_syscall_post_impl_linkat at Base 4.9
+ __sanitizer_syscall_post_impl_listen at Base 4.9
+ __sanitizer_syscall_post_impl_listxattr at Base 4.9
+ __sanitizer_syscall_post_impl_llistxattr at Base 4.9
+ __sanitizer_syscall_post_impl_llseek at Base 4.9
+ __sanitizer_syscall_post_impl_lookup_dcookie at Base 4.9
+ __sanitizer_syscall_post_impl_lremovexattr at Base 4.9
+ __sanitizer_syscall_post_impl_lseek at Base 4.9
+ __sanitizer_syscall_post_impl_lsetxattr at Base 4.9
+ __sanitizer_syscall_post_impl_lstat64 at Base 4.9
+ __sanitizer_syscall_post_impl_lstat at Base 4.9
+ __sanitizer_syscall_post_impl_madvise at Base 4.9
+ __sanitizer_syscall_post_impl_mbind at Base 4.9
+ __sanitizer_syscall_post_impl_migrate_pages at Base 4.9
+ __sanitizer_syscall_post_impl_mincore at Base 4.9
+ __sanitizer_syscall_post_impl_mkdir at Base 4.9
+ __sanitizer_syscall_post_impl_mkdirat at Base 4.9
+ __sanitizer_syscall_post_impl_mknod at Base 4.9
+ __sanitizer_syscall_post_impl_mknodat at Base 4.9
+ __sanitizer_syscall_post_impl_mlock at Base 4.9
+ __sanitizer_syscall_post_impl_mlockall at Base 4.9
+ __sanitizer_syscall_post_impl_mmap_pgoff at Base 4.9
+ __sanitizer_syscall_post_impl_mount at Base 4.9
+ __sanitizer_syscall_post_impl_move_pages at Base 4.9
+ __sanitizer_syscall_post_impl_mprotect at Base 4.9
+ __sanitizer_syscall_post_impl_mq_getsetattr at Base 4.9
+ __sanitizer_syscall_post_impl_mq_notify at Base 4.9
+ __sanitizer_syscall_post_impl_mq_open at Base 4.9
+ __sanitizer_syscall_post_impl_mq_timedreceive at Base 4.9
+ __sanitizer_syscall_post_impl_mq_timedsend at Base 4.9
+ __sanitizer_syscall_post_impl_mq_unlink at Base 4.9
+ __sanitizer_syscall_post_impl_mremap at Base 4.9
+ __sanitizer_syscall_post_impl_msgctl at Base 4.9
+ __sanitizer_syscall_post_impl_msgget at Base 4.9
+ __sanitizer_syscall_post_impl_msgrcv at Base 4.9
+ __sanitizer_syscall_post_impl_msgsnd at Base 4.9
+ __sanitizer_syscall_post_impl_msync at Base 4.9
+ __sanitizer_syscall_post_impl_munlock at Base 4.9
+ __sanitizer_syscall_post_impl_munlockall at Base 4.9
+ __sanitizer_syscall_post_impl_munmap at Base 4.9
+ __sanitizer_syscall_post_impl_name_to_handle_at at Base 4.9
+ __sanitizer_syscall_post_impl_nanosleep at Base 4.9
+ __sanitizer_syscall_post_impl_newfstat at Base 4.9
+ __sanitizer_syscall_post_impl_newfstatat at Base 4.9
+ __sanitizer_syscall_post_impl_newlstat at Base 4.9
+ __sanitizer_syscall_post_impl_newstat at Base 4.9
+ __sanitizer_syscall_post_impl_newuname at Base 4.9
+ __sanitizer_syscall_post_impl_ni_syscall at Base 4.9
+ __sanitizer_syscall_post_impl_nice at Base 4.9
+ __sanitizer_syscall_post_impl_old_getrlimit at Base 4.9
+ __sanitizer_syscall_post_impl_old_mmap at Base 4.9
+ __sanitizer_syscall_post_impl_old_readdir at Base 4.9
+ __sanitizer_syscall_post_impl_old_select at Base 4.9
+ __sanitizer_syscall_post_impl_oldumount at Base 4.9
+ __sanitizer_syscall_post_impl_olduname at Base 4.9
+ __sanitizer_syscall_post_impl_open at Base 4.9
+ __sanitizer_syscall_post_impl_open_by_handle_at at Base 4.9
+ __sanitizer_syscall_post_impl_openat at Base 4.9
+ __sanitizer_syscall_post_impl_pause at Base 4.9
+ __sanitizer_syscall_post_impl_pciconfig_iobase at Base 4.9
+ __sanitizer_syscall_post_impl_pciconfig_read at Base 4.9
+ __sanitizer_syscall_post_impl_pciconfig_write at Base 4.9
+ __sanitizer_syscall_post_impl_perf_event_open at Base 4.9
+ __sanitizer_syscall_post_impl_personality at Base 4.9
+ __sanitizer_syscall_post_impl_pipe2 at Base 4.9
+ __sanitizer_syscall_post_impl_pipe at Base 4.9
+ __sanitizer_syscall_post_impl_pivot_root at Base 4.9
+ __sanitizer_syscall_post_impl_poll at Base 4.9
+ __sanitizer_syscall_post_impl_ppoll at Base 4.9
+ __sanitizer_syscall_post_impl_pread64 at Base 4.9
+ __sanitizer_syscall_post_impl_preadv at Base 4.9
+ __sanitizer_syscall_post_impl_prlimit64 at Base 4.9
+ __sanitizer_syscall_post_impl_process_vm_readv at Base 4.9
+ __sanitizer_syscall_post_impl_process_vm_writev at Base 4.9
+ __sanitizer_syscall_post_impl_pselect6 at Base 4.9
+ __sanitizer_syscall_post_impl_ptrace at Base 4.9
+ __sanitizer_syscall_post_impl_pwrite64 at Base 4.9
+ __sanitizer_syscall_post_impl_pwritev at Base 4.9
+ __sanitizer_syscall_post_impl_quotactl at Base 4.9
+ __sanitizer_syscall_post_impl_read at Base 4.9
+ __sanitizer_syscall_post_impl_readlink at Base 4.9
+ __sanitizer_syscall_post_impl_readlinkat at Base 4.9
+ __sanitizer_syscall_post_impl_readv at Base 4.9
+ __sanitizer_syscall_post_impl_reboot at Base 4.9
+ __sanitizer_syscall_post_impl_recv at Base 4.9
+ __sanitizer_syscall_post_impl_recvfrom at Base 4.9
+ __sanitizer_syscall_post_impl_recvmmsg at Base 4.9
+ __sanitizer_syscall_post_impl_recvmsg at Base 4.9
+ __sanitizer_syscall_post_impl_remap_file_pages at Base 4.9
+ __sanitizer_syscall_post_impl_removexattr at Base 4.9
+ __sanitizer_syscall_post_impl_rename at Base 4.9
+ __sanitizer_syscall_post_impl_renameat at Base 4.9
+ __sanitizer_syscall_post_impl_request_key at Base 4.9
+ __sanitizer_syscall_post_impl_restart_syscall at Base 4.9
+ __sanitizer_syscall_post_impl_rmdir at Base 4.9
+ __sanitizer_syscall_post_impl_rt_sigpending at Base 4.9
+ __sanitizer_syscall_post_impl_rt_sigprocmask at Base 4.9
+ __sanitizer_syscall_post_impl_rt_sigqueueinfo at Base 4.9
+ __sanitizer_syscall_post_impl_rt_sigtimedwait at Base 4.9
+ __sanitizer_syscall_post_impl_rt_tgsigqueueinfo at Base 4.9
+ __sanitizer_syscall_post_impl_sched_get_priority_max at Base 4.9
+ __sanitizer_syscall_post_impl_sched_get_priority_min at Base 4.9
+ __sanitizer_syscall_post_impl_sched_getaffinity at Base 4.9
+ __sanitizer_syscall_post_impl_sched_getparam at Base 4.9
+ __sanitizer_syscall_post_impl_sched_getscheduler at Base 4.9
+ __sanitizer_syscall_post_impl_sched_rr_get_interval at Base 4.9
+ __sanitizer_syscall_post_impl_sched_setaffinity at Base 4.9
+ __sanitizer_syscall_post_impl_sched_setparam at Base 4.9
+ __sanitizer_syscall_post_impl_sched_setscheduler at Base 4.9
+ __sanitizer_syscall_post_impl_sched_yield at Base 4.9
+ __sanitizer_syscall_post_impl_select at Base 4.9
+ __sanitizer_syscall_post_impl_semctl at Base 4.9
+ __sanitizer_syscall_post_impl_semget at Base 4.9
+ __sanitizer_syscall_post_impl_semop at Base 4.9
+ __sanitizer_syscall_post_impl_semtimedop at Base 4.9
+ __sanitizer_syscall_post_impl_send at Base 4.9
+ __sanitizer_syscall_post_impl_sendfile64 at Base 4.9
+ __sanitizer_syscall_post_impl_sendfile at Base 4.9
+ __sanitizer_syscall_post_impl_sendmmsg at Base 4.9
+ __sanitizer_syscall_post_impl_sendmsg at Base 4.9
+ __sanitizer_syscall_post_impl_sendto at Base 4.9
+ __sanitizer_syscall_post_impl_set_mempolicy at Base 4.9
+ __sanitizer_syscall_post_impl_set_robust_list at Base 4.9
+ __sanitizer_syscall_post_impl_set_tid_address at Base 4.9
+ __sanitizer_syscall_post_impl_setdomainname at Base 4.9
+ __sanitizer_syscall_post_impl_setfsgid at Base 4.9
+ __sanitizer_syscall_post_impl_setfsuid at Base 4.9
+ __sanitizer_syscall_post_impl_setgid at Base 4.9
+ __sanitizer_syscall_post_impl_setgroups at Base 4.9
+ __sanitizer_syscall_post_impl_sethostname at Base 4.9
+ __sanitizer_syscall_post_impl_setitimer at Base 4.9
+ __sanitizer_syscall_post_impl_setns at Base 4.9
+ __sanitizer_syscall_post_impl_setpgid at Base 4.9
+ __sanitizer_syscall_post_impl_setpriority at Base 4.9
+ __sanitizer_syscall_post_impl_setregid at Base 4.9
+ __sanitizer_syscall_post_impl_setresgid at Base 4.9
+ __sanitizer_syscall_post_impl_setresuid at Base 4.9
+ __sanitizer_syscall_post_impl_setreuid at Base 4.9
+ __sanitizer_syscall_post_impl_setrlimit at Base 4.9
+ __sanitizer_syscall_post_impl_setsid at Base 4.9
+ __sanitizer_syscall_post_impl_setsockopt at Base 4.9
+ __sanitizer_syscall_post_impl_settimeofday at Base 4.9
+ __sanitizer_syscall_post_impl_setuid at Base 4.9
+ __sanitizer_syscall_post_impl_setxattr at Base 4.9
+ __sanitizer_syscall_post_impl_sgetmask at Base 4.9
+ __sanitizer_syscall_post_impl_shmat at Base 4.9
+ __sanitizer_syscall_post_impl_shmctl at Base 4.9
+ __sanitizer_syscall_post_impl_shmdt at Base 4.9
+ __sanitizer_syscall_post_impl_shmget at Base 4.9
+ __sanitizer_syscall_post_impl_shutdown at Base 4.9
+ __sanitizer_syscall_post_impl_signal at Base 4.9
+ __sanitizer_syscall_post_impl_signalfd4 at Base 4.9
+ __sanitizer_syscall_post_impl_signalfd at Base 4.9
+ __sanitizer_syscall_post_impl_sigpending at Base 4.9
+ __sanitizer_syscall_post_impl_sigprocmask at Base 4.9
+ __sanitizer_syscall_post_impl_socket at Base 4.9
+ __sanitizer_syscall_post_impl_socketcall at Base 4.9
+ __sanitizer_syscall_post_impl_socketpair at Base 4.9
+ __sanitizer_syscall_post_impl_splice at Base 4.9
+ __sanitizer_syscall_post_impl_spu_create at Base 4.9
+ __sanitizer_syscall_post_impl_spu_run at Base 4.9
+ __sanitizer_syscall_post_impl_ssetmask at Base 4.9
+ __sanitizer_syscall_post_impl_stat64 at Base 4.9
+ __sanitizer_syscall_post_impl_stat at Base 4.9
+ __sanitizer_syscall_post_impl_statfs64 at Base 4.9
+ __sanitizer_syscall_post_impl_statfs at Base 4.9
+ __sanitizer_syscall_post_impl_stime at Base 4.9
+ __sanitizer_syscall_post_impl_swapoff at Base 4.9
+ __sanitizer_syscall_post_impl_swapon at Base 4.9
+ __sanitizer_syscall_post_impl_symlink at Base 4.9
+ __sanitizer_syscall_post_impl_symlinkat at Base 4.9
+ __sanitizer_syscall_post_impl_sync at Base 4.9
+ __sanitizer_syscall_post_impl_syncfs at Base 4.9
+ __sanitizer_syscall_post_impl_sysctl at Base 4.9
+ __sanitizer_syscall_post_impl_sysfs at Base 4.9
+ __sanitizer_syscall_post_impl_sysinfo at Base 4.9
+ __sanitizer_syscall_post_impl_syslog at Base 4.9
+ __sanitizer_syscall_post_impl_tee at Base 4.9
+ __sanitizer_syscall_post_impl_tgkill at Base 4.9
+ __sanitizer_syscall_post_impl_time at Base 4.9
+ __sanitizer_syscall_post_impl_timer_create at Base 4.9
+ __sanitizer_syscall_post_impl_timer_delete at Base 4.9
+ __sanitizer_syscall_post_impl_timer_getoverrun at Base 4.9
+ __sanitizer_syscall_post_impl_timer_gettime at Base 4.9
+ __sanitizer_syscall_post_impl_timer_settime at Base 4.9
+ __sanitizer_syscall_post_impl_timerfd_create at Base 4.9
+ __sanitizer_syscall_post_impl_timerfd_gettime at Base 4.9
+ __sanitizer_syscall_post_impl_timerfd_settime at Base 4.9
+ __sanitizer_syscall_post_impl_times at Base 4.9
+ __sanitizer_syscall_post_impl_tkill at Base 4.9
+ __sanitizer_syscall_post_impl_truncate at Base 4.9
+ __sanitizer_syscall_post_impl_umask at Base 4.9
+ __sanitizer_syscall_post_impl_umount at Base 4.9
+ __sanitizer_syscall_post_impl_uname at Base 4.9
+ __sanitizer_syscall_post_impl_unlink at Base 4.9
+ __sanitizer_syscall_post_impl_unlinkat at Base 4.9
+ __sanitizer_syscall_post_impl_unshare at Base 4.9
+ __sanitizer_syscall_post_impl_uselib at Base 4.9
+ __sanitizer_syscall_post_impl_ustat at Base 4.9
+ __sanitizer_syscall_post_impl_utime at Base 4.9
+ __sanitizer_syscall_post_impl_utimensat at Base 4.9
+ __sanitizer_syscall_post_impl_utimes at Base 4.9
+ __sanitizer_syscall_post_impl_vfork at Base 4.9
+ __sanitizer_syscall_post_impl_vhangup at Base 4.9
+ __sanitizer_syscall_post_impl_vmsplice at Base 4.9
+ __sanitizer_syscall_post_impl_wait4 at Base 4.9
+ __sanitizer_syscall_post_impl_waitid at Base 4.9
+ __sanitizer_syscall_post_impl_waitpid at Base 4.9
+ __sanitizer_syscall_post_impl_write at Base 4.9
+ __sanitizer_syscall_post_impl_writev at Base 4.9
+ __sanitizer_syscall_pre_impl_accept4 at Base 4.9
+ __sanitizer_syscall_pre_impl_accept at Base 4.9
+ __sanitizer_syscall_pre_impl_access at Base 4.9
+ __sanitizer_syscall_pre_impl_acct at Base 4.9
+ __sanitizer_syscall_pre_impl_add_key at Base 4.9
+ __sanitizer_syscall_pre_impl_adjtimex at Base 4.9
+ __sanitizer_syscall_pre_impl_alarm at Base 4.9
+ __sanitizer_syscall_pre_impl_bdflush at Base 4.9
+ __sanitizer_syscall_pre_impl_bind at Base 4.9
+ __sanitizer_syscall_pre_impl_brk at Base 4.9
+ __sanitizer_syscall_pre_impl_capget at Base 4.9
+ __sanitizer_syscall_pre_impl_capset at Base 4.9
+ __sanitizer_syscall_pre_impl_chdir at Base 4.9
+ __sanitizer_syscall_pre_impl_chmod at Base 4.9
+ __sanitizer_syscall_pre_impl_chown at Base 4.9
+ __sanitizer_syscall_pre_impl_chroot at Base 4.9
+ __sanitizer_syscall_pre_impl_clock_adjtime at Base 4.9
+ __sanitizer_syscall_pre_impl_clock_getres at Base 4.9
+ __sanitizer_syscall_pre_impl_clock_gettime at Base 4.9
+ __sanitizer_syscall_pre_impl_clock_nanosleep at Base 4.9
+ __sanitizer_syscall_pre_impl_clock_settime at Base 4.9
+ __sanitizer_syscall_pre_impl_close at Base 4.9
+ __sanitizer_syscall_pre_impl_connect at Base 4.9
+ __sanitizer_syscall_pre_impl_creat at Base 4.9
+ __sanitizer_syscall_pre_impl_delete_module at Base 4.9
+ __sanitizer_syscall_pre_impl_dup2 at Base 4.9
+ __sanitizer_syscall_pre_impl_dup3 at Base 4.9
+ __sanitizer_syscall_pre_impl_dup at Base 4.9
+ __sanitizer_syscall_pre_impl_epoll_create1 at Base 4.9
+ __sanitizer_syscall_pre_impl_epoll_create at Base 4.9
+ __sanitizer_syscall_pre_impl_epoll_ctl at Base 4.9
+ __sanitizer_syscall_pre_impl_epoll_pwait at Base 4.9
+ __sanitizer_syscall_pre_impl_epoll_wait at Base 4.9
+ __sanitizer_syscall_pre_impl_eventfd2 at Base 4.9
+ __sanitizer_syscall_pre_impl_eventfd at Base 4.9
+ __sanitizer_syscall_pre_impl_exit at Base 4.9
+ __sanitizer_syscall_pre_impl_exit_group at Base 4.9
+ __sanitizer_syscall_pre_impl_faccessat at Base 4.9
+ __sanitizer_syscall_pre_impl_fchdir at Base 4.9
+ __sanitizer_syscall_pre_impl_fchmod at Base 4.9
+ __sanitizer_syscall_pre_impl_fchmodat at Base 4.9
+ __sanitizer_syscall_pre_impl_fchown at Base 4.9
+ __sanitizer_syscall_pre_impl_fchownat at Base 4.9
+ __sanitizer_syscall_pre_impl_fcntl64 at Base 4.9
+ __sanitizer_syscall_pre_impl_fcntl at Base 4.9
+ __sanitizer_syscall_pre_impl_fdatasync at Base 4.9
+ __sanitizer_syscall_pre_impl_fgetxattr at Base 4.9
+ __sanitizer_syscall_pre_impl_flistxattr at Base 4.9
+ __sanitizer_syscall_pre_impl_flock at Base 4.9
+ __sanitizer_syscall_pre_impl_fork at Base 4.9
+ __sanitizer_syscall_pre_impl_fremovexattr at Base 4.9
+ __sanitizer_syscall_pre_impl_fsetxattr at Base 4.9
+ __sanitizer_syscall_pre_impl_fstat64 at Base 4.9
+ __sanitizer_syscall_pre_impl_fstat at Base 4.9
+ __sanitizer_syscall_pre_impl_fstatat64 at Base 4.9
+ __sanitizer_syscall_pre_impl_fstatfs64 at Base 4.9
+ __sanitizer_syscall_pre_impl_fstatfs at Base 4.9
+ __sanitizer_syscall_pre_impl_fsync at Base 4.9
+ __sanitizer_syscall_pre_impl_ftruncate at Base 4.9
+ __sanitizer_syscall_pre_impl_futimesat at Base 4.9
+ __sanitizer_syscall_pre_impl_get_mempolicy at Base 4.9
+ __sanitizer_syscall_pre_impl_get_robust_list at Base 4.9
+ __sanitizer_syscall_pre_impl_getcpu at Base 4.9
+ __sanitizer_syscall_pre_impl_getcwd at Base 4.9
+ __sanitizer_syscall_pre_impl_getdents64 at Base 4.9
+ __sanitizer_syscall_pre_impl_getdents at Base 4.9
+ __sanitizer_syscall_pre_impl_getegid at Base 4.9
+ __sanitizer_syscall_pre_impl_geteuid at Base 4.9
+ __sanitizer_syscall_pre_impl_getgid at Base 4.9
+ __sanitizer_syscall_pre_impl_getgroups at Base 4.9
+ __sanitizer_syscall_pre_impl_gethostname at Base 4.9
+ __sanitizer_syscall_pre_impl_getitimer at Base 4.9
+ __sanitizer_syscall_pre_impl_getpeername at Base 4.9
+ __sanitizer_syscall_pre_impl_getpgid at Base 4.9
+ __sanitizer_syscall_pre_impl_getpgrp at Base 4.9
+ __sanitizer_syscall_pre_impl_getpid at Base 4.9
+ __sanitizer_syscall_pre_impl_getppid at Base 4.9
+ __sanitizer_syscall_pre_impl_getpriority at Base 4.9
+ __sanitizer_syscall_pre_impl_getresgid at Base 4.9
+ __sanitizer_syscall_pre_impl_getresuid at Base 4.9
+ __sanitizer_syscall_pre_impl_getrlimit at Base 4.9
+ __sanitizer_syscall_pre_impl_getrusage at Base 4.9
+ __sanitizer_syscall_pre_impl_getsid at Base 4.9
+ __sanitizer_syscall_pre_impl_getsockname at Base 4.9
+ __sanitizer_syscall_pre_impl_getsockopt at Base 4.9
+ __sanitizer_syscall_pre_impl_gettid at Base 4.9
+ __sanitizer_syscall_pre_impl_gettimeofday at Base 4.9
+ __sanitizer_syscall_pre_impl_getuid at Base 4.9
+ __sanitizer_syscall_pre_impl_getxattr at Base 4.9
+ __sanitizer_syscall_pre_impl_init_module at Base 4.9
+ __sanitizer_syscall_pre_impl_inotify_add_watch at Base 4.9
+ __sanitizer_syscall_pre_impl_inotify_init1 at Base 4.9
+ __sanitizer_syscall_pre_impl_inotify_init at Base 4.9
+ __sanitizer_syscall_pre_impl_inotify_rm_watch at Base 4.9
+ __sanitizer_syscall_pre_impl_io_cancel at Base 4.9
+ __sanitizer_syscall_pre_impl_io_destroy at Base 4.9
+ __sanitizer_syscall_pre_impl_io_getevents at Base 4.9
+ __sanitizer_syscall_pre_impl_io_setup at Base 4.9
+ __sanitizer_syscall_pre_impl_io_submit at Base 4.9
+ __sanitizer_syscall_pre_impl_ioctl at Base 4.9
+ __sanitizer_syscall_pre_impl_ioperm at Base 4.9
+ __sanitizer_syscall_pre_impl_ioprio_get at Base 4.9
+ __sanitizer_syscall_pre_impl_ioprio_set at Base 4.9
+ __sanitizer_syscall_pre_impl_ipc at Base 4.9
+ __sanitizer_syscall_pre_impl_kexec_load at Base 4.9
+ __sanitizer_syscall_pre_impl_keyctl at Base 4.9
+ __sanitizer_syscall_pre_impl_kill at Base 4.9
+ __sanitizer_syscall_pre_impl_lchown at Base 4.9
+ __sanitizer_syscall_pre_impl_lgetxattr at Base 4.9
+ __sanitizer_syscall_pre_impl_link at Base 4.9
+ __sanitizer_syscall_pre_impl_linkat at Base 4.9
+ __sanitizer_syscall_pre_impl_listen at Base 4.9
+ __sanitizer_syscall_pre_impl_listxattr at Base 4.9
+ __sanitizer_syscall_pre_impl_llistxattr at Base 4.9
+ __sanitizer_syscall_pre_impl_llseek at Base 4.9
+ __sanitizer_syscall_pre_impl_lookup_dcookie at Base 4.9
+ __sanitizer_syscall_pre_impl_lremovexattr at Base 4.9
+ __sanitizer_syscall_pre_impl_lseek at Base 4.9
+ __sanitizer_syscall_pre_impl_lsetxattr at Base 4.9
+ __sanitizer_syscall_pre_impl_lstat64 at Base 4.9
+ __sanitizer_syscall_pre_impl_lstat at Base 4.9
+ __sanitizer_syscall_pre_impl_madvise at Base 4.9
+ __sanitizer_syscall_pre_impl_mbind at Base 4.9
+ __sanitizer_syscall_pre_impl_migrate_pages at Base 4.9
+ __sanitizer_syscall_pre_impl_mincore at Base 4.9
+ __sanitizer_syscall_pre_impl_mkdir at Base 4.9
+ __sanitizer_syscall_pre_impl_mkdirat at Base 4.9
+ __sanitizer_syscall_pre_impl_mknod at Base 4.9
+ __sanitizer_syscall_pre_impl_mknodat at Base 4.9
+ __sanitizer_syscall_pre_impl_mlock at Base 4.9
+ __sanitizer_syscall_pre_impl_mlockall at Base 4.9
+ __sanitizer_syscall_pre_impl_mmap_pgoff at Base 4.9
+ __sanitizer_syscall_pre_impl_mount at Base 4.9
+ __sanitizer_syscall_pre_impl_move_pages at Base 4.9
+ __sanitizer_syscall_pre_impl_mprotect at Base 4.9
+ __sanitizer_syscall_pre_impl_mq_getsetattr at Base 4.9
+ __sanitizer_syscall_pre_impl_mq_notify at Base 4.9
+ __sanitizer_syscall_pre_impl_mq_open at Base 4.9
+ __sanitizer_syscall_pre_impl_mq_timedreceive at Base 4.9
+ __sanitizer_syscall_pre_impl_mq_timedsend at Base 4.9
+ __sanitizer_syscall_pre_impl_mq_unlink at Base 4.9
+ __sanitizer_syscall_pre_impl_mremap at Base 4.9
+ __sanitizer_syscall_pre_impl_msgctl at Base 4.9
+ __sanitizer_syscall_pre_impl_msgget at Base 4.9
+ __sanitizer_syscall_pre_impl_msgrcv at Base 4.9
+ __sanitizer_syscall_pre_impl_msgsnd at Base 4.9
+ __sanitizer_syscall_pre_impl_msync at Base 4.9
+ __sanitizer_syscall_pre_impl_munlock at Base 4.9
+ __sanitizer_syscall_pre_impl_munlockall at Base 4.9
+ __sanitizer_syscall_pre_impl_munmap at Base 4.9
+ __sanitizer_syscall_pre_impl_name_to_handle_at at Base 4.9
+ __sanitizer_syscall_pre_impl_nanosleep at Base 4.9
+ __sanitizer_syscall_pre_impl_newfstat at Base 4.9
+ __sanitizer_syscall_pre_impl_newfstatat at Base 4.9
+ __sanitizer_syscall_pre_impl_newlstat at Base 4.9
+ __sanitizer_syscall_pre_impl_newstat at Base 4.9
+ __sanitizer_syscall_pre_impl_newuname at Base 4.9
+ __sanitizer_syscall_pre_impl_ni_syscall at Base 4.9
+ __sanitizer_syscall_pre_impl_nice at Base 4.9
+ __sanitizer_syscall_pre_impl_old_getrlimit at Base 4.9
+ __sanitizer_syscall_pre_impl_old_mmap at Base 4.9
+ __sanitizer_syscall_pre_impl_old_readdir at Base 4.9
+ __sanitizer_syscall_pre_impl_old_select at Base 4.9
+ __sanitizer_syscall_pre_impl_oldumount at Base 4.9
+ __sanitizer_syscall_pre_impl_olduname at Base 4.9
+ __sanitizer_syscall_pre_impl_open at Base 4.9
+ __sanitizer_syscall_pre_impl_open_by_handle_at at Base 4.9
+ __sanitizer_syscall_pre_impl_openat at Base 4.9
+ __sanitizer_syscall_pre_impl_pause at Base 4.9
+ __sanitizer_syscall_pre_impl_pciconfig_iobase at Base 4.9
+ __sanitizer_syscall_pre_impl_pciconfig_read at Base 4.9
+ __sanitizer_syscall_pre_impl_pciconfig_write at Base 4.9
+ __sanitizer_syscall_pre_impl_perf_event_open at Base 4.9
+ __sanitizer_syscall_pre_impl_personality at Base 4.9
+ __sanitizer_syscall_pre_impl_pipe2 at Base 4.9
+ __sanitizer_syscall_pre_impl_pipe at Base 4.9
+ __sanitizer_syscall_pre_impl_pivot_root at Base 4.9
+ __sanitizer_syscall_pre_impl_poll at Base 4.9
+ __sanitizer_syscall_pre_impl_ppoll at Base 4.9
+ __sanitizer_syscall_pre_impl_pread64 at Base 4.9
+ __sanitizer_syscall_pre_impl_preadv at Base 4.9
+ __sanitizer_syscall_pre_impl_prlimit64 at Base 4.9
+ __sanitizer_syscall_pre_impl_process_vm_readv at Base 4.9
+ __sanitizer_syscall_pre_impl_process_vm_writev at Base 4.9
+ __sanitizer_syscall_pre_impl_pselect6 at Base 4.9
+ __sanitizer_syscall_pre_impl_ptrace at Base 4.9
+ __sanitizer_syscall_pre_impl_pwrite64 at Base 4.9
+ __sanitizer_syscall_pre_impl_pwritev at Base 4.9
+ __sanitizer_syscall_pre_impl_quotactl at Base 4.9
+ __sanitizer_syscall_pre_impl_read at Base 4.9
+ __sanitizer_syscall_pre_impl_readlink at Base 4.9
+ __sanitizer_syscall_pre_impl_readlinkat at Base 4.9
+ __sanitizer_syscall_pre_impl_readv at Base 4.9
+ __sanitizer_syscall_pre_impl_reboot at Base 4.9
+ __sanitizer_syscall_pre_impl_recv at Base 4.9
+ __sanitizer_syscall_pre_impl_recvfrom at Base 4.9
+ __sanitizer_syscall_pre_impl_recvmmsg at Base 4.9
+ __sanitizer_syscall_pre_impl_recvmsg at Base 4.9
+ __sanitizer_syscall_pre_impl_remap_file_pages at Base 4.9
+ __sanitizer_syscall_pre_impl_removexattr at Base 4.9
+ __sanitizer_syscall_pre_impl_rename at Base 4.9
+ __sanitizer_syscall_pre_impl_renameat at Base 4.9
+ __sanitizer_syscall_pre_impl_request_key at Base 4.9
+ __sanitizer_syscall_pre_impl_restart_syscall at Base 4.9
+ __sanitizer_syscall_pre_impl_rmdir at Base 4.9
+ __sanitizer_syscall_pre_impl_rt_sigpending at Base 4.9
+ __sanitizer_syscall_pre_impl_rt_sigprocmask at Base 4.9
+ __sanitizer_syscall_pre_impl_rt_sigqueueinfo at Base 4.9
+ __sanitizer_syscall_pre_impl_rt_sigtimedwait at Base 4.9
+ __sanitizer_syscall_pre_impl_rt_tgsigqueueinfo at Base 4.9
+ __sanitizer_syscall_pre_impl_sched_get_priority_max at Base 4.9
+ __sanitizer_syscall_pre_impl_sched_get_priority_min at Base 4.9
+ __sanitizer_syscall_pre_impl_sched_getaffinity at Base 4.9
+ __sanitizer_syscall_pre_impl_sched_getparam at Base 4.9
+ __sanitizer_syscall_pre_impl_sched_getscheduler at Base 4.9
+ __sanitizer_syscall_pre_impl_sched_rr_get_interval at Base 4.9
+ __sanitizer_syscall_pre_impl_sched_setaffinity at Base 4.9
+ __sanitizer_syscall_pre_impl_sched_setparam at Base 4.9
+ __sanitizer_syscall_pre_impl_sched_setscheduler at Base 4.9
+ __sanitizer_syscall_pre_impl_sched_yield at Base 4.9
+ __sanitizer_syscall_pre_impl_select at Base 4.9
+ __sanitizer_syscall_pre_impl_semctl at Base 4.9
+ __sanitizer_syscall_pre_impl_semget at Base 4.9
+ __sanitizer_syscall_pre_impl_semop at Base 4.9
+ __sanitizer_syscall_pre_impl_semtimedop at Base 4.9
+ __sanitizer_syscall_pre_impl_send at Base 4.9
+ __sanitizer_syscall_pre_impl_sendfile64 at Base 4.9
+ __sanitizer_syscall_pre_impl_sendfile at Base 4.9
+ __sanitizer_syscall_pre_impl_sendmmsg at Base 4.9
+ __sanitizer_syscall_pre_impl_sendmsg at Base 4.9
+ __sanitizer_syscall_pre_impl_sendto at Base 4.9
+ __sanitizer_syscall_pre_impl_set_mempolicy at Base 4.9
+ __sanitizer_syscall_pre_impl_set_robust_list at Base 4.9
+ __sanitizer_syscall_pre_impl_set_tid_address at Base 4.9
+ __sanitizer_syscall_pre_impl_setdomainname at Base 4.9
+ __sanitizer_syscall_pre_impl_setfsgid at Base 4.9
+ __sanitizer_syscall_pre_impl_setfsuid at Base 4.9
+ __sanitizer_syscall_pre_impl_setgid at Base 4.9
+ __sanitizer_syscall_pre_impl_setgroups at Base 4.9
+ __sanitizer_syscall_pre_impl_sethostname at Base 4.9
+ __sanitizer_syscall_pre_impl_setitimer at Base 4.9
+ __sanitizer_syscall_pre_impl_setns at Base 4.9
+ __sanitizer_syscall_pre_impl_setpgid at Base 4.9
+ __sanitizer_syscall_pre_impl_setpriority at Base 4.9
+ __sanitizer_syscall_pre_impl_setregid at Base 4.9
+ __sanitizer_syscall_pre_impl_setresgid at Base 4.9
+ __sanitizer_syscall_pre_impl_setresuid at Base 4.9
+ __sanitizer_syscall_pre_impl_setreuid at Base 4.9
+ __sanitizer_syscall_pre_impl_setrlimit at Base 4.9
+ __sanitizer_syscall_pre_impl_setsid at Base 4.9
+ __sanitizer_syscall_pre_impl_setsockopt at Base 4.9
+ __sanitizer_syscall_pre_impl_settimeofday at Base 4.9
+ __sanitizer_syscall_pre_impl_setuid at Base 4.9
+ __sanitizer_syscall_pre_impl_setxattr at Base 4.9
+ __sanitizer_syscall_pre_impl_sgetmask at Base 4.9
+ __sanitizer_syscall_pre_impl_shmat at Base 4.9
+ __sanitizer_syscall_pre_impl_shmctl at Base 4.9
+ __sanitizer_syscall_pre_impl_shmdt at Base 4.9
+ __sanitizer_syscall_pre_impl_shmget at Base 4.9
+ __sanitizer_syscall_pre_impl_shutdown at Base 4.9
+ __sanitizer_syscall_pre_impl_signal at Base 4.9
+ __sanitizer_syscall_pre_impl_signalfd4 at Base 4.9
+ __sanitizer_syscall_pre_impl_signalfd at Base 4.9
+ __sanitizer_syscall_pre_impl_sigpending at Base 4.9
+ __sanitizer_syscall_pre_impl_sigprocmask at Base 4.9
+ __sanitizer_syscall_pre_impl_socket at Base 4.9
+ __sanitizer_syscall_pre_impl_socketcall at Base 4.9
+ __sanitizer_syscall_pre_impl_socketpair at Base 4.9
+ __sanitizer_syscall_pre_impl_splice at Base 4.9
+ __sanitizer_syscall_pre_impl_spu_create at Base 4.9
+ __sanitizer_syscall_pre_impl_spu_run at Base 4.9
+ __sanitizer_syscall_pre_impl_ssetmask at Base 4.9
+ __sanitizer_syscall_pre_impl_stat64 at Base 4.9
+ __sanitizer_syscall_pre_impl_stat at Base 4.9
+ __sanitizer_syscall_pre_impl_statfs64 at Base 4.9
+ __sanitizer_syscall_pre_impl_statfs at Base 4.9
+ __sanitizer_syscall_pre_impl_stime at Base 4.9
+ __sanitizer_syscall_pre_impl_swapoff at Base 4.9
+ __sanitizer_syscall_pre_impl_swapon at Base 4.9
+ __sanitizer_syscall_pre_impl_symlink at Base 4.9
+ __sanitizer_syscall_pre_impl_symlinkat at Base 4.9
+ __sanitizer_syscall_pre_impl_sync at Base 4.9
+ __sanitizer_syscall_pre_impl_syncfs at Base 4.9
+ __sanitizer_syscall_pre_impl_sysctl at Base 4.9
+ __sanitizer_syscall_pre_impl_sysfs at Base 4.9
+ __sanitizer_syscall_pre_impl_sysinfo at Base 4.9
+ __sanitizer_syscall_pre_impl_syslog at Base 4.9
+ __sanitizer_syscall_pre_impl_tee at Base 4.9
+ __sanitizer_syscall_pre_impl_tgkill at Base 4.9
+ __sanitizer_syscall_pre_impl_time at Base 4.9
+ __sanitizer_syscall_pre_impl_timer_create at Base 4.9
+ __sanitizer_syscall_pre_impl_timer_delete at Base 4.9
+ __sanitizer_syscall_pre_impl_timer_getoverrun at Base 4.9
+ __sanitizer_syscall_pre_impl_timer_gettime at Base 4.9
+ __sanitizer_syscall_pre_impl_timer_settime at Base 4.9
+ __sanitizer_syscall_pre_impl_timerfd_create at Base 4.9
+ __sanitizer_syscall_pre_impl_timerfd_gettime at Base 4.9
+ __sanitizer_syscall_pre_impl_timerfd_settime at Base 4.9
+ __sanitizer_syscall_pre_impl_times at Base 4.9
+ __sanitizer_syscall_pre_impl_tkill at Base 4.9
+ __sanitizer_syscall_pre_impl_truncate at Base 4.9
+ __sanitizer_syscall_pre_impl_umask at Base 4.9
+ __sanitizer_syscall_pre_impl_umount at Base 4.9
+ __sanitizer_syscall_pre_impl_uname at Base 4.9
+ __sanitizer_syscall_pre_impl_unlink at Base 4.9
+ __sanitizer_syscall_pre_impl_unlinkat at Base 4.9
+ __sanitizer_syscall_pre_impl_unshare at Base 4.9
+ __sanitizer_syscall_pre_impl_uselib at Base 4.9
+ __sanitizer_syscall_pre_impl_ustat at Base 4.9
+ __sanitizer_syscall_pre_impl_utime at Base 4.9
+ __sanitizer_syscall_pre_impl_utimensat at Base 4.9
+ __sanitizer_syscall_pre_impl_utimes at Base 4.9
+ __sanitizer_syscall_pre_impl_vfork at Base 4.9
+ __sanitizer_syscall_pre_impl_vhangup at Base 4.9
+ __sanitizer_syscall_pre_impl_vmsplice at Base 4.9
+ __sanitizer_syscall_pre_impl_wait4 at Base 4.9
+ __sanitizer_syscall_pre_impl_waitid at Base 4.9
+ __sanitizer_syscall_pre_impl_waitpid at Base 4.9
+ __sanitizer_syscall_pre_impl_write at Base 4.9
+ __sanitizer_syscall_pre_impl_writev at Base 4.9
+ __sanitizer_unaligned_load16 at Base 4.9
+ __sanitizer_unaligned_load32 at Base 4.9
+ __sanitizer_unaligned_load64 at Base 4.9
+ __sanitizer_unaligned_store16 at Base 4.9
+ __sanitizer_unaligned_store32 at Base 4.9
+ __sanitizer_unaligned_store64 at Base 4.9
+ __sanitizer_verify_contiguous_container at Base 5
+ __tls_get_addr at Base 5
+ __uflow at Base 5
+ __underflow at Base 5
+ __woverflow at Base 5
+ __wuflow at Base 5
+ __wunderflow at Base 5
+ __xpg_strerror_r at Base 4.9
+ _exit at Base 4.9
+ _longjmp at Base 4.8
+ _obstack_begin at Base 5
+ _obstack_begin_1 at Base 5
+ _obstack_newchunk at Base 5
+ accept4 at Base 4.9
+ accept at Base 4.9
+ aligned_alloc at Base 5
+ asctime at Base 4.8
+ asctime_r at Base 4.8
+ asprintf at Base 5
+ atoi at Base 4.8
+ atol at Base 4.8
+ atoll at Base 4.8
+ backtrace at Base 4.9
+ backtrace_symbols at Base 4.9
+ calloc at Base 4.8
+ canonicalize_file_name at Base 4.9
+ capget at Base 5
+ capset at Base 5
+ cfree at Base 4.8
+ clock_getres at Base 4.9
+ clock_gettime at Base 4.9
+ clock_settime at Base 4.9
+ confstr at Base 4.9
+ ctime at Base 4.8
+ ctime_r at Base 4.8
+ dlclose at Base 5
+ dlopen at Base 5
+ drand48_r at Base 4.9
+ endgrent at Base 5
+ endpwent at Base 5
+ ether_aton at Base 4.9
+ ether_aton_r at Base 4.9
+ ether_hostton at Base 4.9
+ ether_line at Base 4.9
+ ether_ntoa at Base 4.9
+ ether_ntoa_r at Base 4.9
+ ether_ntohost at Base 4.9
+ fclose at Base 5
+ fdopen at Base 5
+ fflush at Base 5
+ fgetgrent at Base 5
+ fgetgrent_r at Base 5
+ fgetpwent at Base 5
+ fgetpwent_r at Base 5
+ fgetxattr at Base 5
+ flistxattr at Base 5
+ fmemopen at Base 5
+ fopen64 at Base 5
+ fopen at Base 5
+ fork at Base 5
+ fprintf at Base 5
+ free at Base 4.8
+ freopen64 at Base 5
+ freopen at Base 5
+ frexp at Base 4.9
+ frexpf at Base 4.9
+ frexpl at Base 4.9
+ fscanf at Base 4.8
+ fstatfs64 at Base 4.9
+ fstatfs at Base 4.9
+ fstatvfs64 at Base 4.9
+ fstatvfs at Base 4.9
+ ftime at Base 5
+ get_current_dir_name at Base 4.9
+ getaddrinfo at Base 4.9
+ getcwd at Base 4.9
+ getdelim at Base 4.9
+ getgrent at Base 5
+ getgrent_r at Base 5
+ getgrgid at Base 4.9
+ getgrgid_r at Base 4.9
+ getgrnam at Base 4.9
+ getgrnam_r at Base 4.9
+ getgroups at Base 4.9
+ gethostbyaddr at Base 4.9
+ gethostbyaddr_r at Base 4.9
+ gethostbyname2 at Base 4.9
+ gethostbyname2_r at Base 4.9
+ gethostbyname at Base 4.9
+ gethostbyname_r at Base 4.9
+ gethostent at Base 4.9
+ gethostent_r at Base 4.9
+ getifaddrs at Base 5
+ getitimer at Base 4.9
+ getline at Base 4.9
+ getmntent at Base 4.9
+ getmntent_r at Base 4.9
+ getnameinfo at Base 4.9
+ getpass at Base 5
+ getpeername at Base 4.9
+ getpwent at Base 5
+ getpwent_r at Base 5
+ getpwnam at Base 4.9
+ getpwnam_r at Base 4.9
+ getpwuid at Base 4.9
+ getpwuid_r at Base 4.9
+ getresgid at Base 5
+ getresuid at Base 5
+ getsockname at Base 4.9
+ getsockopt at Base 4.9
+ getxattr at Base 5
+ glob64 at Base 4.9
+ glob at Base 4.9
+ gmtime at Base 4.8
+ gmtime_r at Base 4.8
+ iconv at Base 4.9
+ if_indextoname at Base 5
+ if_nametoindex at Base 5
+ index at Base 4.8
+ inet_aton at Base 4.9
+ inet_ntop at Base 4.9
+ inet_pton at Base 4.9
+ initgroups at Base 4.9
+ ioctl at Base 4.9
+ lgamma at Base 4.9
+ lgamma_r at Base 4.9
+ lgammaf at Base 4.9
+ lgammaf_r at Base 4.9
+ lgammal at Base 4.9
+ lgammal_r at Base 4.9
+ lgetxattr at Base 5
+ listxattr at Base 5
+ llistxattr at Base 5
+ localtime at Base 4.8
+ localtime_r at Base 4.8
+ longjmp at Base 4.8
+ lrand48_r at Base 4.9
+ mallinfo at Base 4.8
+ malloc at Base 4.8
+ malloc_stats at Base 4.8
+ malloc_usable_size at Base 4.8
+ mallopt at Base 4.8
+ mbsnrtowcs at Base 4.9
+ mbsrtowcs at Base 4.9
+ mbstowcs at Base 4.9
+ memalign at Base 4.8
+ memchr at Base 5
+ memcmp at Base 4.8
+ memcpy at Base 4.8
+ memmove at Base 4.8
+ memrchr at Base 5
+ memset at Base 4.8
+ mktime at Base 5
+ mlock at Base 4.8
+ mlockall at Base 4.8
+ modf at Base 4.9
+ modff at Base 4.9
+ modfl at Base 4.9
+ munlock at Base 4.8
+ munlockall at Base 4.8
+ open_memstream at Base 5
+ open_wmemstream at Base 5
+ poll at Base 4.9
+ posix_memalign at Base 4.8
+ ppoll at Base 4.9
+ prctl at Base 4.8
+ pread64 at Base 4.8
+ pread at Base 4.8
+ preadv64 at Base 4.9
+ preadv at Base 4.9
+ printf at Base 5
+ pthread_attr_getaffinity_np at Base 4.9
+ pthread_attr_getdetachstate at Base 4.9
+ pthread_attr_getguardsize at Base 4.9
+ pthread_attr_getinheritsched at Base 4.9
+ pthread_attr_getschedparam at Base 4.9
+ pthread_attr_getschedpolicy at Base 4.9
+ pthread_attr_getscope at Base 4.9
+ pthread_attr_getstack at Base 4.9
+ pthread_attr_getstacksize at Base 4.9
+ pthread_barrierattr_getpshared at Base 5
+ pthread_condattr_getclock at Base 5
+ pthread_condattr_getpshared at Base 5
+ pthread_create at Base 4.8
+ pthread_getschedparam at Base 4.9
+ pthread_mutex_lock at Base 4.9
+ pthread_mutex_unlock at Base 4.9
+ pthread_mutexattr_getprioceiling at Base 5
+ pthread_mutexattr_getprotocol at Base 5
+ pthread_mutexattr_getpshared at Base 5
+ pthread_mutexattr_getrobust at Base 5
+ pthread_mutexattr_getrobust_np at Base 5
+ pthread_mutexattr_gettype at Base 5
+ pthread_rwlockattr_getkind_np at Base 5
+ pthread_rwlockattr_getpshared at Base 5
+ pthread_setname_np at Base 4.9
+ pvalloc at Base 4.8
+ pwrite64 at Base 4.8
+ pwrite at Base 4.8
+ pwritev64 at Base 4.9
+ pwritev at Base 4.9
+ rand_r at Base 5
+ random_r at Base 4.9
+ read at Base 4.8
+ readdir64 at Base 4.9
+ readdir64_r at Base 4.9
+ readdir at Base 4.9
+ readdir_r at Base 4.9
+ readv at Base 4.9
+ realloc at Base 4.8
+ realpath at Base 4.9
+ recvmsg at Base 4.9
+ remquo at Base 4.9
+ remquof at Base 4.9
+ remquol at Base 4.9
+ scandir64 at Base 4.9
+ scandir at Base 4.9
+ scanf at Base 4.8
+ sched_getaffinity at Base 4.9
+ setgrent at Base 5
+ setitimer at Base 4.9
+ setlocale at Base 4.9
+ setpwent at Base 5
+ sigaction at Base 4.8
+ sigemptyset at Base 4.9
+ sigfillset at Base 4.9
+ siglongjmp at Base 4.8
+ signal at Base 4.8
+ sigpending at Base 4.9
+ sigprocmask at Base 4.9
+ sigtimedwait at Base 4.9
+ sigwait at Base 4.9
+ sigwaitinfo at Base 4.9
+ sincos at Base 4.9
+ sincosf at Base 4.9
+ sincosl at Base 4.9
+ snprintf at Base 5
+ sprintf at Base 5
+ sscanf at Base 4.8
+ statfs64 at Base 4.9
+ statfs at Base 4.9
+ statvfs64 at Base 4.9
+ statvfs at Base 4.9
+ strcasecmp at Base 4.8
+ strcat at Base 4.8
+ strchr at Base 4.8
+ strcmp at Base 4.8
+ strcpy at Base 4.8
+ strdup at Base 4.8
+ strerror at Base 4.9
+ strerror_r at Base 4.9
+ strlen at Base 4.8
+ strncasecmp at Base 4.8
+ strncat at Base 4.8
+ strncmp at Base 4.8
+ strncpy at Base 4.8
+ strnlen at Base 4.8
+ strptime at Base 4.9
+ strtoimax at Base 4.9
+ strtol at Base 4.8
+ strtoll at Base 4.8
+ strtoumax at Base 4.9
+ swapcontext at Base 4.8
+ sysinfo at Base 4.9
+ tcgetattr at Base 4.9
+ tempnam at Base 4.9
+ textdomain at Base 4.9
+ time at Base 4.9
+ timerfd_gettime at Base 5
+ timerfd_settime at Base 5
+ times at Base 4.9
+ tmpnam at Base 4.9
+ tmpnam_r at Base 4.9
+ tsearch at Base 5
+ valloc at Base 4.8
+ vasprintf at Base 5
+ vfprintf at Base 5
+ vfscanf at Base 4.8
+ vprintf at Base 5
+ vscanf at Base 4.8
+ vsnprintf at Base 5
+ vsprintf at Base 5
+ vsscanf at Base 4.8
+ wait3 at Base 4.9
+ wait4 at Base 4.9
+ wait at Base 4.9
+ waitid at Base 4.9
+ waitpid at Base 4.9
+ wcslen at Base 4.9
+ wcsnrtombs at Base 4.9
+ wcsrtombs at Base 4.9
+ wcstombs at Base 4.9
+ wordexp at Base 4.9
+ write at Base 4.8
+ writev at Base 4.9
+ xdr_bool at Base 5
+ xdr_bytes at Base 5
+ xdr_char at Base 5
+ xdr_double at Base 5
+ xdr_enum at Base 5
+ xdr_float at Base 5
+ xdr_hyper at Base 5
+ xdr_int16_t at Base 5
+ xdr_int32_t at Base 5
+ xdr_int64_t at Base 5
+ xdr_int8_t at Base 5
+ xdr_int at Base 5
+ xdr_long at Base 5
+ xdr_longlong_t at Base 5
+ xdr_quad_t at Base 5
+ xdr_short at Base 5
+ xdr_string at Base 5
+ xdr_u_char at Base 5
+ xdr_u_hyper at Base 5
+ xdr_u_int at Base 5
+ xdr_u_long at Base 5
+ xdr_u_longlong_t at Base 5
+ xdr_u_quad_t at Base 5
+ xdr_u_short at Base 5
+ xdr_uint16_t at Base 5
+ xdr_uint32_t at Base 5
+ xdr_uint64_t at Base 5
+ xdr_uint8_t at Base 5
+ xdrmem_create at Base 5
+ xdrstdio_create at Base 5
diff --git a/debian/libasan2.symbols b/debian/libasan2.symbols
new file mode 100644
index 0000000..fa170da
--- /dev/null
+++ b/debian/libasan2.symbols
@@ -0,0 +1,20 @@
+libasan.so.2 libasan2 #MINVER#
+#include "libasan.symbols.common"
+(arch=!arm64 !alpha !amd64 !ia64 !ppc64 !ppc64el !s390x !sparc64 !kfreebsd-amd64)#include "libasan.symbols.32"
+(arch=arm64 alpha amd64 ia64 ppc64 ppc64el s390x sparc64 kfreebsd-amd64)#include "libasan.symbols.64"
+(arch=armel armhf sparc64 x32)#include "libasan.symbols.16"
+# these are missing on some archs ...
+ (arch=!arm64 !armel !armhf !powerpc !ppc64 !ppc64el !sparc !sparc64)__interceptor_ptrace at Base 4.9
+ (arch=!arm64 !armel !armhf !powerpc !ppc64 !ppc64el !sparc !sparc64)ptrace at Base 4.9
+ (arch=armel armhf)__interceptor___aeabi_memclr4 at Base 5
+ (arch=armel armhf)__interceptor___aeabi_memclr8 at Base 5
+ (arch=armel armhf)__interceptor___aeabi_memclr at Base 5
+ (arch=armel armhf)__interceptor___aeabi_memcpy4 at Base 5
+ (arch=armel armhf)__interceptor___aeabi_memcpy8 at Base 5
+ (arch=armel armhf)__interceptor___aeabi_memcpy at Base 5
+ (arch=armel armhf)__interceptor___aeabi_memmove4 at Base 5
+ (arch=armel armhf)__interceptor___aeabi_memmove8 at Base 5
+ (arch=armel armhf)__interceptor___aeabi_memmove at Base 5
+ (arch=armel armhf)__interceptor___aeabi_memset4 at Base 5
+ (arch=armel armhf)__interceptor___aeabi_memset8 at Base 5
+ (arch=armel armhf)__interceptor___aeabi_memset at Base 5
diff --git a/debian/libatomic.symbols b/debian/libatomic.symbols
new file mode 100644
index 0000000..ac7adb0
--- /dev/null
+++ b/debian/libatomic.symbols
@@ -0,0 +1,3 @@
+libatomic.so.1 #PACKAGE# #MINVER#
+ (symver)LIBATOMIC_1.0 4.8
+ (symver)LIBATOMIC_1.1 4.9
diff --git a/debian/libcc1-0.symbols b/debian/libcc1-0.symbols
new file mode 100644
index 0000000..dfef35c
--- /dev/null
+++ b/debian/libcc1-0.symbols
@@ -0,0 +1,58 @@
+libcc1.so.0 libcc1-0 #MINVER#
+ (optional=abi_c++98)_ZNSs12_S_constructIPcEES0_T_S1_RKSaIcESt20forward_iterator_tag at Base 5
+ (optional=abi_c++98)_ZNSt6vectorISsSaISsEE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPSsS1_EERKSs at Base 5
+ (optional=abi_c++11)_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS5_S7_EERKS5_ at Base 5
+ _xexit_cleanup at Base 5
+ concat at Base 5
+ concat_copy2 at Base 5
+ concat_copy at Base 5
+ concat_length at Base 5
+ gcc_c_fe_context at Base 5
+ htab_clear_slot at Base 5
+ htab_collisions at Base 5
+ htab_create at Base 5
+ htab_create_alloc at Base 5
+ htab_create_alloc_ex at Base 5
+ htab_create_typed_alloc at Base 5
+ htab_delete at Base 5
+ htab_elements at Base 5
+ htab_empty at Base 5
+ htab_eq_pointer at Base 5
+ htab_find at Base 5
+ htab_find_slot at Base 5
+ htab_find_slot_with_hash at Base 5
+ htab_find_with_hash at Base 5
+ htab_hash_pointer at Base 5
+ htab_hash_string at Base 5
+ htab_remove_elt at Base 5
+ htab_remove_elt_with_hash at Base 5
+ htab_set_functions_ex at Base 5
+ htab_size at Base 5
+ htab_traverse at Base 5
+ htab_traverse_noresize at Base 5
+ htab_try_create at Base 5
+ iterative_hash at Base 5
+ libiberty_concat_ptr at Base 5
+ reconcat at Base 5
+ xcalloc at Base 5
+ xexit at Base 5
+ xmalloc at Base 5
+ xmalloc_failed at Base 5
+ xmalloc_set_program_name at Base 5
+ xre_comp at Base 5
+ xre_compile_fastmap at Base 5
+ xre_compile_pattern at Base 5
+ xre_exec at Base 5
+ xre_match at Base 5
+ xre_match_2 at Base 5
+ xre_max_failures at Base 5
+ xre_search at Base 5
+ xre_search_2 at Base 5
+ xre_set_registers at Base 5
+ xre_set_syntax at Base 5
+ xre_syntax_options at Base 5
+ xrealloc at Base 5
+ xregcomp at Base 5
+ xregerror at Base 5
+ xregexec at Base 5
+ xregfree at Base 5
diff --git a/debian/libcilkrts.symbols b/debian/libcilkrts.symbols
new file mode 100644
index 0000000..2936e2b
--- /dev/null
+++ b/debian/libcilkrts.symbols
@@ -0,0 +1,4 @@
+libcilkrts.so.5 #PACKAGE# #MINVER#
+ (symver)CILKABI0 4.9
+ (symver)CILKABI1 4.9
+ (symver)CILKLIB1.02 4.9
diff --git a/debian/libgcc.symbols b/debian/libgcc.symbols
new file mode 100644
index 0000000..e035a28
--- /dev/null
+++ b/debian/libgcc.symbols
@@ -0,0 +1,20 @@
+libgcc_s.so.1 #PACKAGE# #MINVER#
+ (symver)GCC_3.0 1:3.0
+ (symver)GCC_3.3 1:3.3
+ (symver)GCC_3.3.1 1:3.3.1
+ (symver|optional)GCC_3.3.2 1:3.3.2
+ (symver|optional)GCC_3.3.4 1:3.3.4
+ (symver)GCC_3.4 1:3.4
+ (symver)GCC_3.4.2 1:3.4.2
+ (symver|optional)GCC_3.4.4 1:3.4.4
+ (symver|arch=armel armhf|ignore-blacklist)GCC_3.5 1:3.5
+ (symver)GCC_4.0.0 1:4.0
+ (symver|optional)GCC_4.1.0 1:4.1
+ (symver)GCC_4.2.0 1:4.2
+ (symver)GCC_4.3.0 1:4.3
+ (symver|optional)GCC_4.4.0 1:4.4
+ (symver|optional)GCC_4.5.0 1:4.5
+ (symver|optional)GCC_4.6.0 1:4.6
+ (symver|optional)GCC_4.7.0 1:4.7
+ (symver|optional)GCC_4.8.0 1:4.8
+ (symver|optional)GLIBC_2.0 1:4.2
diff --git a/debian/libgcc.symbols.aeabi b/debian/libgcc.symbols.aeabi
new file mode 100644
index 0000000..64e9af3
--- /dev/null
+++ b/debian/libgcc.symbols.aeabi
@@ -0,0 +1,69 @@
+ __aeabi_cdcmpeq at GCC_3.5 1:3.5
+ __aeabi_cdcmple at GCC_3.5 1:3.5
+ __aeabi_cdrcmple at GCC_3.5 1:3.5
+ __aeabi_cfcmpeq at GCC_3.5 1:3.5
+ __aeabi_cfcmple at GCC_3.5 1:3.5
+ __aeabi_cfrcmple at GCC_3.5 1:3.5
+ __aeabi_d2f at GCC_3.5 1:3.5
+ __aeabi_d2iz at GCC_3.5 1:3.5
+ __aeabi_d2lz at GCC_3.5 1:3.5
+ __aeabi_d2uiz at GCC_3.5 1:3.5
+ __aeabi_d2ulz at GCC_3.5 1:3.5
+ __aeabi_dadd at GCC_3.5 1:3.5
+ __aeabi_dcmpeq at GCC_3.5 1:3.5
+ __aeabi_dcmpge at GCC_3.5 1:3.5
+ __aeabi_dcmpgt at GCC_3.5 1:3.5
+ __aeabi_dcmple at GCC_3.5 1:3.5
+ __aeabi_dcmplt at GCC_3.5 1:3.5
+ __aeabi_dcmpun at GCC_3.5 1:3.5
+ __aeabi_ddiv at GCC_3.5 1:3.5
+ __aeabi_dmul at GCC_3.5 1:3.5
+ __aeabi_dneg at GCC_3.5 1:3.5
+ __aeabi_drsub at GCC_3.5 1:3.5
+ __aeabi_dsub at GCC_3.5 1:3.5
+ __aeabi_f2d at GCC_3.5 1:3.5
+ __aeabi_f2iz at GCC_3.5 1:3.5
+ __aeabi_f2lz at GCC_3.5 1:3.5
+ __aeabi_f2uiz at GCC_3.5 1:3.5
+ __aeabi_f2ulz at GCC_3.5 1:3.5
+ __aeabi_fadd at GCC_3.5 1:3.5
+ __aeabi_fcmpeq at GCC_3.5 1:3.5
+ __aeabi_fcmpge at GCC_3.5 1:3.5
+ __aeabi_fcmpgt at GCC_3.5 1:3.5
+ __aeabi_fcmple at GCC_3.5 1:3.5
+ __aeabi_fcmplt at GCC_3.5 1:3.5
+ __aeabi_fcmpun at GCC_3.5 1:3.5
+ __aeabi_fdiv at GCC_3.5 1:3.5
+ __aeabi_fmul at GCC_3.5 1:3.5
+ __aeabi_fneg at GCC_3.5 1:3.5
+ __aeabi_frsub at GCC_3.5 1:3.5
+ __aeabi_fsub at GCC_3.5 1:3.5
+ __aeabi_i2d at GCC_3.5 1:3.5
+ __aeabi_i2f at GCC_3.5 1:3.5
+ __aeabi_idiv at GCC_3.5 1:3.5
+ __aeabi_idiv0 at GCC_3.5 1:4.5.0
+ __aeabi_idivmod at GCC_3.5 1:3.5
+ __aeabi_l2d at GCC_3.5 1:3.5
+ __aeabi_l2f at GCC_3.5 1:3.5
+ __aeabi_lasr at GCC_3.5 1:3.5
+ __aeabi_lcmp at GCC_3.5 1:3.5
+ __aeabi_ldivmod at GCC_3.5 1:3.5
+ __aeabi_ldiv0 at GCC_3.5 1:4.5.0
+ __aeabi_llsl at GCC_3.5 1:3.5
+ __aeabi_llsr at GCC_3.5 1:3.5
+ __aeabi_lmul at GCC_3.5 1:3.5
+ __aeabi_ui2d at GCC_3.5 1:3.5
+ __aeabi_ui2f at GCC_3.5 1:3.5
+ __aeabi_uidiv at GCC_3.5 1:3.5
+ __aeabi_uidivmod at GCC_3.5 1:3.5
+ __aeabi_ul2d at GCC_3.5 1:3.5
+ __aeabi_ul2f at GCC_3.5 1:3.5
+ __aeabi_ulcmp at GCC_3.5 1:3.5
+ __aeabi_uldivmod at GCC_3.5 1:3.5
+ __aeabi_unwind_cpp_pr0 at GCC_3.5 1:3.5
+ __aeabi_unwind_cpp_pr1 at GCC_3.5 1:3.5
+ __aeabi_unwind_cpp_pr2 at GCC_3.5 1:3.5
+ __aeabi_uread4 at GCC_3.5 1:3.5
+ __aeabi_uread8 at GCC_3.5 1:3.5
+ __aeabi_uwrite4 at GCC_3.5 1:3.5
+ __aeabi_uwrite8 at GCC_3.5 1:3.5
diff --git a/debian/libgcc2.symbols.m68k b/debian/libgcc2.symbols.m68k
new file mode 100644
index 0000000..a49f0b3
--- /dev/null
+++ b/debian/libgcc2.symbols.m68k
@@ -0,0 +1,162 @@
+libgcc_s.so.2 libgcc2 #MINVER#
+ GCC_3.0 at GCC_3.0 4.2.1
+ GCC_3.3.1 at GCC_3.3.1 4.2.1
+ GCC_3.3.4 at GCC_3.3.4 4.4.5
+ GCC_3.3 at GCC_3.3 4.2.1
+ GCC_3.4.2 at GCC_3.4.2 4.2.1
+ GCC_3.4 at GCC_3.4 4.2.1
+ GCC_4.0.0 at GCC_4.0.0 4.2.1
+ GCC_4.2.0 at GCC_4.2.0 4.2.1
+ GCC_4.3.0 at GCC_4.3.0 4.3.0
+ GCC_4.5.0 at GCC_4.5.0 4.5
+ GCC_4.7.0 at GCC_4.7.0 4.7
+ GLIBC_2.0 at GLIBC_2.0 4.2.1
+ _Unwind_Backtrace at GCC_3.3 4.2.1
+ _Unwind_DeleteException at GCC_3.0 4.2.1
+ _Unwind_FindEnclosingFunction at GCC_3.3 4.2.1
+ _Unwind_Find_FDE at GCC_3.0 4.2.1
+ _Unwind_ForcedUnwind at GCC_3.0 4.2.1
+ _Unwind_GetCFA at GCC_3.3 4.2.1
+ _Unwind_GetDataRelBase at GCC_3.0 4.2.1
+ _Unwind_GetGR at GCC_3.0 4.2.1
+ _Unwind_GetIP at GCC_3.0 4.2.1
+ _Unwind_GetIPInfo at GCC_4.2.0 4.2.1
+ _Unwind_GetLanguageSpecificData at GCC_3.0 4.2.1
+ _Unwind_GetRegionStart at GCC_3.0 4.2.1
+ _Unwind_GetTextRelBase at GCC_3.0 4.2.1
+ _Unwind_RaiseException at GCC_3.0 4.2.1
+ _Unwind_Resume at GCC_3.0 4.2.1
+ _Unwind_Resume_or_Rethrow at GCC_3.3 4.2.1
+ _Unwind_SetGR at GCC_3.0 4.2.1
+ _Unwind_SetIP at GCC_3.0 4.2.1
+ __absvdi2 at GCC_3.0 4.2.1
+ __absvsi2 at GCC_3.0 4.2.1
+ __adddf3 at GCC_3.0 4.4.5
+ __addsf3 at GCC_3.0 4.4.5
+ __addvdi3 at GCC_3.0 4.2.1
+ __addvsi3 at GCC_3.0 4.2.1
+ __addxf3 at GCC_3.0 4.4.5
+ __ashldi3 at GCC_3.0 4.2.1
+ __ashrdi3 at GCC_3.0 4.2.1
+ __bswapdi2 at GCC_4.3.0 4.3.0
+ __bswapsi2 at GCC_4.3.0 4.3.0
+ __clear_cache at GCC_3.0 4.2.1
+  __clrsbdi2 at GCC_4.7.0 4.7
+  __clrsbsi2 at GCC_4.7.0 4.7
+ __clzdi2 at GCC_3.4 4.2.1
+ __clzsi2 at GCC_3.4 4.2.1
+ __cmpdi2 at GCC_3.0 4.2.1
+ __ctzdi2 at GCC_3.4 4.2.1
+ __ctzsi2 at GCC_3.4 4.2.1
+ __deregister_frame at GLIBC_2.0 4.2.1
+ __deregister_frame_info at GLIBC_2.0 4.2.1
+ __deregister_frame_info_bases at GCC_3.0 4.2.1
+ __divdc3 at GCC_4.0.0 4.2.1
+ __divdf3 at GCC_3.0 4.4.5
+ __divdi3 at GLIBC_2.0 4.2.1
+ __divsc3 at GCC_4.0.0 4.2.1
+ __divsf3 at GCC_3.0 4.4.5
+ __divsi3 at GCC_3.0 4.4.5
+ __divxc3 at GCC_4.0.0 4.2.1
+ __divxf3 at GCC_3.0 4.4.5
+ __emutls_get_address at GCC_4.3.0 4.3.0
+ __emutls_register_common at GCC_4.3.0 4.3.0
+ __enable_execute_stack at GCC_3.4.2 4.2.1
+ __eqdf2 at GCC_3.0 4.4.5
+ __eqsf2 at GCC_3.0 4.4.5
+ __eqxf2 at GCC_3.0 4.4.5
+ __extenddfxf2 at GCC_3.0 4.4.5
+ __extendsfdf2 at GCC_3.0 4.4.5
+ __extendsfxf2 at GCC_3.0 4.4.5
+ __ffsdi2 at GCC_3.0 4.2.1
+ __ffssi2 at GCC_4.3.0 4.3.0
+ __fixdfdi at GCC_3.0 4.2.1
+ __fixdfsi at GCC_3.0 4.4.5
+ __fixsfdi at GCC_3.0 4.2.1
+ __fixsfsi at GCC_3.0 4.4.5
+ __fixunsdfdi at GCC_3.0 4.2.1
+ __fixunsdfsi at GCC_3.0 4.2.1
+ __fixunssfdi at GCC_3.0 4.2.1
+ __fixunssfsi at GCC_3.0 4.2.1
+ __fixunsxfdi at GCC_3.0 4.2.1
+ __fixunsxfsi at GCC_3.0 4.2.1
+ __fixxfdi at GCC_3.0 4.2.1
+ __fixxfsi at GCC_3.0 4.4.5
+ __floatdidf at GCC_3.0 4.2.1
+ __floatdisf at GCC_3.0 4.2.1
+ __floatdixf at GCC_3.0 4.2.1
+ __floatsidf at GCC_3.0 4.4.5
+ __floatsisf at GCC_3.0 4.4.5
+ __floatsixf at GCC_3.0 4.4.5
+ __floatundidf at GCC_4.2.0 4.2.1
+ __floatundisf at GCC_4.2.0 4.2.1
+ __floatundixf at GCC_4.2.0 4.2.1
+ __floatunsidf at GCC_4.2.0 4.4.5
+ __floatunsisf at GCC_4.2.0 4.4.5
+ __floatunsixf at GCC_4.2.0 4.4.5
+ __frame_state_for at GLIBC_2.0 4.2.1
+ __gcc_personality_v0 at GCC_3.3.1 4.2.1
+ __gedf2 at GCC_3.0 4.4.5
+ __gesf2 at GCC_3.0 4.4.5
+ __gexf2 at GCC_3.0 4.4.5
+ __gtdf2 at GCC_3.0 4.4.5
+ __gtsf2 at GCC_3.0 4.4.5
+ __gtxf2 at GCC_3.0 4.4.5
+ __ledf2 at GCC_3.0 4.4.5
+ __lesf2 at GCC_3.0 4.4.5
+ __lexf2 at GCC_3.0 4.4.5
+ __lshrdi3 at GCC_3.0 4.2.1
+ __ltdf2 at GCC_3.0 4.4.5
+ __ltsf2 at GCC_3.0 4.4.5
+ __ltxf2 at GCC_3.0 4.4.5
+ __moddi3 at GLIBC_2.0 4.2.1
+ __modsi3 at GCC_3.0 4.4.5
+ __muldc3 at GCC_4.0.0 4.2.1
+ __muldf3 at GCC_3.0 4.4.5
+ __muldi3 at GCC_3.0 4.2.1
+ __mulsc3 at GCC_4.0.0 4.2.1
+ __mulsf3 at GCC_3.0 4.4.5
+ __mulsi3 at GCC_3.0 4.4.5
+ __mulvdi3 at GCC_3.0 4.2.1
+ __mulvsi3 at GCC_3.0 4.2.1
+ __mulxc3 at GCC_4.0.0 4.2.1
+ __mulxf3 at GCC_3.0 4.4.5
+ __nedf2 at GCC_3.0 4.4.5
+ __negdf2 at GCC_3.0 4.4.5
+ __negdi2 at GCC_3.0 4.2.1
+ __negsf2 at GCC_3.0 4.4.5
+ __negvdi2 at GCC_3.0 4.2.1
+ __negvsi2 at GCC_3.0 4.2.1
+ __negxf2 at GCC_3.0 4.4.5
+ __nesf2 at GCC_3.0 4.4.5
+ __nexf2 at GCC_3.0 4.4.5
+ __paritydi2 at GCC_3.4 4.2.1
+ __paritysi2 at GCC_3.4 4.2.1
+ __popcountdi2 at GCC_3.4 4.2.1
+ __popcountsi2 at GCC_3.4 4.2.1
+ __powidf2 at GCC_4.0.0 4.2.1
+ __powisf2 at GCC_4.0.0 4.2.1
+ __powixf2 at GCC_4.0.0 4.2.1
+ __register_frame at GLIBC_2.0 4.2.1
+ __register_frame_info at GLIBC_2.0 4.2.1
+ __register_frame_info_bases at GCC_3.0 4.2.1
+ __register_frame_info_table at GLIBC_2.0 4.2.1
+ __register_frame_info_table_bases at GCC_3.0 4.2.1
+ __register_frame_table at GLIBC_2.0 4.2.1
+ __subdf3 at GCC_3.0 4.4.5
+ __subsf3 at GCC_3.0 4.4.5
+ __subvdi3 at GCC_3.0 4.2.1
+ __subvsi3 at GCC_3.0 4.2.1
+ __subxf3 at GCC_3.0 4.4.5
+ __truncdfsf2 at GCC_3.0 4.4.5
+ __truncxfdf2 at GCC_3.0 4.4.5
+ __truncxfsf2 at GCC_3.0 4.4.5
+ __ucmpdi2 at GCC_3.0 4.2.1
+ __udivdi3 at GLIBC_2.0 4.2.1
+ __udivmoddi4 at GCC_3.0 4.2.1
+ __udivsi3 at GCC_3.0 4.4.5
+ __umoddi3 at GLIBC_2.0 4.2.1
+ __umodsi3 at GCC_3.0 4.4.5
+ __unorddf2 at GCC_3.3.4 4.4.5
+ __unordsf2 at GCC_3.3.4 4.4.5
+ __unordxf2 at GCC_4.5.0 4.7
diff --git a/debian/libgcc4.symbols.hppa b/debian/libgcc4.symbols.hppa
new file mode 100644
index 0000000..0f6863d
--- /dev/null
+++ b/debian/libgcc4.symbols.hppa
@@ -0,0 +1,96 @@
+libgcc_s.so.4 libgcc4 #MINVER#
+ GCC_3.0 at GCC_3.0 4.1.1
+ GCC_3.3.1 at GCC_3.3.1 4.1.1
+ GCC_3.3 at GCC_3.3 4.1.1
+ GCC_3.4.2 at GCC_3.4.2 4.1.1
+ GCC_3.4 at GCC_3.4 4.1.1
+ GCC_4.0.0 at GCC_4.0.0 4.1.1
+ GCC_4.2.0 at GCC_4.2.0 4.1.1
+ GCC_4.3.0 at GCC_4.3.0 4.3
+ GCC_4.7.0 at GCC_4.7.0 1:4.7
+ GLIBC_2.0 at GLIBC_2.0 4.1.1
+ _Unwind_Backtrace at GCC_3.3 4.1.1
+ _Unwind_DeleteException at GCC_3.0 4.1.1
+ _Unwind_FindEnclosingFunction at GCC_3.3 4.1.1
+ _Unwind_Find_FDE at GCC_3.0 4.1.1
+ _Unwind_ForcedUnwind at GCC_3.0 4.1.1
+ _Unwind_GetCFA at GCC_3.3 4.1.1
+ _Unwind_GetDataRelBase at GCC_3.0 4.1.1
+ _Unwind_GetGR at GCC_3.0 4.1.1
+ _Unwind_GetIP at GCC_3.0 4.1.1
+ _Unwind_GetIPInfo at GCC_4.2.0 4.1.1
+ _Unwind_GetLanguageSpecificData at GCC_3.0 4.1.1
+ _Unwind_GetRegionStart at GCC_3.0 4.1.1
+ _Unwind_GetTextRelBase at GCC_3.0 4.1.1
+ _Unwind_RaiseException at GCC_3.0 4.1.1
+ _Unwind_Resume at GCC_3.0 4.1.1
+ _Unwind_Resume_or_Rethrow at GCC_3.3 4.1.1
+ _Unwind_SetGR at GCC_3.0 4.1.1
+ _Unwind_SetIP at GCC_3.0 4.1.1
+ __absvdi2 at GCC_3.0 4.1.1
+ __absvsi2 at GCC_3.0 4.1.1
+ __addvdi3 at GCC_3.0 4.1.1
+ __addvsi3 at GCC_3.0 4.1.1
+ __ashldi3 at GCC_3.0 4.1.1
+ __ashrdi3 at GCC_3.0 4.1.1
+ __bswapdi2 at GCC_4.3.0 4.3
+ __bswapsi2 at GCC_4.3.0 4.3
+ __clear_cache at GCC_3.0 4.1.1
+ __clrsbdi2 at GCC_4.7.0 4.7
+ __clrsbsi2 at GCC_4.7.0 4.7
+ __clzdi2 at GCC_3.4 4.1.1
+ __clzsi2 at GCC_3.4 4.1.1
+ __cmpdi2 at GCC_3.0 4.1.1
+ __ctzdi2 at GCC_3.4 4.1.1
+ __ctzsi2 at GCC_3.4 4.1.1
+ __deregister_frame at GLIBC_2.0 4.1.1
+ __deregister_frame_info at GLIBC_2.0 4.1.1
+ __deregister_frame_info_bases at GCC_3.0 4.1.1
+ __divdc3 at GCC_4.0.0 4.1.1
+ __divdi3 at GLIBC_2.0 4.1.1
+ __divsc3 at GCC_4.0.0 4.1.1
+ __emutls_get_address at GCC_4.3.0 4.3
+ __emutls_register_common at GCC_4.3.0 4.3
+ __enable_execute_stack at GCC_3.4.2 4.1.1
+ __ffsdi2 at GCC_3.0 4.1.1
+ __ffssi2 at GCC_4.3.0 4.3
+ __fixdfdi at GCC_3.0 4.1.1
+ __fixsfdi at GCC_3.0 4.1.1
+ __fixunsdfdi at GCC_3.0 4.1.1
+ __fixunsdfsi at GCC_3.0 4.1.1
+ __fixunssfdi at GCC_3.0 4.1.1
+ __fixunssfsi at GCC_3.0 4.1.1
+ __floatdidf at GCC_3.0 4.1.1
+ __floatdisf at GCC_3.0 4.1.1
+ __floatundidf at GCC_4.2.0 4.2.1
+ __floatundisf at GCC_4.2.0 4.2.1
+ __frame_state_for at GLIBC_2.0 4.1.1
+ __gcc_personality_v0 at GCC_3.3.1 4.1.1
+ __lshrdi3 at GCC_3.0 4.1.1
+ __moddi3 at GLIBC_2.0 4.1.1
+ __muldc3 at GCC_4.0.0 4.1.1
+ __muldi3 at GCC_3.0 4.1.1
+ __mulsc3 at GCC_4.0.0 4.1.1
+ __mulvdi3 at GCC_3.0 4.1.1
+ __mulvsi3 at GCC_3.0 4.1.1
+ __negdi2 at GCC_3.0 4.1.1
+ __negvdi2 at GCC_3.0 4.1.1
+ __negvsi2 at GCC_3.0 4.1.1
+ __paritydi2 at GCC_3.4 4.1.1
+ __paritysi2 at GCC_3.4 4.1.1
+ __popcountdi2 at GCC_3.4 4.1.1
+ __popcountsi2 at GCC_3.4 4.1.1
+ __powidf2 at GCC_4.0.0 4.1.1
+ __powisf2 at GCC_4.0.0 4.1.1
+ __register_frame at GLIBC_2.0 4.1.1
+ __register_frame_info at GLIBC_2.0 4.1.1
+ __register_frame_info_bases at GCC_3.0 4.1.1
+ __register_frame_info_table at GLIBC_2.0 4.1.1
+ __register_frame_info_table_bases at GCC_3.0 4.1.1
+ __register_frame_table at GLIBC_2.0 4.1.1
+ __subvdi3 at GCC_3.0 4.1.1
+ __subvsi3 at GCC_3.0 4.1.1
+ __ucmpdi2 at GCC_3.0 4.1.1
+ __udivdi3 at GLIBC_2.0 4.1.1
+ __udivmoddi4 at GCC_3.0 4.1.1
+ __umoddi3 at GLIBC_2.0 4.1.1
diff --git a/debian/libgccLC.postinst b/debian/libgccLC.postinst
new file mode 100644
index 0000000..36abb94
--- /dev/null
+++ b/debian/libgccLC.postinst
@@ -0,0 +1,12 @@
+#! /bin/sh -e
+
+case "$1" in
+    configure)
+	docdir=/usr/share/doc/libgcc at LC@
+	if [ -d $docdir ] && [ ! -h $docdir ]; then
+	    rm -rf $docdir
+	    ln -s gcc- at BV@-base $docdir
+	fi
+esac
+
+#DEBHELPER#
diff --git a/debian/libgccjit0.symbols b/debian/libgccjit0.symbols
new file mode 100644
index 0000000..d5e1ac1
--- /dev/null
+++ b/debian/libgccjit0.symbols
@@ -0,0 +1,5 @@
+libgccjit.so.0 #PACKAGE# #MINVER#
+ (symver)LIBGCCJIT_ABI_0 5.1
+ (symver)LIBGCCJIT_ABI_1 5.1
+ (symver)LIBGCCJIT_ABI_2 5.1
+ (symver)LIBGCCJIT_ABI_3 5.1
diff --git a/debian/libgcj-common.postinst b/debian/libgcj-common.postinst
new file mode 100644
index 0000000..de6d589
--- /dev/null
+++ b/debian/libgcj-common.postinst
@@ -0,0 +1,12 @@
+#! /bin/sh -e
+
+case "$1" in
+    configure)
+	docdir=/usr/share/doc/libgcj-common
+	if [ -d $docdir ] && [ ! -h $docdir ]; then
+	    rm -rf $docdir
+	    ln -s gcj- at BV@-base $docdir
+	fi
+esac
+
+#DEBHELPER#
diff --git a/debian/libgcj-common.preinst b/debian/libgcj-common.preinst
new file mode 100644
index 0000000..510299f
--- /dev/null
+++ b/debian/libgcj-common.preinst
@@ -0,0 +1,12 @@
+#! /bin/sh -e
+
+case "$1" in
+    upgrade|install)
+	if [ -n "$2" ] && [ -h /usr/share/doc/libgcj-common ] \
+	   && dpkg --compare-versions "$2" lt 1:4.0.2-10
+	then
+	    rm -f /usr/share/doc/libgcj-common
+	fi
+esac
+
+#DEBHELPER#
diff --git a/debian/libgcj-doc.doc-base b/debian/libgcj-doc.doc-base
new file mode 100644
index 0000000..188795b
--- /dev/null
+++ b/debian/libgcj-doc.doc-base
@@ -0,0 +1,10 @@
+Document: libgcj-doc
+Title: The GNU LibGCJ Classpath library
+Author: Various
+Abstract: Autogenerated documentation describing the libgcj
+ library (GCC 5), based on the classpath library.
+Section: Programming/Java
+
+Format: html
+Index: /usr/share/doc/gcc-5-base/api/index.html
+Files: /usr/share/doc/gcc-5-base/api/*.html
diff --git a/debian/libgcjGCJ-awt.overrides b/debian/libgcjGCJ-awt.overrides
new file mode 100644
index 0000000..c93ae10
--- /dev/null
+++ b/debian/libgcjGCJ-awt.overrides
@@ -0,0 +1,2 @@
+# pick up the exact version, in case another gcj version is installed
+libgcj at GCJ@-awt binary: binary-or-shlib-defines-rpath
diff --git a/debian/libgcjGCJ-dev.overrides b/debian/libgcjGCJ-dev.overrides
new file mode 100644
index 0000000..e1a110d
--- /dev/null
+++ b/debian/libgcjGCJ-dev.overrides
@@ -0,0 +1 @@
+libgcj at GCJ@-dev binary: library-not-linked-against-libc
diff --git a/debian/libgcjGCJ.overrides b/debian/libgcjGCJ.overrides
new file mode 100644
index 0000000..b9600ae
--- /dev/null
+++ b/debian/libgcjGCJ.overrides
@@ -0,0 +1,9 @@
+# pick up the exact version, in case another gcj version is installed
+libgcj at GCJ@ binary: binary-or-shlib-defines-rpath
+
+# intended
+libgcj at GCJ@ binary: unused-shlib-entry-in-control-file
+libgcj at GCJ@ binary: shlibs-declares-dependency-on-other-package
+
+# keep patched ltdl copy
+libgcj at GCJ@ binary: embedded-library
diff --git a/debian/libgcjLGCJ.postinst b/debian/libgcjLGCJ.postinst
new file mode 100644
index 0000000..cbde44c
--- /dev/null
+++ b/debian/libgcjLGCJ.postinst
@@ -0,0 +1,12 @@
+#! /bin/sh -e
+
+case "$1" in
+    configure)
+	docdir=/usr/share/doc/libgcj at GCJ@
+	if [ -d $docdir ] && [ ! -h $docdir ]; then
+	  rm -rf /usr/share/doc/libgcj at GCJ@
+	  ln -s gcj- at BV@-base /usr/share/doc/libgcj at GCJ@
+	fi
+esac
+
+#DEBHELPER#
diff --git a/debian/libgcjLGCJ.postrm b/debian/libgcjLGCJ.postrm
new file mode 100644
index 0000000..2de6718
--- /dev/null
+++ b/debian/libgcjLGCJ.postrm
@@ -0,0 +1,12 @@
+#! /bin/sh -e
+
+case "$1" in
+    remove|purge)
+        # only purge if no other library is installed.
+        if [ -z "$(ls /usr/lib/libgcj.so. at GCJ@* 2>/dev/null)" ]; then
+	    rm -f /var/lib/gcj- at BV@/classmap.db
+	    rmdir --ignore-fail-on-non-empty /var/lib/gcj- at BV@ 2>/dev/null || true
+	fi
+esac
+
+#DEBHELPER#
diff --git a/debian/libgfortran.symbols b/debian/libgfortran.symbols
new file mode 100644
index 0000000..f89320f
--- /dev/null
+++ b/debian/libgfortran.symbols
@@ -0,0 +1,11 @@
+libgfortran.so.3 #PACKAGE# #MINVER#
+ (symver)F2C_1.0 4.3
+ (symver)GFORTRAN_C99_1.0 4.3
+ (symver)GFORTRAN_C99_1.1 4.5
+ (symver)GFORTRAN_1.0 4.3
+ (symver)GFORTRAN_1.1 4.4
+ (symver)GFORTRAN_1.2 4.5
+ (symver)GFORTRAN_1.3 4.6
+ (symver)GFORTRAN_1.4 4.6
+ (symver)GFORTRAN_1.5 4.8
+ (symver)GFORTRAN_1.6 5
diff --git a/debian/libgnat-BV.overrides b/debian/libgnat-BV.overrides
new file mode 100644
index 0000000..8038bac
--- /dev/null
+++ b/debian/libgnat-BV.overrides
@@ -0,0 +1 @@
+libgnat- at BV@ binary: package-name-doesnt-match-sonames
diff --git a/debian/libgnatprjBV.overrides b/debian/libgnatprjBV.overrides
new file mode 100644
index 0000000..20b359e
--- /dev/null
+++ b/debian/libgnatprjBV.overrides
@@ -0,0 +1 @@
+libgnatprj at BV@ binary: missing-dependency-on-libc
diff --git a/debian/libgnatvsnBV.overrides b/debian/libgnatvsnBV.overrides
new file mode 100644
index 0000000..d1bd4d3
--- /dev/null
+++ b/debian/libgnatvsnBV.overrides
@@ -0,0 +1 @@
+libgnatvsn at BV@ binary: missing-dependency-on-libc
diff --git a/debian/libgomp.symbols b/debian/libgomp.symbols
new file mode 100644
index 0000000..75cd2c3
--- /dev/null
+++ b/debian/libgomp.symbols
@@ -0,0 +1,14 @@
+libgomp.so.1 #PACKAGE# #MINVER#
+ (symver)GOACC_2.0 5
+ (symver)GOMP_1.0 4.2.1
+ (symver)GOMP_2.0 4.4
+ (symver)GOMP_3.0 4.7
+ (symver)GOMP_4.0 4.9
+ (symver)GOMP_4.0.1 5
+ (symver)GOMP_PLUGIN_1.0 5
+ (symver)OACC_2.0 5
+ (symver)OMP_1.0 4.2.1
+ (symver)OMP_2.0 4.2.1
+ (symver)OMP_3.0 4.4
+ (symver)OMP_3.1 4.7
+ (symver)OMP_4.0 4.9
diff --git a/debian/libitm.symbols b/debian/libitm.symbols
new file mode 100644
index 0000000..b5bd76c
--- /dev/null
+++ b/debian/libitm.symbols
@@ -0,0 +1,2 @@
+libitm.so.1 #PACKAGE# #MINVER#
+ (symver)LIBITM_1.0 4.7
diff --git a/debian/liblsan0.symbols b/debian/liblsan0.symbols
new file mode 100644
index 0000000..0cc9d5a
--- /dev/null
+++ b/debian/liblsan0.symbols
@@ -0,0 +1,105 @@
+liblsan.so.0 liblsan0 #MINVER#
+ _ZN11__sanitizer11CheckFailedEPKciS1_yy at Base 4.9
+ _ZN11__sanitizer7OnPrintEPKc at Base 4.9
+ _ZdaPv at Base 4.9
+ _ZdaPvRKSt9nothrow_t at Base 4.9
+ _ZdlPv at Base 4.9
+ _ZdlPvRKSt9nothrow_t at Base 4.9
+ _Znam at Base 4.9
+ _ZnamRKSt9nothrow_t at Base 4.9
+ _Znwm at Base 4.9
+ _ZnwmRKSt9nothrow_t at Base 4.9
+ __asan_backtrace_alloc at Base 4.9
+ __asan_backtrace_close at Base 4.9
+ __asan_backtrace_create_state at Base 4.9
+ __asan_backtrace_dwarf_add at Base 4.9
+ __asan_backtrace_free at Base 4.9
+ __asan_backtrace_get_view at Base 4.9
+ __asan_backtrace_initialize at Base 4.9
+ __asan_backtrace_open at Base 4.9
+ __asan_backtrace_pcinfo at Base 4.9
+ __asan_backtrace_qsort at Base 4.9
+ __asan_backtrace_release_view at Base 4.9
+ __asan_backtrace_syminfo at Base 4.9
+ __asan_backtrace_vector_finish at Base 4.9
+ __asan_backtrace_vector_grow at Base 4.9
+ __asan_backtrace_vector_release at Base 4.9
+ __asan_cplus_demangle_builtin_types at Base 4.9
+ __asan_cplus_demangle_fill_ctor at Base 4.9
+ __asan_cplus_demangle_fill_dtor at Base 4.9
+ __asan_cplus_demangle_fill_extended_operator at Base 4.9
+ __asan_cplus_demangle_fill_name at Base 4.9
+ __asan_cplus_demangle_init_info at Base 4.9
+ __asan_cplus_demangle_mangled_name at Base 4.9
+ __asan_cplus_demangle_operators at Base 4.9
+ __asan_cplus_demangle_print at Base 4.9
+ __asan_cplus_demangle_print_callback at Base 4.9
+ __asan_cplus_demangle_type at Base 4.9
+ __asan_cplus_demangle_v3 at Base 4.9
+ __asan_cplus_demangle_v3_callback at Base 4.9
+ __asan_internal_memcmp at Base 4.9
+ __asan_internal_memcpy at Base 4.9
+ __asan_internal_memset at Base 4.9
+ __asan_internal_strcmp at Base 4.9
+ __asan_internal_strlen at Base 4.9
+ __asan_internal_strncmp at Base 4.9
+ __asan_internal_strnlen at Base 4.9
+ __asan_is_gnu_v3_mangled_ctor at Base 4.9
+ __asan_is_gnu_v3_mangled_dtor at Base 4.9
+ __asan_java_demangle_v3 at Base 4.9
+ __asan_java_demangle_v3_callback at Base 4.9
+ __interceptor___libc_memalign at Base 4.9
+ __interceptor_aligned_alloc at Base 5
+ __interceptor_calloc at Base 4.9
+ __interceptor_cfree at Base 4.9
+ __interceptor_free at Base 4.9
+ __interceptor_mallinfo at Base 4.9
+ __interceptor_malloc at Base 4.9
+ __interceptor_malloc_usable_size at Base 4.9
+ __interceptor_mallopt at Base 4.9
+ __interceptor_memalign at Base 4.9
+ __interceptor_posix_memalign at Base 4.9
+ __interceptor_pthread_create at Base 4.9
+ __interceptor_pthread_join at Base 4.9
+ __interceptor_pvalloc at Base 4.9
+ __interceptor_realloc at Base 4.9
+ __interceptor_valloc at Base 4.9
+ __libc_memalign at Base 4.9
+ __lsan_disable at Base 4.9
+ __lsan_do_leak_check at Base 4.9
+ __lsan_enable at Base 4.9
+ __lsan_ignore_object at Base 4.9
+ __lsan_register_root_region at Base 5
+ __lsan_unregister_root_region at Base 5
+ __sanitizer_cov at Base 4.9
+ __sanitizer_cov_dump at Base 4.9
+ __sanitizer_cov_indir_call16 at Base 5
+ __sanitizer_cov_init at Base 5
+ __sanitizer_cov_module_init at Base 5
+ __sanitizer_get_allocated_size at Base 5
+ __sanitizer_get_current_allocated_bytes at Base 5
+ __sanitizer_get_estimated_allocated_size at Base 5
+ __sanitizer_get_free_bytes at Base 5
+ __sanitizer_get_heap_size at Base 5
+ __sanitizer_get_ownership at Base 5
+ __sanitizer_get_unmapped_bytes at Base 5
+ __sanitizer_maybe_open_cov_file at Base 5
+ __sanitizer_print_stack_trace at Base 5
+ __sanitizer_report_error_summary at Base 4.9
+ __sanitizer_sandbox_on_notify at Base 4.9
+ __sanitizer_set_report_path at Base 4.9
+ aligned_alloc at Base 5
+ calloc at Base 4.9
+ cfree at Base 4.9
+ free at Base 4.9
+ mallinfo at Base 4.9
+ malloc at Base 4.9
+ malloc_usable_size at Base 4.9
+ mallopt at Base 4.9
+ memalign at Base 4.9
+ posix_memalign at Base 4.9
+ pthread_create at Base 4.9
+ pthread_join at Base 4.9
+ pvalloc at Base 4.9
+ realloc at Base 4.9
+ valloc at Base 4.9
diff --git a/debian/libmpx.symbols b/debian/libmpx.symbols
new file mode 100644
index 0000000..7a0a471
--- /dev/null
+++ b/debian/libmpx.symbols
@@ -0,0 +1,4 @@
+libmpx.so.0 #PACKAGE# #MINVER#
+ (symver)LIBMPX_1.0 5
+libmpxwrappers.so.0 #PACKAGE# #MINVER#
+ (symver)LIBMPXWRAPPERS_1.0 5
diff --git a/debian/libobjc4.symbols b/debian/libobjc4.symbols
new file mode 100644
index 0000000..dd5638f
--- /dev/null
+++ b/debian/libobjc4.symbols
@@ -0,0 +1,3 @@
+libobjc.so.4 libobjc4 #MINVER#
+#include "libobjc4.symbols.common"
+ __gnu_objc_personality_v0 at Base 4.2.1
diff --git a/debian/libobjc4.symbols.armel b/debian/libobjc4.symbols.armel
new file mode 100644
index 0000000..15e0c99
--- /dev/null
+++ b/debian/libobjc4.symbols.armel
@@ -0,0 +1,4 @@
+libobjc.so.4 libobjc4 #MINVER#
+#include "libobjc4.symbols.common"
+ __gnu_objc_personality_v0 at Base 4.2.1
+ __objc_exception_class at Base 4.3.0
diff --git a/debian/libobjc4.symbols.armhf b/debian/libobjc4.symbols.armhf
new file mode 100644
index 0000000..15e0c99
--- /dev/null
+++ b/debian/libobjc4.symbols.armhf
@@ -0,0 +1,4 @@
+libobjc.so.4 libobjc4 #MINVER#
+#include "libobjc4.symbols.common"
+ __gnu_objc_personality_v0 at Base 4.2.1
+ __objc_exception_class at Base 4.3.0
diff --git a/debian/libobjc4.symbols.common b/debian/libobjc4.symbols.common
new file mode 100644
index 0000000..6eb80b2
--- /dev/null
+++ b/debian/libobjc4.symbols.common
@@ -0,0 +1,205 @@
+ __objc_accessors_init at Base 4.6
+ __objc_add_class_to_hash at Base 4.2.1
+ __objc_class_links_resolved at Base 4.2.1
+ __objc_class_name_NXConstantString at Base 4.2.1
+ __objc_class_name_Object at Base 4.2.1
+ __objc_class_name_Protocol at Base 4.2.1
+ __objc_dangling_categories at Base 4.2.1
+ __objc_exec_class at Base 4.2.1
+ __objc_force_linking at Base 4.2.1
+ __objc_generate_gc_type_description at Base 4.2.1
+ __objc_get_forward_imp at Base 4.2.1
+ __objc_init_class at Base 4.6
+ __objc_init_class_tables at Base 4.2.1
+ __objc_init_dispatch_tables at Base 4.2.1
+ __objc_init_selector_tables at Base 4.2.1
+ __objc_init_thread_system at Base 4.2.1
+ __objc_install_premature_dtable at Base 4.2.1
+ __objc_is_multi_threaded at Base 4.2.1
+ __objc_linking at Base 4.2.1
+ __objc_msg_forward at Base 4.2.1
+ __objc_msg_forward2 at Base 4.3
+ __objc_print_dtable_stats at Base 4.2.1
+ __objc_protocols_add_protocol at Base 4.6
+ __objc_protocols_init at Base 4.6
+ __objc_register_instance_methods_to_class at Base 4.2.1
+ __objc_register_selectors_from_class at Base 4.2.1
+ __objc_register_selectors_from_description_list at Base 4.6
+ __objc_register_selectors_from_list at Base 4.2.1
+ __objc_register_selectors_from_module at Base 4.6
+ __objc_resolve_class_links at Base 4.2.1
+ __objc_responds_to at Base 4.2.1
+ __objc_runtime_mutex at Base 4.2.1
+ __objc_runtime_threads_alive at Base 4.2.1
+ __objc_selector_max_index at Base 4.2.1
+ __objc_sparse2_id at Base 4.2.1
+ __objc_sync_init at Base 4.6
+ __objc_thread_exit_status at Base 4.2.1
+ __objc_uninstalled_dtable at Base 4.2.1
+ __objc_update_classes_with_methods at Base 4.6
+ __objc_update_dispatch_table_for_class at Base 4.2.1
+ _objc_abort at Base 4.6
+ _objc_became_multi_threaded at Base 4.2.1
+ _objc_load_callback at Base 4.2.1
+ _objc_lookup_class at Base 4.6
+ class_addIvar at Base 4.6
+ class_addMethod at Base 4.6
+ class_addProtocol at Base 4.6
+ class_add_method_list at Base 4.2.1
+ class_conformsToProtocol at Base 4.6
+ class_copyIvarList at Base 4.6
+ class_copyMethodList at Base 4.6
+ class_copyPropertyList at Base 4.6
+ class_copyProtocolList at Base 4.6
+ class_createInstance at Base 4.6
+ class_getClassMethod at Base 4.6
+ class_getClassVariable at Base 4.6
+ class_getInstanceMethod at Base 4.6
+ class_getInstanceSize at Base 4.6
+ class_getInstanceVariable at Base 4.6
+ class_getIvarLayout at Base 4.6
+ class_getMethodImplementation at Base 4.6
+ class_getName at Base 4.6
+ class_getProperty at Base 4.6
+ class_getSuperclass at Base 4.6
+ class_getVersion at Base 4.6
+ class_getWeakIvarLayout at Base 4.6
+ class_isMetaClass at Base 4.6
+ class_ivar_set_gcinvisible at Base 4.2.1
+ class_replaceMethod at Base 4.6
+ class_respondsToSelector at Base 4.6
+ class_setIvarLayout at Base 4.6
+ class_setVersion at Base 4.6
+ class_setWeakIvarLayout at Base 4.6
+ get_imp at Base 4.2.1
+ idxsize at Base 4.2.1
+ ivar_getName at Base 4.6
+ ivar_getOffset at Base 4.6
+ ivar_getTypeEncoding at Base 4.6
+ method_copyArgumentType at Base 4.6
+ method_copyReturnType at Base 4.6
+ method_exchangeImplementations at Base 4.6
+ method_getArgumentType at Base 4.6
+ method_getDescription at Base 4.6
+ method_getImplementation at Base 4.6
+ method_getName at Base 4.6
+ method_getNumberOfArguments at Base 4.6
+ method_getReturnType at Base 4.6
+ method_getTypeEncoding at Base 4.6
+ method_get_imp at Base 4.6
+ method_setImplementation at Base 4.6
+ narrays at Base 4.2.1
+ nbuckets at Base 4.2.1
+ nil_method at Base 4.2.1
+ nindices at Base 4.2.1
+ objc_aligned_size at Base 4.2.1
+ objc_alignof_type at Base 4.2.1
+ objc_allocateClassPair at Base 4.6
+ objc_atomic_malloc at Base 4.2.1
+ objc_calloc at Base 4.2.1
+ objc_condition_allocate at Base 4.2.1
+ objc_condition_broadcast at Base 4.2.1
+ objc_condition_deallocate at Base 4.2.1
+ objc_condition_signal at Base 4.2.1
+ objc_condition_wait at Base 4.2.1
+ objc_copyProtocolList at Base 4.6
+ objc_copyStruct at Base 4.6
+ objc_disposeClassPair at Base 4.6
+ objc_enumerationMutation at Base 4.6
+ objc_exception_throw at Base 4.2.1
+ objc_free at Base 4.2.1
+ objc_getClass at Base 4.6
+ objc_getClassList at Base 4.6
+ objc_getMetaClass at Base 4.6
+ objc_getProperty at Base 4.6
+ objc_getPropertyStruct at Base 4.6
+ objc_getProtocol at Base 4.6
+ objc_getRequiredClass at Base 4.6
+ objc_get_class at Base 4.2.1
+ objc_get_meta_class at Base 4.2.1
+ objc_get_type_qualifiers at Base 4.2.1
+ objc_hash_add at Base 4.2.1
+ objc_hash_delete at Base 4.2.1
+ objc_hash_is_key_in_hash at Base 4.2.1
+ objc_hash_new at Base 4.2.1
+ objc_hash_next at Base 4.2.1
+ objc_hash_remove at Base 4.2.1
+ objc_hash_value_for_key at Base 4.2.1
+ objc_layout_finish_structure at Base 4.2.1
+ objc_layout_structure at Base 4.2.1
+ objc_layout_structure_get_info at Base 4.2.1
+ objc_layout_structure_next_member at Base 4.2.1
+ objc_lookUpClass at Base 4.6
+ objc_lookup_class at Base 4.2.1
+ objc_malloc at Base 4.2.1
+ objc_msg_lookup at Base 4.2.1
+ objc_msg_lookup_super at Base 4.2.1
+ objc_mutex_allocate at Base 4.2.1
+ objc_mutex_deallocate at Base 4.2.1
+ objc_mutex_lock at Base 4.2.1
+ objc_mutex_trylock at Base 4.2.1
+ objc_mutex_unlock at Base 4.2.1
+ objc_promoted_size at Base 4.2.1
+ objc_realloc at Base 4.2.1
+ objc_registerClassPair at Base 4.6
+ objc_setEnumerationMutationHandler at Base 4.6
+ objc_setExceptionMatcher at Base 4.6
+ objc_setGetUnknownClassHandler at Base 4.6
+ objc_setProperty at Base 4.6
+ objc_setPropertyStruct at Base 4.6
+ objc_setUncaughtExceptionHandler at Base 4.6
+ objc_set_thread_callback at Base 4.2.1
+ objc_sizeof_type at Base 4.2.1
+ objc_skip_argspec at Base 4.2.1
+ objc_skip_offset at Base 4.2.1
+ objc_skip_type_qualifiers at Base 4.2.1
+ objc_skip_typespec at Base 4.2.1
+ objc_sync_enter at Base 4.6
+ objc_sync_exit at Base 4.6
+ objc_thread_add at Base 4.2.1
+ objc_thread_detach at Base 4.2.1
+ objc_thread_exit at Base 4.2.1
+ objc_thread_get_data at Base 4.2.1
+ objc_thread_get_priority at Base 4.2.1
+ objc_thread_id at Base 4.2.1
+ objc_thread_remove at Base 4.2.1
+ objc_thread_set_data at Base 4.2.1
+ objc_thread_set_priority at Base 4.2.1
+ objc_thread_yield at Base 4.2.1
+ object_copy at Base 4.2.1
+ object_dispose at Base 4.2.1
+ object_getClassName at Base 4.6
+ object_getIndexedIvars at Base 4.6
+ object_getInstanceVariable at Base 4.6
+ object_getIvar at Base 4.6
+ object_setClass at Base 4.6
+ object_setInstanceVariable at Base 4.6
+ object_setIvar at Base 4.6
+ property_getAttributes at Base 4.6
+ property_getName at Base 4.6
+ protocol_conformsToProtocol at Base 4.6
+ protocol_copyMethodDescriptionList at Base 4.6
+ protocol_copyPropertyList at Base 4.6
+ protocol_copyProtocolList at Base 4.6
+ protocol_getMethodDescription at Base 4.6
+ protocol_getName at Base 4.6
+ protocol_getProperty at Base 4.6
+ protocol_isEqual at Base 4.6
+ sarray_at_put at Base 4.2.1
+ sarray_at_put_safe at Base 4.2.1
+ sarray_free at Base 4.2.1
+ sarray_lazy_copy at Base 4.2.1
+ sarray_new at Base 4.2.1
+ sarray_realloc at Base 4.2.1
+ sarray_remove_garbage at Base 4.2.1
+ search_for_method_in_list at Base 4.2.1
+ sel_copyTypedSelectorList at Base 4.6
+ sel_getName at Base 4.6
+ sel_getTypeEncoding at Base 4.6
+ sel_getTypedSelector at Base 4.6
+ sel_getUid at Base 4.6 
+ sel_get_any_uid at Base 4.2.1
+ sel_isEqual at Base 4.6
+ sel_is_mapped at Base 4.2.1
+ sel_registerName at Base 4.6
+ sel_registerTypedName at Base 4.6
diff --git a/debian/libquadmath.symbols b/debian/libquadmath.symbols
new file mode 100644
index 0000000..0f5726f
--- /dev/null
+++ b/debian/libquadmath.symbols
@@ -0,0 +1,2 @@
+libquadmath.so.0 #PACKAGE# #MINVER#
+ (symver)QUADMATH_1.0 4.6
diff --git a/debian/libstdc++-BV-doc.doc-base b/debian/libstdc++-BV-doc.doc-base
new file mode 100644
index 0000000..c5fd048
--- /dev/null
+++ b/debian/libstdc++-BV-doc.doc-base
@@ -0,0 +1,13 @@
+Document: libstdc++- at BV@-doc
+Title: The GNU Standard C++ Library v3 (gcc- at BV@)
+Author: Various
+Abstract: This package contains documentation files for the GNU stdc++ library.
+ One set is the distribution documentation, the other set is the
+ source documentation including a namespace list, class hierarchy,
+ alphabetical list, compound list, file list, namespace members,
+ compound members and file members.
+Section: Programming/C++
+
+Format: html
+Index: /usr/share/doc/libstdc++- at BV@-doc/libstdc++/index.html
+Files: /usr/share/doc/libstdc++- at BV@-doc/libstdc++/*
diff --git a/debian/libstdc++-BV-doc.overrides b/debian/libstdc++-BV-doc.overrides
new file mode 100644
index 0000000..f6d2c72
--- /dev/null
+++ b/debian/libstdc++-BV-doc.overrides
@@ -0,0 +1,2 @@
+libstdc++- at BV@-doc binary: hyphen-used-as-minus-sign
+libstdc++- at BV@-doc binary: manpage-has-bad-whatis-entry
diff --git a/debian/libstdc++-breaks.Debian b/debian/libstdc++-breaks.Debian
new file mode 100644
index 0000000..3c7047c
--- /dev/null
+++ b/debian/libstdc++-breaks.Debian
@@ -0,0 +1,86 @@
+libantlr-dev (<= 2.7.7+dfsg-6),
+libaqsis1 (<= 1.8.2-1),
+libassimp3 (<= 3.0~dfsg-4),
+blockattack (<= 1.4.1+ds1-2.1+b2),
+boo (<= 0.9.5~git20110729.r1.202a430-2),
+libboost-date-time1.54.0,
+libboost-date-time1.55.0,
+libcpprest2.4 (<= 2.4.0-2),
+printer-driver-brlaser (<= 3-3),
+c++-annotations (<= 10.2.0-1),
+clustalx (<= 2.1+lgpl-3),
+libdavix0 (<= 0.4.0-1+b1),
+libdballe6 (<= 6.8-1),
+dff (<= 1.3.0+dfsg.1-4.1+b3),
+libdiet-sed2.8 (<= 2.8.0-1+b3),
+libdiet-client2.8 (<= 2.8.0-1+b3),
+libdiet-admin2.8 (<= 2.8.0-1+b3),
+digikam-private-libs (<= 4:4.4.0-1.1+b2),
+emscripten (<= 1.22.1-1),
+ergo (<= 3.4.0-1),
+fceux (<= 2.2.2+dfsg0-1),
+flush (<= 0.9.12-3.1),
+libfreefem++ (<= 3.37.1-1),
+freeorion (<= 0.4.4+git20150327-2),
+fslview (<= 4.0.1-4),
+fwbuilder (<= 5.1.0-4),
+libgazebo5 (<= 5.0.1+dfsg-2.1),
+libgetfem4++ (<= 4.2.1~beta1~svn4635~dfsg-3+b1),
+libgmsh2 (<= 2.9.3+dfsg1-1),
+gnote (<= 3.16.2-1),
+gnudatalanguage (<= 0.9.5-2+b2),
+python-healpy (<= 1.8.1-1+b1),
+innoextract (<= 1.4-1+b1),
+libinsighttoolkit4.7 (<= 4.7.2-2),
+libdap17 (<= 3.14.0-2),
+libdapclient6 (<= 3.14.0-2),
+libdapserver7 (<= 3.14.0-2),
+libkolabxml1 (<= 1.1.0-3),
+libpqxx-4.0 (<= 4.0.1+dfsg-3),
+libreoffice-core (<= 1:4.4.5-2),
+librime1 (<= 1.2+dfsg-2),
+libwibble-dev (<= 1.1-1),
+lightspark (<= 0.7.2+git20150512-2+b1),
+libmarisa0 (<= 0.2.4-8),
+mira-assembler (<= 4.9.5-1),
+mongodb (<= 1:2.4.14-2),
+mongodb-server (<= 1:2.4.14-2),
+ncbi-blast+ (<= 2.2.30-4),
+libogre-1.8.0 (<= 1.8.0+dfsg1-7+b1),
+libogre-1.9.0 (<= 1.9.0+dfsg1-4),
+openscad (<= 2014.03+dfsg-1+b1),
+libopenwalnut1 (<= 1.4.0~rc1+hg3a3147463ee2-1+b1),
+passepartout (<= 0.7.1-1.1),
+pdf2djvu (<= 0.7.21-2),
+photoprint (<= 0.4.2~pre2-2.3+b2),
+plastimatch (<= 1.6.2+dfsg-1),
+plee-the-bear (<= 0.6.0-3.1),
+povray (<= 1:3.7.0.0-8),
+powertop (<= 2.6.1-1),
+psi4 (<= 4.0~beta5+dfsg-2+b1),
+python3-taglib (<= 0.3.6+dfsg-2+b2),
+realtimebattle (<= 1.0.8-14),
+ruby-passenger (<= 5.0.7-1),
+libapache2-mod-passenger (<= 5.0.7-1),
+schroot (<= 1.6.10-1+b1),
+sqlitebrowser (<= 3.5.1-3),
+tecnoballz (<= 0.93.1-6),
+wesnoth-1.12-core (<= 1:1.12.4-1),
+widelands (<= 1:18-3+b1),
+libwreport2 (<= 2.14-1),
+xflr5 (<= 6.09.06-2),
+libxmltooling6 (<= 1.5.3-2.1),
+libchemps2-1 (<= 1.5-1),
+python-fiona (<= 1.5.1-2),
+python3-fiona (<= 1.5.1-2),
+fiona (<= 1.5.1-2),
+python-guiqwt (<= 2.3.1-1),
+python-htseq (<= 0.5.4p3-2),
+python-imposm (<= 2.5.0-3+b2),
+python-pysph (<= 0~20150606.gitfa26de9-5),
+python3-taglib (<= 0.3.6+dfsg-2+b2),
+python-scipy (<= 0.14.1-1),
+python3-scipy (<= 0.14.1-1),
+python-sfml (<= 2.2~git20150611.196c88+dfsg-1+b1),
+python3-sfml (<= 2.2~git20150611.196c88+dfsg-1+b1),
+python-rasterio (<= 0.24.0-1),
diff --git a/debian/libstdc++-breaks.Ubuntu b/debian/libstdc++-breaks.Ubuntu
new file mode 100644
index 0000000..1f513ca
--- /dev/null
+++ b/debian/libstdc++-breaks.Ubuntu
@@ -0,0 +1,73 @@
+libantlr-dev (<= 2.7.7+dfsg-6),
+libaqsis1 (<= 1.8.2-1),
+libassimp3 (<= 3.0~dfsg-4),
+blockattack (<= 1.4.1+ds1-2.1build2),
+boo (<= 0.9.5~git20110729.r1.202a430-2),
+libboost-date-time1.55.0,
+libcpprest2.2 (<= 2.2.0-1),
+printer-driver-brlaser (<= 3-3),
+c++-annotations (<= 10.2.0-1),
+chromium-browser (<= 43.0.2357.130-0ubuntu2),
+clustalx (<= 2.1+lgpl-2),
+libdavix0 (<= 0.4.0-1build1),
+libdballe6 (<= 6.8-1),
+dff (<= 1.3.0+dfsg.1-4.1build2),
+libdiet-sed2.8 (<= 2.8.0-1build3),
+libdiet-client2.8 (<= 2.8.0-1build3),
+libdiet-admin2.8 (<= 2.8.0-1build3),
+libkgeomap2 (<= 4:15.04.2-0ubuntu1),
+libmediawiki1 (<= 1.0~digikam4.10.0-0ubuntu2),
+libkvkontakte1 (<= 1.0~digikam4.10.0-0ubuntu2),
+emscripten (<= 1.22.1-1),
+ergo (<= 3.4.0-1),
+fceux (<= 2.2.2+dfsg0-1),
+flush (<= 0.9.12-3.1ubuntu1),
+libfreefem++ (<= 3.37.1-1),
+freeorion (<= 0.4.4+git20150327-2),
+fslview (<= 4.0.1-4),
+fwbuilder (<= 5.1.0-4),
+libgazebo5 (<= 5.0.1+dfsg-2.1),
+libgetfem4++ (<= 4.2.1~beta1~svn4482~dfsg-3ubuntu3),
+libgmsh2 (<= 2.8.5+dfsg-1.1ubuntu1),
+gnote (<= 3.16.2-1),
+gnudatalanguage (<= 0.9.5-2build1),
+python-healpy (<= 1.8.1-1),
+innoextract (<= 1.4-1build1),
+libinsighttoolkit4.6 (<= 4.6.0-3ubuntu3),
+libdap17 (<= 3.14.0-2),
+libdapclient6 (<= 3.14.0-2),
+libdapserver7 (<= 3.14.0-2),
+libkolabxml1 (<= 1.1.0-3),
+libpqxx-4.0 (<= 4.0.1+dfsg-3ubuntu1),
+libreoffice-core (<= 1:4.4.4~rc3-0ubuntu1),
+librime1 (<= 1.2+dfsg-2),
+libwibble-dev (<= 1.1-1),
+lightspark (<= 0.7.2+git20150512-2),
+libmarisa0 (<= 0.2.4-8build1),
+mira-assembler (<= 4.9.5-1),
+mongodb (<= 1:2.6.3-0ubuntu7),
+mongodb-server (<= 1:2.6.3-0ubuntu7),
+ncbi-blast+ (<= 2.2.30-4),
+libogre-1.8.0 (<= 1.8.1+dfsg-0ubuntu5),
+libogre-1.9.0 (<= 1.9.0+dfsg1-4),
+openscad (<= 2014.03+dfsg-1build1),
+libopenwalnut1 (<= 1.4.0~rc1+hg3a3147463ee2-1ubuntu2),
+passepartout (<= 0.7.1-1.1),
+pdf2djvu (<= 0.7.19-1ubuntu2),
+photoprint (<= 0.4.2~pre2-2.3),
+plastimatch (<= 1.6.2+dfsg-1),
+plee-the-bear (<= 0.6.0-3.1),
+povray (<= 1:3.7.0.0-8),
+powertop (<= 2.6.1-1),
+psi4 (<= 4.0~beta5+dfsg-2build1),
+python3-taglib (<= 0.3.6+dfsg-2build2),
+realtimebattle (<= 1.0.8-14),
+ruby-passenger (<= 4.0.53-1),
+libapache2-mod-passenger (<= 4.0.53-1),
+sqlitebrowser (<= 3.5.1-3),
+tecnoballz (<= 0.93.1-6),
+wesnoth-1.12-core (<= 1:1.12.4-1),
+widelands (<= 1:18-3build1),
+libwreport2 (<= 2.14-1),
+xflr5 (<= 6.09.06-2),
+libxmltooling6 (<= 1.5.3-2.1),
diff --git a/debian/libstdc++6.symbols.128bit b/debian/libstdc++6.symbols.128bit
new file mode 100644
index 0000000..5f9736d
--- /dev/null
+++ b/debian/libstdc++6.symbols.128bit
@@ -0,0 +1,46 @@
+ _ZNSt14numeric_limitsInE10has_denormE at GLIBCXX_3.4.17 4.7
+ _ZNSt14numeric_limitsInE10is_boundedE at GLIBCXX_3.4.17 4.7
+ _ZNSt14numeric_limitsInE10is_integerE at GLIBCXX_3.4.17 4.7
+ _ZNSt14numeric_limitsInE11round_styleE at GLIBCXX_3.4.17 4.7
+ _ZNSt14numeric_limitsInE12has_infinityE at GLIBCXX_3.4.17 4.7
+ _ZNSt14numeric_limitsInE12max_digits10E at GLIBCXX_3.4.17 4.7
+ _ZNSt14numeric_limitsInE12max_exponentE at GLIBCXX_3.4.17 4.7
+ _ZNSt14numeric_limitsInE12min_exponentE at GLIBCXX_3.4.17 4.7
+ _ZNSt14numeric_limitsInE13has_quiet_NaNE at GLIBCXX_3.4.17 4.7
+ _ZNSt14numeric_limitsInE14is_specializedE at GLIBCXX_3.4.17 4.7
+ _ZNSt14numeric_limitsInE14max_exponent10E at GLIBCXX_3.4.17 4.7
+ _ZNSt14numeric_limitsInE14min_exponent10E at GLIBCXX_3.4.17 4.7
+ _ZNSt14numeric_limitsInE15has_denorm_lossE at GLIBCXX_3.4.17 4.7
+ _ZNSt14numeric_limitsInE15tinyness_beforeE at GLIBCXX_3.4.17 4.7
+ _ZNSt14numeric_limitsInE17has_signaling_NaNE at GLIBCXX_3.4.17 4.7
+ _ZNSt14numeric_limitsInE5radixE at GLIBCXX_3.4.17 4.7
+ _ZNSt14numeric_limitsInE5trapsE at GLIBCXX_3.4.17 4.7
+ _ZNSt14numeric_limitsInE6digitsE at GLIBCXX_3.4.17 4.7
+ _ZNSt14numeric_limitsInE8digits10E at GLIBCXX_3.4.17 4.7
+ _ZNSt14numeric_limitsInE8is_exactE at GLIBCXX_3.4.17 4.7
+ _ZNSt14numeric_limitsInE9is_iec559E at GLIBCXX_3.4.17 4.7
+ _ZNSt14numeric_limitsInE9is_moduloE at GLIBCXX_3.4.17 4.7
+ _ZNSt14numeric_limitsInE9is_signedE at GLIBCXX_3.4.17 4.7
+ _ZNSt14numeric_limitsIoE10has_denormE at GLIBCXX_3.4.17 4.7
+ _ZNSt14numeric_limitsIoE10is_boundedE at GLIBCXX_3.4.17 4.7
+ _ZNSt14numeric_limitsIoE10is_integerE at GLIBCXX_3.4.17 4.7
+ _ZNSt14numeric_limitsIoE11round_styleE at GLIBCXX_3.4.17 4.7
+ _ZNSt14numeric_limitsIoE12has_infinityE at GLIBCXX_3.4.17 4.7
+ _ZNSt14numeric_limitsIoE12max_digits10E at GLIBCXX_3.4.17 4.7
+ _ZNSt14numeric_limitsIoE12max_exponentE at GLIBCXX_3.4.17 4.7
+ _ZNSt14numeric_limitsIoE12min_exponentE at GLIBCXX_3.4.17 4.7
+ _ZNSt14numeric_limitsIoE13has_quiet_NaNE at GLIBCXX_3.4.17 4.7
+ _ZNSt14numeric_limitsIoE14is_specializedE at GLIBCXX_3.4.17 4.7
+ _ZNSt14numeric_limitsIoE14max_exponent10E at GLIBCXX_3.4.17 4.7
+ _ZNSt14numeric_limitsIoE14min_exponent10E at GLIBCXX_3.4.17 4.7
+ _ZNSt14numeric_limitsIoE15has_denorm_lossE at GLIBCXX_3.4.17 4.7
+ _ZNSt14numeric_limitsIoE15tinyness_beforeE at GLIBCXX_3.4.17 4.7
+ _ZNSt14numeric_limitsIoE17has_signaling_NaNE at GLIBCXX_3.4.17 4.7
+ _ZNSt14numeric_limitsIoE5radixE at GLIBCXX_3.4.17 4.7
+ _ZNSt14numeric_limitsIoE5trapsE at GLIBCXX_3.4.17 4.7
+ _ZNSt14numeric_limitsIoE6digitsE at GLIBCXX_3.4.17 4.7
+ _ZNSt14numeric_limitsIoE8digits10E at GLIBCXX_3.4.17 4.7
+ _ZNSt14numeric_limitsIoE8is_exactE at GLIBCXX_3.4.17 4.7
+ _ZNSt14numeric_limitsIoE9is_iec559E at GLIBCXX_3.4.17 4.7
+ _ZNSt14numeric_limitsIoE9is_moduloE at GLIBCXX_3.4.17 4.7
+ _ZNSt14numeric_limitsIoE9is_signedE at GLIBCXX_3.4.17 4.7
diff --git a/debian/libstdc++6.symbols.32bit b/debian/libstdc++6.symbols.32bit
new file mode 100644
index 0000000..b20e178
--- /dev/null
+++ b/debian/libstdc++6.symbols.32bit
@@ -0,0 +1,601 @@
+#include "libstdc++6.symbols.common"
+#include "libstdc++6.symbols.32bit.cxx11"
+ _ZN9__gnu_cxx12__atomic_addEPVii at GLIBCXX_3.4 4.1.1
+ _ZN9__gnu_cxx17__pool_alloc_base16_M_get_free_listEj at GLIBCXX_3.4.2 4.1.1
+ _ZN9__gnu_cxx17__pool_alloc_base9_M_refillEj at GLIBCXX_3.4.2 4.1.1
+ _ZN9__gnu_cxx18__exchange_and_addEPVii at GLIBCXX_3.4 4.1.1
+ _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE6xsgetnEPci at GLIBCXX_3.4.10 4.3.0~rc2
+ _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE6xsputnEPKci at GLIBCXX_3.4.10 4.3.0~rc2
+ _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode at GLIBCXX_3.4.10 4.3.0~rc2
+ _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE6xsgetnEPwi at GLIBCXX_3.4.10 4.3.0~rc2
+ _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE6xsputnEPKwi at GLIBCXX_3.4.10 4.3.0~rc2
+ _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode at GLIBCXX_3.4.10 4.3.0~rc2
+ _ZN9__gnu_cxx6__poolILb0EE16_M_reclaim_blockEPcj at GLIBCXX_3.4.4 4.1.1
+ _ZN9__gnu_cxx6__poolILb0EE16_M_reserve_blockEjj at GLIBCXX_3.4.4 4.1.1
+ _ZN9__gnu_cxx6__poolILb1EE16_M_reclaim_blockEPcj at GLIBCXX_3.4.4 4.1.1
+ _ZN9__gnu_cxx6__poolILb1EE16_M_reserve_blockEjj at GLIBCXX_3.4.4 4.1.1
+ _ZN9__gnu_cxx9free_list6_M_getEj at GLIBCXX_3.4.4 4.1.1
+ _ZNK10__cxxabiv117__class_type_info12__do_dyncastEiNS0_10__sub_kindEPKS0_PKvS3_S5_RNS0_16__dyncast_resultE at CXXABI_1.3 4.1.1
+ _ZNK10__cxxabiv117__class_type_info20__do_find_public_srcEiPKvPKS0_S2_ at CXXABI_1.3 4.1.1
+ _ZNK10__cxxabiv120__si_class_type_info12__do_dyncastEiNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE at CXXABI_1.3 4.1.1
+ _ZNK10__cxxabiv120__si_class_type_info20__do_find_public_srcEiPKvPKNS_17__class_type_infoES2_ at CXXABI_1.3 4.1.1
+ _ZNK10__cxxabiv121__vmi_class_type_info12__do_dyncastEiNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE at CXXABI_1.3 4.1.1
+ _ZNK10__cxxabiv121__vmi_class_type_info20__do_find_public_srcEiPKvPKNS_17__class_type_infoES2_ at CXXABI_1.3 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwj at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwjj at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofERKS2_j at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEwj at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEPKwj at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEPKwjj at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofERKS2_j at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEwj at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE15_M_check_lengthEjjPKc at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE15_M_check_lengthEjjPKc at GLIBCXX_3.4.5 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEPKwj at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEPKwjj at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofERKS2_j at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEwj at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEPKwj at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEPKwjj at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofERKS2_j at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEwj at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE2atEj at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE4copyEPwjj at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE4findEPKwj at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE4findEPKwjj at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE4findERKS2_j at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE4findEwj at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE5rfindEPKwj at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE5rfindEPKwjj at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE5rfindERKS2_j at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE5rfindEwj at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE6substrEjj at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE7compareEjjPKw at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE7compareEjjPKwj at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE7compareEjjRKS2_ at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE7compareEjjRKS2_jj at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE8_M_checkEjPKc at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE8_M_limitEjj at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEEixEj at GLIBCXX_3.4 4.1.1
+ _ZNKSs12find_last_ofEPKcj at GLIBCXX_3.4 4.1.1
+ _ZNKSs12find_last_ofEPKcjj at GLIBCXX_3.4 4.1.1
+ _ZNKSs12find_last_ofERKSsj at GLIBCXX_3.4 4.1.1
+ _ZNKSs12find_last_ofEcj at GLIBCXX_3.4 4.1.1
+ _ZNKSs13find_first_ofEPKcj at GLIBCXX_3.4 4.1.1
+ _ZNKSs13find_first_ofEPKcjj at GLIBCXX_3.4 4.1.1
+ _ZNKSs13find_first_ofERKSsj at GLIBCXX_3.4 4.1.1
+ _ZNKSs13find_first_ofEcj at GLIBCXX_3.4 4.1.1
+ _ZNKSs15_M_check_lengthEjjPKc at GLIBCXX_3.4 4.1.1
+ _ZNKSs15_M_check_lengthEjjPKc at GLIBCXX_3.4.5 4.1.1
+ _ZNKSs16find_last_not_ofEPKcj at GLIBCXX_3.4 4.1.1
+ _ZNKSs16find_last_not_ofEPKcjj at GLIBCXX_3.4 4.1.1
+ _ZNKSs16find_last_not_ofERKSsj at GLIBCXX_3.4 4.1.1
+ _ZNKSs16find_last_not_ofEcj at GLIBCXX_3.4 4.1.1
+ _ZNKSs17find_first_not_ofEPKcj at GLIBCXX_3.4 4.1.1
+ _ZNKSs17find_first_not_ofEPKcjj at GLIBCXX_3.4 4.1.1
+ _ZNKSs17find_first_not_ofERKSsj at GLIBCXX_3.4 4.1.1
+ _ZNKSs17find_first_not_ofEcj at GLIBCXX_3.4 4.1.1
+ _ZNKSs2atEj at GLIBCXX_3.4 4.1.1
+ _ZNKSs4copyEPcjj at GLIBCXX_3.4 4.1.1
+ _ZNKSs4findEPKcj at GLIBCXX_3.4 4.1.1
+ _ZNKSs4findEPKcjj at GLIBCXX_3.4 4.1.1
+ _ZNKSs4findERKSsj at GLIBCXX_3.4 4.1.1
+ _ZNKSs4findEcj at GLIBCXX_3.4 4.1.1
+ _ZNKSs5rfindEPKcj at GLIBCXX_3.4 4.1.1
+ _ZNKSs5rfindEPKcjj at GLIBCXX_3.4 4.1.1
+ _ZNKSs5rfindERKSsj at GLIBCXX_3.4 4.1.1
+ _ZNKSs5rfindEcj at GLIBCXX_3.4 4.1.1
+ _ZNKSs6substrEjj at GLIBCXX_3.4 4.1.1
+ _ZNKSs7compareEjjPKc at GLIBCXX_3.4 4.1.1
+ _ZNKSs7compareEjjPKcj at GLIBCXX_3.4 4.1.1
+ _ZNKSs7compareEjjRKSs at GLIBCXX_3.4 4.1.1
+ _ZNKSs7compareEjjRKSsjj at GLIBCXX_3.4 4.1.1
+ _ZNKSs8_M_checkEjPKc at GLIBCXX_3.4 4.1.1
+ _ZNKSs8_M_limitEjj at GLIBCXX_3.4 4.1.1
+ _ZNKSsixEj at GLIBCXX_3.4 4.1.1
+ _ZNKSt11__timepunctIcE6_M_putEPcjPKcPK2tm at GLIBCXX_3.4 4.1.1
+ _ZNKSt11__timepunctIwE6_M_putEPwjPKwPK2tm at GLIBCXX_3.4 4.1.1
+ _ZNKSt19__codecvt_utf8_baseIDiE9do_lengthER11__mbstate_tPKcS4_j at GLIBCXX_3.4.21 5
+ _ZNKSt19__codecvt_utf8_baseIDsE9do_lengthER11__mbstate_tPKcS4_j at GLIBCXX_3.4.21 5
+ _ZNKSt19__codecvt_utf8_baseIwE9do_lengthER11__mbstate_tPKcS4_j at GLIBCXX_3.4.21 5
+ _ZNKSt20__codecvt_utf16_baseIDiE9do_lengthER11__mbstate_tPKcS4_j at GLIBCXX_3.4.21 5
+ _ZNKSt20__codecvt_utf16_baseIDsE9do_lengthER11__mbstate_tPKcS4_j at GLIBCXX_3.4.21 5
+ _ZNKSt20__codecvt_utf16_baseIwE9do_lengthER11__mbstate_tPKcS4_j at GLIBCXX_3.4.21 5
+ _ZNKSt25__codecvt_utf8_utf16_baseIDiE9do_lengthER11__mbstate_tPKcS4_j at GLIBCXX_3.4.21 5
+ _ZNKSt25__codecvt_utf8_utf16_baseIDsE9do_lengthER11__mbstate_tPKcS4_j at GLIBCXX_3.4.21 5
+ _ZNKSt25__codecvt_utf8_utf16_baseIwE9do_lengthER11__mbstate_tPKcS4_j at GLIBCXX_3.4.21 5
+ _ZNKSt7codecvtIDic11__mbstate_tE9do_lengthERS0_PKcS4_j at GLIBCXX_3.4.21 5
+ _ZNKSt7codecvtIDsc11__mbstate_tE9do_lengthERS0_PKcS4_j at GLIBCXX_3.4.21 5
+ _ZNKSt7codecvtIcc11__mbstate_tE9do_lengthERS0_PKcS4_j at GLIBCXX_3.4 4.1.1
+ _ZNKSt7codecvtIwc11__mbstate_tE9do_lengthERS0_PKcS4_j at GLIBCXX_3.4 4.1.1
+ _ZNKSt7collateIcE12_M_transformEPcPKcj at GLIBCXX_3.4 4.1.1
+ _ZNKSt7collateIwE12_M_transformEPwPKwj at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE12_M_group_intEPKcjcRSt8ios_basePcS9_Ri at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE14_M_group_floatEPKcjcS6_PcS7_Ri at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6_M_padEciRSt8ios_basePcPKcRi at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE12_M_group_intEPKcjwRSt8ios_basePwS9_Ri at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE14_M_group_floatEPKcjwPKwPwS9_Ri at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6_M_padEwiRSt8ios_basePwPKwRi at GLIBCXX_3.4 4.1.1
+ _ZNKSt8__detail20_Prime_rehash_policy11_M_next_bktEj at GLIBCXX_3.4.18 4.8
+ _ZNKSt8__detail20_Prime_rehash_policy14_M_need_rehashEjjj at GLIBCXX_3.4.18 4.8
+ _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_numES3_S3_RiiijRSt8ios_baseRSt12_Ios_Iostate at GLIBCXX_3.4 4.1.1
+ _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE15_M_extract_nameES3_S3_RiPPKcjRSt8ios_baseRSt12_Ios_Iostate at GLIBCXX_3.4 4.1.1
+ _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE24_M_extract_wday_or_monthES3_S3_RiPPKcjRSt8ios_baseRSt12_Ios_Iostate at GLIBCXX_3.4.14 4.5
+ _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_numES3_S3_RiiijRSt8ios_baseRSt12_Ios_Iostate at GLIBCXX_3.4 4.1.1
+ _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE15_M_extract_nameES3_S3_RiPPKwjRSt8ios_baseRSt12_Ios_Iostate at GLIBCXX_3.4 4.1.1
+ _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE24_M_extract_wday_or_monthES3_S3_RiPPKwjRSt8ios_baseRSt12_Ios_Iostate at GLIBCXX_3.4.14 4.5
+ _ZNKSt8valarrayIjE4sizeEv at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE10_S_compareEjj at GLIBCXX_3.4.16 4.6.0
+ _ZNSbIwSt11char_traitsIwESaIwEE12_S_constructEjwRKS1_ at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE14_M_replace_auxEjjjw at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE18_S_construct_aux_2EjwRKS1_ at GLIBCXX_3.4.14 4.5
+ _ZNSbIwSt11char_traitsIwESaIwEE15_M_replace_safeEjjPKwj at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE2atEj at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE4_Rep26_M_set_length_and_sharableEj at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE4_Rep26_M_set_length_and_sharableEj at GLIBCXX_3.4.5 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE4_Rep8_M_cloneERKS1_j at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE4_Rep9_S_createEjjRKS1_ at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE5eraseEjj at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6appendEPKwj at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6appendERKS2_jj at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6appendEjw at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6assignEPKwj at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6assignERKS2_jj at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6assignEjw at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS2_EEjw at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6insertEjPKw at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6insertEjPKwj at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6insertEjRKS2_ at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6insertEjRKS2_jj at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6insertEjjw at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6resizeEj at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6resizeEjw at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7_M_copyEPwPKwj at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7_M_copyEPwPKwj at GLIBCXX_3.4.5 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7_M_moveEPwPKwj at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7_M_moveEPwPKwj at GLIBCXX_3.4.5 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_PKwj at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_jw at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjPKw at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjPKwj at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjRKS2_ at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjRKS2_jj at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjjw at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7reserveEj at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwjw at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwjw at GLIBCXX_3.4.5 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE9_M_mutateEjjj at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEC1EPKwjRKS1_ at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_jj at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_jjRKS1_ at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEC1EjwRKS1_ at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEC2EPKwjRKS1_ at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_jj at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_jjRKS1_ at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEC2EjwRKS1_ at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEixEj at GLIBCXX_3.4 4.1.1
+ _ZNSi3getEPci at GLIBCXX_3.4 4.1.1
+ _ZNSi3getEPcic at GLIBCXX_3.4 4.1.1
+ _ZNSi4readEPci at GLIBCXX_3.4 4.1.1
+ _ZNSi5seekgExSt12_Ios_Seekdir at GLIBCXX_3.4 4.1.1
+ _ZNSi6ignoreEi at GLIBCXX_3.4 4.1.1
+ _ZNSi6ignoreEi at GLIBCXX_3.4.5 4.1.1
+ _ZNSi6ignoreEii at GLIBCXX_3.4 4.1.1
+ _ZNSi7getlineEPci at GLIBCXX_3.4 4.1.1
+ _ZNSi7getlineEPcic at GLIBCXX_3.4 4.1.1
+ _ZNSi8readsomeEPci at GLIBCXX_3.4 4.1.1
+ _ZNSo5seekpExSt12_Ios_Seekdir at GLIBCXX_3.4 4.1.1
+ _ZNSo5writeEPKci at GLIBCXX_3.4 4.1.1
+ _ZNSo8_M_writeEPKci at GLIBCXX_3.4 4.1.1
+ _ZNSs10_S_compareEjj at GLIBCXX_3.4.16 4.6.0
+ _ZNSs12_S_constructEjcRKSaIcE at GLIBCXX_3.4 4.1.1
+ _ZNSs14_M_replace_auxEjjjc at GLIBCXX_3.4 4.1.1
+ _ZNSs15_M_replace_safeEjjPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSs18_S_construct_aux_2EjcRKSaIcE at GLIBCXX_3.4.14 4.5
+ _ZNSs2atEj at GLIBCXX_3.4 4.1.1
+ _ZNSs4_Rep26_M_set_length_and_sharableEj at GLIBCXX_3.4 4.1.1
+ _ZNSs4_Rep26_M_set_length_and_sharableEj at GLIBCXX_3.4.5 4.1.1
+ _ZNSs4_Rep8_M_cloneERKSaIcEj at GLIBCXX_3.4 4.1.1
+ _ZNSs4_Rep9_S_createEjjRKSaIcE at GLIBCXX_3.4 4.1.1
+ _ZNSs5eraseEjj at GLIBCXX_3.4 4.1.1
+ _ZNSs6appendEPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSs6appendERKSsjj at GLIBCXX_3.4 4.1.1
+ _ZNSs6appendEjc at GLIBCXX_3.4 4.1.1
+ _ZNSs6assignEPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSs6assignERKSsjj at GLIBCXX_3.4 4.1.1
+ _ZNSs6assignEjc at GLIBCXX_3.4 4.1.1
+ _ZNSs6insertEN9__gnu_cxx17__normal_iteratorIPcSsEEjc at GLIBCXX_3.4 4.1.1
+ _ZNSs6insertEjPKc at GLIBCXX_3.4 4.1.1
+ _ZNSs6insertEjPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSs6insertEjRKSs at GLIBCXX_3.4 4.1.1
+ _ZNSs6insertEjRKSsjj at GLIBCXX_3.4 4.1.1
+ _ZNSs6insertEjjc at GLIBCXX_3.4 4.1.1
+ _ZNSs6resizeEj at GLIBCXX_3.4 4.1.1
+ _ZNSs6resizeEjc at GLIBCXX_3.4 4.1.1
+ _ZNSs7_M_copyEPcPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSs7_M_copyEPcPKcj at GLIBCXX_3.4.5 4.1.1
+ _ZNSs7_M_moveEPcPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSs7_M_moveEPcPKcj at GLIBCXX_3.4.5 4.1.1
+ _ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKcj at GLIBCXX_3.4 4.1.1
+ _ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_jc at GLIBCXX_3.4 4.1.1
+ _ZNSs7replaceEjjPKc at GLIBCXX_3.4 4.1.1
+ _ZNSs7replaceEjjPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSs7replaceEjjRKSs at GLIBCXX_3.4 4.1.1
+ _ZNSs7replaceEjjRKSsjj at GLIBCXX_3.4 4.1.1
+ _ZNSs7replaceEjjjc at GLIBCXX_3.4 4.1.1
+ _ZNSs7reserveEj at GLIBCXX_3.4 4.1.1
+ _ZNSs9_M_assignEPcjc at GLIBCXX_3.4 4.1.1
+ _ZNSs9_M_assignEPcjc at GLIBCXX_3.4.5 4.1.1
+ _ZNSs9_M_mutateEjjj at GLIBCXX_3.4 4.1.1
+ _ZNSsC1EPKcjRKSaIcE at GLIBCXX_3.4 4.1.1
+ _ZNSsC1ERKSsjj at GLIBCXX_3.4 4.1.1
+ _ZNSsC1ERKSsjjRKSaIcE at GLIBCXX_3.4 4.1.1
+ _ZNSsC1EjcRKSaIcE at GLIBCXX_3.4 4.1.1
+ _ZNSsC2EPKcjRKSaIcE at GLIBCXX_3.4 4.1.1
+ _ZNSsC2ERKSsjj at GLIBCXX_3.4 4.1.1
+ _ZNSsC2ERKSsjjRKSaIcE at GLIBCXX_3.4 4.1.1
+ _ZNSsC2EjcRKSaIcE at GLIBCXX_3.4 4.1.1
+ _ZNSsixEj at GLIBCXX_3.4 4.1.1
+ _ZNSt10istrstreamC1EPKci at GLIBCXX_3.4 4.1.1
+ _ZNSt10istrstreamC1EPci at GLIBCXX_3.4 4.1.1
+ _ZNSt10istrstreamC2EPKci at GLIBCXX_3.4 4.1.1
+ _ZNSt10istrstreamC2EPci at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb0EEC1EP15__locale_structPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb0EEC1EPSt18__moneypunct_cacheIcLb0EEj at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb0EEC1Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb0EEC2EP15__locale_structPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb0EEC2EPSt18__moneypunct_cacheIcLb0EEj at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb0EEC2Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb1EEC1EP15__locale_structPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb1EEC1EPSt18__moneypunct_cacheIcLb1EEj at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb1EEC1Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb1EEC2EP15__locale_structPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb1EEC2EPSt18__moneypunct_cacheIcLb1EEj at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb1EEC2Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb0EEC1EP15__locale_structPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb0EEC1EPSt18__moneypunct_cacheIwLb0EEj at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb0EEC1Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb0EEC2EP15__locale_structPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb0EEC2EPSt18__moneypunct_cacheIwLb0EEj at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb0EEC2Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb1EEC1EP15__locale_structPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb1EEC1EPSt18__moneypunct_cacheIwLb1EEj at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb1EEC1Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb1EEC2EP15__locale_structPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb1EEC2EPSt18__moneypunct_cacheIwLb1EEj at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb1EEC2Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt11this_thread11__sleep_forENSt6chrono8durationIxSt5ratioILx1ELx1EEEENS1_IxS2_ILx1ELx1000000000EEEE at GLIBCXX_3.4.18 4.8
+ _ZNSt11__timepunctIcEC1EP15__locale_structPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIcEC1EPSt17__timepunct_cacheIcEj at GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIcEC1Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIcEC2EP15__locale_structPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIcEC2EPSt17__timepunct_cacheIcEj at GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIcEC2Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIwEC1EP15__locale_structPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIwEC1EPSt17__timepunct_cacheIwEj at GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIwEC1Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIwEC2EP15__locale_structPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIwEC2EPSt17__timepunct_cacheIwEj at GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIwEC2Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt12__basic_fileIcE6xsgetnEPci at GLIBCXX_3.4 4.1.1
+ _ZNSt12__basic_fileIcE6xsputnEPKci at GLIBCXX_3.4 4.1.1
+ _ZNSt12__basic_fileIcE7seekoffExSt12_Ios_Seekdir at GLIBCXX_3.4 4.1.1
+ _ZNSt12__basic_fileIcE8xsputn_2EPKciS2_i at GLIBCXX_3.4 4.1.1
+ _ZNSt12ctype_bynameIcEC1EPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSt12ctype_bynameIcEC1ERKSsj at GLIBCXX_3.4.21 5
+ _ZNSt12ctype_bynameIcEC2EPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSt12ctype_bynameIcEC2ERKSsj at GLIBCXX_3.4.21 5
+ _ZNSt12ctype_bynameIwEC1EPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSt12ctype_bynameIwEC1ERKSsj at GLIBCXX_3.4.21 5
+ _ZNSt12ctype_bynameIwEC2EPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSt12ctype_bynameIwEC2ERKSsj at GLIBCXX_3.4.21 5
+ _ZNSt12strstreambuf6setbufEPci at GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambuf7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode at GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambuf8_M_allocEj at GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambuf8_M_setupEPcS0_i at GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC1EPFPvjEPFvS0_E at GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC1EPKai at GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC1EPKci at GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC1EPKhi at GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC1EPaiS0_ at GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC1EPciS0_ at GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC1EPhiS0_ at GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC1Ei at GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC2EPFPvjEPFvS0_E at GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC2EPKai at GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC2EPKci at GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC2EPKhi at GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC2EPaiS0_ at GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC2EPciS0_ at GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC2EPhiS0_ at GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC2Ei at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIcSt11char_traitsIcEE13_M_set_bufferEi at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIcSt11char_traitsIcEE22_M_convert_to_externalEPci at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIcSt11char_traitsIcEE6setbufEPci at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIcSt11char_traitsIcEE6xsgetnEPci at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIcSt11char_traitsIcEE6xsputnEPKci at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIcSt11char_traitsIcEE7_M_seekExSt12_Ios_Seekdir11__mbstate_t at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIcSt11char_traitsIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIwSt11char_traitsIwEE13_M_set_bufferEi at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIwSt11char_traitsIwEE22_M_convert_to_externalEPwi at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIwSt11char_traitsIwEE6setbufEPwi at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIwSt11char_traitsIwEE6xsgetnEPwi at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIwSt11char_traitsIwEE6xsputnEPKwi at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIwSt11char_traitsIwEE7_M_seekExSt12_Ios_Seekdir11__mbstate_t at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIwSt11char_traitsIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE3getEPwi at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE3getEPwiw at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE4readEPwi at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE5seekgExSt12_Ios_Seekdir at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEi at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEi at GLIBCXX_3.4.5 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEij at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE7getlineEPwi at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE7getlineEPwiw at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE8readsomeEPwi at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEE5seekpExSt12_Ios_Seekdir at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEE5writeEPKwi at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEE8_M_writeEPKwi at GLIBCXX_3.4 4.1.1
+ _ZNSt14codecvt_bynameIcc11__mbstate_tEC1EPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSt14codecvt_bynameIcc11__mbstate_tEC1ERKSsj at GLIBCXX_3.4.21 5
+ _ZNSt14codecvt_bynameIcc11__mbstate_tEC2EPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSt14codecvt_bynameIcc11__mbstate_tEC2ERKSsj at GLIBCXX_3.4.21 5
+ _ZNSt14codecvt_bynameIwc11__mbstate_tEC1EPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSt14codecvt_bynameIwc11__mbstate_tEC1ERKSsj at GLIBCXX_3.4.21 5
+ _ZNSt14codecvt_bynameIwc11__mbstate_tEC2EPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSt14codecvt_bynameIwc11__mbstate_tEC2ERKSsj at GLIBCXX_3.4.21 5
+ _ZNSt14collate_bynameIcEC1EPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSt14collate_bynameIcEC2EPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSt14collate_bynameIwEC1EPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSt14collate_bynameIwEC2EPKcj at GLIBCXX_3.4 4.1.1
+ (arch=!powerpc !powerpcspe !ppc64 !sparc)_ZNSt14numeric_limitsIeE12max_digits10E at GLIBCXX_3.4.14 4.5.0
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE10pubseekoffExSt12_Ios_SeekdirSt13_Ios_Openmode at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE12__safe_gbumpEi at GLIBCXX_3.4.16 4.6.0
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE12__safe_pbumpEi at GLIBCXX_3.4.16 4.6.0
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE5sgetnEPci at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE5sputnEPKci at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE6setbufEPci at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE6xsgetnEPci at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE6xsputnEPKci at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE9pubsetbufEPci at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE10pubseekoffExSt12_Ios_SeekdirSt13_Ios_Openmode at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE12__safe_gbumpEi at GLIBCXX_3.4.16 4.6.0
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE12__safe_pbumpEi at GLIBCXX_3.4.16 4.6.0
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE5sgetnEPwi at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE5sputnEPKwi at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE6setbufEPwi at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE6xsgetnEPwi at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE6xsputnEPKwi at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE9pubsetbufEPwi at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE6setbufEPci at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7_M_syncEPcjj at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE8_M_pbumpEPcS4_x at GLIBCXX_3.4.16 4.6.0
+ _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE6setbufEPwi at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7_M_syncEPwjj at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE8_M_pbumpEPwS4_x at GLIBCXX_3.4.16 4.6.0
+ _ZNSt15messages_bynameIcEC1EPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSt15messages_bynameIcEC1ERKSsj at GLIBCXX_3.4.21 5
+ _ZNSt15messages_bynameIcEC2EPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSt15messages_bynameIcEC2ERKSsj at GLIBCXX_3.4.21 5
+ _ZNSt15messages_bynameIwEC1EPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSt15messages_bynameIwEC1ERKSsj at GLIBCXX_3.4.21 5
+ _ZNSt15messages_bynameIwEC2EPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSt15messages_bynameIwEC2ERKSsj at GLIBCXX_3.4.21 5
+ _ZNSt15numpunct_bynameIcEC1EPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSt15numpunct_bynameIcEC1ERKSsj at GLIBCXX_3.4.21 5
+ _ZNSt15numpunct_bynameIcEC2EPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSt15numpunct_bynameIcEC2ERKSsj at GLIBCXX_3.4.21 5
+ _ZNSt15numpunct_bynameIwEC1EPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSt15numpunct_bynameIwEC1ERKSsj at GLIBCXX_3.4.21 5
+ _ZNSt15numpunct_bynameIwEC2EPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSt15numpunct_bynameIwEC2ERKSsj at GLIBCXX_3.4.21 5
+ _ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1EPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1ERKSsj at GLIBCXX_3.4.21 5
+ _ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2EPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2ERKSsj at GLIBCXX_3.4.21 5
+ _ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1EPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1ERKSsj at GLIBCXX_3.4.21 5
+ _ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2EPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2ERKSsj at GLIBCXX_3.4.21 5
+ _ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1EPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1ERKSsj at GLIBCXX_3.4.21 5
+ _ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2EPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2ERKSsj at GLIBCXX_3.4.21 5
+ _ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1EPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1ERKSsj at GLIBCXX_3.4.21 5
+ _ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2EPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2ERKSsj at GLIBCXX_3.4.21 5
+ _ZNSt16__numpunct_cacheIcEC1Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt16__numpunct_cacheIcEC2Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt16__numpunct_cacheIwEC1Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt16__numpunct_cacheIwEC2Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt17__timepunct_cacheIcEC1Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt17__timepunct_cacheIcEC2Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt17__timepunct_cacheIwEC1Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt17__timepunct_cacheIwEC2Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt17moneypunct_bynameIcLb0EEC1EPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSt17moneypunct_bynameIcLb0EEC1ERKSsj at GLIBCXX_3.4.21 5
+ _ZNSt17moneypunct_bynameIcLb0EEC2EPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSt17moneypunct_bynameIcLb0EEC2ERKSsj at GLIBCXX_3.4.21 5
+ _ZNSt17moneypunct_bynameIcLb1EEC1EPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSt17moneypunct_bynameIcLb1EEC1ERKSsj at GLIBCXX_3.4.21 5
+ _ZNSt17moneypunct_bynameIcLb1EEC2EPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSt17moneypunct_bynameIcLb1EEC2ERKSsj at GLIBCXX_3.4.21 5
+ _ZNSt17moneypunct_bynameIwLb0EEC1EPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSt17moneypunct_bynameIwLb0EEC1ERKSsj at GLIBCXX_3.4.21 5
+ _ZNSt17moneypunct_bynameIwLb0EEC2EPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSt17moneypunct_bynameIwLb0EEC2ERKSsj at GLIBCXX_3.4.21 5
+ _ZNSt17moneypunct_bynameIwLb1EEC1EPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSt17moneypunct_bynameIwLb1EEC1ERKSsj at GLIBCXX_3.4.21 5
+ _ZNSt17moneypunct_bynameIwLb1EEC2EPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSt17moneypunct_bynameIwLb1EEC2ERKSsj at GLIBCXX_3.4.21 5
+ _ZNSt18__moneypunct_cacheIcLb0EEC1Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt18__moneypunct_cacheIcLb0EEC2Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt18__moneypunct_cacheIcLb1EEC1Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt18__moneypunct_cacheIcLb1EEC2Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt18__moneypunct_cacheIwLb0EEC1Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt18__moneypunct_cacheIwLb0EEC2Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt18__moneypunct_cacheIwLb1EEC1Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt18__moneypunct_cacheIwLb1EEC2Ej at GLIBCXX_3.4 4.1.1
+ (arch=!armel !kfreebsd-amd64 !kfreebsd-i386)_ZNSt28__atomic_futex_unsigned_base19_M_futex_wait_untilEPjjbNSt6chrono8durationIxSt5ratioILx1ELx1EEEENS2_IxS3_ILx1ELx1000000000EEEE at GLIBCXX_3.4.21 5
+ _ZNSt5ctypeIcEC1EP15__locale_structPKtbj at GLIBCXX_3.4 4.1.1
+ _ZNSt5ctypeIcEC1EPKtbj at GLIBCXX_3.4 4.1.1
+ _ZNSt5ctypeIcEC2EP15__locale_structPKtbj at GLIBCXX_3.4 4.1.1
+ _ZNSt5ctypeIcEC2EPKtbj at GLIBCXX_3.4 4.1.1
+ _ZNSt5ctypeIwEC1EP15__locale_structj at GLIBCXX_3.4 4.1.1
+ _ZNSt5ctypeIwEC1Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt5ctypeIwEC2EP15__locale_structj at GLIBCXX_3.4 4.1.1
+ _ZNSt5ctypeIwEC2Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt6gslice8_IndexerC1EjRKSt8valarrayIjES4_ at GLIBCXX_3.4 4.1.1
+ _ZNSt6gslice8_IndexerC2EjRKSt8valarrayIjES4_ at GLIBCXX_3.4 4.1.1
+ _ZNSt6locale5_Impl16_M_install_cacheEPKNS_5facetEj at GLIBCXX_3.4.7 4.1.1
+ _ZNSt6locale5_ImplC1EPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSt6locale5_ImplC1ERKS0_j at GLIBCXX_3.4 4.1.1
+ _ZNSt6locale5_ImplC1Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt6locale5_ImplC2EPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSt6locale5_ImplC2ERKS0_j at GLIBCXX_3.4 4.1.1
+ _ZNSt6locale5_ImplC2Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt7codecvtIcc11__mbstate_tEC1EP15__locale_structj at GLIBCXX_3.4 4.1.1
+ _ZNSt7codecvtIcc11__mbstate_tEC1Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt7codecvtIcc11__mbstate_tEC2EP15__locale_structj at GLIBCXX_3.4 4.1.1
+ _ZNSt7codecvtIcc11__mbstate_tEC2Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt7codecvtIwc11__mbstate_tEC1EP15__locale_structj at GLIBCXX_3.4 4.1.1
+ _ZNSt7codecvtIwc11__mbstate_tEC1Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt7codecvtIwc11__mbstate_tEC2EP15__locale_structj at GLIBCXX_3.4 4.1.1
+ _ZNSt7codecvtIwc11__mbstate_tEC2Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt7collateIcEC1EP15__locale_structj at GLIBCXX_3.4 4.1.1
+ _ZNSt7collateIcEC1Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt7collateIcEC2EP15__locale_structj at GLIBCXX_3.4 4.1.1
+ _ZNSt7collateIcEC2Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt7collateIwEC1EP15__locale_structj at GLIBCXX_3.4 4.1.1
+ _ZNSt7collateIwEC1Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt7collateIwEC2EP15__locale_structj at GLIBCXX_3.4 4.1.1
+ _ZNSt7collateIwEC2Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt8messagesIcEC1EP15__locale_structPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSt8messagesIcEC1Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt8messagesIcEC2EP15__locale_structPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSt8messagesIcEC2Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt8messagesIwEC1EP15__locale_structPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSt8messagesIwEC1Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt8messagesIwEC2EP15__locale_structPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSt8messagesIwEC2Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIcEC1EP15__locale_structj at GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIcEC1EPSt16__numpunct_cacheIcEj at GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIcEC1Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIcEC2EP15__locale_structj at GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIcEC2EPSt16__numpunct_cacheIcEj at GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIcEC2Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIwEC1EP15__locale_structj at GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIwEC1EPSt16__numpunct_cacheIwEj at GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIwEC1Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIwEC2EP15__locale_structj at GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIwEC2EPSt16__numpunct_cacheIwEj at GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIwEC2Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt8valarrayIjEC1ERKS0_ at GLIBCXX_3.4 4.1.1
+ _ZNSt8valarrayIjEC1Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt8valarrayIjEC2ERKS0_ at GLIBCXX_3.4 4.1.1
+ _ZNSt8valarrayIjEC2Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt8valarrayIjED1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt8valarrayIjED2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt8valarrayIjEixEj at GLIBCXX_3.4 4.1.1
+ _ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Ej at GLIBCXX_3.4 4.1.1
+ _ZSt11_Hash_bytesPKvjj at CXXABI_1.3.5 4.6
+ _ZSt15_Fnv_hash_bytesPKvjj at CXXABI_1.3.5 4.6
+ _ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_i at GLIBCXX_3.4.9 4.2.1
+ _ZSt16__ostream_insertIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_PKS3_i at GLIBCXX_3.4.9 4.2.1
+ _ZSt17__copy_streambufsIcSt11char_traitsIcEEiPSt15basic_streambufIT_T0_ES6_ at GLIBCXX_3.4.6 4.1.1
+ _ZSt17__copy_streambufsIwSt11char_traitsIwEEiPSt15basic_streambufIT_T0_ES6_ at GLIBCXX_3.4.6 4.1.1
+ _ZSt17__verify_groupingPKcjRKSs at GLIBCXX_3.4.10 4.3
+ _ZSt21__copy_streambufs_eofIcSt11char_traitsIcEEiPSt15basic_streambufIT_T0_ES6_Rb at GLIBCXX_3.4.9 4.2.1
+ _ZSt21__copy_streambufs_eofIwSt11char_traitsIwEEiPSt15basic_streambufIT_T0_ES6_Rb at GLIBCXX_3.4.9 4.2.1
+ _ZThn8_NSdD0Ev at GLIBCXX_3.4 4.1.1
+ _ZThn8_NSdD1Ev at GLIBCXX_3.4 4.1.1
+ _ZThn8_NSt13basic_fstreamIcSt11char_traitsIcEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZThn8_NSt13basic_fstreamIcSt11char_traitsIcEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZThn8_NSt13basic_fstreamIwSt11char_traitsIwEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZThn8_NSt13basic_fstreamIwSt11char_traitsIwEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZThn8_NSt14basic_iostreamIwSt11char_traitsIwEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZThn8_NSt14basic_iostreamIwSt11char_traitsIwEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZThn8_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZThn8_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZThn8_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZThn8_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZThn8_NSt9strstreamD0Ev at GLIBCXX_3.4 4.1.1
+ _ZThn8_NSt9strstreamD1Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSdD0Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSdD1Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSiD0Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSiD1Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSoD0Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSoD1Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt10istrstreamD0Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt10istrstreamD1Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt10ostrstreamD0Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt10ostrstreamD1Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt13basic_fstreamIcSt11char_traitsIcEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt13basic_fstreamIcSt11char_traitsIcEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt13basic_fstreamIwSt11char_traitsIwEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt13basic_fstreamIwSt11char_traitsIwEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt13basic_istreamIwSt11char_traitsIwEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt13basic_istreamIwSt11char_traitsIwEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt13basic_ostreamIwSt11char_traitsIwEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt13basic_ostreamIwSt11char_traitsIwEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt14basic_ifstreamIcSt11char_traitsIcEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt14basic_ifstreamIcSt11char_traitsIcEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt14basic_ifstreamIwSt11char_traitsIwEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt14basic_ifstreamIwSt11char_traitsIwEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt14basic_iostreamIwSt11char_traitsIwEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt14basic_iostreamIwSt11char_traitsIwEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt14basic_ofstreamIcSt11char_traitsIcEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt14basic_ofstreamIcSt11char_traitsIcEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt14basic_ofstreamIwSt11char_traitsIwEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt14basic_ofstreamIwSt11char_traitsIwEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt19basic_istringstreamIcSt11char_traitsIcESaIcEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt19basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt19basic_istringstreamIwSt11char_traitsIwESaIwEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt19basic_istringstreamIwSt11char_traitsIwESaIwEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt9strstreamD0Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt9strstreamD1Ev at GLIBCXX_3.4 4.1.1
+ _ZdaPvj at CXXABI_1.3.9 5
+ _ZdlPvj at CXXABI_1.3.9 5
+ _Znaj at GLIBCXX_3.4 4.1.1
+ _ZnajRKSt9nothrow_t at GLIBCXX_3.4 4.1.1
+ _Znwj at GLIBCXX_3.4 4.1.1
+ _ZnwjRKSt9nothrow_t at GLIBCXX_3.4 4.1.1
+ _ZNSt12__basic_fileIcEC1EP15pthread_mutex_t at GLIBCXX_3.4 4.1.1
+ _ZNSt12__basic_fileIcEC2EP15pthread_mutex_t at GLIBCXX_3.4 4.1.1
diff --git a/debian/libstdc++6.symbols.32bit.cxx11 b/debian/libstdc++6.symbols.32bit.cxx11
new file mode 100644
index 0000000..659d3aa
--- /dev/null
+++ b/debian/libstdc++6.symbols.32bit.cxx11
@@ -0,0 +1,329 @@
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12find_last_ofEPKcj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12find_last_ofEPKcjj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12find_last_ofERKS4_j at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12find_last_ofEcj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13find_first_ofEPKcj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13find_first_ofEPKcjj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13find_first_ofERKS4_j at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13find_first_ofEcj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE15_M_check_lengthEjjPKc at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE16find_last_not_ofEPKcj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE16find_last_not_ofEPKcjj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE16find_last_not_ofERKS4_j at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE16find_last_not_ofEcj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE17find_first_not_ofEPKcj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE17find_first_not_ofEPKcjj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE17find_first_not_ofERKS4_j at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE17find_first_not_ofEcj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE2atEj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4copyEPcjj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEPKcj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEPKcjj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findERKS4_j at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEcj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5rfindEPKcj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5rfindEPKcjj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5rfindERKS4_j at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5rfindEcj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6substrEjj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7compareEjjPKc at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7compareEjjPKcj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7compareEjjRKS4_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7compareEjjRKS4_jj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_checkEjPKc at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_limitEjj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12find_last_ofEPKwj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12find_last_ofEPKwjj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12find_last_ofERKS4_j at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12find_last_ofEwj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE13find_first_ofEPKwj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE13find_first_ofEPKwjj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE13find_first_ofERKS4_j at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE13find_first_ofEwj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE15_M_check_lengthEjjPKc at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE16find_last_not_ofEPKwj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE16find_last_not_ofEPKwjj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE16find_last_not_ofERKS4_j at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE16find_last_not_ofEwj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE17find_first_not_ofEPKwj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE17find_first_not_ofEPKwjj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE17find_first_not_ofERKS4_j at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE17find_first_not_ofEwj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE2atEj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE4copyEPwjj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE4findEPKwj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE4findEPKwjj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE4findERKS4_j at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE4findEwj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE5rfindEPKwj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE5rfindEPKwjj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE5rfindERKS4_j at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE5rfindEwj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6substrEjj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7compareEjjPKw at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7compareEjjPKwj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7compareEjjRKS4_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7compareEjjRKS4_jj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8_M_checkEjPKc at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8_M_limitEjj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEixEj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx117collateIcE12_M_transformEPcPKcj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx117collateIwE12_M_transformEPwPKwj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_numES4_S4_RiiijRSt8ios_baseRSt12_Ios_Iostate at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE15_M_extract_nameES4_S4_RiPPKcjRSt8ios_baseRSt12_Ios_Iostate at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE24_M_extract_wday_or_monthES4_S4_RiPPKcjRSt8ios_baseRSt12_Ios_Iostate at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_numES4_S4_RiiijRSt8ios_baseRSt12_Ios_Iostate at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE15_M_extract_nameES4_S4_RiPPKwjRSt8ios_baseRSt12_Ios_Iostate at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE24_M_extract_wday_or_monthES4_S4_RiPPKwjRSt8ios_baseRSt12_Ios_Iostate at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt12ctype_bynameIcEC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt12ctype_bynameIcEC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt12ctype_bynameIwEC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt12ctype_bynameIwEC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt14codecvt_bynameIcc11__mbstate_tEC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt14codecvt_bynameIcc11__mbstate_tEC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt14codecvt_bynameIwc11__mbstate_tEC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt14codecvt_bynameIwc11__mbstate_tEC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1ERKNSt7__cxx1112basic_stringIcS2_SaIcEEEj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2ERKNSt7__cxx1112basic_stringIcS2_SaIcEEEj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIcLb0EEC1EP15__locale_structPKcj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIcLb0EEC1EPSt18__moneypunct_cacheIcLb0EEj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIcLb0EEC1Ej at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIcLb0EEC2EP15__locale_structPKcj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIcLb0EEC2EPSt18__moneypunct_cacheIcLb0EEj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIcLb0EEC2Ej at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIcLb1EEC1EP15__locale_structPKcj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIcLb1EEC1EPSt18__moneypunct_cacheIcLb1EEj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIcLb1EEC1Ej at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIcLb1EEC2EP15__locale_structPKcj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIcLb1EEC2EPSt18__moneypunct_cacheIcLb1EEj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIcLb1EEC2Ej at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIwLb0EEC1EP15__locale_structPKcj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIwLb0EEC1EPSt18__moneypunct_cacheIwLb0EEj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIwLb0EEC1Ej at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIwLb0EEC2EP15__locale_structPKcj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIwLb0EEC2EPSt18__moneypunct_cacheIwLb0EEj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIwLb0EEC2Ej at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIwLb1EEC1EP15__locale_structPKcj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIwLb1EEC1EPSt18__moneypunct_cacheIwLb1EEj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIwLb1EEC1Ej at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIwLb1EEC2EP15__locale_structPKcj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIwLb1EEC2EPSt18__moneypunct_cacheIwLb1EEj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIwLb1EEC2Ej at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_destroyEj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_replaceEjjPKcj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_S_compareEjj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_capacityEj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructEjc at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_M_set_lengthEj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE14_M_replace_auxEjjjc at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE18_M_construct_aux_2Ejc at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE2atEj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5eraseEjj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEPKcj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendERKS4_jj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEjc at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6assignEPKcj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6assignERKS4_jj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6assignEjc at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6insertEN9__gnu_cxx17__normal_iteratorIPKcS4_EEjc at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6insertEN9__gnu_cxx17__normal_iteratorIPcS4_EEjc at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6insertEjPKc at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6insertEjPKcj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6insertEjRKS4_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6insertEjRKS4_jj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6insertEjjc at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6resizeEj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6resizeEjc at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_copyEPcPKcj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_moveEPcPKcj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEN9__gnu_cxx17__normal_iteratorIPKcS4_EES9_S8_j at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEN9__gnu_cxx17__normal_iteratorIPKcS4_EES9_jc at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEN9__gnu_cxx17__normal_iteratorIPcS4_EES8_PKcj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEN9__gnu_cxx17__normal_iteratorIPcS4_EES8_jc at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEjjPKc at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEjjPKcj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEjjRKS4_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEjjRKS4_jj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEjjjc at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7reserveEj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_eraseEjj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_appendEPKcj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERjj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_lengthEj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_mutateEjjPKcj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_S_assignEPcjc at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EPKcjRKS3_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ERKS4_jj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ERKS4_jjRKS3_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EjcRKS3_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EPKcjRKS3_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_jj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_jjRKS3_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EjcRKS3_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE10_M_destroyEj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE10_M_replaceEjjPKwj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE10_S_compareEjj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_capacityEj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12_M_constructEjw at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE13_M_set_lengthEj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE14_M_replace_auxEjjjw at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE18_M_construct_aux_2Ejw at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE2atEj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE5eraseEjj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6appendEPKwj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6appendERKS4_jj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6appendEjw at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6assignEjw at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6assignEPKwj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6assignERKS4_jj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPKwS4_EEjw at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS4_EEjw at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6insertEjPKwj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6insertEjPKw at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6insertEjRKS4_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6insertEjRKS4_jj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6insertEjjw at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6resizeEj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6resizeEjw at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7_S_copyEPwPKwj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7_S_moveEPwPKwj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPKwS4_EES9_S8_j at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPKwS4_EES9_jw at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS4_EES8_PKwj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS4_EES8_jw at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7replaceEjjPKw at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7replaceEjjPKwj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7replaceEjjRKS4_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7replaceEjjRKS4_jj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7replaceEjjjw at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7reserveEj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8_M_eraseEjj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9_M_appendEPKwj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9_M_createERjj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9_M_lengthEj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9_M_mutateEjjPKwj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9_S_assignEPwjw at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1EPKwjRKS3_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1ERKS4_jj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1ERKS4_jjRKS3_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1EjwRKS3_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2EPKwjRKS3_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2ERKS4_jj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2ERKS4_jjRKS3_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2EjwRKS3_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEixEj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1114collate_bynameIcEC1EPKcj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1114collate_bynameIcEC1ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1114collate_bynameIcEC2EPKcj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1114collate_bynameIcEC2ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1114collate_bynameIwEC1EPKcj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1114collate_bynameIwEC1ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1114collate_bynameIwEC2EPKcj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1114collate_bynameIwEC2ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE7_M_syncEPcjj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE6setbufEPci at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE8_M_pbumpEPcS5_x at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEE6setbufEPwi at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEE7_M_syncEPwjj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEE8_M_pbumpEPwS5_x at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115messages_bynameIcEC1EPKcj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115messages_bynameIcEC1ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115messages_bynameIcEC2EPKcj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115messages_bynameIcEC2ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115messages_bynameIwEC1EPKcj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115messages_bynameIwEC1ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115messages_bynameIwEC2EPKcj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115messages_bynameIwEC2ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115numpunct_bynameIcEC1EPKcj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115numpunct_bynameIcEC1ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115numpunct_bynameIcEC2EPKcj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115numpunct_bynameIcEC2ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115numpunct_bynameIwEC1EPKcj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115numpunct_bynameIwEC1ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115numpunct_bynameIwEC2EPKcj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115numpunct_bynameIwEC2ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1EPKcj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1ERKNS_12basic_stringIcS3_SaIcEEEj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2EPKcj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2ERKNS_12basic_stringIcS3_SaIcEEEj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1EPKcj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1ERKNS_12basic_stringIcS2_IcESaIcEEEj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2EPKcj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2ERKNS_12basic_stringIcS2_IcESaIcEEEj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIcLb0EEC1EPKcj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIcLb0EEC1ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIcLb0EEC2EPKcj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIcLb0EEC2ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIcLb1EEC1EPKcj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIcLb1EEC1ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIcLb1EEC2EPKcj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIcLb1EEC2ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIwLb0EEC1EPKcj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIwLb0EEC1ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIwLb0EEC2EPKcj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIwLb0EEC2ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIwLb1EEC1EPKcj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIwLb1EEC1ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIwLb1EEC2EPKcj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIwLb1EEC2ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx117collateIcEC1EP15__locale_structj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx117collateIcEC1Ej at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx117collateIcEC2EP15__locale_structj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx117collateIcEC2Ej at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx117collateIwEC1EP15__locale_structj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx117collateIwEC1Ej at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx117collateIwEC2EP15__locale_structj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx117collateIwEC2Ej at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx118messagesIcEC1EP15__locale_structPKcj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx118messagesIcEC1Ej at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx118messagesIcEC2EP15__locale_structPKcj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx118messagesIcEC2Ej at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx118messagesIwEC1EP15__locale_structPKcj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx118messagesIwEC1Ej at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx118messagesIwEC2EP15__locale_structPKcj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx118messagesIwEC2Ej at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx118numpunctIcEC1EP15__locale_structj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx118numpunctIcEC1EPSt16__numpunct_cacheIcEj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx118numpunctIcEC1Ej at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx118numpunctIcEC2EP15__locale_structj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx118numpunctIcEC2EPSt16__numpunct_cacheIcEj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx118numpunctIcEC2Ej at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx118numpunctIwEC1EP15__locale_structj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx118numpunctIwEC1EPSt16__numpunct_cacheIwEj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx118numpunctIwEC1Ej at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx118numpunctIwEC2EP15__locale_structj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx118numpunctIwEC2EPSt16__numpunct_cacheIwEj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx118numpunctIwEC2Ej at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Ej at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Ej at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Ej at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Ej at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx119money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Ej at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx119money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Ej at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx119money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Ej at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx119money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Ej at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx119money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Ej at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx119money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Ej at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx119money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Ej at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx119money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Ej at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZSt17__verify_groupingPKcjRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZThn8_NSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZThn8_NSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZThn8_NSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZThn8_NSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTv0_n12_NSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTv0_n12_NSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTv0_n12_NSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTv0_n12_NSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTv0_n12_NSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEED0Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTv0_n12_NSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTv0_n12_NSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEED0Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTv0_n12_NSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEED1Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTv0_n12_NSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED0Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTv0_n12_NSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTv0_n12_NSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEED0Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTv0_n12_NSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEED1Ev at GLIBCXX_3.4.21 5.2
diff --git a/debian/libstdc++6.symbols.32bit.hurd b/debian/libstdc++6.symbols.32bit.hurd
new file mode 100644
index 0000000..24952b1
--- /dev/null
+++ b/debian/libstdc++6.symbols.32bit.hurd
@@ -0,0 +1,536 @@
+#include "libstdc++6.symbols.common"
+ _ZN9__gnu_cxx12__atomic_addEPVii at GLIBCXX_3.4 4.1.1
+ _ZN9__gnu_cxx17__pool_alloc_base16_M_get_free_listEj at GLIBCXX_3.4.2 4.1.1
+ _ZN9__gnu_cxx17__pool_alloc_base9_M_refillEj at GLIBCXX_3.4.2 4.1.1
+ _ZN9__gnu_cxx18__exchange_and_addEPVii at GLIBCXX_3.4 4.1.1
+ _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE6xsgetnEPci at GLIBCXX_3.4.10 4.3.0~rc2
+ _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE6xsputnEPKci at GLIBCXX_3.4.10 4.3.0~rc2
+ _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode at GLIBCXX_3.4.10 4.3.0~rc2
+ _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE6xsgetnEPwi at GLIBCXX_3.4.10 4.3.0~rc2
+ _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE6xsputnEPKwi at GLIBCXX_3.4.10 4.3.0~rc2
+ _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode at GLIBCXX_3.4.10 4.3.0~rc2
+ _ZN9__gnu_cxx6__poolILb0EE16_M_reclaim_blockEPcj at GLIBCXX_3.4.4 4.1.1
+ _ZN9__gnu_cxx6__poolILb0EE16_M_reserve_blockEjj at GLIBCXX_3.4.4 4.1.1
+ _ZN9__gnu_cxx6__poolILb1EE16_M_reclaim_blockEPcj at GLIBCXX_3.4.4 4.1.1
+ _ZN9__gnu_cxx6__poolILb1EE16_M_reserve_blockEjj at GLIBCXX_3.4.4 4.1.1
+ _ZN9__gnu_cxx9free_list6_M_getEj at GLIBCXX_3.4.4 4.1.1
+ _ZNK10__cxxabiv117__class_type_info12__do_dyncastEiNS0_10__sub_kindEPKS0_PKvS3_S5_RNS0_16__dyncast_resultE at CXXABI_1.3 4.1.1
+ _ZNK10__cxxabiv117__class_type_info20__do_find_public_srcEiPKvPKS0_S2_ at CXXABI_1.3 4.1.1
+ _ZNK10__cxxabiv120__si_class_type_info12__do_dyncastEiNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE at CXXABI_1.3 4.1.1
+ _ZNK10__cxxabiv120__si_class_type_info20__do_find_public_srcEiPKvPKNS_17__class_type_infoES2_ at CXXABI_1.3 4.1.1
+ _ZNK10__cxxabiv121__vmi_class_type_info12__do_dyncastEiNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE at CXXABI_1.3 4.1.1
+ _ZNK10__cxxabiv121__vmi_class_type_info20__do_find_public_srcEiPKvPKNS_17__class_type_infoES2_ at CXXABI_1.3 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwj at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwjj at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofERKS2_j at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEwj at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEPKwj at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEPKwjj at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofERKS2_j at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEwj at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE15_M_check_lengthEjjPKc at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE15_M_check_lengthEjjPKc at GLIBCXX_3.4.5 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEPKwj at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEPKwjj at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofERKS2_j at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEwj at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEPKwj at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEPKwjj at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofERKS2_j at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEwj at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE2atEj at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE4copyEPwjj at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE4findEPKwj at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE4findEPKwjj at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE4findERKS2_j at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE4findEwj at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE5rfindEPKwj at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE5rfindEPKwjj at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE5rfindERKS2_j at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE5rfindEwj at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE6substrEjj at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE7compareEjjPKw at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE7compareEjjPKwj at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE7compareEjjRKS2_ at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE7compareEjjRKS2_jj at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE8_M_checkEjPKc at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE8_M_limitEjj at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEEixEj at GLIBCXX_3.4 4.1.1
+ _ZNKSs12find_last_ofEPKcj at GLIBCXX_3.4 4.1.1
+ _ZNKSs12find_last_ofEPKcjj at GLIBCXX_3.4 4.1.1
+ _ZNKSs12find_last_ofERKSsj at GLIBCXX_3.4 4.1.1
+ _ZNKSs12find_last_ofEcj at GLIBCXX_3.4 4.1.1
+ _ZNKSs13find_first_ofEPKcj at GLIBCXX_3.4 4.1.1
+ _ZNKSs13find_first_ofEPKcjj at GLIBCXX_3.4 4.1.1
+ _ZNKSs13find_first_ofERKSsj at GLIBCXX_3.4 4.1.1
+ _ZNKSs13find_first_ofEcj at GLIBCXX_3.4 4.1.1
+ _ZNKSs15_M_check_lengthEjjPKc at GLIBCXX_3.4 4.1.1
+ _ZNKSs15_M_check_lengthEjjPKc at GLIBCXX_3.4.5 4.1.1
+ _ZNKSs16find_last_not_ofEPKcj at GLIBCXX_3.4 4.1.1
+ _ZNKSs16find_last_not_ofEPKcjj at GLIBCXX_3.4 4.1.1
+ _ZNKSs16find_last_not_ofERKSsj at GLIBCXX_3.4 4.1.1
+ _ZNKSs16find_last_not_ofEcj at GLIBCXX_3.4 4.1.1
+ _ZNKSs17find_first_not_ofEPKcj at GLIBCXX_3.4 4.1.1
+ _ZNKSs17find_first_not_ofEPKcjj at GLIBCXX_3.4 4.1.1
+ _ZNKSs17find_first_not_ofERKSsj at GLIBCXX_3.4 4.1.1
+ _ZNKSs17find_first_not_ofEcj at GLIBCXX_3.4 4.1.1
+ _ZNKSs2atEj at GLIBCXX_3.4 4.1.1
+ _ZNKSs4copyEPcjj at GLIBCXX_3.4 4.1.1
+ _ZNKSs4findEPKcj at GLIBCXX_3.4 4.1.1
+ _ZNKSs4findEPKcjj at GLIBCXX_3.4 4.1.1
+ _ZNKSs4findERKSsj at GLIBCXX_3.4 4.1.1
+ _ZNKSs4findEcj at GLIBCXX_3.4 4.1.1
+ _ZNKSs5rfindEPKcj at GLIBCXX_3.4 4.1.1
+ _ZNKSs5rfindEPKcjj at GLIBCXX_3.4 4.1.1
+ _ZNKSs5rfindERKSsj at GLIBCXX_3.4 4.1.1
+ _ZNKSs5rfindEcj at GLIBCXX_3.4 4.1.1
+ _ZNKSs6substrEjj at GLIBCXX_3.4 4.1.1
+ _ZNKSs7compareEjjPKc at GLIBCXX_3.4 4.1.1
+ _ZNKSs7compareEjjPKcj at GLIBCXX_3.4 4.1.1
+ _ZNKSs7compareEjjRKSs at GLIBCXX_3.4 4.1.1
+ _ZNKSs7compareEjjRKSsjj at GLIBCXX_3.4 4.1.1
+ _ZNKSs8_M_checkEjPKc at GLIBCXX_3.4 4.1.1
+ _ZNKSs8_M_limitEjj at GLIBCXX_3.4 4.1.1
+ _ZNKSsixEj at GLIBCXX_3.4 4.1.1
+ _ZNKSt11__timepunctIcE6_M_putEPcjPKcPK2tm at GLIBCXX_3.4 4.1.1
+ _ZNKSt11__timepunctIwE6_M_putEPwjPKwPK2tm at GLIBCXX_3.4 4.1.1
+ _ZNKSt7codecvtIcc11__mbstate_tE9do_lengthERS0_PKcS4_j at GLIBCXX_3.4 4.1.1
+ _ZNKSt7codecvtIwc11__mbstate_tE9do_lengthERS0_PKcS4_j at GLIBCXX_3.4 4.1.1
+ _ZNKSt7collateIcE12_M_transformEPcPKcj at GLIBCXX_3.4 4.1.1
+ _ZNKSt7collateIwE12_M_transformEPwPKwj at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE12_M_group_intEPKcjcRSt8ios_basePcS9_Ri at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE14_M_group_floatEPKcjcS6_PcS7_Ri at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6_M_padEciRSt8ios_basePcPKcRi at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE12_M_group_intEPKcjwRSt8ios_basePwS9_Ri at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE14_M_group_floatEPKcjwPKwPwS9_Ri at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6_M_padEwiRSt8ios_basePwPKwRi at GLIBCXX_3.4 4.1.1
+ _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_numES3_S3_RiiijRSt8ios_baseRSt12_Ios_Iostate at GLIBCXX_3.4 4.1.1
+ _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE15_M_extract_nameES3_S3_RiPPKcjRSt8ios_baseRSt12_Ios_Iostate at GLIBCXX_3.4 4.1.1
+ _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_numES3_S3_RiiijRSt8ios_baseRSt12_Ios_Iostate at GLIBCXX_3.4 4.1.1
+ _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE15_M_extract_nameES3_S3_RiPPKwjRSt8ios_baseRSt12_Ios_Iostate at GLIBCXX_3.4 4.1.1
+ _ZNKSt8valarrayIjE4sizeEv at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE12_S_constructEjwRKS1_ at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE14_M_replace_auxEjjjw at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE15_M_replace_safeEjjPKwj at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE2atEj at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE4_Rep26_M_set_length_and_sharableEj at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE4_Rep26_M_set_length_and_sharableEj at GLIBCXX_3.4.5 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE4_Rep8_M_cloneERKS1_j at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE4_Rep9_S_createEjjRKS1_ at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE5eraseEjj at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6appendEPKwj at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6appendERKS2_jj at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6appendEjw at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6assignEPKwj at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6assignERKS2_jj at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6assignEjw at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS2_EEjw at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6insertEjPKw at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6insertEjPKwj at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6insertEjRKS2_ at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6insertEjRKS2_jj at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6insertEjjw at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6resizeEj at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6resizeEjw at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7_M_copyEPwPKwj at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7_M_copyEPwPKwj at GLIBCXX_3.4.5 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7_M_moveEPwPKwj at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7_M_moveEPwPKwj at GLIBCXX_3.4.5 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_PKwj at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_jw at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjPKw at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjPKwj at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjRKS2_ at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjRKS2_jj at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7replaceEjjjw at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7reserveEj at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwjw at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwjw at GLIBCXX_3.4.5 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE9_M_mutateEjjj at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEC1EPKwjRKS1_ at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_jj at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_jjRKS1_ at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEC1EjwRKS1_ at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEC2EPKwjRKS1_ at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_jj at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_jjRKS1_ at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEC2EjwRKS1_ at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEixEj at GLIBCXX_3.4 4.1.1
+ _ZNSi3getEPci at GLIBCXX_3.4 4.1.1
+ _ZNSi3getEPcic at GLIBCXX_3.4 4.1.1
+ _ZNSi4readEPci at GLIBCXX_3.4 4.1.1
+ _ZNSi5seekgExSt12_Ios_Seekdir at GLIBCXX_3.4 4.1.1
+ _ZNSi6ignoreEi at GLIBCXX_3.4 4.1.1
+ _ZNSi6ignoreEi at GLIBCXX_3.4.5 4.1.1
+ _ZNSi6ignoreEii at GLIBCXX_3.4 4.1.1
+ _ZNSi7getlineEPci at GLIBCXX_3.4 4.1.1
+ _ZNSi7getlineEPcic at GLIBCXX_3.4 4.1.1
+ _ZNSi8readsomeEPci at GLIBCXX_3.4 4.1.1
+ _ZNSo5seekpExSt12_Ios_Seekdir at GLIBCXX_3.4 4.1.1
+ _ZNSo5writeEPKci at GLIBCXX_3.4 4.1.1
+ _ZNSo8_M_writeEPKci at GLIBCXX_3.4 4.1.1
+ _ZNSs12_S_constructEjcRKSaIcE at GLIBCXX_3.4 4.1.1
+ _ZNSs14_M_replace_auxEjjjc at GLIBCXX_3.4 4.1.1
+ _ZNSs15_M_replace_safeEjjPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSs2atEj at GLIBCXX_3.4 4.1.1
+ _ZNSs4_Rep26_M_set_length_and_sharableEj at GLIBCXX_3.4 4.1.1
+ _ZNSs4_Rep26_M_set_length_and_sharableEj at GLIBCXX_3.4.5 4.1.1
+ _ZNSs4_Rep8_M_cloneERKSaIcEj at GLIBCXX_3.4 4.1.1
+ _ZNSs4_Rep9_S_createEjjRKSaIcE at GLIBCXX_3.4 4.1.1
+ _ZNSs5eraseEjj at GLIBCXX_3.4 4.1.1
+ _ZNSs6appendEPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSs6appendERKSsjj at GLIBCXX_3.4 4.1.1
+ _ZNSs6appendEjc at GLIBCXX_3.4 4.1.1
+ _ZNSs6assignEPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSs6assignERKSsjj at GLIBCXX_3.4 4.1.1
+ _ZNSs6assignEjc at GLIBCXX_3.4 4.1.1
+ _ZNSs6insertEN9__gnu_cxx17__normal_iteratorIPcSsEEjc at GLIBCXX_3.4 4.1.1
+ _ZNSs6insertEjPKc at GLIBCXX_3.4 4.1.1
+ _ZNSs6insertEjPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSs6insertEjRKSs at GLIBCXX_3.4 4.1.1
+ _ZNSs6insertEjRKSsjj at GLIBCXX_3.4 4.1.1
+ _ZNSs6insertEjjc at GLIBCXX_3.4 4.1.1
+ _ZNSs6resizeEj at GLIBCXX_3.4 4.1.1
+ _ZNSs6resizeEjc at GLIBCXX_3.4 4.1.1
+ _ZNSs7_M_copyEPcPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSs7_M_copyEPcPKcj at GLIBCXX_3.4.5 4.1.1
+ _ZNSs7_M_moveEPcPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSs7_M_moveEPcPKcj at GLIBCXX_3.4.5 4.1.1
+ _ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKcj at GLIBCXX_3.4 4.1.1
+ _ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_jc at GLIBCXX_3.4 4.1.1
+ _ZNSs7replaceEjjPKc at GLIBCXX_3.4 4.1.1
+ _ZNSs7replaceEjjPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSs7replaceEjjRKSs at GLIBCXX_3.4 4.1.1
+ _ZNSs7replaceEjjRKSsjj at GLIBCXX_3.4 4.1.1
+ _ZNSs7replaceEjjjc at GLIBCXX_3.4 4.1.1
+ _ZNSs7reserveEj at GLIBCXX_3.4 4.1.1
+ _ZNSs9_M_assignEPcjc at GLIBCXX_3.4 4.1.1
+ _ZNSs9_M_assignEPcjc at GLIBCXX_3.4.5 4.1.1
+ _ZNSs9_M_mutateEjjj at GLIBCXX_3.4 4.1.1
+ _ZNSsC1EPKcjRKSaIcE at GLIBCXX_3.4 4.1.1
+ _ZNSsC1ERKSsjj at GLIBCXX_3.4 4.1.1
+ _ZNSsC1ERKSsjjRKSaIcE at GLIBCXX_3.4 4.1.1
+ _ZNSsC1EjcRKSaIcE at GLIBCXX_3.4 4.1.1
+ _ZNSsC2EPKcjRKSaIcE at GLIBCXX_3.4 4.1.1
+ _ZNSsC2ERKSsjj at GLIBCXX_3.4 4.1.1
+ _ZNSsC2ERKSsjjRKSaIcE at GLIBCXX_3.4 4.1.1
+ _ZNSsC2EjcRKSaIcE at GLIBCXX_3.4 4.1.1
+ _ZNSsixEj at GLIBCXX_3.4 4.1.1
+ _ZNSt10istrstreamC1EPKci at GLIBCXX_3.4 4.1.1
+ _ZNSt10istrstreamC1EPci at GLIBCXX_3.4 4.1.1
+ _ZNSt10istrstreamC2EPKci at GLIBCXX_3.4 4.1.1
+ _ZNSt10istrstreamC2EPci at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb0EEC1EP15__locale_structPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb0EEC1EPSt18__moneypunct_cacheIcLb0EEj at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb0EEC1Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb0EEC2EP15__locale_structPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb0EEC2EPSt18__moneypunct_cacheIcLb0EEj at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb0EEC2Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb1EEC1EP15__locale_structPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb1EEC1EPSt18__moneypunct_cacheIcLb1EEj at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb1EEC1Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb1EEC2EP15__locale_structPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb1EEC2EPSt18__moneypunct_cacheIcLb1EEj at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb1EEC2Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb0EEC1EP15__locale_structPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb0EEC1EPSt18__moneypunct_cacheIwLb0EEj at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb0EEC1Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb0EEC2EP15__locale_structPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb0EEC2EPSt18__moneypunct_cacheIwLb0EEj at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb0EEC2Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb1EEC1EP15__locale_structPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb1EEC1EPSt18__moneypunct_cacheIwLb1EEj at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb1EEC1Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb1EEC2EP15__locale_structPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb1EEC2EPSt18__moneypunct_cacheIwLb1EEj at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb1EEC2Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIcEC1EP15__locale_structPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIcEC1EPSt17__timepunct_cacheIcEj at GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIcEC1Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIcEC2EP15__locale_structPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIcEC2EPSt17__timepunct_cacheIcEj at GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIcEC2Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIwEC1EP15__locale_structPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIwEC1EPSt17__timepunct_cacheIwEj at GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIwEC1Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIwEC2EP15__locale_structPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIwEC2EPSt17__timepunct_cacheIwEj at GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIwEC2Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt12__basic_fileIcE6xsgetnEPci at GLIBCXX_3.4 4.1.1
+ _ZNSt12__basic_fileIcE6xsputnEPKci at GLIBCXX_3.4 4.1.1
+ _ZNSt12__basic_fileIcE7seekoffExSt12_Ios_Seekdir at GLIBCXX_3.4 4.1.1
+ _ZNSt12__basic_fileIcE8xsputn_2EPKciS2_i at GLIBCXX_3.4 4.1.1
+ _ZNSt12ctype_bynameIcEC1EPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSt12ctype_bynameIcEC2EPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSt12ctype_bynameIwEC1EPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSt12ctype_bynameIwEC2EPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambuf6setbufEPci at GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambuf7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode at GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambuf8_M_allocEj at GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambuf8_M_setupEPcS0_i at GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC1EPFPvjEPFvS0_E at GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC1EPKai at GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC1EPKci at GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC1EPKhi at GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC1EPaiS0_ at GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC1EPciS0_ at GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC1EPhiS0_ at GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC1Ei at GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC2EPFPvjEPFvS0_E at GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC2EPKai at GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC2EPKci at GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC2EPKhi at GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC2EPaiS0_ at GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC2EPciS0_ at GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC2EPhiS0_ at GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC2Ei at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIcSt11char_traitsIcEE13_M_set_bufferEi at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIcSt11char_traitsIcEE22_M_convert_to_externalEPci at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIcSt11char_traitsIcEE6setbufEPci at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIcSt11char_traitsIcEE6xsgetnEPci at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIcSt11char_traitsIcEE6xsputnEPKci at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIcSt11char_traitsIcEE7_M_seekExSt12_Ios_Seekdir11__mbstate_t at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIcSt11char_traitsIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIwSt11char_traitsIwEE13_M_set_bufferEi at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIwSt11char_traitsIwEE22_M_convert_to_externalEPwi at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIwSt11char_traitsIwEE6setbufEPwi at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIwSt11char_traitsIwEE6xsgetnEPwi at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIwSt11char_traitsIwEE6xsputnEPKwi at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIwSt11char_traitsIwEE7_M_seekExSt12_Ios_Seekdir11__mbstate_t at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIwSt11char_traitsIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE3getEPwi at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE3getEPwiw at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE4readEPwi at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE5seekgExSt12_Ios_Seekdir at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEi at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEi at GLIBCXX_3.4.5 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEij at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE7getlineEPwi at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE7getlineEPwiw at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE8readsomeEPwi at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEE5seekpExSt12_Ios_Seekdir at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEE5writeEPKwi at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEE8_M_writeEPKwi at GLIBCXX_3.4 4.1.1
+ _ZNSt14codecvt_bynameIcc11__mbstate_tEC1EPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSt14codecvt_bynameIcc11__mbstate_tEC2EPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSt14codecvt_bynameIwc11__mbstate_tEC1EPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSt14codecvt_bynameIwc11__mbstate_tEC2EPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSt14collate_bynameIcEC1EPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSt14collate_bynameIcEC2EPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSt14collate_bynameIwEC1EPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSt14collate_bynameIwEC2EPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE10pubseekoffExSt12_Ios_SeekdirSt13_Ios_Openmode at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE5sgetnEPci at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE5sputnEPKci at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE6setbufEPci at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE6xsgetnEPci at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE6xsputnEPKci at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE9pubsetbufEPci at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE10pubseekoffExSt12_Ios_SeekdirSt13_Ios_Openmode at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE5sgetnEPwi at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE5sputnEPKwi at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE6setbufEPwi at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE6xsgetnEPwi at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE6xsputnEPKwi at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE9pubsetbufEPwi at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE6setbufEPci at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7_M_syncEPcjj at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE6setbufEPwi at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7_M_syncEPwjj at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode at GLIBCXX_3.4 4.1.1
+ _ZNSt15messages_bynameIcEC1EPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSt15messages_bynameIcEC2EPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSt15messages_bynameIwEC1EPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSt15messages_bynameIwEC2EPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSt15numpunct_bynameIcEC1EPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSt15numpunct_bynameIcEC2EPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSt15numpunct_bynameIwEC1EPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSt15numpunct_bynameIwEC2EPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1EPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2EPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1EPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2EPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1EPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2EPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1EPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2EPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSt16__numpunct_cacheIcEC1Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt16__numpunct_cacheIcEC2Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt16__numpunct_cacheIwEC1Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt16__numpunct_cacheIwEC2Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt17__timepunct_cacheIcEC1Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt17__timepunct_cacheIcEC2Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt17__timepunct_cacheIwEC1Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt17__timepunct_cacheIwEC2Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt17moneypunct_bynameIcLb0EEC1EPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSt17moneypunct_bynameIcLb0EEC2EPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSt17moneypunct_bynameIcLb1EEC1EPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSt17moneypunct_bynameIcLb1EEC2EPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSt17moneypunct_bynameIwLb0EEC1EPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSt17moneypunct_bynameIwLb0EEC2EPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSt17moneypunct_bynameIwLb1EEC1EPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSt17moneypunct_bynameIwLb1EEC2EPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSt18__moneypunct_cacheIcLb0EEC1Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt18__moneypunct_cacheIcLb0EEC2Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt18__moneypunct_cacheIcLb1EEC1Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt18__moneypunct_cacheIcLb1EEC2Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt18__moneypunct_cacheIwLb0EEC1Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt18__moneypunct_cacheIwLb0EEC2Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt18__moneypunct_cacheIwLb1EEC1Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt18__moneypunct_cacheIwLb1EEC2Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt5ctypeIcEC1EP15__locale_structPKtbj at GLIBCXX_3.4 4.1.1
+ _ZNSt5ctypeIcEC1EPKtbj at GLIBCXX_3.4 4.1.1
+ _ZNSt5ctypeIcEC2EP15__locale_structPKtbj at GLIBCXX_3.4 4.1.1
+ _ZNSt5ctypeIcEC2EPKtbj at GLIBCXX_3.4 4.1.1
+ _ZNSt5ctypeIwEC1EP15__locale_structj at GLIBCXX_3.4 4.1.1
+ _ZNSt5ctypeIwEC1Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt5ctypeIwEC2EP15__locale_structj at GLIBCXX_3.4 4.1.1
+ _ZNSt5ctypeIwEC2Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt6gslice8_IndexerC1EjRKSt8valarrayIjES4_ at GLIBCXX_3.4 4.1.1
+ _ZNSt6gslice8_IndexerC2EjRKSt8valarrayIjES4_ at GLIBCXX_3.4 4.1.1
+ _ZNSt6locale5_Impl16_M_install_cacheEPKNS_5facetEj at GLIBCXX_3.4.7 4.1.1
+ _ZNSt6locale5_ImplC1EPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSt6locale5_ImplC1ERKS0_j at GLIBCXX_3.4 4.1.1
+ _ZNSt6locale5_ImplC1Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt6locale5_ImplC2EPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSt6locale5_ImplC2ERKS0_j at GLIBCXX_3.4 4.1.1
+ _ZNSt6locale5_ImplC2Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt7codecvtIcc11__mbstate_tEC1EP15__locale_structj at GLIBCXX_3.4 4.1.1
+ _ZNSt7codecvtIcc11__mbstate_tEC1Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt7codecvtIcc11__mbstate_tEC2EP15__locale_structj at GLIBCXX_3.4 4.1.1
+ _ZNSt7codecvtIcc11__mbstate_tEC2Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt7codecvtIwc11__mbstate_tEC1EP15__locale_structj at GLIBCXX_3.4 4.1.1
+ _ZNSt7codecvtIwc11__mbstate_tEC1Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt7codecvtIwc11__mbstate_tEC2EP15__locale_structj at GLIBCXX_3.4 4.1.1
+ _ZNSt7codecvtIwc11__mbstate_tEC2Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt7collateIcEC1EP15__locale_structj at GLIBCXX_3.4 4.1.1
+ _ZNSt7collateIcEC1Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt7collateIcEC2EP15__locale_structj at GLIBCXX_3.4 4.1.1
+ _ZNSt7collateIcEC2Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt7collateIwEC1EP15__locale_structj at GLIBCXX_3.4 4.1.1
+ _ZNSt7collateIwEC1Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt7collateIwEC2EP15__locale_structj at GLIBCXX_3.4 4.1.1
+ _ZNSt7collateIwEC2Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt8messagesIcEC1EP15__locale_structPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSt8messagesIcEC1Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt8messagesIcEC2EP15__locale_structPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSt8messagesIcEC2Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt8messagesIwEC1EP15__locale_structPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSt8messagesIwEC1Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt8messagesIwEC2EP15__locale_structPKcj at GLIBCXX_3.4 4.1.1
+ _ZNSt8messagesIwEC2Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIcEC1EP15__locale_structj at GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIcEC1EPSt16__numpunct_cacheIcEj at GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIcEC1Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIcEC2EP15__locale_structj at GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIcEC2EPSt16__numpunct_cacheIcEj at GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIcEC2Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIwEC1EP15__locale_structj at GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIwEC1EPSt16__numpunct_cacheIwEj at GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIwEC1Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIwEC2EP15__locale_structj at GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIwEC2EPSt16__numpunct_cacheIwEj at GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIwEC2Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt8valarrayIjEC1ERKS0_ at GLIBCXX_3.4 4.1.1
+ _ZNSt8valarrayIjEC1Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt8valarrayIjEC2ERKS0_ at GLIBCXX_3.4 4.1.1
+ _ZNSt8valarrayIjEC2Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt8valarrayIjED1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt8valarrayIjED2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt8valarrayIjEixEj at GLIBCXX_3.4 4.1.1
+ _ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Ej at GLIBCXX_3.4 4.1.1
+ _ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Ej at GLIBCXX_3.4 4.1.1
+ _ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_i at GLIBCXX_3.4.9 4.2.1
+ _ZSt16__ostream_insertIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_PKS3_i at GLIBCXX_3.4.9 4.2.1
+ _ZSt17__copy_streambufsIcSt11char_traitsIcEEiPSt15basic_streambufIT_T0_ES6_ at GLIBCXX_3.4.6 4.1.1
+ _ZSt17__copy_streambufsIwSt11char_traitsIwEEiPSt15basic_streambufIT_T0_ES6_ at GLIBCXX_3.4.6 4.1.1
+ _ZSt17__verify_groupingPKcjRKSs at GLIBCXX_3.4.10 4.3
+ _ZSt21__copy_streambufs_eofIcSt11char_traitsIcEEiPSt15basic_streambufIT_T0_ES6_Rb at GLIBCXX_3.4.9 4.2.1
+ _ZSt21__copy_streambufs_eofIwSt11char_traitsIwEEiPSt15basic_streambufIT_T0_ES6_Rb at GLIBCXX_3.4.9 4.2.1
+ _ZThn8_NSdD0Ev at GLIBCXX_3.4 4.1.1
+ _ZThn8_NSdD1Ev at GLIBCXX_3.4 4.1.1
+ _ZThn8_NSt13basic_fstreamIcSt11char_traitsIcEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZThn8_NSt13basic_fstreamIcSt11char_traitsIcEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZThn8_NSt13basic_fstreamIwSt11char_traitsIwEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZThn8_NSt13basic_fstreamIwSt11char_traitsIwEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZThn8_NSt14basic_iostreamIwSt11char_traitsIwEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZThn8_NSt14basic_iostreamIwSt11char_traitsIwEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZThn8_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZThn8_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZThn8_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZThn8_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZThn8_NSt9strstreamD0Ev at GLIBCXX_3.4 4.1.1
+ _ZThn8_NSt9strstreamD1Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSdD0Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSdD1Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSiD0Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSiD1Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSoD0Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSoD1Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt10istrstreamD0Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt10istrstreamD1Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt10ostrstreamD0Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt10ostrstreamD1Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt13basic_fstreamIcSt11char_traitsIcEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt13basic_fstreamIcSt11char_traitsIcEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt13basic_fstreamIwSt11char_traitsIwEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt13basic_fstreamIwSt11char_traitsIwEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt13basic_istreamIwSt11char_traitsIwEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt13basic_istreamIwSt11char_traitsIwEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt13basic_ostreamIwSt11char_traitsIwEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt13basic_ostreamIwSt11char_traitsIwEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt14basic_ifstreamIcSt11char_traitsIcEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt14basic_ifstreamIcSt11char_traitsIcEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt14basic_ifstreamIwSt11char_traitsIwEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt14basic_ifstreamIwSt11char_traitsIwEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt14basic_iostreamIwSt11char_traitsIwEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt14basic_iostreamIwSt11char_traitsIwEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt14basic_ofstreamIcSt11char_traitsIcEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt14basic_ofstreamIcSt11char_traitsIcEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt14basic_ofstreamIwSt11char_traitsIwEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt14basic_ofstreamIwSt11char_traitsIwEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt19basic_istringstreamIcSt11char_traitsIcESaIcEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt19basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt19basic_istringstreamIwSt11char_traitsIwESaIwEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt19basic_istringstreamIwSt11char_traitsIwESaIwEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt9strstreamD0Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt9strstreamD1Ev at GLIBCXX_3.4 4.1.1
+ _Znaj at GLIBCXX_3.4 4.1.1
+ _ZnajRKSt9nothrow_t at GLIBCXX_3.4 4.1.1
+ _Znwj at GLIBCXX_3.4 4.1.1
+ _ZnwjRKSt9nothrow_t at GLIBCXX_3.4 4.1.1
+ _ZNSt12__basic_fileIcEC1EP15__pthread_mutex at GLIBCXX_3.4 4.3.0
+ _ZNSt12__basic_fileIcEC2EP15__pthread_mutex at GLIBCXX_3.4 4.3.0
diff --git a/debian/libstdc++6.symbols.64bit b/debian/libstdc++6.symbols.64bit
new file mode 100644
index 0000000..352b1a8
--- /dev/null
+++ b/debian/libstdc++6.symbols.64bit
@@ -0,0 +1,614 @@
+#include "libstdc++6.symbols.common"
+#include "libstdc++6.symbols.64bit.cxx11"
+ _ZN9__gnu_cxx17__pool_alloc_base16_M_get_free_listEm at GLIBCXX_3.4.2 4.1.1
+ _ZN9__gnu_cxx17__pool_alloc_base9_M_refillEm at GLIBCXX_3.4.2 4.1.1
+ _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE6xsgetnEPcl at GLIBCXX_3.4.10 4.3.0~rc2
+ _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE6xsputnEPKcl at GLIBCXX_3.4.10 4.3.0~rc2
+ _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode at GLIBCXX_3.4.10 4.3.0~rc2
+ _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE6xsgetnEPwl at GLIBCXX_3.4.10 4.3.0~rc2
+ _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE6xsputnEPKwl at GLIBCXX_3.4.10 4.3.0~rc2
+ _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode at GLIBCXX_3.4.10 4.3.0~rc2
+ _ZN9__gnu_cxx6__poolILb0EE16_M_reclaim_blockEPcm at GLIBCXX_3.4.4 4.1.1
+ _ZN9__gnu_cxx6__poolILb0EE16_M_reserve_blockEmm at GLIBCXX_3.4.4 4.1.1
+ _ZN9__gnu_cxx6__poolILb1EE16_M_reclaim_blockEPcm at GLIBCXX_3.4.4 4.1.1
+ _ZN9__gnu_cxx6__poolILb1EE16_M_reserve_blockEmm at GLIBCXX_3.4.4 4.1.1
+ _ZN9__gnu_cxx9free_list6_M_getEm at GLIBCXX_3.4.4 4.1.1
+ _ZNK10__cxxabiv117__class_type_info12__do_dyncastElNS0_10__sub_kindEPKS0_PKvS3_S5_RNS0_16__dyncast_resultE at CXXABI_1.3 4.1.1
+ _ZNK10__cxxabiv117__class_type_info20__do_find_public_srcElPKvPKS0_S2_ at CXXABI_1.3 4.1.1
+ _ZNK10__cxxabiv120__si_class_type_info12__do_dyncastElNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE at CXXABI_1.3 4.1.1
+ _ZNK10__cxxabiv120__si_class_type_info20__do_find_public_srcElPKvPKNS_17__class_type_infoES2_ at CXXABI_1.3 4.1.1
+ _ZNK10__cxxabiv121__vmi_class_type_info12__do_dyncastElNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE at CXXABI_1.3 4.1.1
+ _ZNK10__cxxabiv121__vmi_class_type_info20__do_find_public_srcElPKvPKNS_17__class_type_infoES2_ at CXXABI_1.3 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwm at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwmm at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofERKS2_m at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEwm at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEPKwm at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEPKwmm at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofERKS2_m at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEwm at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE15_M_check_lengthEmmPKc at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE15_M_check_lengthEmmPKc at GLIBCXX_3.4.5 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEPKwm at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEPKwmm at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofERKS2_m at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEwm at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEPKwm at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEPKwmm at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofERKS2_m at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEwm at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE2atEm at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE4copyEPwmm at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE4findEPKwm at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE4findEPKwmm at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE4findERKS2_m at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE4findEwm at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE5rfindEPKwm at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE5rfindEPKwmm at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE5rfindERKS2_m at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE5rfindEwm at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE6substrEmm at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE7compareEmmPKw at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE7compareEmmPKwm at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE7compareEmmRKS2_ at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE7compareEmmRKS2_mm at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE8_M_checkEmPKc at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE8_M_limitEmm at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEEixEm at GLIBCXX_3.4 4.1.1
+ _ZNKSs12find_last_ofEPKcm at GLIBCXX_3.4 4.1.1
+ _ZNKSs12find_last_ofEPKcmm at GLIBCXX_3.4 4.1.1
+ _ZNKSs12find_last_ofERKSsm at GLIBCXX_3.4 4.1.1
+ _ZNKSs12find_last_ofEcm at GLIBCXX_3.4 4.1.1
+ _ZNKSs13find_first_ofEPKcm at GLIBCXX_3.4 4.1.1
+ _ZNKSs13find_first_ofEPKcmm at GLIBCXX_3.4 4.1.1
+ _ZNKSs13find_first_ofERKSsm at GLIBCXX_3.4 4.1.1
+ _ZNKSs13find_first_ofEcm at GLIBCXX_3.4 4.1.1
+ _ZNKSs15_M_check_lengthEmmPKc at GLIBCXX_3.4 4.1.1
+ _ZNKSs15_M_check_lengthEmmPKc at GLIBCXX_3.4.5 4.1.1
+ _ZNKSs16find_last_not_ofEPKcm at GLIBCXX_3.4 4.1.1
+ _ZNKSs16find_last_not_ofEPKcmm at GLIBCXX_3.4 4.1.1
+ _ZNKSs16find_last_not_ofERKSsm at GLIBCXX_3.4 4.1.1
+ _ZNKSs16find_last_not_ofEcm at GLIBCXX_3.4 4.1.1
+ _ZNKSs17find_first_not_ofEPKcm at GLIBCXX_3.4 4.1.1
+ _ZNKSs17find_first_not_ofEPKcmm at GLIBCXX_3.4 4.1.1
+ _ZNKSs17find_first_not_ofERKSsm at GLIBCXX_3.4 4.1.1
+ _ZNKSs17find_first_not_ofEcm at GLIBCXX_3.4 4.1.1
+ _ZNKSs2atEm at GLIBCXX_3.4 4.1.1
+ _ZNKSs4copyEPcmm at GLIBCXX_3.4 4.1.1
+ _ZNKSs4findEPKcm at GLIBCXX_3.4 4.1.1
+ _ZNKSs4findEPKcmm at GLIBCXX_3.4 4.1.1
+ _ZNKSs4findERKSsm at GLIBCXX_3.4 4.1.1
+ _ZNKSs4findEcm at GLIBCXX_3.4 4.1.1
+ _ZNKSs5rfindEPKcm at GLIBCXX_3.4 4.1.1
+ _ZNKSs5rfindEPKcmm at GLIBCXX_3.4 4.1.1
+ _ZNKSs5rfindERKSsm at GLIBCXX_3.4 4.1.1
+ _ZNKSs5rfindEcm at GLIBCXX_3.4 4.1.1
+ _ZNKSs6substrEmm at GLIBCXX_3.4 4.1.1
+ _ZNKSs7compareEmmPKc at GLIBCXX_3.4 4.1.1
+ _ZNKSs7compareEmmPKcm at GLIBCXX_3.4 4.1.1
+ _ZNKSs7compareEmmRKSs at GLIBCXX_3.4 4.1.1
+ _ZNKSs7compareEmmRKSsmm at GLIBCXX_3.4 4.1.1
+ _ZNKSs8_M_checkEmPKc at GLIBCXX_3.4 4.1.1
+ _ZNKSs8_M_limitEmm at GLIBCXX_3.4 4.1.1
+ _ZNKSsixEm at GLIBCXX_3.4 4.1.1
+ _ZNKSt11__timepunctIcE6_M_putEPcmPKcPK2tm at GLIBCXX_3.4 4.1.1
+ _ZNKSt11__timepunctIwE6_M_putEPwmPKwPK2tm at GLIBCXX_3.4 4.1.1
+ _ZNKSt19__codecvt_utf8_baseIDiE9do_lengthER11__mbstate_tPKcS4_m at GLIBCXX_3.4.21 5
+ _ZNKSt19__codecvt_utf8_baseIDsE9do_lengthER11__mbstate_tPKcS4_m at GLIBCXX_3.4.21 5
+ _ZNKSt19__codecvt_utf8_baseIwE9do_lengthER11__mbstate_tPKcS4_m at GLIBCXX_3.4.21 5
+ _ZNKSt20__codecvt_utf16_baseIDiE9do_lengthER11__mbstate_tPKcS4_m at GLIBCXX_3.4.21 5
+ _ZNKSt20__codecvt_utf16_baseIDsE9do_lengthER11__mbstate_tPKcS4_m at GLIBCXX_3.4.21 5
+ _ZNKSt20__codecvt_utf16_baseIwE9do_lengthER11__mbstate_tPKcS4_m at GLIBCXX_3.4.21 5
+ _ZNKSt25__codecvt_utf8_utf16_baseIDiE9do_lengthER11__mbstate_tPKcS4_m at GLIBCXX_3.4.21 5
+ _ZNKSt25__codecvt_utf8_utf16_baseIDsE9do_lengthER11__mbstate_tPKcS4_m at GLIBCXX_3.4.21 5
+ _ZNKSt25__codecvt_utf8_utf16_baseIwE9do_lengthER11__mbstate_tPKcS4_m at GLIBCXX_3.4.21 5
+ _ZNKSt7codecvtIDic11__mbstate_tE9do_lengthERS0_PKcS4_m at GLIBCXX_3.4.21 5
+ _ZNKSt7codecvtIDsc11__mbstate_tE9do_lengthERS0_PKcS4_m at GLIBCXX_3.4.21 5
+ _ZNKSt7codecvtIcc11__mbstate_tE9do_lengthERS0_PKcS4_m at GLIBCXX_3.4 4.1.1
+ _ZNKSt7codecvtIwc11__mbstate_tE9do_lengthERS0_PKcS4_m at GLIBCXX_3.4 4.1.1
+ _ZNKSt7collateIcE12_M_transformEPcPKcm at GLIBCXX_3.4 4.1.1
+ _ZNKSt7collateIwE12_M_transformEPwPKwm at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE12_M_group_intEPKcmcRSt8ios_basePcS9_Ri at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE14_M_group_floatEPKcmcS6_PcS7_Ri at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6_M_padEclRSt8ios_basePcPKcRi at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE12_M_group_intEPKcmwRSt8ios_basePwS9_Ri at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE14_M_group_floatEPKcmwPKwPwS9_Ri at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6_M_padEwlRSt8ios_basePwPKwRi at GLIBCXX_3.4 4.1.1
+ _ZNKSt8__detail20_Prime_rehash_policy11_M_next_bktEm at GLIBCXX_3.4.18 4.8
+ _ZNKSt8__detail20_Prime_rehash_policy14_M_need_rehashEmmm at GLIBCXX_3.4.18 4.8
+ _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_numES3_S3_RiiimRSt8ios_baseRSt12_Ios_Iostate at GLIBCXX_3.4 4.1.1
+ _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE15_M_extract_nameES3_S3_RiPPKcmRSt8ios_baseRSt12_Ios_Iostate at GLIBCXX_3.4 4.1.1
+ _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE24_M_extract_wday_or_monthES3_S3_RiPPKcmRSt8ios_baseRSt12_Ios_Iostate at GLIBCXX_3.4.14 4.5
+ _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_numES3_S3_RiiimRSt8ios_baseRSt12_Ios_Iostate at GLIBCXX_3.4 4.1.1
+ _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE15_M_extract_nameES3_S3_RiPPKwmRSt8ios_baseRSt12_Ios_Iostate at GLIBCXX_3.4 4.1.1
+ _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE24_M_extract_wday_or_monthES3_S3_RiPPKwmRSt8ios_baseRSt12_Ios_Iostate at GLIBCXX_3.4.14 4.5
+ _ZNKSt8valarrayImE4sizeEv at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE10_S_compareEmm at GLIBCXX_3.4.16 4.6.0
+ _ZNSbIwSt11char_traitsIwESaIwEE12_S_constructEmwRKS1_ at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE14_M_replace_auxEmmmw at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE15_M_replace_safeEmmPKwm at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE18_S_construct_aux_2EmwRKS1_ at GLIBCXX_3.4.14 4.5
+ _ZNSbIwSt11char_traitsIwESaIwEE2atEm at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE4_Rep26_M_set_length_and_sharableEm at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE4_Rep26_M_set_length_and_sharableEm at GLIBCXX_3.4.5 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE4_Rep8_M_cloneERKS1_m at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE4_Rep9_S_createEmmRKS1_ at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE5eraseEmm at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6appendEPKwm at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6appendERKS2_mm at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6appendEmw at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6assignEPKwm at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6assignERKS2_mm at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6assignEmw at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS2_EEmw at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6insertEmPKw at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6insertEmPKwm at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6insertEmRKS2_ at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6insertEmRKS2_mm at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6insertEmmw at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6resizeEm at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6resizeEmw at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7_M_copyEPwPKwm at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7_M_copyEPwPKwm at GLIBCXX_3.4.5 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7_M_moveEPwPKwm at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7_M_moveEPwPKwm at GLIBCXX_3.4.5 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_PKwm at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_mw at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmPKw at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmPKwm at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmRKS2_ at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmRKS2_mm at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmmw at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7reserveEm at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwmw at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwmw at GLIBCXX_3.4.5 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE9_M_mutateEmmm at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEC1EPKwmRKS1_ at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_mm at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_mmRKS1_ at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEC1EmwRKS1_ at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEC2EPKwmRKS1_ at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_mm at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_mmRKS1_ at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEC2EmwRKS1_ at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEixEm at GLIBCXX_3.4 4.1.1
+ _ZNSi3getEPcl at GLIBCXX_3.4 4.1.1
+ _ZNSi3getEPclc at GLIBCXX_3.4 4.1.1
+ _ZNSi4readEPcl at GLIBCXX_3.4 4.1.1
+ _ZNSi5seekgElSt12_Ios_Seekdir at GLIBCXX_3.4 4.1.1
+ _ZNSi6ignoreEl at GLIBCXX_3.4 4.1.1
+ _ZNSi6ignoreEl at GLIBCXX_3.4.5 4.1.1
+ _ZNSi6ignoreEli at GLIBCXX_3.4 4.1.1
+ _ZNSi7getlineEPcl at GLIBCXX_3.4 4.1.1
+ _ZNSi7getlineEPclc at GLIBCXX_3.4 4.1.1
+ _ZNSi8readsomeEPcl at GLIBCXX_3.4 4.1.1
+ _ZNSo5seekpElSt12_Ios_Seekdir at GLIBCXX_3.4 4.1.1
+ _ZNSo5writeEPKcl at GLIBCXX_3.4 4.1.1
+ _ZNSo8_M_writeEPKcl at GLIBCXX_3.4 4.1.1
+ _ZNSs10_S_compareEmm at GLIBCXX_3.4.16 4.6.0
+ _ZNSs12_S_constructEmcRKSaIcE at GLIBCXX_3.4 4.1.1
+ _ZNSs14_M_replace_auxEmmmc at GLIBCXX_3.4 4.1.1
+ _ZNSs15_M_replace_safeEmmPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSs18_S_construct_aux_2EmcRKSaIcE at GLIBCXX_3.4.14 4.5
+ _ZNSs2atEm at GLIBCXX_3.4 4.1.1
+ _ZNSs4_Rep26_M_set_length_and_sharableEm at GLIBCXX_3.4 4.1.1
+ _ZNSs4_Rep26_M_set_length_and_sharableEm at GLIBCXX_3.4.5 4.1.1
+ _ZNSs4_Rep8_M_cloneERKSaIcEm at GLIBCXX_3.4 4.1.1
+ _ZNSs4_Rep9_S_createEmmRKSaIcE at GLIBCXX_3.4 4.1.1
+ _ZNSs5eraseEmm at GLIBCXX_3.4 4.1.1
+ _ZNSs6appendEPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSs6appendERKSsmm at GLIBCXX_3.4 4.1.1
+ _ZNSs6appendEmc at GLIBCXX_3.4 4.1.1
+ _ZNSs6assignEPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSs6assignERKSsmm at GLIBCXX_3.4 4.1.1
+ _ZNSs6assignEmc at GLIBCXX_3.4 4.1.1
+ _ZNSs6insertEN9__gnu_cxx17__normal_iteratorIPcSsEEmc at GLIBCXX_3.4 4.1.1
+ _ZNSs6insertEmPKc at GLIBCXX_3.4 4.1.1
+ _ZNSs6insertEmPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSs6insertEmRKSs at GLIBCXX_3.4 4.1.1
+ _ZNSs6insertEmRKSsmm at GLIBCXX_3.4 4.1.1
+ _ZNSs6insertEmmc at GLIBCXX_3.4 4.1.1
+ _ZNSs6resizeEm at GLIBCXX_3.4 4.1.1
+ _ZNSs6resizeEmc at GLIBCXX_3.4 4.1.1
+ _ZNSs7_M_copyEPcPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSs7_M_copyEPcPKcm at GLIBCXX_3.4.5 4.1.1
+ _ZNSs7_M_moveEPcPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSs7_M_moveEPcPKcm at GLIBCXX_3.4.5 4.1.1
+ _ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKcm at GLIBCXX_3.4 4.1.1
+ _ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_mc at GLIBCXX_3.4 4.1.1
+ _ZNSs7replaceEmmPKc at GLIBCXX_3.4 4.1.1
+ _ZNSs7replaceEmmPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSs7replaceEmmRKSs at GLIBCXX_3.4 4.1.1
+ _ZNSs7replaceEmmRKSsmm at GLIBCXX_3.4 4.1.1
+ _ZNSs7replaceEmmmc at GLIBCXX_3.4 4.1.1
+ _ZNSs7reserveEm at GLIBCXX_3.4 4.1.1
+ _ZNSs9_M_assignEPcmc at GLIBCXX_3.4 4.1.1
+ _ZNSs9_M_assignEPcmc at GLIBCXX_3.4.5 4.1.1
+ _ZNSs9_M_mutateEmmm at GLIBCXX_3.4 4.1.1
+ _ZNSsC1EPKcmRKSaIcE at GLIBCXX_3.4 4.1.1
+ _ZNSsC1ERKSsmm at GLIBCXX_3.4 4.1.1
+ _ZNSsC1ERKSsmmRKSaIcE at GLIBCXX_3.4 4.1.1
+ _ZNSsC1EmcRKSaIcE at GLIBCXX_3.4 4.1.1
+ _ZNSsC2EPKcmRKSaIcE at GLIBCXX_3.4 4.1.1
+ _ZNSsC2ERKSsmm at GLIBCXX_3.4 4.1.1
+ _ZNSsC2ERKSsmmRKSaIcE at GLIBCXX_3.4 4.1.1
+ _ZNSsC2EmcRKSaIcE at GLIBCXX_3.4 4.1.1
+ _ZNSsixEm at GLIBCXX_3.4 4.1.1
+ _ZNSt10istrstreamC1EPKcl at GLIBCXX_3.4 4.1.1
+ _ZNSt10istrstreamC1EPcl at GLIBCXX_3.4 4.1.1
+ _ZNSt10istrstreamC2EPKcl at GLIBCXX_3.4 4.1.1
+ _ZNSt10istrstreamC2EPcl at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb0EEC1EP15__locale_structPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb0EEC1EPSt18__moneypunct_cacheIcLb0EEm at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb0EEC1Em at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb0EEC2EP15__locale_structPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb0EEC2EPSt18__moneypunct_cacheIcLb0EEm at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb0EEC2Em at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb1EEC1EP15__locale_structPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb1EEC1EPSt18__moneypunct_cacheIcLb1EEm at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb1EEC1Em at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb1EEC2EP15__locale_structPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb1EEC2EPSt18__moneypunct_cacheIcLb1EEm at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb1EEC2Em at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb0EEC1EP15__locale_structPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb0EEC1EPSt18__moneypunct_cacheIwLb0EEm at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb0EEC1Em at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb0EEC2EP15__locale_structPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb0EEC2EPSt18__moneypunct_cacheIwLb0EEm at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb0EEC2Em at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb1EEC1EP15__locale_structPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb1EEC1EPSt18__moneypunct_cacheIwLb1EEm at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb1EEC1Em at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb1EEC2EP15__locale_structPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb1EEC2EPSt18__moneypunct_cacheIwLb1EEm at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb1EEC2Em at GLIBCXX_3.4 4.1.1
+ _ZNSt11this_thread11__sleep_forENSt6chrono8durationIlSt5ratioILl1ELl1EEEENS1_IlS2_ILl1ELl1000000000EEEE at GLIBCXX_3.4.18 4.8
+ _ZNSt11__timepunctIcEC1EP15__locale_structPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIcEC1EPSt17__timepunct_cacheIcEm at GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIcEC1Em at GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIcEC2EP15__locale_structPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIcEC2EPSt17__timepunct_cacheIcEm at GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIcEC2Em at GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIwEC1EP15__locale_structPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIwEC1EPSt17__timepunct_cacheIwEm at GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIwEC1Em at GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIwEC2EP15__locale_structPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIwEC2EPSt17__timepunct_cacheIwEm at GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIwEC2Em at GLIBCXX_3.4 4.1.1
+ _ZNSt12__basic_fileIcE6xsgetnEPcl at GLIBCXX_3.4 4.1.1
+ _ZNSt12__basic_fileIcE6xsputnEPKcl at GLIBCXX_3.4 4.1.1
+ _ZNSt12__basic_fileIcE7seekoffElSt12_Ios_Seekdir at GLIBCXX_3.4 4.1.1
+ _ZNSt12__basic_fileIcE8xsputn_2EPKclS2_l at GLIBCXX_3.4 4.1.1
+ _ZNSt12ctype_bynameIcEC1EPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt12ctype_bynameIcEC1ERKSsm at GLIBCXX_3.4.21 5
+ _ZNSt12ctype_bynameIcEC2EPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt12ctype_bynameIcEC2ERKSsm at GLIBCXX_3.4.21 5
+ _ZNSt12ctype_bynameIwEC1EPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt12ctype_bynameIwEC1ERKSsm at GLIBCXX_3.4.21 5
+ _ZNSt12ctype_bynameIwEC2EPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt12ctype_bynameIwEC2ERKSsm at GLIBCXX_3.4.21 5
+ _ZNSt12strstreambuf6setbufEPcl at GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambuf7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode at GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambuf8_M_allocEm at GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambuf8_M_setupEPcS0_l at GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC1EPFPvmEPFvS0_E at GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC1EPKal at GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC1EPKcl at GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC1EPKhl at GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC1EPalS0_ at GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC1EPclS0_ at GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC1EPhlS0_ at GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC1El at GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC2EPFPvmEPFvS0_E at GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC2EPKal at GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC2EPKcl at GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC2EPKhl at GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC2EPalS0_ at GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC2EPclS0_ at GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC2EPhlS0_ at GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC2El at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIcSt11char_traitsIcEE13_M_set_bufferEl at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIcSt11char_traitsIcEE22_M_convert_to_externalEPcl at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIcSt11char_traitsIcEE6setbufEPcl at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIcSt11char_traitsIcEE6xsgetnEPcl at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIcSt11char_traitsIcEE6xsputnEPKcl at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIcSt11char_traitsIcEE7_M_seekElSt12_Ios_Seekdir11__mbstate_t at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIcSt11char_traitsIcEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIwSt11char_traitsIwEE13_M_set_bufferEl at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIwSt11char_traitsIwEE22_M_convert_to_externalEPwl at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIwSt11char_traitsIwEE6setbufEPwl at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIwSt11char_traitsIwEE6xsgetnEPwl at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIwSt11char_traitsIwEE6xsputnEPKwl at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIwSt11char_traitsIwEE7_M_seekElSt12_Ios_Seekdir11__mbstate_t at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIwSt11char_traitsIwEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE3getEPwl at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE3getEPwlw at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE4readEPwl at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE5seekgElSt12_Ios_Seekdir at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEl at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEl at GLIBCXX_3.4.5 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreElj at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE7getlineEPwl at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE7getlineEPwlw at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE8readsomeEPwl at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEE5seekpElSt12_Ios_Seekdir at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEE5writeEPKwl at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEE8_M_writeEPKwl at GLIBCXX_3.4 4.1.1
+ _ZNSt14codecvt_bynameIcc11__mbstate_tEC1EPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt14codecvt_bynameIcc11__mbstate_tEC1ERKSsm at GLIBCXX_3.4.21 5
+ _ZNSt14codecvt_bynameIcc11__mbstate_tEC2EPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt14codecvt_bynameIcc11__mbstate_tEC2ERKSsm at GLIBCXX_3.4.21 5
+ _ZNSt14codecvt_bynameIwc11__mbstate_tEC1EPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt14codecvt_bynameIwc11__mbstate_tEC1ERKSsm at GLIBCXX_3.4.21 5
+ _ZNSt14codecvt_bynameIwc11__mbstate_tEC2EPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt14codecvt_bynameIwc11__mbstate_tEC2ERKSsm at GLIBCXX_3.4.21 5
+ _ZNSt14collate_bynameIcEC1EPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt14collate_bynameIcEC2EPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt14collate_bynameIwEC1EPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt14collate_bynameIwEC2EPKcm at GLIBCXX_3.4 4.1.1
+ (arch=!alpha !powerpc !ppc64 !ppc64el !s390 !s390x)_ZNSt14numeric_limitsIeE12max_digits10E at GLIBCXX_3.4.14 4.5.0
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE10pubseekoffElSt12_Ios_SeekdirSt13_Ios_Openmode at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE12__safe_gbumpEl at GLIBCXX_3.4.16 4.6.0
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE12__safe_pbumpEl at GLIBCXX_3.4.16 4.6.0
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE5sgetnEPcl at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE5sputnEPKcl at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE6setbufEPcl at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE6xsgetnEPcl at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE6xsputnEPKcl at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE9pubsetbufEPcl at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE6setbufEPcl at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7_M_syncEPcmm at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE8_M_pbumpEPcS4_l at GLIBCXX_3.4.16 4.6.0
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE10pubseekoffElSt12_Ios_SeekdirSt13_Ios_Openmode at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE5sgetnEPwl at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE5sputnEPKwl at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE6setbufEPwl at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE6xsgetnEPwl at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE6xsputnEPKwl at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE9pubsetbufEPwl at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE12__safe_gbumpEl at GLIBCXX_3.4.16 4.6.0
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE12__safe_pbumpEl at GLIBCXX_3.4.16 4.6.0
+ _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE6setbufEPwl at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7_M_syncEPwmm at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE8_M_pbumpEPwS4_l at GLIBCXX_3.4.16 4.6.0
+ _ZNSt15messages_bynameIcEC1EPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt15messages_bynameIcEC1ERKSsm at GLIBCXX_3.4.21 5
+ _ZNSt15messages_bynameIcEC2EPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt15messages_bynameIcEC2ERKSsm at GLIBCXX_3.4.21 5
+ _ZNSt15messages_bynameIwEC1EPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt15messages_bynameIwEC1ERKSsm at GLIBCXX_3.4.21 5
+ _ZNSt15messages_bynameIwEC2EPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt15messages_bynameIwEC2ERKSsm at GLIBCXX_3.4.21 5
+ _ZNSt15numpunct_bynameIcEC1EPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt15numpunct_bynameIcEC1ERKSsm at GLIBCXX_3.4.21 5
+ _ZNSt15numpunct_bynameIcEC2EPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt15numpunct_bynameIcEC2ERKSsm at GLIBCXX_3.4.21 5
+ _ZNSt15numpunct_bynameIwEC1EPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt15numpunct_bynameIwEC1ERKSsm at GLIBCXX_3.4.21 5
+ _ZNSt15numpunct_bynameIwEC2EPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt15numpunct_bynameIwEC2ERKSsm at GLIBCXX_3.4.21 5
+
+ _ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1EPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1ERKSsm at GLIBCXX_3.4.21 5
+ _ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2EPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2ERKSsm at GLIBCXX_3.4.21 5
+ _ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1EPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1ERKSsm at GLIBCXX_3.4.21 5
+ _ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2EPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2ERKSsm at GLIBCXX_3.4.21 5
+ _ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1EPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1ERKSsm at GLIBCXX_3.4.21 5
+ _ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2EPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2ERKSsm at GLIBCXX_3.4.21 5
+ _ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1EPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1ERKSsm at GLIBCXX_3.4.21 5
+ _ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2EPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2ERKSsm at GLIBCXX_3.4.21 5
+ _ZNSt16__numpunct_cacheIcEC1Em at GLIBCXX_3.4 4.1.1
+ _ZNSt16__numpunct_cacheIcEC2Em at GLIBCXX_3.4 4.1.1
+ _ZNSt16__numpunct_cacheIwEC1Em at GLIBCXX_3.4 4.1.1
+ _ZNSt16__numpunct_cacheIwEC2Em at GLIBCXX_3.4 4.1.1
+ _ZNSt17__timepunct_cacheIcEC1Em at GLIBCXX_3.4 4.1.1
+ _ZNSt17__timepunct_cacheIcEC2Em at GLIBCXX_3.4 4.1.1
+ _ZNSt17__timepunct_cacheIwEC1Em at GLIBCXX_3.4 4.1.1
+ _ZNSt17__timepunct_cacheIwEC2Em at GLIBCXX_3.4 4.1.1
+ _ZNSt17moneypunct_bynameIcLb0EEC1EPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt17moneypunct_bynameIcLb0EEC1ERKSsm at GLIBCXX_3.4.21 5
+ _ZNSt17moneypunct_bynameIcLb0EEC2EPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt17moneypunct_bynameIcLb0EEC2ERKSsm at GLIBCXX_3.4.21 5
+ _ZNSt17moneypunct_bynameIcLb1EEC1EPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt17moneypunct_bynameIcLb1EEC1ERKSsm at GLIBCXX_3.4.21 5
+ _ZNSt17moneypunct_bynameIcLb1EEC2EPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt17moneypunct_bynameIcLb1EEC2ERKSsm at GLIBCXX_3.4.21 5
+ _ZNSt17moneypunct_bynameIwLb0EEC1EPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt17moneypunct_bynameIwLb0EEC1ERKSsm at GLIBCXX_3.4.21 5
+ _ZNSt17moneypunct_bynameIwLb0EEC2EPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt17moneypunct_bynameIwLb0EEC2ERKSsm at GLIBCXX_3.4.21 5
+ _ZNSt17moneypunct_bynameIwLb1EEC1EPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt17moneypunct_bynameIwLb1EEC1ERKSsm at GLIBCXX_3.4.21 5
+ _ZNSt17moneypunct_bynameIwLb1EEC2EPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt17moneypunct_bynameIwLb1EEC2ERKSsm at GLIBCXX_3.4.21 5
+ _ZNSt18__moneypunct_cacheIcLb0EEC1Em at GLIBCXX_3.4 4.1.1
+ _ZNSt18__moneypunct_cacheIcLb0EEC2Em at GLIBCXX_3.4 4.1.1
+ _ZNSt18__moneypunct_cacheIcLb1EEC1Em at GLIBCXX_3.4 4.1.1
+ _ZNSt18__moneypunct_cacheIcLb1EEC2Em at GLIBCXX_3.4 4.1.1
+ _ZNSt18__moneypunct_cacheIwLb0EEC1Em at GLIBCXX_3.4 4.1.1
+ _ZNSt18__moneypunct_cacheIwLb0EEC2Em at GLIBCXX_3.4 4.1.1
+ _ZNSt18__moneypunct_cacheIwLb1EEC1Em at GLIBCXX_3.4 4.1.1
+ _ZNSt18__moneypunct_cacheIwLb1EEC2Em at GLIBCXX_3.4 4.1.1
+ (arch=!kfreebsd-amd64)_ZNSt28__atomic_futex_unsigned_base19_M_futex_wait_untilEPjjbNSt6chrono8durationIlSt5ratioILl1ELl1EEEENS2_IlS3_ILl1ELl1000000000EEEE at GLIBCXX_3.4.21 5
+ _ZNSt5ctypeIcEC1EP15__locale_structPKtbm at GLIBCXX_3.4 4.1.1
+ _ZNSt5ctypeIcEC1EPKtbm at GLIBCXX_3.4 4.1.1
+ _ZNSt5ctypeIcEC2EP15__locale_structPKtbm at GLIBCXX_3.4 4.1.1
+ _ZNSt5ctypeIcEC2EPKtbm at GLIBCXX_3.4 4.1.1
+ _ZNSt5ctypeIwEC1EP15__locale_structm at GLIBCXX_3.4 4.1.1
+ _ZNSt5ctypeIwEC1Em at GLIBCXX_3.4 4.1.1
+ _ZNSt5ctypeIwEC2EP15__locale_structm at GLIBCXX_3.4 4.1.1
+ _ZNSt5ctypeIwEC2Em at GLIBCXX_3.4 4.1.1
+ _ZNSt6gslice8_IndexerC1EmRKSt8valarrayImES4_ at GLIBCXX_3.4 4.1.1
+ _ZNSt6gslice8_IndexerC2EmRKSt8valarrayImES4_ at GLIBCXX_3.4 4.1.1
+ _ZNSt6locale5_Impl16_M_install_cacheEPKNS_5facetEm at GLIBCXX_3.4.7 4.1.1
+ _ZNSt6locale5_ImplC1EPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt6locale5_ImplC1ERKS0_m at GLIBCXX_3.4 4.1.1
+ _ZNSt6locale5_ImplC1Em at GLIBCXX_3.4 4.1.1
+ _ZNSt6locale5_ImplC2EPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt6locale5_ImplC2ERKS0_m at GLIBCXX_3.4 4.1.1
+ _ZNSt6locale5_ImplC2Em at GLIBCXX_3.4 4.1.1
+
+ _ZNSt7codecvtIcc11__mbstate_tEC1EP15__locale_structm at GLIBCXX_3.4 4.1.1
+ _ZNSt7codecvtIcc11__mbstate_tEC1Em at GLIBCXX_3.4 4.1.1
+ _ZNSt7codecvtIcc11__mbstate_tEC2EP15__locale_structm at GLIBCXX_3.4 4.1.1
+ _ZNSt7codecvtIcc11__mbstate_tEC2Em at GLIBCXX_3.4 4.1.1
+ _ZNSt7codecvtIwc11__mbstate_tEC1EP15__locale_structm at GLIBCXX_3.4 4.1.1
+ _ZNSt7codecvtIwc11__mbstate_tEC1Em at GLIBCXX_3.4 4.1.1
+ _ZNSt7codecvtIwc11__mbstate_tEC2EP15__locale_structm at GLIBCXX_3.4 4.1.1
+ _ZNSt7codecvtIwc11__mbstate_tEC2Em at GLIBCXX_3.4 4.1.1
+ _ZNSt7collateIcEC1EP15__locale_structm at GLIBCXX_3.4 4.1.1
+ _ZNSt7collateIcEC1Em at GLIBCXX_3.4 4.1.1
+ _ZNSt7collateIcEC2EP15__locale_structm at GLIBCXX_3.4 4.1.1
+ _ZNSt7collateIcEC2Em at GLIBCXX_3.4 4.1.1
+ _ZNSt7collateIwEC1EP15__locale_structm at GLIBCXX_3.4 4.1.1
+ _ZNSt7collateIwEC1Em at GLIBCXX_3.4 4.1.1
+ _ZNSt7collateIwEC2EP15__locale_structm at GLIBCXX_3.4 4.1.1
+ _ZNSt7collateIwEC2Em at GLIBCXX_3.4 4.1.1
+ _ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em at GLIBCXX_3.4 4.1.1
+ _ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em at GLIBCXX_3.4 4.1.1
+ _ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Em at GLIBCXX_3.4 4.1.1
+ _ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Em at GLIBCXX_3.4 4.1.1
+ _ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Em at GLIBCXX_3.4 4.1.1
+ _ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Em at GLIBCXX_3.4 4.1.1
+ _ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Em at GLIBCXX_3.4 4.1.1
+ _ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em at GLIBCXX_3.4 4.1.1
+ _ZNSt8messagesIcEC1EP15__locale_structPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt8messagesIcEC1Em at GLIBCXX_3.4 4.1.1
+ _ZNSt8messagesIcEC2EP15__locale_structPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt8messagesIcEC2Em at GLIBCXX_3.4 4.1.1
+ _ZNSt8messagesIwEC1EP15__locale_structPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt8messagesIwEC1Em at GLIBCXX_3.4 4.1.1
+ _ZNSt8messagesIwEC2EP15__locale_structPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt8messagesIwEC2Em at GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIcEC1EP15__locale_structm at GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIcEC1EPSt16__numpunct_cacheIcEm at GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIcEC1Em at GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIcEC2EP15__locale_structm at GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIcEC2EPSt16__numpunct_cacheIcEm at GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIcEC2Em at GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIwEC1EP15__locale_structm at GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIwEC1EPSt16__numpunct_cacheIwEm at GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIwEC1Em at GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIwEC2EP15__locale_structm at GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIwEC2EPSt16__numpunct_cacheIwEm at GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIwEC2Em at GLIBCXX_3.4 4.1.1
+ _ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em at GLIBCXX_3.4 4.1.1
+ _ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em at GLIBCXX_3.4 4.1.1
+ _ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Em at GLIBCXX_3.4 4.1.1
+ _ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Em at GLIBCXX_3.4 4.1.1
+ _ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Em at GLIBCXX_3.4 4.1.1
+ _ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Em at GLIBCXX_3.4 4.1.1
+ _ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Em at GLIBCXX_3.4 4.1.1
+ _ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em at GLIBCXX_3.4 4.1.1
+ _ZNSt8valarrayImEC1ERKS0_ at GLIBCXX_3.4 4.1.1
+ _ZNSt8valarrayImEC1Em at GLIBCXX_3.4 4.1.1
+ _ZNSt8valarrayImEC2ERKS0_ at GLIBCXX_3.4 4.1.1
+ _ZNSt8valarrayImEC2Em at GLIBCXX_3.4 4.1.1
+ _ZNSt8valarrayImED1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt8valarrayImED2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt8valarrayImEixEm at GLIBCXX_3.4 4.1.1
+ _ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em at GLIBCXX_3.4 4.1.1
+ _ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em at GLIBCXX_3.4 4.1.1
+ _ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Em at GLIBCXX_3.4 4.1.1
+ _ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Em at GLIBCXX_3.4 4.1.1
+ _ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Em at GLIBCXX_3.4 4.1.1
+ _ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Em at GLIBCXX_3.4 4.1.1
+ _ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Em at GLIBCXX_3.4 4.1.1
+ _ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em at GLIBCXX_3.4 4.1.1
+ _ZSt11_Hash_bytesPKvmm at CXXABI_1.3.5 4.6
+ _ZSt15_Fnv_hash_bytesPKvmm at CXXABI_1.3.5 4.6
+ _ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l at GLIBCXX_3.4.9 4.2.1
+ _ZSt16__ostream_insertIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_PKS3_l at GLIBCXX_3.4.9 4.2.1
+ _ZSt17__copy_streambufsIcSt11char_traitsIcEElPSt15basic_streambufIT_T0_ES6_ at GLIBCXX_3.4.8 4.1.1
+ _ZSt17__copy_streambufsIwSt11char_traitsIwEElPSt15basic_streambufIT_T0_ES6_ at GLIBCXX_3.4.8 4.1.1
+ _ZSt17__verify_groupingPKcmRKSs at GLIBCXX_3.4.10 4.3
+ _ZSt21__copy_streambufs_eofIcSt11char_traitsIcEElPSt15basic_streambufIT_T0_ES6_Rb at GLIBCXX_3.4.9 4.2.1
+ _ZSt21__copy_streambufs_eofIwSt11char_traitsIwEElPSt15basic_streambufIT_T0_ES6_Rb at GLIBCXX_3.4.9 4.2.1
+ _ZTIPKn at CXXABI_1.3.5 4.6
+ _ZTIPKo at CXXABI_1.3.5 4.6
+ _ZTIPn at CXXABI_1.3.5 4.6
+ _ZTIPo at CXXABI_1.3.5 4.6
+ _ZTIn at CXXABI_1.3.5 4.6
+ _ZTIo at CXXABI_1.3.5 4.6
+ _ZTSPKn at CXXABI_1.3.9 5
+ _ZTSPKo at CXXABI_1.3.9 5
+ _ZTSPn at CXXABI_1.3.9 5
+ _ZTSPo at CXXABI_1.3.9 5
+ _ZTSn at CXXABI_1.3.9 5
+ _ZTSo at CXXABI_1.3.9 5
+ _ZThn16_NSdD0Ev at GLIBCXX_3.4 4.1.1
+ _ZThn16_NSdD1Ev at GLIBCXX_3.4 4.1.1
+ _ZThn16_NSt13basic_fstreamIcSt11char_traitsIcEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZThn16_NSt13basic_fstreamIcSt11char_traitsIcEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZThn16_NSt13basic_fstreamIwSt11char_traitsIwEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZThn16_NSt13basic_fstreamIwSt11char_traitsIwEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZThn16_NSt14basic_iostreamIwSt11char_traitsIwEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZThn16_NSt14basic_iostreamIwSt11char_traitsIwEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZThn16_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZThn16_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZThn16_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZThn16_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZThn16_NSt9strstreamD0Ev at GLIBCXX_3.4 4.1.1
+ _ZThn16_NSt9strstreamD1Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n24_NSdD0Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n24_NSdD1Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n24_NSiD0Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n24_NSiD1Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n24_NSoD0Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n24_NSoD1Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n24_NSt10istrstreamD0Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n24_NSt10istrstreamD1Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n24_NSt10ostrstreamD0Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n24_NSt10ostrstreamD1Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n24_NSt13basic_fstreamIcSt11char_traitsIcEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n24_NSt13basic_fstreamIcSt11char_traitsIcEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n24_NSt13basic_fstreamIwSt11char_traitsIwEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n24_NSt13basic_fstreamIwSt11char_traitsIwEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n24_NSt13basic_istreamIwSt11char_traitsIwEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n24_NSt13basic_istreamIwSt11char_traitsIwEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n24_NSt13basic_ostreamIwSt11char_traitsIwEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n24_NSt13basic_ostreamIwSt11char_traitsIwEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n24_NSt14basic_ifstreamIcSt11char_traitsIcEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n24_NSt14basic_ifstreamIcSt11char_traitsIcEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n24_NSt14basic_ifstreamIwSt11char_traitsIwEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n24_NSt14basic_ifstreamIwSt11char_traitsIwEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n24_NSt14basic_iostreamIwSt11char_traitsIwEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n24_NSt14basic_iostreamIwSt11char_traitsIwEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n24_NSt14basic_ofstreamIcSt11char_traitsIcEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n24_NSt14basic_ofstreamIcSt11char_traitsIcEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n24_NSt14basic_ofstreamIwSt11char_traitsIwEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n24_NSt14basic_ofstreamIwSt11char_traitsIwEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n24_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n24_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n24_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n24_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n24_NSt19basic_istringstreamIcSt11char_traitsIcESaIcEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n24_NSt19basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n24_NSt19basic_istringstreamIwSt11char_traitsIwESaIwEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n24_NSt19basic_istringstreamIwSt11char_traitsIwESaIwEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n24_NSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n24_NSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n24_NSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n24_NSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n24_NSt9strstreamD0Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n24_NSt9strstreamD1Ev at GLIBCXX_3.4 4.1.1
+ _ZdaPvm at CXXABI_1.3.9 5
+ _ZdlPvm at CXXABI_1.3.9 5
+ _Znam at GLIBCXX_3.4 4.1.1
+ _ZnamRKSt9nothrow_t at GLIBCXX_3.4 4.1.1
+ _Znwm at GLIBCXX_3.4 4.1.1
+ _ZnwmRKSt9nothrow_t at GLIBCXX_3.4 4.1.1
+ __gxx_personality_v0 at CXXABI_1.3 4.1.1
+ _ZNSt12__basic_fileIcEC1EP15pthread_mutex_t at GLIBCXX_3.4 4.1.1
+ _ZNSt12__basic_fileIcEC2EP15pthread_mutex_t at GLIBCXX_3.4 4.1.1
diff --git a/debian/libstdc++6.symbols.64bit.cxx11 b/debian/libstdc++6.symbols.64bit.cxx11
new file mode 100644
index 0000000..a4926c0
--- /dev/null
+++ b/debian/libstdc++6.symbols.64bit.cxx11
@@ -0,0 +1,329 @@
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12find_last_ofEPKcm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12find_last_ofEPKcmm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12find_last_ofERKS4_m at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12find_last_ofEcm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13find_first_ofEPKcm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13find_first_ofEPKcmm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13find_first_ofERKS4_m at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13find_first_ofEcm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE15_M_check_lengthEmmPKc at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE16find_last_not_ofEPKcm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE16find_last_not_ofEPKcmm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE16find_last_not_ofERKS4_m at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE16find_last_not_ofEcm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE17find_first_not_ofEPKcm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE17find_first_not_ofEPKcmm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE17find_first_not_ofERKS4_m at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE17find_first_not_ofEcm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE2atEm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4copyEPcmm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEPKcm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEPKcmm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findERKS4_m at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEcm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5rfindEPKcm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5rfindEPKcmm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5rfindERKS4_m at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5rfindEcm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6substrEmm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7compareEmmPKc at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7compareEmmPKcm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7compareEmmRKS4_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7compareEmmRKS4_mm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_checkEmPKc at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_limitEmm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12find_last_ofEPKwm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12find_last_ofEPKwmm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12find_last_ofERKS4_m at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12find_last_ofEwm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE13find_first_ofEPKwm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE13find_first_ofEPKwmm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE13find_first_ofERKS4_m at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE13find_first_ofEwm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE15_M_check_lengthEmmPKc at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE16find_last_not_ofEPKwm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE16find_last_not_ofEPKwmm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE16find_last_not_ofERKS4_m at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE16find_last_not_ofEwm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE17find_first_not_ofEPKwm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE17find_first_not_ofEPKwmm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE17find_first_not_ofERKS4_m at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE17find_first_not_ofEwm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE2atEm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE4copyEPwmm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE4findEPKwm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE4findEPKwmm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE4findERKS4_m at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE4findEwm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE5rfindEPKwm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE5rfindEPKwmm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE5rfindERKS4_m at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE5rfindEwm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6substrEmm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7compareEmmPKw at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7compareEmmPKwm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7compareEmmRKS4_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7compareEmmRKS4_mm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8_M_checkEmPKc at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8_M_limitEmm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEixEm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx117collateIcE12_M_transformEPcPKcm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx117collateIwE12_M_transformEPwPKwm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_numES4_S4_RiiimRSt8ios_baseRSt12_Ios_Iostate at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE15_M_extract_nameES4_S4_RiPPKcmRSt8ios_baseRSt12_Ios_Iostate at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE24_M_extract_wday_or_monthES4_S4_RiPPKcmRSt8ios_baseRSt12_Ios_Iostate at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_numES4_S4_RiiimRSt8ios_baseRSt12_Ios_Iostate at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE15_M_extract_nameES4_S4_RiPPKwmRSt8ios_baseRSt12_Ios_Iostate at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE24_M_extract_wday_or_monthES4_S4_RiPPKwmRSt8ios_baseRSt12_Ios_Iostate at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt12ctype_bynameIcEC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt12ctype_bynameIcEC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt12ctype_bynameIwEC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt12ctype_bynameIwEC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt14codecvt_bynameIcc11__mbstate_tEC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt14codecvt_bynameIcc11__mbstate_tEC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt14codecvt_bynameIwc11__mbstate_tEC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt14codecvt_bynameIwc11__mbstate_tEC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1ERKNSt7__cxx1112basic_stringIcS2_SaIcEEEm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2ERKNSt7__cxx1112basic_stringIcS2_SaIcEEEm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIcLb0EEC1EP15__locale_structPKcm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIcLb0EEC1EPSt18__moneypunct_cacheIcLb0EEm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIcLb0EEC1Em at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIcLb0EEC2EP15__locale_structPKcm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIcLb0EEC2EPSt18__moneypunct_cacheIcLb0EEm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIcLb0EEC2Em at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIcLb1EEC1EP15__locale_structPKcm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIcLb1EEC1EPSt18__moneypunct_cacheIcLb1EEm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIcLb1EEC1Em at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIcLb1EEC2EP15__locale_structPKcm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIcLb1EEC2EPSt18__moneypunct_cacheIcLb1EEm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIcLb1EEC2Em at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIwLb0EEC1EP15__locale_structPKcm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIwLb0EEC1EPSt18__moneypunct_cacheIwLb0EEm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIwLb0EEC1Em at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIwLb0EEC2EP15__locale_structPKcm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIwLb0EEC2EPSt18__moneypunct_cacheIwLb0EEm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIwLb0EEC2Em at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIwLb1EEC1EP15__locale_structPKcm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIwLb1EEC1EPSt18__moneypunct_cacheIwLb1EEm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIwLb1EEC1Em at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIwLb1EEC2EP15__locale_structPKcm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIwLb1EEC2EPSt18__moneypunct_cacheIwLb1EEm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIwLb1EEC2Em at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_destroyEm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_replaceEmmPKcm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_S_compareEmm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_capacityEm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructEmc at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_M_set_lengthEm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE14_M_replace_auxEmmmc at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE18_M_construct_aux_2Emc at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE2atEm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5eraseEmm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEPKcm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendERKS4_mm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEmc at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6assignEPKcm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6assignERKS4_mm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6assignEmc at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6insertEN9__gnu_cxx17__normal_iteratorIPKcS4_EEmc at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6insertEN9__gnu_cxx17__normal_iteratorIPcS4_EEmc at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6insertEmPKc at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6insertEmPKcm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6insertEmRKS4_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6insertEmRKS4_mm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6insertEmmc at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6resizeEm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6resizeEmc at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_copyEPcPKcm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_moveEPcPKcm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEN9__gnu_cxx17__normal_iteratorIPKcS4_EES9_S8_m at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEN9__gnu_cxx17__normal_iteratorIPKcS4_EES9_mc at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEN9__gnu_cxx17__normal_iteratorIPcS4_EES8_PKcm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEN9__gnu_cxx17__normal_iteratorIPcS4_EES8_mc at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEmmPKc at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEmmPKcm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEmmRKS4_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEmmRKS4_mm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEmmmc at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7reserveEm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_eraseEmm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_appendEPKcm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_lengthEm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_mutateEmmPKcm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_S_assignEPcmc at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EPKcmRKS3_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ERKS4_mm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ERKS4_mmRKS3_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EmcRKS3_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EPKcmRKS3_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_mm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_mmRKS3_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EmcRKS3_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE10_M_destroyEm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE10_M_replaceEmmPKwm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE10_S_compareEmm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_capacityEm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12_M_constructEmw at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE13_M_set_lengthEm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE14_M_replace_auxEmmmw at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE18_M_construct_aux_2Emw at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE2atEm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE5eraseEmm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6appendEPKwm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6appendERKS4_mm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6appendEmw at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6assignEmw at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6assignEPKwm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6assignERKS4_mm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPKwS4_EEmw at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS4_EEmw at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6insertEmPKwm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6insertEmPKw at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6insertEmRKS4_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6insertEmRKS4_mm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6insertEmmw at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6resizeEm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6resizeEmw at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7_S_copyEPwPKwm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7_S_moveEPwPKwm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPKwS4_EES9_S8_m at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPKwS4_EES9_mw at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS4_EES8_PKwm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS4_EES8_mw at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7replaceEmmPKw at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7replaceEmmPKwm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7replaceEmmRKS4_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7replaceEmmRKS4_mm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7replaceEmmmw at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7reserveEm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8_M_eraseEmm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9_M_appendEPKwm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9_M_createERmm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9_M_lengthEm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9_M_mutateEmmPKwm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9_S_assignEPwmw at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1EPKwmRKS3_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1ERKS4_mm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1ERKS4_mmRKS3_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1EmwRKS3_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2EPKwmRKS3_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2ERKS4_mm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2ERKS4_mmRKS3_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2EmwRKS3_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEixEm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1114collate_bynameIcEC1EPKcm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1114collate_bynameIcEC1ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1114collate_bynameIcEC2EPKcm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1114collate_bynameIcEC2ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1114collate_bynameIwEC1EPKcm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1114collate_bynameIwEC1ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1114collate_bynameIwEC2EPKcm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1114collate_bynameIwEC2ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE7_M_syncEPcmm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE6setbufEPcl at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE8_M_pbumpEPcS5_l at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEE6setbufEPwl at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEE7_M_syncEPwmm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEE7seekoffElSt12_Ios_SeekdirSt13_Ios_Openmode at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEE8_M_pbumpEPwS5_l at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115messages_bynameIcEC1EPKcm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115messages_bynameIcEC1ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115messages_bynameIcEC2EPKcm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115messages_bynameIcEC2ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115messages_bynameIwEC1EPKcm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115messages_bynameIwEC1ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115messages_bynameIwEC2EPKcm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115messages_bynameIwEC2ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115numpunct_bynameIcEC1EPKcm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115numpunct_bynameIcEC1ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115numpunct_bynameIcEC2EPKcm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115numpunct_bynameIcEC2ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115numpunct_bynameIwEC1EPKcm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115numpunct_bynameIwEC1ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115numpunct_bynameIwEC2EPKcm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115numpunct_bynameIwEC2ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1EPKcm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1ERKNS_12basic_stringIcS3_SaIcEEEm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2EPKcm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2ERKNS_12basic_stringIcS3_SaIcEEEm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1EPKcm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1ERKNS_12basic_stringIcS2_IcESaIcEEEm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2EPKcm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2ERKNS_12basic_stringIcS2_IcESaIcEEEm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIcLb0EEC1EPKcm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIcLb0EEC1ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIcLb0EEC2EPKcm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIcLb0EEC2ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIcLb1EEC1EPKcm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIcLb1EEC1ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIcLb1EEC2EPKcm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIcLb1EEC2ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIwLb0EEC1EPKcm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIwLb0EEC1ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIwLb0EEC2EPKcm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIwLb0EEC2ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIwLb1EEC1EPKcm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIwLb1EEC1ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIwLb1EEC2EPKcm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIwLb1EEC2ERKNS_12basic_stringIcSt11char_traitsIcESaIcEEEm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx117collateIcEC1EP15__locale_structm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx117collateIcEC1Em at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx117collateIcEC2EP15__locale_structm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx117collateIcEC2Em at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx117collateIwEC1EP15__locale_structm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx117collateIwEC1Em at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx117collateIwEC2EP15__locale_structm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx117collateIwEC2Em at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx118messagesIcEC1EP15__locale_structPKcm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx118messagesIcEC1Em at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx118messagesIcEC2EP15__locale_structPKcm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx118messagesIcEC2Em at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx118messagesIwEC1EP15__locale_structPKcm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx118messagesIwEC1Em at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx118messagesIwEC2EP15__locale_structPKcm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx118messagesIwEC2Em at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx118numpunctIcEC1EP15__locale_structm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx118numpunctIcEC1EPSt16__numpunct_cacheIcEm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx118numpunctIcEC1Em at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx118numpunctIcEC2EP15__locale_structm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx118numpunctIcEC2EPSt16__numpunct_cacheIcEm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx118numpunctIcEC2Em at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx118numpunctIwEC1EP15__locale_structm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx118numpunctIwEC1EPSt16__numpunct_cacheIwEm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx118numpunctIwEC1Em at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx118numpunctIwEC2EP15__locale_structm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx118numpunctIwEC2EPSt16__numpunct_cacheIwEm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx118numpunctIwEC2Em at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Em at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Em at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx119money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx119money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx119money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Em at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx119money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Em at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx119money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Em at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx119money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Em at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx119money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Em at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx119money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZSt17__verify_groupingPKcmRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZThn16_NSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZThn16_NSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZThn16_NSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZThn16_NSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTv0_n24_NSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTv0_n24_NSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTv0_n24_NSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTv0_n24_NSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTv0_n24_NSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEED0Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTv0_n24_NSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTv0_n24_NSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEED0Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTv0_n24_NSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEED1Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTv0_n24_NSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED0Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTv0_n24_NSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTv0_n24_NSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEED0Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTv0_n24_NSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEED1Ev at GLIBCXX_3.4.21 5.2
diff --git a/debian/libstdc++6.symbols.alpha b/debian/libstdc++6.symbols.alpha
new file mode 100644
index 0000000..a561f24
--- /dev/null
+++ b/debian/libstdc++6.symbols.alpha
@@ -0,0 +1,56 @@
+libstdc++.so.6 libstdc++6 #MINVER#
+#include "libstdc++6.symbols.64bit"
+#include "libstdc++6.symbols.excprop"
+ _ZN9__gnu_cxx12__atomic_addEPVii at GLIBCXX_3.4 4.1.1
+ _ZN9__gnu_cxx18__exchange_and_addEPVii at GLIBCXX_3.4 4.1.1
+#include "libstdc++6.symbols.glibcxxmath"
+#include "libstdc++6.symbols.ldbl.64bit"
+#include "libstdc++6.symbols.money.f128"
+ _ZNKSt3tr14hashIeEclEe at GLIBCXX_3.4.10 4.3.0~rc2
+ _ZNKSt4hashIeEclEe at GLIBCXX_3.4.10 4.3.0~rc2
+ _ZNSt14numeric_limitsInE10has_denormE at GLIBCXX_3.4.17 4.8
+ _ZNSt14numeric_limitsInE10is_boundedE at GLIBCXX_3.4.17 4.8
+ _ZNSt14numeric_limitsInE10is_integerE at GLIBCXX_3.4.17 4.8
+ _ZNSt14numeric_limitsInE11round_styleE at GLIBCXX_3.4.17 4.8
+ _ZNSt14numeric_limitsInE12has_infinityE at GLIBCXX_3.4.17 4.8
+ _ZNSt14numeric_limitsInE12max_digits10E at GLIBCXX_3.4.17 4.8
+ _ZNSt14numeric_limitsInE12max_exponentE at GLIBCXX_3.4.17 4.8
+ _ZNSt14numeric_limitsInE12min_exponentE at GLIBCXX_3.4.17 4.8
+ _ZNSt14numeric_limitsInE13has_quiet_NaNE at GLIBCXX_3.4.17 4.8
+ _ZNSt14numeric_limitsInE14is_specializedE at GLIBCXX_3.4.17 4.8
+ _ZNSt14numeric_limitsInE14max_exponent10E at GLIBCXX_3.4.17 4.8
+ _ZNSt14numeric_limitsInE14min_exponent10E at GLIBCXX_3.4.17 4.8
+ _ZNSt14numeric_limitsInE15has_denorm_lossE at GLIBCXX_3.4.17 4.8
+ _ZNSt14numeric_limitsInE15tinyness_beforeE at GLIBCXX_3.4.17 4.8
+ _ZNSt14numeric_limitsInE17has_signaling_NaNE at GLIBCXX_3.4.17 4.8
+ _ZNSt14numeric_limitsInE5radixE at GLIBCXX_3.4.17 4.8
+ _ZNSt14numeric_limitsInE5trapsE at GLIBCXX_3.4.17 4.8
+ _ZNSt14numeric_limitsInE6digitsE at GLIBCXX_3.4.17 4.8
+ _ZNSt14numeric_limitsInE8digits10E at GLIBCXX_3.4.17 4.8
+ _ZNSt14numeric_limitsInE8is_exactE at GLIBCXX_3.4.17 4.8
+ _ZNSt14numeric_limitsInE9is_iec559E at GLIBCXX_3.4.17 4.8
+ _ZNSt14numeric_limitsInE9is_moduloE at GLIBCXX_3.4.17 4.8
+ _ZNSt14numeric_limitsInE9is_signedE at GLIBCXX_3.4.17 4.8
+ _ZNSt14numeric_limitsIoE10has_denormE at GLIBCXX_3.4.17 4.8
+ _ZNSt14numeric_limitsIoE10is_boundedE at GLIBCXX_3.4.17 4.8
+ _ZNSt14numeric_limitsIoE10is_integerE at GLIBCXX_3.4.17 4.8
+ _ZNSt14numeric_limitsIoE11round_styleE at GLIBCXX_3.4.17 4.8
+ _ZNSt14numeric_limitsIoE12has_infinityE at GLIBCXX_3.4.17 4.8
+ _ZNSt14numeric_limitsIoE12max_digits10E at GLIBCXX_3.4.17 4.8
+ _ZNSt14numeric_limitsIoE12max_exponentE at GLIBCXX_3.4.17 4.8
+ _ZNSt14numeric_limitsIoE12min_exponentE at GLIBCXX_3.4.17 4.8
+ _ZNSt14numeric_limitsIoE13has_quiet_NaNE at GLIBCXX_3.4.17 4.8
+ _ZNSt14numeric_limitsIoE14is_specializedE at GLIBCXX_3.4.17 4.8
+ _ZNSt14numeric_limitsIoE14max_exponent10E at GLIBCXX_3.4.17 4.8
+ _ZNSt14numeric_limitsIoE14min_exponent10E at GLIBCXX_3.4.17 4.8
+ _ZNSt14numeric_limitsIoE15has_denorm_lossE at GLIBCXX_3.4.17 4.8
+ _ZNSt14numeric_limitsIoE15tinyness_beforeE at GLIBCXX_3.4.17 4.8
+ _ZNSt14numeric_limitsIoE17has_signaling_NaNE at GLIBCXX_3.4.17 4.8
+ _ZNSt14numeric_limitsIoE5radixE at GLIBCXX_3.4.17 4.8
+ _ZNSt14numeric_limitsIoE5trapsE at GLIBCXX_3.4.17 4.8
+ _ZNSt14numeric_limitsIoE6digitsE at GLIBCXX_3.4.17 4.8
+ _ZNSt14numeric_limitsIoE8digits10E at GLIBCXX_3.4.17 4.8
+ _ZNSt14numeric_limitsIoE8is_exactE at GLIBCXX_3.4.17 4.8
+ _ZNSt14numeric_limitsIoE9is_iec559E at GLIBCXX_3.4.17 4.8
+ _ZNSt14numeric_limitsIoE9is_moduloE at GLIBCXX_3.4.17 4.8
+ _ZNSt14numeric_limitsIoE9is_signedE at GLIBCXX_3.4.17 4.8
diff --git a/debian/libstdc++6.symbols.amd64 b/debian/libstdc++6.symbols.amd64
new file mode 100644
index 0000000..5ef5073
--- /dev/null
+++ b/debian/libstdc++6.symbols.amd64
@@ -0,0 +1,16 @@
+libstdc++.so.6 libstdc++6 #MINVER#
+#include "libstdc++6.symbols.64bit"
+#include "libstdc++6.symbols.128bit"
+#include "libstdc++6.symbols.excprop"
+#include "libstdc++6.symbols.money.ldbl"
+ _ZN9__gnu_cxx12__atomic_addEPVii at GLIBCXX_3.4 4.1.1
+ _ZN9__gnu_cxx18__exchange_and_addEPVii at GLIBCXX_3.4 4.1.1
+ _ZNKSt3tr14hashIeEclEe at GLIBCXX_3.4.10 4.3
+ _ZNKSt4hashIeEclEe at GLIBCXX_3.4.10 4.3
+ (optional)_Z16__VLTRegisterSetPPvPKvmmS0_ at CXXABI_1.3.8 4.9.0
+ (optional)_Z17__VLTRegisterPairPPvPKvmS2_ at CXXABI_1.3.8 4.9.0
+ (optional)_Z21__VLTRegisterSetDebugPPvPKvmmS0_ at CXXABI_1.3.8 4.9.0
+ (optional)_Z22__VLTRegisterPairDebugPPvPKvmS2_PKcS4_ at CXXABI_1.3.8 4.9.0
+ (optional)_Z24__VLTVerifyVtablePointerPPvPKv at CXXABI_1.3.8 4.9.0
+ (optional)_Z29__VLTVerifyVtablePointerDebugPPvPKvPKcS4_ at CXXABI_1.3.8 4.9.0
+ (optional)__VLTChangePermission at CXXABI_1.3.8 4.9.0
diff --git a/debian/libstdc++6.symbols.arm b/debian/libstdc++6.symbols.arm
new file mode 100644
index 0000000..6369a31
--- /dev/null
+++ b/debian/libstdc++6.symbols.arm
@@ -0,0 +1,6 @@
+libstdc++.so.6 libstdc++6 #MINVER#
+#include "libstdc++6.symbols.32bit"
+ __gxx_personality_sj0 at CXXABI_1.3 4.1.1
+#include "libstdc++6.symbols.glibcxxmath"
+ _ZNKSt3tr14hashIeEclEe at GLIBCXX_3.4.10 4.3.0
+ _ZNKSt4hashIeEclEe at GLIBCXX_3.4.10 4.3.0
diff --git a/debian/libstdc++6.symbols.arm64 b/debian/libstdc++6.symbols.arm64
new file mode 100644
index 0000000..bb8a739
--- /dev/null
+++ b/debian/libstdc++6.symbols.arm64
@@ -0,0 +1,10 @@
+libstdc++.so.6 libstdc++6 #MINVER#
+#include "libstdc++6.symbols.64bit"
+#include "libstdc++6.symbols.128bit"
+#include "libstdc++6.symbols.excprop"
+#include "libstdc++6.symbols.money.ldbl"
+ __gxx_personality_v0 at CXXABI_1.3 4.1.1
+ _ZNKSt3tr14hashIeEclEe at GLIBCXX_3.4.10 4.3.0
+ _ZNKSt4hashIeEclEe at GLIBCXX_3.4.10 4.3.0
+ _ZN9__gnu_cxx12__atomic_addEPVii at GLIBCXX_3.4 4.1.1
+ _ZN9__gnu_cxx18__exchange_and_addEPVii at GLIBCXX_3.4 4.1.1
diff --git a/debian/libstdc++6.symbols.armel b/debian/libstdc++6.symbols.armel
new file mode 100644
index 0000000..6b9ea38
--- /dev/null
+++ b/debian/libstdc++6.symbols.armel
@@ -0,0 +1,13 @@
+libstdc++.so.6 libstdc++6 #MINVER#
+#include "libstdc++6.symbols.32bit"
+#include "libstdc++6.symbols.money.ldbl"
+ __gxx_personality_v0 at CXXABI_1.3 4.1.1
+#include "libstdc++6.symbols.glibcxxmath"
+ CXXABI_ARM_1.3.3 at CXXABI_ARM_1.3.3 4.4.0
+ _ZNKSt9type_info6beforeERKS_ at GLIBCXX_3.4 4.3.0
+ _ZNKSt9type_infoeqERKS_ at GLIBCXX_3.4 4.3.0
+ _ZNKSt3tr14hashIeEclEe at GLIBCXX_3.4.10 4.3.0
+ _ZNKSt4hashIeEclEe at GLIBCXX_3.4.10 4.3.0
+ __cxa_begin_cleanup at CXXABI_1.3 4.3.0
+ __cxa_end_cleanup at CXXABI_1.3 4.3.0
+ __cxa_type_match at CXXABI_1.3 4.3.0
diff --git a/debian/libstdc++6.symbols.armhf b/debian/libstdc++6.symbols.armhf
new file mode 100644
index 0000000..309295c
--- /dev/null
+++ b/debian/libstdc++6.symbols.armhf
@@ -0,0 +1,13 @@
+libstdc++.so.6 libstdc++6 #MINVER#
+#include "libstdc++6.symbols.32bit"
+#include "libstdc++6.symbols.excprop"
+ __gxx_personality_v0 at CXXABI_1.3 4.1.1
+#include "libstdc++6.symbols.glibcxxmath"
+ CXXABI_ARM_1.3.3 at CXXABI_ARM_1.3.3 4.4.0
+ _ZNKSt9type_info6beforeERKS_ at GLIBCXX_3.4 4.3.0
+ _ZNKSt9type_infoeqERKS_ at GLIBCXX_3.4 4.3.0
+ _ZNKSt3tr14hashIeEclEe at GLIBCXX_3.4.10 4.3.0
+ _ZNKSt4hashIeEclEe at GLIBCXX_3.4.10 4.3.0
+ __cxa_begin_cleanup at CXXABI_1.3 4.3.0
+ __cxa_end_cleanup at CXXABI_1.3 4.3.0
+ __cxa_type_match at CXXABI_1.3 4.3.0
diff --git a/debian/libstdc++6.symbols.common b/debian/libstdc++6.symbols.common
new file mode 100644
index 0000000..a5d0109
--- /dev/null
+++ b/debian/libstdc++6.symbols.common
@@ -0,0 +1,3382 @@
+ CXXABI_1.3.1 at CXXABI_1.3.1 4.1.1
+ CXXABI_1.3.2 at CXXABI_1.3.2 4.3
+ CXXABI_1.3.3 at CXXABI_1.3.3 4.4.0
+ CXXABI_1.3.4 at CXXABI_1.3.4 4.5
+ CXXABI_1.3.5 at CXXABI_1.3.5 4.6
+ CXXABI_1.3.6 at CXXABI_1.3.6 4.7
+ CXXABI_1.3.7 at CXXABI_1.3.7 4.8
+ CXXABI_1.3.8 at CXXABI_1.3.8 4.9
+ CXXABI_1.3.9 at CXXABI_1.3.9 5
+ CXXABI_1.3 at CXXABI_1.3 4.1.1
+ CXXABI_TM_1 at CXXABI_TM_1 4.7
+ GLIBCXX_3.4.10 at GLIBCXX_3.4.10 4.3
+ GLIBCXX_3.4.11 at GLIBCXX_3.4.11 4.4.0
+ GLIBCXX_3.4.12 at GLIBCXX_3.4.12 4.4.0
+ GLIBCXX_3.4.13 at GLIBCXX_3.4.13 4.4.2
+ GLIBCXX_3.4.14 at GLIBCXX_3.4.14 4.5
+ GLIBCXX_3.4.15 at GLIBCXX_3.4.15 4.6
+ GLIBCXX_3.4.16 at GLIBCXX_3.4.16 4.6.0
+ GLIBCXX_3.4.17 at GLIBCXX_3.4.17 4.7
+ GLIBCXX_3.4.18 at GLIBCXX_3.4.18 4.8
+ GLIBCXX_3.4.19 at GLIBCXX_3.4.19 4.8
+ GLIBCXX_3.4.1 at GLIBCXX_3.4.1 4.1.1
+ GLIBCXX_3.4.20 at GLIBCXX_3.4.20 4.9
+ GLIBCXX_3.4.21 at GLIBCXX_3.4.21 5
+ GLIBCXX_3.4.2 at GLIBCXX_3.4.2 4.1.1
+ GLIBCXX_3.4.3 at GLIBCXX_3.4.3 4.1.1
+ GLIBCXX_3.4.4 at GLIBCXX_3.4.4 4.1.1
+ GLIBCXX_3.4.5 at GLIBCXX_3.4.5 4.1.1
+ GLIBCXX_3.4.6 at GLIBCXX_3.4.6 4.1.1
+ GLIBCXX_3.4.7 at GLIBCXX_3.4.7 4.1.1
+ GLIBCXX_3.4.8 at GLIBCXX_3.4.8 4.1.1
+ GLIBCXX_3.4.9 at GLIBCXX_3.4.9 4.2.1
+ GLIBCXX_3.4 at GLIBCXX_3.4 4.1.1
+#include "libstdc++6.symbols.common.cxx11"
+(arch=amd64 i386 x32 kfreebsd-amd64 kfreebsd-i386)#include "libstdc++6.symbols.float128"
+(arch=!armel)#include "libstdc++6.symbols.not-armel"
+ (arch=!armel !hurd-i386 !kfreebsd-amd64 !kfreebsd-i386)_ZNSt28__atomic_futex_unsigned_base19_M_futex_notify_allEPj at GLIBCXX_3.4.21 5
+ _ZGVNSt10moneypunctIcLb0EE2idE at GLIBCXX_3.4 4.1.1
+ _ZGVNSt10moneypunctIcLb1EE2idE at GLIBCXX_3.4 4.1.1
+ _ZGVNSt10moneypunctIwLb0EE2idE at GLIBCXX_3.4 4.1.1
+ _ZGVNSt10moneypunctIwLb1EE2idE at GLIBCXX_3.4 4.1.1
+ _ZGVNSt11__timepunctIcE2idE at GLIBCXX_3.4 4.1.1
+ _ZGVNSt11__timepunctIwE2idE at GLIBCXX_3.4 4.1.1
+ _ZGVNSt7collateIcE2idE at GLIBCXX_3.4 4.1.1
+ _ZGVNSt7collateIwE2idE at GLIBCXX_3.4 4.1.1
+ _ZGVNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE at GLIBCXX_3.4 4.1.1
+ _ZGVNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE at GLIBCXX_3.4 4.1.1
+ _ZGVNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE at GLIBCXX_3.4 4.1.1
+ _ZGVNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE at GLIBCXX_3.4 4.1.1
+ _ZGVNSt8messagesIcE2idE at GLIBCXX_3.4 4.1.1
+ _ZGVNSt8messagesIwE2idE at GLIBCXX_3.4 4.1.1
+ _ZGVNSt8numpunctIcE2idE at GLIBCXX_3.4 4.1.1
+ _ZGVNSt8numpunctIwE2idE at GLIBCXX_3.4 4.1.1
+ _ZGVNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE at GLIBCXX_3.4 4.1.1
+ _ZGVNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE at GLIBCXX_3.4 4.1.1
+ _ZGVNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE at GLIBCXX_3.4 4.1.1
+ _ZGVNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE at GLIBCXX_3.4 4.1.1
+ _ZGVNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE at GLIBCXX_3.4 4.1.1
+ _ZGVNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE at GLIBCXX_3.4 4.1.1
+ _ZGVNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE at GLIBCXX_3.4 4.1.1
+ _ZGVNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE at GLIBCXX_3.4 4.1.1
+ _ZN10__cxxabiv116__enum_type_infoD0Ev at CXXABI_1.3 4.1.1
+ _ZN10__cxxabiv116__enum_type_infoD1Ev at CXXABI_1.3 4.1.1
+ _ZN10__cxxabiv116__enum_type_infoD2Ev at CXXABI_1.3 4.1.1
+ _ZN10__cxxabiv117__array_type_infoD0Ev at CXXABI_1.3 4.1.1
+ _ZN10__cxxabiv117__array_type_infoD1Ev at CXXABI_1.3 4.1.1
+ _ZN10__cxxabiv117__array_type_infoD2Ev at CXXABI_1.3 4.1.1
+ _ZN10__cxxabiv117__class_type_infoD0Ev at CXXABI_1.3 4.1.1
+ _ZN10__cxxabiv117__class_type_infoD1Ev at CXXABI_1.3 4.1.1
+ _ZN10__cxxabiv117__class_type_infoD2Ev at CXXABI_1.3 4.1.1
+ _ZN10__cxxabiv117__pbase_type_infoD0Ev at CXXABI_1.3 4.1.1
+ _ZN10__cxxabiv117__pbase_type_infoD1Ev at CXXABI_1.3 4.1.1
+ _ZN10__cxxabiv117__pbase_type_infoD2Ev at CXXABI_1.3 4.1.1
+ _ZN10__cxxabiv119__pointer_type_infoD0Ev at CXXABI_1.3 4.1.1
+ _ZN10__cxxabiv119__pointer_type_infoD1Ev at CXXABI_1.3 4.1.1
+ _ZN10__cxxabiv119__pointer_type_infoD2Ev at CXXABI_1.3 4.1.1
+ _ZN10__cxxabiv120__function_type_infoD0Ev at CXXABI_1.3 4.1.1
+ _ZN10__cxxabiv120__function_type_infoD1Ev at CXXABI_1.3 4.1.1
+ _ZN10__cxxabiv120__function_type_infoD2Ev at CXXABI_1.3 4.1.1
+ _ZN10__cxxabiv120__si_class_type_infoD0Ev at CXXABI_1.3 4.1.1
+ _ZN10__cxxabiv120__si_class_type_infoD1Ev at CXXABI_1.3 4.1.1
+ _ZN10__cxxabiv120__si_class_type_infoD2Ev at CXXABI_1.3 4.1.1
+ _ZN10__cxxabiv121__vmi_class_type_infoD0Ev at CXXABI_1.3 4.1.1
+ _ZN10__cxxabiv121__vmi_class_type_infoD1Ev at CXXABI_1.3 4.1.1
+ _ZN10__cxxabiv121__vmi_class_type_infoD2Ev at CXXABI_1.3 4.1.1
+ _ZN10__cxxabiv123__fundamental_type_infoD0Ev at CXXABI_1.3 4.1.1
+ _ZN10__cxxabiv123__fundamental_type_infoD1Ev at CXXABI_1.3 4.1.1
+ _ZN10__cxxabiv123__fundamental_type_infoD2Ev at CXXABI_1.3 4.1.1
+ _ZN10__cxxabiv129__pointer_to_member_type_infoD0Ev at CXXABI_1.3 4.1.1
+ _ZN10__cxxabiv129__pointer_to_member_type_infoD1Ev at CXXABI_1.3 4.1.1
+ _ZN10__cxxabiv129__pointer_to_member_type_infoD2Ev at CXXABI_1.3 4.1.1
+ _ZN10__gnu_norm15_List_node_base4hookEPS0_ at GLIBCXX_3.4 4.1.1
+ _ZN10__gnu_norm15_List_node_base4swapERS0_S1_ at GLIBCXX_3.4 4.1.1
+ _ZN10__gnu_norm15_List_node_base6unhookEv at GLIBCXX_3.4 4.1.1
+ _ZN10__gnu_norm15_List_node_base7reverseEv at GLIBCXX_3.4 4.1.1
+ _ZN10__gnu_norm15_List_node_base8transferEPS0_S1_ at GLIBCXX_3.4 4.1.1
+ _ZN11__gnu_debug19_Safe_iterator_base12_M_get_mutexEv at GLIBCXX_3.4.9 4.2.1
+ _ZN11__gnu_debug19_Safe_iterator_base16_M_attach_singleEPNS_19_Safe_sequence_baseEb at GLIBCXX_3.4.9 4.2.1
+ _ZN11__gnu_debug19_Safe_iterator_base16_M_detach_singleEv at GLIBCXX_3.4.9 4.2.1
+ _ZN11__gnu_debug19_Safe_iterator_base9_M_attachEPNS_19_Safe_sequence_baseEb at GLIBCXX_3.4 4.1.1
+ _ZN11__gnu_debug19_Safe_iterator_base9_M_detachEv at GLIBCXX_3.4 4.1.1
+ _ZN11__gnu_debug19_Safe_sequence_base12_M_get_mutexEv at GLIBCXX_3.4.9 4.2.1
+ _ZN11__gnu_debug19_Safe_sequence_base13_M_detach_allEv at GLIBCXX_3.4 4.1.1
+ _ZN11__gnu_debug19_Safe_sequence_base18_M_detach_singularEv at GLIBCXX_3.4 4.1.1
+ _ZN11__gnu_debug19_Safe_sequence_base22_M_revalidate_singularEv at GLIBCXX_3.4 4.1.1
+ _ZN11__gnu_debug19_Safe_sequence_base7_M_swapERS0_ at GLIBCXX_3.4 4.1.1
+ _ZN11__gnu_debug25_Safe_local_iterator_base9_M_attachEPNS_19_Safe_sequence_baseEb at GLIBCXX_3.4.17 4.7
+ _ZN11__gnu_debug25_Safe_local_iterator_base9_M_detachEv at GLIBCXX_3.4.17 4.7
+ _ZN11__gnu_debug30_Safe_unordered_container_base13_M_detach_allEv at GLIBCXX_3.4.17 4.7
+ _ZN11__gnu_debug30_Safe_unordered_container_base7_M_swapERS0_ at GLIBCXX_3.4.17 4.7
+ _ZN14__gnu_parallel9_Settings3getEv at GLIBCXX_3.4.10 4.3.0~rc2
+ _ZN14__gnu_parallel9_Settings3setERS0_ at GLIBCXX_3.4.10 4.3.0~rc2
+ _ZN9__gnu_cxx17__pool_alloc_base12_M_get_mutexEv at GLIBCXX_3.4.2 4.1.1
+ _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE4fileEv at GLIBCXX_3.4.2 4.1.1
+ _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE4syncEv at GLIBCXX_3.4.10 4.3.0~rc2
+ _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE4syncEv at GLIBCXX_3.4.10 4.3.0~rc2
+ _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE5uflowEv at GLIBCXX_3.4.10 4.3.0~rc2
+ _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE5uflowEv at GLIBCXX_3.4.10 4.3.0~rc2
+ _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode at GLIBCXX_3.4.10 4.3.0~rc2
+ _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE8overflowEi at GLIBCXX_3.4.10 4.3.0~rc2
+ _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE9pbackfailEi at GLIBCXX_3.4.10 4.3.0~rc2
+ _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE9underflowEv at GLIBCXX_3.4.10 4.3.0~rc2
+ _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEC1EOS3_ at GLIBCXX_3.4.21 5
+ _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEC1EP8_IO_FILE at GLIBCXX_3.4.10 4.3.0~rc2
+ _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEC2EOS3_ at GLIBCXX_3.4.21 5
+ _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEC2EP8_IO_FILE at GLIBCXX_3.4.10 4.3.0~rc2
+ _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEED0Ev at GLIBCXX_3.4.10 4.3.0~rc2
+ _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEED1Ev at GLIBCXX_3.4.10 4.3.0~rc2
+ _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEaSEOS3_ at GLIBCXX_3.4.21 5
+ _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE4fileEv at GLIBCXX_3.4.2 4.1.1
+ _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE4syncEv at GLIBCXX_3.4.10 4.3.0~rc2
+ _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE5uflowEv at GLIBCXX_3.4.10 4.3.0~rc2
+ _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode at GLIBCXX_3.4.10 4.3.0~rc2
+ _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE8overflowEj at GLIBCXX_3.4.10 4.3.0~rc2
+ _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE9pbackfailEj at GLIBCXX_3.4.10 4.3.0~rc2
+ _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE9underflowEv at GLIBCXX_3.4.10 4.3.0~rc2
+ _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEC1EOS3_ at GLIBCXX_3.4.21 5
+ _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEC1EP8_IO_FILE at GLIBCXX_3.4.10 4.3.0~rc2
+ _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEC2EOS3_ at GLIBCXX_3.4.21 5
+ _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEC2EP8_IO_FILE at GLIBCXX_3.4.10 4.3.0~rc2
+ _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEED0Ev at GLIBCXX_3.4.10 4.3.0~rc2
+ _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEED1Ev at GLIBCXX_3.4.10 4.3.0~rc2
+ _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEaSEOS3_ at GLIBCXX_3.4.21 5
+ _ZN9__gnu_cxx27__verbose_terminate_handlerEv at CXXABI_1.3 4.1.1
+ _ZN9__gnu_cxx6__poolILb0EE10_M_destroyEv at GLIBCXX_3.4.4 4.1.1
+ _ZN9__gnu_cxx6__poolILb0EE13_M_initializeEv at GLIBCXX_3.4.4 4.1.1
+ _ZN9__gnu_cxx6__poolILb1EE10_M_destroyEv at GLIBCXX_3.4.4 4.1.1
+ _ZN9__gnu_cxx6__poolILb1EE13_M_initializeEPFvPvE at GLIBCXX_3.4.4 4.1.1
+ _ZN9__gnu_cxx6__poolILb1EE13_M_initializeEv at GLIBCXX_3.4.6 4.1.1
+ _ZN9__gnu_cxx6__poolILb1EE16_M_get_thread_idEv at GLIBCXX_3.4.4 4.1.1
+ _ZN9__gnu_cxx6__poolILb1EE21_M_destroy_thread_keyEPv at GLIBCXX_3.4.4 4.1.1
+ _ZN9__gnu_cxx9free_list8_M_clearEv at GLIBCXX_3.4.4 4.1.1
+ _ZNK10__cxxabiv117__class_type_info10__do_catchEPKSt9type_infoPPvj at CXXABI_1.3 4.1.1
+ _ZNK10__cxxabiv117__class_type_info11__do_upcastEPKS0_PKvRNS0_15__upcast_resultE at CXXABI_1.3 4.1.1
+ _ZNK10__cxxabiv117__class_type_info11__do_upcastEPKS0_PPv at CXXABI_1.3 4.1.1
+ _ZNK10__cxxabiv117__pbase_type_info10__do_catchEPKSt9type_infoPPvj at CXXABI_1.3 4.1.1
+ _ZNK10__cxxabiv117__pbase_type_info15__pointer_catchEPKS0_PPvj at CXXABI_1.3 4.1.1
+ _ZNK10__cxxabiv119__pointer_type_info14__is_pointer_pEv at CXXABI_1.3 4.1.1
+ _ZNK10__cxxabiv119__pointer_type_info15__pointer_catchEPKNS_17__pbase_type_infoEPPvj at CXXABI_1.3 4.1.1
+ _ZNK10__cxxabiv120__function_type_info15__is_function_pEv at CXXABI_1.3 4.1.1
+ _ZNK10__cxxabiv120__si_class_type_info11__do_upcastEPKNS_17__class_type_infoEPKvRNS1_15__upcast_resultE at CXXABI_1.3 4.1.1
+ _ZNK10__cxxabiv121__vmi_class_type_info11__do_upcastEPKNS_17__class_type_infoEPKvRNS1_15__upcast_resultE at CXXABI_1.3 4.1.1
+ _ZNK10__cxxabiv129__pointer_to_member_type_info15__pointer_catchEPKNS_17__pbase_type_infoEPPvj at CXXABI_1.3 4.1.1
+ _ZNK11__gnu_debug16_Error_formatter10_M_messageENS_13_Debug_msg_idE at GLIBCXX_3.4 4.1.1
+ _ZNK11__gnu_debug16_Error_formatter10_Parameter14_M_print_fieldEPKS0_PKc at GLIBCXX_3.4 4.1.1
+ _ZNK11__gnu_debug16_Error_formatter10_Parameter20_M_print_descriptionEPKS0_ at GLIBCXX_3.4 4.1.1
+ _ZNK11__gnu_debug16_Error_formatter13_M_print_wordEPKc at GLIBCXX_3.4 4.1.1
+ _ZNK11__gnu_debug16_Error_formatter15_M_print_stringEPKc at GLIBCXX_3.4 4.1.1
+ _ZNK11__gnu_debug16_Error_formatter17_M_get_max_lengthEv at GLIBCXX_3.4.10 4.3
+ _ZNK11__gnu_debug16_Error_formatter8_M_errorEv at GLIBCXX_3.4 4.1.1
+ _ZNK11__gnu_debug19_Safe_iterator_base11_M_singularEv at GLIBCXX_3.4 4.1.1
+ _ZNK11__gnu_debug19_Safe_iterator_base14_M_can_compareERKS0_ at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw at GLIBCXX_3.4.5 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE13get_allocatorEv at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE3endEv at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE4_Rep12_M_is_leakedEv at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE4_Rep12_M_is_sharedEv at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE4backEv at GLIBCXX_3.4.15 4.6
+ _ZNKSbIwSt11char_traitsIwESaIwEE4cendEv at GLIBCXX_3.4.14 4.5
+ _ZNKSbIwSt11char_traitsIwESaIwEE4dataEv at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE4rendEv at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE4sizeEv at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE5beginEv at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE5crendEv at GLIBCXX_3.4.14 4.5
+ _ZNKSbIwSt11char_traitsIwESaIwEE5c_strEv at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE5emptyEv at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE5frontEv at GLIBCXX_3.4.15 4.6
+ _ZNKSbIwSt11char_traitsIwESaIwEE6_M_repEv at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE6cbeginEv at GLIBCXX_3.4.14 4.5
+ _ZNKSbIwSt11char_traitsIwESaIwEE6lengthEv at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE6rbeginEv at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE7_M_dataEv at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE7_M_iendEv at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE7compareEPKw at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE7compareERKS2_ at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE7crbeginEv at GLIBCXX_3.4.14 4.5
+ _ZNKSbIwSt11char_traitsIwESaIwEE8capacityEv at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE8max_sizeEv at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE9_M_ibeginEv at GLIBCXX_3.4 4.1.1
+ _ZNKSi6gcountEv at GLIBCXX_3.4 4.1.1
+ _ZNKSi6sentrycvbEv at GLIBCXX_3.4 4.1.1
+ _ZNKSo6sentrycvbEv at GLIBCXX_3.4 4.1.1
+ _ZNKSs11_M_disjunctEPKc at GLIBCXX_3.4 4.1.1
+ _ZNKSs11_M_disjunctEPKc at GLIBCXX_3.4.5 4.1.1
+ _ZNKSs13get_allocatorEv at GLIBCXX_3.4 4.1.1
+ _ZNKSs3endEv at GLIBCXX_3.4 4.1.1
+ _ZNKSs4_Rep12_M_is_leakedEv at GLIBCXX_3.4 4.1.1
+ _ZNKSs4_Rep12_M_is_sharedEv at GLIBCXX_3.4 4.1.1
+ _ZNKSs4backEv at GLIBCXX_3.4.15 4.6
+ _ZNKSs4cendEv at GLIBCXX_3.4.14 4.5
+ _ZNKSs4dataEv at GLIBCXX_3.4 4.1.1
+ _ZNKSs4rendEv at GLIBCXX_3.4 4.1.1
+ _ZNKSs4sizeEv at GLIBCXX_3.4 4.1.1
+ _ZNKSs5beginEv at GLIBCXX_3.4 4.1.1
+ _ZNKSs5c_strEv at GLIBCXX_3.4 4.1.1
+ _ZNKSs5crendEv at GLIBCXX_3.4.14 4.5
+ _ZNKSs5emptyEv at GLIBCXX_3.4 4.1.1
+ _ZNKSs5frontEv at GLIBCXX_3.4.15 4.6
+ _ZNKSs6_M_repEv at GLIBCXX_3.4 4.1.1
+ _ZNKSs6cbeginEv at GLIBCXX_3.4.14 4.5
+ _ZNKSs6lengthEv at GLIBCXX_3.4 4.1.1
+ _ZNKSs6rbeginEv at GLIBCXX_3.4 4.1.1
+ _ZNKSs7_M_dataEv at GLIBCXX_3.4 4.1.1
+ _ZNKSs7_M_iendEv at GLIBCXX_3.4 4.1.1
+ _ZNKSs7compareEPKc at GLIBCXX_3.4 4.1.1
+ _ZNKSs7compareERKSs at GLIBCXX_3.4 4.1.1
+ _ZNKSs7crbeginEv at GLIBCXX_3.4.14 4.5
+ _ZNKSs8capacityEv at GLIBCXX_3.4 4.1.1
+ _ZNKSs8max_sizeEv at GLIBCXX_3.4 4.1.1
+ _ZNKSs9_M_ibeginEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt10bad_typeid4whatEv at GLIBCXX_3.4.9 4.2.1
+ _ZNKSt10error_code23default_error_conditionEv at GLIBCXX_3.4.11 4.4.0
+ _ZNKSt10istrstream5rdbufEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt10lock_error4whatEv at GLIBCXX_3.4.11 4.4.0
+ _ZNKSt10moneypunctIcLb0EE10neg_formatEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIcLb0EE10pos_formatEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIcLb0EE11curr_symbolEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIcLb0EE11do_groupingEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIcLb0EE11frac_digitsEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIcLb0EE13decimal_pointEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIcLb0EE13do_neg_formatEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIcLb0EE13do_pos_formatEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIcLb0EE13negative_signEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIcLb0EE13positive_signEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIcLb0EE13thousands_sepEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIcLb0EE14do_curr_symbolEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIcLb0EE14do_frac_digitsEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIcLb0EE16do_decimal_pointEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIcLb0EE16do_negative_signEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIcLb0EE16do_positive_signEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIcLb0EE16do_thousands_sepEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIcLb0EE8groupingEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIcLb1EE10neg_formatEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIcLb1EE10pos_formatEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIcLb1EE11curr_symbolEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIcLb1EE11do_groupingEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIcLb1EE11frac_digitsEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIcLb1EE13decimal_pointEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIcLb1EE13do_neg_formatEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIcLb1EE13do_pos_formatEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIcLb1EE13negative_signEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIcLb1EE13positive_signEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIcLb1EE13thousands_sepEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIcLb1EE14do_curr_symbolEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIcLb1EE14do_frac_digitsEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIcLb1EE16do_decimal_pointEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIcLb1EE16do_negative_signEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIcLb1EE16do_positive_signEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIcLb1EE16do_thousands_sepEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIcLb1EE8groupingEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIwLb0EE10neg_formatEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIwLb0EE10pos_formatEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIwLb0EE11curr_symbolEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIwLb0EE11do_groupingEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIwLb0EE11frac_digitsEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIwLb0EE13decimal_pointEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIwLb0EE13do_neg_formatEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIwLb0EE13do_pos_formatEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIwLb0EE13negative_signEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIwLb0EE13positive_signEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIwLb0EE13thousands_sepEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIwLb0EE14do_curr_symbolEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIwLb0EE14do_frac_digitsEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIwLb0EE16do_decimal_pointEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIwLb0EE16do_negative_signEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIwLb0EE16do_positive_signEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIwLb0EE16do_thousands_sepEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIwLb0EE8groupingEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIwLb1EE10neg_formatEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIwLb1EE10pos_formatEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIwLb1EE11curr_symbolEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIwLb1EE11do_groupingEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIwLb1EE11frac_digitsEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIwLb1EE13decimal_pointEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIwLb1EE13do_neg_formatEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIwLb1EE13do_pos_formatEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIwLb1EE13negative_signEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIwLb1EE13positive_signEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIwLb1EE13thousands_sepEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIwLb1EE14do_curr_symbolEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIwLb1EE14do_frac_digitsEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIwLb1EE16do_decimal_pointEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIwLb1EE16do_negative_signEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIwLb1EE16do_positive_signEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIwLb1EE16do_thousands_sepEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt10moneypunctIwLb1EE8groupingEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt10ostrstream5rdbufEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt10ostrstream6pcountEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt11__timepunctIcE15_M_am_pm_formatEPKc at GLIBCXX_3.4 4.1.1
+ _ZNKSt11__timepunctIcE15_M_date_formatsEPPKc at GLIBCXX_3.4 4.1.1
+ _ZNKSt11__timepunctIcE15_M_time_formatsEPPKc at GLIBCXX_3.4 4.1.1
+ _ZNKSt11__timepunctIcE19_M_days_abbreviatedEPPKc at GLIBCXX_3.4 4.1.1
+ _ZNKSt11__timepunctIcE20_M_date_time_formatsEPPKc at GLIBCXX_3.4 4.1.1
+ _ZNKSt11__timepunctIcE21_M_months_abbreviatedEPPKc at GLIBCXX_3.4 4.1.1
+ _ZNKSt11__timepunctIcE7_M_daysEPPKc at GLIBCXX_3.4 4.1.1
+ _ZNKSt11__timepunctIcE8_M_am_pmEPPKc at GLIBCXX_3.4 4.1.1
+ _ZNKSt11__timepunctIcE9_M_monthsEPPKc at GLIBCXX_3.4 4.1.1
+ _ZNKSt11__timepunctIwE15_M_am_pm_formatEPKw at GLIBCXX_3.4 4.1.1
+ _ZNKSt11__timepunctIwE15_M_date_formatsEPPKw at GLIBCXX_3.4 4.1.1
+ _ZNKSt11__timepunctIwE15_M_time_formatsEPPKw at GLIBCXX_3.4 4.1.1
+ _ZNKSt11__timepunctIwE19_M_days_abbreviatedEPPKw at GLIBCXX_3.4 4.1.1
+ _ZNKSt11__timepunctIwE20_M_date_time_formatsEPPKw at GLIBCXX_3.4 4.1.1
+ _ZNKSt11__timepunctIwE21_M_months_abbreviatedEPPKw at GLIBCXX_3.4 4.1.1
+ _ZNKSt11__timepunctIwE7_M_daysEPPKw at GLIBCXX_3.4 4.1.1
+ _ZNKSt11__timepunctIwE8_M_am_pmEPPKw at GLIBCXX_3.4 4.1.1
+ _ZNKSt11__timepunctIwE9_M_monthsEPPKw at GLIBCXX_3.4 4.1.1
+ _ZNKSt11logic_error4whatEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt12__basic_fileIcE7is_openEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt12bad_weak_ptr4whatEv at GLIBCXX_3.4.15 4.6
+ _ZNKSt12future_error4whatEv at GLIBCXX_3.4.14 4.5
+ _ZNKSt12strstreambuf6pcountEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt13bad_exception4whatEv at GLIBCXX_3.4.9 4.2.1
+ _ZNKSt13basic_filebufIcSt11char_traitsIcEE7is_openEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt13basic_filebufIwSt11char_traitsIwEE7is_openEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt13basic_fstreamIcSt11char_traitsIcEE5rdbufEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt13basic_fstreamIcSt11char_traitsIcEE7is_openEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt13basic_fstreamIcSt11char_traitsIcEE7is_openEv at GLIBCXX_3.4.5 4.1.1
+ _ZNKSt13basic_fstreamIwSt11char_traitsIwEE5rdbufEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt13basic_fstreamIwSt11char_traitsIwEE7is_openEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt13basic_fstreamIwSt11char_traitsIwEE7is_openEv at GLIBCXX_3.4.5 4.1.1
+ _ZNKSt13basic_istreamIwSt11char_traitsIwEE6gcountEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt13basic_istreamIwSt11char_traitsIwEE6sentrycvbEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt13basic_ostreamIwSt11char_traitsIwEE6sentrycvbEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt13runtime_error4whatEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt14basic_ifstreamIcSt11char_traitsIcEE5rdbufEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt14basic_ifstreamIcSt11char_traitsIcEE7is_openEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt14basic_ifstreamIcSt11char_traitsIcEE7is_openEv at GLIBCXX_3.4.5 4.1.1
+ _ZNKSt14basic_ifstreamIwSt11char_traitsIwEE5rdbufEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt14basic_ifstreamIwSt11char_traitsIwEE7is_openEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt14basic_ifstreamIwSt11char_traitsIwEE7is_openEv at GLIBCXX_3.4.5 4.1.1
+ _ZNKSt14basic_ofstreamIcSt11char_traitsIcEE5rdbufEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt14basic_ofstreamIcSt11char_traitsIcEE7is_openEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt14basic_ofstreamIcSt11char_traitsIcEE7is_openEv at GLIBCXX_3.4.5 4.1.1
+ _ZNKSt14basic_ofstreamIwSt11char_traitsIwEE5rdbufEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt14basic_ofstreamIwSt11char_traitsIwEE7is_openEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt14basic_ofstreamIwSt11char_traitsIwEE7is_openEv at GLIBCXX_3.4.5 4.1.1
+ _ZNKSt14error_category10equivalentERKSt10error_codei at GLIBCXX_3.4.11 4.4.0
+ _ZNKSt14error_category10equivalentEiRKSt15error_condition at GLIBCXX_3.4.11 4.4.0
+ _ZNKSt14error_category23default_error_conditionEi at GLIBCXX_3.4.11 4.4.0
+ _ZNKSt15basic_streambufIcSt11char_traitsIcEE4gptrEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt15basic_streambufIcSt11char_traitsIcEE4pptrEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt15basic_streambufIcSt11char_traitsIcEE5ebackEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt15basic_streambufIcSt11char_traitsIcEE5egptrEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt15basic_streambufIcSt11char_traitsIcEE5epptrEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt15basic_streambufIcSt11char_traitsIcEE5pbaseEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt15basic_streambufIcSt11char_traitsIcEE6getlocEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt15basic_streambufIwSt11char_traitsIwEE4gptrEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt15basic_streambufIwSt11char_traitsIwEE4pptrEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt15basic_streambufIwSt11char_traitsIwEE5ebackEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt15basic_streambufIwSt11char_traitsIwEE5egptrEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt15basic_streambufIwSt11char_traitsIwEE5epptrEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt15basic_streambufIwSt11char_traitsIwEE5pbaseEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt15basic_streambufIwSt11char_traitsIwEE6getlocEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt15basic_stringbufIcSt11char_traitsIcESaIcEE3strEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt15basic_stringbufIwSt11char_traitsIwESaIwEE3strEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt16bad_array_length4whatEv at CXXABI_1.3.8 4.9
+ _ZNKSt17bad_function_call4whatEv at GLIBCXX_3.4.18 4.8
+ _ZNKSt18basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt18basic_stringstreamIcSt11char_traitsIcESaIcEE5rdbufEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt18basic_stringstreamIwSt11char_traitsIwESaIwEE3strEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt18basic_stringstreamIwSt11char_traitsIwESaIwEE5rdbufEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt19__codecvt_utf8_baseIDiE10do_unshiftER11__mbstate_tPcS3_RS3_ at GLIBCXX_3.4.21 5
+ _ZNKSt19__codecvt_utf8_baseIDiE11do_encodingEv at GLIBCXX_3.4.21 5
+ _ZNKSt19__codecvt_utf8_baseIDiE13do_max_lengthEv at GLIBCXX_3.4.21 5
+ _ZNKSt19__codecvt_utf8_baseIDiE16do_always_noconvEv at GLIBCXX_3.4.21 5
+ _ZNKSt19__codecvt_utf8_baseIDiE5do_inER11__mbstate_tPKcS4_RS4_PDiS6_RS6_ at GLIBCXX_3.4.21 5
+ _ZNKSt19__codecvt_utf8_baseIDiE6do_outER11__mbstate_tPKDiS4_RS4_PcS6_RS6_ at GLIBCXX_3.4.21 5
+ _ZNKSt19__codecvt_utf8_baseIDsE10do_unshiftER11__mbstate_tPcS3_RS3_ at GLIBCXX_3.4.21 5
+ _ZNKSt19__codecvt_utf8_baseIDsE11do_encodingEv at GLIBCXX_3.4.21 5
+ _ZNKSt19__codecvt_utf8_baseIDsE13do_max_lengthEv at GLIBCXX_3.4.21 5
+ _ZNKSt19__codecvt_utf8_baseIDsE16do_always_noconvEv at GLIBCXX_3.4.21 5
+ _ZNKSt19__codecvt_utf8_baseIDsE5do_inER11__mbstate_tPKcS4_RS4_PDsS6_RS6_ at GLIBCXX_3.4.21 5
+ _ZNKSt19__codecvt_utf8_baseIDsE6do_outER11__mbstate_tPKDsS4_RS4_PcS6_RS6_ at GLIBCXX_3.4.21 5
+ _ZNKSt19__codecvt_utf8_baseIwE10do_unshiftER11__mbstate_tPcS3_RS3_ at GLIBCXX_3.4.21 5
+ _ZNKSt19__codecvt_utf8_baseIwE11do_encodingEv at GLIBCXX_3.4.21 5
+ _ZNKSt19__codecvt_utf8_baseIwE13do_max_lengthEv at GLIBCXX_3.4.21 5
+ _ZNKSt19__codecvt_utf8_baseIwE16do_always_noconvEv at GLIBCXX_3.4.21 5
+ _ZNKSt19__codecvt_utf8_baseIwE5do_inER11__mbstate_tPKcS4_RS4_PwS6_RS6_ at GLIBCXX_3.4.21 5
+ _ZNKSt19__codecvt_utf8_baseIwE6do_outER11__mbstate_tPKwS4_RS4_PcS6_RS6_ at GLIBCXX_3.4.21 5
+ _ZNKSt19basic_istringstreamIcSt11char_traitsIcESaIcEE3strEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt19basic_istringstreamIcSt11char_traitsIcESaIcEE5rdbufEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt19basic_istringstreamIwSt11char_traitsIwESaIwEE3strEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt19basic_istringstreamIwSt11char_traitsIwESaIwEE5rdbufEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE5rdbufEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE3strEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE5rdbufEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt20__codecvt_utf16_baseIDiE10do_unshiftER11__mbstate_tPcS3_RS3_ at GLIBCXX_3.4.21 5
+ _ZNKSt20__codecvt_utf16_baseIDiE11do_encodingEv at GLIBCXX_3.4.21 5
+ _ZNKSt20__codecvt_utf16_baseIDiE13do_max_lengthEv at GLIBCXX_3.4.21 5
+ _ZNKSt20__codecvt_utf16_baseIDiE16do_always_noconvEv at GLIBCXX_3.4.21 5
+ _ZNKSt20__codecvt_utf16_baseIDiE5do_inER11__mbstate_tPKcS4_RS4_PDiS6_RS6_ at GLIBCXX_3.4.21 5
+ _ZNKSt20__codecvt_utf16_baseIDiE6do_outER11__mbstate_tPKDiS4_RS4_PcS6_RS6_ at GLIBCXX_3.4.21 5
+ _ZNKSt20__codecvt_utf16_baseIDsE10do_unshiftER11__mbstate_tPcS3_RS3_ at GLIBCXX_3.4.21 5
+ _ZNKSt20__codecvt_utf16_baseIDsE11do_encodingEv at GLIBCXX_3.4.21 5
+ _ZNKSt20__codecvt_utf16_baseIDsE13do_max_lengthEv at GLIBCXX_3.4.21 5
+ _ZNKSt20__codecvt_utf16_baseIDsE16do_always_noconvEv at GLIBCXX_3.4.21 5
+ _ZNKSt20__codecvt_utf16_baseIDsE5do_inER11__mbstate_tPKcS4_RS4_PDsS6_RS6_ at GLIBCXX_3.4.21 5
+ _ZNKSt20__codecvt_utf16_baseIDsE6do_outER11__mbstate_tPKDsS4_RS4_PcS6_RS6_ at GLIBCXX_3.4.21 5
+ _ZNKSt20__codecvt_utf16_baseIwE10do_unshiftER11__mbstate_tPcS3_RS3_ at GLIBCXX_3.4.21 5
+ _ZNKSt20__codecvt_utf16_baseIwE11do_encodingEv at GLIBCXX_3.4.21 5
+ _ZNKSt20__codecvt_utf16_baseIwE13do_max_lengthEv at GLIBCXX_3.4.21 5
+ _ZNKSt20__codecvt_utf16_baseIwE16do_always_noconvEv at GLIBCXX_3.4.21 5
+ _ZNKSt20__codecvt_utf16_baseIwE5do_inER11__mbstate_tPKcS4_RS4_PwS6_RS6_ at GLIBCXX_3.4.21 5
+ _ZNKSt20__codecvt_utf16_baseIwE6do_outER11__mbstate_tPKwS4_RS4_PcS6_RS6_ at GLIBCXX_3.4.21 5
+ _ZNKSt20bad_array_new_length4whatEv at CXXABI_1.3.8 4.9
+ _ZNKSt25__codecvt_utf8_utf16_baseIDiE10do_unshiftER11__mbstate_tPcS3_RS3_ at GLIBCXX_3.4.21 5
+ _ZNKSt25__codecvt_utf8_utf16_baseIDiE11do_encodingEv at GLIBCXX_3.4.21 5
+ _ZNKSt25__codecvt_utf8_utf16_baseIDiE13do_max_lengthEv at GLIBCXX_3.4.21 5
+ _ZNKSt25__codecvt_utf8_utf16_baseIDiE16do_always_noconvEv at GLIBCXX_3.4.21 5
+ _ZNKSt25__codecvt_utf8_utf16_baseIDiE5do_inER11__mbstate_tPKcS4_RS4_PDiS6_RS6_ at GLIBCXX_3.4.21 5
+ _ZNKSt25__codecvt_utf8_utf16_baseIDiE6do_outER11__mbstate_tPKDiS4_RS4_PcS6_RS6_ at GLIBCXX_3.4.21 5
+ _ZNKSt25__codecvt_utf8_utf16_baseIDsE10do_unshiftER11__mbstate_tPcS3_RS3_ at GLIBCXX_3.4.21 5
+ _ZNKSt25__codecvt_utf8_utf16_baseIDsE11do_encodingEv at GLIBCXX_3.4.21 5
+ _ZNKSt25__codecvt_utf8_utf16_baseIDsE13do_max_lengthEv at GLIBCXX_3.4.21 5
+ _ZNKSt25__codecvt_utf8_utf16_baseIDsE16do_always_noconvEv at GLIBCXX_3.4.21 5
+ _ZNKSt25__codecvt_utf8_utf16_baseIDsE5do_inER11__mbstate_tPKcS4_RS4_PDsS6_RS6_ at GLIBCXX_3.4.21 5
+ _ZNKSt25__codecvt_utf8_utf16_baseIDsE6do_outER11__mbstate_tPKDsS4_RS4_PcS6_RS6_ at GLIBCXX_3.4.21 5
+ _ZNKSt25__codecvt_utf8_utf16_baseIwE10do_unshiftER11__mbstate_tPcS3_RS3_ at GLIBCXX_3.4.21 5
+ _ZNKSt25__codecvt_utf8_utf16_baseIwE11do_encodingEv at GLIBCXX_3.4.21 5
+ _ZNKSt25__codecvt_utf8_utf16_baseIwE13do_max_lengthEv at GLIBCXX_3.4.21 5
+ _ZNKSt25__codecvt_utf8_utf16_baseIwE16do_always_noconvEv at GLIBCXX_3.4.21 5
+ _ZNKSt25__codecvt_utf8_utf16_baseIwE5do_inER11__mbstate_tPKcS4_RS4_PwS6_RS6_ at GLIBCXX_3.4.21 5
+ _ZNKSt25__codecvt_utf8_utf16_baseIwE6do_outER11__mbstate_tPKwS4_RS4_PcS6_RS6_ at GLIBCXX_3.4.21 5
+ _ZNKSt3_V214error_category10_M_messageEi at GLIBCXX_3.4.21 5
+ _ZNKSt3_V214error_category10equivalentERKSt10error_codei at GLIBCXX_3.4.21 5
+ _ZNKSt3_V214error_category10equivalentEiRKSt15error_condition at GLIBCXX_3.4.21 5
+ _ZNKSt3_V214error_category23default_error_conditionEi at GLIBCXX_3.4.21 5
+ _ZNKSt3tr14hashIRKSbIwSt11char_traitsIwESaIwEEEclES6_ at GLIBCXX_3.4.10 4.3
+ _ZNKSt3tr14hashIRKSsEclES2_ at GLIBCXX_3.4.10 4.3
+ _ZNKSt3tr14hashISbIwSt11char_traitsIwESaIwEEEclES4_ at GLIBCXX_3.4.10 4.3
+ _ZNKSt3tr14hashISsEclESs at GLIBCXX_3.4.10 4.3
+ _ZNKSt4hashIRKSbIwSt11char_traitsIwESaIwEEEclES5_ at GLIBCXX_3.4.10 4.3
+ _ZNKSt4hashIRKSsEclES1_ at GLIBCXX_3.4.10 4.3
+ _ZNKSt4hashISbIwSt11char_traitsIwESaIwEEEclES3_ at GLIBCXX_3.4.10 4.3
+ _ZNKSt4hashISsEclESs at GLIBCXX_3.4.10 4.3
+ _ZNKSt4hashISt10error_codeEclES0_ at GLIBCXX_3.4.11 4.4.0
+ _ZNKSt5ctypeIcE10do_tolowerEPcPKc at GLIBCXX_3.4 4.1.1
+ _ZNKSt5ctypeIcE10do_tolowerEc at GLIBCXX_3.4 4.1.1
+ _ZNKSt5ctypeIcE10do_toupperEPcPKc at GLIBCXX_3.4 4.1.1
+ _ZNKSt5ctypeIcE10do_toupperEc at GLIBCXX_3.4 4.1.1
+ _ZNKSt5ctypeIcE13_M_widen_initEv at GLIBCXX_3.4.11 4.4.0
+ _ZNKSt5ctypeIcE14_M_narrow_initEv at GLIBCXX_3.4.11 4.4.0
+ _ZNKSt5ctypeIcE8do_widenEPKcS2_Pc at GLIBCXX_3.4 4.1.1
+ _ZNKSt5ctypeIcE8do_widenEc at GLIBCXX_3.4 4.1.1
+ _ZNKSt5ctypeIcE9do_narrowEPKcS2_cPc at GLIBCXX_3.4 4.1.1
+ _ZNKSt5ctypeIcE9do_narrowEcc at GLIBCXX_3.4 4.1.1
+ _ZNKSt5ctypeIwE10do_scan_isEtPKwS2_ at GLIBCXX_3.4 4.1.1
+ _ZNKSt5ctypeIwE10do_tolowerEPwPKw at GLIBCXX_3.4 4.1.1
+ _ZNKSt5ctypeIwE10do_tolowerEw at GLIBCXX_3.4 4.1.1
+ _ZNKSt5ctypeIwE10do_toupperEPwPKw at GLIBCXX_3.4 4.1.1
+ _ZNKSt5ctypeIwE10do_toupperEw at GLIBCXX_3.4 4.1.1
+ _ZNKSt5ctypeIwE11do_scan_notEtPKwS2_ at GLIBCXX_3.4 4.1.1
+ _ZNKSt5ctypeIwE19_M_convert_to_wmaskEt at GLIBCXX_3.4 4.1.1
+ _ZNKSt5ctypeIwE5do_isEPKwS2_Pt at GLIBCXX_3.4 4.1.1
+ _ZNKSt5ctypeIwE5do_isEtw at GLIBCXX_3.4 4.1.1
+ _ZNKSt5ctypeIwE8do_widenEPKcS2_Pw at GLIBCXX_3.4 4.1.1
+ _ZNKSt5ctypeIwE8do_widenEc at GLIBCXX_3.4 4.1.1
+ _ZNKSt5ctypeIwE9do_narrowEPKwS2_cPc at GLIBCXX_3.4 4.1.1
+ _ZNKSt5ctypeIwE9do_narrowEwc at GLIBCXX_3.4 4.1.1
+ _ZNKSt6locale2id5_M_idEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt6locale4nameEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt6localeeqERKS_ at GLIBCXX_3.4 4.1.1
+ _ZNKSt7codecvtIDic11__mbstate_tE10do_unshiftERS0_PcS3_RS3_ at GLIBCXX_3.4.21 5
+ _ZNKSt7codecvtIDic11__mbstate_tE11do_encodingEv at GLIBCXX_3.4.21 5
+ _ZNKSt7codecvtIDic11__mbstate_tE13do_max_lengthEv at GLIBCXX_3.4.21 5
+ _ZNKSt7codecvtIDic11__mbstate_tE16do_always_noconvEv at GLIBCXX_3.4.21 5
+ _ZNKSt7codecvtIDic11__mbstate_tE5do_inERS0_PKcS4_RS4_PDiS6_RS6_ at GLIBCXX_3.4.21 5
+ _ZNKSt7codecvtIDic11__mbstate_tE6do_outERS0_PKDiS4_RS4_PcS6_RS6_ at GLIBCXX_3.4.21 5
+ _ZNKSt7codecvtIDsc11__mbstate_tE10do_unshiftERS0_PcS3_RS3_ at GLIBCXX_3.4.21 5
+ _ZNKSt7codecvtIDsc11__mbstate_tE11do_encodingEv at GLIBCXX_3.4.21 5
+ _ZNKSt7codecvtIDsc11__mbstate_tE13do_max_lengthEv at GLIBCXX_3.4.21 5
+ _ZNKSt7codecvtIDsc11__mbstate_tE16do_always_noconvEv at GLIBCXX_3.4.21 5
+ _ZNKSt7codecvtIDsc11__mbstate_tE5do_inERS0_PKcS4_RS4_PDsS6_RS6_ at GLIBCXX_3.4.21 5
+ _ZNKSt7codecvtIDsc11__mbstate_tE6do_outERS0_PKDsS4_RS4_PcS6_RS6_ at GLIBCXX_3.4.21 5
+ _ZNKSt7codecvtIcc11__mbstate_tE10do_unshiftERS0_PcS3_RS3_ at GLIBCXX_3.4 4.1.1
+ _ZNKSt7codecvtIcc11__mbstate_tE11do_encodingEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt7codecvtIcc11__mbstate_tE13do_max_lengthEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt7codecvtIcc11__mbstate_tE16do_always_noconvEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt7codecvtIcc11__mbstate_tE5do_inERS0_PKcS4_RS4_PcS6_RS6_ at GLIBCXX_3.4 4.1.1
+ _ZNKSt7codecvtIcc11__mbstate_tE6do_outERS0_PKcS4_RS4_PcS6_RS6_ at GLIBCXX_3.4 4.1.1
+ _ZNKSt7codecvtIwc11__mbstate_tE10do_unshiftERS0_PcS3_RS3_ at GLIBCXX_3.4 4.1.1
+ _ZNKSt7codecvtIwc11__mbstate_tE11do_encodingEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt7codecvtIwc11__mbstate_tE13do_max_lengthEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt7codecvtIwc11__mbstate_tE16do_always_noconvEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt7codecvtIwc11__mbstate_tE5do_inERS0_PKcS4_RS4_PwS6_RS6_ at GLIBCXX_3.4 4.1.1
+ _ZNKSt7codecvtIwc11__mbstate_tE6do_outERS0_PKwS4_RS4_PcS6_RS6_ at GLIBCXX_3.4 4.1.1
+ _ZNKSt7collateIcE10_M_compareEPKcS2_ at GLIBCXX_3.4 4.1.1
+ _ZNKSt7collateIcE10do_compareEPKcS2_S2_S2_ at GLIBCXX_3.4 4.1.1
+ _ZNKSt7collateIcE12do_transformEPKcS2_ at GLIBCXX_3.4 4.1.1
+ _ZNKSt7collateIcE4hashEPKcS2_ at GLIBCXX_3.4 4.1.1
+ _ZNKSt7collateIcE7compareEPKcS2_S2_S2_ at GLIBCXX_3.4 4.1.1
+ _ZNKSt7collateIcE7do_hashEPKcS2_ at GLIBCXX_3.4 4.1.1
+ _ZNKSt7collateIcE9transformEPKcS2_ at GLIBCXX_3.4 4.1.1
+ _ZNKSt7collateIwE10_M_compareEPKwS2_ at GLIBCXX_3.4 4.1.1
+ _ZNKSt7collateIwE10do_compareEPKwS2_S2_S2_ at GLIBCXX_3.4 4.1.1
+ _ZNKSt7collateIwE12do_transformEPKwS2_ at GLIBCXX_3.4 4.1.1
+ _ZNKSt7collateIwE4hashEPKwS2_ at GLIBCXX_3.4 4.1.1
+ _ZNKSt7collateIwE7compareEPKwS2_S2_S2_ at GLIBCXX_3.4 4.1.1
+ _ZNKSt7collateIwE7do_hashEPKwS2_ at GLIBCXX_3.4 4.1.1
+ _ZNKSt7collateIwE9transformEPKwS2_ at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIjEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_ at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIlEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_ at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intImEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_ at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intItEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_ at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIxEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_ at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIyEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_ at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE16_M_extract_floatES3_S3_RSt8ios_baseRSt12_Ios_IostateRSs at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRPv at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRb at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRj at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRl at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRm at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRt at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRx at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRPv at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRb at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRj at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRl at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRm at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRt at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRx at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIjEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_ at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIlEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_ at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intImEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_ at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intItEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_ at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIxEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_ at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIyEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_ at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE16_M_extract_floatES3_S3_RSt8ios_baseRSt12_Ios_IostateRSs at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRPv at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRb at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRj at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRl at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRm at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRt at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRx at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRPv at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRb at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRf at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRj at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRl at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRm at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRt at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRx at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRy at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIlEES3_S3_RSt8ios_basecT_ at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intImEES3_S3_RSt8ios_basecT_ at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIxEES3_S3_RSt8ios_basecT_ at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIyEES3_S3_RSt8ios_basecT_ at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIdEES3_S3_RSt8ios_baseccT_ at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIeEES3_S3_RSt8ios_baseccT_ at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecPKv at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecb at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecd at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basece at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecl at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecm at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecx at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecy at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecPKv at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecb at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecd at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basece at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecl at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecm at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecx at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecy at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIlEES3_S3_RSt8ios_basewT_ at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intImEES3_S3_RSt8ios_basewT_ at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIxEES3_S3_RSt8ios_basewT_ at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIyEES3_S3_RSt8ios_basewT_ at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIdEES3_S3_RSt8ios_basewcT_ at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIeEES3_S3_RSt8ios_basewcT_ at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewPKv at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewb at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewd at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewe at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewl at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewm at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewx at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewy at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewPKv at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewb at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewd at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewe at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewl at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewm at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewx at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewy at GLIBCXX_3.4 4.1.1
+ _ZNKSt8bad_cast4whatEv at GLIBCXX_3.4.9 4.2.1
+ _ZNKSt8ios_base7failure4whatEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt8messagesIcE18_M_convert_to_charERKSs at GLIBCXX_3.4 4.1.1
+ _ZNKSt8messagesIcE20_M_convert_from_charEPc at GLIBCXX_3.4 4.1.1
+ _ZNKSt8messagesIcE3getEiiiRKSs at GLIBCXX_3.4 4.1.1
+ _ZNKSt8messagesIcE4openERKSsRKSt6locale at GLIBCXX_3.4 4.1.1
+ _ZNKSt8messagesIcE4openERKSsRKSt6localePKc at GLIBCXX_3.4 4.1.1
+ _ZNKSt8messagesIcE5closeEi at GLIBCXX_3.4 4.1.1
+ _ZNKSt8messagesIcE6do_getEiiiRKSs at GLIBCXX_3.4 4.1.1
+ _ZNKSt8messagesIcE7do_openERKSsRKSt6locale at GLIBCXX_3.4 4.1.1
+ _ZNKSt8messagesIcE8do_closeEi at GLIBCXX_3.4 4.1.1
+ _ZNKSt8messagesIwE18_M_convert_to_charERKSbIwSt11char_traitsIwESaIwEE at GLIBCXX_3.4 4.1.1
+ _ZNKSt8messagesIwE20_M_convert_from_charEPc at GLIBCXX_3.4 4.1.1
+ _ZNKSt8messagesIwE3getEiiiRKSbIwSt11char_traitsIwESaIwEE at GLIBCXX_3.4 4.1.1
+ _ZNKSt8messagesIwE4openERKSsRKSt6locale at GLIBCXX_3.4 4.1.1
+ _ZNKSt8messagesIwE4openERKSsRKSt6localePKc at GLIBCXX_3.4 4.1.1
+ _ZNKSt8messagesIwE5closeEi at GLIBCXX_3.4 4.1.1
+ _ZNKSt8messagesIwE6do_getEiiiRKSbIwSt11char_traitsIwESaIwEE at GLIBCXX_3.4 4.1.1
+ _ZNKSt8messagesIwE7do_openERKSsRKSt6locale at GLIBCXX_3.4 4.1.1
+ _ZNKSt8messagesIwE8do_closeEi at GLIBCXX_3.4 4.1.1
+ _ZNKSt8numpunctIcE11do_groupingEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt8numpunctIcE11do_truenameEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt8numpunctIcE12do_falsenameEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt8numpunctIcE13decimal_pointEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt8numpunctIcE13thousands_sepEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt8numpunctIcE16do_decimal_pointEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt8numpunctIcE16do_thousands_sepEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt8numpunctIcE8groupingEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt8numpunctIcE8truenameEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt8numpunctIcE9falsenameEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt8numpunctIwE11do_groupingEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt8numpunctIwE11do_truenameEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt8numpunctIwE12do_falsenameEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt8numpunctIwE13decimal_pointEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt8numpunctIwE13thousands_sepEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt8numpunctIwE16do_decimal_pointEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt8numpunctIwE16do_thousands_sepEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt8numpunctIwE8groupingEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt8numpunctIwE8truenameEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt8numpunctIwE9falsenameEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10date_orderEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11do_get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm at GLIBCXX_3.4 4.1.1
+ _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11do_get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm at GLIBCXX_3.4 4.1.1
+ _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11do_get_yearES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm at GLIBCXX_3.4 4.1.1
+ _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11get_weekdayES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm at GLIBCXX_3.4 4.1.1
+ _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE13do_date_orderEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE13get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm at GLIBCXX_3.4 4.1.1
+ _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14do_get_weekdayES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm at GLIBCXX_3.4 4.1.1
+ _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE16do_get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm at GLIBCXX_3.4 4.1.1
+ _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKcSC_ at GLIBCXX_3.4.21 5
+ _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmcc at GLIBCXX_3.4.21 5
+ _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE21_M_extract_via_formatES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKc at GLIBCXX_3.4 4.1.1
+ _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm at GLIBCXX_3.4 4.1.1
+ _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm at GLIBCXX_3.4 4.1.1
+ _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8get_yearES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm at GLIBCXX_3.4 4.1.1
+ _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10date_orderEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11do_get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm at GLIBCXX_3.4 4.1.1
+ _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11do_get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm at GLIBCXX_3.4 4.1.1
+ _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11do_get_yearES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm at GLIBCXX_3.4 4.1.1
+ _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11get_weekdayES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm at GLIBCXX_3.4 4.1.1
+ _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE13do_date_orderEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE13get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm at GLIBCXX_3.4 4.1.1
+ _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14do_get_weekdayES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm at GLIBCXX_3.4 4.1.1
+ _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE16do_get_monthnameES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm at GLIBCXX_3.4 4.1.1
+ _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE21_M_extract_via_formatES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKw at GLIBCXX_3.4 4.1.1
+ _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmPKwSC_ at GLIBCXX_3.4.21 5
+ _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tmcc at GLIBCXX_3.4.21 5
+ _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8get_dateES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm at GLIBCXX_3.4 4.1.1
+ _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8get_timeES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm at GLIBCXX_3.4 4.1.1
+ _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8get_yearES3_S3_RSt8ios_baseRSt12_Ios_IostateP2tm at GLIBCXX_3.4 4.1.1
+ _ZNKSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecPK2tmPKcSB_ at GLIBCXX_3.4 4.1.1
+ _ZNKSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_RSt8ios_basecPK2tmcc at GLIBCXX_3.4 4.1.1
+ _ZNKSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_RSt8ios_basecPK2tmcc at GLIBCXX_3.4 4.1.1
+ _ZNKSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewPK2tmPKwSB_ at GLIBCXX_3.4 4.1.1
+ _ZNKSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_RSt8ios_basewPK2tmcc at GLIBCXX_3.4 4.1.1
+ _ZNKSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_RSt8ios_basewPK2tmcc at GLIBCXX_3.4 4.1.1
+ _ZNKSt9bad_alloc4whatEv at GLIBCXX_3.4.9 4.2.1
+ _ZNKSt9basic_iosIcSt11char_traitsIcEE10exceptionsEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt9basic_iosIcSt11char_traitsIcEE3badEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt9basic_iosIcSt11char_traitsIcEE3eofEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt9basic_iosIcSt11char_traitsIcEE3tieEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt9basic_iosIcSt11char_traitsIcEE4failEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt9basic_iosIcSt11char_traitsIcEE4fillEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt9basic_iosIcSt11char_traitsIcEE4goodEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt9basic_iosIcSt11char_traitsIcEE5rdbufEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc at GLIBCXX_3.4 4.1.1
+ _ZNKSt9basic_iosIcSt11char_traitsIcEE6narrowEcc at GLIBCXX_3.4 4.1.1
+ _ZNKSt9basic_iosIcSt11char_traitsIcEE7rdstateEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt9basic_iosIcSt11char_traitsIcEEcvPvEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt9basic_iosIcSt11char_traitsIcEEcvbEv at GLIBCXX_3.4.21 5
+ _ZNKSt9basic_iosIcSt11char_traitsIcEEntEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt9basic_iosIwSt11char_traitsIwEE10exceptionsEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt9basic_iosIwSt11char_traitsIwEE3badEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt9basic_iosIwSt11char_traitsIwEE3eofEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt9basic_iosIwSt11char_traitsIwEE3tieEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt9basic_iosIwSt11char_traitsIwEE4failEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt9basic_iosIwSt11char_traitsIwEE4fillEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt9basic_iosIwSt11char_traitsIwEE4goodEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt9basic_iosIwSt11char_traitsIwEE5rdbufEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt9basic_iosIwSt11char_traitsIwEE5widenEc at GLIBCXX_3.4 4.1.1
+ _ZNKSt9basic_iosIwSt11char_traitsIwEE6narrowEwc at GLIBCXX_3.4 4.1.1
+ _ZNKSt9basic_iosIwSt11char_traitsIwEE7rdstateEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt9basic_iosIwSt11char_traitsIwEEcvPvEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt9basic_iosIwSt11char_traitsIwEEcvbEv at GLIBCXX_3.4.21 5
+ _ZNKSt9basic_iosIwSt11char_traitsIwEEntEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt9exception4whatEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb0EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs at GLIBCXX_3.4 4.1.1
+ _ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb1EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs at GLIBCXX_3.4 4.1.1
+ _ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSs at GLIBCXX_3.4 4.1.1
+ _ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe at GLIBCXX_3.4 4.1.1
+ _ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSs at GLIBCXX_3.4 4.1.1
+ _ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe at GLIBCXX_3.4 4.1.1
+ _ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb0EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs at GLIBCXX_3.4 4.1.1
+ _ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb1EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs at GLIBCXX_3.4 4.1.1
+ _ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSbIwS2_SaIwEE at GLIBCXX_3.4 4.1.1
+ _ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe at GLIBCXX_3.4 4.1.1
+ _ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRSbIwS2_SaIwEE at GLIBCXX_3.4 4.1.1
+ _ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe at GLIBCXX_3.4 4.1.1
+ _ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_bRSt8ios_basecRKSs at GLIBCXX_3.4 4.1.1
+ _ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES3_bRSt8ios_basece at GLIBCXX_3.4 4.1.1
+ _ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_bRSt8ios_basecRKSs at GLIBCXX_3.4 4.1.1
+ _ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES3_bRSt8ios_basece at GLIBCXX_3.4 4.1.1
+ _ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb0EEES3_S3_RSt8ios_basecRKSs at GLIBCXX_3.4 4.1.1
+ _ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb1EEES3_S3_RSt8ios_basecRKSs at GLIBCXX_3.4 4.1.1
+ _ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_bRSt8ios_basewRKSbIwS2_SaIwEE at GLIBCXX_3.4 4.1.1
+ _ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES3_bRSt8ios_basewe at GLIBCXX_3.4 4.1.1
+ _ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_bRSt8ios_basewRKSbIwS2_SaIwEE at GLIBCXX_3.4 4.1.1
+ _ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES3_bRSt8ios_basewe at GLIBCXX_3.4 4.1.1
+ _ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb0EEES3_S3_RSt8ios_basewRKSbIwS2_SaIwEE at GLIBCXX_3.4 4.1.1
+ _ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb1EEES3_S3_RSt8ios_basewRKSbIwS2_SaIwEE at GLIBCXX_3.4 4.1.1
+ _ZNKSt9strstream5rdbufEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt9strstream6pcountEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt9type_info10__do_catchEPKS_PPvj at GLIBCXX_3.4 4.1.1
+ _ZNKSt9type_info11__do_upcastEPKN10__cxxabiv117__class_type_infoEPPv at GLIBCXX_3.4 4.1.1
+ _ZNKSt9type_info14__is_pointer_pEv at GLIBCXX_3.4 4.1.1
+ _ZNKSt9type_info15__is_function_pEv at GLIBCXX_3.4 4.1.1
+ _ZNSaIcEC1ERKS_ at GLIBCXX_3.4 4.1.1
+ _ZNSaIcEC1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSaIcEC2ERKS_ at GLIBCXX_3.4 4.1.1
+ _ZNSaIcEC2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSaIcED1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSaIcED2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSaIwEC1ERKS_ at GLIBCXX_3.4 4.1.1
+ _ZNSaIwEC1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSaIwEC2ERKS_ at GLIBCXX_3.4 4.1.1
+ _ZNSaIwEC2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSaIwED1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSaIwED2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE12_Alloc_hiderC1EPwRKS1_ at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE12_Alloc_hiderC2EPwRKS1_ at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE12_M_leak_hardEv at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE12_S_constructIN9__gnu_cxx17__normal_iteratorIPwS2_EEEES6_T_S8_RKS1_St20forward_iterator_tag at GLIBCXX_3.4.14 4.5
+ _ZNSbIwSt11char_traitsIwESaIwEE12_S_constructIPKwEEPwT_S7_RKS1_St20forward_iterator_tag at GLIBCXX_3.4.14 4.5
+ _ZNSbIwSt11char_traitsIwESaIwEE12_S_constructIPwEES4_T_S5_RKS1_St20forward_iterator_tag at GLIBCXX_3.4.14 4.5
+ _ZNSbIwSt11char_traitsIwESaIwEE12_S_empty_repEv at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwN9__gnu_cxx17__normal_iteratorIPKwS2_EES8_ at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwN9__gnu_cxx17__normal_iteratorIS3_S2_EES6_ at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwPKwS5_ at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwS3_S3_ at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE13shrink_to_fitEv at GLIBCXX_3.4.14 4.5
+ _ZNSbIwSt11char_traitsIwESaIwEE3endEv at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_destroyERKS1_ at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_disposeERKS1_ at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_refcopyEv at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE4_Rep10_M_refdataEv at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE4_Rep11_S_max_sizeE at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE4_Rep11_S_terminalE at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE4_Rep12_S_empty_repEv at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE4_Rep13_M_set_leakedEv at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE4_Rep15_M_set_sharableEv at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE4_Rep20_S_empty_rep_storageE at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE4_Rep7_M_grabERKS1_S5_ at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE4backEv at GLIBCXX_3.4.15 4.6
+ _ZNSbIwSt11char_traitsIwESaIwEE4nposE at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE4rendEv at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE4swapERS2_ at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE5beginEv at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE5clearEv at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE5eraseEN9__gnu_cxx17__normal_iteratorIPwS2_EE at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE5eraseEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_ at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE5frontEv at GLIBCXX_3.4.15 4.6
+ _ZNSbIwSt11char_traitsIwESaIwEE6appendEPKw at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6appendERKS2_ at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6appendESt16initializer_listIwE at GLIBCXX_3.4.11 4.4.0
+ _ZNSbIwSt11char_traitsIwESaIwEE6assignEOS2_ at GLIBCXX_3.4.14 4.5
+ _ZNSbIwSt11char_traitsIwESaIwEE6assignEPKw at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6assignERKS2_ at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6assignESt16initializer_listIwE at GLIBCXX_3.4.11 4.4.0
+ _ZNSbIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS2_EESt16initializer_listIwE at GLIBCXX_3.4.11 4.4.0
+ _ZNSbIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS2_EEw at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6rbeginEv at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7_M_dataEPw at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7_M_leakEv at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_NS4_IPKwS2_EES9_ at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_PKw at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_PKwS8_ at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_RKS2_ at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_S5_S5_ at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_S6_S6_ at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_St16initializer_listIwE at GLIBCXX_3.4.11 4.4.0
+ _ZNSbIwSt11char_traitsIwESaIwEE8pop_backEv at GLIBCXX_3.4.17 4.7
+ _ZNSbIwSt11char_traitsIwESaIwEE9push_backEw at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEC1EOS2_ at GLIBCXX_3.4.14 4.5
+ _ZNSbIwSt11char_traitsIwESaIwEEC1EPKwRKS1_ at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEC1ERKS1_ at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_ at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEC1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEC1IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_ at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEC1IPKwEET_S6_RKS1_ at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEC1IPwEET_S5_RKS1_ at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEC2EOS2_ at GLIBCXX_3.4.15 4.6
+ _ZNSbIwSt11char_traitsIwESaIwEEC2EPKwRKS1_ at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEC2ERKS1_ at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_ at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEC1ESt16initializer_listIwERKS1_ at GLIBCXX_3.4.11 4.4.0
+ _ZNSbIwSt11char_traitsIwESaIwEEC2ESt16initializer_listIwERKS1_ at GLIBCXX_3.4.11 4.4.0
+ _ZNSbIwSt11char_traitsIwESaIwEEC2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEC2IN9__gnu_cxx17__normal_iteratorIPwS2_EEEET_S8_RKS1_ at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEC2IPKwEET_S6_RKS1_ at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEC2IPwEET_S5_RKS1_ at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEED2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEaSEOS2_ at GLIBCXX_3.4.14 4.5
+ _ZNSbIwSt11char_traitsIwESaIwEEaSEPKw at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEaSERKS2_ at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEaSESt16initializer_listIwE at GLIBCXX_3.4.11 4.4.0
+ _ZNSbIwSt11char_traitsIwESaIwEEaSEw at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEpLEPKw at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEpLERKS2_ at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEpLESt16initializer_listIwE at GLIBCXX_3.4.11 4.4.0
+ _ZNSbIwSt11char_traitsIwESaIwEEpLEw at GLIBCXX_3.4 4.1.1
+ _ZNSd4swapERSd at GLIBCXX_3.4.21 5
+ _ZNSdC1EOSd at GLIBCXX_3.4.21 5
+ _ZNSdC1EPSt15basic_streambufIcSt11char_traitsIcEE at GLIBCXX_3.4 4.1.1
+ _ZNSdC1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSdC2EOSd at GLIBCXX_3.4.21 5
+ _ZNSdC2EPSt15basic_streambufIcSt11char_traitsIcEE at GLIBCXX_3.4 4.1.1
+ _ZNSdC2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSdD0Ev at GLIBCXX_3.4 4.1.1
+ _ZNSdD1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSdD2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSdaSEOSd at GLIBCXX_3.4.21 5
+ _ZNSi10_M_extractIPvEERSiRT_ at GLIBCXX_3.4.9 4.2.1
+ _ZNSi10_M_extractIbEERSiRT_ at GLIBCXX_3.4.9 4.2.1
+ _ZNSi10_M_extractIdEERSiRT_ at GLIBCXX_3.4.9 4.2.1
+ _ZNSi10_M_extractIeEERSiRT_ at GLIBCXX_3.4.9 4.2.1
+ _ZNSi10_M_extractIfEERSiRT_ at GLIBCXX_3.4.9 4.2.1
+ _ZNSi10_M_extractIjEERSiRT_ at GLIBCXX_3.4.9 4.2.1
+ _ZNSi10_M_extractIlEERSiRT_ at GLIBCXX_3.4.9 4.2.1
+ _ZNSi10_M_extractImEERSiRT_ at GLIBCXX_3.4.9 4.2.1
+ _ZNSi10_M_extractItEERSiRT_ at GLIBCXX_3.4.9 4.2.1
+ _ZNSi10_M_extractIxEERSiRT_ at GLIBCXX_3.4.9 4.2.1
+ _ZNSi10_M_extractIyEERSiRT_ at GLIBCXX_3.4.9 4.2.1
+ _ZNSi3getERSt15basic_streambufIcSt11char_traitsIcEE at GLIBCXX_3.4 4.1.1
+ _ZNSi3getERSt15basic_streambufIcSt11char_traitsIcEEc at GLIBCXX_3.4 4.1.1
+ _ZNSi3getERc at GLIBCXX_3.4 4.1.1
+ _ZNSi3getEv at GLIBCXX_3.4 4.1.1
+ _ZNSi4peekEv at GLIBCXX_3.4 4.1.1
+ _ZNSi4swapERSi at GLIBCXX_3.4.21 5
+ _ZNSi4syncEv at GLIBCXX_3.4 4.1.1
+ _ZNSi5seekgESt4fposI11__mbstate_tE at GLIBCXX_3.4 4.1.1
+ _ZNSi5tellgEv at GLIBCXX_3.4 4.1.1
+ _ZNSi5ungetEv at GLIBCXX_3.4 4.1.1
+ _ZNSi6ignoreEv at GLIBCXX_3.4 4.1.1
+ _ZNSi6ignoreEv at GLIBCXX_3.4.5 4.1.1
+ _ZNSi6sentryC1ERSib at GLIBCXX_3.4 4.1.1
+ _ZNSi6sentryC2ERSib at GLIBCXX_3.4 4.1.1
+ _ZNSi7putbackEc at GLIBCXX_3.4 4.1.1
+ _ZNSiC1EOSi at GLIBCXX_3.4.21 5
+ _ZNSiC1EPSt15basic_streambufIcSt11char_traitsIcEE at GLIBCXX_3.4 4.1.1
+ _ZNSiC1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSiC2EOSi at GLIBCXX_3.4.21 5
+ _ZNSiC2EPSt15basic_streambufIcSt11char_traitsIcEE at GLIBCXX_3.4 4.1.1
+ _ZNSiC2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSiD0Ev at GLIBCXX_3.4 4.1.1
+ _ZNSiD1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSiD2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSiaSEOSi at GLIBCXX_3.4.21 5
+ _ZNSirsEPFRSiS_E at GLIBCXX_3.4 4.1.1
+ _ZNSirsEPFRSt8ios_baseS0_E at GLIBCXX_3.4 4.1.1
+ _ZNSirsEPFRSt9basic_iosIcSt11char_traitsIcEES3_E at GLIBCXX_3.4 4.1.1
+ _ZNSirsEPSt15basic_streambufIcSt11char_traitsIcEE at GLIBCXX_3.4 4.1.1
+ _ZNSirsERPv at GLIBCXX_3.4 4.1.1
+ _ZNSirsERb at GLIBCXX_3.4 4.1.1
+ _ZNSirsERd at GLIBCXX_3.4 4.1.1
+ _ZNSirsERe at GLIBCXX_3.4 4.1.1
+ _ZNSirsERf at GLIBCXX_3.4 4.1.1
+ _ZNSirsERi at GLIBCXX_3.4 4.1.1
+ _ZNSirsERj at GLIBCXX_3.4 4.1.1
+ _ZNSirsERl at GLIBCXX_3.4 4.1.1
+ _ZNSirsERm at GLIBCXX_3.4 4.1.1
+ _ZNSirsERs at GLIBCXX_3.4 4.1.1
+ _ZNSirsERt at GLIBCXX_3.4 4.1.1
+ _ZNSirsERx at GLIBCXX_3.4 4.1.1
+ _ZNSirsERy at GLIBCXX_3.4 4.1.1
+ _ZNSo3putEc at GLIBCXX_3.4 4.1.1
+ _ZNSo4swapERSo at GLIBCXX_3.4.21 5
+ _ZNSo5flushEv at GLIBCXX_3.4 4.1.1
+ _ZNSo5seekpESt4fposI11__mbstate_tE at GLIBCXX_3.4 4.1.1
+ _ZNSo5tellpEv at GLIBCXX_3.4 4.1.1
+ _ZNSo6sentryC1ERSo at GLIBCXX_3.4 4.1.1
+ _ZNSo6sentryC2ERSo at GLIBCXX_3.4 4.1.1
+ _ZNSo6sentryD1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSo6sentryD2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSo9_M_insertIPKvEERSoT_ at GLIBCXX_3.4.9 4.2.1
+ _ZNSo9_M_insertIbEERSoT_ at GLIBCXX_3.4.9 4.2.1
+ _ZNSo9_M_insertIdEERSoT_ at GLIBCXX_3.4.9 4.2.1
+ _ZNSo9_M_insertIeEERSoT_ at GLIBCXX_3.4.9 4.2.1
+ _ZNSo9_M_insertIlEERSoT_ at GLIBCXX_3.4.9 4.2.1
+ _ZNSo9_M_insertImEERSoT_ at GLIBCXX_3.4.9 4.2.1
+ _ZNSo9_M_insertIxEERSoT_ at GLIBCXX_3.4.9 4.2.1
+ _ZNSo9_M_insertIyEERSoT_ at GLIBCXX_3.4.9 4.2.1
+ _ZNSoC1EOSo at GLIBCXX_3.4.21 5
+ _ZNSoC1EPSt15basic_streambufIcSt11char_traitsIcEE at GLIBCXX_3.4 4.1.1
+ _ZNSoC1ERSd at GLIBCXX_3.4.21 5
+ _ZNSoC1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSoC2EOSo at GLIBCXX_3.4.21 5
+ _ZNSoC2EPSt15basic_streambufIcSt11char_traitsIcEE at GLIBCXX_3.4 4.1.1
+ _ZNSoC2ERSd at GLIBCXX_3.4.21 5
+ _ZNSoC2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSoD0Ev at GLIBCXX_3.4 4.1.1
+ _ZNSoD1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSoD2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSoaSEOSo at GLIBCXX_3.4.21 5
+ _ZNSolsEPFRSoS_E at GLIBCXX_3.4 4.1.1
+ _ZNSolsEPFRSt8ios_baseS0_E at GLIBCXX_3.4 4.1.1
+ _ZNSolsEPFRSt9basic_iosIcSt11char_traitsIcEES3_E at GLIBCXX_3.4 4.1.1
+ _ZNSolsEPKv at GLIBCXX_3.4 4.1.1
+ _ZNSolsEPSt15basic_streambufIcSt11char_traitsIcEE at GLIBCXX_3.4 4.1.1
+ _ZNSolsEb at GLIBCXX_3.4 4.1.1
+ _ZNSolsEd at GLIBCXX_3.4 4.1.1
+ _ZNSolsEe at GLIBCXX_3.4 4.1.1
+ _ZNSolsEf at GLIBCXX_3.4 4.1.1
+ _ZNSolsEi at GLIBCXX_3.4 4.1.1
+ _ZNSolsEj at GLIBCXX_3.4 4.1.1
+ _ZNSolsEl at GLIBCXX_3.4 4.1.1
+ _ZNSolsEm at GLIBCXX_3.4 4.1.1
+ _ZNSolsEs at GLIBCXX_3.4 4.1.1
+ _ZNSolsEt at GLIBCXX_3.4 4.1.1
+ _ZNSolsEx at GLIBCXX_3.4 4.1.1
+ _ZNSolsEy at GLIBCXX_3.4 4.1.1
+ _ZNSs12_Alloc_hiderC1EPcRKSaIcE at GLIBCXX_3.4 4.1.1
+ _ZNSs12_Alloc_hiderC2EPcRKSaIcE at GLIBCXX_3.4 4.1.1
+ _ZNSs12_M_leak_hardEv at GLIBCXX_3.4 4.1.1
+ _ZNSs12_S_constructIN9__gnu_cxx17__normal_iteratorIPcSsEEEES2_T_S4_RKSaIcESt20forward_iterator_tag at GLIBCXX_3.4.14 4.5
+ _ZNSs12_S_constructIPKcEEPcT_S3_RKSaIcESt20forward_iterator_tag at GLIBCXX_3.4.14 4.5
+ _ZNSs12_S_constructIPcEES0_T_S1_RKSaIcESt20forward_iterator_tag at GLIBCXX_3.4.14 4.5
+ _ZNSs12_S_empty_repEv at GLIBCXX_3.4 4.1.1
+ _ZNSs13_S_copy_charsEPcN9__gnu_cxx17__normal_iteratorIPKcSsEES4_ at GLIBCXX_3.4 4.1.1
+ _ZNSs13_S_copy_charsEPcN9__gnu_cxx17__normal_iteratorIS_SsEES2_ at GLIBCXX_3.4 4.1.1
+ _ZNSs13_S_copy_charsEPcPKcS1_ at GLIBCXX_3.4 4.1.1
+ _ZNSs13_S_copy_charsEPcS_S_ at GLIBCXX_3.4 4.1.1
+ _ZNSs13shrink_to_fitEv at GLIBCXX_3.4.14 4.5
+ _ZNSs3endEv at GLIBCXX_3.4 4.1.1
+ _ZNSs4_Rep10_M_destroyERKSaIcE at GLIBCXX_3.4 4.1.1
+ _ZNSs4_Rep10_M_disposeERKSaIcE at GLIBCXX_3.4 4.1.1
+ _ZNSs4_Rep10_M_refcopyEv at GLIBCXX_3.4 4.1.1
+ _ZNSs4_Rep10_M_refdataEv at GLIBCXX_3.4 4.1.1
+ _ZNSs4_Rep11_S_max_sizeE at GLIBCXX_3.4 4.1.1
+ _ZNSs4_Rep11_S_terminalE at GLIBCXX_3.4 4.1.1
+ _ZNSs4_Rep12_S_empty_repEv at GLIBCXX_3.4 4.1.1
+ _ZNSs4_Rep13_M_set_leakedEv at GLIBCXX_3.4 4.1.1
+ _ZNSs4_Rep15_M_set_sharableEv at GLIBCXX_3.4 4.1.1
+ _ZNSs4_Rep20_S_empty_rep_storageE at GLIBCXX_3.4 4.1.1
+ _ZNSs4_Rep7_M_grabERKSaIcES2_ at GLIBCXX_3.4 4.1.1
+ _ZNSs4backEv at GLIBCXX_3.4.15 4.6
+ _ZNSs4nposE at GLIBCXX_3.4 4.1.1
+ _ZNSs4rendEv at GLIBCXX_3.4 4.1.1
+ _ZNSs4swapERSs at GLIBCXX_3.4 4.1.1
+ _ZNSs5beginEv at GLIBCXX_3.4 4.1.1
+ _ZNSs5clearEv at GLIBCXX_3.4 4.1.1
+ _ZNSs5eraseEN9__gnu_cxx17__normal_iteratorIPcSsEE at GLIBCXX_3.4 4.1.1
+ _ZNSs5eraseEN9__gnu_cxx17__normal_iteratorIPcSsEES2_ at GLIBCXX_3.4 4.1.1
+ _ZNSs5frontEv at GLIBCXX_3.4.15 4.6
+ _ZNSs6appendEPKc at GLIBCXX_3.4 4.1.1
+ _ZNSs6appendERKSs at GLIBCXX_3.4 4.1.1
+ _ZNSs6appendESt16initializer_listIcE at GLIBCXX_3.4.11 4.4.0
+ _ZNSs6assignEOSs at GLIBCXX_3.4.14 4.5
+ _ZNSs6assignEPKc at GLIBCXX_3.4 4.1.1
+ _ZNSs6assignERKSs at GLIBCXX_3.4 4.1.1
+ _ZNSs6assignESt16initializer_listIcE at GLIBCXX_3.4.11 4.4.0
+ _ZNSs6insertEN9__gnu_cxx17__normal_iteratorIPcSsEESt16initializer_listIcE at GLIBCXX_3.4.11 4.4.0
+ _ZNSs6insertEN9__gnu_cxx17__normal_iteratorIPcSsEEc at GLIBCXX_3.4 4.1.1
+ _ZNSs6rbeginEv at GLIBCXX_3.4 4.1.1
+ _ZNSs7_M_dataEPc at GLIBCXX_3.4 4.1.1
+ _ZNSs7_M_leakEv at GLIBCXX_3.4 4.1.1
+ _ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_NS0_IPKcSsEES5_ at GLIBCXX_3.4 4.1.1
+ _ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKc at GLIBCXX_3.4 4.1.1
+ _ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKcS4_ at GLIBCXX_3.4 4.1.1
+ _ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_RKSs at GLIBCXX_3.4 4.1.1
+ _ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_S1_S1_ at GLIBCXX_3.4 4.1.1
+ _ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_S2_S2_ at GLIBCXX_3.4 4.1.1
+ _ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_St16initializer_listIcE at GLIBCXX_3.4.11 4.4.0
+ _ZNSs8pop_backEv at GLIBCXX_3.4.17 4.7
+ _ZNSs9push_backEc at GLIBCXX_3.4 4.1.1
+ _ZNSsC1EOSs at GLIBCXX_3.4.14 4.5
+ _ZNSsC1EPKcRKSaIcE at GLIBCXX_3.4 4.1.1
+ _ZNSsC1ERKSaIcE at GLIBCXX_3.4 4.1.1
+ _ZNSsC1ERKSs at GLIBCXX_3.4 4.1.1
+ _ZNSsC1ESt16initializer_listIcERKSaIcE at GLIBCXX_3.4.11 4.4.0
+ _ZNSsC1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSsC1IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE at GLIBCXX_3.4 4.1.1
+ _ZNSsC1IPKcEET_S2_RKSaIcE at GLIBCXX_3.4 4.1.1
+ _ZNSsC1IPcEET_S1_RKSaIcE at GLIBCXX_3.4 4.1.1
+ _ZNSsC2EOSs at GLIBCXX_3.4.15 4.6
+ _ZNSsC2EPKcRKSaIcE at GLIBCXX_3.4 4.1.1
+ _ZNSsC2ERKSaIcE at GLIBCXX_3.4 4.1.1
+ _ZNSsC2ERKSs at GLIBCXX_3.4 4.1.1
+ _ZNSsC2ESt16initializer_listIcERKSaIcE at GLIBCXX_3.4.11 4.4.0
+ _ZNSsC2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSsC2IN9__gnu_cxx17__normal_iteratorIPcSsEEEET_S4_RKSaIcE at GLIBCXX_3.4 4.1.1
+ _ZNSsC2IPKcEET_S2_RKSaIcE at GLIBCXX_3.4 4.1.1
+ _ZNSsC2IPcEET_S1_RKSaIcE at GLIBCXX_3.4 4.1.1
+ _ZNSsD1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSsD2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSsaSEOSs at GLIBCXX_3.4.14 4.5
+ _ZNSsaSEPKc at GLIBCXX_3.4 4.1.1
+ _ZNSsaSERKSs at GLIBCXX_3.4 4.1.1
+ _ZNSsaSESt16initializer_listIcE at GLIBCXX_3.4.11 4.4.0
+ _ZNSsaSEc at GLIBCXX_3.4 4.1.1
+ _ZNSspLEPKc at GLIBCXX_3.4 4.1.1
+ _ZNSspLERKSs at GLIBCXX_3.4 4.1.1
+ _ZNSspLESt16initializer_listIcE at GLIBCXX_3.4.11 4.4.0
+ _ZNSspLEc at GLIBCXX_3.4 4.1.1
+ _ZNSt10_Sp_lockerC1EPKv at GLIBCXX_3.4.21 5
+ _ZNSt10_Sp_lockerC1EPKvS1_ at GLIBCXX_3.4.21 5
+ _ZNSt10_Sp_lockerC2EPKv at GLIBCXX_3.4.21 5
+ _ZNSt10_Sp_lockerC2EPKvS1_ at GLIBCXX_3.4.21 5
+ _ZNSt10_Sp_lockerD1Ev at GLIBCXX_3.4.21 5
+ _ZNSt10_Sp_lockerD2Ev at GLIBCXX_3.4.21 5
+ _ZNSt10__num_base11_S_atoms_inE at GLIBCXX_3.4 4.1.1
+ _ZNSt10__num_base12_S_atoms_outE at GLIBCXX_3.4 4.1.1
+ _ZNSt10__num_base15_S_format_floatERKSt8ios_basePcc at GLIBCXX_3.4 4.1.1
+ _ZNSt10bad_typeidD0Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt10bad_typeidD1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt10bad_typeidD2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt10ctype_base5alnumE at GLIBCXX_3.4 4.1.1
+ _ZNSt10ctype_base5alphaE at GLIBCXX_3.4 4.1.1
+ _ZNSt10ctype_base5blankE at GLIBCXX_3.4.21 5
+ _ZNSt10ctype_base5cntrlE at GLIBCXX_3.4 4.1.1
+ _ZNSt10ctype_base5digitE at GLIBCXX_3.4 4.1.1
+ _ZNSt10ctype_base5graphE at GLIBCXX_3.4 4.1.1
+ _ZNSt10ctype_base5lowerE at GLIBCXX_3.4 4.1.1
+ _ZNSt10ctype_base5printE at GLIBCXX_3.4 4.1.1
+ _ZNSt10ctype_base5punctE at GLIBCXX_3.4 4.1.1
+ _ZNSt10ctype_base5spaceE at GLIBCXX_3.4 4.1.1
+ _ZNSt10ctype_base5upperE at GLIBCXX_3.4 4.1.1
+ _ZNSt10ctype_base6xdigitE at GLIBCXX_3.4 4.1.1
+ _ZNSt10istrstream3strEv at GLIBCXX_3.4 4.1.1
+ _ZNSt10istrstreamC1EPKc at GLIBCXX_3.4 4.1.1
+ _ZNSt10istrstreamC1EPc at GLIBCXX_3.4 4.1.1
+ _ZNSt10istrstreamC2EPKc at GLIBCXX_3.4 4.1.1
+ _ZNSt10istrstreamC2EPc at GLIBCXX_3.4 4.1.1
+ _ZNSt10istrstreamD0Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt10istrstreamD1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt10istrstreamD2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt10money_base18_S_default_patternE at GLIBCXX_3.4 4.1.1
+ _ZNSt10money_base20_S_construct_patternEccc at GLIBCXX_3.4 4.1.1
+ _ZNSt10money_base8_S_atomsE at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb0EE24_M_initialize_moneypunctEP15__locale_structPKc at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb0EE2idE at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb0EE4intlE at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb0EED0Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb0EED1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb0EED2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb1EE24_M_initialize_moneypunctEP15__locale_structPKc at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb1EE2idE at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb1EE4intlE at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb1EED0Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb1EED1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb1EED2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb0EE24_M_initialize_moneypunctEP15__locale_structPKc at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb0EE2idE at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb0EE4intlE at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb0EED0Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb0EED1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb0EED2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb1EE24_M_initialize_moneypunctEP15__locale_structPKc at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb1EE2idE at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb1EE4intlE at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb1EED0Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb1EED1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb1EED2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt10ostrstream3strEv at GLIBCXX_3.4 4.1.1
+ _ZNSt10ostrstream6freezeEb at GLIBCXX_3.4 4.1.1
+ _ZNSt10ostrstreamC1EPciSt13_Ios_Openmode at GLIBCXX_3.4 4.1.1
+ _ZNSt10ostrstreamC1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt10ostrstreamC2EPciSt13_Ios_Openmode at GLIBCXX_3.4 4.1.1
+ _ZNSt10ostrstreamC2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt10ostrstreamD0Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt10ostrstreamD1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt10ostrstreamD2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIcE23_M_initialize_timepunctEP15__locale_struct at GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIcE2idE at GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIcED0Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIcED1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIcED2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIwE23_M_initialize_timepunctEP15__locale_struct at GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIwE2idE at GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIwED0Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIwED1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIwED2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt11char_traitsIcE2eqERKcS2_ at GLIBCXX_3.4 4.1.1
+ _ZNSt11char_traitsIcE2eqERKcS2_ at GLIBCXX_3.4.5 4.1.1
+ _ZNSt11char_traitsIwE2eqERKwS2_ at GLIBCXX_3.4 4.1.1
+ _ZNSt11char_traitsIwE2eqERKwS2_ at GLIBCXX_3.4.5 4.1.1
+ _ZNSt11logic_errorC1EPKc at GLIBCXX_3.4.21 5
+ _ZNSt11logic_errorC1ERKS_ at GLIBCXX_3.4.21 5
+ _ZNSt11logic_errorC1ERKSs at GLIBCXX_3.4 4.1.1
+ _ZNSt11logic_errorC2EPKc at GLIBCXX_3.4.21 5
+ _ZNSt11logic_errorC2ERKS_ at GLIBCXX_3.4.21 5
+ _ZNSt11logic_errorC2ERKSs at GLIBCXX_3.4 4.1.1
+ _ZNSt11logic_errorD0Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt11logic_errorD1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt11logic_errorD2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt11logic_erroraSERKS_ at GLIBCXX_3.4.21 5
+ _ZNSt11range_errorC1EPKc at GLIBCXX_3.4.21 5
+ _ZNSt11range_errorC1ERKSs at GLIBCXX_3.4 4.1.1
+ _ZNSt11range_errorC2EPKc at GLIBCXX_3.4.21 5
+ _ZNSt11range_errorC2ERKSs at GLIBCXX_3.4 4.1.1
+ _ZNSt11range_errorD0Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt11range_errorD1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt11range_errorD2Ev at GLIBCXX_3.4.15 4.6
+ _ZNSt11regex_errorC1ENSt15regex_constants10error_typeE at GLIBCXX_3.4.20 4.9
+ _ZNSt11regex_errorC2ENSt15regex_constants10error_typeE at GLIBCXX_3.4.21 5
+ _ZNSt11regex_errorD0Ev at GLIBCXX_3.4.15 4.6
+ _ZNSt11regex_errorD1Ev at GLIBCXX_3.4.15 4.6
+ _ZNSt11regex_errorD2Ev at GLIBCXX_3.4.15 4.6
+ _ZNSt12__basic_fileIcE2fdEv at GLIBCXX_3.4 4.1.1
+ _ZNSt12__basic_fileIcE4fileEv at GLIBCXX_3.4.1 4.1.1
+ _ZNSt12__basic_fileIcE4openEPKcSt13_Ios_Openmodei at GLIBCXX_3.4 4.1.1
+ _ZNSt12__basic_fileIcE4syncEv at GLIBCXX_3.4 4.1.1
+ _ZNSt12__basic_fileIcE5closeEv at GLIBCXX_3.4 4.1.1
+ _ZNSt12__basic_fileIcE8sys_openEP8_IO_FILESt13_Ios_Openmode at GLIBCXX_3.4 4.1.1
+ _ZNSt12__basic_fileIcE8sys_openEiSt13_Ios_Openmode at GLIBCXX_3.4 4.1.1
+ _ZNSt12__basic_fileIcE9showmanycEv at GLIBCXX_3.4 4.1.1
+ _ZNSt12__basic_fileIcED1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt12__basic_fileIcED2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt12bad_weak_ptrD0Ev at GLIBCXX_3.4.15 4.6
+ _ZNSt12bad_weak_ptrD1Ev at GLIBCXX_3.4.15 4.6
+ _ZNSt12bad_weak_ptrD2Ev at GLIBCXX_3.4.15 4.6
+ _ZNSt12ctype_bynameIcED0Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt12ctype_bynameIcED1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt12ctype_bynameIcED2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt12ctype_bynameIwED0Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt12ctype_bynameIwED1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt12ctype_bynameIwED2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt12domain_errorC1EPKc at GLIBCXX_3.4.21 5
+ _ZNSt12domain_errorC1ERKSs at GLIBCXX_3.4 4.1.1
+ _ZNSt12domain_errorC2EPKc at GLIBCXX_3.4.21 5
+ _ZNSt12domain_errorC2ERKSs at GLIBCXX_3.4 4.1.1
+ _ZNSt12domain_errorD0Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt12domain_errorD1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt12domain_errorD2Ev at GLIBCXX_3.4.15 4.6
+ _ZNSt12future_errorD0Ev at GLIBCXX_3.4.14 4.5
+ _ZNSt12future_errorD1Ev at GLIBCXX_3.4.14 4.5
+ _ZNSt12future_errorD2Ev at GLIBCXX_3.4.14 4.5
+ _ZNSt12length_errorC1EPKc at GLIBCXX_3.4.21 5
+ _ZNSt12length_errorC1ERKSs at GLIBCXX_3.4 4.1.1
+ _ZNSt12length_errorC2EPKc at GLIBCXX_3.4.21 5
+ _ZNSt12length_errorC2ERKSs at GLIBCXX_3.4 4.1.1
+ _ZNSt12length_errorD0Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt12length_errorD1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt12length_errorD2Ev at GLIBCXX_3.4.15 4.6
+ _ZNSt12out_of_rangeC1EPKc at GLIBCXX_3.4.21 5
+ _ZNSt12out_of_rangeC1ERKSs at GLIBCXX_3.4 4.1.1
+ _ZNSt12out_of_rangeC2EPKc at GLIBCXX_3.4.21 5
+ _ZNSt12out_of_rangeC2ERKSs at GLIBCXX_3.4 4.1.1
+ _ZNSt12out_of_rangeD0Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt12out_of_rangeD1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt12out_of_rangeD2Ev at GLIBCXX_3.4.15 4.6
+ _ZNSt12placeholders2_1E at GLIBCXX_3.4.15 4.6
+ _ZNSt12placeholders2_2E at GLIBCXX_3.4.15 4.6
+ _ZNSt12placeholders2_3E at GLIBCXX_3.4.15 4.6
+ _ZNSt12placeholders2_4E at GLIBCXX_3.4.15 4.6
+ _ZNSt12placeholders2_5E at GLIBCXX_3.4.15 4.6
+ _ZNSt12placeholders2_6E at GLIBCXX_3.4.15 4.6
+ _ZNSt12placeholders2_7E at GLIBCXX_3.4.15 4.6
+ _ZNSt12placeholders2_8E at GLIBCXX_3.4.15 4.6
+ _ZNSt12placeholders2_9E at GLIBCXX_3.4.15 4.6
+ _ZNSt12placeholders3_10E at GLIBCXX_3.4.15 4.6
+ _ZNSt12placeholders3_11E at GLIBCXX_3.4.15 4.6
+ _ZNSt12placeholders3_12E at GLIBCXX_3.4.15 4.6
+ _ZNSt12placeholders3_13E at GLIBCXX_3.4.15 4.6
+ _ZNSt12placeholders3_14E at GLIBCXX_3.4.15 4.6
+ _ZNSt12placeholders3_15E at GLIBCXX_3.4.15 4.6
+ _ZNSt12placeholders3_16E at GLIBCXX_3.4.15 4.6
+ _ZNSt12placeholders3_17E at GLIBCXX_3.4.15 4.6
+ _ZNSt12placeholders3_18E at GLIBCXX_3.4.15 4.6
+ _ZNSt12placeholders3_19E at GLIBCXX_3.4.15 4.6
+ _ZNSt12placeholders3_20E at GLIBCXX_3.4.15 4.6
+ _ZNSt12placeholders3_21E at GLIBCXX_3.4.15 4.6
+ _ZNSt12placeholders3_22E at GLIBCXX_3.4.15 4.6
+ _ZNSt12placeholders3_23E at GLIBCXX_3.4.15 4.6
+ _ZNSt12placeholders3_24E at GLIBCXX_3.4.15 4.6
+ _ZNSt12placeholders3_25E at GLIBCXX_3.4.15 4.6
+ _ZNSt12placeholders3_26E at GLIBCXX_3.4.15 4.6
+ _ZNSt12placeholders3_27E at GLIBCXX_3.4.15 4.6
+ _ZNSt12placeholders3_28E at GLIBCXX_3.4.15 4.6
+ _ZNSt12placeholders3_29E at GLIBCXX_3.4.15 4.6
+ _ZNSt12strstreambuf3strEv at GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambuf6freezeEb at GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambuf7_M_freeEPc at GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambuf7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode at GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambuf8overflowEi at GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambuf9pbackfailEi at GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambuf9underflowEv at GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufD0Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufD1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufD2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt12system_errorD0Ev at GLIBCXX_3.4.11 4.4.0
+ _ZNSt12system_errorD1Ev at GLIBCXX_3.4.11 4.4.0
+ _ZNSt12system_errorD2Ev at GLIBCXX_3.4.11 4.4.0
+ _ZNSt13bad_exceptionD0Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt13bad_exceptionD1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt13bad_exceptionD2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIcSt11char_traitsIcEE14_M_get_ext_posER11__mbstate_t at GLIBCXX_3.4.15 4.6
+ _ZNSt13basic_filebufIcSt11char_traitsIcEE15_M_create_pbackEv at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIcSt11char_traitsIcEE16_M_destroy_pbackEv at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIcSt11char_traitsIcEE19_M_terminate_outputEv at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIcSt11char_traitsIcEE26_M_destroy_internal_bufferEv at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIcSt11char_traitsIcEE27_M_allocate_internal_bufferEv at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIcSt11char_traitsIcEE4openERKSsSt13_Ios_Openmode at GLIBCXX_3.4.13 4.4.2
+ _ZNSt13basic_filebufIcSt11char_traitsIcEE4swapERS2_ at GLIBCXX_3.4.21 5
+ _ZNSt13basic_filebufIcSt11char_traitsIcEE4syncEv at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIcSt11char_traitsIcEE5closeEv at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIcSt11char_traitsIcEE5imbueERKSt6locale at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIcSt11char_traitsIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIcSt11char_traitsIcEE8overflowEi at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIcSt11char_traitsIcEE9pbackfailEi at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIcSt11char_traitsIcEE9showmanycEv at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIcSt11char_traitsIcEE9underflowEv at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIcSt11char_traitsIcEEC1EOS2_ at GLIBCXX_3.4.21 5
+ _ZNSt13basic_filebufIcSt11char_traitsIcEEC1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIcSt11char_traitsIcEEC2EOS2_ at GLIBCXX_3.4.21 5
+ _ZNSt13basic_filebufIcSt11char_traitsIcEEC2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIcSt11char_traitsIcEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIcSt11char_traitsIcEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIcSt11char_traitsIcEED2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIcSt11char_traitsIcEEaSEOS2_ at GLIBCXX_3.4.21 5
+ _ZNSt13basic_filebufIwSt11char_traitsIwEE14_M_get_ext_posER11__mbstate_t at GLIBCXX_3.4.15 4.6
+ _ZNSt13basic_filebufIwSt11char_traitsIwEE15_M_create_pbackEv at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIwSt11char_traitsIwEE16_M_destroy_pbackEv at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIwSt11char_traitsIwEE19_M_terminate_outputEv at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIwSt11char_traitsIwEE26_M_destroy_internal_bufferEv at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIwSt11char_traitsIwEE27_M_allocate_internal_bufferEv at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIwSt11char_traitsIwEE4openEPKcSt13_Ios_Openmode at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIwSt11char_traitsIwEE4openERKSsSt13_Ios_Openmode at GLIBCXX_3.4.13 4.4.2
+ _ZNSt13basic_filebufIwSt11char_traitsIwEE4swapERS2_ at GLIBCXX_3.4.21 5
+ _ZNSt13basic_filebufIwSt11char_traitsIwEE4syncEv at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIwSt11char_traitsIwEE5closeEv at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIwSt11char_traitsIwEE5imbueERKSt6locale at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIwSt11char_traitsIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIwSt11char_traitsIwEE8overflowEj at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIwSt11char_traitsIwEE9pbackfailEj at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIwSt11char_traitsIwEE9showmanycEv at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIwSt11char_traitsIwEE9underflowEv at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIwSt11char_traitsIwEEC1EOS2_ at GLIBCXX_3.4.21 5
+ _ZNSt13basic_filebufIwSt11char_traitsIwEEC1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIwSt11char_traitsIwEEC2EOS2_ at GLIBCXX_3.4.21 5
+ _ZNSt13basic_filebufIwSt11char_traitsIwEEC2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIwSt11char_traitsIwEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIwSt11char_traitsIwEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIwSt11char_traitsIwEED2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIwSt11char_traitsIwEEaSEOS2_ at GLIBCXX_3.4.21 5
+ _ZNSt13basic_fstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_fstreamIcSt11char_traitsIcEE4openERKSsSt13_Ios_Openmode at GLIBCXX_3.4.13 4.4.2
+ _ZNSt13basic_fstreamIcSt11char_traitsIcEE4swapERS2_ at GLIBCXX_3.4.21 5
+ _ZNSt13basic_fstreamIcSt11char_traitsIcEE5closeEv at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_fstreamIcSt11char_traitsIcEE7is_openEv at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_fstreamIcSt11char_traitsIcEEC1EOS2_ at GLIBCXX_3.4.21 5
+ _ZNSt13basic_fstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_fstreamIcSt11char_traitsIcEEC1ERKSsSt13_Ios_Openmode at GLIBCXX_3.4.13 4.4.2
+ _ZNSt13basic_fstreamIcSt11char_traitsIcEEC1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_fstreamIcSt11char_traitsIcEEC2EOS2_ at GLIBCXX_3.4.21 5
+ _ZNSt13basic_fstreamIcSt11char_traitsIcEEC2EPKcSt13_Ios_Openmode at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_fstreamIcSt11char_traitsIcEEC2ERKSsSt13_Ios_Openmode at GLIBCXX_3.4.13 4.4.2
+ _ZNSt13basic_fstreamIcSt11char_traitsIcEEC2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_fstreamIcSt11char_traitsIcEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_fstreamIcSt11char_traitsIcEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_fstreamIcSt11char_traitsIcEED2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_fstreamIcSt11char_traitsIcEEaSEOS2_ at GLIBCXX_3.4.21 5
+ _ZNSt13basic_fstreamIwSt11char_traitsIwEE4openEPKcSt13_Ios_Openmode at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_fstreamIwSt11char_traitsIwEE4openERKSsSt13_Ios_Openmode at GLIBCXX_3.4.13 4.4.2
+ _ZNSt13basic_fstreamIwSt11char_traitsIwEE4swapERS2_ at GLIBCXX_3.4.21 5
+ _ZNSt13basic_fstreamIwSt11char_traitsIwEE5closeEv at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_fstreamIwSt11char_traitsIwEE7is_openEv at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_fstreamIwSt11char_traitsIwEEC1EOS2_ at GLIBCXX_3.4.21 5
+ _ZNSt13basic_fstreamIwSt11char_traitsIwEEC1EPKcSt13_Ios_Openmode at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_fstreamIwSt11char_traitsIwEEC1ERKSsSt13_Ios_Openmode at GLIBCXX_3.4.13 4.4.2
+ _ZNSt13basic_fstreamIwSt11char_traitsIwEEC1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_fstreamIwSt11char_traitsIwEEC2EOS2_ at GLIBCXX_3.4.21 5
+ _ZNSt13basic_fstreamIwSt11char_traitsIwEEC2EPKcSt13_Ios_Openmode at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_fstreamIwSt11char_traitsIwEEC2ERKSsSt13_Ios_Openmode at GLIBCXX_3.4.13 4.4.2
+ _ZNSt13basic_fstreamIwSt11char_traitsIwEEC2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_fstreamIwSt11char_traitsIwEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_fstreamIwSt11char_traitsIwEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_fstreamIwSt11char_traitsIwEED2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_fstreamIwSt11char_traitsIwEEaSEOS2_ at GLIBCXX_3.4.21 5
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIPvEERS2_RT_ at GLIBCXX_3.4.9 4.2.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIbEERS2_RT_ at GLIBCXX_3.4.9 4.2.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIdEERS2_RT_ at GLIBCXX_3.4.9 4.2.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIeEERS2_RT_ at GLIBCXX_3.4.9 4.2.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIfEERS2_RT_ at GLIBCXX_3.4.9 4.2.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIjEERS2_RT_ at GLIBCXX_3.4.9 4.2.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIlEERS2_RT_ at GLIBCXX_3.4.9 4.2.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractImEERS2_RT_ at GLIBCXX_3.4.9 4.2.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractItEERS2_RT_ at GLIBCXX_3.4.9 4.2.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIxEERS2_RT_ at GLIBCXX_3.4.9 4.2.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIyEERS2_RT_ at GLIBCXX_3.4.9 4.2.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE3getERSt15basic_streambufIwS1_E at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE3getERSt15basic_streambufIwS1_Ew at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE3getERw at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE3getEv at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE4peekEv at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE4swapERS2_ at GLIBCXX_3.4.21 5
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE4syncEv at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE5seekgESt4fposI11__mbstate_tE at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE5tellgEv at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE5ungetEv at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEv at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEv at GLIBCXX_3.4.5 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE6sentryC1ERS2_b at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE6sentryC2ERS2_b at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE7putbackEw at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEEC1EOS2_ at GLIBCXX_3.4.21 5
+ _ZNSt13basic_istreamIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_E at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEEC1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEEC2EOS2_ at GLIBCXX_3.4.21 5
+ _ZNSt13basic_istreamIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEEC2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEED2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEEaSEOS2_ at GLIBCXX_3.4.21 5
+ _ZNSt13basic_istreamIwSt11char_traitsIwEErsEPFRS2_S3_E at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEErsEPFRSt8ios_baseS4_E at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEErsEPFRSt9basic_iosIwS1_ES5_E at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEErsEPSt15basic_streambufIwS1_E at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEErsERPv at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEErsERb at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEErsERd at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEErsERe at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEErsERf at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEErsERi at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEErsERj at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEErsERl at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEErsERm at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEErsERs at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEErsERt at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEErsERx at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEErsERy at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEE3putEw at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEE4swapERS2_ at GLIBCXX_3.4.21 5
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEE5flushEv at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEE5seekpESt4fposI11__mbstate_tE at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEE5tellpEv at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryC1ERS2_ at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryC2ERS2_ at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryD1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentryD2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIPKvEERS2_T_ at GLIBCXX_3.4.9 4.2.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIbEERS2_T_ at GLIBCXX_3.4.9 4.2.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIdEERS2_T_ at GLIBCXX_3.4.9 4.2.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIeEERS2_T_ at GLIBCXX_3.4.9 4.2.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIlEERS2_T_ at GLIBCXX_3.4.9 4.2.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertImEERS2_T_ at GLIBCXX_3.4.9 4.2.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIxEERS2_T_ at GLIBCXX_3.4.9 4.2.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIyEERS2_T_ at GLIBCXX_3.4.9 4.2.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEEC1EOS2_ at GLIBCXX_3.4.21 5
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_E at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEEC1ERSt14basic_iostreamIwS1_E at GLIBCXX_3.4.21 5
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEEC1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEEC2EOS2_ at GLIBCXX_3.4.21 5
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEEC2ERSt14basic_iostreamIwS1_E at GLIBCXX_3.4.21 5
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEEC2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEED2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEEaSEOS2_ at GLIBCXX_3.4.21 5
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPFRS2_S3_E at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPFRSt8ios_baseS4_E at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPFRSt9basic_iosIwS1_ES5_E at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPKv at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEPSt15basic_streambufIwS1_E at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEb at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEd at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEe at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEf at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEi at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEj at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEl at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEm at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEs at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEt at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEx at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEy at GLIBCXX_3.4 4.1.1
+ _ZNSt13random_device14_M_init_pretr1ERKSs at GLIBCXX_3.4.18 4.8
+ _ZNSt13random_device16_M_getval_pretr1Ev at GLIBCXX_3.4.18 4.8
+ _ZNSt13random_device7_M_finiEv at GLIBCXX_3.4.18 4.8
+ _ZNSt13random_device7_M_initERKSs at GLIBCXX_3.4.18 4.8
+ _ZNSt13random_device9_M_getvalEv at GLIBCXX_3.4.18 4.8
+ _ZNSt13runtime_errorC1ERKSs at GLIBCXX_3.4 4.1.1
+ _ZNSt13runtime_errorC2ERKSs at GLIBCXX_3.4 4.1.1
+ _ZNSt13runtime_errorD0Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt13runtime_errorD1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt13runtime_errorD2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt14basic_ifstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode at GLIBCXX_3.4 4.1.1
+ _ZNSt14basic_ifstreamIcSt11char_traitsIcEE4openERKSsSt13_Ios_Openmode at GLIBCXX_3.4.13 4.4.2
+ _ZNSt14basic_ifstreamIcSt11char_traitsIcEE5closeEv at GLIBCXX_3.4 4.1.1
+ _ZNSt14basic_ifstreamIcSt11char_traitsIcEE7is_openEv at GLIBCXX_3.4 4.1.1
+ _ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode at GLIBCXX_3.4 4.1.1
+ _ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1ERKSsSt13_Ios_Openmode at GLIBCXX_3.4.13 4.4.2
+ _ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt14basic_ifstreamIcSt11char_traitsIcEEC2EPKcSt13_Ios_Openmode at GLIBCXX_3.4 4.1.1
+ _ZNSt14basic_ifstreamIcSt11char_traitsIcEEC2ERKSsSt13_Ios_Openmode at GLIBCXX_3.4.13 4.4.2
+ _ZNSt14basic_ifstreamIcSt11char_traitsIcEEC2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt14basic_ifstreamIcSt11char_traitsIcEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt14basic_ifstreamIcSt11char_traitsIcEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt14basic_ifstreamIcSt11char_traitsIcEED2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt14basic_ifstreamIwSt11char_traitsIwEE4openEPKcSt13_Ios_Openmode at GLIBCXX_3.4 4.1.1
+ _ZNSt14basic_ifstreamIwSt11char_traitsIwEE4openERKSsSt13_Ios_Openmode at GLIBCXX_3.4.13 4.4.2
+ _ZNSt14basic_ifstreamIwSt11char_traitsIwEE5closeEv at GLIBCXX_3.4 4.1.1
+ _ZNSt14basic_ifstreamIwSt11char_traitsIwEE7is_openEv at GLIBCXX_3.4 4.1.1
+ _ZNSt14basic_ifstreamIwSt11char_traitsIwEEC1EPKcSt13_Ios_Openmode at GLIBCXX_3.4 4.1.1
+ _ZNSt14basic_ifstreamIwSt11char_traitsIwEEC1ERKSsSt13_Ios_Openmode at GLIBCXX_3.4.13 4.4.2
+ _ZNSt14basic_ifstreamIwSt11char_traitsIwEEC1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt14basic_ifstreamIwSt11char_traitsIwEEC2EPKcSt13_Ios_Openmode at GLIBCXX_3.4 4.1.1
+ _ZNSt14basic_ifstreamIwSt11char_traitsIwEEC2ERKSsSt13_Ios_Openmode at GLIBCXX_3.4.13 4.4.2
+ _ZNSt14basic_ifstreamIwSt11char_traitsIwEEC2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt14basic_ifstreamIwSt11char_traitsIwEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt14basic_ifstreamIwSt11char_traitsIwEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt14basic_ifstreamIwSt11char_traitsIwEED2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt14basic_iostreamIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_E at GLIBCXX_3.4 4.1.1
+ _ZNSt14basic_iostreamIwSt11char_traitsIwEEC1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt14basic_iostreamIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E at GLIBCXX_3.4 4.1.1
+ _ZNSt14basic_iostreamIwSt11char_traitsIwEEC2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt14basic_iostreamIwSt11char_traitsIwEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt14basic_iostreamIwSt11char_traitsIwEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt14basic_iostreamIwSt11char_traitsIwEED2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt14basic_ofstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode at GLIBCXX_3.4 4.1.1
+ _ZNSt14basic_ofstreamIcSt11char_traitsIcEE4openERKSsSt13_Ios_Openmode at GLIBCXX_3.4.13 4.4.2
+ _ZNSt14basic_ofstreamIcSt11char_traitsIcEE5closeEv at GLIBCXX_3.4 4.1.1
+ _ZNSt14basic_ofstreamIcSt11char_traitsIcEE7is_openEv at GLIBCXX_3.4 4.1.1
+ _ZNSt14basic_ofstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode at GLIBCXX_3.4 4.1.1
+ _ZNSt14basic_ofstreamIcSt11char_traitsIcEEC1ERKSsSt13_Ios_Openmode at GLIBCXX_3.4.13 4.4.2
+ _ZNSt14basic_ofstreamIcSt11char_traitsIcEEC1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt14basic_ofstreamIcSt11char_traitsIcEEC2EPKcSt13_Ios_Openmode at GLIBCXX_3.4 4.1.1
+ _ZNSt14basic_ofstreamIcSt11char_traitsIcEEC2ERKSsSt13_Ios_Openmode at GLIBCXX_3.4.13 4.4.2
+ _ZNSt14basic_ofstreamIcSt11char_traitsIcEEC2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt14basic_ofstreamIcSt11char_traitsIcEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt14basic_ofstreamIcSt11char_traitsIcEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt14basic_ofstreamIcSt11char_traitsIcEED2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt14basic_ofstreamIwSt11char_traitsIwEE4openEPKcSt13_Ios_Openmode at GLIBCXX_3.4 4.1.1
+ _ZNSt14basic_ofstreamIwSt11char_traitsIwEE4openERKSsSt13_Ios_Openmode at GLIBCXX_3.4.13 4.4.2
+ _ZNSt14basic_ofstreamIwSt11char_traitsIwEE5closeEv at GLIBCXX_3.4 4.1.1
+ _ZNSt14basic_ofstreamIwSt11char_traitsIwEE7is_openEv at GLIBCXX_3.4 4.1.1
+ _ZNSt14basic_ofstreamIwSt11char_traitsIwEEC1EPKcSt13_Ios_Openmode at GLIBCXX_3.4 4.1.1
+ _ZNSt14basic_ofstreamIwSt11char_traitsIwEEC1ERKSsSt13_Ios_Openmode at GLIBCXX_3.4.13 4.4.2
+ _ZNSt14basic_ofstreamIwSt11char_traitsIwEEC1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt14basic_ofstreamIwSt11char_traitsIwEEC2EPKcSt13_Ios_Openmode at GLIBCXX_3.4 4.1.1
+ _ZNSt14basic_ofstreamIwSt11char_traitsIwEEC2ERKSsSt13_Ios_Openmode at GLIBCXX_3.4.13 4.4.2
+ _ZNSt14basic_ofstreamIwSt11char_traitsIwEEC2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt14basic_ofstreamIwSt11char_traitsIwEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt14basic_ofstreamIwSt11char_traitsIwEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt14basic_ofstreamIwSt11char_traitsIwEED2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt14codecvt_bynameIcc11__mbstate_tED0Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt14codecvt_bynameIcc11__mbstate_tED1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt14codecvt_bynameIcc11__mbstate_tED2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt14codecvt_bynameIwc11__mbstate_tED0Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt14codecvt_bynameIwc11__mbstate_tED1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt14codecvt_bynameIwc11__mbstate_tED2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt14collate_bynameIcED0Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt14collate_bynameIcED1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt14collate_bynameIcED2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt14collate_bynameIwED0Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt14collate_bynameIwED1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt14collate_bynameIwED2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt14error_categoryC1Ev at GLIBCXX_3.4.15 4.6
+ _ZNSt14error_categoryC2Ev at GLIBCXX_3.4.15 4.6
+ _ZNSt14error_categoryD0Ev at GLIBCXX_3.4.15 4.6
+ _ZNSt14error_categoryD1Ev at GLIBCXX_3.4.15 4.6
+ _ZNSt14error_categoryD2Ev at GLIBCXX_3.4.15 4.6
+ _ZNSt14numeric_limitsIDiE10has_denormE at GLIBCXX_3.4.11 4.4.0
+ _ZNSt14numeric_limitsIDiE10is_boundedE at GLIBCXX_3.4.11 4.4.0
+ _ZNSt14numeric_limitsIDiE10is_integerE at GLIBCXX_3.4.11 4.4.0
+ _ZNSt14numeric_limitsIDiE11round_styleE at GLIBCXX_3.4.11 4.4.0
+ _ZNSt14numeric_limitsIDiE12has_infinityE at GLIBCXX_3.4.11 4.4.0
+ _ZNSt14numeric_limitsIDiE12max_digits10E at GLIBCXX_3.4.14 4.5.0
+ _ZNSt14numeric_limitsIDiE12max_exponentE at GLIBCXX_3.4.11 4.4.0
+ _ZNSt14numeric_limitsIDiE12min_exponentE at GLIBCXX_3.4.11 4.4.0
+ _ZNSt14numeric_limitsIDiE13has_quiet_NaNE at GLIBCXX_3.4.11 4.4.0
+ _ZNSt14numeric_limitsIDiE14is_specializedE at GLIBCXX_3.4.11 4.4.0
+ _ZNSt14numeric_limitsIDiE14max_exponent10E at GLIBCXX_3.4.11 4.4.0
+ _ZNSt14numeric_limitsIDiE14min_exponent10E at GLIBCXX_3.4.11 4.4.0
+ _ZNSt14numeric_limitsIDiE15has_denorm_lossE at GLIBCXX_3.4.11 4.4.0
+ _ZNSt14numeric_limitsIDiE15tinyness_beforeE at GLIBCXX_3.4.11 4.4.0
+ _ZNSt14numeric_limitsIDiE17has_signaling_NaNE at GLIBCXX_3.4.11 4.4.0
+ _ZNSt14numeric_limitsIDiE5radixE at GLIBCXX_3.4.11 4.4.0
+ _ZNSt14numeric_limitsIDiE5trapsE at GLIBCXX_3.4.11 4.4.0
+ _ZNSt14numeric_limitsIDiE6digitsE at GLIBCXX_3.4.11 4.4.0
+ _ZNSt14numeric_limitsIDiE8digits10E at GLIBCXX_3.4.11 4.4.0
+ _ZNSt14numeric_limitsIDiE8is_exactE at GLIBCXX_3.4.11 4.4.0
+ _ZNSt14numeric_limitsIDiE9is_iec559E at GLIBCXX_3.4.11 4.4.0
+ _ZNSt14numeric_limitsIDiE9is_moduloE at GLIBCXX_3.4.11 4.4.0
+ _ZNSt14numeric_limitsIDiE9is_signedE at GLIBCXX_3.4.11 4.4.0
+ _ZNSt14numeric_limitsIDsE10has_denormE at GLIBCXX_3.4.11 4.4.0
+ _ZNSt14numeric_limitsIDsE10is_boundedE at GLIBCXX_3.4.11 4.4.0
+ _ZNSt14numeric_limitsIDsE10is_integerE at GLIBCXX_3.4.11 4.4.0
+ _ZNSt14numeric_limitsIDsE11round_styleE at GLIBCXX_3.4.11 4.4.0
+ _ZNSt14numeric_limitsIDsE12has_infinityE at GLIBCXX_3.4.11 4.4.0
+ _ZNSt14numeric_limitsIDsE12max_digits10E at GLIBCXX_3.4.14 4.5.0
+ _ZNSt14numeric_limitsIDsE12max_exponentE at GLIBCXX_3.4.11 4.4.0
+ _ZNSt14numeric_limitsIDsE12min_exponentE at GLIBCXX_3.4.11 4.4.0
+ _ZNSt14numeric_limitsIDsE13has_quiet_NaNE at GLIBCXX_3.4.11 4.4.0
+ _ZNSt14numeric_limitsIDsE14is_specializedE at GLIBCXX_3.4.11 4.4.0
+ _ZNSt14numeric_limitsIDsE14max_exponent10E at GLIBCXX_3.4.11 4.4.0
+ _ZNSt14numeric_limitsIDsE14min_exponent10E at GLIBCXX_3.4.11 4.4.0
+ _ZNSt14numeric_limitsIDsE15has_denorm_lossE at GLIBCXX_3.4.11 4.4.0
+ _ZNSt14numeric_limitsIDsE15tinyness_beforeE at GLIBCXX_3.4.11 4.4.0
+ _ZNSt14numeric_limitsIDsE17has_signaling_NaNE at GLIBCXX_3.4.11 4.4.0
+ _ZNSt14numeric_limitsIDsE5radixE at GLIBCXX_3.4.11 4.4.0
+ _ZNSt14numeric_limitsIDsE5trapsE at GLIBCXX_3.4.11 4.4.0
+ _ZNSt14numeric_limitsIDsE6digitsE at GLIBCXX_3.4.11 4.4.0
+ _ZNSt14numeric_limitsIDsE8digits10E at GLIBCXX_3.4.11 4.4.0
+ _ZNSt14numeric_limitsIDsE8is_exactE at GLIBCXX_3.4.11 4.4.0
+ _ZNSt14numeric_limitsIDsE9is_iec559E at GLIBCXX_3.4.11 4.4.0
+ _ZNSt14numeric_limitsIDsE9is_moduloE at GLIBCXX_3.4.11 4.4.0
+ _ZNSt14numeric_limitsIDsE9is_signedE at GLIBCXX_3.4.11 4.4.0
+ _ZNSt14numeric_limitsIaE10has_denormE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIaE10is_boundedE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIaE10is_integerE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIaE11round_styleE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIaE12has_infinityE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIaE12max_digits10E at GLIBCXX_3.4.14 4.5.0
+ _ZNSt14numeric_limitsIaE12max_exponentE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIaE12min_exponentE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIaE13has_quiet_NaNE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIaE14is_specializedE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIaE14max_exponent10E at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIaE14min_exponent10E at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIaE15has_denorm_lossE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIaE15tinyness_beforeE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIaE17has_signaling_NaNE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIaE5radixE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIaE5trapsE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIaE6digitsE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIaE8digits10E at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIaE8is_exactE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIaE9is_iec559E at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIaE9is_moduloE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIaE9is_signedE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIbE10has_denormE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIbE10is_boundedE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIbE10is_integerE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIbE11round_styleE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIbE12has_infinityE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIbE12max_digits10E at GLIBCXX_3.4.14 4.5.0
+ _ZNSt14numeric_limitsIbE12max_exponentE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIbE12min_exponentE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIbE13has_quiet_NaNE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIbE14is_specializedE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIbE14max_exponent10E at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIbE14min_exponent10E at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIbE15has_denorm_lossE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIbE15tinyness_beforeE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIbE17has_signaling_NaNE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIbE5radixE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIbE5trapsE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIbE6digitsE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIbE8digits10E at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIbE8is_exactE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIbE9is_iec559E at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIbE9is_moduloE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIbE9is_signedE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIcE10has_denormE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIcE10is_boundedE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIcE10is_integerE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIcE11round_styleE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIcE12has_infinityE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIcE12max_digits10E at GLIBCXX_3.4.14 4.5.0
+ _ZNSt14numeric_limitsIcE12max_exponentE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIcE12min_exponentE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIcE13has_quiet_NaNE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIcE14is_specializedE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIcE14max_exponent10E at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIcE14min_exponent10E at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIcE15has_denorm_lossE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIcE15tinyness_beforeE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIcE17has_signaling_NaNE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIcE5radixE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIcE5trapsE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIcE6digitsE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIcE8digits10E at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIcE8is_exactE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIcE9is_iec559E at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIcE9is_moduloE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIcE9is_signedE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIdE10has_denormE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIdE10is_boundedE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIdE10is_integerE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIdE11round_styleE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIdE12has_infinityE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIdE12max_digits10E at GLIBCXX_3.4.14 4.5.0
+ _ZNSt14numeric_limitsIdE12max_exponentE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIdE12min_exponentE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIdE13has_quiet_NaNE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIdE14is_specializedE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIdE14max_exponent10E at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIdE14min_exponent10E at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIdE15has_denorm_lossE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIdE15tinyness_beforeE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIdE17has_signaling_NaNE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIdE5radixE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIdE5trapsE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIdE6digitsE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIdE8digits10E at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIdE8is_exactE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIdE9is_iec559E at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIdE9is_moduloE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIdE9is_signedE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIeE10has_denormE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIeE10is_boundedE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIeE10is_integerE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIeE11round_styleE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIeE12has_infinityE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIeE12max_exponentE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIeE12min_exponentE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIeE13has_quiet_NaNE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIeE14is_specializedE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIeE14max_exponent10E at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIeE14min_exponent10E at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIeE15has_denorm_lossE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIeE15tinyness_beforeE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIeE17has_signaling_NaNE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIeE5radixE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIeE5trapsE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIeE6digitsE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIeE8digits10E at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIeE8is_exactE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIeE9is_iec559E at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIeE9is_moduloE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIeE9is_signedE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIfE10has_denormE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIfE10is_boundedE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIfE10is_integerE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIfE11round_styleE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIfE12has_infinityE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIfE12max_digits10E at GLIBCXX_3.4.14 4.5.0
+ _ZNSt14numeric_limitsIfE12max_exponentE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIfE12min_exponentE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIfE13has_quiet_NaNE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIfE14is_specializedE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIfE14max_exponent10E at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIfE14min_exponent10E at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIfE15has_denorm_lossE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIfE15tinyness_beforeE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIfE17has_signaling_NaNE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIfE5radixE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIfE5trapsE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIfE6digitsE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIfE8digits10E at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIfE8is_exactE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIfE9is_iec559E at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIfE9is_moduloE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIfE9is_signedE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIhE10has_denormE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIhE10is_boundedE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIhE10is_integerE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIhE11round_styleE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIhE12has_infinityE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIhE12max_digits10E at GLIBCXX_3.4.14 4.5.0
+ _ZNSt14numeric_limitsIhE12max_exponentE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIhE12min_exponentE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIhE13has_quiet_NaNE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIhE14is_specializedE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIhE14max_exponent10E at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIhE14min_exponent10E at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIhE15has_denorm_lossE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIhE15tinyness_beforeE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIhE17has_signaling_NaNE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIhE5radixE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIhE5trapsE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIhE6digitsE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIhE8digits10E at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIhE8is_exactE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIhE9is_iec559E at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIhE9is_moduloE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIhE9is_signedE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIiE10has_denormE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIiE10is_boundedE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIiE10is_integerE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIiE11round_styleE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIiE12has_infinityE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIiE12max_digits10E at GLIBCXX_3.4.14 4.5.0
+ _ZNSt14numeric_limitsIiE12max_exponentE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIiE12min_exponentE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIiE13has_quiet_NaNE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIiE14is_specializedE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIiE14max_exponent10E at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIiE14min_exponent10E at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIiE15has_denorm_lossE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIiE15tinyness_beforeE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIiE17has_signaling_NaNE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIiE5radixE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIiE5trapsE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIiE6digitsE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIiE8digits10E at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIiE8is_exactE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIiE9is_iec559E at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIiE9is_moduloE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIiE9is_signedE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIjE10has_denormE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIjE10is_boundedE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIjE10is_integerE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIjE11round_styleE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIjE12has_infinityE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIjE12max_digits10E at GLIBCXX_3.4.14 4.5.0
+ _ZNSt14numeric_limitsIjE12max_exponentE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIjE12min_exponentE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIjE13has_quiet_NaNE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIjE14is_specializedE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIjE14max_exponent10E at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIjE14min_exponent10E at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIjE15has_denorm_lossE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIjE15tinyness_beforeE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIjE17has_signaling_NaNE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIjE5radixE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIjE5trapsE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIjE6digitsE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIjE8digits10E at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIjE8is_exactE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIjE9is_iec559E at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIjE9is_moduloE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIjE9is_signedE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIlE10has_denormE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIlE10is_boundedE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIlE10is_integerE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIlE11round_styleE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIlE12has_infinityE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIlE12max_digits10E at GLIBCXX_3.4.14 4.5.0
+ _ZNSt14numeric_limitsIlE12max_exponentE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIlE12min_exponentE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIlE13has_quiet_NaNE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIlE14is_specializedE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIlE14max_exponent10E at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIlE14min_exponent10E at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIlE15has_denorm_lossE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIlE15tinyness_beforeE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIlE17has_signaling_NaNE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIlE5radixE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIlE5trapsE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIlE6digitsE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIlE8digits10E at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIlE8is_exactE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIlE9is_iec559E at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIlE9is_moduloE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIlE9is_signedE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsImE10has_denormE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsImE10is_boundedE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsImE10is_integerE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsImE11round_styleE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsImE12has_infinityE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsImE12max_digits10E at GLIBCXX_3.4.14 4.5.0
+ _ZNSt14numeric_limitsImE12max_exponentE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsImE12min_exponentE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsImE13has_quiet_NaNE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsImE14is_specializedE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsImE14max_exponent10E at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsImE14min_exponent10E at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsImE15has_denorm_lossE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsImE15tinyness_beforeE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsImE17has_signaling_NaNE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsImE5radixE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsImE5trapsE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsImE6digitsE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsImE8digits10E at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsImE8is_exactE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsImE9is_iec559E at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsImE9is_moduloE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsImE9is_signedE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIsE10has_denormE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIsE10is_boundedE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIsE10is_integerE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIsE11round_styleE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIsE12has_infinityE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIsE12max_digits10E at GLIBCXX_3.4.14 4.5.0
+ _ZNSt14numeric_limitsIsE12max_exponentE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIsE12min_exponentE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIsE13has_quiet_NaNE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIsE14is_specializedE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIsE14max_exponent10E at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIsE14min_exponent10E at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIsE15has_denorm_lossE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIsE15tinyness_beforeE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIsE17has_signaling_NaNE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIsE5radixE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIsE5trapsE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIsE6digitsE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIsE8digits10E at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIsE8is_exactE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIsE9is_iec559E at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIsE9is_moduloE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIsE9is_signedE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsItE10has_denormE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsItE10is_boundedE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsItE10is_integerE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsItE11round_styleE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsItE12has_infinityE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsItE12max_digits10E at GLIBCXX_3.4.14 4.5.0
+ _ZNSt14numeric_limitsItE12max_exponentE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsItE12min_exponentE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsItE13has_quiet_NaNE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsItE14is_specializedE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsItE14max_exponent10E at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsItE14min_exponent10E at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsItE15has_denorm_lossE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsItE15tinyness_beforeE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsItE17has_signaling_NaNE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsItE5radixE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsItE5trapsE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsItE6digitsE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsItE8digits10E at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsItE8is_exactE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsItE9is_iec559E at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsItE9is_moduloE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsItE9is_signedE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIwE10has_denormE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIwE10is_boundedE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIwE10is_integerE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIwE11round_styleE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIwE12has_infinityE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIwE12max_digits10E at GLIBCXX_3.4.14 4.5.0
+ _ZNSt14numeric_limitsIwE12max_exponentE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIwE12min_exponentE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIwE13has_quiet_NaNE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIwE14is_specializedE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIwE14max_exponent10E at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIwE14min_exponent10E at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIwE15has_denorm_lossE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIwE15tinyness_beforeE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIwE17has_signaling_NaNE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIwE5radixE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIwE5trapsE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIwE6digitsE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIwE8digits10E at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIwE8is_exactE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIwE9is_iec559E at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIwE9is_moduloE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIwE9is_signedE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIxE10has_denormE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIxE10is_boundedE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIxE10is_integerE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIxE11round_styleE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIxE12has_infinityE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIxE12max_digits10E at GLIBCXX_3.4.14 4.5.0
+ _ZNSt14numeric_limitsIxE12max_exponentE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIxE12min_exponentE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIxE13has_quiet_NaNE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIxE14is_specializedE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIxE14max_exponent10E at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIxE14min_exponent10E at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIxE15has_denorm_lossE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIxE15tinyness_beforeE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIxE17has_signaling_NaNE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIxE5radixE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIxE5trapsE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIxE6digitsE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIxE8digits10E at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIxE8is_exactE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIxE9is_iec559E at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIxE9is_moduloE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIxE9is_signedE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIyE10has_denormE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIyE10is_boundedE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIyE10is_integerE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIyE11round_styleE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIyE12has_infinityE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIyE12max_digits10E at GLIBCXX_3.4.14 4.5.0
+ _ZNSt14numeric_limitsIyE12max_exponentE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIyE12min_exponentE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIyE13has_quiet_NaNE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIyE14is_specializedE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIyE14max_exponent10E at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIyE14min_exponent10E at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIyE15has_denorm_lossE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIyE15tinyness_beforeE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIyE17has_signaling_NaNE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIyE5radixE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIyE5trapsE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIyE6digitsE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIyE8digits10E at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIyE8is_exactE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIyE9is_iec559E at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIyE9is_moduloE at GLIBCXX_3.4 4.1.1
+ _ZNSt14numeric_limitsIyE9is_signedE at GLIBCXX_3.4 4.1.1
+ _ZNSt14overflow_errorC1EPKc at GLIBCXX_3.4.21 5
+ _ZNSt14overflow_errorC1ERKSs at GLIBCXX_3.4 4.1.1
+ _ZNSt14overflow_errorC2EPKc at GLIBCXX_3.4.21 5
+ _ZNSt14overflow_errorC2ERKSs at GLIBCXX_3.4 4.1.1
+ _ZNSt14overflow_errorD0Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt14overflow_errorD1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt14overflow_errorD2Ev at GLIBCXX_3.4.15 4.6
+ _ZNSt15_List_node_base10_M_reverseEv at GLIBCXX_3.4.14 4.5
+ _ZNSt15_List_node_base11_M_transferEPS_S0_ at GLIBCXX_3.4.14 4.5
+ _ZNSt15_List_node_base4hookEPS_ at GLIBCXX_3.4 4.1.1
+ _ZNSt15_List_node_base4swapERS_S0_ at GLIBCXX_3.4 4.1.1
+ _ZNSt15_List_node_base6unhookEv at GLIBCXX_3.4 4.1.1
+ _ZNSt15_List_node_base7_M_hookEPS_ at GLIBCXX_3.4.14 4.5
+ _ZNSt15_List_node_base7reverseEv at GLIBCXX_3.4 4.1.1
+ _ZNSt15_List_node_base8transferEPS_S0_ at GLIBCXX_3.4 4.1.1
+ _ZNSt15_List_node_base9_M_unhookEv at GLIBCXX_3.4.14 4.5
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE10pubseekposESt4fposI11__mbstate_tESt13_Ios_Openmode at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE4setgEPcS3_S3_ at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE4setpEPcS3_ at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE4swapERS2_ at GLIBCXX_3.4.21 5
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE4syncEv at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE5gbumpEi at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE5imbueERKSt6locale at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE5pbumpEi at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE5sgetcEv at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE5sputcEc at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE5uflowEv at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE6sbumpcEv at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE6snextcEv at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE6stosscEv at GLIBCXX_3.4.10 4.3
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE7pubsyncEv at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE7sungetcEv at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE8in_availEv at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE8overflowEi at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE8pubimbueERKSt6locale at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE9pbackfailEi at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE9showmanycEv at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE9sputbackcEc at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE9underflowEv at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEEC1ERKS2_ at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEEC1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEEC2ERKS2_ at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEEC2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEED2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEEaSERKS2_ at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE10pubseekposESt4fposI11__mbstate_tESt13_Ios_Openmode at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE4setgEPwS3_S3_ at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE4setpEPwS3_ at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE4swapERS2_ at GLIBCXX_3.4.21 5
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE4syncEv at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE5gbumpEi at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE5imbueERKSt6locale at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE5pbumpEi at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE5sgetcEv at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE5sputcEw at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE5uflowEv at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE6sbumpcEv at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE6snextcEv at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE6stosscEv at GLIBCXX_3.4.10 4.3
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE7pubsyncEv at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE7sungetcEv at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE8in_availEv at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE8overflowEj at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE8pubimbueERKSt6locale at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE9pbackfailEj at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE9showmanycEv at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE9sputbackcEw at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE9underflowEv at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEEC1ERKS2_ at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEEC1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEEC2ERKS2_ at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEEC2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEED2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEEaSERKS2_ at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE15_M_update_egptrEv at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE17_M_stringbuf_initESt13_Ios_Openmode at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE3strERKSs at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE8overflowEi at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE9pbackfailEi at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE9showmanycEv at GLIBCXX_3.4.6 4.1.1
+ _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE9underflowEv at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE15_M_update_egptrEv at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE17_M_stringbuf_initESt13_Ios_Openmode at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE8overflowEj at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE9pbackfailEj at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE9showmanycEv at GLIBCXX_3.4.6 4.1.1
+ _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE9underflowEv at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt15messages_bynameIcED0Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt15messages_bynameIcED1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt15messages_bynameIcED2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt15messages_bynameIwED0Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt15messages_bynameIwED1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt15messages_bynameIwED2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt15numpunct_bynameIcED0Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt15numpunct_bynameIcED1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt15numpunct_bynameIcED2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt15numpunct_bynameIwED0Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt15numpunct_bynameIwED1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt15numpunct_bynameIwED2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt15underflow_errorC1EPKc at GLIBCXX_3.4.21 5
+ _ZNSt15underflow_errorC1ERKSs at GLIBCXX_3.4 4.1.1
+ _ZNSt15underflow_errorC2EPKc at GLIBCXX_3.4.21 5
+ _ZNSt15underflow_errorC2ERKSs at GLIBCXX_3.4 4.1.1
+ _ZNSt15underflow_errorD0Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt15underflow_errorD1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt15underflow_errorD2Ev at GLIBCXX_3.4.15 4.6
+ _ZNSt16__numpunct_cacheIcE8_M_cacheERKSt6locale at GLIBCXX_3.4 4.1.1
+ _ZNSt16__numpunct_cacheIcED0Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt16__numpunct_cacheIcED1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt16__numpunct_cacheIcED2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt16__numpunct_cacheIwE8_M_cacheERKSt6locale at GLIBCXX_3.4 4.1.1
+ _ZNSt16__numpunct_cacheIwED0Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt16__numpunct_cacheIwED1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt16__numpunct_cacheIwED2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt16bad_array_lengthD0Ev at CXXABI_1.3.8 4.9
+ _ZNSt16bad_array_lengthD1Ev at CXXABI_1.3.8 4.9
+ _ZNSt16bad_array_lengthD2Ev at CXXABI_1.3.8 4.9
+ _ZNSt16invalid_argumentC1EPKc at GLIBCXX_3.4.21 5
+ _ZNSt16invalid_argumentC1ERKSs at GLIBCXX_3.4 4.1.1
+ _ZNSt16invalid_argumentC2EPKc at GLIBCXX_3.4.21 5
+ _ZNSt16invalid_argumentC2ERKSs at GLIBCXX_3.4 4.1.1
+ _ZNSt16invalid_argumentD0Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt16invalid_argumentD1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt16invalid_argumentD2Ev at GLIBCXX_3.4.15 4.6
+ _ZNSt17__timepunct_cacheIcE12_S_timezonesE at GLIBCXX_3.4 4.1.1
+ _ZNSt17__timepunct_cacheIcED0Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt17__timepunct_cacheIcED1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt17__timepunct_cacheIcED2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt17__timepunct_cacheIwE12_S_timezonesE at GLIBCXX_3.4 4.1.1
+ _ZNSt17__timepunct_cacheIwED0Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt17__timepunct_cacheIwED1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt17__timepunct_cacheIwED2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt17bad_function_callD0Ev at GLIBCXX_3.4.15 4.6
+ _ZNSt17bad_function_callD1Ev at GLIBCXX_3.4.15 4.6
+ _ZNSt17bad_function_callD2Ev at GLIBCXX_3.4.15 4.6
+ _ZNSt17moneypunct_bynameIcLb0EE4intlE at GLIBCXX_3.4 4.1.1
+ _ZNSt17moneypunct_bynameIcLb0EED0Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt17moneypunct_bynameIcLb0EED1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt17moneypunct_bynameIcLb0EED2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt17moneypunct_bynameIcLb1EE4intlE at GLIBCXX_3.4 4.1.1
+ _ZNSt17moneypunct_bynameIcLb1EED0Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt17moneypunct_bynameIcLb1EED1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt17moneypunct_bynameIcLb1EED2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt17moneypunct_bynameIwLb0EE4intlE at GLIBCXX_3.4 4.1.1
+ _ZNSt17moneypunct_bynameIwLb0EED0Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt17moneypunct_bynameIwLb0EED1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt17moneypunct_bynameIwLb0EED2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt17moneypunct_bynameIwLb1EE4intlE at GLIBCXX_3.4 4.1.1
+ _ZNSt17moneypunct_bynameIwLb1EED0Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt17moneypunct_bynameIwLb1EED1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt17moneypunct_bynameIwLb1EED2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt18__moneypunct_cacheIcLb0EE8_M_cacheERKSt6locale at GLIBCXX_3.4 4.1.1
+ _ZNSt18__moneypunct_cacheIcLb0EED0Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt18__moneypunct_cacheIcLb0EED1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt18__moneypunct_cacheIcLb0EED2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt18__moneypunct_cacheIcLb1EE8_M_cacheERKSt6locale at GLIBCXX_3.4 4.1.1
+ _ZNSt18__moneypunct_cacheIcLb1EED0Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt18__moneypunct_cacheIcLb1EED1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt18__moneypunct_cacheIcLb1EED2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt18__moneypunct_cacheIwLb0EE8_M_cacheERKSt6locale at GLIBCXX_3.4 4.1.1
+ _ZNSt18__moneypunct_cacheIwLb0EED0Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt18__moneypunct_cacheIwLb0EED1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt18__moneypunct_cacheIwLb0EED2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt18__moneypunct_cacheIwLb1EE8_M_cacheERKSt6locale at GLIBCXX_3.4 4.1.1
+ _ZNSt18__moneypunct_cacheIwLb1EED0Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt18__moneypunct_cacheIwLb1EED1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt18__moneypunct_cacheIwLb1EED2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEE3strERKSs at GLIBCXX_3.4 4.1.1
+ _ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEE4swapERS3_ at GLIBCXX_3.4.21 5
+ _ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC1EOS3_ at GLIBCXX_3.4.21 5
+ _ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode at GLIBCXX_3.4 4.1.1
+ _ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode at GLIBCXX_3.4 4.1.1
+ _ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC2EOS3_ at GLIBCXX_3.4.21 5
+ _ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode at GLIBCXX_3.4 4.1.1
+ _ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode at GLIBCXX_3.4 4.1.1
+ _ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEED2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt18basic_stringstreamIcSt11char_traitsIcESaIcEEaSEOS3_ at GLIBCXX_3.4.21 5
+ _ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E at GLIBCXX_3.4 4.1.1
+ _ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEE4swapERS3_ at GLIBCXX_3.4.21 5
+ _ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC1EOS3_ at GLIBCXX_3.4.21 5
+ _ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode at GLIBCXX_3.4 4.1.1
+ _ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode at GLIBCXX_3.4 4.1.1
+ _ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC2EOS3_ at GLIBCXX_3.4.21 5
+ _ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode at GLIBCXX_3.4 4.1.1
+ _ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode at GLIBCXX_3.4 4.1.1
+ _ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEED2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt18basic_stringstreamIwSt11char_traitsIwESaIwEEaSEOS3_ at GLIBCXX_3.4.21 5
+ _ZNSt18condition_variable10notify_allEv at GLIBCXX_3.4.11 4.4.0
+ _ZNSt18condition_variable10notify_oneEv at GLIBCXX_3.4.11 4.4.0
+ _ZNSt18condition_variable4waitERSt11unique_lockISt5mutexE at GLIBCXX_3.4.11 4.4.0
+ _ZNSt18condition_variableC1Ev at GLIBCXX_3.4.11 4.4.0
+ _ZNSt18condition_variableC2Ev at GLIBCXX_3.4.11 4.4.0
+ _ZNSt18condition_variableD1Ev at GLIBCXX_3.4.11 4.4.0
+ _ZNSt18condition_variableD2Ev at GLIBCXX_3.4.11 4.4.0
+ _ZNSt19__codecvt_utf8_baseIDiED0Ev at GLIBCXX_3.4.21 5
+ _ZNSt19__codecvt_utf8_baseIDiED1Ev at GLIBCXX_3.4.21 5
+ _ZNSt19__codecvt_utf8_baseIDiED2Ev at GLIBCXX_3.4.21 5
+ _ZNSt19__codecvt_utf8_baseIDsED0Ev at GLIBCXX_3.4.21 5
+ _ZNSt19__codecvt_utf8_baseIDsED1Ev at GLIBCXX_3.4.21 5
+ _ZNSt19__codecvt_utf8_baseIDsED2Ev at GLIBCXX_3.4.21 5
+ _ZNSt19__codecvt_utf8_baseIwED0Ev at GLIBCXX_3.4.21 5
+ _ZNSt19__codecvt_utf8_baseIwED1Ev at GLIBCXX_3.4.21 5
+ _ZNSt19__codecvt_utf8_baseIwED2Ev at GLIBCXX_3.4.21 5
+ _ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEE3strERKSs at GLIBCXX_3.4 4.1.1
+ _ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEE4swapERS3_ at GLIBCXX_3.4.21 5
+ _ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC1EOS3_ at GLIBCXX_3.4.21 5
+ _ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode at GLIBCXX_3.4 4.1.1
+ _ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode at GLIBCXX_3.4 4.1.1
+ _ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC2EOS3_ at GLIBCXX_3.4.21 5
+ _ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode at GLIBCXX_3.4 4.1.1
+ _ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode at GLIBCXX_3.4 4.1.1
+ _ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEED2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt19basic_istringstreamIcSt11char_traitsIcESaIcEEaSEOS3_ at GLIBCXX_3.4.21 5
+ _ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E at GLIBCXX_3.4 4.1.1
+ _ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEE4swapERS3_ at GLIBCXX_3.4.21 5
+ _ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC1EOS3_ at GLIBCXX_3.4.21 5
+ _ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode at GLIBCXX_3.4 4.1.1
+ _ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode at GLIBCXX_3.4 4.1.1
+ _ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC2EOS3_ at GLIBCXX_3.4.21 5
+ _ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode at GLIBCXX_3.4 4.1.1
+ _ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode at GLIBCXX_3.4 4.1.1
+ _ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEED2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt19basic_istringstreamIwSt11char_traitsIwESaIwEEaSEOS3_ at GLIBCXX_3.4.21 5
+ _ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE3strERKSs at GLIBCXX_3.4 4.1.1
+ _ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE4swapERS3_ at GLIBCXX_3.4.21 5
+ _ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC1EOS3_ at GLIBCXX_3.4.21 5
+ _ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC1ERKSsSt13_Ios_Openmode at GLIBCXX_3.4 4.1.1
+ _ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode at GLIBCXX_3.4 4.1.1
+ _ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC2EOS3_ at GLIBCXX_3.4.21 5
+ _ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC2ERKSsSt13_Ios_Openmode at GLIBCXX_3.4 4.1.1
+ _ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode at GLIBCXX_3.4 4.1.1
+ _ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt19basic_ostringstreamIcSt11char_traitsIcESaIcEEaSEOS3_ at GLIBCXX_3.4.21 5
+ _ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE3strERKSbIwS1_S2_E at GLIBCXX_3.4 4.1.1
+ _ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE4swapERS3_ at GLIBCXX_3.4.21 5
+ _ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC1EOS3_ at GLIBCXX_3.4.21 5
+ _ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC1ERKSbIwS1_S2_ESt13_Ios_Openmode at GLIBCXX_3.4 4.1.1
+ _ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode at GLIBCXX_3.4 4.1.1
+ _ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC2EOS3_ at GLIBCXX_3.4.21 5
+ _ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC2ERKSbIwS1_S2_ESt13_Ios_Openmode at GLIBCXX_3.4 4.1.1
+ _ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode at GLIBCXX_3.4 4.1.1
+ _ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt19basic_ostringstreamIwSt11char_traitsIwESaIwEEaSEOS3_ at GLIBCXX_3.4.21 5
+ _ZNSt19istreambuf_iteratorIcSt11char_traitsIcEEppEv at GLIBCXX_3.4 4.1.1
+ _ZNSt19istreambuf_iteratorIcSt11char_traitsIcEEppEv at GLIBCXX_3.4.5 4.1.1
+ _ZNSt19istreambuf_iteratorIwSt11char_traitsIwEEppEv at GLIBCXX_3.4 4.1.1
+ _ZNSt19istreambuf_iteratorIwSt11char_traitsIwEEppEv at GLIBCXX_3.4.5 4.1.1
+ _ZNSt20__codecvt_utf16_baseIDiED0Ev at GLIBCXX_3.4.21 5
+ _ZNSt20__codecvt_utf16_baseIDiED1Ev at GLIBCXX_3.4.21 5
+ _ZNSt20__codecvt_utf16_baseIDiED2Ev at GLIBCXX_3.4.21 5
+ _ZNSt20__codecvt_utf16_baseIDsED0Ev at GLIBCXX_3.4.21 5
+ _ZNSt20__codecvt_utf16_baseIDsED1Ev at GLIBCXX_3.4.21 5
+ _ZNSt20__codecvt_utf16_baseIDsED2Ev at GLIBCXX_3.4.21 5
+ _ZNSt20__codecvt_utf16_baseIwED0Ev at GLIBCXX_3.4.21 5
+ _ZNSt20__codecvt_utf16_baseIwED1Ev at GLIBCXX_3.4.21 5
+ _ZNSt20__codecvt_utf16_baseIwED2Ev at GLIBCXX_3.4.21 5
+ _ZNSt20bad_array_new_lengthD0Ev at CXXABI_1.3.8 4.9
+ _ZNSt20bad_array_new_lengthD1Ev at CXXABI_1.3.8 4.9
+ _ZNSt20bad_array_new_lengthD2Ev at CXXABI_1.3.8 4.9
+ _ZNSt21__numeric_limits_base10has_denormE at GLIBCXX_3.4 4.1.1
+ _ZNSt21__numeric_limits_base10is_boundedE at GLIBCXX_3.4 4.1.1
+ _ZNSt21__numeric_limits_base10is_integerE at GLIBCXX_3.4 4.1.1
+ _ZNSt21__numeric_limits_base11round_styleE at GLIBCXX_3.4 4.1.1
+ _ZNSt21__numeric_limits_base12has_infinityE at GLIBCXX_3.4 4.1.1
+ _ZNSt21__numeric_limits_base12max_digits10E at GLIBCXX_3.4.14 4.5.0
+ _ZNSt21__numeric_limits_base12max_exponentE at GLIBCXX_3.4 4.1.1
+ _ZNSt21__numeric_limits_base12min_exponentE at GLIBCXX_3.4 4.1.1
+ _ZNSt21__numeric_limits_base13has_quiet_NaNE at GLIBCXX_3.4 4.1.1
+ _ZNSt21__numeric_limits_base14is_specializedE at GLIBCXX_3.4 4.1.1
+ _ZNSt21__numeric_limits_base14max_exponent10E at GLIBCXX_3.4 4.1.1
+ _ZNSt21__numeric_limits_base14min_exponent10E at GLIBCXX_3.4 4.1.1
+ _ZNSt21__numeric_limits_base15has_denorm_lossE at GLIBCXX_3.4 4.1.1
+ _ZNSt21__numeric_limits_base15tinyness_beforeE at GLIBCXX_3.4 4.1.1
+ _ZNSt21__numeric_limits_base17has_signaling_NaNE at GLIBCXX_3.4 4.1.1
+ _ZNSt21__numeric_limits_base5radixE at GLIBCXX_3.4 4.1.1
+ _ZNSt21__numeric_limits_base5trapsE at GLIBCXX_3.4 4.1.1
+ _ZNSt21__numeric_limits_base6digitsE at GLIBCXX_3.4 4.1.1
+ _ZNSt21__numeric_limits_base8digits10E at GLIBCXX_3.4 4.1.1
+ _ZNSt21__numeric_limits_base8is_exactE at GLIBCXX_3.4 4.1.1
+ _ZNSt21__numeric_limits_base9is_iec559E at GLIBCXX_3.4 4.1.1
+ _ZNSt21__numeric_limits_base9is_moduloE at GLIBCXX_3.4 4.1.1
+ _ZNSt21__numeric_limits_base9is_signedE at GLIBCXX_3.4 4.1.1
+ _ZNSt22condition_variable_anyC1Ev at GLIBCXX_3.4.11 4.4.0
+ _ZNSt22condition_variable_anyC2Ev at GLIBCXX_3.4.11 4.4.0
+ _ZNSt22condition_variable_anyD1Ev at GLIBCXX_3.4.11 4.4.0
+ _ZNSt22condition_variable_anyD2Ev at GLIBCXX_3.4.11 4.4.0
+ _ZNSt25__codecvt_utf8_utf16_baseIDiED0Ev at GLIBCXX_3.4.21 5
+ _ZNSt25__codecvt_utf8_utf16_baseIDiED1Ev at GLIBCXX_3.4.21 5
+ _ZNSt25__codecvt_utf8_utf16_baseIDiED2Ev at GLIBCXX_3.4.21 5
+ _ZNSt25__codecvt_utf8_utf16_baseIDsED0Ev at GLIBCXX_3.4.21 5
+ _ZNSt25__codecvt_utf8_utf16_baseIDsED1Ev at GLIBCXX_3.4.21 5
+ _ZNSt25__codecvt_utf8_utf16_baseIDsED2Ev at GLIBCXX_3.4.21 5
+ _ZNSt25__codecvt_utf8_utf16_baseIwED0Ev at GLIBCXX_3.4.21 5
+ _ZNSt25__codecvt_utf8_utf16_baseIwED1Ev at GLIBCXX_3.4.21 5
+ _ZNSt25__codecvt_utf8_utf16_baseIwED2Ev at GLIBCXX_3.4.21 5
+ _ZNSt3_V214error_categoryD0Ev at GLIBCXX_3.4.21 5
+ _ZNSt3_V214error_categoryD1Ev at GLIBCXX_3.4.21 5
+ _ZNSt3_V214error_categoryD2Ev at GLIBCXX_3.4.21 5
+ _ZNSt3_V215system_categoryEv at GLIBCXX_3.4.21 5
+ _ZNSt3_V216generic_categoryEv at GLIBCXX_3.4.21 5
+ _ZNSt3tr18__detail12__prime_listE at GLIBCXX_3.4.10 4.3
+ _ZNSt5ctypeIcE10table_sizeE at GLIBCXX_3.4 4.1.1
+ _ZNSt5ctypeIcE13classic_tableEv at GLIBCXX_3.4 4.1.1
+ _ZNSt5ctypeIcE2idE at GLIBCXX_3.4 4.1.1
+ _ZNSt5ctypeIcED0Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt5ctypeIcED1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt5ctypeIcED2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt5ctypeIwE19_M_initialize_ctypeEv at GLIBCXX_3.4 4.1.1
+ _ZNSt5ctypeIwE2idE at GLIBCXX_3.4 4.1.1
+ _ZNSt5ctypeIwED0Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt5ctypeIwED1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt5ctypeIwED2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt6__norm15_List_node_base10_M_reverseEv at GLIBCXX_3.4.14 4.5
+ _ZNSt6__norm15_List_node_base11_M_transferEPS0_S1_ at GLIBCXX_3.4.14 4.5
+ _ZNSt6__norm15_List_node_base4hookEPS0_ at GLIBCXX_3.4.9 4.2.1
+ _ZNSt6__norm15_List_node_base4swapERS0_S1_ at GLIBCXX_3.4.9 4.2.1
+ _ZNSt6__norm15_List_node_base6unhookEv at GLIBCXX_3.4.9 4.2.1
+ _ZNSt6__norm15_List_node_base7_M_hookEPS0_ at GLIBCXX_3.4.14 4.5
+ _ZNSt6__norm15_List_node_base7reverseEv at GLIBCXX_3.4.9 4.2.1
+ _ZNSt6__norm15_List_node_base8transferEPS0_S1_ at GLIBCXX_3.4.9 4.2.1
+ _ZNSt6__norm15_List_node_base9_M_unhookEv at GLIBCXX_3.4.14 4.5
+ _ZNSt6chrono3_V212steady_clock3nowEv at GLIBCXX_3.4.19 4.8.1
+ _ZNSt6chrono3_V212steady_clock9is_steadyE at GLIBCXX_3.4.19 4.8.1
+ _ZNSt6chrono3_V212system_clock3nowEv at GLIBCXX_3.4.19 4.8.1
+ _ZNSt6chrono3_V212system_clock9is_steadyE at GLIBCXX_3.4.19 4.8.1
+ _ZNSt6chrono12system_clock12is_monotonicE at GLIBCXX_3.4.11 4.4.0
+ _ZNSt6chrono12system_clock3nowEv at GLIBCXX_3.4.11 4.4.0
+ _ZNSt6locale11_M_coalesceERKS_S1_i at GLIBCXX_3.4 4.1.1
+ _ZNSt6locale21_S_normalize_categoryEi at GLIBCXX_3.4 4.1.1
+ _ZNSt6locale3allE at GLIBCXX_3.4 4.1.1
+ _ZNSt6locale4noneE at GLIBCXX_3.4 4.1.1
+ _ZNSt6locale4timeE at GLIBCXX_3.4 4.1.1
+ _ZNSt6locale5_Impl16_M_install_facetEPKNS_2idEPKNS_5facetE at GLIBCXX_3.4 4.1.1
+ _ZNSt6locale5_Impl16_M_replace_facetEPKS0_PKNS_2idE at GLIBCXX_3.4 4.1.1
+ _ZNSt6locale5_Impl19_M_replace_categoryEPKS0_PKPKNS_2idE at GLIBCXX_3.4 4.1.1
+ _ZNSt6locale5_Impl21_M_replace_categoriesEPKS0_i at GLIBCXX_3.4 4.1.1
+ _ZNSt6locale5_ImplD1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt6locale5_ImplD2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt6locale5ctypeE at GLIBCXX_3.4 4.1.1
+ _ZNSt6locale5facet13_S_get_c_nameEv at GLIBCXX_3.4.6 4.1.1
+ _ZNSt6locale5facet15_S_get_c_localeEv at GLIBCXX_3.4 4.1.1
+ _ZNSt6locale5facet17_S_clone_c_localeERP15__locale_struct at GLIBCXX_3.4 4.1.1
+ _ZNSt6locale5facet18_S_create_c_localeERP15__locale_structPKcS2_ at GLIBCXX_3.4 4.1.1
+ _ZNSt6locale5facet19_S_destroy_c_localeERP15__locale_struct at GLIBCXX_3.4 4.1.1
+ _ZNSt6locale5facetD0Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt6locale5facetD1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt6locale5facetD2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt6locale6globalERKS_ at GLIBCXX_3.4 4.1.1
+ _ZNSt6locale7classicEv at GLIBCXX_3.4 4.1.1
+ _ZNSt6locale7collateE at GLIBCXX_3.4 4.1.1
+ _ZNSt6locale7numericE at GLIBCXX_3.4 4.1.1
+ _ZNSt6locale8messagesE at GLIBCXX_3.4 4.1.1
+ _ZNSt6locale8monetaryE at GLIBCXX_3.4 4.1.1
+ _ZNSt6localeC1EPKc at GLIBCXX_3.4 4.1.1
+ _ZNSt6localeC1EPNS_5_ImplE at GLIBCXX_3.4 4.1.1
+ _ZNSt6localeC1ERKS_ at GLIBCXX_3.4 4.1.1
+ _ZNSt6localeC1ERKS_PKci at GLIBCXX_3.4 4.1.1
+ _ZNSt6localeC1ERKS_S1_i at GLIBCXX_3.4 4.1.1
+ _ZNSt6localeC1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt6localeC2EPKc at GLIBCXX_3.4 4.1.1
+ _ZNSt6localeC2EPNS_5_ImplE at GLIBCXX_3.4 4.1.1
+ _ZNSt6localeC2ERKS_ at GLIBCXX_3.4 4.1.1
+ _ZNSt6localeC2ERKS_PKci at GLIBCXX_3.4 4.1.1
+ _ZNSt6localeC2ERKS_S1_i at GLIBCXX_3.4 4.1.1
+ _ZNSt6localeC2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt6localeD1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt6localeD2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt6localeaSERKS_ at GLIBCXX_3.4 4.1.1
+ _ZNSt6thread15_M_start_threadESt10shared_ptrINS_10_Impl_baseEE at GLIBCXX_3.4.11 4.4.0
+ _ZNSt6thread15_M_start_threadESt10shared_ptrINS_10_Impl_baseEEPFvvE at GLIBCXX_3.4.21 5
+ _ZNSt6thread20hardware_concurrencyEv at GLIBCXX_3.4.17 4.7
+ _ZNSt6thread4joinEv at GLIBCXX_3.4.11 4.4.0
+ _ZNSt6thread6detachEv at GLIBCXX_3.4.11 4.4.0
+ _ZNSt7codecvtIDic11__mbstate_tE2idE at GLIBCXX_3.4.21 5
+ _ZNSt7codecvtIDic11__mbstate_tED0Ev at GLIBCXX_3.4.21 5
+ _ZNSt7codecvtIDic11__mbstate_tED1Ev at GLIBCXX_3.4.21 5
+ _ZNSt7codecvtIDic11__mbstate_tED2Ev at GLIBCXX_3.4.21 5
+ _ZNSt7codecvtIDsc11__mbstate_tE2idE at GLIBCXX_3.4.21 5
+ _ZNSt7codecvtIDsc11__mbstate_tED0Ev at GLIBCXX_3.4.21 5
+ _ZNSt7codecvtIDsc11__mbstate_tED1Ev at GLIBCXX_3.4.21 5
+ _ZNSt7codecvtIDsc11__mbstate_tED2Ev at GLIBCXX_3.4.21 5
+ _ZNSt7codecvtIcc11__mbstate_tE2idE at GLIBCXX_3.4 4.1.1
+ _ZNSt7codecvtIcc11__mbstate_tED0Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt7codecvtIcc11__mbstate_tED1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt7codecvtIcc11__mbstate_tED2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt7codecvtIwc11__mbstate_tE2idE at GLIBCXX_3.4 4.1.1
+ _ZNSt7codecvtIwc11__mbstate_tED0Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt7codecvtIwc11__mbstate_tED1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt7codecvtIwc11__mbstate_tED2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt7collateIcE2idE at GLIBCXX_3.4 4.1.1
+ _ZNSt7collateIcED0Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt7collateIcED1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt7collateIcED2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt7collateIwE2idE at GLIBCXX_3.4 4.1.1
+ _ZNSt7collateIwED0Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt7collateIwED1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt7collateIwED2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE at GLIBCXX_3.4 4.1.1
+ _ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE at GLIBCXX_3.4 4.1.1
+ _ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE at GLIBCXX_3.4 4.1.1
+ _ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE at GLIBCXX_3.4 4.1.1
+ _ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt8__detail12__prime_listE at GLIBCXX_3.4.10 4.3
+ _ZNSt8__detail15_List_node_base10_M_reverseEv at GLIBCXX_3.4.15 4.6
+ _ZNSt8__detail15_List_node_base11_M_transferEPS0_S1_ at GLIBCXX_3.4.15 4.6
+ _ZNSt8__detail15_List_node_base4swapERS0_S1_ at GLIBCXX_3.4.15 4.6
+ _ZNSt8__detail15_List_node_base7_M_hookEPS0_ at GLIBCXX_3.4.15 4.6
+ _ZNSt8__detail15_List_node_base9_M_unhookEv at GLIBCXX_3.4.15 4.6
+ _ZNSt8bad_castD0Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt8bad_castD1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt8bad_castD2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt8ios_base10floatfieldE at GLIBCXX_3.4 4.1.1
+ _ZNSt8ios_base10scientificE at GLIBCXX_3.4 4.1.1
+ _ZNSt8ios_base11adjustfieldE at GLIBCXX_3.4 4.1.1
+ _ZNSt8ios_base13_M_grow_wordsEib at GLIBCXX_3.4 4.1.1
+ _ZNSt8ios_base15sync_with_stdioEb at GLIBCXX_3.4 4.1.1
+ _ZNSt8ios_base17_M_call_callbacksENS_5eventE at GLIBCXX_3.4.6 4.1.1
+ _ZNSt8ios_base17register_callbackEPFvNS_5eventERS_iEi at GLIBCXX_3.4 4.1.1
+ _ZNSt8ios_base20_M_dispose_callbacksEv at GLIBCXX_3.4.6 4.1.1
+ _ZNSt8ios_base2inE at GLIBCXX_3.4 4.1.1
+ _ZNSt8ios_base3appE at GLIBCXX_3.4 4.1.1
+ _ZNSt8ios_base3ateE at GLIBCXX_3.4 4.1.1
+ _ZNSt8ios_base3begE at GLIBCXX_3.4 4.1.1
+ _ZNSt8ios_base3curE at GLIBCXX_3.4 4.1.1
+ _ZNSt8ios_base3decE at GLIBCXX_3.4 4.1.1
+ _ZNSt8ios_base3endE at GLIBCXX_3.4 4.1.1
+ _ZNSt8ios_base3hexE at GLIBCXX_3.4 4.1.1
+ _ZNSt8ios_base3octE at GLIBCXX_3.4 4.1.1
+ _ZNSt8ios_base3outE at GLIBCXX_3.4 4.1.1
+ _ZNSt8ios_base4InitC1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt8ios_base4InitC2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt8ios_base4InitD1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt8ios_base4InitD2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt8ios_base4leftE at GLIBCXX_3.4 4.1.1
+ _ZNSt8ios_base5fixedE at GLIBCXX_3.4 4.1.1
+ _ZNSt8ios_base5imbueERKSt6locale at GLIBCXX_3.4 4.1.1
+ _ZNSt8ios_base5rightE at GLIBCXX_3.4 4.1.1
+ _ZNSt8ios_base5truncE at GLIBCXX_3.4 4.1.1
+ _ZNSt8ios_base6badbitE at GLIBCXX_3.4 4.1.1
+ _ZNSt8ios_base6binaryE at GLIBCXX_3.4 4.1.1
+ _ZNSt8ios_base6eofbitE at GLIBCXX_3.4 4.1.1
+ _ZNSt8ios_base6skipwsE at GLIBCXX_3.4 4.1.1
+ _ZNSt8ios_base6xallocEv at GLIBCXX_3.4 4.1.1
+ _ZNSt8ios_base7_M_initEv at GLIBCXX_3.4 4.1.1
+ _ZNSt8ios_base7_M_moveERS_ at GLIBCXX_3.4.21 5
+ _ZNSt8ios_base7_M_swapERS_ at GLIBCXX_3.4.21 5
+ _ZNSt8ios_base7failbitE at GLIBCXX_3.4 4.1.1
+ _ZNSt8ios_base7failureC1ERKSs at GLIBCXX_3.4 4.1.1
+ _ZNSt8ios_base7failureC2ERKSs at GLIBCXX_3.4 4.1.1
+ _ZNSt8ios_base7failureD0Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt8ios_base7failureD1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt8ios_base7failureD2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt8ios_base7goodbitE at GLIBCXX_3.4 4.1.1
+ _ZNSt8ios_base7showposE at GLIBCXX_3.4 4.1.1
+ _ZNSt8ios_base7unitbufE at GLIBCXX_3.4 4.1.1
+ _ZNSt8ios_base8internalE at GLIBCXX_3.4 4.1.1
+ _ZNSt8ios_base8showbaseE at GLIBCXX_3.4 4.1.1
+ _ZNSt8ios_base9basefieldE at GLIBCXX_3.4 4.1.1
+ _ZNSt8ios_base9boolalphaE at GLIBCXX_3.4 4.1.1
+ _ZNSt8ios_base9showpointE at GLIBCXX_3.4 4.1.1
+ _ZNSt8ios_base9uppercaseE at GLIBCXX_3.4 4.1.1
+ _ZNSt8ios_baseC1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt8ios_baseC2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt8ios_baseD0Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt8ios_baseD1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt8ios_baseD2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt8messagesIcE2idE at GLIBCXX_3.4 4.1.1
+ _ZNSt8messagesIcED0Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt8messagesIcED1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt8messagesIcED2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt8messagesIwE2idE at GLIBCXX_3.4 4.1.1
+ _ZNSt8messagesIwED0Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt8messagesIwED1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt8messagesIwED2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIcE22_M_initialize_numpunctEP15__locale_struct at GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIcE2idE at GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIcED0Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIcED1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIcED2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIwE22_M_initialize_numpunctEP15__locale_struct at GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIwE2idE at GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIwED0Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIwED1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIwED2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE at GLIBCXX_3.4 4.1.1
+ _ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE at GLIBCXX_3.4 4.1.1
+ _ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE at GLIBCXX_3.4 4.1.1
+ _ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE at GLIBCXX_3.4 4.1.1
+ _ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt9__atomic011atomic_flag12test_and_setESt12memory_order at GLIBCXX_3.4.14 4.5
+ _ZNSt9__atomic011atomic_flag5clearESt12memory_order at GLIBCXX_3.4.14 4.5
+ _ZNSt9__cxx199815_List_node_base10_M_reverseEv at GLIBCXX_3.4.14 4.5
+ _ZNSt9__cxx199815_List_node_base11_M_transferEPS0_S1_ at GLIBCXX_3.4.14 4.5
+ _ZNSt9__cxx199815_List_node_base4hookEPS0_ at GLIBCXX_3.4.10 4.3
+ _ZNSt9__cxx199815_List_node_base4swapERS0_S1_ at GLIBCXX_3.4.10 4.3
+ _ZNSt9__cxx199815_List_node_base7_M_hookEPS0_ at GLIBCXX_3.4.14 4.5
+ _ZNSt9__cxx199815_List_node_base6unhookEv at GLIBCXX_3.4.10 4.3
+ _ZNSt9__cxx199815_List_node_base7reverseEv at GLIBCXX_3.4.10 4.3
+ _ZNSt9__cxx199815_List_node_base8transferEPS0_S1_ at GLIBCXX_3.4.10 4.3
+ _ZNSt9__cxx199815_List_node_base9_M_unhookEv at GLIBCXX_3.4.14 4.5
+ _ZNSt9bad_allocD0Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt9bad_allocD1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt9bad_allocD2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt9basic_iosIcSt11char_traitsIcEE10exceptionsESt12_Ios_Iostate at GLIBCXX_3.4 4.1.1
+ _ZNSt9basic_iosIcSt11char_traitsIcEE11_M_setstateESt12_Ios_Iostate at GLIBCXX_3.4 4.1.1
+ _ZNSt9basic_iosIcSt11char_traitsIcEE15_M_cache_localeERKSt6locale at GLIBCXX_3.4 4.1.1
+ _ZNSt9basic_iosIcSt11char_traitsIcEE3tieEPSo at GLIBCXX_3.4 4.1.1
+ _ZNSt9basic_iosIcSt11char_traitsIcEE4fillEc at GLIBCXX_3.4 4.1.1
+ _ZNSt9basic_iosIcSt11char_traitsIcEE4initEPSt15basic_streambufIcS1_E at GLIBCXX_3.4 4.1.1
+ _ZNSt9basic_iosIcSt11char_traitsIcEE4moveEOS2_ at GLIBCXX_3.4.21 5
+ _ZNSt9basic_iosIcSt11char_traitsIcEE4moveERS2_ at GLIBCXX_3.4.21 5
+ _ZNSt9basic_iosIcSt11char_traitsIcEE4swapERS2_ at GLIBCXX_3.4.21 5
+ _ZNSt9basic_iosIcSt11char_traitsIcEE5clearESt12_Ios_Iostate at GLIBCXX_3.4 4.1.1
+ _ZNSt9basic_iosIcSt11char_traitsIcEE5imbueERKSt6locale at GLIBCXX_3.4 4.1.1
+ _ZNSt9basic_iosIcSt11char_traitsIcEE5rdbufEPSt15basic_streambufIcS1_E at GLIBCXX_3.4 4.1.1
+ _ZNSt9basic_iosIcSt11char_traitsIcEE7copyfmtERKS2_ at GLIBCXX_3.4 4.1.1
+ _ZNSt9basic_iosIcSt11char_traitsIcEE8setstateESt12_Ios_Iostate at GLIBCXX_3.4 4.1.1
+ _ZNSt9basic_iosIcSt11char_traitsIcEE9set_rdbufEPSt15basic_streambufIcS1_E at GLIBCXX_3.4.21 5
+ _ZNSt9basic_iosIcSt11char_traitsIcEEC1EPSt15basic_streambufIcS1_E at GLIBCXX_3.4 4.1.1
+ _ZNSt9basic_iosIcSt11char_traitsIcEEC1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt9basic_iosIcSt11char_traitsIcEEC2EPSt15basic_streambufIcS1_E at GLIBCXX_3.4 4.1.1
+ _ZNSt9basic_iosIcSt11char_traitsIcEEC2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt9basic_iosIcSt11char_traitsIcEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt9basic_iosIcSt11char_traitsIcEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt9basic_iosIcSt11char_traitsIcEED2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt9basic_iosIwSt11char_traitsIwEE10exceptionsESt12_Ios_Iostate at GLIBCXX_3.4 4.1.1
+ _ZNSt9basic_iosIwSt11char_traitsIwEE11_M_setstateESt12_Ios_Iostate at GLIBCXX_3.4 4.1.1
+ _ZNSt9basic_iosIwSt11char_traitsIwEE15_M_cache_localeERKSt6locale at GLIBCXX_3.4 4.1.1
+ _ZNSt9basic_iosIwSt11char_traitsIwEE3tieEPSt13basic_ostreamIwS1_E at GLIBCXX_3.4 4.1.1
+ _ZNSt9basic_iosIwSt11char_traitsIwEE4fillEw at GLIBCXX_3.4 4.1.1
+ _ZNSt9basic_iosIwSt11char_traitsIwEE4initEPSt15basic_streambufIwS1_E at GLIBCXX_3.4 4.1.1
+ _ZNSt9basic_iosIwSt11char_traitsIwEE4moveEOS2_ at GLIBCXX_3.4.21 5
+ _ZNSt9basic_iosIwSt11char_traitsIwEE4moveERS2_ at GLIBCXX_3.4.21 5
+ _ZNSt9basic_iosIwSt11char_traitsIwEE4swapERS2_ at GLIBCXX_3.4.21 5
+ _ZNSt9basic_iosIwSt11char_traitsIwEE5clearESt12_Ios_Iostate at GLIBCXX_3.4 4.1.1
+ _ZNSt9basic_iosIwSt11char_traitsIwEE5imbueERKSt6locale at GLIBCXX_3.4 4.1.1
+ _ZNSt9basic_iosIwSt11char_traitsIwEE5rdbufEPSt15basic_streambufIwS1_E at GLIBCXX_3.4 4.1.1
+ _ZNSt9basic_iosIwSt11char_traitsIwEE7copyfmtERKS2_ at GLIBCXX_3.4 4.1.1
+ _ZNSt9basic_iosIwSt11char_traitsIwEE8setstateESt12_Ios_Iostate at GLIBCXX_3.4 4.1.1
+ _ZNSt9basic_iosIwSt11char_traitsIwEE9set_rdbufEPSt15basic_streambufIwS1_E at GLIBCXX_3.4.21 5
+ _ZNSt9basic_iosIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_E at GLIBCXX_3.4 4.1.1
+ _ZNSt9basic_iosIwSt11char_traitsIwEEC1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt9basic_iosIwSt11char_traitsIwEEC2EPSt15basic_streambufIwS1_E at GLIBCXX_3.4 4.1.1
+ _ZNSt9basic_iosIwSt11char_traitsIwEEC2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt9basic_iosIwSt11char_traitsIwEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt9basic_iosIwSt11char_traitsIwEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt9basic_iosIwSt11char_traitsIwEED2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt9exceptionD0Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt9exceptionD1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt9exceptionD2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE at GLIBCXX_3.4 4.1.1
+ _ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE at GLIBCXX_3.4 4.1.1
+ _ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE at GLIBCXX_3.4 4.1.1
+ _ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE at GLIBCXX_3.4 4.1.1
+ _ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt9strstream3strEv at GLIBCXX_3.4 4.1.1
+ _ZNSt9strstream6freezeEb at GLIBCXX_3.4 4.1.1
+ _ZNSt9strstreamC1EPciSt13_Ios_Openmode at GLIBCXX_3.4 4.1.1
+ _ZNSt9strstreamC1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt9strstreamC2EPciSt13_Ios_Openmode at GLIBCXX_3.4 4.1.1
+ _ZNSt9strstreamC2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt9strstreamD0Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt9strstreamD1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt9strstreamD2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt9type_infoD0Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt9type_infoD1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt9type_infoD2Ev at GLIBCXX_3.4 4.1.1
+ _ZNVSt9__atomic011atomic_flag12test_and_setESt12memory_order at GLIBCXX_3.4.11 4.4.0
+ _ZNVSt9__atomic011atomic_flag5clearESt12memory_order at GLIBCXX_3.4.11 4.4.0
+ _ZSt10adopt_lock at GLIBCXX_3.4.11 4.4.0
+ _ZSt10defer_lock at GLIBCXX_3.4.11 4.4.0
+ _ZSt10unexpectedv at GLIBCXX_3.4 4.1.1
+ _ZSt11__once_call at GLIBCXX_3.4.11 4.4.0
+ _ZSt11try_to_lock at GLIBCXX_3.4.11 4.4.0
+ _ZSt13get_terminatev at GLIBCXX_3.4.20 4.9
+ _ZSt13set_terminatePFvvE at GLIBCXX_3.4 4.1.1
+ _ZSt14__convert_to_vIdEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct at GLIBCXX_3.4 4.1.1
+ _ZSt14__convert_to_vIeEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct at GLIBCXX_3.4 4.1.1
+ _ZSt14__convert_to_vIfEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct at GLIBCXX_3.4 4.1.1
+ _ZSt14get_unexpectedv at GLIBCXX_3.4.20 4.9
+ _ZSt14set_unexpectedPFvvE at GLIBCXX_3.4 4.1.1
+ _ZSt15__once_callable at GLIBCXX_3.4.11 4.4.0
+ _ZSt15future_category at GLIBCXX_3.4.14 4.5
+ _ZSt15future_categoryv at GLIBCXX_3.4.15 4.6
+ _ZSt15get_new_handlerv at GLIBCXX_3.4.20 4.9
+ _ZSt15set_new_handlerPFvvE at GLIBCXX_3.4 4.1.1
+ _ZSt15system_categoryv at GLIBCXX_3.4.11 4.4.0
+ _ZNSt13runtime_errorC1EPKc at GLIBCXX_3.4.21 5
+ _ZNSt13runtime_errorC1ERKS_ at GLIBCXX_3.4.21 5
+ _ZNSt13runtime_errorC2EPKc at GLIBCXX_3.4.21 5
+ _ZNSt13runtime_errorC2ERKS_ at GLIBCXX_3.4.21 5
+ _ZNSt13runtime_erroraSERKS_ at GLIBCXX_3.4.21 5
+ _ZNSt14basic_ifstreamIcSt11char_traitsIcEE4swapERS2_ at GLIBCXX_3.4.21 5
+ _ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1EOS2_ at GLIBCXX_3.4.21 5
+ _ZNSt14basic_ifstreamIcSt11char_traitsIcEEC2EOS2_ at GLIBCXX_3.4.21 5
+ _ZNSt14basic_ifstreamIcSt11char_traitsIcEEaSEOS2_ at GLIBCXX_3.4.21 5
+ _ZNSt14basic_ifstreamIwSt11char_traitsIwEE4swapERS2_ at GLIBCXX_3.4.21 5
+ _ZNSt14basic_ifstreamIwSt11char_traitsIwEEC1EOS2_ at GLIBCXX_3.4.21 5
+ _ZNSt14basic_ifstreamIwSt11char_traitsIwEEC2EOS2_ at GLIBCXX_3.4.21 5
+ _ZNSt14basic_ifstreamIwSt11char_traitsIwEEaSEOS2_ at GLIBCXX_3.4.21 5
+ _ZNSt14basic_iostreamIwSt11char_traitsIwEE4swapERS2_ at GLIBCXX_3.4.21 5
+ _ZNSt14basic_iostreamIwSt11char_traitsIwEEC1EOS2_ at GLIBCXX_3.4.21 5
+ _ZNSt14basic_iostreamIwSt11char_traitsIwEEC2EOS2_ at GLIBCXX_3.4.21 5
+ _ZNSt14basic_iostreamIwSt11char_traitsIwEEaSEOS2_ at GLIBCXX_3.4.21 5
+ _ZNSt14basic_ofstreamIcSt11char_traitsIcEE4swapERS2_ at GLIBCXX_3.4.21 5
+ _ZNSt14basic_ofstreamIcSt11char_traitsIcEEC1EOS2_ at GLIBCXX_3.4.21 5
+ _ZNSt14basic_ofstreamIcSt11char_traitsIcEEC2EOS2_ at GLIBCXX_3.4.21 5
+ _ZNSt14basic_ofstreamIcSt11char_traitsIcEEaSEOS2_ at GLIBCXX_3.4.21 5
+ _ZNSt14basic_ofstreamIwSt11char_traitsIwEE4swapERS2_ at GLIBCXX_3.4.21 5
+ _ZNSt14basic_ofstreamIwSt11char_traitsIwEEC1EOS2_ at GLIBCXX_3.4.21 5
+ _ZNSt14basic_ofstreamIwSt11char_traitsIwEEC2EOS2_ at GLIBCXX_3.4.21 5
+ _ZNSt14basic_ofstreamIwSt11char_traitsIwEEaSEOS2_ at GLIBCXX_3.4.21 5
+ _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE4swapERS3_ at GLIBCXX_3.4.21 5
+ _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC1EOS3_ at GLIBCXX_3.4.21 5
+ _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEC2EOS3_ at GLIBCXX_3.4.21 5
+ _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEEaSEOS3_ at GLIBCXX_3.4.21 5
+ _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE4swapERS3_ at GLIBCXX_3.4.21 5
+ _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC1EOS3_ at GLIBCXX_3.4.21 5
+ _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEC2EOS3_ at GLIBCXX_3.4.21 5
+ _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEEaSEOS3_ at GLIBCXX_3.4.21 5
+ _ZSt16__throw_bad_castv at GLIBCXX_3.4 4.1.1
+ _ZSt16generic_categoryv at GLIBCXX_3.4.11 4.4.0
+ _ZSt17__throw_bad_allocv at GLIBCXX_3.4 4.1.1
+ _ZSt18_Rb_tree_decrementPKSt18_Rb_tree_node_base at GLIBCXX_3.4 4.1.1
+ _ZSt18_Rb_tree_decrementPSt18_Rb_tree_node_base at GLIBCXX_3.4 4.1.1
+ _ZSt18_Rb_tree_incrementPKSt18_Rb_tree_node_base at GLIBCXX_3.4 4.1.1
+ _ZSt18_Rb_tree_incrementPSt18_Rb_tree_node_base at GLIBCXX_3.4 4.1.1
+ _ZSt18__throw_bad_typeidv at GLIBCXX_3.4 4.1.1
+ _ZSt18uncaught_exceptionv at GLIBCXX_3.4 4.1.1
+ _ZSt19__throw_ios_failurePKc at GLIBCXX_3.4 4.1.1
+ _ZSt19__throw_logic_errorPKc at GLIBCXX_3.4 4.1.1
+ _ZSt19__throw_range_errorPKc at GLIBCXX_3.4 4.1.1
+ _ZSt19__throw_regex_errorNSt15regex_constants10error_typeE at GLIBCXX_3.4.15 4.6
+ _ZSt20_Rb_tree_black_countPKSt18_Rb_tree_node_baseS1_ at GLIBCXX_3.4 4.1.1
+ _ZSt20_Rb_tree_rotate_leftPSt18_Rb_tree_node_baseRS0_ at GLIBCXX_3.4 4.1.1
+ _ZSt20__throw_domain_errorPKc at GLIBCXX_3.4 4.1.1
+ _ZSt20__throw_future_errori at GLIBCXX_3.4.14 4.5
+ _ZSt20__throw_length_errorPKc at GLIBCXX_3.4 4.1.1
+ _ZSt20__throw_out_of_rangePKc at GLIBCXX_3.4 4.1.1
+ _ZSt20__throw_system_errori at GLIBCXX_3.4.11 4.4.0
+ _ZSt21_Rb_tree_rotate_rightPSt18_Rb_tree_node_baseRS0_ at GLIBCXX_3.4 4.1.1
+ _ZSt21__throw_bad_exceptionv at GLIBCXX_3.4 4.1.1
+ _ZSt21__throw_runtime_errorPKc at GLIBCXX_3.4 4.1.1
+ _ZSt22__throw_overflow_errorPKc at GLIBCXX_3.4 4.1.1
+ _ZSt23__throw_underflow_errorPKc at GLIBCXX_3.4 4.1.1
+ _ZSt24__throw_invalid_argumentPKc at GLIBCXX_3.4 4.1.1
+ _ZSt24__throw_out_of_range_fmtPKcz at GLIBCXX_3.4.20 4.9
+ _ZSt25__throw_bad_function_callv at GLIBCXX_3.4.14 4.5
+ _ZSt25notify_all_at_thread_exitRSt18condition_variableSt11unique_lockISt5mutexE at GLIBCXX_3.4.21 5
+ _ZSt28_Rb_tree_rebalance_for_erasePSt18_Rb_tree_node_baseRS_ at GLIBCXX_3.4 4.1.1
+ _ZSt29_Rb_tree_insert_and_rebalancebPSt18_Rb_tree_node_baseS0_RS_ at GLIBCXX_3.4 4.1.1
+ _ZSt2wsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_ at GLIBCXX_3.4 4.1.1
+ _ZSt2wsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_ at GLIBCXX_3.4 4.1.1
+ _ZSt3cin at GLIBCXX_3.4 4.1.1
+ _ZSt4cerr at GLIBCXX_3.4 4.1.1
+ _ZSt4clog at GLIBCXX_3.4 4.1.1
+ _ZSt4cout at GLIBCXX_3.4 4.1.1
+ _ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_ at GLIBCXX_3.4 4.1.1
+ _ZSt4endlIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_ at GLIBCXX_3.4 4.1.1
+ _ZSt4endsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_ at GLIBCXX_3.4 4.1.1
+ _ZSt4endsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_ at GLIBCXX_3.4 4.1.1
+ _ZSt4wcin at GLIBCXX_3.4 4.1.1
+ _ZSt5flushIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_ at GLIBCXX_3.4 4.1.1
+ _ZSt5flushIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_ at GLIBCXX_3.4 4.1.1
+ _ZSt5wcerr at GLIBCXX_3.4 4.1.1
+ _ZSt5wclog at GLIBCXX_3.4 4.1.1
+ _ZSt5wcout at GLIBCXX_3.4 4.1.1
+ _ZSt7getlineIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E at GLIBCXX_3.4 4.1.1
+ _ZSt7getlineIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_ES4_ at GLIBCXX_3.4 4.1.1
+ _ZSt7getlineIwSt11char_traitsIwESaIwEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E at GLIBCXX_3.4 4.1.1
+ _ZSt7getlineIwSt11char_traitsIwESaIwEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_ES4_ at GLIBCXX_3.4 4.1.1
+ _ZSt7nothrow at GLIBCXX_3.4 4.1.1
+ _ZSt9has_facetISt10moneypunctIcLb0EEEbRKSt6locale at GLIBCXX_3.4 4.1.1
+ _ZSt9has_facetISt10moneypunctIwLb0EEEbRKSt6locale at GLIBCXX_3.4 4.1.1
+ _ZSt9has_facetISt11__timepunctIcEEbRKSt6locale at GLIBCXX_3.4 4.1.1
+ _ZSt9has_facetISt11__timepunctIwEEbRKSt6locale at GLIBCXX_3.4 4.1.1
+ _ZSt9has_facetISt5ctypeIcEEbRKSt6locale at GLIBCXX_3.4 4.1.1
+ _ZSt9has_facetISt5ctypeIwEEbRKSt6locale at GLIBCXX_3.4 4.1.1
+ _ZSt9has_facetISt7codecvtIcc11__mbstate_tEEbRKSt6locale at GLIBCXX_3.4 4.1.1
+ _ZSt9has_facetISt7codecvtIwc11__mbstate_tEEbRKSt6locale at GLIBCXX_3.4 4.1.1
+ _ZSt9has_facetISt7collateIcEEbRKSt6locale at GLIBCXX_3.4 4.1.1
+ _ZSt9has_facetISt7collateIwEEbRKSt6locale at GLIBCXX_3.4 4.1.1
+ _ZSt9has_facetISt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale at GLIBCXX_3.4 4.1.1
+ _ZSt9has_facetISt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale at GLIBCXX_3.4 4.1.1
+ _ZSt9has_facetISt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale at GLIBCXX_3.4 4.1.1
+ _ZSt9has_facetISt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale at GLIBCXX_3.4 4.1.1
+ _ZSt9has_facetISt8messagesIcEEbRKSt6locale at GLIBCXX_3.4 4.1.1
+ _ZSt9has_facetISt8messagesIwEEbRKSt6locale at GLIBCXX_3.4 4.1.1
+ _ZSt9has_facetISt8numpunctIcEEbRKSt6locale at GLIBCXX_3.4 4.1.1
+ _ZSt9has_facetISt8numpunctIwEEbRKSt6locale at GLIBCXX_3.4 4.1.1
+ _ZSt9has_facetISt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale at GLIBCXX_3.4 4.1.1
+ _ZSt9has_facetISt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale at GLIBCXX_3.4 4.1.1
+ _ZSt9has_facetISt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale at GLIBCXX_3.4 4.1.1
+ _ZSt9has_facetISt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale at GLIBCXX_3.4 4.1.1
+ _ZSt9has_facetISt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale at GLIBCXX_3.4 4.1.1
+ _ZSt9has_facetISt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale at GLIBCXX_3.4 4.1.1
+ _ZSt9has_facetISt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEbRKSt6locale at GLIBCXX_3.4 4.1.1
+ _ZSt9has_facetISt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEbRKSt6locale at GLIBCXX_3.4 4.1.1
+ _ZSt9terminatev at GLIBCXX_3.4 4.1.1
+ _ZSt9use_facetISt10moneypunctIcLb0EEERKT_RKSt6locale at GLIBCXX_3.4 4.1.1
+ _ZSt9use_facetISt10moneypunctIcLb1EEERKT_RKSt6locale at GLIBCXX_3.4 4.1.1
+ _ZSt9use_facetISt10moneypunctIwLb0EEERKT_RKSt6locale at GLIBCXX_3.4 4.1.1
+ _ZSt9use_facetISt10moneypunctIwLb1EEERKT_RKSt6locale at GLIBCXX_3.4 4.1.1
+ _ZSt9use_facetISt11__timepunctIcEERKT_RKSt6locale at GLIBCXX_3.4 4.1.1
+ _ZSt9use_facetISt11__timepunctIwEERKT_RKSt6locale at GLIBCXX_3.4 4.1.1
+ _ZSt9use_facetISt5ctypeIcEERKT_RKSt6locale at GLIBCXX_3.4 4.1.1
+ _ZSt9use_facetISt5ctypeIwEERKT_RKSt6locale at GLIBCXX_3.4 4.1.1
+ _ZSt9use_facetISt7codecvtIcc11__mbstate_tEERKT_RKSt6locale at GLIBCXX_3.4 4.1.1
+ _ZSt9use_facetISt7codecvtIwc11__mbstate_tEERKT_RKSt6locale at GLIBCXX_3.4 4.1.1
+ _ZSt9use_facetISt7collateIcEERKT_RKSt6locale at GLIBCXX_3.4 4.1.1
+ _ZSt9use_facetISt7collateIwEERKT_RKSt6locale at GLIBCXX_3.4 4.1.1
+ _ZSt9use_facetISt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale at GLIBCXX_3.4 4.1.1
+ _ZSt9use_facetISt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale at GLIBCXX_3.4 4.1.1
+ _ZSt9use_facetISt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale at GLIBCXX_3.4 4.1.1
+ _ZSt9use_facetISt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale at GLIBCXX_3.4 4.1.1
+ _ZSt9use_facetISt8messagesIcEERKT_RKSt6locale at GLIBCXX_3.4 4.1.1
+ _ZSt9use_facetISt8messagesIwEERKT_RKSt6locale at GLIBCXX_3.4 4.1.1
+ _ZSt9use_facetISt8numpunctIcEERKT_RKSt6locale at GLIBCXX_3.4 4.1.1
+ _ZSt9use_facetISt8numpunctIwEERKT_RKSt6locale at GLIBCXX_3.4 4.1.1
+ _ZSt9use_facetISt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale at GLIBCXX_3.4 4.1.1
+ _ZSt9use_facetISt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale at GLIBCXX_3.4 4.1.1
+ _ZSt9use_facetISt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale at GLIBCXX_3.4 4.1.1
+ _ZSt9use_facetISt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale at GLIBCXX_3.4 4.1.1
+ _ZSt9use_facetISt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale at GLIBCXX_3.4 4.1.1
+ _ZSt9use_facetISt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale at GLIBCXX_3.4 4.1.1
+ _ZSt9use_facetISt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEERKT_RKSt6locale at GLIBCXX_3.4 4.1.1
+ _ZSt9use_facetISt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEERKT_RKSt6locale at GLIBCXX_3.4 4.1.1
+ _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKa at GLIBCXX_3.4 4.1.1
+ _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc at GLIBCXX_3.4 4.1.1
+ _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKh at GLIBCXX_3.4 4.1.1
+ _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_a at GLIBCXX_3.4 4.1.1
+ _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c at GLIBCXX_3.4 4.1.1
+ _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_h at GLIBCXX_3.4 4.1.1
+ _ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St12_Setiosflags at GLIBCXX_3.4 4.1.1
+ _ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St13_Setprecision at GLIBCXX_3.4 4.1.1
+ _ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St14_Resetiosflags at GLIBCXX_3.4 4.1.1
+ _ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St5_Setw at GLIBCXX_3.4 4.1.1
+ _ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St8_Setbase at GLIBCXX_3.4 4.1.1
+ _ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St8_SetfillIS3_E at GLIBCXX_3.4 4.1.1
+ _ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKSbIS4_S5_T1_E at GLIBCXX_3.4 4.1.1
+ _ZStlsIdcSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E at GLIBCXX_3.4 4.1.1
+ _ZStlsIdwSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E at GLIBCXX_3.4 4.1.1
+ _ZStlsIecSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E at GLIBCXX_3.4 4.1.1
+ _ZStlsIewSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E at GLIBCXX_3.4 4.1.1
+ _ZStlsIfcSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E at GLIBCXX_3.4 4.1.1
+ _ZStlsIfwSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E at GLIBCXX_3.4 4.1.1
+ _ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_PKS3_ at GLIBCXX_3.4 4.1.1
+ _ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_PKc at GLIBCXX_3.4 4.1.1
+ _ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_S3_ at GLIBCXX_3.4 4.1.1
+ _ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St12_Setiosflags at GLIBCXX_3.4 4.1.1
+ _ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St13_Setprecision at GLIBCXX_3.4 4.1.1
+ _ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St14_Resetiosflags at GLIBCXX_3.4 4.1.1
+ _ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St5_Setw at GLIBCXX_3.4 4.1.1
+ _ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St8_Setbase at GLIBCXX_3.4 4.1.1
+ _ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_St8_SetfillIS3_E at GLIBCXX_3.4 4.1.1
+ _ZStlsIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_c at GLIBCXX_3.4 4.1.1
+ _ZStlsIwSt11char_traitsIwESaIwEERSt13basic_ostreamIT_T0_ES7_RKSbIS4_S5_T1_E at GLIBCXX_3.4 4.1.1
+ _ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_RKS6_ at GLIBCXX_3.4 4.1.1
+ _ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_ERKS6_S8_ at GLIBCXX_3.4 4.1.1
+ _ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_ES3_RKS6_ at GLIBCXX_3.4 4.1.1
+ _ZStplIwSt11char_traitsIwESaIwEESbIT_T0_T1_EPKS3_RKS6_ at GLIBCXX_3.4 4.1.1
+ _ZStplIwSt11char_traitsIwESaIwEESbIT_T0_T1_ERKS6_S8_ at GLIBCXX_3.4 4.1.1
+ _ZStplIwSt11char_traitsIwESaIwEESbIT_T0_T1_ES3_RKS6_ at GLIBCXX_3.4 4.1.1
+ _ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Pa at GLIBCXX_3.4 4.1.1
+ _ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Ph at GLIBCXX_3.4 4.1.1
+ _ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Ra at GLIBCXX_3.4 4.1.1
+ _ZStrsISt11char_traitsIcEERSt13basic_istreamIcT_ES5_Rh at GLIBCXX_3.4 4.1.1
+ _ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_PS3_ at GLIBCXX_3.4 4.1.1
+ _ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_RS3_ at GLIBCXX_3.4 4.1.1
+ _ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St12_Setiosflags at GLIBCXX_3.4 4.1.1
+ _ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St13_Setprecision at GLIBCXX_3.4 4.1.1
+ _ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St14_Resetiosflags at GLIBCXX_3.4 4.1.1
+ _ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St5_Setw at GLIBCXX_3.4 4.1.1
+ _ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St8_Setbase at GLIBCXX_3.4 4.1.1
+ _ZStrsIcSt11char_traitsIcEERSt13basic_istreamIT_T0_ES6_St8_SetfillIS3_E at GLIBCXX_3.4 4.1.1
+ _ZStrsIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E at GLIBCXX_3.4 4.1.1
+ _ZStrsIdcSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E at GLIBCXX_3.4 4.1.1
+ _ZStrsIdwSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E at GLIBCXX_3.4 4.1.1
+ _ZStrsIecSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E at GLIBCXX_3.4 4.1.1
+ _ZStrsIewSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E at GLIBCXX_3.4 4.1.1
+ _ZStrsIfcSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E at GLIBCXX_3.4 4.1.1
+ _ZStrsIfwSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E at GLIBCXX_3.4 4.1.1
+ _ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_PS3_ at GLIBCXX_3.4 4.1.1
+ _ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_RS3_ at GLIBCXX_3.4 4.1.1
+ _ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St12_Setiosflags at GLIBCXX_3.4 4.1.1
+ _ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St13_Setprecision at GLIBCXX_3.4 4.1.1
+ _ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St14_Resetiosflags at GLIBCXX_3.4 4.1.1
+ _ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St5_Setw at GLIBCXX_3.4 4.1.1
+ _ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St8_Setbase at GLIBCXX_3.4 4.1.1
+ _ZStrsIwSt11char_traitsIwEERSt13basic_istreamIT_T0_ES6_St8_SetfillIS3_E at GLIBCXX_3.4 4.1.1
+ _ZStrsIwSt11char_traitsIwESaIwEERSt13basic_istreamIT_T0_ES7_RSbIS4_S5_T1_E at GLIBCXX_3.4 4.1.1
+ _ZTIDd at CXXABI_1.3.4 4.5
+ _ZTIDe at CXXABI_1.3.4 4.5
+ _ZTIDf at CXXABI_1.3.4 4.5
+ _ZTIDi at CXXABI_1.3.3 4.4.0
+ _ZTIDn at CXXABI_1.3.5 4.6
+ _ZTIDs at CXXABI_1.3.3 4.4.0
+ _ZTIN10__cxxabiv115__forced_unwindE at CXXABI_1.3.2 4.3
+ _ZTIN10__cxxabiv116__enum_type_infoE at CXXABI_1.3 4.1.1
+ _ZTIN10__cxxabiv117__array_type_infoE at CXXABI_1.3 4.1.1
+ _ZTIN10__cxxabiv117__class_type_infoE at CXXABI_1.3 4.1.1
+ _ZTIN10__cxxabiv117__pbase_type_infoE at CXXABI_1.3 4.1.1
+ _ZTIN10__cxxabiv119__foreign_exceptionE at CXXABI_1.3.2 4.3
+ _ZTIN10__cxxabiv119__pointer_type_infoE at CXXABI_1.3 4.1.1
+ _ZTIN10__cxxabiv120__function_type_infoE at CXXABI_1.3 4.1.1
+ _ZTIN10__cxxabiv120__si_class_type_infoE at CXXABI_1.3 4.1.1
+ _ZTIN10__cxxabiv121__vmi_class_type_infoE at CXXABI_1.3 4.1.1
+ _ZTIN10__cxxabiv123__fundamental_type_infoE at CXXABI_1.3 4.1.1
+ _ZTIN10__cxxabiv129__pointer_to_member_type_infoE at CXXABI_1.3 4.1.1
+ _ZTIN9__gnu_cxx13stdio_filebufIcSt11char_traitsIcEEE at GLIBCXX_3.4 4.1.1
+ _ZTIN9__gnu_cxx13stdio_filebufIwSt11char_traitsIwEEE at GLIBCXX_3.4 4.1.1
+ _ZTIN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEE at GLIBCXX_3.4 4.1.1
+ _ZTIN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEE at GLIBCXX_3.4 4.1.1
+ _ZTINSt3_V214error_categoryE at GLIBCXX_3.4.21 5
+ _ZTINSt6locale5facetE at GLIBCXX_3.4 4.1.1
+ _ZTINSt8ios_base7failureE at GLIBCXX_3.4 4.1.1
+ _ZTIPDd at CXXABI_1.3.4 4.5
+ _ZTIPDe at CXXABI_1.3.4 4.5
+ _ZTIPDf at CXXABI_1.3.4 4.5
+ _ZTIPDi at CXXABI_1.3.3 4.4.0
+ _ZTIPDn at CXXABI_1.3.5 4.6
+ _ZTIPDs at CXXABI_1.3.3 4.4.0
+ _ZTIPKDd at CXXABI_1.3.4 4.5
+ _ZTIPKDe at CXXABI_1.3.4 4.5
+ _ZTIPKDf at CXXABI_1.3.4 4.5
+ _ZTIPKDi at CXXABI_1.3.3 4.4.0
+ _ZTIPKDn at CXXABI_1.3.5 4.6
+ _ZTIPKDs at CXXABI_1.3.3 4.4.0
+ _ZTIPKa at CXXABI_1.3 4.1.1
+ _ZTIPKb at CXXABI_1.3 4.1.1
+ _ZTIPKc at CXXABI_1.3 4.1.1
+ _ZTIPKd at CXXABI_1.3 4.1.1
+ _ZTIPKe at CXXABI_1.3 4.1.1
+ _ZTIPKf at CXXABI_1.3 4.1.1
+ _ZTIPKh at CXXABI_1.3 4.1.1
+ _ZTIPKi at CXXABI_1.3 4.1.1
+ _ZTIPKj at CXXABI_1.3 4.1.1
+ _ZTIPKl at CXXABI_1.3 4.1.1
+ _ZTIPKm at CXXABI_1.3 4.1.1
+ _ZTIPKs at CXXABI_1.3 4.1.1
+ _ZTIPKt at CXXABI_1.3 4.1.1
+ _ZTIPKv at CXXABI_1.3 4.1.1
+ _ZTIPKw at CXXABI_1.3 4.1.1
+ _ZTIPKx at CXXABI_1.3 4.1.1
+ _ZTIPKy at CXXABI_1.3 4.1.1
+ _ZTIPa at CXXABI_1.3 4.1.1
+ _ZTIPb at CXXABI_1.3 4.1.1
+ _ZTIPc at CXXABI_1.3 4.1.1
+ _ZTIPd at CXXABI_1.3 4.1.1
+ _ZTIPe at CXXABI_1.3 4.1.1
+ _ZTIPf at CXXABI_1.3 4.1.1
+ _ZTIPh at CXXABI_1.3 4.1.1
+ _ZTIPi at CXXABI_1.3 4.1.1
+ _ZTIPj at CXXABI_1.3 4.1.1
+ _ZTIPl at CXXABI_1.3 4.1.1
+ _ZTIPm at CXXABI_1.3 4.1.1
+ _ZTIPs at CXXABI_1.3 4.1.1
+ _ZTIPt at CXXABI_1.3 4.1.1
+ _ZTIPv at CXXABI_1.3 4.1.1
+ _ZTIPw at CXXABI_1.3 4.1.1
+ _ZTIPx at CXXABI_1.3 4.1.1
+ _ZTIPy at CXXABI_1.3 4.1.1
+ _ZTISd at GLIBCXX_3.4 4.1.1
+ _ZTISi at GLIBCXX_3.4 4.1.1
+ _ZTISo at GLIBCXX_3.4 4.1.1
+ _ZTISt10bad_typeid at GLIBCXX_3.4 4.1.1
+ _ZTISt10ctype_base at GLIBCXX_3.4 4.1.1
+ _ZTISt10istrstream at GLIBCXX_3.4 4.1.1
+ _ZTISt10lock_error at GLIBCXX_3.4.11 4.4.0
+ _ZTISt10money_base at GLIBCXX_3.4 4.1.1
+ _ZTISt10moneypunctIcLb0EE at GLIBCXX_3.4 4.1.1
+ _ZTISt10moneypunctIcLb1EE at GLIBCXX_3.4 4.1.1
+ _ZTISt10moneypunctIwLb0EE at GLIBCXX_3.4 4.1.1
+ _ZTISt10moneypunctIwLb1EE at GLIBCXX_3.4 4.1.1
+ _ZTISt10ostrstream at GLIBCXX_3.4 4.1.1
+ _ZTISt11__timepunctIcE at GLIBCXX_3.4 4.1.1
+ _ZTISt11__timepunctIwE at GLIBCXX_3.4 4.1.1
+ _ZTISt11logic_error at GLIBCXX_3.4 4.1.1
+ _ZTISt11range_error at GLIBCXX_3.4 4.1.1
+ _ZTISt11regex_error at GLIBCXX_3.4.15 4.6
+ _ZTISt12bad_weak_ptr at GLIBCXX_3.4.15 4.6
+ _ZTISt12codecvt_base at GLIBCXX_3.4 4.1.1
+ _ZTISt12ctype_bynameIcE at GLIBCXX_3.4 4.1.1
+ _ZTISt12ctype_bynameIwE at GLIBCXX_3.4 4.1.1
+ _ZTISt12domain_error at GLIBCXX_3.4 4.1.1
+ _ZTISt12future_error at GLIBCXX_3.4.14 4.5
+ _ZTISt12length_error at GLIBCXX_3.4 4.1.1
+ _ZTISt12out_of_range at GLIBCXX_3.4 4.1.1
+ _ZTISt12strstreambuf at GLIBCXX_3.4 4.1.1
+ _ZTISt12system_error at GLIBCXX_3.4.11 4.4.0
+ _ZTISt13bad_exception at GLIBCXX_3.4 4.1.1
+ _ZTISt13basic_filebufIcSt11char_traitsIcEE at GLIBCXX_3.4 4.1.1
+ _ZTISt13basic_filebufIwSt11char_traitsIwEE at GLIBCXX_3.4 4.1.1
+ _ZTISt13basic_fstreamIcSt11char_traitsIcEE at GLIBCXX_3.4 4.1.1
+ _ZTISt13basic_fstreamIwSt11char_traitsIwEE at GLIBCXX_3.4 4.1.1
+ _ZTISt13basic_istreamIwSt11char_traitsIwEE at GLIBCXX_3.4 4.1.1
+ _ZTISt13basic_ostreamIwSt11char_traitsIwEE at GLIBCXX_3.4 4.1.1
+ _ZTISt13messages_base at GLIBCXX_3.4 4.1.1
+ _ZTISt13runtime_error at GLIBCXX_3.4 4.1.1
+ _ZTISt14basic_ifstreamIcSt11char_traitsIcEE at GLIBCXX_3.4 4.1.1
+ _ZTISt14basic_ifstreamIwSt11char_traitsIwEE at GLIBCXX_3.4 4.1.1
+ _ZTISt14basic_iostreamIwSt11char_traitsIwEE at GLIBCXX_3.4 4.1.1
+ _ZTISt14basic_ofstreamIcSt11char_traitsIcEE at GLIBCXX_3.4 4.1.1
+ _ZTISt14basic_ofstreamIwSt11char_traitsIwEE at GLIBCXX_3.4 4.1.1
+ _ZTISt14codecvt_bynameIcc11__mbstate_tE at GLIBCXX_3.4 4.1.1
+ _ZTISt14codecvt_bynameIwc11__mbstate_tE at GLIBCXX_3.4 4.1.1
+ _ZTISt14collate_bynameIcE at GLIBCXX_3.4 4.1.1
+ _ZTISt14collate_bynameIwE at GLIBCXX_3.4 4.1.1
+ _ZTISt14error_category at GLIBCXX_3.4.11 4.4.0
+ _ZTISt14overflow_error at GLIBCXX_3.4 4.1.1
+ _ZTISt15basic_streambufIcSt11char_traitsIcEE at GLIBCXX_3.4 4.1.1
+ _ZTISt15basic_streambufIwSt11char_traitsIwEE at GLIBCXX_3.4 4.1.1
+ _ZTISt15basic_stringbufIcSt11char_traitsIcESaIcEE at GLIBCXX_3.4 4.1.1
+ _ZTISt15basic_stringbufIwSt11char_traitsIwESaIwEE at GLIBCXX_3.4 4.1.1
+ _ZTISt15messages_bynameIcE at GLIBCXX_3.4 4.1.1
+ _ZTISt15messages_bynameIwE at GLIBCXX_3.4 4.1.1
+ _ZTISt15numpunct_bynameIcE at GLIBCXX_3.4 4.1.1
+ _ZTISt15numpunct_bynameIwE at GLIBCXX_3.4 4.1.1
+ _ZTISt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE at GLIBCXX_3.4 4.1.1
+ _ZTISt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE at GLIBCXX_3.4 4.1.1
+ _ZTISt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE at GLIBCXX_3.4 4.1.1
+ _ZTISt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE at GLIBCXX_3.4 4.1.1
+ _ZTISt15underflow_error at GLIBCXX_3.4 4.1.1
+ _ZTISt16bad_array_length at CXXABI_1.3.8 4.9
+ _ZTISt16invalid_argument at GLIBCXX_3.4 4.1.1
+ _ZTISt17bad_function_call at GLIBCXX_3.4.15 4.6
+ _ZTISt17moneypunct_bynameIcLb0EE at GLIBCXX_3.4 4.1.1
+ _ZTISt17moneypunct_bynameIcLb1EE at GLIBCXX_3.4 4.1.1
+ _ZTISt17moneypunct_bynameIwLb0EE at GLIBCXX_3.4 4.1.1
+ _ZTISt17moneypunct_bynameIwLb1EE at GLIBCXX_3.4 4.1.1
+ _ZTISt18basic_stringstreamIcSt11char_traitsIcESaIcEE at GLIBCXX_3.4 4.1.1
+ _ZTISt18basic_stringstreamIwSt11char_traitsIwESaIwEE at GLIBCXX_3.4 4.1.1
+ _ZTISt19__codecvt_utf8_baseIDiE at GLIBCXX_3.4.21 5
+ _ZTISt19__codecvt_utf8_baseIDsE at GLIBCXX_3.4.21 5
+ _ZTISt19__codecvt_utf8_baseIwE at GLIBCXX_3.4.21 5
+ _ZTISt19basic_istringstreamIcSt11char_traitsIcESaIcEE at GLIBCXX_3.4 4.1.1
+ _ZTISt19basic_istringstreamIwSt11char_traitsIwESaIwEE at GLIBCXX_3.4 4.1.1
+ _ZTISt19basic_ostringstreamIcSt11char_traitsIcESaIcEE at GLIBCXX_3.4 4.1.1
+ _ZTISt19basic_ostringstreamIwSt11char_traitsIwESaIwEE at GLIBCXX_3.4 4.1.1
+ _ZTISt20__codecvt_utf16_baseIDiE at GLIBCXX_3.4.21 5
+ _ZTISt20__codecvt_utf16_baseIDsE at GLIBCXX_3.4.21 5
+ _ZTISt20__codecvt_utf16_baseIwE at GLIBCXX_3.4.21 5
+ _ZTISt20bad_array_new_length at CXXABI_1.3.8 4.9
+ _ZTISt21__ctype_abstract_baseIcE at GLIBCXX_3.4 4.1.1
+ _ZTISt21__ctype_abstract_baseIwE at GLIBCXX_3.4 4.1.1
+ _ZTISt23__codecvt_abstract_baseIcc11__mbstate_tE at GLIBCXX_3.4 4.1.1
+ _ZTISt23__codecvt_abstract_baseIwc11__mbstate_tE at GLIBCXX_3.4 4.1.1
+ _ZTISt25__codecvt_utf8_utf16_baseIDiE at GLIBCXX_3.4.21 5
+ _ZTISt25__codecvt_utf8_utf16_baseIDsE at GLIBCXX_3.4.21 5
+ _ZTISt25__codecvt_utf8_utf16_baseIwE at GLIBCXX_3.4.21 5
+ _ZTISt5ctypeIcE at GLIBCXX_3.4 4.1.1
+ _ZTISt5ctypeIwE at GLIBCXX_3.4 4.1.1
+ _ZTISt7codecvtIDic11__mbstate_tE at GLIBCXX_3.4.21 5
+ _ZTISt7codecvtIDsc11__mbstate_tE at GLIBCXX_3.4.21 5
+ _ZTISt7codecvtIcc11__mbstate_tE at GLIBCXX_3.4 4.1.1
+ _ZTISt7codecvtIwc11__mbstate_tE at GLIBCXX_3.4 4.1.1
+ _ZTISt7collateIcE at GLIBCXX_3.4 4.1.1
+ _ZTISt7collateIwE at GLIBCXX_3.4 4.1.1
+ _ZTISt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE at GLIBCXX_3.4 4.1.1
+ _ZTISt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE at GLIBCXX_3.4 4.1.1
+ _ZTISt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE at GLIBCXX_3.4 4.1.1
+ _ZTISt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE at GLIBCXX_3.4 4.1.1
+ _ZTISt8bad_cast at GLIBCXX_3.4 4.1.1
+ _ZTISt8ios_base at GLIBCXX_3.4 4.1.1
+ _ZTISt8messagesIcE at GLIBCXX_3.4 4.1.1
+ _ZTISt8messagesIwE at GLIBCXX_3.4 4.1.1
+ _ZTISt8numpunctIcE at GLIBCXX_3.4 4.1.1
+ _ZTISt8numpunctIwE at GLIBCXX_3.4 4.1.1
+ _ZTISt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE at GLIBCXX_3.4 4.1.1
+ _ZTISt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE at GLIBCXX_3.4 4.1.1
+ _ZTISt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE at GLIBCXX_3.4 4.1.1
+ _ZTISt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE at GLIBCXX_3.4 4.1.1
+ _ZTISt9bad_alloc at GLIBCXX_3.4 4.1.1
+ _ZTISt9basic_iosIcSt11char_traitsIcEE at GLIBCXX_3.4 4.1.1
+ _ZTISt9basic_iosIwSt11char_traitsIwEE at GLIBCXX_3.4 4.1.1
+ _ZTISt9exception at GLIBCXX_3.4 4.1.1
+ _ZTISt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE at GLIBCXX_3.4 4.1.1
+ _ZTISt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE at GLIBCXX_3.4 4.1.1
+ _ZTISt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE at GLIBCXX_3.4 4.1.1
+ _ZTISt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE at GLIBCXX_3.4 4.1.1
+ _ZTISt9strstream at GLIBCXX_3.4 4.1.1
+ _ZTISt9time_base at GLIBCXX_3.4 4.1.1
+ _ZTISt9type_info at GLIBCXX_3.4 4.1.1
+ _ZTIa at CXXABI_1.3 4.1.1
+ _ZTIb at CXXABI_1.3 4.1.1
+ _ZTIc at CXXABI_1.3 4.1.1
+ _ZTId at CXXABI_1.3 4.1.1
+ _ZTIe at CXXABI_1.3 4.1.1
+ _ZTIf at CXXABI_1.3 4.1.1
+ _ZTIh at CXXABI_1.3 4.1.1
+ _ZTIi at CXXABI_1.3 4.1.1
+ _ZTIj at CXXABI_1.3 4.1.1
+ _ZTIl at CXXABI_1.3 4.1.1
+ _ZTIm at CXXABI_1.3 4.1.1
+ _ZTIs at CXXABI_1.3 4.1.1
+ _ZTIt at CXXABI_1.3 4.1.1
+ _ZTIv at CXXABI_1.3 4.1.1
+ _ZTIw at CXXABI_1.3 4.1.1
+ _ZTIx at CXXABI_1.3 4.1.1
+ _ZTIy at CXXABI_1.3 4.1.1
+ _ZTSN10__cxxabiv116__enum_type_infoE at CXXABI_1.3 4.1.1
+ _ZTSN10__cxxabiv117__array_type_infoE at CXXABI_1.3 4.1.1
+ _ZTSN10__cxxabiv117__class_type_infoE at CXXABI_1.3 4.1.1
+ _ZTSN10__cxxabiv117__pbase_type_infoE at CXXABI_1.3 4.1.1
+ _ZTSN10__cxxabiv119__pointer_type_infoE at CXXABI_1.3 4.1.1
+ _ZTSN10__cxxabiv120__function_type_infoE at CXXABI_1.3 4.1.1
+ _ZTSN10__cxxabiv120__si_class_type_infoE at CXXABI_1.3 4.1.1
+ _ZTSN10__cxxabiv121__vmi_class_type_infoE at CXXABI_1.3 4.1.1
+ _ZTSN10__cxxabiv123__fundamental_type_infoE at CXXABI_1.3 4.1.1
+ _ZTSN10__cxxabiv129__pointer_to_member_type_infoE at CXXABI_1.3 4.1.1
+ _ZTSN9__gnu_cxx13stdio_filebufIcSt11char_traitsIcEEE at GLIBCXX_3.4 4.1.1
+ _ZTSN9__gnu_cxx13stdio_filebufIwSt11char_traitsIwEEE at GLIBCXX_3.4 4.1.1
+ _ZTSN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEE at GLIBCXX_3.4 4.1.1
+ _ZTSN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEE at GLIBCXX_3.4 4.1.1
+ _ZTSNSt6locale5facetE at GLIBCXX_3.4 4.1.1
+ _ZTSNSt8ios_base7failureE at GLIBCXX_3.4 4.1.1
+ _ZTSPKa at CXXABI_1.3 4.1.1
+ _ZTSPKb at CXXABI_1.3 4.1.1
+ _ZTSPKc at CXXABI_1.3 4.1.1
+ _ZTSPKd at CXXABI_1.3 4.1.1
+ _ZTSPKe at CXXABI_1.3 4.1.1
+ _ZTSPKf at CXXABI_1.3 4.1.1
+ _ZTSPKh at CXXABI_1.3 4.1.1
+ _ZTSPKi at CXXABI_1.3 4.1.1
+ _ZTSPKj at CXXABI_1.3 4.1.1
+ _ZTSPKl at CXXABI_1.3 4.1.1
+ _ZTSPKm at CXXABI_1.3 4.1.1
+ _ZTSPKs at CXXABI_1.3 4.1.1
+ _ZTSPKt at CXXABI_1.3 4.1.1
+ _ZTSPKv at CXXABI_1.3 4.1.1
+ _ZTSPKw at CXXABI_1.3 4.1.1
+ _ZTSPKx at CXXABI_1.3 4.1.1
+ _ZTSPKy at CXXABI_1.3 4.1.1
+ _ZTSPa at CXXABI_1.3 4.1.1
+ _ZTSPb at CXXABI_1.3 4.1.1
+ _ZTSPc at CXXABI_1.3 4.1.1
+ _ZTSPd at CXXABI_1.3 4.1.1
+ _ZTSPe at CXXABI_1.3 4.1.1
+ _ZTSPf at CXXABI_1.3 4.1.1
+ _ZTSPh at CXXABI_1.3 4.1.1
+ _ZTSPi at CXXABI_1.3 4.1.1
+ _ZTSPj at CXXABI_1.3 4.1.1
+ _ZTSPl at CXXABI_1.3 4.1.1
+ _ZTSPm at CXXABI_1.3 4.1.1
+ _ZTSPs at CXXABI_1.3 4.1.1
+ _ZTSPt at CXXABI_1.3 4.1.1
+ _ZTSPv at CXXABI_1.3 4.1.1
+ _ZTSPw at CXXABI_1.3 4.1.1
+ _ZTSPx at CXXABI_1.3 4.1.1
+ _ZTSPy at CXXABI_1.3 4.1.1
+ _ZTSSd at GLIBCXX_3.4 4.1.1
+ _ZTSSi at GLIBCXX_3.4 4.1.1
+ _ZTSSo at GLIBCXX_3.4 4.1.1
+ _ZTSSt10bad_typeid at GLIBCXX_3.4 4.1.1
+ _ZTSSt10ctype_base at GLIBCXX_3.4 4.1.1
+ _ZTSSt10istrstream at GLIBCXX_3.4 4.1.1
+ _ZTSSt10lock_error at GLIBCXX_3.4.11 4.4.0
+ _ZTSSt10money_base at GLIBCXX_3.4 4.1.1
+ _ZTSSt10moneypunctIcLb0EE at GLIBCXX_3.4 4.1.1
+ _ZTSSt10moneypunctIcLb1EE at GLIBCXX_3.4 4.1.1
+ _ZTSSt10moneypunctIwLb0EE at GLIBCXX_3.4 4.1.1
+ _ZTSSt10moneypunctIwLb1EE at GLIBCXX_3.4 4.1.1
+ _ZTSSt10ostrstream at GLIBCXX_3.4 4.1.1
+ _ZTSSt11__timepunctIcE at GLIBCXX_3.4 4.1.1
+ _ZTSSt11__timepunctIwE at GLIBCXX_3.4 4.1.1
+ _ZTSSt11logic_error at GLIBCXX_3.4 4.1.1
+ _ZTSSt11range_error at GLIBCXX_3.4 4.1.1
+ _ZTSSt12codecvt_base at GLIBCXX_3.4 4.1.1
+ _ZTSSt12ctype_bynameIcE at GLIBCXX_3.4 4.1.1
+ _ZTSSt12ctype_bynameIwE at GLIBCXX_3.4 4.1.1
+ _ZTSSt12domain_error at GLIBCXX_3.4 4.1.1
+ _ZTSSt12future_error at GLIBCXX_3.4.14 4.5
+ _ZTSSt12length_error at GLIBCXX_3.4 4.1.1
+ _ZTSSt12out_of_range at GLIBCXX_3.4 4.1.1
+ _ZTSSt12strstreambuf at GLIBCXX_3.4 4.1.1
+ _ZTSSt12system_error at GLIBCXX_3.4.11 4.4.0
+ _ZTSSt13bad_exception at GLIBCXX_3.4 4.1.1
+ _ZTSSt13basic_filebufIcSt11char_traitsIcEE at GLIBCXX_3.4 4.1.1
+ _ZTSSt13basic_filebufIwSt11char_traitsIwEE at GLIBCXX_3.4 4.1.1
+ _ZTSSt13basic_fstreamIcSt11char_traitsIcEE at GLIBCXX_3.4 4.1.1
+ _ZTSSt13basic_fstreamIwSt11char_traitsIwEE at GLIBCXX_3.4 4.1.1
+ _ZTSSt13basic_istreamIwSt11char_traitsIwEE at GLIBCXX_3.4 4.1.1
+ _ZTSSt13basic_ostreamIwSt11char_traitsIwEE at GLIBCXX_3.4 4.1.1
+ _ZTSSt13messages_base at GLIBCXX_3.4 4.1.1
+ _ZTSSt13runtime_error at GLIBCXX_3.4 4.1.1
+ _ZTSSt14basic_ifstreamIcSt11char_traitsIcEE at GLIBCXX_3.4 4.1.1
+ _ZTSSt14basic_ifstreamIwSt11char_traitsIwEE at GLIBCXX_3.4 4.1.1
+ _ZTSSt14basic_iostreamIwSt11char_traitsIwEE at GLIBCXX_3.4 4.1.1
+ _ZTSSt14basic_ofstreamIcSt11char_traitsIcEE at GLIBCXX_3.4 4.1.1
+ _ZTSSt14basic_ofstreamIwSt11char_traitsIwEE at GLIBCXX_3.4 4.1.1
+ _ZTSSt14codecvt_bynameIcc11__mbstate_tE at GLIBCXX_3.4 4.1.1
+ _ZTSSt14codecvt_bynameIwc11__mbstate_tE at GLIBCXX_3.4 4.1.1
+ _ZTSSt14collate_bynameIcE at GLIBCXX_3.4 4.1.1
+ _ZTSSt14collate_bynameIwE at GLIBCXX_3.4 4.1.1
+ _ZTSSt14error_category at GLIBCXX_3.4.11 4.4.0
+ _ZTSSt14overflow_error at GLIBCXX_3.4 4.1.1
+ _ZTSSt15basic_streambufIcSt11char_traitsIcEE at GLIBCXX_3.4 4.1.1
+ _ZTSSt15basic_streambufIwSt11char_traitsIwEE at GLIBCXX_3.4 4.1.1
+ _ZTSSt15basic_stringbufIcSt11char_traitsIcESaIcEE at GLIBCXX_3.4 4.1.1
+ _ZTSSt15basic_stringbufIwSt11char_traitsIwESaIwEE at GLIBCXX_3.4 4.1.1
+ _ZTSSt15messages_bynameIcE at GLIBCXX_3.4 4.1.1
+ _ZTSSt15messages_bynameIwE at GLIBCXX_3.4 4.1.1
+ _ZTSSt15numpunct_bynameIcE at GLIBCXX_3.4 4.1.1
+ _ZTSSt15numpunct_bynameIwE at GLIBCXX_3.4 4.1.1
+ _ZTSSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE at GLIBCXX_3.4 4.1.1
+ _ZTSSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE at GLIBCXX_3.4 4.1.1
+ _ZTSSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE at GLIBCXX_3.4 4.1.1
+ _ZTSSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE at GLIBCXX_3.4 4.1.1
+ _ZTSSt15underflow_error at GLIBCXX_3.4 4.1.1
+ _ZTSSt16bad_array_length at CXXABI_1.3.8 4.9
+ _ZTSSt16invalid_argument at GLIBCXX_3.4 4.1.1
+ _ZTSSt17moneypunct_bynameIcLb0EE at GLIBCXX_3.4 4.1.1
+ _ZTSSt17moneypunct_bynameIcLb1EE at GLIBCXX_3.4 4.1.1
+ _ZTSSt17moneypunct_bynameIwLb0EE at GLIBCXX_3.4 4.1.1
+ _ZTSSt17moneypunct_bynameIwLb1EE at GLIBCXX_3.4 4.1.1
+ _ZTSSt18basic_stringstreamIcSt11char_traitsIcESaIcEE at GLIBCXX_3.4 4.1.1
+ _ZTSSt18basic_stringstreamIwSt11char_traitsIwESaIwEE at GLIBCXX_3.4 4.1.1
+ _ZTSSt19__codecvt_utf8_baseIDiE at GLIBCXX_3.4.21 5
+ _ZTSSt19__codecvt_utf8_baseIDsE at GLIBCXX_3.4.21 5
+ _ZTSSt19__codecvt_utf8_baseIwE at GLIBCXX_3.4.21 5
+ _ZTSSt19basic_istringstreamIcSt11char_traitsIcESaIcEE at GLIBCXX_3.4 4.1.1
+ _ZTSSt19basic_istringstreamIwSt11char_traitsIwESaIwEE at GLIBCXX_3.4 4.1.1
+ _ZTSSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE at GLIBCXX_3.4 4.1.1
+ _ZTSSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE at GLIBCXX_3.4 4.1.1
+ _ZTSSt20__codecvt_utf16_baseIDiE at GLIBCXX_3.4.21 5
+ _ZTSSt20__codecvt_utf16_baseIDsE at GLIBCXX_3.4.21 5
+ _ZTSSt20__codecvt_utf16_baseIwE at GLIBCXX_3.4.21 5
+ _ZTSSt20bad_array_new_length at CXXABI_1.3.8 4.9
+ _ZTSSt21__ctype_abstract_baseIcE at GLIBCXX_3.4 4.1.1
+ _ZTSSt21__ctype_abstract_baseIwE at GLIBCXX_3.4 4.1.1
+ _ZTSSt23__codecvt_abstract_baseIcc11__mbstate_tE at GLIBCXX_3.4 4.1.1
+ _ZTSSt23__codecvt_abstract_baseIwc11__mbstate_tE at GLIBCXX_3.4 4.1.1
+ _ZTSSt25__codecvt_utf8_utf16_baseIDiE at GLIBCXX_3.4.21 5
+ _ZTSSt25__codecvt_utf8_utf16_baseIDsE at GLIBCXX_3.4.21 5
+ _ZTSSt25__codecvt_utf8_utf16_baseIwE at GLIBCXX_3.4.21 5
+ _ZTSSt5ctypeIcE at GLIBCXX_3.4 4.1.1
+ _ZTSSt5ctypeIwE at GLIBCXX_3.4 4.1.1
+ _ZTSSt7codecvtIDic11__mbstate_tE at GLIBCXX_3.4.21 5
+ _ZTSSt7codecvtIDsc11__mbstate_tE at GLIBCXX_3.4.21 5
+ _ZTSSt7codecvtIcc11__mbstate_tE at GLIBCXX_3.4 4.1.1
+ _ZTSSt7codecvtIwc11__mbstate_tE at GLIBCXX_3.4 4.1.1
+ _ZTSSt7collateIcE at GLIBCXX_3.4 4.1.1
+ _ZTSSt7collateIwE at GLIBCXX_3.4 4.1.1
+ _ZTSSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE at GLIBCXX_3.4 4.1.1
+ _ZTSSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE at GLIBCXX_3.4 4.1.1
+ _ZTSSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE at GLIBCXX_3.4 4.1.1
+ _ZTSSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE at GLIBCXX_3.4 4.1.1
+ _ZTSSt8bad_cast at GLIBCXX_3.4 4.1.1
+ _ZTSSt8ios_base at GLIBCXX_3.4 4.1.1
+ _ZTSSt8messagesIcE at GLIBCXX_3.4 4.1.1
+ _ZTSSt8messagesIwE at GLIBCXX_3.4 4.1.1
+ _ZTSSt8numpunctIcE at GLIBCXX_3.4 4.1.1
+ _ZTSSt8numpunctIwE at GLIBCXX_3.4 4.1.1
+ _ZTSSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE at GLIBCXX_3.4 4.1.1
+ _ZTSSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE at GLIBCXX_3.4 4.1.1
+ _ZTSSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE at GLIBCXX_3.4 4.1.1
+ _ZTSSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE at GLIBCXX_3.4 4.1.1
+ _ZTSSt9bad_alloc at GLIBCXX_3.4 4.1.1
+ _ZTSSt9basic_iosIcSt11char_traitsIcEE at GLIBCXX_3.4 4.1.1
+ _ZTSSt9basic_iosIwSt11char_traitsIwEE at GLIBCXX_3.4 4.1.1
+ _ZTSSt9exception at GLIBCXX_3.4 4.1.1
+ _ZTSSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE at GLIBCXX_3.4 4.1.1
+ _ZTSSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE at GLIBCXX_3.4 4.1.1
+ _ZTSSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE at GLIBCXX_3.4 4.1.1
+ _ZTSSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE at GLIBCXX_3.4 4.1.1
+ _ZTSSt9strstream at GLIBCXX_3.4 4.1.1
+ _ZTSSt9time_base at GLIBCXX_3.4 4.1.1
+ _ZTSSt9type_info at GLIBCXX_3.4 4.1.1
+ _ZTSa at CXXABI_1.3 4.1.1
+ _ZTSb at CXXABI_1.3 4.1.1
+ _ZTSc at CXXABI_1.3 4.1.1
+ _ZTSd at CXXABI_1.3 4.1.1
+ _ZTSe at CXXABI_1.3 4.1.1
+ _ZTSf at CXXABI_1.3 4.1.1
+ _ZTSh at CXXABI_1.3 4.1.1
+ _ZTSi at CXXABI_1.3 4.1.1
+ _ZTSj at CXXABI_1.3 4.1.1
+ _ZTSl at CXXABI_1.3 4.1.1
+ _ZTSm at CXXABI_1.3 4.1.1
+ _ZTSs at CXXABI_1.3 4.1.1
+ _ZTSt at CXXABI_1.3 4.1.1
+ _ZTSv at CXXABI_1.3 4.1.1
+ _ZTSw at CXXABI_1.3 4.1.1
+ _ZTSx at CXXABI_1.3 4.1.1
+ _ZTSy at CXXABI_1.3 4.1.1
+ _ZTTSd at GLIBCXX_3.4 4.1.1
+ _ZTTSi at GLIBCXX_3.4 4.1.1
+ _ZTTSo at GLIBCXX_3.4 4.1.1
+ _ZTTSt10istrstream at GLIBCXX_3.4 4.1.1
+ _ZTTSt10ostrstream at GLIBCXX_3.4 4.1.1
+ _ZTTSt13basic_fstreamIcSt11char_traitsIcEE at GLIBCXX_3.4 4.1.1
+ _ZTTSt13basic_fstreamIwSt11char_traitsIwEE at GLIBCXX_3.4 4.1.1
+ _ZTTSt13basic_istreamIwSt11char_traitsIwEE at GLIBCXX_3.4 4.1.1
+ _ZTTSt13basic_ostreamIwSt11char_traitsIwEE at GLIBCXX_3.4 4.1.1
+ _ZTTSt14basic_ifstreamIcSt11char_traitsIcEE at GLIBCXX_3.4 4.1.1
+ _ZTTSt14basic_ifstreamIwSt11char_traitsIwEE at GLIBCXX_3.4 4.1.1
+ _ZTTSt14basic_iostreamIwSt11char_traitsIwEE at GLIBCXX_3.4 4.1.1
+ _ZTTSt14basic_ofstreamIcSt11char_traitsIcEE at GLIBCXX_3.4 4.1.1
+ _ZTTSt14basic_ofstreamIwSt11char_traitsIwEE at GLIBCXX_3.4 4.1.1
+ _ZTTSt18basic_stringstreamIcSt11char_traitsIcESaIcEE at GLIBCXX_3.4 4.1.1
+ _ZTTSt18basic_stringstreamIwSt11char_traitsIwESaIwEE at GLIBCXX_3.4 4.1.1
+ _ZTTSt19basic_istringstreamIcSt11char_traitsIcESaIcEE at GLIBCXX_3.4 4.1.1
+ _ZTTSt19basic_istringstreamIwSt11char_traitsIwESaIwEE at GLIBCXX_3.4 4.1.1
+ _ZTTSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE at GLIBCXX_3.4 4.1.1
+ _ZTTSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE at GLIBCXX_3.4 4.1.1
+ _ZTTSt9strstream at GLIBCXX_3.4 4.1.1
+ _ZTVN10__cxxabiv116__enum_type_infoE at CXXABI_1.3 4.1.1
+ _ZTVN10__cxxabiv117__array_type_infoE at CXXABI_1.3 4.1.1
+ _ZTVN10__cxxabiv117__class_type_infoE at CXXABI_1.3 4.1.1
+ _ZTVN10__cxxabiv117__pbase_type_infoE at CXXABI_1.3 4.1.1
+ _ZTVN10__cxxabiv119__pointer_type_infoE at CXXABI_1.3 4.1.1
+ _ZTVN10__cxxabiv120__function_type_infoE at CXXABI_1.3 4.1.1
+ _ZTVN10__cxxabiv120__si_class_type_infoE at CXXABI_1.3 4.1.1
+ _ZTVN10__cxxabiv121__vmi_class_type_infoE at CXXABI_1.3 4.1.1
+ _ZTVN10__cxxabiv123__fundamental_type_infoE at CXXABI_1.3 4.1.1
+ _ZTVN10__cxxabiv129__pointer_to_member_type_infoE at CXXABI_1.3 4.1.1
+ _ZTVN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEEE at GLIBCXX_3.4 4.1.1
+ _ZTVN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEEE at GLIBCXX_3.4 4.1.1
+ _ZTVNSt3_V214error_categoryE at GLIBCXX_3.4.21 5
+ _ZTVNSt6locale5facetE at GLIBCXX_3.4 4.1.1
+ _ZTVNSt8ios_base7failureE at GLIBCXX_3.4 4.1.1
+ _ZTVSd at GLIBCXX_3.4 4.1.1
+ _ZTVSi at GLIBCXX_3.4 4.1.1
+ _ZTVSo at GLIBCXX_3.4 4.1.1
+ _ZTVSt10bad_typeid at GLIBCXX_3.4 4.1.1
+ _ZTVSt10istrstream at GLIBCXX_3.4 4.1.1
+ _ZTVSt10lock_error at GLIBCXX_3.4.11 4.4.0
+ _ZTVSt10moneypunctIcLb0EE at GLIBCXX_3.4 4.1.1
+ _ZTVSt10moneypunctIcLb1EE at GLIBCXX_3.4 4.1.1
+ _ZTVSt10moneypunctIwLb0EE at GLIBCXX_3.4 4.1.1
+ _ZTVSt10moneypunctIwLb1EE at GLIBCXX_3.4 4.1.1
+ _ZTVSt10ostrstream at GLIBCXX_3.4 4.1.1
+ _ZTVSt11__timepunctIcE at GLIBCXX_3.4 4.1.1
+ _ZTVSt11__timepunctIwE at GLIBCXX_3.4 4.1.1
+ _ZTVSt11logic_error at GLIBCXX_3.4 4.1.1
+ _ZTVSt11range_error at GLIBCXX_3.4 4.1.1
+ _ZTVSt11regex_error at GLIBCXX_3.4.15 4.6
+ _ZTVSt12bad_weak_ptr at GLIBCXX_3.4.15 4.6
+ _ZTVSt12ctype_bynameIcE at GLIBCXX_3.4 4.1.1
+ _ZTVSt12ctype_bynameIwE at GLIBCXX_3.4 4.1.1
+ _ZTVSt12domain_error at GLIBCXX_3.4 4.1.1
+ _ZTVSt12future_error at GLIBCXX_3.4.14 4.5
+ _ZTVSt12length_error at GLIBCXX_3.4 4.1.1
+ _ZTVSt12out_of_range at GLIBCXX_3.4 4.1.1
+ _ZTVSt12strstreambuf at GLIBCXX_3.4 4.1.1
+ _ZTVSt12system_error at GLIBCXX_3.4.11 4.4.0
+ _ZTVSt13bad_exception at GLIBCXX_3.4 4.1.1
+ _ZTVSt13basic_filebufIcSt11char_traitsIcEE at GLIBCXX_3.4 4.1.1
+ _ZTVSt13basic_filebufIwSt11char_traitsIwEE at GLIBCXX_3.4 4.1.1
+ _ZTVSt13basic_fstreamIcSt11char_traitsIcEE at GLIBCXX_3.4 4.1.1
+ _ZTVSt13basic_fstreamIwSt11char_traitsIwEE at GLIBCXX_3.4 4.1.1
+ _ZTVSt13basic_istreamIwSt11char_traitsIwEE at GLIBCXX_3.4 4.1.1
+ _ZTVSt13basic_ostreamIwSt11char_traitsIwEE at GLIBCXX_3.4 4.1.1
+ _ZTVSt13runtime_error at GLIBCXX_3.4 4.1.1
+ _ZTVSt14basic_ifstreamIcSt11char_traitsIcEE at GLIBCXX_3.4 4.1.1
+ _ZTVSt14basic_ifstreamIwSt11char_traitsIwEE at GLIBCXX_3.4 4.1.1
+ _ZTVSt14basic_iostreamIwSt11char_traitsIwEE at GLIBCXX_3.4 4.1.1
+ _ZTVSt14basic_ofstreamIcSt11char_traitsIcEE at GLIBCXX_3.4 4.1.1
+ _ZTVSt14basic_ofstreamIwSt11char_traitsIwEE at GLIBCXX_3.4 4.1.1
+ _ZTVSt14codecvt_bynameIcc11__mbstate_tE at GLIBCXX_3.4 4.1.1
+ _ZTVSt14codecvt_bynameIwc11__mbstate_tE at GLIBCXX_3.4 4.1.1
+ _ZTVSt14collate_bynameIcE at GLIBCXX_3.4 4.1.1
+ _ZTVSt14collate_bynameIwE at GLIBCXX_3.4 4.1.1
+ _ZTVSt14error_category at GLIBCXX_3.4.11 4.4.0
+ _ZTVSt14overflow_error at GLIBCXX_3.4 4.1.1
+ _ZTVSt15basic_streambufIcSt11char_traitsIcEE at GLIBCXX_3.4 4.1.1
+ _ZTVSt15basic_streambufIwSt11char_traitsIwEE at GLIBCXX_3.4 4.1.1
+ _ZTVSt15basic_stringbufIcSt11char_traitsIcESaIcEE at GLIBCXX_3.4 4.1.1
+ _ZTVSt15basic_stringbufIwSt11char_traitsIwESaIwEE at GLIBCXX_3.4 4.1.1
+ _ZTVSt15messages_bynameIcE at GLIBCXX_3.4 4.1.1
+ _ZTVSt15messages_bynameIwE at GLIBCXX_3.4 4.1.1
+ _ZTVSt15numpunct_bynameIcE at GLIBCXX_3.4 4.1.1
+ _ZTVSt15numpunct_bynameIwE at GLIBCXX_3.4 4.1.1
+ _ZTVSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE at GLIBCXX_3.4 4.1.1
+ _ZTVSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE at GLIBCXX_3.4 4.1.1
+ _ZTVSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE at GLIBCXX_3.4 4.1.1
+ _ZTVSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE at GLIBCXX_3.4 4.1.1
+ _ZTVSt15underflow_error at GLIBCXX_3.4 4.1.1
+ _ZTVSt16bad_array_length at CXXABI_1.3.8 4.9
+ _ZTVSt16invalid_argument at GLIBCXX_3.4 4.1.1
+ _ZTVSt17bad_function_call at GLIBCXX_3.4.15 4.6
+ _ZTVSt17moneypunct_bynameIcLb0EE at GLIBCXX_3.4 4.1.1
+ _ZTVSt17moneypunct_bynameIcLb1EE at GLIBCXX_3.4 4.1.1
+ _ZTVSt17moneypunct_bynameIwLb0EE at GLIBCXX_3.4 4.1.1
+ _ZTVSt17moneypunct_bynameIwLb1EE at GLIBCXX_3.4 4.1.1
+ _ZTVSt18basic_stringstreamIcSt11char_traitsIcESaIcEE at GLIBCXX_3.4 4.1.1
+ _ZTVSt18basic_stringstreamIwSt11char_traitsIwESaIwEE at GLIBCXX_3.4 4.1.1
+ _ZTVSt19__codecvt_utf8_baseIDiE at GLIBCXX_3.4.21 5
+ _ZTVSt19__codecvt_utf8_baseIDsE at GLIBCXX_3.4.21 5
+ _ZTVSt19__codecvt_utf8_baseIwE at GLIBCXX_3.4.21 5
+ _ZTVSt19basic_istringstreamIcSt11char_traitsIcESaIcEE at GLIBCXX_3.4 4.1.1
+ _ZTVSt19basic_istringstreamIwSt11char_traitsIwESaIwEE at GLIBCXX_3.4 4.1.1
+ _ZTVSt19basic_ostringstreamIcSt11char_traitsIcESaIcEE at GLIBCXX_3.4 4.1.1
+ _ZTVSt19basic_ostringstreamIwSt11char_traitsIwESaIwEE at GLIBCXX_3.4 4.1.1
+ _ZTVSt20__codecvt_utf16_baseIDiE at GLIBCXX_3.4.21 5
+ _ZTVSt20__codecvt_utf16_baseIDsE at GLIBCXX_3.4.21 5
+ _ZTVSt20__codecvt_utf16_baseIwE at GLIBCXX_3.4.21 5
+ _ZTVSt20bad_array_new_length at CXXABI_1.3.8 4.9
+ _ZTVSt21__ctype_abstract_baseIcE at GLIBCXX_3.4 4.1.1
+ _ZTVSt21__ctype_abstract_baseIwE at GLIBCXX_3.4 4.1.1
+ _ZTVSt23__codecvt_abstract_baseIcc11__mbstate_tE at GLIBCXX_3.4 4.1.1
+ _ZTVSt23__codecvt_abstract_baseIwc11__mbstate_tE at GLIBCXX_3.4 4.1.1
+ _ZTVSt25__codecvt_utf8_utf16_baseIDiE at GLIBCXX_3.4.21 5
+ _ZTVSt25__codecvt_utf8_utf16_baseIDsE at GLIBCXX_3.4.21 5
+ _ZTVSt25__codecvt_utf8_utf16_baseIwE at GLIBCXX_3.4.21 5
+ _ZTVSt5ctypeIcE at GLIBCXX_3.4 4.1.1
+ _ZTVSt5ctypeIwE at GLIBCXX_3.4 4.1.1
+ _ZTVSt7codecvtIDic11__mbstate_tE at GLIBCXX_3.4.21 5
+ _ZTVSt7codecvtIDsc11__mbstate_tE at GLIBCXX_3.4.21 5
+ _ZTVSt7codecvtIcc11__mbstate_tE at GLIBCXX_3.4 4.1.1
+ _ZTVSt7codecvtIwc11__mbstate_tE at GLIBCXX_3.4 4.1.1
+ _ZTVSt7collateIcE at GLIBCXX_3.4 4.1.1
+ _ZTVSt7collateIwE at GLIBCXX_3.4 4.1.1
+ _ZTVSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE at GLIBCXX_3.4 4.1.1
+ _ZTVSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE at GLIBCXX_3.4 4.1.1
+ _ZTVSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE at GLIBCXX_3.4 4.1.1
+ _ZTVSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE at GLIBCXX_3.4 4.1.1
+ _ZTVSt8bad_cast at GLIBCXX_3.4 4.1.1
+ _ZTVSt8ios_base at GLIBCXX_3.4 4.1.1
+ _ZTVSt8messagesIcE at GLIBCXX_3.4 4.1.1
+ _ZTVSt8messagesIwE at GLIBCXX_3.4 4.1.1
+ _ZTVSt8numpunctIcE at GLIBCXX_3.4 4.1.1
+ _ZTVSt8numpunctIwE at GLIBCXX_3.4 4.1.1
+ _ZTVSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE at GLIBCXX_3.4 4.1.1
+ _ZTVSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE at GLIBCXX_3.4 4.1.1
+ _ZTVSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE at GLIBCXX_3.4 4.1.1
+ _ZTVSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE at GLIBCXX_3.4 4.1.1
+ _ZTVSt9bad_alloc at GLIBCXX_3.4 4.1.1
+ _ZTVSt9basic_iosIcSt11char_traitsIcEE at GLIBCXX_3.4 4.1.1
+ _ZTVSt9basic_iosIwSt11char_traitsIwEE at GLIBCXX_3.4 4.1.1
+ _ZTVSt9exception at GLIBCXX_3.4 4.1.1
+ _ZTVSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE at GLIBCXX_3.4 4.1.1
+ _ZTVSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE at GLIBCXX_3.4 4.1.1
+ _ZTVSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE at GLIBCXX_3.4 4.1.1
+ _ZTVSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE at GLIBCXX_3.4 4.1.1
+ _ZTVSt9strstream at GLIBCXX_3.4 4.1.1
+ _ZTVSt9type_info at GLIBCXX_3.4 4.1.1
+ _ZdaPv at GLIBCXX_3.4 4.1.1
+ _ZdaPvRKSt9nothrow_t at GLIBCXX_3.4 4.1.1
+ _ZdlPv at GLIBCXX_3.4 4.1.1
+ _ZdlPvRKSt9nothrow_t at GLIBCXX_3.4 4.1.1
+ __atomic_flag_for_address at GLIBCXX_3.4.11 4.4.0
+ __atomic_flag_wait_explicit at GLIBCXX_3.4.11 4.4.0
+ __cxa_allocate_dependent_exception at CXXABI_1.3.6 4.7
+ __cxa_allocate_exception at CXXABI_1.3 4.1.1
+ __cxa_bad_cast at CXXABI_1.3 4.1.1
+ __cxa_bad_typeid at CXXABI_1.3 4.1.1
+ __cxa_begin_catch at CXXABI_1.3 4.1.1
+ __cxa_call_unexpected at CXXABI_1.3 4.1.1
+ __cxa_current_exception_type at CXXABI_1.3 4.1.1
+ __cxa_deleted_virtual at CXXABI_1.3.6 4.7
+ __cxa_demangle at CXXABI_1.3 4.1.1
+ __cxa_end_catch at CXXABI_1.3 4.1.1
+ __cxa_free_dependent_exception at CXXABI_1.3.6 4.7
+ __cxa_free_exception at CXXABI_1.3 4.1.1
+ __cxa_get_exception_ptr at CXXABI_1.3.1 4.1.1
+ __cxa_get_globals at CXXABI_1.3 4.1.1
+ __cxa_get_globals_fast at CXXABI_1.3 4.1.1
+ __cxa_guard_abort at CXXABI_1.3 4.1.1
+ __cxa_guard_acquire at CXXABI_1.3 4.1.1
+ __cxa_guard_release at CXXABI_1.3 4.1.1
+ __cxa_pure_virtual at CXXABI_1.3 4.1.1
+ __cxa_rethrow at CXXABI_1.3 4.1.1
+ __cxa_thread_atexit at CXXABI_1.3.7 4.8
+ __cxa_throw at CXXABI_1.3 4.1.1
+ __cxa_throw_bad_array_length at CXXABI_1.3.8 4.9
+ __cxa_throw_bad_array_new_length at CXXABI_1.3.8 4.9
+ __cxa_tm_cleanup at CXXABI_TM_1 4.7
+ __cxa_vec_cctor at CXXABI_1.3 4.1.1
+ __cxa_vec_cleanup at CXXABI_1.3 4.1.1
+ __cxa_vec_ctor at CXXABI_1.3 4.1.1
+ __cxa_vec_delete2 at CXXABI_1.3 4.1.1
+ __cxa_vec_delete3 at CXXABI_1.3 4.1.1
+ __cxa_vec_delete at CXXABI_1.3 4.1.1
+ __cxa_vec_dtor at CXXABI_1.3 4.1.1
+ __cxa_vec_new2 at CXXABI_1.3 4.1.1
+ __cxa_vec_new3 at CXXABI_1.3 4.1.1
+ __cxa_vec_new at CXXABI_1.3 4.1.1
+ __dynamic_cast at CXXABI_1.3 4.1.1
+ __once_proxy at GLIBCXX_3.4.11 4.4.0
+ atomic_flag_clear_explicit at GLIBCXX_3.4.11 4.4.0
+ atomic_flag_test_and_set_explicit at GLIBCXX_3.4.11 4.4.0
diff --git a/debian/libstdc++6.symbols.common.cxx11 b/debian/libstdc++6.symbols.common.cxx11
new file mode 100644
index 0000000..83071bb
--- /dev/null
+++ b/debian/libstdc++6.symbols.common.cxx11
@@ -0,0 +1,880 @@
+ (optional=abi_c++11)_ZGVNSt7__cxx1110moneypunctIcLb0EE2idE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZGVNSt7__cxx1110moneypunctIcLb1EE2idE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZGVNSt7__cxx1110moneypunctIwLb0EE2idE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZGVNSt7__cxx1110moneypunctIwLb1EE2idE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZGVNSt7__cxx117collateIcE2idE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZGVNSt7__cxx117collateIwE2idE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZGVNSt7__cxx118messagesIcE2idE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZGVNSt7__cxx118messagesIwE2idE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZGVNSt7__cxx118numpunctIcE2idE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZGVNSt7__cxx118numpunctIwE2idE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZGVNSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZGVNSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZGVNSt7__cxx119money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZGVNSt7__cxx119money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZGVNSt7__cxx119money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZGVNSt7__cxx119money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt3_V214error_category10_M_messageB5cxx11Ei at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt3tr14hashINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclES6_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt3tr14hashINSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEEEclES6_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt6locale4nameB5cxx11Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIcLb0EE10neg_formatEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIcLb0EE10pos_formatEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIcLb0EE11curr_symbolEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIcLb0EE11do_groupingEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIcLb0EE11frac_digitsEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIcLb0EE13decimal_pointEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIcLb0EE13do_neg_formatEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIcLb0EE13do_pos_formatEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIcLb0EE13negative_signEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIcLb0EE13positive_signEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIcLb0EE13thousands_sepEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIcLb0EE14do_curr_symbolEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIcLb0EE14do_frac_digitsEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIcLb0EE16do_decimal_pointEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIcLb0EE16do_negative_signEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIcLb0EE16do_positive_signEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIcLb0EE16do_thousands_sepEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIcLb0EE8groupingEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIcLb1EE10neg_formatEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIcLb1EE10pos_formatEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIcLb1EE11curr_symbolEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIcLb1EE11do_groupingEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIcLb1EE11frac_digitsEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIcLb1EE13decimal_pointEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIcLb1EE13do_neg_formatEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIcLb1EE13do_pos_formatEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIcLb1EE13negative_signEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIcLb1EE13positive_signEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIcLb1EE13thousands_sepEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIcLb1EE14do_curr_symbolEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIcLb1EE14do_frac_digitsEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIcLb1EE16do_decimal_pointEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIcLb1EE16do_negative_signEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIcLb1EE16do_positive_signEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIcLb1EE16do_thousands_sepEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIcLb1EE8groupingEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIwLb0EE10neg_formatEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIwLb0EE10pos_formatEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIwLb0EE11curr_symbolEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIwLb0EE11do_groupingEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIwLb0EE11frac_digitsEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIwLb0EE13decimal_pointEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIwLb0EE13do_neg_formatEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIwLb0EE13do_pos_formatEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIwLb0EE13negative_signEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIwLb0EE13positive_signEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIwLb0EE13thousands_sepEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIwLb0EE14do_curr_symbolEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIwLb0EE14do_frac_digitsEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIwLb0EE16do_decimal_pointEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIwLb0EE16do_negative_signEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIwLb0EE16do_positive_signEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIwLb0EE16do_thousands_sepEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIwLb0EE8groupingEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIwLb1EE10neg_formatEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIwLb1EE10pos_formatEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIwLb1EE11curr_symbolEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIwLb1EE11do_groupingEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIwLb1EE11frac_digitsEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIwLb1EE13decimal_pointEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIwLb1EE13do_neg_formatEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIwLb1EE13do_pos_formatEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIwLb1EE13negative_signEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIwLb1EE13positive_signEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIwLb1EE13thousands_sepEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIwLb1EE14do_curr_symbolEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIwLb1EE14do_frac_digitsEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIwLb1EE16do_decimal_pointEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIwLb1EE16do_negative_signEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIwLb1EE16do_positive_signEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIwLb1EE16do_thousands_sepEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1110moneypunctIwLb1EE8groupingEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_disjunctEPKc at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_M_local_dataEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13get_allocatorEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE16_M_get_allocatorEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE3endEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4backEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4cendEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4dataEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4rendEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5beginEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5crendEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5frontEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6cbeginEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6rbeginEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_M_dataEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7compareEPKc at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7compareERKS4_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7crbeginEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8max_sizeEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE11_M_is_localEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE13_M_local_dataEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE13get_allocatorEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE16_M_get_allocatorEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE3endEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE4backEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE4cendEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE4dataEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE4rendEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE4sizeEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE5beginEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE5c_strEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE5crendEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE5emptyEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE5frontEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6cbeginEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6lengthEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6rbeginEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7_M_dataEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7compareEPKw at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7compareERKS4_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7crbeginEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8capacityEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8max_sizeEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE3strEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEE3strEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE5rdbufEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEE3strEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEE5rdbufEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEE3strEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEE5rdbufEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEE3strEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEE5rdbufEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEE5rdbufEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEE3strEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEE5rdbufEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx117collateIcE10_M_compareEPKcS3_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx117collateIcE10do_compareEPKcS3_S3_S3_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx117collateIcE12do_transformEPKcS3_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx117collateIcE4hashEPKcS3_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx117collateIcE7compareEPKcS3_S3_S3_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx117collateIcE7do_hashEPKcS3_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx117collateIcE9transformEPKcS3_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx117collateIwE10_M_compareEPKwS3_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx117collateIwE10do_compareEPKwS3_S3_S3_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx117collateIwE12do_transformEPKwS3_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx117collateIwE4hashEPKwS3_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx117collateIwE7compareEPKwS3_S3_S3_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx117collateIwE7do_hashEPKwS3_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx117collateIwE9transformEPKwS3_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx118messagesIcE18_M_convert_to_charERKNS_12basic_stringIcSt11char_traitsIcESaIcEEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx118messagesIcE20_M_convert_from_charEPc at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx118messagesIcE3getEiiiRKNS_12basic_stringIcSt11char_traitsIcESaIcEEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx118messagesIcE4openERKNS_12basic_stringIcSt11char_traitsIcESaIcEEERKSt6locale at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx118messagesIcE4openERKNS_12basic_stringIcSt11char_traitsIcESaIcEEERKSt6localePKc at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx118messagesIcE5closeEi at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx118messagesIcE6do_getEiiiRKNS_12basic_stringIcSt11char_traitsIcESaIcEEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx118messagesIcE7do_openERKNS_12basic_stringIcSt11char_traitsIcESaIcEEERKSt6locale at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx118messagesIcE8do_closeEi at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx118messagesIwE18_M_convert_to_charERKNS_12basic_stringIwSt11char_traitsIwESaIwEEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx118messagesIwE20_M_convert_from_charEPc at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx118messagesIwE3getEiiiRKNS_12basic_stringIwSt11char_traitsIwESaIwEEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx118messagesIwE4openERKNS_12basic_stringIcSt11char_traitsIcESaIcEEERKSt6locale at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx118messagesIwE4openERKNS_12basic_stringIcSt11char_traitsIcESaIcEEERKSt6localePKc at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx118messagesIwE5closeEi at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx118messagesIwE6do_getEiiiRKNS_12basic_stringIwSt11char_traitsIwESaIwEEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx118messagesIwE7do_openERKNS_12basic_stringIcSt11char_traitsIcESaIcEEERKSt6locale at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx118messagesIwE8do_closeEi at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx118numpunctIcE11do_groupingEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx118numpunctIcE11do_truenameEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx118numpunctIcE12do_falsenameEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx118numpunctIcE13decimal_pointEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx118numpunctIcE13thousands_sepEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx118numpunctIcE16do_decimal_pointEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx118numpunctIcE16do_thousands_sepEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx118numpunctIcE8groupingEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx118numpunctIcE8truenameEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx118numpunctIcE9falsenameEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx118numpunctIwE11do_groupingEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx118numpunctIwE11do_truenameEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx118numpunctIwE12do_falsenameEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx118numpunctIwE13decimal_pointEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx118numpunctIwE13thousands_sepEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx118numpunctIwE16do_decimal_pointEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx118numpunctIwE16do_thousands_sepEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx118numpunctIwE8groupingEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx118numpunctIwE8truenameEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx118numpunctIwE9falsenameEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10date_orderEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11do_get_dateES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11do_get_timeES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11do_get_yearES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE11get_weekdayES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE13do_date_orderEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE13get_monthnameES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14do_get_weekdayES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE16do_get_monthnameES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE21_M_extract_via_formatES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tmPKc at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tmPKcSD_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tmcc at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tmcc at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8get_dateES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8get_timeES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8get_yearES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10date_orderEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11do_get_dateES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11do_get_timeES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11do_get_yearES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE11get_weekdayES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE13do_date_orderEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE13get_monthnameES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14do_get_weekdayES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE16do_get_monthnameES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE21_M_extract_via_formatES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tmPKw at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tmPKwSD_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tmcc at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tmcc at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8get_dateES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8get_timeES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8get_yearES4_S4_RSt8ios_baseRSt12_Ios_IostateP2tm at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx119money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb0EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRNS_12basic_stringIcS3_SaIcEEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx119money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb1EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRNS_12basic_stringIcS3_SaIcEEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx119money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRNS_12basic_stringIcS3_SaIcEEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx119money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRNS_12basic_stringIcS3_SaIcEEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx119money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb0EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRNS_12basic_stringIcS2_IcESaIcEEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx119money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb1EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRNS_12basic_stringIcS2_IcESaIcEEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx119money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRNS_12basic_stringIwS3_SaIwEEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx119money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRNS_12basic_stringIwS3_SaIwEEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx119money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_bRSt8ios_basecRKNS_12basic_stringIcS3_SaIcEEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx119money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_bRSt8ios_basecRKNS_12basic_stringIcS3_SaIcEEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx119money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb0EEES4_S4_RSt8ios_basecRKNS_12basic_stringIcS3_SaIcEEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx119money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb1EEES4_S4_RSt8ios_basecRKNS_12basic_stringIcS3_SaIcEEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx119money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_bRSt8ios_basewRKNS_12basic_stringIwS3_SaIwEEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx119money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_bRSt8ios_basewRKNS_12basic_stringIwS3_SaIwEEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx119money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb0EEES4_S4_RSt8ios_basewRKNS_12basic_stringIwS3_SaIwEEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx119money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb1EEES4_S4_RSt8ios_basewRKNS_12basic_stringIwS3_SaIwEEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt8ios_base7failureB5cxx114whatEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt11logic_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt11logic_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt11range_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt11range_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt12domain_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt12domain_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt12length_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt12length_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt12out_of_rangeC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt12out_of_rangeC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt13basic_filebufIcSt11char_traitsIcEE4openERKNSt7__cxx1112basic_stringIcS1_SaIcEEESt13_Ios_Openmode at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt13basic_filebufIwSt11char_traitsIwEE4openERKNSt7__cxx1112basic_stringIcS0_IcESaIcEEESt13_Ios_Openmode at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt13basic_fstreamIcSt11char_traitsIcEE4openERKNSt7__cxx1112basic_stringIcS1_SaIcEEESt13_Ios_Openmode at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt13basic_fstreamIcSt11char_traitsIcEEC1ERKNSt7__cxx1112basic_stringIcS1_SaIcEEESt13_Ios_Openmode at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt13basic_fstreamIcSt11char_traitsIcEEC2ERKNSt7__cxx1112basic_stringIcS1_SaIcEEESt13_Ios_Openmode at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt13basic_fstreamIwSt11char_traitsIwEE4openERKNSt7__cxx1112basic_stringIcS0_IcESaIcEEESt13_Ios_Openmode at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt13basic_fstreamIwSt11char_traitsIwEEC1ERKNSt7__cxx1112basic_stringIcS0_IcESaIcEEESt13_Ios_Openmode at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt13basic_fstreamIwSt11char_traitsIwEEC2ERKNSt7__cxx1112basic_stringIcS0_IcESaIcEEESt13_Ios_Openmode at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC2ERKNSt7__cxx1112basic_stringIcS1_SaIcEEESt13_Ios_Openmode at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC2ERKNSt7__cxx1112basic_stringIcS0_IcESaIcEEESt13_Ios_Openmode at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC2ERKNSt7__cxx1112basic_stringIcS1_SaIcEEESt13_Ios_Openmode at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC2ERKNSt7__cxx1112basic_stringIcS0_IcESaIcEEESt13_Ios_Openmode at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt14overflow_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt14overflow_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt15underflow_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt15underflow_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt16invalid_argumentC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt16invalid_argumentC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIcLb0EE24_M_initialize_moneypunctEP15__locale_structPKc at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIcLb0EE2idE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIcLb0EE4intlE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIcLb0EED0Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIcLb0EED1Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIcLb0EED2Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIcLb1EE24_M_initialize_moneypunctEP15__locale_structPKc at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIcLb1EE2idE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIcLb1EE4intlE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIcLb1EED0Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIcLb1EED1Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIcLb1EED2Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIwLb0EE24_M_initialize_moneypunctEP15__locale_structPKc at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIwLb0EE2idE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIwLb0EE4intlE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIwLb0EED0Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIwLb0EED1Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIwLb0EED2Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIwLb1EE24_M_initialize_moneypunctEP15__locale_structPKc at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIwLb1EE2idE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIwLb1EE4intlE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIwLb1EED0Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIwLb1EED1Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1110moneypunctIwLb1EED2Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_disposeEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderC1EPcRKS3_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderC2EPcRKS3_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIN9__gnu_cxx17__normal_iteratorIPKcS4_EEEEvT_SB_St20forward_iterator_tag at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIN9__gnu_cxx17__normal_iteratorIPcS4_EEEEvT_SA_St20forward_iterator_tag at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPKcEEvT_S8_St20forward_iterator_tag at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructIPcEEvT_S7_St20forward_iterator_tag at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_M_local_dataEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_S_copy_charsEPcN9__gnu_cxx17__normal_iteratorIPKcS4_EESA_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_S_copy_charsEPcN9__gnu_cxx17__normal_iteratorIS5_S4_EES8_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_S_copy_charsEPcPKcS7_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_S_copy_charsEPcS5_S5_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13shrink_to_fitEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE16_M_get_allocatorEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE3endEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4backEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4nposE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4rendEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4swapERS4_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5beginEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5clearEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5eraseEN9__gnu_cxx17__normal_iteratorIPKcS4_EE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5eraseEN9__gnu_cxx17__normal_iteratorIPKcS4_EES9_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5eraseEN9__gnu_cxx17__normal_iteratorIPcS4_EE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5eraseEN9__gnu_cxx17__normal_iteratorIPcS4_EES8_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5frontEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEPKc at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendERKS4_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendESt16initializer_listIcE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6assignEOS4_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6assignEPKc at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6assignERKS4_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6assignESt16initializer_listIcE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6insertEN9__gnu_cxx17__normal_iteratorIPKcS4_EEc at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6insertEN9__gnu_cxx17__normal_iteratorIPcS4_EESt16initializer_listIcE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6insertEN9__gnu_cxx17__normal_iteratorIPcS4_EEc at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6insertIN9__gnu_cxx17__normal_iteratorIPcS4_EEEEvS9_T_SA_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6rbeginEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_M_dataEPc at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEN9__gnu_cxx17__normal_iteratorIPKcS4_EES9_NS6_IPcS4_EESB_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEN9__gnu_cxx17__normal_iteratorIPKcS4_EES9_PcSA_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEN9__gnu_cxx17__normal_iteratorIPKcS4_EES9_RKS4_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEN9__gnu_cxx17__normal_iteratorIPKcS4_EES9_S8_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEN9__gnu_cxx17__normal_iteratorIPKcS4_EES9_S8_S8_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEN9__gnu_cxx17__normal_iteratorIPKcS4_EES9_S9_S9_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEN9__gnu_cxx17__normal_iteratorIPKcS4_EES9_St16initializer_listIcE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEN9__gnu_cxx17__normal_iteratorIPcS4_EES8_NS6_IPKcS4_EESB_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEN9__gnu_cxx17__normal_iteratorIPcS4_EES8_PKc at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEN9__gnu_cxx17__normal_iteratorIPcS4_EES8_PKcSA_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEN9__gnu_cxx17__normal_iteratorIPcS4_EES8_RKS4_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEN9__gnu_cxx17__normal_iteratorIPcS4_EES8_S7_S7_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEN9__gnu_cxx17__normal_iteratorIPcS4_EES8_S8_S8_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8pop_backEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_assignERKS4_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EOS4_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EOS4_RKS3_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EPKcRKS3_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ERKS3_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ERKS4_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ERKS4_RKS3_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ESt16initializer_listIcERKS3_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1IN9__gnu_cxx17__normal_iteratorIPcS4_EEvEET_SA_RKS3_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1IPKcvEET_S8_RKS3_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1IPcvEET_S7_RKS3_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EOS4_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EOS4_RKS3_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2EPKcRKS3_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS3_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_RKS3_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ESt16initializer_listIcERKS3_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IN9__gnu_cxx17__normal_iteratorIPcS4_EEvEET_SA_RKS3_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IPKcvEET_S8_RKS3_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IPcvEET_S7_RKS3_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSESt16initializer_listIcE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEc at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLESt16initializer_listIcE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE10_M_disposeEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12_Alloc_hiderC1EPwRKS3_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12_Alloc_hiderC2EPwRKS3_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12_M_constructIN9__gnu_cxx17__normal_iteratorIPKwS4_EEEEvT_SB_St20forward_iterator_tag at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12_M_constructIN9__gnu_cxx17__normal_iteratorIPwS4_EEEEvT_SA_St20forward_iterator_tag at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12_M_constructIPKwEEvT_S8_St20forward_iterator_tag at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE12_M_constructIPwEEvT_S7_St20forward_iterator_tag at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE13_M_local_dataEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwN9__gnu_cxx17__normal_iteratorIPKwS4_EESA_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwN9__gnu_cxx17__normal_iteratorIS5_S4_EES8_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwPKwS7_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE13_S_copy_charsEPwS5_S5_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE13shrink_to_fitEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE16_M_get_allocatorEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE3endEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE4backEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE4nposE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE4rendEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE4swapERS4_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE5beginEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE5clearEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE5eraseEN9__gnu_cxx17__normal_iteratorIPKwS4_EE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE5eraseEN9__gnu_cxx17__normal_iteratorIPKwS4_EES9_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE5eraseEN9__gnu_cxx17__normal_iteratorIPwS4_EE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE5eraseEN9__gnu_cxx17__normal_iteratorIPwS4_EES8_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE5frontEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6appendEPKw at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6appendERKS4_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6appendESt16initializer_listIwE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6assignEOS4_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6assignEPKw at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6assignERKS4_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6assignESt16initializer_listIwE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPKwS4_EEw at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS4_EESt16initializer_listIwE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS4_EEw at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6insertIN9__gnu_cxx17__normal_iteratorIPwS4_EEEEvS9_T_SA_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE6rbeginEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7_M_dataEPw at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPKwS4_EES9_NS6_IPwS4_EESB_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPKwS4_EES9_PwSA_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPKwS4_EES9_RKS4_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPKwS4_EES9_S8_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPKwS4_EES9_S8_S8_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPKwS4_EES9_S9_S9_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPKwS4_EES9_St16initializer_listIwE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS4_EES8_NS6_IPKwS4_EESB_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS4_EES8_PKw at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS4_EES8_PKwSA_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS4_EES8_RKS4_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS4_EES8_S7_S7_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS4_EES8_S8_S8_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE8pop_backEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9_M_assignERKS4_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEE9push_backEw at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1EOS4_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1EOS4_RKS3_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1EPKwRKS3_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1ERKS3_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1ERKS4_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1ERKS4_RKS3_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1ESt16initializer_listIwERKS3_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1IN9__gnu_cxx17__normal_iteratorIPwS4_EEvEET_SA_RKS3_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1IPKwvEET_S8_RKS3_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC1IPwvEET_S7_RKS3_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2EOS4_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2EOS4_RKS3_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2EPKwRKS3_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2ERKS3_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2ERKS4_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2ERKS4_RKS3_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2ESt16initializer_listIwERKS3_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2IN9__gnu_cxx17__normal_iteratorIPwS4_EEvEET_SA_RKS3_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2IPKwvEET_S8_RKS3_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEC2IPwvEET_S7_RKS3_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEED1Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEED2Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEaSEOS4_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEaSEPKw at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEaSERKS4_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEaSESt16initializer_listIwE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEaSEw at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEpLEPKw at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEpLERKS4_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEpLESt16initializer_listIwE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEpLEw at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1114collate_bynameIcED0Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1114collate_bynameIcED1Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1114collate_bynameIcED2Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1114collate_bynameIwED0Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1114collate_bynameIwED1Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1114collate_bynameIwED2Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE14__xfer_bufptrsC1ERKS4_PS4_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE14__xfer_bufptrsC2ERKS4_PS4_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE14__xfer_bufptrsD1Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE14__xfer_bufptrsD2Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE15_M_update_egptrEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE17_M_stringbuf_initESt13_Ios_Openmode at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE3strERKNS_12basic_stringIcS2_S3_EE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE4swapERS4_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE8overflowEi at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE9pbackfailEi at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE9showmanycEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEE9underflowEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEEC1EOS4_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEEC1EOS4_ONS4_14__xfer_bufptrsE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEEC1ERKNS_12basic_stringIcS2_S3_EESt13_Ios_Openmode at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEEC2EOS4_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEEC2EOS4_ONS4_14__xfer_bufptrsE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEEC2ERKNS_12basic_stringIcS2_S3_EESt13_Ios_Openmode at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEED0Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEED1Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEED2Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEEaSEOS4_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEE14__xfer_bufptrsC1ERKS4_PS4_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEE14__xfer_bufptrsC2ERKS4_PS4_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEE14__xfer_bufptrsD1Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEE14__xfer_bufptrsD2Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEE15_M_update_egptrEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEE17_M_stringbuf_initESt13_Ios_Openmode at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEE3strERKNS_12basic_stringIwS2_S3_EE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEE4swapERS4_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEE7seekposESt4fposI11__mbstate_tESt13_Ios_Openmode at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEE8overflowEj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEE9pbackfailEj at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEE9showmanycEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEE9underflowEv at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEEC1EOS4_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEEC1EOS4_ONS4_14__xfer_bufptrsE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEEC1ERKNS_12basic_stringIwS2_S3_EESt13_Ios_Openmode at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEEC2EOS4_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEEC2EOS4_ONS4_14__xfer_bufptrsE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEEC2ERKNS_12basic_stringIwS2_S3_EESt13_Ios_Openmode at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEED0Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEED1Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEED2Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEEaSEOS4_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115messages_bynameIcED0Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115messages_bynameIcED1Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115messages_bynameIcED2Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115messages_bynameIwED0Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115messages_bynameIwED1Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115messages_bynameIwED2Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115numpunct_bynameIcED0Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115numpunct_bynameIcED1Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115numpunct_bynameIcED2Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115numpunct_bynameIwED0Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115numpunct_bynameIwED1Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115numpunct_bynameIwED2Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1115time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIcLb0EE4intlE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIcLb0EED0Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIcLb0EED1Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIcLb0EED2Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIcLb1EE4intlE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIcLb1EED0Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIcLb1EED1Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIcLb1EED2Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIwLb0EE4intlE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIwLb0EED0Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIwLb0EED1Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIwLb0EED2Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIwLb1EE4intlE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIwLb1EED0Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIwLb1EED1Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1117moneypunct_bynameIwLb1EED2Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strERKNS_12basic_stringIcS2_S3_EE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE4swapERS4_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1EOS4_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1ERKNS_12basic_stringIcS2_S3_EESt13_Ios_Openmode at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC2EOS4_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC2ERKNS_12basic_stringIcS2_S3_EESt13_Ios_Openmode at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED2Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEaSEOS4_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEE3strERKNS_12basic_stringIwS2_S3_EE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEE4swapERS4_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEEC1EOS4_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEEC1ERKNS_12basic_stringIwS2_S3_EESt13_Ios_Openmode at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEEC2EOS4_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEEC2ERKNS_12basic_stringIwS2_S3_EESt13_Ios_Openmode at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEED2Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEEaSEOS4_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEE3strERKNS_12basic_stringIcS2_S3_EE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEE4swapERS4_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEEC1EOS4_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEEC1ERKNS_12basic_stringIcS2_S3_EESt13_Ios_Openmode at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEEC2EOS4_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEEC2ERKNS_12basic_stringIcS2_S3_EESt13_Ios_Openmode at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEED0Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEED2Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEEaSEOS4_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEE3strERKNS_12basic_stringIwS2_S3_EE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEE4swapERS4_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEEC1EOS4_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEEC1ERKNS_12basic_stringIwS2_S3_EESt13_Ios_Openmode at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEEC2EOS4_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEEC2ERKNS_12basic_stringIwS2_S3_EESt13_Ios_Openmode at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEED0Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEED1Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEED2Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEEaSEOS4_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEE3strERKNS_12basic_stringIcS2_S3_EE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEE4swapERS4_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC1EOS4_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC1ERKNS_12basic_stringIcS2_S3_EESt13_Ios_Openmode at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC1ESt13_Ios_Openmode at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC2EOS4_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC2ERKNS_12basic_stringIcS2_S3_EESt13_Ios_Openmode at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC2ESt13_Ios_Openmode at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED0Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED2Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEaSEOS4_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEE3strERKNS_12basic_stringIwS2_S3_EE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEE4swapERS4_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEEC1EOS4_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEEC1ERKNS_12basic_stringIwS2_S3_EESt13_Ios_Openmode at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEEC1ESt13_Ios_Openmode at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEEC2EOS4_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEEC2ERKNS_12basic_stringIwS2_S3_EESt13_Ios_Openmode at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEEC2ESt13_Ios_Openmode at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEED0Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEED1Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEED2Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEEaSEOS4_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx117collateIcE2idE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx117collateIcED0Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx117collateIcED1Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx117collateIcED2Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx117collateIwE2idE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx117collateIwED0Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx117collateIwED1Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx117collateIwED2Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx118messagesIcE2idE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx118messagesIcED0Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx118messagesIcED1Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx118messagesIcED2Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx118messagesIwE2idE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx118messagesIwED0Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx118messagesIwED1Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx118messagesIwED2Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx118numpunctIcE22_M_initialize_numpunctEP15__locale_struct at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx118numpunctIcE2idE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx118numpunctIcED0Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx118numpunctIcED1Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx118numpunctIcED2Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx118numpunctIwE22_M_initialize_numpunctEP15__locale_struct at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx118numpunctIwE2idE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx118numpunctIwED0Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx118numpunctIwED1Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx118numpunctIwED2Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx119money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx119money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx119money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx119money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx119money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx119money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx119money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx119money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx119money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx119money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx119money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx119money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx119money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx119money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx119money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt7__cxx119money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt8ios_base7failureB5cxx11C1EPKcRKSt10error_code at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt8ios_base7failureB5cxx11C1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt8ios_base7failureB5cxx11C1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKSt10error_code at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt8ios_base7failureB5cxx11C2EPKcRKSt10error_code at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt8ios_base7failureB5cxx11C2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt8ios_base7failureB5cxx11C2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKSt10error_code at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt8ios_base7failureB5cxx11D0Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt8ios_base7failureB5cxx11D1Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt8ios_base7failureB5cxx11D2Ev at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt13random_device14_M_init_pretr1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt13random_device7_M_initERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt13runtime_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt13runtime_errorC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt14basic_ifstreamIcSt11char_traitsIcEE4openERKNSt7__cxx1112basic_stringIcS1_SaIcEEESt13_Ios_Openmode at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1ERKNSt7__cxx1112basic_stringIcS1_SaIcEEESt13_Ios_Openmode at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt14basic_ifstreamIwSt11char_traitsIwEE4openERKNSt7__cxx1112basic_stringIcS0_IcESaIcEEESt13_Ios_Openmode at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt14basic_ifstreamIwSt11char_traitsIwEEC1ERKNSt7__cxx1112basic_stringIcS0_IcESaIcEEESt13_Ios_Openmode at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt14basic_ofstreamIcSt11char_traitsIcEE4openERKNSt7__cxx1112basic_stringIcS1_SaIcEEESt13_Ios_Openmode at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC1ERKNSt7__cxx1112basic_stringIcS1_SaIcEEESt13_Ios_Openmode at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt14basic_ofstreamIwSt11char_traitsIwEE4openERKNSt7__cxx1112basic_stringIcS0_IcESaIcEEESt13_Ios_Openmode at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNSt14basic_ofstreamIwSt11char_traitsIwEEC1ERKNSt7__cxx1112basic_stringIcS0_IcESaIcEEESt13_Ios_Openmode at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZSt17iostream_categoryv at GLIBCXX_3.4.21 5.1.1
+ (optional=abi_c++11)_ZSt7getlineIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RNSt7__cxx1112basic_stringIS4_S5_T1_EE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZSt7getlineIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RNSt7__cxx1112basic_stringIS4_S5_T1_EES4_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZSt7getlineIwSt11char_traitsIwESaIwEERSt13basic_istreamIT_T0_ES7_RNSt7__cxx1112basic_stringIS4_S5_T1_EE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZSt7getlineIwSt11char_traitsIwESaIwEERSt13basic_istreamIT_T0_ES7_RNSt7__cxx1112basic_stringIS4_S5_T1_EES4_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZSt9has_facetINSt7__cxx1110moneypunctIcLb0EEEEbRKSt6locale at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZSt9has_facetINSt7__cxx1110moneypunctIwLb0EEEEbRKSt6locale at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZSt9has_facetINSt7__cxx117collateIcEEEbRKSt6locale at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZSt9has_facetINSt7__cxx117collateIwEEEbRKSt6locale at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZSt9has_facetINSt7__cxx118messagesIcEEEbRKSt6locale at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZSt9has_facetINSt7__cxx118messagesIwEEEbRKSt6locale at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZSt9has_facetINSt7__cxx118numpunctIcEEEbRKSt6locale at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZSt9has_facetINSt7__cxx118numpunctIwEEEbRKSt6locale at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZSt9has_facetINSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEEbRKSt6locale at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZSt9has_facetINSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEEbRKSt6locale at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZSt9has_facetINSt7__cxx119money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEEbRKSt6locale at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZSt9has_facetINSt7__cxx119money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEEbRKSt6locale at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZSt9has_facetINSt7__cxx119money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEEbRKSt6locale at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZSt9has_facetINSt7__cxx119money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEEbRKSt6locale at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZSt9use_facetINSt7__cxx1110moneypunctIcLb0EEEERKT_RKSt6locale at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZSt9use_facetINSt7__cxx1110moneypunctIcLb1EEEERKT_RKSt6locale at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZSt9use_facetINSt7__cxx1110moneypunctIwLb0EEEERKT_RKSt6locale at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZSt9use_facetINSt7__cxx1110moneypunctIwLb1EEEERKT_RKSt6locale at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZSt9use_facetINSt7__cxx117collateIcEEERKT_RKSt6locale at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZSt9use_facetINSt7__cxx117collateIwEEERKT_RKSt6locale at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZSt9use_facetINSt7__cxx118messagesIcEEERKT_RKSt6locale at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZSt9use_facetINSt7__cxx118messagesIwEEERKT_RKSt6locale at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZSt9use_facetINSt7__cxx118numpunctIcEEERKT_RKSt6locale at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZSt9use_facetINSt7__cxx118numpunctIwEEERKT_RKSt6locale at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZSt9use_facetINSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEERKT_RKSt6locale at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZSt9use_facetINSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEERKT_RKSt6locale at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZSt9use_facetINSt7__cxx119money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEERKT_RKSt6locale at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZSt9use_facetINSt7__cxx119money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEERKT_RKSt6locale at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZSt9use_facetINSt7__cxx119money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEERKT_RKSt6locale at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZSt9use_facetINSt7__cxx119money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEERKT_RKSt6locale at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZStlsIwSt11char_traitsIwESaIwEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_RKS8_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_SA_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EES5_RKS8_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZStplIwSt11char_traitsIwESaIwEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_RKS8_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZStplIwSt11char_traitsIwESaIwEENSt7__cxx1112basic_stringIT_T0_T1_EERKS8_SA_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZStplIwSt11char_traitsIwESaIwEENSt7__cxx1112basic_stringIT_T0_T1_EES5_RKS8_ at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZStrsIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RNSt7__cxx1112basic_stringIS4_S5_T1_EE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZStrsIwSt11char_traitsIwESaIwEERSt13basic_istreamIT_T0_ES7_RNSt7__cxx1112basic_stringIS4_S5_T1_EE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTINSt7__cxx1110moneypunctIcLb0EEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTINSt7__cxx1110moneypunctIcLb1EEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTINSt7__cxx1110moneypunctIwLb0EEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTINSt7__cxx1110moneypunctIwLb1EEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTINSt7__cxx1114collate_bynameIcEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTINSt7__cxx1114collate_bynameIwEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTINSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTINSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTINSt7__cxx1115messages_bynameIcEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTINSt7__cxx1115messages_bynameIwEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTINSt7__cxx1115numpunct_bynameIcEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTINSt7__cxx1115numpunct_bynameIwEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTINSt7__cxx1115time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTINSt7__cxx1115time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTINSt7__cxx1117moneypunct_bynameIcLb0EEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTINSt7__cxx1117moneypunct_bynameIcLb1EEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTINSt7__cxx1117moneypunct_bynameIwLb0EEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTINSt7__cxx1117moneypunct_bynameIwLb1EEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTINSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTINSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTINSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTINSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTINSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTINSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTINSt7__cxx117collateIcEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTINSt7__cxx117collateIwEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTINSt7__cxx118messagesIcEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTINSt7__cxx118messagesIwEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTINSt7__cxx118numpunctIcEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTINSt7__cxx118numpunctIwEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTINSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTINSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTINSt7__cxx119money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTINSt7__cxx119money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTINSt7__cxx119money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTINSt7__cxx119money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTINSt8ios_base7failureB5cxx11E at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTSNSt7__cxx1110moneypunctIcLb0EEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTSNSt7__cxx1110moneypunctIcLb1EEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTSNSt7__cxx1110moneypunctIwLb0EEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTSNSt7__cxx1110moneypunctIwLb1EEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTSNSt7__cxx1114collate_bynameIcEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTSNSt7__cxx1114collate_bynameIwEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTSNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTSNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTSNSt7__cxx1115messages_bynameIcEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTSNSt7__cxx1115messages_bynameIwEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTSNSt7__cxx1115numpunct_bynameIcEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTSNSt7__cxx1115numpunct_bynameIwEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTSNSt7__cxx1115time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTSNSt7__cxx1115time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTSNSt7__cxx1117moneypunct_bynameIcLb0EEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTSNSt7__cxx1117moneypunct_bynameIcLb1EEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTSNSt7__cxx1117moneypunct_bynameIwLb0EEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTSNSt7__cxx1117moneypunct_bynameIwLb1EEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTSNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTSNSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTSNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTSNSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTSNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTSNSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTSNSt7__cxx117collateIcEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTSNSt7__cxx117collateIwEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTSNSt7__cxx118messagesIcEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTSNSt7__cxx118messagesIwEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTSNSt7__cxx118numpunctIcEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTSNSt7__cxx118numpunctIwEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTSNSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTSNSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTSNSt7__cxx119money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTSNSt7__cxx119money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTSNSt7__cxx119money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTSNSt7__cxx119money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTSNSt8ios_base7failureB5cxx11E at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTTNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTTNSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTTNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTTNSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTTNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTTNSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTVNSt7__cxx1110moneypunctIcLb0EEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTVNSt7__cxx1110moneypunctIcLb1EEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTVNSt7__cxx1110moneypunctIwLb0EEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTVNSt7__cxx1110moneypunctIwLb1EEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTVNSt7__cxx1114collate_bynameIcEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTVNSt7__cxx1114collate_bynameIwEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTVNSt7__cxx1115basic_stringbufIcSt11char_traitsIcESaIcEEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTVNSt7__cxx1115basic_stringbufIwSt11char_traitsIwESaIwEEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTVNSt7__cxx1115messages_bynameIcEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTVNSt7__cxx1115messages_bynameIwEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTVNSt7__cxx1115numpunct_bynameIcEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTVNSt7__cxx1115numpunct_bynameIwEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTVNSt7__cxx1115time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTVNSt7__cxx1115time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTVNSt7__cxx1117moneypunct_bynameIcLb0EEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTVNSt7__cxx1117moneypunct_bynameIcLb1EEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTVNSt7__cxx1117moneypunct_bynameIwLb0EEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTVNSt7__cxx1117moneypunct_bynameIwLb1EEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTVNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTVNSt7__cxx1118basic_stringstreamIwSt11char_traitsIwESaIwEEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTVNSt7__cxx1119basic_istringstreamIcSt11char_traitsIcESaIcEEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTVNSt7__cxx1119basic_istringstreamIwSt11char_traitsIwESaIwEEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTVNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTVNSt7__cxx1119basic_ostringstreamIwSt11char_traitsIwESaIwEEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTVNSt7__cxx117collateIcEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTVNSt7__cxx117collateIwEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTVNSt7__cxx118messagesIcEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTVNSt7__cxx118messagesIwEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTVNSt7__cxx118numpunctIcEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTVNSt7__cxx118numpunctIwEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTVNSt7__cxx118time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTVNSt7__cxx118time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTVNSt7__cxx119money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTVNSt7__cxx119money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTVNSt7__cxx119money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTVNSt7__cxx119money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZTVNSt8ios_base7failureB5cxx11E at GLIBCXX_3.4.21 5.2
diff --git a/debian/libstdc++6.symbols.excprop b/debian/libstdc++6.symbols.excprop
new file mode 100644
index 0000000..061e331
--- /dev/null
+++ b/debian/libstdc++6.symbols.excprop
@@ -0,0 +1,17 @@
+ _ZNKSt15__exception_ptr13exception_ptr20__cxa_exception_typeEv at CXXABI_1.3.3 4.4.0
+ _ZNKSt15__exception_ptr13exception_ptrcvMS0_FvvEEv at CXXABI_1.3.3 4.4.0
+ _ZNKSt15__exception_ptr13exception_ptrntEv at CXXABI_1.3.3 4.4.0
+ _ZNSt15__exception_ptr13exception_ptr4swapERS0_ at CXXABI_1.3.3 4.4.0
+ _ZNSt15__exception_ptr13exception_ptrC1EMS0_FvvE at CXXABI_1.3.3 4.4.0
+ _ZNSt15__exception_ptr13exception_ptrC1ERKS0_ at CXXABI_1.3.3 4.4.0
+ _ZNSt15__exception_ptr13exception_ptrC1Ev at CXXABI_1.3.3 4.4.0
+ _ZNSt15__exception_ptr13exception_ptrC2EMS0_FvvE at CXXABI_1.3.3 4.4.0
+ _ZNSt15__exception_ptr13exception_ptrC2ERKS0_ at CXXABI_1.3.3 4.4.0
+ _ZNSt15__exception_ptr13exception_ptrC2Ev at CXXABI_1.3.3 4.4.0
+ _ZNSt15__exception_ptr13exception_ptrD1Ev at CXXABI_1.3.3 4.4.0
+ _ZNSt15__exception_ptr13exception_ptrD2Ev at CXXABI_1.3.3 4.4.0
+ _ZNSt15__exception_ptr13exception_ptraSERKS0_ at CXXABI_1.3.3 4.4.0
+ _ZNSt15__exception_ptreqERKNS_13exception_ptrES2_ at CXXABI_1.3.3 4.4.0
+ _ZNSt15__exception_ptrneERKNS_13exception_ptrES2_ at CXXABI_1.3.3 4.4.0
+ _ZSt17current_exceptionv at CXXABI_1.3.3 4.4.0
+ _ZSt17rethrow_exceptionNSt15__exception_ptr13exception_ptrE at CXXABI_1.3.3 4.4.0
diff --git a/debian/libstdc++6.symbols.float128 b/debian/libstdc++6.symbols.float128
new file mode 100644
index 0000000..f20e67a
--- /dev/null
+++ b/debian/libstdc++6.symbols.float128
@@ -0,0 +1,7 @@
+ CXXABI_FLOAT128 at CXXABI_FLOAT128 5
+ _ZTIPKg at CXXABI_FLOAT128 5
+ _ZTIPg at CXXABI_FLOAT128 5
+ _ZTIg at CXXABI_FLOAT128 5
+ _ZTSPKg at CXXABI_FLOAT128 5
+ _ZTSPg at CXXABI_FLOAT128 5
+ _ZTSg at CXXABI_FLOAT128 5
diff --git a/debian/libstdc++6.symbols.glibcxxmath b/debian/libstdc++6.symbols.glibcxxmath
new file mode 100644
index 0000000..04b7104
--- /dev/null
+++ b/debian/libstdc++6.symbols.glibcxxmath
@@ -0,0 +1,22 @@
+ acosl at GLIBCXX_3.4.3 4.1.1
+ asinl at GLIBCXX_3.4.3 4.1.1
+ atan2l at GLIBCXX_3.4 4.1.1
+ atanl at GLIBCXX_3.4.3 4.1.1
+ ceill at GLIBCXX_3.4.3 4.1.1
+ coshl at GLIBCXX_3.4 4.1.1
+ cosl at GLIBCXX_3.4 4.1.1
+ expl at GLIBCXX_3.4 4.1.1
+ floorl at GLIBCXX_3.4.3 4.1.1
+ fmodl at GLIBCXX_3.4.3 4.1.1
+ frexpl at GLIBCXX_3.4.3 4.1.1
+ hypotl at GLIBCXX_3.4 4.1.1
+ ldexpl at GLIBCXX_3.4.3 4.1.1
+ log10l at GLIBCXX_3.4 4.1.1
+ logl at GLIBCXX_3.4 4.1.1
+ modfl at GLIBCXX_3.4.3 4.1.1
+ powl at GLIBCXX_3.4 4.1.1
+ sinhl at GLIBCXX_3.4 4.1.1
+ sinl at GLIBCXX_3.4 4.1.1
+ sqrtl at GLIBCXX_3.4 4.1.1
+ tanhl at GLIBCXX_3.4 4.1.1
+ tanl at GLIBCXX_3.4 4.1.1
diff --git a/debian/libstdc++6.symbols.hppa b/debian/libstdc++6.symbols.hppa
new file mode 100644
index 0000000..a139283
--- /dev/null
+++ b/debian/libstdc++6.symbols.hppa
@@ -0,0 +1,9 @@
+libstdc++.so.6 libstdc++6 #MINVER#
+#include "libstdc++6.symbols.32bit"
+ __gxx_personality_v0 at CXXABI_1.3 4.1.1
+#include "libstdc++6.symbols.excprop"
+# removed, see PR libstdc++/39491 __signbitl at GLIBCXX_3.4 4.2.1
+#include "libstdc++6.symbols.glibcxxmath"
+#include "libstdc++6.symbols.money.ldbl"
+ _ZNKSt3tr14hashIeEclEe at GLIBCXX_3.4.10 4.3
+ _ZNKSt4hashIeEclEe at GLIBCXX_3.4.10 4.3
diff --git a/debian/libstdc++6.symbols.hurd-i386 b/debian/libstdc++6.symbols.hurd-i386
new file mode 100644
index 0000000..f18ffca
--- /dev/null
+++ b/debian/libstdc++6.symbols.hurd-i386
@@ -0,0 +1,6 @@
+libstdc++.so.6 libstdc++6 #MINVER#
+#include "libstdc++6.symbols.32bit.hurd"
+#include "libstdc++6.symbols.money.ldbl"
+ __gxx_personality_v0 at CXXABI_1.3 4.1.1
+ _ZNKSt3tr14hashIeEclEe at GLIBCXX_3.4.10 4.3.0
+ _ZNKSt4hashIeEclEe at GLIBCXX_3.4.10 4.3.0
diff --git a/debian/libstdc++6.symbols.i386 b/debian/libstdc++6.symbols.i386
new file mode 100644
index 0000000..80bb4de
--- /dev/null
+++ b/debian/libstdc++6.symbols.i386
@@ -0,0 +1,14 @@
+libstdc++.so.6 libstdc++6 #MINVER#
+#include "libstdc++6.symbols.32bit"
+#include "libstdc++6.symbols.excprop"
+#include "libstdc++6.symbols.money.ldbl"
+ __gxx_personality_v0 at CXXABI_1.3 4.1.1
+ _ZNKSt3tr14hashIeEclEe at GLIBCXX_3.4.10 4.3
+ _ZNKSt4hashIeEclEe at GLIBCXX_3.4.10 4.3
+ (optional)_Z16__VLTRegisterSetPPvPKvjjS0_ at CXXABI_1.3.8 4.9.0
+ (optional)_Z17__VLTRegisterPairPPvPKvjS2_ at CXXABI_1.3.8 4.9.0
+ (optional)_Z21__VLTRegisterSetDebugPPvPKvjjS0_ at CXXABI_1.3.8 4.9.0
+ (optional)_Z22__VLTRegisterPairDebugPPvPKvjS2_PKcS4_ at CXXABI_1.3.8 4.9.0
+ (optional)_Z24__VLTVerifyVtablePointerPPvPKv at CXXABI_1.3.8 4.9.0
+ (optional)_Z29__VLTVerifyVtablePointerDebugPPvPKvPKcS4_ at CXXABI_1.3.8 4.9.0
+ (optional)__VLTChangePermission at CXXABI_1.3.8 4.9.0
diff --git a/debian/libstdc++6.symbols.ia64 b/debian/libstdc++6.symbols.ia64
new file mode 100644
index 0000000..5f74173
--- /dev/null
+++ b/debian/libstdc++6.symbols.ia64
@@ -0,0 +1,53 @@
+libstdc++.so.6 libstdc++6 #MINVER#
+#include "libstdc++6.symbols.64bit"
+#include "libstdc++6.symbols.excprop"
+ _ZN9__gnu_cxx12__atomic_addEPVii at GLIBCXX_3.4 4.1.1
+ _ZN9__gnu_cxx18__exchange_and_addEPVii at GLIBCXX_3.4 4.1.1
+ _ZNKSt3tr14hashIeEclEe at GLIBCXX_3.4.10 4.3
+ _ZNKSt4hashIeEclEe at GLIBCXX_3.4.10 4.3
+ _ZNSt14numeric_limitsInE10has_denormE at GLIBCXX_3.4.17 4.8
+ _ZNSt14numeric_limitsInE10is_boundedE at GLIBCXX_3.4.17 4.8
+ _ZNSt14numeric_limitsInE10is_integerE at GLIBCXX_3.4.17 4.8
+ _ZNSt14numeric_limitsInE11round_styleE at GLIBCXX_3.4.17 4.8
+ _ZNSt14numeric_limitsInE12has_infinityE at GLIBCXX_3.4.17 4.8
+ _ZNSt14numeric_limitsInE12max_digits10E at GLIBCXX_3.4.17 4.8
+ _ZNSt14numeric_limitsInE12max_exponentE at GLIBCXX_3.4.17 4.8
+ _ZNSt14numeric_limitsInE12min_exponentE at GLIBCXX_3.4.17 4.8
+ _ZNSt14numeric_limitsInE13has_quiet_NaNE at GLIBCXX_3.4.17 4.8
+ _ZNSt14numeric_limitsInE14is_specializedE at GLIBCXX_3.4.17 4.8
+ _ZNSt14numeric_limitsInE14max_exponent10E at GLIBCXX_3.4.17 4.8
+ _ZNSt14numeric_limitsInE14min_exponent10E at GLIBCXX_3.4.17 4.8
+ _ZNSt14numeric_limitsInE15has_denorm_lossE at GLIBCXX_3.4.17 4.8
+ _ZNSt14numeric_limitsInE15tinyness_beforeE at GLIBCXX_3.4.17 4.8
+ _ZNSt14numeric_limitsInE17has_signaling_NaNE at GLIBCXX_3.4.17 4.8
+ _ZNSt14numeric_limitsInE5radixE at GLIBCXX_3.4.17 4.8
+ _ZNSt14numeric_limitsInE5trapsE at GLIBCXX_3.4.17 4.8
+ _ZNSt14numeric_limitsInE6digitsE at GLIBCXX_3.4.17 4.8
+ _ZNSt14numeric_limitsInE8digits10E at GLIBCXX_3.4.17 4.8
+ _ZNSt14numeric_limitsInE8is_exactE at GLIBCXX_3.4.17 4.8
+ _ZNSt14numeric_limitsInE9is_iec559E at GLIBCXX_3.4.17 4.8
+ _ZNSt14numeric_limitsInE9is_moduloE at GLIBCXX_3.4.17 4.8
+ _ZNSt14numeric_limitsInE9is_signedE at GLIBCXX_3.4.17 4.8
+ _ZNSt14numeric_limitsIoE10has_denormE at GLIBCXX_3.4.17 4.8
+ _ZNSt14numeric_limitsIoE10is_boundedE at GLIBCXX_3.4.17 4.8
+ _ZNSt14numeric_limitsIoE10is_integerE at GLIBCXX_3.4.17 4.8
+ _ZNSt14numeric_limitsIoE11round_styleE at GLIBCXX_3.4.17 4.8
+ _ZNSt14numeric_limitsIoE12has_infinityE at GLIBCXX_3.4.17 4.8
+ _ZNSt14numeric_limitsIoE12max_digits10E at GLIBCXX_3.4.17 4.8
+ _ZNSt14numeric_limitsIoE12max_exponentE at GLIBCXX_3.4.17 4.8
+ _ZNSt14numeric_limitsIoE12min_exponentE at GLIBCXX_3.4.17 4.8
+ _ZNSt14numeric_limitsIoE13has_quiet_NaNE at GLIBCXX_3.4.17 4.8
+ _ZNSt14numeric_limitsIoE14is_specializedE at GLIBCXX_3.4.17 4.8
+ _ZNSt14numeric_limitsIoE14max_exponent10E at GLIBCXX_3.4.17 4.8
+ _ZNSt14numeric_limitsIoE14min_exponent10E at GLIBCXX_3.4.17 4.8
+ _ZNSt14numeric_limitsIoE15has_denorm_lossE at GLIBCXX_3.4.17 4.8
+ _ZNSt14numeric_limitsIoE15tinyness_beforeE at GLIBCXX_3.4.17 4.8
+ _ZNSt14numeric_limitsIoE17has_signaling_NaNE at GLIBCXX_3.4.17 4.8
+ _ZNSt14numeric_limitsIoE5radixE at GLIBCXX_3.4.17 4.8
+ _ZNSt14numeric_limitsIoE5trapsE at GLIBCXX_3.4.17 4.8
+ _ZNSt14numeric_limitsIoE6digitsE at GLIBCXX_3.4.17 4.8
+ _ZNSt14numeric_limitsIoE8digits10E at GLIBCXX_3.4.17 4.8
+ _ZNSt14numeric_limitsIoE8is_exactE at GLIBCXX_3.4.17 4.8
+ _ZNSt14numeric_limitsIoE9is_iec559E at GLIBCXX_3.4.17 4.8
+ _ZNSt14numeric_limitsIoE9is_moduloE at GLIBCXX_3.4.17 4.8
+ _ZNSt14numeric_limitsIoE9is_signedE at GLIBCXX_3.4.17 4.8
diff --git a/debian/libstdc++6.symbols.kfreebsd-amd64 b/debian/libstdc++6.symbols.kfreebsd-amd64
new file mode 100644
index 0000000..6e16529
--- /dev/null
+++ b/debian/libstdc++6.symbols.kfreebsd-amd64
@@ -0,0 +1,9 @@
+libstdc++.so.6 libstdc++6 #MINVER#
+#include "libstdc++6.symbols.64bit"
+#include "libstdc++6.symbols.128bit"
+#include "libstdc++6.symbols.excprop"
+#include "libstdc++6.symbols.money.ldbl"
+ _ZN9__gnu_cxx12__atomic_addEPVii at GLIBCXX_3.4 4.1.1
+ _ZN9__gnu_cxx18__exchange_and_addEPVii at GLIBCXX_3.4 4.1.1
+ _ZNKSt3tr14hashIeEclEe at GLIBCXX_3.4.10 4.3
+ _ZNKSt4hashIeEclEe at GLIBCXX_3.4.10 4.3
diff --git a/debian/libstdc++6.symbols.kfreebsd-i386 b/debian/libstdc++6.symbols.kfreebsd-i386
new file mode 100644
index 0000000..d86ebfa
--- /dev/null
+++ b/debian/libstdc++6.symbols.kfreebsd-i386
@@ -0,0 +1,7 @@
+libstdc++.so.6 libstdc++6 #MINVER#
+#include "libstdc++6.symbols.32bit"
+#include "libstdc++6.symbols.excprop"
+#include "libstdc++6.symbols.money.ldbl"
+ __gxx_personality_v0 at CXXABI_1.3 4.1.1
+ _ZNKSt3tr14hashIeEclEe at GLIBCXX_3.4.10 4.3
+ _ZNKSt4hashIeEclEe at GLIBCXX_3.4.10 4.3
diff --git a/debian/libstdc++6.symbols.ldbl.32bit b/debian/libstdc++6.symbols.ldbl.32bit
new file mode 100644
index 0000000..feaffd3
--- /dev/null
+++ b/debian/libstdc++6.symbols.ldbl.32bit
@@ -0,0 +1,284 @@
+ CXXABI_LDBL_1.3 at CXXABI_LDBL_1.3 4.2.1
+ GLIBCXX_LDBL_3.4.10 at GLIBCXX_LDBL_3.4.10 4.3.0~rc2
+ GLIBCXX_LDBL_3.4.7 at GLIBCXX_LDBL_3.4.7 4.2.1
+ GLIBCXX_LDBL_3.4 at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt3tr14hashIgEclEg at GLIBCXX_LDBL_3.4.10 4.3.0~rc2
+ _ZNKSt4hashIgEclEg at GLIBCXX_LDBL_3.4.10 4.3.0~rc2
+ _ZGVNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZGVNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZGVNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZGVNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZGVNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZGVNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZGVNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZGVNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIjEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_ at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIlEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_ at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intImEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_ at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intItEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_ at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIxEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_ at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIyEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_ at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE16_M_extract_floatES4_S4_RSt8ios_baseRSt12_Ios_IostateRSs at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRPv at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRb at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRf at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRg at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRj at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRl at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRm at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRt at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRx at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRy at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRPv at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRb at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRf at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRg at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRj at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRl at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRm at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRt at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRx at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRy at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8__do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIjEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_ at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIlEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_ at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intImEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_ at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intItEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_ at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIxEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_ at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIyEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_ at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE16_M_extract_floatES4_S4_RSt8ios_baseRSt12_Ios_IostateRSs at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRPv at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRb at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRf at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRg at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRj at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRl at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRm at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRt at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRx at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRy at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRPv at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRb at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRf at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRg at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRj at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRl at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRm at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRt at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRx at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRy at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8__do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE12_M_group_intEPKcjcRSt8ios_basePcSA_Ri at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIlEES4_S4_RSt8ios_basecT_ at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intImEES4_S4_RSt8ios_basecT_ at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIxEES4_S4_RSt8ios_basecT_ at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIyEES4_S4_RSt8ios_basecT_ at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE14_M_group_floatEPKcjcS7_PcS8_Ri at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIdEES4_S4_RSt8ios_baseccT_ at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIgEES4_S4_RSt8ios_baseccT_ at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecPKv at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecb at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecd at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecg at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecl at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecm at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecx at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecy at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6_M_padEciRSt8ios_basePcPKcRi at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecPKv at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecb at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecd at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecg at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecl at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecm at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecx at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecy at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE8__do_putES4_RSt8ios_basecd at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE12_M_group_intEPKcjwRSt8ios_basePwSA_Ri at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIlEES4_S4_RSt8ios_basewT_ at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intImEES4_S4_RSt8ios_basewT_ at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIxEES4_S4_RSt8ios_basewT_ at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIyEES4_S4_RSt8ios_basewT_ at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE14_M_group_floatEPKcjwPKwPwSA_Ri at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIdEES4_S4_RSt8ios_basewcT_ at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIgEES4_S4_RSt8ios_basewcT_ at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewPKv at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewb at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewd at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewg at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewl at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewm at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewx at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewy at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6_M_padEwiRSt8ios_basePwPKwRi at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewPKv at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewb at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewd at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewg at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewl at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewm at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewx at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewy at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE8__do_putES4_RSt8ios_basewd at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb0EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb1EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRSs at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRg at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRSs at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRg at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8__do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRd at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb0EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb1EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRSbIwS3_SaIwEE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRg at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRSbIwS3_SaIwEE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRg at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8__do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRd at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_bRSt8ios_basecRKSs at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_bRSt8ios_basecg at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_bRSt8ios_basecRKSs at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_bRSt8ios_basecg at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE8__do_putES4_bRSt8ios_basecd at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb0EEES4_S4_RSt8ios_basecRKSs at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb1EEES4_S4_RSt8ios_basecRKSs at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_bRSt8ios_basewRKSbIwS3_SaIwEE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_bRSt8ios_basewg at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_bRSt8ios_basewRKSbIwS3_SaIwEE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_bRSt8ios_basewg at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE8__do_putES4_bRSt8ios_basewd at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb0EEES4_S4_RSt8ios_basewRKSbIwS3_SaIwEE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb1EEES4_S4_RSt8ios_basewRKSbIwS3_SaIwEE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSi10_M_extractIgEERSiRT_ at GLIBCXX_LDBL_3.4.7 4.2.1
+ _ZNSirsERg at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSo9_M_insertIgEERSoT_ at GLIBCXX_LDBL_3.4.7 4.2.1
+ _ZNSolsEg at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIgEERS2_RT_ at GLIBCXX_LDBL_3.4.7 4.2.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEErsERg at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIgEERS2_T_ at GLIBCXX_LDBL_3.4.7 4.2.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEg at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE10has_denormE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE10is_boundedE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE10is_integerE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE11round_styleE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE12has_infinityE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE12max_digits10E at GLIBCXX_LDBL_3.4 4.5.0
+ _ZNSt14numeric_limitsIgE12max_exponentE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE12min_exponentE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE13has_quiet_NaNE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE14is_specializedE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE14max_exponent10E at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE14min_exponent10E at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE15has_denorm_lossE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE15tinyness_beforeE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE17has_signaling_NaNE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE5radixE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE5trapsE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE6digitsE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE8digits10E at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE8is_exactE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE9is_iec559E at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE9is_moduloE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE9is_signedE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Ej at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Ej at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Ej at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Ej at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Ej at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Ej at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Ej at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Ej at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Ej at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Ej at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Ej at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Ej at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Ej at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Ej at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Ej at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Ej at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev at GLIBCXX_LDBL_3.4 4.2.1
+ _ZSt14__convert_to_vIgEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct at GLIBCXX_LDBL_3.4 4.2.1
+ _ZSt9has_facetINSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEEbRKSt6locale at GLIBCXX_LDBL_3.4 4.2.1
+ _ZSt9has_facetINSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEEbRKSt6locale at GLIBCXX_LDBL_3.4 4.2.1
+ _ZSt9has_facetINSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEEbRKSt6locale at GLIBCXX_LDBL_3.4 4.2.1
+ _ZSt9has_facetINSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEEbRKSt6locale at GLIBCXX_LDBL_3.4 4.2.1
+ _ZSt9has_facetINSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEEbRKSt6locale at GLIBCXX_LDBL_3.4 4.2.1
+ _ZSt9has_facetINSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEEbRKSt6locale at GLIBCXX_LDBL_3.4 4.2.1
+ _ZSt9has_facetINSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEEbRKSt6locale at GLIBCXX_LDBL_3.4 4.2.1
+ _ZSt9has_facetINSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEEbRKSt6locale at GLIBCXX_LDBL_3.4 4.2.1
+ _ZSt9use_facetINSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEERKT_RKSt6locale at GLIBCXX_LDBL_3.4 4.2.1
+ _ZSt9use_facetINSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEERKT_RKSt6locale at GLIBCXX_LDBL_3.4 4.2.1
+ _ZSt9use_facetINSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEERKT_RKSt6locale at GLIBCXX_LDBL_3.4 4.2.1
+ _ZSt9use_facetINSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEERKT_RKSt6locale at GLIBCXX_LDBL_3.4 4.2.1
+ _ZSt9use_facetINSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEERKT_RKSt6locale at GLIBCXX_LDBL_3.4 4.2.1
+ _ZSt9use_facetINSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEERKT_RKSt6locale at GLIBCXX_LDBL_3.4 4.2.1
+ _ZSt9use_facetINSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEERKT_RKSt6locale at GLIBCXX_LDBL_3.4 4.2.1
+ _ZSt9use_facetINSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEERKT_RKSt6locale at GLIBCXX_LDBL_3.4 4.2.1
+ _ZStlsIgcSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E at GLIBCXX_LDBL_3.4 4.2.1
+ _ZStlsIgwSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E at GLIBCXX_LDBL_3.4 4.2.1
+ _ZStrsIgcSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E at GLIBCXX_LDBL_3.4 4.2.1
+ _ZStrsIgwSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E at GLIBCXX_LDBL_3.4 4.2.1
+ _ZTINSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZTINSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZTINSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZTINSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZTINSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZTINSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZTINSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZTINSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZTIPKg at CXXABI_LDBL_1.3 4.2.1
+ _ZTIPg at CXXABI_LDBL_1.3 4.2.1
+ _ZTIg at CXXABI_LDBL_1.3 4.2.1
+ _ZTSNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZTSNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZTSNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZTSNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZTSNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZTSNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZTSNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZTSNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZTSPKg at CXXABI_LDBL_1.3 4.2.1
+ _ZTSPg at CXXABI_LDBL_1.3 4.2.1
+ _ZTSg at CXXABI_LDBL_1.3 4.2.1
+ _ZTVNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZTVNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZTVNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZTVNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZTVNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZTVNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZTVNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZTVNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE at GLIBCXX_LDBL_3.4 4.2.1
diff --git a/debian/libstdc++6.symbols.ldbl.32bit.s390 b/debian/libstdc++6.symbols.ldbl.32bit.s390
new file mode 100644
index 0000000..8432138
--- /dev/null
+++ b/debian/libstdc++6.symbols.ldbl.32bit.s390
@@ -0,0 +1,284 @@
+ CXXABI_LDBL_1.3 at CXXABI_LDBL_1.3 4.2.1
+ GLIBCXX_LDBL_3.4.10 at GLIBCXX_LDBL_3.4.10 4.3.0~rc2
+ GLIBCXX_LDBL_3.4.7 at GLIBCXX_LDBL_3.4.7 4.2.1
+ GLIBCXX_LDBL_3.4 at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt3tr14hashIgEclEg at GLIBCXX_LDBL_3.4.10 4.3.0~rc2
+ _ZNKSt4hashIgEclEg at GLIBCXX_LDBL_3.4.10 4.3.0~rc2
+ _ZGVNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZGVNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZGVNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZGVNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZGVNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZGVNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZGVNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZGVNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIjEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_ at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIlEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_ at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intImEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_ at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intItEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_ at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIxEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_ at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIyEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_ at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE16_M_extract_floatES4_S4_RSt8ios_baseRSt12_Ios_IostateRSs at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRPv at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRb at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRf at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRg at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRj at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRl at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRm at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRt at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRx at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRy at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRPv at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRb at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRf at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRg at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRj at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRl at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRm at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRt at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRx at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRy at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8__do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIjEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_ at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIlEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_ at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intImEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_ at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intItEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_ at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIxEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_ at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIyEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_ at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE16_M_extract_floatES4_S4_RSt8ios_baseRSt12_Ios_IostateRSs at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRPv at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRb at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRf at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRg at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRj at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRl at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRm at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRt at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRx at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRy at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRPv at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRb at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRf at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRg at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRj at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRl at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRm at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRt at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRx at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRy at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8__do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE12_M_group_intEPKcmcRSt8ios_basePcSA_Ri at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIlEES4_S4_RSt8ios_basecT_ at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intImEES4_S4_RSt8ios_basecT_ at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIxEES4_S4_RSt8ios_basecT_ at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIyEES4_S4_RSt8ios_basecT_ at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE14_M_group_floatEPKcmcS7_PcS8_Ri at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIdEES4_S4_RSt8ios_baseccT_ at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIgEES4_S4_RSt8ios_baseccT_ at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecPKv at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecb at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecd at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecg at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecl at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecm at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecx at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecy at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6_M_padEciRSt8ios_basePcPKcRi at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecPKv at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecb at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecd at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecg at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecl at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecm at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecx at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecy at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE8__do_putES4_RSt8ios_basecd at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE12_M_group_intEPKcmwRSt8ios_basePwSA_Ri at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIlEES4_S4_RSt8ios_basewT_ at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intImEES4_S4_RSt8ios_basewT_ at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIxEES4_S4_RSt8ios_basewT_ at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIyEES4_S4_RSt8ios_basewT_ at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE14_M_group_floatEPKcmwPKwPwSA_Ri at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIdEES4_S4_RSt8ios_basewcT_ at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIgEES4_S4_RSt8ios_basewcT_ at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewPKv at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewb at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewd at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewg at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewl at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewm at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewx at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewy at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6_M_padEwiRSt8ios_basePwPKwRi at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewPKv at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewb at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewd at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewg at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewl at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewm at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewx at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewy at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE8__do_putES4_RSt8ios_basewd at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb0EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb1EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRSs at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRg at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRSs at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRg at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8__do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRd at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb0EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb1EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRSbIwS3_SaIwEE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRg at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRSbIwS3_SaIwEE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRg at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8__do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRd at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_bRSt8ios_basecRKSs at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_bRSt8ios_basecg at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_bRSt8ios_basecRKSs at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_bRSt8ios_basecg at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE8__do_putES4_bRSt8ios_basecd at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb0EEES4_S4_RSt8ios_basecRKSs at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb1EEES4_S4_RSt8ios_basecRKSs at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_bRSt8ios_basewRKSbIwS3_SaIwEE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_bRSt8ios_basewg at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_bRSt8ios_basewRKSbIwS3_SaIwEE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_bRSt8ios_basewg at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE8__do_putES4_bRSt8ios_basewd at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb0EEES4_S4_RSt8ios_basewRKSbIwS3_SaIwEE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb1EEES4_S4_RSt8ios_basewRKSbIwS3_SaIwEE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSi10_M_extractIgEERSiRT_ at GLIBCXX_LDBL_3.4.7 4.2.1
+ _ZNSirsERg at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSo9_M_insertIgEERSoT_ at GLIBCXX_LDBL_3.4.7 4.2.1
+ _ZNSolsEg at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIgEERS2_RT_ at GLIBCXX_LDBL_3.4.7 4.2.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEErsERg at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIgEERS2_T_ at GLIBCXX_LDBL_3.4.7 4.2.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEg at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE10has_denormE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE10is_boundedE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE10is_integerE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE11round_styleE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE12has_infinityE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE12max_digits10E at GLIBCXX_LDBL_3.4 4.5.0
+ _ZNSt14numeric_limitsIgE12max_exponentE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE12min_exponentE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE13has_quiet_NaNE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE14is_specializedE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE14max_exponent10E at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE14min_exponent10E at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE15has_denorm_lossE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE15tinyness_beforeE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE17has_signaling_NaNE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE5radixE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE5trapsE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE6digitsE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE8digits10E at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE8is_exactE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE9is_iec559E at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE9is_moduloE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE9is_signedE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Em at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Em at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Em at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Em at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Em at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Em at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Em at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Em at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Em at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Em at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev at GLIBCXX_LDBL_3.4 4.2.1
+ _ZSt14__convert_to_vIgEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct at GLIBCXX_LDBL_3.4 4.2.1
+ _ZSt9has_facetINSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEEbRKSt6locale at GLIBCXX_LDBL_3.4 4.2.1
+ _ZSt9has_facetINSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEEbRKSt6locale at GLIBCXX_LDBL_3.4 4.2.1
+ _ZSt9has_facetINSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEEbRKSt6locale at GLIBCXX_LDBL_3.4 4.2.1
+ _ZSt9has_facetINSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEEbRKSt6locale at GLIBCXX_LDBL_3.4 4.2.1
+ _ZSt9has_facetINSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEEbRKSt6locale at GLIBCXX_LDBL_3.4 4.2.1
+ _ZSt9has_facetINSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEEbRKSt6locale at GLIBCXX_LDBL_3.4 4.2.1
+ _ZSt9has_facetINSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEEbRKSt6locale at GLIBCXX_LDBL_3.4 4.2.1
+ _ZSt9has_facetINSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEEbRKSt6locale at GLIBCXX_LDBL_3.4 4.2.1
+ _ZSt9use_facetINSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEERKT_RKSt6locale at GLIBCXX_LDBL_3.4 4.2.1
+ _ZSt9use_facetINSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEERKT_RKSt6locale at GLIBCXX_LDBL_3.4 4.2.1
+ _ZSt9use_facetINSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEERKT_RKSt6locale at GLIBCXX_LDBL_3.4 4.2.1
+ _ZSt9use_facetINSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEERKT_RKSt6locale at GLIBCXX_LDBL_3.4 4.2.1
+ _ZSt9use_facetINSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEERKT_RKSt6locale at GLIBCXX_LDBL_3.4 4.2.1
+ _ZSt9use_facetINSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEERKT_RKSt6locale at GLIBCXX_LDBL_3.4 4.2.1
+ _ZSt9use_facetINSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEERKT_RKSt6locale at GLIBCXX_LDBL_3.4 4.2.1
+ _ZSt9use_facetINSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEERKT_RKSt6locale at GLIBCXX_LDBL_3.4 4.2.1
+ _ZStlsIgcSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E at GLIBCXX_LDBL_3.4 4.2.1
+ _ZStlsIgwSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E at GLIBCXX_LDBL_3.4 4.2.1
+ _ZStrsIgcSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E at GLIBCXX_LDBL_3.4 4.2.1
+ _ZStrsIgwSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E at GLIBCXX_LDBL_3.4 4.2.1
+ _ZTINSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZTINSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZTINSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZTINSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZTINSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZTINSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZTINSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZTINSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZTIPKg at CXXABI_LDBL_1.3 4.2.1
+ _ZTIPg at CXXABI_LDBL_1.3 4.2.1
+ _ZTIg at CXXABI_LDBL_1.3 4.2.1
+ _ZTSNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZTSNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZTSNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZTSNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZTSNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZTSNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZTSNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZTSNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZTSPKg at CXXABI_LDBL_1.3 4.2.1
+ _ZTSPg at CXXABI_LDBL_1.3 4.2.1
+ _ZTSg at CXXABI_LDBL_1.3 4.2.1
+ _ZTVNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZTVNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZTVNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZTVNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZTVNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZTVNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZTVNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZTVNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE at GLIBCXX_LDBL_3.4 4.2.1
diff --git a/debian/libstdc++6.symbols.ldbl.64bit b/debian/libstdc++6.symbols.ldbl.64bit
new file mode 100644
index 0000000..a5c3abf
--- /dev/null
+++ b/debian/libstdc++6.symbols.ldbl.64bit
@@ -0,0 +1,284 @@
+ CXXABI_LDBL_1.3 at CXXABI_LDBL_1.3 4.2.1
+ GLIBCXX_LDBL_3.4.10 at GLIBCXX_LDBL_3.4.10 4.3.0~rc2
+ GLIBCXX_LDBL_3.4.7 at GLIBCXX_LDBL_3.4.7 4.2.1
+ GLIBCXX_LDBL_3.4 at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt3tr14hashIgEclEg at GLIBCXX_LDBL_3.4.10 4.3.0~rc2
+ _ZNKSt4hashIgEclEg at GLIBCXX_LDBL_3.4.10 4.3.0~rc2
+ _ZGVNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZGVNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZGVNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZGVNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZGVNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZGVNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZGVNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZGVNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIjEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_ at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIlEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_ at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intImEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_ at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intItEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_ at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIxEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_ at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIyEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_ at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE16_M_extract_floatES4_S4_RSt8ios_baseRSt12_Ios_IostateRSs at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRPv at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRb at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRf at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRg at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRj at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRl at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRm at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRt at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRx at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRy at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRPv at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRb at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRf at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRg at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRj at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRl at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRm at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRt at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRx at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRy at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8__do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIjEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_ at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIlEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_ at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intImEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_ at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intItEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_ at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIxEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_ at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIyEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_ at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE16_M_extract_floatES4_S4_RSt8ios_baseRSt12_Ios_IostateRSs at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRPv at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRb at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRf at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRg at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRj at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRl at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRm at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRt at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRx at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_RSt8ios_baseRSt12_Ios_IostateRy at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRPv at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRb at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRf at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRg at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRj at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRl at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRm at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRt at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRx at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRy at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8__do_getES4_S4_RSt8ios_baseRSt12_Ios_IostateRd at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE12_M_group_intEPKcmcRSt8ios_basePcSA_Ri at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIlEES4_S4_RSt8ios_basecT_ at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intImEES4_S4_RSt8ios_basecT_ at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIxEES4_S4_RSt8ios_basecT_ at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIyEES4_S4_RSt8ios_basecT_ at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE14_M_group_floatEPKcmcS7_PcS8_Ri at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIdEES4_S4_RSt8ios_baseccT_ at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIgEES4_S4_RSt8ios_baseccT_ at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecPKv at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecb at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecd at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecg at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecl at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecm at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecx at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_RSt8ios_basecy at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6_M_padEclRSt8ios_basePcPKcRi at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecPKv at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecb at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecd at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecg at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecl at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecm at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecx at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_RSt8ios_basecy at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE8__do_putES4_RSt8ios_basecd at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE12_M_group_intEPKcmwRSt8ios_basePwSA_Ri at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIlEES4_S4_RSt8ios_basewT_ at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intImEES4_S4_RSt8ios_basewT_ at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIxEES4_S4_RSt8ios_basewT_ at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIyEES4_S4_RSt8ios_basewT_ at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE14_M_group_floatEPKcmwPKwPwSA_Ri at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIdEES4_S4_RSt8ios_basewcT_ at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIgEES4_S4_RSt8ios_basewcT_ at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewPKv at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewb at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewd at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewg at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewl at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewm at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewx at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_RSt8ios_basewy at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6_M_padEwlRSt8ios_basePwPKwRi at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewPKv at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewb at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewd at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewg at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewl at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewm at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewx at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_RSt8ios_basewy at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE8__do_putES4_RSt8ios_basewd at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb0EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb1EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRSs at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRg at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRSs at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRg at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE8__do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRd at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb0EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb1EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRSbIwS3_SaIwEE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRg at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRSbIwS3_SaIwEE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRg at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE8__do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRd at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_bRSt8ios_basecRKSs at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_bRSt8ios_basecg at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_bRSt8ios_basecRKSs at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_bRSt8ios_basecg at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE8__do_putES4_bRSt8ios_basecd at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb0EEES4_S4_RSt8ios_basecRKSs at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb1EEES4_S4_RSt8ios_basecRKSs at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_bRSt8ios_basewRKSbIwS3_SaIwEE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_bRSt8ios_basewg at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_bRSt8ios_basewRKSbIwS3_SaIwEE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_bRSt8ios_basewg at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE8__do_putES4_bRSt8ios_basewd at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb0EEES4_S4_RSt8ios_basewRKSbIwS3_SaIwEE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb1EEES4_S4_RSt8ios_basewRKSbIwS3_SaIwEE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSi10_M_extractIgEERSiRT_ at GLIBCXX_LDBL_3.4.7 4.2.1
+ _ZNSirsERg at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSo9_M_insertIgEERSoT_ at GLIBCXX_LDBL_3.4.7 4.2.1
+ _ZNSolsEg at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIgEERS2_RT_ at GLIBCXX_LDBL_3.4.7 4.2.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEErsERg at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIgEERS2_T_ at GLIBCXX_LDBL_3.4.7 4.2.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEg at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE10has_denormE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE10is_boundedE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE10is_integerE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE11round_styleE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE12has_infinityE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE12max_digits10E at GLIBCXX_LDBL_3.4 4.5.0
+ _ZNSt14numeric_limitsIgE12max_exponentE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE12min_exponentE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE13has_quiet_NaNE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE14is_specializedE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE14max_exponent10E at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE14min_exponent10E at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE15has_denorm_lossE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE15tinyness_beforeE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE17has_signaling_NaNE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE5radixE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE5trapsE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE6digitsE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE8digits10E at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE8is_exactE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE9is_iec559E at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE9is_moduloE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt14numeric_limitsIgE9is_signedE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Em at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Em at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Em at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Em at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Em at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED0Ev at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED1Ev at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEED2Ev at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Em at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Em at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED0Ev at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED1Ev at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEED2Ev at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Em at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Em at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED0Ev at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED1Ev at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEED2Ev at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Em at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev at GLIBCXX_LDBL_3.4 4.2.1
+ _ZNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev at GLIBCXX_LDBL_3.4 4.2.1
+ _ZSt14__convert_to_vIgEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct at GLIBCXX_LDBL_3.4 4.2.1
+ _ZSt9has_facetINSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEEbRKSt6locale at GLIBCXX_LDBL_3.4 4.2.1
+ _ZSt9has_facetINSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEEbRKSt6locale at GLIBCXX_LDBL_3.4 4.2.1
+ _ZSt9has_facetINSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEEbRKSt6locale at GLIBCXX_LDBL_3.4 4.2.1
+ _ZSt9has_facetINSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEEbRKSt6locale at GLIBCXX_LDBL_3.4 4.2.1
+ _ZSt9has_facetINSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEEbRKSt6locale at GLIBCXX_LDBL_3.4 4.2.1
+ _ZSt9has_facetINSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEEbRKSt6locale at GLIBCXX_LDBL_3.4 4.2.1
+ _ZSt9has_facetINSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEEbRKSt6locale at GLIBCXX_LDBL_3.4 4.2.1
+ _ZSt9has_facetINSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEEbRKSt6locale at GLIBCXX_LDBL_3.4 4.2.1
+ _ZSt9use_facetINSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEERKT_RKSt6locale at GLIBCXX_LDBL_3.4 4.2.1
+ _ZSt9use_facetINSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEERKT_RKSt6locale at GLIBCXX_LDBL_3.4 4.2.1
+ _ZSt9use_facetINSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEERKT_RKSt6locale at GLIBCXX_LDBL_3.4 4.2.1
+ _ZSt9use_facetINSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEERKT_RKSt6locale at GLIBCXX_LDBL_3.4 4.2.1
+ _ZSt9use_facetINSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEEERKT_RKSt6locale at GLIBCXX_LDBL_3.4 4.2.1
+ _ZSt9use_facetINSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEEERKT_RKSt6locale at GLIBCXX_LDBL_3.4 4.2.1
+ _ZSt9use_facetINSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEEERKT_RKSt6locale at GLIBCXX_LDBL_3.4 4.2.1
+ _ZSt9use_facetINSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEEERKT_RKSt6locale at GLIBCXX_LDBL_3.4 4.2.1
+ _ZStlsIgcSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E at GLIBCXX_LDBL_3.4 4.2.1
+ _ZStlsIgwSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E at GLIBCXX_LDBL_3.4 4.2.1
+ _ZStrsIgcSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E at GLIBCXX_LDBL_3.4 4.2.1
+ _ZStrsIgwSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E at GLIBCXX_LDBL_3.4 4.2.1
+ _ZTINSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZTINSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZTINSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZTINSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZTINSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZTINSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZTINSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZTINSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZTIPKg at CXXABI_LDBL_1.3 4.2.1
+ _ZTIPg at CXXABI_LDBL_1.3 4.2.1
+ _ZTIg at CXXABI_LDBL_1.3 4.2.1
+ _ZTSNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZTSNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZTSNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZTSNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZTSNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZTSNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZTSNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZTSNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZTSPKg at CXXABI_LDBL_1.3 4.2.1
+ _ZTSPg at CXXABI_LDBL_1.3 4.2.1
+ _ZTSg at CXXABI_LDBL_1.3 4.2.1
+ _ZTVNSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZTVNSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZTVNSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZTVNSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZTVNSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZTVNSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZTVNSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEE at GLIBCXX_LDBL_3.4 4.2.1
+ _ZTVNSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEE at GLIBCXX_LDBL_3.4 4.2.1
diff --git a/debian/libstdc++6.symbols.m68k b/debian/libstdc++6.symbols.m68k
new file mode 100644
index 0000000..1e18564
--- /dev/null
+++ b/debian/libstdc++6.symbols.m68k
@@ -0,0 +1,6 @@
+libstdc++.so.6 libstdc++6 #MINVER#
+#include "libstdc++6.symbols.32bit"
+#include "libstdc++6.symbols.money.ldbl"
+ __gxx_personality_v0 at CXXABI_1.3 4.1.1
+ _ZNKSt3tr14hashIeEclEe at GLIBCXX_3.4.10 4.3.0
+ _ZNKSt4hashIeEclEe at GLIBCXX_3.4.10 4.3.0
diff --git a/debian/libstdc++6.symbols.mips b/debian/libstdc++6.symbols.mips
new file mode 100644
index 0000000..885c8d1
--- /dev/null
+++ b/debian/libstdc++6.symbols.mips
@@ -0,0 +1,7 @@
+libstdc++.so.6 libstdc++6 #MINVER#
+#include "libstdc++6.symbols.32bit"
+ __gxx_personality_v0 at CXXABI_1.3 4.1.1
+#include "libstdc++6.symbols.excprop"
+#include "libstdc++6.symbols.glibcxxmath"
+ _ZNKSt3tr14hashIeEclEe at GLIBCXX_3.4.10 4.3.0
+ _ZNKSt4hashIeEclEe at GLIBCXX_3.4.10 4.3.0
diff --git a/debian/libstdc++6.symbols.mips64 b/debian/libstdc++6.symbols.mips64
new file mode 100644
index 0000000..7aa71da
--- /dev/null
+++ b/debian/libstdc++6.symbols.mips64
@@ -0,0 +1,7 @@
+libstdc++.so.6 libstdc++6 #MINVER#
+#include "libstdc++6.symbols.64bit"
+#include "libstdc++6.symbols.128bit"
+#include "libstdc++6.symbols.excprop"
+#include "libstdc++6.symbols.money.ldbl"
+ _ZN9__gnu_cxx12__atomic_addEPVii at GLIBCXX_3.4 4.1.1
+ _ZN9__gnu_cxx18__exchange_and_addEPVii at GLIBCXX_3.4 4.1.1
diff --git a/debian/libstdc++6.symbols.mips64el b/debian/libstdc++6.symbols.mips64el
new file mode 100644
index 0000000..fcc4963
--- /dev/null
+++ b/debian/libstdc++6.symbols.mips64el
@@ -0,0 +1,10 @@
+libstdc++.so.6 libstdc++6 #MINVER#
+#include "libstdc++6.symbols.64bit"
+#include "libstdc++6.symbols.128bit"
+#include "libstdc++6.symbols.excprop"
+#include "libstdc++6.symbols.glibcxxmath"
+#include "libstdc++6.symbols.money.ldbl"
+ _ZN9__gnu_cxx12__atomic_addEPVii at GLIBCXX_3.4 4.1.1
+ _ZN9__gnu_cxx18__exchange_and_addEPVii at GLIBCXX_3.4 4.1.1
+ _ZNKSt3tr14hashIeEclEe at GLIBCXX_3.4.10 4.9.0
+ _ZNKSt4hashIeEclEe at GLIBCXX_3.4.10 4.9.0
diff --git a/debian/libstdc++6.symbols.mipsel b/debian/libstdc++6.symbols.mipsel
new file mode 100644
index 0000000..70ed99b
--- /dev/null
+++ b/debian/libstdc++6.symbols.mipsel
@@ -0,0 +1,8 @@
+libstdc++.so.6 libstdc++6 #MINVER#
+#include "libstdc++6.symbols.32bit"
+ __gxx_personality_v0 at CXXABI_1.3 4.1.1
+#include "libstdc++6.symbols.excprop"
+#include "libstdc++6.symbols.glibcxxmath"
+#include "libstdc++6.symbols.money.ldbl"
+ _ZNKSt3tr14hashIeEclEe at GLIBCXX_3.4.10 4.3.0
+ _ZNKSt4hashIeEclEe at GLIBCXX_3.4.10 4.3.0
diff --git a/debian/libstdc++6.symbols.money.f128 b/debian/libstdc++6.symbols.money.f128
new file mode 100644
index 0000000..eb08feb
--- /dev/null
+++ b/debian/libstdc++6.symbols.money.f128
@@ -0,0 +1,10 @@
+  GLIBCXX_LDBL_3.4.21 at GLIBCXX_LDBL_3.4.21 5
+# cxx11 symbols only
+ (optional=abi_c++11)_ZNKSt7__cxx119money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRg at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx119money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRg at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx119money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRg at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx119money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRg at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx119money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_bRSt8ios_basecg at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx119money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_bRSt8ios_basecg at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx119money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_bRSt8ios_basewg at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx119money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_bRSt8ios_basewg at GLIBCXX_3.4.21 5.2
diff --git a/debian/libstdc++6.symbols.money.ldbl b/debian/libstdc++6.symbols.money.ldbl
new file mode 100644
index 0000000..90ca289
--- /dev/null
+++ b/debian/libstdc++6.symbols.money.ldbl
@@ -0,0 +1,9 @@
+# cxx11 symbols only
+ (optional=abi_c++11)_ZNKSt7__cxx119money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE3getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRe at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx119money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE6do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRe at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx119money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE3getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRe at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx119money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE6do_getES4_S4_bRSt8ios_baseRSt12_Ios_IostateRe at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx119money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE3putES4_bRSt8ios_basece at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx119money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6do_putES4_bRSt8ios_basece at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx119money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE3putES4_bRSt8ios_basewe at GLIBCXX_3.4.21 5.2
+ (optional=abi_c++11)_ZNKSt7__cxx119money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6do_putES4_bRSt8ios_basewe at GLIBCXX_3.4.21 5.2
diff --git a/debian/libstdc++6.symbols.not-armel b/debian/libstdc++6.symbols.not-armel
new file mode 100644
index 0000000..9d9a404
--- /dev/null
+++ b/debian/libstdc++6.symbols.not-armel
@@ -0,0 +1,24 @@
+ _ZNSt13__future_base11_State_baseD0Ev at GLIBCXX_3.4.15 4.6
+ _ZNSt13__future_base11_State_baseD1Ev at GLIBCXX_3.4.15 4.6
+ _ZNSt13__future_base11_State_baseD2Ev at GLIBCXX_3.4.15 4.6
+ _ZNSt13__future_base12_Result_baseC1Ev at GLIBCXX_3.4.15 4.6
+ _ZNSt13__future_base12_Result_baseC2Ev at GLIBCXX_3.4.15 4.6
+ _ZNSt13__future_base12_Result_baseD0Ev at GLIBCXX_3.4.15 4.6
+ _ZNSt13__future_base12_Result_baseD1Ev at GLIBCXX_3.4.15 4.6
+ _ZNSt13__future_base12_Result_baseD2Ev at GLIBCXX_3.4.15 4.6
+ _ZNSt13__future_base13_State_baseV211_Make_ready6_M_setEv at GLIBCXX_3.4.21 5
+ _ZNSt13__future_base19_Async_state_commonD0Ev at GLIBCXX_3.4.17 4.7.0~rc1
+ _ZNSt13__future_base19_Async_state_commonD1Ev at GLIBCXX_3.4.17 4.7.0~rc1
+ _ZNSt13__future_base19_Async_state_commonD2Ev at GLIBCXX_3.4.17 4.7.0~rc1
+ _ZNSt16nested_exceptionD0Ev at CXXABI_1.3.5 4.6
+ _ZNSt16nested_exceptionD1Ev at CXXABI_1.3.5 4.6
+ _ZNSt16nested_exceptionD2Ev at CXXABI_1.3.5 4.6
+ _ZTINSt13__future_base11_State_baseE at GLIBCXX_3.4.15 4.6
+ _ZTINSt13__future_base12_Result_baseE at GLIBCXX_3.4.15 4.6
+ _ZTINSt13__future_base19_Async_state_commonE at GLIBCXX_3.4.17 4.7.0~rc1
+ _ZTISt16nested_exception at CXXABI_1.3.5 4.6
+ _ZTSNSt13__future_base19_Async_state_commonE at GLIBCXX_3.4.17 4.7.0~rc1
+ _ZTVNSt13__future_base11_State_baseE at GLIBCXX_3.4.15 4.6
+ _ZTVNSt13__future_base12_Result_baseE at GLIBCXX_3.4.15 4.6
+ _ZTVNSt13__future_base19_Async_state_commonE at GLIBCXX_3.4.17 4.7.0~rc1
+ _ZTVSt16nested_exception at CXXABI_1.3.5 4.6
diff --git a/debian/libstdc++6.symbols.powerpc b/debian/libstdc++6.symbols.powerpc
new file mode 100644
index 0000000..c731a55
--- /dev/null
+++ b/debian/libstdc++6.symbols.powerpc
@@ -0,0 +1,9 @@
+libstdc++.so.6 libstdc++6 #MINVER#
+#include "libstdc++6.symbols.32bit"
+#include "libstdc++6.symbols.excprop"
+ __gxx_personality_v0 at CXXABI_1.3 4.1.1
+#include "libstdc++6.symbols.glibcxxmath"
+#include "libstdc++6.symbols.ldbl.32bit"
+#include "libstdc++6.symbols.money.f128"
+ _ZNKSt3tr14hashIeEclEe at GLIBCXX_3.4.10 4.3.0~rc2
+ _ZNKSt4hashIeEclEe at GLIBCXX_3.4.10 4.3.0~rc2
diff --git a/debian/libstdc++6.symbols.powerpcspe b/debian/libstdc++6.symbols.powerpcspe
new file mode 100644
index 0000000..653ed1a
--- /dev/null
+++ b/debian/libstdc++6.symbols.powerpcspe
@@ -0,0 +1,8 @@
+libstdc++.so.6 libstdc++6 #MINVER#
+#include "libstdc++6.symbols.32bit"
+#include "libstdc++6.symbols.excprop"
+ __gxx_personality_v0 at CXXABI_1.3 4.1.1
+#include "libstdc++6.symbols.glibcxxmath"
+#include "libstdc++6.symbols.ldbl.32bit"
+ _ZNKSt3tr14hashIeEclEe at GLIBCXX_3.4.10 4.3.0~rc2
+ _ZNKSt4hashIeEclEe at GLIBCXX_3.4.10 4.3.0~rc2
diff --git a/debian/libstdc++6.symbols.ppc64 b/debian/libstdc++6.symbols.ppc64
new file mode 100644
index 0000000..617f232
--- /dev/null
+++ b/debian/libstdc++6.symbols.ppc64
@@ -0,0 +1,11 @@
+libstdc++.so.6 libstdc++6 #MINVER#
+#include "libstdc++6.symbols.64bit"
+#include "libstdc++6.symbols.128bit"
+#include "libstdc++6.symbols.excprop"
+ _ZN9__gnu_cxx12__atomic_addEPVii at GLIBCXX_3.4 4.1.1
+ _ZN9__gnu_cxx18__exchange_and_addEPVii at GLIBCXX_3.4 4.1.1
+#include "libstdc++6.symbols.glibcxxmath"
+#include "libstdc++6.symbols.ldbl.64bit"
+#include "libstdc++6.symbols.money.f128"
+ _ZNKSt3tr14hashIeEclEe at GLIBCXX_3.4.10 4.3.0~rc2
+ _ZNKSt4hashIeEclEe at GLIBCXX_3.4.10 4.3.0~rc2
diff --git a/debian/libstdc++6.symbols.ppc64el b/debian/libstdc++6.symbols.ppc64el
new file mode 100644
index 0000000..617f232
--- /dev/null
+++ b/debian/libstdc++6.symbols.ppc64el
@@ -0,0 +1,11 @@
+libstdc++.so.6 libstdc++6 #MINVER#
+#include "libstdc++6.symbols.64bit"
+#include "libstdc++6.symbols.128bit"
+#include "libstdc++6.symbols.excprop"
+ _ZN9__gnu_cxx12__atomic_addEPVii at GLIBCXX_3.4 4.1.1
+ _ZN9__gnu_cxx18__exchange_and_addEPVii at GLIBCXX_3.4 4.1.1
+#include "libstdc++6.symbols.glibcxxmath"
+#include "libstdc++6.symbols.ldbl.64bit"
+#include "libstdc++6.symbols.money.f128"
+ _ZNKSt3tr14hashIeEclEe at GLIBCXX_3.4.10 4.3.0~rc2
+ _ZNKSt4hashIeEclEe at GLIBCXX_3.4.10 4.3.0~rc2
diff --git a/debian/libstdc++6.symbols.s390 b/debian/libstdc++6.symbols.s390
new file mode 100644
index 0000000..bc45065
--- /dev/null
+++ b/debian/libstdc++6.symbols.s390
@@ -0,0 +1,558 @@
+libstdc++.so.6 libstdc++6 #MINVER#
+#include "libstdc++6.symbols.common"
+#include "libstdc++6.symbols.excprop"
+ _ZN9__gnu_cxx12__atomic_addEPVii at GLIBCXX_3.4 4.1.1
+ _ZN9__gnu_cxx17__pool_alloc_base16_M_get_free_listEm at GLIBCXX_3.4.2 4.1.1
+ _ZN9__gnu_cxx17__pool_alloc_base9_M_refillEm at GLIBCXX_3.4.2 4.1.1
+ _ZN9__gnu_cxx18__exchange_and_addEPVii at GLIBCXX_3.4 4.1.1
+ _ZN9__gnu_cxx6__poolILb0EE16_M_reclaim_blockEPcm at GLIBCXX_3.4.4 4.1.1
+ _ZN9__gnu_cxx6__poolILb0EE16_M_reserve_blockEmm at GLIBCXX_3.4.4 4.1.1
+ _ZN9__gnu_cxx6__poolILb1EE16_M_reclaim_blockEPcm at GLIBCXX_3.4.4 4.1.1
+ _ZN9__gnu_cxx6__poolILb1EE16_M_reserve_blockEmm at GLIBCXX_3.4.4 4.1.1
+ _ZN9__gnu_cxx9free_list6_M_getEm at GLIBCXX_3.4.4 4.1.1
+ _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE6xsgetnEPci at GLIBCXX_3.4.10 4.3.0~rc2
+ _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE6xsputnEPKci at GLIBCXX_3.4.10 4.3.0~rc2
+ _ZN9__gnu_cxx18stdio_sync_filebufIcSt11char_traitsIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode at GLIBCXX_3.4.10 4.3.0~rc2
+ _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE6xsgetnEPwi at GLIBCXX_3.4.10 4.3.0~rc2
+ _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE6xsputnEPKwi at GLIBCXX_3.4.10 4.3.0~rc2
+ _ZN9__gnu_cxx18stdio_sync_filebufIwSt11char_traitsIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode at GLIBCXX_3.4.10 4.3.0~rc2
+ _ZNK10__cxxabiv117__class_type_info12__do_dyncastEiNS0_10__sub_kindEPKS0_PKvS3_S5_RNS0_16__dyncast_resultE at CXXABI_1.3 4.1.1
+ _ZNK10__cxxabiv117__class_type_info20__do_find_public_srcEiPKvPKS0_S2_ at CXXABI_1.3 4.1.1
+ _ZNK10__cxxabiv120__si_class_type_info12__do_dyncastEiNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE at CXXABI_1.3 4.1.1
+ _ZNK10__cxxabiv120__si_class_type_info20__do_find_public_srcEiPKvPKNS_17__class_type_infoES2_ at CXXABI_1.3 4.1.1
+ _ZNK10__cxxabiv121__vmi_class_type_info12__do_dyncastEiNS_17__class_type_info10__sub_kindEPKS1_PKvS4_S6_RNS1_16__dyncast_resultE at CXXABI_1.3 4.1.1
+ _ZNK10__cxxabiv121__vmi_class_type_info20__do_find_public_srcEiPKvPKNS_17__class_type_infoES2_ at CXXABI_1.3 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwm at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEPKwmm at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofERKS2_m at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE12find_last_ofEwm at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEPKwm at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEPKwmm at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofERKS2_m at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE13find_first_ofEwm at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE15_M_check_lengthEmmPKc at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE15_M_check_lengthEmmPKc at GLIBCXX_3.4.5 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEPKwm at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEPKwmm at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofERKS2_m at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE16find_last_not_ofEwm at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEPKwm at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEPKwmm at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofERKS2_m at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE17find_first_not_ofEwm at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE2atEm at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE4copyEPwmm at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE4findEPKwm at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE4findEPKwmm at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE4findERKS2_m at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE4findEwm at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE5rfindEPKwm at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE5rfindEPKwmm at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE5rfindERKS2_m at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE5rfindEwm at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE6substrEmm at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE7compareEmmPKw at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE7compareEmmPKwm at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE7compareEmmRKS2_ at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE7compareEmmRKS2_mm at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE8_M_checkEmPKc at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEE8_M_limitEmm at GLIBCXX_3.4 4.1.1
+ _ZNKSbIwSt11char_traitsIwESaIwEEixEm at GLIBCXX_3.4 4.1.1
+ _ZNKSs12find_last_ofEPKcm at GLIBCXX_3.4 4.1.1
+ _ZNKSs12find_last_ofEPKcmm at GLIBCXX_3.4 4.1.1
+ _ZNKSs12find_last_ofERKSsm at GLIBCXX_3.4 4.1.1
+ _ZNKSs12find_last_ofEcm at GLIBCXX_3.4 4.1.1
+ _ZNKSs13find_first_ofEPKcm at GLIBCXX_3.4 4.1.1
+ _ZNKSs13find_first_ofEPKcmm at GLIBCXX_3.4 4.1.1
+ _ZNKSs13find_first_ofERKSsm at GLIBCXX_3.4 4.1.1
+ _ZNKSs13find_first_ofEcm at GLIBCXX_3.4 4.1.1
+ _ZNKSs15_M_check_lengthEmmPKc at GLIBCXX_3.4 4.1.1
+ _ZNKSs15_M_check_lengthEmmPKc at GLIBCXX_3.4.5 4.1.1
+ _ZNKSs16find_last_not_ofEPKcm at GLIBCXX_3.4 4.1.1
+ _ZNKSs16find_last_not_ofEPKcmm at GLIBCXX_3.4 4.1.1
+ _ZNKSs16find_last_not_ofERKSsm at GLIBCXX_3.4 4.1.1
+ _ZNKSs16find_last_not_ofEcm at GLIBCXX_3.4 4.1.1
+ _ZNKSs17find_first_not_ofEPKcm at GLIBCXX_3.4 4.1.1
+ _ZNKSs17find_first_not_ofEPKcmm at GLIBCXX_3.4 4.1.1
+ _ZNKSs17find_first_not_ofERKSsm at GLIBCXX_3.4 4.1.1
+ _ZNKSs17find_first_not_ofEcm at GLIBCXX_3.4 4.1.1
+ _ZNKSs2atEm at GLIBCXX_3.4 4.1.1
+ _ZNKSs4copyEPcmm at GLIBCXX_3.4 4.1.1
+ _ZNKSs4findEPKcm at GLIBCXX_3.4 4.1.1
+ _ZNKSs4findEPKcmm at GLIBCXX_3.4 4.1.1
+ _ZNKSs4findERKSsm at GLIBCXX_3.4 4.1.1
+ _ZNKSs4findEcm at GLIBCXX_3.4 4.1.1
+ _ZNKSs5rfindEPKcm at GLIBCXX_3.4 4.1.1
+ _ZNKSs5rfindEPKcmm at GLIBCXX_3.4 4.1.1
+ _ZNKSs5rfindERKSsm at GLIBCXX_3.4 4.1.1
+ _ZNKSs5rfindEcm at GLIBCXX_3.4 4.1.1
+ _ZNKSs6substrEmm at GLIBCXX_3.4 4.1.1
+ _ZNKSs7compareEmmPKc at GLIBCXX_3.4 4.1.1
+ _ZNKSs7compareEmmPKcm at GLIBCXX_3.4 4.1.1
+ _ZNKSs7compareEmmRKSs at GLIBCXX_3.4 4.1.1
+ _ZNKSs7compareEmmRKSsmm at GLIBCXX_3.4 4.1.1
+ _ZNKSs8_M_checkEmPKc at GLIBCXX_3.4 4.1.1
+ _ZNKSs8_M_limitEmm at GLIBCXX_3.4 4.1.1
+ _ZNKSsixEm at GLIBCXX_3.4 4.1.1
+ _ZNKSt11__timepunctIcE6_M_putEPcmPKcPK2tm at GLIBCXX_3.4 4.1.1
+ _ZNKSt11__timepunctIwE6_M_putEPwmPKwPK2tm at GLIBCXX_3.4 4.1.1
+ _ZNKSt3tr14hashIeEclEe at GLIBCXX_3.4.10 4.3
+ _ZNKSt4hashIeEclEe at GLIBCXX_3.4.10 4.3
+ _ZNKSt7codecvtIcc11__mbstate_tE9do_lengthERS0_PKcS4_m at GLIBCXX_3.4 4.1.1
+ _ZNKSt7codecvtIwc11__mbstate_tE9do_lengthERS0_PKcS4_m at GLIBCXX_3.4 4.1.1
+ _ZNKSt7collateIcE12_M_transformEPcPKcm at GLIBCXX_3.4 4.1.1
+ _ZNKSt7collateIwE12_M_transformEPwPKwm at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE12_M_group_intEPKcmcRSt8ios_basePcS9_Ri at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE14_M_group_floatEPKcmcS6_PcS7_Ri at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE6_M_padEciRSt8ios_basePcPKcRi at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE12_M_group_intEPKcmwRSt8ios_basePwS9_Ri at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE14_M_group_floatEPKcmwPKwPwS9_Ri at GLIBCXX_3.4 4.1.1
+ _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE6_M_padEwiRSt8ios_basePwPKwRi at GLIBCXX_3.4 4.1.1
+ _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_numES3_S3_RiiimRSt8ios_baseRSt12_Ios_Iostate at GLIBCXX_3.4 4.1.1
+ _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE15_M_extract_nameES3_S3_RiPPKcmRSt8ios_baseRSt12_Ios_Iostate at GLIBCXX_3.4 4.1.1
+ _ZNKSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE24_M_extract_wday_or_monthES3_S3_RiPPKcmRSt8ios_baseRSt12_Ios_Iostate at GLIBCXX_3.4.14 4.5.0
+ _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_numES3_S3_RiiimRSt8ios_baseRSt12_Ios_Iostate at GLIBCXX_3.4 4.1.1
+ _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE15_M_extract_nameES3_S3_RiPPKwmRSt8ios_baseRSt12_Ios_Iostate at GLIBCXX_3.4 4.1.1
+ _ZNKSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE24_M_extract_wday_or_monthES3_S3_RiPPKwmRSt8ios_baseRSt12_Ios_Iostate at GLIBCXX_3.4.14 4.5.0
+ _ZNKSt8valarrayImE4sizeEv at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE10_S_compareEmm at GLIBCXX_3.4.16 4.7
+ _ZNSbIwSt11char_traitsIwESaIwEE12_S_constructEmwRKS1_ at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE14_M_replace_auxEmmmw at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE15_M_replace_safeEmmPKwm at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE18_S_construct_aux_2EmwRKS1_ at GLIBCXX_3.4.14 4.5.0
+ _ZNSbIwSt11char_traitsIwESaIwEE2atEm at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE4_Rep26_M_set_length_and_sharableEm at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE4_Rep26_M_set_length_and_sharableEm at GLIBCXX_3.4.5 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE4_Rep8_M_cloneERKS1_m at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE4_Rep9_S_createEmmRKS1_ at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE5eraseEmm at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6appendEPKwm at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6appendERKS2_mm at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6appendEmw at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6assignEPKwm at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6assignERKS2_mm at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6assignEmw at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6insertEN9__gnu_cxx17__normal_iteratorIPwS2_EEmw at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6insertEmPKw at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6insertEmPKwm at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6insertEmRKS2_ at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6insertEmRKS2_mm at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6insertEmmw at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6resizeEm at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE6resizeEmw at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7_M_copyEPwPKwm at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7_M_copyEPwPKwm at GLIBCXX_3.4.5 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7_M_moveEPwPKwm at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7_M_moveEPwPKwm at GLIBCXX_3.4.5 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_PKwm at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7replaceEN9__gnu_cxx17__normal_iteratorIPwS2_EES6_mw at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmPKw at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmPKwm at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmRKS2_ at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmRKS2_mm at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7replaceEmmmw at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE7reserveEm at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwmw at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwmw at GLIBCXX_3.4.5 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEE9_M_mutateEmmm at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEC1EPKwmRKS1_ at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_mm at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEC1ERKS2_mmRKS1_ at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEC1EmwRKS1_ at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEC2EPKwmRKS1_ at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_mm at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEC2ERKS2_mmRKS1_ at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEC2EmwRKS1_ at GLIBCXX_3.4 4.1.1
+ _ZNSbIwSt11char_traitsIwESaIwEEixEm at GLIBCXX_3.4 4.1.1
+ _ZNSi3getEPci at GLIBCXX_3.4 4.1.1
+ _ZNSi3getEPcic at GLIBCXX_3.4 4.1.1
+ _ZNSi4readEPci at GLIBCXX_3.4 4.1.1
+ _ZNSi5seekgExSt12_Ios_Seekdir at GLIBCXX_3.4 4.1.1
+ _ZNSi6ignoreEi at GLIBCXX_3.4 4.1.1
+ _ZNSi6ignoreEi at GLIBCXX_3.4.5 4.1.1
+ _ZNSi6ignoreEii at GLIBCXX_3.4 4.1.1
+ _ZNSi7getlineEPci at GLIBCXX_3.4 4.1.1
+ _ZNSi7getlineEPcic at GLIBCXX_3.4 4.1.1
+ _ZNSi8readsomeEPci at GLIBCXX_3.4 4.1.1
+ _ZNSo5seekpExSt12_Ios_Seekdir at GLIBCXX_3.4 4.1.1
+ _ZNSo5writeEPKci at GLIBCXX_3.4 4.1.1
+ _ZNSo8_M_writeEPKci at GLIBCXX_3.4 4.1.1
+ _ZNSs10_S_compareEmm at GLIBCXX_3.4.16 4.7
+ _ZNSs12_S_constructEmcRKSaIcE at GLIBCXX_3.4 4.1.1
+ _ZNSs14_M_replace_auxEmmmc at GLIBCXX_3.4 4.1.1
+ _ZNSs15_M_replace_safeEmmPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSs18_S_construct_aux_2EmcRKSaIcE at GLIBCXX_3.4.14 4.5.0
+ _ZNSs2atEm at GLIBCXX_3.4 4.1.1
+ _ZNSs4_Rep26_M_set_length_and_sharableEm at GLIBCXX_3.4 4.1.1
+ _ZNSs4_Rep26_M_set_length_and_sharableEm at GLIBCXX_3.4.5 4.1.1
+ _ZNSs4_Rep8_M_cloneERKSaIcEm at GLIBCXX_3.4 4.1.1
+ _ZNSs4_Rep9_S_createEmmRKSaIcE at GLIBCXX_3.4 4.1.1
+ _ZNSs5eraseEmm at GLIBCXX_3.4 4.1.1
+ _ZNSs6appendEPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSs6appendERKSsmm at GLIBCXX_3.4 4.1.1
+ _ZNSs6appendEmc at GLIBCXX_3.4 4.1.1
+ _ZNSs6assignEPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSs6assignERKSsmm at GLIBCXX_3.4 4.1.1
+ _ZNSs6assignEmc at GLIBCXX_3.4 4.1.1
+ _ZNSs6insertEN9__gnu_cxx17__normal_iteratorIPcSsEEmc at GLIBCXX_3.4 4.1.1
+ _ZNSs6insertEmPKc at GLIBCXX_3.4 4.1.1
+ _ZNSs6insertEmPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSs6insertEmRKSs at GLIBCXX_3.4 4.1.1
+ _ZNSs6insertEmRKSsmm at GLIBCXX_3.4 4.1.1
+ _ZNSs6insertEmmc at GLIBCXX_3.4 4.1.1
+ _ZNSs6resizeEm at GLIBCXX_3.4 4.1.1
+ _ZNSs6resizeEmc at GLIBCXX_3.4 4.1.1
+ _ZNSs7_M_copyEPcPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSs7_M_copyEPcPKcm at GLIBCXX_3.4.5 4.1.1
+ _ZNSs7_M_moveEPcPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSs7_M_moveEPcPKcm at GLIBCXX_3.4.5 4.1.1
+ _ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKcm at GLIBCXX_3.4 4.1.1
+ _ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_mc at GLIBCXX_3.4 4.1.1
+ _ZNSs7replaceEmmPKc at GLIBCXX_3.4 4.1.1
+ _ZNSs7replaceEmmPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSs7replaceEmmRKSs at GLIBCXX_3.4 4.1.1
+ _ZNSs7replaceEmmRKSsmm at GLIBCXX_3.4 4.1.1
+ _ZNSs7replaceEmmmc at GLIBCXX_3.4 4.1.1
+ _ZNSs7reserveEm at GLIBCXX_3.4 4.1.1
+ _ZNSs9_M_assignEPcmc at GLIBCXX_3.4 4.1.1
+ _ZNSs9_M_assignEPcmc at GLIBCXX_3.4.5 4.1.1
+ _ZNSs9_M_mutateEmmm at GLIBCXX_3.4 4.1.1
+ _ZNSsC1EPKcmRKSaIcE at GLIBCXX_3.4 4.1.1
+ _ZNSsC1ERKSsmm at GLIBCXX_3.4 4.1.1
+ _ZNSsC1ERKSsmmRKSaIcE at GLIBCXX_3.4 4.1.1
+ _ZNSsC1EmcRKSaIcE at GLIBCXX_3.4 4.1.1
+ _ZNSsC2EPKcmRKSaIcE at GLIBCXX_3.4 4.1.1
+ _ZNSsC2ERKSsmm at GLIBCXX_3.4 4.1.1
+ _ZNSsC2ERKSsmmRKSaIcE at GLIBCXX_3.4 4.1.1
+ _ZNSsC2EmcRKSaIcE at GLIBCXX_3.4 4.1.1
+ _ZNSsixEm at GLIBCXX_3.4 4.1.1
+ _ZNSt10istrstreamC1EPKci at GLIBCXX_3.4 4.1.1
+ _ZNSt10istrstreamC1EPci at GLIBCXX_3.4 4.1.1
+ _ZNSt10istrstreamC2EPKci at GLIBCXX_3.4 4.1.1
+ _ZNSt10istrstreamC2EPci at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb0EEC1EP15__locale_structPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb0EEC1EPSt18__moneypunct_cacheIcLb0EEm at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb0EEC1Em at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb0EEC2EP15__locale_structPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb0EEC2EPSt18__moneypunct_cacheIcLb0EEm at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb0EEC2Em at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb1EEC1EP15__locale_structPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb1EEC1EPSt18__moneypunct_cacheIcLb1EEm at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb1EEC1Em at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb1EEC2EP15__locale_structPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb1EEC2EPSt18__moneypunct_cacheIcLb1EEm at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIcLb1EEC2Em at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb0EEC1EP15__locale_structPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb0EEC1EPSt18__moneypunct_cacheIwLb0EEm at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb0EEC1Em at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb0EEC2EP15__locale_structPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb0EEC2EPSt18__moneypunct_cacheIwLb0EEm at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb0EEC2Em at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb1EEC1EP15__locale_structPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb1EEC1EPSt18__moneypunct_cacheIwLb1EEm at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb1EEC1Em at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb1EEC2EP15__locale_structPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb1EEC2EPSt18__moneypunct_cacheIwLb1EEm at GLIBCXX_3.4 4.1.1
+ _ZNSt10moneypunctIwLb1EEC2Em at GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIcEC1EP15__locale_structPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIcEC1EPSt17__timepunct_cacheIcEm at GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIcEC1Em at GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIcEC2EP15__locale_structPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIcEC2EPSt17__timepunct_cacheIcEm at GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIcEC2Em at GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIwEC1EP15__locale_structPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIwEC1EPSt17__timepunct_cacheIwEm at GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIwEC1Em at GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIwEC2EP15__locale_structPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIwEC2EPSt17__timepunct_cacheIwEm at GLIBCXX_3.4 4.1.1
+ _ZNSt11__timepunctIwEC2Em at GLIBCXX_3.4 4.1.1
+ _ZNSt11this_thread11__sleep_forENSt6chrono8durationIxSt5ratioILx1ELx1EEEENS1_IxS2_ILx1ELx1000000000EEEE at GLIBCXX_3.4.18 4.8
+ _ZNSt12__basic_fileIcE6xsgetnEPci at GLIBCXX_3.4 4.1.1
+ _ZNSt12__basic_fileIcE6xsputnEPKci at GLIBCXX_3.4 4.1.1
+ _ZNSt12__basic_fileIcE7seekoffExSt12_Ios_Seekdir at GLIBCXX_3.4 4.1.1
+ _ZNSt12__basic_fileIcE8xsputn_2EPKciS2_i at GLIBCXX_3.4 4.1.1
+ _ZNSt12ctype_bynameIcEC1EPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt12ctype_bynameIcEC2EPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt12ctype_bynameIwEC1EPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt12ctype_bynameIwEC2EPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambuf6setbufEPci at GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambuf7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode at GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambuf8_M_allocEm at GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambuf8_M_setupEPcS0_i at GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC1EPFPvmEPFvS0_E at GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC1EPKai at GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC1EPKci at GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC1EPKhi at GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC1EPaiS0_ at GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC1EPciS0_ at GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC1EPhiS0_ at GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC1Ei at GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC2EPFPvmEPFvS0_E at GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC2EPKai at GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC2EPKci at GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC2EPKhi at GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC2EPaiS0_ at GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC2EPciS0_ at GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC2EPhiS0_ at GLIBCXX_3.4 4.1.1
+ _ZNSt12strstreambufC2Ei at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIcSt11char_traitsIcEE13_M_set_bufferEi at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIcSt11char_traitsIcEE22_M_convert_to_externalEPci at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIcSt11char_traitsIcEE6setbufEPci at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIcSt11char_traitsIcEE6xsgetnEPci at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIcSt11char_traitsIcEE6xsputnEPKci at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIcSt11char_traitsIcEE7_M_seekExSt12_Ios_Seekdir11__mbstate_t at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIcSt11char_traitsIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIwSt11char_traitsIwEE13_M_set_bufferEi at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIwSt11char_traitsIwEE22_M_convert_to_externalEPwi at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIwSt11char_traitsIwEE6setbufEPwi at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIwSt11char_traitsIwEE6xsgetnEPwi at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIwSt11char_traitsIwEE6xsputnEPKwi at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIwSt11char_traitsIwEE7_M_seekExSt12_Ios_Seekdir11__mbstate_t at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_filebufIwSt11char_traitsIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE3getEPwi at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE3getEPwiw at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE4readEPwi at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE5seekgExSt12_Ios_Seekdir at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEi at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEi at GLIBCXX_3.4.5 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEij at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE7getlineEPwi at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE7getlineEPwiw at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_istreamIwSt11char_traitsIwEE8readsomeEPwi at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEE5seekpExSt12_Ios_Seekdir at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEE5writeEPKwi at GLIBCXX_3.4 4.1.1
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEE8_M_writeEPKwi at GLIBCXX_3.4 4.1.1
+ _ZNSt14codecvt_bynameIcc11__mbstate_tEC1EPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt14codecvt_bynameIcc11__mbstate_tEC2EPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt14codecvt_bynameIwc11__mbstate_tEC1EPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt14codecvt_bynameIwc11__mbstate_tEC2EPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt14collate_bynameIcEC1EPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt14collate_bynameIcEC2EPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt14collate_bynameIwEC1EPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt14collate_bynameIwEC2EPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE10pubseekoffExSt12_Ios_SeekdirSt13_Ios_Openmode at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE12__safe_gbumpEi at GLIBCXX_3.4.16 4.7
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE12__safe_pbumpEi at GLIBCXX_3.4.16 4.7
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE5sgetnEPci at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE5sputnEPKci at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE6setbufEPci at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE6xsgetnEPci at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE6xsputnEPKci at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIcSt11char_traitsIcEE9pubsetbufEPci at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE10pubseekoffExSt12_Ios_SeekdirSt13_Ios_Openmode at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE12__safe_gbumpEi at GLIBCXX_3.4.16 4.7
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE12__safe_pbumpEi at GLIBCXX_3.4.16 4.7
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE5sgetnEPwi at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE5sputnEPKwi at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE6setbufEPwi at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE6xsgetnEPwi at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE6xsputnEPKwi at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_streambufIwSt11char_traitsIwEE9pubsetbufEPwi at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE6setbufEPci at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7_M_syncEPcmm at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIcSt11char_traitsIcESaIcEE8_M_pbumpEPcS4_x at GLIBCXX_3.4.16 4.7
+ _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE6setbufEPwi at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7_M_syncEPwmm at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE7seekoffExSt12_Ios_SeekdirSt13_Ios_Openmode at GLIBCXX_3.4 4.1.1
+ _ZNSt15basic_stringbufIwSt11char_traitsIwESaIwEE8_M_pbumpEPwS4_x at GLIBCXX_3.4.16 4.7
+ _ZNSt15messages_bynameIcEC1EPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt15messages_bynameIcEC2EPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt15messages_bynameIwEC1EPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt15messages_bynameIwEC2EPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt15numpunct_bynameIcEC1EPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt15numpunct_bynameIcEC2EPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt15numpunct_bynameIwEC1EPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt15numpunct_bynameIwEC2EPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1EPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt15time_get_bynameIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2EPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1EPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt15time_get_bynameIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2EPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1EPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt15time_put_bynameIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2EPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1EPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt15time_put_bynameIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2EPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt16__numpunct_cacheIcEC1Em at GLIBCXX_3.4 4.1.1
+ _ZNSt16__numpunct_cacheIcEC2Em at GLIBCXX_3.4 4.1.1
+ _ZNSt16__numpunct_cacheIwEC1Em at GLIBCXX_3.4 4.1.1
+ _ZNSt16__numpunct_cacheIwEC2Em at GLIBCXX_3.4 4.1.1
+ _ZNSt17__timepunct_cacheIcEC1Em at GLIBCXX_3.4 4.1.1
+ _ZNSt17__timepunct_cacheIcEC2Em at GLIBCXX_3.4 4.1.1
+ _ZNSt17__timepunct_cacheIwEC1Em at GLIBCXX_3.4 4.1.1
+ _ZNSt17__timepunct_cacheIwEC2Em at GLIBCXX_3.4 4.1.1
+ _ZNSt17moneypunct_bynameIcLb0EEC1EPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt17moneypunct_bynameIcLb0EEC2EPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt17moneypunct_bynameIcLb1EEC1EPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt17moneypunct_bynameIcLb1EEC2EPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt17moneypunct_bynameIwLb0EEC1EPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt17moneypunct_bynameIwLb0EEC2EPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt17moneypunct_bynameIwLb1EEC1EPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt17moneypunct_bynameIwLb1EEC2EPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt18__moneypunct_cacheIcLb0EEC1Em at GLIBCXX_3.4 4.1.1
+ _ZNSt18__moneypunct_cacheIcLb0EEC2Em at GLIBCXX_3.4 4.1.1
+ _ZNSt18__moneypunct_cacheIcLb1EEC1Em at GLIBCXX_3.4 4.1.1
+ _ZNSt18__moneypunct_cacheIcLb1EEC2Em at GLIBCXX_3.4 4.1.1
+ _ZNSt18__moneypunct_cacheIwLb0EEC1Em at GLIBCXX_3.4 4.1.1
+ _ZNSt18__moneypunct_cacheIwLb0EEC2Em at GLIBCXX_3.4 4.1.1
+ _ZNSt18__moneypunct_cacheIwLb1EEC1Em at GLIBCXX_3.4 4.1.1
+ _ZNSt18__moneypunct_cacheIwLb1EEC2Em at GLIBCXX_3.4 4.1.1
+ _ZNSt5ctypeIcEC1EP15__locale_structPKtbm at GLIBCXX_3.4 4.1.1
+ _ZNSt5ctypeIcEC1EPKtbm at GLIBCXX_3.4 4.1.1
+ _ZNSt5ctypeIcEC2EP15__locale_structPKtbm at GLIBCXX_3.4 4.1.1
+ _ZNSt5ctypeIcEC2EPKtbm at GLIBCXX_3.4 4.1.1
+ _ZNSt5ctypeIwEC1EP15__locale_structm at GLIBCXX_3.4 4.1.1
+ _ZNSt5ctypeIwEC1Em at GLIBCXX_3.4 4.1.1
+ _ZNSt5ctypeIwEC2EP15__locale_structm at GLIBCXX_3.4 4.1.1
+ _ZNSt5ctypeIwEC2Em at GLIBCXX_3.4 4.1.1
+ _ZNSt6gslice8_IndexerC1EmRKSt8valarrayImES4_ at GLIBCXX_3.4 4.1.1
+ _ZNSt6gslice8_IndexerC2EmRKSt8valarrayImES4_ at GLIBCXX_3.4 4.1.1
+ _ZNSt6locale5_Impl16_M_install_cacheEPKNS_5facetEm at GLIBCXX_3.4.7 4.1.1
+ _ZNSt6locale5_ImplC1EPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt6locale5_ImplC1ERKS0_m at GLIBCXX_3.4 4.1.1
+ _ZNSt6locale5_ImplC1Em at GLIBCXX_3.4 4.1.1
+ _ZNSt6locale5_ImplC2EPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt6locale5_ImplC2ERKS0_m at GLIBCXX_3.4 4.1.1
+ _ZNSt6locale5_ImplC2Em at GLIBCXX_3.4 4.1.1
+ _ZNSt7codecvtIcc11__mbstate_tEC1EP15__locale_structm at GLIBCXX_3.4 4.1.1
+ _ZNSt7codecvtIcc11__mbstate_tEC1Em at GLIBCXX_3.4 4.1.1
+ _ZNSt7codecvtIcc11__mbstate_tEC2EP15__locale_structm at GLIBCXX_3.4 4.1.1
+ _ZNSt7codecvtIcc11__mbstate_tEC2Em at GLIBCXX_3.4 4.1.1
+ _ZNSt7codecvtIwc11__mbstate_tEC1EP15__locale_structm at GLIBCXX_3.4 4.1.1
+ _ZNSt7codecvtIwc11__mbstate_tEC1Em at GLIBCXX_3.4 4.1.1
+ _ZNSt7codecvtIwc11__mbstate_tEC2EP15__locale_structm at GLIBCXX_3.4 4.1.1
+ _ZNSt7codecvtIwc11__mbstate_tEC2Em at GLIBCXX_3.4 4.1.1
+ _ZNSt7collateIcEC1EP15__locale_structm at GLIBCXX_3.4 4.1.1
+ _ZNSt7collateIcEC1Em at GLIBCXX_3.4 4.1.1
+ _ZNSt7collateIcEC2EP15__locale_structm at GLIBCXX_3.4 4.1.1
+ _ZNSt7collateIcEC2Em at GLIBCXX_3.4 4.1.1
+ _ZNSt7collateIwEC1EP15__locale_structm at GLIBCXX_3.4 4.1.1
+ _ZNSt7collateIwEC1Em at GLIBCXX_3.4 4.1.1
+ _ZNSt7collateIwEC2EP15__locale_structm at GLIBCXX_3.4 4.1.1
+ _ZNSt7collateIwEC2Em at GLIBCXX_3.4 4.1.1
+ _ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em at GLIBCXX_3.4 4.1.1
+ _ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em at GLIBCXX_3.4 4.1.1
+ _ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Em at GLIBCXX_3.4 4.1.1
+ _ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Em at GLIBCXX_3.4 4.1.1
+ _ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Em at GLIBCXX_3.4 4.1.1
+ _ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Em at GLIBCXX_3.4 4.1.1
+ _ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Em at GLIBCXX_3.4 4.1.1
+ _ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em at GLIBCXX_3.4 4.1.1
+ _ZNSt8messagesIcEC1EP15__locale_structPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt8messagesIcEC1Em at GLIBCXX_3.4 4.1.1
+ _ZNSt8messagesIcEC2EP15__locale_structPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt8messagesIcEC2Em at GLIBCXX_3.4 4.1.1
+ _ZNSt8messagesIwEC1EP15__locale_structPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt8messagesIwEC1Em at GLIBCXX_3.4 4.1.1
+ _ZNSt8messagesIwEC2EP15__locale_structPKcm at GLIBCXX_3.4 4.1.1
+ _ZNSt8messagesIwEC2Em at GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIcEC1EP15__locale_structm at GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIcEC1EPSt16__numpunct_cacheIcEm at GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIcEC1Em at GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIcEC2EP15__locale_structm at GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIcEC2EPSt16__numpunct_cacheIcEm at GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIcEC2Em at GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIwEC1EP15__locale_structm at GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIwEC1EPSt16__numpunct_cacheIwEm at GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIwEC1Em at GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIwEC2EP15__locale_structm at GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIwEC2EPSt16__numpunct_cacheIwEm at GLIBCXX_3.4 4.1.1
+ _ZNSt8numpunctIwEC2Em at GLIBCXX_3.4 4.1.1
+ _ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em at GLIBCXX_3.4 4.1.1
+ _ZNSt8time_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em at GLIBCXX_3.4 4.1.1
+ _ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Em at GLIBCXX_3.4 4.1.1
+ _ZNSt8time_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Em at GLIBCXX_3.4 4.1.1
+ _ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Em at GLIBCXX_3.4 4.1.1
+ _ZNSt8time_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Em at GLIBCXX_3.4 4.1.1
+ _ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Em at GLIBCXX_3.4 4.1.1
+ _ZNSt8time_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em at GLIBCXX_3.4 4.1.1
+ _ZNSt8valarrayImEC1ERKS0_ at GLIBCXX_3.4 4.1.1
+ _ZNSt8valarrayImEC1Em at GLIBCXX_3.4 4.1.1
+ _ZNSt8valarrayImEC2ERKS0_ at GLIBCXX_3.4 4.1.1
+ _ZNSt8valarrayImEC2Em at GLIBCXX_3.4 4.1.1
+ _ZNSt8valarrayImED1Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt8valarrayImED2Ev at GLIBCXX_3.4 4.1.1
+ _ZNSt8valarrayImEixEm at GLIBCXX_3.4 4.1.1
+ _ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC1Em at GLIBCXX_3.4 4.1.1
+ _ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEEC2Em at GLIBCXX_3.4 4.1.1
+ _ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC1Em at GLIBCXX_3.4 4.1.1
+ _ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEEC2Em at GLIBCXX_3.4 4.1.1
+ _ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC1Em at GLIBCXX_3.4 4.1.1
+ _ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEEC2Em at GLIBCXX_3.4 4.1.1
+ _ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC1Em at GLIBCXX_3.4 4.1.1
+ _ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em at GLIBCXX_3.4 4.1.1
+ _ZSt11_Hash_bytesPKvmm at CXXABI_1.3.5 4.6
+ _ZSt15_Fnv_hash_bytesPKvmm at CXXABI_1.3.5 4.6
+ _ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_i at GLIBCXX_3.4.9 4.2.1
+ _ZSt16__ostream_insertIwSt11char_traitsIwEERSt13basic_ostreamIT_T0_ES6_PKS3_i at GLIBCXX_3.4.9 4.2.1
+ _ZSt17__copy_streambufsIcSt11char_traitsIcEEiPSt15basic_streambufIT_T0_ES6_ at GLIBCXX_3.4.6 4.1.1
+ _ZSt17__copy_streambufsIwSt11char_traitsIwEEiPSt15basic_streambufIT_T0_ES6_ at GLIBCXX_3.4.6 4.1.1
+ _ZSt17__verify_groupingPKcmRKSs at GLIBCXX_3.4.10 4.3
+ _ZSt21__copy_streambufs_eofIcSt11char_traitsIcEEiPSt15basic_streambufIT_T0_ES6_Rb at GLIBCXX_3.4.9 4.2.1
+ _ZSt21__copy_streambufs_eofIwSt11char_traitsIwEEiPSt15basic_streambufIT_T0_ES6_Rb at GLIBCXX_3.4.9 4.2.1
+ _ZThn8_NSdD0Ev at GLIBCXX_3.4 4.1.1
+ _ZThn8_NSdD1Ev at GLIBCXX_3.4 4.1.1
+ _ZThn8_NSt13basic_fstreamIcSt11char_traitsIcEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZThn8_NSt13basic_fstreamIcSt11char_traitsIcEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZThn8_NSt13basic_fstreamIwSt11char_traitsIwEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZThn8_NSt13basic_fstreamIwSt11char_traitsIwEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZThn8_NSt14basic_iostreamIwSt11char_traitsIwEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZThn8_NSt14basic_iostreamIwSt11char_traitsIwEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZThn8_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZThn8_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZThn8_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZThn8_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZThn8_NSt9strstreamD0Ev at GLIBCXX_3.4 4.1.1
+ _ZThn8_NSt9strstreamD1Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSdD0Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSdD1Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSiD0Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSiD1Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSoD0Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSoD1Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt10istrstreamD0Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt10istrstreamD1Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt10ostrstreamD0Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt10ostrstreamD1Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt13basic_fstreamIcSt11char_traitsIcEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt13basic_fstreamIcSt11char_traitsIcEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt13basic_fstreamIwSt11char_traitsIwEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt13basic_fstreamIwSt11char_traitsIwEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt13basic_istreamIwSt11char_traitsIwEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt13basic_istreamIwSt11char_traitsIwEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt13basic_ostreamIwSt11char_traitsIwEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt13basic_ostreamIwSt11char_traitsIwEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt14basic_ifstreamIcSt11char_traitsIcEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt14basic_ifstreamIcSt11char_traitsIcEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt14basic_ifstreamIwSt11char_traitsIwEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt14basic_ifstreamIwSt11char_traitsIwEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt14basic_iostreamIwSt11char_traitsIwEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt14basic_iostreamIwSt11char_traitsIwEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt14basic_ofstreamIcSt11char_traitsIcEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt14basic_ofstreamIcSt11char_traitsIcEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt14basic_ofstreamIwSt11char_traitsIwEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt14basic_ofstreamIwSt11char_traitsIwEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt18basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt18basic_stringstreamIwSt11char_traitsIwESaIwEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt19basic_istringstreamIcSt11char_traitsIcESaIcEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt19basic_istringstreamIcSt11char_traitsIcESaIcEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt19basic_istringstreamIwSt11char_traitsIwESaIwEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt19basic_istringstreamIwSt11char_traitsIwESaIwEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt19basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED0Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt19basic_ostringstreamIwSt11char_traitsIwESaIwEED1Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt9strstreamD0Ev at GLIBCXX_3.4 4.1.1
+ _ZTv0_n12_NSt9strstreamD1Ev at GLIBCXX_3.4 4.1.1
+ _Znam at GLIBCXX_3.4 4.1.1
+ _ZnamRKSt9nothrow_t at GLIBCXX_3.4 4.1.1
+ _Znwm at GLIBCXX_3.4 4.1.1
+ _ZnwmRKSt9nothrow_t at GLIBCXX_3.4 4.1.1
+ __gxx_personality_v0 at CXXABI_1.3 4.1.1
+#include "libstdc++6.symbols.glibcxxmath"
+#include "libstdc++6.symbols.ldbl.32bit.s390"
+ _ZNSt12__basic_fileIcEC1EP15pthread_mutex_t at GLIBCXX_3.4 4.1.1
+ _ZNSt12__basic_fileIcEC2EP15pthread_mutex_t at GLIBCXX_3.4 4.1.1
diff --git a/debian/libstdc++6.symbols.s390x b/debian/libstdc++6.symbols.s390x
new file mode 100644
index 0000000..d1fa3ac
--- /dev/null
+++ b/debian/libstdc++6.symbols.s390x
@@ -0,0 +1,13 @@
+libstdc++.so.6 libstdc++6 #MINVER#
+#include "libstdc++6.symbols.64bit"
+#include "libstdc++6.symbols.128bit"
+#include "libstdc++6.symbols.excprop"
+ _ZN9__gnu_cxx12__atomic_addEPVii at GLIBCXX_3.4 4.1.1
+ _ZN9__gnu_cxx18__exchange_and_addEPVii at GLIBCXX_3.4 4.1.1
+#DEPRECATED: 4.2.2-4# ldexpf at GLIBCXX_3.4.3 4.1.1
+#DEPRECATED: 4.2.2-4# powf at GLIBCXX_3.4 4.1.1
+#include "libstdc++6.symbols.glibcxxmath"
+#include "libstdc++6.symbols.ldbl.64bit"
+#include "libstdc++6.symbols.money.f128"
+ _ZNKSt3tr14hashIeEclEe at GLIBCXX_3.4.10 4.3.0~rc2
+ _ZNKSt4hashIeEclEe at GLIBCXX_3.4.10 4.3.0~rc2
diff --git a/debian/libstdc++6.symbols.sh4 b/debian/libstdc++6.symbols.sh4
new file mode 100644
index 0000000..70ed99b
--- /dev/null
+++ b/debian/libstdc++6.symbols.sh4
@@ -0,0 +1,8 @@
+libstdc++.so.6 libstdc++6 #MINVER#
+#include "libstdc++6.symbols.32bit"
+ __gxx_personality_v0 at CXXABI_1.3 4.1.1
+#include "libstdc++6.symbols.excprop"
+#include "libstdc++6.symbols.glibcxxmath"
+#include "libstdc++6.symbols.money.ldbl"
+ _ZNKSt3tr14hashIeEclEe at GLIBCXX_3.4.10 4.3.0
+ _ZNKSt4hashIeEclEe at GLIBCXX_3.4.10 4.3.0
diff --git a/debian/libstdc++6.symbols.sparc b/debian/libstdc++6.symbols.sparc
new file mode 100644
index 0000000..c731a55
--- /dev/null
+++ b/debian/libstdc++6.symbols.sparc
@@ -0,0 +1,9 @@
+libstdc++.so.6 libstdc++6 #MINVER#
+#include "libstdc++6.symbols.32bit"
+#include "libstdc++6.symbols.excprop"
+ __gxx_personality_v0 at CXXABI_1.3 4.1.1
+#include "libstdc++6.symbols.glibcxxmath"
+#include "libstdc++6.symbols.ldbl.32bit"
+#include "libstdc++6.symbols.money.f128"
+ _ZNKSt3tr14hashIeEclEe at GLIBCXX_3.4.10 4.3.0~rc2
+ _ZNKSt4hashIeEclEe at GLIBCXX_3.4.10 4.3.0~rc2
diff --git a/debian/libstdc++6.symbols.sparc64 b/debian/libstdc++6.symbols.sparc64
new file mode 100644
index 0000000..f9446bb
--- /dev/null
+++ b/debian/libstdc++6.symbols.sparc64
@@ -0,0 +1,11 @@
+libstdc++.so.6 libstdc++6 #MINVER#
+#include "libstdc++6.symbols.64bit"
+#include "libstdc++6.symbols.excprop"
+#include "libstdc++6.symbols.128bit"
+#include "libstdc++6.symbols.money.ldbl"
+ _ZN9__gnu_cxx12__atomic_addEPVli at GLIBCXX_3.4 4.1.1
+ _ZN9__gnu_cxx18__exchange_and_addEPVli at GLIBCXX_3.4 4.1.1
+# FIXME: Currently no ldbl symbols in the 64bit libstdc++ on sparc.
+# #include "libstdc++6.symbols.ldbl.64bit"
+ _ZNKSt3tr14hashIeEclEe at GLIBCXX_3.4.10 4.3
+ _ZNKSt4hashIeEclEe at GLIBCXX_3.4.10 4.3
diff --git a/debian/libstdc++6.symbols.x32 b/debian/libstdc++6.symbols.x32
new file mode 100644
index 0000000..3f9aea5
--- /dev/null
+++ b/debian/libstdc++6.symbols.x32
@@ -0,0 +1,27 @@
+libstdc++.so.6 libstdc++6 #MINVER#
+#include "libstdc++6.symbols.32bit"
+#include "libstdc++6.symbols.128bit"
+#include "libstdc++6.symbols.excprop"
+#include "libstdc++6.symbols.money.ldbl"
+ __gxx_personality_v0 at CXXABI_1.3 4.1.1
+ _ZNKSt3tr14hashIeEclEe at GLIBCXX_3.4.10 4.3
+ _ZNKSt4hashIeEclEe at GLIBCXX_3.4.10 4.3
+ (optional)_Z16__VLTRegisterSetPPvPKvjjS0_ at CXXABI_1.3.8 4.9.0
+ (optional)_Z17__VLTRegisterPairPPvPKvjS2_ at CXXABI_1.3.8 4.9.0
+ (optional)_Z21__VLTRegisterSetDebugPPvPKvjjS0_ at CXXABI_1.3.8 4.9.0
+ (optional)_Z22__VLTRegisterPairDebugPPvPKvjS2_PKcS4_ at CXXABI_1.3.8 4.9.0
+ (optional)_Z24__VLTVerifyVtablePointerPPvPKv at CXXABI_1.3.8 4.9.0
+ (optional)_Z29__VLTVerifyVtablePointerDebugPPvPKvPKcS4_ at CXXABI_1.3.8 4.9.0
+ (optional)__VLTChangePermission at CXXABI_1.3.8 4.9.0
+ _ZTIPKn at CXXABI_1.3.5 4.9.0
+ _ZTIPKo at CXXABI_1.3.5 4.9.0
+ _ZTIPn at CXXABI_1.3.5 4.9.0
+ _ZTIPo at CXXABI_1.3.5 4.9.0
+ _ZTIn at CXXABI_1.3.5 4.9.0
+ _ZTIo at CXXABI_1.3.5 4.9.0
+ _ZTSPKn at CXXABI_1.3.9 4.9.0
+ _ZTSPKo at CXXABI_1.3.9 4.9.0
+ _ZTSPn at CXXABI_1.3.9 4.9.0
+ _ZTSPo at CXXABI_1.3.9 4.9.0
+ _ZTSn at CXXABI_1.3.9 4.9.0
+ _ZTSo at CXXABI_1.3.9 4.9.0
diff --git a/debian/libstdc++CXX.postinst b/debian/libstdc++CXX.postinst
new file mode 100644
index 0000000..9a9c868
--- /dev/null
+++ b/debian/libstdc++CXX.postinst
@@ -0,0 +1,18 @@
+#! /bin/sh -e
+
+case "$1" in
+    configure)
+	docdir=/usr/share/doc/libstdc++ at CXX@
+	if [ -d $docdir ] && [ ! -h $docdir ]; then
+	    rm -rf $docdir
+	    ln -s gcc- at BV@-base $docdir
+	fi
+
+	if [ -n "$2" ] && [ -d /usr/share/gcc-4.9 ] && dpkg --compare-versions "$2" lt 5.1.1-10; then
+	    find /usr/share/gcc-4.9/python -name __pycache__ -type d -print0 | xargs -r0 rm -rf
+	    find /usr/share/gcc-4.9/python -name '*.py[co]' -type f -print0 | xargs -r0 rm -f
+	    find /usr/share/gcc-4.9 -empty -delete 2>/dev/null || true
+	fi
+esac
+
+#DEBHELPER#
diff --git a/debian/libstdc++CXX.prerm b/debian/libstdc++CXX.prerm
new file mode 100644
index 0000000..d4a6b38
--- /dev/null
+++ b/debian/libstdc++CXX.prerm
@@ -0,0 +1,13 @@
+#! /bin/sh
+
+set -e
+
+case "$1" in
+    remove|upgrade)
+	files=$(dpkg -L libstdc++ at CXX@@TARGET_QUAL@ | awk -F/ 'BEGIN {OFS="/"} /\.py$/ {$NF=sprintf("__pycache__/%s.*.py[co]", substr($NF,1,length($NF)-3)); print}')
+	rm -f $files
+	dirs=$(dpkg -L libstdc++ at CXX@@TARGET_QUAL@ | awk -F/ 'BEGIN {OFS="/"} /\.py$/ {NF--; print}' | sort -u)
+	find $dirs -mindepth 1 -maxdepth 1 -name __pycache__ -type d -empty | xargs -r rmdir
+esac
+
+#DEBHELPER#
diff --git a/debian/libtsan0.symbols b/debian/libtsan0.symbols
new file mode 100644
index 0000000..3fbebe3
--- /dev/null
+++ b/debian/libtsan0.symbols
@@ -0,0 +1,1703 @@
+libtsan.so.0 libtsan0 #MINVER#
+ AnnotateBenignRace at Base 4.9
+ AnnotateBenignRaceSized at Base 4.9
+ AnnotateCondVarSignal at Base 4.9
+ AnnotateCondVarSignalAll at Base 4.9
+ AnnotateCondVarWait at Base 4.9
+ AnnotateEnableRaceDetection at Base 4.9
+ AnnotateExpectRace at Base 4.9
+ AnnotateFlushExpectedRaces at Base 4.9
+ AnnotateFlushState at Base 4.9
+ AnnotateHappensAfter at Base 4.9
+ AnnotateHappensBefore at Base 4.9
+ AnnotateIgnoreReadsBegin at Base 4.9
+ AnnotateIgnoreReadsEnd at Base 4.9
+ AnnotateIgnoreSyncBegin at Base 4.9
+ AnnotateIgnoreSyncEnd at Base 4.9
+ AnnotateIgnoreWritesBegin at Base 4.9
+ AnnotateIgnoreWritesEnd at Base 4.9
+ AnnotateMemoryIsInitialized at Base 4.9
+ AnnotateMemoryIsUninitialized at Base 5
+ AnnotateMutexIsNotPHB at Base 4.9
+ AnnotateMutexIsUsedAsCondVar at Base 4.9
+ AnnotateNewMemory at Base 4.9
+ AnnotateNoOp at Base 4.9
+ AnnotatePCQCreate at Base 4.9
+ AnnotatePCQDestroy at Base 4.9
+ AnnotatePCQGet at Base 4.9
+ AnnotatePCQPut at Base 4.9
+ AnnotatePublishMemoryRange at Base 4.9
+ AnnotateRWLockAcquired at Base 4.9
+ AnnotateRWLockCreate at Base 4.9
+ AnnotateRWLockCreateStatic at Base 4.9
+ AnnotateRWLockDestroy at Base 4.9
+ AnnotateRWLockReleased at Base 4.9
+ AnnotateThreadName at Base 4.9
+ AnnotateTraceMemory at Base 4.9
+ AnnotateUnpublishMemoryRange at Base 4.9
+ RunningOnValgrind at Base 4.9
+ ThreadSanitizerQuery at Base 4.9
+ ValgrindSlowdown at Base 4.9
+ WTFAnnotateBenignRaceSized at Base 4.9
+ WTFAnnotateHappensAfter at Base 4.9
+ WTFAnnotateHappensBefore at Base 4.9
+ _ZN11__sanitizer11CheckFailedEPKciS1_yy at Base 4.9
+ _ZN11__sanitizer7OnPrintEPKc at Base 4.9
+ _ZN6__tsan10OnFinalizeEb at Base 4.9
+ _ZN6__tsan12OnInitializeEv at Base 5
+ _ZN6__tsan8OnReportEPKNS_10ReportDescEb at Base 4.9
+ _ZdaPv at Base 4.9
+ _ZdaPvRKSt9nothrow_t at Base 4.9
+ _ZdlPv at Base 4.9
+ _ZdlPvRKSt9nothrow_t at Base 4.9
+ _Znam at Base 4.9
+ _ZnamRKSt9nothrow_t at Base 4.9
+ _Znwm at Base 4.9
+ _ZnwmRKSt9nothrow_t at Base 4.9
+ __asan_backtrace_alloc at Base 4.9
+ __asan_backtrace_close at Base 4.9
+ __asan_backtrace_create_state at Base 4.9
+ __asan_backtrace_dwarf_add at Base 4.9
+ __asan_backtrace_free at Base 4.9
+ __asan_backtrace_get_view at Base 4.9
+ __asan_backtrace_initialize at Base 4.9
+ __asan_backtrace_open at Base 4.9
+ __asan_backtrace_pcinfo at Base 4.9
+ __asan_backtrace_qsort at Base 4.9
+ __asan_backtrace_release_view at Base 4.9
+ __asan_backtrace_syminfo at Base 4.9
+ __asan_backtrace_vector_finish at Base 4.9
+ __asan_backtrace_vector_grow at Base 4.9
+ __asan_backtrace_vector_release at Base 4.9
+ __asan_cplus_demangle_builtin_types at Base 4.9
+ __asan_cplus_demangle_fill_ctor at Base 4.9
+ __asan_cplus_demangle_fill_dtor at Base 4.9
+ __asan_cplus_demangle_fill_extended_operator at Base 4.9
+ __asan_cplus_demangle_fill_name at Base 4.9
+ __asan_cplus_demangle_init_info at Base 4.9
+ __asan_cplus_demangle_mangled_name at Base 4.9
+ __asan_cplus_demangle_operators at Base 4.9
+ __asan_cplus_demangle_print at Base 4.9
+ __asan_cplus_demangle_print_callback at Base 4.9
+ __asan_cplus_demangle_type at Base 4.9
+ __asan_cplus_demangle_v3 at Base 4.9
+ __asan_cplus_demangle_v3_callback at Base 4.9
+ __asan_internal_memcmp at Base 4.9
+ __asan_internal_memcpy at Base 4.9
+ __asan_internal_memset at Base 4.9
+ __asan_internal_strcmp at Base 4.9
+ __asan_internal_strlen at Base 4.9
+ __asan_internal_strncmp at Base 4.9
+ __asan_internal_strnlen at Base 4.9
+ __asan_is_gnu_v3_mangled_ctor at Base 4.9
+ __asan_is_gnu_v3_mangled_dtor at Base 4.9
+ __asan_java_demangle_v3 at Base 4.9
+ __asan_java_demangle_v3_callback at Base 4.9
+ __close at Base 4.9
+ __cxa_atexit at Base 4.9
+ __cxa_guard_abort at Base 4.9
+ __cxa_guard_acquire at Base 4.9
+ __cxa_guard_release at Base 4.9
+ __fxstat64 at Base 4.9
+ __fxstat at Base 4.9
+ __getdelim at Base 5
+ __interceptor___close at Base 4.9
+ __interceptor___cxa_atexit at Base 4.9
+ __interceptor___fxstat64 at Base 4.9
+ __interceptor___fxstat at Base 4.9
+ __interceptor___getdelim at Base 5
+ __interceptor___isoc99_fprintf at Base 5
+ __interceptor___isoc99_fscanf at Base 4.9
+ __interceptor___isoc99_printf at Base 5
+ __interceptor___isoc99_scanf at Base 4.9
+ __interceptor___isoc99_snprintf at Base 5
+ __interceptor___isoc99_sprintf at Base 5
+ __interceptor___isoc99_sscanf at Base 4.9
+ __interceptor___isoc99_vfprintf at Base 5
+ __interceptor___isoc99_vfscanf at Base 4.9
+ __interceptor___isoc99_vprintf at Base 5
+ __interceptor___isoc99_vscanf at Base 4.9
+ __interceptor___isoc99_vsnprintf at Base 5
+ __interceptor___isoc99_vsprintf at Base 5
+ __interceptor___isoc99_vsscanf at Base 4.9
+ __interceptor___libc_memalign at Base 4.9
+ __interceptor___lxstat64 at Base 4.9
+ __interceptor___lxstat at Base 4.9
+ __interceptor___overflow at Base 5
+ __interceptor___res_iclose at Base 4.9
+ __interceptor___sigsetjmp at Base 4.9
+ __interceptor___tls_get_addr at Base 5
+ __interceptor___uflow at Base 5
+ __interceptor___underflow at Base 5
+ __interceptor___woverflow at Base 5
+ __interceptor___wuflow at Base 5
+ __interceptor___wunderflow at Base 5
+ __interceptor___xpg_strerror_r at Base 4.9
+ __interceptor___xstat64 at Base 4.9
+ __interceptor___xstat at Base 4.9
+ __interceptor__exit at Base 4.9
+ __interceptor__obstack_begin at Base 5
+ __interceptor__obstack_begin_1 at Base 5
+ __interceptor__obstack_newchunk at Base 5
+ __interceptor__setjmp at Base 4.9
+ __interceptor_abort at Base 4.9
+ __interceptor_accept4 at Base 4.9
+ __interceptor_accept at Base 4.9
+ __interceptor_aligned_alloc at Base 5
+ __interceptor_asctime at Base 4.9
+ __interceptor_asctime_r at Base 4.9
+ __interceptor_asprintf at Base 5
+ __interceptor_atexit at Base 4.9
+ __interceptor_backtrace at Base 4.9
+ __interceptor_backtrace_symbols at Base 4.9
+ __interceptor_bind at Base 4.9
+ __interceptor_calloc at Base 4.9
+ __interceptor_canonicalize_file_name at Base 4.9
+ __interceptor_capget at Base 5
+ __interceptor_capset at Base 5
+ __interceptor_cfree at Base 4.9
+ __interceptor_clock_getres at Base 4.9
+ __interceptor_clock_gettime at Base 4.9
+ __interceptor_clock_settime at Base 4.9
+ __interceptor_close at Base 4.9
+ __interceptor_confstr at Base 4.9
+ __interceptor_connect at Base 4.9
+ __interceptor_creat64 at Base 4.9
+ __interceptor_creat at Base 4.9
+ __interceptor_ctime at Base 4.9
+ __interceptor_ctime_r at Base 4.9
+ __interceptor_dlclose at Base 4.9
+ __interceptor_dlopen at Base 4.9
+ __interceptor_drand48_r at Base 4.9
+ __interceptor_dup2 at Base 4.9
+ __interceptor_dup3 at Base 4.9
+ __interceptor_dup at Base 4.9
+ __interceptor_endgrent at Base 5
+ __interceptor_endpwent at Base 5
+ __interceptor_epoll_create1 at Base 4.9
+ __interceptor_epoll_create at Base 4.9
+ __interceptor_epoll_ctl at Base 4.9
+ __interceptor_epoll_wait at Base 4.9
+ __interceptor_ether_aton at Base 4.9
+ __interceptor_ether_aton_r at Base 4.9
+ __interceptor_ether_hostton at Base 4.9
+ __interceptor_ether_line at Base 4.9
+ __interceptor_ether_ntoa at Base 4.9
+ __interceptor_ether_ntoa_r at Base 4.9
+ __interceptor_ether_ntohost at Base 4.9
+ __interceptor_eventfd at Base 4.9
+ __interceptor_fclose at Base 4.9
+ __interceptor_fdopen at Base 5
+ __interceptor_fflush at Base 4.9
+ __interceptor_fgetxattr at Base 5
+ __interceptor_flistxattr at Base 5
+ __interceptor_fmemopen at Base 5
+ __interceptor_fopen64 at Base 5
+ __interceptor_fopen at Base 4.9
+ __interceptor_fork at Base 4.9
+ __interceptor_fprintf at Base 5
+ __interceptor_fread at Base 4.9
+ __interceptor_free at Base 4.9
+ __interceptor_freopen64 at Base 5
+ __interceptor_freopen at Base 4.9
+ __interceptor_frexp at Base 4.9
+ __interceptor_frexpf at Base 4.9
+ __interceptor_frexpl at Base 4.9
+ __interceptor_fscanf at Base 4.9
+ __interceptor_fstat64 at Base 4.9
+ __interceptor_fstat at Base 4.9
+ __interceptor_fstatfs64 at Base 4.9
+ __interceptor_fstatfs at Base 4.9
+ __interceptor_fstatvfs64 at Base 4.9
+ __interceptor_fstatvfs at Base 4.9
+ __interceptor_ftime at Base 5
+ __interceptor_fwrite at Base 4.9
+ __interceptor_get_current_dir_name at Base 4.9
+ __interceptor_getaddrinfo at Base 4.9
+ __interceptor_getcwd at Base 4.9
+ __interceptor_getdelim at Base 4.9
+ __interceptor_getgroups at Base 4.9
+ __interceptor_gethostbyaddr at Base 4.9
+ __interceptor_gethostbyaddr_r at Base 4.9
+ __interceptor_gethostbyname2 at Base 4.9
+ __interceptor_gethostbyname2_r at Base 4.9
+ __interceptor_gethostbyname at Base 4.9
+ __interceptor_gethostbyname_r at Base 4.9
+ __interceptor_gethostent at Base 4.9
+ __interceptor_gethostent_r at Base 4.9
+ __interceptor_getifaddrs at Base 5
+ __interceptor_getitimer at Base 4.9
+ __interceptor_getline at Base 4.9
+ __interceptor_getmntent at Base 4.9
+ __interceptor_getmntent_r at Base 4.9
+ __interceptor_getnameinfo at Base 5
+ __interceptor_getpass at Base 5
+ __interceptor_getpeername at Base 4.9
+ __interceptor_getresgid at Base 5
+ __interceptor_getresuid at Base 5
+ __interceptor_getsockname at Base 4.9
+ __interceptor_getsockopt at Base 4.9
+ __interceptor_gettimeofday at Base 4.9
+ __interceptor_getxattr at Base 5
+ __interceptor_glob64 at Base 5
+ __interceptor_glob at Base 5
+ __interceptor_gmtime at Base 4.9
+ __interceptor_gmtime_r at Base 4.9
+ __interceptor_iconv at Base 4.9
+ __interceptor_if_indextoname at Base 5
+ __interceptor_if_nametoindex at Base 5
+ __interceptor_inet_aton at Base 4.9
+ __interceptor_inet_ntop at Base 4.9
+ __interceptor_inet_pton at Base 4.9
+ __interceptor_initgroups at Base 4.9
+ __interceptor_inotify_init1 at Base 4.9
+ __interceptor_inotify_init at Base 4.9
+ __interceptor_ioctl at Base 4.9
+ __interceptor_kill at Base 4.9
+ __interceptor_lgamma at Base 4.9
+ __interceptor_lgamma_r at Base 4.9
+ __interceptor_lgammaf at Base 4.9
+ __interceptor_lgammaf_r at Base 4.9
+ __interceptor_lgammal at Base 4.9
+ __interceptor_lgammal_r at Base 4.9
+ __interceptor_lgetxattr at Base 5
+ __interceptor_listen at Base 4.9
+ __interceptor_listxattr at Base 5
+ __interceptor_llistxattr at Base 5
+ __interceptor_localtime at Base 4.9
+ __interceptor_localtime_r at Base 4.9
+ __interceptor_longjmp at Base 4.9
+ __interceptor_lrand48_r at Base 4.9
+ __interceptor_lstat64 at Base 4.9
+ __interceptor_lstat at Base 4.9
+ __interceptor_malloc at Base 4.9
+ __interceptor_malloc_usable_size at Base 4.9
+ __interceptor_mbsnrtowcs at Base 4.9
+ __interceptor_mbsrtowcs at Base 4.9
+ __interceptor_mbstowcs at Base 4.9
+ __interceptor_memalign at Base 4.9
+ __interceptor_memchr at Base 4.9
+ __interceptor_memcmp at Base 4.9
+ __interceptor_memcpy at Base 4.9
+ __interceptor_memmove at Base 4.9
+ __interceptor_memrchr at Base 4.9
+ __interceptor_memset at Base 4.9
+ __interceptor_mktime at Base 5
+ __interceptor_mlock at Base 4.9
+ __interceptor_mlockall at Base 4.9
+ __interceptor_mmap64 at Base 4.9
+ __interceptor_mmap at Base 4.9
+ __interceptor_modf at Base 4.9
+ __interceptor_modff at Base 4.9
+ __interceptor_modfl at Base 4.9
+ __interceptor_munlock at Base 4.9
+ __interceptor_munlockall at Base 4.9
+ __interceptor_munmap at Base 4.9
+ __interceptor_nanosleep at Base 4.9
+ __interceptor_on_exit at Base 4.9
+ __interceptor_open64 at Base 4.9
+ __interceptor_open at Base 4.9
+ __interceptor_open_memstream at Base 5
+ __interceptor_open_wmemstream at Base 5
+ __interceptor_opendir at Base 4.9
+ __interceptor_pipe2 at Base 4.9
+ __interceptor_pipe at Base 4.9
+ __interceptor_poll at Base 4.9
+ __interceptor_posix_memalign at Base 4.9
+ __interceptor_ppoll at Base 4.9
+ __interceptor_prctl at Base 4.9
+ __interceptor_pread64 at Base 4.9
+ __interceptor_pread at Base 4.9
+ __interceptor_preadv64 at Base 4.9
+ __interceptor_preadv at Base 4.9
+ __interceptor_printf at Base 5
+ __interceptor_pthread_attr_getaffinity_np at Base 4.9
+ __interceptor_pthread_attr_getdetachstate at Base 4.9
+ __interceptor_pthread_attr_getguardsize at Base 4.9
+ __interceptor_pthread_attr_getinheritsched at Base 4.9
+ __interceptor_pthread_attr_getschedparam at Base 4.9
+ __interceptor_pthread_attr_getschedpolicy at Base 4.9
+ __interceptor_pthread_attr_getscope at Base 4.9
+ __interceptor_pthread_attr_getstack at Base 4.9
+ __interceptor_pthread_attr_getstacksize at Base 4.9
+ __interceptor_pthread_barrier_destroy at Base 4.9
+ __interceptor_pthread_barrier_init at Base 4.9
+ __interceptor_pthread_barrier_wait at Base 4.9
+ __interceptor_pthread_barrierattr_getpshared at Base 5
+ __interceptor_pthread_cond_broadcast at Base 4.9
+ __interceptor_pthread_cond_destroy at Base 4.9
+ __interceptor_pthread_cond_init at Base 4.9
+ __interceptor_pthread_cond_signal at Base 4.9
+ __interceptor_pthread_cond_timedwait at Base 4.9
+ __interceptor_pthread_cond_wait at Base 4.9
+ __interceptor_pthread_condattr_getclock at Base 5
+ __interceptor_pthread_condattr_getpshared at Base 5
+ __interceptor_pthread_create at Base 4.9
+ __interceptor_pthread_detach at Base 4.9
+ __interceptor_pthread_getschedparam at Base 4.9
+ __interceptor_pthread_join at Base 4.9
+ __interceptor_pthread_kill at Base 4.9
+ __interceptor_pthread_mutex_destroy at Base 4.9
+ __interceptor_pthread_mutex_init at Base 4.9
+ __interceptor_pthread_mutex_lock at Base 4.9
+ __interceptor_pthread_mutex_timedlock at Base 4.9
+ __interceptor_pthread_mutex_trylock at Base 4.9
+ __interceptor_pthread_mutex_unlock at Base 4.9
+ __interceptor_pthread_mutexattr_getprioceiling at Base 5
+ __interceptor_pthread_mutexattr_getprotocol at Base 5
+ __interceptor_pthread_mutexattr_getpshared at Base 5
+ __interceptor_pthread_mutexattr_getrobust at Base 5
+ __interceptor_pthread_mutexattr_getrobust_np at Base 5
+ __interceptor_pthread_mutexattr_gettype at Base 5
+ __interceptor_pthread_once at Base 4.9
+ __interceptor_pthread_rwlock_destroy at Base 4.9
+ __interceptor_pthread_rwlock_init at Base 4.9
+ __interceptor_pthread_rwlock_rdlock at Base 4.9
+ __interceptor_pthread_rwlock_timedrdlock at Base 4.9
+ __interceptor_pthread_rwlock_timedwrlock at Base 4.9
+ __interceptor_pthread_rwlock_tryrdlock at Base 4.9
+ __interceptor_pthread_rwlock_trywrlock at Base 4.9
+ __interceptor_pthread_rwlock_unlock at Base 4.9
+ __interceptor_pthread_rwlock_wrlock at Base 4.9
+ __interceptor_pthread_rwlockattr_getkind_np at Base 5
+ __interceptor_pthread_rwlockattr_getpshared at Base 5
+ __interceptor_pthread_setname_np at Base 4.9
+ __interceptor_pthread_spin_destroy at Base 4.9
+ __interceptor_pthread_spin_init at Base 4.9
+ __interceptor_pthread_spin_lock at Base 4.9
+ __interceptor_pthread_spin_trylock at Base 4.9
+ __interceptor_pthread_spin_unlock at Base 4.9
+ __interceptor_ptrace at Base 4.9
+ __interceptor_puts at Base 4.9
+ __interceptor_pvalloc at Base 4.9
+ __interceptor_pwrite64 at Base 4.9
+ __interceptor_pwrite at Base 4.9
+ __interceptor_pwritev64 at Base 4.9
+ __interceptor_pwritev at Base 4.9
+ __interceptor_raise at Base 4.9
+ __interceptor_rand_r at Base 5
+ __interceptor_random_r at Base 4.9
+ __interceptor_read at Base 4.9
+ __interceptor_readdir64 at Base 4.9
+ __interceptor_readdir64_r at Base 4.9
+ __interceptor_readdir at Base 4.9
+ __interceptor_readdir_r at Base 4.9
+ __interceptor_readv at Base 4.9
+ __interceptor_realloc at Base 4.9
+ __interceptor_realpath at Base 4.9
+ __interceptor_recv at Base 4.9
+ __interceptor_recvmsg at Base 4.9
+ __interceptor_remquo at Base 4.9
+ __interceptor_remquof at Base 4.9
+ __interceptor_remquol at Base 4.9
+ __interceptor_rmdir at Base 4.9
+ __interceptor_scandir64 at Base 4.9
+ __interceptor_scandir at Base 4.9
+ __interceptor_scanf at Base 4.9
+ __interceptor_sched_getaffinity at Base 4.9
+ __interceptor_sem_destroy at Base 4.9
+ __interceptor_sem_getvalue at Base 4.9
+ __interceptor_sem_init at Base 4.9
+ __interceptor_sem_post at Base 4.9
+ __interceptor_sem_timedwait at Base 4.9
+ __interceptor_sem_trywait at Base 4.9
+ __interceptor_sem_wait at Base 4.9
+ __interceptor_send at Base 4.9
+ __interceptor_sendmsg at Base 4.9
+ __interceptor_setgrent at Base 5
+ __interceptor_setitimer at Base 4.9
+ __interceptor_setjmp at Base 4.9
+ __interceptor_setlocale at Base 4.9
+ __interceptor_setpwent at Base 5
+ __interceptor_shmctl at Base 4.9
+ __interceptor_sigaction at Base 4.9
+ __interceptor_sigemptyset at Base 4.9
+ __interceptor_sigfillset at Base 4.9
+ __interceptor_siglongjmp at Base 4.9
+ __interceptor_signal at Base 4.9
+ __interceptor_signalfd at Base 4.9
+ __interceptor_sigpending at Base 4.9
+ __interceptor_sigprocmask at Base 4.9
+ __interceptor_sigsetjmp at Base 4.9
+ __interceptor_sigsuspend at Base 4.9
+ __interceptor_sigtimedwait at Base 4.9
+ __interceptor_sigwait at Base 4.9
+ __interceptor_sigwaitinfo at Base 4.9
+ __interceptor_sincos at Base 4.9
+ __interceptor_sincosf at Base 4.9
+ __interceptor_sincosl at Base 4.9
+ __interceptor_sleep at Base 4.9
+ __interceptor_snprintf at Base 5
+ __interceptor_socket at Base 4.9
+ __interceptor_socketpair at Base 4.9
+ __interceptor_sprintf at Base 5
+ __interceptor_sscanf at Base 4.9
+ __interceptor_stat64 at Base 4.9
+ __interceptor_stat at Base 4.9
+ __interceptor_statfs64 at Base 4.9
+ __interceptor_statfs at Base 4.9
+ __interceptor_statvfs64 at Base 4.9
+ __interceptor_statvfs at Base 4.9
+ __interceptor_strcasecmp at Base 4.9
+ __interceptor_strchr at Base 4.9
+ __interceptor_strchrnul at Base 4.9
+ __interceptor_strcmp at Base 4.9
+ __interceptor_strcpy at Base 4.9
+ __interceptor_strdup at Base 4.9
+ __interceptor_strerror at Base 4.9
+ __interceptor_strerror_r at Base 4.9
+ __interceptor_strlen at Base 4.9
+ __interceptor_strncasecmp at Base 4.9
+ __interceptor_strncmp at Base 4.9
+ __interceptor_strncpy at Base 4.9
+ __interceptor_strptime at Base 4.9
+ __interceptor_strrchr at Base 4.9
+ __interceptor_strstr at Base 4.9
+ __interceptor_strtoimax at Base 4.9
+ __interceptor_strtoumax at Base 4.9
+ __interceptor_sysinfo at Base 4.9
+ __interceptor_tcgetattr at Base 4.9
+ __interceptor_tempnam at Base 4.9
+ __interceptor_textdomain at Base 4.9
+ __interceptor_time at Base 4.9
+ __interceptor_timerfd_gettime at Base 5
+ __interceptor_timerfd_settime at Base 5
+ __interceptor_times at Base 4.9
+ __interceptor_tmpfile64 at Base 5
+ __interceptor_tmpfile at Base 5
+ __interceptor_tmpnam at Base 4.9
+ __interceptor_tmpnam_r at Base 4.9
+ __interceptor_tsearch at Base 5
+ __interceptor_unlink at Base 4.9
+ __interceptor_usleep at Base 4.9
+ __interceptor_valloc at Base 4.9
+ __interceptor_vasprintf at Base 5
+ __interceptor_vfork at Base 5
+ __interceptor_vfprintf at Base 5
+ __interceptor_vfscanf at Base 4.9
+ __interceptor_vprintf at Base 5
+ __interceptor_vscanf at Base 4.9
+ __interceptor_vsnprintf at Base 5
+ __interceptor_vsprintf at Base 5
+ __interceptor_vsscanf at Base 4.9
+ __interceptor_wait3 at Base 4.9
+ __interceptor_wait4 at Base 4.9
+ __interceptor_wait at Base 4.9
+ __interceptor_waitid at Base 4.9
+ __interceptor_waitpid at Base 4.9
+ __interceptor_wcsnrtombs at Base 4.9
+ __interceptor_wcsrtombs at Base 4.9
+ __interceptor_wcstombs at Base 4.9
+ __interceptor_wordexp at Base 4.9
+ __interceptor_write at Base 4.9
+ __interceptor_writev at Base 4.9
+ __interceptor_xdr_bool at Base 5
+ __interceptor_xdr_bytes at Base 5
+ __interceptor_xdr_char at Base 5
+ __interceptor_xdr_double at Base 5
+ __interceptor_xdr_enum at Base 5
+ __interceptor_xdr_float at Base 5
+ __interceptor_xdr_hyper at Base 5
+ __interceptor_xdr_int16_t at Base 5
+ __interceptor_xdr_int32_t at Base 5
+ __interceptor_xdr_int64_t at Base 5
+ __interceptor_xdr_int8_t at Base 5
+ __interceptor_xdr_int at Base 5
+ __interceptor_xdr_long at Base 5
+ __interceptor_xdr_longlong_t at Base 5
+ __interceptor_xdr_quad_t at Base 5
+ __interceptor_xdr_short at Base 5
+ __interceptor_xdr_string at Base 5
+ __interceptor_xdr_u_char at Base 5
+ __interceptor_xdr_u_hyper at Base 5
+ __interceptor_xdr_u_int at Base 5
+ __interceptor_xdr_u_long at Base 5
+ __interceptor_xdr_u_longlong_t at Base 5
+ __interceptor_xdr_u_quad_t at Base 5
+ __interceptor_xdr_u_short at Base 5
+ __interceptor_xdr_uint16_t at Base 5
+ __interceptor_xdr_uint32_t at Base 5
+ __interceptor_xdr_uint64_t at Base 5
+ __interceptor_xdr_uint8_t at Base 5
+ __interceptor_xdrmem_create at Base 5
+ __interceptor_xdrstdio_create at Base 5
+ __isoc99_fprintf at Base 5
+ __isoc99_fscanf at Base 4.9
+ __isoc99_printf at Base 5
+ __isoc99_scanf at Base 4.9
+ __isoc99_snprintf at Base 5
+ __isoc99_sprintf at Base 5
+ __isoc99_sscanf at Base 4.9
+ __isoc99_vfprintf at Base 5
+ __isoc99_vfscanf at Base 4.9
+ __isoc99_vprintf at Base 5
+ __isoc99_vscanf at Base 4.9
+ __isoc99_vsnprintf at Base 5
+ __isoc99_vsprintf at Base 5
+ __isoc99_vsscanf at Base 4.9
+ __libc_memalign at Base 4.9
+ __lxstat64 at Base 4.9
+ __lxstat at Base 4.9
+ __overflow at Base 5
+ __res_iclose at Base 4.9
+ __sanitizer_cov at Base 4.9
+ __sanitizer_cov_dump at Base 4.9
+ __sanitizer_cov_indir_call16 at Base 5
+ __sanitizer_cov_init at Base 5
+ __sanitizer_cov_module_init at Base 5
+ __sanitizer_free_hook at Base 5
+ __sanitizer_get_allocated_size at Base 5
+ __sanitizer_get_current_allocated_bytes at Base 5
+ __sanitizer_get_estimated_allocated_size at Base 5
+ __sanitizer_get_free_bytes at Base 5
+ __sanitizer_get_heap_size at Base 5
+ __sanitizer_get_ownership at Base 5
+ __sanitizer_get_unmapped_bytes at Base 5
+ __sanitizer_malloc_hook at Base 5
+ __sanitizer_maybe_open_cov_file at Base 5
+ __sanitizer_print_stack_trace at Base 5
+ __sanitizer_report_error_summary at Base 4.9
+ __sanitizer_sandbox_on_notify at Base 4.9
+ __sanitizer_set_report_path at Base 4.9
+ __sanitizer_syscall_post_impl_accept4 at Base 4.9
+ __sanitizer_syscall_post_impl_accept at Base 4.9
+ __sanitizer_syscall_post_impl_access at Base 4.9
+ __sanitizer_syscall_post_impl_acct at Base 4.9
+ __sanitizer_syscall_post_impl_add_key at Base 4.9
+ __sanitizer_syscall_post_impl_adjtimex at Base 4.9
+ __sanitizer_syscall_post_impl_alarm at Base 4.9
+ __sanitizer_syscall_post_impl_bdflush at Base 4.9
+ __sanitizer_syscall_post_impl_bind at Base 4.9
+ __sanitizer_syscall_post_impl_brk at Base 4.9
+ __sanitizer_syscall_post_impl_capget at Base 4.9
+ __sanitizer_syscall_post_impl_capset at Base 4.9
+ __sanitizer_syscall_post_impl_chdir at Base 4.9
+ __sanitizer_syscall_post_impl_chmod at Base 4.9
+ __sanitizer_syscall_post_impl_chown at Base 4.9
+ __sanitizer_syscall_post_impl_chroot at Base 4.9
+ __sanitizer_syscall_post_impl_clock_adjtime at Base 4.9
+ __sanitizer_syscall_post_impl_clock_getres at Base 4.9
+ __sanitizer_syscall_post_impl_clock_gettime at Base 4.9
+ __sanitizer_syscall_post_impl_clock_nanosleep at Base 4.9
+ __sanitizer_syscall_post_impl_clock_settime at Base 4.9
+ __sanitizer_syscall_post_impl_close at Base 4.9
+ __sanitizer_syscall_post_impl_connect at Base 4.9
+ __sanitizer_syscall_post_impl_creat at Base 4.9
+ __sanitizer_syscall_post_impl_delete_module at Base 4.9
+ __sanitizer_syscall_post_impl_dup2 at Base 4.9
+ __sanitizer_syscall_post_impl_dup3 at Base 4.9
+ __sanitizer_syscall_post_impl_dup at Base 4.9
+ __sanitizer_syscall_post_impl_epoll_create1 at Base 4.9
+ __sanitizer_syscall_post_impl_epoll_create at Base 4.9
+ __sanitizer_syscall_post_impl_epoll_ctl at Base 4.9
+ __sanitizer_syscall_post_impl_epoll_pwait at Base 4.9
+ __sanitizer_syscall_post_impl_epoll_wait at Base 4.9
+ __sanitizer_syscall_post_impl_eventfd2 at Base 4.9
+ __sanitizer_syscall_post_impl_eventfd at Base 4.9
+ __sanitizer_syscall_post_impl_exit at Base 4.9
+ __sanitizer_syscall_post_impl_exit_group at Base 4.9
+ __sanitizer_syscall_post_impl_faccessat at Base 4.9
+ __sanitizer_syscall_post_impl_fchdir at Base 4.9
+ __sanitizer_syscall_post_impl_fchmod at Base 4.9
+ __sanitizer_syscall_post_impl_fchmodat at Base 4.9
+ __sanitizer_syscall_post_impl_fchown at Base 4.9
+ __sanitizer_syscall_post_impl_fchownat at Base 4.9
+ __sanitizer_syscall_post_impl_fcntl64 at Base 4.9
+ __sanitizer_syscall_post_impl_fcntl at Base 4.9
+ __sanitizer_syscall_post_impl_fdatasync at Base 4.9
+ __sanitizer_syscall_post_impl_fgetxattr at Base 4.9
+ __sanitizer_syscall_post_impl_flistxattr at Base 4.9
+ __sanitizer_syscall_post_impl_flock at Base 4.9
+ __sanitizer_syscall_post_impl_fork at Base 4.9
+ __sanitizer_syscall_post_impl_fremovexattr at Base 4.9
+ __sanitizer_syscall_post_impl_fsetxattr at Base 4.9
+ __sanitizer_syscall_post_impl_fstat64 at Base 4.9
+ __sanitizer_syscall_post_impl_fstat at Base 4.9
+ __sanitizer_syscall_post_impl_fstatat64 at Base 4.9
+ __sanitizer_syscall_post_impl_fstatfs64 at Base 4.9
+ __sanitizer_syscall_post_impl_fstatfs at Base 4.9
+ __sanitizer_syscall_post_impl_fsync at Base 4.9
+ __sanitizer_syscall_post_impl_ftruncate at Base 4.9
+ __sanitizer_syscall_post_impl_futimesat at Base 4.9
+ __sanitizer_syscall_post_impl_get_mempolicy at Base 4.9
+ __sanitizer_syscall_post_impl_get_robust_list at Base 4.9
+ __sanitizer_syscall_post_impl_getcpu at Base 4.9
+ __sanitizer_syscall_post_impl_getcwd at Base 4.9
+ __sanitizer_syscall_post_impl_getdents64 at Base 4.9
+ __sanitizer_syscall_post_impl_getdents at Base 4.9
+ __sanitizer_syscall_post_impl_getegid at Base 4.9
+ __sanitizer_syscall_post_impl_geteuid at Base 4.9
+ __sanitizer_syscall_post_impl_getgid at Base 4.9
+ __sanitizer_syscall_post_impl_getgroups at Base 4.9
+ __sanitizer_syscall_post_impl_gethostname at Base 4.9
+ __sanitizer_syscall_post_impl_getitimer at Base 4.9
+ __sanitizer_syscall_post_impl_getpeername at Base 4.9
+ __sanitizer_syscall_post_impl_getpgid at Base 4.9
+ __sanitizer_syscall_post_impl_getpgrp at Base 4.9
+ __sanitizer_syscall_post_impl_getpid at Base 4.9
+ __sanitizer_syscall_post_impl_getppid at Base 4.9
+ __sanitizer_syscall_post_impl_getpriority at Base 4.9
+ __sanitizer_syscall_post_impl_getresgid at Base 4.9
+ __sanitizer_syscall_post_impl_getresuid at Base 4.9
+ __sanitizer_syscall_post_impl_getrlimit at Base 4.9
+ __sanitizer_syscall_post_impl_getrusage at Base 4.9
+ __sanitizer_syscall_post_impl_getsid at Base 4.9
+ __sanitizer_syscall_post_impl_getsockname at Base 4.9
+ __sanitizer_syscall_post_impl_getsockopt at Base 4.9
+ __sanitizer_syscall_post_impl_gettid at Base 4.9
+ __sanitizer_syscall_post_impl_gettimeofday at Base 4.9
+ __sanitizer_syscall_post_impl_getuid at Base 4.9
+ __sanitizer_syscall_post_impl_getxattr at Base 4.9
+ __sanitizer_syscall_post_impl_init_module at Base 4.9
+ __sanitizer_syscall_post_impl_inotify_add_watch at Base 4.9
+ __sanitizer_syscall_post_impl_inotify_init1 at Base 4.9
+ __sanitizer_syscall_post_impl_inotify_init at Base 4.9
+ __sanitizer_syscall_post_impl_inotify_rm_watch at Base 4.9
+ __sanitizer_syscall_post_impl_io_cancel at Base 4.9
+ __sanitizer_syscall_post_impl_io_destroy at Base 4.9
+ __sanitizer_syscall_post_impl_io_getevents at Base 4.9
+ __sanitizer_syscall_post_impl_io_setup at Base 4.9
+ __sanitizer_syscall_post_impl_io_submit at Base 4.9
+ __sanitizer_syscall_post_impl_ioctl at Base 4.9
+ __sanitizer_syscall_post_impl_ioperm at Base 4.9
+ __sanitizer_syscall_post_impl_ioprio_get at Base 4.9
+ __sanitizer_syscall_post_impl_ioprio_set at Base 4.9
+ __sanitizer_syscall_post_impl_ipc at Base 4.9
+ __sanitizer_syscall_post_impl_kexec_load at Base 4.9
+ __sanitizer_syscall_post_impl_keyctl at Base 4.9
+ __sanitizer_syscall_post_impl_kill at Base 4.9
+ __sanitizer_syscall_post_impl_lchown at Base 4.9
+ __sanitizer_syscall_post_impl_lgetxattr at Base 4.9
+ __sanitizer_syscall_post_impl_link at Base 4.9
+ __sanitizer_syscall_post_impl_linkat at Base 4.9
+ __sanitizer_syscall_post_impl_listen at Base 4.9
+ __sanitizer_syscall_post_impl_listxattr at Base 4.9
+ __sanitizer_syscall_post_impl_llistxattr at Base 4.9
+ __sanitizer_syscall_post_impl_llseek at Base 4.9
+ __sanitizer_syscall_post_impl_lookup_dcookie at Base 4.9
+ __sanitizer_syscall_post_impl_lremovexattr at Base 4.9
+ __sanitizer_syscall_post_impl_lseek at Base 4.9
+ __sanitizer_syscall_post_impl_lsetxattr at Base 4.9
+ __sanitizer_syscall_post_impl_lstat64 at Base 4.9
+ __sanitizer_syscall_post_impl_lstat at Base 4.9
+ __sanitizer_syscall_post_impl_madvise at Base 4.9
+ __sanitizer_syscall_post_impl_mbind at Base 4.9
+ __sanitizer_syscall_post_impl_migrate_pages at Base 4.9
+ __sanitizer_syscall_post_impl_mincore at Base 4.9
+ __sanitizer_syscall_post_impl_mkdir at Base 4.9
+ __sanitizer_syscall_post_impl_mkdirat at Base 4.9
+ __sanitizer_syscall_post_impl_mknod at Base 4.9
+ __sanitizer_syscall_post_impl_mknodat at Base 4.9
+ __sanitizer_syscall_post_impl_mlock at Base 4.9
+ __sanitizer_syscall_post_impl_mlockall at Base 4.9
+ __sanitizer_syscall_post_impl_mmap_pgoff at Base 4.9
+ __sanitizer_syscall_post_impl_mount at Base 4.9
+ __sanitizer_syscall_post_impl_move_pages at Base 4.9
+ __sanitizer_syscall_post_impl_mprotect at Base 4.9
+ __sanitizer_syscall_post_impl_mq_getsetattr at Base 4.9
+ __sanitizer_syscall_post_impl_mq_notify at Base 4.9
+ __sanitizer_syscall_post_impl_mq_open at Base 4.9
+ __sanitizer_syscall_post_impl_mq_timedreceive at Base 4.9
+ __sanitizer_syscall_post_impl_mq_timedsend at Base 4.9
+ __sanitizer_syscall_post_impl_mq_unlink at Base 4.9
+ __sanitizer_syscall_post_impl_mremap at Base 4.9
+ __sanitizer_syscall_post_impl_msgctl at Base 4.9
+ __sanitizer_syscall_post_impl_msgget at Base 4.9
+ __sanitizer_syscall_post_impl_msgrcv at Base 4.9
+ __sanitizer_syscall_post_impl_msgsnd at Base 4.9
+ __sanitizer_syscall_post_impl_msync at Base 4.9
+ __sanitizer_syscall_post_impl_munlock at Base 4.9
+ __sanitizer_syscall_post_impl_munlockall at Base 4.9
+ __sanitizer_syscall_post_impl_munmap at Base 4.9
+ __sanitizer_syscall_post_impl_name_to_handle_at at Base 4.9
+ __sanitizer_syscall_post_impl_nanosleep at Base 4.9
+ __sanitizer_syscall_post_impl_newfstat at Base 4.9
+ __sanitizer_syscall_post_impl_newfstatat at Base 4.9
+ __sanitizer_syscall_post_impl_newlstat at Base 4.9
+ __sanitizer_syscall_post_impl_newstat at Base 4.9
+ __sanitizer_syscall_post_impl_newuname at Base 4.9
+ __sanitizer_syscall_post_impl_ni_syscall at Base 4.9
+ __sanitizer_syscall_post_impl_nice at Base 4.9
+ __sanitizer_syscall_post_impl_old_getrlimit at Base 4.9
+ __sanitizer_syscall_post_impl_old_mmap at Base 4.9
+ __sanitizer_syscall_post_impl_old_readdir at Base 4.9
+ __sanitizer_syscall_post_impl_old_select at Base 4.9
+ __sanitizer_syscall_post_impl_oldumount at Base 4.9
+ __sanitizer_syscall_post_impl_olduname at Base 4.9
+ __sanitizer_syscall_post_impl_open at Base 4.9
+ __sanitizer_syscall_post_impl_open_by_handle_at at Base 4.9
+ __sanitizer_syscall_post_impl_openat at Base 4.9
+ __sanitizer_syscall_post_impl_pause at Base 4.9
+ __sanitizer_syscall_post_impl_pciconfig_iobase at Base 4.9
+ __sanitizer_syscall_post_impl_pciconfig_read at Base 4.9
+ __sanitizer_syscall_post_impl_pciconfig_write at Base 4.9
+ __sanitizer_syscall_post_impl_perf_event_open at Base 4.9
+ __sanitizer_syscall_post_impl_personality at Base 4.9
+ __sanitizer_syscall_post_impl_pipe2 at Base 4.9
+ __sanitizer_syscall_post_impl_pipe at Base 4.9
+ __sanitizer_syscall_post_impl_pivot_root at Base 4.9
+ __sanitizer_syscall_post_impl_poll at Base 4.9
+ __sanitizer_syscall_post_impl_ppoll at Base 4.9
+ __sanitizer_syscall_post_impl_pread64 at Base 4.9
+ __sanitizer_syscall_post_impl_preadv at Base 4.9
+ __sanitizer_syscall_post_impl_prlimit64 at Base 4.9
+ __sanitizer_syscall_post_impl_process_vm_readv at Base 4.9
+ __sanitizer_syscall_post_impl_process_vm_writev at Base 4.9
+ __sanitizer_syscall_post_impl_pselect6 at Base 4.9
+ __sanitizer_syscall_post_impl_ptrace at Base 4.9
+ __sanitizer_syscall_post_impl_pwrite64 at Base 4.9
+ __sanitizer_syscall_post_impl_pwritev at Base 4.9
+ __sanitizer_syscall_post_impl_quotactl at Base 4.9
+ __sanitizer_syscall_post_impl_read at Base 4.9
+ __sanitizer_syscall_post_impl_readlink at Base 4.9
+ __sanitizer_syscall_post_impl_readlinkat at Base 4.9
+ __sanitizer_syscall_post_impl_readv at Base 4.9
+ __sanitizer_syscall_post_impl_reboot at Base 4.9
+ __sanitizer_syscall_post_impl_recv at Base 4.9
+ __sanitizer_syscall_post_impl_recvfrom at Base 4.9
+ __sanitizer_syscall_post_impl_recvmmsg at Base 4.9
+ __sanitizer_syscall_post_impl_recvmsg at Base 4.9
+ __sanitizer_syscall_post_impl_remap_file_pages at Base 4.9
+ __sanitizer_syscall_post_impl_removexattr at Base 4.9
+ __sanitizer_syscall_post_impl_rename at Base 4.9
+ __sanitizer_syscall_post_impl_renameat at Base 4.9
+ __sanitizer_syscall_post_impl_request_key at Base 4.9
+ __sanitizer_syscall_post_impl_restart_syscall at Base 4.9
+ __sanitizer_syscall_post_impl_rmdir at Base 4.9
+ __sanitizer_syscall_post_impl_rt_sigpending at Base 4.9
+ __sanitizer_syscall_post_impl_rt_sigprocmask at Base 4.9
+ __sanitizer_syscall_post_impl_rt_sigqueueinfo at Base 4.9
+ __sanitizer_syscall_post_impl_rt_sigtimedwait at Base 4.9
+ __sanitizer_syscall_post_impl_rt_tgsigqueueinfo at Base 4.9
+ __sanitizer_syscall_post_impl_sched_get_priority_max at Base 4.9
+ __sanitizer_syscall_post_impl_sched_get_priority_min at Base 4.9
+ __sanitizer_syscall_post_impl_sched_getaffinity at Base 4.9
+ __sanitizer_syscall_post_impl_sched_getparam at Base 4.9
+ __sanitizer_syscall_post_impl_sched_getscheduler at Base 4.9
+ __sanitizer_syscall_post_impl_sched_rr_get_interval at Base 4.9
+ __sanitizer_syscall_post_impl_sched_setaffinity at Base 4.9
+ __sanitizer_syscall_post_impl_sched_setparam at Base 4.9
+ __sanitizer_syscall_post_impl_sched_setscheduler at Base 4.9
+ __sanitizer_syscall_post_impl_sched_yield at Base 4.9
+ __sanitizer_syscall_post_impl_select at Base 4.9
+ __sanitizer_syscall_post_impl_semctl at Base 4.9
+ __sanitizer_syscall_post_impl_semget at Base 4.9
+ __sanitizer_syscall_post_impl_semop at Base 4.9
+ __sanitizer_syscall_post_impl_semtimedop at Base 4.9
+ __sanitizer_syscall_post_impl_send at Base 4.9
+ __sanitizer_syscall_post_impl_sendfile64 at Base 4.9
+ __sanitizer_syscall_post_impl_sendfile at Base 4.9
+ __sanitizer_syscall_post_impl_sendmmsg at Base 4.9
+ __sanitizer_syscall_post_impl_sendmsg at Base 4.9
+ __sanitizer_syscall_post_impl_sendto at Base 4.9
+ __sanitizer_syscall_post_impl_set_mempolicy at Base 4.9
+ __sanitizer_syscall_post_impl_set_robust_list at Base 4.9
+ __sanitizer_syscall_post_impl_set_tid_address at Base 4.9
+ __sanitizer_syscall_post_impl_setdomainname at Base 4.9
+ __sanitizer_syscall_post_impl_setfsgid at Base 4.9
+ __sanitizer_syscall_post_impl_setfsuid at Base 4.9
+ __sanitizer_syscall_post_impl_setgid at Base 4.9
+ __sanitizer_syscall_post_impl_setgroups at Base 4.9
+ __sanitizer_syscall_post_impl_sethostname at Base 4.9
+ __sanitizer_syscall_post_impl_setitimer at Base 4.9
+ __sanitizer_syscall_post_impl_setns at Base 4.9
+ __sanitizer_syscall_post_impl_setpgid at Base 4.9
+ __sanitizer_syscall_post_impl_setpriority at Base 4.9
+ __sanitizer_syscall_post_impl_setregid at Base 4.9
+ __sanitizer_syscall_post_impl_setresgid at Base 4.9
+ __sanitizer_syscall_post_impl_setresuid at Base 4.9
+ __sanitizer_syscall_post_impl_setreuid at Base 4.9
+ __sanitizer_syscall_post_impl_setrlimit at Base 4.9
+ __sanitizer_syscall_post_impl_setsid at Base 4.9
+ __sanitizer_syscall_post_impl_setsockopt at Base 4.9
+ __sanitizer_syscall_post_impl_settimeofday at Base 4.9
+ __sanitizer_syscall_post_impl_setuid at Base 4.9
+ __sanitizer_syscall_post_impl_setxattr at Base 4.9
+ __sanitizer_syscall_post_impl_sgetmask at Base 4.9
+ __sanitizer_syscall_post_impl_shmat at Base 4.9
+ __sanitizer_syscall_post_impl_shmctl at Base 4.9
+ __sanitizer_syscall_post_impl_shmdt at Base 4.9
+ __sanitizer_syscall_post_impl_shmget at Base 4.9
+ __sanitizer_syscall_post_impl_shutdown at Base 4.9
+ __sanitizer_syscall_post_impl_signal at Base 4.9
+ __sanitizer_syscall_post_impl_signalfd4 at Base 4.9
+ __sanitizer_syscall_post_impl_signalfd at Base 4.9
+ __sanitizer_syscall_post_impl_sigpending at Base 4.9
+ __sanitizer_syscall_post_impl_sigprocmask at Base 4.9
+ __sanitizer_syscall_post_impl_socket at Base 4.9
+ __sanitizer_syscall_post_impl_socketcall at Base 4.9
+ __sanitizer_syscall_post_impl_socketpair at Base 4.9
+ __sanitizer_syscall_post_impl_splice at Base 4.9
+ __sanitizer_syscall_post_impl_spu_create at Base 4.9
+ __sanitizer_syscall_post_impl_spu_run at Base 4.9
+ __sanitizer_syscall_post_impl_ssetmask at Base 4.9
+ __sanitizer_syscall_post_impl_stat64 at Base 4.9
+ __sanitizer_syscall_post_impl_stat at Base 4.9
+ __sanitizer_syscall_post_impl_statfs64 at Base 4.9
+ __sanitizer_syscall_post_impl_statfs at Base 4.9
+ __sanitizer_syscall_post_impl_stime at Base 4.9
+ __sanitizer_syscall_post_impl_swapoff at Base 4.9
+ __sanitizer_syscall_post_impl_swapon at Base 4.9
+ __sanitizer_syscall_post_impl_symlink at Base 4.9
+ __sanitizer_syscall_post_impl_symlinkat at Base 4.9
+ __sanitizer_syscall_post_impl_sync at Base 4.9
+ __sanitizer_syscall_post_impl_syncfs at Base 4.9
+ __sanitizer_syscall_post_impl_sysctl at Base 4.9
+ __sanitizer_syscall_post_impl_sysfs at Base 4.9
+ __sanitizer_syscall_post_impl_sysinfo at Base 4.9
+ __sanitizer_syscall_post_impl_syslog at Base 4.9
+ __sanitizer_syscall_post_impl_tee at Base 4.9
+ __sanitizer_syscall_post_impl_tgkill at Base 4.9
+ __sanitizer_syscall_post_impl_time at Base 4.9
+ __sanitizer_syscall_post_impl_timer_create at Base 4.9
+ __sanitizer_syscall_post_impl_timer_delete at Base 4.9
+ __sanitizer_syscall_post_impl_timer_getoverrun at Base 4.9
+ __sanitizer_syscall_post_impl_timer_gettime at Base 4.9
+ __sanitizer_syscall_post_impl_timer_settime at Base 4.9
+ __sanitizer_syscall_post_impl_timerfd_create at Base 4.9
+ __sanitizer_syscall_post_impl_timerfd_gettime at Base 4.9
+ __sanitizer_syscall_post_impl_timerfd_settime at Base 4.9
+ __sanitizer_syscall_post_impl_times at Base 4.9
+ __sanitizer_syscall_post_impl_tkill at Base 4.9
+ __sanitizer_syscall_post_impl_truncate at Base 4.9
+ __sanitizer_syscall_post_impl_umask at Base 4.9
+ __sanitizer_syscall_post_impl_umount at Base 4.9
+ __sanitizer_syscall_post_impl_uname at Base 4.9
+ __sanitizer_syscall_post_impl_unlink at Base 4.9
+ __sanitizer_syscall_post_impl_unlinkat at Base 4.9
+ __sanitizer_syscall_post_impl_unshare at Base 4.9
+ __sanitizer_syscall_post_impl_uselib at Base 4.9
+ __sanitizer_syscall_post_impl_ustat at Base 4.9
+ __sanitizer_syscall_post_impl_utime at Base 4.9
+ __sanitizer_syscall_post_impl_utimensat at Base 4.9
+ __sanitizer_syscall_post_impl_utimes at Base 4.9
+ __sanitizer_syscall_post_impl_vfork at Base 4.9
+ __sanitizer_syscall_post_impl_vhangup at Base 4.9
+ __sanitizer_syscall_post_impl_vmsplice at Base 4.9
+ __sanitizer_syscall_post_impl_wait4 at Base 4.9
+ __sanitizer_syscall_post_impl_waitid at Base 4.9
+ __sanitizer_syscall_post_impl_waitpid at Base 4.9
+ __sanitizer_syscall_post_impl_write at Base 4.9
+ __sanitizer_syscall_post_impl_writev at Base 4.9
+ __sanitizer_syscall_pre_impl_accept4 at Base 4.9
+ __sanitizer_syscall_pre_impl_accept at Base 4.9
+ __sanitizer_syscall_pre_impl_access at Base 4.9
+ __sanitizer_syscall_pre_impl_acct at Base 4.9
+ __sanitizer_syscall_pre_impl_add_key at Base 4.9
+ __sanitizer_syscall_pre_impl_adjtimex at Base 4.9
+ __sanitizer_syscall_pre_impl_alarm at Base 4.9
+ __sanitizer_syscall_pre_impl_bdflush at Base 4.9
+ __sanitizer_syscall_pre_impl_bind at Base 4.9
+ __sanitizer_syscall_pre_impl_brk at Base 4.9
+ __sanitizer_syscall_pre_impl_capget at Base 4.9
+ __sanitizer_syscall_pre_impl_capset at Base 4.9
+ __sanitizer_syscall_pre_impl_chdir at Base 4.9
+ __sanitizer_syscall_pre_impl_chmod at Base 4.9
+ __sanitizer_syscall_pre_impl_chown at Base 4.9
+ __sanitizer_syscall_pre_impl_chroot at Base 4.9
+ __sanitizer_syscall_pre_impl_clock_adjtime at Base 4.9
+ __sanitizer_syscall_pre_impl_clock_getres at Base 4.9
+ __sanitizer_syscall_pre_impl_clock_gettime at Base 4.9
+ __sanitizer_syscall_pre_impl_clock_nanosleep at Base 4.9
+ __sanitizer_syscall_pre_impl_clock_settime at Base 4.9
+ __sanitizer_syscall_pre_impl_close at Base 4.9
+ __sanitizer_syscall_pre_impl_connect at Base 4.9
+ __sanitizer_syscall_pre_impl_creat at Base 4.9
+ __sanitizer_syscall_pre_impl_delete_module at Base 4.9
+ __sanitizer_syscall_pre_impl_dup2 at Base 4.9
+ __sanitizer_syscall_pre_impl_dup3 at Base 4.9
+ __sanitizer_syscall_pre_impl_dup at Base 4.9
+ __sanitizer_syscall_pre_impl_epoll_create1 at Base 4.9
+ __sanitizer_syscall_pre_impl_epoll_create at Base 4.9
+ __sanitizer_syscall_pre_impl_epoll_ctl at Base 4.9
+ __sanitizer_syscall_pre_impl_epoll_pwait at Base 4.9
+ __sanitizer_syscall_pre_impl_epoll_wait at Base 4.9
+ __sanitizer_syscall_pre_impl_eventfd2 at Base 4.9
+ __sanitizer_syscall_pre_impl_eventfd at Base 4.9
+ __sanitizer_syscall_pre_impl_exit at Base 4.9
+ __sanitizer_syscall_pre_impl_exit_group at Base 4.9
+ __sanitizer_syscall_pre_impl_faccessat at Base 4.9
+ __sanitizer_syscall_pre_impl_fchdir at Base 4.9
+ __sanitizer_syscall_pre_impl_fchmod at Base 4.9
+ __sanitizer_syscall_pre_impl_fchmodat at Base 4.9
+ __sanitizer_syscall_pre_impl_fchown at Base 4.9
+ __sanitizer_syscall_pre_impl_fchownat at Base 4.9
+ __sanitizer_syscall_pre_impl_fcntl64 at Base 4.9
+ __sanitizer_syscall_pre_impl_fcntl at Base 4.9
+ __sanitizer_syscall_pre_impl_fdatasync at Base 4.9
+ __sanitizer_syscall_pre_impl_fgetxattr at Base 4.9
+ __sanitizer_syscall_pre_impl_flistxattr at Base 4.9
+ __sanitizer_syscall_pre_impl_flock at Base 4.9
+ __sanitizer_syscall_pre_impl_fork at Base 4.9
+ __sanitizer_syscall_pre_impl_fremovexattr at Base 4.9
+ __sanitizer_syscall_pre_impl_fsetxattr at Base 4.9
+ __sanitizer_syscall_pre_impl_fstat64 at Base 4.9
+ __sanitizer_syscall_pre_impl_fstat at Base 4.9
+ __sanitizer_syscall_pre_impl_fstatat64 at Base 4.9
+ __sanitizer_syscall_pre_impl_fstatfs64 at Base 4.9
+ __sanitizer_syscall_pre_impl_fstatfs at Base 4.9
+ __sanitizer_syscall_pre_impl_fsync at Base 4.9
+ __sanitizer_syscall_pre_impl_ftruncate at Base 4.9
+ __sanitizer_syscall_pre_impl_futimesat at Base 4.9
+ __sanitizer_syscall_pre_impl_get_mempolicy at Base 4.9
+ __sanitizer_syscall_pre_impl_get_robust_list at Base 4.9
+ __sanitizer_syscall_pre_impl_getcpu at Base 4.9
+ __sanitizer_syscall_pre_impl_getcwd at Base 4.9
+ __sanitizer_syscall_pre_impl_getdents64 at Base 4.9
+ __sanitizer_syscall_pre_impl_getdents at Base 4.9
+ __sanitizer_syscall_pre_impl_getegid at Base 4.9
+ __sanitizer_syscall_pre_impl_geteuid at Base 4.9
+ __sanitizer_syscall_pre_impl_getgid at Base 4.9
+ __sanitizer_syscall_pre_impl_getgroups at Base 4.9
+ __sanitizer_syscall_pre_impl_gethostname at Base 4.9
+ __sanitizer_syscall_pre_impl_getitimer at Base 4.9
+ __sanitizer_syscall_pre_impl_getpeername at Base 4.9
+ __sanitizer_syscall_pre_impl_getpgid at Base 4.9
+ __sanitizer_syscall_pre_impl_getpgrp at Base 4.9
+ __sanitizer_syscall_pre_impl_getpid at Base 4.9
+ __sanitizer_syscall_pre_impl_getppid at Base 4.9
+ __sanitizer_syscall_pre_impl_getpriority at Base 4.9
+ __sanitizer_syscall_pre_impl_getresgid at Base 4.9
+ __sanitizer_syscall_pre_impl_getresuid at Base 4.9
+ __sanitizer_syscall_pre_impl_getrlimit at Base 4.9
+ __sanitizer_syscall_pre_impl_getrusage at Base 4.9
+ __sanitizer_syscall_pre_impl_getsid at Base 4.9
+ __sanitizer_syscall_pre_impl_getsockname at Base 4.9
+ __sanitizer_syscall_pre_impl_getsockopt at Base 4.9
+ __sanitizer_syscall_pre_impl_gettid at Base 4.9
+ __sanitizer_syscall_pre_impl_gettimeofday at Base 4.9
+ __sanitizer_syscall_pre_impl_getuid at Base 4.9
+ __sanitizer_syscall_pre_impl_getxattr at Base 4.9
+ __sanitizer_syscall_pre_impl_init_module at Base 4.9
+ __sanitizer_syscall_pre_impl_inotify_add_watch at Base 4.9
+ __sanitizer_syscall_pre_impl_inotify_init1 at Base 4.9
+ __sanitizer_syscall_pre_impl_inotify_init at Base 4.9
+ __sanitizer_syscall_pre_impl_inotify_rm_watch at Base 4.9
+ __sanitizer_syscall_pre_impl_io_cancel at Base 4.9
+ __sanitizer_syscall_pre_impl_io_destroy at Base 4.9
+ __sanitizer_syscall_pre_impl_io_getevents at Base 4.9
+ __sanitizer_syscall_pre_impl_io_setup at Base 4.9
+ __sanitizer_syscall_pre_impl_io_submit at Base 4.9
+ __sanitizer_syscall_pre_impl_ioctl at Base 4.9
+ __sanitizer_syscall_pre_impl_ioperm at Base 4.9
+ __sanitizer_syscall_pre_impl_ioprio_get at Base 4.9
+ __sanitizer_syscall_pre_impl_ioprio_set at Base 4.9
+ __sanitizer_syscall_pre_impl_ipc at Base 4.9
+ __sanitizer_syscall_pre_impl_kexec_load at Base 4.9
+ __sanitizer_syscall_pre_impl_keyctl at Base 4.9
+ __sanitizer_syscall_pre_impl_kill at Base 4.9
+ __sanitizer_syscall_pre_impl_lchown at Base 4.9
+ __sanitizer_syscall_pre_impl_lgetxattr at Base 4.9
+ __sanitizer_syscall_pre_impl_link at Base 4.9
+ __sanitizer_syscall_pre_impl_linkat at Base 4.9
+ __sanitizer_syscall_pre_impl_listen at Base 4.9
+ __sanitizer_syscall_pre_impl_listxattr at Base 4.9
+ __sanitizer_syscall_pre_impl_llistxattr at Base 4.9
+ __sanitizer_syscall_pre_impl_llseek at Base 4.9
+ __sanitizer_syscall_pre_impl_lookup_dcookie at Base 4.9
+ __sanitizer_syscall_pre_impl_lremovexattr at Base 4.9
+ __sanitizer_syscall_pre_impl_lseek at Base 4.9
+ __sanitizer_syscall_pre_impl_lsetxattr at Base 4.9
+ __sanitizer_syscall_pre_impl_lstat64 at Base 4.9
+ __sanitizer_syscall_pre_impl_lstat at Base 4.9
+ __sanitizer_syscall_pre_impl_madvise at Base 4.9
+ __sanitizer_syscall_pre_impl_mbind at Base 4.9
+ __sanitizer_syscall_pre_impl_migrate_pages at Base 4.9
+ __sanitizer_syscall_pre_impl_mincore at Base 4.9
+ __sanitizer_syscall_pre_impl_mkdir at Base 4.9
+ __sanitizer_syscall_pre_impl_mkdirat at Base 4.9
+ __sanitizer_syscall_pre_impl_mknod at Base 4.9
+ __sanitizer_syscall_pre_impl_mknodat at Base 4.9
+ __sanitizer_syscall_pre_impl_mlock at Base 4.9
+ __sanitizer_syscall_pre_impl_mlockall at Base 4.9
+ __sanitizer_syscall_pre_impl_mmap_pgoff at Base 4.9
+ __sanitizer_syscall_pre_impl_mount at Base 4.9
+ __sanitizer_syscall_pre_impl_move_pages at Base 4.9
+ __sanitizer_syscall_pre_impl_mprotect at Base 4.9
+ __sanitizer_syscall_pre_impl_mq_getsetattr at Base 4.9
+ __sanitizer_syscall_pre_impl_mq_notify at Base 4.9
+ __sanitizer_syscall_pre_impl_mq_open at Base 4.9
+ __sanitizer_syscall_pre_impl_mq_timedreceive at Base 4.9
+ __sanitizer_syscall_pre_impl_mq_timedsend at Base 4.9
+ __sanitizer_syscall_pre_impl_mq_unlink at Base 4.9
+ __sanitizer_syscall_pre_impl_mremap at Base 4.9
+ __sanitizer_syscall_pre_impl_msgctl at Base 4.9
+ __sanitizer_syscall_pre_impl_msgget at Base 4.9
+ __sanitizer_syscall_pre_impl_msgrcv at Base 4.9
+ __sanitizer_syscall_pre_impl_msgsnd at Base 4.9
+ __sanitizer_syscall_pre_impl_msync at Base 4.9
+ __sanitizer_syscall_pre_impl_munlock at Base 4.9
+ __sanitizer_syscall_pre_impl_munlockall at Base 4.9
+ __sanitizer_syscall_pre_impl_munmap at Base 4.9
+ __sanitizer_syscall_pre_impl_name_to_handle_at at Base 4.9
+ __sanitizer_syscall_pre_impl_nanosleep at Base 4.9
+ __sanitizer_syscall_pre_impl_newfstat at Base 4.9
+ __sanitizer_syscall_pre_impl_newfstatat at Base 4.9
+ __sanitizer_syscall_pre_impl_newlstat at Base 4.9
+ __sanitizer_syscall_pre_impl_newstat at Base 4.9
+ __sanitizer_syscall_pre_impl_newuname at Base 4.9
+ __sanitizer_syscall_pre_impl_ni_syscall at Base 4.9
+ __sanitizer_syscall_pre_impl_nice at Base 4.9
+ __sanitizer_syscall_pre_impl_old_getrlimit at Base 4.9
+ __sanitizer_syscall_pre_impl_old_mmap at Base 4.9
+ __sanitizer_syscall_pre_impl_old_readdir at Base 4.9
+ __sanitizer_syscall_pre_impl_old_select at Base 4.9
+ __sanitizer_syscall_pre_impl_oldumount at Base 4.9
+ __sanitizer_syscall_pre_impl_olduname at Base 4.9
+ __sanitizer_syscall_pre_impl_open at Base 4.9
+ __sanitizer_syscall_pre_impl_open_by_handle_at at Base 4.9
+ __sanitizer_syscall_pre_impl_openat at Base 4.9
+ __sanitizer_syscall_pre_impl_pause at Base 4.9
+ __sanitizer_syscall_pre_impl_pciconfig_iobase at Base 4.9
+ __sanitizer_syscall_pre_impl_pciconfig_read at Base 4.9
+ __sanitizer_syscall_pre_impl_pciconfig_write at Base 4.9
+ __sanitizer_syscall_pre_impl_perf_event_open at Base 4.9
+ __sanitizer_syscall_pre_impl_personality at Base 4.9
+ __sanitizer_syscall_pre_impl_pipe2 at Base 4.9
+ __sanitizer_syscall_pre_impl_pipe at Base 4.9
+ __sanitizer_syscall_pre_impl_pivot_root at Base 4.9
+ __sanitizer_syscall_pre_impl_poll at Base 4.9
+ __sanitizer_syscall_pre_impl_ppoll at Base 4.9
+ __sanitizer_syscall_pre_impl_pread64 at Base 4.9
+ __sanitizer_syscall_pre_impl_preadv at Base 4.9
+ __sanitizer_syscall_pre_impl_prlimit64 at Base 4.9
+ __sanitizer_syscall_pre_impl_process_vm_readv at Base 4.9
+ __sanitizer_syscall_pre_impl_process_vm_writev at Base 4.9
+ __sanitizer_syscall_pre_impl_pselect6 at Base 4.9
+ __sanitizer_syscall_pre_impl_ptrace at Base 4.9
+ __sanitizer_syscall_pre_impl_pwrite64 at Base 4.9
+ __sanitizer_syscall_pre_impl_pwritev at Base 4.9
+ __sanitizer_syscall_pre_impl_quotactl at Base 4.9
+ __sanitizer_syscall_pre_impl_read at Base 4.9
+ __sanitizer_syscall_pre_impl_readlink at Base 4.9
+ __sanitizer_syscall_pre_impl_readlinkat at Base 4.9
+ __sanitizer_syscall_pre_impl_readv at Base 4.9
+ __sanitizer_syscall_pre_impl_reboot at Base 4.9
+ __sanitizer_syscall_pre_impl_recv at Base 4.9
+ __sanitizer_syscall_pre_impl_recvfrom at Base 4.9
+ __sanitizer_syscall_pre_impl_recvmmsg at Base 4.9
+ __sanitizer_syscall_pre_impl_recvmsg at Base 4.9
+ __sanitizer_syscall_pre_impl_remap_file_pages at Base 4.9
+ __sanitizer_syscall_pre_impl_removexattr at Base 4.9
+ __sanitizer_syscall_pre_impl_rename at Base 4.9
+ __sanitizer_syscall_pre_impl_renameat at Base 4.9
+ __sanitizer_syscall_pre_impl_request_key at Base 4.9
+ __sanitizer_syscall_pre_impl_restart_syscall at Base 4.9
+ __sanitizer_syscall_pre_impl_rmdir at Base 4.9
+ __sanitizer_syscall_pre_impl_rt_sigpending at Base 4.9
+ __sanitizer_syscall_pre_impl_rt_sigprocmask at Base 4.9
+ __sanitizer_syscall_pre_impl_rt_sigqueueinfo at Base 4.9
+ __sanitizer_syscall_pre_impl_rt_sigtimedwait at Base 4.9
+ __sanitizer_syscall_pre_impl_rt_tgsigqueueinfo at Base 4.9
+ __sanitizer_syscall_pre_impl_sched_get_priority_max at Base 4.9
+ __sanitizer_syscall_pre_impl_sched_get_priority_min at Base 4.9
+ __sanitizer_syscall_pre_impl_sched_getaffinity at Base 4.9
+ __sanitizer_syscall_pre_impl_sched_getparam at Base 4.9
+ __sanitizer_syscall_pre_impl_sched_getscheduler at Base 4.9
+ __sanitizer_syscall_pre_impl_sched_rr_get_interval at Base 4.9
+ __sanitizer_syscall_pre_impl_sched_setaffinity at Base 4.9
+ __sanitizer_syscall_pre_impl_sched_setparam at Base 4.9
+ __sanitizer_syscall_pre_impl_sched_setscheduler at Base 4.9
+ __sanitizer_syscall_pre_impl_sched_yield at Base 4.9
+ __sanitizer_syscall_pre_impl_select at Base 4.9
+ __sanitizer_syscall_pre_impl_semctl at Base 4.9
+ __sanitizer_syscall_pre_impl_semget at Base 4.9
+ __sanitizer_syscall_pre_impl_semop at Base 4.9
+ __sanitizer_syscall_pre_impl_semtimedop at Base 4.9
+ __sanitizer_syscall_pre_impl_send at Base 4.9
+ __sanitizer_syscall_pre_impl_sendfile64 at Base 4.9
+ __sanitizer_syscall_pre_impl_sendfile at Base 4.9
+ __sanitizer_syscall_pre_impl_sendmmsg at Base 4.9
+ __sanitizer_syscall_pre_impl_sendmsg at Base 4.9
+ __sanitizer_syscall_pre_impl_sendto at Base 4.9
+ __sanitizer_syscall_pre_impl_set_mempolicy at Base 4.9
+ __sanitizer_syscall_pre_impl_set_robust_list at Base 4.9
+ __sanitizer_syscall_pre_impl_set_tid_address at Base 4.9
+ __sanitizer_syscall_pre_impl_setdomainname at Base 4.9
+ __sanitizer_syscall_pre_impl_setfsgid at Base 4.9
+ __sanitizer_syscall_pre_impl_setfsuid at Base 4.9
+ __sanitizer_syscall_pre_impl_setgid at Base 4.9
+ __sanitizer_syscall_pre_impl_setgroups at Base 4.9
+ __sanitizer_syscall_pre_impl_sethostname at Base 4.9
+ __sanitizer_syscall_pre_impl_setitimer at Base 4.9
+ __sanitizer_syscall_pre_impl_setns at Base 4.9
+ __sanitizer_syscall_pre_impl_setpgid at Base 4.9
+ __sanitizer_syscall_pre_impl_setpriority at Base 4.9
+ __sanitizer_syscall_pre_impl_setregid at Base 4.9
+ __sanitizer_syscall_pre_impl_setresgid at Base 4.9
+ __sanitizer_syscall_pre_impl_setresuid at Base 4.9
+ __sanitizer_syscall_pre_impl_setreuid at Base 4.9
+ __sanitizer_syscall_pre_impl_setrlimit at Base 4.9
+ __sanitizer_syscall_pre_impl_setsid at Base 4.9
+ __sanitizer_syscall_pre_impl_setsockopt at Base 4.9
+ __sanitizer_syscall_pre_impl_settimeofday at Base 4.9
+ __sanitizer_syscall_pre_impl_setuid at Base 4.9
+ __sanitizer_syscall_pre_impl_setxattr at Base 4.9
+ __sanitizer_syscall_pre_impl_sgetmask at Base 4.9
+ __sanitizer_syscall_pre_impl_shmat at Base 4.9
+ __sanitizer_syscall_pre_impl_shmctl at Base 4.9
+ __sanitizer_syscall_pre_impl_shmdt at Base 4.9
+ __sanitizer_syscall_pre_impl_shmget at Base 4.9
+ __sanitizer_syscall_pre_impl_shutdown at Base 4.9
+ __sanitizer_syscall_pre_impl_signal at Base 4.9
+ __sanitizer_syscall_pre_impl_signalfd4 at Base 4.9
+ __sanitizer_syscall_pre_impl_signalfd at Base 4.9
+ __sanitizer_syscall_pre_impl_sigpending at Base 4.9
+ __sanitizer_syscall_pre_impl_sigprocmask at Base 4.9
+ __sanitizer_syscall_pre_impl_socket at Base 4.9
+ __sanitizer_syscall_pre_impl_socketcall at Base 4.9
+ __sanitizer_syscall_pre_impl_socketpair at Base 4.9
+ __sanitizer_syscall_pre_impl_splice at Base 4.9
+ __sanitizer_syscall_pre_impl_spu_create at Base 4.9
+ __sanitizer_syscall_pre_impl_spu_run at Base 4.9
+ __sanitizer_syscall_pre_impl_ssetmask at Base 4.9
+ __sanitizer_syscall_pre_impl_stat64 at Base 4.9
+ __sanitizer_syscall_pre_impl_stat at Base 4.9
+ __sanitizer_syscall_pre_impl_statfs64 at Base 4.9
+ __sanitizer_syscall_pre_impl_statfs at Base 4.9
+ __sanitizer_syscall_pre_impl_stime at Base 4.9
+ __sanitizer_syscall_pre_impl_swapoff at Base 4.9
+ __sanitizer_syscall_pre_impl_swapon at Base 4.9
+ __sanitizer_syscall_pre_impl_symlink at Base 4.9
+ __sanitizer_syscall_pre_impl_symlinkat at Base 4.9
+ __sanitizer_syscall_pre_impl_sync at Base 4.9
+ __sanitizer_syscall_pre_impl_syncfs at Base 4.9
+ __sanitizer_syscall_pre_impl_sysctl at Base 4.9
+ __sanitizer_syscall_pre_impl_sysfs at Base 4.9
+ __sanitizer_syscall_pre_impl_sysinfo at Base 4.9
+ __sanitizer_syscall_pre_impl_syslog at Base 4.9
+ __sanitizer_syscall_pre_impl_tee at Base 4.9
+ __sanitizer_syscall_pre_impl_tgkill at Base 4.9
+ __sanitizer_syscall_pre_impl_time at Base 4.9
+ __sanitizer_syscall_pre_impl_timer_create at Base 4.9
+ __sanitizer_syscall_pre_impl_timer_delete at Base 4.9
+ __sanitizer_syscall_pre_impl_timer_getoverrun at Base 4.9
+ __sanitizer_syscall_pre_impl_timer_gettime at Base 4.9
+ __sanitizer_syscall_pre_impl_timer_settime at Base 4.9
+ __sanitizer_syscall_pre_impl_timerfd_create at Base 4.9
+ __sanitizer_syscall_pre_impl_timerfd_gettime at Base 4.9
+ __sanitizer_syscall_pre_impl_timerfd_settime at Base 4.9
+ __sanitizer_syscall_pre_impl_times at Base 4.9
+ __sanitizer_syscall_pre_impl_tkill at Base 4.9
+ __sanitizer_syscall_pre_impl_truncate at Base 4.9
+ __sanitizer_syscall_pre_impl_umask at Base 4.9
+ __sanitizer_syscall_pre_impl_umount at Base 4.9
+ __sanitizer_syscall_pre_impl_uname at Base 4.9
+ __sanitizer_syscall_pre_impl_unlink at Base 4.9
+ __sanitizer_syscall_pre_impl_unlinkat at Base 4.9
+ __sanitizer_syscall_pre_impl_unshare at Base 4.9
+ __sanitizer_syscall_pre_impl_uselib at Base 4.9
+ __sanitizer_syscall_pre_impl_ustat at Base 4.9
+ __sanitizer_syscall_pre_impl_utime at Base 4.9
+ __sanitizer_syscall_pre_impl_utimensat at Base 4.9
+ __sanitizer_syscall_pre_impl_utimes at Base 4.9
+ __sanitizer_syscall_pre_impl_vfork at Base 4.9
+ __sanitizer_syscall_pre_impl_vhangup at Base 4.9
+ __sanitizer_syscall_pre_impl_vmsplice at Base 4.9
+ __sanitizer_syscall_pre_impl_wait4 at Base 4.9
+ __sanitizer_syscall_pre_impl_waitid at Base 4.9
+ __sanitizer_syscall_pre_impl_waitpid at Base 4.9
+ __sanitizer_syscall_pre_impl_write at Base 4.9
+ __sanitizer_syscall_pre_impl_writev at Base 4.9
+ __sanitizer_unaligned_load16 at Base 4.9
+ __sanitizer_unaligned_load32 at Base 4.9
+ __sanitizer_unaligned_load64 at Base 4.9
+ __sanitizer_unaligned_store16 at Base 4.9
+ __sanitizer_unaligned_store32 at Base 4.9
+ __sanitizer_unaligned_store64 at Base 4.9
+ __sigsetjmp at Base 4.9
+ __tls_get_addr at Base 5
+ __tsan_acquire at Base 4.9
+ __tsan_atomic128_compare_exchange_strong at Base 4.9
+ __tsan_atomic128_compare_exchange_val at Base 4.9
+ __tsan_atomic128_compare_exchange_weak at Base 4.9
+ __tsan_atomic128_exchange at Base 4.9
+ __tsan_atomic128_fetch_add at Base 4.9
+ __tsan_atomic128_fetch_and at Base 4.9
+ __tsan_atomic128_fetch_nand at Base 4.9
+ __tsan_atomic128_fetch_or at Base 4.9
+ __tsan_atomic128_fetch_sub at Base 4.9
+ __tsan_atomic128_fetch_xor at Base 4.9
+ __tsan_atomic128_load at Base 4.9
+ __tsan_atomic128_store at Base 4.9
+ __tsan_atomic16_compare_exchange_strong at Base 4.9
+ __tsan_atomic16_compare_exchange_val at Base 4.9
+ __tsan_atomic16_compare_exchange_weak at Base 4.9
+ __tsan_atomic16_exchange at Base 4.9
+ __tsan_atomic16_fetch_add at Base 4.9
+ __tsan_atomic16_fetch_and at Base 4.9
+ __tsan_atomic16_fetch_nand at Base 4.9
+ __tsan_atomic16_fetch_or at Base 4.9
+ __tsan_atomic16_fetch_sub at Base 4.9
+ __tsan_atomic16_fetch_xor at Base 4.9
+ __tsan_atomic16_load at Base 4.9
+ __tsan_atomic16_store at Base 4.9
+ __tsan_atomic32_compare_exchange_strong at Base 4.9
+ __tsan_atomic32_compare_exchange_val at Base 4.9
+ __tsan_atomic32_compare_exchange_weak at Base 4.9
+ __tsan_atomic32_exchange at Base 4.9
+ __tsan_atomic32_fetch_add at Base 4.9
+ __tsan_atomic32_fetch_and at Base 4.9
+ __tsan_atomic32_fetch_nand at Base 4.9
+ __tsan_atomic32_fetch_or at Base 4.9
+ __tsan_atomic32_fetch_sub at Base 4.9
+ __tsan_atomic32_fetch_xor at Base 4.9
+ __tsan_atomic32_load at Base 4.9
+ __tsan_atomic32_store at Base 4.9
+ __tsan_atomic64_compare_exchange_strong at Base 4.9
+ __tsan_atomic64_compare_exchange_val at Base 4.9
+ __tsan_atomic64_compare_exchange_weak at Base 4.9
+ __tsan_atomic64_exchange at Base 4.9
+ __tsan_atomic64_fetch_add at Base 4.9
+ __tsan_atomic64_fetch_and at Base 4.9
+ __tsan_atomic64_fetch_nand at Base 4.9
+ __tsan_atomic64_fetch_or at Base 4.9
+ __tsan_atomic64_fetch_sub at Base 4.9
+ __tsan_atomic64_fetch_xor at Base 4.9
+ __tsan_atomic64_load at Base 4.9
+ __tsan_atomic64_store at Base 4.9
+ __tsan_atomic8_compare_exchange_strong at Base 4.9
+ __tsan_atomic8_compare_exchange_val at Base 4.9
+ __tsan_atomic8_compare_exchange_weak at Base 4.9
+ __tsan_atomic8_exchange at Base 4.9
+ __tsan_atomic8_fetch_add at Base 4.9
+ __tsan_atomic8_fetch_and at Base 4.9
+ __tsan_atomic8_fetch_nand at Base 4.9
+ __tsan_atomic8_fetch_or at Base 4.9
+ __tsan_atomic8_fetch_sub at Base 4.9
+ __tsan_atomic8_fetch_xor at Base 4.9
+ __tsan_atomic8_load at Base 4.9
+ __tsan_atomic8_store at Base 4.9
+ __tsan_atomic_signal_fence at Base 4.9
+ __tsan_atomic_thread_fence at Base 4.9
+ __tsan_default_options at Base 4.9
+ __tsan_func_entry at Base 4.9
+ __tsan_func_exit at Base 4.9
+ __tsan_init at Base 4.9
+ __tsan_java_alloc at Base 4.9
+ __tsan_java_finalize at Base 5
+ __tsan_java_fini at Base 4.9
+ __tsan_java_free at Base 4.9
+ __tsan_java_init at Base 4.9
+ __tsan_java_move at Base 4.9
+ __tsan_java_mutex_lock at Base 4.9
+ __tsan_java_mutex_lock_rec at Base 4.9
+ __tsan_java_mutex_read_lock at Base 4.9
+ __tsan_java_mutex_read_unlock at Base 4.9
+ __tsan_java_mutex_unlock at Base 4.9
+ __tsan_java_mutex_unlock_rec at Base 4.9
+ __tsan_read16 at Base 4.9
+ __tsan_read1 at Base 4.9
+ __tsan_read2 at Base 4.9
+ __tsan_read4 at Base 4.9
+ __tsan_read8 at Base 4.9
+ __tsan_read_range at Base 4.9
+ __tsan_release at Base 4.9
+ __tsan_unaligned_read2 at Base 4.9
+ __tsan_unaligned_read4 at Base 4.9
+ __tsan_unaligned_read8 at Base 4.9
+ __tsan_unaligned_write2 at Base 4.9
+ __tsan_unaligned_write4 at Base 4.9
+ __tsan_unaligned_write8 at Base 4.9
+ __tsan_vptr_read at Base 4.9
+ __tsan_vptr_update at Base 4.9
+ __tsan_write16 at Base 4.9
+ __tsan_write1 at Base 4.9
+ __tsan_write2 at Base 4.9
+ __tsan_write4 at Base 4.9
+ __tsan_write8 at Base 4.9
+ __tsan_write_range at Base 4.9
+ __uflow at Base 5
+ __underflow at Base 5
+ __woverflow at Base 5
+ __wuflow at Base 5
+ __wunderflow at Base 5
+ __xpg_strerror_r at Base 4.9
+ __xstat64 at Base 4.9
+ __xstat at Base 4.9
+ _exit at Base 4.9
+ _obstack_begin at Base 5
+ _obstack_begin_1 at Base 5
+ _obstack_newchunk at Base 5
+ _setjmp at Base 4.9
+ abort at Base 4.9
+ accept4 at Base 4.9
+ accept at Base 4.9
+ aligned_alloc at Base 5
+ asctime at Base 4.9
+ asctime_r at Base 4.9
+ asprintf at Base 5
+ atexit at Base 4.9
+ backtrace at Base 4.9
+ backtrace_symbols at Base 4.9
+ bind at Base 4.9
+ calloc at Base 4.9
+ canonicalize_file_name at Base 4.9
+ capget at Base 5
+ capset at Base 5
+ cfree at Base 4.9
+ clock_getres at Base 4.9
+ clock_gettime at Base 4.9
+ clock_settime at Base 4.9
+ close at Base 4.9
+ confstr at Base 4.9
+ connect at Base 4.9
+ creat64 at Base 4.9
+ creat at Base 4.9
+ ctime at Base 4.9
+ ctime_r at Base 4.9
+ dlclose at Base 4.9
+ dlopen at Base 4.9
+ drand48_r at Base 4.9
+ dup2 at Base 4.9
+ dup3 at Base 4.9
+ dup at Base 4.9
+ endgrent at Base 5
+ endpwent at Base 5
+ epoll_create1 at Base 4.9
+ epoll_create at Base 4.9
+ epoll_ctl at Base 4.9
+ epoll_wait at Base 4.9
+ ether_aton at Base 4.9
+ ether_aton_r at Base 4.9
+ ether_hostton at Base 4.9
+ ether_line at Base 4.9
+ ether_ntoa at Base 4.9
+ ether_ntoa_r at Base 4.9
+ ether_ntohost at Base 4.9
+ eventfd at Base 4.9
+ fclose at Base 4.9
+ fdopen at Base 5
+ fflush at Base 4.9
+ fgetxattr at Base 5
+ flistxattr at Base 5
+ fmemopen at Base 5
+ fopen64 at Base 5
+ fopen at Base 4.9
+ fork at Base 4.9
+ fprintf at Base 5
+ fread at Base 4.9
+ free at Base 4.9
+ freopen64 at Base 5
+ freopen at Base 4.9
+ frexp at Base 4.9
+ frexpf at Base 4.9
+ frexpl at Base 4.9
+ fscanf at Base 4.9
+ fstat64 at Base 4.9
+ fstat at Base 4.9
+ fstatfs64 at Base 4.9
+ fstatfs at Base 4.9
+ fstatvfs64 at Base 4.9
+ fstatvfs at Base 4.9
+ ftime at Base 5
+ fwrite at Base 4.9
+ get_current_dir_name at Base 4.9
+ getaddrinfo at Base 4.9
+ getcwd at Base 4.9
+ getdelim at Base 4.9
+ getgroups at Base 4.9
+ gethostbyaddr at Base 4.9
+ gethostbyaddr_r at Base 4.9
+ gethostbyname2 at Base 4.9
+ gethostbyname2_r at Base 4.9
+ gethostbyname at Base 4.9
+ gethostbyname_r at Base 4.9
+ gethostent at Base 4.9
+ gethostent_r at Base 4.9
+ getifaddrs at Base 5
+ getitimer at Base 4.9
+ getline at Base 4.9
+ getmntent at Base 4.9
+ getmntent_r at Base 4.9
+ getnameinfo at Base 5
+ getpass at Base 5
+ getpeername at Base 4.9
+ getresgid at Base 5
+ getresuid at Base 5
+ getsockname at Base 4.9
+ getsockopt at Base 4.9
+ gettimeofday at Base 4.9
+ getxattr at Base 5
+ glob64 at Base 5
+ glob at Base 5
+ gmtime at Base 4.9
+ gmtime_r at Base 4.9
+ iconv at Base 4.9
+ if_indextoname at Base 5
+ if_nametoindex at Base 5
+ inet_aton at Base 4.9
+ inet_ntop at Base 4.9
+ inet_pton at Base 4.9
+ initgroups at Base 4.9
+ inotify_init1 at Base 4.9
+ inotify_init at Base 4.9
+ ioctl at Base 4.9
+ kill at Base 4.9
+ lgamma at Base 4.9
+ lgamma_r at Base 4.9
+ lgammaf at Base 4.9
+ lgammaf_r at Base 4.9
+ lgammal at Base 4.9
+ lgammal_r at Base 4.9
+ lgetxattr at Base 5
+ listen at Base 4.9
+ listxattr at Base 5
+ llistxattr at Base 5
+ localtime at Base 4.9
+ localtime_r at Base 4.9
+ longjmp at Base 4.9
+ lrand48_r at Base 4.9
+ lstat64 at Base 4.9
+ lstat at Base 4.9
+ malloc at Base 4.9
+ malloc_usable_size at Base 4.9
+ mbsnrtowcs at Base 4.9
+ mbsrtowcs at Base 4.9
+ mbstowcs at Base 4.9
+ memalign at Base 4.9
+ memchr at Base 4.9
+ memcmp at Base 4.9
+ memcpy at Base 4.9
+ memmove at Base 4.9
+ memrchr at Base 4.9
+ memset at Base 4.9
+ mktime at Base 5
+ mlock at Base 4.9
+ mlockall at Base 4.9
+ mmap64 at Base 4.9
+ mmap at Base 4.9
+ modf at Base 4.9
+ modff at Base 4.9
+ modfl at Base 4.9
+ munlock at Base 4.9
+ munlockall at Base 4.9
+ munmap at Base 4.9
+ nanosleep at Base 4.9
+ on_exit at Base 4.9
+ open64 at Base 4.9
+ open at Base 4.9
+ open_memstream at Base 5
+ open_wmemstream at Base 5
+ opendir at Base 4.9
+ pipe2 at Base 4.9
+ pipe at Base 4.9
+ poll at Base 4.9
+ posix_memalign at Base 4.9
+ ppoll at Base 4.9
+ prctl at Base 4.9
+ pread64 at Base 4.9
+ pread at Base 4.9
+ preadv64 at Base 4.9
+ preadv at Base 4.9
+ printf at Base 5
+ pthread_attr_getaffinity_np at Base 4.9
+ pthread_attr_getdetachstate at Base 4.9
+ pthread_attr_getguardsize at Base 4.9
+ pthread_attr_getinheritsched at Base 4.9
+ pthread_attr_getschedparam at Base 4.9
+ pthread_attr_getschedpolicy at Base 4.9
+ pthread_attr_getscope at Base 4.9
+ pthread_attr_getstack at Base 4.9
+ pthread_attr_getstacksize at Base 4.9
+ pthread_barrier_destroy at Base 4.9
+ pthread_barrier_init at Base 4.9
+ pthread_barrier_wait at Base 4.9
+ pthread_barrierattr_getpshared at Base 5
+ pthread_cond_broadcast at Base 4.9
+ pthread_cond_destroy at Base 4.9
+ pthread_cond_init at Base 4.9
+ pthread_cond_signal at Base 4.9
+ pthread_cond_timedwait at Base 4.9
+ pthread_cond_wait at Base 4.9
+ pthread_condattr_getclock at Base 5
+ pthread_condattr_getpshared at Base 5
+ pthread_create at Base 4.9
+ pthread_detach at Base 4.9
+ pthread_getschedparam at Base 4.9
+ pthread_join at Base 4.9
+ pthread_kill at Base 4.9
+ pthread_mutex_destroy at Base 4.9
+ pthread_mutex_init at Base 4.9
+ pthread_mutex_lock at Base 4.9
+ pthread_mutex_timedlock at Base 4.9
+ pthread_mutex_trylock at Base 4.9
+ pthread_mutex_unlock at Base 4.9
+ pthread_mutexattr_getprioceiling at Base 5
+ pthread_mutexattr_getprotocol at Base 5
+ pthread_mutexattr_getpshared at Base 5
+ pthread_mutexattr_getrobust at Base 5
+ pthread_mutexattr_getrobust_np at Base 5
+ pthread_mutexattr_gettype at Base 5
+ pthread_once at Base 4.9
+ pthread_rwlock_destroy at Base 4.9
+ pthread_rwlock_init at Base 4.9
+ pthread_rwlock_rdlock at Base 4.9
+ pthread_rwlock_timedrdlock at Base 4.9
+ pthread_rwlock_timedwrlock at Base 4.9
+ pthread_rwlock_tryrdlock at Base 4.9
+ pthread_rwlock_trywrlock at Base 4.9
+ pthread_rwlock_unlock at Base 4.9
+ pthread_rwlock_wrlock at Base 4.9
+ pthread_rwlockattr_getkind_np at Base 5
+ pthread_rwlockattr_getpshared at Base 5
+ pthread_setname_np at Base 4.9
+ pthread_spin_destroy at Base 4.9
+ pthread_spin_init at Base 4.9
+ pthread_spin_lock at Base 4.9
+ pthread_spin_trylock at Base 4.9
+ pthread_spin_unlock at Base 4.9
+ ptrace at Base 4.9
+ puts at Base 4.9
+ pvalloc at Base 4.9
+ pwrite64 at Base 4.9
+ pwrite at Base 4.9
+ pwritev64 at Base 4.9
+ pwritev at Base 4.9
+ raise at Base 4.9
+ rand_r at Base 5
+ random_r at Base 4.9
+ read at Base 4.9
+ readdir64 at Base 4.9
+ readdir64_r at Base 4.9
+ readdir at Base 4.9
+ readdir_r at Base 4.9
+ readv at Base 4.9
+ realloc at Base 4.9
+ realpath at Base 4.9
+ recv at Base 4.9
+ recvmsg at Base 4.9
+ remquo at Base 4.9
+ remquof at Base 4.9
+ remquol at Base 4.9
+ rmdir at Base 4.9
+ scandir64 at Base 4.9
+ scandir at Base 4.9
+ scanf at Base 4.9
+ sched_getaffinity at Base 4.9
+ sem_destroy at Base 4.9
+ sem_getvalue at Base 4.9
+ sem_init at Base 4.9
+ sem_post at Base 4.9
+ sem_timedwait at Base 4.9
+ sem_trywait at Base 4.9
+ sem_wait at Base 4.9
+ send at Base 4.9
+ sendmsg at Base 4.9
+ setgrent at Base 5
+ setitimer at Base 4.9
+ setjmp at Base 4.9
+ setlocale at Base 4.9
+ setpwent at Base 5
+ shmctl at Base 4.9
+ sigaction at Base 4.9
+ sigemptyset at Base 4.9
+ sigfillset at Base 4.9
+ siglongjmp at Base 4.9
+ signal at Base 4.9
+ signalfd at Base 4.9
+ sigpending at Base 4.9
+ sigprocmask at Base 4.9
+ sigsetjmp at Base 4.9
+ sigsuspend at Base 4.9
+ sigtimedwait at Base 4.9
+ sigwait at Base 4.9
+ sigwaitinfo at Base 4.9
+ sincos at Base 4.9
+ sincosf at Base 4.9
+ sincosl at Base 4.9
+ sleep at Base 4.9
+ snprintf at Base 5
+ socket at Base 4.9
+ socketpair at Base 4.9
+ sprintf at Base 5
+ sscanf at Base 4.9
+ stat64 at Base 4.9
+ stat at Base 4.9
+ statfs64 at Base 4.9
+ statfs at Base 4.9
+ statvfs64 at Base 4.9
+ statvfs at Base 4.9
+ strcasecmp at Base 4.9
+ strchr at Base 4.9
+ strchrnul at Base 4.9
+ strcmp at Base 4.9
+ strcpy at Base 4.9
+ strdup at Base 4.9
+ strerror at Base 4.9
+ strerror_r at Base 4.9
+ strlen at Base 4.9
+ strncasecmp at Base 4.9
+ strncmp at Base 4.9
+ strncpy at Base 4.9
+ strptime at Base 4.9
+ strrchr at Base 4.9
+ strstr at Base 4.9
+ strtoimax at Base 4.9
+ strtoumax at Base 4.9
+ sysinfo at Base 4.9
+ tcgetattr at Base 4.9
+ tempnam at Base 4.9
+ textdomain at Base 4.9
+ time at Base 4.9
+ timerfd_gettime at Base 5
+ timerfd_settime at Base 5
+ times at Base 4.9
+ tmpfile64 at Base 5
+ tmpfile at Base 5
+ tmpnam at Base 4.9
+ tmpnam_r at Base 4.9
+ tsearch at Base 5
+ unlink at Base 4.9
+ usleep at Base 4.9
+ valloc at Base 4.9
+ vasprintf at Base 5
+ vfork at Base 5
+ vfprintf at Base 5
+ vfscanf at Base 4.9
+ vprintf at Base 5
+ vscanf at Base 4.9
+ vsnprintf at Base 5
+ vsprintf at Base 5
+ vsscanf at Base 4.9
+ wait3 at Base 4.9
+ wait4 at Base 4.9
+ wait at Base 4.9
+ waitid at Base 4.9
+ waitpid at Base 4.9
+ wcsnrtombs at Base 4.9
+ wcsrtombs at Base 4.9
+ wcstombs at Base 4.9
+ wordexp at Base 4.9
+ write at Base 4.9
+ writev at Base 4.9
+ xdr_bool at Base 5
+ xdr_bytes at Base 5
+ xdr_char at Base 5
+ xdr_double at Base 5
+ xdr_enum at Base 5
+ xdr_float at Base 5
+ xdr_hyper at Base 5
+ xdr_int16_t at Base 5
+ xdr_int32_t at Base 5
+ xdr_int64_t at Base 5
+ xdr_int8_t at Base 5
+ xdr_int at Base 5
+ xdr_long at Base 5
+ xdr_longlong_t at Base 5
+ xdr_quad_t at Base 5
+ xdr_short at Base 5
+ xdr_string at Base 5
+ xdr_u_char at Base 5
+ xdr_u_hyper at Base 5
+ xdr_u_int at Base 5
+ xdr_u_long at Base 5
+ xdr_u_longlong_t at Base 5
+ xdr_u_quad_t at Base 5
+ xdr_u_short at Base 5
+ xdr_uint16_t at Base 5
+ xdr_uint32_t at Base 5
+ xdr_uint64_t at Base 5
+ xdr_uint8_t at Base 5
+ xdrmem_create at Base 5
+ xdrstdio_create at Base 5
diff --git a/debian/libubsan0.symbols b/debian/libubsan0.symbols
new file mode 100644
index 0000000..0e78ea0
--- /dev/null
+++ b/debian/libubsan0.symbols
@@ -0,0 +1,84 @@
+libubsan.so.0 libubsan0 #MINVER#
+ _ZN11__sanitizer11CheckFailedEPKciS1_yy at Base 4.9
+ _ZN11__sanitizer7OnPrintEPKc at Base 4.9
+ __asan_backtrace_alloc at Base 4.9
+ __asan_backtrace_close at Base 4.9
+ __asan_backtrace_create_state at Base 4.9
+ __asan_backtrace_dwarf_add at Base 4.9
+ __asan_backtrace_free at Base 4.9
+ __asan_backtrace_get_view at Base 4.9
+ __asan_backtrace_initialize at Base 4.9
+ __asan_backtrace_open at Base 4.9
+ __asan_backtrace_pcinfo at Base 4.9
+ __asan_backtrace_qsort at Base 4.9
+ __asan_backtrace_release_view at Base 4.9
+ __asan_backtrace_syminfo at Base 4.9
+ __asan_backtrace_vector_finish at Base 4.9
+ __asan_backtrace_vector_grow at Base 4.9
+ __asan_backtrace_vector_release at Base 4.9
+ __asan_cplus_demangle_builtin_types at Base 4.9
+ __asan_cplus_demangle_fill_ctor at Base 4.9
+ __asan_cplus_demangle_fill_dtor at Base 4.9
+ __asan_cplus_demangle_fill_extended_operator at Base 4.9
+ __asan_cplus_demangle_fill_name at Base 4.9
+ __asan_cplus_demangle_init_info at Base 4.9
+ __asan_cplus_demangle_mangled_name at Base 4.9
+ __asan_cplus_demangle_operators at Base 4.9
+ __asan_cplus_demangle_print at Base 4.9
+ __asan_cplus_demangle_print_callback at Base 4.9
+ __asan_cplus_demangle_type at Base 4.9
+ __asan_cplus_demangle_v3 at Base 4.9
+ __asan_cplus_demangle_v3_callback at Base 4.9
+ __asan_internal_memcmp at Base 4.9
+ __asan_internal_memcpy at Base 4.9
+ __asan_internal_memset at Base 4.9
+ __asan_internal_strcmp at Base 4.9
+ __asan_internal_strlen at Base 4.9
+ __asan_internal_strncmp at Base 4.9
+ __asan_internal_strnlen at Base 4.9
+ __asan_is_gnu_v3_mangled_ctor at Base 4.9
+ __asan_is_gnu_v3_mangled_dtor at Base 4.9
+ __asan_java_demangle_v3 at Base 4.9
+ __asan_java_demangle_v3_callback at Base 4.9
+ __sanitizer_cov at Base 4.9
+ __sanitizer_cov_dump at Base 4.9
+ __sanitizer_cov_indir_call16 at Base 5
+ __sanitizer_cov_init at Base 5
+ __sanitizer_cov_module_init at Base 5
+ __sanitizer_maybe_open_cov_file at Base 5
+ __sanitizer_report_error_summary at Base 4.9
+ __sanitizer_sandbox_on_notify at Base 4.9
+ __sanitizer_set_report_path at Base 4.9
+ __ubsan_handle_add_overflow at Base 4.9
+ __ubsan_handle_add_overflow_abort at Base 4.9
+ __ubsan_handle_builtin_unreachable at Base 4.9
+ __ubsan_handle_divrem_overflow at Base 4.9
+ __ubsan_handle_divrem_overflow_abort at Base 4.9
+ __ubsan_handle_dynamic_type_cache_miss at Base 4.9
+ __ubsan_handle_dynamic_type_cache_miss_abort at Base 4.9
+ __ubsan_handle_float_cast_overflow at Base 4.9
+ __ubsan_handle_float_cast_overflow_abort at Base 4.9
+ __ubsan_handle_function_type_mismatch at Base 4.9
+ __ubsan_handle_function_type_mismatch_abort at Base 4.9
+ __ubsan_handle_load_invalid_value at Base 4.9
+ __ubsan_handle_load_invalid_value_abort at Base 4.9
+ __ubsan_handle_missing_return at Base 4.9
+ __ubsan_handle_mul_overflow at Base 4.9
+ __ubsan_handle_mul_overflow_abort at Base 4.9
+ __ubsan_handle_negate_overflow at Base 4.9
+ __ubsan_handle_negate_overflow_abort at Base 4.9
+ __ubsan_handle_nonnull_arg at Base 5
+ __ubsan_handle_nonnull_arg_abort at Base 5
+ __ubsan_handle_nonnull_return at Base 5
+ __ubsan_handle_nonnull_return_abort at Base 5
+ __ubsan_handle_out_of_bounds at Base 4.9
+ __ubsan_handle_out_of_bounds_abort at Base 4.9
+ __ubsan_handle_shift_out_of_bounds at Base 4.9
+ __ubsan_handle_shift_out_of_bounds_abort at Base 4.9
+ __ubsan_handle_sub_overflow at Base 4.9
+ __ubsan_handle_sub_overflow_abort at Base 4.9
+ __ubsan_handle_type_mismatch at Base 4.9
+ __ubsan_handle_type_mismatch_abort at Base 4.9
+ __ubsan_handle_vla_bound_not_positive at Base 4.9
+ __ubsan_handle_vla_bound_not_positive_abort at Base 4.9
+ __ubsan_vptr_type_cache at Base 4.9
diff --git a/debian/libvtv0.symbols b/debian/libvtv0.symbols
new file mode 100644
index 0000000..908a64e
--- /dev/null
+++ b/debian/libvtv0.symbols
@@ -0,0 +1,68 @@
+libvtv.so.0 libvtv0 #MINVER#
+ _Z10__vtv_freePv at Base 4.9.0
+ (arch=amd64)_Z12__vtv_mallocm at Base 4.9.0
+ (arch=i386)_Z12__vtv_mallocj at Base 4.9.0
+ _Z14__VLTDumpStatsv at Base 4.9.0
+ _Z14__vtv_open_logPKc at Base 4.9.0
+ (arch=amd64)_Z16__VLTRegisterSetPPvPKvmmS0_ at Base 4.9.0
+ (arch=i386)_Z16__VLTRegisterSetPPvPKvjjS0_ at Base 4.9.0
+ _Z16__vtv_add_to_logiPKcz at Base 4.9.0
+ (arch=amd64)_Z17__VLTRegisterPairPPvPKvmS2_ at Base 4.9.0
+ (arch=i386)_Z17__VLTRegisterPairPPvPKvjS2_ at Base 4.9.0
+ _Z17__vtv_malloc_initv at Base 4.9.0
+ _Z17__vtv_really_failPKc at Base 4.9.0
+ _Z17__vtv_verify_failPPvPKv at Base 4.9.0
+ _Z18__vtv_malloc_statsv at Base 4.9.0
+ _Z20__vtv_malloc_protectv at Base 4.9.0
+ (arch=amd64)_Z21__VLTRegisterSetDebugPPvPKvmmS0_ at Base 4.9.0
+ (arch=i386)_Z21__VLTRegisterSetDebugPPvPKvjjS0_ at Base 4.9.0
+ (arch=amd64)_Z22__VLTRegisterPairDebugPPvPKvmS2_PKcS4_ at Base 4.9.0
+ (arch=i386)_Z22__VLTRegisterPairDebugPPvPKvjS2_PKcS4_ at Base 4.9.0
+ _Z22__vtv_malloc_unprotectv at Base 4.9.0
+ _Z23__vtv_malloc_dump_statsv at Base 4.9.0
+ _Z23__vtv_verify_fail_debugPPvPKvPKc at Base 4.9.0
+ (arch=amd64)_Z23search_cached_file_datam at Base 4.9.0
+ (arch=i386)_Z23search_cached_file_dataj at Base 4.9.0
+ _Z24__VLTVerifyVtablePointerPPvPKv at Base 4.9.0
+ _Z25__vtv_count_mmapped_pagesv at Base 4.9.0
+ _Z29__VLTVerifyVtablePointerDebugPPvPKvPKcS4_ at Base 4.9.0
+ _Z30__vtv_log_verification_failurePKcb at Base 4.9.0
+ (arch=amd64)_ZN20insert_only_hash_mapIPPN21insert_only_hash_setsIm9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE12put_internalEPKNS8_8key_typeERKS6_b at Base 4.9.0
+ (arch=amd64)_ZN20insert_only_hash_mapIPPN21insert_only_hash_setsIm9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE15find_or_add_keyEPKNS8_8key_typeEPPS6_ at Base 4.9.0
+ (arch=amd64)_ZN20insert_only_hash_mapIPPN21insert_only_hash_setsIm9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE16destructive_copyEv at Base 4.9.0
+ (arch=amd64)_ZN20insert_only_hash_mapIPPN21insert_only_hash_setsIm9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE3putEPKNS8_8key_typeERKS6_ at Base 4.9.0
+ (arch=amd64)_ZN20insert_only_hash_mapIPPN21insert_only_hash_setsIm9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE6createEm at Base 4.9.0
+ (arch=amd64)_ZN20insert_only_hash_mapIPPN21insert_only_hash_setsIm9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE7destroyEPS8_ at Base 4.9.0
+ (arch=amd64)_ZNK20insert_only_hash_mapIPPN21insert_only_hash_setsIm9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE11is_too_fullEm at Base 4.9.0
+ (arch=amd64)_ZNK20insert_only_hash_mapIPPN21insert_only_hash_setsIm9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE12bucket_countEv at Base 4.9.0
+ (arch=amd64)_ZNK20insert_only_hash_mapIPPN21insert_only_hash_setsIm9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE3getEPKNS8_8key_typeE at Base 4.9.0
+ (arch=amd64)_ZNK20insert_only_hash_mapIPPN21insert_only_hash_setsIm9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE4sizeEv at Base 4.9.0
+ (arch=amd64)_ZNK20insert_only_hash_mapIPPN21insert_only_hash_setsIm9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE5emptyEv at Base 4.9.0
+ (arch=amd64)_ZNK20insert_only_hash_mapIPPN21insert_only_hash_setsIm9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE8key_type6equalsEPKS9_ at Base 4.9.0
+ (arch=i386)_ZN20insert_only_hash_mapIPPN21insert_only_hash_setsIj9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE12put_internalEPKNS8_8key_typeERKS6_b at Base 4.9.0
+ (arch=i386)_ZN20insert_only_hash_mapIPPN21insert_only_hash_setsIj9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE15find_or_add_keyEPKNS8_8key_typeEPPS6_ at Base 4.9.0
+ (arch=i386)_ZN20insert_only_hash_mapIPPN21insert_only_hash_setsIj9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE16destructive_copyEv at Base 4.9.0
+ (arch=i386)_ZN20insert_only_hash_mapIPPN21insert_only_hash_setsIj9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE3putEPKNS8_8key_typeERKS6_ at Base 4.9.0
+ (arch=i386)_ZN20insert_only_hash_mapIPPN21insert_only_hash_setsIj9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE6createEj at Base 4.9.0
+ (arch=i386)_ZN20insert_only_hash_mapIPPN21insert_only_hash_setsIj9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE7destroyEPS8_ at Base 4.9.0
+ (arch=i386)_ZNK20insert_only_hash_mapIPPN21insert_only_hash_setsIj9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE11is_too_fullEj at Base 4.9.0
+ (arch=i386)_ZNK20insert_only_hash_mapIPPN21insert_only_hash_setsIj9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE12bucket_countEv at Base 4.9.0
+ (arch=i386)_ZNK20insert_only_hash_mapIPPN21insert_only_hash_setsIj9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE3getEPKNS8_8key_typeE at Base 4.9.0
+ (arch=i386)_ZNK20insert_only_hash_mapIPPN21insert_only_hash_setsIj9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE4sizeEv at Base 4.9.0
+ (arch=i386)_ZNK20insert_only_hash_mapIPPN21insert_only_hash_setsIj9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE5emptyEv at Base 4.9.0
+ (arch=i386)_ZNK20insert_only_hash_mapIPPN21insert_only_hash_setsIj9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE8key_type6equalsEPKS9_ at Base 4.9.0
+ __VLTChangePermission at Base 4.9.0
+ __VLTprotect at Base 4.9.0
+ __VLTunprotect at Base 4.9.0
+ _vtable_map_vars_end at Base 4.9.0
+ _vtable_map_vars_start at Base 4.9.0
+ mprotect_cycles at Base 4.9.0
+ num_cache_entries at Base 4.9.0
+ num_calls_to_mprotect at Base 4.9.0
+ num_calls_to_regpair at Base 4.9.0
+ num_calls_to_regset at Base 4.9.0
+ num_calls_to_verify_vtable at Base 4.9.0
+ num_pages_protected at Base 4.9.0
+ regpair_cycles at Base 4.9.0
+ regset_cycles at Base 4.9.0
+ verify_vtable_cycles at Base 4.9.0
diff --git a/debian/libx32asan0.overrides b/debian/libx32asan0.overrides
new file mode 100644
index 0000000..6e7aeb3
--- /dev/null
+++ b/debian/libx32asan0.overrides
@@ -0,0 +1,2 @@
+# automake gets it wrong for the multilib build
+libx32asan0 binary: binary-or-shlib-defines-rpath
diff --git a/debian/libx32asan0.symbols b/debian/libx32asan0.symbols
new file mode 100644
index 0000000..2042349
--- /dev/null
+++ b/debian/libx32asan0.symbols
@@ -0,0 +1,3 @@
+libasan.so.0 libx32asan0 #MINVER#
+#include "libasan0.symbols.common"
+#include "libasan0.symbols.32"
diff --git a/debian/libx32stdc++6.symbols b/debian/libx32stdc++6.symbols
new file mode 100644
index 0000000..35a114e
--- /dev/null
+++ b/debian/libx32stdc++6.symbols
@@ -0,0 +1,27 @@
+libstdc++.so.6 libx32stdc++6 #MINVER#
+#include "libstdc++6.symbols.32bit"
+#include "libstdc++6.symbols.128bit"
+#include "libstdc++6.symbols.excprop"
+#include "libstdc++6.symbols.money.ldbl"
+ __gxx_personality_v0 at CXXABI_1.3 4.1.1
+ _ZNKSt3tr14hashIeEclEe at GLIBCXX_3.4.10 4.3
+ _ZNKSt4hashIeEclEe at GLIBCXX_3.4.10 4.3
+ (optional)_Z16__VLTRegisterSetPPvPKvjjS0_ at CXXABI_1.3.8 4.9.0
+ (optional)_Z17__VLTRegisterPairPPvPKvjS2_ at CXXABI_1.3.8 4.9.0
+ (optional)_Z21__VLTRegisterSetDebugPPvPKvjjS0_ at CXXABI_1.3.8 4.9.0
+ (optional)_Z22__VLTRegisterPairDebugPPvPKvjS2_PKcS4_ at CXXABI_1.3.8 4.9.0
+ (optional)_Z24__VLTVerifyVtablePointerPPvPKv at CXXABI_1.3.8 4.9.0
+ (optional)_Z29__VLTVerifyVtablePointerDebugPPvPKvPKcS4_ at CXXABI_1.3.8 4.9.0
+ (optional)__VLTChangePermission at CXXABI_1.3.8 4.9.0
+ _ZTIPKn at CXXABI_1.3.5 4.9.0
+ _ZTIPKo at CXXABI_1.3.5 4.9.0
+ _ZTIPn at CXXABI_1.3.5 4.9.0
+ _ZTIPo at CXXABI_1.3.5 4.9.0
+ _ZTIn at CXXABI_1.3.5 4.9.0
+ _ZTIo at CXXABI_1.3.5 4.9.0
+ _ZTSPKn at CXXABI_1.3.9 4.9.0
+ _ZTSPKo at CXXABI_1.3.9 4.9.0
+ _ZTSPn at CXXABI_1.3.9 4.9.0
+ _ZTSPo at CXXABI_1.3.9 4.9.0
+ _ZTSn at CXXABI_1.3.9 4.9.0
+ _ZTSo at CXXABI_1.3.9 4.9.0
diff --git a/debian/locale-gen b/debian/locale-gen
new file mode 100755
index 0000000..aec7dcc
--- /dev/null
+++ b/debian/locale-gen
@@ -0,0 +1,50 @@
+#!/bin/sh
+
+# generate locales that the libstdc++ testsuite depends on
+
+LOCPATH=`pwd`/locales
+export LOCPATH
+
+[ -d $LOCPATH ] || mkdir -p $LOCPATH
+
+[ -n "$USE_CPUS" ] || USE_CPUS=1
+
+umask 022
+
+echo "Generating locales..."
+xargs -L 1 -P $USE_CPUS -I{} \
+    sh -c '
+	set {}; locale=$1; charset=$2
+	case $locale in \#*) exit;; esac
+	[ -n "$locale" -a -n "$charset" ] || exit
+	echo "  `echo $locale | sed \"s/\([^.\@]*\).*/\1/\"`.$charset`echo $locale | sed \"s/\([^\@]*\)\(\@.*\)*/\2/\"`..."
+        if [ -f $LOCPATH/$locale ]; then
+	    input=$locale
+	else
+            input=`echo $locale | sed "s/\([^.]*\)[^@]*\(.*\)/\1\2/"`
+	fi
+	localedef -i $input -c -f $charset $LOCPATH/$locale #-A /etc/locale.alias
+    ' <<EOF
+de_DE			ISO-8859-1
+de_DE at euro		ISO-8859-15
+en_HK			ISO-8859-1
+en_PH			ISO-8859-1
+en_US			ISO-8859-1
+en_US.ISO-8859-1	ISO-8859-1
+en_US.ISO-8859-15	ISO-8859-15
+en_US.UTF-8		UTF-8
+es_ES			ISO-8859-1
+es_MX			ISO-8859-1
+fr_FR			ISO-8859-1
+fr_FR at euro		ISO-8859-15
+is_IS			ISO-8859-1
+is_IS.UTF-8		UTF-8
+it_IT			ISO-8859-1
+ja_JP.eucjp		EUC-JP
+se_NO.UTF-8		UTF-8
+ta_IN			UTF-8
+zh_TW			BIG5
+zh_TW			UTF-8
+EOF
+
+echo "Generation complete."
diff --git a/debian/logwatch.sh b/debian/logwatch.sh
new file mode 100755
index 0000000..64c21ed
--- /dev/null
+++ b/debian/logwatch.sh
@@ -0,0 +1,104 @@
+#! /bin/sh
+
+# script to trick the build daemons and output something, if there is
+# still test/build activity
+
+# $1: primary file to watch. if there is activity on this file, we do nothing
+# $2+: files to watch to look for activity despite no output in $1
+#      if the files are modified or are newly created, then the message
+#      is printed on stdout.
+#      if nothing is modified, don't output anything (so the buildd timeout
+#      hits).
+
+pidfile=logwatch.pid
+timeout=3600
+message='\nlogwatch still running\n'
+
+usage()
+{
+    echo >&2 "usage: `basename $0` [-p <pidfile>] [-t <timeout>] [-m <message>]"
+    echo >&2 "           <logfile> [<logfile> ...]"
+    exit 1
+}
+
+while [ $# -gt 0 ]; do
+    case $1 in
+    -p)
+	pidfile=$2
+	shift
+	shift
+	;;
+    -t)
+	timeout=$2
+	shift
+	shift
+	;;
+    -m)
+	message="$2"
+	shift
+	shift
+	;;
+    -*)
+	usage
+	;;
+    *)
+	break
+    esac
+done
+
+[ $# -gt 0 ] || usage
+
+logfile="$1"
+shift
+otherlogs="$@"
+
+cleanup()
+{
+    rm -f $pidfile
+    exit 0
+}
+
+#trap cleanup 0 1 3 15
+
+echo $$ > $pidfile
+
+update()
+{
+    _logvar=$1
+    _othervar=$2
+
+    # logfile may not exist yet
+    if [ -r $logfile ]; then
+	_logtail="`tail -10 $logfile | md5sum` $f"
+    else
+	_logtail="does not exist: $logfile"
+    fi
+    eval $_logvar="'$_logtail'"
+
+    _othertails=''
+    for f in $otherlogs; do
+	if [ -r $f ]; then
+	    _othertails="$_othertails `tail -10 $f | md5sum` $f"
+	else
+	    _othertails="$_othertails does not exist: $f"
+	fi
+    done
+    eval $_othervar="'$_othertails'"
+}
+
+update logtail othertails
+while true; do
+    sleep $timeout
+    update newlogtail newothertails
+    if [ "$logtail" != "$newlogtail" ]; then
+	# there is still action in the primary logfile. do nothing.
+	logtail="$newlogtail"
+    elif [ "$othertails" != "$newothertails" ]; then
+	# there is still action in the other log files, so print the message
+	/bin/echo -e $message
+	othertails="$newothertails"
+    else
+	# nothing changed in the other log files. maybe a timeout ...
+	:
+    fi
+done
diff --git a/debian/patches/ada-749574.diff b/debian/patches/ada-749574.diff
new file mode 100644
index 0000000..9dec870
--- /dev/null
+++ b/debian/patches/ada-749574.diff
@@ -0,0 +1,34 @@
+From: Ludovic Brenta <lbrenta at debian.org>
+Forwarded: no
+Bug-Debian: http://bugs.debian.org/749574
+Description: Constraint_Error, range check failed at gnatlink.adb:2195, when called from gnatmake with -D option
+ The procedure gnatlink assumes that the Linker_Options.Table contains access
+ values to strings whose 'First index is always 1.  This assumption is wrong
+ for the string returned by function Base_Name.
+.
+ Instead of fixing the assumption in many places, this patch changes the
+ function Base_Name always to return a string with 'First=1.
+.
+ This looks like an upstream bug but strangely the reporter of this bug
+ says it does not happen on GCC built from upstream sources.  Further
+ investigation is required to determine whether or not to forward this
+ bug and patch upstream.
+
+Index: b/src/gcc/ada/gnatlink.adb
+===================================================================
+--- a/src/gcc/ada/gnatlink.adb
++++ b/src/gcc/ada/gnatlink.adb
+@@ -266,7 +266,12 @@ procedure Gnatlink is
+          Findex2 := File_Name'Last + 1;
+       end if;
+ 
+-      return File_Name (Findex1 .. Findex2 - 1);
++      declare
++         Result : String (1 .. Findex2 - Findex1);
++      begin
++         Result (1 .. Findex2 - Findex1) := File_Name (Findex1 .. Findex2 - 1);
++         return Result;
++      end;
+    end Base_Name;
+ 
+    -------------------------------
diff --git a/debian/patches/ada-acats.diff b/debian/patches/ada-acats.diff
new file mode 100644
index 0000000..e88a100
--- /dev/null
+++ b/debian/patches/ada-acats.diff
@@ -0,0 +1,191 @@
+# DP: - When running the ACATS, look for the gnat tools in their new
+# DP:   directory (build/gnattools), and for the shared libraries in
+# DP:   build/gcc/ada/rts, build/libgnatvsn and build/libgnatprj.
+
+Index: b/src/gcc/testsuite/ada/acats/run_acats
+===================================================================
+--- a/src/gcc/testsuite/ada/acats/run_acats
++++ b/src/gcc/testsuite/ada/acats/run_acats
+@@ -20,52 +20,30 @@ which () {
+     return 1
+ }
+ 
++echo '#!/bin/sh' > host_gnatchop
++echo exec /usr/bin/gnatchop '$*' >> host_gnatchop
++
++chmod +x host_gnatchop
++
++echo '#!/bin/sh' > host_gnatmake
++echo echo '$PATH' '$*' >> host_gnatmake
++echo exec /usr/bin/gnatmake '$*' >> host_gnatmake
++
++chmod +x host_gnatmake
++
+ # Set up environment to use the Ada compiler from the object tree
+ 
+-host_gnatchop=`which gnatchop`
+-host_gnatmake=`which gnatmake`
+ ROOT=`${PWDCMD-pwd}`
+ BASE=`cd $ROOT/../../..; ${PWDCMD-pwd}`
+-
+ PATH=$BASE:$ROOT:$PATH
+-ADA_INCLUDE_PATH=$BASE/ada/rts
+-LD_LIBRARY_PATH=$ADA_INCLUDE_PATH:$BASE:$LD_LIBRARY_PATH
+-ADA_OBJECTS_PATH=$ADA_INCLUDE_PATH
+-
+-if [ ! -d $ADA_INCLUDE_PATH ]; then
+-   echo gnatlib missing, exiting.
+-   exit 1
+-fi
+-
+-if [ ! -f $BASE/gnatchop ]; then
+-   echo gnattools missing, exiting.
+-   exit 1
+-fi
+-
+-if [ ! -f $BASE/gnatmake ]; then
+-   echo gnattools missing, exiting.
+-   exit 1
+-fi
+-
+ GCC_DRIVER="$BASE/xgcc"
++TARGET=`${GCC_DRIVER} -v  2>&1 |grep '^Target:' | cut -d' ' -f2`
++GNATTOOLS=`cd $BASE/../gnattools; ${PWDCMD-pwd}`
++LIBGNATVSN=`cd $BASE/../${TARGET}/libgnatvsn; ${PWDCMD-pwd}`
++LIBGNATPRJ=`cd $BASE/../${TARGET}/libgnatprj; ${PWDCMD-pwd}`
+ GCC="$BASE/xgcc -B$BASE/"
+ export PATH ADA_INCLUDE_PATH ADA_OBJECTS_PATH GCC_DRIVER GCC LD_LIBRARY_PATH
+-
+-echo '#!/bin/sh' > host_gnatchop
+-echo PATH=`dirname $host_gnatchop`:'$PATH' >> host_gnatchop
+-echo unset ADA_INCLUDE_PATH ADA_OBJECTS_PATH GCC_EXEC_PREFIX >> host_gnatchop
+-echo export PATH >> host_gnatchop
+-echo exec gnatchop '"$@"' >> host_gnatchop
+-
+-chmod +x host_gnatchop
+-
+-echo '#!/bin/sh' > host_gnatmake
+-echo PATH=`dirname $host_gnatmake`:'$PATH' >> host_gnatmake
+-echo unset ADA_INCLUDE_PATH ADA_OBJECTS_PATH GCC_EXEC_PREFIX >> host_gnatmake
+-echo export PATH >> host_gnatmake
+-echo exec gnatmake '"$@"' >> host_gnatmake
+-
+-chmod +x host_gnatmake
++export GNATTOOLS LIBGNATVSN LIBGNATPRJ
+ 
+ # Limit the stack to 16MB for stack checking
+ ulimit -s 16384
+Index: b/src/gcc/testsuite/ada/acats/run_all.sh
+===================================================================
+--- a/src/gcc/testsuite/ada/acats/run_all.sh
++++ b/src/gcc/testsuite/ada/acats/run_all.sh
+@@ -12,6 +12,10 @@
+ gccflags="-O2"
+ gnatflags="-gnatws"
+ 
++RTS=`cd $GNATTOOLS/../gcc/ada/rts; ${PWDCMD-pwd}`
++LD_LIBRARY_PATH=$RTS:$LIBGNATVSN:$LIBGNATPRJ
++export LD_LIBRARY_PATH
++
+ target_run () {
+   eval $EXPECT -f $testdir/run_test.exp $*
+ }
+@@ -63,12 +67,15 @@ if [ "$dir" = "$testdir" ]; then
+ fi
+ 
+ target_gnatchop () {
+-  gnatchop --GCC="$GCC_DRIVER" $*
++  ADA_INCLUDE_PATH=$GNATTOOLS/../../src/gcc/ada $GNATTOOLS/gnatchop --GCC="$GCC_DRIVER" $*
+ }
+ 
+ target_gnatmake () {
+-  echo gnatmake --GCC=\"$GCC\" $gnatflags $gccflags $* -largs $EXTERNAL_OBJECTS --GCC=\"$GCC\"
+-  gnatmake --GCC="$GCC" $gnatflags $gccflags $* -largs $EXTERNAL_OBJECTS --GCC="$GCC"
++  EXTERNAL_OBJECTS="$EXTERNAL_OBJECTS $RTS/adaint.o $RTS/sysdep.o $RTS/init.o $RTS/raise-gcc.o"
++  $GNATTOOLS/gnatmake -I- -I$RTS -I. \
++      --GCC="$GCC" --GNATBIND="$GNATTOOLS/gnatbind" \
++      --GNATLINK="$GNATTOOLS/gnatlink" $gnatflags $gccflags $* \
++      -bargs -static -largs $EXTERNAL_OBJECTS --GCC="$GCC -I- -I$RTS -I."
+ }
+ 
+ target_gcc () {
+@@ -101,8 +108,8 @@ display target gcc is $GCC
+ display `$GCC -v 2>&1`
+ display host=`gcc -dumpmachine`
+ display target=$target
+-display `type gnatmake`
+-gnatls -v >> $dir/acats.log
++display `type $GNATTOOLS/gnatmake`
++$GNATTOOLS/gnatls -I- -I$RTS -v >> $dir/acats.log
+ display ""
+ 
+ if [ -n "$GCC_RUNTEST_PARALLELIZE_DIR" ]; then
+Index: b/src/gcc/testsuite/lib/gnat.exp
+===================================================================
+--- a/src/gcc/testsuite/lib/gnat.exp
++++ b/src/gcc/testsuite/lib/gnat.exp
+@@ -88,18 +88,25 @@ proc gnat_init { args } {
+     global GNAT_UNDER_TEST
+     global TOOL_EXECUTABLE
+     global gnat_target_current
++    global ld_library_path
+ 
+     set gnat_target_current ""
+ 
+     if { $gnat_initialized == 1 } { return }
+ 
+-    if ![info exists GNAT_UNDER_TEST] then {
+-	if [info exists TOOL_EXECUTABLE] {
+-	    set GNAT_UNDER_TEST "$TOOL_EXECUTABLE"
+-	} else {
+-	    set GNAT_UNDER_TEST "[local_find_gnatmake]"
+-	}
+-    }
++    set target [target_info name]
++    set GNAT_UNDER_TEST "$rootme/../gnattools/gnatmake -I$rootme/ada/rts --GCC=$rootme/xgcc --GNATBIND=$rootme/../gnattools/gnatbind --GNATLINK=$rootme/../gnattools/gnatlink -cargs -B$rootme -largs --GCC=$rootme/xgcc -B$rootme -margs"
++    append ld_library_path ":$rootme/ada/rts"
++    append ld_library_path ":$rootme/../$target/libgnatvsn"
++    append ld_library_path ":$rootme/../$target/libgnatprj"
++    set_ld_library_path_env_vars
++
++    # gnatlink looks for system.ads itself and has no --RTS option, so
++    # specify via environment
++    verbose -log "ADA_INCLUDE_PATH=$rootme/ada/rts"
++    verbose -log "ADA_OBJECTS_PATH=$rootme/ada/rts"
++    setenv ADA_INCLUDE_PATH "$rootme/ada/rts"
++    setenv ADA_OBJECTS_PATH "$rootme/ada/rts"
+ 
+     if ![info exists tmpdir] then {
+ 	set tmpdir /tmp
+@@ -121,31 +128,6 @@ proc gnat_target_compile { source dest t
+ 	return [gcc_target_compile $source $dest $type $options]
+     }
+ 
+-    # If we detect a change of target, we need to recompute both
+-    # GNAT_UNDER_TEST and the appropriate RTS.
+-    if { $gnat_target_current!="[current_target_name]" } {
+-	set gnat_target_current "[current_target_name]"
+-	if [info exists TOOL_OPTIONS] {
+-	    set rtsdir "[get_multilibs ${TOOL_OPTIONS}]/libada"
+-	} else {
+-	    set rtsdir "[get_multilibs]/libada"
+-	}
+-	if [info exists TOOL_EXECUTABLE] {
+-	    set GNAT_UNDER_TEST "$TOOL_EXECUTABLE"
+-	} else {
+-	    set GNAT_UNDER_TEST "[local_find_gnatmake]"
+-	}
+-        set GNAT_UNDER_TEST "$GNAT_UNDER_TEST --RTS=$rtsdir"
+-
+-	# gnatlink looks for system.ads itself and has no --RTS option, so
+-	# specify via environment
+-	setenv ADA_INCLUDE_PATH "$rtsdir/adainclude"
+-	setenv ADA_OBJECTS_PATH "$rtsdir/adainclude"
+-	# Always log so compilations can be repeated manually.
+-	verbose -log "ADA_INCLUDE_PATH=$rtsdir/adainclude"
+-	verbose -log "ADA_OBJECTS_PATH=$rtsdir/adainclude"
+-    }
+-
+     lappend options "compiler=$GNAT_UNDER_TEST -q -f"
+     lappend options "timeout=[timeout_value]"
+ 
diff --git a/debian/patches/ada-arm.diff b/debian/patches/ada-arm.diff
new file mode 100644
index 0000000..53eeccf
--- /dev/null
+++ b/debian/patches/ada-arm.diff
@@ -0,0 +1,18 @@
+DP: Improve support for ZCX on arm.
+
+Index: b/src/gcc/ada/gcc-interface/Makefile.in
+===================================================================
+--- a/src/gcc/ada/gcc-interface/Makefile.in
++++ b/src/gcc/ada/gcc-interface/Makefile.in
+@@ -1887,7 +1887,10 @@ ifeq ($(strip $(filter-out arm% linux-gn
+     LIBGNAT_TARGET_PAIRS += \
+     system.ads<system-linux-armeb.ads
+   else
+-    EH_MECHANISM=-arm
++    # Special case; the GCC exception mechanism is supported under
++    # another name and with different files than for other
++    # target_cpus.
++    override EH_MECHANISM=-arm
+     LIBGNAT_TARGET_PAIRS += \
+     system.ads<system-linux-armel.ads \
+     a-exexpr.adb<a-exexpr-gcc.adb \
diff --git a/debian/patches/ada-bootstrap-compare.diff b/debian/patches/ada-bootstrap-compare.diff
new file mode 100644
index 0000000..1ff2dec
--- /dev/null
+++ b/debian/patches/ada-bootstrap-compare.diff
@@ -0,0 +1,17 @@
+# DP: For the bootstrap comparison, ignore gcc/ada/a-except.o on
+# DP: mips and mipsel. See PR ada/65618.
+
+Index: b/src/configure.ac
+===================================================================
+--- a/src/configure.ac
++++ b/src/configure.ac
+@@ -3560,6 +3560,9 @@ fi
+ 
+ compare_exclusions="gcc/cc*-checksum\$(objext) | gcc/ada/*tools/*"
+ case "$target" in
++  mips-*linux-gnu|mipsel-*linux-gnu)
++    compare_exclusions="gcc/cc*-checksum\$(objext) | gcc/ada/*tools/* | gcc/ada/a-except.o"
++    ;;
+   ia64-*linux-gnu)
+     compare_exclusions="gcc/cc*-checksum\$(objext) | gcc/ada/*tools/* | gcc/ira.o"
+     ;;
diff --git a/debian/patches/ada-default-project-path.diff b/debian/patches/ada-default-project-path.diff
new file mode 100644
index 0000000..18be182
--- /dev/null
+++ b/debian/patches/ada-default-project-path.diff
@@ -0,0 +1,134 @@
+# 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
+@@ -76,6 +76,7 @@ $(ADA_GEN_SUBDIR)/stamp-sdefault : $(src
+ 	$(ECHO) "   S2 : constant String := \"$(ADA_RTL_OBJ_DIR)/\";" >>tmp-sdefault.adb
+ 	$(ECHO) "   S3 : constant String := \"$(target_noncanonical)/\";" >>tmp-sdefault.adb
+ 	$(ECHO) "   S4 : constant String := \"$(libsubdir)/\";" >>tmp-sdefault.adb
++	$(ECHO) "   S5 : 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
+@@ -92,6 +93,10 @@ $(ADA_GEN_SUBDIR)/stamp-sdefault : $(src
+ 	$(ECHO) "   begin" >>tmp-sdefault.adb
+ 	$(ECHO) "      return Relocate_Path (S0, S4);" >>tmp-sdefault.adb
+ 	$(ECHO) "   end Search_Dir_Prefix;" >>tmp-sdefault.adb
++	$(ECHO) "   function Project_Dir_Prefix return String_Ptr is" >>tmp-sdefault.adb
++	$(ECHO) "   begin" >>tmp-sdefault.adb
++	$(ECHO) "      return Relocate_Path (S0, S5);" >>tmp-sdefault.adb
++	$(ECHO) "   end Project_Dir_Prefix;" >>tmp-sdefault.adb
+ 	$(ECHO) "end Sdefault;" >> tmp-sdefault.adb
+ 	$(MOVE_IF_CHANGE) tmp-sdefault.adb $(ADA_GEN_SUBDIR)/sdefault.adb
+ 	touch $(ADA_GEN_SUBDIR)/stamp-sdefault
+Index: b/src/gcc/ada/prj-env.adb
+===================================================================
+--- a/src/gcc/ada/prj-env.adb
++++ b/src/gcc/ada/prj-env.adb
+@@ -1877,6 +1877,7 @@ package body Prj.Env is
+       Target_Name  : String;
+       Runtime_Name : String := "")
+    is
++      pragma Unreferenced (Target_Name);
+       Add_Default_Dir : Boolean := Target_Name /= "-";
+       First           : Positive;
+       Last            : Positive;
+@@ -2075,82 +2076,9 @@ package body Prj.Env is
+ 
+       --  Set the initial value of Current_Project_Path
+ 
+-      if Add_Default_Dir then
+-         if Sdefault.Search_Dir_Prefix = null then
+-
+-            --  gprbuild case
+-
+-            Prefix := new String'(Executable_Prefix_Path);
+-
+-         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
+-
+-               if Runtime_Name /= "" then
+-                  if Base_Name (Runtime_Name) = Runtime_Name then
+-
+-                     --  $prefix/$target/$runtime/lib/gnat
+-                     Add_Target;
+-                     Add_Str_To_Name_Buffer
+-                       (Runtime_Name & Directory_Separator &
+-                          "lib" & Directory_Separator & "gnat");
+-
+-                     --  $prefix/$target/$runtime/share/gpr
+-                     Add_Target;
+-                     Add_Str_To_Name_Buffer
+-                       (Runtime_Name & Directory_Separator &
+-                          "share" & Directory_Separator & "gpr");
+-
+-                  else
+-                     Runtime :=
+-                       new String'(Normalize_Pathname (Runtime_Name));
+-
+-                     --  $runtime_dir/lib/gnat
+-                     Add_Str_To_Name_Buffer
+-                       (Path_Separator & Runtime.all & Directory_Separator &
+-                        "lib" & Directory_Separator & "gnat");
+-
+-                     --  $runtime_dir/share/gpr
+-                     Add_Str_To_Name_Buffer
+-                       (Path_Separator & Runtime.all & Directory_Separator &
+-                        "share" & Directory_Separator & "gpr");
+-                  end if;
+-               end if;
+-
+-               --  $prefix/$target/lib/gnat
+-
+-               Add_Target;
+-               Add_Str_To_Name_Buffer
+-                 ("lib" & Directory_Separator & "gnat");
+-
+-               --  $prefix/$target/share/gpr
+-
+-               Add_Target;
+-               Add_Str_To_Name_Buffer
+-                 ("share" & Directory_Separator & "gpr");
+-            end if;
+-
+-            --  $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);
++      if Add_Default_Dir and Sdefault.Project_Dir_Prefix /= null then
++         Add_Str_To_Name_Buffer (Path_Separator
++                                 & Sdefault.Project_Dir_Prefix.all);
+       end if;
+ 
+       Self.Path := new String'(Name_Buffer (1 .. Name_Len));
+Index: b/src/gcc/ada/sdefault.ads
+===================================================================
+--- a/src/gcc/ada/sdefault.ads
++++ b/src/gcc/ada/sdefault.ads
+@@ -35,4 +35,5 @@ package Sdefault is
+    function Object_Dir_Default_Name  return String_Ptr;
+    function Target_Name              return String_Ptr;
+    function Search_Dir_Prefix        return String_Ptr;
++   function Project_Dir_Prefix       return String_Ptr;
+ end Sdefault;
diff --git a/debian/patches/ada-driver-check.diff b/debian/patches/ada-driver-check.diff
new file mode 100644
index 0000000..e7a0e93
--- /dev/null
+++ b/debian/patches/ada-driver-check.diff
@@ -0,0 +1,29 @@
+# DP: Simplify Ada driver check (we always build using the required
+# DP: Ada version. Needed for warnings on alpha.
+
+Index: b/src/config/acx.m4
+===================================================================
+--- a/src/config/acx.m4
++++ b/src/config/acx.m4
+@@ -381,7 +381,7 @@ acx_cv_cc_gcc_supports_ada=no
+ # Other compilers, like HP Tru64 UNIX cc, exit successfully when
+ # given a .adb file, but produce no object file.  So we must check
+ # if an object file was really produced to guard against this.
+-errors=`(${CC} $1[]m4_ifval([$1], [ ])-c conftest.adb) 2>&1 || echo failure`
++errors=`(${CC} $1[]m4_ifval([$1], [ ])-c conftest.adb) 2>/dev/null || echo failure`
+ if test x"$errors" = x && test -f conftest.$ac_objext; then
+   acx_cv_cc_gcc_supports_ada=yes
+ fi
+Index: b/src/configure
+===================================================================
+--- a/src/configure
++++ b/src/configure
+@@ -5311,7 +5311,7 @@ acx_cv_cc_gcc_supports_ada=no
+ # Other compilers, like HP Tru64 UNIX cc, exit successfully when
+ # given a .adb file, but produce no object file.  So we must check
+ # if an object file was really produced to guard against this.
+-errors=`(${CC} -c conftest.adb) 2>&1 || echo failure`
++errors=`(${CC} -c conftest.adb) 2>/dev/null || echo failure`
+ if test x"$errors" = x && test -f conftest.$ac_objext; then
+   acx_cv_cc_gcc_supports_ada=yes
+ fi
diff --git a/debian/patches/ada-gcc-name.diff b/debian/patches/ada-gcc-name.diff
new file mode 100644
index 0000000..eb20b89
--- /dev/null
+++ b/debian/patches/ada-gcc-name.diff
@@ -0,0 +1,108 @@
+# DP: use gcc-5 instead of gcc as the command name.
+
+Index: b/src/gcc/ada/gnatlink.adb
+===================================================================
+--- a/src/gcc/ada/gnatlink.adb
++++ b/src/gcc/ada/gnatlink.adb
+@@ -136,7 +136,7 @@ procedure Gnatlink is
+    --  This table collects the arguments to be passed to compile the binder
+    --  generated file.
+ 
+-   Gcc : String_Access := Program_Name ("gcc", "gnatlink");
++   Gcc : String_Access := Program_Name ("gcc-5", "gnatlink");
+ 
+    Read_Mode : constant String := "r" & ASCII.NUL;
+ 
+@@ -1412,7 +1412,8 @@ procedure Gnatlink is
+       end if;
+ 
+       Write_Line ("  --GCC=comp Use comp as the compiler");
+-      Write_Line ("  --LINK=nam Use 'nam' for the linking rather than 'gcc'");
++      Write_Line ("  --LINK=nam Use 'nam' for the linking rather " &
++                  "than 'gcc-5'");
+       Write_Eol;
+       Write_Line ("  [non-Ada-objects]  list of non Ada object files");
+       Write_Line ("  [linker-options]   other options for the linker");
+Index: b/src/gcc/ada/make.adb
+===================================================================
+--- a/src/gcc/ada/make.adb
++++ b/src/gcc/ada/make.adb
+@@ -671,14 +671,14 @@ package body Make is
+    -- Compiler, Binder & Linker Data and Subprograms --
+    ----------------------------------------------------
+ 
+-   Gcc          : String_Access := Program_Name ("gcc", "gnatmake");
++   Gcc          : String_Access := Program_Name ("gcc-5", "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
+    --  result in incorrect error messages if the compiler cannot be found.
+ 
+-   Gnatbind : String_Access := Program_Name ("gnatbind", "gnatmake");
+-   Gnatlink : String_Access := Program_Name ("gnatlink", "gnatmake");
++   Gnatbind : String_Access := Program_Name ("gnatbind-5", "gnatmake");
++   Gnatlink : String_Access := Program_Name ("gnatlink-5", "gnatmake");
+    --  Default compiler, binder, linker programs
+ 
+    Globalizer : constant String := "codepeer_globalizer";
+Index: b/src/gcc/ada/gnatchop.adb
+===================================================================
+--- a/src/gcc/ada/gnatchop.adb
++++ b/src/gcc/ada/gnatchop.adb
+@@ -44,7 +44,7 @@ procedure Gnatchop is
+    Config_File_Name : constant String_Access := new String'("gnat.adc");
+    --  The name of the file holding the GNAT configuration pragmas
+ 
+-   Gcc : String_Access := new String'("gcc");
++   Gcc : String_Access := new String'("gcc-5");
+    --  May be modified by switch --GCC=
+ 
+    Gcc_Set : Boolean := False;
+Index: b/src/gcc/ada/mdll-utl.adb
+===================================================================
+--- a/src/gcc/ada/mdll-utl.adb
++++ b/src/gcc/ada/mdll-utl.adb
+@@ -39,7 +39,7 @@ package body MDLL.Utl is
+    Dlltool_Name  : constant String := "dlltool";
+    Dlltool_Exec  : OS_Lib.String_Access;
+ 
+-   Gcc_Name      : constant String := "gcc";
++   Gcc_Name      : constant String := "gcc-5";
+    Gcc_Exec      : OS_Lib.String_Access;
+ 
+    Gnatbind_Name : constant String := "gnatbind";
+@@ -212,7 +212,7 @@ package body MDLL.Utl is
+          end;
+       end if;
+ 
+-      Print_Command ("gcc", Arguments (1 .. A));
++      Print_Command ("gcc-5", Arguments (1 .. A));
+ 
+       OS_Lib.Spawn (Gcc_Exec.all, Arguments (1 .. A), Success);
+ 
+Index: b/src/gcc/ada/mlib-utl.adb
+===================================================================
+--- a/src/gcc/ada/mlib-utl.adb
++++ b/src/gcc/ada/mlib-utl.adb
+@@ -446,7 +446,7 @@ package body MLib.Utl is
+       if Driver_Name = No_Name then
+          if Gcc_Exec = null then
+             if Gcc_Name = null then
+-               Gcc_Name := Osint.Program_Name ("gcc", "gnatmake");
++               Gcc_Name := Osint.Program_Name ("gcc-5", "gnatmake");
+             end if;
+ 
+             Gcc_Exec := Locate_Exec_On_Path (Gcc_Name.all);
+Index: b/src/gcc/ada/prj-makr.adb
+===================================================================
+--- a/src/gcc/ada/prj-makr.adb
++++ b/src/gcc/ada/prj-makr.adb
+@@ -115,7 +115,7 @@ package body Prj.Makr is
+ 
+    procedure Dup2 (Old_Fd, New_Fd : File_Descriptor);
+ 
+-   Gcc      : constant String := "gcc";
++   Gcc      : constant String := "gcc-5";
+    Gcc_Path : String_Access := null;
+ 
+    Non_Empty_Node : constant Project_Node_Id := 1;
diff --git a/debian/patches/ada-gnattools-cross.diff b/debian/patches/ada-gnattools-cross.diff
new file mode 100644
index 0000000..5a22793
--- /dev/null
+++ b/debian/patches/ada-gnattools-cross.diff
@@ -0,0 +1,748 @@
+# DP: - When building the native gnat, link the gnat tools against
+# DP:   the build tree (build/$(host_alias)/{libgnatvsn,libgnatprj}.)
+# DP: - When building a cross gnat, link against the libgnatvsn-5-dev
+# DP:   and libgnatprj-5-dev packages.
+# DP:   This link will be done by /usr/bin/$(host_alias)-gnat*, thus
+# DP:   the native gnat with the same major version will be required.
+
+Index: b/src/gcc/ada/gcc-interface/Makefile.in
+===================================================================
+--- a/src/gcc/ada/gcc-interface/Makefile.in
++++ b/src/gcc/ada/gcc-interface/Makefile.in
+@@ -102,7 +102,7 @@ INSTALL_DATA_DATE = cp -p
+ MAKEINFO = makeinfo
+ TEXI2DVI = texi2dvi
+ TEXI2PDF = texi2pdf
+-GNATBIND_FLAGS = -static -x
++GNATBIND_FLAGS = -shared -x
+ ADA_CFLAGS =
+ ADAFLAGS = -W -Wall -gnatpg -gnata
+ FORCE_DEBUG_ADAFLAGS = -g
+@@ -158,6 +158,8 @@ target=@target@
+ target_cpu=@target_cpu@
+ target_vendor=@target_vendor@
+ target_os=@target_os@
++host_alias=@host_alias@
++host=@host@
+ host_cpu=@host_cpu@
+ host_vendor=@host_vendor@
+ host_os=@host_os@
+@@ -252,7 +254,7 @@ ALL_CPPFLAGS = $(CPPFLAGS)
+ ALL_COMPILERFLAGS = $(ALL_CFLAGS)
+ 
+ # This is where we get libiberty.a from.
+-LIBIBERTY = ../../libiberty/libiberty.a
++LIBIBERTY = ../../libiberty/pic/libiberty.a
+ 
+ # We need to link against libbacktrace because diagnostic.c in
+ # libcommon.a uses it.
+@@ -264,9 +266,15 @@ LIBS = $(LIBINTL) $(LIBICONV) $(LIBBACKT
+ LIBDEPS = $(LIBINTL_DEP) $(LIBICONV_DEP) $(LIBBACKTRACE) $(LIBIBERTY)
+ # Default is no TGT_LIB; one might be passed down or something
+ TGT_LIB =
+-TOOLS_LIBS = ../link.o ../targext.o ../../ggc-none.o ../../libcommon-target.a \
+-  ../../libcommon.a ../../../libcpp/libcpp.a $(LIBGNAT) $(LIBINTL) $(LIBICONV) \
+-  ../$(LIBBACKTRACE) ../$(LIBIBERTY) $(SYSLIBS) $(TGT_LIB)
++
++TOOLS_LIBS = ../link.o ../targext.o ../../ggc-none.o ../../version.o ../../../libiberty/pic/lrealpath.o \
++      ../../libbackend.a ../../libcommon-target.a ../../libcommon.a ../../../libcpp/libcpp.a ../$(LIBBACKTRACE) ../$(LIBIBERTY) -lstdc++
++
++ifeq ($(host),$(target))
++  TOOLS_LIBS +=  -L../$(RTSDIR) -lgnat-5 \
++		-L../../../$(target_alias)/libgnatvsn -lgnatvsn \
++                -L../../../$(target_alias)/libgnatprj -lgnatprj
++endif
+ 
+ # Add -no-pie to TOOLS_LIBS since some of them are compiled with -fno-PIE.
+ TOOLS_LIBS += @NO_PIE_FLAG@
+@@ -277,7 +285,12 @@ TOOLS_LIBS += @NO_PIE_FLAG@
+ # subdirectory rather than in the source directory.
+ INCLUDES = -I- -I. -I.. -I$(srcdir)/ada -I$(srcdir) -I$(ftop_srcdir)/include $(GMPINC)
+ 
+-ADA_INCLUDES = -I- -I. -I$(srcdir)/ada
++ifeq ($(host),$(target))
++  ADA_INCLUDES = -I../rts \
++		-I../../../$(target_alias)/libgnatvsn \
++		-I../../../$(target_alias)/libgnatprj
++endif
++ADA_INCLUDES += -I- -I. -I$(srcdir)/ada
+ 
+ # Likewise, but valid for subdirectories of the current dir.
+ # FIXME: for VxWorks, we cannot add $(fsrcdir) because the regs.h file in
+@@ -325,30 +338,50 @@ Makefile: ../config.status $(srcdir)/ada
+ # defined in this file into the environment.
+ .NOEXPORT:
+ 

+-# Lists of files for various purposes.
+ 
+-GNATLINK_OBJS = gnatlink.o \
+- a-except.o ali.o alloc.o butil.o casing.o csets.o debug.o fmap.o fname.o \
+- gnatvsn.o hostparm.o indepsw.o interfac.o i-c.o i-cstrin.o namet.o opt.o \
+- osint.o output.o rident.o s-exctab.o s-secsta.o s-stalib.o s-stoele.o \
+- sdefault.o snames.o stylesw.o switch.o system.o table.o targparm.o tree_io.o \
+- types.o validsw.o widechar.o
+-
+-GNATMAKE_OBJS = a-except.o ali.o ali-util.o aspects.o s-casuti.o alloc.o \
+- atree.o binderr.o butil.o casing.o csets.o debug.o elists.o einfo.o errout.o \
+- erroutc.o errutil.o err_vars.o fmap.o fname.o fname-uf.o fname-sf.o \
+- gnatmake.o gnatvsn.o hostparm.o interfac.o i-c.o i-cstrin.o krunch.o lib.o \
+- make.o makeusg.o makeutl.o mlib.o mlib-fil.o mlib-prj.o mlib-tgt.o \
+- mlib-tgt-specific.o mlib-utl.o namet.o nlists.o opt.o osint.o osint-m.o \
+- output.o prj.o prj-attr.o prj-attr-pm.o prj-com.o prj-dect.o prj-env.o \
+- prj-conf.o prj-pp.o prj-err.o prj-ext.o prj-nmsc.o prj-pars.o prj-part.o \
+- prj-proc.o prj-strt.o prj-tree.o prj-util.o restrict.o rident.o s-exctab.o \
+- s-secsta.o s-stalib.o s-stoele.o scans.o scng.o sdefault.o sfn_scan.o \
+- s-purexc.o s-htable.o scil_ll.o sem_aux.o sinfo.o sinput.o sinput-c.o \
+- sinput-p.o snames.o stand.o stringt.o styleg.o stylesw.o system.o validsw.o \
+- switch.o switch-m.o table.o targparm.o tempdir.o tree_io.o types.o uintp.o \
+- uname.o urealp.o usage.o widechar.o \
+- $(EXTRA_GNATMAKE_OBJS)
++# Since we don't have gnatmake, we must specify the full list of
++# object files necessary to build gnatmake and gnatlink.
++GNATLINK_OBJS = \
++gnatlink.o \
++indepsw.o \
++validsw.o
++
++GNATMAKE_OBJS = \
++aspects.o \
++errout.o \
++fname-sf.o \
++gnatmake.o \
++make.o \
++makeusg.o \
++mlib-prj.o \
++osint-m.o \
++restrict.o \
++sem_aux.o \
++usage.o \
++validsw.o \
++$(EXTRA_GNATMAKE_OBJS)
++
++EXTRA_TOOLS_OBJS = \
++bcheck.o \
++binde.o \
++bindgen.o \
++bindusg.o \
++clean.o \
++gprep.o \
++makegpr.o \
++osint-b.o \
++osint-l.o \
++prep.o \
++prj-makr.o \
++prj-pp.o \
++switch-b.o \
++vms_cmds.o \
++vms_conv.o \
++vms_data.o \
++xr_tabls.o \
++xref_lib.o
++
++OBJECTS = $(GNATLINK_OBJS) $(GNATMAKE_OBJS) $(EXTRA_TOOLS_OBJS)
+ 
+ # Make arch match the current multilib so that the RTS selection code
+ # picks up the right files. For a given target this must be coherent
+@@ -1549,6 +1582,11 @@ ifeq ($(strip $(filter-out s390% linux%,
+   LIBRARY_VERSION := $(LIB_VERSION)
+ endif
+ 
++ifeq ($(strip $(filter-out hppa% unknown linux gnu,$(targ))),)
++  GNATLIB_SHARED = gnatlib-shared-dual
++  LIBRARY_VERSION := $(LIB_VERSION)
++endif
++
+ # HP/PA HP-UX 10
+ ifeq ($(strip $(filter-out hppa% hp hpux10%,$(target_cpu) $(target_vendor) $(target_os))),)
+   LIBGNAT_TARGET_PAIRS = \
+@@ -2430,153 +2468,6 @@ ADA_EXCLUDE_FILES=$(filter-out \
+   $(patsubst %$(objext),%.adb,$(GNATRTL_OBJS)), \
+   $(ADA_EXCLUDE_SRCS))
+ 
+-LIBGNAT=../$(RTSDIR)/libgnat.a
+-
+-TOOLS_FLAGS_TO_PASS=		\
+-	"CC=$(CC)" 		\
+-	"CFLAGS=$(CFLAGS)"	\
+-	"LDFLAGS=$(LDFLAGS)"	\
+-	"ADAFLAGS=$(ADAFLAGS)"	\
+-	"INCLUDES=$(INCLUDES_FOR_SUBDIR)"\
+-	"ADA_INCLUDES=$(ADA_INCLUDES) $(ADA_INCLUDES_FOR_SUBDIR)"\
+-	"libsubdir=$(libsubdir)"	\
+-	"exeext=$(exeext)"	\
+-	"fsrcdir=$(fsrcdir)"	\
+-	"srcdir=$(fsrcdir)"	\
+-	"TOOLS_LIBS=$(TOOLS_LIBS) $(TGT_LIB)"	\
+-	"GNATMAKE=$(GNATMAKE)"	\
+-	"GNATLINK=$(GNATLINK)"	\
+-	"GNATBIND=$(GNATBIND)"
+-
+-GCC_LINK=$(CXX) $(GCC_LINK_FLAGS) $(ADA_INCLUDES) $(LDFLAGS)
+-
+-# Build directory for the tools. Let's copy the target-dependent
+-# sources using the same mechanism as for gnatlib. The other sources are
+-# accessed using the vpath directive below
+-
+-../stamp-tools:
+-	-$(RM) tools/*
+-	-$(RMDIR) tools
+-	-$(MKDIR) tools
+-	-(cd tools; $(LN_S) ../sdefault.adb ../snames.ads ../snames.adb .)
+-	-$(foreach PAIR,$(TOOLS_TARGET_PAIRS), \
+-	          $(RM) tools/$(word 1,$(subst <, ,$(PAIR)));\
+-	          $(LN_S) $(fsrcpfx)ada/$(word 2,$(subst <, ,$(PAIR))) \
+-	                tools/$(word 1,$(subst <, ,$(PAIR)));)
+-	touch ../stamp-tools
+-
+-# when compiling the tools, the runtime has to be first on the path so that
+-# it hides the runtime files lying with the rest of the sources
+-ifeq ($(TOOLSCASE),native)
+-  vpath %.ads ../$(RTSDIR) ../
+-  vpath %.adb ../$(RTSDIR) ../
+-  vpath %.c   ../$(RTSDIR) ../
+-  vpath %.h   ../$(RTSDIR) ../
+-endif
+-
+-# in the cross tools case, everything is compiled with the native
+-# gnatmake/link. Therefore only -I needs to be modified in ADA_INCLUDES
+-ifeq ($(TOOLSCASE),cross)
+-  vpath %.ads ../
+-  vpath %.adb ../
+-  vpath %.c   ../
+-  vpath %.h   ../
+-endif
+-
+-# gnatmake/link tools cannot always be built with gnatmake/link for bootstrap
+-# reasons: gnatmake should be built with a recent compiler, a recent compiler
+-# may not generate ALI files compatible with an old gnatmake so it is important
+-# to be able to build gnatmake without a version of gnatmake around. Once
+-# everything has been compiled once, gnatmake can be recompiled with itself
+-# (see target gnattools1-re)
+-gnattools1: ../stamp-tools ../stamp-gnatlib-$(RTSDIR)
+-	$(MAKE) -C tools -f ../Makefile $(TOOLS_FLAGS_TO_PASS) \
+-	  TOOLSCASE=native \
+-	  ../../gnatmake$(exeext) ../../gnatlink$(exeext)
+-
+-# gnatmake/link can be built with recent gnatmake/link if they are available.
+-# This is especially convenient for building cross tools or for rebuilding
+-# the tools when the original bootstrap has already be done.
+-gnattools1-re: ../stamp-tools
+-	$(MAKE) -C tools -f ../Makefile $(TOOLS_FLAGS_TO_PASS) \
+-	  TOOLSCASE=cross INCLUDES="" gnatmake-re gnatlink-re
+-
+-# these tools are built with gnatmake & are common to native and cross
+-gnattools2: ../stamp-tools
+-	$(MAKE) -C tools -f ../Makefile $(TOOLS_FLAGS_TO_PASS) \
+-	  TOOLSCASE=native common-tools $(EXTRA_GNATTOOLS)
+-
+-# those tools are only built for the cross version
+-gnattools4: ../stamp-tools
+-ifeq ($(ENABLE_VXADDR2LINE),true)
+-	$(MAKE) -C tools -f ../Makefile $(TOOLS_FLAGS_TO_PASS) \
+-	  TOOLSCASE=cross top_buildir=../../.. \
+-	  ../../vxaddr2line$(exeext)
+-endif
+-
+-common-tools: ../stamp-tools
+-	$(GNATMAKE) -j0 -c -b $(ADA_INCLUDES) \
+-	  --GNATBIND="$(GNATBIND)" --GCC="$(CC) $(ALL_ADAFLAGS)" \
+-	  gnatchop gnatcmd gnatkr gnatls gnatprep gnatxref gnatfind gnatname \
+-	  gnatclean -bargs $(ADA_INCLUDES) $(GNATBIND_FLAGS)
+-	$(GNATLINK) -v gnatcmd -o ../../gnat$(exeext) \
+-		--GCC="$(GCC_LINK)" $(TOOLS_LIBS) $(LDFLAGS)
+-	$(GNATLINK) -v gnatchop -o ../../gnatchop$(exeext) \
+-		--GCC="$(GCC_LINK)" $(TOOLS_LIBS) $(LDFLAGS)
+-	$(GNATLINK) -v gnatkr -o ../../gnatkr$(exeext) \
+-		--GCC="$(GCC_LINK)" $(TOOLS_LIBS) $(LDFLAGS)
+-	$(GNATLINK) -v gnatls -o ../../gnatls$(exeext) \
+-		--GCC="$(GCC_LINK)" $(TOOLS_LIBS) $(LDFLAGS)
+-	$(GNATLINK) -v gnatprep -o ../../gnatprep$(exeext) \
+-		--GCC="$(GCC_LINK)" $(TOOLS_LIBS) $(LDFLAGS)
+-	$(GNATLINK) -v gnatxref -o ../../gnatxref$(exeext) \
+-		--GCC="$(GCC_LINK)" $(TOOLS_LIBS) $(LDFLAGS)
+-	$(GNATLINK) -v gnatfind -o ../../gnatfind$(exeext) \
+-		--GCC="$(GCC_LINK)" $(TOOLS_LIBS) $(LDFLAGS)
+-	$(GNATLINK) -v gnatname -o ../../gnatname$(exeext) \
+-		--GCC="$(GCC_LINK)" $(TOOLS_LIBS) $(LDFLAGS)
+-	$(GNATLINK) -v gnatclean -o ../../gnatclean$(exeext) \
+-		--GCC="$(GCC_LINK)" $(TOOLS_LIBS) $(LDFLAGS)
+-
+-../../gnatdll$(exeext): ../stamp-tools
+-	$(GNATMAKE) -c $(ADA_INCLUDES) gnatdll --GCC="$(CC) $(ALL_ADAFLAGS)"
+-	$(GNATBIND) $(ADA_INCLUDES) $(GNATBIND_FLAGS) gnatdll
+-	$(GNATLINK) -v gnatdll -o $@ --GCC="$(GCC_LINK)" $(TOOLS_LIBS)
+-
+-../../vxaddr2line$(exeext): ../stamp-tools
+-	$(GNATMAKE) -c  $(ADA_INCLUDES) vxaddr2line --GCC="$(CC) $(ALL_ADAFLAGS)"
+-	$(GNATBIND) $(ADA_INCLUDES) $(GNATBIND_FLAGS) vxaddr2line
+-	$(GNATLINK) -v vxaddr2line -o $@ --GCC="$(GCC_LINK)" ../targext.o $(CLIB)
+-
+-gnatmake-re: ../stamp-tools
+-	$(GNATMAKE) -j0 $(ADA_INCLUDES) -u sdefault --GCC="$(CC) $(MOST_ADA_FLAGS)"
+-	$(GNATMAKE) -j0 -c $(ADA_INCLUDES) gnatmake --GCC="$(CC) $(ALL_ADAFLAGS)"
+-	$(GNATBIND) $(ADA_INCLUDES) $(GNATBIND_FLAGS) gnatmake
+-	$(GNATLINK) -v gnatmake -o ../../gnatmake$(exeext) \
+-		--GCC="$(GCC_LINK)" $(TOOLS_LIBS)
+-
+-# Note the use of the "mv" command in order to allow gnatlink to be linked with
+-# with the former version of gnatlink itself which cannot override itself.
+-# gnatlink-re cannot be run at the same time as gnatmake-re, hence the
+-# dependency
+-gnatlink-re: ../stamp-tools gnatmake-re
+-	$(GNATMAKE) -j0 -c $(ADA_INCLUDES) gnatlink --GCC="$(CC) $(ALL_ADAFLAGS)"
+-	$(GNATBIND) $(ADA_INCLUDES) $(GNATBIND_FLAGS) gnatlink
+-	$(GNATLINK) -v gnatlink -o ../../gnatlinknew$(exeext) \
+-		    --GCC="$(GCC_LINK)" $(TOOLS_LIBS)
+-	$(MV)  ../../gnatlinknew$(exeext)  ../../gnatlink$(exeext)
+-
+-# Needs to be built with CC=gcc
+-# Since the RTL should be built with the latest compiler, remove the
+-#  stamp target in the parent directory whenever gnat1 is rebuilt
+-
+-# Likewise for the tools
+-../../gnatmake$(exeext): $(P) b_gnatm.o $(GNATMAKE_OBJS)
+-	+$(GCC_LINK) $(ALL_CFLAGS) -o $@ b_gnatm.o $(GNATMAKE_OBJS) $(TOOLS_LIBS)
+-
+-../../gnatlink$(exeext): $(P) b_gnatl.o $(GNATLINK_OBJS)
+-	+$(GCC_LINK) $(ALL_CFLAGS) -o $@ b_gnatl.o $(GNATLINK_OBJS) $(TOOLS_LIBS)
+-
+ ../stamp-gnatlib-$(RTSDIR):
+ 	@if [ ! -f stamp-gnatlib-$(RTSDIR) ] ; \
+ 	then \
+@@ -2621,14 +2512,10 @@ install-gnatlib: ../stamp-gnatlib-$(RTSD
+ #     Also install the .dSYM directories if they exist (these directories
+ #     contain the debug information for the shared libraries on darwin)
+ 	for file in gnat gnarl; do \
+-	   if [ -f $(RTSDIR)/lib$${file}$(hyphen)$(LIBRARY_VERSION)$(soext) ]; then \
+-	      $(INSTALL) $(RTSDIR)/lib$${file}$(hyphen)$(LIBRARY_VERSION)$(soext) \
++	   if [ -f $(RTSDIR)/lib$${file}$(hyphen)$(LIBRARY_VERSION)$(soext).1 ]; then \
++	      $(INSTALL) $(RTSDIR)/lib$${file}$(hyphen)$(LIBRARY_VERSION)$(soext).1 \
+ 			 $(DESTDIR)$(ADA_RTL_OBJ_DIR); \
+ 	   fi; \
+-	   if [ -f $(RTSDIR)/lib$${file}$(soext) ]; then \
+-	      $(LN_S) lib$${file}$(hyphen)$(LIBRARY_VERSION)$(soext) \
+-	      $(DESTDIR)$(ADA_RTL_OBJ_DIR)/lib$${file}$(soext); \
+-	   fi; \
+ 	   if [ -d $(RTSDIR)/lib$${file}$(hyphen)$(LIBRARY_VERSION)$(soext).dSYM ]; then \
+ 	      $(CP) -r $(RTSDIR)/lib$${file}$(hyphen)$(LIBRARY_VERSION)$(soext).dSYM \
+ 	        $(DESTDIR)$(ADA_RTL_OBJ_DIR); \
+@@ -2641,19 +2528,7 @@ install-gnatlib: ../stamp-gnatlib-$(RTSD
+ 	cd $(DESTDIR)$(ADA_INCLUDE_DIR); $(CHMOD) a-wx *.adb
+ 	cd $(DESTDIR)$(ADA_INCLUDE_DIR); $(CHMOD) a-wx *.ads
+ 
+-../stamp-gnatlib2-$(RTSDIR):
+-	$(RM) $(RTSDIR)/s-*.ali
+-	$(RM) $(RTSDIR)/s-*$(objext)
+-	$(RM) $(RTSDIR)/a-*.ali
+-	$(RM) $(RTSDIR)/a-*$(objext)
+-	$(RM) $(RTSDIR)/*.ali
+-	$(RM) $(RTSDIR)/*$(objext)
+-	$(RM) $(RTSDIR)/*$(arext)
+-	$(RM) $(RTSDIR)/*$(soext)
+-	touch ../stamp-gnatlib2-$(RTSDIR)
+-	$(RM) ../stamp-gnatlib-$(RTSDIR)
+-
+-../stamp-gnatlib1-$(RTSDIR): Makefile ../stamp-gnatlib2-$(RTSDIR)
++../stamp-gnatlib1-$(RTSDIR): Makefile
+ 	$(RMDIR) $(RTSDIR)
+ 	$(MKDIR) $(RTSDIR)
+ 	$(CHMOD) u+w $(RTSDIR)
+@@ -2718,7 +2593,7 @@ $(RTSDIR)/s-oscons.ads: ../stamp-gnatlib
+ 	    $(OSCONS_EXTRACT) ; \
+ 	    ../bldtools/oscons/xoscons s-oscons)
+ 
+-gnatlib: ../stamp-gnatlib1-$(RTSDIR) ../stamp-gnatlib2-$(RTSDIR) $(RTSDIR)/s-oscons.ads
++gnatlib: ../stamp-gnatlib1-$(RTSDIR) $(RTSDIR)/s-oscons.ads
+ 	test -f $(RTSDIR)/s-oscons.ads || exit 1
+ # C files
+ 	$(MAKE) -C $(RTSDIR) \
+@@ -2756,32 +2631,44 @@ gnatlib: ../stamp-gnatlib1-$(RTSDIR) ../
+ 
+ # Warning: this target assumes that LIBRARY_VERSION has been set correctly.
+ gnatlib-shared-default:
+-	$(MAKE) $(FLAGS_TO_PASS) \
+-             GNATLIBFLAGS="$(GNATLIBFLAGS)" \
+-	     GNATLIBCFLAGS="$(GNATLIBCFLAGS) $(PICFLAG_FOR_TARGET)" \
+-	     GNATLIBCFLAGS_FOR_C="$(GNATLIBCFLAGS_FOR_C) $(PICFLAG_FOR_TARGET)" \
+-	     MULTISUBDIR="$(MULTISUBDIR)" \
+-	     THREAD_KIND="$(THREAD_KIND)" \
+-             gnatlib
+-	$(RM) $(RTSDIR)/libgna*$(soext)
++	$(MAKE) -C $(RTSDIR) \
++		CC="`echo \"$(GCC_FOR_TARGET)\" \
++		| sed -e 's,\./xgcc,../../xgcc,' -e 's,-B\./,-B../../,'`" \
++	        INCLUDES="$(INCLUDES_FOR_SUBDIR) -I./../.." \
++                CFLAGS="$(GNATLIBCFLAGS_FOR_C) $(PICFLAG_FOR_TARGET)" \
++	        FORCE_DEBUG_ADAFLAGS="$(FORCE_DEBUG_ADAFLAGS)" \
++		srcdir=$(fsrcdir) \
++	        -f ../Makefile $(LIBGNAT_OBJS)
++	$(MAKE) -C $(RTSDIR) \
++		CC="`echo \"$(GCC_FOR_TARGET)\" \
++		| sed -e 's,\./xgcc,../../xgcc,' -e 's,-B\./,-B../../,'`" \
++	        ADA_INCLUDES="" \
++                CFLAGS="$(GNATLIBCFLAGS) $(PICFLAG_FOR_TARGET)" \
++	        ADAFLAGS="$(GNATLIBFLAGS) $(PICFLAG_FOR_TARGET)" \
++	        FORCE_DEBUG_ADAFLAGS="$(FORCE_DEBUG_ADAFLAGS)" \
++		srcdir=$(fsrcdir) \
++	        -f ../Makefile \
++	        $(GNATRTL_OBJS)
++	$(RM) $(RTSDIR)/libgna*$(soext) $(RTSDIR)/libgna*$(soext).1
+ 	cd $(RTSDIR); `echo "$(GCC_FOR_TARGET)" \
+                 | sed -e 's,\./xgcc,../../xgcc,' -e 's,-B\./,-B../../,'` -shared $(GNATLIBCFLAGS) \
+ 		$(PICFLAG_FOR_TARGET) \
+-		-o libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) \
++		-o libgnat$(hyphen)$(LIBRARY_VERSION)$(soext).1 \
+ 		$(GNATRTL_NONTASKING_OBJS) $(LIBGNAT_OBJS) \
+-		$(SO_OPTS)libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) \
++		$(SO_OPTS)libgnat$(hyphen)$(LIBRARY_VERSION)$(soext).1 \
+ 		$(MISCLIB) -lm $(GNATLIBLDFLAGS)
+ 	cd $(RTSDIR); `echo "$(GCC_FOR_TARGET)" \
+                 | sed -e 's,\./xgcc,../../xgcc,' -e 's,-B\./,-B../../,'` -shared $(GNATLIBCFLAGS) \
+ 		$(PICFLAG_FOR_TARGET) \
+-		-o libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext) \
++		-o libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext).1 \
+ 		$(GNATRTL_TASKING_OBJS) \
+-		$(SO_OPTS)libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext) \
++		$(SO_OPTS)libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext).1 \
+ 		$(THREADSLIB) $(GNATLIBLDFLAGS)
+-	cd $(RTSDIR); $(LN_S) libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) \
+-		libgnat$(soext)
+-	cd $(RTSDIR); $(LN_S) libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext) \
+-		libgnarl$(soext)
++	cd $(RTSDIR); for lib in gnat gnarl; do \
++		l=lib$${lib}$(hyphen)$(LIBRARY_VERSION)$(soext); \
++		$(LN_S) $$l.1 $$l; \
++	done
++	$(CHMOD) a-wx $(RTSDIR)/*.ali
+ 
+ gnatlib-shared-dual:
+ 	$(MAKE) $(FLAGS_TO_PASS) \
+@@ -2791,9 +2678,8 @@ gnatlib-shared-dual:
+              GNATLIBLDFLAGS="$(GNATLIBLDFLAGS)" \
+ 	     MULTISUBDIR="$(MULTISUBDIR)" \
+ 	     THREAD_KIND="$(THREAD_KIND)" \
+-             gnatlib-shared-default
+-	$(MV) $(RTSDIR)/libgna*$(soext) .
+-	$(RM) ../stamp-gnatlib2-$(RTSDIR)
++	     gnatlib
++	$(RM) $(RTSDIR)/*.o $(RTSDIR)/*.ali
+ 	$(MAKE) $(FLAGS_TO_PASS) \
+              GNATLIBFLAGS="$(GNATLIBFLAGS)" \
+ 	     GNATLIBCFLAGS="$(GNATLIBCFLAGS)" \
+@@ -2801,8 +2687,7 @@ gnatlib-shared-dual:
+              GNATLIBLDFLAGS="$(GNATLIBLDFLAGS)" \
+ 	     MULTISUBDIR="$(MULTISUBDIR)" \
+ 	     THREAD_KIND="$(THREAD_KIND)" \
+-             gnatlib
+-	$(MV) libgna*$(soext) $(RTSDIR)
++	     gnatlib-shared-default
+ 
+ gnatlib-shared-dual-win32:
+ 	$(MAKE) $(FLAGS_TO_PASS) \
+@@ -2812,17 +2697,15 @@ gnatlib-shared-dual-win32:
+ 	     PICFLAG_FOR_TARGET="$(PICFLAG_FOR_TARGET)" \
+ 	     MULTISUBDIR="$(MULTISUBDIR)" \
+ 	     THREAD_KIND="$(THREAD_KIND)" \
+-             gnatlib-shared-win32
+-	$(MV) $(RTSDIR)/libgna*$(soext) .
+-	$(RM) ../stamp-gnatlib2-$(RTSDIR)
++             gnatlib
++	$(RM) $(RTSDIR)/*.o $(RTSDIR)/*.ali
+ 	$(MAKE) $(FLAGS_TO_PASS) \
+              GNATLIBFLAGS="$(GNATLIBFLAGS)" \
+ 	     GNATLIBCFLAGS="$(GNATLIBCFLAGS)" \
+ 	     GNATLIBCFLAGS_FOR_C="$(GNATLIBCFLAGS_FOR_C)" \
+ 	     MULTISUBDIR="$(MULTISUBDIR)" \
+ 	     THREAD_KIND="$(THREAD_KIND)" \
+-             gnatlib
+-	$(MV) libgna*$(soext) $(RTSDIR)
++             gnatlib-shared-win32
+ 
+ # ??? we need to add the option to support auto-import of arrays/records to
+ # the GNATLIBFLAGS when this will be supported by GNAT. At this point we will
+@@ -3062,6 +2945,68 @@ targext.o : targext.c
+ 		$(ALL_CPPFLAGS) $(INCLUDES_FOR_SUBDIR) \
+ 		$< $(OUTPUT_OPTION)
+ 
++GCC_LINK=$(CXX) $(GCC_LINK_FLAGS) $(ADA_INCLUDES) $(LDFLAGS)
++
++../stamp-tools:
++	-$(RM) tools/*
++	-$(RMDIR) tools
++	-$(MKDIR) tools
++	-(cd tools; $(LN_S) ../sdefault.adb ../snames.ads ../snames.adb .)
++	-$(foreach PAIR,$(TOOLS_TARGET_PAIRS), \
++	          $(RM) tools/$(word 1,$(subst <, ,$(PAIR)));\
++	          $(LN_S) $(fsrcpfx)ada/$(word 2,$(subst <, ,$(PAIR))) \
++	                tools/$(word 1,$(subst <, ,$(PAIR)));)
++	touch ../stamp-tools
++
++gnatmake-re: ../stamp-tools
++	$(GNATMAKE) -j0 $(ADA_INCLUDES) -u sdefault --GCC="$(CC) $(MOST_ADA_FLAGS)"
++	$(GNATMAKE) -j0 -c $(ADA_INCLUDES) gnatmake --GCC="$(CC) $(ALL_ADAFLAGS)"
++	$(GNATBIND) $(ADA_INCLUDES) $(GNATBIND_FLAGS) gnatmake
++	$(GNATLINK) -v gnatmake -o ../../gnatmake$(exeext) \
++		$(TOOLS_LIBS) $(LDFLAGS)
++
++# Note the use of the "mv" command in order to allow gnatlink to be linked with
++# with the former version of gnatlink itself which cannot override itself.
++# gnatlink-re cannot be run at the same time as gnatmake-re, hence the
++# dependency
++gnatlink-re: ../stamp-tools gnatmake-re
++	$(GNATMAKE) -j0 -c $(ADA_INCLUDES) gnatlink --GCC="$(CC) $(ALL_ADAFLAGS)"
++	$(GNATBIND) $(ADA_INCLUDES) $(GNATBIND_FLAGS) gnatlink
++	$(GNATLINK) -v gnatlink -o ../../gnatlinknew$(exeext) \
++		$(TOOLS_LIBS) $(LDFLAGS)
++	$(MV)  ../../gnatlinknew$(exeext)  ../../gnatlink$(exeext)
++
++# Likewise for the tools
++../../gnatmake$(exeext): $(P) b_gnatm.o $(GNATMAKE_OBJS)
++	+$(GCC_LINK) $(ALL_CFLAGS) -o $@ b_gnatm.o $(GNATMAKE_OBJS) $(TOOLS_LIBS)
++
++../../gnatlink$(exeext): $(P) b_gnatl.o $(GNATLINK_OBJS)
++	+$(GCC_LINK) $(ALL_CFLAGS) -o $@ b_gnatl.o $(GNATLINK_OBJS) $(TOOLS_LIBS)
++
++common-tools: ../stamp-tools
++	$(GNATMAKE) -j0 -c -b $(ADA_INCLUDES) \
++	  --GNATBIND="$(GNATBIND)" --GCC="$(CC) $(ALL_ADAFLAGS)" \
++	  gnatchop gnatcmd gnatkr gnatls gnatprep gnatxref gnatfind gnatname \
++	  gnatclean -bargs $(ADA_INCLUDES) $(GNATBIND_FLAGS)
++	$(GNATLINK) -v gnatcmd -o ../../gnat$(exeext) \
++		$(TOOLS_LIBS) $(LDFLAGS)
++	$(GNATLINK) -v gnatchop -o ../../gnatchop$(exeext) \
++		$(TOOLS_LIBS) $(LDFLAGS)
++	$(GNATLINK) -v gnatkr -o ../../gnatkr$(exeext) \
++		$(TOOLS_LIBS) $(LDFLAGS)
++	$(GNATLINK) -v gnatls -o ../../gnatls$(exeext) \
++		$(TOOLS_LIBS) $(LDFLAGS)
++	$(GNATLINK) -v gnatprep -o ../../gnatprep$(exeext) \
++		$(TOOLS_LIBS) $(LDFLAGS)
++	$(GNATLINK) -v gnatxref -o ../../gnatxref$(exeext) \
++		$(TOOLS_LIBS) $(LDFLAGS)
++	$(GNATLINK) -v gnatfind -o ../../gnatfind$(exeext) \
++		$(TOOLS_LIBS) $(LDFLAGS)
++	$(GNATLINK) -v gnatname -o ../../gnatname$(exeext) \
++		$(TOOLS_LIBS) $(LDFLAGS)
++	$(GNATLINK) -v gnatclean -o ../../gnatclean$(exeext) \
++		$(TOOLS_LIBS) $(LDFLAGS)
++
+ # In GNU Make, ignore whether `stage*' exists.
+ .PHONY: stage1 stage2 stage3 stage4 clean realclean TAGS bootstrap
+ .PHONY: risky-stage1 risky-stage2 risky-stage3 risky-stage4
+Index: b/src/gnattools/Makefile.in
+===================================================================
+--- a/src/gnattools/Makefile.in
++++ b/src/gnattools/Makefile.in
+@@ -52,7 +52,7 @@ WARN_CFLAGS = @warn_cflags@
+ ADA_CFLAGS=@ADA_CFLAGS@
+ 
+ # Variables for gnattools.
+-ADAFLAGS= -gnatpg -gnata
++ADAFLAGS= -gnatn
+ 
+ # For finding the GCC build dir, which is used far too much
+ GCC_DIR=../gcc
+@@ -71,23 +71,159 @@ CXX_LFLAGS = \
+  -L../../../$(target_noncanonical)/libstdc++-v3/src/.libs \
+  -L../../../$(target_noncanonical)/libstdc++-v3/libsupc++/.libs
+ 
+-# Variables for gnattools, native
+-TOOLS_FLAGS_TO_PASS_NATIVE= \
+-	"CC=../../xgcc -B../../" \
+-	"CXX=../../xg++ -B../../ $(CXX_LFLAGS)" \
+-	"CFLAGS=$(CFLAGS) $(WARN_CFLAGS)" \
+-	"LDFLAGS=$(LDFLAGS)" \
+-	"ADAFLAGS=$(ADAFLAGS)" \
+-	"ADA_CFLAGS=$(ADA_CFLAGS)" \
+-	"INCLUDES=$(INCLUDES_FOR_SUBDIR)" \
+-	"ADA_INCLUDES=-I- -I../rts $(ADA_INCLUDES_FOR_SUBDIR)"\
+-	"exeext=$(exeext)" \
+-	"fsrcdir=$(fsrcdir)" \
+-	"srcdir=$(fsrcdir)" \
+-	"GNATMAKE=../../gnatmake" \
+-	"GNATLINK=../../gnatlink" \
+-	"GNATBIND=../../gnatbind" \
+-	"TOOLSCASE=native"
++CFLAGS=-O2 -Wall
++ADA_CFLAGS=-O2 -gnatn
++ADA_INCLUDES=-nostdinc -I- -I. -I../gcc/ada/rts \
++     -I../$(target_noncanonical)/libgnatvsn -I../$(target_noncanonical)/libgnatprj
++LIB_VERSION=$(strip $(shell grep ' Library_Version :' \
++              ../$(target_noncanonical)/libgnatvsn/gnatvsn.ads | sed -e 's/.*"\(.*\)".*/\1/'))
++SHARED_ADA_LIBS := -L../gcc/ada/rts -lgnat-$(LIB_VERSION)
++SHARED_ADA_LIBS += -L../$(target_noncanonical)/libgnatvsn -lgnatvsn
++SHARED_ADA_LIBS += -L../$(target_noncanonical)/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
++
++# We will use the just-built compiler to compile and link everything.
++GCC=../gcc/xgcc -B../gcc/
++
++# File lists
++# ----------
++
++# File associations set by configure
++EXTRA_GNATTOOLS = @EXTRA_GNATTOOLS@
++TOOLS_TARGET_PAIRS = @TOOLS_TARGET_PAIRS@
++
++# Stage 1 builds xgcc and gnatbind; we can use them to build
++# gnatmake-static and gnatlink-static, then use gnatmake-static and
++# gnatlink-static to build the other tools.  The reason we first build
++# statically-linked versions of gnatmake and gnatlink is so we can run
++# them with confidence on all build platforms, without LD_LIBRARY_PATH
++# or some such variable.
++
++# The tools we will build using gnatmake-static and gnatlink-static.
++TOOLS := gnat gnatbind gnatchop gnatclean gnatfind gnatkr gnatls gnatlink
++TOOLS += gnatmake gnatname gnatprep gnatxref
++
++# Since we don't have gnatmake, we must specify the full list of
++# object files necessary to build gnatmake and gnatlink.
++GNATLINK_OBJS = \
++gnatlink.o \
++indepsw.o \
++validsw.o
++
++GNATMAKE_OBJS = \
++aspects.o \
++errout.o \
++fname-sf.o \
++gnatmake.o \
++make.o \
++makeusg.o \
++mlib-prj.o \
++osint-m.o \
++restrict.o \
++sem_aux.o \
++usage.o \
++validsw.o \
++$(EXTRA_GNATMAKE_OBJS)
++
++EXTRA_TOOLS_OBJS = \
++bcheck.o \
++binde.o \
++bindgen.o \
++bindusg.o \
++clean.o \
++gprep.o \
++makegpr.o \
++osint-b.o \
++osint-l.o \
++prep.o \
++prj-makr.o \
++prj-pp.o \
++switch-b.o \
++vms_cmds.o \
++vms_conv.o \
++vms_data.o \
++xr_tabls.o \
++xref_lib.o
++
++OBJECTS = $(GNATLINK_OBJS) $(GNATMAKE_OBJS) $(EXTRA_TOOLS_OBJS)
++
++# Makefile targets
++# ----------------
++
++.PHONY: gnattools gnattools-native gnattools-cross regnattools
++gnattools: @default_gnattools_target@
++
++BODIES := $(foreach f,$(OBJECTS),$(wildcard $(patsubst %.o, at srcdir@/../gcc/ada/%.adb,$(f))))
++SPECS  := $(foreach f,$(OBJECTS),$(wildcard $(patsubst %.o, at srcdir@/../gcc/ada/%.ads,$(f))))
++
++$(notdir $(SPECS) $(BODIES)): stamp-gnattools-sources
++
++stamp-gnattools-sources:
++	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
++gnattools-native: ../$(target_noncanonical)/libgnatvsn/libgnatvsn.so
++gnattools-native: stamp-gnattools-sources
++gnattools-native: $(TOOLS)
++	cp -lpf $(TOOLS) ../gcc
++
++$(TOOLS) gnatcmd: | gnatmake-static gnatlink-static
++
++vpath %.c @srcdir@/../gcc/ada:@srcdir@/../gcc
++vpath %.h @srcdir@/../gcc/ada
++
++# gnatlink
++
++gnatlink-static: $(GNATLINK_OBJS) b_gnatl.o
++	$(GCC) -o $@ $^ \
++	  ../$(target_noncanonical)/libgnatprj/libgnatprj.a \
++	  ../$(target_noncanonical)/libgnatvsn/libgnatvsn.a \
++	  ../gcc/ada/rts/libgnat.a $(STATIC_GCC_LIBS) $(LDFLAGS)
++
++gnatlink: $(GNATLINK_OBJS) b_gnatl.o
++	$(GCC) -o $@ $^ $(SHARED_ADA_LIBS) $(STATIC_GCC_LIBS) $(LDFLAGS)
++
++b_gnatl.adb: $(GNATLINK_OBJS)
++	../gcc/gnatbind -o $@ $(ADA_INCLUDES) gnatlink.ali
++
++# gnatmake
++
++gnatmake-static: $(GNATMAKE_OBJS) b_gnatm.o
++	$(GCC) -o $@ $(ADA_CFLAGS) $^ \
++	  ../$(target_noncanonical)/libgnatprj/libgnatprj.a \
++	  ../$(target_noncanonical)/libgnatvsn/libgnatvsn.a \
++	  $(STATIC_ADA_LIBS) $(STATIC_GCC_LIBS) $(LDFLAGS)
++
++gnatmake: $(GNATMAKE_OBJS) b_gnatm.o
++	$(GCC) -o $@ $(ADA_CFLAGS) $^ $(SHARED_ADA_LIBS) $(STATIC_GCC_LIBS) $(LDFLAGS)
++
++b_gnatm.adb: $(GNATMAKE_OBJS)
++	../gcc/gnatbind -o $@ $(ADA_INCLUDES) gnatmake.ali
++
++# Other tools
++gnat: gnatcmd
++	cp -lp $< $@
++
++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)" \
++	   --GNATBIND=../gcc/gnatbind
++	./gnatlink-static -o $@ $@.ali $^ \
++	   $(ADA_INCLUDES) $(SHARED_ADA_LIBS) $(STATIC_GCC_LIBS) $(LDFLAGS) \
++	   --GCC="$(GCC) $(ADA_INCLUDES)"
++
+ 
+ # Variables for regnattools
+ TOOLS_FLAGS_TO_PASS_RE= \
+@@ -180,20 +316,12 @@ $(GCC_DIR)/stamp-tools:
+ 	                $(GCC_DIR)/ada/tools/$(word 1,$(subst <, ,$(PAIR)));)
+ 	touch $(GCC_DIR)/stamp-tools
+ 
+-# gnatmake/link tools cannot always be built with gnatmake/link for bootstrap 
+-# reasons: gnatmake should be built with a recent compiler, a recent compiler
+-# may not generate ALI files compatible with an old gnatmake so it is important
+-# to be able to build gnatmake without a version of gnatmake around. Once 
+-# everything has been compiled once, gnatmake can be recompiled with itself 
+-# (see target regnattools) 
+-gnattools-native: $(GCC_DIR)/stamp-tools $(GCC_DIR)/stamp-gnatlib-rts
+-	# gnattools1
+-	$(MAKE) -C $(GCC_DIR)/ada/tools -f ../Makefile \
+-	  $(TOOLS_FLAGS_TO_PASS_NATIVE) \
+-	  ../../gnatmake$(exeext) ../../gnatlink$(exeext)
+-	# gnattools2
+-	$(MAKE) -C $(GCC_DIR)/ada/tools -f ../Makefile \
+-	  $(TOOLS_FLAGS_TO_PASS_NATIVE) common-tools
++%.o: %.adb
++	$(GCC) -c -o $@ $< $(ADA_CFLAGS) $(ADA_INCLUDES)
++
++%.o: %.ads
++	$(GCC) -c -o $@ $< $(ADA_CFLAGS) $(ADA_INCLUDES)
++
+ 
+ # gnatmake/link can be built with recent gnatmake/link if they are available.
+ # This is especially convenient for building cross tools or for rebuilding
diff --git a/debian/patches/ada-gnattools-ldflags.diff b/debian/patches/ada-gnattools-ldflags.diff
new file mode 100644
index 0000000..0675b0b
--- /dev/null
+++ b/debian/patches/ada-gnattools-ldflags.diff
@@ -0,0 +1,96 @@
+# DP: Link gnat tools with the defaults LDFLAGS
+
+Index: b/src/gcc/ada/gcc-interface/Makefile.in
+===================================================================
+--- a/src/gcc/ada/gcc-interface/Makefile.in
++++ b/src/gcc/ada/gcc-interface/Makefile.in
+@@ -111,6 +111,7 @@ NO_SIBLING_ADAFLAGS = -fno-optimize-sibl
+ NO_REORDER_ADAFLAGS = -fno-toplevel-reorder
+ GNATLIBFLAGS = -W -Wall -gnatpg -nostdinc
+ GNATLIBCFLAGS = -g -O2
++GNATLIBLDFLAGS = $(LDFLAGS)
+ PICFLAG_FOR_TARGET = @PICFLAG_FOR_TARGET@
+ 
+ # Pretend that _Unwind_GetIPInfo is available for the target by default.  This
+@@ -2487,23 +2488,23 @@ common-tools: ../stamp-tools
+ 	  gnatchop gnatcmd gnatkr gnatls gnatprep gnatxref gnatfind gnatname \
+ 	  gnatclean -bargs $(ADA_INCLUDES) $(GNATBIND_FLAGS)
+ 	$(GNATLINK) -v gnatcmd -o ../../gnat$(exeext) \
+-		--GCC="$(GCC_LINK)" $(TOOLS_LIBS)
++		--GCC="$(GCC_LINK)" $(TOOLS_LIBS) $(LDFLAGS)
+ 	$(GNATLINK) -v gnatchop -o ../../gnatchop$(exeext) \
+-		--GCC="$(GCC_LINK)" $(TOOLS_LIBS)
++		--GCC="$(GCC_LINK)" $(TOOLS_LIBS) $(LDFLAGS)
+ 	$(GNATLINK) -v gnatkr -o ../../gnatkr$(exeext) \
+-		--GCC="$(GCC_LINK)" $(TOOLS_LIBS)
++		--GCC="$(GCC_LINK)" $(TOOLS_LIBS) $(LDFLAGS)
+ 	$(GNATLINK) -v gnatls -o ../../gnatls$(exeext) \
+-		--GCC="$(GCC_LINK)" $(TOOLS_LIBS)
++		--GCC="$(GCC_LINK)" $(TOOLS_LIBS) $(LDFLAGS)
+ 	$(GNATLINK) -v gnatprep -o ../../gnatprep$(exeext) \
+-		--GCC="$(GCC_LINK)" $(TOOLS_LIBS)
++		--GCC="$(GCC_LINK)" $(TOOLS_LIBS) $(LDFLAGS)
+ 	$(GNATLINK) -v gnatxref -o ../../gnatxref$(exeext) \
+-		--GCC="$(GCC_LINK)" $(TOOLS_LIBS)
++		--GCC="$(GCC_LINK)" $(TOOLS_LIBS) $(LDFLAGS)
+ 	$(GNATLINK) -v gnatfind -o ../../gnatfind$(exeext) \
+-		--GCC="$(GCC_LINK)" $(TOOLS_LIBS)
++		--GCC="$(GCC_LINK)" $(TOOLS_LIBS) $(LDFLAGS)
+ 	$(GNATLINK) -v gnatname -o ../../gnatname$(exeext) \
+-		--GCC="$(GCC_LINK)" $(TOOLS_LIBS)
++		--GCC="$(GCC_LINK)" $(TOOLS_LIBS) $(LDFLAGS)
+ 	$(GNATLINK) -v gnatclean -o ../../gnatclean$(exeext) \
+-		--GCC="$(GCC_LINK)" $(TOOLS_LIBS)
++		--GCC="$(GCC_LINK)" $(TOOLS_LIBS) $(LDFLAGS)
+ 
+ ../../gnatdll$(exeext): ../stamp-tools
+ 	$(GNATMAKE) -c $(ADA_INCLUDES) gnatdll --GCC="$(CC) $(ALL_ADAFLAGS)"
+@@ -2737,14 +2738,14 @@ gnatlib-shared-default:
+ 		-o libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) \
+ 		$(GNATRTL_NONTASKING_OBJS) $(LIBGNAT_OBJS) \
+ 		$(SO_OPTS)libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) \
+-		$(MISCLIB) -lm
++		$(MISCLIB) -lm $(GNATLIBLDFLAGS)
+ 	cd $(RTSDIR); `echo "$(GCC_FOR_TARGET)" \
+                 | sed -e 's,\./xgcc,../../xgcc,' -e 's,-B\./,-B../../,'` -shared $(GNATLIBCFLAGS) \
+ 		$(PICFLAG_FOR_TARGET) \
+ 		-o libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext) \
+ 		$(GNATRTL_TASKING_OBJS) \
+ 		$(SO_OPTS)libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext) \
+-		$(THREADSLIB)
++		$(THREADSLIB) $(GNATLIBLDFLAGS)
+ 	cd $(RTSDIR); $(LN_S) libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) \
+ 		libgnat$(soext)
+ 	cd $(RTSDIR); $(LN_S) libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext) \
+@@ -2755,6 +2756,7 @@ gnatlib-shared-dual:
+              GNATLIBFLAGS="$(GNATLIBFLAGS)" \
+ 	     GNATLIBCFLAGS="$(GNATLIBCFLAGS)" \
+ 	     GNATLIBCFLAGS_FOR_C="$(GNATLIBCFLAGS_FOR_C)" \
++             GNATLIBLDFLAGS="$(GNATLIBLDFLAGS)" \
+ 	     MULTISUBDIR="$(MULTISUBDIR)" \
+ 	     THREAD_KIND="$(THREAD_KIND)" \
+              gnatlib-shared-default
+@@ -2764,6 +2766,7 @@ gnatlib-shared-dual:
+              GNATLIBFLAGS="$(GNATLIBFLAGS)" \
+ 	     GNATLIBCFLAGS="$(GNATLIBCFLAGS)" \
+ 	     GNATLIBCFLAGS_FOR_C="$(GNATLIBCFLAGS_FOR_C)" \
++             GNATLIBLDFLAGS="$(GNATLIBLDFLAGS)" \
+ 	     MULTISUBDIR="$(MULTISUBDIR)" \
+ 	     THREAD_KIND="$(THREAD_KIND)" \
+              gnatlib
+@@ -2851,6 +2854,7 @@ gnatlib-shared:
+              GNATLIBFLAGS="$(GNATLIBFLAGS)" \
+ 	     GNATLIBCFLAGS="$(GNATLIBCFLAGS)" \
+ 	     GNATLIBCFLAGS_FOR_C="$(GNATLIBCFLAGS_FOR_C)" \
++             GNATLIBLDFLAGS="$(GNATLIBLDFLAGS)" \
+ 	     MULTISUBDIR="$(MULTISUBDIR)" \
+ 	     THREAD_KIND="$(THREAD_KIND)" \
+ 	     PICFLAG_FOR_TARGET="$(PICFLAG_FOR_TARGET)" \
+@@ -2891,6 +2895,7 @@ gnatlib-zcx:
+ 	     GNATLIBFLAGS="$(GNATLIBFLAGS)" \
+ 	     GNATLIBCFLAGS="$(GNATLIBCFLAGS)" \
+ 	     GNATLIBCFLAGS_FOR_C="$(GNATLIBCFLAGS_FOR_C)" \
++             GNATLIBLDFLAGS="$(GNATLIBLDFLAGS)" \
+ 	     FORCE_DEBUG_ADAFLAGS="$(FORCE_DEBUG_ADAFLAGS)" \
+ 	     MULTISUBDIR="$(MULTISUBDIR)" \
+ 	     THREAD_KIND="$(THREAD_KIND)" \
diff --git a/debian/patches/ada-hurd.diff b/debian/patches/ada-hurd.diff
new file mode 100644
index 0000000..97631dc
--- /dev/null
+++ b/debian/patches/ada-hurd.diff
@@ -0,0 +1,847 @@
+Index: b/src/gcc/ada/s-osinte-gnu.ads
+===================================================================
+--- /dev/null
++++ b/src/gcc/ada/s-osinte-gnu.ads
+@@ -0,0 +1,802 @@
++------------------------------------------------------------------------------
++--                                                                          --
++--                GNU ADA RUN-TIME LIBRARY (GNARL) COMPONENTS               --
++--                                                                          --
++--                   S Y S T E M . O S _ I N T E R F A C E                  --
++--                                                                          --
++--                                  S p e c                                 --
++--                                                                          --
++--             Copyright (C) 1991-1994, Florida State University            --
++--          Copyright (C) 1995-2014, Free Software Foundation, Inc.         --
++--                                                                          --
++-- GNAT is free software;  you can  redistribute it  and/or modify it under --
++-- terms of the  GNU General Public License as published  by the Free Soft- --
++-- ware  Foundation;  either version 3,  or (at your option) any later ver- --
++-- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
++-- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
++-- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
++--                                                                          --
++-- As a special exception under Section 7 of GPL version 3, you are granted --
++-- additional permissions described in the GCC Runtime Library Exception,   --
++-- version 3.1, as published by the Free Software Foundation.               --
++--                                                                          --
++-- You should have received a copy of the GNU General Public License and    --
++-- a copy of the GCC Runtime Library Exception along with this program;     --
++-- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
++-- <http://www.gnu.org/licenses/>.                                          --
++--                                                                          --
++-- GNARL was developed by the GNARL team at Florida State University.       --
++-- Extensive contributions were provided by Ada Core Technologies, Inc.     --
++--                                                                          --
++------------------------------------------------------------------------------
++
++--  This is the GNU/Hurd (POSIX Threads) version of this package
++
++--  This package encapsulates all direct interfaces to OS services
++--  that are needed by children of System.
++
++--  PLEASE DO NOT add any with-clauses to this package or remove the pragma
++--  Preelaborate. This package is designed to be a bottom-level (leaf) package
++
++with Interfaces.C;
++with Unchecked_Conversion;
++
++package System.OS_Interface is
++   pragma Preelaborate;
++
++   pragma Linker_Options ("-lpthread");
++   pragma Linker_Options ("-lrt");
++
++   subtype int            is Interfaces.C.int;
++   subtype char           is Interfaces.C.char;
++   subtype short          is Interfaces.C.short;
++   subtype long           is Interfaces.C.long;
++   subtype unsigned       is Interfaces.C.unsigned;
++   subtype unsigned_short is Interfaces.C.unsigned_short;
++   subtype unsigned_long  is Interfaces.C.unsigned_long;
++   subtype unsigned_char  is Interfaces.C.unsigned_char;
++   subtype plain_char     is Interfaces.C.plain_char;
++   subtype size_t         is Interfaces.C.size_t;
++
++   -----------
++   -- Errno --
++   -----------
++   --  From /usr/include/i386-gnu/bits/errno.h
++
++   function errno return int;
++   pragma Import (C, errno, "__get_errno");
++
++   EAGAIN   : constant := 1073741859;
++   EINTR    : constant := 1073741828;
++   EINVAL   : constant := 1073741846;
++   ENOMEM   : constant := 1073741836;
++   EPERM    : constant := 1073741825;
++   ETIMEDOUT    : constant := 1073741884;
++
++   -------------
++   -- Signals --
++   -------------
++   --  From /usr/include/i386-gnu/bits/signum.h
++
++   Max_Interrupt : constant := 32;
++   type Signal is new int range 0 .. Max_Interrupt;
++   for Signal'Size use int'Size;
++
++   SIGHUP     : constant := 1; --  hangup
++   SIGINT     : constant := 2; --  interrupt (rubout)
++   SIGQUIT    : constant := 3; --  quit (ASCD FS)
++   SIGILL     : constant := 4; --  illegal instruction (not reset)
++   SIGTRAP    : constant := 5; --  trace trap (not reset)
++   SIGIOT     : constant := 6; --  IOT instruction
++   SIGABRT    : constant := 6; --  used by abort, replace SIGIOT in the  future
++   SIGEMT     : constant := 7; --  EMT instruction
++   SIGFPE     : constant := 8; --  floating point exception
++   SIGKILL    : constant := 9; --  kill (cannot be caught or ignored)
++   SIGBUS     : constant := 10; --  bus error
++   SIGSEGV    : constant := 11; --  segmentation violation
++   SIGSYS     : constant := 12; --  bad argument to system call
++   SIGPIPE    : constant := 13; --  write on a pipe with no one to read it
++   SIGALRM    : constant := 14; --  alarm clock
++   SIGTERM    : constant := 15; --  software termination signal from kill
++   SIGURG     : constant := 16; --  urgent condition on IO channel
++   SIGSTOP    : constant := 17; --  stop (cannot be caught or ignored)
++   SIGTSTP    : constant := 18; --  user stop requested from tty
++   SIGCONT    : constant := 19; --  stopped process has been continued
++   SIGCLD     : constant := 20; --  alias for SIGCHLD
++   SIGCHLD    : constant := 20; --  child status change
++   SIGTTIN    : constant := 21; --  background tty read attempted
++   SIGTTOU    : constant := 22; --  background tty write attempted
++   SIGIO      : constant := 23; --  I/O possible (Solaris SIGPOLL alias)
++   SIGPOLL    : constant := 23; --  I/O possible (same as SIGIO?)
++   SIGXCPU    : constant := 24; --  CPU time limit exceeded
++   SIGXFSZ    : constant := 25; --  filesize limit exceeded
++   SIGVTALRM  : constant := 26; --  virtual timer expired
++   SIGPROF    : constant := 27; --  profiling timer expired
++   SIGWINCH   : constant := 28; --  window size change
++   SIGINFO    : constant := 29; --  information request (NetBSD/FreeBSD)
++   SIGUSR1    : constant := 30; --  user defined signal 1
++   SIGUSR2    : constant := 31; --  user defined signal 2
++   SIGLOST    : constant := 32; --  Resource lost (Sun); server died (GNU)
++
++   SIGADAABORT : constant := SIGABRT;
++   --  Change this if you want to use another signal for task abort.
++   --  SIGTERM might be a good one.
++
++   type Signal_Set is array (Natural range <>) of Signal;
++
++   Unmasked    : constant Signal_Set := (
++      SIGTRAP,
++      --  To enable debugging on multithreaded applications, mark SIGTRAP to
++      --  be kept unmasked.
++
++      SIGBUS,
++
++      SIGTTIN, SIGTTOU, SIGTSTP,
++      --  Keep these three signals unmasked so that background processes
++      --  and IO behaves as normal "C" applications
++
++      SIGPROF,
++      --  To avoid confusing the profiler
++
++      SIGKILL, SIGSTOP);
++      --  These two signals actually cannot be masked;
++      --  POSIX simply won't allow it.
++
++   Reserved    : constant Signal_Set :=
++   --  I am not sure why the following signal is reserved.
++   --  I guess they are not supported by this version of GNU/Hurd.
++     (0 .. 0 => SIGVTALRM);
++
++   type sigset_t is private;
++
++   --  From /usr/include/signal.h /usr/include/i386-gnu/bits/sigset.h
++   function sigaddset (set : access sigset_t; sig : Signal) return int;
++   pragma Import (C, sigaddset, "sigaddset");
++
++   function sigdelset (set : access sigset_t; sig : Signal) return int;
++   pragma Import (C, sigdelset, "sigdelset");
++
++   function sigfillset (set : access sigset_t) return int;
++   pragma Import (C, sigfillset, "sigfillset");
++
++   function sigismember (set : access sigset_t; sig : Signal) return int;
++   pragma Import (C, sigismember, "sigismember");
++
++   function sigemptyset (set : access sigset_t) return int;
++   pragma Import (C, sigemptyset, "sigemptyset");
++
++   --  sigcontext is architecture dependent, so define it private
++   type struct_sigcontext is private;
++
++   --  From /usr/include/i386-gnu/bits/sigaction.h: Note: arg. order differs
++   type struct_sigaction is record
++      sa_handler : System.Address;
++      sa_mask    : sigset_t;
++      sa_flags   : int;
++   end record;
++   pragma Convention (C, struct_sigaction);
++
++   type struct_sigaction_ptr is access all struct_sigaction;
++
++   --  From /usr/include/i386-gnu/bits/sigaction.h
++   SIG_BLOCK   : constant := 1;
++   SIG_UNBLOCK : constant := 2;
++   SIG_SETMASK : constant := 3;
++
++   --  From /usr/include/i386-gnu/bits/signum.h
++   SIG_ERR  : constant := 1;
++   SIG_DFL  : constant := 0;
++   SIG_IGN  : constant := 1;
++   SIG_HOLD : constant := 2;
++
++   --  From /usr/include/i386-gnu/bits/sigaction.h
++   SA_SIGINFO : constant := 16#0040#;
++   SA_ONSTACK : constant := 16#0001#;
++
++   function sigaction
++     (sig  : Signal;
++      act  : struct_sigaction_ptr;
++      oact : struct_sigaction_ptr) return int;
++   pragma Import (C, sigaction, "sigaction");
++
++   ----------
++   -- Time --
++   ----------
++
++   Time_Slice_Supported : constant Boolean := True;
++   --  Indicates whether time slicing is supported (i.e SCHED_RR is supported)
++
++   type timespec is private;
++
++   function nanosleep (rqtp, rmtp : access timespec) return int;
++   pragma Import (C, nanosleep, "nanosleep");
++
++   type clockid_t is new int;
++   CLOCK_REALTIME : constant clockid_t := 0;
++
++   --  From: /usr/include/time.h
++   function clock_gettime
++     (clock_id : clockid_t;
++      tp       : access timespec)
++      return int;
++   pragma Import (C, clock_gettime, "clock_gettime");
++
++   function clock_getres
++     (clock_id : clockid_t;
++      res      : access timespec) return int;
++   pragma Import (C, clock_getres, "clock_getres");
++
++   function To_Duration (TS : timespec) return Duration;
++   pragma Inline (To_Duration);
++
++   function To_Timespec (D : Duration) return timespec;
++   pragma Inline (To_Timespec);
++
++   --  From: /usr/include/unistd.h
++   function sysconf (name : int) return long;
++   pragma Import (C, sysconf);
++
++   --  From /usr/include/i386-gnu/bits/confname.h
++   SC_CLK_TCK          : constant := 2;
++   SC_NPROCESSORS_ONLN : constant := 84;
++
++   -------------------------
++   -- Priority Scheduling --
++   -------------------------
++   --  From /usr/include/i386-gnu/bits/sched.h
++
++   SCHED_OTHER : constant := 0;
++   SCHED_FIFO  : constant := 1;
++   SCHED_RR    : constant := 2;
++
++   function To_Target_Priority
++     (Prio : System.Any_Priority) return Interfaces.C.int;
++   --  Maps System.Any_Priority to a POSIX priority.
++
++   -------------
++   -- Process --
++   -------------
++
++   type pid_t is private;
++
++   --  From: /usr/include/signal.h
++   function kill (pid : pid_t; sig : Signal) return int;
++   pragma Import (C, kill, "kill");
++
++   --  From: /usr/include/unistd.h
++   function getpid return pid_t;
++   pragma Import (C, getpid, "getpid");
++
++   ---------
++   -- LWP --
++   ---------
++
++   --  From: /usr/include/pthread/pthread.h
++   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 --
++   -------------
++
++   type Thread_Body is access
++     function (arg : System.Address) return System.Address;
++   pragma Convention (C, Thread_Body);
++
++   function Thread_Body_Access is new
++     Unchecked_Conversion (System.Address, Thread_Body);
++
++   --  From: /usr/include/bits/pthread.h:typedef int __pthread_t;
++   --  /usr/include/pthread/pthreadtypes.h:typedef __pthread_t pthread_t;
++   type pthread_t is new unsigned_long;
++   subtype Thread_Id        is pthread_t;
++
++   function To_pthread_t is new Unchecked_Conversion
++     (unsigned_long, pthread_t);
++
++   type pthread_mutex_t     is limited private;
++   type pthread_rwlock_t     is limited private;
++   type pthread_cond_t      is limited private;
++   type pthread_attr_t      is limited private;
++   type pthread_mutexattr_t is limited private;
++   type pthread_rwlockattr_t is limited private;
++   type pthread_condattr_t  is limited private;
++   type pthread_key_t       is private;
++
++   --  From /usr/include/pthread/pthreadtypes.h
++   PTHREAD_CREATE_DETACHED : constant := 1;
++   PTHREAD_CREATE_JOINABLE : constant := 0;
++
++   PTHREAD_SCOPE_PROCESS : constant := 1;
++   PTHREAD_SCOPE_SYSTEM  : constant := 0;
++
++   -----------
++   -- Stack --
++   -----------
++
++   --  From: /usr/include/i386-gnu/bits/sigstack.h
++   type stack_t is record
++      ss_sp    : System.Address;
++      ss_size  : size_t;
++      ss_flags : int;
++   end record;
++   pragma Convention (C, stack_t);
++
++   function sigaltstack
++     (ss  : not null access stack_t;
++      oss : access stack_t) return int;
++   pragma Import (C, sigaltstack, "sigaltstack");
++
++   Alternate_Stack : aliased System.Address;
++   --  This is a dummy definition, never used (Alternate_Stack_Size is null)
++
++   Alternate_Stack_Size : constant := 0;
++   --  No alternate signal stack is used on this platform
++
++   Stack_Base_Available : constant Boolean := False;
++   --  Indicates whether the stack base is available on this target
++
++   function Get_Stack_Base (thread : pthread_t) return Address;
++   pragma Inline (Get_Stack_Base);
++   --  returns the stack base of the specified thread. Only call this function
++   --  when Stack_Base_Available is True.
++
++   --  From: /usr/include/i386-gnu/bits/shm.h __getpagesize or getpagesize??
++   function Get_Page_Size return size_t;
++   function Get_Page_Size return Address;
++   pragma Import (C, Get_Page_Size, "__getpagesize");
++   --  Returns the size of a page
++
++   --  From /usr/include/i386-gnu/bits/mman.h
++   PROT_NONE  : constant := 0;
++   PROT_READ  : constant := 4;
++   PROT_WRITE : constant := 2;
++   PROT_EXEC  : constant := 1;
++   PROT_ALL   : constant := PROT_READ + PROT_WRITE + PROT_EXEC;
++   PROT_ON    : constant := PROT_NONE;
++   PROT_OFF   : constant := PROT_ALL;
++
++   --  From /usr/include/i386-gnu/bits/mman.h
++   function mprotect (addr : Address; len : size_t; prot : int) return int;
++   pragma Import (C, mprotect);
++
++   ---------------------------------------
++   -- Nonstandard Thread Initialization --
++   ---------------------------------------
++
++   procedure pthread_init;
++   pragma Inline (pthread_init);
++   --  This is a dummy procedure to share some GNULLI files
++
++   -------------------------
++   -- POSIX.1c  Section 3 --
++   -------------------------
++
++   --  From: /usr/include/signal.h:
++   --  sigwait (__const sigset_t *__restrict __set, int *__restrict __sig)
++   function sigwait (set : access sigset_t; sig : access Signal) return int;
++   pragma Import (C, sigwait, "sigwait");
++
++   --  From: /usr/include/pthread/pthread.h:
++   --  extern int pthread_kill (pthread_t thread, int signo);
++   function pthread_kill (thread : pthread_t; sig : Signal) return int;
++   pragma Import (C, pthread_kill, "pthread_kill");
++
++   --  From: /usr/include/i386-gnu/bits/sigthread.h
++   --  extern int pthread_sigmask (int __how, __const __sigset_t *__newmask,
++   --  __sigset_t *__oldmask) __THROW;
++   function pthread_sigmask
++     (how  : int;
++      set  : access sigset_t;
++      oset : access sigset_t) return int;
++   pragma Import (C, pthread_sigmask, "pthread_sigmask");
++
++   --------------------------
++   -- POSIX.1c  Section 11 --
++   --------------------------
++
++   --  From: /usr/include/pthread/pthread.h and
++   --  /usr/include/pthread/pthreadtypes.h
++   function pthread_mutexattr_init
++     (attr : access pthread_mutexattr_t) return int;
++   pragma Import (C, pthread_mutexattr_init, "pthread_mutexattr_init");
++
++   function pthread_mutexattr_destroy
++     (attr : access pthread_mutexattr_t) return int;
++   pragma Import (C, pthread_mutexattr_destroy, "pthread_mutexattr_destroy");
++
++   function pthread_mutex_init
++     (mutex : access pthread_mutex_t;
++      attr  : access pthread_mutexattr_t) return int;
++   pragma Import (C, pthread_mutex_init, "pthread_mutex_init");
++
++   function pthread_mutex_destroy (mutex : access pthread_mutex_t) return int;
++   pragma Import (C, pthread_mutex_destroy, "pthread_mutex_destroy");
++
++   function pthread_mutex_lock (mutex : access pthread_mutex_t) return int;
++   pragma Import (C, pthread_mutex_lock, "pthread_mutex_lock");
++
++   function pthread_mutex_unlock (mutex : access pthread_mutex_t) return int;
++   pragma Import (C, pthread_mutex_unlock, "pthread_mutex_unlock");
++
++   function pthread_rwlockattr_init
++     (attr : access pthread_rwlockattr_t) return int;
++   pragma Import (C, pthread_rwlockattr_init, "pthread_rwlockattr_init");
++
++   function pthread_rwlockattr_destroy
++     (attr : access pthread_rwlockattr_t) return int;
++   pragma Import (C, pthread_rwlockattr_destroy, "pthread_rwlockattr_destroy");
++   PTHREAD_RWLOCK_PREFER_READER_NP              : constant := 0;
++   PTHREAD_RWLOCK_PREFER_WRITER_NP              : constant := 1;
++   PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP : constant := 2;
++
++   function pthread_rwlockattr_setkind_np
++     (attr : access pthread_rwlockattr_t;
++      pref : int) return int;
++   pragma Import
++     (C, pthread_rwlockattr_setkind_np, "pthread_rwlockattr_setkind_np");
++
++   function pthread_rwlock_init
++     (mutex : access pthread_rwlock_t;
++      attr  : access pthread_rwlockattr_t) return int;
++   pragma Import (C, pthread_rwlock_init, "pthread_rwlock_init");
++
++   function pthread_rwlock_destroy
++     (mutex : access pthread_rwlock_t) return int;
++   pragma Import (C, pthread_rwlock_destroy, "pthread_rwlock_destroy");
++
++   function pthread_rwlock_rdlock (mutex : access pthread_rwlock_t) return int;
++   pragma Import (C, pthread_rwlock_rdlock, "pthread_rwlock_rdlock");
++
++   function pthread_rwlock_wrlock (mutex : access pthread_rwlock_t) return int;
++   pragma Import (C, pthread_rwlock_wrlock, "pthread_rwlock_wrlock");
++
++   function pthread_rwlock_unlock (mutex : access pthread_rwlock_t) return int;
++   pragma Import (C, pthread_rwlock_unlock, "pthread_rwlock_unlock");
++
++   function pthread_condattr_init
++     (attr : access pthread_condattr_t) return int;
++   pragma Import (C, pthread_condattr_init, "pthread_condattr_init");
++
++   function pthread_condattr_destroy
++     (attr : access pthread_condattr_t) return int;
++   pragma Import (C, pthread_condattr_destroy, "pthread_condattr_destroy");
++
++   function pthread_cond_init
++     (cond : access pthread_cond_t;
++      attr : access pthread_condattr_t) return int;
++   pragma Import (C, pthread_cond_init, "pthread_cond_init");
++
++   function pthread_cond_destroy (cond : access pthread_cond_t) return int;
++   pragma Import (C, pthread_cond_destroy, "pthread_cond_destroy");
++
++   function pthread_cond_signal (cond : access pthread_cond_t) return int;
++   pragma Import (C, pthread_cond_signal, "pthread_cond_signal");
++
++   function pthread_cond_wait
++     (cond  : access pthread_cond_t;
++      mutex : access pthread_mutex_t) return int;
++   pragma Import (C, pthread_cond_wait, "pthread_cond_wait");
++
++   function pthread_cond_timedwait
++     (cond    : access pthread_cond_t;
++      mutex   : access pthread_mutex_t;
++      abstime : access timespec) return int;
++   pragma Import (C, pthread_cond_timedwait, "pthread_cond_timedwait");
++
++   Relative_Timed_Wait : constant Boolean := False;
++   --  pthread_cond_timedwait requires an absolute delay time
++
++   --------------------------
++   -- POSIX.1c  Section 13 --
++   --------------------------
++   --  From /usr/include/pthread/pthreadtypes.h
++
++   PTHREAD_PRIO_NONE    : constant := 0;
++   PTHREAD_PRIO_PROTECT : constant := 2;
++   PTHREAD_PRIO_INHERIT : constant := 1;
++
++   --  From: /usr/include/pthread/pthread.h
++   function pthread_mutexattr_setprotocol
++     (attr     : access pthread_mutexattr_t;
++      protocol : int) return int;
++   pragma Import (C, pthread_mutexattr_setprotocol,
++     "pthread_mutexattr_setprotocol");
++
++   function pthread_mutexattr_getprotocol
++     (attr     : access pthread_mutexattr_t;
++      protocol : access int) return int;
++   pragma Import (C, pthread_mutexattr_getprotocol,
++     "pthread_mutexattr_getprotocol");
++
++   function pthread_mutexattr_setprioceiling
++     (attr     : access pthread_mutexattr_t;
++      prioceiling : int) return int;
++   pragma Import (C, pthread_mutexattr_setprioceiling,
++     "pthread_mutexattr_setprioceiling");
++
++   function pthread_mutexattr_getprioceiling
++     (attr     : access pthread_mutexattr_t;
++      prioceiling : access int) return int;
++   pragma Import (C, pthread_mutexattr_getprioceiling,
++     "pthread_mutexattr_getprioceiling");
++
++   type struct_sched_param is record
++      sched_priority : int;  --  scheduling priority
++   end record;
++   pragma Convention (C, struct_sched_param);
++
++   function pthread_setschedparam
++     (thread : pthread_t;
++      policy : int;
++      param  : access struct_sched_param) return int;
++   pragma Import (C, pthread_setschedparam, "pthread_setschedparam");
++
++   function pthread_attr_setscope
++     (attr            : access pthread_attr_t;
++      contentionscope : int) return int;
++   pragma Import (C, pthread_attr_setscope, "pthread_attr_setscope");
++
++   function pthread_attr_getscope
++     (attr            : access pthread_attr_t;
++      contentionscope : access int) return int;
++   pragma Import (C, pthread_attr_getscope, "pthread_attr_getscope");
++
++   function pthread_attr_setinheritsched
++     (attr            : access pthread_attr_t;
++      inheritsched : int) return int;
++   pragma Import (C, pthread_attr_setinheritsched,
++     "pthread_attr_setinheritsched");
++
++   function pthread_attr_getinheritsched
++     (attr         : access pthread_attr_t;
++      inheritsched : access int) return int;
++   pragma Import (C, pthread_attr_getinheritsched,
++     "pthread_attr_getinheritsched");
++
++   function pthread_attr_setschedpolicy
++     (attr   : access pthread_attr_t;
++      policy : int) return int;
++   pragma Import (C, pthread_attr_setschedpolicy, "pthread_setschedpolicy");
++
++   function sched_yield return int;
++   pragma Import (C, sched_yield, "sched_yield");
++
++   ---------------------------
++   -- P1003.1c - Section 16 --
++   ---------------------------
++
++   function pthread_attr_init
++     (attributes : access pthread_attr_t) return int;
++   pragma Import (C, pthread_attr_init, "pthread_attr_init");
++
++   function pthread_attr_destroy
++     (attributes : access pthread_attr_t) return int;
++   pragma Import (C, pthread_attr_destroy, "pthread_attr_destroy");
++
++   function pthread_attr_setdetachstate
++     (attr        : access pthread_attr_t;
++      detachstate : int) return int;
++   pragma Import
++     (C, pthread_attr_setdetachstate, "pthread_attr_setdetachstate");
++
++   function pthread_attr_setstacksize
++     (attr      : access pthread_attr_t;
++      stacksize : size_t) return int;
++   pragma Import (C, pthread_attr_setstacksize, "pthread_attr_setstacksize");
++
++   --  From: /usr/include/pthread/pthread.h
++   function pthread_create
++     (thread        : access pthread_t;
++      attributes    : access pthread_attr_t;
++      start_routine : Thread_Body;
++      arg           : System.Address) return int;
++   pragma Import (C, pthread_create, "pthread_create");
++
++   procedure pthread_exit (status : System.Address);
++   pragma Import (C, pthread_exit, "pthread_exit");
++
++   function pthread_self return pthread_t;
++   pragma Import (C, pthread_self, "pthread_self");
++
++   --------------------------
++   -- POSIX.1c  Section 17 --
++   --------------------------
++
++   function pthread_setspecific
++     (key   : pthread_key_t;
++      value : System.Address) return int;
++   pragma Import (C, pthread_setspecific, "pthread_setspecific");
++
++   function pthread_getspecific (key : pthread_key_t) return System.Address;
++   pragma Import (C, pthread_getspecific, "pthread_getspecific");
++
++   type destructor_pointer is access procedure (arg : System.Address);
++   pragma Convention (C, destructor_pointer);
++
++   function pthread_key_create
++     (key        : access pthread_key_t;
++      destructor : destructor_pointer) return int;
++   pragma Import (C, pthread_key_create, "pthread_key_create");
++
++   --  From /usr/include/i386-gnu/bits/sched.h
++   CPU_SETSIZE : constant := 1_024;
++
++   type bit_field is array (1 .. CPU_SETSIZE) of Boolean;
++   for bit_field'Size use CPU_SETSIZE;
++   pragma Pack (bit_field);
++   pragma Convention (C, bit_field);
++
++   type cpu_set_t is record
++      bits : bit_field;
++   end record;
++   pragma Convention (C, cpu_set_t);
++
++private
++
++   type sigset_t is array (1 .. 4) of unsigned;
++
++   --  In GNU/Hurd the component sa_handler turns out to
++   --  be one a union type, and the selector is a macro:
++   --  #define sa_handler __sigaction_handler.sa_handler
++   --  #define sa_sigaction __sigaction_handler.sa_sigaction
++
++   --  Should we add a signal_context type here ?
++   --  How could it be done independent of the CPU architecture ?
++   --  sigcontext type is opaque, so it is architecturally neutral.
++   --  It is always passed as an access type, so define it as an empty record
++   --  since the contents are not used anywhere.
++   type struct_sigcontext is null record;
++   pragma Convention (C, struct_sigcontext);
++
++   type pid_t is new int;
++
++   type time_t is new long;
++
++   type timespec is record
++      tv_sec  : time_t;
++      tv_nsec : long;
++   end record;
++   pragma Convention (C, timespec);
++
++   --  From: /usr/include/pthread/pthreadtypes.h:
++   --  typedef struct __pthread_attr pthread_attr_t;
++   --  /usr/include/i386-gnu/bits/thread-attr.h: struct __pthread_attr...
++   --  /usr/include/pthread/pthreadtypes.h: enum __pthread_contentionscope
++   --   enum __pthread_detachstate detachstate;
++   --   enum __pthread_inheritsched inheritsched;
++   --   enum __pthread_contentionscope contentionscope;
++   --   Not used: schedpolicy   : int;
++   type pthread_attr_t is record
++      schedparam    : struct_sched_param;
++      stackaddr     : System.Address;
++      stacksize     : size_t;
++      guardsize     : size_t;
++      detachstate   : int;
++      inheritsched  : int;
++      contentionscope : int;
++      schedpolicy   : int;
++   end record;
++   pragma Convention (C, pthread_attr_t);
++
++   --  From: /usr/include/pthread/pthreadtypes.h:
++   --  typedef struct __pthread_condattr pthread_condattr_t;
++   --  From: /usr/include/i386-gnu/bits/condition-attr.h:
++   --  struct __pthread_condattr {
++   --    enum __pthread_process_shared pshared;
++   --    __Clockid_T Clock;}
++   --  From: /usr/include/pthread/pthreadtypes.h:
++   --  enum __pthread_process_shared
++   type pthread_condattr_t is record
++      pshared : int;
++      clock   : clockid_t;
++   end record;
++   pragma Convention (C, pthread_condattr_t);
++
++   --  From: /usr/include/pthread/pthreadtypes.h:
++   --  typedef struct __pthread_mutexattr pthread_mutexattr_t; and
++   --  /usr/include/i386-gnu/bits/mutex-attr.h
++   --  struct __pthread_mutexattr {
++   --  int prioceiling;
++   --  enum __pthread_mutex_protocol protocol;
++   --  enum __pthread_process_shared pshared;
++   --  enum __pthread_mutex_type mutex_type;};
++   type pthread_mutexattr_t is record
++      prioceiling : int;
++      protocol    : int;
++      pshared     : int;
++      mutex_type  : int;
++   end record;
++   pragma Convention (C, pthread_mutexattr_t);
++
++   --  From: /usr/include/pthread/pthreadtypes.h
++   --  typedef struct __pthread_mutex pthread_mutex_t; and
++   --  /usr/include/i386-gnu/bits/mutex.h:
++   --  struct __pthread_mutex {
++   --  __pthread_spinlock_t __held;
++   --  __pthread_spinlock_t __lock;
++   --  /* in cthreads, mutex_init does not initialized the third
++   --    pointer, as such, we cannot rely on its value for anything.  */
++   --    char *cthreadscompat1;
++   --  struct __pthread *__queue;
++   --  struct __pthread_mutexattr *attr;
++   --  void *data;
++   --  /*  up to this point, we are completely compatible with cthreads
++   --    and what libc expects.  */
++   --    void *owner;
++   --  unsigned locks;
++   --  /* if null then the default attributes apply.  */
++   --    };
++
++   type pthread_mutex_t is record
++      held          : int;
++      lock          : int;
++      cthreadcompat : System.Address;
++      queue         : System.Address;
++      attr          : System.Address;
++      data          : System.Address;
++      owner         : System.Address;
++      locks         : unsigned;
++   end record;
++   pragma Convention (C, pthread_mutex_t);
++   --  pointer needed?
++   --  type pthread_mutex_t_ptr is access pthread_mutex_t;
++
++   --  From: /usr/include/pthread/pthreadtypes.h:
++   --  typedef struct __pthread_cond pthread_cond_t;
++   --  typedef struct __pthread_condattr pthread_condattr_t;
++   --  /usr/include/i386-gnu/bits/condition.h:struct __pthread_cond{}
++   --  pthread_condattr_t: see above!
++   --  /usr/include/i386-gnu/bits/condition.h:
++   --  struct __pthread_condimpl *__impl;
++
++   type pthread_cond_t is record
++      lock       : int;
++      queue      : System.Address;
++      condattr   : System.Address;
++      impl       : System.Address;
++      data       : System.Address;
++   end record;
++   pragma Convention (C, pthread_cond_t);
++
++   --  From: /usr/include/pthread/pthreadtypes.h:
++   --  typedef __pthread_key pthread_key_t; and
++   --  /usr/include/i386-gnu/bits/thread-specific.h:
++   --  typedef int __pthread_key;
++
++   type pthread_key_t is new int;
++
++   --  From: /usr/include/i386-gnu/bits/rwlock-attr.h:
++   --  struct __pthread_rwlockattr {
++   --  enum __pthread_process_shared pshared; };
++
++   type pthread_rwlockattr_t is record
++      pshared : int;
++   end record;
++   pragma Convention (C, pthread_rwlockattr_t);
++
++   --  From: /usr/include/i386-gnu/bits/rwlock.h:
++   --  struct __pthread_rwlock {
++   --  __pthread_spinlock_t __held;
++   --  __pthread_spinlock_t __lock;
++   --  int readers;
++   --  struct __pthread *readerqueue;
++   --  struct __pthread *writerqueue;
++   --  struct __pthread_rwlockattr *__attr;
++   --  void *__data; };
++
++   type pthread_rwlock_t is record
++      held        : int;
++      lock        : int;
++      readers     : int;
++      readerqueue : System.Address;
++      writerqueue : System.Address;
++      attr        : pthread_rwlockattr_t;
++      data        : int;
++   end record;
++   pragma Convention (C, pthread_rwlock_t);
++
++end System.OS_Interface;
+Index: b/src/gcc/ada/gcc-interface/Makefile.in
+===================================================================
+--- a/src/gcc/ada/gcc-interface/Makefile.in
++++ b/src/gcc/ada/gcc-interface/Makefile.in
+@@ -1390,6 +1390,35 @@ ifeq ($(strip $(filter-out %86 kfreebsd%
+   MISCLIB = -lutil
+ endif
+ 
++# i[3456]86-pc-gnu i.e. GNU Hurd
++ifeq ($(strip $(filter-out %86 pc gnu,$(target_cpu) $(target_vendor) $(target_os))),)
++  LIBGNAT_TARGET_PAIRS = \
++  a-intnam.ads<a-intnam-freebsd.ads \
++  s-inmaop.adb<s-inmaop-posix.adb \
++  s-intman.adb<s-intman-posix.adb \
++  s-osinte.adb<s-osinte-posix.adb \
++  s-osinte.ads<s-osinte-gnu.ads \
++  s-osprim.adb<s-osprim-posix.adb \
++  s-taprop.adb<s-taprop-posix.adb \
++  s-taspri.ads<s-taspri-posix.ads \
++  s-tpopsp.adb<s-tpopsp-posix-foreign.adb \
++  $(ATOMICS_TARGET_PAIRS) \
++  $(X86_TARGET_PAIRS) \
++  system.ads<system-freebsd-x86.ads
++
++  TOOLS_TARGET_PAIRS =  \
++    mlib-tgt-specific.adb<mlib-tgt-specific-linux.adb \
++    indepsw.adb<indepsw-gnu.adb
++
++  EXTRA_GNATRTL_NONTASKING_OBJS=g-sse.o g-ssvety.o
++
++  EH_MECHANISM=-gcc
++  THREADSLIB = -lpthread
++  GNATLIB_SHARED = gnatlib-shared-dual
++  GMEM_LIB = gmemlib
++  LIBRARY_VERSION := $(LIB_VERSION)
++endif
++
+ ifeq ($(strip $(filter-out x86_64 kfreebsd%,$(target_cpu) $(target_os))),)
+   LIBGNAT_TARGET_PAIRS = \
+   a-intnam.ads<a-intnam-freebsd.ads \
diff --git a/debian/patches/ada-kfreebsd.diff b/debian/patches/ada-kfreebsd.diff
new file mode 100644
index 0000000..9326fbe
--- /dev/null
+++ b/debian/patches/ada-kfreebsd.diff
@@ -0,0 +1,317 @@
+# DP: add support for GNU/kFreeBSD.
+
+Index: b/src/gcc/ada/terminals.c
+===================================================================
+--- a/src/gcc/ada/terminals.c
++++ b/src/gcc/ada/terminals.c
+@@ -1071,6 +1071,7 @@ __gnat_setup_winsize (void *desc, int ro
+ /* On some system termio is either absent or including it will disable termios
+    (HP-UX) */
+ #if ! defined (__hpux__) && ! defined (FREEBSD) && \
++    ! defined (__FreeBSD_kernel__) && ! defined (__GNU__) && \
+     ! defined (__APPLE__) && ! defined(__rtems__)
+ #   include <termio.h>
+ #endif
+Index: b/src/gcc/ada/s-osinte-kfreebsd-gnu.adb
+===================================================================
+--- /dev/null
++++ b/src/gcc/ada/s-osinte-kfreebsd-gnu.adb
+@@ -0,0 +1,158 @@
++------------------------------------------------------------------------------
++--                                                                          --
++--                 GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS                 --
++--                                                                          --
++--                   S Y S T E M . O S _ I N T E R F A C E                  --
++--                                                                          --
++--                                   B o d y                                --
++--                                                                          --
++--             Copyright (C) 1991-1994, Florida State University            --
++--                     Copyright (C) 1995-2006, AdaCore                     --
++--                                                                          --
++-- GNARL is free software; you can  redistribute it  and/or modify it under --
++-- terms of the  GNU General Public License as published  by the Free Soft- --
++-- ware  Foundation;  either version 2,  or (at your option) any later ver- --
++-- sion. GNARL is distributed in the hope that it will be useful, but WITH- --
++-- OUT 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  distributed with GNARL; see file COPYING.  If not, write --
++-- to  the  Free Software Foundation,  51  Franklin  Street,  Fifth  Floor, --
++-- Boston, MA 02110-1301, USA.                                              --
++--                                                                          --
++-- As a special exception,  if other files  instantiate  generics from this --
++-- unit, or you link  this unit with other files  to produce an executable, --
++-- this  unit  does not  by itself cause  the resulting  executable  to  be --
++-- covered  by the  GNU  General  Public  License.  This exception does not --
++-- however invalidate  any other reasons why  the executable file  might be --
++-- covered by the  GNU Public License.                                      --
++--                                                                          --
++-- GNARL was developed by the GNARL team at Florida State University.       --
++-- Extensive contributions were provided by Ada Core Technologies, Inc.     --
++--                                                                          --
++------------------------------------------------------------------------------
++
++--  This is the GNU/kFreeBSD version of this package.
++
++pragma Polling (Off);
++--  Turn off polling, we do not want ATC polling to take place during
++--  tasking operations. It causes infinite loops and other problems.
++
++--  This package encapsulates all direct interfaces to OS services
++--  that are needed by children of System.
++
++package body System.OS_Interface is
++
++   --------------------
++   -- Get_Stack_Base --
++   --------------------
++
++   function Get_Stack_Base (thread : pthread_t) return Address is
++      pragma Warnings (Off, thread);
++
++   begin
++      return Null_Address;
++   end Get_Stack_Base;
++
++   ------------------
++   -- pthread_init --
++   ------------------
++
++   procedure pthread_init is
++   begin
++      null;
++   end pthread_init;
++
++   -----------------------------------
++   -- pthread_mutexattr_setprotocol --
++   -----------------------------------
++
++   function pthread_mutexattr_setprotocol
++     (attr     : access pthread_mutexattr_t;
++      protocol : int) return int is
++      pragma Unreferenced (attr, protocol);
++   begin
++      return 0;
++   end pthread_mutexattr_setprotocol;
++
++   -----------------------------------
++   -- pthread_mutexattr_getprotocol --
++   -----------------------------------
++
++   function pthread_mutexattr_getprotocol
++     (attr     : access pthread_mutexattr_t;
++      protocol : access int) return int is
++      pragma Unreferenced (attr, protocol);
++   begin
++      return 0;
++   end pthread_mutexattr_getprotocol;
++
++   --------------------------------------
++   -- pthread_mutexattr_setprioceiling --
++   --------------------------------------
++
++   function pthread_mutexattr_setprioceiling
++     (attr     : access pthread_mutexattr_t;
++      prioceiling : int) return int is
++      pragma Unreferenced (attr, prioceiling);
++   begin
++      return 0;
++   end pthread_mutexattr_setprioceiling;
++
++   --------------------------------------
++   -- pthread_mutexattr_getprioceiling --
++   --------------------------------------
++
++   function pthread_mutexattr_getprioceiling
++     (attr     : access pthread_mutexattr_t;
++      prioceiling : access int) return int is
++      pragma Unreferenced (attr, prioceiling);
++   begin
++      return 0;
++   end pthread_mutexattr_getprioceiling;
++
++   -----------------
++   -- To_Duration --
++   -----------------
++
++   function To_Duration (TS : timespec) return Duration is
++   begin
++      return Duration (TS.tv_sec) + Duration (TS.tv_nsec) / 10#1#E9;
++   end To_Duration;
++
++   ------------------------
++   -- To_Target_Priority --
++   ------------------------
++
++   function To_Target_Priority
++     (Prio : System.Any_Priority) return Interfaces.C.int
++   is
++   begin
++      return Interfaces.C.int (Prio);
++   end To_Target_Priority;
++
++   -----------------
++   -- To_Timespec --
++   -----------------
++
++   function To_Timespec (D : Duration) return timespec is
++      S : time_t;
++      F : Duration;
++
++   begin
++      S := time_t (Long_Long_Integer (D));
++      F := D - Duration (S);
++
++      --  If F has negative value due to a round-up, adjust for positive F
++      --  value.
++
++      if F < 0.0 then
++         S := S - 1;
++         F := F + 1.0;
++      end if;
++
++      return timespec'(tv_sec => S,
++                       tv_nsec => long (Long_Long_Integer (F * 10#1#E9)));
++   end To_Timespec;
++
++end System.OS_Interface;
+Index: b/src/gcc/ada/gcc-interface/Makefile.in
+===================================================================
+--- a/src/gcc/ada/gcc-interface/Makefile.in
++++ b/src/gcc/ada/gcc-interface/Makefile.in
+@@ -1366,7 +1366,7 @@ ifeq ($(strip $(filter-out %86 kfreebsd%
+   a-intnam.ads<a-intnam-freebsd.ads \
+   s-inmaop.adb<s-inmaop-posix.adb \
+   s-intman.adb<s-intman-posix.adb \
+-  s-osinte.adb<s-osinte-posix.adb \
++  s-osinte.adb<s-osinte-kfreebsd-gnu.adb \
+   s-osinte.ads<s-osinte-kfreebsd-gnu.ads \
+   s-osprim.adb<s-osprim-posix.adb \
+   s-taprop.adb<s-taprop-posix.adb \
+@@ -1426,7 +1426,7 @@ ifeq ($(strip $(filter-out x86_64 kfreeb
+   a-numaux.ads<a-numaux-x86.ads \
+   s-inmaop.adb<s-inmaop-posix.adb \
+   s-intman.adb<s-intman-posix.adb \
+-  s-osinte.adb<s-osinte-posix.adb \
++  s-osinte.adb<s-osinte-kfreebsd-gnu.adb \
+   s-osinte.ads<s-osinte-kfreebsd-gnu.ads \
+   s-osprim.adb<s-osprim-posix.adb \
+   s-taprop.adb<s-taprop-posix.adb \
+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
+@@ -45,6 +45,7 @@ package System.OS_Interface is
+    pragma Preelaborate;
+ 
+    pragma Linker_Options ("-lpthread");
++   pragma Linker_Options ("-lrt");
+ 
+    subtype int            is Interfaces.C.int;
+    subtype char           is Interfaces.C.char;
+@@ -206,9 +207,7 @@ package System.OS_Interface is
+    function nanosleep (rqtp, rmtp : access timespec) return int;
+    pragma Import (C, nanosleep, "nanosleep");
+ 
+-   type clockid_t is private;
+-
+-   CLOCK_REALTIME : constant clockid_t;
++   type clockid_t is new int;
+ 
+    function clock_gettime
+      (clock_id : clockid_t;
+@@ -216,6 +215,11 @@ package System.OS_Interface is
+       return int;
+    pragma Import (C, clock_gettime, "clock_gettime");
+ 
++   function clock_getres
++     (clock_id : clockid_t;
++      res      : access timespec) return int;
++   pragma Import (C, clock_getres, "clock_getres");
++
+    function To_Duration (TS : timespec) return Duration;
+    pragma Inline (To_Duration);
+ 
+@@ -437,31 +459,25 @@ package System.OS_Interface is
+    PTHREAD_PRIO_PROTECT : constant := 2;
+    PTHREAD_PRIO_INHERIT : constant := 1;
+ 
++   --  GNU/kFreeBSD does not support Thread Priority Protection or Thread
++   --  Priority Inheritance and lacks some pthread_mutexattr_* functions.
++   --  Replace them with dummy versions.
++
+    function pthread_mutexattr_setprotocol
+      (attr     : access pthread_mutexattr_t;
+       protocol : int) return int;
+-   pragma Import
+-      (C, pthread_mutexattr_setprotocol, "pthread_mutexattr_setprotocol");
+ 
+    function pthread_mutexattr_getprotocol
+      (attr     : access pthread_mutexattr_t;
+       protocol : access int) return int;
+-   pragma Import
+-     (C, pthread_mutexattr_getprotocol, "pthread_mutexattr_getprotocol");
+ 
+    function pthread_mutexattr_setprioceiling
+      (attr     : access pthread_mutexattr_t;
+       prioceiling : int) return int;
+-   pragma Import
+-     (C, pthread_mutexattr_setprioceiling,
+-      "pthread_mutexattr_setprioceiling");
+ 
+    function pthread_mutexattr_getprioceiling
+      (attr     : access pthread_mutexattr_t;
+       prioceiling : access int) return int;
+-   pragma Import
+-     (C, pthread_mutexattr_getprioceiling,
+-      "pthread_mutexattr_getprioceiling");
+ 
+    type struct_sched_param is record
+       sched_priority : int;  --  scheduling priority
+@@ -588,8 +604,8 @@ private
+    --  #define sa_handler __sigaction_u._handler
+    --  #define sa_sigaction __sigaction_u._sigaction
+ 
+-   --  Should we add a signal_context type here ?
+-   --  How could it be done independent of the CPU architecture ?
++   --  Should we add a signal_context type here ???
++   --  How could it be done independent of the CPU architecture ???
+    --  sigcontext type is opaque, so it is architecturally neutral.
+    --  It is always passed as an access type, so define it as an empty record
+    --  since the contents are not used anywhere.
+@@ -606,9 +622,6 @@ private
+    end record;
+    pragma Convention (C, timespec);
+ 
+-   type clockid_t is new int;
+-   CLOCK_REALTIME : constant clockid_t := 0;
+-
+    type pthread_attr_t is record
+       detachstate   : int;
+       schedpolicy   : int;
+Index: b/src/gcc/ada/gsocket.h
+===================================================================
+--- a/src/gcc/ada/gsocket.h
++++ b/src/gcc/ada/gsocket.h
+@@ -241,7 +241,7 @@
+ # endif
+ #endif
+ 
+-#if defined (__FreeBSD__) || defined (__vxworks) || defined(__rtems__)
++#if defined (__FreeBSD__) || defined (__FreeBSD_kernel__) || defined (__vxworks) || defined(__rtems__) || defined(__GNU__)
+ # define Has_Sockaddr_Len 1
+ #else
+ # define Has_Sockaddr_Len 0
+Index: b/src/gcc/ada/s-oscons-tmplt.c
+===================================================================
+--- a/src/gcc/ada/s-oscons-tmplt.c
++++ b/src/gcc/ada/s-oscons-tmplt.c
+@@ -1435,7 +1435,7 @@ CND(CLOCK_FASTEST, "Fastest clock")
+ #endif
+ CND(CLOCK_THREAD_CPUTIME_ID, "Thread CPU clock")
+ 
+-#if defined(__FreeBSD__) || (defined(_AIX) && defined(_AIXVERSION_530))
++#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || (defined(_AIX) && defined(_AIXVERSION_530))
+ /** On these platforms use system provided monotonic clock instead of
+  ** the default CLOCK_REALTIME. We then need to set up cond var attributes
+  ** appropriately (see thread.c).
diff --git a/debian/patches/ada-libgnatprj.diff b/debian/patches/ada-libgnatprj.diff
new file mode 100644
index 0000000..bebea15
--- /dev/null
+++ b/debian/patches/ada-libgnatprj.diff
@@ -0,0 +1,982 @@
+# DP: - Introduce a new shared library named libgnatprj, containing
+# DP:   the GNAT project file manager licensed under the pure GPL, for
+# DP:   use in GNAT tools, GLADE and GPS.  Link the GNAT tools against
+# DP:   this new library.
+
+# This patch seems large, but the hunks in Makefile.in are actually
+# generated from Makefile.def using autogen.
+
+# !!! Must be applied after ada-libgnatvsn.dpatch
+
+Index: b/src/gcc/ada/gcc-interface/config-lang.in
+===================================================================
+--- a/src/gcc/ada/gcc-interface/config-lang.in
++++ b/src/gcc/ada/gcc-interface/config-lang.in
+@@ -34,8 +34,8 @@ gtfiles="\$(srcdir)/ada/gcc-interface/ad
+ 
+ outputs="ada/gcc-interface/Makefile ada/Makefile"
+ 
+-target_libs="target-libada target-libgnatvsn"
+-lang_dirs="libada libgnatvsn gnattools"
++target_libs="target-libada target-libgnatvsn target-libgnatprj"
++lang_dirs="libada libgnatvsn libgnatprj gnattools"
+ 
+ # Ada is not enabled by default for the time being.
+ build_by_default=no
+Index: b/src/libgnatprj/Makefile.in
+===================================================================
+--- /dev/null
++++ b/src/libgnatprj/Makefile.in
+@@ -0,0 +1,180 @@
++# Makefile for libgnatprj.
++#   Copyright (c) 2006 Ludovic Brenta <ludovic at ludovic-brenta.org>
++#
++# This file 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 2 of the License, or
++# (at your option) any later version.
++# 
++# This program 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 program; if not, write to the Free Software
++# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
++
++# Default target; must be first.
++all: libgnatprj
++
++.SUFFIXES:
++
++CPUS := $(shell getconf _NPROCESSORS_ONLN)
++LIB_VERSION := $(strip $(shell grep ' Library_Version :' \
++                 @srcdir@/../gcc/ada/gnatvsn.ads | \
++	         sed -e 's/.*"\(.*\)".*/\1/'))
++GCC=$(CC)
++GPP=$(CXX)
++LIBGNAT_JUST_BUILT := -nostdinc -I../../gcc/ada/rts
++LIBGNATVSN := -I../libgnatvsn
++CFLAGS := -g -O2
++ADAFLAGS := -g -O2 -gnatn
++BASEVER := $(shell cat @srcdir@/../gcc/BASE-VER)
++DEVPHASE := $(shell cat @srcdir@/../gcc/DEV-PHASE)
++DATESTAMP := $(shell cat @srcdir@/../gcc/DATESTAMP)
++TOOLS_TARGET_PAIRS := @TOOLS_TARGET_PAIRS@
++LN_S := @LN_S@
++
++ifneq (@build@, at host@)
++   CFLAGS += -b @host@
++endif
++
++.PHONY: libgnatprj install
++libgnatprj: libgnatprj.so.$(LIB_VERSION) libgnatprj.a
++
++# Here we list one file per Ada unit: the body file if the unit has a
++# body, the spec file otherwise.
++PRJ_SOURCES := ali.adb ali-util.adb butil.adb binderr.adb errout.adb \
++erroutc.adb errutil.adb err_vars.ads fname-uf.adb fmap.adb impunit.adb \
++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-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
++
++SOURCES := $(PRJ_SOURCES) $(GENERATED_SOURCES)
++
++OBJECTS := $(patsubst %.ads,%.o,$(SOURCES:.adb=.o))
++
++# Add some object files compiled from C sources.  prefix.o requires
++# some objects from libiberty and from gcc.
++OBJECTS += common-targhooks.o errors.o hooks.o link.o prefix.o targetm.o
++
++# These object files have already been built, both PIC and non-PIC.
++# prefix.o depends on them.
++LIBIBERTY_OBJECTS := concat.o filename_cmp.o lrealpath.o safe-ctype.o xexit.o xmalloc.o xstrdup.o
++
++vpath %.c @srcdir@ @srcdir@/../gcc @srcdir@/../gcc/common @srcdir@/../gcc/ada
++
++libgnatprj.so.$(LIB_VERSION): $(addprefix obj-shared/,$(OBJECTS))
++	: # Make libgnatprj.so
++	$(GCC) -o $@ -shared -fPIC -Wl,--soname,$@ -Wl,--no-allow-shlib-undefined \
++	   $^ $(addprefix ../libiberty/pic/,$(LIBIBERTY_OBJECTS)) \
++	   -L../../gcc/ada/rts -lgnat-$(LIB_VERSION) \
++	   -L../libgnatvsn -lgnatvsn $(LDFLAGS)
++	$(LN_S) -f libgnatprj.so.$(LIB_VERSION) libgnatprj.so
++	chmod a=r obj-shared/*.ali
++# Make the .ali files, but not the .o files, visible to the gnat tools.
++	cp -lp obj-shared/*.ali .
++
++$(addprefix obj-shared/,$(OBJECTS)): | stamp-libgnatprj-sources obj-shared
++
++obj-shared/%.o: %.adb
++	$(GCC) -c -fPIC $(ADAFLAGS) $(LIBGNAT_JUST_BUILT) $(LIBGNATVSN) $< -o $@
++
++obj-shared/%.o: %.ads
++	$(GCC) -c -fPIC $(ADAFLAGS) $(LIBGNAT_JUST_BUILT) $(LIBGNATVSN) $< -o $@
++
++obj-shared/%.o: %.c
++	$(GPP) -c -fPIC $(CFLAGS) -DHAVE_CONFIG_H -DIN_GCC -pedantic \
++	   -I at srcdir@/../gcc -I at srcdir@/../include -I at srcdir@/../libcpp/include -I../../gcc \
++	   $< -o $@
++
++obj-shared/prefix.o: @srcdir@/../gcc/prefix.c
++	$(GPP) -c -fPIC $(CFLAGS) -DPREFIX=\"@prefix@\" -DBASEVER=\"$(BASEVER)\" \
++	   -I at srcdir@/../gcc -I at srcdir@/../include -I../../gcc -I at srcdir@/../libcpp/include \
++	   $< -o $@
++
++obj-shared:
++	-mkdir $@
++
++libgnatprj.a: $(addprefix obj-static/,$(OBJECTS))
++	: # Make libgnatprj.a
++	ar rc $@ $^ $(addprefix ../libiberty/,$(LIBIBERTY_OBJECTS))
++	ranlib $@
++
++$(addprefix obj-static/,$(OBJECTS)): | stamp-libgnatprj-sources obj-static
++
++obj-static/%.o: %.adb
++	$(GCC) -c $(ADAFLAGS) $(LIBGNAT_JUST_BUILT) $(LIBGNATVSN) $< -o $@
++
++obj-static/%.o: %.ads
++	$(GCC) -c $(ADAFLAGS) $(LIBGNAT_JUST_BUILT) $(LIBGNATVSN) $< -o $@
++
++obj-static/%.o: %.c
++	$(GPP) -c $(CFLAGS) -DHAVE_CONFIG_H -DIN_GCC -pedantic \
++	   -I at srcdir@/../gcc -I at srcdir@/../include -I at srcdir@/../libcpp/include -I../../gcc \
++	   $< -o $@
++
++obj-static/prefix.o: @srcdir@/../gcc/prefix.c
++	$(GPP) -c $(CFLAGS) -DPREFIX=\"@prefix@\" -DBASEVER=\"$(BASEVER)\" \
++	   -I at srcdir@/../gcc -I at srcdir@/../include -I../../gcc -I at srcdir@/../libcpp/include \
++	   $< -o $@
++
++obj-static:
++	-mkdir $@
++
++$(SOURCES): stamp-libgnatprj-sources
++
++stamp-libgnatprj-sources:
++	for file in $(PRJ_SOURCES); do \
++	   ads=$$(echo $$file | sed 's/\.adb/.ads/'); \
++	   if [ -f @srcdir@/../gcc/ada/$$file -a ! -L $$file ] ; then $(LN_S) @srcdir@/../gcc/ada/$$file .; fi; \
++	   if [ -f @srcdir@/../gcc/ada/$$ads -a ! -L $$ads ] ; then $(LN_S) @srcdir@/../gcc/ada/$$ads .; fi; \
++	done
++	for file in $(GENERATED_SOURCES); do \
++	   ads=$$(echo $$file | sed 's/\.adb/.ads/'); \
++	   if [ -f ../../gcc/ada/$$file -a ! -L $$file ] ; then $(LN_S) ../../gcc/ada/$$file .; fi; \
++	   if [ -f ../../gcc/ada/$$ads -a ! -L $$ads ] ; then $(LN_S) ../../gcc/ada/$$ads .; \
++	   else \
++	      if [ -f @srcdir@/../gcc/ada/$$ads -a ! -L $$ads ] ; then $(LN_S) @srcdir@/../gcc/ada/$$ads .; fi; \
++	   fi; \
++	done
++	$(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 $@
++
++# Generate a list of source files (.ads and .adb) to install.  Almost
++# all of them are in src/gcc/ada, but some are generated during build
++# and are in build/gcc/ada.
++BODIES := $(filter %.adb,$(PRJ_SOURCES))
++SPECS := $(filter %.ads,$(PRJ_SOURCES)) $(patsubst %.adb,%.ads,$(BODIES) $(GENERATED_SOURCES))
++SOURCES_TO_INSTALL := \
++$(addprefix  @srcdir@/../gcc/ada/,$(SPECS) $(BODIES)) \
++$(addprefix ../../gcc/ada/,$(GENERATED_SOURCES))
++
++libdir = @libdir@
++
++install: libgnatprj
++	$(INSTALL_DATA) libgnatprj.a $(DESTDIR)$(libdir)
++	$(INSTALL_DATA) libgnatprj.so.$(LIB_VERSION) $(DESTDIR)$(libdir)
++	cd $(DESTDIR)$(libdir); ln -sf libgnatprj.so.$(LIB_VERSION) libgnatprj.so
++	mkdir -p $(DESTDIR)$(prefix)/share/ada/adainclude/gnatprj
++	$(INSTALL_DATA) $(SOURCES_TO_INSTALL) \
++	   $(DESTDIR)$(prefix)/share/ada/adainclude/gnatprj
++	mkdir -p $(DESTDIR)$(prefix)/lib/ada/adalib/gnatprj
++	$(INSTALL) -m 0444 obj-shared/*.ali \
++	   $(DESTDIR)$(prefix)/lib/ada/adalib/gnatprj
++	chmod a=r $(DESTDIR)$(prefix)/lib/ada/adalib/gnatprj/*.ali
++
++.PHONY: clean
++clean:
++	rm -rf *.ali obj-static obj-shared libgnatprj* *.adb *.ads stamp*
+Index: b/src/libgnatprj/targetm.c
+===================================================================
+--- /dev/null
++++ b/src/libgnatprj/targetm.c
+@@ -0,0 +1,7 @@
++#include "config.h"
++#include "system.h"
++#include "coretypes.h"
++#include "common/common-target.h"
++#include "common/common-target-def.h"
++
++struct gcc_targetm_common targetm_common = TARGETM_COMMON_INITIALIZER;
+Index: b/src/Makefile.def
+===================================================================
+--- a/src/Makefile.def
++++ b/src/Makefile.def
+@@ -184,6 +184,13 @@ target_modules = { module= libgnatvsn; n
+ 		   missing= TAGS;
+ 		   missing= install-info;
+ 		   missing= installcheck; };
++target_modules = { module= libgnatprj; no_check=true;
++		   missing= info;
++		   missing= dvi;
++		   missing= html;
++		   missing= TAGS;
++		   missing= install-info;
++		   missing= installcheck; };
+ target_modules = { module= libgomp; bootstrap= true; lib_path=.libs; };
+ target_modules = { module= libitm; lib_path=.libs; };
+ target_modules = { module= libatomic; lib_path=.libs; };
+@@ -379,8 +386,12 @@ dependencies = { module=all-fixincludes;
+ dependencies = { module=all-target-libada; on=all-gcc; };
+ dependencies = { module=all-gnattools; on=all-target-libada; };
+ dependencies = { module=all-gnattools; on=all-target-libgnatvsn; };
++dependencies = { module=all-gnattools; on=all-target-libgnatprj; };
+ dependencies = { module=all-target-libgnatvsn; on=all-target-libada; };
++dependencies = { module=all-target-libgnatprj; on=all-target-libgnatvsn; };
++dependencies = { module=all-target-libgnatprj; on=all-target-libiberty; };
+ dependencies = { module=all-gnattools; on=all-target-libstdc++-v3; };
++dependencies = { module=all-target-libgnatvsn; on=all-target-libstdc++-v3; };
+ 
+ // Depending on the specific configuration, the LTO plugin will either use the
+ // generic libiberty build or the specific build for linker plugins.
+Index: b/src/configure.ac
+===================================================================
+--- a/src/configure.ac
++++ b/src/configure.ac
+@@ -177,6 +177,7 @@ target_libraries="target-libgcc \
+ 		target-libada \
+ 		${target_libiberty} \
+ 		target-libgnatvsn \
++		target-libgnatprj \
+ 		target-libgo"
+ 
+ # these tools are built using the target libraries, and are intended to
+@@ -446,7 +447,7 @@ AC_ARG_ENABLE(libada,
+ ENABLE_LIBADA=$enableval,
+ ENABLE_LIBADA=yes)
+ if test "${ENABLE_LIBADA}" != "yes" ; then
+-  noconfigdirs="$noconfigdirs target-libgnatvsn gnattools"
++  noconfigdirs="$noconfigdirs target-libgnatvsn target-libgnatprj gnattools"
+ fi
+ 
+ AC_ARG_ENABLE(libssp,
+Index: b/src/libgnatprj/configure.ac
+===================================================================
+--- /dev/null
++++ b/src/libgnatprj/configure.ac
+@@ -0,0 +1,146 @@
++# Configure script for libada.
++#   Copyright 2003, 2004 Free Software Foundation, Inc.
++#
++# This file 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 2 of the License, or
++# (at your option) any later version.
++#
++# This program 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 program; if not, write to the Free Software
++# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
++
++AC_INIT
++AC_PREREQ([2.63])
++
++AC_CONFIG_SRCDIR([Makefile.in])
++
++# Start of actual configure tests
++
++AC_PROG_INSTALL
++
++AC_CANONICAL_BUILD
++AC_CANONICAL_HOST
++AC_CANONICAL_TARGET
++
++sinclude(../config/acx.m4)
++ACX_NONCANONICAL_TARGET
++
++# Need to pass this down for now :-P
++AC_PROG_LN_S
++
++# Determine x_ada_cflags
++case $host in
++  hppa*) x_ada_cflags=-mdisable-indexing ;;
++  *) x_ada_cflags= ;;
++esac
++AC_SUBST([x_ada_cflags])
++
++# Determine what to build for 'gnattools'
++if test $build = $target ; then
++  # Note that build=target is almost certainly the wrong test; FIXME
++  default_gnattools_target="gnattools-native"
++else
++  default_gnattools_target="gnattools-cross"
++fi
++AC_SUBST([default_gnattools_target])
++
++# Target-specific stuff (defaults)
++TOOLS_TARGET_PAIRS=
++AC_SUBST(TOOLS_TARGET_PAIRS)
++
++# Per-target case statement
++# ---/----------------------
++case "${target}" in
++  alpha*-dec-vx*) # Unlike all other Vxworks
++    ;;
++  m68k*-wrs-vx* \
++  | powerpc*-wrs-vxworks \
++  | sparc*-wrs-vx* \
++  | *86-wrs-vxworks \
++  | xscale*-wrs-vx* \
++  | xscale*-wrs-coff \
++  | mips*-wrs-vx*)
++    TOOLS_TARGET_PAIRS="mlib-tgt-specific.adb<mlib-tgt-specific-vxworks.adb"
++    ;;
++  sparc-sun-solaris*)
++    TOOLS_TARGET_PAIRS="mlib-tgt-specific.adb<mlib-tgt-specific-solaris.adb"
++    ;;
++  *86-*-solaris2*)
++    TOOLS_TARGET_PAIRS="mlib-tgt-specific.adb<mlib-tgt-specific-solaris.adb"
++    ;;
++  *86-*-linux* \
++  | aarch64*-*-linux* \
++  | arm*-*-linux* \
++  | powerpc*-*-linux* \
++  | *ia64-*-linux* \
++  | alpha*-*-linux* \
++  | 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<mlib-tgt-specific-linux.adb"
++    ;;
++  s390*-*-linux*)
++    TOOLS_TARGET_PAIRS="mlib-tgt-specific.adb<mlib-tgt-specific-linux.adb"
++    ;;
++  *86-*-freebsd*)
++    TOOLS_TARGET_PAIRS="\
++    mlib-tgt-specific.adb<mlib-tgt-specific-linux.adb"
++    ;;
++  mips-sgi-irix*)
++    TOOLS_TARGET_PAIRS="mlib-tgt-specific.adb<mlib-tgt-specific-irix.adb"
++    ;;
++  hppa*-hp-hpux10*) # Unlike hpux11
++    ;;
++  hppa*-hp-hpux11*)
++    TOOLS_TARGET_PAIRS="mlib-tgt-specific.adb<mlib-tgt-specific-hpux.adb"
++    ;;
++  *-ibm-aix*)
++    TOOLS_TARGET_PAIRS="\
++    mlib-tgt-specific.adb<mlib-tgt-specific-aix.adb"
++    ;;
++  alpha*-dec-osf*)
++    TOOLS_TARGET_PAIRS="mlib-tgt-specific.adb<mlib-tgt-specific-tru64.adb"
++    ;;
++  alpha*-dec-vms* | alpha*-dec-openvms* | alpha*-dec-vms* \
++  | alpha*-hp-vms* | alpha*-hp-openvms* | alpha*-hp-vms*)
++    TOOLS_TARGET_PAIRS="\
++    mlib-tgt-specific.adb<mlib-tgt-specific-vms-alpha.adb \
++    symbols.adb<symbols-vms.adb \
++    symbols-processing.adb<symbols-processing-vms-alpha.adb"
++    ;;
++  ia64*-dec-vms* | ia64*-dec-openvms* | ia64*-dec-vms* \
++  | ia64*-hp-vms* | ia64*-hp-openvms* | ia64*-hp-vms*)
++    TOOLS_TARGET_PAIRS="\
++    mlib-tgt-specific.adb<mlib-tgt-vms-ia64.adb \
++    symbols.adb<symbols-vms.adb \
++    symbols-processing.adb<symbols-processing-vms-ia64.adb"
++    ;;
++  *-*-cygwin32* | *-*-mingw32* | *-*-pe)
++    TOOLS_TARGET_PAIRS="\
++    mlib-tgt-specific.adb<mlib-tgt-specific-mingw.adb"
++    ;;
++  powerpc-*-darwin*)
++    TOOLS_TARGET_PAIRS="mlib-tgt-specific.adb<mlib-tgt-specific-darwin.adb"
++    ;;
++  *-*-lynxos)
++    TOOLS_TARGET_PAIRS="\
++    mlib-tgt-specific.adb<mlib-tgt-specific-lynxos.adb"
++    ;;
++esac
++
++# Output: create a Makefile.
++AC_CONFIG_FILES([Makefile])
++
++AC_OUTPUT
+Index: b/src/Makefile.in
+===================================================================
+--- a/src/Makefile.in
++++ b/src/Makefile.in
+@@ -965,6 +965,7 @@ configure-target:  \
+     maybe-configure-target-rda \
+     maybe-configure-target-libada \
+     maybe-configure-target-libgnatvsn \
++    maybe-configure-target-libgnatprj \
+     maybe-configure-target-libgomp \
+     maybe-configure-target-libitm \
+     maybe-configure-target-libatomic
+@@ -1132,6 +1133,7 @@ all-target: maybe-all-target-boehm-gc
+ all-target: maybe-all-target-rda
+ all-target: maybe-all-target-libada
+ all-target: maybe-all-target-libgnatvsn
++all-target: maybe-all-target-libgnatprj
+ @if target-libgomp-no-bootstrap
+ all-target: maybe-all-target-libgomp
+ @endif target-libgomp-no-bootstrap
+@@ -1228,6 +1230,7 @@ info-target: maybe-info-target-boehm-gc
+ 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
+ info-target: maybe-info-target-libitm
+ info-target: maybe-info-target-libatomic
+@@ -1317,6 +1320,7 @@ dvi-target: maybe-dvi-target-boehm-gc
+ 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
+ dvi-target: maybe-dvi-target-libitm
+ dvi-target: maybe-dvi-target-libatomic
+@@ -1406,6 +1410,7 @@ pdf-target: maybe-pdf-target-boehm-gc
+ 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
+ pdf-target: maybe-pdf-target-libitm
+ pdf-target: maybe-pdf-target-libatomic
+@@ -1495,6 +1500,7 @@ html-target: maybe-html-target-boehm-gc
+ 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
+ html-target: maybe-html-target-libitm
+ html-target: maybe-html-target-libatomic
+@@ -1584,6 +1590,7 @@ TAGS-target: maybe-TAGS-target-boehm-gc
+ 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
+ TAGS-target: maybe-TAGS-target-libitm
+ TAGS-target: maybe-TAGS-target-libatomic
+@@ -1673,6 +1680,7 @@ install-info-target: maybe-install-info-
+ 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
+ install-info-target: maybe-install-info-target-libitm
+ install-info-target: maybe-install-info-target-libatomic
+@@ -1762,6 +1770,7 @@ install-pdf-target: maybe-install-pdf-ta
+ 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
+ install-pdf-target: maybe-install-pdf-target-libitm
+ install-pdf-target: maybe-install-pdf-target-libatomic
+@@ -1851,6 +1860,7 @@ install-html-target: maybe-install-html-
+ 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
+ install-html-target: maybe-install-html-target-libitm
+ install-html-target: maybe-install-html-target-libatomic
+@@ -1940,6 +1950,7 @@ installcheck-target: maybe-installcheck-
+ 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
+ installcheck-target: maybe-installcheck-target-libitm
+ installcheck-target: maybe-installcheck-target-libatomic
+@@ -2029,6 +2040,7 @@ mostlyclean-target: maybe-mostlyclean-ta
+ 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
+ mostlyclean-target: maybe-mostlyclean-target-libitm
+ mostlyclean-target: maybe-mostlyclean-target-libatomic
+@@ -2118,6 +2130,7 @@ clean-target: maybe-clean-target-boehm-g
+ 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
+ clean-target: maybe-clean-target-libitm
+ clean-target: maybe-clean-target-libatomic
+@@ -2207,6 +2220,7 @@ distclean-target: maybe-distclean-target
+ 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
+ distclean-target: maybe-distclean-target-libitm
+ distclean-target: maybe-distclean-target-libatomic
+@@ -2296,6 +2310,7 @@ maintainer-clean-target: maybe-maintaine
+ 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
+ maintainer-clean-target: maybe-maintainer-clean-target-libitm
+ maintainer-clean-target: maybe-maintainer-clean-target-libatomic
+@@ -2440,6 +2455,7 @@ check-target:  \
+     maybe-check-target-rda \
+     maybe-check-target-libada \
+     maybe-check-target-libgnatvsn \
++    maybe-check-target-libgnatprj \
+     maybe-check-target-libgomp \
+     maybe-check-target-libitm \
+     maybe-check-target-libatomic
+@@ -2616,6 +2632,7 @@ install-target:  \
+     maybe-install-target-rda \
+     maybe-install-target-libada \
+     maybe-install-target-libgnatvsn \
++    maybe-install-target-libgnatprj \
+     maybe-install-target-libgomp \
+     maybe-install-target-libitm \
+     maybe-install-target-libatomic
+@@ -2725,6 +2742,7 @@ install-strip-target:  \
+     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 \
+     maybe-install-strip-target-libitm \
+     maybe-install-strip-target-libatomic
+@@ -45988,6 +46006,362 @@ maintainer-clean-target-libgnatvsn:
+ 
+ 
+ 
++.PHONY: configure-target-libgnatprj maybe-configure-target-libgnatprj
++maybe-configure-target-libgnatprj:
++ at if gcc-bootstrap
++configure-target-libgnatprj: stage_current
++ at endif gcc-bootstrap
++ at if target-libgnatprj
++maybe-configure-target-libgnatprj: configure-target-libgnatprj
++configure-target-libgnatprj: 
++	@: $(MAKE); $(unstage)
++	@r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	echo "Checking multilib configuration for libgnatprj..."; \
++	$(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libgnatprj ; \
++	$(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libgnatprj/multilib.tmp 2> /dev/null ; \
++	if test -r $(TARGET_SUBDIR)/libgnatprj/multilib.out; then \
++	  if cmp -s $(TARGET_SUBDIR)/libgnatprj/multilib.tmp $(TARGET_SUBDIR)/libgnatprj/multilib.out; then \
++	    rm -f $(TARGET_SUBDIR)/libgnatprj/multilib.tmp; \
++	  else \
++	    rm -f $(TARGET_SUBDIR)/libgnatprj/Makefile; \
++	    mv $(TARGET_SUBDIR)/libgnatprj/multilib.tmp $(TARGET_SUBDIR)/libgnatprj/multilib.out; \
++	  fi; \
++	else \
++	  mv $(TARGET_SUBDIR)/libgnatprj/multilib.tmp $(TARGET_SUBDIR)/libgnatprj/multilib.out; \
++	fi; \
++	test ! -f $(TARGET_SUBDIR)/libgnatprj/Makefile || exit 0; \
++	$(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libgnatprj ; \
++	$(NORMAL_TARGET_EXPORTS)  \
++	echo Configuring in $(TARGET_SUBDIR)/libgnatprj; \
++	cd "$(TARGET_SUBDIR)/libgnatprj" || exit 1; \
++	case $(srcdir) in \
++	  /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \
++	  *) topdir=`echo $(TARGET_SUBDIR)/libgnatprj/ | \
++		sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \
++	esac; \
++	module_srcdir=libgnatprj; \
++	rm -f no-such-file || : ; \
++	CONFIG_SITE=no-such-file $(SHELL) \
++	  $$s/$$module_srcdir/configure \
++	  --srcdir=$${topdir}/$$module_srcdir \
++	  $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \
++	  --target=${target_alias}  \
++	  || exit 1
++ at endif target-libgnatprj
++
++
++
++
++
++.PHONY: all-target-libgnatprj maybe-all-target-libgnatprj
++maybe-all-target-libgnatprj:
++ at if gcc-bootstrap
++all-target-libgnatprj: stage_current
++ at endif gcc-bootstrap
++ at if target-libgnatprj
++TARGET-target-libgnatprj=all
++maybe-all-target-libgnatprj: all-target-libgnatprj
++all-target-libgnatprj: configure-target-libgnatprj
++	@: $(MAKE); $(unstage)
++	@r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(NORMAL_TARGET_EXPORTS)  \
++	(cd $(TARGET_SUBDIR)/libgnatprj && \
++	  $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS)   \
++		$(TARGET-target-libgnatprj))
++ at endif target-libgnatprj
++
++
++
++
++
++.PHONY: check-target-libgnatprj maybe-check-target-libgnatprj
++maybe-check-target-libgnatprj:
++ at if target-libgnatprj
++maybe-check-target-libgnatprj: check-target-libgnatprj
++
++# Dummy target for uncheckable module.
++check-target-libgnatprj:
++
++ at endif target-libgnatprj
++
++.PHONY: install-target-libgnatprj maybe-install-target-libgnatprj
++maybe-install-target-libgnatprj:
++ at if target-libgnatprj
++maybe-install-target-libgnatprj: install-target-libgnatprj
++
++install-target-libgnatprj: installdirs
++	@: $(MAKE); $(unstage)
++	@r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(NORMAL_TARGET_EXPORTS) \
++	(cd $(TARGET_SUBDIR)/libgnatprj && \
++	  $(MAKE) $(TARGET_FLAGS_TO_PASS)  install)
++
++ at endif target-libgnatprj
++
++.PHONY: install-strip-target-libgnatprj maybe-install-strip-target-libgnatprj
++maybe-install-strip-target-libgnatprj:
++ at if target-libgnatprj
++maybe-install-strip-target-libgnatprj: install-strip-target-libgnatprj
++
++install-strip-target-libgnatprj: installdirs
++	@: $(MAKE); $(unstage)
++	@r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(NORMAL_TARGET_EXPORTS) \
++	(cd $(TARGET_SUBDIR)/libgnatprj && \
++	  $(MAKE) $(TARGET_FLAGS_TO_PASS)  install-strip)
++
++ at endif target-libgnatprj
++
++# Other targets (info, dvi, pdf, etc.)
++
++.PHONY: maybe-info-target-libgnatprj info-target-libgnatprj
++maybe-info-target-libgnatprj:
++ at if target-libgnatprj
++maybe-info-target-libgnatprj: info-target-libgnatprj
++
++# libgnatprj doesn't support info.
++info-target-libgnatprj:
++
++ at endif target-libgnatprj
++
++.PHONY: maybe-dvi-target-libgnatprj dvi-target-libgnatprj
++maybe-dvi-target-libgnatprj:
++ at if target-libgnatprj
++maybe-dvi-target-libgnatprj: dvi-target-libgnatprj
++
++# libgnatprj doesn't support dvi.
++dvi-target-libgnatprj:
++
++ at endif target-libgnatprj
++
++.PHONY: maybe-pdf-target-libgnatprj pdf-target-libgnatprj
++maybe-pdf-target-libgnatprj:
++ at if target-libgnatprj
++maybe-pdf-target-libgnatprj: pdf-target-libgnatprj
++
++pdf-target-libgnatprj: \
++    configure-target-libgnatprj 
++	@: $(MAKE); $(unstage)
++	@[ -f $(TARGET_SUBDIR)/libgnatprj/Makefile ] || exit 0 ; \
++	r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(NORMAL_TARGET_EXPORTS) \
++	echo "Doing pdf in $(TARGET_SUBDIR)/libgnatprj" ; \
++	for flag in $(EXTRA_TARGET_FLAGS); do \
++	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
++	done; \
++	(cd $(TARGET_SUBDIR)/libgnatprj && \
++	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
++	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
++	          "RANLIB=$${RANLIB}" \
++	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
++	           pdf) \
++	  || exit 1
++
++ at endif target-libgnatprj
++
++.PHONY: maybe-html-target-libgnatprj html-target-libgnatprj
++maybe-html-target-libgnatprj:
++ at if target-libgnatprj
++maybe-html-target-libgnatprj: html-target-libgnatprj
++
++# libgnatprj doesn't support html.
++html-target-libgnatprj:
++
++ at endif target-libgnatprj
++
++.PHONY: maybe-TAGS-target-libgnatprj TAGS-target-libgnatprj
++maybe-TAGS-target-libgnatprj:
++ at if target-libgnatprj
++maybe-TAGS-target-libgnatprj: TAGS-target-libgnatprj
++
++# libgnatprj doesn't support TAGS.
++TAGS-target-libgnatprj:
++
++ at endif target-libgnatprj
++
++.PHONY: maybe-install-info-target-libgnatprj install-info-target-libgnatprj
++maybe-install-info-target-libgnatprj:
++ at if target-libgnatprj
++maybe-install-info-target-libgnatprj: install-info-target-libgnatprj
++
++# libgnatprj doesn't support install-info.
++install-info-target-libgnatprj:
++
++ at endif target-libgnatprj
++
++.PHONY: maybe-install-pdf-target-libgnatprj install-pdf-target-libgnatprj
++maybe-install-pdf-target-libgnatprj:
++ at if target-libgnatprj
++maybe-install-pdf-target-libgnatprj: install-pdf-target-libgnatprj
++
++install-pdf-target-libgnatprj: \
++    configure-target-libgnatprj \
++    pdf-target-libgnatprj 
++	@: $(MAKE); $(unstage)
++	@[ -f $(TARGET_SUBDIR)/libgnatprj/Makefile ] || exit 0 ; \
++	r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(NORMAL_TARGET_EXPORTS) \
++	echo "Doing install-pdf in $(TARGET_SUBDIR)/libgnatprj" ; \
++	for flag in $(EXTRA_TARGET_FLAGS); do \
++	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
++	done; \
++	(cd $(TARGET_SUBDIR)/libgnatprj && \
++	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
++	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
++	          "RANLIB=$${RANLIB}" \
++	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
++	           install-pdf) \
++	  || exit 1
++
++ at endif target-libgnatprj
++
++.PHONY: maybe-install-html-target-libgnatprj install-html-target-libgnatprj
++maybe-install-html-target-libgnatprj:
++ at if target-libgnatprj
++maybe-install-html-target-libgnatprj: install-html-target-libgnatprj
++
++install-html-target-libgnatprj: \
++    configure-target-libgnatprj \
++    html-target-libgnatprj 
++	@: $(MAKE); $(unstage)
++	@[ -f $(TARGET_SUBDIR)/libgnatprj/Makefile ] || exit 0 ; \
++	r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(NORMAL_TARGET_EXPORTS) \
++	echo "Doing install-html in $(TARGET_SUBDIR)/libgnatprj" ; \
++	for flag in $(EXTRA_TARGET_FLAGS); do \
++	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
++	done; \
++	(cd $(TARGET_SUBDIR)/libgnatprj && \
++	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
++	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
++	          "RANLIB=$${RANLIB}" \
++	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
++	           install-html) \
++	  || exit 1
++
++ at endif target-libgnatprj
++
++.PHONY: maybe-installcheck-target-libgnatprj installcheck-target-libgnatprj
++maybe-installcheck-target-libgnatprj:
++ at if target-libgnatprj
++maybe-installcheck-target-libgnatprj: installcheck-target-libgnatprj
++
++# libgnatprj doesn't support installcheck.
++installcheck-target-libgnatprj:
++
++ at endif target-libgnatprj
++
++.PHONY: maybe-mostlyclean-target-libgnatprj mostlyclean-target-libgnatprj
++maybe-mostlyclean-target-libgnatprj:
++ at if target-libgnatprj
++maybe-mostlyclean-target-libgnatprj: mostlyclean-target-libgnatprj
++
++mostlyclean-target-libgnatprj: 
++	@: $(MAKE); $(unstage)
++	@[ -f $(TARGET_SUBDIR)/libgnatprj/Makefile ] || exit 0 ; \
++	r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(NORMAL_TARGET_EXPORTS) \
++	echo "Doing mostlyclean in $(TARGET_SUBDIR)/libgnatprj" ; \
++	for flag in $(EXTRA_TARGET_FLAGS); do \
++	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
++	done; \
++	(cd $(TARGET_SUBDIR)/libgnatprj && \
++	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
++	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
++	          "RANLIB=$${RANLIB}" \
++	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
++	           mostlyclean) \
++	  || exit 1
++
++ at endif target-libgnatprj
++
++.PHONY: maybe-clean-target-libgnatprj clean-target-libgnatprj
++maybe-clean-target-libgnatprj:
++ at if target-libgnatprj
++maybe-clean-target-libgnatprj: clean-target-libgnatprj
++
++clean-target-libgnatprj: 
++	@: $(MAKE); $(unstage)
++	@[ -f $(TARGET_SUBDIR)/libgnatprj/Makefile ] || exit 0 ; \
++	r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(NORMAL_TARGET_EXPORTS) \
++	echo "Doing clean in $(TARGET_SUBDIR)/libgnatprj" ; \
++	for flag in $(EXTRA_TARGET_FLAGS); do \
++	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
++	done; \
++	(cd $(TARGET_SUBDIR)/libgnatprj && \
++	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
++	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
++	          "RANLIB=$${RANLIB}" \
++	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
++	           clean) \
++	  || exit 1
++
++ at endif target-libgnatprj
++
++.PHONY: maybe-distclean-target-libgnatprj distclean-target-libgnatprj
++maybe-distclean-target-libgnatprj:
++ at if target-libgnatprj
++maybe-distclean-target-libgnatprj: distclean-target-libgnatprj
++
++distclean-target-libgnatprj: 
++	@: $(MAKE); $(unstage)
++	@[ -f $(TARGET_SUBDIR)/libgnatprj/Makefile ] || exit 0 ; \
++	r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(NORMAL_TARGET_EXPORTS) \
++	echo "Doing distclean in $(TARGET_SUBDIR)/libgnatprj" ; \
++	for flag in $(EXTRA_TARGET_FLAGS); do \
++	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
++	done; \
++	(cd $(TARGET_SUBDIR)/libgnatprj && \
++	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
++	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
++	          "RANLIB=$${RANLIB}" \
++	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
++	           distclean) \
++	  || exit 1
++
++ at endif target-libgnatprj
++
++.PHONY: maybe-maintainer-clean-target-libgnatprj maintainer-clean-target-libgnatprj
++maybe-maintainer-clean-target-libgnatprj:
++ at if target-libgnatprj
++maybe-maintainer-clean-target-libgnatprj: maintainer-clean-target-libgnatprj
++
++maintainer-clean-target-libgnatprj: 
++	@: $(MAKE); $(unstage)
++	@[ -f $(TARGET_SUBDIR)/libgnatprj/Makefile ] || exit 0 ; \
++	r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(NORMAL_TARGET_EXPORTS) \
++	echo "Doing maintainer-clean in $(TARGET_SUBDIR)/libgnatprj" ; \
++	for flag in $(EXTRA_TARGET_FLAGS); do \
++	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
++	done; \
++	(cd $(TARGET_SUBDIR)/libgnatprj && \
++	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
++	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
++	          "RANLIB=$${RANLIB}" \
++	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
++	           maintainer-clean) \
++	  || exit 1
++
++ at endif target-libgnatprj
++
++
++
++
++
+ .PHONY: configure-target-libgomp maybe-configure-target-libgomp
+ maybe-configure-target-libgomp:
+ @if gcc-bootstrap
+@@ -50123,6 +50497,7 @@ configure-target-boehm-gc: stage_last
+ configure-target-rda: stage_last
+ configure-target-libada: stage_last
+ configure-target-libgnatvsn: stage_last
++configure-target-libgnatprj: stage_last
+ configure-stage1-target-libgomp: maybe-all-stage1-gcc
+ configure-stage2-target-libgomp: maybe-all-stage2-gcc
+ configure-stage3-target-libgomp: maybe-all-stage3-gcc
+@@ -50159,6 +50534,7 @@ configure-target-boehm-gc: maybe-all-gcc
+ 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
+ configure-target-libitm: maybe-all-gcc
+ configure-target-libatomic: maybe-all-gcc
+@@ -50501,8 +50877,12 @@ all-stagefeedback-fixincludes: maybe-all
+ all-target-libada: maybe-all-gcc
+ all-gnattools: maybe-all-target-libada
+ all-gnattools: maybe-all-target-libgnatvsn
++all-gnattools: maybe-all-target-libgnatprj
+ all-target-libgnatvsn: maybe-all-target-libada
++all-target-libgnatprj: maybe-all-target-libgnatvsn
++all-target-libgnatprj: maybe-all-target-libiberty
+ all-gnattools: maybe-all-target-libstdc++-v3
++all-target-libgnatvsn: maybe-all-target-libstdc++-v3
+ all-lto-plugin: maybe-all-libiberty
+ 
+ all-stage1-lto-plugin: maybe-all-stage1-libiberty
+@@ -51074,6 +51454,7 @@ configure-target-boehm-gc: maybe-all-tar
+ 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
+ configure-target-libitm: maybe-all-target-libgcc
+ configure-target-libatomic: maybe-all-target-libgcc
+@@ -51130,6 +51511,8 @@ configure-target-libada: maybe-all-targe
+ 
+ configure-target-libgnatvsn: maybe-all-target-newlib maybe-all-target-libgloss
+ 
++configure-target-libgnatprj: maybe-all-target-newlib maybe-all-target-libgloss
++
+ configure-target-libgomp: maybe-all-target-newlib maybe-all-target-libgloss
+ 
+ configure-target-libitm: maybe-all-target-newlib maybe-all-target-libgloss
diff --git a/debian/patches/ada-libgnatvsn.diff b/debian/patches/ada-libgnatvsn.diff
new file mode 100644
index 0000000..44b8b82
--- /dev/null
+++ b/debian/patches/ada-libgnatvsn.diff
@@ -0,0 +1,836 @@
+# DP: - Introduce a new shared library named libgnatvsn, containing
+# DP:   common components of GNAT under the GNAT-Modified GPL, for
+# DP:   use in GNAT tools, ASIS, GLADE and GPS.   Link the gnat tools
+# DP:   against this new library.
+
+# This patch seems large, but the hunks in Makefile.in are actually
+# generated from Makefile.def using autogen.
+
+# !!! Must be applied after ada-link-lib.dpatch
+
+Index: b/src/libgnatvsn/configure
+===================================================================
+--- /dev/null
++++ b/src/libgnatvsn/configure
+@@ -0,0 +1,47 @@
++#!/bin/sh
++
++# Minimal configure script for libgnatvsn.  We're only interested in
++# a few parameters.
++
++for arg in $*; do
++    case ${arg} in
++	--build=*)
++	    build=`expr ${arg} : '--build=\(.\+\)'`;;
++	--host=*)
++	    host=`expr ${arg} : '--host=\(.\+\)'`;;
++	--target=*)
++	    target=`expr ${arg} : '--target=\(.\+\)'`;;
++	--prefix=*)
++	    prefix=`expr ${arg} : '--prefix=\(.\+\)'`;;
++	--srcdir=*)
++	    srcdir=`expr ${arg} : '--srcdir=\(.\+\)'`;;
++	--libdir=*)
++	    libdir=`expr ${arg} : '--libdir=\(.\+\)'`;;
++	--with-pkgversion=*)
++	    pkgversion=`expr ${arg} : '--with-pkgversion=\(.\+\)'`;;
++	--with-bugurl=*)
++	    bugurl=`expr ${arg} : '--with-bugurl=\(.\+\)'`;;
++	*)
++	    echo "Warning: ignoring option: ${arg}"
++    esac
++done
++
++echo "build: ${build}" | tee config.log
++echo "host: ${host}" | tee -a config.log
++echo "target: ${target}" | tee -a config.log
++echo "prefix: ${prefix}" | tee -a config.log
++echo "srcdir: ${srcdir}" | tee -a config.log
++echo "libdir: ${libdir}" | tee -a config.log
++echo "pkgversion: ${pkgversion}" | tee -a config.log
++echo "bugurl: ${bugurl}" | tee -a config.log
++
++echo "Creating Makefile..." | tee -a config.log
++sed -e "s, at build@,${build},g" \
++    -e "s, at host@,${host},g" \
++    -e "s, at target@,${target},g" \
++    -e "s, at prefix@,${prefix},g" \
++    -e "s, at srcdir@,${srcdir},g" \
++    -e "s, at libdir@,${libdir},g" \
++    -e "s, at PKGVERSION@,${pkgversion},g" \
++    -e "s, at REPORT_BUGS_TO@,${bugurl},g" \
++    < ${srcdir}/Makefile.in > Makefile
+Index: b/src/libgnatvsn/Makefile.in
+===================================================================
+--- /dev/null
++++ b/src/libgnatvsn/Makefile.in
+@@ -0,0 +1,153 @@
++# Makefile for libgnatvsn.
++#   Copyright (c) 2006 Ludovic Brenta <ludovic at ludovic-brenta.org>
++#
++# This file 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 2 of the License, or
++# (at your option) any later version.
++# 
++# This program 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 program; if not, write to the Free Software
++# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
++
++# Default target; must be first.
++all: libgnatvsn
++
++.SUFFIXES:
++
++CPUS := $(shell getconf _NPROCESSORS_ONLN)
++LIB_VERSION := $(strip $(shell grep ' Library_Version :' \
++                 @srcdir@/../gcc/ada/gnatvsn.ads | \
++	         sed -e 's/.*"\(.*\)".*/\1/'))
++GCC:=$(CC)
++LIBGNAT_JUST_BUILT := -nostdinc -I../../gcc/ada/rts
++CFLAGS := -g -O2 -gnatn
++FULLVER := $(shell cat @srcdir@/../gcc/FULL-VER)
++DEVPHASE := $(shell cat @srcdir@/../gcc/DEV-PHASE)
++DATESTAMP := $(shell cat @srcdir@/../gcc/DATESTAMP)
++
++# For use in version.c - double quoted strings, with appropriate
++# surrounding punctuation and spaces, and with the datestamp and
++# development phase collapsed to the empty string in release mode
++# (i.e. if DEVPHASE_c is empty).  The space immediately after the
++# comma in the $(if ...) constructs is significant - do not remove it.
++FULLVER_s   := "\"$(FULLVER)\""
++DEVPHASE_s  := "\"$(if $(DEVPHASE), ($(DEVPHASE)))\""
++DATESTAMP_s := "\"$(if $(DEVPHASE), $(DATESTAMP))\""
++PKGVERSION_s:= "\"@PKGVERSION@\""
++BUGURL_s    := "\"@REPORT_BUGS_TO@\""
++
++.PHONY: libgnatvsn install
++libgnatvsn: libgnatvsn.so.$(LIB_VERSION) libgnatvsn.a
++
++VSN_SOURCES := alloc.ads aspects.adb atree.adb casing.adb csets.adb debug.adb einfo.adb \
++elists.adb fname.adb gnatvsn.adb hostparm.ads krunch.adb lib.adb namet.adb \
++nlists.adb opt.adb output.adb repinfo.adb scans.adb sinfo.adb sem_aux.adb \
++sinput.adb stand.adb stringt.adb table.adb tree_in.adb tree_io.adb types.adb \
++uintp.adb uname.adb urealp.adb widechar.adb
++
++VSN_SEPARATES := lib-list.adb lib-sort.adb
++
++VSN_GENERATED_SOURCES := snames.adb
++
++OBJECTS=$(patsubst %.ads,%.o,$(VSN_SOURCES:.adb=.o) $(VSN_GENERATED_SOURCES:.adb=.o)) version.o
++
++vpath %.c @srcdir@/../gcc
++
++libgnatvsn.so.$(LIB_VERSION): $(addprefix obj-shared/,$(OBJECTS))
++	: # Make libgnatvsn.so
++	$(GCC) -o $@ -shared -fPIC -Wl,--soname,$@ $^ \
++	   -L../../gcc/ada/rts -lgnat-$(LIB_VERSION) $(LDFLAGS)
++	ln -s libgnatvsn.so.$(LIB_VERSION) libgnatvsn.so
++	chmod a=r obj-shared/*.ali
++# Make the .ali files, but not the .o files, visible to the gnat tools.
++	cp -lp obj-shared/*.ali .
++
++$(addprefix obj-shared/,$(OBJECTS)): | stamp-libgnatvsn-sources obj-shared
++
++obj-shared/%.o: %.adb
++	$(GCC) -c -fPIC $(CFLAGS) $(LIBGNAT_JUST_BUILT) $< -o $@
++
++obj-shared/%.o: %.ads
++	$(GCC) -c -fPIC $(CFLAGS) $(LIBGNAT_JUST_BUILT) $< -o $@
++
++obj-shared/version.o: version.c
++	$(GCC) -c -fPIC -g -O2 \
++	   -DBASEVER=$(FULLVER_s) \
++	   -DDATESTAMP=$(DATESTAMP_s) \
++	   -DDEVPHASE=$(DEVPHASE_s) \
++	   -DPKGVERSION=$(PKGVERSION_s) \
++	   -DBUGURL=$(BUGURL_s) \
++	   -DREVISION= \
++	   $(realpath $<) -o $@
++
++obj-shared:
++	-mkdir $@
++
++libgnatvsn.a: $(addprefix obj-static/,$(OBJECTS))
++	: # Make libgnatvsn.a
++	ar rc $@ $^
++	ranlib $@
++
++$(addprefix obj-static/,$(OBJECTS)): | stamp-libgnatvsn-sources obj-static
++
++obj-static/%.o: %.adb
++	$(GCC) -c $(CFLAGS) $(LIBGNAT_JUST_BUILT) $< -o $@
++
++obj-static/%.o: %.ads
++	$(GCC) -c $(CFLAGS) $(LIBGNAT_JUST_BUILT) $< -o $@
++
++obj-static/version.o: version.c
++	$(GCC) -c -g -O2 \
++	   -DBASEVER=$(FULLVER_s) \
++	   -DDATESTAMP=$(DATESTAMP_s) \
++	   -DDEVPHASE=$(DEVPHASE_s) \
++	   -DPKGVERSION=$(PKGVERSION_s) \
++	   -DBUGURL=$(BUGURL_s) \
++	   -DREVISION= \
++	   $< -o $@
++
++obj-static:
++	-mkdir $@
++
++$(VSN_SOURCES) $(VSN_SEPARATES) $(VSN_GENERATED_SOURCES): stamp-libgnatvsn-sources
++
++stamp-libgnatvsn-sources:
++	for file in $(VSN_SOURCES) $(VSN_SEPARATES); do \
++	   ads=$$(echo $$file | sed 's/\.adb/.ads/'); \
++	   if [ -f @srcdir@/../gcc/ada/$$file -a ! -L $$file ] ; then ln -s @srcdir@/../gcc/ada/$$file .; fi; \
++	   if [ -f @srcdir@/../gcc/ada/$$ads -a ! -L $$ads ] ; then ln -s @srcdir@/../gcc/ada/$$ads .; fi; \
++	done
++	for file in $(VSN_GENERATED_SOURCES); do \
++	   ads=$$(echo $$file | sed 's/\.adb/.ads/'); \
++	   if [ -f ../../gcc/ada/$$file -a ! -L $$file ] ; then ln -s ../../gcc/ada/$$file .; fi; \
++	   if [ -f ../../gcc/ada/$$ads -a ! -L $$ads ] ; then ln -s ../../gcc/ada/$$ads .; fi; \
++	done
++	touch $@
++
++libdir = @libdir@
++
++install: libgnatvsn
++	$(INSTALL_DATA) libgnatvsn.a $(DESTDIR)$(libdir)
++	$(INSTALL_DATA) libgnatvsn.so.$(LIB_VERSION) $(DESTDIR)$(libdir)
++	cd $(DESTDIR)$(libdir); ln -sf libgnatvsn.so.$(LIB_VERSION) libgnatvsn.so
++	mkdir -p $(DESTDIR)$(prefix)/share/ada/adainclude/gnatvsn
++	$(INSTALL_DATA) \
++	   $(addprefix @srcdir@/../gcc/ada/,$(VSN_SOURCES) $(VSN_SEPARATES)) \
++	   $(addprefix @srcdir@/../gcc/ada/,$(patsubst %.adb,%.ads,$(filter %.adb,$(VSN_SOURCES)))) \
++	   $(addprefix ../../gcc/ada/,$(VSN_GENERATED_SOURCES)) \
++	   $(addprefix ../../gcc/ada/,$(patsubst %.adb,%.ads,$(VSN_GENERATED_SOURCES))) \
++	   $(DESTDIR)$(prefix)/share/ada/adainclude/gnatvsn
++	mkdir -p $(DESTDIR)$(prefix)/lib/ada/adalib/gnatvsn
++	$(INSTALL) -m 0444 obj-shared/*.ali \
++	   $(DESTDIR)$(prefix)/lib/ada/adalib/gnatvsn
++	chmod a=r $(DESTDIR)$(prefix)/lib/ada/adalib/gnatvsn/*.ali
++
++.PHONY: clean
++clean:
++	rm -rf *.ali obj-static obj-shared libgnatvsn* *.adb *.ads stamp*
+Index: b/src/Makefile.def
+===================================================================
+--- a/src/Makefile.def
++++ b/src/Makefile.def
+@@ -177,6 +177,13 @@ target_modules = { module= libada; no_in
+ 		   missing= TAGS;
+ 		   missing= install-info;
+ 		   missing= installcheck; };
++target_modules = { module= libgnatvsn; no_check=true;
++		   missing= info;
++		   missing= dvi;
++		   missing= html;
++		   missing= TAGS;
++		   missing= install-info;
++		   missing= installcheck; };
+ target_modules = { module= libgomp; bootstrap= true; lib_path=.libs; };
+ target_modules = { module= libitm; lib_path=.libs; };
+ target_modules = { module= libatomic; lib_path=.libs; };
+@@ -371,6 +378,8 @@ dependencies = { module=all-fixincludes;
+ 
+ dependencies = { module=all-target-libada; on=all-gcc; };
+ dependencies = { module=all-gnattools; on=all-target-libada; };
++dependencies = { module=all-gnattools; on=all-target-libgnatvsn; };
++dependencies = { module=all-target-libgnatvsn; on=all-target-libada; };
+ dependencies = { module=all-gnattools; on=all-target-libstdc++-v3; };
+ 
+ // Depending on the specific configuration, the LTO plugin will either use the
+Index: b/src/configure.ac
+===================================================================
+--- a/src/configure.ac
++++ b/src/configure.ac
+@@ -176,6 +176,7 @@ target_libraries="target-libgcc \
+ 		target-libobjc \
+ 		target-libada \
+ 		${target_libiberty} \
++		target-libgnatvsn \
+ 		target-libgo"
+ 
+ # these tools are built using the target libraries, and are intended to
+@@ -445,7 +446,7 @@ AC_ARG_ENABLE(libada,
+ ENABLE_LIBADA=$enableval,
+ ENABLE_LIBADA=yes)
+ if test "${ENABLE_LIBADA}" != "yes" ; then
+-  noconfigdirs="$noconfigdirs gnattools"
++  noconfigdirs="$noconfigdirs target-libgnatvsn gnattools"
+ fi
+ 
+ AC_ARG_ENABLE(libssp,
+Index: b/src/gcc/ada/gcc-interface/config-lang.in
+===================================================================
+--- a/src/gcc/ada/gcc-interface/config-lang.in
++++ b/src/gcc/ada/gcc-interface/config-lang.in
+@@ -34,8 +34,8 @@ gtfiles="\$(srcdir)/ada/gcc-interface/ad
+ 
+ outputs="ada/gcc-interface/Makefile ada/Makefile"
+ 
+-target_libs="target-libada"
+-lang_dirs="libada gnattools"
++target_libs="target-libada target-libgnatvsn"
++lang_dirs="libada libgnatvsn gnattools"
+ 
+ # Ada is not enabled by default for the time being.
+ build_by_default=no
+Index: b/src/Makefile.in
+===================================================================
+--- a/src/Makefile.in
++++ b/src/Makefile.in
+@@ -964,6 +964,7 @@ configure-target:  \
+     maybe-configure-target-boehm-gc \
+     maybe-configure-target-rda \
+     maybe-configure-target-libada \
++    maybe-configure-target-libgnatvsn \
+     maybe-configure-target-libgomp \
+     maybe-configure-target-libitm \
+     maybe-configure-target-libatomic
+@@ -1130,6 +1131,7 @@ all-target: maybe-all-target-zlib
+ all-target: maybe-all-target-boehm-gc
+ all-target: maybe-all-target-rda
+ all-target: maybe-all-target-libada
++all-target: maybe-all-target-libgnatvsn
+ @if target-libgomp-no-bootstrap
+ all-target: maybe-all-target-libgomp
+ @endif target-libgomp-no-bootstrap
+@@ -1225,6 +1227,7 @@ info-target: maybe-info-target-zlib
+ info-target: maybe-info-target-boehm-gc
+ info-target: maybe-info-target-rda
+ info-target: maybe-info-target-libada
++info-target: maybe-info-target-libgnatvsn
+ info-target: maybe-info-target-libgomp
+ info-target: maybe-info-target-libitm
+ info-target: maybe-info-target-libatomic
+@@ -1313,6 +1316,7 @@ dvi-target: maybe-dvi-target-zlib
+ dvi-target: maybe-dvi-target-boehm-gc
+ dvi-target: maybe-dvi-target-rda
+ dvi-target: maybe-dvi-target-libada
++dvi-target: maybe-dvi-target-libgnatvsn
+ dvi-target: maybe-dvi-target-libgomp
+ dvi-target: maybe-dvi-target-libitm
+ dvi-target: maybe-dvi-target-libatomic
+@@ -1401,6 +1405,7 @@ pdf-target: maybe-pdf-target-zlib
+ pdf-target: maybe-pdf-target-boehm-gc
+ pdf-target: maybe-pdf-target-rda
+ pdf-target: maybe-pdf-target-libada
++pdf-target: maybe-pdf-target-libgnatvsn
+ pdf-target: maybe-pdf-target-libgomp
+ pdf-target: maybe-pdf-target-libitm
+ pdf-target: maybe-pdf-target-libatomic
+@@ -1489,6 +1494,7 @@ html-target: maybe-html-target-zlib
+ html-target: maybe-html-target-boehm-gc
+ html-target: maybe-html-target-rda
+ html-target: maybe-html-target-libada
++html-target: maybe-html-target-libgnatvsn
+ html-target: maybe-html-target-libgomp
+ html-target: maybe-html-target-libitm
+ html-target: maybe-html-target-libatomic
+@@ -1577,6 +1583,7 @@ TAGS-target: maybe-TAGS-target-zlib
+ TAGS-target: maybe-TAGS-target-boehm-gc
+ TAGS-target: maybe-TAGS-target-rda
+ TAGS-target: maybe-TAGS-target-libada
++TAGS-target: maybe-TAGS-target-libgnatvsn
+ TAGS-target: maybe-TAGS-target-libgomp
+ TAGS-target: maybe-TAGS-target-libitm
+ TAGS-target: maybe-TAGS-target-libatomic
+@@ -1665,6 +1672,7 @@ install-info-target: maybe-install-info-
+ install-info-target: maybe-install-info-target-boehm-gc
+ 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-libgomp
+ install-info-target: maybe-install-info-target-libitm
+ install-info-target: maybe-install-info-target-libatomic
+@@ -1753,6 +1761,7 @@ install-pdf-target: maybe-install-pdf-ta
+ install-pdf-target: maybe-install-pdf-target-boehm-gc
+ 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-libgomp
+ install-pdf-target: maybe-install-pdf-target-libitm
+ install-pdf-target: maybe-install-pdf-target-libatomic
+@@ -1841,6 +1850,7 @@ install-html-target: maybe-install-html-
+ install-html-target: maybe-install-html-target-boehm-gc
+ 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-libgomp
+ install-html-target: maybe-install-html-target-libitm
+ install-html-target: maybe-install-html-target-libatomic
+@@ -1929,6 +1939,7 @@ installcheck-target: maybe-installcheck-
+ installcheck-target: maybe-installcheck-target-boehm-gc
+ installcheck-target: maybe-installcheck-target-rda
+ installcheck-target: maybe-installcheck-target-libada
++installcheck-target: maybe-installcheck-target-libgnatvsn
+ installcheck-target: maybe-installcheck-target-libgomp
+ installcheck-target: maybe-installcheck-target-libitm
+ installcheck-target: maybe-installcheck-target-libatomic
+@@ -2017,6 +2028,7 @@ mostlyclean-target: maybe-mostlyclean-ta
+ mostlyclean-target: maybe-mostlyclean-target-boehm-gc
+ mostlyclean-target: maybe-mostlyclean-target-rda
+ mostlyclean-target: maybe-mostlyclean-target-libada
++mostlyclean-target: maybe-mostlyclean-target-libgnatvsn
+ mostlyclean-target: maybe-mostlyclean-target-libgomp
+ mostlyclean-target: maybe-mostlyclean-target-libitm
+ mostlyclean-target: maybe-mostlyclean-target-libatomic
+@@ -2105,6 +2117,7 @@ clean-target: maybe-clean-target-zlib
+ clean-target: maybe-clean-target-boehm-gc
+ clean-target: maybe-clean-target-rda
+ clean-target: maybe-clean-target-libada
++clean-target: maybe-clean-target-libgnatvsn
+ clean-target: maybe-clean-target-libgomp
+ clean-target: maybe-clean-target-libitm
+ clean-target: maybe-clean-target-libatomic
+@@ -2193,6 +2206,7 @@ distclean-target: maybe-distclean-target
+ distclean-target: maybe-distclean-target-boehm-gc
+ distclean-target: maybe-distclean-target-rda
+ distclean-target: maybe-distclean-target-libada
++distclean-target: maybe-distclean-target-libgnatvsn
+ distclean-target: maybe-distclean-target-libgomp
+ distclean-target: maybe-distclean-target-libitm
+ distclean-target: maybe-distclean-target-libatomic
+@@ -2281,6 +2295,7 @@ maintainer-clean-target: maybe-maintaine
+ maintainer-clean-target: maybe-maintainer-clean-target-boehm-gc
+ 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-libgomp
+ maintainer-clean-target: maybe-maintainer-clean-target-libitm
+ maintainer-clean-target: maybe-maintainer-clean-target-libatomic
+@@ -2424,6 +2439,7 @@ check-target:  \
+     maybe-check-target-boehm-gc \
+     maybe-check-target-rda \
+     maybe-check-target-libada \
++    maybe-check-target-libgnatvsn \
+     maybe-check-target-libgomp \
+     maybe-check-target-libitm \
+     maybe-check-target-libatomic
+@@ -2599,6 +2615,7 @@ install-target:  \
+     maybe-install-target-boehm-gc \
+     maybe-install-target-rda \
+     maybe-install-target-libada \
++    maybe-install-target-libgnatvsn \
+     maybe-install-target-libgomp \
+     maybe-install-target-libitm \
+     maybe-install-target-libatomic
+@@ -2707,6 +2724,7 @@ install-strip-target:  \
+     maybe-install-strip-target-boehm-gc \
+     maybe-install-strip-target-rda \
+     maybe-install-strip-target-libada \
++    maybe-install-strip-target-libgnatvsn \
+     maybe-install-strip-target-libgomp \
+     maybe-install-strip-target-libitm \
+     maybe-install-strip-target-libatomic
+@@ -45614,6 +45632,362 @@ maintainer-clean-target-libada:
+ 
+ 
+ 
++.PHONY: configure-target-libgnatvsn maybe-configure-target-libgnatvsn
++maybe-configure-target-libgnatvsn:
++ at if gcc-bootstrap
++configure-target-libgnatvsn: stage_current
++ at endif gcc-bootstrap
++ at if target-libgnatvsn
++maybe-configure-target-libgnatvsn: configure-target-libgnatvsn
++configure-target-libgnatvsn: 
++	@: $(MAKE); $(unstage)
++	@r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	echo "Checking multilib configuration for libgnatvsn..."; \
++	$(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libgnatvsn ; \
++	$(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libgnatvsn/multilib.tmp 2> /dev/null ; \
++	if test -r $(TARGET_SUBDIR)/libgnatvsn/multilib.out; then \
++	  if cmp -s $(TARGET_SUBDIR)/libgnatvsn/multilib.tmp $(TARGET_SUBDIR)/libgnatvsn/multilib.out; then \
++	    rm -f $(TARGET_SUBDIR)/libgnatvsn/multilib.tmp; \
++	  else \
++	    rm -f $(TARGET_SUBDIR)/libgnatvsn/Makefile; \
++	    mv $(TARGET_SUBDIR)/libgnatvsn/multilib.tmp $(TARGET_SUBDIR)/libgnatvsn/multilib.out; \
++	  fi; \
++	else \
++	  mv $(TARGET_SUBDIR)/libgnatvsn/multilib.tmp $(TARGET_SUBDIR)/libgnatvsn/multilib.out; \
++	fi; \
++	test ! -f $(TARGET_SUBDIR)/libgnatvsn/Makefile || exit 0; \
++	$(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libgnatvsn ; \
++	$(NORMAL_TARGET_EXPORTS)  \
++	echo Configuring in $(TARGET_SUBDIR)/libgnatvsn; \
++	cd "$(TARGET_SUBDIR)/libgnatvsn" || exit 1; \
++	case $(srcdir) in \
++	  /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \
++	  *) topdir=`echo $(TARGET_SUBDIR)/libgnatvsn/ | \
++		sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \
++	esac; \
++	module_srcdir=libgnatvsn; \
++	rm -f no-such-file || : ; \
++	CONFIG_SITE=no-such-file $(SHELL) \
++	  $$s/$$module_srcdir/configure \
++	  --srcdir=$${topdir}/$$module_srcdir \
++	  $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \
++	  --target=${target_alias}  \
++	  || exit 1
++ at endif target-libgnatvsn
++
++
++
++
++
++.PHONY: all-target-libgnatvsn maybe-all-target-libgnatvsn
++maybe-all-target-libgnatvsn:
++ at if gcc-bootstrap
++all-target-libgnatvsn: stage_current
++ at endif gcc-bootstrap
++ at if target-libgnatvsn
++TARGET-target-libgnatvsn=all
++maybe-all-target-libgnatvsn: all-target-libgnatvsn
++all-target-libgnatvsn: configure-target-libgnatvsn
++	@: $(MAKE); $(unstage)
++	@r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(NORMAL_TARGET_EXPORTS)  \
++	(cd $(TARGET_SUBDIR)/libgnatvsn && \
++	  $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS)   \
++		$(TARGET-target-libgnatvsn))
++ at endif target-libgnatvsn
++
++
++
++
++
++.PHONY: check-target-libgnatvsn maybe-check-target-libgnatvsn
++maybe-check-target-libgnatvsn:
++ at if target-libgnatvsn
++maybe-check-target-libgnatvsn: check-target-libgnatvsn
++
++# Dummy target for uncheckable module.
++check-target-libgnatvsn:
++
++ at endif target-libgnatvsn
++
++.PHONY: install-target-libgnatvsn maybe-install-target-libgnatvsn
++maybe-install-target-libgnatvsn:
++ at if target-libgnatvsn
++maybe-install-target-libgnatvsn: install-target-libgnatvsn
++
++install-target-libgnatvsn: installdirs
++	@: $(MAKE); $(unstage)
++	@r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(NORMAL_TARGET_EXPORTS) \
++	(cd $(TARGET_SUBDIR)/libgnatvsn && \
++	  $(MAKE) $(TARGET_FLAGS_TO_PASS)  install)
++
++ at endif target-libgnatvsn
++
++.PHONY: install-strip-target-libgnatvsn maybe-install-strip-target-libgnatvsn
++maybe-install-strip-target-libgnatvsn:
++ at if target-libgnatvsn
++maybe-install-strip-target-libgnatvsn: install-strip-target-libgnatvsn
++
++install-strip-target-libgnatvsn: installdirs
++	@: $(MAKE); $(unstage)
++	@r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(NORMAL_TARGET_EXPORTS) \
++	(cd $(TARGET_SUBDIR)/libgnatvsn && \
++	  $(MAKE) $(TARGET_FLAGS_TO_PASS)  install-strip)
++
++ at endif target-libgnatvsn
++
++# Other targets (info, dvi, pdf, etc.)
++
++.PHONY: maybe-info-target-libgnatvsn info-target-libgnatvsn
++maybe-info-target-libgnatvsn:
++ at if target-libgnatvsn
++maybe-info-target-libgnatvsn: info-target-libgnatvsn
++
++# libgnatvsn doesn't support info.
++info-target-libgnatvsn:
++
++ at endif target-libgnatvsn
++
++.PHONY: maybe-dvi-target-libgnatvsn dvi-target-libgnatvsn
++maybe-dvi-target-libgnatvsn:
++ at if target-libgnatvsn
++maybe-dvi-target-libgnatvsn: dvi-target-libgnatvsn
++
++# libgnatvsn doesn't support dvi.
++dvi-target-libgnatvsn:
++
++ at endif target-libgnatvsn
++
++.PHONY: maybe-pdf-target-libgnatvsn pdf-target-libgnatvsn
++maybe-pdf-target-libgnatvsn:
++ at if target-libgnatvsn
++maybe-pdf-target-libgnatvsn: pdf-target-libgnatvsn
++
++pdf-target-libgnatvsn: \
++    configure-target-libgnatvsn 
++	@: $(MAKE); $(unstage)
++	@[ -f $(TARGET_SUBDIR)/libgnatvsn/Makefile ] || exit 0 ; \
++	r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(NORMAL_TARGET_EXPORTS) \
++	echo "Doing pdf in $(TARGET_SUBDIR)/libgnatvsn" ; \
++	for flag in $(EXTRA_TARGET_FLAGS); do \
++	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
++	done; \
++	(cd $(TARGET_SUBDIR)/libgnatvsn && \
++	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
++	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
++	          "RANLIB=$${RANLIB}" \
++	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
++	           pdf) \
++	  || exit 1
++
++ at endif target-libgnatvsn
++
++.PHONY: maybe-html-target-libgnatvsn html-target-libgnatvsn
++maybe-html-target-libgnatvsn:
++ at if target-libgnatvsn
++maybe-html-target-libgnatvsn: html-target-libgnatvsn
++
++# libgnatvsn doesn't support html.
++html-target-libgnatvsn:
++
++ at endif target-libgnatvsn
++
++.PHONY: maybe-TAGS-target-libgnatvsn TAGS-target-libgnatvsn
++maybe-TAGS-target-libgnatvsn:
++ at if target-libgnatvsn
++maybe-TAGS-target-libgnatvsn: TAGS-target-libgnatvsn
++
++# libgnatvsn doesn't support TAGS.
++TAGS-target-libgnatvsn:
++
++ at endif target-libgnatvsn
++
++.PHONY: maybe-install-info-target-libgnatvsn install-info-target-libgnatvsn
++maybe-install-info-target-libgnatvsn:
++ at if target-libgnatvsn
++maybe-install-info-target-libgnatvsn: install-info-target-libgnatvsn
++
++# libgnatvsn doesn't support install-info.
++install-info-target-libgnatvsn:
++
++ at endif target-libgnatvsn
++
++.PHONY: maybe-install-pdf-target-libgnatvsn install-pdf-target-libgnatvsn
++maybe-install-pdf-target-libgnatvsn:
++ at if target-libgnatvsn
++maybe-install-pdf-target-libgnatvsn: install-pdf-target-libgnatvsn
++
++install-pdf-target-libgnatvsn: \
++    configure-target-libgnatvsn \
++    pdf-target-libgnatvsn 
++	@: $(MAKE); $(unstage)
++	@[ -f $(TARGET_SUBDIR)/libgnatvsn/Makefile ] || exit 0 ; \
++	r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(NORMAL_TARGET_EXPORTS) \
++	echo "Doing install-pdf in $(TARGET_SUBDIR)/libgnatvsn" ; \
++	for flag in $(EXTRA_TARGET_FLAGS); do \
++	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
++	done; \
++	(cd $(TARGET_SUBDIR)/libgnatvsn && \
++	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
++	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
++	          "RANLIB=$${RANLIB}" \
++	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
++	           install-pdf) \
++	  || exit 1
++
++ at endif target-libgnatvsn
++
++.PHONY: maybe-install-html-target-libgnatvsn install-html-target-libgnatvsn
++maybe-install-html-target-libgnatvsn:
++ at if target-libgnatvsn
++maybe-install-html-target-libgnatvsn: install-html-target-libgnatvsn
++
++install-html-target-libgnatvsn: \
++    configure-target-libgnatvsn \
++    html-target-libgnatvsn 
++	@: $(MAKE); $(unstage)
++	@[ -f $(TARGET_SUBDIR)/libgnatvsn/Makefile ] || exit 0 ; \
++	r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(NORMAL_TARGET_EXPORTS) \
++	echo "Doing install-html in $(TARGET_SUBDIR)/libgnatvsn" ; \
++	for flag in $(EXTRA_TARGET_FLAGS); do \
++	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
++	done; \
++	(cd $(TARGET_SUBDIR)/libgnatvsn && \
++	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
++	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
++	          "RANLIB=$${RANLIB}" \
++	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
++	           install-html) \
++	  || exit 1
++
++ at endif target-libgnatvsn
++
++.PHONY: maybe-installcheck-target-libgnatvsn installcheck-target-libgnatvsn
++maybe-installcheck-target-libgnatvsn:
++ at if target-libgnatvsn
++maybe-installcheck-target-libgnatvsn: installcheck-target-libgnatvsn
++
++# libgnatvsn doesn't support installcheck.
++installcheck-target-libgnatvsn:
++
++ at endif target-libgnatvsn
++
++.PHONY: maybe-mostlyclean-target-libgnatvsn mostlyclean-target-libgnatvsn
++maybe-mostlyclean-target-libgnatvsn:
++ at if target-libgnatvsn
++maybe-mostlyclean-target-libgnatvsn: mostlyclean-target-libgnatvsn
++
++mostlyclean-target-libgnatvsn: 
++	@: $(MAKE); $(unstage)
++	@[ -f $(TARGET_SUBDIR)/libgnatvsn/Makefile ] || exit 0 ; \
++	r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(NORMAL_TARGET_EXPORTS) \
++	echo "Doing mostlyclean in $(TARGET_SUBDIR)/libgnatvsn" ; \
++	for flag in $(EXTRA_TARGET_FLAGS); do \
++	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
++	done; \
++	(cd $(TARGET_SUBDIR)/libgnatvsn && \
++	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
++	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
++	          "RANLIB=$${RANLIB}" \
++	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
++	           mostlyclean) \
++	  || exit 1
++
++ at endif target-libgnatvsn
++
++.PHONY: maybe-clean-target-libgnatvsn clean-target-libgnatvsn
++maybe-clean-target-libgnatvsn:
++ at if target-libgnatvsn
++maybe-clean-target-libgnatvsn: clean-target-libgnatvsn
++
++clean-target-libgnatvsn: 
++	@: $(MAKE); $(unstage)
++	@[ -f $(TARGET_SUBDIR)/libgnatvsn/Makefile ] || exit 0 ; \
++	r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(NORMAL_TARGET_EXPORTS) \
++	echo "Doing clean in $(TARGET_SUBDIR)/libgnatvsn" ; \
++	for flag in $(EXTRA_TARGET_FLAGS); do \
++	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
++	done; \
++	(cd $(TARGET_SUBDIR)/libgnatvsn && \
++	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
++	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
++	          "RANLIB=$${RANLIB}" \
++	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
++	           clean) \
++	  || exit 1
++
++ at endif target-libgnatvsn
++
++.PHONY: maybe-distclean-target-libgnatvsn distclean-target-libgnatvsn
++maybe-distclean-target-libgnatvsn:
++ at if target-libgnatvsn
++maybe-distclean-target-libgnatvsn: distclean-target-libgnatvsn
++
++distclean-target-libgnatvsn: 
++	@: $(MAKE); $(unstage)
++	@[ -f $(TARGET_SUBDIR)/libgnatvsn/Makefile ] || exit 0 ; \
++	r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(NORMAL_TARGET_EXPORTS) \
++	echo "Doing distclean in $(TARGET_SUBDIR)/libgnatvsn" ; \
++	for flag in $(EXTRA_TARGET_FLAGS); do \
++	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
++	done; \
++	(cd $(TARGET_SUBDIR)/libgnatvsn && \
++	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
++	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
++	          "RANLIB=$${RANLIB}" \
++	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
++	           distclean) \
++	  || exit 1
++
++ at endif target-libgnatvsn
++
++.PHONY: maybe-maintainer-clean-target-libgnatvsn maintainer-clean-target-libgnatvsn
++maybe-maintainer-clean-target-libgnatvsn:
++ at if target-libgnatvsn
++maybe-maintainer-clean-target-libgnatvsn: maintainer-clean-target-libgnatvsn
++
++maintainer-clean-target-libgnatvsn: 
++	@: $(MAKE); $(unstage)
++	@[ -f $(TARGET_SUBDIR)/libgnatvsn/Makefile ] || exit 0 ; \
++	r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(NORMAL_TARGET_EXPORTS) \
++	echo "Doing maintainer-clean in $(TARGET_SUBDIR)/libgnatvsn" ; \
++	for flag in $(EXTRA_TARGET_FLAGS); do \
++	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
++	done; \
++	(cd $(TARGET_SUBDIR)/libgnatvsn && \
++	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
++	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
++	          "RANLIB=$${RANLIB}" \
++	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
++	           maintainer-clean) \
++	  || exit 1
++
++ at endif target-libgnatvsn
++
++
++
++
++
+ .PHONY: configure-target-libgomp maybe-configure-target-libgomp
+ maybe-configure-target-libgomp:
+ @if gcc-bootstrap
+@@ -49748,6 +50122,7 @@ configure-target-zlib: stage_last
+ configure-target-boehm-gc: stage_last
+ configure-target-rda: stage_last
+ configure-target-libada: stage_last
++configure-target-libgnatvsn: stage_last
+ configure-stage1-target-libgomp: maybe-all-stage1-gcc
+ configure-stage2-target-libgomp: maybe-all-stage2-gcc
+ configure-stage3-target-libgomp: maybe-all-stage3-gcc
+@@ -49783,6 +50158,7 @@ configure-target-zlib: maybe-all-gcc
+ configure-target-boehm-gc: maybe-all-gcc
+ configure-target-rda: maybe-all-gcc
+ configure-target-libada: maybe-all-gcc
++configure-target-libgnatvsn: maybe-all-gcc
+ configure-target-libgomp: maybe-all-gcc
+ configure-target-libitm: maybe-all-gcc
+ configure-target-libatomic: maybe-all-gcc
+@@ -50124,6 +50500,8 @@ all-stageprofile-fixincludes: maybe-all-
+ all-stagefeedback-fixincludes: maybe-all-stagefeedback-libiberty
+ all-target-libada: maybe-all-gcc
+ all-gnattools: maybe-all-target-libada
++all-gnattools: maybe-all-target-libgnatvsn
++all-target-libgnatvsn: maybe-all-target-libada
+ all-gnattools: maybe-all-target-libstdc++-v3
+ all-lto-plugin: maybe-all-libiberty
+ 
+@@ -50695,6 +51073,7 @@ configure-target-zlib: maybe-all-target-
+ configure-target-boehm-gc: maybe-all-target-libgcc
+ configure-target-rda: maybe-all-target-libgcc
+ configure-target-libada: maybe-all-target-libgcc
++configure-target-libgnatvsn: maybe-all-target-libgcc
+ configure-target-libgomp: maybe-all-target-libgcc
+ configure-target-libitm: maybe-all-target-libgcc
+ configure-target-libatomic: maybe-all-target-libgcc
+@@ -50749,6 +51128,8 @@ configure-target-rda: maybe-all-target-n
+ 
+ configure-target-libada: maybe-all-target-newlib maybe-all-target-libgloss
+ 
++configure-target-libgnatvsn: maybe-all-target-newlib maybe-all-target-libgloss
++
+ configure-target-libgomp: maybe-all-target-newlib maybe-all-target-libgloss
+ 
+ configure-target-libitm: maybe-all-target-newlib maybe-all-target-libgloss
diff --git a/debian/patches/ada-library-project-files-soname.diff b/debian/patches/ada-library-project-files-soname.diff
new file mode 100644
index 0000000..e822b1e
--- /dev/null
+++ b/debian/patches/ada-library-project-files-soname.diff
@@ -0,0 +1,81 @@
+# DP: - in project files, use the exact Library_Version provided, if any, as
+# DP:   the soname of libraries; do not strip minor version numbers
+# DP:   (PR ada/40025).
+
+Index: b/src/gcc/ada/mlib-tgt-specific-linux.adb
+===================================================================
+--- a/src/gcc/ada/mlib-tgt-specific-linux.adb
++++ b/src/gcc/ada/mlib-tgt-specific-linux.adb
+@@ -50,6 +50,8 @@ package body MLib.Tgt.Specific is
+ 
+    function Is_Archive_Ext (Ext : String) return Boolean;
+ 
++   function Library_Major_Minor_Id_Supported return Boolean;
++
+    ---------------------------
+    -- Build_Dynamic_Library --
+    ---------------------------
+@@ -142,7 +144,18 @@ package body MLib.Tgt.Specific is
+       return Ext = ".a" or else Ext = ".so";
+    end Is_Archive_Ext;
+ 
++   --------------------------------------
++   -- Library_Major_Minor_Id_Supported --
++   --------------------------------------
++
++   function Library_Major_Minor_Id_Supported return Boolean is
++   begin
++      return False;
++   end Library_Major_Minor_Id_Supported;
++
+ begin
+    Build_Dynamic_Library_Ptr := Build_Dynamic_Library'Access;
+    Is_Archive_Ext_Ptr := Is_Archive_Ext'Access;
++   Library_Major_Minor_Id_Supported_Ptr :=
++                                Library_Major_Minor_Id_Supported'Access;
+ end MLib.Tgt.Specific;
+Index: b/src/gcc/ada/mlib.adb
+===================================================================
+--- a/src/gcc/ada/mlib.adb
++++ b/src/gcc/ada/mlib.adb
+@@ -30,6 +30,7 @@ with System;
+ with Opt;
+ with Output; use Output;
+ 
++with MLib.Tgt;
+ with MLib.Utl; use MLib.Utl;
+ 
+ with Prj.Com;
+@@ -393,7 +394,11 @@ package body MLib is
+    -- Major_Id_Name --
+    -------------------
+ 
+-   function Major_Id_Name
++   function Major_Id_Name_If_Supported
++     (Lib_Filename : String;
++      Lib_Version  : String)
++      return String;
++   function Major_Id_Name_If_Supported
+      (Lib_Filename : String;
+       Lib_Version  : String)
+       return String
+@@ -447,6 +452,19 @@ package body MLib is
+       else
+          return "";
+       end if;
++   end Major_Id_Name_If_Supported;
++
++   function Major_Id_Name
++     (Lib_Filename : String;
++      Lib_Version  : String)
++      return String
++   is
++   begin
++      if MLib.Tgt.Library_Major_Minor_Id_Supported then
++         return Major_Id_Name_If_Supported (Lib_Filename, Lib_Version);
++      else
++         return "";
++      end if;
+    end Major_Id_Name;
+ 
+    -------------------------------
diff --git a/debian/patches/ada-link-lib.diff b/debian/patches/ada-link-lib.diff
new file mode 100644
index 0000000..4618839
--- /dev/null
+++ b/debian/patches/ada-link-lib.diff
@@ -0,0 +1,1195 @@
+# DP: - Install the shared Ada libraries as '.so.1', not '.so' to conform
+# DP:   to the Debian policy.
+# DP: - Don't include a runtime link path (-rpath), when linking binaries.
+# DP: - Build the shared libraries on hppa-linux.
+# DP: - Instead of building libada as a target library only, build it as
+# DP:   both a host and, if different, target library.
+# DP: - Build the GNAT tools in their top-level directory; do not use
+# DP:   recursive makefiles.
+# DP: - Link the GNAT tools dynamically.
+
+# This patch seems large, but the hunks in Makefile.in are actually
+# generated from Makefile.def using autogen.
+
+Index: b/src/gcc/ada/gcc-interface/config-lang.in
+===================================================================
+--- a/src/gcc/ada/gcc-interface/config-lang.in
++++ b/src/gcc/ada/gcc-interface/config-lang.in
+@@ -35,7 +35,7 @@ gtfiles="\$(srcdir)/ada/gcc-interface/ad
+ outputs="ada/gcc-interface/Makefile ada/Makefile"
+ 
+ target_libs="target-libada"
+-lang_dirs="gnattools"
++lang_dirs="libada gnattools"
+ 
+ # Ada is not enabled by default for the time being.
+ build_by_default=no
+Index: b/src/gcc/ada/link.c
+===================================================================
+--- a/src/gcc/ada/link.c
++++ b/src/gcc/ada/link.c
+@@ -105,9 +105,9 @@ const char *__gnat_default_libgcc_subdir
+ 
+ #elif defined (__FreeBSD__)
+ const char *__gnat_object_file_option = "-Wl,@";
+-const char *__gnat_run_path_option = "-Wl,-rpath,";
+-char __gnat_shared_libgnat_default = STATIC;
+-char __gnat_shared_libgcc_default = STATIC;
++const char *__gnat_run_path_option = "";
++char __gnat_shared_libgnat_default = SHARED;
++char __gnat_shared_libgcc_default = SHARED;
+ int __gnat_link_max = 8192;
+ unsigned char __gnat_objlist_file_supported = 1;
+ const char *__gnat_object_library_extension = ".a";
+@@ -127,9 +127,9 @@ const char *__gnat_default_libgcc_subdir
+ 
+ #elif defined (linux) || defined(__GLIBC__)
+ const char *__gnat_object_file_option = "-Wl,@";
+-const char *__gnat_run_path_option = "-Wl,-rpath,";
+-char __gnat_shared_libgnat_default = STATIC;
+-char __gnat_shared_libgcc_default = STATIC;
++const char *__gnat_run_path_option = "";
++char __gnat_shared_libgnat_default = SHARED;
++char __gnat_shared_libgcc_default = SHARED;
+ int __gnat_link_max = 8192;
+ unsigned char __gnat_objlist_file_supported = 1;
+ const char *__gnat_object_library_extension = ".a";
+Index: b/src/libada/Makefile.in
+===================================================================
+--- a/src/libada/Makefile.in
++++ b/src/libada/Makefile.in
+@@ -60,7 +60,7 @@ CFLAGS=-g
+ PICFLAG = @PICFLAG@
+ GNATLIBFLAGS= -W -Wall -gnatpg -nostdinc
+ GNATLIBCFLAGS= -g -O2
+-GNATLIBCFLAGS_FOR_C = -W -Wall $(GNATLIBCFLAGS) $(CFLAGS_FOR_TARGET) \
++GNATLIBCFLAGS_FOR_C = -W -Wall $(GNATLIBCFLAGS) \
+ 	-fexceptions -DIN_RTS @have_getipinfo@
+ 
+ host_subdir = @host_subdir@
+Index: b/src/Makefile.def
+===================================================================
+--- a/src/Makefile.def
++++ b/src/Makefile.def
+@@ -115,7 +115,13 @@ host_modules= { module= libtermcap; no_c
+                 missing=distclean;
+                 missing=maintainer-clean; };
+ host_modules= { module= utils; no_check=true; };
+-host_modules= { module= gnattools; };
++host_modules= { module= gnattools; no_check=true;
++		missing= info;
++		missing= dvi;
++		missing= html;
++		missing= TAGS;
++		missing= install-info;
++		missing= installcheck; };
+ host_modules= { module= lto-plugin; bootstrap=true;
+ 		extra_configure_flags='--enable-shared @extra_linker_plugin_flags@ @extra_linker_plugin_configure_flags@';
+ 		extra_make_flags='@extra_linker_plugin_flags@'; };
+@@ -158,12 +164,19 @@ target_modules = { module= libtermcap; n
+ target_modules = { module= winsup; };
+ target_modules = { module= libgloss; no_check=true; };
+ target_modules = { module= libffi; no_install=true; };
++target_modules = { module= libiberty; no_install=true; no_check=true; };
+ target_modules = { module= libjava; raw_cxx=true;
+                    extra_configure_flags="$(EXTRA_CONFIGARGS_LIBJAVA)"; };
+ target_modules = { module= zlib; };
+ target_modules = { module= boehm-gc; };
+ target_modules = { module= rda; };
+-target_modules = { module= libada; };
++target_modules = { module= libada; no_install=true; no_check=true;
++		   missing= info;
++		   missing= dvi;
++		   missing= html;
++		   missing= TAGS;
++		   missing= install-info;
++		   missing= installcheck; };
+ target_modules = { module= libgomp; bootstrap= true; lib_path=.libs; };
+ target_modules = { module= libitm; lib_path=.libs; };
+ target_modules = { module= libatomic; lib_path=.libs; };
+@@ -356,6 +369,7 @@ dependencies = { module=all-libcpp; on=a
+ 
+ dependencies = { module=all-fixincludes; on=all-libiberty; };
+ 
++dependencies = { module=all-target-libada; on=all-gcc; };
+ dependencies = { module=all-gnattools; on=all-target-libada; };
+ dependencies = { module=all-gnattools; on=all-target-libstdc++-v3; };
+ 
+Index: b/src/Makefile.in
+===================================================================
+--- a/src/Makefile.in
++++ b/src/Makefile.in
+@@ -958,6 +958,7 @@ configure-target:  \
+     maybe-configure-target-winsup \
+     maybe-configure-target-libgloss \
+     maybe-configure-target-libffi \
++    maybe-configure-target-libiberty \
+     maybe-configure-target-libjava \
+     maybe-configure-target-zlib \
+     maybe-configure-target-boehm-gc \
+@@ -1123,6 +1124,7 @@ all-target: maybe-all-target-libtermcap
+ all-target: maybe-all-target-winsup
+ all-target: maybe-all-target-libgloss
+ all-target: maybe-all-target-libffi
++all-target: maybe-all-target-libiberty
+ all-target: maybe-all-target-libjava
+ all-target: maybe-all-target-zlib
+ all-target: maybe-all-target-boehm-gc
+@@ -1217,6 +1219,7 @@ info-target: maybe-info-target-libtermca
+ info-target: maybe-info-target-winsup
+ info-target: maybe-info-target-libgloss
+ info-target: maybe-info-target-libffi
++info-target: maybe-info-target-libiberty
+ info-target: maybe-info-target-libjava
+ info-target: maybe-info-target-zlib
+ info-target: maybe-info-target-boehm-gc
+@@ -1304,6 +1307,7 @@ dvi-target: maybe-dvi-target-libtermcap
+ dvi-target: maybe-dvi-target-winsup
+ dvi-target: maybe-dvi-target-libgloss
+ dvi-target: maybe-dvi-target-libffi
++dvi-target: maybe-dvi-target-libiberty
+ dvi-target: maybe-dvi-target-libjava
+ dvi-target: maybe-dvi-target-zlib
+ dvi-target: maybe-dvi-target-boehm-gc
+@@ -1391,6 +1395,7 @@ pdf-target: maybe-pdf-target-libtermcap
+ pdf-target: maybe-pdf-target-winsup
+ pdf-target: maybe-pdf-target-libgloss
+ pdf-target: maybe-pdf-target-libffi
++pdf-target: maybe-pdf-target-libiberty
+ pdf-target: maybe-pdf-target-libjava
+ pdf-target: maybe-pdf-target-zlib
+ pdf-target: maybe-pdf-target-boehm-gc
+@@ -1478,6 +1483,7 @@ html-target: maybe-html-target-libtermca
+ html-target: maybe-html-target-winsup
+ html-target: maybe-html-target-libgloss
+ html-target: maybe-html-target-libffi
++html-target: maybe-html-target-libiberty
+ html-target: maybe-html-target-libjava
+ html-target: maybe-html-target-zlib
+ html-target: maybe-html-target-boehm-gc
+@@ -1565,6 +1571,7 @@ TAGS-target: maybe-TAGS-target-libtermca
+ TAGS-target: maybe-TAGS-target-winsup
+ TAGS-target: maybe-TAGS-target-libgloss
+ TAGS-target: maybe-TAGS-target-libffi
++TAGS-target: maybe-TAGS-target-libiberty
+ TAGS-target: maybe-TAGS-target-libjava
+ TAGS-target: maybe-TAGS-target-zlib
+ TAGS-target: maybe-TAGS-target-boehm-gc
+@@ -1652,6 +1659,7 @@ install-info-target: maybe-install-info-
+ install-info-target: maybe-install-info-target-winsup
+ install-info-target: maybe-install-info-target-libgloss
+ install-info-target: maybe-install-info-target-libffi
++install-info-target: maybe-install-info-target-libiberty
+ install-info-target: maybe-install-info-target-libjava
+ install-info-target: maybe-install-info-target-zlib
+ install-info-target: maybe-install-info-target-boehm-gc
+@@ -1739,6 +1747,7 @@ install-pdf-target: maybe-install-pdf-ta
+ install-pdf-target: maybe-install-pdf-target-winsup
+ install-pdf-target: maybe-install-pdf-target-libgloss
+ install-pdf-target: maybe-install-pdf-target-libffi
++install-pdf-target: maybe-install-pdf-target-libiberty
+ install-pdf-target: maybe-install-pdf-target-libjava
+ install-pdf-target: maybe-install-pdf-target-zlib
+ install-pdf-target: maybe-install-pdf-target-boehm-gc
+@@ -1826,6 +1835,7 @@ install-html-target: maybe-install-html-
+ install-html-target: maybe-install-html-target-winsup
+ install-html-target: maybe-install-html-target-libgloss
+ install-html-target: maybe-install-html-target-libffi
++install-html-target: maybe-install-html-target-libiberty
+ install-html-target: maybe-install-html-target-libjava
+ install-html-target: maybe-install-html-target-zlib
+ install-html-target: maybe-install-html-target-boehm-gc
+@@ -1913,6 +1923,7 @@ installcheck-target: maybe-installcheck-
+ installcheck-target: maybe-installcheck-target-winsup
+ installcheck-target: maybe-installcheck-target-libgloss
+ installcheck-target: maybe-installcheck-target-libffi
++installcheck-target: maybe-installcheck-target-libiberty
+ installcheck-target: maybe-installcheck-target-libjava
+ installcheck-target: maybe-installcheck-target-zlib
+ installcheck-target: maybe-installcheck-target-boehm-gc
+@@ -2000,6 +2011,7 @@ mostlyclean-target: maybe-mostlyclean-ta
+ mostlyclean-target: maybe-mostlyclean-target-winsup
+ mostlyclean-target: maybe-mostlyclean-target-libgloss
+ mostlyclean-target: maybe-mostlyclean-target-libffi
++mostlyclean-target: maybe-mostlyclean-target-libiberty
+ mostlyclean-target: maybe-mostlyclean-target-libjava
+ mostlyclean-target: maybe-mostlyclean-target-zlib
+ mostlyclean-target: maybe-mostlyclean-target-boehm-gc
+@@ -2087,6 +2099,7 @@ clean-target: maybe-clean-target-libterm
+ clean-target: maybe-clean-target-winsup
+ clean-target: maybe-clean-target-libgloss
+ clean-target: maybe-clean-target-libffi
++clean-target: maybe-clean-target-libiberty
+ clean-target: maybe-clean-target-libjava
+ clean-target: maybe-clean-target-zlib
+ clean-target: maybe-clean-target-boehm-gc
+@@ -2174,6 +2187,7 @@ distclean-target: maybe-distclean-target
+ distclean-target: maybe-distclean-target-winsup
+ distclean-target: maybe-distclean-target-libgloss
+ distclean-target: maybe-distclean-target-libffi
++distclean-target: maybe-distclean-target-libiberty
+ distclean-target: maybe-distclean-target-libjava
+ distclean-target: maybe-distclean-target-zlib
+ distclean-target: maybe-distclean-target-boehm-gc
+@@ -2261,6 +2275,7 @@ maintainer-clean-target: maybe-maintaine
+ maintainer-clean-target: maybe-maintainer-clean-target-winsup
+ maintainer-clean-target: maybe-maintainer-clean-target-libgloss
+ maintainer-clean-target: maybe-maintainer-clean-target-libffi
++maintainer-clean-target: maybe-maintainer-clean-target-libiberty
+ maintainer-clean-target: maybe-maintainer-clean-target-libjava
+ maintainer-clean-target: maybe-maintainer-clean-target-zlib
+ maintainer-clean-target: maybe-maintainer-clean-target-boehm-gc
+@@ -2403,6 +2418,7 @@ check-target:  \
+     maybe-check-target-winsup \
+     maybe-check-target-libgloss \
+     maybe-check-target-libffi \
++    maybe-check-target-libiberty \
+     maybe-check-target-libjava \
+     maybe-check-target-zlib \
+     maybe-check-target-boehm-gc \
+@@ -2577,6 +2593,7 @@ install-target:  \
+     maybe-install-target-winsup \
+     maybe-install-target-libgloss \
+     maybe-install-target-libffi \
++    maybe-install-target-libiberty \
+     maybe-install-target-libjava \
+     maybe-install-target-zlib \
+     maybe-install-target-boehm-gc \
+@@ -2684,6 +2701,7 @@ install-strip-target:  \
+     maybe-install-strip-target-winsup \
+     maybe-install-strip-target-libgloss \
+     maybe-install-strip-target-libffi \
++    maybe-install-strip-target-libiberty \
+     maybe-install-strip-target-libjava \
+     maybe-install-strip-target-zlib \
+     maybe-install-strip-target-boehm-gc \
+@@ -30180,12 +30198,6 @@ maybe-check-gnattools:
+ maybe-check-gnattools: check-gnattools
+ 
+ check-gnattools:
+-	@: $(MAKE); $(unstage)
+-	@r=`${PWD_COMMAND}`; export r; \
+-	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+-	$(HOST_EXPORTS) \
+-	(cd $(HOST_SUBDIR)/gnattools && \
+-	  $(MAKE) $(FLAGS_TO_PASS)  check)
+ 
+ @endif gnattools
+ 
+@@ -30226,24 +30238,8 @@ maybe-info-gnattools:
+ @if gnattools
+ maybe-info-gnattools: info-gnattools
+ 
+-info-gnattools: \
+-    configure-gnattools 
+-	@: $(MAKE); $(unstage)
+-	@[ -f ./gnattools/Makefile ] || exit 0; \
+-	r=`${PWD_COMMAND}`; export r; \
+-	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+-	$(HOST_EXPORTS) \
+-	for flag in $(EXTRA_HOST_FLAGS) ; do \
+-	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
+-	done; \
+-	echo "Doing info in gnattools" ; \
+-	(cd $(HOST_SUBDIR)/gnattools && \
+-	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
+-	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
+-	          "RANLIB=$${RANLIB}" \
+-	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
+-	          info) \
+-	  || exit 1
++# gnattools doesn't support info.
++info-gnattools:
+ 
+ @endif gnattools
+ 
+@@ -30252,24 +30248,8 @@ maybe-dvi-gnattools:
+ @if gnattools
+ maybe-dvi-gnattools: dvi-gnattools
+ 
+-dvi-gnattools: \
+-    configure-gnattools 
+-	@: $(MAKE); $(unstage)
+-	@[ -f ./gnattools/Makefile ] || exit 0; \
+-	r=`${PWD_COMMAND}`; export r; \
+-	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+-	$(HOST_EXPORTS) \
+-	for flag in $(EXTRA_HOST_FLAGS) ; do \
+-	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
+-	done; \
+-	echo "Doing dvi in gnattools" ; \
+-	(cd $(HOST_SUBDIR)/gnattools && \
+-	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
+-	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
+-	          "RANLIB=$${RANLIB}" \
+-	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
+-	          dvi) \
+-	  || exit 1
++# gnattools doesn't support dvi.
++dvi-gnattools:
+ 
+ @endif gnattools
+ 
+@@ -30304,24 +30284,8 @@ maybe-html-gnattools:
+ @if gnattools
+ maybe-html-gnattools: html-gnattools
+ 
+-html-gnattools: \
+-    configure-gnattools 
+-	@: $(MAKE); $(unstage)
+-	@[ -f ./gnattools/Makefile ] || exit 0; \
+-	r=`${PWD_COMMAND}`; export r; \
+-	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+-	$(HOST_EXPORTS) \
+-	for flag in $(EXTRA_HOST_FLAGS) ; do \
+-	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
+-	done; \
+-	echo "Doing html in gnattools" ; \
+-	(cd $(HOST_SUBDIR)/gnattools && \
+-	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
+-	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
+-	          "RANLIB=$${RANLIB}" \
+-	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
+-	          html) \
+-	  || exit 1
++# gnattools doesn't support html.
++html-gnattools:
+ 
+ @endif gnattools
+ 
+@@ -30330,24 +30294,8 @@ maybe-TAGS-gnattools:
+ @if gnattools
+ maybe-TAGS-gnattools: TAGS-gnattools
+ 
+-TAGS-gnattools: \
+-    configure-gnattools 
+-	@: $(MAKE); $(unstage)
+-	@[ -f ./gnattools/Makefile ] || exit 0; \
+-	r=`${PWD_COMMAND}`; export r; \
+-	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+-	$(HOST_EXPORTS) \
+-	for flag in $(EXTRA_HOST_FLAGS) ; do \
+-	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
+-	done; \
+-	echo "Doing TAGS in gnattools" ; \
+-	(cd $(HOST_SUBDIR)/gnattools && \
+-	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
+-	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
+-	          "RANLIB=$${RANLIB}" \
+-	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
+-	          TAGS) \
+-	  || exit 1
++# gnattools doesn't support TAGS.
++TAGS-gnattools:
+ 
+ @endif gnattools
+ 
+@@ -30356,25 +30304,8 @@ maybe-install-info-gnattools:
+ @if gnattools
+ maybe-install-info-gnattools: install-info-gnattools
+ 
+-install-info-gnattools: \
+-    configure-gnattools \
+-    info-gnattools 
+-	@: $(MAKE); $(unstage)
+-	@[ -f ./gnattools/Makefile ] || exit 0; \
+-	r=`${PWD_COMMAND}`; export r; \
+-	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+-	$(HOST_EXPORTS) \
+-	for flag in $(EXTRA_HOST_FLAGS) ; do \
+-	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
+-	done; \
+-	echo "Doing install-info in gnattools" ; \
+-	(cd $(HOST_SUBDIR)/gnattools && \
+-	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
+-	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
+-	          "RANLIB=$${RANLIB}" \
+-	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
+-	          install-info) \
+-	  || exit 1
++# gnattools doesn't support install-info.
++install-info-gnattools:
+ 
+ @endif gnattools
+ 
+@@ -30437,24 +30368,8 @@ maybe-installcheck-gnattools:
+ @if gnattools
+ maybe-installcheck-gnattools: installcheck-gnattools
+ 
+-installcheck-gnattools: \
+-    configure-gnattools 
+-	@: $(MAKE); $(unstage)
+-	@[ -f ./gnattools/Makefile ] || exit 0; \
+-	r=`${PWD_COMMAND}`; export r; \
+-	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+-	$(HOST_EXPORTS) \
+-	for flag in $(EXTRA_HOST_FLAGS) ; do \
+-	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
+-	done; \
+-	echo "Doing installcheck in gnattools" ; \
+-	(cd $(HOST_SUBDIR)/gnattools && \
+-	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
+-	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
+-	          "RANLIB=$${RANLIB}" \
+-	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
+-	          installcheck) \
+-	  || exit 1
++# gnattools doesn't support installcheck.
++installcheck-gnattools:
+ 
+ @endif gnattools
+ 
+@@ -43078,6 +42993,449 @@ maintainer-clean-target-libffi:
+ 
+ 
+ 
++.PHONY: configure-target-libiberty maybe-configure-target-libiberty
++maybe-configure-target-libiberty:
++ at if gcc-bootstrap
++configure-target-libiberty: stage_current
++ at endif gcc-bootstrap
++ at if target-libiberty
++maybe-configure-target-libiberty: configure-target-libiberty
++configure-target-libiberty: 
++	@: $(MAKE); $(unstage)
++	@r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	echo "Checking multilib configuration for libiberty..."; \
++	$(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libiberty ; \
++	$(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libiberty/multilib.tmp 2> /dev/null ; \
++	if test -r $(TARGET_SUBDIR)/libiberty/multilib.out; then \
++	  if cmp -s $(TARGET_SUBDIR)/libiberty/multilib.tmp $(TARGET_SUBDIR)/libiberty/multilib.out; then \
++	    rm -f $(TARGET_SUBDIR)/libiberty/multilib.tmp; \
++	  else \
++	    rm -f $(TARGET_SUBDIR)/libiberty/Makefile; \
++	    mv $(TARGET_SUBDIR)/libiberty/multilib.tmp $(TARGET_SUBDIR)/libiberty/multilib.out; \
++	  fi; \
++	else \
++	  mv $(TARGET_SUBDIR)/libiberty/multilib.tmp $(TARGET_SUBDIR)/libiberty/multilib.out; \
++	fi; \
++	test ! -f $(TARGET_SUBDIR)/libiberty/Makefile || exit 0; \
++	$(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libiberty ; \
++	$(NORMAL_TARGET_EXPORTS)  \
++	echo Configuring in $(TARGET_SUBDIR)/libiberty; \
++	cd "$(TARGET_SUBDIR)/libiberty" || exit 1; \
++	case $(srcdir) in \
++	  /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \
++	  *) topdir=`echo $(TARGET_SUBDIR)/libiberty/ | \
++		sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \
++	esac; \
++	module_srcdir=libiberty; \
++	rm -f no-such-file || : ; \
++	CONFIG_SITE=no-such-file $(SHELL) \
++	  $$s/$$module_srcdir/configure \
++	  --srcdir=$${topdir}/$$module_srcdir \
++	  $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \
++	  --target=${target_alias}  \
++	  || exit 1
++ at endif target-libiberty
++
++
++
++
++
++.PHONY: all-target-libiberty maybe-all-target-libiberty
++maybe-all-target-libiberty:
++ at if gcc-bootstrap
++all-target-libiberty: stage_current
++ at endif gcc-bootstrap
++ at if target-libiberty
++TARGET-target-libiberty=all
++maybe-all-target-libiberty: all-target-libiberty
++all-target-libiberty: configure-target-libiberty
++	@: $(MAKE); $(unstage)
++	@r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(NORMAL_TARGET_EXPORTS)  \
++	(cd $(TARGET_SUBDIR)/libiberty && \
++	  $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS)   \
++		$(TARGET-target-libiberty))
++ at endif target-libiberty
++
++
++
++
++
++.PHONY: check-target-libiberty maybe-check-target-libiberty
++maybe-check-target-libiberty:
++ at if target-libiberty
++maybe-check-target-libiberty: check-target-libiberty
++
++# Dummy target for uncheckable module.
++check-target-libiberty:
++
++ at endif target-libiberty
++
++.PHONY: install-target-libiberty maybe-install-target-libiberty
++maybe-install-target-libiberty:
++ at if target-libiberty
++maybe-install-target-libiberty: install-target-libiberty
++
++# Dummy target for uninstallable.
++install-target-libiberty:
++
++ at endif target-libiberty
++
++.PHONY: install-strip-target-libiberty maybe-install-strip-target-libiberty
++maybe-install-strip-target-libiberty:
++ at if target-libiberty
++maybe-install-strip-target-libiberty: install-strip-target-libiberty
++
++# Dummy target for uninstallable.
++install-strip-target-libiberty:
++
++ at endif target-libiberty
++
++# Other targets (info, dvi, pdf, etc.)
++
++.PHONY: maybe-info-target-libiberty info-target-libiberty
++maybe-info-target-libiberty:
++ at if target-libiberty
++maybe-info-target-libiberty: info-target-libiberty
++
++info-target-libiberty: \
++    configure-target-libiberty 
++	@: $(MAKE); $(unstage)
++	@[ -f $(TARGET_SUBDIR)/libiberty/Makefile ] || exit 0 ; \
++	r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(NORMAL_TARGET_EXPORTS) \
++	echo "Doing info in $(TARGET_SUBDIR)/libiberty" ; \
++	for flag in $(EXTRA_TARGET_FLAGS); do \
++	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
++	done; \
++	(cd $(TARGET_SUBDIR)/libiberty && \
++	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
++	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
++	          "RANLIB=$${RANLIB}" \
++	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
++	           info) \
++	  || exit 1
++
++ at endif target-libiberty
++
++.PHONY: maybe-dvi-target-libiberty dvi-target-libiberty
++maybe-dvi-target-libiberty:
++ at if target-libiberty
++maybe-dvi-target-libiberty: dvi-target-libiberty
++
++dvi-target-libiberty: \
++    configure-target-libiberty 
++	@: $(MAKE); $(unstage)
++	@[ -f $(TARGET_SUBDIR)/libiberty/Makefile ] || exit 0 ; \
++	r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(NORMAL_TARGET_EXPORTS) \
++	echo "Doing dvi in $(TARGET_SUBDIR)/libiberty" ; \
++	for flag in $(EXTRA_TARGET_FLAGS); do \
++	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
++	done; \
++	(cd $(TARGET_SUBDIR)/libiberty && \
++	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
++	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
++	          "RANLIB=$${RANLIB}" \
++	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
++	           dvi) \
++	  || exit 1
++
++ at endif target-libiberty
++
++.PHONY: maybe-pdf-target-libiberty pdf-target-libiberty
++maybe-pdf-target-libiberty:
++ at if target-libiberty
++maybe-pdf-target-libiberty: pdf-target-libiberty
++
++pdf-target-libiberty: \
++    configure-target-libiberty 
++	@: $(MAKE); $(unstage)
++	@[ -f $(TARGET_SUBDIR)/libiberty/Makefile ] || exit 0 ; \
++	r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(NORMAL_TARGET_EXPORTS) \
++	echo "Doing pdf in $(TARGET_SUBDIR)/libiberty" ; \
++	for flag in $(EXTRA_TARGET_FLAGS); do \
++	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
++	done; \
++	(cd $(TARGET_SUBDIR)/libiberty && \
++	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
++	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
++	          "RANLIB=$${RANLIB}" \
++	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
++	           pdf) \
++	  || exit 1
++
++ at endif target-libiberty
++
++.PHONY: maybe-html-target-libiberty html-target-libiberty
++maybe-html-target-libiberty:
++ at if target-libiberty
++maybe-html-target-libiberty: html-target-libiberty
++
++html-target-libiberty: \
++    configure-target-libiberty 
++	@: $(MAKE); $(unstage)
++	@[ -f $(TARGET_SUBDIR)/libiberty/Makefile ] || exit 0 ; \
++	r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(NORMAL_TARGET_EXPORTS) \
++	echo "Doing html in $(TARGET_SUBDIR)/libiberty" ; \
++	for flag in $(EXTRA_TARGET_FLAGS); do \
++	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
++	done; \
++	(cd $(TARGET_SUBDIR)/libiberty && \
++	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
++	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
++	          "RANLIB=$${RANLIB}" \
++	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
++	           html) \
++	  || exit 1
++
++ at endif target-libiberty
++
++.PHONY: maybe-TAGS-target-libiberty TAGS-target-libiberty
++maybe-TAGS-target-libiberty:
++ at if target-libiberty
++maybe-TAGS-target-libiberty: TAGS-target-libiberty
++
++TAGS-target-libiberty: \
++    configure-target-libiberty 
++	@: $(MAKE); $(unstage)
++	@[ -f $(TARGET_SUBDIR)/libiberty/Makefile ] || exit 0 ; \
++	r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(NORMAL_TARGET_EXPORTS) \
++	echo "Doing TAGS in $(TARGET_SUBDIR)/libiberty" ; \
++	for flag in $(EXTRA_TARGET_FLAGS); do \
++	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
++	done; \
++	(cd $(TARGET_SUBDIR)/libiberty && \
++	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
++	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
++	          "RANLIB=$${RANLIB}" \
++	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
++	           TAGS) \
++	  || exit 1
++
++ at endif target-libiberty
++
++.PHONY: maybe-install-info-target-libiberty install-info-target-libiberty
++maybe-install-info-target-libiberty:
++ at if target-libiberty
++maybe-install-info-target-libiberty: install-info-target-libiberty
++
++install-info-target-libiberty: \
++    configure-target-libiberty \
++    info-target-libiberty 
++	@: $(MAKE); $(unstage)
++	@[ -f $(TARGET_SUBDIR)/libiberty/Makefile ] || exit 0 ; \
++	r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(NORMAL_TARGET_EXPORTS) \
++	echo "Doing install-info in $(TARGET_SUBDIR)/libiberty" ; \
++	for flag in $(EXTRA_TARGET_FLAGS); do \
++	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
++	done; \
++	(cd $(TARGET_SUBDIR)/libiberty && \
++	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
++	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
++	          "RANLIB=$${RANLIB}" \
++	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
++	           install-info) \
++	  || exit 1
++
++ at endif target-libiberty
++
++.PHONY: maybe-install-pdf-target-libiberty install-pdf-target-libiberty
++maybe-install-pdf-target-libiberty:
++ at if target-libiberty
++maybe-install-pdf-target-libiberty: install-pdf-target-libiberty
++
++install-pdf-target-libiberty: \
++    configure-target-libiberty \
++    pdf-target-libiberty 
++	@: $(MAKE); $(unstage)
++	@[ -f $(TARGET_SUBDIR)/libiberty/Makefile ] || exit 0 ; \
++	r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(NORMAL_TARGET_EXPORTS) \
++	echo "Doing install-pdf in $(TARGET_SUBDIR)/libiberty" ; \
++	for flag in $(EXTRA_TARGET_FLAGS); do \
++	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
++	done; \
++	(cd $(TARGET_SUBDIR)/libiberty && \
++	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
++	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
++	          "RANLIB=$${RANLIB}" \
++	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
++	           install-pdf) \
++	  || exit 1
++
++ at endif target-libiberty
++
++.PHONY: maybe-install-html-target-libiberty install-html-target-libiberty
++maybe-install-html-target-libiberty:
++ at if target-libiberty
++maybe-install-html-target-libiberty: install-html-target-libiberty
++
++install-html-target-libiberty: \
++    configure-target-libiberty \
++    html-target-libiberty 
++	@: $(MAKE); $(unstage)
++	@[ -f $(TARGET_SUBDIR)/libiberty/Makefile ] || exit 0 ; \
++	r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(NORMAL_TARGET_EXPORTS) \
++	echo "Doing install-html in $(TARGET_SUBDIR)/libiberty" ; \
++	for flag in $(EXTRA_TARGET_FLAGS); do \
++	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
++	done; \
++	(cd $(TARGET_SUBDIR)/libiberty && \
++	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
++	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
++	          "RANLIB=$${RANLIB}" \
++	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
++	           install-html) \
++	  || exit 1
++
++ at endif target-libiberty
++
++.PHONY: maybe-installcheck-target-libiberty installcheck-target-libiberty
++maybe-installcheck-target-libiberty:
++ at if target-libiberty
++maybe-installcheck-target-libiberty: installcheck-target-libiberty
++
++installcheck-target-libiberty: \
++    configure-target-libiberty 
++	@: $(MAKE); $(unstage)
++	@[ -f $(TARGET_SUBDIR)/libiberty/Makefile ] || exit 0 ; \
++	r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(NORMAL_TARGET_EXPORTS) \
++	echo "Doing installcheck in $(TARGET_SUBDIR)/libiberty" ; \
++	for flag in $(EXTRA_TARGET_FLAGS); do \
++	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
++	done; \
++	(cd $(TARGET_SUBDIR)/libiberty && \
++	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
++	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
++	          "RANLIB=$${RANLIB}" \
++	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
++	           installcheck) \
++	  || exit 1
++
++ at endif target-libiberty
++
++.PHONY: maybe-mostlyclean-target-libiberty mostlyclean-target-libiberty
++maybe-mostlyclean-target-libiberty:
++ at if target-libiberty
++maybe-mostlyclean-target-libiberty: mostlyclean-target-libiberty
++
++mostlyclean-target-libiberty: 
++	@: $(MAKE); $(unstage)
++	@[ -f $(TARGET_SUBDIR)/libiberty/Makefile ] || exit 0 ; \
++	r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(NORMAL_TARGET_EXPORTS) \
++	echo "Doing mostlyclean in $(TARGET_SUBDIR)/libiberty" ; \
++	for flag in $(EXTRA_TARGET_FLAGS); do \
++	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
++	done; \
++	(cd $(TARGET_SUBDIR)/libiberty && \
++	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
++	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
++	          "RANLIB=$${RANLIB}" \
++	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
++	           mostlyclean) \
++	  || exit 1
++
++ at endif target-libiberty
++
++.PHONY: maybe-clean-target-libiberty clean-target-libiberty
++maybe-clean-target-libiberty:
++ at if target-libiberty
++maybe-clean-target-libiberty: clean-target-libiberty
++
++clean-target-libiberty: 
++	@: $(MAKE); $(unstage)
++	@[ -f $(TARGET_SUBDIR)/libiberty/Makefile ] || exit 0 ; \
++	r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(NORMAL_TARGET_EXPORTS) \
++	echo "Doing clean in $(TARGET_SUBDIR)/libiberty" ; \
++	for flag in $(EXTRA_TARGET_FLAGS); do \
++	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
++	done; \
++	(cd $(TARGET_SUBDIR)/libiberty && \
++	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
++	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
++	          "RANLIB=$${RANLIB}" \
++	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
++	           clean) \
++	  || exit 1
++
++ at endif target-libiberty
++
++.PHONY: maybe-distclean-target-libiberty distclean-target-libiberty
++maybe-distclean-target-libiberty:
++ at if target-libiberty
++maybe-distclean-target-libiberty: distclean-target-libiberty
++
++distclean-target-libiberty: 
++	@: $(MAKE); $(unstage)
++	@[ -f $(TARGET_SUBDIR)/libiberty/Makefile ] || exit 0 ; \
++	r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(NORMAL_TARGET_EXPORTS) \
++	echo "Doing distclean in $(TARGET_SUBDIR)/libiberty" ; \
++	for flag in $(EXTRA_TARGET_FLAGS); do \
++	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
++	done; \
++	(cd $(TARGET_SUBDIR)/libiberty && \
++	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
++	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
++	          "RANLIB=$${RANLIB}" \
++	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
++	           distclean) \
++	  || exit 1
++
++ at endif target-libiberty
++
++.PHONY: maybe-maintainer-clean-target-libiberty maintainer-clean-target-libiberty
++maybe-maintainer-clean-target-libiberty:
++ at if target-libiberty
++maybe-maintainer-clean-target-libiberty: maintainer-clean-target-libiberty
++
++maintainer-clean-target-libiberty: 
++	@: $(MAKE); $(unstage)
++	@[ -f $(TARGET_SUBDIR)/libiberty/Makefile ] || exit 0 ; \
++	r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(NORMAL_TARGET_EXPORTS) \
++	echo "Doing maintainer-clean in $(TARGET_SUBDIR)/libiberty" ; \
++	for flag in $(EXTRA_TARGET_FLAGS); do \
++	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
++	done; \
++	(cd $(TARGET_SUBDIR)/libiberty && \
++	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
++	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
++	          "RANLIB=$${RANLIB}" \
++	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
++	           maintainer-clean) \
++	  || exit 1
++
++ at endif target-libiberty
++
++
++
++
++
+ .PHONY: configure-target-libjava maybe-configure-target-libjava
+ maybe-configure-target-libjava:
+ @if gcc-bootstrap
+@@ -44985,13 +45343,8 @@ maybe-check-target-libada:
+ @if target-libada
+ maybe-check-target-libada: check-target-libada
+ 
++# Dummy target for uncheckable module.
+ check-target-libada:
+-	@: $(MAKE); $(unstage)
+-	@r=`${PWD_COMMAND}`; export r; \
+-	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+-	$(NORMAL_TARGET_EXPORTS) \
+-	(cd $(TARGET_SUBDIR)/libada && \
+-	  $(MAKE) $(TARGET_FLAGS_TO_PASS)   check)
+ 
+ @endif target-libada
+ 
+@@ -45000,13 +45353,8 @@ maybe-install-target-libada:
+ @if target-libada
+ maybe-install-target-libada: install-target-libada
+ 
+-install-target-libada: installdirs
+-	@: $(MAKE); $(unstage)
+-	@r=`${PWD_COMMAND}`; export r; \
+-	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+-	$(NORMAL_TARGET_EXPORTS) \
+-	(cd $(TARGET_SUBDIR)/libada && \
+-	  $(MAKE) $(TARGET_FLAGS_TO_PASS)  install)
++# Dummy target for uninstallable.
++install-target-libada:
+ 
+ @endif target-libada
+ 
+@@ -45015,13 +45363,8 @@ maybe-install-strip-target-libada:
+ @if target-libada
+ maybe-install-strip-target-libada: install-strip-target-libada
+ 
+-install-strip-target-libada: installdirs
+-	@: $(MAKE); $(unstage)
+-	@r=`${PWD_COMMAND}`; export r; \
+-	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+-	$(NORMAL_TARGET_EXPORTS) \
+-	(cd $(TARGET_SUBDIR)/libada && \
+-	  $(MAKE) $(TARGET_FLAGS_TO_PASS)  install-strip)
++# Dummy target for uninstallable.
++install-strip-target-libada:
+ 
+ @endif target-libada
+ 
+@@ -45032,24 +45375,8 @@ maybe-info-target-libada:
+ @if target-libada
+ maybe-info-target-libada: info-target-libada
+ 
+-info-target-libada: \
+-    configure-target-libada 
+-	@: $(MAKE); $(unstage)
+-	@[ -f $(TARGET_SUBDIR)/libada/Makefile ] || exit 0 ; \
+-	r=`${PWD_COMMAND}`; export r; \
+-	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+-	$(NORMAL_TARGET_EXPORTS) \
+-	echo "Doing info in $(TARGET_SUBDIR)/libada" ; \
+-	for flag in $(EXTRA_TARGET_FLAGS); do \
+-	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
+-	done; \
+-	(cd $(TARGET_SUBDIR)/libada && \
+-	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
+-	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
+-	          "RANLIB=$${RANLIB}" \
+-	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
+-	           info) \
+-	  || exit 1
++# libada doesn't support info.
++info-target-libada:
+ 
+ @endif target-libada
+ 
+@@ -45058,24 +45385,8 @@ maybe-dvi-target-libada:
+ @if target-libada
+ maybe-dvi-target-libada: dvi-target-libada
+ 
+-dvi-target-libada: \
+-    configure-target-libada 
+-	@: $(MAKE); $(unstage)
+-	@[ -f $(TARGET_SUBDIR)/libada/Makefile ] || exit 0 ; \
+-	r=`${PWD_COMMAND}`; export r; \
+-	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+-	$(NORMAL_TARGET_EXPORTS) \
+-	echo "Doing dvi in $(TARGET_SUBDIR)/libada" ; \
+-	for flag in $(EXTRA_TARGET_FLAGS); do \
+-	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
+-	done; \
+-	(cd $(TARGET_SUBDIR)/libada && \
+-	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
+-	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
+-	          "RANLIB=$${RANLIB}" \
+-	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
+-	           dvi) \
+-	  || exit 1
++# libada doesn't support dvi.
++dvi-target-libada:
+ 
+ @endif target-libada
+ 
+@@ -45110,24 +45421,8 @@ maybe-html-target-libada:
+ @if target-libada
+ maybe-html-target-libada: html-target-libada
+ 
+-html-target-libada: \
+-    configure-target-libada 
+-	@: $(MAKE); $(unstage)
+-	@[ -f $(TARGET_SUBDIR)/libada/Makefile ] || exit 0 ; \
+-	r=`${PWD_COMMAND}`; export r; \
+-	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+-	$(NORMAL_TARGET_EXPORTS) \
+-	echo "Doing html in $(TARGET_SUBDIR)/libada" ; \
+-	for flag in $(EXTRA_TARGET_FLAGS); do \
+-	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
+-	done; \
+-	(cd $(TARGET_SUBDIR)/libada && \
+-	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
+-	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
+-	          "RANLIB=$${RANLIB}" \
+-	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
+-	           html) \
+-	  || exit 1
++# libada doesn't support html.
++html-target-libada:
+ 
+ @endif target-libada
+ 
+@@ -45136,24 +45431,8 @@ maybe-TAGS-target-libada:
+ @if target-libada
+ maybe-TAGS-target-libada: TAGS-target-libada
+ 
+-TAGS-target-libada: \
+-    configure-target-libada 
+-	@: $(MAKE); $(unstage)
+-	@[ -f $(TARGET_SUBDIR)/libada/Makefile ] || exit 0 ; \
+-	r=`${PWD_COMMAND}`; export r; \
+-	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+-	$(NORMAL_TARGET_EXPORTS) \
+-	echo "Doing TAGS in $(TARGET_SUBDIR)/libada" ; \
+-	for flag in $(EXTRA_TARGET_FLAGS); do \
+-	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
+-	done; \
+-	(cd $(TARGET_SUBDIR)/libada && \
+-	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
+-	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
+-	          "RANLIB=$${RANLIB}" \
+-	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
+-	           TAGS) \
+-	  || exit 1
++# libada doesn't support TAGS.
++TAGS-target-libada:
+ 
+ @endif target-libada
+ 
+@@ -45162,25 +45441,8 @@ maybe-install-info-target-libada:
+ @if target-libada
+ maybe-install-info-target-libada: install-info-target-libada
+ 
+-install-info-target-libada: \
+-    configure-target-libada \
+-    info-target-libada 
+-	@: $(MAKE); $(unstage)
+-	@[ -f $(TARGET_SUBDIR)/libada/Makefile ] || exit 0 ; \
+-	r=`${PWD_COMMAND}`; export r; \
+-	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+-	$(NORMAL_TARGET_EXPORTS) \
+-	echo "Doing install-info in $(TARGET_SUBDIR)/libada" ; \
+-	for flag in $(EXTRA_TARGET_FLAGS); do \
+-	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
+-	done; \
+-	(cd $(TARGET_SUBDIR)/libada && \
+-	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
+-	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
+-	          "RANLIB=$${RANLIB}" \
+-	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
+-	           install-info) \
+-	  || exit 1
++# libada doesn't support install-info.
++install-info-target-libada:
+ 
+ @endif target-libada
+ 
+@@ -45243,24 +45505,8 @@ maybe-installcheck-target-libada:
+ @if target-libada
+ maybe-installcheck-target-libada: installcheck-target-libada
+ 
+-installcheck-target-libada: \
+-    configure-target-libada 
+-	@: $(MAKE); $(unstage)
+-	@[ -f $(TARGET_SUBDIR)/libada/Makefile ] || exit 0 ; \
+-	r=`${PWD_COMMAND}`; export r; \
+-	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+-	$(NORMAL_TARGET_EXPORTS) \
+-	echo "Doing installcheck in $(TARGET_SUBDIR)/libada" ; \
+-	for flag in $(EXTRA_TARGET_FLAGS); do \
+-	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
+-	done; \
+-	(cd $(TARGET_SUBDIR)/libada && \
+-	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
+-	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
+-	          "RANLIB=$${RANLIB}" \
+-	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
+-	           installcheck) \
+-	  || exit 1
++# libada doesn't support installcheck.
++installcheck-target-libada:
+ 
+ @endif target-libada
+ 
+@@ -49496,6 +49742,7 @@ configure-target-libtermcap: stage_last
+ configure-target-winsup: stage_last
+ configure-target-libgloss: stage_last
+ configure-target-libffi: stage_last
++configure-target-libiberty: stage_last
+ configure-target-libjava: stage_last
+ configure-target-zlib: stage_last
+ configure-target-boehm-gc: stage_last
+@@ -49530,6 +49777,7 @@ configure-target-libtermcap: maybe-all-g
+ configure-target-winsup: maybe-all-gcc
+ configure-target-libgloss: maybe-all-gcc
+ configure-target-libffi: maybe-all-gcc
++configure-target-libiberty: maybe-all-gcc
+ configure-target-libjava: maybe-all-gcc
+ configure-target-zlib: maybe-all-gcc
+ configure-target-boehm-gc: maybe-all-gcc
+@@ -49874,6 +50122,7 @@ all-stage3-fixincludes: maybe-all-stage3
+ all-stage4-fixincludes: maybe-all-stage4-libiberty
+ all-stageprofile-fixincludes: maybe-all-stageprofile-libiberty
+ all-stagefeedback-fixincludes: maybe-all-stagefeedback-libiberty
++all-target-libada: maybe-all-gcc
+ all-gnattools: maybe-all-target-libada
+ all-gnattools: maybe-all-target-libstdc++-v3
+ all-lto-plugin: maybe-all-libiberty
+@@ -50440,6 +50689,7 @@ configure-target-libtermcap: maybe-all-t
+ configure-target-winsup: maybe-all-target-libgcc
+ configure-target-libgloss: maybe-all-target-libgcc
+ configure-target-libffi: maybe-all-target-libgcc
++configure-target-libiberty: maybe-all-target-libgcc
+ configure-target-libjava: maybe-all-target-libgcc
+ configure-target-zlib: maybe-all-target-libgcc
+ configure-target-boehm-gc: maybe-all-target-libgcc
+@@ -50487,6 +50737,7 @@ configure-target-winsup: maybe-all-targe
+ configure-target-libffi: maybe-all-target-newlib maybe-all-target-libgloss
+ configure-target-libffi: maybe-all-target-libstdc++-v3
+ 
++
+ configure-target-libjava: maybe-all-target-newlib maybe-all-target-libgloss
+ configure-target-libjava: maybe-all-target-libstdc++-v3
+ 
+Index: b/src/configure.ac
+===================================================================
+--- a/src/configure.ac
++++ b/src/configure.ac
+@@ -147,6 +147,11 @@ libgcj="target-libffi \
+ 	target-zlib \
+ 	target-libjava"
+ 
++case "${target}" in
++  hppa64-*linux*) ;;
++  *) target_libiberty="target-libiberty";;
++esac
++
+ # these libraries are built for the target environment, and are built after
+ # the host libraries and the host tools (which may be a cross compiler)
+ # Note that libiberty is not a target library.
+@@ -170,6 +175,7 @@ target_libraries="target-libgcc \
+ 		${libgcj} \
+ 		target-libobjc \
+ 		target-libada \
++		${target_libiberty} \
+ 		target-libgo"
+ 
+ # these tools are built using the target libraries, and are intended to
+Index: b/src/gcc/ada/gcc-interface/Make-lang.in
+===================================================================
+--- a/src/gcc/ada/gcc-interface/Make-lang.in
++++ b/src/gcc/ada/gcc-interface/Make-lang.in
+@@ -58,11 +58,7 @@ WARN_ADAFLAGS= -W -Wall
+ # need to be built by a recent/matching native so we might as well leave the
+ # checks fully active.
+ 
+-ifeq ($(CROSS),)
+ ADAFLAGS= $(COMMON_ADAFLAGS) -gnatwns
+-else
+-ADAFLAGS= $(COMMON_ADAFLAGS)
+-endif
+ 
+ ALL_ADAFLAGS = \
+   $(CFLAGS) $(ADA_CFLAGS) $(ADAFLAGS) $(CHECKING_ADAFLAGS) $(WARN_ADAFLAGS)
+Index: b/src/libada/configure.ac
+===================================================================
+--- a/src/libada/configure.ac
++++ b/src/libada/configure.ac
+@@ -127,8 +127,7 @@ AC_PROG_AWK
+ AC_PROG_LN_S
+ 
+ # Determine what to build for 'gnatlib'
+-if test $build = $target \
+-   && test ${enable_shared} = yes ; then
++if test ${enable_shared} = yes ; then
+   # Note that build=target is almost certainly the wrong test; FIXME
+   default_gnatlib_target="gnatlib-shared"
+ else
diff --git a/debian/patches/ada-link-shlib.diff b/debian/patches/ada-link-shlib.diff
new file mode 100644
index 0000000..2a258d2
--- /dev/null
+++ b/debian/patches/ada-link-shlib.diff
@@ -0,0 +1,89 @@
+# DP: In gnatlink, pass the options and libraries after objects to the
+# DP: linker to avoid link failures with --as-needed. Closes: #680292.
+
+Index: b/src/gcc/ada/mlib-tgt-specific-linux.adb
+===================================================================
+--- a/src/gcc/ada/mlib-tgt-specific-linux.adb
++++ b/src/gcc/ada/mlib-tgt-specific-linux.adb
+@@ -81,19 +81,54 @@ package body MLib.Tgt.Specific is
+       Version_Arg          : String_Access;
+       Symbolic_Link_Needed : Boolean := False;
+ 
++      N_Options    : Argument_List := Options;
++      Options_Last : Natural := N_Options'Last;
++      --  After moving -lxxx to Options_2, N_Options up to index Options_Last
++      --  will contain the Options to pass to MLib.Utl.Gcc.
++
++      Real_Options_2 : Argument_List (1 .. Options'Length);
++      Real_Options_2_Last : Natural := 0;
++      --  Real_Options_2 up to index Real_Options_2_Last will contain the
++      --  Options_2 to pass to MLib.Utl.Gcc.
++
+    begin
+       if Opt.Verbose_Mode then
+          Write_Str ("building relocatable shared library ");
+          Write_Line (Lib_Path);
+       end if;
+ 
++      --  Move all -lxxx to Options_2
++
++      declare
++         Index : Natural := N_Options'First;
++         Arg   : String_Access;
++
++      begin
++         while Index <= Options_Last loop
++            Arg := N_Options (Index);
++
++            if Arg'Length > 2
++              and then Arg (Arg'First .. Arg'First + 1) = "-l"
++            then
++               Real_Options_2_Last := Real_Options_2_Last + 1;
++               Real_Options_2 (Real_Options_2_Last) := Arg;
++               N_Options (Index .. Options_Last - 1) :=
++                 N_Options (Index + 1 .. Options_Last);
++               Options_Last := Options_Last - 1;
++
++            else
++               Index := Index + 1;
++            end if;
++         end loop;
++      end;
++
+       if Lib_Version = "" then
+          Utl.Gcc
+            (Output_File => Lib_Path,
+             Objects     => Ofiles,
+-            Options     => Options,
++            Options     => N_Options (N_Options'First .. Options_Last),
+             Driver_Name => Driver_Name,
+-            Options_2   => No_Argument_List);
++            Options_2   => Real_Options_2 (1 .. Real_Options_2_Last));
+ 
+       else
+          declare
+@@ -111,18 +146,20 @@ package body MLib.Tgt.Specific is
+                Utl.Gcc
+                  (Output_File => Lib_Version,
+                   Objects     => Ofiles,
+-                  Options     => Options & Version_Arg,
++                  Options     => N_Options (N_Options'First .. Options_Last)
++                                 & Version_Arg,
+                   Driver_Name => Driver_Name,
+-                  Options_2   => No_Argument_List);
++                  Options_2   => Real_Options_2 (1 .. Real_Options_2_Last));
+                Symbolic_Link_Needed := Lib_Version /= Lib_Path;
+ 
+             else
+                Utl.Gcc
+                  (Output_File => Lib_Dir & Directory_Separator & Lib_Version,
+                   Objects     => Ofiles,
+-                  Options     => Options & Version_Arg,
++                  Options     => N_Options (N_Options'First .. Options_Last)
++                                 & Version_Arg,
+                   Driver_Name => Driver_Name,
+-                  Options_2   => No_Argument_List);
++                  Options_2   => Real_Options_2 (1 .. Real_Options_2_Last));
+                Symbolic_Link_Needed :=
+                  Lib_Dir & Directory_Separator & Lib_Version /= Lib_Path;
+             end if;
diff --git a/debian/patches/ada-m68k.diff b/debian/patches/ada-m68k.diff
new file mode 100644
index 0000000..50dadfd
--- /dev/null
+++ b/debian/patches/ada-m68k.diff
@@ -0,0 +1,258 @@
+gcc/ada/
+
+2011-10-12  Mikael Pettersson  <mikpe at it.uu.se>
+
+	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.
+
+Index: b/src/gcc/ada/gcc-interface/Makefile.in
+===================================================================
+--- a/src/gcc/ada/gcc-interface/Makefile.in
++++ b/src/gcc/ada/gcc-interface/Makefile.in
+@@ -2062,6 +2062,35 @@ ifeq ($(strip $(filter-out aarch64% linu
+   LIBRARY_VERSION := $(LIB_VERSION)
+ endif
+ 
++# m68k Linux
++ifeq ($(strip $(filter-out m68k% linux%,$(arch) $(osys))),)
++  LIBGNAT_TARGET_PAIRS = \
++  a-intnam.ads<a-intnam-linux.ads \
++  s-inmaop.adb<s-inmaop-posix.adb \
++  s-intman.adb<s-intman-posix.adb \
++  s-linux.ads<s-linux.ads \
++  s-osinte.adb<s-osinte-posix.adb \
++  s-osinte.ads<s-osinte-linux.ads \
++  s-osprim.adb<s-osprim-posix.adb \
++  s-taprop.adb<s-taprop-linux.adb \
++  s-tasinf.ads<s-tasinf-linux.ads \
++  s-tasinf.adb<s-tasinf-linux.adb \
++  s-taspri.ads<s-taspri-posix-noaltstack.ads \
++  s-tpopsp.adb<s-tpopsp-posix-foreign.adb \
++  system.ads<system-linux-m68k.ads
++
++  TOOLS_TARGET_PAIRS =  \
++    mlib-tgt-specific.adb<mlib-tgt-specific-linux.adb \
++    indepsw.adb<indepsw-gnu.adb
++
++  EXTRA_GNATRTL_TASKING_OBJS=s-linux.o
++  EH_MECHANISM=-gcc
++  THREADSLIB = -lpthread
++  GNATLIB_SHARED = gnatlib-shared-dual
++  GMEM_LIB = gmemlib
++  LIBRARY_VERSION := $(LIB_VERSION)
++endif
++
+ # Sparc Linux
+ ifeq ($(strip $(filter-out sparc% linux%,$(target_cpu) $(target_os))),)
+   LIBGNAT_TARGET_PAIRS_COMMON = \
+Index: b/src/gcc/ada/s-memory.adb
+===================================================================
+--- a/src/gcc/ada/s-memory.adb
++++ b/src/gcc/ada/s-memory.adb
+@@ -47,6 +47,7 @@ with Ada.Exceptions;
+ with System.Soft_Links;
+ with System.Parameters;
+ with System.CRTL;
++with Ada.Unchecked_Conversion;
+ 
+ package body System.Memory is
+ 
+@@ -100,6 +101,22 @@ package body System.Memory is
+       return Result;
+    end Alloc;
+ 
++   type Char_Ptr is access all Character;
++   pragma Convention (C, Char_Ptr);
++   pragma No_Strict_Aliasing (Char_Ptr);
++
++   function To_Char_Ptr is
++      new Ada.Unchecked_Conversion (System.Address, Char_Ptr);
++
++   --  The function exported as __gnat_malloc MUST return a pointer type.
++   function Gnat_Malloc (Size : size_t) return Char_Ptr;
++   pragma Export (C, Gnat_Malloc, "__gnat_malloc");
++
++   function Gnat_Malloc (Size : size_t) return Char_Ptr is
++   begin
++      return To_Char_Ptr (Alloc (Size));
++   end Gnat_Malloc;
++
+    ----------
+    -- Free --
+    ----------
+Index: b/src/gcc/ada/s-memory.ads
+===================================================================
+--- a/src/gcc/ada/s-memory.ads
++++ b/src/gcc/ada/s-memory.ads
+@@ -100,7 +100,6 @@ private
+ 
+    --  The following names are used from the generated compiler code
+ 
+-   pragma Export (C, Alloc,   "__gnat_malloc");
+    pragma Export (C, Free,    "__gnat_free");
+    pragma Export (C, Realloc, "__gnat_realloc");
+ 
+Index: b/src/gcc/ada/system-linux-m68k.ads
+===================================================================
+--- /dev/null
++++ b/src/gcc/ada/system-linux-m68k.ads
+@@ -0,0 +1,153 @@
++------------------------------------------------------------------------------
++--                                                                          --
++--                        GNAT RUN-TIME COMPONENTS                          --
++--                                                                          --
++--                               S Y S T E M                                --
++--                                                                          --
++--                                 S p e c                                  --
++--                         (GNU-Linux/M68K Version)                         --
++--                                                                          --
++--          Copyright (C) 1992-2009, Free Software Foundation, Inc.         --
++--                                                                          --
++-- This specification is derived from the Ada Reference Manual for use with --
++-- GNAT. The copyright notice above, and the license provisions that follow --
++-- apply solely to the  contents of the part following the private keyword. --
++--                                                                          --
++-- GNAT is free software;  you can  redistribute it  and/or modify it under --
++-- terms of the  GNU General Public License as published  by the Free Soft- --
++-- ware  Foundation;  either version 3,  or (at your option) any later ver- --
++-- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
++-- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
++-- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
++--                                                                          --
++-- As a special exception under Section 7 of GPL version 3, you are granted --
++-- additional permissions described in the GCC Runtime Library Exception,   --
++-- version 3.1, as published by the Free Software Foundation.               --
++--                                                                          --
++-- You should have received a copy of the GNU General Public License and    --
++-- a copy of the GCC Runtime Library Exception along with this program;     --
++-- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
++-- <http://www.gnu.org/licenses/>.                                          --
++--                                                                          --
++-- 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 --git a/debian/patches/ada-mips.diff b/debian/patches/ada-mips.diff
new file mode 100644
index 0000000..e42842c
--- /dev/null
+++ b/debian/patches/ada-mips.diff
@@ -0,0 +1,23 @@
+# DP: Improve support for mips.
+
+Index: b/src/gcc/ada/gcc-interface/Makefile.in
+===================================================================
+--- a/src/gcc/ada/gcc-interface/Makefile.in
++++ b/src/gcc/ada/gcc-interface/Makefile.in
+@@ -1815,10 +1815,15 @@ ifeq ($(strip $(filter-out mips linux%,$
+   s-taprop.adb<s-taprop-linux.adb \
+   s-tasinf.ads<s-tasinf-linux.ads \
+   s-tasinf.adb<s-tasinf-linux.adb \
+-  s-taspri.ads<s-taspri-posix.ads \
++  s-taspri.ads<s-taspri-posix-noaltstack.ads \
+   s-tpopsp.adb<s-tpopsp-posix-foreign.adb \
+   system.ads<system-linux-mips.ads
+ 
++  TOOLS_TARGET_PAIRS =  \
++    mlib-tgt-specific.adb<mlib-tgt-specific-linux.adb \
++    indepsw.adb<indepsw-gnu.adb
++
++  EXTRA_GNATRTL_TASKING_OBJS=s-linux.o
+   EH_MECHANISM=-gcc
+   THREADSLIB = -lpthread
+   GNATLIB_SHARED = gnatlib-shared-dual
diff --git a/debian/patches/ada-nobiarch-check.diff b/debian/patches/ada-nobiarch-check.diff
new file mode 100644
index 0000000..d868fe4
--- /dev/null
+++ b/debian/patches/ada-nobiarch-check.diff
@@ -0,0 +1,20 @@
+# DP: For biarch builds, disable the gnat testsuite for the non-default
+# architecture (no biarch support in gnat yet).
+
+Index: b/src/gcc/Makefile.in
+===================================================================
+--- a/src/gcc/Makefile.in
++++ b/src/gcc/Makefile.in
+@@ -4510,7 +4510,11 @@
+ 	if [ -f $${rootme}/../expect/expect ] ; then  \
+ 	   TCL_LIBRARY=`cd .. ; cd $${srcdir}/../tcl/library ; ${PWD_COMMAND}` ; \
+ 	    export TCL_LIBRARY ; fi ; \
+-	$(RUNTEST) --tool $* $(RUNTESTFLAGS))
++	if [ "$*" = gnat ]; then \
++	  runtestflags="`echo '$(RUNTESTFLAGS)' | sed -r 's/,-m(32|64|x32)//g;s/,-mabi=(n32|64)//g'`"; \
++	  case "$$runtestflags" in *\\{\\}) runtestflags=; esac; \
++	fi; \
++	$(RUNTEST) --tool $* $$runtestflags)
+ 
+ $(patsubst %,%-subtargets,$(filter-out $(lang_checks_parallelized),$(lang_checks))): check-%-subtargets:
+ 	@echo check-$*
diff --git a/debian/patches/ada-revert-pr63225.diff b/debian/patches/ada-revert-pr63225.diff
new file mode 100644
index 0000000..5355777
--- /dev/null
+++ b/debian/patches/ada-revert-pr63225.diff
@@ -0,0 +1,97 @@
+# DP: Revert the changes made to allow bootstrapping with -fno-inline.
+# DP: We allow inlining during bootstrap and this change breaks aliversion compatibility
+# DP: with earlier uploads of libgnatvsn5.  This patch shall be removed in the next
+# DP: major version of GNAT.
+
+Index: b/src/gcc/ada/uintp.adb
+===================================================================
+--- a/src/gcc/ada/uintp.adb
++++ b/src/gcc/ada/uintp.adb
+@@ -171,6 +171,22 @@ package body Uintp is
+    --  If Discard_Quotient is True, Quotient is set to No_Uint
+    --  If Discard_Remainder is True, Remainder is set to No_Uint
+ 
++   function Vector_To_Uint
++     (In_Vec   : UI_Vector;
++      Negative : Boolean) return Uint;
++   --  Functions that calculate values in UI_Vectors, call this function to
++   --  create and return the Uint value. In_Vec contains the multiple precision
++   --  (Base) representation of a non-negative value. Leading zeroes are
++   --  permitted. Negative is set if the desired result is the negative of the
++   --  given value. The result will be either the appropriate directly
++   --  represented value, or a table entry in the proper canonical format is
++   --  created and returned.
++   --
++   --  Note that Init_Operand puts a signed value in the result vector, but
++   --  Vector_To_Uint is always presented with a non-negative value. The
++   --  processing of signs is something that is done by the caller before
++   --  calling Vector_To_Uint.
++
+    ------------
+    -- Direct --
+    ------------
+Index: b/src/gcc/ada/uintp.ads
+===================================================================
+--- a/src/gcc/ada/uintp.ads
++++ b/src/gcc/ada/uintp.ads
+@@ -90,18 +90,6 @@ package Uintp is
+    Uint_Minus_80  : constant Uint;
+    Uint_Minus_128 : constant Uint;
+ 
+-   type UI_Vector is array (Pos range <>) of Int;
+-   --  Vector containing the integer values of a Uint value
+-
+-   --  Note: An earlier version of this package used pointers of arrays of Ints
+-   --  (dynamically allocated) for the Uint type. The change leads to a few
+-   --  less natural idioms used throughout this code, but eliminates all uses
+-   --  of the heap except for the table package itself. For example, Uint
+-   --  parameters are often converted to UI_Vectors for internal manipulation.
+-   --  This is done by creating the local UI_Vector using the function N_Digits
+-   --  on the Uint to find the size needed for the vector, and then calling
+-   --  Init_Operand to copy the values out of the table into the vector.
+-
+    -----------------
+    -- Subprograms --
+    -----------------
+@@ -264,22 +252,6 @@ package Uintp is
+    --  function is used for capacity checks, and it can be one bit off
+    --  without affecting its usage.
+ 
+-   function Vector_To_Uint
+-     (In_Vec   : UI_Vector;
+-      Negative : Boolean) return Uint;
+-   --  Functions that calculate values in UI_Vectors, call this function to
+-   --  create and return the Uint value. In_Vec contains the multiple precision
+-   --  (Base) representation of a non-negative value. Leading zeroes are
+-   --  permitted. Negative is set if the desired result is the negative of the
+-   --  given value. The result will be either the appropriate directly
+-   --  represented value, or a table entry in the proper canonical format is
+-   --  created and returned.
+-   --
+-   --  Note that Init_Operand puts a signed value in the result vector, but
+-   --  Vector_To_Uint is always presented with a non-negative value. The
+-   --  processing of signs is something that is done by the caller before
+-   --  calling Vector_To_Uint.
+-
+    ---------------------
+    -- Output Routines --
+    ---------------------
+@@ -527,6 +499,18 @@ private
+    --  UI_Vector is defined for this purpose and some internal subprograms
+    --  used for converting from one to the other are defined.
+ 
++   type UI_Vector is array (Pos range <>) of Int;
++   --  Vector containing the integer values of a Uint value
++
++   --  Note: An earlier version of this package used pointers of arrays of Ints
++   --  (dynamically allocated) for the Uint type. The change leads to a few
++   --  less natural idioms used throughout this code, but eliminates all uses
++   --  of the heap except for the table package itself. For example, Uint
++   --  parameters are often converted to UI_Vectors for internal manipulation.
++   --  This is done by creating the local UI_Vector using the function N_Digits
++   --  on the Uint to find the size needed for the vector, and then calling
++   --  Init_Operand to copy the values out of the table into the vector.
++
+    type Uint_Entry is record
+       Length : Pos;
+       --  Length of entry in Udigits table in digits (i.e. in words)
diff --git a/debian/patches/ada-s-osinte-gnu.ads.diff b/debian/patches/ada-s-osinte-gnu.ads.diff
new file mode 100644
index 0000000..829e78a
--- /dev/null
+++ b/debian/patches/ada-s-osinte-gnu.ads.diff
@@ -0,0 +1,753 @@
+--- /dev/null	2012-01-30 20:41:15.189616186 +0100
++++ b/src/gcc/ada/s-osinte-gnu.ads	2012-04-11 19:34:45.000000000 +0200
+@@ -0,0 +1,750 @@
++------------------------------------------------------------------------------
++--                                                                          --
++--                GNU ADA RUN-TIME LIBRARY (GNARL) COMPONENTS               --
++--                                                                          --
++--                   S Y S T E M . O S _ I N T E R F A C E                  --
++--                                                                          --
++--                                  S p e c                                 --
++--                                                                          --
++--             Copyright (C) 1991-1994, Florida State University            --
++--          Copyright (C) 1995-2011, Free Software Foundation, Inc.         --
++--                                                                          --
++-- GNARL is free software; you can  redistribute it  and/or modify it under --
++-- terms of the  GNU General Public License as published  by the Free Soft- --
++-- ware  Foundation;  either version 2,  or (at your option) any later ver- --
++-- sion. GNARL is distributed in the hope that it will be useful, but WITH- --
++-- OUT 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  distributed with GNARL; see file COPYING.  If not, write --
++-- to  the  Free Software Foundation,  51  Franklin  Street,  Fifth  Floor, --
++-- Boston, MA 02110-1301, USA.                                              --
++--                                                                          --
++-- As a special exception,  if other files  instantiate  generics from this --
++-- unit, or you link  this unit with other files  to produce an executable, --
++-- this  unit  does not  by itself cause  the resulting  executable  to  be --
++-- covered  by the  GNU  General  Public  License.  This exception does not --
++-- however invalidate  any other reasons why  the executable file  might be --
++-- covered by the  GNU Public License.                                      --
++--                                                                          --
++-- GNARL was developed by the GNARL team at Florida State University.       --
++-- Extensive contributions were provided by Ada Core Technologies, Inc.     --
++--                                                                          --
++------------------------------------------------------------------------------
++
++--  This is the GNU/Hurd version of this package
++
++--  This package encapsulates all direct interfaces to OS services
++--  that are needed by children of System.
++
++--  PLEASE DO NOT add any with-clauses to this package or remove the pragma
++--  Preelaborate. This package is designed to be a bottom-level (leaf) package
++
++with Interfaces.C;
++with Unchecked_Conversion;
++
++package System.OS_Interface is
++   pragma Preelaborate;
++
++   pragma Linker_Options ("-lpthread");
++   pragma Linker_Options ("-lrt");
++
++   subtype int            is Interfaces.C.int;
++   subtype char           is Interfaces.C.char;
++   subtype short          is Interfaces.C.short;
++   subtype long           is Interfaces.C.long;
++   subtype unsigned       is Interfaces.C.unsigned;
++   subtype unsigned_short is Interfaces.C.unsigned_short;
++   subtype unsigned_long  is Interfaces.C.unsigned_long;
++   subtype unsigned_char  is Interfaces.C.unsigned_char;
++   subtype plain_char     is Interfaces.C.plain_char;
++   subtype size_t         is Interfaces.C.size_t;
++
++   -----------
++   -- Errno --
++   -----------
++   --  From /usr/include/i386-gnu/bits/errno.h
++
++   function errno return int;
++   pragma Import (C, errno, "__get_errno");
++
++   EAGAIN   : constant := 1073741859;
++   EINTR    : constant := 1073741828;
++   EINVAL   : constant := 1073741846;
++   ENOMEM   : constant := 1073741836;
++   EPERM    : constant := 1073741825;
++   ETIMEDOUT    : constant := 1073741884;
++
++   -------------
++   -- Signals --
++   -------------
++   --  From /usr/include/i386-gnu/bits/signum.h
++
++   Max_Interrupt : constant := 32;
++   type Signal is new int range 0 .. Max_Interrupt;
++   for Signal'Size use int'Size;
++
++   SIGHUP     : constant := 1; --  hangup
++   SIGINT     : constant := 2; --  interrupt (rubout)
++   SIGQUIT    : constant := 3; --  quit (ASCD FS)
++   SIGILL     : constant := 4; --  illegal instruction (not reset)
++   SIGTRAP    : constant := 5; --  trace trap (not reset)
++   SIGIOT     : constant := 6; --  IOT instruction
++   SIGABRT    : constant := 6; --  used by abort, replace SIGIOT in the  future
++   SIGEMT     : constant := 7; --  EMT instruction
++   SIGFPE     : constant := 8; --  floating point exception
++   SIGKILL    : constant := 9; --  kill (cannot be caught or ignored)
++   SIGBUS     : constant := 10; --  bus error
++   SIGSEGV    : constant := 11; --  segmentation violation
++   SIGSYS     : constant := 12; --  bad argument to system call
++   SIGPIPE    : constant := 13; --  write on a pipe with no one to read it
++   SIGALRM    : constant := 14; --  alarm clock
++   SIGTERM    : constant := 15; --  software termination signal from kill
++   SIGURG     : constant := 16; --  urgent condition on IO channel
++   SIGSTOP    : constant := 17; --  stop (cannot be caught or ignored)
++   SIGTSTP    : constant := 18; --  user stop requested from tty
++   SIGCONT    : constant := 19; --  stopped process has been continued
++   SIGCLD     : constant := 20; --  alias for SIGCHLD
++   SIGCHLD    : constant := 20; --  child status change
++   SIGTTIN    : constant := 21; --  background tty read attempted
++   SIGTTOU    : constant := 22; --  background tty write attempted
++   SIGIO      : constant := 23; --  I/O possible (Solaris SIGPOLL alias)
++   SIGPOLL    : constant := 23; --  I/O possible (same as SIGIO?)
++   SIGXCPU    : constant := 24; --  CPU time limit exceeded
++   SIGXFSZ    : constant := 25; --  filesize limit exceeded
++   SIGVTALRM  : constant := 26; --  virtual timer expired
++   SIGPROF    : constant := 27; --  profiling timer expired
++   SIGWINCH   : constant := 28; --  window size change
++   SIGINFO    : constant := 29; --  information request (NetBSD/FreeBSD)
++   SIGUSR1    : constant := 30; --  user defined signal 1
++   SIGUSR2    : constant := 31; --  user defined signal 2
++   SIGLOST    : constant := 32; --  Resource lost (Sun); server died (GNU)
++--   SIGLTHRRES : constant := 32; --  GNU/LinuxThreads restart signal
++--   SIGLTHRCAN : constant := 33; --  GNU/LinuxThreads cancel signal
++--   SIGLTHRDBG : constant := 34; --  GNU/LinuxThreads debugger signal
++
++   SIGADAABORT : constant := SIGABRT;
++   --  Change this if you want to use another signal for task abort.
++   --  SIGTERM might be a good one.
++
++   type Signal_Set is array (Natural range <>) of Signal;
++
++   Unmasked    : constant Signal_Set := (
++      SIGTRAP,
++      --  To enable debugging on multithreaded applications, mark SIGTRAP to
++      --  be kept unmasked.
++
++      SIGBUS,
++
++      SIGTTIN, SIGTTOU, SIGTSTP,
++      --  Keep these three signals unmasked so that background processes
++      --  and IO behaves as normal "C" applications
++
++      SIGPROF,
++      --  To avoid confusing the profiler
++
++      SIGKILL, SIGSTOP);
++      --  These two signals actually cannot be masked;
++      --  POSIX simply won't allow it.
++
++   Reserved    : constant Signal_Set :=
++   --  I am not sure why the following signal is reserved.
++   --  I guess they are not supported by this version of GNU/Hurd.
++     (0 .. 0 => SIGVTALRM);
++
++   type sigset_t is private;
++
++   --  From /usr/include/signal.h /usr/include/i386-gnu/bits/sigset.h
++   function sigaddset (set : access sigset_t; sig : Signal) return int;
++   pragma Import (C, sigaddset, "sigaddset");
++
++   function sigdelset (set : access sigset_t; sig : Signal) return int;
++   pragma Import (C, sigdelset, "sigdelset");
++
++   function sigfillset (set : access sigset_t) return int;
++   pragma Import (C, sigfillset, "sigfillset");
++
++   function sigismember (set : access sigset_t; sig : Signal) return int;
++   pragma Import (C, sigismember, "sigismember");
++
++   function sigemptyset (set : access sigset_t) return int;
++   pragma Import (C, sigemptyset, "sigemptyset");
++
++   --  sigcontext is architecture dependent, so define it private
++   type struct_sigcontext is private;
++
++   --  From /usr/include/i386-gnu/bits/sigaction.h: Note: arg. order differs
++   type struct_sigaction is record
++      sa_handler : System.Address;
++      sa_mask    : sigset_t;
++      sa_flags   : int;
++   end record;
++   pragma Convention (C, struct_sigaction);
++
++   type struct_sigaction_ptr is access all struct_sigaction;
++
++   --  From /usr/include/i386-gnu/bits/sigaction.h
++   SIG_BLOCK   : constant := 1;
++   SIG_UNBLOCK : constant := 2;
++   SIG_SETMASK : constant := 3;
++
++   --  From /usr/include/i386-gnu/bits/signum.h
++   SIG_ERR  : constant := 1;
++   SIG_DFL  : constant := 0;
++   SIG_IGN  : constant := 1;
++   SIG_HOLD : constant := 2;
++
++   --  From /usr/include/i386-gnu/bits/sigaction.h
++   SA_SIGINFO : constant := 16#0040#;
++   SA_ONSTACK : constant := 16#0001#;
++
++   function sigaction
++     (sig  : Signal;
++      act  : struct_sigaction_ptr;
++      oact : struct_sigaction_ptr) return int;
++   pragma Import (C, sigaction, "sigaction");
++
++   ----------
++   -- Time --
++   ----------
++
++   Time_Slice_Supported : constant Boolean := True;
++   --  Indicates whether time slicing is supported (i.e SCHED_RR is supported)
++
++   type timespec is private;
++
++   function nanosleep (rqtp, rmtp : access timespec) return int;
++   pragma Import (C, nanosleep, "nanosleep");
++
++   type clockid_t is private;
++
++   CLOCK_REALTIME : constant clockid_t;
++
++   --  From: /usr/include/time.h
++   function clock_gettime
++     (clock_id : clockid_t;
++      tp       : access timespec)
++      return int;
++   pragma Import (C, clock_gettime, "clock_gettime");
++
++   function To_Duration (TS : timespec) return Duration;
++   pragma Inline (To_Duration);
++
++   function To_Timespec (D : Duration) return timespec;
++   pragma Inline (To_Timespec);
++
++   --  From: /usr/include/unistd.h
++   function sysconf (name : int) return long;
++   pragma Import (C, sysconf);
++
++   --  From /usr/include/i386-gnu/bits/confname.h
++   SC_CLK_TCK          : constant := 2;
++   SC_NPROCESSORS_ONLN : constant := 84;
++
++   -------------------------
++   -- Priority Scheduling --
++   -------------------------
++   --  From /usr/include/i386-gnu/bits/sched.h
++
++   SCHED_OTHER : constant := 0;
++   SCHED_FIFO  : constant := 1;
++   SCHED_RR    : constant := 2;
++
++   function To_Target_Priority
++     (Prio : System.Any_Priority) return Interfaces.C.int;
++   --  Maps System.Any_Priority to a POSIX priority.
++
++   -------------
++   -- Process --
++   -------------
++
++   type pid_t is private;
++
++   --  From: /usr/include/signal.h
++   function kill (pid : pid_t; sig : Signal) return int;
++   pragma Import (C, kill, "kill");
++
++   --  From: /usr/include/unistd.h
++   function getpid return pid_t;
++   pragma Import (C, getpid, "getpid");
++
++   ---------
++   -- LWP --
++   ---------
++
++   --  From: /usr/include/pthread/pthread.h
++   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 --
++   -------------
++
++   type Thread_Body is access
++     function (arg : System.Address) return System.Address;
++   pragma Convention (C, Thread_Body);
++
++   function Thread_Body_Access is new
++     Unchecked_Conversion (System.Address, Thread_Body);
++
++   --  From: /usr/include/bits/pthread.h:typedef int __pthread_t;
++   --  /usr/include/pthread/pthreadtypes.h:typedef __pthread_t pthread_t;
++   type pthread_t is new unsigned_long;
++   subtype Thread_Id        is pthread_t;
++
++   function To_pthread_t is new Unchecked_Conversion
++     (unsigned_long, pthread_t);
++
++   type pthread_mutex_t     is limited private;
++   type pthread_cond_t      is limited private;
++   type pthread_attr_t      is limited private;
++   type pthread_mutexattr_t is limited private;
++   type pthread_condattr_t  is limited private;
++   type pthread_key_t       is private;
++
++   --  From /usr/include/pthread/pthreadtypes.h
++   PTHREAD_CREATE_DETACHED : constant := 1;
++   PTHREAD_CREATE_JOINABLE : constant := 0;
++
++   PTHREAD_SCOPE_PROCESS : constant := 1;
++   PTHREAD_SCOPE_SYSTEM  : constant := 0;
++
++   -----------
++   -- Stack --
++   -----------
++
++   --  From: /usr/include/i386-gnu/bits/sigstack.h
++   type stack_t is record
++      ss_sp    : System.Address;
++      ss_size  : size_t;
++      ss_flags : int;
++   end record;
++   pragma Convention (C, stack_t);
++
++   function sigaltstack
++     (ss  : not null access stack_t;
++      oss : access stack_t) return int;
++   pragma Import (C, sigaltstack, "sigaltstack");
++
++   Alternate_Stack : aliased System.Address;
++   --  This is a dummy definition, never used (Alternate_Stack_Size is null)
++
++   Alternate_Stack_Size : constant := 0;
++   --  No alternate signal stack is used on this platform
++
++   Stack_Base_Available : constant Boolean := False;
++   --  Indicates whether the stack base is available on this target
++
++   function Get_Stack_Base (thread : pthread_t) return Address;
++   pragma Inline (Get_Stack_Base);
++   --  returns the stack base of the specified thread. Only call this function
++   --  when Stack_Base_Available is True.
++
++   --  From: /usr/include/i386-gnu/bits/shm.h __getpagesize or getpagesize??
++   function Get_Page_Size return size_t;
++   function Get_Page_Size return Address;
++   pragma Import (C, Get_Page_Size, "__getpagesize");
++   --  Returns the size of a page
++
++   --  From /usr/include/i386-gnu/bits/mman.h
++   PROT_NONE  : constant := 0;
++   PROT_READ  : constant := 4;
++   PROT_WRITE : constant := 2;
++   PROT_EXEC  : constant := 1;
++   PROT_ALL   : constant := PROT_READ + PROT_WRITE + PROT_EXEC;
++   PROT_ON    : constant := PROT_NONE;
++   PROT_OFF   : constant := PROT_ALL;
++
++   --  From /usr/include/i386-gnu/bits/mman.h
++   function mprotect (addr : Address; len : size_t; prot : int) return int;
++   pragma Import (C, mprotect);
++
++   ---------------------------------------
++   -- Nonstandard Thread Initialization --
++   ---------------------------------------
++
++   procedure pthread_init;
++   pragma Inline (pthread_init);
++   --  This is a dummy procedure to share some GNULLI files
++
++   -------------------------
++   -- POSIX.1c  Section 3 --
++   -------------------------
++
++   --  From: /usr/include/signal.h:
++   --  sigwait (__const sigset_t *__restrict __set, int *__restrict __sig)
++   function sigwait (set : access sigset_t; sig : access Signal) return int;
++   pragma Import (C, sigwait, "sigwait");
++
++   --  From: /usr/include/pthread/pthread.h:
++   --  extern int pthread_kill (pthread_t thread, int signo);
++   function pthread_kill (thread : pthread_t; sig : Signal) return int;
++   pragma Import (C, pthread_kill, "pthread_kill");
++
++   --  From: /usr/include/i386-gnu/bits/sigthread.h
++   --  extern int pthread_sigmask (int __how, __const __sigset_t *__newmask,
++   --  __sigset_t *__oldmask) __THROW;
++   function pthread_sigmask
++     (how  : int;
++      set  : access sigset_t;
++      oset : access sigset_t) return int;
++   pragma Import (C, pthread_sigmask, "pthread_sigmask");
++
++   --------------------------
++   -- POSIX.1c  Section 11 --
++   --------------------------
++
++   --  From: /usr/include/pthread/pthread.h and
++   --  /usr/include/pthread/pthreadtypes.h
++   function pthread_mutexattr_init
++     (attr : access pthread_mutexattr_t) return int;
++   pragma Import (C, pthread_mutexattr_init, "pthread_mutexattr_init");
++
++   function pthread_mutexattr_destroy
++     (attr : access pthread_mutexattr_t) return int;
++   pragma Import (C, pthread_mutexattr_destroy, "pthread_mutexattr_destroy");
++
++   function pthread_mutex_init
++     (mutex : access pthread_mutex_t;
++      attr  : access pthread_mutexattr_t) return int;
++   pragma Import (C, pthread_mutex_init, "pthread_mutex_init");
++
++   function pthread_mutex_destroy (mutex : access pthread_mutex_t) return int;
++   pragma Import (C, pthread_mutex_destroy, "pthread_mutex_destroy");
++
++   function pthread_mutex_lock (mutex : access pthread_mutex_t) return int;
++   pragma Import (C, pthread_mutex_lock, "pthread_mutex_lock");
++
++   function pthread_mutex_unlock (mutex : access pthread_mutex_t) return int;
++   pragma Import (C, pthread_mutex_unlock, "pthread_mutex_unlock");
++
++   function pthread_condattr_init
++     (attr : access pthread_condattr_t) return int;
++   pragma Import (C, pthread_condattr_init, "pthread_condattr_init");
++
++   function pthread_condattr_destroy
++     (attr : access pthread_condattr_t) return int;
++   pragma Import (C, pthread_condattr_destroy, "pthread_condattr_destroy");
++
++   function pthread_cond_init
++     (cond : access pthread_cond_t;
++      attr : access pthread_condattr_t) return int;
++   pragma Import (C, pthread_cond_init, "pthread_cond_init");
++
++   function pthread_cond_destroy (cond : access pthread_cond_t) return int;
++   pragma Import (C, pthread_cond_destroy, "pthread_cond_destroy");
++
++   function pthread_cond_signal (cond : access pthread_cond_t) return int;
++   pragma Import (C, pthread_cond_signal, "pthread_cond_signal");
++
++   function pthread_cond_wait
++     (cond  : access pthread_cond_t;
++      mutex : access pthread_mutex_t) return int;
++   pragma Import (C, pthread_cond_wait, "pthread_cond_wait");
++
++   function pthread_cond_timedwait
++     (cond    : access pthread_cond_t;
++      mutex   : access pthread_mutex_t;
++      abstime : access timespec) return int;
++   pragma Import (C, pthread_cond_timedwait, "pthread_cond_timedwait");
++
++   Relative_Timed_Wait : constant Boolean := False;
++   --  pthread_cond_timedwait requires an absolute delay time
++
++   --------------------------
++   -- POSIX.1c  Section 13 --
++   --------------------------
++   --  From /usr/include/pthread/pthreadtypes.h
++
++   PTHREAD_PRIO_NONE    : constant := 0;
++   PTHREAD_PRIO_PROTECT : constant := 2;
++   PTHREAD_PRIO_INHERIT : constant := 1;
++
++   --  From: /usr/include/pthread/pthread.h
++   function pthread_mutexattr_setprotocol
++     (attr     : access pthread_mutexattr_t;
++      protocol : int) return int;
++   pragma Import (C, pthread_mutexattr_setprotocol,
++     "pthread_mutexattr_setprotocol");
++
++   function pthread_mutexattr_getprotocol
++     (attr     : access pthread_mutexattr_t;
++      protocol : access int) return int;
++   pragma Import (C, pthread_mutexattr_getprotocol,
++     "pthread_mutexattr_getprotocol");
++
++   function pthread_mutexattr_setprioceiling
++     (attr     : access pthread_mutexattr_t;
++      prioceiling : int) return int;
++   pragma Import (C, pthread_mutexattr_setprioceiling,
++     "pthread_mutexattr_setprioceiling");
++
++   function pthread_mutexattr_getprioceiling
++     (attr     : access pthread_mutexattr_t;
++      prioceiling : access int) return int;
++   pragma Import (C, pthread_mutexattr_getprioceiling,
++     "pthread_mutexattr_getprioceiling");
++
++   type struct_sched_param is record
++      sched_priority : int;  --  scheduling priority
++   end record;
++   pragma Convention (C, struct_sched_param);
++
++   function pthread_setschedparam
++     (thread : pthread_t;
++      policy : int;
++      param  : access struct_sched_param) return int;
++   pragma Import (C, pthread_setschedparam, "pthread_setschedparam");
++
++   function pthread_attr_setscope
++     (attr            : access pthread_attr_t;
++      contentionscope : int) return int;
++   pragma Import (C, pthread_attr_setscope, "pthread_attr_setscope");
++
++   function pthread_attr_getscope
++     (attr            : access pthread_attr_t;
++      contentionscope : access int) return int;
++   pragma Import (C, pthread_attr_getscope, "pthread_attr_getscope");
++
++   function pthread_attr_setinheritsched
++     (attr            : access pthread_attr_t;
++      inheritsched : int) return int;
++   pragma Import (C, pthread_attr_setinheritsched,
++     "pthread_attr_setinheritsched");
++
++   function pthread_attr_getinheritsched
++     (attr         : access pthread_attr_t;
++      inheritsched : access int) return int;
++   pragma Import (C, pthread_attr_getinheritsched,
++     "pthread_attr_getinheritsched");
++
++   function pthread_attr_setschedpolicy
++     (attr   : access pthread_attr_t;
++      policy : int) return int;
++   pragma Import (C, pthread_attr_setschedpolicy, "pthread_setschedpolicy");
++
++   function sched_yield return int;
++   pragma Import (C, sched_yield, "sched_yield");
++
++   ---------------------------
++   -- P1003.1c - Section 16 --
++   ---------------------------
++
++   function pthread_attr_init
++     (attributes : access pthread_attr_t) return int;
++   pragma Import (C, pthread_attr_init, "pthread_attr_init");
++
++   function pthread_attr_destroy
++     (attributes : access pthread_attr_t) return int;
++   pragma Import (C, pthread_attr_destroy, "pthread_attr_destroy");
++
++   function pthread_attr_setdetachstate
++     (attr        : access pthread_attr_t;
++      detachstate : int) return int;
++   pragma Import
++     (C, pthread_attr_setdetachstate, "pthread_attr_setdetachstate");
++
++   function pthread_attr_setstacksize
++     (attr      : access pthread_attr_t;
++      stacksize : size_t) return int;
++   pragma Import (C, pthread_attr_setstacksize, "pthread_attr_setstacksize");
++
++   --  From: /usr/include/pthread/pthread.h
++   function pthread_create
++     (thread        : access pthread_t;
++      attributes    : access pthread_attr_t;
++      start_routine : Thread_Body;
++      arg           : System.Address) return int;
++   pragma Import (C, pthread_create, "pthread_create");
++
++   procedure pthread_exit (status : System.Address);
++   pragma Import (C, pthread_exit, "pthread_exit");
++
++   function pthread_self return pthread_t;
++   pragma Import (C, pthread_self, "pthread_self");
++
++   --------------------------
++   -- POSIX.1c  Section 17 --
++   --------------------------
++
++   function pthread_setspecific
++     (key   : pthread_key_t;
++      value : System.Address) return int;
++   pragma Import (C, pthread_setspecific, "pthread_setspecific");
++
++   function pthread_getspecific (key : pthread_key_t) return System.Address;
++   pragma Import (C, pthread_getspecific, "pthread_getspecific");
++
++   type destructor_pointer is access procedure (arg : System.Address);
++   pragma Convention (C, destructor_pointer);
++
++   function pthread_key_create
++     (key        : access pthread_key_t;
++      destructor : destructor_pointer) return int;
++   pragma Import (C, pthread_key_create, "pthread_key_create");
++
++   --  From /usr/include/i386-gnu/bits/sched.h
++   --  1_024 == 1024??
++   CPU_SETSIZE : constant := 1_024;
++
++   type bit_field is array (1 .. CPU_SETSIZE) of Boolean;
++   for bit_field'Size use CPU_SETSIZE;
++   pragma Pack (bit_field);
++   pragma Convention (C, bit_field);
++
++   type cpu_set_t is record
++      bits : bit_field;
++   end record;
++   pragma Convention (C, cpu_set_t);
++
++   --  function pthread_setaffinity_np
++   --  (thread     : pthread_t;
++   --   cpusetsize : size_t;
++   --   cpuset     : access cpu_set_t) return int;
++   --   pragma Import (C, pthread_setaffinity_np,
++   --   "__gnat_pthread_setaffinity_np");
++
++private
++
++   type sigset_t is array (1 .. 4) of unsigned;
++
++   --  FIXME:
++   --  In GNU/Hurd the component sa_handler turns out to
++   --  be one a union type, and the selector is a macro:
++   --  #define sa_handler __sigaction_handler.sa_handler
++   --  #define sa_sigaction __sigaction_handler.sa_sigaction
++
++   --  In FreeBSD the component sa_handler turns out to
++   --  be one a union type, and the selector is a macro:
++   --  #define sa_handler __sigaction_u._handler
++   --  #define sa_sigaction __sigaction_u._sigaction
++
++   --  Should we add a signal_context type here ?
++   --  How could it be done independent of the CPU architecture ?
++   --  sigcontext type is opaque, so it is architecturally neutral.
++   --  It is always passed as an access type, so define it as an empty record
++   --  since the contents are not used anywhere.
++   type struct_sigcontext is null record;
++   pragma Convention (C, struct_sigcontext);
++
++   type pid_t is new int;
++
++   type time_t is new long;
++
++   type timespec is record
++      tv_sec  : time_t;
++      tv_nsec : long;
++   end record;
++   pragma Convention (C, timespec);
++
++   type clockid_t is new int;
++   CLOCK_REALTIME : constant clockid_t := 0;
++
++   --  From: /usr/include/pthread/pthreadtypes.h:
++   --  typedef struct __pthread_attr pthread_attr_t;
++   --  /usr/include/bits/thread-attr.h: struct __pthread_attr...
++   --  /usr/include/pthread/pthreadtypes.h: enum __pthread_contentionscope
++   --   enum __pthread_detachstate detachstate;
++   --   enum __pthread_inheritsched inheritsched;
++   --   enum __pthread_contentionscope contentionscope;
++   --   Not used: schedpolicy   : int;
++   type pthread_attr_t is record
++      schedparam    : struct_sched_param;
++      stackaddr     : System.Address;
++      stacksize     : size_t;
++      guardsize     : size_t;
++      detachstate   : int;
++      inheritsched  : int;
++      contentionscope : int;
++      schedpolicy   : int;
++   end record;
++   pragma Convention (C, pthread_attr_t);
++
++   --  From: /usr/include/pthread/pthreadtypes.h:
++   --  typedef struct __pthread_condattr pthread_condattr_t;
++   --  From: /usr/include/bits/condition-attr.h:
++   --  struct __pthread_condattr {
++   --    enum __pthread_process_shared pshared;
++   --    __Clockid_T Clock;}
++   --  From: /usr/include/pthread/pthreadtypes.h:
++   --  enum __pthread_process_shared
++   type pthread_condattr_t is record
++      pshared : int;
++      clock   : clockid_t;
++   end record;
++   pragma Convention (C, pthread_condattr_t);
++
++   --  From: /usr/include/pthread/pthreadtypes.h:
++   --  typedef struct __pthread_mutexattr pthread_mutexattr_t; and
++   --  /usr/include/bits/mutex-attr.h
++   --  struct __pthread_mutexattr {
++   --  Int Prioceiling;
++   --  Enum __Pthread_Mutex_Protocol Protocol;
++   --  Enum __Pthread_Process_Shared Pshared;
++   --  Enum __Pthread_Mutex_Type Mutex_Type;};
++   type pthread_mutexattr_t is record
++      prioceiling : int;
++      protocol    : int;
++      pshared     : int;
++      mutex_type  : int;
++   end record;
++   pragma Convention (C, pthread_mutexattr_t);
++
++   --  From: /usr/include/pthread/pthreadtypes.h
++   --  typedef struct __pthread_mutex pthread_mutex_t; and
++   --  /usr/include/bits/mutex.h:
++   --  struct __pthread_mutex {
++   --  __pthread_spinlock_t __held;
++   --  __pthread_spinlock_t __lock;
++   --  /* in cthreads, mutex_init does not initialized the third
++   --    pointer, as such, we cannot rely on its value for anything.  */
++   --    char *cthreadscompat1;
++   --  struct __pthread *__queue;
++   --  struct __pthread_mutexattr *attr;
++   --  void *data;
++   --  /*  up to this point, we are completely compatible with cthreads
++   --    and what libc expects.  */
++   --    void *owner;
++   --  unsigned locks;
++   --  /* if null then the default attributes apply.  */
++   --    };
++   type pthread_mutex_t is record
++      held          : int;
++      lock          : int;
++      cthreadcompat : System.Address;
++      queue         : System.Address;
++      attr          : System.Address;
++      data          : System.Address;
++      owner         : System.Address;
++      locks         : unsigned;
++   end record;
++   pragma Convention (C, pthread_mutex_t);
++   --  pointer needed?
++   --  type pthread_mutex_t_ptr is access pthread_mutex_t;
++
++   --  From: /usr/include/pthread/pthreadtypes.h:
++   --  typedef struct __pthread_cond pthread_cond_t;
++   --  typedef struct __pthread_condattr pthread_condattr_t;
++   --  /usr/include/bits/condition.h:struct __pthread_cond{}
++   --  pthread_condattr_t: see above!
++   --  /usr/include/bits/condition.h:    struct __pthread_condimpl *__impl;
++
++   type pthread_cond_t is record
++      lock       : int;
++      queue      : System.Address;
++      condattr   : System.Address;
++      impl       : System.Address;
++      data       : System.Address;
++   end record;
++   pragma Convention (C, pthread_cond_t);
++
++   --  From: /usr/include/pthread/pthreadtypes.h:
++   --  typedef __pthread_key pthread_key_t; and
++   --  /usr/include/bits/thread-specific.h:
++   --  typedef int __pthread_key;
++   type pthread_key_t is new int;
++
++end System.OS_Interface;
diff --git a/debian/patches/ada-sjlj.diff b/debian/patches/ada-sjlj.diff
new file mode 100644
index 0000000..7f922bb
--- /dev/null
+++ b/debian/patches/ada-sjlj.diff
@@ -0,0 +1,1033 @@
+Index: b/src/libada-sjlj/Makefile.in
+===================================================================
+--- /dev/null
++++ b/src/libada-sjlj/Makefile.in
+@@ -0,0 +1,201 @@
++# Makefile for libada.
++#   Copyright (C) 2003-2015 Free Software Foundation, Inc.
++#
++# This file is free software; you can redistribute it and/or modify
++# it under the terms of the GNU General Public License as published by
++# the Free Software Foundation; either version 3 of the License, or
++# (at your option) any later version.
++# 
++# This program 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 program; see the file COPYING3.  If not see
++# <http://www.gnu.org/licenses/>.
++
++# Default target; must be first.
++all: gnatlib
++	$(MULTIDO) $(AM_MAKEFLAGS) DO=all multi-do # $(MAKE)
++
++.PHONY: all
++
++## Multilib support variables.
++MULTISRCTOP =
++MULTIBUILDTOP =
++MULTIDIRS =
++MULTISUBDIR =
++MULTIDO = true
++MULTICLEAN = true
++
++# Standard autoconf-set variables.
++SHELL = @SHELL@
++srcdir = @srcdir@
++libdir = @libdir@
++build = @build@
++target = @target@
++prefix = @prefix@
++
++# Nonstandard autoconf-set variables.
++enable_shared = @enable_shared@
++
++LN_S=@LN_S@
++AWK=@AWK@
++
++ifeq (cp -p,$(LN_S))
++LN_S_RECURSIVE = cp -pR
++else
++LN_S_RECURSIVE = $(LN_S)
++endif
++
++# Variables for the user (or the top level) to override.
++objext=.o
++THREAD_KIND=native
++TRACE=no
++LDFLAGS=
++
++# The tedious process of getting CFLAGS right.
++CFLAGS=-g
++PICFLAG = @PICFLAG@
++GNATLIBFLAGS= -W -Wall -gnatpg -nostdinc
++GNATLIBCFLAGS= -g -O2
++GNATLIBCFLAGS_FOR_C = -W -Wall $(GNATLIBCFLAGS) \
++	-fexceptions -DIN_RTS @have_getipinfo@
++
++host_subdir = @host_subdir@
++GCC_DIR=$(MULTIBUILDTOP)../../$(host_subdir)/gcc
++
++target_noncanonical:=@target_noncanonical@
++version := $(shell cat $(srcdir)/../gcc/BASE-VER)
++libsubdir := $(libdir)/gcc/$(target_noncanonical)/$(version)$(MULTISUBDIR)
++ADA_RTS_DIR=$(GCC_DIR)/ada/rts$(subst /,_,$(MULTISUBDIR))
++ADA_RTS_SUBDIR=./rts$(subst /,_,$(MULTISUBDIR))
++
++# exeext should not be used because it's the *host* exeext.  We're building
++# a *target* library, aren't we?!?  Likewise for CC.  Still, provide bogus
++# definitions just in case something slips through the safety net provided
++# by recursive make invocations in gcc/ada/Makefile.in
++LIBADA_FLAGS_TO_PASS = \
++        "MAKEOVERRIDES=" \
++        "LDFLAGS=$(LDFLAGS)" \
++        "LN_S=$(LN_S)" \
++        "SHELL=$(SHELL)" \
++        "GNATLIBFLAGS=$(GNATLIBFLAGS) $(MULTIFLAGS)" \
++        "GNATLIBCFLAGS=$(GNATLIBCFLAGS) $(MULTIFLAGS)" \
++        "GNATLIBCFLAGS_FOR_C=$(GNATLIBCFLAGS_FOR_C) $(MULTIFLAGS)" \
++        "PICFLAG_FOR_TARGET=$(PICFLAG)" \
++        "THREAD_KIND=$(THREAD_KIND)" \
++        "TRACE=$(TRACE)" \
++        "MULTISUBDIR=$(MULTISUBDIR)" \
++        "libsubdir=$(libsubdir)" \
++        "objext=$(objext)" \
++        "prefix=$(prefix)" \
++        "exeext=.exeext.should.not.be.used " \
++	'CC=the.host.compiler.should.not.be.needed' \
++	"GCC_FOR_TARGET=$(CC)" \
++        "CFLAGS=$(CFLAGS)" \
++	"RTSDIR=rts-sjlj"
++
++# Rules to build gnatlib.
++.PHONY: gnatlib gnatlib-plain gnatlib-sjlj gnatlib-zcx gnatlib-shared osconstool
++gnatlib: gnatlib-sjlj
++
++gnatlib-plain: osconstool $(GCC_DIR)/ada/Makefile
++	test -f stamp-libada || \
++	$(MAKE) -C $(GCC_DIR)/ada $(LIBADA_FLAGS_TO_PASS) gnatlib \
++	&& touch stamp-libada
++	-rm -rf adainclude
++	-rm -rf adalib
++	$(LN_S_RECURSIVE) $(ADA_RTS_DIR) adainclude
++	$(LN_S_RECURSIVE) $(ADA_RTS_DIR) adalib
++
++gnatlib-sjlj gnatlib-zcx gnatlib-shared: osconstool $(GCC_DIR)/ada/Makefile
++	test -f stamp-libada || \
++	$(MAKE) -C $(GCC_DIR)/ada $(LIBADA_FLAGS_TO_PASS) $@ \
++	&& touch stamp-libada-sjlj
++	-rm -rf adainclude
++	-rm -rf adalib
++	$(LN_S_RECURSIVE) $(ADA_RTS_DIR) adainclude
++	$(LN_S_RECURSIVE) $(ADA_RTS_DIR) adalib
++
++osconstool:
++	$(MAKE) -C $(GCC_DIR)/ada $(LIBADA_FLAGS_TO_PASS) ./bldtools/oscons/xoscons
++
++install-gnatlib: $(GCC_DIR)/ada/Makefile
++	$(MAKE) -C $(GCC_DIR)/ada $(LIBADA_FLAGS_TO_PASS) install-gnatlib-sjlj
++
++# Check uninstalled version.
++check:
++
++# Check installed version.
++installcheck:
++
++# Build info (none here).
++info:
++
++# Build DVI (none here).
++dvi:
++
++# Build PDF (none here).
++pdf:
++
++# Build html (none here).
++html:
++
++# Build TAGS (none here).
++TAGS:
++
++.PHONY: check installcheck info dvi pdf html
++
++# Installation rules.
++install: install-gnatlib
++	$(MULTIDO) $(AM_MAKEFLAGS) DO=install multi-do # $(MAKE)
++
++install-strip: install
++
++install-info:
++
++install-pdf:
++
++install-html:
++
++.PHONY: install install-strip install-info install-pdf install-html
++
++# Cleaning rules.
++mostlyclean:
++	$(MULTICLEAN) $(AM_MAKEFLAGS) DO=mostlyclean multi-clean # $(MAKE)
++
++clean:
++	$(MULTICLEAN) $(AM_MAKEFLAGS) DO=clean multi-clean # $(MAKE)
++
++distclean:
++	$(MULTICLEAN) $(AM_MAKEFLAGS) DO=distclean multi-clean # $(MAKE)
++	$(RM) Makefile config.status config.log
++
++maintainer-clean:
++
++.PHONY: mostlyclean clean distclean maintainer-clean
++
++# Rules for rebuilding this Makefile.
++Makefile: $(srcdir)/Makefile.in config.status
++	CONFIG_FILES=$@ ; \
++	CONFIG_HEADERS= ; \
++	$(SHELL) ./config.status
++
++config.status: $(srcdir)/configure
++	$(SHELL) ./config.status --recheck
++
++AUTOCONF = autoconf
++configure_deps = \
++	$(srcdir)/configure.ac \
++	$(srcdir)/../config/acx.m4 \
++	$(srcdir)/../config/override.m4 \
++	$(srcdir)/../config/multi.m4
++
++$(srcdir)/configure: @MAINT@ $(configure_deps)
++	cd $(srcdir) && $(AUTOCONF)
++
++# Don't export variables to the environment, in order to not confuse
++# configure.
++.NOEXPORT:
+Index: b/src/libada-sjlj/configure.ac
+===================================================================
+--- /dev/null
++++ b/src/libada-sjlj/configure.ac
+@@ -0,0 +1,140 @@
++# Configure script for libada.
++#   Copyright (C) 2003-2015 Free Software Foundation, Inc.
++#
++# This file is free software; you can redistribute it and/or modify it
++# under the terms of the GNU General Public License as published by
++# the Free Software Foundation; either version 3 of the License, or
++# (at your option) any later version.
++#
++# This program 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 program; see the file COPYING3.  If not see
++# <http://www.gnu.org/licenses/>.
++
++sinclude(../config/acx.m4)
++sinclude(../config/multi.m4)
++sinclude(../config/override.m4)
++sinclude(../config/picflag.m4)
++sinclude(../config/unwind_ipinfo.m4)
++
++AC_INIT
++AC_PREREQ([2.64])
++
++AC_CONFIG_SRCDIR([Makefile.in])
++
++# Determine the host, build, and target systems
++AC_CANONICAL_BUILD
++AC_CANONICAL_HOST
++AC_CANONICAL_TARGET
++target_alias=${target_alias-$host_alias}
++
++# Determine the noncanonical target name, for directory use.
++ACX_NONCANONICAL_TARGET
++
++# Determine the target- and build-specific subdirectories
++GCC_TOPLEV_SUBDIRS
++
++# Command-line options.
++# Very limited version of AC_MAINTAINER_MODE.
++AC_ARG_ENABLE([maintainer-mode],
++  [AC_HELP_STRING([--enable-maintainer-mode],
++                 [enable make rules and dependencies not useful (and
++                  sometimes confusing) to the casual installer])],
++  [case ${enable_maintainer_mode} in
++     yes) MAINT='' ;;
++     no) MAINT='#' ;;
++     *) AC_MSG_ERROR([--enable-maintainer-mode must be yes or no]) ;;
++   esac
++   maintainer_mode=${enableval}],
++  [MAINT='#'])
++AC_SUBST([MAINT])dnl
++
++AM_ENABLE_MULTILIB(, ..)
++# Calculate toolexeclibdir
++# Also toolexecdir, though it's only used in toolexeclibdir
++case ${enable_version_specific_runtime_libs} in
++  yes)
++    # Need the gcc compiler version to know where to install libraries
++    # and header files if --enable-version-specific-runtime-libs option
++    # is selected.
++    toolexecdir='$(libdir)/gcc/$(target_alias)'
++    toolexeclibdir='$(toolexecdir)/$(gcc_version)$(MULTISUBDIR)'
++    ;;
++  no)
++    if test -n "$with_cross_host" &&
++       test x"$with_cross_host" != x"no"; then
++      # Install a library built with a cross compiler in tooldir, not libdir.
++      toolexecdir='$(exec_prefix)/$(target_alias)'
++      toolexeclibdir='$(toolexecdir)/lib'
++    else
++      toolexecdir='$(libdir)/gcc-lib/$(target_alias)'
++      toolexeclibdir='$(libdir)'
++    fi
++    multi_os_directory=`$CC -print-multi-os-directory`
++    case $multi_os_directory in
++      .) ;; # Avoid trailing /.
++      *) toolexeclibdir=$toolexeclibdir/$multi_os_directory ;;
++    esac
++    ;;
++esac
++AC_SUBST(toolexecdir)
++AC_SUBST(toolexeclibdir)
++#TODO: toolexeclibdir is currently disregarded
++
++# Check the compiler.
++# The same as in boehm-gc and libstdc++. Have to borrow it from there.
++# We must force CC to /not/ be precious variables; otherwise
++# the wrong, non-multilib-adjusted value will be used in multilibs.
++# As a side effect, we have to subst CFLAGS ourselves.
++
++m4_rename([_AC_ARG_VAR_PRECIOUS],[real_PRECIOUS])
++m4_define([_AC_ARG_VAR_PRECIOUS],[])
++AC_PROG_CC
++m4_rename_force([real_PRECIOUS],[_AC_ARG_VAR_PRECIOUS])
++
++AC_SUBST(CFLAGS)
++
++AC_ARG_ENABLE([shared],
++[AC_HELP_STRING([--disable-shared],
++                [don't provide a shared libgnat])],
++[
++case $enable_shared in
++  yes | no) ;;
++  *)
++    enable_shared=no
++    IFS="${IFS=         }"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
++    for pkg in $enableval; do
++      case $pkg in
++        ada | libada)
++          enable_shared=yes ;;
++      esac
++    done
++    IFS="$ac_save_ifs"
++    ;;
++esac
++], [enable_shared=yes])
++AC_SUBST([enable_shared])
++
++GCC_PICFLAG
++AC_SUBST([PICFLAG])
++
++# These must be passed down, or are needed by gcc/libgcc.mvars
++AC_PROG_AWK
++AC_PROG_LN_S
++
++# Check for _Unwind_GetIPInfo
++GCC_CHECK_UNWIND_GETIPINFO
++have_getipinfo=
++if test x$have_unwind_getipinfo = xyes; then
++  have_getipinfo=-DHAVE_GETIPINFO
++fi
++AC_SUBST(have_getipinfo)
++
++# Output: create a Makefile.
++AC_CONFIG_FILES([Makefile])
++
++AC_OUTPUT
+Index: b/src/Makefile.def
+===================================================================
+--- a/src/Makefile.def
++++ b/src/Makefile.def
+@@ -177,6 +177,13 @@ target_modules = { module= libada; no_in
+ 		   missing= TAGS;
+ 		   missing= install-info;
+ 		   missing= installcheck; };
++target_modules = { module= libada-sjlj; no_install=true; no_check=true;
++		   missing= info;
++		   missing= dvi;
++		   missing= html;
++		   missing= TAGS;
++		   missing= install-info;
++		   missing= installcheck; };
+ target_modules = { module= libgnatvsn; no_check=true;
+ 		   missing= info;
+ 		   missing= dvi;
+@@ -384,6 +391,7 @@ dependencies = { module=all-libcpp; on=a
+ dependencies = { module=all-fixincludes; on=all-libiberty; };
+ 
+ dependencies = { module=all-target-libada; on=all-gcc; };
++dependencies = { module=all-target-libada-sjlj; on=all-target-libada; };
+ dependencies = { module=all-gnattools; on=all-target-libada; };
+ dependencies = { module=all-gnattools; on=all-target-libgnatvsn; };
+ dependencies = { module=all-gnattools; on=all-target-libgnatprj; };
+Index: b/src/Makefile.in
+===================================================================
+--- a/src/Makefile.in
++++ b/src/Makefile.in
+@@ -964,6 +964,7 @@ configure-target:  \
+     maybe-configure-target-boehm-gc \
+     maybe-configure-target-rda \
+     maybe-configure-target-libada \
++    maybe-configure-target-libada-sjlj \
+     maybe-configure-target-libgnatvsn \
+     maybe-configure-target-libgnatprj \
+     maybe-configure-target-libgomp \
+@@ -1132,6 +1133,7 @@ all-target: maybe-all-target-zlib
+ all-target: maybe-all-target-boehm-gc
+ all-target: maybe-all-target-rda
+ all-target: maybe-all-target-libada
++all-target: maybe-all-target-libada-sjlj
+ all-target: maybe-all-target-libgnatvsn
+ all-target: maybe-all-target-libgnatprj
+ @if target-libgomp-no-bootstrap
+@@ -1229,6 +1231,7 @@ info-target: maybe-info-target-zlib
+ info-target: maybe-info-target-boehm-gc
+ info-target: maybe-info-target-rda
+ info-target: maybe-info-target-libada
++info-target: maybe-info-target-libada-sjlj
+ info-target: maybe-info-target-libgnatvsn
+ info-target: maybe-info-target-libgnatprj
+ info-target: maybe-info-target-libgomp
+@@ -1319,6 +1322,7 @@ dvi-target: maybe-dvi-target-zlib
+ dvi-target: maybe-dvi-target-boehm-gc
+ dvi-target: maybe-dvi-target-rda
+ dvi-target: maybe-dvi-target-libada
++dvi-target: maybe-dvi-target-libada-sjlj
+ dvi-target: maybe-dvi-target-libgnatvsn
+ dvi-target: maybe-dvi-target-libgnatprj
+ dvi-target: maybe-dvi-target-libgomp
+@@ -1409,6 +1413,7 @@ pdf-target: maybe-pdf-target-zlib
+ pdf-target: maybe-pdf-target-boehm-gc
+ pdf-target: maybe-pdf-target-rda
+ pdf-target: maybe-pdf-target-libada
++pdf-target: maybe-pdf-target-libada-sjlj
+ pdf-target: maybe-pdf-target-libgnatvsn
+ pdf-target: maybe-pdf-target-libgnatprj
+ pdf-target: maybe-pdf-target-libgomp
+@@ -1499,6 +1504,7 @@ html-target: maybe-html-target-zlib
+ html-target: maybe-html-target-boehm-gc
+ html-target: maybe-html-target-rda
+ html-target: maybe-html-target-libada
++html-target: maybe-html-target-libada-sjlj
+ html-target: maybe-html-target-libgnatvsn
+ html-target: maybe-html-target-libgnatprj
+ html-target: maybe-html-target-libgomp
+@@ -1589,6 +1595,7 @@ TAGS-target: maybe-TAGS-target-zlib
+ TAGS-target: maybe-TAGS-target-boehm-gc
+ TAGS-target: maybe-TAGS-target-rda
+ TAGS-target: maybe-TAGS-target-libada
++TAGS-target: maybe-TAGS-target-libada-sjlj
+ TAGS-target: maybe-TAGS-target-libgnatvsn
+ TAGS-target: maybe-TAGS-target-libgnatprj
+ TAGS-target: maybe-TAGS-target-libgomp
+@@ -1679,6 +1686,7 @@ install-info-target: maybe-install-info-
+ install-info-target: maybe-install-info-target-boehm-gc
+ install-info-target: maybe-install-info-target-rda
+ install-info-target: maybe-install-info-target-libada
++install-info-target: maybe-install-info-target-libada-sjlj
+ install-info-target: maybe-install-info-target-libgnatvsn
+ install-info-target: maybe-install-info-target-libgnatprj
+ install-info-target: maybe-install-info-target-libgomp
+@@ -1769,6 +1777,7 @@ install-pdf-target: maybe-install-pdf-ta
+ install-pdf-target: maybe-install-pdf-target-boehm-gc
+ install-pdf-target: maybe-install-pdf-target-rda
+ install-pdf-target: maybe-install-pdf-target-libada
++install-pdf-target: maybe-install-pdf-target-libada-sjlj
+ install-pdf-target: maybe-install-pdf-target-libgnatvsn
+ install-pdf-target: maybe-install-pdf-target-libgnatprj
+ install-pdf-target: maybe-install-pdf-target-libgomp
+@@ -1859,6 +1868,7 @@ install-html-target: maybe-install-html-
+ install-html-target: maybe-install-html-target-boehm-gc
+ install-html-target: maybe-install-html-target-rda
+ install-html-target: maybe-install-html-target-libada
++install-html-target: maybe-install-html-target-libada-sjlj
+ install-html-target: maybe-install-html-target-libgnatvsn
+ install-html-target: maybe-install-html-target-libgnatprj
+ install-html-target: maybe-install-html-target-libgomp
+@@ -1949,6 +1959,7 @@ installcheck-target: maybe-installcheck-
+ installcheck-target: maybe-installcheck-target-boehm-gc
+ installcheck-target: maybe-installcheck-target-rda
+ installcheck-target: maybe-installcheck-target-libada
++installcheck-target: maybe-installcheck-target-libada-sjlj
+ installcheck-target: maybe-installcheck-target-libgnatvsn
+ installcheck-target: maybe-installcheck-target-libgnatprj
+ installcheck-target: maybe-installcheck-target-libgomp
+@@ -2039,6 +2050,7 @@ mostlyclean-target: maybe-mostlyclean-ta
+ mostlyclean-target: maybe-mostlyclean-target-boehm-gc
+ mostlyclean-target: maybe-mostlyclean-target-rda
+ mostlyclean-target: maybe-mostlyclean-target-libada
++mostlyclean-target: maybe-mostlyclean-target-libada-sjlj
+ mostlyclean-target: maybe-mostlyclean-target-libgnatvsn
+ mostlyclean-target: maybe-mostlyclean-target-libgnatprj
+ mostlyclean-target: maybe-mostlyclean-target-libgomp
+@@ -2129,6 +2141,7 @@ clean-target: maybe-clean-target-zlib
+ clean-target: maybe-clean-target-boehm-gc
+ clean-target: maybe-clean-target-rda
+ clean-target: maybe-clean-target-libada
++clean-target: maybe-clean-target-libada-sjlj
+ clean-target: maybe-clean-target-libgnatvsn
+ clean-target: maybe-clean-target-libgnatprj
+ clean-target: maybe-clean-target-libgomp
+@@ -2219,6 +2232,7 @@ distclean-target: maybe-distclean-target
+ distclean-target: maybe-distclean-target-boehm-gc
+ distclean-target: maybe-distclean-target-rda
+ distclean-target: maybe-distclean-target-libada
++distclean-target: maybe-distclean-target-libada-sjlj
+ distclean-target: maybe-distclean-target-libgnatvsn
+ distclean-target: maybe-distclean-target-libgnatprj
+ distclean-target: maybe-distclean-target-libgomp
+@@ -2309,6 +2323,7 @@ maintainer-clean-target: maybe-maintaine
+ maintainer-clean-target: maybe-maintainer-clean-target-boehm-gc
+ maintainer-clean-target: maybe-maintainer-clean-target-rda
+ maintainer-clean-target: maybe-maintainer-clean-target-libada
++maintainer-clean-target: maybe-maintainer-clean-target-libada-sjlj
+ maintainer-clean-target: maybe-maintainer-clean-target-libgnatvsn
+ maintainer-clean-target: maybe-maintainer-clean-target-libgnatprj
+ maintainer-clean-target: maybe-maintainer-clean-target-libgomp
+@@ -2454,6 +2469,7 @@ check-target:  \
+     maybe-check-target-boehm-gc \
+     maybe-check-target-rda \
+     maybe-check-target-libada \
++    maybe-check-target-libada-sjlj \
+     maybe-check-target-libgnatvsn \
+     maybe-check-target-libgnatprj \
+     maybe-check-target-libgomp \
+@@ -2631,6 +2647,7 @@ install-target:  \
+     maybe-install-target-boehm-gc \
+     maybe-install-target-rda \
+     maybe-install-target-libada \
++    maybe-install-target-libada-sjlj \
+     maybe-install-target-libgnatvsn \
+     maybe-install-target-libgnatprj \
+     maybe-install-target-libgomp \
+@@ -2741,6 +2758,7 @@ install-strip-target:  \
+     maybe-install-strip-target-boehm-gc \
+     maybe-install-strip-target-rda \
+     maybe-install-strip-target-libada \
++    maybe-install-strip-target-libada-sjlj \
+     maybe-install-strip-target-libgnatvsn \
+     maybe-install-strip-target-libgnatprj \
+     maybe-install-strip-target-libgomp \
+@@ -45650,6 +45668,352 @@ maintainer-clean-target-libada:
+ 
+ 
+ 
++.PHONY: configure-target-libada-sjlj maybe-configure-target-libada-sjlj
++maybe-configure-target-libada-sjlj:
++ at if gcc-bootstrap
++configure-target-libada-sjlj: stage_current
++ at endif gcc-bootstrap
++ at if target-libada-sjlj
++maybe-configure-target-libada-sjlj: configure-target-libada-sjlj
++configure-target-libada-sjlj: 
++	@: $(MAKE); $(unstage)
++	@r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	echo "Checking multilib configuration for libada-sjlj..."; \
++	$(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libada-sjlj ; \
++	$(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libada-sjlj/multilib.tmp 2> /dev/null ; \
++	if test -r $(TARGET_SUBDIR)/libada-sjlj/multilib.out; then \
++	  if cmp -s $(TARGET_SUBDIR)/libada-sjlj/multilib.tmp $(TARGET_SUBDIR)/libada-sjlj/multilib.out; then \
++	    rm -f $(TARGET_SUBDIR)/libada-sjlj/multilib.tmp; \
++	  else \
++	    rm -f $(TARGET_SUBDIR)/libada-sjlj/Makefile; \
++	    mv $(TARGET_SUBDIR)/libada-sjlj/multilib.tmp $(TARGET_SUBDIR)/libada-sjlj/multilib.out; \
++	  fi; \
++	else \
++	  mv $(TARGET_SUBDIR)/libada-sjlj/multilib.tmp $(TARGET_SUBDIR)/libada-sjlj/multilib.out; \
++	fi; \
++	test ! -f $(TARGET_SUBDIR)/libada-sjlj/Makefile || exit 0; \
++	$(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libada-sjlj ; \
++	$(NORMAL_TARGET_EXPORTS)  \
++	echo Configuring in $(TARGET_SUBDIR)/libada-sjlj; \
++	cd "$(TARGET_SUBDIR)/libada-sjlj" || exit 1; \
++	case $(srcdir) in \
++	  /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \
++	  *) topdir=`echo $(TARGET_SUBDIR)/libada-sjlj/ | \
++		sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \
++	esac; \
++	module_srcdir=libada-sjlj; \
++	rm -f no-such-file || : ; \
++	CONFIG_SITE=no-such-file $(SHELL) \
++	  $$s/$$module_srcdir/configure \
++	  --srcdir=$${topdir}/$$module_srcdir \
++	  $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \
++	  --target=${target_alias}  \
++	  || exit 1
++ at endif target-libada-sjlj
++
++
++
++
++
++.PHONY: all-target-libada-sjlj maybe-all-target-libada-sjlj
++maybe-all-target-libada-sjlj:
++ at if gcc-bootstrap
++all-target-libada-sjlj: stage_current
++ at endif gcc-bootstrap
++ at if target-libada-sjlj
++TARGET-target-libada-sjlj=all
++maybe-all-target-libada-sjlj: all-target-libada-sjlj
++all-target-libada-sjlj: configure-target-libada-sjlj
++	@: $(MAKE); $(unstage)
++	@r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(NORMAL_TARGET_EXPORTS)  \
++	(cd $(TARGET_SUBDIR)/libada-sjlj && \
++	  $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS)   \
++		$(TARGET-target-libada-sjlj))
++ at endif target-libada-sjlj
++
++
++
++
++
++.PHONY: check-target-libada-sjlj maybe-check-target-libada-sjlj
++maybe-check-target-libada-sjlj:
++ at if target-libada-sjlj
++maybe-check-target-libada-sjlj: check-target-libada-sjlj
++
++# Dummy target for uncheckable module.
++check-target-libada-sjlj:
++
++ at endif target-libada-sjlj
++
++.PHONY: install-target-libada-sjlj maybe-install-target-libada-sjlj
++maybe-install-target-libada-sjlj:
++ at if target-libada-sjlj
++maybe-install-target-libada-sjlj: install-target-libada-sjlj
++
++# Dummy target for uninstallable.
++install-target-libada-sjlj:
++
++ at endif target-libada-sjlj
++
++.PHONY: install-strip-target-libada-sjlj maybe-install-strip-target-libada-sjlj
++maybe-install-strip-target-libada-sjlj:
++ at if target-libada-sjlj
++maybe-install-strip-target-libada-sjlj: install-strip-target-libada-sjlj
++
++# Dummy target for uninstallable.
++install-strip-target-libada-sjlj:
++
++ at endif target-libada-sjlj
++
++# Other targets (info, dvi, pdf, etc.)
++
++.PHONY: maybe-info-target-libada-sjlj info-target-libada-sjlj
++maybe-info-target-libada-sjlj:
++ at if target-libada-sjlj
++maybe-info-target-libada-sjlj: info-target-libada-sjlj
++
++# libada-sjlj doesn't support info.
++info-target-libada-sjlj:
++
++ at endif target-libada-sjlj
++
++.PHONY: maybe-dvi-target-libada-sjlj dvi-target-libada-sjlj
++maybe-dvi-target-libada-sjlj:
++ at if target-libada-sjlj
++maybe-dvi-target-libada-sjlj: dvi-target-libada-sjlj
++
++# libada-sjlj doesn't support dvi.
++dvi-target-libada-sjlj:
++
++ at endif target-libada-sjlj
++
++.PHONY: maybe-pdf-target-libada-sjlj pdf-target-libada-sjlj
++maybe-pdf-target-libada-sjlj:
++ at if target-libada-sjlj
++maybe-pdf-target-libada-sjlj: pdf-target-libada-sjlj
++
++pdf-target-libada-sjlj: \
++    configure-target-libada-sjlj 
++	@: $(MAKE); $(unstage)
++	@[ -f $(TARGET_SUBDIR)/libada-sjlj/Makefile ] || exit 0 ; \
++	r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(NORMAL_TARGET_EXPORTS) \
++	echo "Doing pdf in $(TARGET_SUBDIR)/libada-sjlj" ; \
++	for flag in $(EXTRA_TARGET_FLAGS); do \
++	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
++	done; \
++	(cd $(TARGET_SUBDIR)/libada-sjlj && \
++	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
++	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
++	          "RANLIB=$${RANLIB}" \
++	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
++	           pdf) \
++	  || exit 1
++
++ at endif target-libada-sjlj
++
++.PHONY: maybe-html-target-libada-sjlj html-target-libada-sjlj
++maybe-html-target-libada-sjlj:
++ at if target-libada-sjlj
++maybe-html-target-libada-sjlj: html-target-libada-sjlj
++
++# libada-sjlj doesn't support html.
++html-target-libada-sjlj:
++
++ at endif target-libada-sjlj
++
++.PHONY: maybe-TAGS-target-libada-sjlj TAGS-target-libada-sjlj
++maybe-TAGS-target-libada-sjlj:
++ at if target-libada-sjlj
++maybe-TAGS-target-libada-sjlj: TAGS-target-libada-sjlj
++
++# libada-sjlj doesn't support TAGS.
++TAGS-target-libada-sjlj:
++
++ at endif target-libada-sjlj
++
++.PHONY: maybe-install-info-target-libada-sjlj install-info-target-libada-sjlj
++maybe-install-info-target-libada-sjlj:
++ at if target-libada-sjlj
++maybe-install-info-target-libada-sjlj: install-info-target-libada-sjlj
++
++# libada-sjlj doesn't support install-info.
++install-info-target-libada-sjlj:
++
++ at endif target-libada-sjlj
++
++.PHONY: maybe-install-pdf-target-libada-sjlj install-pdf-target-libada-sjlj
++maybe-install-pdf-target-libada-sjlj:
++ at if target-libada-sjlj
++maybe-install-pdf-target-libada-sjlj: install-pdf-target-libada-sjlj
++
++install-pdf-target-libada-sjlj: \
++    configure-target-libada-sjlj \
++    pdf-target-libada-sjlj 
++	@: $(MAKE); $(unstage)
++	@[ -f $(TARGET_SUBDIR)/libada-sjlj/Makefile ] || exit 0 ; \
++	r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(NORMAL_TARGET_EXPORTS) \
++	echo "Doing install-pdf in $(TARGET_SUBDIR)/libada-sjlj" ; \
++	for flag in $(EXTRA_TARGET_FLAGS); do \
++	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
++	done; \
++	(cd $(TARGET_SUBDIR)/libada-sjlj && \
++	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
++	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
++	          "RANLIB=$${RANLIB}" \
++	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
++	           install-pdf) \
++	  || exit 1
++
++ at endif target-libada-sjlj
++
++.PHONY: maybe-install-html-target-libada-sjlj install-html-target-libada-sjlj
++maybe-install-html-target-libada-sjlj:
++ at if target-libada-sjlj
++maybe-install-html-target-libada-sjlj: install-html-target-libada-sjlj
++
++install-html-target-libada-sjlj: \
++    configure-target-libada-sjlj \
++    html-target-libada-sjlj 
++	@: $(MAKE); $(unstage)
++	@[ -f $(TARGET_SUBDIR)/libada-sjlj/Makefile ] || exit 0 ; \
++	r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(NORMAL_TARGET_EXPORTS) \
++	echo "Doing install-html in $(TARGET_SUBDIR)/libada-sjlj" ; \
++	for flag in $(EXTRA_TARGET_FLAGS); do \
++	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
++	done; \
++	(cd $(TARGET_SUBDIR)/libada-sjlj && \
++	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
++	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
++	          "RANLIB=$${RANLIB}" \
++	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
++	           install-html) \
++	  || exit 1
++
++ at endif target-libada-sjlj
++
++.PHONY: maybe-installcheck-target-libada-sjlj installcheck-target-libada-sjlj
++maybe-installcheck-target-libada-sjlj:
++ at if target-libada-sjlj
++maybe-installcheck-target-libada-sjlj: installcheck-target-libada-sjlj
++
++# libada-sjlj doesn't support installcheck.
++installcheck-target-libada-sjlj:
++
++ at endif target-libada-sjlj
++
++.PHONY: maybe-mostlyclean-target-libada-sjlj mostlyclean-target-libada-sjlj
++maybe-mostlyclean-target-libada-sjlj:
++ at if target-libada-sjlj
++maybe-mostlyclean-target-libada-sjlj: mostlyclean-target-libada-sjlj
++
++mostlyclean-target-libada-sjlj: 
++	@: $(MAKE); $(unstage)
++	@[ -f $(TARGET_SUBDIR)/libada-sjlj/Makefile ] || exit 0 ; \
++	r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(NORMAL_TARGET_EXPORTS) \
++	echo "Doing mostlyclean in $(TARGET_SUBDIR)/libada-sjlj" ; \
++	for flag in $(EXTRA_TARGET_FLAGS); do \
++	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
++	done; \
++	(cd $(TARGET_SUBDIR)/libada-sjlj && \
++	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
++	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
++	          "RANLIB=$${RANLIB}" \
++	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
++	           mostlyclean) \
++	  || exit 1
++
++ at endif target-libada-sjlj
++
++.PHONY: maybe-clean-target-libada-sjlj clean-target-libada-sjlj
++maybe-clean-target-libada-sjlj:
++ at if target-libada-sjlj
++maybe-clean-target-libada-sjlj: clean-target-libada-sjlj
++
++clean-target-libada-sjlj: 
++	@: $(MAKE); $(unstage)
++	@[ -f $(TARGET_SUBDIR)/libada-sjlj/Makefile ] || exit 0 ; \
++	r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(NORMAL_TARGET_EXPORTS) \
++	echo "Doing clean in $(TARGET_SUBDIR)/libada-sjlj" ; \
++	for flag in $(EXTRA_TARGET_FLAGS); do \
++	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
++	done; \
++	(cd $(TARGET_SUBDIR)/libada-sjlj && \
++	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
++	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
++	          "RANLIB=$${RANLIB}" \
++	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
++	           clean) \
++	  || exit 1
++
++ at endif target-libada-sjlj
++
++.PHONY: maybe-distclean-target-libada-sjlj distclean-target-libada-sjlj
++maybe-distclean-target-libada-sjlj:
++ at if target-libada-sjlj
++maybe-distclean-target-libada-sjlj: distclean-target-libada-sjlj
++
++distclean-target-libada-sjlj: 
++	@: $(MAKE); $(unstage)
++	@[ -f $(TARGET_SUBDIR)/libada-sjlj/Makefile ] || exit 0 ; \
++	r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(NORMAL_TARGET_EXPORTS) \
++	echo "Doing distclean in $(TARGET_SUBDIR)/libada-sjlj" ; \
++	for flag in $(EXTRA_TARGET_FLAGS); do \
++	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
++	done; \
++	(cd $(TARGET_SUBDIR)/libada-sjlj && \
++	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
++	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
++	          "RANLIB=$${RANLIB}" \
++	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
++	           distclean) \
++	  || exit 1
++
++ at endif target-libada-sjlj
++
++.PHONY: maybe-maintainer-clean-target-libada-sjlj maintainer-clean-target-libada-sjlj
++maybe-maintainer-clean-target-libada-sjlj:
++ at if target-libada-sjlj
++maybe-maintainer-clean-target-libada-sjlj: maintainer-clean-target-libada-sjlj
++
++maintainer-clean-target-libada-sjlj: 
++	@: $(MAKE); $(unstage)
++	@[ -f $(TARGET_SUBDIR)/libada-sjlj/Makefile ] || exit 0 ; \
++	r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(NORMAL_TARGET_EXPORTS) \
++	echo "Doing maintainer-clean in $(TARGET_SUBDIR)/libada-sjlj" ; \
++	for flag in $(EXTRA_TARGET_FLAGS); do \
++	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
++	done; \
++	(cd $(TARGET_SUBDIR)/libada-sjlj && \
++	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
++	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
++	          "RANLIB=$${RANLIB}" \
++	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
++	           maintainer-clean) \
++	  || exit 1
++
++ at endif target-libada-sjlj
++
++
++
++
++
+ .PHONY: configure-target-libgnatvsn maybe-configure-target-libgnatvsn
+ maybe-configure-target-libgnatvsn:
+ @if gcc-bootstrap
+@@ -50496,6 +50860,7 @@ configure-target-zlib: stage_last
+ configure-target-boehm-gc: stage_last
+ configure-target-rda: stage_last
+ configure-target-libada: stage_last
++configure-target-libada-sjlj: stage_last
+ configure-target-libgnatvsn: stage_last
+ configure-target-libgnatprj: stage_last
+ configure-stage1-target-libgomp: maybe-all-stage1-gcc
+@@ -50533,6 +50898,7 @@ configure-target-zlib: maybe-all-gcc
+ configure-target-boehm-gc: maybe-all-gcc
+ configure-target-rda: maybe-all-gcc
+ configure-target-libada: maybe-all-gcc
++configure-target-libada-sjlj: maybe-all-gcc
+ configure-target-libgnatvsn: maybe-all-gcc
+ configure-target-libgnatprj: maybe-all-gcc
+ configure-target-libgomp: maybe-all-gcc
+@@ -50875,6 +51241,7 @@ all-stage4-fixincludes: maybe-all-stage4
+ all-stageprofile-fixincludes: maybe-all-stageprofile-libiberty
+ all-stagefeedback-fixincludes: maybe-all-stagefeedback-libiberty
+ all-target-libada: maybe-all-gcc
++all-target-libada-sjlj: maybe-all-target-libada
+ all-gnattools: maybe-all-target-libada
+ all-gnattools: maybe-all-target-libgnatvsn
+ all-gnattools: maybe-all-target-libgnatprj
+@@ -51453,6 +51820,7 @@ configure-target-zlib: maybe-all-target-
+ configure-target-boehm-gc: maybe-all-target-libgcc
+ configure-target-rda: maybe-all-target-libgcc
+ configure-target-libada: maybe-all-target-libgcc
++configure-target-libada-sjlj: 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
+@@ -51509,6 +51877,8 @@ configure-target-rda: maybe-all-target-n
+ 
+ configure-target-libada: maybe-all-target-newlib maybe-all-target-libgloss
+ 
++configure-target-libada-sjlj: maybe-all-target-newlib maybe-all-target-libgloss
++
+ configure-target-libgnatvsn: maybe-all-target-newlib maybe-all-target-libgloss
+ 
+ configure-target-libgnatprj: maybe-all-target-newlib maybe-all-target-libgloss
+Index: b/src/configure.ac
+===================================================================
+--- a/src/configure.ac
++++ b/src/configure.ac
+@@ -175,6 +175,7 @@ target_libraries="target-libgcc \
+ 		${libgcj} \
+ 		target-libobjc \
+ 		target-libada \
++		target-libada-sjlj \
+ 		${target_libiberty} \
+ 		target-libgnatvsn \
+ 		target-libgnatprj \
+@@ -447,7 +448,7 @@ AC_ARG_ENABLE(libada,
+ ENABLE_LIBADA=$enableval,
+ ENABLE_LIBADA=yes)
+ if test "${ENABLE_LIBADA}" != "yes" ; then
+-  noconfigdirs="$noconfigdirs target-libgnatvsn target-libgnatprj gnattools"
++  noconfigdirs="$noconfigdirs target-libgnatvsn target-libgnatprj gnattools target-libada-sjlj"
+ fi
+ 
+ AC_ARG_ENABLE(libssp,
+Index: b/src/gcc/ada/gcc-interface/Makefile.in
+===================================================================
+--- a/src/gcc/ada/gcc-interface/Makefile.in
++++ b/src/gcc/ada/gcc-interface/Makefile.in
+@@ -209,7 +209,7 @@ TOOLSCASE =
+ 
+ # Multilib handling
+ MULTISUBDIR =
+-RTSDIR = rts$(subst /,_,$(MULTISUBDIR))
++RTSDIR := rts$(subst /,_,$(MULTISUBDIR))
+ 
+ # Link flags used to build gnat tools.  By default we prefer to statically
+ # link with libgcc to avoid a dependency on shared libgcc (which is tricky
+@@ -2528,6 +2528,27 @@ install-gnatlib: ../stamp-gnatlib-$(RTSD
+ 	cd $(DESTDIR)$(ADA_INCLUDE_DIR); $(CHMOD) a-wx *.adb
+ 	cd $(DESTDIR)$(ADA_INCLUDE_DIR); $(CHMOD) a-wx *.ads
+ 
++install-gnatlib-sjlj: ../stamp-gnatlib-$(RTSDIR)
++#	Create the directory before deleting it, in case the directory is
++#	a list of directories (as it may be on VMS). This ensures we are
++#	deleting the right one.
++	-$(MKDIR) $(DESTDIR)$(ADA_RTL_OBJ_DIR_SJLJ)
++	-$(MKDIR) $(DESTDIR)$(ADA_INCLUDE_DIR_SJLJ)
++	$(RMDIR) $(DESTDIR)$(ADA_RTL_OBJ_DIR_SJLJ)
++	$(RMDIR) $(DESTDIR)$(ADA_INCLUDE_DIR_SJLJ)
++	-$(MKDIR) $(DESTDIR)$(ADA_RTL_OBJ_DIR_SJLJ)
++	-$(MKDIR) $(DESTDIR)$(ADA_INCLUDE_DIR_SJLJ)
++	for file in $(RTSDIR)/*.ali; do \
++	    $(INSTALL_DATA_DATE) $$file $(DESTDIR)$(ADA_RTL_OBJ_DIR_SJLJ); \
++	done
++	# This copy must be done preserving the date on the original file.
++	for file in $(RTSDIR)/*.ad?; do \
++	    $(INSTALL_DATA_DATE) $$file $(DESTDIR)$(ADA_INCLUDE_DIR_SJLJ); \
++	done
++	cd $(DESTDIR)$(ADA_INCLUDE_DIR_SJLJ); $(CHMOD) a-wx *.adb
++	cd $(DESTDIR)$(ADA_INCLUDE_DIR_SJLJ); $(CHMOD) a-wx *.ads
++
++
+ ../stamp-gnatlib1-$(RTSDIR): Makefile
+ 	$(RMDIR) $(RTSDIR)
+ 	$(MKDIR) $(RTSDIR)
+@@ -2784,13 +2805,14 @@ gnatlib-shared:
+ # in getting multiple blank lines, hence a style check error, as a
+ # result.
+ gnatlib-sjlj:
+-	$(MAKE) $(FLAGS_TO_PASS) EH_MECHANISM="" \
++	$(MAKE) $(FLAGS_TO_PASS) EH_MECHANISM="" RTSDIR="$(RTSDIR)" \
+ 	THREAD_KIND="$(THREAD_KIND)" ../stamp-gnatlib1-$(RTSDIR)
+ 	sed -e 's/ZCX_By_Default.*/ZCX_By_Default            : constant Boolean := False;/' $(RTSDIR)/system.ads > $(RTSDIR)/s.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
+ 	$(MAKE) $(FLAGS_TO_PASS) \
++	     RTSDIR="$(RTSDIR)" \
+ 	     EH_MECHANISM="" \
+ 	     GNATLIBFLAGS="$(GNATLIBFLAGS)" \
+ 	     GNATLIBCFLAGS="$(GNATLIBCFLAGS)" \
+@@ -2840,6 +2862,8 @@ b_gnatm.o : b_gnatm.adb
+ 
+ ADA_INCLUDE_DIR = $(libsubdir)/adainclude
+ ADA_RTL_OBJ_DIR = $(libsubdir)/adalib
++ADA_INCLUDE_DIR_SJLJ = $(libsubdir)/rts-sjlj/adainclude
++ADA_RTL_OBJ_DIR_SJLJ = $(libsubdir)/rts-sjlj/adalib
+ 
+ # Special flags
+ 
+Index: b/src/gcc/ada/gcc-interface/config-lang.in
+===================================================================
+--- a/src/gcc/ada/gcc-interface/config-lang.in
++++ b/src/gcc/ada/gcc-interface/config-lang.in
+@@ -34,8 +34,8 @@ gtfiles="\$(srcdir)/ada/gcc-interface/ad
+ 
+ outputs="ada/gcc-interface/Makefile ada/Makefile"
+ 
+-target_libs="target-libada target-libgnatvsn target-libgnatprj"
+-lang_dirs="libada libgnatvsn libgnatprj gnattools"
++target_libs="target-libada target-libgnatvsn target-libgnatprj target-libada-sjlj"
++lang_dirs="libada libgnatvsn libgnatprj gnattools libada-sjlj"
+ 
+ # Ada is not enabled by default for the time being.
+ build_by_default=no
+Index: b/src/gcc/ada/gcc-interface/Make-lang.in
+===================================================================
+--- a/src/gcc/ada/gcc-interface/Make-lang.in
++++ b/src/gcc/ada/gcc-interface/Make-lang.in
+@@ -783,6 +783,7 @@ ada.install-common:
+ 
+ install-gnatlib:
+ 	$(MAKE) -C ada $(COMMON_FLAGS_TO_PASS) $(ADA_FLAGS_TO_PASS) install-gnatlib$(LIBGNAT_TARGET)
++	$(MAKE) -C ada $(COMMON_FLAGS_TO_PASS) $(ADA_FLAGS_TO_PASS) RTSDIR="rts-sjlj" install-gnatlib-sjlj$(LIBGNAT_TARGET)
+ 
+ install-gnatlib-obj:
+ 	$(MAKE) -C ada $(COMMON_FLAGS_TO_PASS) $(ADA_FLAGS_TO_PASS) install-gnatlib-obj
diff --git a/debian/patches/ada-symbolic-tracebacks.diff b/debian/patches/ada-symbolic-tracebacks.diff
new file mode 100644
index 0000000..ae8f402
--- /dev/null
+++ b/debian/patches/ada-symbolic-tracebacks.diff
@@ -0,0 +1,401 @@
+# DP: - Enable support for symbolic tracebacks in exceptions (delete the dummy
+# DP:   convert_addresses from adaint.c, and provide a real one separately.)
+
+Ported Jürgen Pfeifer's patch to enable symbolic tracebacks on Debian
+GNU/Linux.
+
+The binary distribution of GNAT 3.15p comes with an old version of
+binutils that includes a library, libaddr2line.a.  This library does
+not exist in recent versions of binutils.  The patch works around this
+by calling /usr/bin/addr2line (still part of binutils) and parsing the
+output.  See debian/convert_addresses.c for the gory details.
+
+I have modified convert_addresses.c to not use a shell script anymore;
+Debian controls the version of binutils which is installed.  Also, I
+use execve instead of execle.
+
+-- 
+Ludovic Brenta.
+
+# ' make emacs highlighting happy
+
+Index: b/src/gcc/ada/gcc-interface/Makefile.in
+===================================================================
+--- a/src/gcc/ada/gcc-interface/Makefile.in
++++ b/src/gcc/ada/gcc-interface/Makefile.in
+@@ -270,7 +270,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$(ftop_srcdir)/include $(GMPINC)
++INCLUDES = -iquote . -iquote .. -iquote $(srcdir)/ada -iquote $(srcdir) \
++ -iquote $(ftop_srcdir)/include $(GMPINC)
+ 
+ ADA_INCLUDES = -I- -I. -I$(srcdir)/ada
+ 
+@@ -2426,7 +2427,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					\
+@@ -3104,6 +3105,7 @@
+ socket.o  : socket.c gsocket.h
+ sysdep.o  : sysdep.c
+ raise.o   : raise.c raise.h
++convert_addresses.o : convert_addresses.c
+ sigtramp-armdroid.o : sigtramp-armdroid.c sigtramp.h
+ sigtramp-armvxw.o : sigtramp-armvxw.c sigtramp.h
+ sigtramp-ppcvxw.o : sigtramp-ppcvxw.c sigtramp.h
+Index: b/src/gcc/ada/adaint.c
+===================================================================
+--- a/src/gcc/ada/adaint.c
++++ b/src/gcc/ada/adaint.c
+@@ -3608,35 +3608,6 @@
+ }
+ #endif
+ 
+-#if defined (IS_CROSS)  \
+-  || (! ((defined (sparc) || defined (i386)) && defined (sun) \
+-      && defined (__SVR4)) \
+-      && ! (defined (linux) && (defined (i386) || defined (__x86_64__))) \
+-      && ! (defined (linux) && defined (__ia64__)) \
+-      && ! (defined (linux) && defined (powerpc)) \
+-      && ! defined (__FreeBSD__) \
+-      && ! defined (__Lynx__) \
+-      && ! defined (__hpux__) \
+-      && ! defined (__APPLE__) \
+-      && ! defined (_AIX) \
+-      && ! defined (VMS) \
+-      && ! 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
+-   version of this procedure in libaddr2line.a.  */
+-
+-void
+-convert_addresses (const char *file_name ATTRIBUTE_UNUSED,
+-		   void *addrs ATTRIBUTE_UNUSED,
+-		   int n_addr ATTRIBUTE_UNUSED,
+-		   void *buf ATTRIBUTE_UNUSED,
+-		   int *len ATTRIBUTE_UNUSED)
+-{
+-  *len = 0;
+-}
+-#endif
+-
+ #if defined (_WIN32)
+ int __gnat_argument_needs_quote = 1;
+ #else
+Index: b/src/gcc/ada/convert_addresses.c
+===================================================================
+--- /dev/null
++++ b/src/gcc/ada/convert_addresses.c
+@@ -0,0 +1,159 @@
++/*
++  Copyright (C) 1999 by Juergen Pfeifer <juergen.pfeifer at gmx.net>
++  Ada for Linux Team (ALT)
++
++  Permission is hereby granted, free of charge, to any person obtaining a
++  copy of this software and associated documentation files (the
++  "Software"), to deal in the Software without restriction, including
++  without limitation the rights to use, copy, modify, merge, publish,
++  distribute, distribute with modifications, sublicense, and/or sell
++  copies of the Software, and to permit persons to whom the Software is
++  furnished to do so, subject to the following conditions:
++
++  The above copyright notice and this permission notice shall be included
++  in all copies or substantial portions of the Software.
++
++  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
++  OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
++  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
++  IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
++  DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
++  OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
++  THE USE OR OTHER DEALINGS IN THE SOFTWARE.
++
++  Except as contained in this notice, the name(s) of the above copyright
++  holders shall not be used in advertising or otherwise to promote the
++  sale, use or other dealings in this Software without prior written
++  authorization.
++*/
++#include <sys/types.h>
++#include <stdlib.h>
++#include <stdio.h>
++#include <unistd.h>
++#include <string.h>
++#include <signal.h>
++
++#define STDIN_FILENO  0
++#define STDOUT_FILENO 1
++#define MAX_LINE      1024
++
++#define CLOSE1  close(fd1[0]); close(fd1[1])
++#define CLOSE2  close(fd2[0]); close(fd2[1])
++#define RESTSIG sigaction(SIGPIPE,&oact,NULL)
++
++void convert_addresses
++(const char const *file_name,
++  void* addrs[],
++  int   n_addr,
++  char* buf,
++  int*  len)
++{
++  int max_len = *len;
++  pid_t child;
++
++  struct sigaction act, oact;
++
++  int fd1[2], fd2[2];
++
++  if (!file_name) {
++    return;
++  }
++
++  *buf = 0; *len = 0;
++  act.sa_handler = SIG_IGN;
++  sigemptyset(&act.sa_mask);
++  act.sa_flags = 0;
++  if (sigaction(SIGPIPE,&act,&oact) < 0)
++    return;
++
++  if (pipe(fd1) >= 0) {
++    if (pipe(fd2)>=0) {
++      if ((child = fork()) < 0) {
++      CLOSE1; CLOSE2; RESTSIG;
++      return;
++      }
++      else {
++      if (0==child) {
++        close(fd1[1]);
++        close(fd2[0]);
++        if (fd1[0] != STDIN_FILENO) {
++          if (dup2(fd1[0],STDIN_FILENO) != STDIN_FILENO) {
++            CLOSE1; CLOSE2;
++          }
++          close(fd1[0]);
++        }
++        if (fd2[1] != STDOUT_FILENO) {
++          if (dup2(fd2[1],STDOUT_FILENO) != STDOUT_FILENO) {
++            CLOSE1; CLOSE2;
++          }
++          close(fd2[1]);
++        }
++        {
++          /* As pointed out by Florian Weimer to me, it is a
++             security threat to call the script with a user defined
++             environment and using the path. That would be Trojans
++             pleasure.  Therefore we use the absolute path to
++             addr2line and an empty environment. That should be
++             safe.
++          */
++          char *file_name_for_execve = strdup (file_name); /* non-const */
++          char *const argv[] = { "addr2line",
++                                 "-e",
++                                 file_name_for_execve,
++                                 "--demangle=gnat",
++                                 "--functions",
++                                 "--basenames",
++                                 NULL };
++          char *const envp[] = { NULL };
++          if (execve("/usr/bin/addr2line", argv, envp) < 0) {
++            CLOSE1; CLOSE2;
++          }
++	  if (file_name_for_execve) { free (file_name_for_execve); }
++        }
++      }
++      else {
++        int i, n;
++        char hex[16];
++        char line[MAX_LINE + 1];
++        char *p;
++        char *s = buf;
++
++        /* Parent context */
++        close(fd1[0]);
++        close(fd2[1]);
++
++        for(i=0; i < n_addr; i++) {
++          snprintf(hex,sizeof(hex),"%p\n",addrs[i]);
++          write(fd1[1],hex,strlen(hex));
++          n = read(fd2[0],line,MAX_LINE);
++          if (n<=0)
++            break;
++          line[n]=0;
++          /* We have approx. 16 additional chars for "%p in " clause.
++             We use this info to prevent a buffer overrun.
++          */
++          if (n + 16 + (*len) > max_len)
++            break;
++          p = strchr(line,'\n');
++          if (p) {
++            if (*(p+1)) {
++              *p = 0;
++              *len += snprintf(s, (max_len - (*len)), "%p in %s at %s",addrs[i], line, p+1);
++            }
++            else {
++              *len += snprintf(s, (max_len - (*len)), "%p at %s",addrs[i], line);
++            }
++            s = buf + (*len);
++          }
++        }
++        close(fd1[1]);
++        close(fd2[0]);
++      }
++      }
++    }
++    else {
++      CLOSE1;
++    }
++  }
++  RESTSIG;
++}
+Index: b/src/gcc/ada/g-trasym.adb
+===================================================================
+--- a/src/gcc/ada/g-trasym.adb
++++ b/src/gcc/ada/g-trasym.adb
+@@ -33,40 +33,110 @@
+ --  is not supported. It returns tracebacks as lists of LF separated strings of
+ --  the form "0x..." corresponding to the addresses.
+ 
++with System.Soft_Links;
+ with Ada.Exceptions.Traceback; use Ada.Exceptions.Traceback;
+-with System.Address_Image;
+ 
+ package body GNAT.Traceback.Symbolic is
+ 
++   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;
+ 
+    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 --git a/debian/patches/alpha-ieee-doc.diff b/debian/patches/alpha-ieee-doc.diff
new file mode 100644
index 0000000..0564158
--- /dev/null
+++ b/debian/patches/alpha-ieee-doc.diff
@@ -0,0 +1,24 @@
+# DP: #212912
+# DP: on alpha-linux, make -mieee default and add -mieee-disable switch
+# DP: to turn default off (doc patch)
+
+---
+ gcc/doc/invoke.texi |    7 +++++++
+ 1 files changed, 7 insertions(+), 0 deletions(-)
+
+--- a/src/gcc/doc/invoke.texi
++++ b/src/gcc/doc/invoke.texi
+@@ -9980,6 +9980,13 @@ able to correctly support denormalized numbers and exceptional IEEE
+ values such as not-a-number and plus/minus infinity.  Other Alpha
+ compilers call this option @option{-ieee_with_no_inexact}.
+ 
++DEBIAN SPECIFIC: This option is on by default for alpha-linux-gnu, unless
++ at option{-ffinite-math-only} (which is part of the @option{-ffast-math}
++set) is specified, because the software functions in the GNU libc math
++libraries generate denormalized numbers, NaNs, and infs (all of which
++will cause a programs to SIGFPE when it attempts to use the results without
++ at option{-mieee}).
++
+ @item -mieee-with-inexact
+ @opindex mieee-with-inexact
+ This is like @option{-mieee} except the generated code also maintains
diff --git a/debian/patches/alpha-ieee.diff b/debian/patches/alpha-ieee.diff
new file mode 100644
index 0000000..40497fb
--- /dev/null
+++ b/debian/patches/alpha-ieee.diff
@@ -0,0 +1,21 @@
+# DP: #212912
+# DP: on alpha-linux, make -mieee default and add -mieee-disable switch
+# DP: to turn default off
+
+---
+ gcc/config/alpha/alpha.c |    4 ++++
+ 1 files changed, 4 insertions(+), 0 deletions(-)
+
+--- a/src/gcc/config/alpha/alpha.c
++++ b/src/gcc/config/alpha/alpha.c
+@@ -259,6 +259,10 @@
+   int line_size = 0, l1_size = 0, l2_size = 0;
+   int i;
+ 
++  /* If not -ffinite-math-only, enable -mieee*/
++  if (!flag_finite_math_only)
++    target_flags |= MASK_IEEE|MASK_IEEE_CONFORMANT;
++
+ #ifdef SUBTARGET_OVERRIDE_OPTIONS
+   SUBTARGET_OVERRIDE_OPTIONS;
+ #endif
diff --git a/debian/patches/alpha-no-ev4-directive.diff b/debian/patches/alpha-no-ev4-directive.diff
new file mode 100644
index 0000000..05da2f4
--- /dev/null
+++ b/debian/patches/alpha-no-ev4-directive.diff
@@ -0,0 +1,32 @@
+# DP: never emit .ev4 directive.
+
+---
+ gcc/config/alpha/alpha.c |    7 +++----
+ 1 files changed, 3 insertions(+), 4 deletions(-)
+
+Index: b/src/gcc/config/alpha/alpha.c
+===================================================================
+--- a/src/gcc/config/alpha/alpha.c
++++ b/src/gcc/config/alpha/alpha.c
+@@ -9549,7 +9549,7 @@ alpha_file_start (void)
+     fputs ("\t.set nomacro\n", asm_out_file);
+   if (TARGET_SUPPORT_ARCH | TARGET_BWX | TARGET_MAX | TARGET_FIX | TARGET_CIX)
+     {
+-      const char *arch;
++      const char *arch = NULL;
+ 
+       if (alpha_cpu == PROCESSOR_EV6 || TARGET_FIX || TARGET_CIX)
+ 	arch = "ev6";
+@@ -9559,10 +9559,9 @@ alpha_file_start (void)
+ 	arch = "ev56";
+       else if (alpha_cpu == PROCESSOR_EV5)
+ 	arch = "ev5";
+-      else
+-	arch = "ev4";
+ 
+-      fprintf (asm_out_file, "\t.arch %s\n", arch);
++      if (arch)
++        fprintf (asm_out_file, "\t.arch %s\n", arch);
+     }
+ }
+ 
diff --git a/debian/patches/aotcompile.diff b/debian/patches/aotcompile.diff
new file mode 100644
index 0000000..e5cdce5
--- /dev/null
+++ b/debian/patches/aotcompile.diff
@@ -0,0 +1,51 @@
+--- ./build/aot/aotcompile.py.orig	2010-04-08 13:38:27.621086079 +0000
++++ ./build/aot/aotcompile.py	2010-04-08 14:22:55.102335973 +0000
+@@ -31,12 +31,25 @@
+          "dbtool": "/usr/lib/gcc-snapshot/bin/gcj-dbtool"}
+ 
+ MAKEFLAGS = []
+-GCJFLAGS = ["-fPIC", "-findirect-dispatch", "-fjni"]
++GCJFLAGS = ["-O2 -fPIC", "-findirect-dispatch", "-fjni"]
+ LDFLAGS = ["-Wl,-Bsymbolic"]
+ 
+ MAX_CLASSES_PER_JAR = 1024
+ MAX_BYTES_PER_JAR = 1048576
+ 
++try:
++    for line in file('/proc/meminfo'):
++        if line.startswith('MemTotal:'):
++            memtotal = int(line.split()[1])
++        if memtotal < 270000:
++            MAX_CLASSES_PER_JAR = 512
++            MAX_BYTES_PER_JAR = 524288
++        if memtotal < 140000:
++            MAX_CLASSES_PER_JAR = 256
++            MAX_BYTES_PER_JAR = 262144
++except:
++    pass
++
+ MAKEFILE = "Makefile"
+ 
+ MAKEFILE_HEADER = '''\
+@@ -49,7 +62,7 @@
+ 	$(GCJ) -c $(GCJFLAGS) $< -o $@
+ 
+ TARGETS = \\
+-%(targets)s
++javac ecj1
+ 
+ all: $(TARGETS)'''
+ 
+@@ -63,6 +76,12 @@
+ %(dso)s: $(%(base)s_OBJECTS)
+ 	$(GCJ) -shared $(GCJFLAGS) $(LDFLAGS) $^ -o $@
+ 
++javac: $(%(base)s_OBJECTS) resources.o
++	$(GCJ) $(GCJFLAGS) $(RPATH) -Wl,-O1 --main=org.eclipse.jdt.internal.compiler.batch.Main $^ -o $@
++
++ecj1: $(%(base)s_OBJECTS) resources.o
++	$(GCJ) $(GCJFLAGS) $(RPATH) -Wl,-O1 --main=org.eclipse.jdt.internal.compiler.batch.GCCMain $^ -o $@
++
+ %(db)s: $(%(base)s_SOURCES)
+ 	$(DBTOOL) -n $@ 64
+ 	for jar in $^; do \\
diff --git a/debian/patches/arm-multilib-defaults.diff b/debian/patches/arm-multilib-defaults.diff
new file mode 100644
index 0000000..7394654
--- /dev/null
+++ b/debian/patches/arm-multilib-defaults.diff
@@ -0,0 +1,92 @@
+# DP: Set MULTILIB_DEFAULTS for ARM multilib builds
+
+Index: b/src/gcc/config.gcc
+===================================================================
+--- a/src/gcc/config.gcc
++++ b/src/gcc/config.gcc
+@@ -3634,10 +3634,18 @@ case "${target}" in
+ 		fi
+ 
+ 		case "$with_float" in
+-		"" \
+-		| soft | hard | softfp)
++		"")
+ 			# OK
+ 			;;
++		soft)
++			tm_defines="${tm_defines} TARGET_CONFIGURED_FLOAT_ABI=0"
++			;;
++		softfp)
++			tm_defines="${tm_defines} TARGET_CONFIGURED_FLOAT_ABI=1"
++			;;
++		hard)
++			tm_defines="${tm_defines} TARGET_CONFIGURED_FLOAT_ABI=2"
++			;;
+ 		*)
+ 			echo "Unknown floating point type used in --with-float=$with_float" 1>&2
+ 			exit 1
+@@ -3671,6 +3679,9 @@ case "${target}" in
+ 		"" \
+ 		| arm | thumb )
+ 			#OK
++			if test "$with_mode" = thumb; then
++				tm_defines="${tm_defines} TARGET_CONFIGURED_THUMB_MODE=1"
++			fi
+ 			;;
+ 		*)
+ 			echo "Unknown mode used in --with-mode=$with_mode"
+Index: b/src/gcc/config/arm/linux-eabi.h
+===================================================================
+--- a/src/gcc/config/arm/linux-eabi.h
++++ b/src/gcc/config/arm/linux-eabi.h
+@@ -43,7 +43,21 @@
+    target hardware.  If you override this to use the hard-float ABI then
+    change the setting of GLIBC_DYNAMIC_LINKER_DEFAULT as well.  */
+ #undef  TARGET_DEFAULT_FLOAT_ABI
++#ifdef TARGET_CONFIGURED_FLOAT_ABI
++#if TARGET_CONFIGURED_FLOAT_ABI == 2
++#define TARGET_DEFAULT_FLOAT_ABI ARM_FLOAT_ABI_HARD
++#define MULTILIB_DEFAULT_FLOAT_ABI "mfloat-abi=hard"
++#elif TARGET_CONFIGURED_FLOAT_ABI == 1
++#define TARGET_DEFAULT_FLOAT_ABI ARM_FLOAT_ABI_SOFTFP
++#define MULTILIB_DEFAULT_FLOAT_ABI "mfloat-abi=softfp"
++#else
++#define TARGET_DEFAULT_FLOAT_ABI ARM_FLOAT_ABI_SOFT
++#define MULTILIB_DEFAULT_FLOAT_ABI "mfloat-abi=soft"
++#endif
++#else
+ #define TARGET_DEFAULT_FLOAT_ABI ARM_FLOAT_ABI_SOFT
++#define MULTILIB_DEFAULT_FLOAT_ABI "mfloat-abi=soft"
++#endif
+ 
+ /* We default to the "aapcs-linux" ABI so that enums are int-sized by
+    default.  */
+@@ -86,6 +100,28 @@
+     %{mfloat-abi=soft*:" GLIBC_DYNAMIC_LINKER_SOFT_FLOAT "} \
+     %{!mfloat-abi=*:" GLIBC_DYNAMIC_LINKER_DEFAULT "}"
+ 
++/* Set the multilib defaults according the configuration, needed to
++   let gcc -print-multi-dir do the right thing.  */
++
++#if TARGET_BIG_ENDIAN_DEFAULT
++#define MULTILIB_DEFAULT_ENDIAN "mbig-endian"
++#else
++#define MULTILIB_DEFAULT_ENDIAN "mlittle-endian"
++#endif
++
++#ifndef TARGET_CONFIGURED_THUMB_MODE
++#define MULTILIB_DEFAULT_MODE "marm"
++#elif TARGET_CONFIGURED_THUMB_MODE == 1
++#define MULTILIB_DEFAULT_MODE "mthumb"
++#else
++#define MULTILIB_DEFAULT_MODE "marm"
++#endif
++
++#undef  MULTILIB_DEFAULTS
++#define MULTILIB_DEFAULTS \
++	{ MULTILIB_DEFAULT_MODE, MULTILIB_DEFAULT_ENDIAN, \
++	  MULTILIB_DEFAULT_FLOAT_ABI, "mno-thumb-interwork" }
++
+ /* At this point, bpabi.h will have clobbered LINK_SPEC.  We want to
+    use the GNU/Linux version, not the generic BPABI version.  */
+ #undef  LINK_SPEC
diff --git a/debian/patches/arm-multilib-soft-cross.diff b/debian/patches/arm-multilib-soft-cross.diff
new file mode 100644
index 0000000..bad15d0
--- /dev/null
+++ b/debian/patches/arm-multilib-soft-cross.diff
@@ -0,0 +1,27 @@
+# DP: ARM hard/soft float multilib support
+
+Index: b/src/gcc/config/arm/t-linux-eabi
+===================================================================
+--- a/src/gcc/config/arm/t-linux-eabi
++++ b/src/gcc/config/arm/t-linux-eabi
+@@ -21,6 +21,20 @@
+ MULTILIB_OPTIONS	=
+ MULTILIB_DIRNAMES	=
+ 
++ifeq ($(with_float),hard)
++MULTILIB_OPTIONS	= mfloat-abi=soft/mfloat-abi=hard
++MULTILIB_DIRNAMES	= sf hf
++MULTILIB_EXCEPTIONS	=
++MULTILIB_MATCHES	= mfloat-abi?hard=mhard-float mfloat-abi?soft=msoft-float mfloat-abi?soft=mfloat-abi?softfp
++MULTILIB_OSDIRNAMES	= ../libsf:arm-linux-gnueabi ../lib:arm-linux-gnueabihf
++else
++MULTILIB_OPTIONS	= mfloat-abi=soft/mfloat-abi=hard
++MULTILIB_DIRNAMES	= sf hf
++MULTILIB_EXCEPTIONS	=
++MULTILIB_MATCHES	= mfloat-abi?hard=mhard-float mfloat-abi?soft=msoft-float mfloat-abi?soft=mfloat-abi?softfp
++MULTILIB_OSDIRNAMES	= ../lib:arm-linux-gnueabi ../libhf:arm-linux-gnueabihf
++endif
++
+ #MULTILIB_OPTIONS     += mcpu=fa606te/mcpu=fa626te/mcpu=fmp626/mcpu=fa726te
+ #MULTILIB_DIRNAMES    += fa606te fa626te fmp626 fa726te
+ #MULTILIB_EXCEPTIONS  += *mthumb/*mcpu=fa606te *mthumb/*mcpu=fa626te *mthumb/*mcpu=fmp626 *mthumb/*mcpu=fa726te*
diff --git a/debian/patches/arm-multilib-soft-float.diff b/debian/patches/arm-multilib-soft-float.diff
new file mode 100644
index 0000000..18f51fb
--- /dev/null
+++ b/debian/patches/arm-multilib-soft-float.diff
@@ -0,0 +1,26 @@
+--- a/src/gcc/config/arm/t-linux-eabi
++++ b/src/gcc/config/arm/t-linux-eabi
+@@ -24,6 +24,23 @@
+ MULTILIB_OPTIONS	=
+ MULTILIB_DIRNAMES	=
+ 
++ifneq (,$(findstring MULTIARCH_DEFAULTS,$(tm_defines)))
++ifneq (,$(findstring __arm_linux_gnueabi__,$(tm_defines)))
++  MULTILIB_OPTIONS	= mfloat-abi=softfp/mfloat-abi=hard/mfloat-abi=soft
++  MULTILIB_DIRNAMES	= . hf soft-float
++  MULTILIB_EXCEPTIONS	=
++  MULTILIB_MATCHES	= mfloat-abi?hard=mhard-float mfloat-abi?soft=msoft-float
++  MULTILIB_OSDIRNAMES	= ../../lib/arm-linux-gnueabi ../../lib/arm-linux-gnueabihf soft-float
++endif
++ifneq (,$(findstring __arm_linux_gnueabihf__,$(tm_defines)))
++  MULTILIB_OPTIONS	= mfloat-abi=hard/mfloat-abi=softfp/mfloat-abi=soft
++  MULTILIB_DIRNAMES	= . sf soft-float
++  MULTILIB_EXCEPTIONS	=
++  MULTILIB_MATCHES	= mfloat-abi?hard=mhard-float mfloat-abi?soft=msoft-float
++  MULTILIB_OSDIRNAMES	= ../../lib/arm-linux-gnueabihf ../../lib/arm-linux-gnueabi soft-float
++endif
++endif
++
+ #MULTILIB_OPTIONS     += mcpu=fa606te/mcpu=fa626te/mcpu=fmp626/mcpu=fa726te
+ #MULTILIB_DIRNAMES    += fa606te fa626te fmp626 fa726te
+ #MULTILIB_EXCEPTIONS  += *mthumb/*mcpu=fa606te *mthumb/*mcpu=fa626te *mthumb/*mcpu=fmp626 *mthumb/*mcpu=fa726te*
diff --git a/debian/patches/arm-multilib-soft.diff b/debian/patches/arm-multilib-soft.diff
new file mode 100644
index 0000000..1e5c817
--- /dev/null
+++ b/debian/patches/arm-multilib-soft.diff
@@ -0,0 +1,27 @@
+# DP: ARM hard/soft float multilib support
+
+Index: b/src/gcc/config/arm/t-linux-eabi
+===================================================================
+--- a/src/gcc/config/arm/t-linux-eabi
++++ b/src/gcc/config/arm/t-linux-eabi
+@@ -23,6 +23,20 @@
+ MULTILIB_OPTIONS	=
+ MULTILIB_DIRNAMES	=
+ 
++ifeq ($(with_float),hard)
++MULTILIB_OPTIONS	= mfloat-abi=soft/mfloat-abi=hard
++MULTILIB_DIRNAMES	= sf hf
++MULTILIB_EXCEPTIONS	=
++MULTILIB_MATCHES	= mfloat-abi?hard=mhard-float mfloat-abi?soft=msoft-float mfloat-abi?soft=mfloat-abi?softfp
++MULTILIB_OSDIRNAMES	= arm-linux-gnueabi:arm-linux-gnueabi ../lib:arm-linux-gnueabihf
++else
++MULTILIB_OPTIONS	= mfloat-abi=soft/mfloat-abi=hard
++MULTILIB_DIRNAMES	= sf hf
++MULTILIB_EXCEPTIONS	=
++MULTILIB_MATCHES	= mfloat-abi?hard=mhard-float mfloat-abi?soft=msoft-float mfloat-abi?soft=mfloat-abi?softfp
++MULTILIB_OSDIRNAMES	= ../lib:arm-linux-gnueabi arm-linux-gnueabihf:arm-linux-gnueabihf
++endif
++
+ #MULTILIB_OPTIONS     += mcpu=fa606te/mcpu=fa626te/mcpu=fmp626/mcpu=fa726te
+ #MULTILIB_DIRNAMES    += fa606te fa626te fmp626 fa726te
+ #MULTILIB_EXCEPTIONS  += *mthumb/*mcpu=fa606te *mthumb/*mcpu=fa626te *mthumb/*mcpu=fmp626 *mthumb/*mcpu=fa726te*
diff --git a/debian/patches/arm-multilib-softfp-cross.diff b/debian/patches/arm-multilib-softfp-cross.diff
new file mode 100644
index 0000000..89ed142
--- /dev/null
+++ b/debian/patches/arm-multilib-softfp-cross.diff
@@ -0,0 +1,27 @@
+# DP: ARM hard/softfp float multilib support
+
+Index: b/src/gcc/config/arm/t-linux-eabi
+===================================================================
+--- a/src/gcc/config/arm/t-linux-eabi	2011-01-03 20:52:22.000000000 +0000
++++ b/src/gcc/config/arm/t-linux-eabi	2011-08-21 21:08:47.583351817 +0000
+@@ -24,6 +24,20 @@
+ MULTILIB_OPTIONS	=
+ MULTILIB_DIRNAMES	=
+ 
++ifeq ($(with_float),hard)
++MULTILIB_OPTIONS	= mfloat-abi=softfp/mfloat-abi=hard
++MULTILIB_DIRNAMES	= sf hf
++MULTILIB_EXCEPTIONS	=
++MULTILIB_MATCHES	= mfloat-abi?hard=mhard-float mfloat-abi?softfp=msoft-float mfloat-abi?softfp=mfloat-abi?soft
++MULTILIB_OSDIRNAMES	= ../libsf:arm-linux-gnueabi ../lib:arm-linux-gnueabihf
++else
++MULTILIB_OPTIONS	= mfloat-abi=softfp/mfloat-abi=hard
++MULTILIB_DIRNAMES	= sf hf
++MULTILIB_EXCEPTIONS	=
++MULTILIB_MATCHES	= mfloat-abi?hard=mhard-float mfloat-abi?softfp=msoft-float mfloat-abi?softfp=mfloat-abi?soft
++MULTILIB_OSDIRNAMES	= ../lib:arm-linux-gnueabi ../libhf:arm-linux-gnueabihf
++endif
++
+ #MULTILIB_OPTIONS     += mcpu=fa606te/mcpu=fa626te/mcpu=fmp626/mcpu=fa726te
+ #MULTILIB_DIRNAMES    += fa606te fa626te fmp626 fa726te
+ #MULTILIB_EXCEPTIONS  += *mthumb/*mcpu=fa606te *mthumb/*mcpu=fa626te *mthumb/*mcpu=fmp626 *mthumb/*mcpu=fa726te*
diff --git a/debian/patches/arm-multilib-softfp.diff b/debian/patches/arm-multilib-softfp.diff
new file mode 100644
index 0000000..f4268da
--- /dev/null
+++ b/debian/patches/arm-multilib-softfp.diff
@@ -0,0 +1,27 @@
+# DP: ARM hard/softfp float multilib support
+
+Index: b/src/gcc/config/arm/t-linux-eabi
+===================================================================
+--- a/src/gcc/config/arm/t-linux-eabi	2011-01-03 20:52:22.000000000 +0000
++++ b/src/gcc/config/arm/t-linux-eabi	2011-08-21 21:08:47.583351817 +0000
+@@ -24,6 +24,20 @@
+ MULTILIB_OPTIONS	=
+ MULTILIB_DIRNAMES	=
+ 
++ifeq ($(with_float),hard)
++MULTILIB_OPTIONS	= mfloat-abi=softfp/mfloat-abi=hard
++MULTILIB_DIRNAMES	= sf hf
++MULTILIB_EXCEPTIONS	=
++MULTILIB_MATCHES	= mfloat-abi?hard=mhard-float mfloat-abi?softfp=msoft-float mfloat-abi?softfp=mfloat-abi?soft
++MULTILIB_OSDIRNAMES	= arm-linux-gnueabi:arm-linux-gnueabi ../lib:arm-linux-gnueabihf
++else
++MULTILIB_OPTIONS	= mfloat-abi=softfp/mfloat-abi=hard
++MULTILIB_DIRNAMES	= sf hf
++MULTILIB_EXCEPTIONS	=
++MULTILIB_MATCHES	= mfloat-abi?hard=mhard-float mfloat-abi?softfp=msoft-float mfloat-abi?softfp=mfloat-abi?soft
++MULTILIB_OSDIRNAMES	= ../lib:arm-linux-gnueabi arm-linux-gnueabihf:arm-linux-gnueabihf
++endif
++
+ #MULTILIB_OPTIONS     += mcpu=fa606te/mcpu=fa626te/mcpu=fmp626/mcpu=fa726te
+ #MULTILIB_DIRNAMES    += fa606te fa626te fmp626 fa726te
+ #MULTILIB_EXCEPTIONS  += *mthumb/*mcpu=fa606te *mthumb/*mcpu=fa626te *mthumb/*mcpu=fmp626 *mthumb/*mcpu=fa726te*
diff --git a/debian/patches/boehm-gc-getnprocs.diff b/debian/patches/boehm-gc-getnprocs.diff
new file mode 100644
index 0000000..5b470cf
--- /dev/null
+++ b/debian/patches/boehm-gc-getnprocs.diff
@@ -0,0 +1,20 @@
+# DP: boehm-gc/pthread_support.c (GC_get_nprocs): Use sysconf as fallback.
+
+---
+ boehm-gc/pthread_support.c |    3 ++-
+ 1 files changed, 2 insertions(+), 1 deletions(-)
+
+Index: b/src/boehm-gc/pthread_support.c
+===================================================================
+--- a/src/boehm-gc/pthread_support.c
++++ b/src/boehm-gc/pthread_support.c
+@@ -724,7 +724,8 @@ int GC_get_nprocs()
+     f = open("/proc/stat", O_RDONLY);
+     if (f < 0 || (len = STAT_READ(f, stat_buf, STAT_BUF_SIZE)) < 100) {
+ 	WARN("Couldn't read /proc/stat\n", 0);
+-	return -1;
++	/* Fallback to sysconf after the warning */
++	return sysconf(_SC_NPROCESSORS_ONLN);
+     }
+     for (i = 0; i < len - 100; ++i) {
+         if (stat_buf[i] == '\n' && stat_buf[i+1] == 'c'
diff --git a/debian/patches/boehm-gc-nocheck.diff b/debian/patches/boehm-gc-nocheck.diff
new file mode 100644
index 0000000..231daf6
--- /dev/null
+++ b/debian/patches/boehm-gc-nocheck.diff
@@ -0,0 +1,18 @@
+# DP: Disable running the boehm-gc testsuite. Hangs the buildd at least on hppa.
+
+---
+ boehm-gc/Makefile.in |    3 ++-
+ 1 files changed, 2 insertions(+), 1 deletions(-)
+
+--- a/src/boehm-gc/Makefile.in
++++ b/src/boehm-gc/Makefile.in
+@@ -684,7 +684,8 @@ check-TESTS: $(TESTS)
+ 	  test "$$failed" -eq 0; \
+ 	else :; fi
+ check-am: $(check_PROGRAMS)
+-	$(MAKE) $(AM_MAKEFLAGS) check-TESTS
++	: # $(MAKE) $(AM_MAKEFLAGS) check-TESTS
++	@echo target $@ disabled for Debian build.
+ check: check-recursive
+ all-am: Makefile $(LTLIBRARIES) all-multi
+ installdirs: installdirs-recursive
diff --git a/debian/patches/bootstrap-no-unneeded-libs.diff b/debian/patches/bootstrap-no-unneeded-libs.diff
new file mode 100644
index 0000000..d0eb9ba
--- /dev/null
+++ b/debian/patches/bootstrap-no-unneeded-libs.diff
@@ -0,0 +1,1422 @@
+# DP: For bootstrap builds, don't build unneeded libstdc++ things
+# DP: (debug library, PCH headers).
+
+Index: b/src/Makefile.tpl
+===================================================================
+--- a/src/Makefile.tpl
++++ b/src/Makefile.tpl
+@@ -1060,7 +1060,9 @@
+ 	  --target=[+target_alias+] $${srcdiroption} [+ IF prev +]\
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) [+ ENDIF prev +]\
+ 	  $(STAGE[+id+]_CONFIGURE_FLAGS)[+ IF extra_configure_flags +] \
+-	  [+extra_configure_flags+][+ ENDIF extra_configure_flags +]
++	  [+extra_configure_flags+][+ ENDIF extra_configure_flags +] \
++	  [+ IF bootstrap_configure_flags +][+bootstrap_configure_flags+] \
++	  [+ ENDIF bootstrap_configure_flags +]
+ @endif [+prefix+][+module+]-bootstrap
+ [+ ENDFOR bootstrap_stage +]
+ [+ ENDIF bootstrap +]
+Index: b/src/Makefile.def
+===================================================================
+--- a/src/Makefile.def
++++ b/src/Makefile.def
+@@ -117,7 +117,8 @@
+ target_modules = { module= libstdc++-v3;
+ 		   bootstrap=true;
+ 		   lib_path=src/.libs;
+-		   raw_cxx=true; };
++		   raw_cxx=true;
++		   bootstrap_configure_flags='--disable-libstdcxx-debug --disable-libstdcxx-pch'; };
+ target_modules = { module= libmudflap; lib_path=.libs; };
+ target_modules = { module= libsanitizer; lib_path=.libs; };
+ target_modules = { module= libssp; lib_path=.libs; };
+Index: b/src/Makefile.in
+===================================================================
+--- a/src/Makefile.in
++++ b/src/Makefile.in
+@@ -3007,7 +3007,8 @@
+ 	$(SHELL) $${libsrcdir}/configure \
+ 	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
+ 	  --target=${target_alias} $${srcdiroption} \
+-	  $(STAGE1_CONFIGURE_FLAGS)
++	  $(STAGE1_CONFIGURE_FLAGS) \
++	  
+ @endif bfd-bootstrap
+ 
+ .PHONY: configure-stage2-bfd maybe-configure-stage2-bfd
+@@ -3040,7 +3041,8 @@
+ 	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+-	  $(STAGE2_CONFIGURE_FLAGS)
++	  $(STAGE2_CONFIGURE_FLAGS) \
++	  
+ @endif bfd-bootstrap
+ 
+ .PHONY: configure-stage3-bfd maybe-configure-stage3-bfd
+@@ -3073,7 +3075,8 @@
+ 	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+-	  $(STAGE3_CONFIGURE_FLAGS)
++	  $(STAGE3_CONFIGURE_FLAGS) \
++	  
+ @endif bfd-bootstrap
+ 
+ .PHONY: configure-stage4-bfd maybe-configure-stage4-bfd
+@@ -3106,7 +3109,8 @@
+ 	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+-	  $(STAGE4_CONFIGURE_FLAGS)
++	  $(STAGE4_CONFIGURE_FLAGS) \
++	  
+ @endif bfd-bootstrap
+ 
+ .PHONY: configure-stageprofile-bfd maybe-configure-stageprofile-bfd
+@@ -3139,7 +3143,8 @@
+ 	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+-	  $(STAGEprofile_CONFIGURE_FLAGS)
++	  $(STAGEprofile_CONFIGURE_FLAGS) \
++	  
+ @endif bfd-bootstrap
+ 
+ .PHONY: configure-stagefeedback-bfd maybe-configure-stagefeedback-bfd
+@@ -3172,7 +3177,8 @@
+ 	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+-	  $(STAGEfeedback_CONFIGURE_FLAGS)
++	  $(STAGEfeedback_CONFIGURE_FLAGS) \
++	  
+ @endif bfd-bootstrap
+ 
+ 
+@@ -3879,7 +3885,8 @@
+ 	$(SHELL) $${libsrcdir}/configure \
+ 	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
+ 	  --target=${target_alias} $${srcdiroption} \
+-	  $(STAGE1_CONFIGURE_FLAGS)
++	  $(STAGE1_CONFIGURE_FLAGS) \
++	  
+ @endif opcodes-bootstrap
+ 
+ .PHONY: configure-stage2-opcodes maybe-configure-stage2-opcodes
+@@ -3912,7 +3919,8 @@
+ 	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+-	  $(STAGE2_CONFIGURE_FLAGS)
++	  $(STAGE2_CONFIGURE_FLAGS) \
++	  
+ @endif opcodes-bootstrap
+ 
+ .PHONY: configure-stage3-opcodes maybe-configure-stage3-opcodes
+@@ -3945,7 +3953,8 @@
+ 	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+-	  $(STAGE3_CONFIGURE_FLAGS)
++	  $(STAGE3_CONFIGURE_FLAGS) \
++	  
+ @endif opcodes-bootstrap
+ 
+ .PHONY: configure-stage4-opcodes maybe-configure-stage4-opcodes
+@@ -3978,7 +3987,8 @@
+ 	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+-	  $(STAGE4_CONFIGURE_FLAGS)
++	  $(STAGE4_CONFIGURE_FLAGS) \
++	  
+ @endif opcodes-bootstrap
+ 
+ .PHONY: configure-stageprofile-opcodes maybe-configure-stageprofile-opcodes
+@@ -4011,7 +4021,8 @@
+ 	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+-	  $(STAGEprofile_CONFIGURE_FLAGS)
++	  $(STAGEprofile_CONFIGURE_FLAGS) \
++	  
+ @endif opcodes-bootstrap
+ 
+ .PHONY: configure-stagefeedback-opcodes maybe-configure-stagefeedback-opcodes
+@@ -4044,7 +4055,8 @@
+ 	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+-	  $(STAGEfeedback_CONFIGURE_FLAGS)
++	  $(STAGEfeedback_CONFIGURE_FLAGS) \
++	  
+ @endif opcodes-bootstrap
+ 
+ 
+@@ -4751,7 +4763,8 @@
+ 	$(SHELL) $${libsrcdir}/configure \
+ 	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
+ 	  --target=${target_alias} $${srcdiroption} \
+-	  $(STAGE1_CONFIGURE_FLAGS)
++	  $(STAGE1_CONFIGURE_FLAGS) \
++	  
+ @endif binutils-bootstrap
+ 
+ .PHONY: configure-stage2-binutils maybe-configure-stage2-binutils
+@@ -4784,7 +4797,8 @@
+ 	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+-	  $(STAGE2_CONFIGURE_FLAGS)
++	  $(STAGE2_CONFIGURE_FLAGS) \
++	  
+ @endif binutils-bootstrap
+ 
+ .PHONY: configure-stage3-binutils maybe-configure-stage3-binutils
+@@ -4817,7 +4831,8 @@
+ 	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+-	  $(STAGE3_CONFIGURE_FLAGS)
++	  $(STAGE3_CONFIGURE_FLAGS) \
++	  
+ @endif binutils-bootstrap
+ 
+ .PHONY: configure-stage4-binutils maybe-configure-stage4-binutils
+@@ -4850,7 +4865,8 @@
+ 	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+-	  $(STAGE4_CONFIGURE_FLAGS)
++	  $(STAGE4_CONFIGURE_FLAGS) \
++	  
+ @endif binutils-bootstrap
+ 
+ .PHONY: configure-stageprofile-binutils maybe-configure-stageprofile-binutils
+@@ -4883,7 +4899,8 @@
+ 	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+-	  $(STAGEprofile_CONFIGURE_FLAGS)
++	  $(STAGEprofile_CONFIGURE_FLAGS) \
++	  
+ @endif binutils-bootstrap
+ 
+ .PHONY: configure-stagefeedback-binutils maybe-configure-stagefeedback-binutils
+@@ -4916,7 +4933,8 @@
+ 	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+-	  $(STAGEfeedback_CONFIGURE_FLAGS)
++	  $(STAGEfeedback_CONFIGURE_FLAGS) \
++	  
+ @endif binutils-bootstrap
+ 
+ 
+@@ -8696,7 +8714,8 @@
+ 	$(SHELL) $${libsrcdir}/configure \
+ 	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
+ 	  --target=${target_alias} $${srcdiroption} \
+-	  $(STAGE1_CONFIGURE_FLAGS)
++	  $(STAGE1_CONFIGURE_FLAGS) \
++	  
+ @endif gas-bootstrap
+ 
+ .PHONY: configure-stage2-gas maybe-configure-stage2-gas
+@@ -8729,7 +8748,8 @@
+ 	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+-	  $(STAGE2_CONFIGURE_FLAGS)
++	  $(STAGE2_CONFIGURE_FLAGS) \
++	  
+ @endif gas-bootstrap
+ 
+ .PHONY: configure-stage3-gas maybe-configure-stage3-gas
+@@ -8762,7 +8782,8 @@
+ 	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+-	  $(STAGE3_CONFIGURE_FLAGS)
++	  $(STAGE3_CONFIGURE_FLAGS) \
++	  
+ @endif gas-bootstrap
+ 
+ .PHONY: configure-stage4-gas maybe-configure-stage4-gas
+@@ -8795,7 +8816,8 @@
+ 	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+-	  $(STAGE4_CONFIGURE_FLAGS)
++	  $(STAGE4_CONFIGURE_FLAGS) \
++	  
+ @endif gas-bootstrap
+ 
+ .PHONY: configure-stageprofile-gas maybe-configure-stageprofile-gas
+@@ -8828,7 +8850,8 @@
+ 	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+-	  $(STAGEprofile_CONFIGURE_FLAGS)
++	  $(STAGEprofile_CONFIGURE_FLAGS) \
++	  
+ @endif gas-bootstrap
+ 
+ .PHONY: configure-stagefeedback-gas maybe-configure-stagefeedback-gas
+@@ -8861,7 +8884,8 @@
+ 	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+-	  $(STAGEfeedback_CONFIGURE_FLAGS)
++	  $(STAGEfeedback_CONFIGURE_FLAGS) \
++	  
+ @endif gas-bootstrap
+ 
+ 
+@@ -9568,7 +9592,8 @@
+ 	$(SHELL) $${libsrcdir}/configure \
+ 	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
+ 	  --target=${target_alias} $${srcdiroption} \
+-	  $(STAGE1_CONFIGURE_FLAGS)
++	  $(STAGE1_CONFIGURE_FLAGS) \
++	  
+ @endif gcc-bootstrap
+ 
+ .PHONY: configure-stage2-gcc maybe-configure-stage2-gcc
+@@ -9601,7 +9626,8 @@
+ 	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+-	  $(STAGE2_CONFIGURE_FLAGS)
++	  $(STAGE2_CONFIGURE_FLAGS) \
++	  
+ @endif gcc-bootstrap
+ 
+ .PHONY: configure-stage3-gcc maybe-configure-stage3-gcc
+@@ -9634,7 +9660,8 @@
+ 	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+-	  $(STAGE3_CONFIGURE_FLAGS)
++	  $(STAGE3_CONFIGURE_FLAGS) \
++	  
+ @endif gcc-bootstrap
+ 
+ .PHONY: configure-stage4-gcc maybe-configure-stage4-gcc
+@@ -9667,7 +9694,8 @@
+ 	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+-	  $(STAGE4_CONFIGURE_FLAGS)
++	  $(STAGE4_CONFIGURE_FLAGS) \
++	  
+ @endif gcc-bootstrap
+ 
+ .PHONY: configure-stageprofile-gcc maybe-configure-stageprofile-gcc
+@@ -9700,7 +9728,8 @@
+ 	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+-	  $(STAGEprofile_CONFIGURE_FLAGS)
++	  $(STAGEprofile_CONFIGURE_FLAGS) \
++	  
+ @endif gcc-bootstrap
+ 
+ .PHONY: configure-stagefeedback-gcc maybe-configure-stagefeedback-gcc
+@@ -9733,7 +9762,8 @@
+ 	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+-	  $(STAGEfeedback_CONFIGURE_FLAGS)
++	  $(STAGEfeedback_CONFIGURE_FLAGS) \
++	  
+ @endif gcc-bootstrap
+ 
+ 
+@@ -10441,7 +10471,8 @@
+ 	  $(HOST_CONFIGARGS) --build=${build_alias} --host=none-${host_vendor}-${host_os} \
+ 	  --target=none-${host_vendor}-${host_os} $${srcdiroption} \
+ 	  $(STAGE1_CONFIGURE_FLAGS) \
+-	  --disable-shared
++	  --disable-shared \
++	  
+ @endif gmp-bootstrap
+ 
+ .PHONY: configure-stage2-gmp maybe-configure-stage2-gmp
+@@ -10475,7 +10506,8 @@
+ 	  --target=none-${host_vendor}-${host_os} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+ 	  $(STAGE2_CONFIGURE_FLAGS) \
+-	  --disable-shared
++	  --disable-shared \
++	  
+ @endif gmp-bootstrap
+ 
+ .PHONY: configure-stage3-gmp maybe-configure-stage3-gmp
+@@ -10509,7 +10541,8 @@
+ 	  --target=none-${host_vendor}-${host_os} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+ 	  $(STAGE3_CONFIGURE_FLAGS) \
+-	  --disable-shared
++	  --disable-shared \
++	  
+ @endif gmp-bootstrap
+ 
+ .PHONY: configure-stage4-gmp maybe-configure-stage4-gmp
+@@ -10543,7 +10576,8 @@
+ 	  --target=none-${host_vendor}-${host_os} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+ 	  $(STAGE4_CONFIGURE_FLAGS) \
+-	  --disable-shared
++	  --disable-shared \
++	  
+ @endif gmp-bootstrap
+ 
+ .PHONY: configure-stageprofile-gmp maybe-configure-stageprofile-gmp
+@@ -10577,7 +10611,8 @@
+ 	  --target=none-${host_vendor}-${host_os} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+ 	  $(STAGEprofile_CONFIGURE_FLAGS) \
+-	  --disable-shared
++	  --disable-shared \
++	  
+ @endif gmp-bootstrap
+ 
+ .PHONY: configure-stagefeedback-gmp maybe-configure-stagefeedback-gmp
+@@ -10611,7 +10646,8 @@
+ 	  --target=none-${host_vendor}-${host_os} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+ 	  $(STAGEfeedback_CONFIGURE_FLAGS) \
+-	  --disable-shared
++	  --disable-shared \
++	  
+ @endif gmp-bootstrap
+ 
+ 
+@@ -11307,7 +11343,8 @@
+ 	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  $(STAGE1_CONFIGURE_FLAGS) \
+-	  --disable-shared @extra_mpfr_configure_flags@
++	  --disable-shared @extra_mpfr_configure_flags@ \
++	  
+ @endif mpfr-bootstrap
+ 
+ .PHONY: configure-stage2-mpfr maybe-configure-stage2-mpfr
+@@ -11341,7 +11378,8 @@
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+ 	  $(STAGE2_CONFIGURE_FLAGS) \
+-	  --disable-shared @extra_mpfr_configure_flags@
++	  --disable-shared @extra_mpfr_configure_flags@ \
++	  
+ @endif mpfr-bootstrap
+ 
+ .PHONY: configure-stage3-mpfr maybe-configure-stage3-mpfr
+@@ -11375,7 +11413,8 @@
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+ 	  $(STAGE3_CONFIGURE_FLAGS) \
+-	  --disable-shared @extra_mpfr_configure_flags@
++	  --disable-shared @extra_mpfr_configure_flags@ \
++	  
+ @endif mpfr-bootstrap
+ 
+ .PHONY: configure-stage4-mpfr maybe-configure-stage4-mpfr
+@@ -11409,7 +11448,8 @@
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+ 	  $(STAGE4_CONFIGURE_FLAGS) \
+-	  --disable-shared @extra_mpfr_configure_flags@
++	  --disable-shared @extra_mpfr_configure_flags@ \
++	  
+ @endif mpfr-bootstrap
+ 
+ .PHONY: configure-stageprofile-mpfr maybe-configure-stageprofile-mpfr
+@@ -11443,7 +11483,8 @@
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+ 	  $(STAGEprofile_CONFIGURE_FLAGS) \
+-	  --disable-shared @extra_mpfr_configure_flags@
++	  --disable-shared @extra_mpfr_configure_flags@ \
++	  
+ @endif mpfr-bootstrap
+ 
+ .PHONY: configure-stagefeedback-mpfr maybe-configure-stagefeedback-mpfr
+@@ -11477,7 +11518,8 @@
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+ 	  $(STAGEfeedback_CONFIGURE_FLAGS) \
+-	  --disable-shared @extra_mpfr_configure_flags@
++	  --disable-shared @extra_mpfr_configure_flags@ \
++	  
+ @endif mpfr-bootstrap
+ 
+ 
+@@ -12173,7 +12215,8 @@
+ 	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  $(STAGE1_CONFIGURE_FLAGS) \
+-	  --disable-shared @extra_mpc_gmp_configure_flags@ @extra_mpc_mpfr_configure_flags@
++	  --disable-shared @extra_mpc_gmp_configure_flags@ @extra_mpc_mpfr_configure_flags@ \
++	  
+ @endif mpc-bootstrap
+ 
+ .PHONY: configure-stage2-mpc maybe-configure-stage2-mpc
+@@ -12207,7 +12250,8 @@
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+ 	  $(STAGE2_CONFIGURE_FLAGS) \
+-	  --disable-shared @extra_mpc_gmp_configure_flags@ @extra_mpc_mpfr_configure_flags@
++	  --disable-shared @extra_mpc_gmp_configure_flags@ @extra_mpc_mpfr_configure_flags@ \
++	  
+ @endif mpc-bootstrap
+ 
+ .PHONY: configure-stage3-mpc maybe-configure-stage3-mpc
+@@ -12241,7 +12285,8 @@
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+ 	  $(STAGE3_CONFIGURE_FLAGS) \
+-	  --disable-shared @extra_mpc_gmp_configure_flags@ @extra_mpc_mpfr_configure_flags@
++	  --disable-shared @extra_mpc_gmp_configure_flags@ @extra_mpc_mpfr_configure_flags@ \
++	  
+ @endif mpc-bootstrap
+ 
+ .PHONY: configure-stage4-mpc maybe-configure-stage4-mpc
+@@ -12275,7 +12320,8 @@
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+ 	  $(STAGE4_CONFIGURE_FLAGS) \
+-	  --disable-shared @extra_mpc_gmp_configure_flags@ @extra_mpc_mpfr_configure_flags@
++	  --disable-shared @extra_mpc_gmp_configure_flags@ @extra_mpc_mpfr_configure_flags@ \
++	  
+ @endif mpc-bootstrap
+ 
+ .PHONY: configure-stageprofile-mpc maybe-configure-stageprofile-mpc
+@@ -12309,7 +12355,8 @@
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+ 	  $(STAGEprofile_CONFIGURE_FLAGS) \
+-	  --disable-shared @extra_mpc_gmp_configure_flags@ @extra_mpc_mpfr_configure_flags@
++	  --disable-shared @extra_mpc_gmp_configure_flags@ @extra_mpc_mpfr_configure_flags@ \
++	  
+ @endif mpc-bootstrap
+ 
+ .PHONY: configure-stagefeedback-mpc maybe-configure-stagefeedback-mpc
+@@ -12343,7 +12390,8 @@
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+ 	  $(STAGEfeedback_CONFIGURE_FLAGS) \
+-	  --disable-shared @extra_mpc_gmp_configure_flags@ @extra_mpc_mpfr_configure_flags@
++	  --disable-shared @extra_mpc_gmp_configure_flags@ @extra_mpc_mpfr_configure_flags@ \
++	  
+ @endif mpc-bootstrap
+ 
+ 
+@@ -13039,7 +13087,8 @@
+ 	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  $(STAGE1_CONFIGURE_FLAGS) \
+-	  --disable-shared @extra_isl_gmp_configure_flags@
++	  --disable-shared @extra_isl_gmp_configure_flags@ \
++	  
+ @endif isl-bootstrap
+ 
+ .PHONY: configure-stage2-isl maybe-configure-stage2-isl
+@@ -13073,7 +13122,8 @@
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+ 	  $(STAGE2_CONFIGURE_FLAGS) \
+-	  --disable-shared @extra_isl_gmp_configure_flags@
++	  --disable-shared @extra_isl_gmp_configure_flags@ \
++	  
+ @endif isl-bootstrap
+ 
+ .PHONY: configure-stage3-isl maybe-configure-stage3-isl
+@@ -13107,7 +13157,8 @@
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+ 	  $(STAGE3_CONFIGURE_FLAGS) \
+-	  --disable-shared @extra_isl_gmp_configure_flags@
++	  --disable-shared @extra_isl_gmp_configure_flags@ \
++	  
+ @endif isl-bootstrap
+ 
+ .PHONY: configure-stage4-isl maybe-configure-stage4-isl
+@@ -13141,7 +13192,8 @@
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+ 	  $(STAGE4_CONFIGURE_FLAGS) \
+-	  --disable-shared @extra_isl_gmp_configure_flags@
++	  --disable-shared @extra_isl_gmp_configure_flags@ \
++	  
+ @endif isl-bootstrap
+ 
+ .PHONY: configure-stageprofile-isl maybe-configure-stageprofile-isl
+@@ -13175,7 +13227,8 @@
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+ 	  $(STAGEprofile_CONFIGURE_FLAGS) \
+-	  --disable-shared @extra_isl_gmp_configure_flags@
++	  --disable-shared @extra_isl_gmp_configure_flags@ \
++	  
+ @endif isl-bootstrap
+ 
+ .PHONY: configure-stagefeedback-isl maybe-configure-stagefeedback-isl
+@@ -13209,7 +13262,8 @@
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+ 	  $(STAGEfeedback_CONFIGURE_FLAGS) \
+-	  --disable-shared @extra_isl_gmp_configure_flags@
++	  --disable-shared @extra_isl_gmp_configure_flags@ \
++	  
+ @endif isl-bootstrap
+ 
+ 
+@@ -13905,7 +13959,8 @@
+ 	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  $(STAGE1_CONFIGURE_FLAGS) \
+-	  --disable-shared --with-gmp=system --with-bits=gmp --with-isl=system
++	  --disable-shared --with-gmp=system --with-bits=gmp --with-isl=system \
++	  
+ @endif cloog-bootstrap
+ 
+ .PHONY: configure-stage2-cloog maybe-configure-stage2-cloog
+@@ -13939,7 +13994,8 @@
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+ 	  $(STAGE2_CONFIGURE_FLAGS) \
+-	  --disable-shared --with-gmp=system --with-bits=gmp --with-isl=system
++	  --disable-shared --with-gmp=system --with-bits=gmp --with-isl=system \
++	  
+ @endif cloog-bootstrap
+ 
+ .PHONY: configure-stage3-cloog maybe-configure-stage3-cloog
+@@ -13973,7 +14029,8 @@
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+ 	  $(STAGE3_CONFIGURE_FLAGS) \
+-	  --disable-shared --with-gmp=system --with-bits=gmp --with-isl=system
++	  --disable-shared --with-gmp=system --with-bits=gmp --with-isl=system \
++	  
+ @endif cloog-bootstrap
+ 
+ .PHONY: configure-stage4-cloog maybe-configure-stage4-cloog
+@@ -14007,7 +14064,8 @@
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+ 	  $(STAGE4_CONFIGURE_FLAGS) \
+-	  --disable-shared --with-gmp=system --with-bits=gmp --with-isl=system
++	  --disable-shared --with-gmp=system --with-bits=gmp --with-isl=system \
++	  
+ @endif cloog-bootstrap
+ 
+ .PHONY: configure-stageprofile-cloog maybe-configure-stageprofile-cloog
+@@ -14041,7 +14099,8 @@
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+ 	  $(STAGEprofile_CONFIGURE_FLAGS) \
+-	  --disable-shared --with-gmp=system --with-bits=gmp --with-isl=system
++	  --disable-shared --with-gmp=system --with-bits=gmp --with-isl=system \
++	  
+ @endif cloog-bootstrap
+ 
+ .PHONY: configure-stagefeedback-cloog maybe-configure-stagefeedback-cloog
+@@ -14075,7 +14134,8 @@
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+ 	  $(STAGEfeedback_CONFIGURE_FLAGS) \
+-	  --disable-shared --with-gmp=system --with-bits=gmp --with-isl=system
++	  --disable-shared --with-gmp=system --with-bits=gmp --with-isl=system \
++	  
+ @endif cloog-bootstrap
+ 
+ 
+@@ -14771,7 +14831,8 @@
+ 	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  $(STAGE1_CONFIGURE_FLAGS) \
+-	  --disable-shared
++	  --disable-shared \
++	  
+ @endif libelf-bootstrap
+ 
+ .PHONY: configure-stage2-libelf maybe-configure-stage2-libelf
+@@ -14805,7 +14866,8 @@
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+ 	  $(STAGE2_CONFIGURE_FLAGS) \
+-	  --disable-shared
++	  --disable-shared \
++	  
+ @endif libelf-bootstrap
+ 
+ .PHONY: configure-stage3-libelf maybe-configure-stage3-libelf
+@@ -14839,7 +14901,8 @@
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+ 	  $(STAGE3_CONFIGURE_FLAGS) \
+-	  --disable-shared
++	  --disable-shared \
++	  
+ @endif libelf-bootstrap
+ 
+ .PHONY: configure-stage4-libelf maybe-configure-stage4-libelf
+@@ -14873,7 +14936,8 @@
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+ 	  $(STAGE4_CONFIGURE_FLAGS) \
+-	  --disable-shared
++	  --disable-shared \
++	  
+ @endif libelf-bootstrap
+ 
+ .PHONY: configure-stageprofile-libelf maybe-configure-stageprofile-libelf
+@@ -14907,7 +14971,8 @@
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+ 	  $(STAGEprofile_CONFIGURE_FLAGS) \
+-	  --disable-shared
++	  --disable-shared \
++	  
+ @endif libelf-bootstrap
+ 
+ .PHONY: configure-stagefeedback-libelf maybe-configure-stagefeedback-libelf
+@@ -14941,7 +15006,8 @@
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+ 	  $(STAGEfeedback_CONFIGURE_FLAGS) \
+-	  --disable-shared
++	  --disable-shared \
++	  
+ @endif libelf-bootstrap
+ 
+ 
+@@ -15636,7 +15702,8 @@
+ 	$(SHELL) $${libsrcdir}/configure \
+ 	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
+ 	  --target=${target_alias} $${srcdiroption} \
+-	  $(STAGE1_CONFIGURE_FLAGS)
++	  $(STAGE1_CONFIGURE_FLAGS) \
++	  
+ @endif gold-bootstrap
+ 
+ .PHONY: configure-stage2-gold maybe-configure-stage2-gold
+@@ -15669,7 +15736,8 @@
+ 	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+-	  $(STAGE2_CONFIGURE_FLAGS)
++	  $(STAGE2_CONFIGURE_FLAGS) \
++	  
+ @endif gold-bootstrap
+ 
+ .PHONY: configure-stage3-gold maybe-configure-stage3-gold
+@@ -15702,7 +15770,8 @@
+ 	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+-	  $(STAGE3_CONFIGURE_FLAGS)
++	  $(STAGE3_CONFIGURE_FLAGS) \
++	  
+ @endif gold-bootstrap
+ 
+ .PHONY: configure-stage4-gold maybe-configure-stage4-gold
+@@ -15735,7 +15804,8 @@
+ 	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+-	  $(STAGE4_CONFIGURE_FLAGS)
++	  $(STAGE4_CONFIGURE_FLAGS) \
++	  
+ @endif gold-bootstrap
+ 
+ .PHONY: configure-stageprofile-gold maybe-configure-stageprofile-gold
+@@ -15768,7 +15838,8 @@
+ 	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+-	  $(STAGEprofile_CONFIGURE_FLAGS)
++	  $(STAGEprofile_CONFIGURE_FLAGS) \
++	  
+ @endif gold-bootstrap
+ 
+ .PHONY: configure-stagefeedback-gold maybe-configure-stagefeedback-gold
+@@ -15801,7 +15872,8 @@
+ 	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+-	  $(STAGEfeedback_CONFIGURE_FLAGS)
++	  $(STAGEfeedback_CONFIGURE_FLAGS) \
++	  
+ @endif gold-bootstrap
+ 
+ 
+@@ -16948,7 +17020,8 @@
+ 	$(SHELL) $${libsrcdir}/configure \
+ 	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
+ 	  --target=${target_alias} $${srcdiroption} \
+-	  $(STAGE1_CONFIGURE_FLAGS)
++	  $(STAGE1_CONFIGURE_FLAGS) \
++	  
+ @endif intl-bootstrap
+ 
+ .PHONY: configure-stage2-intl maybe-configure-stage2-intl
+@@ -16981,7 +17054,8 @@
+ 	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+-	  $(STAGE2_CONFIGURE_FLAGS)
++	  $(STAGE2_CONFIGURE_FLAGS) \
++	  
+ @endif intl-bootstrap
+ 
+ .PHONY: configure-stage3-intl maybe-configure-stage3-intl
+@@ -17014,7 +17088,8 @@
+ 	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+-	  $(STAGE3_CONFIGURE_FLAGS)
++	  $(STAGE3_CONFIGURE_FLAGS) \
++	  
+ @endif intl-bootstrap
+ 
+ .PHONY: configure-stage4-intl maybe-configure-stage4-intl
+@@ -17047,7 +17122,8 @@
+ 	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+-	  $(STAGE4_CONFIGURE_FLAGS)
++	  $(STAGE4_CONFIGURE_FLAGS) \
++	  
+ @endif intl-bootstrap
+ 
+ .PHONY: configure-stageprofile-intl maybe-configure-stageprofile-intl
+@@ -17080,7 +17156,8 @@
+ 	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+-	  $(STAGEprofile_CONFIGURE_FLAGS)
++	  $(STAGEprofile_CONFIGURE_FLAGS) \
++	  
+ @endif intl-bootstrap
+ 
+ .PHONY: configure-stagefeedback-intl maybe-configure-stagefeedback-intl
+@@ -17113,7 +17190,8 @@
+ 	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+-	  $(STAGEfeedback_CONFIGURE_FLAGS)
++	  $(STAGEfeedback_CONFIGURE_FLAGS) \
++	  
+ @endif intl-bootstrap
+ 
+ 
+@@ -18685,7 +18763,8 @@
+ 	$(SHELL) $${libsrcdir}/configure \
+ 	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
+ 	  --target=${target_alias} $${srcdiroption} \
+-	  $(STAGE1_CONFIGURE_FLAGS)
++	  $(STAGE1_CONFIGURE_FLAGS) \
++	  
+ @endif ld-bootstrap
+ 
+ .PHONY: configure-stage2-ld maybe-configure-stage2-ld
+@@ -18718,7 +18797,8 @@
+ 	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+-	  $(STAGE2_CONFIGURE_FLAGS)
++	  $(STAGE2_CONFIGURE_FLAGS) \
++	  
+ @endif ld-bootstrap
+ 
+ .PHONY: configure-stage3-ld maybe-configure-stage3-ld
+@@ -18751,7 +18831,8 @@
+ 	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+-	  $(STAGE3_CONFIGURE_FLAGS)
++	  $(STAGE3_CONFIGURE_FLAGS) \
++	  
+ @endif ld-bootstrap
+ 
+ .PHONY: configure-stage4-ld maybe-configure-stage4-ld
+@@ -18784,7 +18865,8 @@
+ 	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+-	  $(STAGE4_CONFIGURE_FLAGS)
++	  $(STAGE4_CONFIGURE_FLAGS) \
++	  
+ @endif ld-bootstrap
+ 
+ .PHONY: configure-stageprofile-ld maybe-configure-stageprofile-ld
+@@ -18817,7 +18899,8 @@
+ 	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+-	  $(STAGEprofile_CONFIGURE_FLAGS)
++	  $(STAGEprofile_CONFIGURE_FLAGS) \
++	  
+ @endif ld-bootstrap
+ 
+ .PHONY: configure-stagefeedback-ld maybe-configure-stagefeedback-ld
+@@ -18850,7 +18933,8 @@
+ 	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+-	  $(STAGEfeedback_CONFIGURE_FLAGS)
++	  $(STAGEfeedback_CONFIGURE_FLAGS) \
++	  
+ @endif ld-bootstrap
+ 
+ 
+@@ -19557,7 +19641,8 @@
+ 	$(SHELL) $${libsrcdir}/configure \
+ 	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
+ 	  --target=${target_alias} $${srcdiroption} \
+-	  $(STAGE1_CONFIGURE_FLAGS)
++	  $(STAGE1_CONFIGURE_FLAGS) \
++	  
+ @endif libbacktrace-bootstrap
+ 
+ .PHONY: configure-stage2-libbacktrace maybe-configure-stage2-libbacktrace
+@@ -19590,7 +19675,8 @@
+ 	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+-	  $(STAGE2_CONFIGURE_FLAGS)
++	  $(STAGE2_CONFIGURE_FLAGS) \
++	  
+ @endif libbacktrace-bootstrap
+ 
+ .PHONY: configure-stage3-libbacktrace maybe-configure-stage3-libbacktrace
+@@ -19623,7 +19709,8 @@
+ 	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+-	  $(STAGE3_CONFIGURE_FLAGS)
++	  $(STAGE3_CONFIGURE_FLAGS) \
++	  
+ @endif libbacktrace-bootstrap
+ 
+ .PHONY: configure-stage4-libbacktrace maybe-configure-stage4-libbacktrace
+@@ -19656,7 +19743,8 @@
+ 	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+-	  $(STAGE4_CONFIGURE_FLAGS)
++	  $(STAGE4_CONFIGURE_FLAGS) \
++	  
+ @endif libbacktrace-bootstrap
+ 
+ .PHONY: configure-stageprofile-libbacktrace maybe-configure-stageprofile-libbacktrace
+@@ -19689,7 +19777,8 @@
+ 	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+-	  $(STAGEprofile_CONFIGURE_FLAGS)
++	  $(STAGEprofile_CONFIGURE_FLAGS) \
++	  
+ @endif libbacktrace-bootstrap
+ 
+ .PHONY: configure-stagefeedback-libbacktrace maybe-configure-stagefeedback-libbacktrace
+@@ -19722,7 +19811,8 @@
+ 	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+-	  $(STAGEfeedback_CONFIGURE_FLAGS)
++	  $(STAGEfeedback_CONFIGURE_FLAGS) \
++	  
+ @endif libbacktrace-bootstrap
+ 
+ 
+@@ -20429,7 +20519,8 @@
+ 	$(SHELL) $${libsrcdir}/configure \
+ 	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
+ 	  --target=${target_alias} $${srcdiroption} \
+-	  $(STAGE1_CONFIGURE_FLAGS)
++	  $(STAGE1_CONFIGURE_FLAGS) \
++	  
+ @endif libcpp-bootstrap
+ 
+ .PHONY: configure-stage2-libcpp maybe-configure-stage2-libcpp
+@@ -20462,7 +20553,8 @@
+ 	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+-	  $(STAGE2_CONFIGURE_FLAGS)
++	  $(STAGE2_CONFIGURE_FLAGS) \
++	  
+ @endif libcpp-bootstrap
+ 
+ .PHONY: configure-stage3-libcpp maybe-configure-stage3-libcpp
+@@ -20495,7 +20587,8 @@
+ 	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+-	  $(STAGE3_CONFIGURE_FLAGS)
++	  $(STAGE3_CONFIGURE_FLAGS) \
++	  
+ @endif libcpp-bootstrap
+ 
+ .PHONY: configure-stage4-libcpp maybe-configure-stage4-libcpp
+@@ -20528,7 +20621,8 @@
+ 	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+-	  $(STAGE4_CONFIGURE_FLAGS)
++	  $(STAGE4_CONFIGURE_FLAGS) \
++	  
+ @endif libcpp-bootstrap
+ 
+ .PHONY: configure-stageprofile-libcpp maybe-configure-stageprofile-libcpp
+@@ -20561,7 +20655,8 @@
+ 	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+-	  $(STAGEprofile_CONFIGURE_FLAGS)
++	  $(STAGEprofile_CONFIGURE_FLAGS) \
++	  
+ @endif libcpp-bootstrap
+ 
+ .PHONY: configure-stagefeedback-libcpp maybe-configure-stagefeedback-libcpp
+@@ -20594,7 +20689,8 @@
+ 	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+-	  $(STAGEfeedback_CONFIGURE_FLAGS)
++	  $(STAGEfeedback_CONFIGURE_FLAGS) \
++	  
+ @endif libcpp-bootstrap
+ 
+ 
+@@ -21301,7 +21397,8 @@
+ 	$(SHELL) $${libsrcdir}/configure \
+ 	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
+ 	  --target=${target_alias} $${srcdiroption} \
+-	  $(STAGE1_CONFIGURE_FLAGS)
++	  $(STAGE1_CONFIGURE_FLAGS) \
++	  
+ @endif libdecnumber-bootstrap
+ 
+ .PHONY: configure-stage2-libdecnumber maybe-configure-stage2-libdecnumber
+@@ -21334,7 +21431,8 @@
+ 	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+-	  $(STAGE2_CONFIGURE_FLAGS)
++	  $(STAGE2_CONFIGURE_FLAGS) \
++	  
+ @endif libdecnumber-bootstrap
+ 
+ .PHONY: configure-stage3-libdecnumber maybe-configure-stage3-libdecnumber
+@@ -21367,7 +21465,8 @@
+ 	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+-	  $(STAGE3_CONFIGURE_FLAGS)
++	  $(STAGE3_CONFIGURE_FLAGS) \
++	  
+ @endif libdecnumber-bootstrap
+ 
+ .PHONY: configure-stage4-libdecnumber maybe-configure-stage4-libdecnumber
+@@ -21400,7 +21499,8 @@
+ 	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+-	  $(STAGE4_CONFIGURE_FLAGS)
++	  $(STAGE4_CONFIGURE_FLAGS) \
++	  
+ @endif libdecnumber-bootstrap
+ 
+ .PHONY: configure-stageprofile-libdecnumber maybe-configure-stageprofile-libdecnumber
+@@ -21433,7 +21533,8 @@
+ 	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+-	  $(STAGEprofile_CONFIGURE_FLAGS)
++	  $(STAGEprofile_CONFIGURE_FLAGS) \
++	  
+ @endif libdecnumber-bootstrap
+ 
+ .PHONY: configure-stagefeedback-libdecnumber maybe-configure-stagefeedback-libdecnumber
+@@ -21466,7 +21567,8 @@
+ 	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+-	  $(STAGEfeedback_CONFIGURE_FLAGS)
++	  $(STAGEfeedback_CONFIGURE_FLAGS) \
++	  
+ @endif libdecnumber-bootstrap
+ 
+ 
+@@ -22614,7 +22716,8 @@
+ 	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  $(STAGE1_CONFIGURE_FLAGS) \
+-	  @extra_host_libiberty_configure_flags@
++	  @extra_host_libiberty_configure_flags@ \
++	  
+ @endif libiberty-bootstrap
+ 
+ .PHONY: configure-stage2-libiberty maybe-configure-stage2-libiberty
+@@ -22648,7 +22751,8 @@
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+ 	  $(STAGE2_CONFIGURE_FLAGS) \
+-	  @extra_host_libiberty_configure_flags@
++	  @extra_host_libiberty_configure_flags@ \
++	  
+ @endif libiberty-bootstrap
+ 
+ .PHONY: configure-stage3-libiberty maybe-configure-stage3-libiberty
+@@ -22682,7 +22786,8 @@
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+ 	  $(STAGE3_CONFIGURE_FLAGS) \
+-	  @extra_host_libiberty_configure_flags@
++	  @extra_host_libiberty_configure_flags@ \
++	  
+ @endif libiberty-bootstrap
+ 
+ .PHONY: configure-stage4-libiberty maybe-configure-stage4-libiberty
+@@ -22716,7 +22821,8 @@
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+ 	  $(STAGE4_CONFIGURE_FLAGS) \
+-	  @extra_host_libiberty_configure_flags@
++	  @extra_host_libiberty_configure_flags@ \
++	  
+ @endif libiberty-bootstrap
+ 
+ .PHONY: configure-stageprofile-libiberty maybe-configure-stageprofile-libiberty
+@@ -22750,7 +22856,8 @@
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+ 	  $(STAGEprofile_CONFIGURE_FLAGS) \
+-	  @extra_host_libiberty_configure_flags@
++	  @extra_host_libiberty_configure_flags@ \
++	  
+ @endif libiberty-bootstrap
+ 
+ .PHONY: configure-stagefeedback-libiberty maybe-configure-stagefeedback-libiberty
+@@ -22784,7 +22891,8 @@
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+ 	  $(STAGEfeedback_CONFIGURE_FLAGS) \
+-	  @extra_host_libiberty_configure_flags@
++	  @extra_host_libiberty_configure_flags@ \
++	  
+ @endif libiberty-bootstrap
+ 
+ 
+@@ -26056,7 +26164,8 @@
+ 	$(SHELL) $${libsrcdir}/configure \
+ 	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
+ 	  --target=${target_alias} $${srcdiroption} \
+-	  $(STAGE1_CONFIGURE_FLAGS)
++	  $(STAGE1_CONFIGURE_FLAGS) \
++	  
+ @endif zlib-bootstrap
+ 
+ .PHONY: configure-stage2-zlib maybe-configure-stage2-zlib
+@@ -26089,7 +26198,8 @@
+ 	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+-	  $(STAGE2_CONFIGURE_FLAGS)
++	  $(STAGE2_CONFIGURE_FLAGS) \
++	  
+ @endif zlib-bootstrap
+ 
+ .PHONY: configure-stage3-zlib maybe-configure-stage3-zlib
+@@ -26122,7 +26232,8 @@
+ 	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+-	  $(STAGE3_CONFIGURE_FLAGS)
++	  $(STAGE3_CONFIGURE_FLAGS) \
++	  
+ @endif zlib-bootstrap
+ 
+ .PHONY: configure-stage4-zlib maybe-configure-stage4-zlib
+@@ -26155,7 +26266,8 @@
+ 	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+-	  $(STAGE4_CONFIGURE_FLAGS)
++	  $(STAGE4_CONFIGURE_FLAGS) \
++	  
+ @endif zlib-bootstrap
+ 
+ .PHONY: configure-stageprofile-zlib maybe-configure-stageprofile-zlib
+@@ -26188,7 +26300,8 @@
+ 	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+-	  $(STAGEprofile_CONFIGURE_FLAGS)
++	  $(STAGEprofile_CONFIGURE_FLAGS) \
++	  
+ @endif zlib-bootstrap
+ 
+ .PHONY: configure-stagefeedback-zlib maybe-configure-stagefeedback-zlib
+@@ -26221,7 +26334,8 @@
+ 	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+-	  $(STAGEfeedback_CONFIGURE_FLAGS)
++	  $(STAGEfeedback_CONFIGURE_FLAGS) \
++	  
+ @endif zlib-bootstrap
+ 
+ 
+@@ -29919,7 +30033,8 @@
+ 	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  $(STAGE1_CONFIGURE_FLAGS) \
+-	  --enable-shared
++	  --enable-shared \
++	  
+ @endif lto-plugin-bootstrap
+ 
+ .PHONY: configure-stage2-lto-plugin maybe-configure-stage2-lto-plugin
+@@ -29953,7 +30068,8 @@
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+ 	  $(STAGE2_CONFIGURE_FLAGS) \
+-	  --enable-shared
++	  --enable-shared \
++	  
+ @endif lto-plugin-bootstrap
+ 
+ .PHONY: configure-stage3-lto-plugin maybe-configure-stage3-lto-plugin
+@@ -29987,7 +30103,8 @@
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+ 	  $(STAGE3_CONFIGURE_FLAGS) \
+-	  --enable-shared
++	  --enable-shared \
++	  
+ @endif lto-plugin-bootstrap
+ 
+ .PHONY: configure-stage4-lto-plugin maybe-configure-stage4-lto-plugin
+@@ -30021,7 +30138,8 @@
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+ 	  $(STAGE4_CONFIGURE_FLAGS) \
+-	  --enable-shared
++	  --enable-shared \
++	  
+ @endif lto-plugin-bootstrap
+ 
+ .PHONY: configure-stageprofile-lto-plugin maybe-configure-stageprofile-lto-plugin
+@@ -30055,7 +30173,8 @@
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+ 	  $(STAGEprofile_CONFIGURE_FLAGS) \
+-	  --enable-shared
++	  --enable-shared \
++	  
+ @endif lto-plugin-bootstrap
+ 
+ .PHONY: configure-stagefeedback-lto-plugin maybe-configure-stagefeedback-lto-plugin
+@@ -30089,7 +30208,8 @@
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+ 	  $(STAGEfeedback_CONFIGURE_FLAGS) \
+-	  --enable-shared
++	  --enable-shared \
++	  
+ @endif lto-plugin-bootstrap
+ 
+ 
+@@ -30829,7 +30949,9 @@
+ 	$(SHELL) $${libsrcdir}/configure \
+ 	  $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \
+ 	  --target=${target_alias} $${srcdiroption} \
+-	  $(STAGE1_CONFIGURE_FLAGS)
++	  $(STAGE1_CONFIGURE_FLAGS) \
++	  --disable-libstdcxx-debug --disable-libstdcxx-pch \
++	  
+ @endif target-libstdc++-v3-bootstrap
+ 
+ .PHONY: configure-stage2-target-libstdc++-v3 maybe-configure-stage2-target-libstdc++-v3
+@@ -30874,7 +30996,9 @@
+ 	  $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+-	  $(STAGE2_CONFIGURE_FLAGS)
++	  $(STAGE2_CONFIGURE_FLAGS) \
++	  --disable-libstdcxx-debug --disable-libstdcxx-pch \
++	  
+ @endif target-libstdc++-v3-bootstrap
+ 
+ .PHONY: configure-stage3-target-libstdc++-v3 maybe-configure-stage3-target-libstdc++-v3
+@@ -30919,7 +31043,9 @@
+ 	  $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+-	  $(STAGE3_CONFIGURE_FLAGS)
++	  $(STAGE3_CONFIGURE_FLAGS) \
++	  --disable-libstdcxx-debug --disable-libstdcxx-pch \
++	  
+ @endif target-libstdc++-v3-bootstrap
+ 
+ .PHONY: configure-stage4-target-libstdc++-v3 maybe-configure-stage4-target-libstdc++-v3
+@@ -30964,7 +31090,9 @@
+ 	  $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+-	  $(STAGE4_CONFIGURE_FLAGS)
++	  $(STAGE4_CONFIGURE_FLAGS) \
++	  --disable-libstdcxx-debug --disable-libstdcxx-pch \
++	  
+ @endif target-libstdc++-v3-bootstrap
+ 
+ .PHONY: configure-stageprofile-target-libstdc++-v3 maybe-configure-stageprofile-target-libstdc++-v3
+@@ -31009,7 +31137,9 @@
+ 	  $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+-	  $(STAGEprofile_CONFIGURE_FLAGS)
++	  $(STAGEprofile_CONFIGURE_FLAGS) \
++	  --disable-libstdcxx-debug --disable-libstdcxx-pch \
++	  
+ @endif target-libstdc++-v3-bootstrap
+ 
+ .PHONY: configure-stagefeedback-target-libstdc++-v3 maybe-configure-stagefeedback-target-libstdc++-v3
+@@ -31054,7 +31184,9 @@
+ 	  $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+-	  $(STAGEfeedback_CONFIGURE_FLAGS)
++	  $(STAGEfeedback_CONFIGURE_FLAGS) \
++	  --disable-libstdcxx-debug --disable-libstdcxx-pch \
++	  
+ @endif target-libstdc++-v3-bootstrap
+ 
+ 
+@@ -33631,7 +33763,8 @@
+ 	$(SHELL) $${libsrcdir}/configure \
+ 	  $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \
+ 	  --target=${target_alias} $${srcdiroption} \
+-	  $(STAGE1_CONFIGURE_FLAGS)
++	  $(STAGE1_CONFIGURE_FLAGS) \
++	  
+ @endif target-libgcc-bootstrap
+ 
+ .PHONY: configure-stage2-target-libgcc maybe-configure-stage2-target-libgcc
+@@ -33676,7 +33809,8 @@
+ 	  $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+-	  $(STAGE2_CONFIGURE_FLAGS)
++	  $(STAGE2_CONFIGURE_FLAGS) \
++	  
+ @endif target-libgcc-bootstrap
+ 
+ .PHONY: configure-stage3-target-libgcc maybe-configure-stage3-target-libgcc
+@@ -33721,7 +33855,8 @@
+ 	  $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+-	  $(STAGE3_CONFIGURE_FLAGS)
++	  $(STAGE3_CONFIGURE_FLAGS) \
++	  
+ @endif target-libgcc-bootstrap
+ 
+ .PHONY: configure-stage4-target-libgcc maybe-configure-stage4-target-libgcc
+@@ -33766,7 +33901,8 @@
+ 	  $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+-	  $(STAGE4_CONFIGURE_FLAGS)
++	  $(STAGE4_CONFIGURE_FLAGS) \
++	  
+ @endif target-libgcc-bootstrap
+ 
+ .PHONY: configure-stageprofile-target-libgcc maybe-configure-stageprofile-target-libgcc
+@@ -33811,7 +33947,8 @@
+ 	  $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+-	  $(STAGEprofile_CONFIGURE_FLAGS)
++	  $(STAGEprofile_CONFIGURE_FLAGS) \
++	  
+ @endif target-libgcc-bootstrap
+ 
+ .PHONY: configure-stagefeedback-target-libgcc maybe-configure-stagefeedback-target-libgcc
+@@ -33856,7 +33993,8 @@
+ 	  $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+-	  $(STAGEfeedback_CONFIGURE_FLAGS)
++	  $(STAGEfeedback_CONFIGURE_FLAGS) \
++	  
+ @endif target-libgcc-bootstrap
+ 
+ 
+@@ -40928,7 +41066,8 @@
+ 	$(SHELL) $${libsrcdir}/configure \
+ 	  $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \
+ 	  --target=${target_alias} $${srcdiroption} \
+-	  $(STAGE1_CONFIGURE_FLAGS)
++	  $(STAGE1_CONFIGURE_FLAGS) \
++	  
+ @endif target-libgomp-bootstrap
+ 
+ .PHONY: configure-stage2-target-libgomp maybe-configure-stage2-target-libgomp
+@@ -40973,7 +41112,8 @@
+ 	  $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+-	  $(STAGE2_CONFIGURE_FLAGS)
++	  $(STAGE2_CONFIGURE_FLAGS) \
++	  
+ @endif target-libgomp-bootstrap
+ 
+ .PHONY: configure-stage3-target-libgomp maybe-configure-stage3-target-libgomp
+@@ -41018,7 +41158,8 @@
+ 	  $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+-	  $(STAGE3_CONFIGURE_FLAGS)
++	  $(STAGE3_CONFIGURE_FLAGS) \
++	  
+ @endif target-libgomp-bootstrap
+ 
+ .PHONY: configure-stage4-target-libgomp maybe-configure-stage4-target-libgomp
+@@ -41063,7 +41204,8 @@
+ 	  $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+-	  $(STAGE4_CONFIGURE_FLAGS)
++	  $(STAGE4_CONFIGURE_FLAGS) \
++	  
+ @endif target-libgomp-bootstrap
+ 
+ .PHONY: configure-stageprofile-target-libgomp maybe-configure-stageprofile-target-libgomp
+@@ -41108,7 +41250,8 @@
+ 	  $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+-	  $(STAGEprofile_CONFIGURE_FLAGS)
++	  $(STAGEprofile_CONFIGURE_FLAGS) \
++	  
+ @endif target-libgomp-bootstrap
+ 
+ .PHONY: configure-stagefeedback-target-libgomp maybe-configure-stagefeedback-target-libgomp
+@@ -41153,7 +41296,8 @@
+ 	  $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \
+ 	  --target=${target_alias} $${srcdiroption} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+-	  $(STAGEfeedback_CONFIGURE_FLAGS)
++	  $(STAGEfeedback_CONFIGURE_FLAGS) \
++	  
+ @endif target-libgomp-bootstrap
+ 
+ 
diff --git a/debian/patches/canonical-cpppath.diff b/debian/patches/canonical-cpppath.diff
new file mode 100644
index 0000000..7ad31a4
--- /dev/null
+++ b/debian/patches/canonical-cpppath.diff
@@ -0,0 +1,36 @@
+# DP: Don't use any relative path names for the standard include paths.
+
+Index: b/src/gcc/incpath.c
+===================================================================
+--- a/src/gcc/incpath.c
++++ b/src/gcc/incpath.c
+@@ -173,6 +173,14 @@ add_standard_paths (const char *sysroot,
+ 			str = reconcat (str, str, dir_separator_str,
+ 					imultiarch, NULL);
+ 		    }
++		  {
++		    char *rp = lrealpath (str);
++		    if (rp)
++		      {
++			free (str);
++			str = rp;
++		      }
++		  }
+ 		  add_path (str, SYSTEM, p->cxx_aware, false);
+ 		}
+ 	    }
+@@ -247,6 +255,14 @@ add_standard_paths (const char *sysroot,
+ 	      else
+ 		str = reconcat (str, str, dir_separator_str, imultiarch, NULL);
+ 	    }
++	  {
++	    char *rp = lrealpath (str);
++	    if (rp)
++	      {
++		free (str);
++		str = rp;
++	      }
++	  }
+ 
+ 	  add_path (str, SYSTEM, p->cxx_aware, false);
+ 	}
diff --git a/debian/patches/config-ml.diff b/debian/patches/config-ml.diff
new file mode 100644
index 0000000..5ce6ad6
--- /dev/null
+++ b/debian/patches/config-ml.diff
@@ -0,0 +1,55 @@
+# DP: - Disable some biarch libraries for biarch builds.
+# DP: - Fix multilib builds on kernels which don't support all multilibs.
+
+Index: b/src/config-ml.in
+===================================================================
+--- a/src/config-ml.in
++++ b/src/config-ml.in
+@@ -475,6 +475,25 @@ powerpc*-*-* | rs6000*-*-*)
+ 	;;
+ esac
+ 
++if [ -z "$biarch_multidir_names" ]; then
++  biarch_multidir_names="libiberty libstdc++-v3 libgfortran libmudflap libssp libffi libobjc libgomp"
++  echo "WARNING: biarch_multidir_names is unset. Use default value:"
++  echo "  $biarch_multidir_names"
++fi
++ml_srcbase=`basename $ml_realsrcdir`
++old_multidirs="${multidirs}"
++multidirs=""
++for x in ${old_multidirs}; do
++    case " $x " in
++	" 32 "|" n32 "|" x32 "|" 64 "|" hf "|" sf "|" m4-nofpu ")
++	case "$biarch_multidir_names" in
++	    *"$ml_srcbase"*) multidirs="${multidirs} ${x}" ;;
++	esac
++	;;
++	*) multidirs="${multidirs} ${x}" ;;
++    esac
++done
++
+ # Remove extraneous blanks from multidirs.
+ # Tests like `if [ -n "$multidirs" ]' require it.
+ multidirs=`echo "$multidirs" | sed -e 's/^[ ][ ]*//' -e 's/[ ][ ]*$//' -e 's/[ ][ ]*/ /g'`
+@@ -891,9 +910,20 @@ if [ -n "${multidirs}" ] && [ -z "${ml_n
+ 	fi
+     fi
+ 
++    ml_configure_args=
++    for arg in ${ac_configure_args}
++    do
++      case $arg in
++      *CC=*)  ml_configure_args=${ml_config_env} ;;
++      *CXX=*) ml_configure_args=${ml_config_env} ;;
++      *GCJ=*) ml_configure_args=${ml_config_env} ;;
++      *) ;;
++      esac
++    done
++
+     if eval ${ml_config_env} ${ml_config_shell} ${ml_recprog} \
+ 	--with-multisubdir=${ml_dir} --with-multisrctop=${multisrctop} \
+-	"${ac_configure_args}" ${ml_config_env} ${ml_srcdiroption} ; then
++	"${ac_configure_args}" ${ml_configure_args} ${ml_config_env} ${ml_srcdiroption} ; then
+       true
+     else
+       exit 1
diff --git a/debian/patches/cross-biarch.diff b/debian/patches/cross-biarch.diff
new file mode 100644
index 0000000..27e2ff9
--- /dev/null
+++ b/debian/patches/cross-biarch.diff
@@ -0,0 +1,91 @@
+# DP: Fix the location of target's libs in cross-build for biarch
+
+Index: b/src/config-ml.in
+===================================================================
+--- a/src/config-ml.in
++++ b/src/config-ml.in
+@@ -533,7 +533,13 @@ multi-do:
+ 	    else \
+ 	      if [ -d ../$${dir}/$${lib} ]; then \
+ 		flags=`echo $$i | sed -e 's/^[^;]*;//' -e 's/@/ -/g'`; \
+-		if (cd ../$${dir}/$${lib}; $(MAKE) $(FLAGS_TO_PASS) \
++		libsuffix_="$${dir}"; \
++		if [ "$${dir}" = "n32" ]; then libsuffix_=32; fi; \
++		if [ -n "$$($${compiler} -v 2>&1 |grep '^Target: mips')" ] && [ "$${dir}" = "32" ]; then libsuffix_=o32; fi; \
++		if (cd ../$${dir}/$${lib}; $(MAKE) $(subst \
++				-B$(build_tooldir)/lib/, \
++				-B$(build_tooldir)/lib$${libsuffix_}/, \
++				$(FLAGS_TO_PASS)) \
+ 				CFLAGS="$(CFLAGS) $${flags}" \
+ 				CCASFLAGS="$(CCASFLAGS) $${flags}" \
+ 				FCFLAGS="$(FCFLAGS) $${flags}" \
+@@ -786,6 +792,15 @@ if [ -n "${multidirs}" ] && [ -z "${ml_n
+ 	GFORTRAN_=$GFORTRAN' '
+ 	GOC_=$GOC' '
+     else
++	if [ "${ml_dir}" = "." ]; then
++		FILTER_="s!X\\(.*\\)!\\1!p"
++	elif [ "${ml_dir}" = "n32" ]; then # mips n32 -> lib32
++		FILTER_="s!X\\(.*\\)/!\\132/!p"
++	elif [ "${ml_dir}" = "32" ] && [ "$(echo ${host} |grep '^mips')" ]; then # mips o32 -> libo32
++		FILTER_="s!X\\(.*\\)/!\\1o32/!p"
++	else
++		FILTER_="s!X\\(.*\\)/!\\1${ml_dir}/!p"
++	fi
+ 	# Create a regular expression that matches any string as long
+ 	# as ML_POPDIR.
+ 	popdir_rx=`echo "${ML_POPDIR}" | sed 's,.,.,g'`
+@@ -794,6 +809,8 @@ if [ -n "${multidirs}" ] && [ -z "${ml_n
+ 	  case $arg in
+ 	  -[BIL]"${ML_POPDIR}"/*)
+ 	    CC_="${CC_}"`echo "X${arg}" | sed -n "s/X\\(-[BIL]${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X-[BIL]${popdir_rx}\\(.*\\)/\1/p"`' ' ;;
++	  -B*/lib/)
++	    CC_="${CC_}"`echo "X${arg}" | sed -n "$FILTER_"`' ' ;;
+ 	  "${ML_POPDIR}"/*)
+ 	    CC_="${CC_}"`echo "X${arg}" | sed -n "s/X\\(${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X${popdir_rx}\\(.*\\)/\\1/p"`' ' ;;
+ 	  *)
+@@ -806,6 +823,8 @@ if [ -n "${multidirs}" ] && [ -z "${ml_n
+ 	  case $arg in
+ 	  -[BIL]"${ML_POPDIR}"/*)
+ 	    CXX_="${CXX_}"`echo "X${arg}" | sed -n "s/X\\(-[BIL]${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X-[BIL]${popdir_rx}\\(.*\\)/\\1/p"`' ' ;;
++	  -B*/lib/)
++	    CXX_="${CXX_}"`echo "X${arg}" | sed -n "$FILTER_"`' ' ;;
+ 	  "${ML_POPDIR}"/*)
+ 	    CXX_="${CXX_}"`echo "X${arg}" | sed -n "s/X\\(${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X${popdir_rx}\\(.*\\)/\\1/p"`' ' ;;
+ 	  *)
+@@ -818,6 +837,8 @@ if [ -n "${multidirs}" ] && [ -z "${ml_n
+ 	  case $arg in
+ 	  -[BIL]"${ML_POPDIR}"/*)
+ 	    F77_="${F77_}"`echo "X${arg}" | sed -n "s/X\\(-[BIL]${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X-[BIL]${popdir_rx}\\(.*\\)/\\1/p"`' ' ;;
++	  -B*/lib/)
++	    F77_="${F77_}"`echo "X${arg}" | sed -n "$FILTER_"`' ' ;;
+ 	  "${ML_POPDIR}"/*)
+ 	    F77_="${F77_}"`echo "X${arg}" | sed -n "s/X\\(${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X${popdir_rx}\\(.*\\)/\\1/p"`' ' ;;
+ 	  *)
+@@ -830,6 +851,8 @@ if [ -n "${multidirs}" ] && [ -z "${ml_n
+ 	  case $arg in
+ 	  -[BIL]"${ML_POPDIR}"/*)
+ 	    GCJ_="${GCJ_}"`echo "X${arg}" | sed -n "s/X\\(-[BIL]${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X-[BIL]${popdir_rx}\\(.*\\)/\\1/p"`' ' ;;
++	  -B*/lib/)
++	    GCJ_="${GCJ_}"`echo "X${arg}" | sed -n "$FILTER_"`' ' ;;
+ 	  "${ML_POPDIR}"/*)
+ 	    GCJ_="${GCJ_}"`echo "X${arg}" | sed -n "s/X\\(${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X${popdir_rx}\\(.*\\)/\\1/p"`' ' ;;
+ 	  *)
+@@ -842,6 +865,8 @@ if [ -n "${multidirs}" ] && [ -z "${ml_n
+ 	  case $arg in
+ 	  -[BIL]"${ML_POPDIR}"/*)
+ 	    GFORTRAN_="${GFORTRAN_}"`echo "X${arg}" | sed -n "s/X\\(-[BIL]${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X-[BIL]${popdir_rx}\\(.*\\)/\\1/p"`' ' ;;
++	  -B*/lib/)
++	    GFORTRAN_="${GFORTRAN_}"`echo "X${arg}" | sed -n "$FILTER_"`' ' ;;
+ 	  "${ML_POPDIR}"/*)
+ 	    GFORTRAN_="${GFORTRAN_}"`echo "X${arg}" | sed -n "s/X\\(${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X${popdir_rx}\\(.*\\)/\\1/p"`' ' ;;
+ 	  *)
+@@ -854,6 +879,8 @@ if [ -n "${multidirs}" ] && [ -z "${ml_n
+ 	  case $arg in
+ 	  -[BIL]"${ML_POPDIR}"/*)
+ 	    GOC_="${GOC_}"`echo "X${arg}" | sed -n "s/X\\(-[BIL]${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X-[BIL]${popdir_rx}\\(.*\\)/\\1/p"`' ' ;;
++	  -B*/lib/)
++	    GOC_="${GOC_}"`echo "X${arg}" | sed -n "$FILTER_"`' ' ;;
+ 	  "${ML_POPDIR}"/*)
+ 	    GOC_="${GOC_}"`echo "X${arg}" | sed -n "s/X\\(${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X${popdir_rx}\\(.*\\)/\\1/p"`' ' ;;
+ 	  *)
diff --git a/debian/patches/cross-fixes.diff b/debian/patches/cross-fixes.diff
new file mode 100644
index 0000000..bb796b1
--- /dev/null
+++ b/debian/patches/cross-fixes.diff
@@ -0,0 +1,81 @@
+# DP: Fix the linker error when creating an xcc for ia64
+
+---
+ gcc/config/ia64/fde-glibc.c     |    3 +++
+ gcc/config/ia64/unwind-ia64.c   |    3 ++-
+ gcc/unwind-compat.c             |    2 ++
+ gcc/unwind-generic.h            |    2 ++
+ 6 files changed, 14 insertions(+), 1 deletions(-)
+
+Index: b/src/libgcc/config/ia64/fde-glibc.c
+===================================================================
+--- a/src/libgcc/config/ia64/fde-glibc.c
++++ b/src/libgcc/config/ia64/fde-glibc.c
+@@ -28,6 +28,7 @@
+ #ifndef _GNU_SOURCE
+ #define _GNU_SOURCE 1
+ #endif
++#ifndef inhibit_libc
+ #include "config.h"
+ #include <stddef.h>
+ #include <stdlib.h>
+@@ -159,3 +160,5 @@
+ 
+   return data.ret;
+ }
++
++#endif
+Index: b/src/libgcc/config/ia64/unwind-ia64.c
+===================================================================
+--- a/src/libgcc/config/ia64/unwind-ia64.c
++++ b/src/libgcc/config/ia64/unwind-ia64.c
+@@ -27,6 +27,7 @@
+    see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+    <http://www.gnu.org/licenses/>.  */
+ 
++#ifndef inhibit_libc
+ #include "tconfig.h"
+ #include "tsystem.h"
+ #include "coretypes.h"
+@@ -2467,3 +2468,4 @@
+ #endif
+ 
+ #endif
++#endif
+Index: b/src/libgcc/unwind-compat.c
+===================================================================
+--- a/src/libgcc/unwind-compat.c
++++ b/src/libgcc/unwind-compat.c
+@@ -24,6 +24,7 @@
+    <http://www.gnu.org/licenses/>.  */
+ 
+ #if defined (USE_GAS_SYMVER) && defined (USE_LIBUNWIND_EXCEPTIONS)
++#ifndef inhibit_libc
+ #include "tconfig.h"
+ #include "tsystem.h"
+ #include "unwind.h"
+@@ -208,3 +209,4 @@
+ }
+ symver (_Unwind_SetIP, GCC_3.0);
+ #endif
++#endif
+Index: b/src/libgcc/unwind-generic.h
+===================================================================
+--- a/src/libgcc/unwind-generic.h
++++ b/src/libgcc/unwind-generic.h
+@@ -221,6 +221,7 @@
+    compatible with the standard ABI for IA-64, we inline these.  */
+ 
+ #ifdef __ia64__
++#ifndef inhibit_libc
+ #include <stdlib.h>
+ 
+ static inline _Unwind_Ptr
+@@ -239,6 +240,7 @@
+ 
+ /* @@@ Retrieve the Backing Store Pointer of the given context.  */
+ extern _Unwind_Word _Unwind_GetBSP (struct _Unwind_Context *);
++#endif
+ #else
+ extern _Unwind_Ptr _Unwind_GetDataRelBase (struct _Unwind_Context *);
+ extern _Unwind_Ptr _Unwind_GetTextRelBase (struct _Unwind_Context *);
diff --git a/debian/patches/cross-install-location.diff b/debian/patches/cross-install-location.diff
new file mode 100644
index 0000000..468a18b
--- /dev/null
+++ b/debian/patches/cross-install-location.diff
@@ -0,0 +1,422 @@
+Index: b/src/fixincludes/Makefile.in
+===================================================================
+--- a/src/fixincludes/Makefile.in
++++ b/src/fixincludes/Makefile.in
+@@ -52,9 +52,9 @@ target_noncanonical:=@target_noncanonica
+ gcc_version := $(shell cat $(srcdir)/../gcc/BASE-VER)
+ 
+ # Directory in which the compiler finds libraries etc.
+-libsubdir = $(libdir)/gcc/$(target_noncanonical)/$(gcc_version)
++libsubdir = $(libdir)/gcc-cross/$(target_noncanonical)/$(gcc_version)
+ # Directory in which the compiler finds executables
+-libexecsubdir = $(libexecdir)/gcc/$(target_noncanonical)/$(gcc_version)
++libexecsubdir = $(libexecdir)/gcc-cross/$(target_noncanonical)/$(gcc_version)
+ # Where our executable files go
+ itoolsdir = $(libexecsubdir)/install-tools
+ # Where our data files go
+Index: b/src/libgfortran/Makefile.in
+===================================================================
+--- a/src/libgfortran/Makefile.in
++++ b/src/libgfortran/Makefile.in
+@@ -608,17 +608,17 @@ libgfortran_la_LDFLAGS = -version-info `
+ 
+ libgfortran_la_DEPENDENCIES = $(version_dep) libgfortran.spec $(LIBQUADLIB_DEP)
+ myexeclib_LTLIBRARIES = libgfortranbegin.la
+-myexeclibdir = $(libdir)/gcc/$(target_alias)/$(gcc_version)$(MULTISUBDIR)
++myexeclibdir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version)$(MULTISUBDIR)
+ libgfortranbegin_la_SOURCES = fmain.c
+ libgfortranbegin_la_LDFLAGS = -static
+ libgfortranbegin_la_LINK = $(LINK) $(libgfortranbegin_la_LDFLAGS)
+ cafexeclib_LTLIBRARIES = libcaf_single.la
+-cafexeclibdir = $(libdir)/gcc/$(target_alias)/$(gcc_version)$(MULTISUBDIR)
++cafexeclibdir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version)$(MULTISUBDIR)
+ libcaf_single_la_SOURCES = caf/single.c
+ libcaf_single_la_LDFLAGS = -static
+ libcaf_single_la_DEPENDENCIES = caf/libcaf.h
+ libcaf_single_la_LINK = $(LINK) $(libcaf_single_la_LDFLAGS)
+- at IEEE_SUPPORT_TRUE@fincludedir = $(libdir)/gcc/$(target_alias)/$(gcc_version)$(MULTISUBDIR)/finclude
++ at IEEE_SUPPORT_TRUE@fincludedir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version)$(MULTISUBDIR)/finclude
+ @IEEE_SUPPORT_TRUE at nodist_finclude_HEADERS = ieee_arithmetic.mod ieee_exceptions.mod ieee_features.mod
+ AM_CPPFLAGS = -iquote$(srcdir)/io -I$(srcdir)/$(MULTISRCTOP)../gcc \
+ 	      -I$(srcdir)/$(MULTISRCTOP)../gcc/config $(LIBQUADINCLUDE) \
+Index: b/src/libgfortran/Makefile.am
+===================================================================
+--- a/src/libgfortran/Makefile.am
++++ b/src/libgfortran/Makefile.am
+@@ -42,20 +42,20 @@ libgfortran_la_LDFLAGS = -version-info `
+ libgfortran_la_DEPENDENCIES = $(version_dep) libgfortran.spec $(LIBQUADLIB_DEP)
+ 
+ myexeclib_LTLIBRARIES = libgfortranbegin.la
+-myexeclibdir = $(libdir)/gcc/$(target_alias)/$(gcc_version)$(MULTISUBDIR)
++myexeclibdir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version)$(MULTISUBDIR)
+ libgfortranbegin_la_SOURCES = fmain.c
+ libgfortranbegin_la_LDFLAGS = -static
+ libgfortranbegin_la_LINK = $(LINK) $(libgfortranbegin_la_LDFLAGS)
+ 
+ cafexeclib_LTLIBRARIES = libcaf_single.la
+-cafexeclibdir = $(libdir)/gcc/$(target_alias)/$(gcc_version)$(MULTISUBDIR)
++cafexeclibdir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version)$(MULTISUBDIR)
+ libcaf_single_la_SOURCES = caf/single.c
+ libcaf_single_la_LDFLAGS = -static
+ libcaf_single_la_DEPENDENCIES = caf/libcaf.h
+ libcaf_single_la_LINK = $(LINK) $(libcaf_single_la_LDFLAGS)
+ 
+ if IEEE_SUPPORT
+-fincludedir = $(libdir)/gcc/$(target_alias)/$(gcc_version)$(MULTISUBDIR)/finclude
++fincludedir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version)$(MULTISUBDIR)/finclude
+ nodist_finclude_HEADERS = ieee_arithmetic.mod ieee_exceptions.mod ieee_features.mod
+ endif
+ 
+Index: b/src/lto-plugin/Makefile.in
+===================================================================
+--- a/src/lto-plugin/Makefile.in
++++ b/src/lto-plugin/Makefile.in
+@@ -229,7 +229,7 @@ with_libiberty = @with_libiberty@
+ ACLOCAL_AMFLAGS = -I .. -I ../config
+ AUTOMAKE_OPTIONS = no-dependencies
+ gcc_version := $(shell cat $(top_srcdir)/../gcc/BASE-VER)
+-libexecsubdir := $(libexecdir)/gcc/$(real_target_noncanonical)/$(gcc_version)$(accel_dir_suffix)
++libexecsubdir := $(libexecdir)/gcc-cross/$(real_target_noncanonical)/$(gcc_version)$(accel_dir_suffix)
+ AM_CPPFLAGS = -I$(top_srcdir)/../include $(DEFS)
+ AM_CFLAGS = @ac_lto_plugin_warn_cflags@
+ AM_LDFLAGS = @ac_lto_plugin_ldflags@
+Index: b/src/lto-plugin/Makefile.am
+===================================================================
+--- a/src/lto-plugin/Makefile.am
++++ b/src/lto-plugin/Makefile.am
+@@ -5,7 +5,7 @@ AUTOMAKE_OPTIONS = no-dependencies
+ 
+ gcc_version := $(shell cat $(top_srcdir)/../gcc/BASE-VER)
+ target_noncanonical := @target_noncanonical@
+-libexecsubdir := $(libexecdir)/gcc/$(real_target_noncanonical)/$(gcc_version)$(accel_dir_suffix)
++libexecsubdir := $(libexecdir)/gcc-cross/$(real_target_noncanonical)/$(gcc_version)$(accel_dir_suffix)
+ 
+ AM_CPPFLAGS = -I$(top_srcdir)/../include $(DEFS)
+ AM_CFLAGS = @ac_lto_plugin_warn_cflags@
+Index: b/src/libitm/Makefile.in
+===================================================================
+--- a/src/libitm/Makefile.in
++++ b/src/libitm/Makefile.in
+@@ -306,8 +306,8 @@ SUBDIRS = testsuite
+ gcc_version := $(shell cat $(top_srcdir)/../gcc/BASE-VER)
+ abi_version = -fabi-version=4
+ search_path = $(addprefix $(top_srcdir)/config/, $(config_path)) $(top_srcdir)
+-fincludedir = $(libdir)/gcc/$(target_alias)/$(gcc_version)/finclude
+-libsubincludedir = $(libdir)/gcc/$(target_alias)/$(gcc_version)/include
++fincludedir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version)/finclude
++libsubincludedir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version)/include
+ AM_CPPFLAGS = $(addprefix -I, $(search_path))
+ AM_CFLAGS = $(XCFLAGS)
+ AM_CXXFLAGS = $(XCFLAGS) -std=gnu++0x -funwind-tables -fno-exceptions \
+Index: b/src/libitm/Makefile.am
+===================================================================
+--- a/src/libitm/Makefile.am
++++ b/src/libitm/Makefile.am
+@@ -11,8 +11,8 @@ abi_version = -fabi-version=4
+ config_path = @config_path@
+ search_path = $(addprefix $(top_srcdir)/config/, $(config_path)) $(top_srcdir)
+ 
+-fincludedir = $(libdir)/gcc/$(target_alias)/$(gcc_version)/finclude
+-libsubincludedir = $(libdir)/gcc/$(target_alias)/$(gcc_version)/include
++fincludedir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version)/finclude
++libsubincludedir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version)/include
+ 
+ vpath % $(strip $(search_path))
+ 
+Index: b/src/gcc/gcc.c
+===================================================================
+--- a/src/gcc/gcc.c
++++ b/src/gcc/gcc.c
+@@ -3970,7 +3970,7 @@ process_command (unsigned int decoded_op
+ 	 GCC_EXEC_PREFIX is typically a directory name with a trailing
+ 	 / (which is ignored by make_relative_prefix), so append a
+ 	 program name.  */
+-      char *tmp_prefix = concat (gcc_exec_prefix, "gcc", NULL);
++      char *tmp_prefix = concat (gcc_exec_prefix, "gcc-cross", NULL);
+       gcc_libexec_prefix = get_relative_prefix (tmp_prefix,
+ 						standard_exec_prefix,
+ 						standard_libexec_prefix);
+@@ -3996,15 +3996,15 @@ process_command (unsigned int decoded_op
+     {
+       int len = strlen (gcc_exec_prefix);
+ 
+-      if (len > (int) sizeof ("/lib/gcc/") - 1
++      if (len > (int) sizeof ("/lib/gcc-cross/") - 1
+ 	  && (IS_DIR_SEPARATOR (gcc_exec_prefix[len-1])))
+ 	{
+-	  temp = gcc_exec_prefix + len - sizeof ("/lib/gcc/") + 1;
++	  temp = gcc_exec_prefix + len - sizeof ("/lib/gcc-cross/") + 1;
+ 	  if (IS_DIR_SEPARATOR (*temp)
+ 	      && filename_ncmp (temp + 1, "lib", 3) == 0
+ 	      && IS_DIR_SEPARATOR (temp[4])
+-	      && filename_ncmp (temp + 5, "gcc", 3) == 0)
+-	    len -= sizeof ("/lib/gcc/") - 1;
++	      && filename_ncmp (temp + 5, "gcc-cross", 3) == 0)
++	    len -= sizeof ("/lib/gcc-cross/") - 1;
+ 	}
+ 
+       set_std_prefix (gcc_exec_prefix, len);
+Index: b/src/gcc/Makefile.in
+===================================================================
+--- a/src/gcc/Makefile.in
++++ b/src/gcc/Makefile.in
+@@ -581,9 +581,9 @@ libexecdir = @libexecdir@
+ # --------
+ 
+ # Directory in which the compiler finds libraries etc.
+-libsubdir = $(libdir)/gcc/$(real_target_noncanonical)/$(version)$(accel_dir_suffix)
++libsubdir = $(libdir)/gcc-cross/$(real_target_noncanonical)/$(version)$(accel_dir_suffix)
+ # Directory in which the compiler finds executables
+-libexecsubdir = $(libexecdir)/gcc/$(real_target_noncanonical)/$(version)$(accel_dir_suffix)
++libexecsubdir = $(libexecdir)/gcc-cross/$(real_target_noncanonical)/$(version)$(accel_dir_suffix)
+ # Directory in which all plugin resources are installed
+ plugin_resourcesdir = $(libsubdir)/plugin
+  # Directory in which plugin headers are installed
+@@ -1971,8 +1971,8 @@ prefix.o: $(FULLVER)
+ 
+ DRIVER_DEFINES = \
+   -DSTANDARD_STARTFILE_PREFIX=\"$(unlibsubdir)/\" \
+-  -DSTANDARD_EXEC_PREFIX=\"$(libdir)/gcc/\" \
+-  -DSTANDARD_LIBEXEC_PREFIX=\"$(libexecdir)/gcc/\" \
++  -DSTANDARD_EXEC_PREFIX=\"$(libdir)/gcc-cross/\" \
++  -DSTANDARD_LIBEXEC_PREFIX=\"$(libexecdir)/gcc-cross/\" \
+   -DDEFAULT_TARGET_VERSION=\"$(BASEVER_c)\" \
+   -DDEFAULT_TARGET_FULL_VERSION=\"$(FULLVER_c)\" \
+   -DDEFAULT_REAL_TARGET_MACHINE=\"$(real_target_noncanonical)\" \
+@@ -2594,7 +2594,7 @@ PREPROCESSOR_DEFINES = \
+   -DTOOL_INCLUDE_DIR=\"$(gcc_tooldir)/include\" \
+   -DNATIVE_SYSTEM_HEADER_DIR=\"$(NATIVE_SYSTEM_HEADER_DIR)\" \
+   -DPREFIX=\"$(prefix)/\" \
+-  -DSTANDARD_EXEC_PREFIX=\"$(libdir)/gcc/\" \
++  -DSTANDARD_EXEC_PREFIX=\"$(libdir)/gcc-cross/\" \
+   @TARGET_SYSTEM_ROOT_DEFINE@
+ 
+ CFLAGS-cppbuiltin.o += $(PREPROCESSOR_DEFINES) -DBASEVER=$(FULLVER_s)
+Index: b/src/libssp/Makefile.in
+===================================================================
+--- a/src/libssp/Makefile.in
++++ b/src/libssp/Makefile.in
+@@ -259,7 +259,7 @@ gcc_version := $(shell cat $(top_srcdir)
+ @LIBSSP_USE_SYMVER_SUN_TRUE@@LIBSSP_USE_SYMVER_TRUE at version_dep = ssp.map-sun
+ AM_CFLAGS = -Wall
+ toolexeclib_LTLIBRARIES = libssp.la libssp_nonshared.la
+-libsubincludedir = $(libdir)/gcc/$(target_noncanonical)/$(gcc_version)/include
++libsubincludedir = $(libdir)/gcc-cross/$(target_noncanonical)/$(gcc_version)/include
+ nobase_libsubinclude_HEADERS = ssp/ssp.h ssp/string.h ssp/stdio.h ssp/unistd.h
+ libssp_la_SOURCES = \
+ 	ssp.c gets-chk.c memcpy-chk.c memmove-chk.c mempcpy-chk.c \
+Index: b/src/libssp/Makefile.am
+===================================================================
+--- a/src/libssp/Makefile.am
++++ b/src/libssp/Makefile.am
+@@ -39,7 +39,7 @@ AM_CFLAGS = -Wall
+ toolexeclib_LTLIBRARIES = libssp.la libssp_nonshared.la
+ 
+ target_noncanonical = @target_noncanonical@
+-libsubincludedir = $(libdir)/gcc/$(target_noncanonical)/$(gcc_version)/include
++libsubincludedir = $(libdir)/gcc-cross/$(target_noncanonical)/$(gcc_version)/include
+ nobase_libsubinclude_HEADERS = ssp/ssp.h ssp/string.h ssp/stdio.h ssp/unistd.h
+ 
+ libssp_la_SOURCES = \
+Index: b/src/libquadmath/Makefile.in
+===================================================================
+--- a/src/libquadmath/Makefile.in
++++ b/src/libquadmath/Makefile.in
+@@ -325,7 +325,7 @@ AUTOMAKE_OPTIONS = 1.8 foreign
+ 
+ @BUILD_LIBQUADMATH_TRUE at libquadmath_la_DEPENDENCIES = $(version_dep) $(libquadmath_la_LIBADD)
+ @BUILD_LIBQUADMATH_TRUE at nodist_libsubinclude_HEADERS = quadmath.h quadmath_weak.h
+- at BUILD_LIBQUADMATH_TRUE@libsubincludedir = $(libdir)/gcc/$(target_alias)/$(gcc_version)/include
++ at BUILD_LIBQUADMATH_TRUE@libsubincludedir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version)/include
+ @BUILD_LIBQUADMATH_TRUE at libquadmath_la_SOURCES = \
+ @BUILD_LIBQUADMATH_TRUE@  math/x2y2m1q.c math/isinf_nsq.c math/acoshq.c math/fmodq.c \
+ @BUILD_LIBQUADMATH_TRUE@  math/acosq.c math/frexpq.c \
+Index: b/src/libquadmath/Makefile.am
+===================================================================
+--- a/src/libquadmath/Makefile.am
++++ b/src/libquadmath/Makefile.am
+@@ -41,7 +41,7 @@ libquadmath_la_LDFLAGS = -version-info `
+ libquadmath_la_DEPENDENCIES = $(version_dep) $(libquadmath_la_LIBADD)
+ 
+ nodist_libsubinclude_HEADERS = quadmath.h quadmath_weak.h
+-libsubincludedir = $(libdir)/gcc/$(target_alias)/$(gcc_version)/include
++libsubincludedir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version)/include
+ 
+ libquadmath_la_SOURCES = \
+   math/x2y2m1q.c math/isinf_nsq.c math/acoshq.c math/fmodq.c \
+Index: b/src/libobjc/Makefile.in
+===================================================================
+--- a/src/libobjc/Makefile.in
++++ b/src/libobjc/Makefile.in
+@@ -50,7 +50,7 @@ top_builddir = .
+ -include ../boehm-gc/threads.mk
+ 
+ libdir = $(exec_prefix)/lib
+-libsubdir = $(libdir)/gcc/$(target_noncanonical)/$(gcc_version)
++libsubdir = $(libdir)/gcc-cross/$(target_noncanonical)/$(gcc_version)
+ 
+ # Multilib support variables.
+ MULTISRCTOP =
+Index: b/src/libada/Makefile.in
+===================================================================
+--- a/src/libada/Makefile.in
++++ b/src/libada/Makefile.in
+@@ -68,7 +68,7 @@ GCC_DIR=$(MULTIBUILDTOP)../../$(host_sub
+ 
+ target_noncanonical:=@target_noncanonical@
+ version := $(shell cat $(srcdir)/../gcc/BASE-VER)
+-libsubdir := $(libdir)/gcc/$(target_noncanonical)/$(version)$(MULTISUBDIR)
++libsubdir := $(libdir)/gcc-cross/$(target_noncanonical)/$(version)$(MULTISUBDIR)
+ ADA_RTS_DIR=$(GCC_DIR)/ada/rts$(subst /,_,$(MULTISUBDIR))
+ ADA_RTS_SUBDIR=./rts$(subst /,_,$(MULTISUBDIR))
+ 
+Index: b/src/libgomp/Makefile.in
+===================================================================
+--- a/src/libgomp/Makefile.in
++++ b/src/libgomp/Makefile.in
+@@ -368,8 +368,8 @@ gcc_version := $(shell cat $(top_srcdir)
+ search_path = $(addprefix $(top_srcdir)/config/, $(config_path)) $(top_srcdir) \
+ 	      $(top_srcdir)/../include
+ 
+-fincludedir = $(libdir)/gcc/$(target_alias)/$(gcc_version)/finclude
+-libsubincludedir = $(libdir)/gcc/$(target_alias)/$(gcc_version)/include
++fincludedir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version)/finclude
++libsubincludedir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version)/include
+ AM_CPPFLAGS = $(addprefix -I, $(search_path))
+ AM_CFLAGS = $(XCFLAGS)
+ AM_LDFLAGS = $(XLDFLAGS) $(SECTION_LDFLAGS) $(OPT_LDFLAGS)
+Index: b/src/libgomp/Makefile.am
+===================================================================
+--- a/src/libgomp/Makefile.am
++++ b/src/libgomp/Makefile.am
+@@ -10,8 +10,8 @@ config_path = @config_path@
+ search_path = $(addprefix $(top_srcdir)/config/, $(config_path)) $(top_srcdir) \
+ 	      $(top_srcdir)/../include
+ 
+-fincludedir = $(libdir)/gcc/$(target_alias)/$(gcc_version)/finclude
+-libsubincludedir = $(libdir)/gcc/$(target_alias)/$(gcc_version)/include
++fincludedir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version)/finclude
++libsubincludedir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version)/include
+ 
+ vpath % $(strip $(search_path))
+ 
+Index: b/src/libgcc/Makefile.in
+===================================================================
+--- a/src/libgcc/Makefile.in
++++ b/src/libgcc/Makefile.in
+@@ -185,7 +185,7 @@ STRIP = @STRIP@
+ STRIP_FOR_TARGET = $(STRIP)
+ 
+ # Directory in which the compiler finds libraries etc.
+-libsubdir = $(libdir)/gcc/$(host_noncanonical)/$(version)@accel_dir_suffix@
++libsubdir = $(libdir)/gcc-cross/$(host_noncanonical)/$(version)@accel_dir_suffix@
+ # Used to install the shared libgcc.
+ slibdir = @slibdir@
+ # Maybe used for DLLs on Windows targets.
+Index: b/src/libjava/Makefile.in
+===================================================================
+--- a/src/libjava/Makefile.in
++++ b/src/libjava/Makefile.in
+@@ -797,8 +797,8 @@ write_entries_to_file = $(shell rm -f $(
+ 
+ 
+ # This is required by TL_AC_GXX_INCLUDE_DIR.
+-libsubdir = $(libdir)/gcc/$(target_noncanonical)/$(gcc_version)
+-libexecsubdir = $(libexecdir)/gcc/$(target_noncanonical)/$(gcc_version)
++libsubdir = $(libdir)/gcc-cross/$(target_noncanonical)/$(gcc_version)
++libexecsubdir = $(libexecdir)/gcc-cross/$(target_noncanonical)/$(gcc_version)
+ toolexeclib_LTLIBRARIES = libgcj.la libgij.la libgcj-tools.la \
+ 	$(am__append_2) $(am__append_3) $(am__append_4)
+ toolexecmainlib_DATA = libgcj.spec
+Index: b/src/libjava/Makefile.am
+===================================================================
+--- a/src/libjava/Makefile.am
++++ b/src/libjava/Makefile.am
+@@ -35,9 +35,9 @@ write_entries_to_file = $(shell rm -f $(
+ target_noncanonical = @target_noncanonical@
+ 
+ # This is required by TL_AC_GXX_INCLUDE_DIR.
+-libsubdir = $(libdir)/gcc/$(target_noncanonical)/$(gcc_version)
++libsubdir = $(libdir)/gcc-cross/$(target_noncanonical)/$(gcc_version)
+ 
+-libexecsubdir = $(libexecdir)/gcc/$(target_noncanonical)/$(gcc_version)
++libexecsubdir = $(libexecdir)/gcc-cross/$(target_noncanonical)/$(gcc_version)
+ 
+ ##
+ ## What gets installed, and where.
+Index: b/src/libffi/include/Makefile.am
+===================================================================
+--- a/src/libffi/include/Makefile.am
++++ b/src/libffi/include/Makefile.am
+@@ -8,6 +8,6 @@ EXTRA_DIST=ffi.h.in
+ 
+ # Where generated headers like ffitarget.h get installed.
+ gcc_version   := $(shell cat $(top_srcdir)/../gcc/BASE-VER)
+-toollibffidir := $(libdir)/gcc/$(target_alias)/$(gcc_version)/include
++toollibffidir := $(libdir)/gcc-cross/$(target_alias)/$(gcc_version)/include
+ 
+ toollibffi_HEADERS = ffi.h ffitarget.h
+Index: b/src/libffi/include/Makefile.in
+===================================================================
+--- a/src/libffi/include/Makefile.in
++++ b/src/libffi/include/Makefile.in
+@@ -223,7 +223,7 @@ EXTRA_DIST = ffi.h.in
+ 
+ # Where generated headers like ffitarget.h get installed.
+ gcc_version := $(shell cat $(top_srcdir)/../gcc/BASE-VER)
+-toollibffidir := $(libdir)/gcc/$(target_alias)/$(gcc_version)/include
++toollibffidir := $(libdir)/gcc-cross/$(target_alias)/$(gcc_version)/include
+ toollibffi_HEADERS = ffi.h ffitarget.h
+ all: all-am
+ 
+Index: b/src/libcc1/Makefile.am
+===================================================================
+--- a/src/libcc1/Makefile.am
++++ b/src/libcc1/Makefile.am
+@@ -35,7 +35,7 @@ libiberty = $(if $(wildcard $(libiberty_
+ 	    $(Wc)$(libiberty_normal)))
+ libiberty_dep = $(patsubst $(Wc)%,%,$(libiberty))
+ 
+-plugindir = $(libdir)/gcc/$(target_noncanonical)/$(gcc_version)/plugin
++plugindir = $(libdir)/gcc-cross/$(target_noncanonical)/$(gcc_version)/plugin
+ cc1libdir = $(libdir)/$(libsuffix)
+ 
+ if ENABLE_PLUGIN
+Index: b/src/libcc1/Makefile.in
+===================================================================
+--- a/src/libcc1/Makefile.in
++++ b/src/libcc1/Makefile.in
+@@ -262,7 +262,7 @@ libiberty = $(if $(wildcard $(libiberty_
+ 	    $(Wc)$(libiberty_normal)))
+ 
+ libiberty_dep = $(patsubst $(Wc)%,%,$(libiberty))
+-plugindir = $(libdir)/gcc/$(target_noncanonical)/$(gcc_version)/plugin
++plugindir = $(libdir)/gcc-cross/$(target_noncanonical)/$(gcc_version)/plugin
+ cc1libdir = $(libdir)/$(libsuffix)
+ @ENABLE_PLUGIN_TRUE at plugin_LTLIBRARIES = libcc1plugin.la
+ @ENABLE_PLUGIN_TRUE at cc1lib_LTLIBRARIES = libcc1.la
+Index: b/src/libsanitizer/Makefile.am
+===================================================================
+--- a/src/libsanitizer/Makefile.am
++++ b/src/libsanitizer/Makefile.am
+@@ -1,6 +1,6 @@
+ ACLOCAL_AMFLAGS = -I .. -I ../config
+ 
+-sanincludedir = $(libdir)/gcc/$(target_alias)/$(gcc_version)/include/sanitizer
++sanincludedir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version)/include/sanitizer
+ 
+ nodist_saninclude_HEADERS =
+ 
+Index: b/src/libsanitizer/Makefile.in
+===================================================================
+--- a/src/libsanitizer/Makefile.in
++++ b/src/libsanitizer/Makefile.in
+@@ -255,7 +255,7 @@ top_build_prefix = @top_build_prefix@
+ top_builddir = @top_builddir@
+ top_srcdir = @top_srcdir@
+ ACLOCAL_AMFLAGS = -I .. -I ../config
+-sanincludedir = $(libdir)/gcc/$(target_alias)/$(gcc_version)/include/sanitizer
++sanincludedir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version)/include/sanitizer
+ nodist_saninclude_HEADERS = $(am__append_1)
+ @SANITIZER_SUPPORTED_TRUE at SUBDIRS = sanitizer_common $(am__append_2) \
+ @SANITIZER_SUPPORTED_TRUE@	$(am__append_3) lsan asan ubsan \
diff --git a/debian/patches/cross-no-locale-include.diff b/debian/patches/cross-no-locale-include.diff
new file mode 100644
index 0000000..7b7c18a
--- /dev/null
+++ b/debian/patches/cross-no-locale-include.diff
@@ -0,0 +1,17 @@
+# DP: Don't add /usr/local/include for cross compilers. Assume that
+# DP: /usr/include is ready for multiarch, but not /usr/local/include.
+
+--- a/src/gcc/cppdefault.c
++++ b/src/gcc/cppdefault.c
+@@ -66,8 +66,11 @@
+ #ifdef LOCAL_INCLUDE_DIR
+     /* /usr/local/include comes before the fixincluded header files.  */
+     { LOCAL_INCLUDE_DIR, 0, 0, 1, 1, 2 },
++#if 0
++    /* Unsafe to assume that /usr/local/include is ready for multiarch.  */
+     { LOCAL_INCLUDE_DIR, 0, 0, 1, 1, 0 },
+ #endif
++#endif
+ #ifdef PREFIX_INCLUDE_DIR
+     { PREFIX_INCLUDE_DIR, 0, 0, 1, 0, 0 },
+ #endif
diff --git a/debian/patches/disable-gdc-tests.diff b/debian/patches/disable-gdc-tests.diff
new file mode 100644
index 0000000..abeb77d
--- /dev/null
+++ b/debian/patches/disable-gdc-tests.diff
@@ -0,0 +1,16 @@
+# DP: Disable D tests, hang on many buildds
+
+Index: b/src/gcc/d/Make-lang.in
+===================================================================
+--- a/src/gcc/d/Make-lang.in
++++ b/src/gcc/d/Make-lang.in
+@@ -284,6 +284,6 @@ d.stagefeedback: stagefeedback-start
+ # check targets.  However, our DejaGNU framework requires 'check-gdc' as its
+ # entry point.  We feed the former to the latter here.
+ check-d: check-gdc
+-lang_checks += check-gdc
+-lang_checks_parallelized += check-gdc
+-check_gdc_parallelize = 10
++#lang_checks += check-gdc
++#lang_checks_parallelized += check-gdc
++#check_gdc_parallelize = 10
diff --git a/debian/patches/fix-powerpcspe.diff b/debian/patches/fix-powerpcspe.diff
new file mode 100644
index 0000000..969b18e
--- /dev/null
+++ b/debian/patches/fix-powerpcspe.diff
@@ -0,0 +1,165 @@
+--- a/src/gcc/config/rs6000/rs6000.c	2014-11-28 13:37:46.330028430 +0100
++++ b/src/gcc/config/rs6000/rs6000.c	2014-11-28 13:39:15.634789216 +0100
+@@ -1703,7 +1703,7 @@ rs6000_hard_regno_nregs_internal (int re
+      SCmode so as to pass the value correctly in a pair of
+      registers.  */
+   else if (TARGET_E500_DOUBLE && FLOAT_MODE_P (mode) && mode != SCmode
+-	   && !DECIMAL_FLOAT_MODE_P (mode))
++	   && !DECIMAL_FLOAT_MODE_P (mode) && SPE_SIMD_REGNO_P (regno))
+     reg_size = UNITS_PER_FP_WORD;
+ 
+   else
+--- a/src/gcc/defaults.h	2014-11-28 13:37:11.173728954 +0100
++++ b/src/gcc/defaults.h	2014-11-28 13:37:56.326113532 +0100
+@@ -438,6 +438,11 @@
+ #define DWARF_FRAME_REGNUM(REG) DBX_REGISTER_NUMBER (REG)
+ #endif
+ 
++/* The mapping from dwarf CFA reg number to internal dwarf reg numbers.  */
++#ifndef DWARF_REG_TO_UNWIND_COLUMN
++#define DWARF_REG_TO_UNWIND_COLUMN(REGNO) (REGNO)
++#endif
++
+ /* Map register numbers held in the call frame info that gcc has
+    collected using DWARF_FRAME_REGNUM to those that should be output in
+    .debug_frame and .eh_frame.  */
+--- a/src/gcc/dwarf2cfi.c	2014-11-28 13:37:16.549775962 +0100
++++ b/src/gcc/dwarf2cfi.c	2014-11-28 13:37:56.330113659 +0100
+@@ -252,7 +252,66 @@
+ 		  gen_int_mode (size, mode));
+ }
+ 
+-/* Generate code to initialize the register size table.  */
++/* Datastructure used by expand_builtin_init_dwarf_reg_sizes and
++   init_one_dwarf_reg_size to communicate on what has been done by the
++   latter.  */
++
++typedef struct
++{
++  /* Whether the dwarf return column was initialized.  */
++  bool wrote_return_column;
++
++  /* For each hard register REGNO, whether init_one_dwarf_reg_size
++     was given REGNO to process already.  */
++  bool processed_regno [FIRST_PSEUDO_REGISTER];
++
++} init_one_dwarf_reg_state;
++
++/* Helper for expand_builtin_init_dwarf_reg_sizes.  Generate code to
++   initialize the dwarf register size table entry corresponding to register
++   REGNO in REGMODE.  TABLE is the table base address, SLOTMODE is the mode to
++   use for the size entry to initialize, and INIT_STATE is the communication
++   datastructure conveying what we're doing to our caller.  */
++
++static
++void init_one_dwarf_reg_size (int regno, enum machine_mode regmode,
++			      rtx table, enum machine_mode slotmode,
++			      init_one_dwarf_reg_state *init_state)
++{
++  const unsigned int dnum = DWARF_FRAME_REGNUM (regno);
++  const unsigned int rnum = DWARF2_FRAME_REG_OUT (dnum, 1);
++  const unsigned int dcol = DWARF_REG_TO_UNWIND_COLUMN (rnum);
++  
++  const HOST_WIDE_INT slotoffset = dcol * GET_MODE_SIZE (slotmode);
++  const HOST_WIDE_INT regsize = GET_MODE_SIZE (regmode);
++
++  /* No point in redoing things if we have processed this register already.
++     This could happen with register spans, e.g. when regno is first processed
++     as a piece of a span, then as a register on its own later on.  */
++
++  if (init_state->processed_regno[regno])
++    return;
++  init_state->processed_regno[regno] = true;
++
++  if (rnum >= DWARF_FRAME_REGISTERS)
++    return;
++
++  if (dnum == DWARF_FRAME_RETURN_COLUMN)
++    {
++      if (regmode == VOIDmode)
++	return;
++      init_state->wrote_return_column = true;
++    }
++
++  if (slotoffset < 0)
++    return;
++
++  emit_move_insn (adjust_address (table, slotmode, slotoffset),
++		  gen_int_mode (regsize, slotmode));
++}
++
++/* Generate code to initialize the dwarf register size table located
++   at the provided ADDRESS.  */
+ 
+ void
+ expand_builtin_init_dwarf_reg_sizes (tree address)
+@@ -261,37 +320,35 @@
+   enum machine_mode mode = TYPE_MODE (char_type_node);
+   rtx addr = expand_normal (address);
+   rtx mem = gen_rtx_MEM (BLKmode, addr);
+-  bool wrote_return_column = false;
++
++  init_one_dwarf_reg_state init_state;
++
++  memset ((char *)&init_state, 0, sizeof (init_state));
+ 
+   for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
+     {
+-      unsigned int dnum = DWARF_FRAME_REGNUM (i);
+-      unsigned int rnum = DWARF2_FRAME_REG_OUT (dnum, 1);
++      enum machine_mode save_mode = reg_raw_mode[i];
++      rtx span;
+ 
+-      if (rnum < DWARF_FRAME_REGISTERS)
++      if (HARD_REGNO_CALL_PART_CLOBBERED (i, save_mode))
++	save_mode = choose_hard_reg_mode (i, 1, true);
++      
++      span = targetm.dwarf_register_span (gen_rtx_REG (save_mode, i));
++      if (!span)
++	init_one_dwarf_reg_size (i, save_mode, mem, mode, &init_state);
++      else
+ 	{
+-	  HOST_WIDE_INT offset = rnum * GET_MODE_SIZE (mode);
+-	  enum machine_mode save_mode = reg_raw_mode[i];
+-	  HOST_WIDE_INT size;
+-
+-	  if (HARD_REGNO_CALL_PART_CLOBBERED (i, save_mode))
+-	    save_mode = choose_hard_reg_mode (i, 1, true);
+-	  if (dnum == DWARF_FRAME_RETURN_COLUMN)
++	  for (int si = 0; si < XVECLEN (span, 0); si++)
+ 	    {
+-	      if (save_mode == VOIDmode)
+-		continue;
+-	      wrote_return_column = true;
+-	    }
+-	  size = GET_MODE_SIZE (save_mode);
+-	  if (offset < 0)
+-	    continue;
++	      rtx reg = XVECEXP (span, 0, si);
+ 
+-	  emit_move_insn (adjust_address (mem, mode, offset),
+-			  gen_int_mode (size, mode));
++	      init_one_dwarf_reg_size
++		(REGNO (reg), GET_MODE (reg), mem, mode, &init_state);
++	    }
+ 	}
+     }
+ 
+-  if (!wrote_return_column)
++  if (!init_state.wrote_return_column)
+     init_return_column_size (mode, mem, DWARF_FRAME_RETURN_COLUMN);
+ 
+ #ifdef DWARF_ALT_FRAME_RETURN_COLUMN
+--- a/src/libgcc/unwind-dw2.c	2014-11-28 13:37:22.765829633 +0100
++++ b/src/libgcc/unwind-dw2.c	2014-11-28 13:37:56.334113765 +0100
+@@ -55,10 +55,6 @@
+ #define PRE_GCC3_DWARF_FRAME_REGISTERS DWARF_FRAME_REGISTERS
+ #endif
+ 
+-#ifndef DWARF_REG_TO_UNWIND_COLUMN
+-#define DWARF_REG_TO_UNWIND_COLUMN(REGNO) (REGNO)
+-#endif
+-
+ /* ??? 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.
diff --git a/debian/patches/g++-multiarch-incdir.diff b/debian/patches/g++-multiarch-incdir.diff
new file mode 100644
index 0000000..c535a92
--- /dev/null
+++ b/debian/patches/g++-multiarch-incdir.diff
@@ -0,0 +1,119 @@
+# DP: Use /usr/include/<multiarch>/c++/4.x as the include directory
+# DP: for host dependent c++ header files.
+
+Index: b/src/libstdc++-v3/include/Makefile.am
+===================================================================
+--- a/src/libstdc++-v3/include/Makefile.am
++++ b/src/libstdc++-v3/include/Makefile.am
+@@ -873,7 +873,7 @@ endif
+ 
+ host_srcdir = ${glibcxx_srcdir}/$(OS_INC_SRCDIR)
+ host_builddir = ./${host_alias}/bits
+-host_installdir = ${gxx_include_dir}/${host_alias}$(MULTISUBDIR)/bits
++host_installdir = $(if $(shell $(CC) -print-multiarch),/usr/include/$(shell $(filter-out -m%,$(CC)) -print-multiarch)/c++/$(notdir ${gxx_include_dir})$(MULTISUBDIR)/bits,${gxx_include_dir}/${default_host_alias}$(MULTISUBDIR)/bits)
+ host_headers = \
+ 	${host_srcdir}/ctype_base.h \
+ 	${host_srcdir}/ctype_inline.h \
+Index: b/src/libstdc++-v3/include/Makefile.in
+===================================================================
+--- a/src/libstdc++-v3/include/Makefile.in
++++ b/src/libstdc++-v3/include/Makefile.in
+@@ -1154,7 +1154,7 @@ profile_impl_headers = \
+ @GLIBCXX_C_HEADERS_COMPATIBILITY_TRUE at 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
++host_installdir = $(if $(shell $(CC) -print-multiarch),/usr/include/$(shell $(filter-out -m%,$(CC)) -print-multiarch)/c++/$(notdir ${gxx_include_dir})$(MULTISUBDIR)/bits,${gxx_include_dir}/${default_host_alias}$(MULTISUBDIR)/bits)
+ host_headers = \
+ 	${host_srcdir}/ctype_base.h \
+ 	${host_srcdir}/ctype_inline.h \
+Index: b/src/gcc/Makefile.in
+===================================================================
+--- a/src/gcc/Makefile.in
++++ b/src/gcc/Makefile.in
+@@ -1128,6 +1128,7 @@ FLAGS_TO_PASS = \
+ 	"prefix=$(prefix)" \
+ 	"local_prefix=$(local_prefix)" \
+ 	"gxx_include_dir=$(gcc_gxx_include_dir)" \
++	"gxx_tool_include_dir=$(gcc_gxx_tool_include_dir)" \
+ 	"build_tooldir=$(build_tooldir)" \
+ 	"gcc_tooldir=$(gcc_tooldir)" \
+ 	"bindir=$(bindir)" \
+@@ -1605,6 +1606,14 @@ ifneq ($(xmake_file),)
+ include $(xmake_file)
+ endif
+ 
++# Directory in which the compiler finds target-dependent g++ includes.
++ifneq ($(call if_multiarch,non-empty),)
++  gcc_gxx_tool_include_dir = $(libsubdir)/$(libsubdir_to_prefix)include/$(MULTIARCH_DIRNAME)/c++/$(BASEVER_c)
++else
++  gcc_gxx_tool_include_dir = $(gcc_gxx_include_dir)/$(target_noncanonical)
++endif
++
++
+ # all-tree.def includes all the tree.def files.
+ all-tree.def: s-alltree; @true
+ s-alltree: Makefile
+@@ -2610,7 +2619,7 @@ PREPROCESSOR_DEFINES = \
+   -DFIXED_INCLUDE_DIR=\"$(libsubdir)/include-fixed\" \
+   -DGPLUSPLUS_INCLUDE_DIR=\"$(gcc_gxx_include_dir)\" \
+   -DGPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT=$(gcc_gxx_include_dir_add_sysroot) \
+-  -DGPLUSPLUS_TOOL_INCLUDE_DIR=\"$(gcc_gxx_include_dir)/$(target_noncanonical)\" \
++  -DGPLUSPLUS_TOOL_INCLUDE_DIR=\"$(gcc_gxx_tool_include_dir)\" \
+   -DGPLUSPLUS_BACKWARD_INCLUDE_DIR=\"$(gcc_gxx_include_dir)/backward\" \
+   -DLOCAL_INCLUDE_DIR=\"$(local_includedir)\" \
+   -DCROSS_INCLUDE_DIR=\"$(CROSS_SYSTEM_HEADER_DIR)\" \
+Index: b/src/gcc/cppdefault.c
+===================================================================
+--- a/src/gcc/cppdefault.c
++++ b/src/gcc/cppdefault.c
+@@ -49,6 +49,8 @@ const struct default_include cpp_include
+     /* Pick up GNU C++ target-dependent include files.  */
+     { GPLUSPLUS_TOOL_INCLUDE_DIR, "G++", 1, 1,
+       GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 1 },
++    { GPLUSPLUS_INCLUDE_DIR, "G++", 1, 1,
++      GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 2 },
+ #endif
+ #ifdef GPLUSPLUS_BACKWARD_INCLUDE_DIR
+     /* Pick up GNU C++ backward and deprecated include files.  */
+Index: b/src/gcc/incpath.c
+===================================================================
+--- a/src/gcc/incpath.c
++++ b/src/gcc/incpath.c
+@@ -160,6 +160,18 @@ add_standard_paths (const char *sysroot,
+ 			}
+ 		      str = reconcat (str, str, dir_separator_str,
+ 				      imultiarch, NULL);
++		      if (p->cplusplus)
++			{
++			  char *suffix = strstr (str, "/c++/");
++			  *suffix++ = '\0';
++			  suffix = xstrdup (suffix);
++			  str = reconcat (str, str, dir_separator_str,
++					  imultiarch,
++					  dir_separator_str, suffix, NULL);
++			}
++		      else
++			str = reconcat (str, str, dir_separator_str,
++					imultiarch, NULL);
+ 		    }
+ 		  add_path (str, SYSTEM, p->cxx_aware, false);
+ 		}
+@@ -224,7 +236,16 @@ add_standard_paths (const char *sysroot,
+ 		  free (str);
+ 		  continue;
+ 		}
+-	      str = reconcat (str, str, dir_separator_str, imultiarch, NULL);
++	      if (p->cplusplus)
++		{
++		  char *suffix = strstr (str, "/c++/");
++		  *suffix++ = '\0';
++		  suffix = xstrdup (suffix);
++		  str = reconcat (str, str, dir_separator_str, imultiarch,
++				  dir_separator_str, suffix, NULL);
++		}
++	      else
++		str = reconcat (str, str, dir_separator_str, imultiarch, NULL);
+ 	    }
+ 
+ 	  add_path (str, SYSTEM, p->cxx_aware, false);
diff --git a/debian/patches/gcc-as-needed.diff b/debian/patches/gcc-as-needed.diff
new file mode 100644
index 0000000..b9b9987
--- /dev/null
+++ b/debian/patches/gcc-as-needed.diff
@@ -0,0 +1,172 @@
+# DP: On linux targets pass --as-needed by default to the linker.
+
+Index: b/src/gcc/config/aarch64/aarch64-linux.h
+===================================================================
+--- a/src/gcc/config/aarch64/aarch64-linux.h
++++ b/src/gcc/config/aarch64/aarch64-linux.h
+@@ -33,6 +33,7 @@
+ 
+ #define LINUX_TARGET_LINK_SPEC  "%{h*}		\
+    --hash-style=gnu				\
++   --as-needed					\
+    %{static:-Bstatic}				\
+    %{shared:-shared}				\
+    %{symbolic:-Bsymbolic}			\
+Index: b/src/gcc/config/ia64/linux.h
+===================================================================
+--- a/src/gcc/config/ia64/linux.h
++++ b/src/gcc/config/ia64/linux.h
+@@ -58,7 +58,7 @@ do {						\
+ #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux-ia64.so.2"
+ 
+ #undef LINK_SPEC
+-#define LINK_SPEC " --hash-style=gnu \
++#define LINK_SPEC " --hash-style=gnu --as-needed \
+   %{shared:-shared} \
+   %{!shared: \
+     %{!static: \
+Index: b/src/gcc/config/sparc/linux.h
+===================================================================
+--- a/src/gcc/config/sparc/linux.h
++++ b/src/gcc/config/sparc/linux.h
+@@ -86,7 +86,7 @@ extern const char *host_detect_local_cpu
+ #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2"
+ 
+ #undef  LINK_SPEC
+-#define LINK_SPEC "-m elf32_sparc --hash-style=gnu %{shared:-shared} \
++#define LINK_SPEC "-m elf32_sparc --hash-style=gnu --as-needed %{shared:-shared} \
+   %{!mno-relax:%{!r:-relax}} \
+   %{!shared: \
+     %{!static: \
+Index: b/src/gcc/config/s390/linux.h
+===================================================================
+--- a/src/gcc/config/s390/linux.h
++++ b/src/gcc/config/s390/linux.h
+@@ -65,7 +65,7 @@ along with GCC; see the file COPYING3.
+ 
+ #undef  LINK_SPEC
+ #define LINK_SPEC \
+-  "%{m31:-m elf_s390}%{m64:-m elf64_s390} --hash-style=gnu \
++  "%{m31:-m elf_s390}%{m64:-m elf64_s390} --hash-style=gnu --as-needed \
+    %{shared:-shared} \
+    %{!shared: \
+       %{static:-static} \
+Index: b/src/gcc/config/rs6000/linux64.h
+===================================================================
+--- a/src/gcc/config/rs6000/linux64.h
++++ b/src/gcc/config/rs6000/linux64.h
+@@ -407,11 +407,11 @@ extern int dot_symbols;
+ 					   " -m elf64ppc")
+ #endif
+ 
+-#define LINK_OS_LINUX_SPEC32 LINK_OS_LINUX_EMUL32 " --hash-style=gnu %{!shared: %{!static: \
++#define LINK_OS_LINUX_SPEC32 LINK_OS_LINUX_EMUL32 " --hash-style=gnu --as-needed %{!shared: %{!static: \
+   %{rdynamic:-export-dynamic} \
+   -dynamic-linker " GNU_USER_DYNAMIC_LINKER32 "}}"
+ 
+-#define LINK_OS_LINUX_SPEC64 LINK_OS_LINUX_EMUL64 " --hash-style=gnu %{!shared: %{!static: \
++#define LINK_OS_LINUX_SPEC64 LINK_OS_LINUX_EMUL64 " --hash-style=gnu --as-needed %{!shared: %{!static: \
+   %{rdynamic:-export-dynamic} \
+   -dynamic-linker " GNU_USER_DYNAMIC_LINKER64 "}}"
+ 
+Index: b/src/gcc/config/rs6000/sysv4.h
+===================================================================
+--- a/src/gcc/config/rs6000/sysv4.h
++++ b/src/gcc/config/rs6000/sysv4.h
+@@ -769,7 +769,7 @@ ENDIAN_SELECT(" -mbig", " -mlittle", DEF
+ #define GNU_USER_DYNAMIC_LINKER \
+   CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER, UCLIBC_DYNAMIC_LINKER)
+ 
+-#define LINK_OS_LINUX_SPEC "-m elf32ppclinux --hash-style=gnu %{!shared: %{!static: \
++#define LINK_OS_LINUX_SPEC "-m elf32ppclinux --hash-style=gnu --as-needed %{!shared: %{!static: \
+   %{rdynamic:-export-dynamic} \
+   -dynamic-linker " GNU_USER_DYNAMIC_LINKER "}}"
+ 
+Index: b/src/gcc/config/i386/gnu-user64.h
+===================================================================
+--- a/src/gcc/config/i386/gnu-user64.h
++++ b/src/gcc/config/i386/gnu-user64.h
+@@ -57,6 +57,7 @@ see the files COPYING3 and COPYING.RUNTI
+                    %{" SPEC_32 ":-m " GNU_USER_LINK_EMULATION32 "} \
+                    %{" SPEC_X32 ":-m " GNU_USER_LINK_EMULATIONX32 "} \
+   --hash-style=gnu \
++  --as-needed \
+   %{shared:-shared} \
+   %{!shared: \
+     %{!static: \
+Index: b/src/gcc/config/i386/gnu-user.h
+===================================================================
+--- a/src/gcc/config/i386/gnu-user.h
++++ b/src/gcc/config/i386/gnu-user.h
+@@ -74,7 +74,7 @@ along with GCC; see the file COPYING3.
+   { "link_emulation", GNU_USER_LINK_EMULATION },\
+   { "dynamic_linker", GNU_USER_DYNAMIC_LINKER }
+ 
+-#define GNU_USER_TARGET_LINK_SPEC "-m %(link_emulation) --hash-style=gnu %{shared:-shared} \
++#define GNU_USER_TARGET_LINK_SPEC "-m %(link_emulation) --hash-style=gnu --as-needed %{shared:-shared} \
+   %{!shared: \
+     %{!static: \
+       %{rdynamic:-export-dynamic} \
+Index: b/src/gcc/config/alpha/linux-elf.h
+===================================================================
+--- a/src/gcc/config/alpha/linux-elf.h
++++ b/src/gcc/config/alpha/linux-elf.h
+@@ -37,7 +37,7 @@ along with GCC; see the file COPYING3.
+ 
+ #define ELF_DYNAMIC_LINKER	GNU_USER_DYNAMIC_LINKER
+ 
+-#define LINK_SPEC "-m elf64alpha --hash-style=gnu %{G*} %{relax:-relax}	\
++#define LINK_SPEC "-m elf64alpha --hash-style=gnu --as-needed %{G*} %{relax:-relax}	\
+   %{O*:-O3} %{!O*:-O1}						\
+   %{shared:-shared}						\
+   %{!shared:							\
+Index: b/src/gcc/config/arm/linux-elf.h
+===================================================================
+--- a/src/gcc/config/arm/linux-elf.h
++++ b/src/gcc/config/arm/linux-elf.h
+@@ -73,6 +73,7 @@
+      %{!shared:-dynamic-linker " GNU_USER_DYNAMIC_LINKER "}} \
+    -X \
+    --hash-style=gnu \
++   --as-needed \
+    %{mbig-endian:-EB} %{mlittle-endian:-EL}" \
+    SUBTARGET_EXTRA_LINK_SPEC
+ 
+Index: b/src/gcc/config/mips/gnu-user.h
+===================================================================
+--- a/src/gcc/config/mips/gnu-user.h
++++ b/src/gcc/config/mips/gnu-user.h
+@@ -55,6 +55,7 @@ along with GCC; see the file COPYING3.
+ #undef GNU_USER_TARGET_LINK_SPEC
+ #define GNU_USER_TARGET_LINK_SPEC "\
+   %{G*} %{EB} %{EL} %{mips*} %{shared} \
++ -as-needed \
+   %{!shared: \
+     %{!static: \
+       %{rdynamic:-export-dynamic} \
+Index: b/src/libjava/Makefile.am
+===================================================================
+--- a/src/libjava/Makefile.am
++++ b/src/libjava/Makefile.am
+@@ -628,7 +628,7 @@ libgcj_bc.la: $(libgcj_bc_la_OBJECTS) $(
+ 	rm .libs/libgcj_bc.so; \
+ 	mv .libs/libgcj_bc.so.1.0.0 .libs/libgcj_bc.so; \
+ 	$(libgcj_bc_dummy_LINK) -xc /dev/null -Wl,-soname,libgcj_bc.so.1 \
+-	-o .libs/libgcj_bc.so.1.0.0 -lgcj || exit; \
++	-o .libs/libgcj_bc.so.1.0.0 -Wl,--no-as-needed -lgcj || exit; \
+ 	rm .libs/libgcj_bc.so.1; \
+ 	$(LN_S) libgcj_bc.so.1.0.0 .libs/libgcj_bc.so.1
+ 
+Index: b/src/libjava/Makefile.in
+===================================================================
+--- a/src/libjava/Makefile.in
++++ b/src/libjava/Makefile.in
+@@ -10600,7 +10600,7 @@ libgcj_bc.la: $(libgcj_bc_la_OBJECTS) $(
+ 	rm .libs/libgcj_bc.so; \
+ 	mv .libs/libgcj_bc.so.1.0.0 .libs/libgcj_bc.so; \
+ 	$(libgcj_bc_dummy_LINK) -xc /dev/null -Wl,-soname,libgcj_bc.so.1 \
+-	-o .libs/libgcj_bc.so.1.0.0 -lgcj || exit; \
++	-o .libs/libgcj_bc.so.1.0.0 -Wl,--no-as-needed -lgcj || exit; \
+ 	rm .libs/libgcj_bc.so.1; \
+ 	$(LN_S) libgcj_bc.so.1.0.0 .libs/libgcj_bc.so.1
+ 
diff --git a/debian/patches/gcc-auto-build.diff b/debian/patches/gcc-auto-build.diff
new file mode 100644
index 0000000..9a6fffd
--- /dev/null
+++ b/debian/patches/gcc-auto-build.diff
@@ -0,0 +1,15 @@
+# DP: Fix cross building a native compiler.
+
+Index: b/src/gcc/configure.ac
+===================================================================
+--- a/src/gcc/configure.ac
++++ b/src/gcc/configure.ac
+@@ -1628,7 +1628,7 @@ else
+ 	# Clearing GMPINC is necessary to prevent host headers being
+ 	# used by the build compiler.  Defining GENERATOR_FILE stops
+ 	# system.h from including gmp.h.
+-	CC="${CC_FOR_BUILD}" CFLAGS="${CFLAGS_FOR_BUILD}" \
++	CC="${CC_FOR_BUILD}" CFLAGS="${CFLAGS_FOR_BUILD} -DGENERATOR_FILE" \
+ 	CXX="${CXX_FOR_BUILD}" CXXFLAGS="${CXXFLAGS_FOR_BUILD}" \
+ 	LD="${LD_FOR_BUILD}" LDFLAGS="${LDFLAGS_FOR_BUILD}" \
+ 	GMPINC="" CPPFLAGS="${CPPFLAGS} -DGENERATOR_FILE" \
diff --git a/debian/patches/gcc-base-version.diff b/debian/patches/gcc-base-version.diff
new file mode 100644
index 0000000..d48da83
--- /dev/null
+++ b/debian/patches/gcc-base-version.diff
@@ -0,0 +1,228 @@
+# DP: Set base version to 5, introduce full version 5.x.y.
+
+Index: b/src/gcc/BASE-VER
+===================================================================
+--- a/src/gcc/BASE-VER
++++ b/src/gcc/BASE-VER
+@@ -1 +1 @@
+-5.3.1
++5
+Index: b/src/gcc/FULL-VER
+===================================================================
+--- /dev/null
++++ b/src/gcc/FULL-VER
+@@ -0,0 +1 @@
++5.3.1
+Index: b/src/gcc/Makefile.in
+===================================================================
+--- a/src/gcc/Makefile.in
++++ b/src/gcc/Makefile.in
+@@ -810,11 +810,13 @@ GTM_H     = tm.h      $(tm_file_list) in
+ TM_H      = $(GTM_H) insn-flags.h $(OPTIONS_H)
+ 
+ # Variables for version information.
+-BASEVER     := $(srcdir)/BASE-VER  # 4.x.y
++FULLVER     := $(srcdir)/FULL-VER  # 5.x.y
++BASEVER     := $(srcdir)/BASE-VER  # 5.x
+ DEVPHASE    := $(srcdir)/DEV-PHASE # experimental, prerelease, ""
+ DATESTAMP   := $(srcdir)/DATESTAMP # YYYYMMDD or empty
+ REVISION    := $(srcdir)/REVISION  # [BRANCH revision XXXXXX]
+ 
++FULLVER_c   := $(shell cat $(FULLVER))
+ BASEVER_c   := $(shell cat $(BASEVER))
+ DEVPHASE_c  := $(shell cat $(DEVPHASE))
+ DATESTAMP_c := $(shell cat $(DATESTAMP))
+@@ -839,6 +841,7 @@ PATCHLEVEL_c := \
+ # immediately after the comma in the $(if ...) constructs is
+ # significant - do not remove it.
+ BASEVER_s   := "\"$(BASEVER_c)\""
++FULLVER_s   := "\"$(FULLVER_c)\""
+ DEVPHASE_s  := "\"$(if $(DEVPHASE_c), ($(DEVPHASE_c)))\""
+ DATESTAMP_s := \
+   "\"$(if $(DEVPHASE_c)$(filter-out 0,$(PATCHLEVEL_c)), $(DATESTAMP_c))\""
+@@ -1969,8 +1972,8 @@ default-c.o: config/default-c.c
+ 
+ # Files used by all variants of C and some other languages.
+ 
+-CFLAGS-prefix.o += -DPREFIX=\"$(prefix)\" -DBASEVER=$(BASEVER_s)
+-prefix.o: $(BASEVER)
++CFLAGS-prefix.o += -DPREFIX=\"$(prefix)\" -DBASEVER=$(FULLVER_s)
++prefix.o: $(FULLVER)
+ 
+ # Language-independent files.
+ 
+@@ -1978,7 +1981,8 @@ DRIVER_DEFINES = \
+   -DSTANDARD_STARTFILE_PREFIX=\"$(unlibsubdir)/\" \
+   -DSTANDARD_EXEC_PREFIX=\"$(libdir)/gcc/\" \
+   -DSTANDARD_LIBEXEC_PREFIX=\"$(libexecdir)/gcc/\" \
+-  -DDEFAULT_TARGET_VERSION=\"$(version)\" \
++  -DDEFAULT_TARGET_VERSION=\"$(BASEVER_c)\" \
++  -DDEFAULT_TARGET_FULL_VERSION=\"$(FULLVER_c)\" \
+   -DDEFAULT_REAL_TARGET_MACHINE=\"$(real_target_noncanonical)\" \
+   -DDEFAULT_TARGET_MACHINE=\"$(target_noncanonical)\" \
+   -DSTANDARD_BINDIR_PREFIX=\"$(bindir)/\" \
+@@ -2028,20 +2032,20 @@ s-options-h: optionlist $(srcdir)/opt-fu
+ 
+ dumpvers: dumpvers.c
+ 
+-CFLAGS-version.o += -DBASEVER=$(BASEVER_s) -DDATESTAMP=$(DATESTAMP_s) \
++CFLAGS-version.o += -DBASEVER=$(FULLVER_s) -DDATESTAMP=$(DATESTAMP_s) \
+ 	-DREVISION=$(REVISION_s) \
+ 	-DDEVPHASE=$(DEVPHASE_s) -DPKGVERSION=$(PKGVERSION_s) \
+ 	-DBUGURL=$(BUGURL_s)
+-version.o: $(REVISION) $(DATESTAMP) $(BASEVER) $(DEVPHASE)
++version.o: $(REVISION) $(DATESTAMP) $(FULLVER) $(DEVPHASE)
+ 
+ # lto-compress.o needs $(ZLIBINC) added to the include flags.
+ CFLAGS-lto-compress.o += $(ZLIBINC)
+ 
+ bversion.h: s-bversion; @true
+-s-bversion: BASE-VER
+-	echo "#define BUILDING_GCC_MAJOR `echo $(BASEVER_c) | sed -e 's/^\([0-9]*\).*$$/\1/'`" > bversion.h
+-	echo "#define BUILDING_GCC_MINOR `echo $(BASEVER_c) | sed -e 's/^[0-9]*\.\([0-9]*\).*$$/\1/'`" >> bversion.h
+-	echo "#define BUILDING_GCC_PATCHLEVEL `echo $(BASEVER_c) | sed -e 's/^[0-9]*\.[0-9]*\.\([0-9]*\)$$/\1/'`" >> bversion.h
++s-bversion: FULL-VER
++	echo "#define BUILDING_GCC_MAJOR `echo $(FULLVER_c) | sed -e 's/^\([0-9]*\).*$$/\1/'`" > bversion.h
++	echo "#define BUILDING_GCC_MINOR `echo $(FULLVER_c) | sed -e 's/^[0-9]*\.\([0-9]*\).*$$/\1/'`" >> bversion.h
++	echo "#define BUILDING_GCC_PATCHLEVEL `echo $(FULLVER_c) | sed -e 's/^[0-9]*\.[0-9]*\.\([0-9]*\)$$/\1/'`" >> bversion.h
+ 	echo "#define BUILDING_GCC_VERSION (BUILDING_GCC_MAJOR * 1000 + BUILDING_GCC_MINOR)" >> bversion.h
+ 	$(STAMP) s-bversion
+ 
+@@ -2388,9 +2392,9 @@ build/%.o :  # dependencies provided by
+ ## build/version.o is compiled by the $(COMPILER_FOR_BUILD) but needs
+ ## several C macro definitions, just like version.o
+ build/version.o:  version.c version.h \
+-                  $(REVISION) $(DATESTAMP) $(BASEVER) $(DEVPHASE)
++                  $(REVISION) $(DATESTAMP) $(FULLVER) $(DEVPHASE)
+ 	$(COMPILER_FOR_BUILD) -c $(BUILD_COMPILERFLAGS) $(BUILD_CPPFLAGS) \
+-	-DBASEVER=$(BASEVER_s) -DDATESTAMP=$(DATESTAMP_s) \
++	-DBASEVER=$(FULLVER_s) -DDATESTAMP=$(DATESTAMP_s) \
+ 	-DREVISION=$(REVISION_s) \
+ 	-DDEVPHASE=$(DEVPHASE_s) -DPKGVERSION=$(PKGVERSION_s) \
+ 	-DBUGURL=$(BUGURL_s) -o $@ $<
+@@ -2601,8 +2605,8 @@ PREPROCESSOR_DEFINES = \
+   -DSTANDARD_EXEC_PREFIX=\"$(libdir)/gcc/\" \
+   @TARGET_SYSTEM_ROOT_DEFINE@
+ 
+-CFLAGS-cppbuiltin.o += $(PREPROCESSOR_DEFINES) -DBASEVER=$(BASEVER_s)
+-cppbuiltin.o: $(BASEVER)
++CFLAGS-cppbuiltin.o += $(PREPROCESSOR_DEFINES) -DBASEVER=$(FULLVER_s)
++cppbuiltin.o: $(FULLVER)
+ 
+ CFLAGS-cppdefault.o += $(PREPROCESSOR_DEFINES)
+ 
+@@ -2618,8 +2622,8 @@ build/gcov-iov$(build_exeext): build/gco
+ 		build/gcov-iov.o -o $@
+ 
+ gcov-iov.h: s-iov
+-s-iov: build/gcov-iov$(build_exeext) $(BASEVER) $(DEVPHASE)
+-	build/gcov-iov$(build_exeext) '$(BASEVER_c)' '$(DEVPHASE_c)' \
++s-iov: build/gcov-iov$(build_exeext) $(FULLVER) $(DEVPHASE)
++	build/gcov-iov$(build_exeext) '$(FULLVER_c)' '$(DEVPHASE_c)' \
+ 	    > tmp-gcov-iov.h
+ 	$(SHELL) $(srcdir)/../move-if-change tmp-gcov-iov.h gcov-iov.h
+ 	$(STAMP) s-iov
+@@ -2896,8 +2900,8 @@ TEXI_GCCINSTALL_FILES = install.texi ins
+ TEXI_CPPINT_FILES = cppinternals.texi gcc-common.texi gcc-vers.texi
+ 
+ # gcc-vers.texi is generated from the version files.
+-gcc-vers.texi: $(BASEVER) $(DEVPHASE)
+-	(echo "@set version-GCC $(BASEVER_c)"; \
++gcc-vers.texi: $(FULLVER) $(DEVPHASE)
++	(echo "@set version-GCC $(FULLVER_c)"; \
+ 	 if [ "$(DEVPHASE_c)" = "experimental" ]; \
+ 	 then echo "@set DEVELOPMENT"; \
+ 	 else echo "@clear DEVELOPMENT"; \
+Index: b/src/libjava/testsuite/lib/libjava.exp
+===================================================================
+--- a/src/libjava/testsuite/lib/libjava.exp
++++ b/src/libjava/testsuite/lib/libjava.exp
+@@ -179,7 +179,8 @@ proc libjava_init { args } {
+ 
+     set text [eval exec "$GCJ_UNDER_TEST -B$specdir -v 2>@ stdout"]
+     regexp " version \[^\n\r\]*" $text version
+-    set libjava_version [lindex $version 1]
++    # FIXME: Still needed?
++    #set libjava_version 5
+ 
+     verbose "version: $libjava_version"
+ 
+Index: b/src/gcc/gcc.c
+===================================================================
+--- a/src/gcc/gcc.c
++++ b/src/gcc/gcc.c
+@@ -152,7 +152,8 @@ static const char *compiler_version;
+ 
+ /* The target version.  */
+ 
+-static const char *const spec_version = DEFAULT_TARGET_VERSION;
++static const char *const base_version = DEFAULT_TARGET_VERSION;
++static const char *const spec_version = DEFAULT_TARGET_FULL_VERSION;
+ 
+ /* The target machine.  */
+ 
+@@ -4273,7 +4274,7 @@ process_command (unsigned int decoded_op
+      running, or, if that is not available, the configured prefix.  */
+   tooldir_prefix
+     = concat (gcc_exec_prefix ? gcc_exec_prefix : standard_exec_prefix,
+-	      spec_host_machine, dir_separator_str, spec_version,
++	      spec_host_machine, dir_separator_str, base_version,
+ 	      accel_dir_suffix, dir_separator_str, tooldir_prefix2, NULL);
+   free (tooldir_prefix2);
+ 
+@@ -7097,7 +7098,7 @@ driver::set_up_specs () const
+ 
+   /* Read specs from a file if there is one.  */
+ 
+-  machine_suffix = concat (spec_host_machine, dir_separator_str, spec_version,
++  machine_suffix = concat (spec_host_machine, dir_separator_str, base_version,
+ 			   accel_dir_suffix, dir_separator_str, NULL);
+   just_machine_suffix = concat (spec_machine, dir_separator_str, NULL);
+ 
+@@ -7302,7 +7303,7 @@ driver::set_up_specs () const
+   /* If we have a GCC_EXEC_PREFIX envvar, modify it for cpp's sake.  */
+   if (gcc_exec_prefix)
+     gcc_exec_prefix = concat (gcc_exec_prefix, spec_host_machine,
+-			      dir_separator_str, spec_version,
++			      dir_separator_str, base_version,
+ 			      accel_dir_suffix, dir_separator_str, NULL);
+ 
+   /* Now we have the specs.
+Index: b/src/gcc/configure.ac
+===================================================================
+--- a/src/gcc/configure.ac
++++ b/src/gcc/configure.ac
+@@ -140,7 +140,7 @@ if test x${gcc_gxx_include_dir} = x; the
+   if test x${enable_version_specific_runtime_libs} = xyes; then
+     gcc_gxx_include_dir='${libsubdir}/include/c++'
+   else
+-    libstdcxx_incdir='include/c++/$(version)'
++    libstdcxx_incdir='include/c++/$(BASEVER_c)'
+     if test x$host != x$target; then
+        libstdcxx_incdir="$target_alias/$libstdcxx_incdir"
+     fi
+@@ -1688,6 +1688,7 @@ changequote([,])dnl
+ 
+ changequote(,)dnl
+ gcc_BASEVER=`cat $srcdir/BASE-VER`
++gcc_FULLVER=`cat $srcdir/FULL-VER`
+ gcc_DEVPHASE=`cat $srcdir/DEV-PHASE`
+ gcc_DATESTAMP=`cat $srcdir/DATESTAMP`
+ if test -f $srcdir/REVISION ; then
+@@ -1698,12 +1699,12 @@ fi
+ cat > plugin-version.h <<EOF
+ #include "configargs.h"
+ 
+-#define GCCPLUGIN_VERSION_MAJOR   `echo $gcc_BASEVER | sed -e 's/^\([0-9]*\).*$/\1/'`
+-#define GCCPLUGIN_VERSION_MINOR   `echo $gcc_BASEVER | sed -e 's/^[0-9]*\.\([0-9]*\).*$/\1/'`
+-#define GCCPLUGIN_VERSION_PATCHLEVEL   `echo $gcc_BASEVER | sed -e 's/^[0-9]*\.[0-9]*\.\([0-9]*\)$/\1/'`
++#define GCCPLUGIN_VERSION_MAJOR   `echo $gcc_FULLVER | sed -e 's/^\([0-9]*\).*$/\1/'`
++#define GCCPLUGIN_VERSION_MINOR   `echo $gcc_FULLVER | sed -e 's/^[0-9]*\.\([0-9]*\).*$/\1/'`
++#define GCCPLUGIN_VERSION_PATCHLEVEL   `echo $gcc_FULLVER | sed -e 's/^[0-9]*\.[0-9]*\.\([0-9]*\)$/\1/'`
+ #define GCCPLUGIN_VERSION  (GCCPLUGIN_VERSION_MAJOR*1000 + GCCPLUGIN_VERSION_MINOR)
+ 
+-static char basever[] = "$gcc_BASEVER";
++static char basever[] = "$gcc_FULLVER";
+ static char datestamp[] = "$gcc_DATESTAMP";
+ static char devphase[] = "$gcc_DEVPHASE";
+ static char revision[] = "$gcc_REVISION";
diff --git a/debian/patches/gcc-configure-pie-doc.diff b/debian/patches/gcc-configure-pie-doc.diff
new file mode 100644
index 0000000..a1eabde
--- /dev/null
+++ b/debian/patches/gcc-configure-pie-doc.diff
@@ -0,0 +1,31 @@
+# DP: Add --enable-default-pie option to GCC configure (documentation)
+
+Index: b/src/gcc/doc/invoke.texi
+===================================================================
+--- a/src/gcc/doc/invoke.texi
++++ b/src/gcc/doc/invoke.texi
+@@ -11207,6 +11207,10 @@ For predictable results, you must also s
+ used for compilation (@option{-fpie}, @option{-fPIE},
+ or model suboptions) when you specify this linker option.
+ 
++ at item -no-pie
++ at opindex no-pie
++Don't produce a position independent executable.
++
+ @item -rdynamic
+ @opindex rdynamic
+ Pass the flag @option{-export-dynamic} to the ELF linker, on targets
+Index: b/src/gcc/doc/install.texi
+===================================================================
+--- a/src/gcc/doc/install.texi
++++ b/src/gcc/doc/install.texi
+@@ -1619,6 +1619,9 @@ defaulted to o32.
+ Currently, this option only affects sparc-linux, powerpc-linux, x86-linux,
+ mips-linux and s390-linux.
+ 
++ at item --enable-default-pie
++Turn on @option{-fPIE} and @option{-pie} by default.
++
+ @item --enable-secureplt
+ This option enables @option{-msecure-plt} by default for powerpc-linux.
+ @ifnothtml
diff --git a/debian/patches/gcc-configure-pie.diff b/debian/patches/gcc-configure-pie.diff
new file mode 100644
index 0000000..7abe92a
--- /dev/null
+++ b/debian/patches/gcc-configure-pie.diff
@@ -0,0 +1,880 @@
+# DP: Add --enable-default-pie option to GCC configure
+
+gcc/
+2015-05-27  Magnus Granberg  <zorry at gentoo.org>
+	    H.J. Lu  <hongjiu.lu at intel.com>
+
+	* Makefile.in (COMPILER): Add @NO_PIE_CFLAGS at .
+	(BUILD_CFLAGS): Likewise.
+	(BUILD_CXXFLAGS): Likewise.
+	(LINKER): Add @NO_PIE_FLAG at .
+	(BUILD_LDFLAGS): Likewise.
+	(libgcc.mvars): Set NO_PIE_CFLAGS to -fno-PIE for
+	--enable-default-pie.
+	* common.opt (fPIE): Initialize to -1.
+	(fpie): Likewise.
+	(no-pie): New option.
+	(pie): Replace "Negative(shared)" with "Negative(no-pie)".
+	* configure.ac: Add --enable-default-pie.
+	(NO_PIE_CFLAGS): New.  Check if -fno-PIE works.  AC_SUBST.
+	(NO_PIE_FLAG): New.  Check if -no-pie works.  AC_SUBST.
+	* defaults.h (DEFAULT_FLAG_PIE): New.  Default PIE to -fPIE.
+	* gcc.c (NO_PIE_SPEC): New.
+	(PIE_SPEC): Likewise.
+	(NO_FPIE1_SPEC): Likewise.
+	(FPIE1_SPEC): Likewise.
+	(NO_FPIE2_SPEC): Likewise.
+	(FPIE2_SPEC): Likewise.
+	(NO_FPIE2_SPEC): Likewise.
+	(FPIE_SPEC): Likewise.
+	(NO_FPIE_SPEC): Likewise.
+	(NO_FPIC1_SPEC): Likewise.
+	(FPIC1_SPEC): Likewise.
+	(NO_FPIC2_SPEC): Likewise.
+	(FPIC2_SPEC): Likewise.
+	(NO_FPIC2_SPEC): Likewise.
+	(FPIC_SPEC): Likewise.
+	(NO_FPIC_SPEC): Likewise.
+	(NO_FPIE1_AND_FPIC1_SPEC): Likewise.
+	(FPIE1_OR_FPIC1_SPEC): Likewise.
+	(NO_FPIE2_AND_FPIC2_SPEC): Likewise.
+	(FPIE2_OR_FPIC2_SPEC): Likewise.
+	(NO_FPIE_AND_FPIC_SPEC): Likewise.
+	(FPIE_OR_FPIC_SPEC): Likewise.
+	(LD_PIE_SPEC): Likewise.
+	(LINK_PIE_SPEC): Handle -no-pie.  Use PIE_SPEC and LD_PIE_SPEC.
+	* opts.c (finish_options): Update opts->x_flag_pie if it is -1.
+	* config/darwin.h (PIE_SPEC): Renamed to ...
+	(DARWIN_PIE_SPEC): This.
+	(LINK_SPEC): Replace PIE_SPEC with DARWIN_PIE_SPEC.
+	* config/darwin9.h (PIE_SPEC): Renamed to ...
+	(DARWIN_PIE_SPEC): This.
+	* config/gnu-user.h (GNU_USER_TARGET_STARTFILE_SPEC): Use
+	PIE_SPEC and NO_PIE_SPEC if HAVE_LD_PIE is defined.
+	* config/openbsd.h (ASM_SPEC): Use FPIE1_OR_FPIC1_SPEC and
+	FPIE2_OR_FPIC2_SPEC.
+	* config/m68k/netbsd-elf.h (ASM_SPEC): Likewise.
+	* config/m68k/openbsd.h (ASM_SPEC): Likewise.
+	* gcc/config/sol2.h (ASM_PIC_SPEC): Likewise.
+	* config/arm/freebsd.h (SUBTARGET_EXTRA_ASM_SPEC): Likewise.
+	* config/arm/netbsd-elf.h (SUBTARGET_EXTRA_ASM_SPEC): Likewise.
+	* config/arm/semi.h (SUBTARGET_EXTRA_ASM_SPEC): Likewise.
+	* config/cris/linux.h (CRIS_ASM_SUBTARGET_SPEC): Likewise.
+	* config/m32r/m32r.h (ASM_SPEC): Likewise.
+	* config/m68k/uclinux.h (DRIVER_SELF_SPECS): Likewise.
+	* config/rs6000/linux64.h (ASM_SPEC32): Likewise.
+	* config/rs6000/sysv4.h (ASM_SPEC): Likewise.
+	* config/sparc/freebsd.h (ASM_SPEC): Likewise.
+	* config/sparc/linux.h (ASM_SPEC): Likewise.
+	* config/sparc/linux64.h (ASM_SPEC): Likewise.
+	* config/sparc/netbsd-elf.h (ASM_SPEC): Likewise.
+	* config/sparc/openbsd64.h (ASM_SPEC): Likewise.
+	* config/sparc/sp-elf.h (ASM_SPEC): Likewise.
+	* config/sparc/sp64-elf.h (ASM_SPEC): Likewise.
+	* config/sparc/sparc.h (ASM_SPEC): Likewise.
+	* config/sparc/sysv4.h (ASM_SPEC): Likewise.
+	* config/sparc/vxworks.h (ASM_SPEC): Likewise.
+	* config/c6x/elf-common.h (ASM_SPEC): Use NO_FPIC2_SPEC,
+	FPIC2_SPEC, FPIC1_SPEC and FPIC2_SPEC.
+	* config/c6x/uclinux-elf.h (LINK_SPEC): Use FPIE_SPEC.
+	* config/frv/frv.h (DRIVER_SELF_SPECS): Use FPIC_SPEC,
+	NO_FPIC_SPEC and NO_FPIE1_AND_FPIC1_SPEC.
+	(ASM_SPEC): Use FPIE1_OR_FPIC1_SPEC and FPIE2_OR_FPIC2_SPEC.
+	* config/m68k/m68k.h (ASM_PCREL_SPEC): Use FPIC_SPEC and
+	NO_FPIC_SPEC.
+	* config/mips/gnu-user.h (NO_SHARED_SPECS): Use
+	NO_FPIE_AND_FPIC_SPEC.
+	* config/mips/vxworks.h (SUBTARGET_ASM_SPEC): Use FPIC_SPEC.
+	* config/rs6000/freebsd64.h (ASM_SPEC32): Likewise.
+	* config/rs6000/vxworks.h (ASM_SPEC): Likewise.
+	* config/vax/linux.h (ASM_SPEC): Likewise.
+	* doc/install.texi: Document --enable-default-pie.
+	* doc/invoke.texi: Document -no-pie.
+	* config.in: Regenerated.
+	* configure: Likewise.
+
+gcc/ada/
+2015-05-27  H.J. Lu  <hongjiu.lu at intel.com>
+
+	* gcc-interface/Makefile.in (TOOLS_LIBS): Add @NO_PIE_FLAG at .
+
+libgcc/
+
+2015-05-27  H.J. Lu  <hongjiu.lu at intel.com>
+
+	* Makefile.in (CRTSTUFF_CFLAGS): Add $(NO_PIE_CFLAGS).
+
+Index: b/src/libgcc/Makefile.in
+===================================================================
+--- a/src/libgcc/Makefile.in
++++ b/src/libgcc/Makefile.in
+@@ -284,7 +284,7 @@ INTERNAL_CFLAGS = $(CFLAGS) $(LIBGCC2_CF
+ 
+ # Options to use when compiling crtbegin/end.
+ CRTSTUFF_CFLAGS = -O2 $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -g0 \
+-  -finhibit-size-directive -fno-inline -fno-exceptions \
++  $(NO_PIE_CFLAGS) -finhibit-size-directive -fno-inline -fno-exceptions \
+   -fno-zero-initialized-in-bss -fno-toplevel-reorder -fno-tree-vectorize \
+   -fbuilding-libgcc -fno-stack-protector $(FORCE_EXPLICIT_EH_REGISTRY) \
+   $(INHIBIT_LIBC_CFLAGS)
+Index: b/src/gcc/defaults.h
+===================================================================
+--- a/src/gcc/defaults.h
++++ b/src/gcc/defaults.h
+@@ -1186,6 +1186,18 @@ see the files COPYING3 and COPYING.RUNTI
+ #define DEFAULT_PCC_STRUCT_RETURN 1
+ #endif
+ 
++/* Default value for flag_pie when flag_pie is initialized to -1:
++   --enable-default-pie: Default flag_pie to -fPIE.
++   --disable-default-pie: Default flag_pie to 0.
++ */
++#ifdef ENABLE_DEFAULT_PIE
++# ifndef DEFAULT_FLAG_PIE
++#  define DEFAULT_FLAG_PIE 2
++# endif
++#else
++# define DEFAULT_FLAG_PIE 0
++#endif
++
+ #ifdef GCC_INSN_FLAGS_H
+ /* Dependent default target macro definitions
+ 
+Index: b/src/gcc/gcc.c
+===================================================================
+--- a/src/gcc/gcc.c
++++ b/src/gcc/gcc.c
+@@ -738,12 +738,57 @@ proper position among the other output f
+ #endif
+ #endif
+ 
++#ifdef ENABLE_DEFAULT_PIE
++#define NO_PIE_SPEC		"no-pie|static"
++#define PIE_SPEC		NO_PIE_SPEC "|r|shared:;"
++#define NO_FPIE1_SPEC		"fno-pie"
++#define FPIE1_SPEC		NO_FPIE1_SPEC ":;"
++#define NO_FPIE2_SPEC		"fno-PIE"
++#define FPIE2_SPEC		NO_FPIE2_SPEC ":;"
++#define NO_FPIE_SPEC		NO_FPIE1_SPEC "|" NO_FPIE2_SPEC
++#define FPIE_SPEC		NO_FPIE_SPEC ":;"
++#define NO_FPIC1_SPEC		"fno-pic"
++#define FPIC1_SPEC		NO_FPIC1_SPEC ":;"
++#define NO_FPIC2_SPEC		"fno-PIC"
++#define FPIC2_SPEC		NO_FPIC2_SPEC ":;"
++#define NO_FPIC_SPEC		NO_FPIC1_SPEC "|" NO_FPIC2_SPEC
++#define FPIC_SPEC		NO_FPIC_SPEC ":;"
++#define NO_FPIE1_AND_FPIC1_SPEC	NO_FPIE1_SPEC "|" NO_FPIC1_SPEC
++#define FPIE1_OR_FPIC1_SPEC	NO_FPIE1_AND_FPIC1_SPEC ":;"
++#define NO_FPIE2_AND_FPIC2_SPEC	NO_FPIE2_SPEC "|" NO_FPIC2_SPEC
++#define FPIE2_OR_FPIC2_SPEC	NO_FPIE2_AND_FPIC2_SPEC ":;"
++#define NO_FPIE_AND_FPIC_SPEC	NO_FPIE_SPEC "|" NO_FPIC_SPEC
++#define FPIE_OR_FPIC_SPEC	NO_FPIE_AND_FPIC_SPEC ":;"
++#else
++#define PIE_SPEC		"pie"
++#define NO_PIE_SPEC		PIE_SPEC "|r|shared:;"
++#define FPIE1_SPEC		"fpie"
++#define NO_FPIE1_SPEC		FPIE1_SPEC ":;"
++#define FPIE2_SPEC		"fPIE"
++#define NO_FPIE2_SPEC		FPIE2_SPEC ":;"
++#define FPIE_SPEC		FPIE1_SPEC "|" FPIE2_SPEC
++#define NO_FPIE_SPEC		FPIE_SPEC ":;"
++#define FPIC1_SPEC		"fpic"
++#define NO_FPIC1_SPEC		FPIC1_SPEC ":;"
++#define FPIC2_SPEC		"fPIC"
++#define NO_FPIC2_SPEC		FPIC2_SPEC ":;"
++#define FPIC_SPEC		FPIC1_SPEC "|" FPIC2_SPEC
++#define NO_FPIC_SPEC		FPIC_SPEC ":;"
++#define FPIE1_OR_FPIC1_SPEC	FPIE1_SPEC "|" FPIC1_SPEC
++#define NO_FPIE1_AND_FPIC1_SPEC	FPIE1_OR_FPIC1_SPEC ":;"
++#define FPIE2_OR_FPIC2_SPEC	FPIE2_SPEC "|" FPIC2_SPEC
++#define NO_FPIE2_AND_FPIC2_SPEC	FPIE1_OR_FPIC2_SPEC ":;"
++#define FPIE_OR_FPIC_SPEC	FPIE_SPEC "|" FPIC_SPEC
++#define NO_FPIE_AND_FPIC_SPEC	FPIE_OR_FPIC_SPEC ":;"
++#endif
++
+ #ifndef LINK_PIE_SPEC
+ #ifdef HAVE_LD_PIE
+-#define LINK_PIE_SPEC "%{pie:-pie} "
++#define LD_PIE_SPEC "-pie"
+ #else
+-#define LINK_PIE_SPEC "%{pie:} "
++#define LD_PIE_SPEC ""
+ #endif
++#define LINK_PIE_SPEC "%{no-pie:} " "%{" PIE_SPEC ":" LD_PIE_SPEC "} "
+ #endif
+ 
+ #ifndef LINK_BUILDID_SPEC
+Index: b/src/gcc/config.in
+===================================================================
+--- a/src/gcc/config.in
++++ b/src/gcc/config.in
+@@ -89,6 +89,12 @@
+ #endif
+ 
+ 
++/* Define if your target supports default PIE and it is enabled. */
++#ifndef USED_FOR_TARGET
++#undef ENABLE_DEFAULT_PIE
++#endif
++
++
+ /* Define if you want more run-time sanity checks for dataflow. */
+ #ifndef USED_FOR_TARGET
+ #undef ENABLE_DF_CHECKING
+Index: b/src/gcc/opts.c
+===================================================================
+--- a/src/gcc/opts.c
++++ b/src/gcc/opts.c
+@@ -741,6 +741,15 @@ finish_options (struct gcc_options *opts
+ 
+   if (!opts->x_flag_opts_finished)
+     {
++      /* We initialize opts->x_flag_pie to -1 so that targets can set a
++	 default value.  */
++      if (opts->x_flag_pie == -1)
++	{
++	  if (opts->x_flag_pic == 0)
++	    opts->x_flag_pie = DEFAULT_FLAG_PIE;
++	  else
++	    opts->x_flag_pie = 0;
++	}
+       if (opts->x_flag_pie)
+ 	opts->x_flag_pic = opts->x_flag_pie;
+       if (opts->x_flag_pic && !opts->x_flag_pie)
+Index: b/src/gcc/ada/gcc-interface/Makefile.in
+===================================================================
+--- a/src/gcc/ada/gcc-interface/Makefile.in
++++ b/src/gcc/ada/gcc-interface/Makefile.in
+@@ -267,6 +267,9 @@ TOOLS_LIBS = ../link.o ../targext.o ../.
+   ../../libcommon.a ../../../libcpp/libcpp.a $(LIBGNAT) $(LIBINTL) $(LIBICONV) \
+   ../$(LIBBACKTRACE) ../$(LIBIBERTY) $(SYSLIBS) $(TGT_LIB)
+ 
++# Add -no-pie to TOOLS_LIBS since some of them are compiled with -fno-PIE.
++TOOLS_LIBS += @NO_PIE_FLAG@
++
+ # Specify the directories to be searched for header files.
+ # Both . and srcdir are used, in that order,
+ # so that tm.h and config.h will be found in the compilation
+Index: b/src/gcc/configure.ac
+===================================================================
+--- a/src/gcc/configure.ac
++++ b/src/gcc/configure.ac
+@@ -5869,6 +5869,46 @@ cat > gcc-driver-name.h <<EOF
+ #define GCC_DRIVER_NAME "${target_noncanonical}-gcc-${gcc_BASEVER}${exeext}"
+ EOF
+ 
++# Check whether --enable-default-pie was given.
++AC_ARG_ENABLE(default-pie,
++[AS_HELP_STRING([--enable-default-pie],
++  [enable Position Independent Executable as default])],
++enable_default_pie=$enableval,
++enable_default_pie=no)
++if test x$enable_default_pie == xyes ; then
++  AC_DEFINE(ENABLE_DEFAULT_PIE, 1,
++      [Define if your target supports default PIE and it is enabled.])
++fi
++AC_SUBST([enable_default_pie])
++
++# Check if -fno-PIE works.
++AC_CACHE_CHECK([for -fno-PIE option],
++  [gcc_cv_c_no_fpie],
++  [saved_CFLAGS="$CFLAGS"
++   CFLAGS="$CFLAGS -fno-PIE"
++   AC_COMPILE_IFELSE([int main(void) {return 0;}],
++     [gcc_cv_c_no_fpie=yes],
++     [gcc_cv_c_no_fpie=no])
++   CFLAGS="$saved_CFLAGS"])
++if test "$gcc_cv_c_no_fpie" = "yes"; then
++  NO_PIE_CFLAGS="-fno-PIE"
++fi
++AC_SUBST([NO_PIE_CFLAGS])
++
++# Check if -no-pie works.
++AC_CACHE_CHECK([for -no-pie option],
++  [gcc_cv_no_pie],
++  [saved_LDFLAGS="$LDFLAGS"
++   LDFLAGS="$LDFLAGS -no-pie"
++   AC_LINK_IFELSE([int main(void) {return 0;}],
++     [gcc_cv_no_pie=yes],
++     [gcc_cv_no_pie=no])
++   LDFLAGS="$saved_LDFLAGS"])
++if test "$gcc_cv_no_pie" = "yes"; then
++  NO_PIE_FLAG="-no-pie"
++fi
++AC_SUBST([NO_PIE_FLAG])
++
+ # Configure the subdirectories
+ # AC_CONFIG_SUBDIRS($subdirs)
+ 
+Index: b/src/gcc/common.opt
+===================================================================
+--- a/src/gcc/common.opt
++++ b/src/gcc/common.opt
+@@ -1768,7 +1768,7 @@ Common Report Var(flag_pic,2) Negative(f
+ Generate position-independent code if possible (large mode)
+ 
+ fPIE
+-Common Report Var(flag_pie,2) Negative(fpic)
++Common Report Var(flag_pie,2) Negative(fpic) Init(-1)
+ Generate position-independent code for executables if possible (large mode)
+ 
+ fpic
+@@ -1776,7 +1776,7 @@ Common Report Var(flag_pic,1) Negative(f
+ Generate position-independent code if possible (small mode)
+ 
+ fpie
+-Common Report Var(flag_pie,1) Negative(fPIC)
++Common Report Var(flag_pie,1) Negative(fPIC) Init(-1)
+ Generate position-independent code for executables if possible (small mode)
+ 
+ fplugin=
+@@ -2849,8 +2849,12 @@ Driver
+ symbolic
+ Driver
+ 
+-pie
++no-pie
+ Driver RejectNegative Negative(shared)
++Don't create a position independent executable
++
++pie
++Driver RejectNegative Negative(no-pie)
+ Create a position independent executable
+ 
+ z
+Index: b/src/gcc/Makefile.in
+===================================================================
+--- a/src/gcc/Makefile.in
++++ b/src/gcc/Makefile.in
+@@ -252,6 +252,12 @@ LINKER = $(CC)
+ LINKER_FLAGS = $(CFLAGS)
+ endif
+ 
++# We don't want to compile the compilers with -fPIE, it make PCH fail.
++COMPILER += @NO_PIE_CFLAGS@
++
++# Link with -no-pie since we compile the compiler with -fno-PIE.
++LINKER += @NO_PIE_FLAG@
++
+ # Like LINKER, but use a mutex for serializing front end links.
+ ifeq (@DO_LINK_MUTEX@,true)
+ LLINKER = $(SHELL) $(srcdir)/lock-and-run.sh linkfe.lck $(LINKER)
+@@ -749,6 +755,8 @@ CC_FOR_BUILD = @CC_FOR_BUILD@
+ CXX_FOR_BUILD = @CXX_FOR_BUILD@
+ BUILD_CFLAGS= @BUILD_CFLAGS@ -DGENERATOR_FILE
+ BUILD_CXXFLAGS = @BUILD_CXXFLAGS@ -DGENERATOR_FILE
++BUILD_CFLAGS += @NO_PIE_CFLAGS@
++BUILD_CXXFLAGS += @NO_PIE_CFLAGS@
+ 
+ # Native compiler that we use.  This may be C++ some day.
+ COMPILER_FOR_BUILD = $(CXX_FOR_BUILD)
+@@ -760,6 +768,7 @@ BUILD_LINKERFLAGS = $(BUILD_CXXFLAGS)
+ 
+ # Native linker and preprocessor flags.  For x-fragment overrides.
+ BUILD_LDFLAGS=@BUILD_LDFLAGS@
++BUILD_LDFLAGS += @NO_PIE_FLAG@
+ BUILD_CPPFLAGS= -I. -I$(@D) -I$(srcdir) -I$(srcdir)/$(@D) \
+ 		-I$(srcdir)/../include @INCINTL@ $(CPPINC) $(CPPFLAGS)
+ 
+@@ -1865,6 +1874,12 @@ libgcc.mvars: config.status Makefile spe
+ 	echo GCC_CFLAGS = '$(GCC_CFLAGS)' >> tmp-libgcc.mvars
+ 	echo INHIBIT_LIBC_CFLAGS = '$(INHIBIT_LIBC_CFLAGS)' >> tmp-libgcc.mvars
+ 	echo TARGET_SYSTEM_ROOT = '$(TARGET_SYSTEM_ROOT)' >> tmp-libgcc.mvars
++	if test @enable_default_pie@ = yes; then \
++	  NO_PIE_CFLAGS="-fno-PIE"; \
++	else \
++	  NO_PIE_CFLAGS=; \
++	fi; \
++	echo NO_PIE_CFLAGS = "$$NO_PIE_CFLAGS" >> tmp-libgcc.mvars
+ 
+ 	mv tmp-libgcc.mvars libgcc.mvars
+ 
+Index: b/src/gcc/config/frv/frv.h
+===================================================================
+--- a/src/gcc/config/frv/frv.h
++++ b/src/gcc/config/frv/frv.h
+@@ -42,12 +42,12 @@
+ "%{mno-pack:\
+    %{!mhard-float:-msoft-float}\
+    %{!mmedia:-mno-media}}\
+- %{!mfdpic:%{fpic|fPIC: -multilib-library-pic}}\
++ %{!mfdpic:%{" FPIC_SPEC ": -multilib-library-pic}}\
+  %{mfdpic:%{!fpic:%{!fpie:%{!fPIC:%{!fPIE:\
+    	    %{!fno-pic:%{!fno-pie:%{!fno-PIC:%{!fno-PIE:-fPIE}}}}}}}} \
+-	  %{!mno-inline-plt:%{O*:%{!O0:%{!Os:%{fpic|fPIC:-minline-plt} \
+-                    %{!fpic:%{!fPIC:%{!O:%{!O1:%{!O2:-minline-plt}}}}}}}}} \
+-	  %{!mno-gprel-ro:%{!fpic:%{!fpie:-mgprel-ro}}}} \
++	  %{!mno-inline-plt:%{O*:%{!O0:%{!Os:%{" FPIC_SPEC ":-minline-plt} \
++                    %{" NO_FPIC_SPEC ":%{!O:%{!O1:%{!O2:-minline-plt}}}}}}}} \
++	  %{!mno-gprel-ro:%{" NO_FPIE1_AND_FPIC1_SPEC ":-mgprel-ro}}} \
+ "
+ #ifndef SUBTARGET_DRIVER_SELF_SPECS
+ # define SUBTARGET_DRIVER_SELF_SPECS
+@@ -67,7 +67,7 @@
+     %{mmuladd} %{mno-muladd} \
+     %{mpack} %{mno-pack} \
+     %{mno-fdpic:-mnopic} %{mfdpic} \
+-    %{fpic|fpie: -mpic} %{fPIC|fPIE: -mPIC} %{mlibrary-pic}}"
++    %{" FPIE1_OR_FPIC1_SPEC ":-mpic} %{" FPIE2_OR_FPIC2_SPEC ":-mPIC} %{mlibrary-pic}}"
+ 
+ #undef  STARTFILE_SPEC
+ #define STARTFILE_SPEC "crt0%O%s frvbegin%O%s"
+Index: b/src/gcc/config/sparc/linux.h
+===================================================================
+--- a/src/gcc/config/sparc/linux.h
++++ b/src/gcc/config/sparc/linux.h
+@@ -98,7 +98,7 @@ extern const char *host_detect_local_cpu
+ #undef ASM_SPEC
+ #define ASM_SPEC "\
+ -s \
+-%{fpic|fPIC|fpie|fPIE:-K PIC} \
++%{" FPIE_OR_FPIC_SPEC ":-K PIC} \
+ %{!.c:%{findirect-dispatch:-K PIC}} \
+ %(asm_cpu) %(asm_relax)"
+ 
+Index: b/src/gcc/config/sparc/sp64-elf.h
+===================================================================
+--- a/src/gcc/config/sparc/sp64-elf.h
++++ b/src/gcc/config/sparc/sp64-elf.h
+@@ -32,7 +32,7 @@ along with GCC; see the file COPYING3.
+ 
+ #undef ASM_SPEC
+ #define ASM_SPEC "\
+--s %{fpic|fPIC|fpie|fPIE:-K PIC} \
++-s %{" FPIE_OR_FPIC_SPEC ":-K PIC} \
+ %(asm_cpu) %(asm_arch) \
+ "
+ 
+Index: b/src/gcc/config/sparc/openbsd64.h
+===================================================================
+--- a/src/gcc/config/sparc/openbsd64.h
++++ b/src/gcc/config/sparc/openbsd64.h
+@@ -46,7 +46,7 @@ along with GCC; see the file COPYING3.
+ 
+ #undef ASM_SPEC
+ #define ASM_SPEC "\
+--s %{fpic|fPIC|fpie|fPIE:-K PIC} \
++-s %{" FPIE_OR_FPIC_SPEC ":-K PIC} \
+ %(asm_cpu) %(asm_arch) \
+ "
+ 
+Index: b/src/gcc/config/sparc/sp-elf.h
+===================================================================
+--- a/src/gcc/config/sparc/sp-elf.h
++++ b/src/gcc/config/sparc/sp-elf.h
+@@ -25,7 +25,7 @@ along with GCC; see the file COPYING3.
+ #undef ASM_SPEC
+ #define ASM_SPEC \
+   "-s \
+-   %{fpic|fpie|fPIC|fPIE:-K PIC} %(asm_cpu)"
++   %{" FPIE_OR_FPIC_SPEC ":-K PIC} %(asm_cpu)"
+ 
+ /* Use the default.  */
+ #undef LINK_SPEC
+Index: b/src/gcc/config/sparc/sparc.h
+===================================================================
+--- a/src/gcc/config/sparc/sparc.h
++++ b/src/gcc/config/sparc/sparc.h
+@@ -380,7 +380,7 @@ extern enum cmodel sparc_cmodel;
+ /* Special flags to the Sun-4 assembler when using pipe for input.  */
+ 
+ #define ASM_SPEC "\
+-%{!pg:%{!p:%{fpic|fPIC|fpie|fPIE:-k}}} %{keep-local-as-symbols:-L} \
++%{!pg:%{!p:%{" FPIE_OR_FPIC_SPEC ":-k}}} %{keep-local-as-symbols:-L} \
+ %(asm_cpu) %(asm_relax)"
+ 
+ /* This macro defines names of additional specifications to put in the specs
+Index: b/src/gcc/config/sparc/linux64.h
+===================================================================
+--- a/src/gcc/config/sparc/linux64.h
++++ b/src/gcc/config/sparc/linux64.h
+@@ -208,7 +208,7 @@ extern const char *host_detect_local_cpu
+ #undef ASM_SPEC
+ #define ASM_SPEC "\
+ -s \
+-%{fpic|fPIC|fpie|fPIE:-K PIC} \
++%{" FPIE_OR_FPIC_SPEC ":-K PIC} \
+ %{!.c:%{findirect-dispatch:-K PIC}} \
+ %(asm_cpu) %(asm_arch) %(asm_relax)"
+ 
+Index: b/src/gcc/config/sparc/freebsd.h
+===================================================================
+--- a/src/gcc/config/sparc/freebsd.h
++++ b/src/gcc/config/sparc/freebsd.h
+@@ -38,7 +38,7 @@ along with GCC; see the file COPYING3.
+   while (0)
+ 
+ #undef ASM_SPEC
+-#define ASM_SPEC "%{fpic|fPIC|fpie|fPIE:-K PIC} %(asm_cpu)"
++#define ASM_SPEC "%{" FPIE_OR_FPIC_SPEC ":-K PIC} %(asm_cpu)"
+ 
+ #define LINK_SPEC "%(link_arch)						\
+   %{!mno-relax:%{!r:-relax}}						\
+Index: b/src/gcc/config/sparc/netbsd-elf.h
+===================================================================
+--- a/src/gcc/config/sparc/netbsd-elf.h
++++ b/src/gcc/config/sparc/netbsd-elf.h
+@@ -67,7 +67,7 @@ along with GCC; see the file COPYING3.
+ #define USER_LABEL_PREFIX ""
+ 
+ #undef ASM_SPEC
+-#define ASM_SPEC "%{fpic|fPIC|fpie|fPIE:-K PIC} \
++#define ASM_SPEC "%{" FPIE_OR_FPIC_SPEC ":-K PIC} \
+ %(asm_cpu) %(asm_arch) %(asm_relax)"
+ 
+ #undef STDC_0_IN_SYSTEM_HEADERS
+Index: b/src/gcc/config/sparc/vxworks.h
+===================================================================
+--- a/src/gcc/config/sparc/vxworks.h
++++ b/src/gcc/config/sparc/vxworks.h
+@@ -34,7 +34,7 @@ along with GCC; see the file COPYING3.
+ #define CPP_SUBTARGET_SPEC VXWORKS_ADDITIONAL_CPP_SPEC
+ 
+ #undef ASM_SPEC
+-#define ASM_SPEC "%{fpic|fPIC|fpie|fPIE:-K PIC} %(asm_cpu)"
++#define ASM_SPEC "%{" FPIE_OR_FPIC_SPEC ":-K PIC} %(asm_cpu)"
+ 
+ #undef LIB_SPEC
+ #define LIB_SPEC VXWORKS_LIB_SPEC
+Index: b/src/gcc/config/sparc/sysv4.h
+===================================================================
+--- a/src/gcc/config/sparc/sysv4.h
++++ b/src/gcc/config/sparc/sysv4.h
+@@ -41,7 +41,7 @@ along with GCC; see the file COPYING3.
+ #undef ASM_SPEC
+ #define ASM_SPEC \
+   "%{v:-V} %{Qy:} %{!Qn:-Qy} %{Ym,*} \
+-   %{fpic|fPIC|fpie|fPIE:-K PIC} %(asm_cpu)"
++   %{" FPIE_OR_FPIC_SPEC ":-K PIC} %(asm_cpu)"
+ 
+ /* Define the names of various pseudo-op used by the SPARC/svr4 assembler.
+    Note that many of these are different from the typical pseudo-ops used
+Index: b/src/gcc/config/m32r/m32r.h
+===================================================================
+--- a/src/gcc/config/m32r/m32r.h
++++ b/src/gcc/config/m32r/m32r.h
+@@ -159,7 +159,7 @@
+ 
+ /* Options to pass on to the assembler.  */
+ #undef  ASM_SPEC
+-#define ASM_SPEC "%(asm_cpu) %(relax) %{fpic|fpie:-K PIC} %{fPIC|fPIE:-K PIC}"
++#define ASM_SPEC "%(asm_cpu) %(relax) %{" FPIE_OR_FPIC_SPEC ":-K PIC}"
+ 
+ #define LINK_SPEC "%{v} %(link_cpu) %(relax)"
+ 
+Index: b/src/gcc/config/sol2.h
+===================================================================
+--- a/src/gcc/config/sol2.h
++++ b/src/gcc/config/sol2.h
+@@ -127,7 +127,7 @@ along with GCC; see the file COPYING3.
+ #define ASM_SPEC_BASE \
+ "%{v:-V} %{Qy:} %{!Qn:-Qy} %{Ym,*} -s %(asm_cpu)"
+ 
+-#define ASM_PIC_SPEC " %{fpic|fpie|fPIC|fPIE:-K PIC}"
++#define ASM_PIC_SPEC " %{" FPIE_OR_FPIC_SPEC ":-K PIC}"
+ 
+ #undef ASM_CPU_DEFAULT_SPEC
+ #define ASM_CPU_DEFAULT_SPEC \
+Index: b/src/gcc/config/cris/linux.h
+===================================================================
+--- a/src/gcc/config/cris/linux.h
++++ b/src/gcc/config/cris/linux.h
+@@ -79,13 +79,13 @@ along with GCC; see the file COPYING3.
+  "--em=criself \
+   %{!march=*:%{!mcpu=*:--march=v32}} \
+   %{!fleading-underscore:--no-underscore}\
+-  %{fPIC|fpic|fPIE|fpie: --pic}"
++  %{" FPIE_OR_FPIC_SPEC ": --pic}"
+ #else
+ # define CRIS_ASM_SUBTARGET_SPEC \
+  "--em=criself \
+   %{!march=*:%{!mcpu=*:--march=v10}} \
+   %{!fleading-underscore:--no-underscore}\
+-  %{fPIC|fpic|fPIE|fpie: --pic}"
++  %{" FPIE_OR_FPIC_SPEC ": --pic}"
+ #endif
+ 
+ /* Previously controlled by target_flags.  */
+Index: b/src/gcc/config/gnu-user.h
+===================================================================
+--- a/src/gcc/config/gnu-user.h
++++ b/src/gcc/config/gnu-user.h
+@@ -42,8 +42,11 @@ see the files COPYING3 and COPYING.RUNTI
+ 
+ #if defined HAVE_LD_PIE
+ #define GNU_USER_TARGET_STARTFILE_SPEC \
+-  "%{!shared: %{pg|p|profile:gcrt1.o%s;pie:Scrt1.o%s;:crt1.o%s}} \
+-   crti.o%s %{static:crtbeginT.o%s;shared|pie:crtbeginS.o%s;:crtbegin.o%s} \
++  "%{!shared: %{pg|p|profile:gcrt1.o%s;: \
++    %{" PIE_SPEC ":Scrt1.o%s} %{" NO_PIE_SPEC ":crt1.o%s}}} \
++   crti.o%s %{static:crtbeginT.o%s;: %{shared:crtbeginS.o%s} \
++	      %{" PIE_SPEC ":crtbeginS.o%s} \
++	      %{" NO_PIE_SPEC ":crtbegin.o%s}} \
+    %{fvtable-verify=none:%s; \
+      fvtable-verify=preinit:vtv_start_preinit.o%s; \
+      fvtable-verify=std:vtv_start.o%s}"
+Index: b/src/gcc/config/c6x/uclinux-elf.h
+===================================================================
+--- a/src/gcc/config/c6x/uclinux-elf.h
++++ b/src/gcc/config/c6x/uclinux-elf.h
+@@ -40,7 +40,7 @@
+ 
+ #undef LINK_SPEC
+ #define LINK_SPEC ENDIAN_LINK_SPEC \
+-  "%{shared} %{fpie|fPIE:-pie} \
++  "%{shared} %{" FPIE_SPEC ":-pie} \
+   %{!shared: %{!static: \
+    %{rdynamic:-export-dynamic} \
+    %{!dynamic-linker:-dynamic-linker " UCLIBC_DYNAMIC_LINKER "}} \
+Index: b/src/gcc/config/c6x/elf-common.h
+===================================================================
+--- a/src/gcc/config/c6x/elf-common.h
++++ b/src/gcc/config/c6x/elf-common.h
+@@ -24,8 +24,10 @@
+ 
+ #undef ASM_SPEC
+ #define ASM_SPEC "%{march=*:-march=%*} %{mbig-endian:-mbig-endian} \
+- %{mdsbt:-mdsbt %{!fPIC:-mpid=near} %{fPIC:-mpid=far -mpic} %{fpic:-mpic}} \
+- %{!mdsbt:%{fpic:-mpic -mpid=near} %{fPIC:-mpic -mpid=far}}"
++ %{mdsbt:-mdsbt %{" NO_FPIC2_SPEC ":-mpid=near} \
++   %{" FPIC2_SPEC ":-mpid=far -mpic} %{" FPIC1_SPEC ":-mpic}} \
++ %{!mdsbt:%{" FPIC1_SPEC ":-mpic -mpid=near} \
++   %{" FPIC2_SPEC ":-mpic -mpid=far}}"
+ 
+ #undef DATA_SECTION_ASM_OP
+ #define DATA_SECTION_ASM_OP "\t.section\t\".fardata\",\"aw\""
+Index: b/src/gcc/config/m68k/openbsd.h
+===================================================================
+--- a/src/gcc/config/m68k/openbsd.h
++++ b/src/gcc/config/m68k/openbsd.h
+@@ -34,7 +34,8 @@ along with GCC; see the file COPYING3.
+ #define CPP_SPEC "%{!msoft-float:-D__HAVE_68881__ -D__HAVE_FPU__} %{posix:-D_POSIX_SOURCE} %{pthread:-D_POSIX_THREADS}"
+ 
+ #undef ASM_SPEC
+-#define ASM_SPEC "%(asm_cpu_spec) %{fpic|fpie:-k} %{fPIC|fPIE:-k -K}"
++#define ASM_SPEC \
++  "%(asm_cpu_spec) %{" FPIE1_OR_FPIC1_SPEC ":-k} %{" FPIE2_OR_FPIC2_SPEC ":-k -K}"
+ 
+ /* Layout of source language data types.  */
+ 
+Index: b/src/gcc/config/m68k/netbsd-elf.h
+===================================================================
+--- a/src/gcc/config/m68k/netbsd-elf.h
++++ b/src/gcc/config/m68k/netbsd-elf.h
+@@ -56,7 +56,8 @@ along with GCC; see the file COPYING3.
+    to pass PIC code generation options.  */
+ 
+ #undef ASM_SPEC
+-#define ASM_SPEC "%(asm_cpu_spec) %{fpic|fpie:-k} %{fPIC|fPIE:-k -K}"
++#define ASM_SPEC \
++  "%(asm_cpu_spec) %{" FPIE1_OR_FPIC1_SPEC ":-k} %{" FPIE2_OR_FPIC2_SPEC ":-k -K}"
+ 
+ /* Provide a LINK_SPEC appropriate for a NetBSD/m68k ELF target.  */
+ 
+Index: b/src/gcc/config/m68k/m68k.h
+===================================================================
+--- a/src/gcc/config/m68k/m68k.h
++++ b/src/gcc/config/m68k/m68k.h
+@@ -40,7 +40,8 @@ along with GCC; see the file COPYING3.
+ %{m68020-40:-m68040}%{m68020-60:-m68040}\
+ %{mcpu=*:-mcpu=%*}%{march=*:-march=%*}\
+ "
+-#define ASM_PCREL_SPEC "%{fPIC|fpic|mpcrel:--pcrel} \
++#define ASM_PCREL_SPEC "%{" FPIC_SPEC ":--pcrel} \
++ %{mpcrel:%{" NO_FPIC_SPEC ":--pcrel}} \
+  %{msep-data|mid-shared-library:--pcrel} \
+ "
+ 
+Index: b/src/gcc/config/m68k/uclinux.h
+===================================================================
+--- a/src/gcc/config/m68k/uclinux.h
++++ b/src/gcc/config/m68k/uclinux.h
+@@ -60,7 +60,7 @@ along with GCC; see the file COPYING3.
+ 
+ /* -msep-data is the default PIC mode on this target.  */
+ #define DRIVER_SELF_SPECS \
+-  "%{fpie|fPIE|fpic|fPIC:%{!msep-data:%{!mid-shared-library: -msep-data}}}"
++  "%{" FPIE_OR_FPIC_SPEC ":%{!msep-data:%{!mid-shared-library: -msep-data}}}"
+ 
+ /* The uclinux binary format relies on relocations against a segment being
+    within that segment.  Conservatively apply this rule to individual
+Index: b/src/gcc/config/rs6000/freebsd64.h
+===================================================================
+--- a/src/gcc/config/rs6000/freebsd64.h
++++ b/src/gcc/config/rs6000/freebsd64.h
+@@ -143,7 +143,7 @@ extern int dot_symbols;
+ #define	LINK_OS_FREEBSD_SPEC "%{m32:%(link_os_freebsd_spec32)}%{!m32:%(link_os_freebsd_spec64)}"
+ 
+ #define ASM_SPEC32 "-a32 \
+-%{mrelocatable} %{mrelocatable-lib} %{fpic|fpie|fPIC|fPIE:-K PIC} \
++%{mrelocatable} %{mrelocatable-lib} %{" FPIC_SPEC ":-K PIC} \
+ %{memb} %{!memb: %{msdata=eabi: -memb}} \
+ %{!mlittle: %{!mlittle-endian: %{!mbig: %{!mbig-endian: \
+     %{mcall-freebsd: -mbig} \
+Index: b/src/gcc/config/rs6000/linux64.h
+===================================================================
+--- a/src/gcc/config/rs6000/linux64.h
++++ b/src/gcc/config/rs6000/linux64.h
+@@ -192,7 +192,7 @@ extern int dot_symbols;
+ #endif
+ 
+ #define ASM_SPEC32 "-a32 \
+-%{mrelocatable} %{mrelocatable-lib} %{fpic|fpie|fPIC|fPIE:-K PIC} \
++%{mrelocatable} %{mrelocatable-lib} %{" FPIE_OR_FPIC_SPEC ":-K PIC} \
+ %{memb|msdata=eabi: -memb}"
+ 
+ #define ASM_SPEC64 "-a64"
+Index: b/src/gcc/config/rs6000/vxworks.h
+===================================================================
+--- a/src/gcc/config/rs6000/vxworks.h
++++ b/src/gcc/config/rs6000/vxworks.h
+@@ -90,7 +90,7 @@ VXWORKS_ADDITIONAL_CPP_SPEC
+ #define ASM_SPEC \
+ "%(asm_cpu) \
+  %{,assembler|,assembler-with-cpp: %{mregnames} %{mno-regnames}} \
+- %{mrelocatable} %{mrelocatable-lib} %{fpic:-K PIC} %{fPIC:-K PIC} -mbig"
++ %{mrelocatable} %{mrelocatable-lib} %{" FPIC_SPEC ":-K PIC} -mbig"
+ 
+ #undef  LIB_SPEC
+ #define LIB_SPEC VXWORKS_LIB_SPEC
+Index: b/src/gcc/config/rs6000/sysv4.h
+===================================================================
+--- a/src/gcc/config/rs6000/sysv4.h
++++ b/src/gcc/config/rs6000/sysv4.h
+@@ -530,7 +530,7 @@ extern int fixuplabelno;
+ #undef	ASM_SPEC
+ #define	ASM_SPEC "%(asm_cpu) \
+ %{,assembler|,assembler-with-cpp: %{mregnames} %{mno-regnames}} \
+-%{mrelocatable} %{mrelocatable-lib} %{fpic|fpie|fPIC|fPIE:-K PIC} \
++%{mrelocatable} %{mrelocatable-lib} %{" FPIE_OR_FPIC_SPEC ":-K PIC} \
+ %{memb|msdata=eabi: -memb}" \
+ ENDIAN_SELECT(" -mbig", " -mlittle", DEFAULT_ASM_ENDIAN)
+ 
+Index: b/src/gcc/config/darwin.h
+===================================================================
+--- a/src/gcc/config/darwin.h
++++ b/src/gcc/config/darwin.h
+@@ -214,7 +214,7 @@ extern GTY(()) int darwin_ms_struct;
+ #define LINK_SYSROOT_SPEC "%{isysroot*:-syslibroot %*}"
+ #endif
+ 
+-#define PIE_SPEC "%{fpie|pie|fPIE:}"
++#define DARWIN_PIE_SPEC "%{fpie|pie|fPIE:}"
+ 
+ /* Please keep the random linker options in alphabetical order (modulo
+    'Z' and 'no' prefixes). Note that options taking arguments may appear
+@@ -280,7 +280,7 @@ extern GTY(()) int darwin_ms_struct;
+      %:version-compare(< 10.5 mmacosx-version-min= -multiply_defined) \
+      %:version-compare(< 10.5 mmacosx-version-min= suppress)}} \
+    %{Zmultiplydefinedunused*:-multiply_defined_unused %*} \
+-   " PIE_SPEC " \
++   " DARWIN_PIE_SPEC " \
+    %{prebind} %{noprebind} %{nofixprebinding} %{prebind_all_twolevel_modules} \
+    %{read_only_relocs} \
+    %{sectcreate*} %{sectorder*} %{seg1addr*} %{segprot*} \
+Index: b/src/gcc/config/arm/semi.h
+===================================================================
+--- a/src/gcc/config/arm/semi.h
++++ b/src/gcc/config/arm/semi.h
+@@ -58,7 +58,7 @@
+    binutils can't.  */
+ #ifndef ASM_SPEC
+ #define ASM_SPEC "\
+-%{fpic|fpie: -k} %{fPIC|fPIE: -k} \
++%{" FPIE_OR_FPIC_SPEC ": -k} \
+ %{mbig-endian:-EB} \
+ %(arm_cpu_spec) \
+ %{mapcs-float:-mfloat} \
+Index: b/src/gcc/config/arm/freebsd.h
+===================================================================
+--- a/src/gcc/config/arm/freebsd.h
++++ b/src/gcc/config/arm/freebsd.h
+@@ -34,7 +34,7 @@
+ #undef SUBTARGET_EXTRA_ASM_SPEC
+ #define SUBTARGET_EXTRA_ASM_SPEC \
+   "%{mabi=apcs-gnu|mabi=atpcs:-meabi=gnu;:-meabi=5} " TARGET_FIX_V4BX_SPEC " \
+-  %{fpic|fpie:-k} %{fPIC|fPIE:-k}"
++  %{" FPIE_OR_FPIC_SPEC ":-k}"
+ 
+ #undef SUBTARGET_ASM_FLOAT_SPEC
+ #ifdef TARGET_FREEBSD_ARM_HARD_FLOAT
+Index: b/src/gcc/config/arm/netbsd-elf.h
+===================================================================
+--- a/src/gcc/config/arm/netbsd-elf.h
++++ b/src/gcc/config/arm/netbsd-elf.h
+@@ -55,7 +55,7 @@
+ 
+ #undef SUBTARGET_EXTRA_ASM_SPEC
+ #define SUBTARGET_EXTRA_ASM_SPEC	\
+-  "-matpcs %{fpic|fpie:-k} %{fPIC|fPIE:-k}"
++  "-matpcs %{" FPIE_OR_FPIC_SPEC ":-k}"
+ 
+ /* Default to full VFP if -mfloat-abi=hard is specified.  */
+ #undef SUBTARGET_ASM_FLOAT_SPEC
+Index: b/src/gcc/config/darwin9.h
+===================================================================
+--- a/src/gcc/config/darwin9.h
++++ b/src/gcc/config/darwin9.h
+@@ -35,8 +35,8 @@ along with GCC; see the file COPYING3.
+ /* Tell collect2 to run dsymutil for us as necessary.  */
+ #define COLLECT_RUN_DSYMUTIL 1
+ 
+-#undef PIE_SPEC
+-#define PIE_SPEC \
++#undef DARWIN_PIE_SPEC
++#define DARWIN_PIE_SPEC \
+   "%{fpie|pie|fPIE: \
+      %{mdynamic-no-pic: %n'-mdynamic-no-pic' overrides '-pie', '-fpie' or '-fPIE'; \
+       :-pie}}"
+Index: b/src/gcc/config/mips/gnu-user.h
+===================================================================
+--- a/src/gcc/config/mips/gnu-user.h
++++ b/src/gcc/config/mips/gnu-user.h
+@@ -100,7 +100,7 @@ along with GCC; see the file COPYING3.
+ #ifdef HAVE_AS_NO_SHARED
+ /* Default to -mno-shared for non-PIC.  */
+ # define NO_SHARED_SPECS \
+-  " %{mshared|mno-shared|fpic|fPIC|fpie|fPIE:;:-mno-shared}"
++  " %{mshared|mno-shared:;:%{" NO_FPIE_AND_FPIC_SPEC ":-mno-shared}}"
+ #else
+ # define NO_SHARED_SPECS ""
+ #endif
+Index: b/src/gcc/config/mips/vxworks.h
+===================================================================
+--- a/src/gcc/config/mips/vxworks.h
++++ b/src/gcc/config/mips/vxworks.h
+@@ -70,7 +70,7 @@ VXWORKS_LINK_SPEC
+ #define FUNCTION_PROFILER VXWORKS_FUNCTION_PROFILER
+ 
+ #undef SUBTARGET_ASM_SPEC
+-#define SUBTARGET_ASM_SPEC "%{mrtp:%{fPIC|fpic:-mvxworks-pic}}"
++#define SUBTARGET_ASM_SPEC "%{mrtp:%{" FPIC_SPEC ":-mvxworks-pic}}"
+ 
+ #undef SUBTARGET_OVERRIDE_OPTIONS
+ #define SUBTARGET_OVERRIDE_OPTIONS VXWORKS_OVERRIDE_OPTIONS
+Index: b/src/gcc/config/openbsd.h
+===================================================================
+--- a/src/gcc/config/openbsd.h
++++ b/src/gcc/config/openbsd.h
+@@ -126,7 +126,7 @@ while (0)
+    still uses a special flavor of gas that needs to be told when generating 
+    pic code.  */
+ #undef ASM_SPEC
+-#define ASM_SPEC "%{fpic|fpie:-k} %{fPIC|fPIE:-k -K}"
++#define ASM_SPEC "%{" FPIE1_OR_FPIC1_SPEC ":-k} %{" FPIE2_OR_FPIC2_SPEC ":-k -K}"
+ #endif
+ 
+ /* Since we use gas, stdin -> - is a good idea.  */
+Index: b/src/gcc/config/vax/linux.h
+===================================================================
+--- a/src/gcc/config/vax/linux.h
++++ b/src/gcc/config/vax/linux.h
+@@ -32,7 +32,7 @@ along with GCC; see the file COPYING3.
+ #define CPP_SPEC "%{posix:-D_POSIX_SOURCE} %{pthread:-D_REENTRANT}"
+ 
+ #undef ASM_SPEC
+-#define ASM_SPEC "%{fpic|fPIC:-k}"
++#define ASM_SPEC "%{" FPIC_SPEC ":-k}"
+ 
+ #undef LINK_SPEC
+ #define LINK_SPEC \
diff --git a/debian/patches/gcc-d-lang.diff b/debian/patches/gcc-d-lang.diff
new file mode 100644
index 0000000..a214841
--- /dev/null
+++ b/debian/patches/gcc-d-lang.diff
@@ -0,0 +1,251 @@
+# DP: Add D options and specs for the gcc driver.
+
+Index: b/src/gcc/d/lang-specs.h
+===================================================================
+--- /dev/null
++++ b/src/gcc/d/lang-specs.h
+@@ -0,0 +1,31 @@
++/* lang-specs.h -- D frontend for GCC.
++   Copyright (C) 2011, 2012 Free Software Foundation, Inc.
++
++   GCC is free software; you can redistribute it and/or modify it under
++   the terms of the GNU General Public License as published by the Free
++   Software Foundation; either version 3, or (at your option) any later
++   version.
++
++   GCC is distributed in the hope that it will be useful, but WITHOUT ANY
++   WARRANTY; without even the implied warranty of MERCHANTABILITY or
++   FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
++   for more details.
++
++   You should have received a copy of the GNU General Public License
++   along with GCC; see the file COPYING3.  If not see
++   <http://www.gnu.org/licenses/>.
++*/
++
++/* %{!M} probably doesn't make sense because we would need
++   to do that -- -MD and -MMD doesn't sound like a plan for D.... */
++
++{".d", "@d", 0, 1, 0 },
++{".D", "@d", 0, 1, 0 },
++{".dd", "@d", 0, 1, 0 },
++{".DD", "@d", 0, 1, 0 },
++{".di", "@d", 0, 1, 0 },
++{".DI", "@d", 0, 1, 0 },
++{"@d",
++  "%{!E:cc1d %i %(cc1_options) %(cc1d) %I %{nostdinc*} %{+e*} %{I*} %{J*}\
++    %{M} %{MM} %{!fsyntax-only:%(invoke_as)}}", 0, 1, 0 },
++
+Index: b/src/gcc/d/lang.opt
+===================================================================
+--- /dev/null
++++ b/src/gcc/d/lang.opt
+@@ -0,0 +1,208 @@
++; GDC -- D front-end for GCC
++; Copyright (C) 2011, 2012 Free Software Foundation, Inc.
++;
++; This program 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 2 of the License, or
++; (at your option) any later version.
++;
++; This program is distributed in the hope that it will be useful,
++; but WITHOUT ANY WARRANTY; without even the implied warranty of
++; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++; GNU General Public License for more details.
++;
++; You should have received a copy of the GNU General Public License
++; along with GCC; see the file COPYING3.  If not see
++; <http://www.gnu.org/licenses/>.
++
++Language
++D
++
++debuglib=
++Driver Joined
++Debug library to use instead of phobos
++
++defaultlib=
++Driver Joined
++Default library to use instead of phobos
++
++fassert
++D
++Permit the use of the assert keyword
++
++; For D: defaults to on
++fbounds-check
++D
++Generate code to check bounds before indexing arrays
++
++fbuiltin
++D Var(flag_no_builtin, 0)
++Recognize built-in functions
++
++fdebug
++D
++Compile in debug code
++
++fdebug=
++D Joined RejectNegative
++-fdebug,-fdebug=<level>,-fdebug=<ident> Compile in debug code, code <= level, or code identified by ident
++
++fdeps=
++D Joined RejectNegative
++-fdeps=<filename> Write module dependencies to filename
++
++fdoc
++D
++Generate documentation
++
++fdoc-dir=
++D Joined RejectNegative
++-fdoc-dir=<docdir> Write documentation file to docdir directory
++
++fdoc-file=
++D Joined RejectNegative
++-fdoc-file=<filename> Write documentation file to filename
++
++fdoc-inc=
++D Joined RejectNegative
++-fdoc-inc=<filename> Include a Ddoc macro file
++
++fdump-source
++D RejectNegative
++Dump decoded UTF-8 text and source from HTML
++
++fd-verbose
++D
++Print information about D language processing to stdout
++
++fd-vtls
++D
++List all variables going into thread local storage
++
++femit-templates
++D
++-femit-templates Emit templates code and data even if the linker cannot merge multiple copies
++
++fignore-unknown-pragmas
++D
++Ignore unsupported pragmas
++
++fin
++D
++Generate runtime code for in() contracts
++
++fintfc
++Generate D interface files
++
++fintfc-dir=
++D Joined RejectNegative
++-fintfc-dir=<dir> Write D interface files to directory <dir>
++
++fintfc-file=
++D Joined RejectNegative
++-fintfc-file=<filename> Write D interface file to <filename>
++
++finvariants
++D
++Generate runtime code for invariant()'s
++
++fmake-deps=
++D Joined RejectNegative
++-fmake-deps=<file> Write dependency output to the given file
++
++fmake-mdeps=
++D Joined RejectNegative
++Like -fmake-deps=<file> but ignore system modules
++
++femit-moduleinfo
++D
++Generate ModuleInfo struct for output module
++
++fonly=
++D Joined RejectNegative
++Process all modules specified on the command line, but only generate code for the module specified by the argument
++
++fout
++D
++Generate runtime code for out() contracts
++
++fproperty
++D
++Enforce property syntax
++
++frelease
++D
++Compile release version
++
++fsplit-dynamic-arrays
++D Var(flag_split_darrays)
++Split dynamic arrays into length and pointer when passing to functions
++
++funittest
++D
++Compile in unittest code
++
++fversion=
++D Joined RejectNegative
++-fversion=<level|ident> Compile in version code >= <level> or identified by <ident>
++
++fXf=
++D Joined RejectNegative
++-fXf=<filename> Write JSON file to <filename>
++
++imultilib
++D Joined Separate
++-imultilib <dir>	Set <dir> to be the multilib include subdirectory
++
++iprefix
++D Joined Separate
++-iprefix <path>	Specify <path> as a prefix for next two options
++
++isysroot
++D Joined Separate
++-isysroot <dir>	Set <dir> to be the system root directory
++
++isystem
++D Joined Separate
++-isystem <dir>	Add <dir> to the start of the system include path
++
++I
++D Joined Separate
++-I <dir>	Add <dir> to the end of the main include path
++
++J
++D Joined Separate
++-J<directory>	Put MODULE files in 'directory'
++
++nophoboslib
++Driver
++Do not link the standard D library in the compilation
++
++nostdinc
++D
++Do not search standard system include directories (those specified with -isystem will still be used)
++
++static-libphobos
++Driver
++Link the standard D library statically in the compilation
++
++Wall
++D
++; Documented in c.opt
++
++Wcast-result
++D Warning Var(warn_cast_result)
++Warn about casts that will produce a null or nil result
++
++Wdeprecated
++D
++; Documented in c.opt
++
++Werror
++D
++; Documented in common.opt
++
++Wunknown-pragmas
++D
++; Documented in c.opt
++
diff --git a/debian/patches/gcc-default-format-security.diff b/debian/patches/gcc-default-format-security.diff
new file mode 100644
index 0000000..a391857
--- /dev/null
+++ b/debian/patches/gcc-default-format-security.diff
@@ -0,0 +1,39 @@
+# DP: Turn on -Wformat -Wformat-security by  default for C, C++, ObjC, ObjC++.
+
+Index: b/src/gcc/doc/invoke.texi
+===================================================================
+--- a/src/gcc/doc/invoke.texi
++++ b/src/gcc/doc/invoke.texi
+@@ -3685,6 +3685,11 @@ included in @option{-Wformat-nonliteral}
+ If @option{-Wformat} is specified, also warn if the format string
+ requires an unsigned argument and the argument is signed and vice versa.
+ 
++NOTE: In Ubuntu 8.10 and later versions this option is enabled by default
++for C, C++, ObjC, ObjC++.  To disable, use @option{-Wno-format-security},
++or disable all format warnings with @option{-Wformat=0}.  To make format
++security warnings fatal, specify @option{-Werror=format-security}.
++
+ @item -Wformat-y2k
+ @opindex Wformat-y2k
+ @opindex Wno-format-y2k
+Index: b/src/gcc/gcc.c
+===================================================================
+--- a/src/gcc/gcc.c
++++ b/src/gcc/gcc.c
+@@ -727,11 +727,14 @@ proper position among the other output f
+ #define LINK_GCC_C_SEQUENCE_SPEC "%G %L %G"
+ #endif
+ 
++/* no separate spec, just shove it into the ssp default spec */
++#define FORMAT_SECURITY_SPEC "%{!Wformat:%{!Wformat=2:%{!Wformat=0:%{!Wall:-Wformat} %{!Wno-format-security:-Wformat-security}}}}"
++
+ #ifndef SSP_DEFAULT_SPEC
+ #ifdef TARGET_LIBC_PROVIDES_SSP
+-#define SSP_DEFAULT_SPEC "%{!fno-stack-protector:%{!fstack-protector-all:%{!ffreestanding:%{!nostdlib:-fstack-protector}}}}"
++#define SSP_DEFAULT_SPEC "%{!fno-stack-protector:%{!fstack-protector-all:%{!ffreestanding:%{!nostdlib:-fstack-protector}}}} " FORMAT_SECURITY_SPEC
+ #else
+-#define SSP_DEFAULT_SPEC ""
++#define SSP_DEFAULT_SPEC FORMAT_SECURITY_SPEC
+ #endif
+ #endif
+ 
diff --git a/debian/patches/gcc-default-fortify-source.diff b/debian/patches/gcc-default-fortify-source.diff
new file mode 100644
index 0000000..e20626f
--- /dev/null
+++ b/debian/patches/gcc-default-fortify-source.diff
@@ -0,0 +1,40 @@
+# DP: Turn on -D_FORTIFY_SOURCE=2 by default for C, C++, ObjC, ObjC++,
+# DP: if the optimization level is > 0
+
+---
+ gcc/doc/invoke.texi          |    6 ++++++
+ gcc/c-family/c-cppbuiltin.c  |    3 +
+ 2 files changed, 9 insertions(+), 0 deletions(-)
+
+Index: b/src/gcc/doc/invoke.texi
+===================================================================
+--- a/src/gcc/doc/invoke.texi
++++ b/src/gcc/doc/invoke.texi
+@@ -7533,6 +7533,12 @@ also turns on the following optimization
+ Please note the warning under @option{-fgcse} about
+ invoking @option{-O2} on programs that use computed gotos.
+ 
++NOTE: In Ubuntu 8.10 and later versions, @option{-D_FORTIFY_SOURCE=2} is
++set by default, and is activated when @option{-O} is set to 2 or higher.
++This enables additional compile-time and run-time checks for several libc
++functions.  To disable, specify either @option{-U_FORTIFY_SOURCE} or
++ at option{-D_FORTIFY_SOURCE=0}.
++
+ @item -O3
+ @opindex O3
+ Optimize yet more.  @option{-O3} turns on all optimizations specified
+Index: b/src/gcc/c-family/c-cppbuiltin.c
+===================================================================
+--- a/src/gcc/c-family/c-cppbuiltin.c
++++ b/src/gcc/c-family/c-cppbuiltin.c
+@@ -1171,6 +1171,10 @@ c_cpp_builtins (cpp_reader *pfile)
+   builtin_define_with_value ("__REGISTER_PREFIX__", REGISTER_PREFIX, 0);
+   builtin_define_with_value ("__USER_LABEL_PREFIX__", user_label_prefix, 0);
+ 
++  /* Fortify Source enabled by default for optimization levels > 0 */
++  if (optimize)
++    builtin_define_with_int_value ("_FORTIFY_SOURCE", 2);
++
+   /* Misc.  */
+   if (flag_gnu89_inline)
+     cpp_define (pfile, "__GNUC_GNU_INLINE__");
diff --git a/debian/patches/gcc-default-relro.diff b/debian/patches/gcc-default-relro.diff
new file mode 100644
index 0000000..09ec820
--- /dev/null
+++ b/debian/patches/gcc-default-relro.diff
@@ -0,0 +1,33 @@
+# DP: Turn on -Wl,-z,relro by default.
+
+---
+ gcc/doc/invoke.texi |    3 +++
+ gcc/gcc.c           |    1 +
+ 2 files changed, 4 insertions(+), 0 deletions(-)
+
+Index: b/src/gcc/doc/invoke.texi
+===================================================================
+--- a/src/gcc/doc/invoke.texi
++++ b/src/gcc/doc/invoke.texi
+@@ -11424,6 +11424,9 @@ For example, @option{-Wl,-Map,output.map
+ linker.  When using the GNU linker, you can also get the same effect with
+ @option{-Wl,-Map=output.map}.
+ 
++NOTE: In Ubuntu 8.10 and later versions, for LDFLAGS, the option
++ at option{-Wl,-z,relro} is used.  To disable, use @option{-Wl,-z,norelro}.
++
+ @item -u @var{symbol}
+ @opindex u
+ Pretend the symbol @var{symbol} is undefined, to force linking of
+Index: b/src/gcc/gcc.c
+===================================================================
+--- a/src/gcc/gcc.c
++++ b/src/gcc/gcc.c
+@@ -890,6 +890,7 @@ proper position among the other output f
+    "%{flto|flto=*:%<fcompare-debug*} \
+     %{flto} %{fno-lto} %{flto=*} %l " LINK_PIE_SPEC \
+    "%{fuse-ld=*:-fuse-ld=%*} " LINK_COMPRESS_DEBUG_SPEC \
++   "-z relro " \
+    "%X %{o*} %{e*} %{N} %{n} %{r}\
+     %{s} %{t} %{u*} %{z} %{Z} %{!nostdlib:%{!nostartfiles:%S}} " VTABLE_VERIFICATION_SPEC " \
+     %{static:} %{L*} %(mfwrap) %(link_libgcc) " SANITIZER_EARLY_SPEC " %o\
diff --git a/debian/patches/gcc-default-ssp-strong.diff b/debian/patches/gcc-default-ssp-strong.diff
new file mode 100644
index 0000000..4748c0e
--- /dev/null
+++ b/debian/patches/gcc-default-ssp-strong.diff
@@ -0,0 +1,59 @@
+# DP: Default to -fstack-protector-strong starting with Ubuntu 14.10.
+
+Index: b/src/gcc/gcc.c
+===================================================================
+--- a/src/gcc/gcc.c
++++ b/src/gcc/gcc.c
+@@ -732,7 +732,7 @@ proper position among the other output f
+ 
+ #ifndef SSP_DEFAULT_SPEC
+ #ifdef TARGET_LIBC_PROVIDES_SSP
+-#define SSP_DEFAULT_SPEC "%{!fno-stack-protector:%{!fstack-protector-all:%{!ffreestanding:%{!nostdlib:-fstack-protector}}}} " FORMAT_SECURITY_SPEC
++#define SSP_DEFAULT_SPEC "%{!fno-stack-protector:%{!fstack-protector-all:%{!ffreestanding:%{!nostdlib:%{!fstack-protector:-fstack-protector-strong}}}}} " FORMAT_SECURITY_SPEC
+ #else
+ #define SSP_DEFAULT_SPEC FORMAT_SECURITY_SPEC
+ #endif
+Index: b/src/gcc/doc/invoke.texi
+===================================================================
+--- a/src/gcc/doc/invoke.texi
++++ b/src/gcc/doc/invoke.texi
+@@ -10034,10 +10034,6 @@ functions with buffers larger than 8 byt
+ when a function is entered and then checked when the function exits.
+ If a guard check fails, an error message is printed and the program exits.
+ 
+-NOTE: In Ubuntu 6.10 and later versions this option is enabled by default
+-for C, C++, ObjC, ObjC++, if none of @option{-fno-stack-protector},
+- at option{-nostdlib}, nor @option{-ffreestanding} are found.
+-
+ @item -fstack-protector-all
+ @opindex fstack-protector-all
+ Like @option{-fstack-protector} except that all functions are protected.
+@@ -10058,6 +10054,11 @@ have the @code{stack_protect} attribute
+ Optimize the prologue of variadic argument functions with respect to usage of
+ those arguments.
+ 
++NOTE: In Ubuntu 14.10 and later versions,
++ at option{-fstack-protector-strong} is enabled by default for C,
++C++, ObjC, ObjC++, if none of @option{-fno-stack-protector},
++ at option{-nostdlib}, nor @option{-ffreestanding} are found.
++
+ @item -fsection-anchors
+ @opindex fsection-anchors
+ Try to reduce the number of symbolic address calculations by using
+@@ -10658,13 +10659,13 @@ value of a shared integer constant.  The
+ The minimum size of buffers (i.e.@: arrays) that receive stack smashing
+ protection when @option{-fstack-protection} is used.
+ 
++This default before Ubuntu 10.10 was "8". Currently it is "4", to increase
++the number of functions protected by the stack protector.
++
+ @item min-size-for-stack-sharing
+ The minimum size of variables taking part in stack slot sharing when not
+ optimizing. The default value is 32.
+ 
+-This default before Ubuntu 10.10 was "8". Currently it is "4", to increase
+-the number of functions protected by the stack protector.
+-
+ @item max-jump-thread-duplication-stmts
+ Maximum number of statements allowed in a block that needs to be
+ duplicated when threading jumps.
diff --git a/debian/patches/gcc-default-ssp.diff b/debian/patches/gcc-default-ssp.diff
new file mode 100644
index 0000000..72346e7
--- /dev/null
+++ b/debian/patches/gcc-default-ssp.diff
@@ -0,0 +1,214 @@
+# DP: Turn on -fstack-protector by default for C, C++, ObjC, ObjC++.
+# DP: Build libgcc using -fno-stack-protector.
+
+---
+ gcc/Makefile.in        |    2 ++
+ gcc/cp/lang-specs.h    |    6 +++---
+ gcc/doc/invoke.texi    |    4 ++++
+ gcc/gcc.c              |   18 ++++++++++++++----
+ gcc/objc/lang-specs.h  |   10 +++++-----
+ gcc/objcp/lang-specs.h |    8 ++++----
+ 6 files changed, 32 insertions(+), 16 deletions(-)
+
+Index: b/src/gcc/gcc.c
+===================================================================
+--- a/src/gcc/gcc.c
++++ b/src/gcc/gcc.c
+@@ -727,6 +727,14 @@ proper position among the other output f
+ #define LINK_GCC_C_SEQUENCE_SPEC "%G %L %G"
+ #endif
+ 
++#ifndef SSP_DEFAULT_SPEC
++#ifdef TARGET_LIBC_PROVIDES_SSP
++#define SSP_DEFAULT_SPEC "%{!fno-stack-protector:%{!fstack-protector-all:%{!ffreestanding:%{!nostdlib:-fstack-protector}}}}"
++#else
++#define SSP_DEFAULT_SPEC ""
++#endif
++#endif
++
+ #ifndef LINK_SSP_SPEC
+ #ifdef TARGET_LIBC_PROVIDES_SSP
+ #define LINK_SSP_SPEC "%{fstack-protector|fstack-protector-all" \
+@@ -919,6 +927,7 @@ static const char *cc1_spec = CC1_SPEC;
+ static const char *cc1plus_spec = CC1PLUS_SPEC;
+ static const char *link_gcc_c_sequence_spec = LINK_GCC_C_SEQUENCE_SPEC;
+ static const char *link_ssp_spec = LINK_SSP_SPEC;
++static const char *ssp_default_spec = SSP_DEFAULT_SPEC;
+ static const char *asm_spec = ASM_SPEC;
+ static const char *asm_final_spec = ASM_FINAL_SPEC;
+ static const char *link_spec = LINK_SPEC;
+@@ -973,7 +982,7 @@ static const char *cpp_unique_options =
+ static const char *cpp_options =
+ "%(cpp_unique_options) %1 %{m*} %{std*&ansi&trigraphs} %{W*&pedantic*} %{w}\
+  %{f*} %{g*:%{!g0:%{g*} %{!fno-working-directory:-fworking-directory}}} %{O*}\
+- %{undef} %{save-temps*:-fpch-preprocess}";
++ %{undef} %{save-temps*:-fpch-preprocess} %(ssp_default)";
+ 
+ /* This contains cpp options which are not passed when the preprocessor
+    output will be used by another program.  */
+@@ -1161,9 +1170,9 @@ static const struct compiler default_com
+       %{save-temps*|traditional-cpp|no-integrated-cpp:%(trad_capable_cpp) \
+ 	  %(cpp_options) -o %{save-temps*:%b.i} %{!save-temps*:%g.i} \n\
+ 	    cc1 -fpreprocessed %{save-temps*:%b.i} %{!save-temps*:%g.i} \
+-	  %(cc1_options)}\
++	  %(cc1_options) %(ssp_default)}\
+       %{!save-temps*:%{!traditional-cpp:%{!no-integrated-cpp:\
+-	  cc1 %(cpp_unique_options) %(cc1_options)}}}\
++	  cc1 %(cpp_unique_options) %(cc1_options) %(ssp_default)}}}\
+       %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 1},
+   {"-",
+    "%{!E:%e-E or -x required when input is from standard input}\
+@@ -1186,7 +1195,7 @@ static const struct compiler default_com
+                     %W{o*:--output-pch=%*}}%V}}}}}}", 0, 0, 0},
+   {".i", "@cpp-output", 0, 0, 0},
+   {"@cpp-output",
+-   "%{!M:%{!MM:%{!E:cc1 -fpreprocessed %i %(cc1_options) %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 0},
++   "%{!M:%{!MM:%{!E:cc1 -fpreprocessed %i %(cc1_options) %(ssp_default) %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 0},
+   {".s", "@assembler", 0, 0, 0},
+   {"@assembler",
+    "%{!M:%{!MM:%{!E:%{!S:as %(asm_debug) %(asm_options) %i %A }}}}", 0, 0, 0},
+@@ -1416,6 +1425,7 @@ static struct spec_list static_specs[] =
+   INIT_STATIC_SPEC ("cc1plus",			&cc1plus_spec),
+   INIT_STATIC_SPEC ("link_gcc_c_sequence",	&link_gcc_c_sequence_spec),
+   INIT_STATIC_SPEC ("link_ssp",			&link_ssp_spec),
++  INIT_STATIC_SPEC ("ssp_default",		&ssp_default_spec),
+   INIT_STATIC_SPEC ("endfile",			&endfile_spec),
+   INIT_STATIC_SPEC ("link",			&link_spec),
+   INIT_STATIC_SPEC ("lib",			&lib_spec),
+Index: b/src/gcc/cp/lang-specs.h
+===================================================================
+--- a/src/gcc/cp/lang-specs.h
++++ b/src/gcc/cp/lang-specs.h
+@@ -46,7 +46,7 @@ along with GCC; see the file COPYING3.
+ 		%(cpp_options) %2 -o %{save-temps*:%b.ii} %{!save-temps*:%g.ii} \n}\
+       cc1plus %{save-temps*|no-integrated-cpp:-fpreprocessed %{save-temps*:%b.ii} %{!save-temps*:%g.ii}}\
+ 	      %{!save-temps*:%{!no-integrated-cpp:%(cpp_unique_options)}}\
+-	%(cc1_options) %2\
++	%(cc1_options) %(ssp_default) %2\
+ 	%{!fsyntax-only:%{!fdump-ada-spec*:-o %g.s %{!o*:--output-pch=%i.gch}\
+         %W{o*:--output-pch=%*}}%V}}}}",
+      CPLUSPLUS_CPP_SPEC, 0, 0},
+@@ -57,11 +57,11 @@ along with GCC; see the file COPYING3.
+ 		%(cpp_options) %2 -o %{save-temps*:%b.ii} %{!save-temps*:%g.ii} \n}\
+       cc1plus %{save-temps*|no-integrated-cpp:-fpreprocessed %{save-temps*:%b.ii} %{!save-temps*:%g.ii}}\
+ 	      %{!save-temps*:%{!no-integrated-cpp:%(cpp_unique_options)}}\
+-	%(cc1_options) %2\
++	%(cc1_options) %(ssp_default) %2\
+        %{!fsyntax-only:%(invoke_as)}}}}",
+      CPLUSPLUS_CPP_SPEC, 0, 0},
+   {".ii", "@c++-cpp-output", 0, 0, 0},
+   {"@c++-cpp-output",
+    "%{!M:%{!MM:%{!E:\
+-    cc1plus -fpreprocessed %i %(cc1_options) %2\
++    cc1plus -fpreprocessed %i %(cc1_options) %(ssp_default) %2\
+     %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 0},
+Index: b/src/gcc/params.def
+===================================================================
+--- a/src/gcc/params.def
++++ b/src/gcc/params.def
+@@ -695,7 +695,7 @@ DEFPARAM (PARAM_INTEGER_SHARE_LIMIT,
+ DEFPARAM (PARAM_SSP_BUFFER_SIZE,
+ 	  "ssp-buffer-size",
+ 	  "The lower bound for a buffer to be considered for stack smashing protection",
+-	  8, 1, 0)
++	  4, 1, 0)
+ 
+ DEFPARAM (PARAM_MIN_SIZE_FOR_STACK_SHARING,
+ 	  "min-size-for-stack-sharing",
+Index: b/src/gcc/objc/lang-specs.h
+===================================================================
+--- a/src/gcc/objc/lang-specs.h
++++ b/src/gcc/objc/lang-specs.h
+@@ -29,9 +29,9 @@ along with GCC; see the file COPYING3.
+ 	%{traditional|traditional-cpp:\
+ %eGNU Objective C no longer supports traditional compilation}\
+ 	%{save-temps*|no-integrated-cpp:cc1obj -E %(cpp_options) -o %{save-temps*:%b.mi} %{!save-temps*:%g.mi} \n\
+-	    cc1obj -fpreprocessed %{save-temps*:%b.mi} %{!save-temps*:%g.mi} %(cc1_options) %{print-objc-runtime-info} %{gen-decls}}\
++	    cc1obj -fpreprocessed %{save-temps*:%b.mi} %{!save-temps*:%g.mi} %(cc1_options) %(ssp_default) %{print-objc-runtime-info} %{gen-decls}}\
+ 	%{!save-temps*:%{!no-integrated-cpp:\
+-	    cc1obj %(cpp_unique_options) %(cc1_options) %{print-objc-runtime-info} %{gen-decls}}}\
++	    cc1obj %(cpp_unique_options) %(cc1_options) %(ssp_default) %{print-objc-runtime-info} %{gen-decls}}}\
+         %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 0},
+   {"@objective-c-header",
+      "%{E|M|MM:cc1obj -E %{traditional|traditional-cpp:-traditional-cpp}\
+@@ -40,18 +40,18 @@ along with GCC; see the file COPYING3.
+ 	%{traditional|traditional-cpp:\
+ %eGNU Objective C no longer supports traditional compilation}\
+ 	%{save-temps*|no-integrated-cpp:cc1obj -E %(cpp_options) -o %{save-temps*:%b.mi} %{!save-temps*:%g.mi} \n\
+-	    cc1obj -fpreprocessed %b.mi %(cc1_options) %{print-objc-runtime-info} %{gen-decls}\
++	    cc1obj -fpreprocessed %b.mi %(cc1_options) %(ssp_default) %{print-objc-runtime-info} %{gen-decls}\
+                         -o %g.s %{!o*:--output-pch=%i.gch}\
+                         %W{o*:--output-pch=%*}%V}\
+ 	%{!save-temps*:%{!no-integrated-cpp:\
+-	    cc1obj %(cpp_unique_options) %(cc1_options) %{print-objc-runtime-info} %{gen-decls}\
++	    cc1obj %(cpp_unique_options) %(cc1_options) %(ssp_default) %{print-objc-runtime-info} %{gen-decls}\
+                         -o %g.s %{!o*:--output-pch=%i.gch}\
+                         %W{o*:--output-pch=%*}%V}}}}}", 0, 0, 0},
+   {".mi", "@objective-c-cpp-output", 0, 0, 0},
+   {"@objective-c-cpp-output",
+-     "%{!M:%{!MM:%{!E:cc1obj -fpreprocessed %i %(cc1_options) %{print-objc-runtime-info} %{gen-decls}\
++     "%{!M:%{!MM:%{!E:cc1obj -fpreprocessed %i %(cc1_options) %(ssp_default) %{print-objc-runtime-info} %{gen-decls}\
+ 			     %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 0},
+   {"@objc-cpp-output",
+       "%nobjc-cpp-output is deprecated; please use objective-c-cpp-output instead\n\
+-       %{!M:%{!MM:%{!E:cc1obj -fpreprocessed %i %(cc1_options) %{print-objc-runtime-info} %{gen-decls}\
++       %{!M:%{!MM:%{!E:cc1obj -fpreprocessed %i %(cc1_options) %(ssp_default) %{print-objc-runtime-info} %{gen-decls}\
+ 			     %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 0},
+Index: b/src/gcc/objcp/lang-specs.h
+===================================================================
+--- a/src/gcc/objcp/lang-specs.h
++++ b/src/gcc/objcp/lang-specs.h
+@@ -36,7 +36,7 @@ along with GCC; see the file COPYING3.
+ 		%(cpp_options) %2 -o %{save-temps*:%b.mii} %{!save-temps*:%g.mii} \n}\
+       cc1objplus %{save-temps*|no-integrated-cpp:-fpreprocessed %{save-temps*:%b.mii} %{!save-temps*:%g.mii}}\
+ 	      %{!save-temps*:%{!no-integrated-cpp:%(cpp_unique_options)}}\
+-	%(cc1_options) %2\
++	%(cc1_options) %(ssp_default) %2\
+         -o %g.s %{!o*:--output-pch=%i.gch} %W{o*:--output-pch=%*}%V}}}",
+      CPLUSPLUS_CPP_SPEC, 0, 0},
+   {"@objective-c++",
+@@ -46,16 +46,16 @@ along with GCC; see the file COPYING3.
+ 		%(cpp_options) %2 -o %{save-temps*:%b.mii} %{!save-temps*:%g.mii} \n}\
+       cc1objplus %{save-temps*|no-integrated-cpp:-fpreprocessed %{save-temps*:%b.mii} %{!save-temps*:%g.mii}}\
+ 	      %{!save-temps*:%{!no-integrated-cpp:%(cpp_unique_options)}}\
+-	%(cc1_options) %2\
++	%(cc1_options) %(ssp_default) %2\
+        %{!fsyntax-only:%(invoke_as)}}}}",
+      CPLUSPLUS_CPP_SPEC, 0, 0},
+   {".mii", "@objective-c++-cpp-output", 0, 0, 0},
+   {"@objective-c++-cpp-output",
+    "%{!M:%{!MM:%{!E:\
+-    cc1objplus -fpreprocessed %i %(cc1_options) %2\
++    cc1objplus -fpreprocessed %i %(cc1_options) %(ssp_default) %2\
+     %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 0},
+   {"@objc++-cpp-output",
+    "%nobjc++-cpp-output is deprecated; please use objective-c++-cpp-output instead\n\
+     %{!M:%{!MM:%{!E:\
+-    cc1objplus -fpreprocessed %i %(cc1_options) %2\
++    cc1objplus -fpreprocessed %i %(cc1_options) %(ssp_default) %2\
+     %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 0},
+Index: b/src/gcc/doc/invoke.texi
+===================================================================
+--- a/src/gcc/doc/invoke.texi
++++ b/src/gcc/doc/invoke.texi
+@@ -10029,6 +10029,10 @@ functions with buffers larger than 8 byt
+ when a function is entered and then checked when the function exits.
+ If a guard check fails, an error message is printed and the program exits.
+ 
++NOTE: In Ubuntu 6.10 and later versions this option is enabled by default
++for C, C++, ObjC, ObjC++, if none of @option{-fno-stack-protector},
++ at option{-nostdlib}, nor @option{-ffreestanding} are found.
++
+ @item -fstack-protector-all
+ @opindex fstack-protector-all
+ Like @option{-fstack-protector} except that all functions are protected.
+@@ -10653,6 +10657,9 @@ protection when @option{-fstack-protecti
+ The minimum size of variables taking part in stack slot sharing when not
+ optimizing. The default value is 32.
+ 
++This default before Ubuntu 10.10 was "8". Currently it is "4", to increase
++the number of functions protected by the stack protector.
++
+ @item max-jump-thread-duplication-stmts
+ Maximum number of statements allowed in a block that needs to be
+ duplicated when threading jumps.
diff --git a/debian/patches/gcc-driver-extra-langs-linaro.diff b/debian/patches/gcc-driver-extra-langs-linaro.diff
new file mode 100644
index 0000000..6fd50a3
--- /dev/null
+++ b/debian/patches/gcc-driver-extra-langs-linaro.diff
@@ -0,0 +1,22 @@
+# DP: Add options and specs for languages that are not built from a source
+# DP: (but built from separate sources).
+
+---
+ gcc/Makefile.in |    4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+Index: b/src/gcc/Makefile.in
+===================================================================
+--- a/src/gcc/Makefile.in
++++ b/src/gcc/Makefile.in
+@@ -527,8 +527,8 @@ xm_include_list=@xm_include_list@
+ xm_defines=@xm_defines@
+ lang_checks=
+ lang_checks_parallelized=
+-lang_opt_files=@lang_opt_files@ $(srcdir)/c-family/c.opt $(srcdir)/common.opt
+-lang_specs_files=@lang_specs_files@
++lang_opt_files=$(sort @lang_opt_files@ $(srcdir)/c-family/c.opt $(srcdir)/common.opt $(foreach lang,$(subst ada,ada/gcc-interface,$(debian_extra_langs)),$(srcdir)/$(lang)/lang.opt))
++lang_specs_files=$(sort @lang_specs_files@ $(foreach lang,$(subst ada,ada/gcc-interface,$(debian_extra_langs)),$(srcdir)/$(lang)/lang-specs.h))
+ lang_tree_files=@lang_tree_files@
+ target_cpu_default=@target_cpu_default@
+ OBJC_BOEHM_GC=@objc_boehm_gc@
diff --git a/debian/patches/gcc-driver-extra-langs.diff b/debian/patches/gcc-driver-extra-langs.diff
new file mode 100644
index 0000000..12ed81d
--- /dev/null
+++ b/debian/patches/gcc-driver-extra-langs.diff
@@ -0,0 +1,22 @@
+# DP: Add options and specs for languages that are not built from a source
+# DP: (but built from separate sources).
+
+---
+ gcc/Makefile.in |    4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+Index: b/src/gcc/Makefile.in
+===================================================================
+--- a/src/gcc/Makefile.in
++++ b/src/gcc/Makefile.in
+@@ -531,8 +531,8 @@ lang_checks_parallelized=
+ # It doesn't make sense to try e.g. 128 goals for small testsuites
+ # like objc or go.
+ check_gcc_parallelize=10000
+-lang_opt_files=@lang_opt_files@ $(srcdir)/c-family/c.opt $(srcdir)/common.opt
+-lang_specs_files=@lang_specs_files@
++lang_opt_files=$(sort @lang_opt_files@ $(srcdir)/c-family/c.opt $(srcdir)/common.opt $(foreach lang,$(subst ada,ada/gcc-interface,$(debian_extra_langs)),$(srcdir)/$(lang)/lang.opt))
++lang_specs_files=$(sort @lang_specs_files@ $(foreach lang,$(subst ada,ada/gcc-interface,$(debian_extra_langs)),$(srcdir)/$(lang)/lang-specs.h))
+ lang_tree_files=@lang_tree_files@
+ target_cpu_default=@target_cpu_default@
+ OBJC_BOEHM_GC=@objc_boehm_gc@
diff --git a/debian/patches/gcc-gfdl-build.diff b/debian/patches/gcc-gfdl-build.diff
new file mode 100644
index 0000000..e749218
--- /dev/null
+++ b/debian/patches/gcc-gfdl-build.diff
@@ -0,0 +1,39 @@
+# DP: Build a dummy s-tm-texi without access to the texinfo sources
+
+Index: b/src/gcc/Makefile.in
+===================================================================
+--- a/src/gcc/Makefile.in
++++ b/src/gcc/Makefile.in
+@@ -2249,30 +2249,8 @@ s-tm-texi: $(srcdir)/doc/../doc/tm.texi
+ # \r is not portable to Solaris tr, therefore we have a special
+ # case for ASCII.  We use \r for other encodings like EBCDIC.
+ s-tm-texi: build/genhooks$(build_exeext) $(srcdir)/doc/tm.texi.in
+-	$(RUN_GEN) build/genhooks$(build_exeext) -d \
+-			$(srcdir)/doc/tm.texi.in > tmp-tm.texi
+-	case `echo X|tr X '\101'` in \
+-	  A) tr -d '\015' < tmp-tm.texi > tmp2-tm.texi ;; \
+-	  *) tr -d '\r' < tmp-tm.texi > tmp2-tm.texi ;; \
+-	esac
+-	mv tmp2-tm.texi tmp-tm.texi
+-	$(SHELL) $(srcdir)/../move-if-change tmp-tm.texi tm.texi
+-	@if cmp -s $(srcdir)/doc/tm.texi tm.texi; then \
+-	  $(STAMP) $@; \
+-	elif test $(srcdir)/doc/tm.texi -nt $(srcdir)/doc/tm.texi.in \
+-	  && ( test $(srcdir)/doc/tm.texi -nt $(srcdir)/target.def \
+-	    || test $(srcdir)/doc/tm.texi -nt $(srcdir)/c-family/c-target.def \
+-	    || test $(srcdir)/doc/tm.texi -nt $(srcdir)/common/common-target.def \
+-	  ); then \
+-	  echo >&2 ; \
+-	  echo You should edit $(srcdir)/doc/tm.texi.in rather than $(srcdir)/doc/tm.texi . >&2 ; \
+-	  false; \
+-	else \
+-	  echo >&2 ; \
+-	  echo Verify that you have permission to grant a GFDL license for all >&2 ; \
+-	  echo new text in tm.texi, then copy it to $(srcdir)/doc/tm.texi. >&2 ; \
+-	  false; \
+-	fi
++	cat $(srcdir)/doc/tm.texi.in > tmp-tm.texi
++	$(STAMP) $@
+ 
+ gimple-match.c: s-match gimple-match-head.c ; @true
+ generic-match.c: s-match generic-match-head.c ; @true
diff --git a/debian/patches/gcc-hash-style-both.diff b/debian/patches/gcc-hash-style-both.diff
new file mode 100644
index 0000000..175abe8
--- /dev/null
+++ b/debian/patches/gcc-hash-style-both.diff
@@ -0,0 +1,167 @@
+# DP: Link using --hash-style=both (alpha, amd64, armel, armhf, ia64, i386, powerpc, ppc64, s390, sparc)
+
+2006-07-11  Jakub Jelinek  <jakub at redhat.com>
+
+	* config/i386/linux.h (LINK_SPEC): Add --hash-style=both.
+	* config/i386/linux64.h (LINK_SPEC): Likewise.
+	* config/rs6000/sysv4.h (LINK_OS_LINUX_SPEC): Likewise.
+	* config/rs6000/linux64.h (LINK_OS_LINUX_SPEC32,
+	LINK_OS_LINUX_SPEC64): Likewise.
+	* config/s390/linux.h (LINK_SPEC): Likewise.
+	* config/ia64/linux.h (LINK_SPEC): Likewise.
+	* config/sparc/linux.h (LINK_SPEC): Likewise.
+	* config/sparc/linux64.h (LINK_SPEC, LINK_ARCH32_SPEC,
+	LINK_ARCH64_SPEC): Likewise.
+	* config/alpha/linux-elf.h (LINK_SPEC): Likewise.
+
+2009-12-21  Matthias Klose  <doko at ubuntu.com>
+
+	* config/arm/linux-elf.h (LINK_SPEC): Add --hash-style=both.
+
+2012-11-17  Matthias Klose  <doko at ubuntu.com>
+
+	* config/aarch64/aarch64-linux.h (LINK_SPEC): Add --hash-style=both.
+	
+---
+ gcc/config/alpha/linux-elf.h |    2 +-
+ gcc/config/i386/linux.h      |    2 +-
+ gcc/config/i386/linux64.h    |    2 +-
+ gcc/config/ia64/linux.h      |    2 +-
+ gcc/config/rs6000/linux64.h  |    4 ++--
+ gcc/config/rs6000/sysv4.h    |    2 +-
+ gcc/config/s390/linux.h      |    2 +-
+ gcc/config/sparc/linux.h     |    2 +-
+ 8 files changed, 9 insertions(+), 9 deletions(-)
+
+Index: b/src/gcc/config/alpha/linux-elf.h
+===================================================================
+--- a/src/gcc/config/alpha/linux-elf.h
++++ b/src/gcc/config/alpha/linux-elf.h
+@@ -37,7 +37,7 @@
+ 
+ #define ELF_DYNAMIC_LINKER	GNU_USER_DYNAMIC_LINKER
+ 
+-#define LINK_SPEC "-m elf64alpha %{G*} %{relax:-relax}		\
++#define LINK_SPEC "-m elf64alpha --hash-style=both %{G*} %{relax:-relax}	\
+   %{O*:-O3} %{!O*:-O1}						\
+   %{shared:-shared}						\
+   %{!shared:							\
+Index: b/src/gcc/config/ia64/linux.h
+===================================================================
+--- a/src/gcc/config/ia64/linux.h
++++ b/src/gcc/config/ia64/linux.h
+@@ -58,7 +58,7 @@
+ #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux-ia64.so.2"
+ 
+ #undef LINK_SPEC
+-#define LINK_SPEC "\
++#define LINK_SPEC " --hash-style=both \
+   %{shared:-shared} \
+   %{!shared: \
+     %{!static: \
+Index: b/src/gcc/config/rs6000/linux64.h
+===================================================================
+--- a/src/gcc/config/rs6000/linux64.h
++++ b/src/gcc/config/rs6000/linux64.h
+@@ -385,11 +385,11 @@
+ 					   " -m elf64ppc")
+ #endif
+ 
+-#define LINK_OS_LINUX_SPEC32 LINK_OS_LINUX_EMUL32 " %{!shared: %{!static: \
++#define LINK_OS_LINUX_SPEC32 LINK_OS_LINUX_EMUL32 " --hash-style=both %{!shared: %{!static: \
+   %{rdynamic:-export-dynamic} \
+   -dynamic-linker " GNU_USER_DYNAMIC_LINKER32 "}}"
+ 
+-#define LINK_OS_LINUX_SPEC64 LINK_OS_LINUX_EMUL64 " %{!shared: %{!static: \
++#define LINK_OS_LINUX_SPEC64 LINK_OS_LINUX_EMUL64 " --hash-style=both %{!shared: %{!static: \
+   %{rdynamic:-export-dynamic} \
+   -dynamic-linker " GNU_USER_DYNAMIC_LINKER64 "}}"
+ 
+Index: b/src/gcc/config/rs6000/sysv4.h
+===================================================================
+--- a/src/gcc/config/rs6000/sysv4.h
++++ b/src/gcc/config/rs6000/sysv4.h
+@@ -788,7 +788,7 @@
+ #define GNU_USER_DYNAMIC_LINKER \
+   CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER, UCLIBC_DYNAMIC_LINKER)
+ 
+-#define LINK_OS_LINUX_SPEC "-m elf32ppclinux %{!shared: %{!static: \
++#define LINK_OS_LINUX_SPEC "-m elf32ppclinux --hash-style=both %{!shared: %{!static: \
+   %{rdynamic:-export-dynamic} \
+   -dynamic-linker " GNU_USER_DYNAMIC_LINKER "}}"
+ 
+Index: b/src/gcc/config/s390/linux.h
+===================================================================
+--- a/src/gcc/config/s390/linux.h
++++ b/src/gcc/config/s390/linux.h
+@@ -65,7 +65,7 @@
+ 
+ #undef  LINK_SPEC
+ #define LINK_SPEC \
+-  "%{m31:-m elf_s390}%{m64:-m elf64_s390} \
++  "%{m31:-m elf_s390}%{m64:-m elf64_s390} --hash-style=both \
+    %{shared:-shared} \
+    %{!shared: \
+       %{static:-static} \
+Index: b/src/gcc/config/sparc/linux.h
+===================================================================
+--- a/src/gcc/config/sparc/linux.h
++++ b/src/gcc/config/sparc/linux.h
+@@ -86,7 +86,7 @@
+ #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2"
+ 
+ #undef  LINK_SPEC
+-#define LINK_SPEC "-m elf32_sparc %{shared:-shared} \
++#define LINK_SPEC "-m elf32_sparc --hash-style=both %{shared:-shared} \
+   %{!mno-relax:%{!r:-relax}} \
+   %{!shared: \
+     %{!static: \
+Index: b/src/gcc/config/arm/linux-elf.h
+===================================================================
+--- a/src/gcc/config/arm/linux-elf.h
++++ b/src/gcc/config/arm/linux-elf.h
+@@ -67,6 +67,7 @@
+      %{rdynamic:-export-dynamic} \
+      -dynamic-linker " GNU_USER_DYNAMIC_LINKER "} \
+    -X \
++   --hash-style=both \
+    %{mbig-endian:-EB} %{mlittle-endian:-EL}" \
+    SUBTARGET_EXTRA_LINK_SPEC
+ 
+Index: b/src/gcc/config/i386/gnu-user.h
+===================================================================
+--- a/src/gcc/config/i386/gnu-user.h
++++ b/src/gcc/config/i386/gnu-user.h
+@@ -74,7 +74,7 @@
+   { "link_emulation", GNU_USER_LINK_EMULATION },\
+   { "dynamic_linker", GNU_USER_DYNAMIC_LINKER }
+ 
+-#define GNU_USER_TARGET_LINK_SPEC "-m %(link_emulation) %{shared:-shared} \
++#define GNU_USER_TARGET_LINK_SPEC "-m %(link_emulation) --hash-style=both %{shared:-shared} \
+   %{!shared: \
+     %{!static: \
+       %{rdynamic:-export-dynamic} \
+Index: b/src/gcc/config/i386/gnu-user64.h
+===================================================================
+--- a/src/gcc/config/i386/gnu-user64.h
++++ b/src/gcc/config/i386/gnu-user64.h
+@@ -56,6 +56,7 @@
+                   "%{" SPEC_64 ":-m " GNU_USER_LINK_EMULATION64 "} \
+                    %{" SPEC_32 ":-m " GNU_USER_LINK_EMULATION32 "} \
+                    %{" SPEC_X32 ":-m " GNU_USER_LINK_EMULATIONX32 "} \
++  --hash-style=both \
+   %{shared:-shared} \
+   %{!shared: \
+     %{!static: \
+Index: b/src/gcc/config/aarch64/aarch64-linux.h
+===================================================================
+--- a/src/gcc/config/aarch64/aarch64-linux.h
++++ b/src/gcc/config/aarch64/aarch64-linux.h
+@@ -24,6 +24,7 @@
+ #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux-aarch64.so.1"
+ 
+ #define LINUX_TARGET_LINK_SPEC  "%{h*}		\
++   --hash-style=both				\
+    %{static:-Bstatic}				\
+    %{shared:-shared}				\
+    %{symbolic:-Bsymbolic}			\
diff --git a/debian/patches/gcc-hash-style-gnu.diff b/debian/patches/gcc-hash-style-gnu.diff
new file mode 100644
index 0000000..eeeff37
--- /dev/null
+++ b/debian/patches/gcc-hash-style-gnu.diff
@@ -0,0 +1,168 @@
+# DP: Link using --hash-style=gnu (aarch64, alpha, amd64, armel, armhf, ia64,
+# DP: i386, powerpc, ppc64, s390, sparc)
+
+2006-07-11  Jakub Jelinek  <jakub at redhat.com>
+
+	* config/i386/linux.h (LINK_SPEC): Add --hash-style=gnu.
+	* config/i386/linux64.h (LINK_SPEC): Likewise.
+	* config/rs6000/sysv4.h (LINK_OS_LINUX_SPEC): Likewise.
+	* config/rs6000/linux64.h (LINK_OS_LINUX_SPEC32,
+	LINK_OS_LINUX_SPEC64): Likewise.
+	* config/s390/linux.h (LINK_SPEC): Likewise.
+	* config/ia64/linux.h (LINK_SPEC): Likewise.
+	* config/sparc/linux.h (LINK_SPEC): Likewise.
+	* config/sparc/linux64.h (LINK_SPEC, LINK_ARCH32_SPEC,
+	LINK_ARCH64_SPEC): Likewise.
+	* config/alpha/linux-elf.h (LINK_SPEC): Likewise.
+
+2009-12-21  Matthias Klose  <doko at ubuntu.com>
+
+	* config/arm/linux-elf.h (LINK_SPEC): Add --hash-style=gnu.
+
+2012-11-17  Matthias Klose  <doko at ubuntu.com>
+
+	* config/aarch64/aarch64-linux.h (LINK_SPEC): Add --hash-style=gnu.
+	
+---
+ gcc/config/alpha/linux-elf.h |    2 +-
+ gcc/config/i386/linux.h      |    2 +-
+ gcc/config/i386/linux64.h    |    2 +-
+ gcc/config/ia64/linux.h      |    2 +-
+ gcc/config/rs6000/linux64.h  |    4 ++--
+ gcc/config/rs6000/sysv4.h    |    2 +-
+ gcc/config/s390/linux.h      |    2 +-
+ gcc/config/sparc/linux.h     |    2 +-
+ 8 files changed, 9 insertions(+), 9 deletions(-)
+
+Index: b/src/gcc/config/alpha/linux-elf.h
+===================================================================
+--- a/src/gcc/config/alpha/linux-elf.h
++++ b/src/gcc/config/alpha/linux-elf.h
+@@ -37,7 +37,7 @@ along with GCC; see the file COPYING3.
+ 
+ #define ELF_DYNAMIC_LINKER	GNU_USER_DYNAMIC_LINKER
+ 
+-#define LINK_SPEC "-m elf64alpha %{G*} %{relax:-relax}		\
++#define LINK_SPEC "-m elf64alpha --hash-style=gnu %{G*} %{relax:-relax}	\
+   %{O*:-O3} %{!O*:-O1}						\
+   %{shared:-shared}						\
+   %{!shared:							\
+Index: b/src/gcc/config/ia64/linux.h
+===================================================================
+--- a/src/gcc/config/ia64/linux.h
++++ b/src/gcc/config/ia64/linux.h
+@@ -58,7 +58,7 @@ do {						\
+ #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux-ia64.so.2"
+ 
+ #undef LINK_SPEC
+-#define LINK_SPEC "\
++#define LINK_SPEC " --hash-style=gnu \
+   %{shared:-shared} \
+   %{!shared: \
+     %{!static: \
+Index: b/src/gcc/config/rs6000/linux64.h
+===================================================================
+--- a/src/gcc/config/rs6000/linux64.h
++++ b/src/gcc/config/rs6000/linux64.h
+@@ -396,11 +396,11 @@ extern int dot_symbols;
+ 					   " -m elf64ppc")
+ #endif
+ 
+-#define LINK_OS_LINUX_SPEC32 LINK_OS_LINUX_EMUL32 " %{!shared: %{!static: \
++#define LINK_OS_LINUX_SPEC32 LINK_OS_LINUX_EMUL32 " --hash-style=gnu %{!shared: %{!static: \
+   %{rdynamic:-export-dynamic} \
+   -dynamic-linker " GNU_USER_DYNAMIC_LINKER32 "}}"
+ 
+-#define LINK_OS_LINUX_SPEC64 LINK_OS_LINUX_EMUL64 " %{!shared: %{!static: \
++#define LINK_OS_LINUX_SPEC64 LINK_OS_LINUX_EMUL64 " --hash-style=gnu %{!shared: %{!static: \
+   %{rdynamic:-export-dynamic} \
+   -dynamic-linker " GNU_USER_DYNAMIC_LINKER64 "}}"
+ 
+Index: b/src/gcc/config/rs6000/sysv4.h
+===================================================================
+--- a/src/gcc/config/rs6000/sysv4.h
++++ b/src/gcc/config/rs6000/sysv4.h
+@@ -769,7 +769,7 @@ ENDIAN_SELECT(" -mbig", " -mlittle", DEF
+ #define GNU_USER_DYNAMIC_LINKER \
+   CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER, UCLIBC_DYNAMIC_LINKER)
+ 
+-#define LINK_OS_LINUX_SPEC "-m elf32ppclinux %{!shared: %{!static: \
++#define LINK_OS_LINUX_SPEC "-m elf32ppclinux --hash-style=gnu %{!shared: %{!static: \
+   %{rdynamic:-export-dynamic} \
+   -dynamic-linker " GNU_USER_DYNAMIC_LINKER "}}"
+ 
+Index: b/src/gcc/config/s390/linux.h
+===================================================================
+--- a/src/gcc/config/s390/linux.h
++++ b/src/gcc/config/s390/linux.h
+@@ -65,7 +65,7 @@ along with GCC; see the file COPYING3.
+ 
+ #undef  LINK_SPEC
+ #define LINK_SPEC \
+-  "%{m31:-m elf_s390}%{m64:-m elf64_s390} \
++  "%{m31:-m elf_s390}%{m64:-m elf64_s390} --hash-style=gnu \
+    %{shared:-shared} \
+    %{!shared: \
+       %{static:-static} \
+Index: b/src/gcc/config/sparc/linux.h
+===================================================================
+--- a/src/gcc/config/sparc/linux.h
++++ b/src/gcc/config/sparc/linux.h
+@@ -86,7 +86,7 @@ extern const char *host_detect_local_cpu
+ #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2"
+ 
+ #undef  LINK_SPEC
+-#define LINK_SPEC "-m elf32_sparc %{shared:-shared} \
++#define LINK_SPEC "-m elf32_sparc --hash-style=gnu %{shared:-shared} \
+   %{!mno-relax:%{!r:-relax}} \
+   %{!shared: \
+     %{!static: \
+Index: b/src/gcc/config/arm/linux-elf.h
+===================================================================
+--- a/src/gcc/config/arm/linux-elf.h
++++ b/src/gcc/config/arm/linux-elf.h
+@@ -72,6 +72,7 @@
+      %{rdynamic:-export-dynamic} \
+      %{!shared:-dynamic-linker " GNU_USER_DYNAMIC_LINKER "}} \
+    -X \
++   --hash-style=gnu \
+    %{mbig-endian:-EB} %{mlittle-endian:-EL}" \
+    SUBTARGET_EXTRA_LINK_SPEC
+ 
+Index: b/src/gcc/config/i386/gnu-user.h
+===================================================================
+--- a/src/gcc/config/i386/gnu-user.h
++++ b/src/gcc/config/i386/gnu-user.h
+@@ -74,7 +74,7 @@ along with GCC; see the file COPYING3.
+   { "link_emulation", GNU_USER_LINK_EMULATION },\
+   { "dynamic_linker", GNU_USER_DYNAMIC_LINKER }
+ 
+-#define GNU_USER_TARGET_LINK_SPEC "-m %(link_emulation) %{shared:-shared} \
++#define GNU_USER_TARGET_LINK_SPEC "-m %(link_emulation) --hash-style=gnu %{shared:-shared} \
+   %{!shared: \
+     %{!static: \
+       %{rdynamic:-export-dynamic} \
+Index: b/src/gcc/config/i386/gnu-user64.h
+===================================================================
+--- a/src/gcc/config/i386/gnu-user64.h
++++ b/src/gcc/config/i386/gnu-user64.h
+@@ -56,6 +56,7 @@ see the files COPYING3 and COPYING.RUNTI
+                   "%{" SPEC_64 ":-m " GNU_USER_LINK_EMULATION64 "} \
+                    %{" SPEC_32 ":-m " GNU_USER_LINK_EMULATION32 "} \
+                    %{" SPEC_X32 ":-m " GNU_USER_LINK_EMULATIONX32 "} \
++  --hash-style=gnu \
+   %{shared:-shared} \
+   %{!shared: \
+     %{!static: \
+Index: b/src/gcc/config/aarch64/aarch64-linux.h
+===================================================================
+--- a/src/gcc/config/aarch64/aarch64-linux.h
++++ b/src/gcc/config/aarch64/aarch64-linux.h
+@@ -32,6 +32,7 @@
+ #define CPP_SPEC "%{pthread:-D_REENTRANT}"
+ 
+ #define LINUX_TARGET_LINK_SPEC  "%{h*}		\
++   --hash-style=gnu				\
+    %{static:-Bstatic}				\
+    %{shared:-shared}				\
+    %{symbolic:-Bsymbolic}			\
diff --git a/debian/patches/gcc-ia64-bootstrap-ignore.diff b/debian/patches/gcc-ia64-bootstrap-ignore.diff
new file mode 100644
index 0000000..39f7528
--- /dev/null
+++ b/debian/patches/gcc-ia64-bootstrap-ignore.diff
@@ -0,0 +1,17 @@
+# DP: Ignore bootstrap comparison failure on ia64. Filed upstream as
+# DP: PR middle-end/65874.
+
+Index: b/src/configure.ac
+===================================================================
+--- a/src/configure.ac
++++ b/src/configure.ac
+@@ -3550,6 +3550,9 @@ fi
+ 
+ compare_exclusions="gcc/cc*-checksum\$(objext) | gcc/ada/*tools/*"
+ case "$target" in
++  ia64-*linux-gnu)
++    compare_exclusions="gcc/cc*-checksum\$(objext) | gcc/ada/*tools/* | gcc/ira.o"
++    ;;
+   hppa*64*-*-hpux*) ;;
+   hppa*-*-hpux*) compare_exclusions="gcc/cc*-checksum\$(objext) | */libgcc/lib2funcs* | gcc/ada/*tools/*" ;;
+   powerpc*-ibm-aix*) compare_exclusions="gcc/cc*-checksum\$(objext) | gcc/ada/*tools/* | *libgomp*\$(objext)" ;;
diff --git a/debian/patches/gcc-ice-apport.diff b/debian/patches/gcc-ice-apport.diff
new file mode 100644
index 0000000..a217fdb
--- /dev/null
+++ b/debian/patches/gcc-ice-apport.diff
@@ -0,0 +1,24 @@
+# DP: Report an ICE to apport (if apport is available
+# DP: and the environment variable GCC_NOAPPORT is not set)
+
+Index: b/src/gcc/gcc.c
+===================================================================
+--- a/src/gcc/gcc.c
++++ b/src/gcc/gcc.c
+@@ -6634,6 +6634,16 @@ do_report_bug (const char **new_argv, co
+ 	  fflush(stderr);
+ 	  free(cmd);
+ 	}
++      if (!getenv ("GCC_NOAPPORT")
++	  && !access ("/usr/share/apport/gcc_ice_hook", R_OK | X_OK))
++	{
++	  char *cmd = XNEWVEC (char, 50 + strlen (*out_file)
++			       + strlen (new_argv[0]));
++	  sprintf (cmd, "/usr/share/apport/gcc_ice_hook %s %s",
++		   new_argv[0], *out_file);
++	  system (cmd);
++	  free (cmd);
++	}
+       /* Make sure it is not deleted.  */
+       free (*out_file);
+       *out_file = NULL;
diff --git a/debian/patches/gcc-ice-dump.diff b/debian/patches/gcc-ice-dump.diff
new file mode 100644
index 0000000..d39ab73
--- /dev/null
+++ b/debian/patches/gcc-ice-dump.diff
@@ -0,0 +1,41 @@
+# DP: For ICEs, dump the preprocessed source file to stderr
+# DP: when in a distro build environment.
+
+Index: b/src/gcc/gcc.c
+===================================================================
+--- a/src/gcc/gcc.c
++++ b/src/gcc/gcc.c
+@@ -2985,7 +2985,8 @@ execute (void)
+ 	    /* For ICEs in cc1, cc1obj, cc1plus see if it is
+ 	       reproducible or not.  */
+ 	    const char *p;
+-	    if (flag_report_bug
++	    char *deb_build_options = getenv("DEB_BUILD_OPTIONS");
++	    if ((flag_report_bug || deb_build_options)
+ 		&& WEXITSTATUS (status) == ICE_EXIT_CODE
+ 		&& i == 0
+ 		&& (p = strrchr (commands[0].argv[0], DIR_SEPARATOR))
+@@ -6616,8 +6617,23 @@ do_report_bug (const char **new_argv, co
+ 
+   if (status == ATTEMPT_STATUS_SUCCESS)
+     {
++      char *deb_build_options = getenv("DEB_BUILD_OPTIONS");
++
+       fnotice (stderr, "Preprocessed source stored into %s file,"
+ 	       " please attach this to your bugreport.\n", *out_file);
++      if (deb_build_options)
++	{
++	  char *cmd = XNEWVEC (char, 50 + strlen (*out_file));
++
++	  sprintf(cmd, "/bin/cat %s >&2", *out_file);
++	  fprintf(stderr, "=== BEGIN GCC DUMP ===\n");
++	  fflush(stderr);
++	  system(cmd);
++	  fflush(stderr);
++	  fprintf(stderr, "=== END GCC DUMP ===\n");
++	  fflush(stderr);
++	  free(cmd);
++	}
+       /* Make sure it is not deleted.  */
+       free (*out_file);
+       *out_file = NULL;
diff --git a/debian/patches/gcc-linaro-doc.diff b/debian/patches/gcc-linaro-doc.diff
new file mode 100644
index 0000000..4c67822
--- /dev/null
+++ b/debian/patches/gcc-linaro-doc.diff
@@ -0,0 +1,7292 @@
+# DP: Changes for the Linaro 5-2015.11 release (documentation).
+
+--- a/src/gcc/doc/extend.texi
++++ b/src/gcc/doc/extend.texi
+@@ -2147,62 +2147,84 @@ the enclosing block.
+ @section Declaring Attributes of Functions
+ @cindex function attributes
+ @cindex declaring attributes of functions
+- at cindex functions that never return
+- at cindex functions that return more than once
+- at cindex functions that have no side effects
+- at cindex functions in arbitrary sections
+- at cindex functions that behave like malloc
+ @cindex @code{volatile} applied to function
+ @cindex @code{const} applied to function
+- at cindex functions with @code{printf}, @code{scanf}, @code{strftime} or @code{strfmon} style arguments
+- at cindex functions with non-null pointer arguments
+- at cindex functions that are passed arguments in registers on x86-32
+- at cindex functions that pop the argument stack on x86-32
+- at cindex functions that do not pop the argument stack on x86-32
+- at cindex functions that have different compilation options on x86-32
+- at cindex functions that have different optimization options
+- at cindex functions that are dynamically resolved
+ 
+-In GNU C, you declare certain things about functions called in your program
+-which help the compiler optimize function calls and check your code more
+-carefully.
+-
+-The keyword @code{__attribute__} allows you to specify special
+-attributes when making a declaration.  This keyword is followed by an
+-attribute specification inside double parentheses.  The following
+-attributes are currently defined for functions on all targets:
+- at code{aligned}, @code{alloc_size}, @code{alloc_align}, @code{assume_aligned},
+- at code{noreturn}, @code{returns_twice}, @code{noinline}, @code{noclone},
+- at code{no_icf},
+- at code{always_inline}, @code{flatten}, @code{pure}, @code{const},
+- at code{nothrow}, @code{sentinel}, @code{format}, @code{format_arg},
+- at code{no_instrument_function}, @code{no_split_stack},
+- at code{section}, @code{constructor},
+- at code{destructor}, @code{used}, @code{unused}, @code{deprecated},
+- at code{weak}, @code{malloc}, @code{alias}, @code{ifunc},
+- at code{warn_unused_result}, @code{nonnull},
+- at code{returns_nonnull}, @code{gnu_inline},
+- at code{externally_visible}, @code{hot}, @code{cold}, @code{artificial},
+- at code{no_sanitize_address}, @code{no_address_safety_analysis},
+- at code{no_sanitize_thread},
+- at code{no_sanitize_undefined}, @code{no_reorder}, @code{bnd_legacy},
+- at code{bnd_instrument}, @code{stack_protect},
+- at code{error} and @code{warning}.
+-Several other attributes are defined for functions on particular
+-target systems.  Other attributes, including @code{section} are
+-supported for variables declarations (@pxref{Variable Attributes}),
+-labels (@pxref{Label Attributes})
+-and for types (@pxref{Type Attributes}).
++In GNU C, you can use function attributes to declare certain things
++about functions called in your program which help the compiler
++optimize calls and check your code more carefully.  For example, you
++can use attributes to declare that a function never returns
++(@code{noreturn}), returns a value depending only on its arguments
++(@code{pure}), or has @code{printf}-style arguments (@code{format}).
++
++You can also use attributes to control memory placement, code
++generation options or call/return conventions within the function
++being annotated.  Many of these attributes are target-specific.  For
++example, many targets support attributes for defining interrupt
++handler functions, which typically must follow special register usage
++and return conventions.
++
++Function attributes are introduced by the @code{__attribute__} keyword
++on a declaration, followed by an attribute specification inside double
++parentheses.  You can specify multiple attributes in a declaration by
++separating them by commas within the double parentheses or by
++immediately following an attribute declaration with another attribute
++declaration.  @xref{Attribute Syntax}, for the exact rules on
++attribute syntax and placement.
++
++GCC also supports attributes on
++variable declarations (@pxref{Variable Attributes}),
++labels (@pxref{Label Attributes}),
++and types (@pxref{Type Attributes}).
++
++There is some overlap between the purposes of attributes and pragmas
++(@pxref{Pragmas,,Pragmas Accepted by GCC}).  It has been
++found convenient to use @code{__attribute__} to achieve a natural
++attachment of attributes to their corresponding declarations, whereas
++ at code{#pragma} is of use for compatibility with other compilers
++or constructs that do not naturally form part of the grammar.
+ 
++In addition to the attributes documented here,
+ GCC plugins may provide their own attributes.
+ 
+-You may also specify attributes with @samp{__} preceding and following
+-each keyword.  This allows you to use them in header files without
+-being concerned about a possible macro of the same name.  For example,
+-you may use @code{__noreturn__} instead of @code{noreturn}.
++ at menu
++* Common Function Attributes::
++* AArch64 Function Attributes::
++* ARC Function Attributes::
++* ARM Function Attributes::
++* AVR Function Attributes::
++* Blackfin Function Attributes::
++* CR16 Function Attributes::
++* Epiphany Function Attributes::
++* H8/300 Function Attributes::
++* IA-64 Function Attributes::
++* M32C Function Attributes::
++* M32R/D Function Attributes::
++* m68k Function Attributes::
++* MCORE Function Attributes::
++* MeP Function Attributes::
++* MicroBlaze Function Attributes::
++* Microsoft Windows Function Attributes::
++* MIPS Function Attributes::
++* MSP430 Function Attributes::
++* NDS32 Function Attributes::
++* Nios II Function Attributes::
++* PowerPC Function Attributes::
++* RL78 Function Attributes::
++* RX Function Attributes::
++* S/390 Function Attributes::
++* SH Function Attributes::
++* SPU Function Attributes::
++* Symbian OS Function Attributes::
++* Visium Function Attributes::
++* x86 Function Attributes::
++* Xstormy16 Function Attributes::
++ at end menu
+ 
+- at xref{Attribute Syntax}, for details of the exact syntax for using
+-attributes.
++ at node Common Function Attributes
++ at subsection Common Function Attributes
++
++The following attributes are supported on most targets.
+ 
+ @table @code
+ @c Keep this table alphabetized by attribute name.  Treat _ as space.
+@@ -2222,7 +2244,8 @@ defines @samp{f} to be a weak alias for @samp{__f}.  In C++, the
+ mangled name for the target must be used.  It is an error if @samp{__f}
+ is not defined in the same translation unit.
+ 
+-Not all target machines support this attribute.
++This attribute requires assembler and object file support,
++and may not be available on all targets.
+ 
+ @item aligned (@var{alignment})
+ @cindex @code{aligned} function attribute
+@@ -2245,31 +2268,6 @@ further information.
+ The @code{aligned} attribute can also be used for variables and fields
+ (@pxref{Variable Attributes}.)
+ 
+- at item alloc_size
+- at cindex @code{alloc_size} function attribute
+-The @code{alloc_size} attribute is used to tell the compiler that the
+-function return value points to memory, where the size is given by
+-one or two of the functions parameters.  GCC uses this
+-information to improve the correctness of @code{__builtin_object_size}.
+-
+-The function parameter(s) denoting the allocated size are specified by
+-one or two integer arguments supplied to the attribute.  The allocated size
+-is either the value of the single function argument specified or the product
+-of the two function arguments specified.  Argument numbering starts at
+-one.
+-
+-For instance,
+-
+- at smallexample
+-void* my_calloc(size_t, size_t) __attribute__((alloc_size(1,2)))
+-void* my_realloc(void*, size_t) __attribute__((alloc_size(2)))
+- at end smallexample
+-
+- at noindent
+-declares that @code{my_calloc} returns memory of the size given by
+-the product of parameter 1 and 2 and that @code{my_realloc} returns memory
+-of the size given by parameter 2.
+-
+ @item alloc_align
+ @cindex @code{alloc_align} function attribute
+ The @code{alloc_align} attribute is used to tell the compiler that the
+@@ -2291,24 +2289,30 @@ void* my_memalign(size_t, size_t) __attribute__((alloc_align(1)))
+ declares that @code{my_memalign} returns memory with minimum alignment
+ given by parameter 1.
+ 
+- at item assume_aligned
+- at cindex @code{assume_aligned} function attribute
+-The @code{assume_aligned} attribute is used to tell the compiler that the
+-function return value points to memory, where the returned pointer minimum
+-alignment is given by the first argument.
+-If the attribute has two arguments, the second argument is misalignment offset.
++ at item alloc_size
++ at cindex @code{alloc_size} function attribute
++The @code{alloc_size} attribute is used to tell the compiler that the
++function return value points to memory, where the size is given by
++one or two of the functions parameters.  GCC uses this
++information to improve the correctness of @code{__builtin_object_size}.
+ 
+-For instance
++The function parameter(s) denoting the allocated size are specified by
++one or two integer arguments supplied to the attribute.  The allocated size
++is either the value of the single function argument specified or the product
++of the two function arguments specified.  Argument numbering starts at
++one.
++
++For instance,
+ 
+ @smallexample
+-void* my_alloc1(size_t) __attribute__((assume_aligned(16)))
+-void* my_alloc2(size_t) __attribute__((assume_aligned(32, 8)))
++void* my_calloc(size_t, size_t) __attribute__((alloc_size(1,2)))
++void* my_realloc(void*, size_t) __attribute__((alloc_size(2)))
+ @end smallexample
+ 
+ @noindent
+-declares that @code{my_alloc1} returns 16-byte aligned pointer and
+-that @code{my_alloc2} returns a pointer whose value modulo 32 is equal
+-to 8.
++declares that @code{my_calloc} returns memory of the size given by
++the product of parameter 1 and 2 and that @code{my_realloc} returns memory
++of the size given by parameter 2.
+ 
+ @item always_inline
+ @cindex @code{always_inline} function attribute
+@@ -2320,44 +2324,6 @@ Note that if such a function is called indirectly the compiler may
+ or may not inline it depending on optimization level and a failure
+ to inline an indirect call may or may not be diagnosed.
+ 
+- at item gnu_inline
+- at cindex @code{gnu_inline} function attribute
+-This attribute should be used with a function that is also declared
+-with the @code{inline} keyword.  It directs GCC to treat the function
+-as if it were defined in gnu90 mode even when compiling in C99 or
+-gnu99 mode.
+-
+-If the function is declared @code{extern}, then this definition of the
+-function is used only for inlining.  In no case is the function
+-compiled as a standalone function, not even if you take its address
+-explicitly.  Such an address becomes an external reference, as if you
+-had only declared the function, and had not defined it.  This has
+-almost the effect of a macro.  The way to use this is to put a
+-function definition in a header file with this attribute, and put
+-another copy of the function, without @code{extern}, in a library
+-file.  The definition in the header file causes most calls to the
+-function to be inlined.  If any uses of the function remain, they
+-refer to the single copy in the library.  Note that the two
+-definitions of the functions need not be precisely the same, although
+-if they do not have the same effect your program may behave oddly.
+-
+-In C, if the function is neither @code{extern} nor @code{static}, then
+-the function is compiled as a standalone function, as well as being
+-inlined where possible.
+-
+-This is how GCC traditionally handled functions declared
+- at code{inline}.  Since ISO C99 specifies a different semantics for
+- at code{inline}, this function attribute is provided as a transition
+-measure and as a useful feature in its own right.  This attribute is
+-available in GCC 4.1.3 and later.  It is available if either of the
+-preprocessor macros @code{__GNUC_GNU_INLINE__} or
+- at code{__GNUC_STDC_INLINE__} are defined.  @xref{Inline,,An Inline
+-Function is As Fast As a Macro}.
+-
+-In C++, this attribute does not depend on @code{extern} in any way,
+-but it still requires the @code{inline} keyword to enable its special
+-behavior.
+-
+ @item artificial
+ @cindex @code{artificial} function attribute
+ This attribute is useful for small inline wrappers that if possible
+@@ -2366,54 +2332,56 @@ info format it either means marking the function as artificial
+ or using the caller location for all instructions within the inlined
+ body.
+ 
+- at item bank_switch
+- at cindex @code{bank_switch} function attribute, M32C
+-When added to an interrupt handler with the M32C port, causes the
+-prologue and epilogue to use bank switching to preserve the registers
+-rather than saving them on the stack.
++ at item assume_aligned
++ at cindex @code{assume_aligned} function attribute
++The @code{assume_aligned} attribute is used to tell the compiler that the
++function return value points to memory, where the returned pointer minimum
++alignment is given by the first argument.
++If the attribute has two arguments, the second argument is misalignment offset.
+ 
+- at item flatten
+- at cindex @code{flatten} function attribute
+-Generally, inlining into a function is limited.  For a function marked with
+-this attribute, every call inside this function is inlined, if possible.
+-Whether the function itself is considered for inlining depends on its size and
+-the current inlining parameters.
++For instance
+ 
+- at item error ("@var{message}")
+- at cindex @code{error} function attribute
+-If this attribute is used on a function declaration and a call to such a function
+-is not eliminated through dead code elimination or other optimizations, an error
+-that includes @var{message} is diagnosed.  This is useful
+-for compile-time checking, especially together with @code{__builtin_constant_p}
+-and inline functions where checking the inline function arguments is not
+-possible through @code{extern char [(condition) ? 1 : -1];} tricks.
+-While it is possible to leave the function undefined and thus invoke
+-a link failure, when using this attribute the problem is diagnosed
+-earlier and with exact location of the call even in presence of inline
+-functions or when not emitting debugging information.
++ at smallexample
++void* my_alloc1(size_t) __attribute__((assume_aligned(16)))
++void* my_alloc2(size_t) __attribute__((assume_aligned(32, 8)))
++ at end smallexample
+ 
+- at item warning ("@var{message}")
+- at cindex @code{warning} function attribute
+-If this attribute is used on a function declaration and a call to such a function
+-is not eliminated through dead code elimination or other optimizations, a warning
+-that includes @var{message} is diagnosed.  This is useful
+-for compile-time checking, especially together with @code{__builtin_constant_p}
+-and inline functions.  While it is possible to define the function with
+-a message in @code{.gnu.warning*} section, when using this attribute the problem
+-is diagnosed earlier and with exact location of the call even in presence
+-of inline functions or when not emitting debugging information.
++ at noindent
++declares that @code{my_alloc1} returns 16-byte aligned pointer and
++that @code{my_alloc2} returns a pointer whose value modulo 32 is equal
++to 8.
+ 
+- at item cdecl
+- at cindex @code{cdecl} function attribute, x86-32
+- at cindex functions that do pop the argument stack on x86-32
+- at opindex mrtd
+-On the x86-32 targets, the @code{cdecl} attribute causes the compiler to
+-assume that the calling function pops off the stack space used to
+-pass arguments.  This is
+-useful to override the effects of the @option{-mrtd} switch.
++ at item bnd_instrument
++ at cindex @code{bnd_instrument} function attribute
++The @code{bnd_instrument} attribute on functions is used to inform the
++compiler that the function should be instrumented when compiled
++with the @option{-fchkp-instrument-marked-only} option.
++
++ at item bnd_legacy
++ at cindex @code{bnd_legacy} function attribute
++ at cindex Pointer Bounds Checker attributes
++The @code{bnd_legacy} attribute on functions is used to inform the
++compiler that the function should not be instrumented when compiled
++with the @option{-fcheck-pointer-bounds} option.
++
++ at item cold
++ at cindex @code{cold} function attribute
++The @code{cold} attribute on functions is used to inform the compiler that
++the function is unlikely to be executed.  The function is optimized for
++size rather than speed and on many targets it is placed into a special
++subsection of the text section so all cold functions appear close together,
++improving code locality of non-cold parts of program.  The paths leading
++to calls of cold functions within code are marked as unlikely by the branch
++prediction mechanism.  It is thus useful to mark functions used to handle
++unlikely conditions, such as @code{perror}, as cold to improve optimization
++of hot functions that do call marked functions in rare occasions.
++
++When profile feedback is available, via @option{-fprofile-use}, cold functions
++are automatically detected and this attribute is ignored.
+ 
+ @item const
+ @cindex @code{const} function attribute
++ at cindex functions that have no side effects
+ Many functions do not examine any values except their arguments, and
+ have no effects except the return value.  Basically this is just slightly
+ more strict class than the @code{pure} attribute below, since function is not
+@@ -2477,184 +2445,62 @@ present.
+ The @code{deprecated} attribute can also be used for variables and
+ types (@pxref{Variable Attributes}, @pxref{Type Attributes}.)
+ 
+- at item disinterrupt
+- at cindex @code{disinterrupt} function attribute, Epiphany
+- at cindex @code{disinterrupt} function attribute, MeP
+-On Epiphany and MeP targets, this attribute causes the compiler to emit
+-instructions to disable interrupts for the duration of the given
+-function.
++ at item error ("@var{message}")
++ at itemx warning ("@var{message}")
++ at cindex @code{error} function attribute
++ at cindex @code{warning} function attribute
++If the @code{error} or @code{warning} attribute 
++is used on a function declaration and a call to such a function
++is not eliminated through dead code elimination or other optimizations, 
++an error or warning (respectively) that includes @var{message} is diagnosed.  
++This is useful
++for compile-time checking, especially together with @code{__builtin_constant_p}
++and inline functions where checking the inline function arguments is not
++possible through @code{extern char [(condition) ? 1 : -1];} tricks.
+ 
+- at item dllexport
+- at cindex @code{dllexport} function attribute
+- at cindex @code{__declspec(dllexport)}
+-On Microsoft Windows targets and Symbian OS targets the
+- at code{dllexport} attribute causes the compiler to provide a global
+-pointer to a pointer in a DLL, so that it can be referenced with the
+- at code{dllimport} attribute.  On Microsoft Windows targets, the pointer
+-name is formed by combining @code{_imp__} and the function or variable
+-name.
++While it is possible to leave the function undefined and thus invoke
++a link failure (to define the function with
++a message in @code{.gnu.warning*} section),
++when using these attributes the problem is diagnosed
++earlier and with exact location of the call even in presence of inline
++functions or when not emitting debugging information.
+ 
+-You can use @code{__declspec(dllexport)} as a synonym for
+- at code{__attribute__ ((dllexport))} for compatibility with other
+-compilers.
++ at item externally_visible
++ at cindex @code{externally_visible} function attribute
++This attribute, attached to a global variable or function, nullifies
++the effect of the @option{-fwhole-program} command-line option, so the
++object remains visible outside the current compilation unit.
+ 
+-On systems that support the @code{visibility} attribute, this
+-attribute also implies ``default'' visibility.  It is an error to
+-explicitly specify any other visibility.
++If @option{-fwhole-program} is used together with @option{-flto} and 
++ at command{gold} is used as the linker plugin, 
++ at code{externally_visible} attributes are automatically added to functions 
++(not variable yet due to a current @command{gold} issue) 
++that are accessed outside of LTO objects according to resolution file
++produced by @command{gold}.
++For other linkers that cannot generate resolution file,
++explicit @code{externally_visible} attributes are still necessary.
+ 
+-GCC's default behavior is to emit all inline functions with the
+- at code{dllexport} attribute.  Since this can cause object file-size bloat,
+-you can use @option{-fno-keep-inline-dllexport}, which tells GCC to
+-ignore the attribute for inlined functions unless the 
+- at option{-fkeep-inline-functions} flag is used instead.
++ at item flatten
++ at cindex @code{flatten} function attribute
++Generally, inlining into a function is limited.  For a function marked with
++this attribute, every call inside this function is inlined, if possible.
++Whether the function itself is considered for inlining depends on its size and
++the current inlining parameters.
+ 
+-The attribute is ignored for undefined symbols.
++ at item format (@var{archetype}, @var{string-index}, @var{first-to-check})
++ at cindex @code{format} function attribute
++ at cindex functions with @code{printf}, @code{scanf}, @code{strftime} or @code{strfmon} style arguments
++ at opindex Wformat
++The @code{format} attribute specifies that a function takes @code{printf},
++ at code{scanf}, @code{strftime} or @code{strfmon} style arguments that
++should be type-checked against a format string.  For example, the
++declaration:
+ 
+-When applied to C++ classes, the attribute marks defined non-inlined
+-member functions and static data members as exports.  Static consts
+-initialized in-class are not marked unless they are also defined
+-out-of-class.
+-
+-For Microsoft Windows targets there are alternative methods for
+-including the symbol in the DLL's export table such as using a
+- at file{.def} file with an @code{EXPORTS} section or, with GNU ld, using
+-the @option{--export-all} linker flag.
+-
+- at item dllimport
+- at cindex @code{dllimport} function attribute
+- at cindex @code{__declspec(dllimport)}
+-On Microsoft Windows and Symbian OS targets, the @code{dllimport}
+-attribute causes the compiler to reference a function or variable via
+-a global pointer to a pointer that is set up by the DLL exporting the
+-symbol.  The attribute implies @code{extern}.  On Microsoft Windows
+-targets, the pointer name is formed by combining @code{_imp__} and the
+-function or variable name.
+-
+-You can use @code{__declspec(dllimport)} as a synonym for
+- at code{__attribute__ ((dllimport))} for compatibility with other
+-compilers.
+-
+-On systems that support the @code{visibility} attribute, this
+-attribute also implies ``default'' visibility.  It is an error to
+-explicitly specify any other visibility.
+-
+-Currently, the attribute is ignored for inlined functions.  If the
+-attribute is applied to a symbol @emph{definition}, an error is reported.
+-If a symbol previously declared @code{dllimport} is later defined, the
+-attribute is ignored in subsequent references, and a warning is emitted.
+-The attribute is also overridden by a subsequent declaration as
+- at code{dllexport}.
+-
+-When applied to C++ classes, the attribute marks non-inlined
+-member functions and static data members as imports.  However, the
+-attribute is ignored for virtual methods to allow creation of vtables
+-using thunks.
+-
+-On the SH Symbian OS target the @code{dllimport} attribute also has
+-another affect---it can cause the vtable and run-time type information
+-for a class to be exported.  This happens when the class has a
+-dllimported constructor or a non-inline, non-pure virtual function
+-and, for either of those two conditions, the class also has an inline
+-constructor or destructor and has a key function that is defined in
+-the current translation unit.
+-
+-For Microsoft Windows targets the use of the @code{dllimport}
+-attribute on functions is not necessary, but provides a small
+-performance benefit by eliminating a thunk in the DLL at .  The use of the
+- at code{dllimport} attribute on imported variables can be avoided by passing the
+- at option{--enable-auto-import} switch to the GNU linker.  As with
+-functions, using the attribute for a variable eliminates a thunk in
+-the DLL at .
+-
+-One drawback to using this attribute is that a pointer to a
+- at emph{variable} marked as @code{dllimport} cannot be used as a constant
+-address. However, a pointer to a @emph{function} with the
+- at code{dllimport} attribute can be used as a constant initializer; in
+-this case, the address of a stub function in the import lib is
+-referenced.  On Microsoft Windows targets, the attribute can be disabled
+-for functions by setting the @option{-mnop-fun-dllimport} flag.
+-
+- at item exception
+- at cindex @code{exception} function attribute
+- at cindex exception handler functions, NDS32
+-Use this attribute on the NDS32 target to indicate that the specified function
+-is an exception handler.  The compiler will generate corresponding sections
+-for use in an exception handler.
+-
+- at item exception_handler
+- at cindex @code{exception_handler} function attribute
+- at cindex exception handler functions, Blackfin
+-Use this attribute on the Blackfin to indicate that the specified function
+-is an exception handler.  The compiler generates function entry and
+-exit sequences suitable for use in an exception handler when this
+-attribute is present.
+-
+- at item externally_visible
+- at cindex @code{externally_visible} function attribute
+-This attribute, attached to a global variable or function, nullifies
+-the effect of the @option{-fwhole-program} command-line option, so the
+-object remains visible outside the current compilation unit.
+-
+-If @option{-fwhole-program} is used together with @option{-flto} and 
+- at command{gold} is used as the linker plugin, 
+- at code{externally_visible} attributes are automatically added to functions 
+-(not variable yet due to a current @command{gold} issue) 
+-that are accessed outside of LTO objects according to resolution file
+-produced by @command{gold}.
+-For other linkers that cannot generate resolution file,
+-explicit @code{externally_visible} attributes are still necessary.
+-
+- at item far
+- at cindex @code{far} function attribute
+-
+-On MeP targets this causes the compiler to use a calling convention
+-that assumes the called function is too far away for the built-in
+-addressing modes.
+-
+- at item fast_interrupt
+- at cindex @code{fast_interrupt} function attribute, M32C
+- at cindex @code{fast_interrupt} function attribute, RX
+-Use this attribute on the M32C and RX ports to indicate that the specified
+-function is a fast interrupt handler.  This is just like the
+- at code{interrupt} attribute, except that @code{freit} is used to return
+-instead of @code{reit}.
+-
+- at item fastcall
+- at cindex @code{fastcall} function attribute, x86-32
+- at cindex functions that pop the argument stack on x86-32
+-On x86-32 targets, the @code{fastcall} attribute causes the compiler to
+-pass the first argument (if of integral type) in the register ECX and
+-the second argument (if of integral type) in the register EDX at .  Subsequent
+-and other typed arguments are passed on the stack.  The called function
+-pops the arguments off the stack.  If the number of arguments is variable all
+-arguments are pushed on the stack.
+-
+- at item thiscall
+- at cindex @code{thiscall} function attribute, x86-32
+- at cindex functions that pop the argument stack on x86-32
+-On x86-32 targets, the @code{thiscall} attribute causes the compiler to
+-pass the first argument (if of integral type) in the register ECX.
+-Subsequent and other typed arguments are passed on the stack. The called
+-function pops the arguments off the stack.
+-If the number of arguments is variable all arguments are pushed on the
+-stack.
+-The @code{thiscall} attribute is intended for C++ non-static member functions.
+-As a GCC extension, this calling convention can be used for C functions
+-and for static member methods.
+-
+- at item format (@var{archetype}, @var{string-index}, @var{first-to-check})
+- at cindex @code{format} function attribute
+- at opindex Wformat
+-The @code{format} attribute specifies that a function takes @code{printf},
+- at code{scanf}, @code{strftime} or @code{strfmon} style arguments that
+-should be type-checked against a format string.  For example, the
+-declaration:
+-
+- at smallexample
+-extern int
+-my_printf (void *my_object, const char *my_format, ...)
+-      __attribute__ ((format (printf, 2, 3)));
+- at end smallexample
++ at smallexample
++extern int
++my_printf (void *my_object, const char *my_format, ...)
++      __attribute__ ((format (printf, 2, 3)));
++ at end smallexample
+ 
+ @noindent
+ causes the compiler to check the arguments in calls to @code{my_printf}
+@@ -2771,72 +2617,59 @@ The target may also allow additional types in @code{format-arg} attributes.
+ @xref{Target Format Checks,,Format Checks Specific to Particular
+ Target Machines}.
+ 
+- at item function_vector
+- at cindex @code{function_vector} function attribute, H8/300
+- at cindex @code{function_vector} function attribute, M16C/M32C
+- at cindex @code{function_vector} function attribute, SH
+- at cindex calling functions through the function vector on H8/300, M16C, M32C and SH2A processors
+-Use this attribute on the H8/300, H8/300H, and H8S to indicate that the specified
+-function should be called through the function vector.  Calling a
+-function through the function vector reduces code size, however;
+-the function vector has a limited size (maximum 128 entries on the H8/300
+-and 64 entries on the H8/300H and H8S) and shares space with the interrupt vector.
+-
+-On SH2A targets, this attribute declares a function to be called using the
+-TBR relative addressing mode.  The argument to this attribute is the entry
+-number of the same function in a vector table containing all the TBR
+-relative addressable functions.  For correct operation the TBR must be setup
+-accordingly to point to the start of the vector table before any functions with
+-this attribute are invoked.  Usually a good place to do the initialization is
+-the startup routine.  The TBR relative vector table can have at max 256 function
+-entries.  The jumps to these functions are generated using a SH2A specific,
+-non delayed branch instruction JSR/N @@(disp8,TBR).  You must use GAS and GLD
+-from GNU binutils version 2.7 or later for this attribute to work correctly.
+-
+-Please refer the example of M16C target, to see the use of this
+-attribute while declaring a function,
+-
+-In an application, for a function being called once, this attribute
+-saves at least 8 bytes of code; and if other successive calls are being
+-made to the same function, it saves 2 bytes of code per each of these
+-calls.
++ at item gnu_inline
++ at cindex @code{gnu_inline} function attribute
++This attribute should be used with a function that is also declared
++with the @code{inline} keyword.  It directs GCC to treat the function
++as if it were defined in gnu90 mode even when compiling in C99 or
++gnu99 mode.
+ 
+-On M16C/M32C targets, the @code{function_vector} attribute declares a
+-special page subroutine call function. Use of this attribute reduces
+-the code size by 2 bytes for each call generated to the
+-subroutine. The argument to the attribute is the vector number entry
+-from the special page vector table which contains the 16 low-order
+-bits of the subroutine's entry address. Each vector table has special
+-page number (18 to 255) that is used in @code{jsrs} instructions.
+-Jump addresses of the routines are generated by adding 0x0F0000 (in
+-case of M16C targets) or 0xFF0000 (in case of M32C targets), to the
+-2-byte addresses set in the vector table. Therefore you need to ensure
+-that all the special page vector routines should get mapped within the
+-address range 0x0F0000 to 0x0FFFFF (for M16C) and 0xFF0000 to 0xFFFFFF
+-(for M32C).
++If the function is declared @code{extern}, then this definition of the
++function is used only for inlining.  In no case is the function
++compiled as a standalone function, not even if you take its address
++explicitly.  Such an address becomes an external reference, as if you
++had only declared the function, and had not defined it.  This has
++almost the effect of a macro.  The way to use this is to put a
++function definition in a header file with this attribute, and put
++another copy of the function, without @code{extern}, in a library
++file.  The definition in the header file causes most calls to the
++function to be inlined.  If any uses of the function remain, they
++refer to the single copy in the library.  Note that the two
++definitions of the functions need not be precisely the same, although
++if they do not have the same effect your program may behave oddly.
+ 
+-In the following example 2 bytes are saved for each call to
+-function @code{foo}.
++In C, if the function is neither @code{extern} nor @code{static}, then
++the function is compiled as a standalone function, as well as being
++inlined where possible.
+ 
+- at smallexample
+-void foo (void) __attribute__((function_vector(0x18)));
+-void foo (void)
+-@{
+-@}
++This is how GCC traditionally handled functions declared
++ at code{inline}.  Since ISO C99 specifies a different semantics for
++ at code{inline}, this function attribute is provided as a transition
++measure and as a useful feature in its own right.  This attribute is
++available in GCC 4.1.3 and later.  It is available if either of the
++preprocessor macros @code{__GNUC_GNU_INLINE__} or
++ at code{__GNUC_STDC_INLINE__} are defined.  @xref{Inline,,An Inline
++Function is As Fast As a Macro}.
+ 
+-void bar (void)
+-@{
+-    foo();
+-@}
+- at end smallexample
++In C++, this attribute does not depend on @code{extern} in any way,
++but it still requires the @code{inline} keyword to enable its special
++behavior.
+ 
+-If functions are defined in one file and are called in another file,
+-then be sure to write this declaration in both files.
++ at item hot
++ at cindex @code{hot} function attribute
++The @code{hot} attribute on a function is used to inform the compiler that
++the function is a hot spot of the compiled program.  The function is
++optimized more aggressively and on many targets it is placed into a special
++subsection of the text section so all hot functions appear close together,
++improving locality.
+ 
+-This attribute is ignored for R8C target.
++When profile feedback is available, via @option{-fprofile-use}, hot functions
++are automatically detected and this attribute is ignored.
+ 
+ @item ifunc ("@var{resolver}")
+ @cindex @code{ifunc} function attribute
++ at cindex indirect functions
++ at cindex functions that are dynamically resolved
+ The @code{ifunc} attribute is used to mark a function as an indirect
+ function using the STT_GNU_IFUNC symbol type extension to the ELF
+ standard.  This allows the resolution of the symbol value to be
+@@ -2883,324 +2716,724 @@ Indirect functions cannot be weak.  Binutils version 2.20.1 or higher
+ and GNU C Library version 2.11.1 are required to use this feature.
+ 
+ @item interrupt
+- at cindex @code{interrupt} function attribute, ARC
+- at cindex @code{interrupt} function attribute, ARM
+- at cindex @code{interrupt} function attribute, AVR
+- at cindex @code{interrupt} function attribute, CR16
+- at cindex @code{interrupt} function attribute, Epiphany
+- at cindex @code{interrupt} function attribute, M32C
+- at cindex @code{interrupt} function attribute, M32R/D
+- at cindex @code{interrupt} function attribute, m68k
+- at cindex @code{interrupt} function attribute, MeP
+- at cindex @code{interrupt} function attribute, MIPS
+- at cindex @code{interrupt} function attribute, MSP430
+- at cindex @code{interrupt} function attribute, NDS32
+- at cindex @code{interrupt} function attribute, RL78
+- at cindex @code{interrupt} function attribute, RX
+- at cindex @code{interrupt} function attribute, Visium
+- at cindex @code{interrupt} function attribute, Xstormy16
+-Use this attribute on the ARC, ARM, AVR, CR16, Epiphany, M32C, M32R/D,
+-m68k, MeP, MIPS, MSP430, NDS32, RL78, RX, Visium and Xstormy16 ports to indicate
+-that the specified function is an interrupt handler.  The compiler generates
+-function entry and exit sequences suitable for use in an interrupt handler
+-when this attribute is present.  With Epiphany targets it may also generate
+-a special section with code to initialize the interrupt vector table.
+-
+-Note, interrupt handlers for the Blackfin, H8/300, H8/300H, H8S, MicroBlaze,
+-and SH processors can be specified via the @code{interrupt_handler} attribute.
++ at itemx interrupt_handler
++Many GCC back ends support attributes to indicate that a function is
++an interrupt handler, which tells the compiler to generate function
++entry and exit sequences that differ from those from regular
++functions.  The exact syntax and behavior are target-specific;
++refer to the following subsections for details.
+ 
+-Note, on the ARC, you must specify the kind of interrupt to be handled
+-in a parameter to the interrupt attribute like this:
+-
+- at smallexample
+-void f () __attribute__ ((interrupt ("ilink1")));
+- at end smallexample
++ at item leaf
++ at cindex @code{leaf} function attribute
++Calls to external functions with this attribute must return to the current
++compilation unit only by return or by exception handling.  In particular, leaf
++functions are not allowed to call callback function passed to it from the current
++compilation unit or directly call functions exported by the unit or longjmp
++into the unit.  Leaf function might still call functions from other compilation
++units and thus they are not necessarily leaf in the sense that they contain no
++function calls at all.
+ 
+-Permissible values for this parameter are: @w{@code{ilink1}} and
+- at w{@code{ilink2}}.
++The attribute is intended for library functions to improve dataflow analysis.
++The compiler takes the hint that any data not escaping the current compilation unit can
++not be used or modified by the leaf function.  For example, the @code{sin} function
++is a leaf function, but @code{qsort} is not.
+ 
+-Note, on the AVR, the hardware globally disables interrupts when an
+-interrupt is executed.  The first instruction of an interrupt handler
+-declared with this attribute is a @code{SEI} instruction to
+-re-enable interrupts.  See also the @code{signal} function attribute
+-that does not insert a @code{SEI} instruction.  If both @code{signal} and
+- at code{interrupt} are specified for the same function, @code{signal}
+-is silently ignored.
++Note that leaf functions might invoke signals and signal handlers might be
++defined in the current compilation unit and use static variables.  The only
++compliant way to write such a signal handler is to declare such variables
++ at code{volatile}.
+ 
+-Note, for the ARM, you can specify the kind of interrupt to be handled by
+-adding an optional parameter to the interrupt attribute like this:
++The attribute has no effect on functions defined within the current compilation
++unit.  This is to allow easy merging of multiple compilation units into one,
++for example, by using the link-time optimization.  For this reason the
++attribute is not allowed on types to annotate indirect calls.
+ 
+- at smallexample
+-void f () __attribute__ ((interrupt ("IRQ")));
+- at end smallexample
+ 
+- at noindent
+-Permissible values for this parameter are: @code{IRQ}, @code{FIQ},
+- at code{SWI}, @code{ABORT} and @code{UNDEF}.
++ at item malloc
++ at cindex @code{malloc} function attribute
++ at cindex functions that behave like malloc
++This tells the compiler that a function is @code{malloc}-like, i.e.,
++that the pointer @var{P} returned by the function cannot alias any
++other pointer valid when the function returns, and moreover no
++pointers to valid objects occur in any storage addressed by @var{P}.
+ 
+-On ARMv7-M the interrupt type is ignored, and the attribute means the function
+-may be called with a word-aligned stack pointer.
++Using this attribute can improve optimization.  Functions like
++ at code{malloc} and @code{calloc} have this property because they return
++a pointer to uninitialized or zeroed-out storage.  However, functions
++like @code{realloc} do not have this property, as they can return a
++pointer to storage containing pointers.
+ 
+-Note, for the MSP430 you can provide an argument to the interrupt
+-attribute which specifies a name or number.  If the argument is a
+-number it indicates the slot in the interrupt vector table (0 - 31) to
+-which this handler should be assigned.  If the argument is a name it
+-is treated as a symbolic name for the vector slot.  These names should
+-match up with appropriate entries in the linker script.  By default
+-the names @code{watchdog} for vector 26, @code{nmi} for vector 30 and
+- at code{reset} for vector 31 are recognized.
++ at item no_icf
++ at cindex @code{no_icf} function attribute
++This function attribute prevents a functions from being merged with another
++semantically equivalent function.
++
++ at item no_instrument_function
++ at cindex @code{no_instrument_function} function attribute
++ at opindex finstrument-functions
++If @option{-finstrument-functions} is given, profiling function calls are
++generated at entry and exit of most user-compiled functions.
++Functions with this attribute are not so instrumented.
+ 
+-You can also use the following function attributes to modify how
+-normal functions interact with interrupt functions:
++ at item no_reorder
++ at cindex @code{no_reorder} function attribute
++Do not reorder functions or variables marked @code{no_reorder}
++against each other or top level assembler statements the executable.
++The actual order in the program will depend on the linker command
++line. Static variables marked like this are also not removed.
++This has a similar effect
++as the @option{-fno-toplevel-reorder} option, but only applies to the
++marked symbols.
+ 
+- at table @code
+- at item critical
+- at cindex @code{critical} function attribute, MSP430
+-Critical functions disable interrupts upon entry and restore the
+-previous interrupt state upon exit.  Critical functions cannot also
+-have the @code{naked} or @code{reentrant} attributes.  They can have
+-the @code{interrupt} attribute.
++ at item no_sanitize_address
++ at itemx no_address_safety_analysis
++ at cindex @code{no_sanitize_address} function attribute
++The @code{no_sanitize_address} attribute on functions is used
++to inform the compiler that it should not instrument memory accesses
++in the function when compiling with the @option{-fsanitize=address} option.
++The @code{no_address_safety_analysis} is a deprecated alias of the
++ at code{no_sanitize_address} attribute, new code should use
++ at code{no_sanitize_address}.
+ 
+- at item reentrant
+- at cindex @code{reentrant} function attribute, MSP430
+-Reentrant functions disable interrupts upon entry and enable them
+-upon exit.  Reentrant functions cannot also have the @code{naked}
+-or @code{critical} attributes.  They can have the @code{interrupt}
+-attribute.
++ at item no_sanitize_thread
++ at cindex @code{no_sanitize_thread} function attribute
++The @code{no_sanitize_thread} attribute on functions is used
++to inform the compiler that it should not instrument memory accesses
++in the function when compiling with the @option{-fsanitize=thread} option.
+ 
+- at item wakeup
+- at cindex @code{wakeup} function attribute, MSP430
+-This attribute only applies to interrupt functions.  It is silently
+-ignored if applied to a non-interrupt function.  A wakeup interrupt
+-function will rouse the processor from any low-power state that it
+-might be in when the function exits.
++ at item no_sanitize_undefined
++ at cindex @code{no_sanitize_undefined} function attribute
++The @code{no_sanitize_undefined} attribute on functions is used
++to inform the compiler that it should not check for undefined behavior
++in the function when compiling with the @option{-fsanitize=undefined} option.
+ 
+- at end table
++ at item no_split_stack
++ at cindex @code{no_split_stack} function attribute
++ at opindex fsplit-stack
++If @option{-fsplit-stack} is given, functions have a small
++prologue which decides whether to split the stack.  Functions with the
++ at code{no_split_stack} attribute do not have that prologue, and thus
++may run with only a small amount of stack space available.
+ 
+-On Epiphany targets one or more optional parameters can be added like this:
++ at item noclone
++ at cindex @code{noclone} function attribute
++This function attribute prevents a function from being considered for
++cloning---a mechanism that produces specialized copies of functions
++and which is (currently) performed by interprocedural constant
++propagation.
+ 
++ at item noinline
++ at cindex @code{noinline} function attribute
++This function attribute prevents a function from being considered for
++inlining.
++ at c Don't enumerate the optimizations by name here; we try to be
++ at c future-compatible with this mechanism.
++If the function does not have side-effects, there are optimizations
++other than inlining that cause function calls to be optimized away,
++although the function call is live.  To keep such calls from being
++optimized away, put
+ @smallexample
+-void __attribute__ ((interrupt ("dma0, dma1"))) universal_dma_handler ();
++asm ("");
+ @end smallexample
+ 
+-Permissible values for these parameters are: @w{@code{reset}},
+- at w{@code{software_exception}}, @w{@code{page_miss}},
+- at w{@code{timer0}}, @w{@code{timer1}}, @w{@code{message}},
+- at w{@code{dma0}}, @w{@code{dma1}}, @w{@code{wand}} and @w{@code{swi}}.
+-Multiple parameters indicate that multiple entries in the interrupt
+-vector table should be initialized for this function, i.e.@: for each
+-parameter @w{@var{name}}, a jump to the function is emitted in
+-the section @w{ivt_entry_ at var{name}}.  The parameter(s) may be omitted
+-entirely, in which case no interrupt vector table entry is provided.
+-
+-Note, on Epiphany targets, interrupts are enabled inside the function
+-unless the @code{disinterrupt} attribute is also specified.
++ at noindent
++(@pxref{Extended Asm}) in the called function, to serve as a special
++side-effect.
+ 
+-On Epiphany targets, you can also use the following attribute to
+-modify the behavior of an interrupt handler:
+- at table @code
+- at item forwarder_section
+- at cindex @code{forwarder_section} function attribute, Epiphany
+-The interrupt handler may be in external memory which cannot be
+-reached by a branch instruction, so generate a local memory trampoline
+-to transfer control.  The single parameter identifies the section where
+-the trampoline is placed.
+- at end table
++ at item nonnull (@var{arg-index}, @dots{})
++ at cindex @code{nonnull} function attribute
++ at cindex functions with non-null pointer arguments
++The @code{nonnull} attribute specifies that some function parameters should
++be non-null pointers.  For instance, the declaration:
+ 
+-The following examples are all valid uses of these attributes on
+-Epiphany targets:
+ @smallexample
+-void __attribute__ ((interrupt)) universal_handler ();
+-void __attribute__ ((interrupt ("dma1"))) dma1_handler ();
+-void __attribute__ ((interrupt ("dma0, dma1"))) universal_dma_handler ();
+-void __attribute__ ((interrupt ("timer0"), disinterrupt))
+-  fast_timer_handler ();
+-void __attribute__ ((interrupt ("dma0, dma1"), forwarder_section ("tramp")))
+-  external_dma_handler ();
++extern void *
++my_memcpy (void *dest, const void *src, size_t len)
++        __attribute__((nonnull (1, 2)));
+ @end smallexample
+ 
+-On MIPS targets, you can use the following attributes to modify the behavior
+-of an interrupt handler:
+- at table @code
+- at item use_shadow_register_set
+- at cindex @code{use_shadow_register_set} function attribute, MIPS
+-Assume that the handler uses a shadow register set, instead of
+-the main general-purpose registers.
+-
+- at item keep_interrupts_masked
+- at cindex @code{keep_interrupts_masked} function attribute, MIPS
+-Keep interrupts masked for the whole function.  Without this attribute,
+-GCC tries to reenable interrupts for as much of the function as it can.
++ at noindent
++causes the compiler to check that, in calls to @code{my_memcpy},
++arguments @var{dest} and @var{src} are non-null.  If the compiler
++determines that a null pointer is passed in an argument slot marked
++as non-null, and the @option{-Wnonnull} option is enabled, a warning
++is issued.  The compiler may also choose to make optimizations based
++on the knowledge that certain function arguments will never be null.
+ 
+- at item use_debug_exception_return
+- at cindex @code{use_debug_exception_return} function attribute, MIPS
+-Return using the @code{deret} instruction.  Interrupt handlers that don't
+-have this attribute return using @code{eret} instead.
+- at end table
++If no argument index list is given to the @code{nonnull} attribute,
++all pointer arguments are marked as non-null.  To illustrate, the
++following declaration is equivalent to the previous example:
+ 
+-You can use any combination of these attributes, as shown below:
+ @smallexample
+-void __attribute__ ((interrupt)) v0 ();
+-void __attribute__ ((interrupt, use_shadow_register_set)) v1 ();
+-void __attribute__ ((interrupt, keep_interrupts_masked)) v2 ();
+-void __attribute__ ((interrupt, use_debug_exception_return)) v3 ();
+-void __attribute__ ((interrupt, use_shadow_register_set,
+-                     keep_interrupts_masked)) v4 ();
+-void __attribute__ ((interrupt, use_shadow_register_set,
+-                     use_debug_exception_return)) v5 ();
+-void __attribute__ ((interrupt, keep_interrupts_masked,
+-                     use_debug_exception_return)) v6 ();
+-void __attribute__ ((interrupt, use_shadow_register_set,
+-                     keep_interrupts_masked,
+-                     use_debug_exception_return)) v7 ();
++extern void *
++my_memcpy (void *dest, const void *src, size_t len)
++        __attribute__((nonnull));
+ @end smallexample
+ 
+-On NDS32 target, this attribute indicates that the specified function
+-is an interrupt handler.  The compiler generates corresponding sections
+-for use in an interrupt handler.  You can use the following attributes
+-to modify the behavior:
+- at table @code
+- at item nested
+- at cindex @code{nested} function attribute, NDS32
+-This interrupt service routine is interruptible.
+- at item not_nested
+- at cindex @code{not_nested} function attribute, NDS32
+-This interrupt service routine is not interruptible.
+- at item nested_ready
+- at cindex @code{nested_ready} function attribute, NDS32
+-This interrupt service routine is interruptible after @code{PSW.GIE}
+-(global interrupt enable) is set.  This allows interrupt service routine to
+-finish some short critical code before enabling interrupts.
+- at item save_all
+- at cindex @code{save_all} function attribute, NDS32
+-The system will help save all registers into stack before entering
+-interrupt handler.
+- at item partial_save
+- at cindex @code{partial_save} function attribute, NDS32
+-The system will help save caller registers into stack before entering
+-interrupt handler.
+- at end table
++ at item noreturn
++ at cindex @code{noreturn} function attribute
++ at cindex functions that never return
++A few standard library functions, such as @code{abort} and @code{exit},
++cannot return.  GCC knows this automatically.  Some programs define
++their own functions that never return.  You can declare them
++ at code{noreturn} to tell the compiler this fact.  For example,
+ 
+- at cindex @code{brk_interrupt} function attribute, RL78
+-On RL78, use @code{brk_interrupt} instead of @code{interrupt} for
+-handlers intended to be used with the @code{BRK} opcode (i.e.@: those
+-that must end with @code{RETB} instead of @code{RETI}).
++ at smallexample
++ at group
++void fatal () __attribute__ ((noreturn));
++
++void
++fatal (/* @r{@dots{}} */)
++@{
++  /* @r{@dots{}} */ /* @r{Print error message.} */ /* @r{@dots{}} */
++  exit (1);
++@}
++ at end group
++ at end smallexample
++
++The @code{noreturn} keyword tells the compiler to assume that
++ at code{fatal} cannot return.  It can then optimize without regard to what
++would happen if @code{fatal} ever did return.  This makes slightly
++better code.  More importantly, it helps avoid spurious warnings of
++uninitialized variables.
++
++The @code{noreturn} keyword does not affect the exceptional path when that
++applies: a @code{noreturn}-marked function may still return to the caller
++by throwing an exception or calling @code{longjmp}.
++
++Do not assume that registers saved by the calling function are
++restored before calling the @code{noreturn} function.
++
++It does not make sense for a @code{noreturn} function to have a return
++type other than @code{void}.
++
++ at item nothrow
++ at cindex @code{nothrow} function attribute
++The @code{nothrow} attribute is used to inform the compiler that a
++function cannot throw an exception.  For example, most functions in
++the standard C library can be guaranteed not to throw an exception
++with the notable exceptions of @code{qsort} and @code{bsearch} that
++take function pointer arguments.
++
++ at item optimize
++ at cindex @code{optimize} function attribute
++The @code{optimize} attribute is used to specify that a function is to
++be compiled with different optimization options than specified on the
++command line.  Arguments can either be numbers or strings.  Numbers
++are assumed to be an optimization level.  Strings that begin with
++ at code{O} are assumed to be an optimization option, while other options
++are assumed to be used with a @code{-f} prefix.  You can also use the
++ at samp{#pragma GCC optimize} pragma to set the optimization options
++that affect more than one function.
++ at xref{Function Specific Option Pragmas}, for details about the
++ at samp{#pragma GCC optimize} pragma.
++
++This can be used for instance to have frequently-executed functions
++compiled with more aggressive optimization options that produce faster
++and larger code, while other functions can be compiled with less
++aggressive options.
++
++ at item pure
++ at cindex @code{pure} function attribute
++ at cindex functions that have no side effects
++Many functions have no effects except the return value and their
++return value depends only on the parameters and/or global variables.
++Such a function can be subject
++to common subexpression elimination and loop optimization just as an
++arithmetic operator would be.  These functions should be declared
++with the attribute @code{pure}.  For example,
++
++ at smallexample
++int square (int) __attribute__ ((pure));
++ at end smallexample
++
++ at noindent
++says that the hypothetical function @code{square} is safe to call
++fewer times than the program says.
++
++Some of common examples of pure functions are @code{strlen} or @code{memcmp}.
++Interesting non-pure functions are functions with infinite loops or those
++depending on volatile memory or other system resource, that may change between
++two consecutive calls (such as @code{feof} in a multithreading environment).
++
++ at item returns_nonnull
++ at cindex @code{returns_nonnull} function attribute
++The @code{returns_nonnull} attribute specifies that the function
++return value should be a non-null pointer.  For instance, the declaration:
++
++ at smallexample
++extern void *
++mymalloc (size_t len) __attribute__((returns_nonnull));
++ at end smallexample
++
++ at noindent
++lets the compiler optimize callers based on the knowledge
++that the return value will never be null.
++
++ at item returns_twice
++ at cindex @code{returns_twice} function attribute
++ at cindex functions that return more than once
++The @code{returns_twice} attribute tells the compiler that a function may
++return more than one time.  The compiler ensures that all registers
++are dead before calling such a function and emits a warning about
++the variables that may be clobbered after the second return from the
++function.  Examples of such functions are @code{setjmp} and @code{vfork}.
++The @code{longjmp}-like counterpart of such function, if any, might need
++to be marked with the @code{noreturn} attribute.
++
++ at item section ("@var{section-name}")
++ at cindex @code{section} function attribute
++ at cindex functions in arbitrary sections
++Normally, the compiler places the code it generates in the @code{text} section.
++Sometimes, however, you need additional sections, or you need certain
++particular functions to appear in special sections.  The @code{section}
++attribute specifies that a function lives in a particular section.
++For example, the declaration:
++
++ at smallexample
++extern void foobar (void) __attribute__ ((section ("bar")));
++ at end smallexample
++
++ at noindent
++puts the function @code{foobar} in the @code{bar} section.
++
++Some file formats do not support arbitrary sections so the @code{section}
++attribute is not available on all platforms.
++If you need to map the entire contents of a module to a particular
++section, consider using the facilities of the linker instead.
++
++ at item sentinel
++ at cindex @code{sentinel} function attribute
++This function attribute ensures that a parameter in a function call is
++an explicit @code{NULL}.  The attribute is only valid on variadic
++functions.  By default, the sentinel is located at position zero, the
++last parameter of the function call.  If an optional integer position
++argument P is supplied to the attribute, the sentinel must be located at
++position P counting backwards from the end of the argument list.
++
++ at smallexample
++__attribute__ ((sentinel))
++is equivalent to
++__attribute__ ((sentinel(0)))
++ at end smallexample
++
++The attribute is automatically set with a position of 0 for the built-in
++functions @code{execl} and @code{execlp}.  The built-in function
++ at code{execle} has the attribute set with a position of 1.
++
++A valid @code{NULL} in this context is defined as zero with any pointer
++type.  If your system defines the @code{NULL} macro with an integer type
++then you need to add an explicit cast.  GCC replaces @code{stddef.h}
++with a copy that redefines NULL appropriately.
++
++The warnings for missing or incorrect sentinels are enabled with
++ at option{-Wformat}.
++
++ at item stack_protect
++ at cindex @code{stack_protect} function attribute
++This function attribute make a stack protection of the function if 
++flags @option{fstack-protector} or @option{fstack-protector-strong}
++or @option{fstack-protector-explicit} are set.
++
++ at item target (@var{options})
++ at cindex @code{target} function attribute
++Multiple target back ends implement the @code{target} attribute
++to specify that a function is to
++be compiled with different target options than specified on the
++command line.  This can be used for instance to have functions
++compiled with a different ISA (instruction set architecture) than the
++default.  You can also use the @samp{#pragma GCC target} pragma to set
++more than one function to be compiled with specific target options.
++ at xref{Function Specific Option Pragmas}, for details about the
++ at samp{#pragma GCC target} pragma.
++
++For instance, on an x86, you could declare one function with the
++ at code{target("sse4.1,arch=core2")} attribute and another with
++ at code{target("sse4a,arch=amdfam10")}.  This is equivalent to
++compiling the first function with @option{-msse4.1} and
++ at option{-march=core2} options, and the second function with
++ at option{-msse4a} and @option{-march=amdfam10} options.  It is up to you
++to make sure that a function is only invoked on a machine that
++supports the particular ISA it is compiled for (for example by using
++ at code{cpuid} on x86 to determine what feature bits and architecture
++family are used).
++
++ at smallexample
++int core2_func (void) __attribute__ ((__target__ ("arch=core2")));
++int sse3_func (void) __attribute__ ((__target__ ("sse3")));
++ at end smallexample
++
++You can either use multiple
++strings separated by commas to specify multiple options,
++or separate the options with a comma (@samp{,}) within a single string.
++
++The options supported are specific to each target; refer to @ref{x86
++Function Attributes}, @ref{PowerPC Function Attributes},
++ at ref{ARM Function Attributes},and @ref{Nios II Function Attributes},
++for details.
++
++ at item unused
++ at cindex @code{unused} function attribute
++This attribute, attached to a function, means that the function is meant
++to be possibly unused.  GCC does not produce a warning for this
++function.
++
++ at item used
++ at cindex @code{used} function attribute
++This attribute, attached to a function, means that code must be emitted
++for the function even if it appears that the function is not referenced.
++This is useful, for example, when the function is referenced only in
++inline assembly.
++
++When applied to a member function of a C++ class template, the
++attribute also means that the function is instantiated if the
++class itself is instantiated.
++
++ at item visibility ("@var{visibility_type}")
++ at cindex @code{visibility} function attribute
++This attribute affects the linkage of the declaration to which it is attached.
++There are four supported @var{visibility_type} values: default,
++hidden, protected or internal visibility.
++
++ at smallexample
++void __attribute__ ((visibility ("protected")))
++f () @{ /* @r{Do something.} */; @}
++int i __attribute__ ((visibility ("hidden")));
++ at end smallexample
++
++The possible values of @var{visibility_type} correspond to the
++visibility settings in the ELF gABI.
++
++ at table @code
++ at c keep this list of visibilities in alphabetical order.
++
++ at item default
++Default visibility is the normal case for the object file format.
++This value is available for the visibility attribute to override other
++options that may change the assumed visibility of entities.
++
++On ELF, default visibility means that the declaration is visible to other
++modules and, in shared libraries, means that the declared entity may be
++overridden.
++
++On Darwin, default visibility means that the declaration is visible to
++other modules.
++
++Default visibility corresponds to ``external linkage'' in the language.
++
++ at item hidden
++Hidden visibility indicates that the entity declared has a new
++form of linkage, which we call ``hidden linkage''.  Two
++declarations of an object with hidden linkage refer to the same object
++if they are in the same shared object.
++
++ at item internal
++Internal visibility is like hidden visibility, but with additional
++processor specific semantics.  Unless otherwise specified by the
++psABI, GCC defines internal visibility to mean that a function is
++ at emph{never} called from another module.  Compare this with hidden
++functions which, while they cannot be referenced directly by other
++modules, can be referenced indirectly via function pointers.  By
++indicating that a function cannot be called from outside the module,
++GCC may for instance omit the load of a PIC register since it is known
++that the calling function loaded the correct value.
++
++ at item protected
++Protected visibility is like default visibility except that it
++indicates that references within the defining module bind to the
++definition in that module.  That is, the declared entity cannot be
++overridden by another module.
++
++ at end table
++
++All visibilities are supported on many, but not all, ELF targets
++(supported when the assembler supports the @samp{.visibility}
++pseudo-op).  Default visibility is supported everywhere.  Hidden
++visibility is supported on Darwin targets.
++
++The visibility attribute should be applied only to declarations that
++would otherwise have external linkage.  The attribute should be applied
++consistently, so that the same entity should not be declared with
++different settings of the attribute.
+ 
+-On RX targets, you may specify one or more vector numbers as arguments
+-to the attribute, as well as naming an alternate table name.
+-Parameters are handled sequentially, so one handler can be assigned to
+-multiple entries in multiple tables.  One may also pass the magic
+-string @code{"$default"} which causes the function to be used for any
+-unfilled slots in the current table.
++In C++, the visibility attribute applies to types as well as functions
++and objects, because in C++ types have linkage.  A class must not have
++greater visibility than its non-static data member types and bases,
++and class members default to the visibility of their class.  Also, a
++declaration without explicit visibility is limited to the visibility
++of its type.
++
++In C++, you can mark member functions and static member variables of a
++class with the visibility attribute.  This is useful if you know a
++particular method or static member variable should only be used from
++one shared object; then you can mark it hidden while the rest of the
++class has default visibility.  Care must be taken to avoid breaking
++the One Definition Rule; for example, it is usually not useful to mark
++an inline method as hidden without marking the whole class as hidden.
++
++A C++ namespace declaration can also have the visibility attribute.
+ 
+-This example shows a simple assignment of a function to one vector in
+-the default table (note that preprocessor macros may be used for
+-chip-specific symbolic vector names):
+ @smallexample
+-void __attribute__ ((interrupt (5))) txd1_handler ();
++namespace nspace1 __attribute__ ((visibility ("protected")))
++@{ /* @r{Do something.} */; @}
+ @end smallexample
+ 
+-This example assigns a function to two slots in the default table
+-(using preprocessor macros defined elsewhere) and makes it the default
+-for the @code{dct} table:
++This attribute applies only to the particular namespace body, not to
++other definitions of the same namespace; it is equivalent to using
++ at samp{#pragma GCC visibility} before and after the namespace
++definition (@pxref{Visibility Pragmas}).
++
++In C++, if a template argument has limited visibility, this
++restriction is implicitly propagated to the template instantiation.
++Otherwise, template instantiations and specializations default to the
++visibility of their template.
++
++If both the template and enclosing class have explicit visibility, the
++visibility from the template is used.
++
++ at item warn_unused_result
++ at cindex @code{warn_unused_result} function attribute
++The @code{warn_unused_result} attribute causes a warning to be emitted
++if a caller of the function with this attribute does not use its
++return value.  This is useful for functions where not checking
++the result is either a security problem or always a bug, such as
++ at code{realloc}.
++
+ @smallexample
+-void __attribute__ ((interrupt (RXD1_VECT,RXD2_VECT,"dct","$default")))
+-	txd1_handler ();
++int fn () __attribute__ ((warn_unused_result));
++int foo ()
++@{
++  if (fn () < 0) return -1;
++  fn ();
++  return 0;
++@}
+ @end smallexample
+ 
+- at item interrupt_handler
+- at cindex @code{interrupt_handler} function attribute, Blackfin
+- at cindex @code{interrupt_handler} function attribute, m68k
+- at cindex @code{interrupt_handler} function attribute, H8/300
+- at cindex @code{interrupt_handler} function attribute, SH
+-Use this attribute on the Blackfin, m68k, H8/300, H8/300H, H8S, and SH to
+-indicate that the specified function is an interrupt handler.  The compiler
+-generates function entry and exit sequences suitable for use in an
+-interrupt handler when this attribute is present.
++ at noindent
++results in warning on line 5.
+ 
+- at item interrupt_thread
+- at cindex @code{interrupt_thread} function attribute, fido
+-Use this attribute on fido, a subarchitecture of the m68k, to indicate
+-that the specified function is an interrupt handler that is designed
+-to run as a thread.  The compiler omits generate prologue/epilogue
+-sequences and replaces the return instruction with a @code{sleep}
+-instruction.  This attribute is available only on fido.
++ at item weak
++ at cindex @code{weak} function attribute
++The @code{weak} attribute causes the declaration to be emitted as a weak
++symbol rather than a global.  This is primarily useful in defining
++library functions that can be overridden in user code, though it can
++also be used with non-function declarations.  Weak symbols are supported
++for ELF targets, and also for a.out targets when using the GNU assembler
++and linker.
+ 
+- at item isr
+- at cindex @code{isr} function attribute, ARM
+-Use this attribute on ARM to write Interrupt Service Routines. This is an
+-alias to the @code{interrupt} attribute above.
++ at item weakref
++ at itemx weakref ("@var{target}")
++ at cindex @code{weakref} function attribute
++The @code{weakref} attribute marks a declaration as a weak reference.
++Without arguments, it should be accompanied by an @code{alias} attribute
++naming the target symbol.  Optionally, the @var{target} may be given as
++an argument to @code{weakref} itself.  In either case, @code{weakref}
++implicitly marks the declaration as @code{weak}.  Without a
++ at var{target}, given as an argument to @code{weakref} or to @code{alias},
++ at code{weakref} is equivalent to @code{weak}.
+ 
+- at item kspisusp
+- at cindex @code{kspisusp} function attribute, Blackfin
+- at cindex User stack pointer in interrupts on the Blackfin
+-When used together with @code{interrupt_handler}, @code{exception_handler}
+-or @code{nmi_handler}, code is generated to load the stack pointer
+-from the USP register in the function prologue.
++ at smallexample
++static int x() __attribute__ ((weakref ("y")));
++/* is equivalent to... */
++static int x() __attribute__ ((weak, weakref, alias ("y")));
++/* and to... */
++static int x() __attribute__ ((weakref));
++static int x() __attribute__ ((alias ("y")));
++ at end smallexample
+ 
+- at item l1_text
+- at cindex @code{l1_text} function attribute, Blackfin
+-This attribute specifies a function to be placed into L1 Instruction
+-SRAM at . The function is put into a specific section named @code{.l1.text}.
+-With @option{-mfdpic}, function calls with a such function as the callee
+-or caller uses inlined PLT.
++A weak reference is an alias that does not by itself require a
++definition to be given for the target symbol.  If the target symbol is
++only referenced through weak references, then it becomes a @code{weak}
++undefined symbol.  If it is directly referenced, however, then such
++strong references prevail, and a definition is required for the
++symbol, not necessarily in the same translation unit.
+ 
+- at item l2
+- at cindex @code{l2} function attribute, Blackfin
+-On the Blackfin, this attribute specifies a function to be placed into L2
+-SRAM. The function is put into a specific section named
+- at code{.l1.text}. With @option{-mfdpic}, callers of such functions use
+-an inlined PLT.
++The effect is equivalent to moving all references to the alias to a
++separate translation unit, renaming the alias to the aliased symbol,
++declaring it as weak, compiling the two separate translation units and
++performing a reloadable link on them.
+ 
+- at item leaf
+- at cindex @code{leaf} function attribute
+-Calls to external functions with this attribute must return to the current
+-compilation unit only by return or by exception handling.  In particular, leaf
+-functions are not allowed to call callback function passed to it from the current
+-compilation unit or directly call functions exported by the unit or longjmp
+-into the unit.  Leaf function might still call functions from other compilation
+-units and thus they are not necessarily leaf in the sense that they contain no
+-function calls at all.
++At present, a declaration to which @code{weakref} is attached can
++only be @code{static}.
+ 
+-The attribute is intended for library functions to improve dataflow analysis.
+-The compiler takes the hint that any data not escaping the current compilation unit can
+-not be used or modified by the leaf function.  For example, the @code{sin} function
+-is a leaf function, but @code{qsort} is not.
++ at end table
+ 
+-Note that leaf functions might invoke signals and signal handlers might be
+-defined in the current compilation unit and use static variables.  The only
+-compliant way to write such a signal handler is to declare such variables
+- at code{volatile}.
++ at c This is the end of the target-independent attribute table
+ 
+-The attribute has no effect on functions defined within the current compilation
+-unit.  This is to allow easy merging of multiple compilation units into one,
+-for example, by using the link-time optimization.  For this reason the
+-attribute is not allowed on types to annotate indirect calls.
++ at node AArch64 Function Attributes
++ at subsection AArch64 Function Attributes
++
++The following target-specific function attributes are available for the
++AArch64 target.  For the most part, these options mirror the behavior of
++similar command-line options (@pxref{AArch64 Options}), but on a
++per-function basis.
++
++ at table @code
++ at item general-regs-only
++ at cindex @code{general-regs-only} function attribute, AArch64
++Indicates that no floating-point or Advanced SIMD registers should be
++used when generating code for this function.  If the function explicitly
++uses floating-point code, then the compiler gives an error.  This is
++the same behavior as that of the command-line option
++ at option{-mgeneral-regs-only}.
++
++ at item fix-cortex-a53-835769
++ at cindex @code{fix-cortex-a53-835769} function attribute, AArch64
++Indicates that the workaround for the Cortex-A53 erratum 835769 should be
++applied to this function.  To explicitly disable the workaround for this
++function specify the negated form: @code{no-fix-cortex-a53-835769}.
++This corresponds to the behavior of the command line options
++ at option{-mfix-cortex-a53-835769} and @option{-mno-fix-cortex-a53-835769}.
++
++ at item cmodel=
++ at cindex @code{cmodel=} function attribute, AArch64
++Indicates that code should be generated for a particular code model for
++this function.  The behavior and permissible arguments are the same as
++for the command line option @option{-mcmodel=}.
++
++ at item strict-align
++ at cindex @code{strict-align} function attribute, AArch64
++Indicates that the compiler should not assume that unaligned memory references
++are handled by the system.  The behavior is the same as for the command-line
++option @option{-mstrict-align}.
++
++ at item omit-leaf-frame-pointer
++ at cindex @code{omit-leaf-frame-pointer} function attribute, AArch64
++Indicates that the frame pointer should be omitted for a leaf function call.
++To keep the frame pointer, the inverse attribute
++ at code{no-omit-leaf-frame-pointer} can be specified.  These attributes have
++the same behavior as the command-line options @option{-momit-leaf-frame-pointer}
++and @option{-mno-omit-leaf-frame-pointer}.
++
++ at item tls-dialect=
++ at cindex @code{tls-dialect=} function attribute, AArch64
++Specifies the TLS dialect to use for this function.  The behavior and
++permissible arguments are the same as for the command-line option
++ at option{-mtls-dialect=}.
++
++ at item arch=
++ at cindex @code{arch=} function attribute, AArch64
++Specifies the architecture version and architectural extensions to use
++for this function.  The behavior and permissible arguments are the same as
++for the @option{-march=} command-line option.
++
++ at item tune=
++ at cindex @code{tune=} function attribute, AArch64
++Specifies the core for which to tune the performance of this function.
++The behavior and permissible arguments are the same as for the @option{-mtune=}
++command-line option.
++
++ at item cpu=
++ at cindex @code{cpu=} function attribute, AArch64
++Specifies the core for which to tune the performance of this function and also
++whose architectural features to use.  The behavior and valid arguments are the
++same as for the @option{-mcpu=} command-line option.
++
++ at end table
++
++The above target attributes can be specified as follows:
++
++ at smallexample
++__attribute__((target("@var{attr-string}")))
++int
++f (int a)
++@{
++  return a + 5;
++@}
++ at end smallexample
++
++where @code{@var{attr-string}} is one of the attribute strings specified above.
++
++Additionally, the architectural extension string may be specified on its
++own.  This can be used to turn on and off particular architectural extensions
++without having to specify a particular architecture version or core.  Example:
++
++ at smallexample
++__attribute__((target("+crc+nocrypto")))
++int
++foo (int a)
++@{
++  return a + 5;
++@}
++ at end smallexample
++
++In this example @code{target("+crc+nocrypto")} enables the @code{crc}
++extension and disables the @code{crypto} extension for the function @code{foo}
++without modifying an existing @option{-march=} or @option{-mcpu} option.
++
++Multiple target function attributes can be specified by separating them with
++a comma.  For example:
++ at smallexample
++__attribute__((target("arch=armv8-a+crc+crypto,tune=cortex-a53")))
++int
++foo (int a)
++@{
++  return a + 5;
++@}
++ at end smallexample
++
++is valid and compiles function @code{foo} for ARMv8-A with @code{crc}
++and @code{crypto} extensions and tunes it for @code{cortex-a53}.
++
++ at subsubsection Inlining rules
++Specifying target attributes on individual functions or performing link-time
++optimization across translation units compiled with different target options
++can affect function inlining rules:
++
++In particular, a caller function can inline a callee function only if the
++architectural features available to the callee are a subset of the features
++available to the caller.
++For example: A function @code{foo} compiled with @option{-march=armv8-a+crc},
++or tagged with the equivalent @code{arch=armv8-a+crc} attribute,
++can inline a function @code{bar} compiled with @option{-march=armv8-a+nocrc}
++because the all the architectural features that function @code{bar} requires
++are available to function @code{foo}.  Conversely, function @code{bar} cannot
++inline function @code{foo}.
++
++Additionally inlining a function compiled with @option{-mstrict-align} into a
++function compiled without @code{-mstrict-align} is not allowed.
++However, inlining a function compiled without @option{-mstrict-align} into a
++function compiled with @option{-mstrict-align} is allowed.
++
++Note that CPU tuning options and attributes such as the @option{-mcpu=},
++ at option{-mtune=} do not inhibit inlining unless the CPU specified by the
++ at option{-mcpu=} option or the @code{cpu=} attribute conflicts with the
++architectural feature rules specified above.
++
++ at node ARC Function Attributes
++ at subsection ARC Function Attributes
++
++These function attributes are supported by the ARC back end:
++
++ at table @code
++ at item interrupt
++ at cindex @code{interrupt} function attribute, ARC
++Use this attribute to indicate
++that the specified function is an interrupt handler.  The compiler generates
++function entry and exit sequences suitable for use in an interrupt handler
++when this attribute is present.
++
++On the ARC, you must specify the kind of interrupt to be handled
++in a parameter to the interrupt attribute like this:
++
++ at smallexample
++void f () __attribute__ ((interrupt ("ilink1")));
++ at end smallexample
++
++Permissible values for this parameter are: @w{@code{ilink1}} and
++ at w{@code{ilink2}}.
+ 
+ @item long_call
+ @itemx medium_call
+ @itemx short_call
+ @cindex @code{long_call} function attribute, ARC
+- at cindex @code{long_call} function attribute, ARM
+- at cindex @code{long_call} function attribute, Epiphany
+ @cindex @code{medium_call} function attribute, ARC
+ @cindex @code{short_call} function attribute, ARC
+- at cindex @code{short_call} function attribute, ARM
+- at cindex @code{short_call} function attribute, Epiphany
+ @cindex indirect calls, ARC
+- at cindex indirect calls, ARM
+- at cindex indirect calls, Epiphany
+-These attributes specify how a particular function is called on
+-ARC, ARM and Epiphany - with @code{medium_call} being specific to ARC.
++These attributes specify how a particular function is called.
+ These attributes override the
+- at option{-mlong-calls} (@pxref{ARM Options} and @ref{ARC Options})
+-and @option{-mmedium-calls} (@pxref{ARC Options})
+-command-line switches and @code{#pragma long_calls} settings.  For ARM, the
+- at code{long_call} attribute indicates that the function might be far
+-away from the call site and require a different (more expensive)
+-calling sequence.   The @code{short_call} attribute always places
+-the offset to the function from the call site into the @samp{BL}
+-instruction directly.
++ at option{-mlong-calls} and @option{-mmedium-calls} (@pxref{ARC Options})
++command-line switches and @code{#pragma long_calls} settings.
+ 
+ For ARC, a function marked with the @code{long_call} attribute is
+ always called using register-indirect jump-and-link instructions,
+@@ -3208,183 +3441,138 @@ thereby enabling the called function to be placed anywhere within the
+ 32-bit address space.  A function marked with the @code{medium_call}
+ attribute will always be close enough to be called with an unconditional
+ branch-and-link instruction, which has a 25-bit offset from
+-the call site.  A function marked with the @code{short_call}
+-attribute will always be close enough to be called with a conditional
+-branch-and-link instruction, which has a 21-bit offset from
+-the call site.
+-
+- at item longcall
+- at itemx shortcall
+- at cindex indirect calls, Blackfin
+- at cindex indirect calls, PowerPC
+- at cindex @code{longcall} function attribute, Blackfin
+- at cindex @code{longcall} function attribute, PowerPC
+- at cindex @code{shortcall} function attribute, Blackfin
+- at cindex @code{shortcall} function attribute, PowerPC
+-On Blackfin and PowerPC, the @code{longcall} attribute
+-indicates that the function might be far away from the call site and
+-require a different (more expensive) calling sequence.  The
+- at code{shortcall} attribute indicates that the function is always close
+-enough for the shorter calling sequence to be used.  These attributes
+-override both the @option{-mlongcall} switch and, on the RS/6000 and
+-PowerPC, the @code{#pragma longcall} setting.
+-
+- at xref{RS/6000 and PowerPC Options}, for more information on whether long
+-calls are necessary.
+-
+- at item long_call
+- at itemx near
+- at itemx far
+- at cindex indirect calls, MIPS
+- at cindex @code{long_call} function attribute, MIPS
+- at cindex @code{near} function attribute, MIPS
+- at cindex @code{far} function attribute, MIPS
+-These attributes specify how a particular function is called on MIPS at .
+-The attributes override the @option{-mlong-calls} (@pxref{MIPS Options})
+-command-line switch.  The @code{long_call} and @code{far} attributes are
+-synonyms, and cause the compiler to always call
+-the function by first loading its address into a register, and then using
+-the contents of that register.  The @code{near} attribute has the opposite
+-effect; it specifies that non-PIC calls should be made using the more
+-efficient @code{jal} instruction.
++the call site.  A function marked with the @code{short_call}
++attribute will always be close enough to be called with a conditional
++branch-and-link instruction, which has a 21-bit offset from
++the call site.
++ at end table
+ 
+- at item malloc
+- at cindex @code{malloc} function attribute
+-This tells the compiler that a function is @code{malloc}-like, i.e.,
+-that the pointer @var{P} returned by the function cannot alias any
+-other pointer valid when the function returns, and moreover no
+-pointers to valid objects occur in any storage addressed by @var{P}.
++ at node ARM Function Attributes
++ at subsection ARM Function Attributes
+ 
+-Using this attribute can improve optimization.  Functions like
+- at code{malloc} and @code{calloc} have this property because they return
+-a pointer to uninitialized or zeroed-out storage.  However, functions
+-like @code{realloc} do not have this property, as they can return a
+-pointer to storage containing pointers.
++These function attributes are supported for ARM targets:
+ 
+- at item mips16
+- at itemx nomips16
+- at cindex @code{mips16} function attribute, MIPS
+- at cindex @code{nomips16} function attribute, MIPS
++ at table @code
++ at item interrupt
++ at cindex @code{interrupt} function attribute, ARM
++Use this attribute to indicate
++that the specified function is an interrupt handler.  The compiler generates
++function entry and exit sequences suitable for use in an interrupt handler
++when this attribute is present.
+ 
+-On MIPS targets, you can use the @code{mips16} and @code{nomips16}
+-function attributes to locally select or turn off MIPS16 code generation.
+-A function with the @code{mips16} attribute is emitted as MIPS16 code,
+-while MIPS16 code generation is disabled for functions with the
+- at code{nomips16} attribute.  These attributes override the
+- at option{-mips16} and @option{-mno-mips16} options on the command line
+-(@pxref{MIPS Options}).
++You can specify the kind of interrupt to be handled by
++adding an optional parameter to the interrupt attribute like this:
+ 
+-When compiling files containing mixed MIPS16 and non-MIPS16 code, the
+-preprocessor symbol @code{__mips16} reflects the setting on the command line,
+-not that within individual functions.  Mixed MIPS16 and non-MIPS16 code
+-may interact badly with some GCC extensions such as @code{__builtin_apply}
+-(@pxref{Constructing Calls}).
++ at smallexample
++void f () __attribute__ ((interrupt ("IRQ")));
++ at end smallexample
+ 
+- at item micromips, MIPS
+- at itemx nomicromips, MIPS
+- at cindex @code{micromips} function attribute
+- at cindex @code{nomicromips} function attribute
++ at noindent
++Permissible values for this parameter are: @code{IRQ}, @code{FIQ},
++ at code{SWI}, @code{ABORT} and @code{UNDEF}.
+ 
+-On MIPS targets, you can use the @code{micromips} and @code{nomicromips}
+-function attributes to locally select or turn off microMIPS code generation.
+-A function with the @code{micromips} attribute is emitted as microMIPS code,
+-while microMIPS code generation is disabled for functions with the
+- at code{nomicromips} attribute.  These attributes override the
+- at option{-mmicromips} and @option{-mno-micromips} options on the command line
+-(@pxref{MIPS Options}).
++On ARMv7-M the interrupt type is ignored, and the attribute means the function
++may be called with a word-aligned stack pointer.
+ 
+-When compiling files containing mixed microMIPS and non-microMIPS code, the
+-preprocessor symbol @code{__mips_micromips} reflects the setting on the
+-command line,
+-not that within individual functions.  Mixed microMIPS and non-microMIPS code
+-may interact badly with some GCC extensions such as @code{__builtin_apply}
+-(@pxref{Constructing Calls}).
++ at item isr
++ at cindex @code{isr} function attribute, ARM
++Use this attribute on ARM to write Interrupt Service Routines. This is an
++alias to the @code{interrupt} attribute above.
+ 
+- at item model (@var{model-name})
+- at cindex @code{model} function attribute, M32R/D
+- at cindex function addressability on the M32R/D
++ at item long_call
++ at itemx short_call
++ at cindex @code{long_call} function attribute, ARM
++ at cindex @code{short_call} function attribute, ARM
++ at cindex indirect calls, ARM
++These attributes specify how a particular function is called.
++These attributes override the
++ at option{-mlong-calls} (@pxref{ARM Options})
++command-line switch and @code{#pragma long_calls} settings.  For ARM, the
++ at code{long_call} attribute indicates that the function might be far
++away from the call site and require a different (more expensive)
++calling sequence.   The @code{short_call} attribute always places
++the offset to the function from the call site into the @samp{BL}
++instruction directly.
+ 
+-On the M32R/D, use this attribute to set the addressability of an
+-object, and of the code generated for a function.  The identifier
+- at var{model-name} is one of @code{small}, @code{medium}, or
+- at code{large}, representing each of the code models.
++ at item naked
++ at cindex @code{naked} function attribute, ARM
++This attribute allows the compiler to construct the
++requisite function declaration, while allowing the body of the
++function to be assembly code. The specified function will not have
++prologue/epilogue sequences generated by the compiler. Only basic
++ at code{asm} statements can safely be included in naked functions
++(@pxref{Basic Asm}). While using extended @code{asm} or a mixture of
++basic @code{asm} and C code may appear to work, they cannot be
++depended upon to work reliably and are not supported.
+ 
+-Small model objects live in the lower 16MB of memory (so that their
+-addresses can be loaded with the @code{ld24} instruction), and are
+-callable with the @code{bl} instruction.
++ at item pcs
++ at cindex @code{pcs} function attribute, ARM
+ 
+-Medium model objects may live anywhere in the 32-bit address space (the
+-compiler generates @code{seth/add3} instructions to load their addresses),
+-and are callable with the @code{bl} instruction.
++The @code{pcs} attribute can be used to control the calling convention
++used for a function on ARM.  The attribute takes an argument that specifies
++the calling convention to use.
+ 
+-Large model objects may live anywhere in the 32-bit address space (the
+-compiler generates @code{seth/add3} instructions to load their addresses),
+-and may not be reachable with the @code{bl} instruction (the compiler
+-generates the much slower @code{seth/add3/jl} instruction sequence).
++When compiling using the AAPCS ABI (or a variant of it) then valid
++values for the argument are @code{"aapcs"} and @code{"aapcs-vfp"}.  In
++order to use a variant other than @code{"aapcs"} then the compiler must
++be permitted to use the appropriate co-processor registers (i.e., the
++VFP registers must be available in order to use @code{"aapcs-vfp"}).
++For example,
+ 
+- at item ms_abi
+- at itemx sysv_abi
+- at cindex @code{ms_abi} function attribute, x86
+- at cindex @code{sysv_abi} function attribute, x86
++ at smallexample
++/* Argument passed in r0, and result returned in r0+r1.  */
++double f2d (float) __attribute__((pcs("aapcs")));
++ at end smallexample
+ 
+-On 32-bit and 64-bit x86 targets, you can use an ABI attribute
+-to indicate which calling convention should be used for a function.  The
+- at code{ms_abi} attribute tells the compiler to use the Microsoft ABI,
+-while the @code{sysv_abi} attribute tells the compiler to use the ABI
+-used on GNU/Linux and other systems.  The default is to use the Microsoft ABI
+-when targeting Windows.  On all other systems, the default is the x86/AMD ABI.
++Variadic functions always use the @code{"aapcs"} calling convention and
++the compiler rejects attempts to specify an alternative.
+ 
+-Note, the @code{ms_abi} attribute for Microsoft Windows 64-bit targets currently
+-requires the @option{-maccumulate-outgoing-args} option.
++ at item target (@var{options})
++ at cindex @code{target} function attribute
++As discussed in @ref{Common Function Attributes}, this attribute 
++allows specification of target-specific compilation options.
+ 
+- at item callee_pop_aggregate_return (@var{number})
+- at cindex @code{callee_pop_aggregate_return} function attribute, x86
++On ARM, the following options are allowed:
+ 
+-On x86-32 targets, you can use this attribute to control how
+-aggregates are returned in memory.  If the caller is responsible for
+-popping the hidden pointer together with the rest of the arguments, specify
+- at var{number} equal to zero.  If callee is responsible for popping the
+-hidden pointer, specify @var{number} equal to one.  
++ at table @samp
++ at item thumb
++ at cindex @code{target("thumb")} function attribute, ARM
++Force code generation in the Thumb (T16/T32) ISA, depending on the
++architecture level.
++
++ at item arm
++ at cindex @code{target("arm")} function attribute, ARM
++Force code generation in the ARM (A32) ISA.
++ at end table
+ 
+-The default x86-32 ABI assumes that the callee pops the
+-stack for hidden pointer.  However, on x86-32 Microsoft Windows targets,
+-the compiler assumes that the
+-caller pops the stack for hidden pointer.
++Functions from different modes can be inlined in the caller's mode.
+ 
+- at item ms_hook_prologue
+- at cindex @code{ms_hook_prologue} function attribute, x86
++ at end table
+ 
+-On 32-bit and 64-bit x86 targets, you can use
+-this function attribute to make GCC generate the ``hot-patching'' function
+-prologue used in Win32 API functions in Microsoft Windows XP Service Pack 2
+-and newer.
++ at node AVR Function Attributes
++ at subsection AVR Function Attributes
+ 
+- at item hotpatch (@var{halfwords-before-function-label}, at var{halfwords-after-function-label})
+- at cindex @code{hotpatch} function attribute, S/390
++These function attributes are supported by the AVR back end:
+ 
+-On S/390 System z targets, you can use this function attribute to
+-make GCC generate a ``hot-patching'' function prologue.  If the
+- at option{-mhotpatch=} command-line option is used at the same time,
+-the @code{hotpatch} attribute takes precedence.  The first of the
+-two arguments specifies the number of halfwords to be added before
+-the function label.  A second argument can be used to specify the
+-number of halfwords to be added after the function label.  For
+-both arguments the maximum allowed value is 1000000.
++ at table @code
++ at item interrupt
++ at cindex @code{interrupt} function attribute, AVR
++Use this attribute to indicate
++that the specified function is an interrupt handler.  The compiler generates
++function entry and exit sequences suitable for use in an interrupt handler
++when this attribute is present.
+ 
+-If both arguments are zero, hotpatching is disabled.
++On the AVR, the hardware globally disables interrupts when an
++interrupt is executed.  The first instruction of an interrupt handler
++declared with this attribute is a @code{SEI} instruction to
++re-enable interrupts.  See also the @code{signal} function attribute
++that does not insert a @code{SEI} instruction.  If both @code{signal} and
++ at code{interrupt} are specified for the same function, @code{signal}
++is silently ignored.
+ 
+ @item naked
+- at cindex @code{naked} function attribute, ARM
+ @cindex @code{naked} function attribute, AVR
+- at cindex @code{naked} function attribute, MCORE
+- at cindex @code{naked} function attribute, MSP430
+- at cindex @code{naked} function attribute, NDS32
+- at cindex @code{naked} function attribute, RL78
+- at cindex @code{naked} function attribute, RX
+- at cindex @code{naked} function attribute, SPU
+- at cindex function without prologue/epilogue code
+-This attribute is available on the ARM, AVR, MCORE, MSP430, NDS32,
+-RL78, RX and SPU ports.  It allows the compiler to construct the
++This attribute allows the compiler to construct the
+ requisite function declaration, while allowing the body of the
+ function to be assembly code. The specified function will not have
+ prologue/epilogue sequences generated by the compiler. Only basic
+@@ -3393,12 +3581,108 @@ prologue/epilogue sequences generated by the compiler. Only basic
+ basic @code{asm} and C code may appear to work, they cannot be
+ depended upon to work reliably and are not supported.
+ 
+- at item near
+- at cindex @code{near} function attribute, MeP
+- at cindex functions that do not handle memory bank switching on 68HC11/68HC12
+-On MeP targets this attribute causes the compiler to assume the called
+-function is close enough to use the normal calling convention,
+-overriding the @option{-mtf} command-line option.
++ at item OS_main
++ at itemx OS_task
++ at cindex @code{OS_main} function attribute, AVR
++ at cindex @code{OS_task} function attribute, AVR
++On AVR, functions with the @code{OS_main} or @code{OS_task} attribute
++do not save/restore any call-saved register in their prologue/epilogue.
++
++The @code{OS_main} attribute can be used when there @emph{is
++guarantee} that interrupts are disabled at the time when the function
++is entered.  This saves resources when the stack pointer has to be
++changed to set up a frame for local variables.
++
++The @code{OS_task} attribute can be used when there is @emph{no
++guarantee} that interrupts are disabled at that time when the function
++is entered like for, e at .g@. task functions in a multi-threading operating
++system. In that case, changing the stack pointer register is
++guarded by save/clear/restore of the global interrupt enable flag.
++
++The differences to the @code{naked} function attribute are:
++ at itemize @bullet
++ at item @code{naked} functions do not have a return instruction whereas 
++ at code{OS_main} and @code{OS_task} functions have a @code{RET} or
++ at code{RETI} return instruction.
++ at item @code{naked} functions do not set up a frame for local variables
++or a frame pointer whereas @code{OS_main} and @code{OS_task} do this
++as needed.
++ at end itemize
++
++ at item signal
++ at cindex @code{signal} function attribute, AVR
++Use this attribute on the AVR to indicate that the specified
++function is an interrupt handler.  The compiler generates function
++entry and exit sequences suitable for use in an interrupt handler when this
++attribute is present.
++
++See also the @code{interrupt} function attribute. 
++
++The AVR hardware globally disables interrupts when an interrupt is executed.
++Interrupt handler functions defined with the @code{signal} attribute
++do not re-enable interrupts.  It is save to enable interrupts in a
++ at code{signal} handler.  This ``save'' only applies to the code
++generated by the compiler and not to the IRQ layout of the
++application which is responsibility of the application.
++
++If both @code{signal} and @code{interrupt} are specified for the same
++function, @code{signal} is silently ignored.
++ at end table
++
++ at node Blackfin Function Attributes
++ at subsection Blackfin Function Attributes
++
++These function attributes are supported by the Blackfin back end:
++
++ at table @code
++
++ at item exception_handler
++ at cindex @code{exception_handler} function attribute
++ at cindex exception handler functions, Blackfin
++Use this attribute on the Blackfin to indicate that the specified function
++is an exception handler.  The compiler generates function entry and
++exit sequences suitable for use in an exception handler when this
++attribute is present.
++
++ at item interrupt_handler
++ at cindex @code{interrupt_handler} function attribute, Blackfin
++Use this attribute to
++indicate that the specified function is an interrupt handler.  The compiler
++generates function entry and exit sequences suitable for use in an
++interrupt handler when this attribute is present.
++
++ at item kspisusp
++ at cindex @code{kspisusp} function attribute, Blackfin
++ at cindex User stack pointer in interrupts on the Blackfin
++When used together with @code{interrupt_handler}, @code{exception_handler}
++or @code{nmi_handler}, code is generated to load the stack pointer
++from the USP register in the function prologue.
++
++ at item l1_text
++ at cindex @code{l1_text} function attribute, Blackfin
++This attribute specifies a function to be placed into L1 Instruction
++SRAM at . The function is put into a specific section named @code{.l1.text}.
++With @option{-mfdpic}, function calls with a such function as the callee
++or caller uses inlined PLT.
++
++ at item l2
++ at cindex @code{l2} function attribute, Blackfin
++This attribute specifies a function to be placed into L2
++SRAM. The function is put into a specific section named
++ at code{.l2.text}. With @option{-mfdpic}, callers of such functions use
++an inlined PLT.
++
++ at item longcall
++ at itemx shortcall
++ at cindex indirect calls, Blackfin
++ at cindex @code{longcall} function attribute, Blackfin
++ at cindex @code{shortcall} function attribute, Blackfin
++The @code{longcall} attribute
++indicates that the function might be far away from the call site and
++require a different (more expensive) calling sequence.  The
++ at code{shortcall} attribute indicates that the function is always close
++enough for the shorter calling sequence to be used.  These attributes
++override the @option{-mlongcall} switch.
+ 
+ @item nesting
+ @cindex @code{nesting} function attribute, Blackfin
+@@ -3415,410 +3699,349 @@ is an NMI handler.  The compiler generates function entry and
+ exit sequences suitable for use in an NMI handler when this
+ attribute is present.
+ 
+- at item nocompression
+- at cindex @code{nocompression} function attribute, MIPS
+-On MIPS targets, you can use the @code{nocompression} function attribute
+-to locally turn off MIPS16 and microMIPS code generation.  This attribute
+-overrides the @option{-mips16} and @option{-mmicromips} options on the
+-command line (@pxref{MIPS Options}).
+-
+- at item no_instrument_function
+- at cindex @code{no_instrument_function} function attribute
+- at opindex finstrument-functions
+-If @option{-finstrument-functions} is given, profiling function calls are
+-generated at entry and exit of most user-compiled functions.
+-Functions with this attribute are not so instrumented.
+-
+- at item no_split_stack
+- at cindex @code{no_split_stack} function attribute
+- at opindex fsplit-stack
+-If @option{-fsplit-stack} is given, functions have a small
+-prologue which decides whether to split the stack.  Functions with the
+- at code{no_split_stack} attribute do not have that prologue, and thus
+-may run with only a small amount of stack space available.
++ at item saveall
++ at cindex @code{saveall} function attribute, Blackfin
++ at cindex save all registers on the Blackfin
++Use this attribute to indicate that
++all registers except the stack pointer should be saved in the prologue
++regardless of whether they are used or not.
++ at end table
+ 
+- at item stack_protect
+- at cindex @code{stack_protect} function attribute
+-This function attribute make a stack protection of the function if 
+-flags @option{fstack-protector} or @option{fstack-protector-strong}
+-or @option{fstack-protector-explicit} are set.
++ at node CR16 Function Attributes
++ at subsection CR16 Function Attributes
+ 
+- at item noinline
+- at cindex @code{noinline} function attribute
+-This function attribute prevents a function from being considered for
+-inlining.
+- at c Don't enumerate the optimizations by name here; we try to be
+- at c future-compatible with this mechanism.
+-If the function does not have side-effects, there are optimizations
+-other than inlining that cause function calls to be optimized away,
+-although the function call is live.  To keep such calls from being
+-optimized away, put
+- at smallexample
+-asm ("");
+- at end smallexample
++These function attributes are supported by the CR16 back end:
+ 
+- at noindent
+-(@pxref{Extended Asm}) in the called function, to serve as a special
+-side-effect.
++ at table @code
++ at item interrupt
++ at cindex @code{interrupt} function attribute, CR16
++Use this attribute to indicate
++that the specified function is an interrupt handler.  The compiler generates
++function entry and exit sequences suitable for use in an interrupt handler
++when this attribute is present.
++ at end table
+ 
+- at item noclone
+- at cindex @code{noclone} function attribute
+-This function attribute prevents a function from being considered for
+-cloning---a mechanism that produces specialized copies of functions
+-and which is (currently) performed by interprocedural constant
+-propagation.
++ at node Epiphany Function Attributes
++ at subsection Epiphany Function Attributes
+ 
+- at item no_icf
+- at cindex @code{no_icf} function attribute
+-This function attribute prevents a functions from being merged with another
+-semantically equivalent function.
++These function attributes are supported by the Epiphany back end:
+ 
+- at item nonnull (@var{arg-index}, @dots{})
+- at cindex @code{nonnull} function attribute
+-The @code{nonnull} attribute specifies that some function parameters should
+-be non-null pointers.  For instance, the declaration:
++ at table @code
++ at item disinterrupt
++ at cindex @code{disinterrupt} function attribute, Epiphany
++This attribute causes the compiler to emit
++instructions to disable interrupts for the duration of the given
++function.
+ 
+- at smallexample
+-extern void *
+-my_memcpy (void *dest, const void *src, size_t len)
+-        __attribute__((nonnull (1, 2)));
+- at end smallexample
++ at item forwarder_section
++ at cindex @code{forwarder_section} function attribute, Epiphany
++This attribute modifies the behavior of an interrupt handler.
++The interrupt handler may be in external memory which cannot be
++reached by a branch instruction, so generate a local memory trampoline
++to transfer control.  The single parameter identifies the section where
++the trampoline is placed.
+ 
+- at noindent
+-causes the compiler to check that, in calls to @code{my_memcpy},
+-arguments @var{dest} and @var{src} are non-null.  If the compiler
+-determines that a null pointer is passed in an argument slot marked
+-as non-null, and the @option{-Wnonnull} option is enabled, a warning
+-is issued.  The compiler may also choose to make optimizations based
+-on the knowledge that certain function arguments will never be null.
++ at item interrupt
++ at cindex @code{interrupt} function attribute, Epiphany
++Use this attribute to indicate
++that the specified function is an interrupt handler.  The compiler generates
++function entry and exit sequences suitable for use in an interrupt handler
++when this attribute is present.  It may also generate
++a special section with code to initialize the interrupt vector table.
+ 
+-If no argument index list is given to the @code{nonnull} attribute,
+-all pointer arguments are marked as non-null.  To illustrate, the
+-following declaration is equivalent to the previous example:
++On Epiphany targets one or more optional parameters can be added like this:
+ 
+ @smallexample
+-extern void *
+-my_memcpy (void *dest, const void *src, size_t len)
+-        __attribute__((nonnull));
++void __attribute__ ((interrupt ("dma0, dma1"))) universal_dma_handler ();
+ @end smallexample
+ 
+- at item no_reorder
+- at cindex @code{no_reorder} function attribute
+-Do not reorder functions or variables marked @code{no_reorder}
+-against each other or top level assembler statements the executable.
+-The actual order in the program will depend on the linker command
+-line. Static variables marked like this are also not removed.
+-This has a similar effect
+-as the @option{-fno-toplevel-reorder} option, but only applies to the
+-marked symbols.
++Permissible values for these parameters are: @w{@code{reset}},
++ at w{@code{software_exception}}, @w{@code{page_miss}},
++ at w{@code{timer0}}, @w{@code{timer1}}, @w{@code{message}},
++ at w{@code{dma0}}, @w{@code{dma1}}, @w{@code{wand}} and @w{@code{swi}}.
++Multiple parameters indicate that multiple entries in the interrupt
++vector table should be initialized for this function, i.e.@: for each
++parameter @w{@var{name}}, a jump to the function is emitted in
++the section @w{ivt_entry_ at var{name}}.  The parameter(s) may be omitted
++entirely, in which case no interrupt vector table entry is provided.
+ 
+- at item returns_nonnull
+- at cindex @code{returns_nonnull} function attribute
+-The @code{returns_nonnull} attribute specifies that the function
+-return value should be a non-null pointer.  For instance, the declaration:
++Note that interrupts are enabled inside the function
++unless the @code{disinterrupt} attribute is also specified.
+ 
++The following examples are all valid uses of these attributes on
++Epiphany targets:
+ @smallexample
+-extern void *
+-mymalloc (size_t len) __attribute__((returns_nonnull));
++void __attribute__ ((interrupt)) universal_handler ();
++void __attribute__ ((interrupt ("dma1"))) dma1_handler ();
++void __attribute__ ((interrupt ("dma0, dma1"))) 
++  universal_dma_handler ();
++void __attribute__ ((interrupt ("timer0"), disinterrupt))
++  fast_timer_handler ();
++void __attribute__ ((interrupt ("dma0, dma1"), 
++                     forwarder_section ("tramp")))
++  external_dma_handler ();
+ @end smallexample
+ 
+- at noindent
+-lets the compiler optimize callers based on the knowledge
+-that the return value will never be null.
++ at item long_call
++ at itemx short_call
++ at cindex @code{long_call} function attribute, Epiphany
++ at cindex @code{short_call} function attribute, Epiphany
++ at cindex indirect calls, Epiphany
++These attributes specify how a particular function is called.
++These attributes override the
++ at option{-mlong-calls} (@pxref{Adapteva Epiphany Options})
++command-line switch and @code{#pragma long_calls} settings.
++ at end table
+ 
+- at item noreturn
+- at cindex @code{noreturn} function attribute
+-A few standard library functions, such as @code{abort} and @code{exit},
+-cannot return.  GCC knows this automatically.  Some programs define
+-their own functions that never return.  You can declare them
+- at code{noreturn} to tell the compiler this fact.  For example,
+ 
+- at smallexample
+- at group
+-void fatal () __attribute__ ((noreturn));
++ at node H8/300 Function Attributes
++ at subsection H8/300 Function Attributes
+ 
+-void
+-fatal (/* @r{@dots{}} */)
+-@{
+-  /* @r{@dots{}} */ /* @r{Print error message.} */ /* @r{@dots{}} */
+-  exit (1);
+-@}
+- at end group
+- at end smallexample
++These function attributes are available for H8/300 targets:
+ 
+-The @code{noreturn} keyword tells the compiler to assume that
+- at code{fatal} cannot return.  It can then optimize without regard to what
+-would happen if @code{fatal} ever did return.  This makes slightly
+-better code.  More importantly, it helps avoid spurious warnings of
+-uninitialized variables.
++ at table @code
++ at item function_vector
++ at cindex @code{function_vector} function attribute, H8/300
++Use this attribute on the H8/300, H8/300H, and H8S to indicate 
++that the specified function should be called through the function vector.
++Calling a function through the function vector reduces code size; however,
++the function vector has a limited size (maximum 128 entries on the H8/300
++and 64 entries on the H8/300H and H8S)
++and shares space with the interrupt vector.
+ 
+-The @code{noreturn} keyword does not affect the exceptional path when that
+-applies: a @code{noreturn}-marked function may still return to the caller
+-by throwing an exception or calling @code{longjmp}.
++ at item interrupt_handler
++ at cindex @code{interrupt_handler} function attribute, H8/300
++Use this attribute on the H8/300, H8/300H, and H8S to
++indicate that the specified function is an interrupt handler.  The compiler
++generates function entry and exit sequences suitable for use in an
++interrupt handler when this attribute is present.
+ 
+-Do not assume that registers saved by the calling function are
+-restored before calling the @code{noreturn} function.
++ at item saveall
++ at cindex @code{saveall} function attribute, H8/300
++ at cindex save all registers on the H8/300, H8/300H, and H8S
++Use this attribute on the H8/300, H8/300H, and H8S to indicate that
++all registers except the stack pointer should be saved in the prologue
++regardless of whether they are used or not.
++ at end table
+ 
+-It does not make sense for a @code{noreturn} function to have a return
+-type other than @code{void}.
++ at node IA-64 Function Attributes
++ at subsection IA-64 Function Attributes
+ 
+- at item nothrow
+- at cindex @code{nothrow} function attribute
+-The @code{nothrow} attribute is used to inform the compiler that a
+-function cannot throw an exception.  For example, most functions in
+-the standard C library can be guaranteed not to throw an exception
+-with the notable exceptions of @code{qsort} and @code{bsearch} that
+-take function pointer arguments.
++These function attributes are supported on IA-64 targets:
+ 
+- at item nosave_low_regs
+- at cindex @code{nosave_low_regs} function attribute, SH
+-Use this attribute on SH targets to indicate that an @code{interrupt_handler}
+-function should not save and restore registers R0..R7.  This can be used on SH3*
+-and SH4* targets that have a second R0..R7 register bank for non-reentrant
+-interrupt handlers.
++ at table @code
++ at item syscall_linkage
++ at cindex @code{syscall_linkage} function attribute, IA-64
++This attribute is used to modify the IA-64 calling convention by marking
++all input registers as live at all function exits.  This makes it possible
++to restart a system call after an interrupt without having to save/restore
++the input registers.  This also prevents kernel data from leaking into
++application code.
+ 
+- at item optimize
+- at cindex @code{optimize} function attribute
+-The @code{optimize} attribute is used to specify that a function is to
+-be compiled with different optimization options than specified on the
+-command line.  Arguments can either be numbers or strings.  Numbers
+-are assumed to be an optimization level.  Strings that begin with
+- at code{O} are assumed to be an optimization option, while other options
+-are assumed to be used with a @code{-f} prefix.  You can also use the
+- at samp{#pragma GCC optimize} pragma to set the optimization options
+-that affect more than one function.
+- at xref{Function Specific Option Pragmas}, for details about the
+- at samp{#pragma GCC optimize} pragma.
++ at item version_id
++ at cindex @code{version_id} function attribute, IA-64
++This IA-64 HP-UX attribute, attached to a global variable or function, renames a
++symbol to contain a version string, thus allowing for function level
++versioning.  HP-UX system header files may use function level versioning
++for some system calls.
+ 
+-This can be used for instance to have frequently-executed functions
+-compiled with more aggressive optimization options that produce faster
+-and larger code, while other functions can be compiled with less
+-aggressive options.
++ at smallexample
++extern int foo () __attribute__((version_id ("20040821")));
++ at end smallexample
+ 
+- at item OS_main
+- at itemx OS_task
+- at cindex @code{OS_main} function attribute, AVR
+- at cindex @code{OS_task} function attribute, AVR
+-On AVR, functions with the @code{OS_main} or @code{OS_task} attribute
+-do not save/restore any call-saved register in their prologue/epilogue.
++ at noindent
++Calls to @code{foo} are mapped to calls to @code{foo@{20040821@}}.
++ at end table
+ 
+-The @code{OS_main} attribute can be used when there @emph{is
+-guarantee} that interrupts are disabled at the time when the function
+-is entered.  This saves resources when the stack pointer has to be
+-changed to set up a frame for local variables.
++ at node M32C Function Attributes
++ at subsection M32C Function Attributes
+ 
+-The @code{OS_task} attribute can be used when there is @emph{no
+-guarantee} that interrupts are disabled at that time when the function
+-is entered like for, e at .g@. task functions in a multi-threading operating
+-system. In that case, changing the stack pointer register is
+-guarded by save/clear/restore of the global interrupt enable flag.
++These function attributes are supported by the M32C back end:
+ 
+-The differences to the @code{naked} function attribute are:
+- at itemize @bullet
+- at item @code{naked} functions do not have a return instruction whereas 
+- at code{OS_main} and @code{OS_task} functions have a @code{RET} or
+- at code{RETI} return instruction.
+- at item @code{naked} functions do not set up a frame for local variables
+-or a frame pointer whereas @code{OS_main} and @code{OS_task} do this
+-as needed.
+- at end itemize
++ at table @code
++ at item bank_switch
++ at cindex @code{bank_switch} function attribute, M32C
++When added to an interrupt handler with the M32C port, causes the
++prologue and epilogue to use bank switching to preserve the registers
++rather than saving them on the stack.
+ 
+- at item pcs
+- at cindex @code{pcs} function attribute, ARM
++ at item fast_interrupt
++ at cindex @code{fast_interrupt} function attribute, M32C
++Use this attribute on the M32C port to indicate that the specified
++function is a fast interrupt handler.  This is just like the
++ at code{interrupt} attribute, except that @code{freit} is used to return
++instead of @code{reit}.
+ 
+-The @code{pcs} attribute can be used to control the calling convention
+-used for a function on ARM.  The attribute takes an argument that specifies
+-the calling convention to use.
++ at item function_vector
++ at cindex @code{function_vector} function attribute, M16C/M32C
++On M16C/M32C targets, the @code{function_vector} attribute declares a
++special page subroutine call function. Use of this attribute reduces
++the code size by 2 bytes for each call generated to the
++subroutine. The argument to the attribute is the vector number entry
++from the special page vector table which contains the 16 low-order
++bits of the subroutine's entry address. Each vector table has special
++page number (18 to 255) that is used in @code{jsrs} instructions.
++Jump addresses of the routines are generated by adding 0x0F0000 (in
++case of M16C targets) or 0xFF0000 (in case of M32C targets), to the
++2-byte addresses set in the vector table. Therefore you need to ensure
++that all the special page vector routines should get mapped within the
++address range 0x0F0000 to 0x0FFFFF (for M16C) and 0xFF0000 to 0xFFFFFF
++(for M32C).
+ 
+-When compiling using the AAPCS ABI (or a variant of it) then valid
+-values for the argument are @code{"aapcs"} and @code{"aapcs-vfp"}.  In
+-order to use a variant other than @code{"aapcs"} then the compiler must
+-be permitted to use the appropriate co-processor registers (i.e., the
+-VFP registers must be available in order to use @code{"aapcs-vfp"}).
+-For example,
++In the following example 2 bytes are saved for each call to
++function @code{foo}.
+ 
+ @smallexample
+-/* Argument passed in r0, and result returned in r0+r1.  */
+-double f2d (float) __attribute__((pcs("aapcs")));
++void foo (void) __attribute__((function_vector(0x18)));
++void foo (void)
++@{
++@}
++
++void bar (void)
++@{
++    foo();
++@}
+ @end smallexample
+ 
+-Variadic functions always use the @code{"aapcs"} calling convention and
+-the compiler rejects attempts to specify an alternative.
++If functions are defined in one file and are called in another file,
++then be sure to write this declaration in both files.
+ 
+- at item pure
+- at cindex @code{pure} function attribute
+-Many functions have no effects except the return value and their
+-return value depends only on the parameters and/or global variables.
+-Such a function can be subject
+-to common subexpression elimination and loop optimization just as an
+-arithmetic operator would be.  These functions should be declared
+-with the attribute @code{pure}.  For example,
++This attribute is ignored for R8C target.
+ 
+- at smallexample
+-int square (int) __attribute__ ((pure));
+- at end smallexample
++ at item interrupt
++ at cindex @code{interrupt} function attribute, M32C
++Use this attribute to indicate
++that the specified function is an interrupt handler.  The compiler generates
++function entry and exit sequences suitable for use in an interrupt handler
++when this attribute is present.
++ at end table
+ 
+- at noindent
+-says that the hypothetical function @code{square} is safe to call
+-fewer times than the program says.
++ at node M32R/D Function Attributes
++ at subsection M32R/D Function Attributes
+ 
+-Some of common examples of pure functions are @code{strlen} or @code{memcmp}.
+-Interesting non-pure functions are functions with infinite loops or those
+-depending on volatile memory or other system resource, that may change between
+-two consecutive calls (such as @code{feof} in a multithreading environment).
++These function attributes are supported by the M32R/D back end:
+ 
+- at item hot
+- at cindex @code{hot} function attribute
+-The @code{hot} attribute on a function is used to inform the compiler that
+-the function is a hot spot of the compiled program.  The function is
+-optimized more aggressively and on many targets it is placed into a special
+-subsection of the text section so all hot functions appear close together,
+-improving locality.
++ at table @code
++ at item interrupt
++ at cindex @code{interrupt} function attribute, M32R/D
++Use this attribute to indicate
++that the specified function is an interrupt handler.  The compiler generates
++function entry and exit sequences suitable for use in an interrupt handler
++when this attribute is present.
+ 
+-When profile feedback is available, via @option{-fprofile-use}, hot functions
+-are automatically detected and this attribute is ignored.
++ at item model (@var{model-name})
++ at cindex @code{model} function attribute, M32R/D
++ at cindex function addressability on the M32R/D
+ 
+- at item cold
+- at cindex @code{cold} function attribute
+-The @code{cold} attribute on functions is used to inform the compiler that
+-the function is unlikely to be executed.  The function is optimized for
+-size rather than speed and on many targets it is placed into a special
+-subsection of the text section so all cold functions appear close together,
+-improving code locality of non-cold parts of program.  The paths leading
+-to calls of cold functions within code are marked as unlikely by the branch
+-prediction mechanism.  It is thus useful to mark functions used to handle
+-unlikely conditions, such as @code{perror}, as cold to improve optimization
+-of hot functions that do call marked functions in rare occasions.
++On the M32R/D, use this attribute to set the addressability of an
++object, and of the code generated for a function.  The identifier
++ at var{model-name} is one of @code{small}, @code{medium}, or
++ at code{large}, representing each of the code models.
+ 
+-When profile feedback is available, via @option{-fprofile-use}, cold functions
+-are automatically detected and this attribute is ignored.
++Small model objects live in the lower 16MB of memory (so that their
++addresses can be loaded with the @code{ld24} instruction), and are
++callable with the @code{bl} instruction.
+ 
+- at item no_sanitize_address
+- at itemx no_address_safety_analysis
+- at cindex @code{no_sanitize_address} function attribute
+-The @code{no_sanitize_address} attribute on functions is used
+-to inform the compiler that it should not instrument memory accesses
+-in the function when compiling with the @option{-fsanitize=address} option.
+-The @code{no_address_safety_analysis} is a deprecated alias of the
+- at code{no_sanitize_address} attribute, new code should use
+- at code{no_sanitize_address}.
++Medium model objects may live anywhere in the 32-bit address space (the
++compiler generates @code{seth/add3} instructions to load their addresses),
++and are callable with the @code{bl} instruction.
+ 
+- at item no_sanitize_thread
+- at cindex @code{no_sanitize_thread} function attribute
+-The @code{no_sanitize_thread} attribute on functions is used
+-to inform the compiler that it should not instrument memory accesses
+-in the function when compiling with the @option{-fsanitize=thread} option.
++Large model objects may live anywhere in the 32-bit address space (the
++compiler generates @code{seth/add3} instructions to load their addresses),
++and may not be reachable with the @code{bl} instruction (the compiler
++generates the much slower @code{seth/add3/jl} instruction sequence).
++ at end table
+ 
+- at item no_sanitize_undefined
+- at cindex @code{no_sanitize_undefined} function attribute
+-The @code{no_sanitize_undefined} attribute on functions is used
+-to inform the compiler that it should not check for undefined behavior
+-in the function when compiling with the @option{-fsanitize=undefined} option.
++ at node m68k Function Attributes
++ at subsection m68k Function Attributes
+ 
+- at item bnd_legacy
+- at cindex @code{bnd_legacy} function attribute
+- at cindex Pointer Bounds Checker attributes
+-The @code{bnd_legacy} attribute on functions is used to inform the
+-compiler that the function should not be instrumented when compiled
+-with the @option{-fcheck-pointer-bounds} option.
++These function attributes are supported by the m68k back end:
+ 
+- at item bnd_instrument
+- at cindex @code{bnd_instrument} function attribute
+-The @code{bnd_instrument} attribute on functions is used to inform the
+-compiler that the function should be instrumented when compiled
+-with the @option{-fchkp-instrument-marked-only} option.
++ at table @code
++ at item interrupt
++ at itemx interrupt_handler
++ at cindex @code{interrupt} function attribute, m68k
++ at cindex @code{interrupt_handler} function attribute, m68k
++Use this attribute to
++indicate that the specified function is an interrupt handler.  The compiler
++generates function entry and exit sequences suitable for use in an
++interrupt handler when this attribute is present.  Either name may be used.
+ 
+- at item regparm (@var{number})
+- at cindex @code{regparm} function attribute, x86
+- at cindex functions that are passed arguments in registers on x86-32
+-On x86-32 targets, the @code{regparm} attribute causes the compiler to
+-pass arguments number one to @var{number} if they are of integral type
+-in registers EAX, EDX, and ECX instead of on the stack.  Functions that
+-take a variable number of arguments continue to be passed all of their
+-arguments on the stack.
++ at item interrupt_thread
++ at cindex @code{interrupt_thread} function attribute, fido
++Use this attribute on fido, a subarchitecture of the m68k, to indicate
++that the specified function is an interrupt handler that is designed
++to run as a thread.  The compiler omits generate prologue/epilogue
++sequences and replaces the return instruction with a @code{sleep}
++instruction.  This attribute is available only on fido.
++ at end table
+ 
+-Beware that on some ELF systems this attribute is unsuitable for
+-global functions in shared libraries with lazy binding (which is the
+-default).  Lazy binding sends the first call via resolving code in
+-the loader, which might assume EAX, EDX and ECX can be clobbered, as
+-per the standard calling conventions.  Solaris 8 is affected by this.
+-Systems with the GNU C Library version 2.1 or higher
+-and FreeBSD are believed to be
+-safe since the loaders there save EAX, EDX and ECX.  (Lazy binding can be
+-disabled with the linker or the loader if desired, to avoid the
+-problem.)
++ at node MCORE Function Attributes
++ at subsection MCORE Function Attributes
++
++These function attributes are supported by the MCORE back end:
+ 
+- at item reset
+- at cindex @code{reset} function attribute, NDS32
+- at cindex reset handler functions
+-Use this attribute on the NDS32 target to indicate that the specified function
+-is a reset handler.  The compiler will generate corresponding sections
+-for use in a reset handler.  You can use the following attributes
+-to provide extra exception handling:
+ @table @code
+- at item nmi
+- at cindex @code{nmi} function attribute, NDS32
+-Provide a user-defined function to handle NMI exception.
+- at item warm
+- at cindex @code{warm} function attribute, NDS32
+-Provide a user-defined function to handle warm reset exception.
++ at item naked
++ at cindex @code{naked} function attribute, MCORE
++This attribute allows the compiler to construct the
++requisite function declaration, while allowing the body of the
++function to be assembly code. The specified function will not have
++prologue/epilogue sequences generated by the compiler. Only basic
++ at code{asm} statements can safely be included in naked functions
++(@pxref{Basic Asm}). While using extended @code{asm} or a mixture of
++basic @code{asm} and C code may appear to work, they cannot be
++depended upon to work reliably and are not supported.
+ @end table
+ 
+- at item sseregparm
+- at cindex @code{sseregparm} function attribute, x86
+-On x86-32 targets with SSE support, the @code{sseregparm} attribute
+-causes the compiler to pass up to 3 floating-point arguments in
+-SSE registers instead of on the stack.  Functions that take a
+-variable number of arguments continue to pass all of their
+-floating-point arguments on the stack.
++ at node MeP Function Attributes
++ at subsection MeP Function Attributes
+ 
+- at item force_align_arg_pointer
+- at cindex @code{force_align_arg_pointer} function attribute, x86
+-On x86 targets, the @code{force_align_arg_pointer} attribute may be
+-applied to individual function definitions, generating an alternate
+-prologue and epilogue that realigns the run-time stack if necessary.
+-This supports mixing legacy codes that run with a 4-byte aligned stack
+-with modern codes that keep a 16-byte stack for SSE compatibility.
++These function attributes are supported by the MeP back end:
++
++ at table @code
++ at item disinterrupt
++ at cindex @code{disinterrupt} function attribute, MeP
++On MeP targets, this attribute causes the compiler to emit
++instructions to disable interrupts for the duration of the given
++function.
+ 
+- at item renesas
+- at cindex @code{renesas} function attribute, SH
+-On SH targets this attribute specifies that the function or struct follows the
+-Renesas ABI.
++ at item interrupt
++ at cindex @code{interrupt} function attribute, MeP
++Use this attribute to indicate
++that the specified function is an interrupt handler.  The compiler generates
++function entry and exit sequences suitable for use in an interrupt handler
++when this attribute is present.
+ 
+- at item resbank
+- at cindex @code{resbank} function attribute, SH
+-On the SH2A target, this attribute enables the high-speed register
+-saving and restoration using a register bank for @code{interrupt_handler}
+-routines.  Saving to the bank is performed automatically after the CPU
+-accepts an interrupt that uses a register bank.
++ at item near
++ at cindex @code{near} function attribute, MeP
++This attribute causes the compiler to assume the called
++function is close enough to use the normal calling convention,
++overriding the @option{-mtf} command-line option.
+ 
+-The nineteen 32-bit registers comprising general register R0 to R14,
+-control register GBR, and system registers MACH, MACL, and PR and the
+-vector table address offset are saved into a register bank.  Register
+-banks are stacked in first-in last-out (FILO) sequence.  Restoration
+-from the bank is executed by issuing a RESBANK instruction.
++ at item far
++ at cindex @code{far} function attribute, MeP
++On MeP targets this causes the compiler to use a calling convention
++that assumes the called function is too far away for the built-in
++addressing modes.
+ 
+- at item returns_twice
+- at cindex @code{returns_twice} function attribute
+-The @code{returns_twice} attribute tells the compiler that a function may
+-return more than one time.  The compiler ensures that all registers
+-are dead before calling such a function and emits a warning about
+-the variables that may be clobbered after the second return from the
+-function.  Examples of such functions are @code{setjmp} and @code{vfork}.
+-The @code{longjmp}-like counterpart of such function, if any, might need
+-to be marked with the @code{noreturn} attribute.
++ at item vliw
++ at cindex @code{vliw} function attribute, MeP
++The @code{vliw} attribute tells the compiler to emit
++instructions in VLIW mode instead of core mode.  Note that this
++attribute is not allowed unless a VLIW coprocessor has been configured
++and enabled through command-line options.
++ at end table
+ 
+- at item saveall
+- at cindex @code{saveall} function attribute, Blackfin
+- at cindex @code{saveall} function attribute, H8/300
+- at cindex save all registers on the Blackfin, H8/300, H8/300H, and H8S
+-Use this attribute on the Blackfin, H8/300, H8/300H, and H8S to indicate that
+-all registers except the stack pointer should be saved in the prologue
+-regardless of whether they are used or not.
++ at node MicroBlaze Function Attributes
++ at subsection MicroBlaze Function Attributes
+ 
++These function attributes are supported on MicroBlaze targets:
++
++ at table @code
+ @item save_volatiles
+ @cindex @code{save_volatiles} function attribute, MicroBlaze
+-Use this attribute on the MicroBlaze to indicate that the function is
++Use this attribute to indicate that the function is
+ an interrupt handler.  All volatile registers (in addition to non-volatile
+ registers) are saved in the function prologue.  If the function is a leaf
+ function, only volatiles used by the function are saved.  A normal function
+@@ -3827,7 +4050,7 @@ return is generated instead of a return from interrupt.
+ @item break_handler
+ @cindex @code{break_handler} function attribute, MicroBlaze
+ @cindex break handler functions
+-Use this attribute on the MicroBlaze ports to indicate that
++Use this attribute to indicate that
+ the specified function is a break handler.  The compiler generates function
+ entry and exit sequences suitable for use in an break handler when this
+ attribute is present. The return from @code{break_handler} is done through
+@@ -3836,290 +4059,404 @@ the @code{rtbd} instead of @code{rtsd}.
+ @smallexample
+ void f () __attribute__ ((break_handler));
+ @end smallexample
++ at end table
+ 
+- at item section ("@var{section-name}")
+- at cindex @code{section} function attribute
+-Normally, the compiler places the code it generates in the @code{text} section.
+-Sometimes, however, you need additional sections, or you need certain
+-particular functions to appear in special sections.  The @code{section}
+-attribute specifies that a function lives in a particular section.
+-For example, the declaration:
++ at node Microsoft Windows Function Attributes
++ at subsection Microsoft Windows Function Attributes
+ 
+- at smallexample
+-extern void foobar (void) __attribute__ ((section ("bar")));
+- at end smallexample
++The following attributes are available on Microsoft Windows and Symbian OS
++targets.
+ 
+- at noindent
+-puts the function @code{foobar} in the @code{bar} section.
++ at table @code
++ at item dllexport
++ at cindex @code{dllexport} function attribute
++ at cindex @code{__declspec(dllexport)}
++On Microsoft Windows targets and Symbian OS targets the
++ at code{dllexport} attribute causes the compiler to provide a global
++pointer to a pointer in a DLL, so that it can be referenced with the
++ at code{dllimport} attribute.  On Microsoft Windows targets, the pointer
++name is formed by combining @code{_imp__} and the function or variable
++name.
+ 
+-Some file formats do not support arbitrary sections so the @code{section}
+-attribute is not available on all platforms.
+-If you need to map the entire contents of a module to a particular
+-section, consider using the facilities of the linker instead.
++You can use @code{__declspec(dllexport)} as a synonym for
++ at code{__attribute__ ((dllexport))} for compatibility with other
++compilers.
+ 
+- at item sentinel
+- at cindex @code{sentinel} function attribute
+-This function attribute ensures that a parameter in a function call is
+-an explicit @code{NULL}.  The attribute is only valid on variadic
+-functions.  By default, the sentinel is located at position zero, the
+-last parameter of the function call.  If an optional integer position
+-argument P is supplied to the attribute, the sentinel must be located at
+-position P counting backwards from the end of the argument list.
++On systems that support the @code{visibility} attribute, this
++attribute also implies ``default'' visibility.  It is an error to
++explicitly specify any other visibility.
+ 
+- at smallexample
+-__attribute__ ((sentinel))
+-is equivalent to
+-__attribute__ ((sentinel(0)))
+- at end smallexample
++GCC's default behavior is to emit all inline functions with the
++ at code{dllexport} attribute.  Since this can cause object file-size bloat,
++you can use @option{-fno-keep-inline-dllexport}, which tells GCC to
++ignore the attribute for inlined functions unless the 
++ at option{-fkeep-inline-functions} flag is used instead.
+ 
+-The attribute is automatically set with a position of 0 for the built-in
+-functions @code{execl} and @code{execlp}.  The built-in function
+- at code{execle} has the attribute set with a position of 1.
++The attribute is ignored for undefined symbols.
+ 
+-A valid @code{NULL} in this context is defined as zero with any pointer
+-type.  If your system defines the @code{NULL} macro with an integer type
+-then you need to add an explicit cast.  GCC replaces @code{stddef.h}
+-with a copy that redefines NULL appropriately.
++When applied to C++ classes, the attribute marks defined non-inlined
++member functions and static data members as exports.  Static consts
++initialized in-class are not marked unless they are also defined
++out-of-class.
+ 
+-The warnings for missing or incorrect sentinels are enabled with
+- at option{-Wformat}.
++For Microsoft Windows targets there are alternative methods for
++including the symbol in the DLL's export table such as using a
++ at file{.def} file with an @code{EXPORTS} section or, with GNU ld, using
++the @option{--export-all} linker flag.
++
++ at item dllimport
++ at cindex @code{dllimport} function attribute
++ at cindex @code{__declspec(dllimport)}
++On Microsoft Windows and Symbian OS targets, the @code{dllimport}
++attribute causes the compiler to reference a function or variable via
++a global pointer to a pointer that is set up by the DLL exporting the
++symbol.  The attribute implies @code{extern}.  On Microsoft Windows
++targets, the pointer name is formed by combining @code{_imp__} and the
++function or variable name.
+ 
+- at item short_call
+-See @code{long_call}.
++You can use @code{__declspec(dllimport)} as a synonym for
++ at code{__attribute__ ((dllimport))} for compatibility with other
++compilers.
+ 
+- at item shortcall
+-See @code{longcall}.
++On systems that support the @code{visibility} attribute, this
++attribute also implies ``default'' visibility.  It is an error to
++explicitly specify any other visibility.
+ 
+- at item signal
+- at cindex @code{signal} function attribute, AVR
+-Use this attribute on the AVR to indicate that the specified
+-function is an interrupt handler.  The compiler generates function
+-entry and exit sequences suitable for use in an interrupt handler when this
+-attribute is present.
++Currently, the attribute is ignored for inlined functions.  If the
++attribute is applied to a symbol @emph{definition}, an error is reported.
++If a symbol previously declared @code{dllimport} is later defined, the
++attribute is ignored in subsequent references, and a warning is emitted.
++The attribute is also overridden by a subsequent declaration as
++ at code{dllexport}.
+ 
+-See also the @code{interrupt} function attribute. 
++When applied to C++ classes, the attribute marks non-inlined
++member functions and static data members as imports.  However, the
++attribute is ignored for virtual methods to allow creation of vtables
++using thunks.
+ 
+-The AVR hardware globally disables interrupts when an interrupt is executed.
+-Interrupt handler functions defined with the @code{signal} attribute
+-do not re-enable interrupts.  It is save to enable interrupts in a
+- at code{signal} handler.  This ``save'' only applies to the code
+-generated by the compiler and not to the IRQ layout of the
+-application which is responsibility of the application.
++On the SH Symbian OS target the @code{dllimport} attribute also has
++another affect---it can cause the vtable and run-time type information
++for a class to be exported.  This happens when the class has a
++dllimported constructor or a non-inline, non-pure virtual function
++and, for either of those two conditions, the class also has an inline
++constructor or destructor and has a key function that is defined in
++the current translation unit.
+ 
+-If both @code{signal} and @code{interrupt} are specified for the same
+-function, @code{signal} is silently ignored.
++For Microsoft Windows targets the use of the @code{dllimport}
++attribute on functions is not necessary, but provides a small
++performance benefit by eliminating a thunk in the DLL at .  The use of the
++ at code{dllimport} attribute on imported variables can be avoided by passing the
++ at option{--enable-auto-import} switch to the GNU linker.  As with
++functions, using the attribute for a variable eliminates a thunk in
++the DLL at .
+ 
+- at item sp_switch
+- at cindex @code{sp_switch} function attribute, SH
+-Use this attribute on the SH to indicate an @code{interrupt_handler}
+-function should switch to an alternate stack.  It expects a string
+-argument that names a global variable holding the address of the
+-alternate stack.
++One drawback to using this attribute is that a pointer to a
++ at emph{variable} marked as @code{dllimport} cannot be used as a constant
++address. However, a pointer to a @emph{function} with the
++ at code{dllimport} attribute can be used as a constant initializer; in
++this case, the address of a stub function in the import lib is
++referenced.  On Microsoft Windows targets, the attribute can be disabled
++for functions by setting the @option{-mnop-fun-dllimport} flag.
++ at end table
+ 
+- at smallexample
+-void *alt_stack;
+-void f () __attribute__ ((interrupt_handler,
+-                          sp_switch ("alt_stack")));
+- at end smallexample
++ at node MIPS Function Attributes
++ at subsection MIPS Function Attributes
+ 
+- at item stdcall
+- at cindex @code{stdcall} function attribute, x86-32
+- at cindex functions that pop the argument stack on x86-32
+-On x86-32 targets, the @code{stdcall} attribute causes the compiler to
+-assume that the called function pops off the stack space used to
+-pass arguments, unless it takes a variable number of arguments.
++These function attributes are supported by the MIPS back end:
+ 
+- at item syscall_linkage
+- at cindex @code{syscall_linkage} function attribute, IA-64
+-This attribute is used to modify the IA-64 calling convention by marking
+-all input registers as live at all function exits.  This makes it possible
+-to restart a system call after an interrupt without having to save/restore
+-the input registers.  This also prevents kernel data from leaking into
+-application code.
++ at table @code
++ at item interrupt
++ at cindex @code{interrupt} function attribute, MIPS
++Use this attribute to indicate
++that the specified function is an interrupt handler.  The compiler generates
++function entry and exit sequences suitable for use in an interrupt handler
++when this attribute is present.
+ 
+- at item target
+- at cindex @code{target} function attribute
+-The @code{target} attribute is used to specify that a function is to
+-be compiled with different target options than specified on the
+-command line.  This can be used for instance to have functions
+-compiled with a different ISA (instruction set architecture) than the
+-default.  You can also use the @samp{#pragma GCC target} pragma to set
+-more than one function to be compiled with specific target options.
+- at xref{Function Specific Option Pragmas}, for details about the
+- at samp{#pragma GCC target} pragma.
++You can use the following attributes to modify the behavior
++of an interrupt handler:
++ at table @code
++ at item use_shadow_register_set
++ at cindex @code{use_shadow_register_set} function attribute, MIPS
++Assume that the handler uses a shadow register set, instead of
++the main general-purpose registers.
+ 
+-For instance on an x86, you could compile one function with
+- at code{target("sse4.1,arch=core2")} and another with
+- at code{target("sse4a,arch=amdfam10")}.  This is equivalent to
+-compiling the first function with @option{-msse4.1} and
+- at option{-march=core2} options, and the second function with
+- at option{-msse4a} and @option{-march=amdfam10} options.  It is up to the
+-user to make sure that a function is only invoked on a machine that
+-supports the particular ISA it is compiled for (for example by using
+- at code{cpuid} on x86 to determine what feature bits and architecture
+-family are used).
++ at item keep_interrupts_masked
++ at cindex @code{keep_interrupts_masked} function attribute, MIPS
++Keep interrupts masked for the whole function.  Without this attribute,
++GCC tries to reenable interrupts for as much of the function as it can.
++
++ at item use_debug_exception_return
++ at cindex @code{use_debug_exception_return} function attribute, MIPS
++Return using the @code{deret} instruction.  Interrupt handlers that don't
++have this attribute return using @code{eret} instead.
++ at end table
+ 
++You can use any combination of these attributes, as shown below:
+ @smallexample
+-int core2_func (void) __attribute__ ((__target__ ("arch=core2")));
+-int sse3_func (void) __attribute__ ((__target__ ("sse3")));
++void __attribute__ ((interrupt)) v0 ();
++void __attribute__ ((interrupt, use_shadow_register_set)) v1 ();
++void __attribute__ ((interrupt, keep_interrupts_masked)) v2 ();
++void __attribute__ ((interrupt, use_debug_exception_return)) v3 ();
++void __attribute__ ((interrupt, use_shadow_register_set,
++                     keep_interrupts_masked)) v4 ();
++void __attribute__ ((interrupt, use_shadow_register_set,
++                     use_debug_exception_return)) v5 ();
++void __attribute__ ((interrupt, keep_interrupts_masked,
++                     use_debug_exception_return)) v6 ();
++void __attribute__ ((interrupt, use_shadow_register_set,
++                     keep_interrupts_masked,
++                     use_debug_exception_return)) v7 ();
+ @end smallexample
+ 
+-You can either use multiple
+-strings to specify multiple options, or separate the options
+-with a comma (@samp{,}).
++ at item long_call
++ at itemx near
++ at itemx far
++ at cindex indirect calls, MIPS
++ at cindex @code{long_call} function attribute, MIPS
++ at cindex @code{near} function attribute, MIPS
++ at cindex @code{far} function attribute, MIPS
++These attributes specify how a particular function is called on MIPS at .
++The attributes override the @option{-mlong-calls} (@pxref{MIPS Options})
++command-line switch.  The @code{long_call} and @code{far} attributes are
++synonyms, and cause the compiler to always call
++the function by first loading its address into a register, and then using
++the contents of that register.  The @code{near} attribute has the opposite
++effect; it specifies that non-PIC calls should be made using the more
++efficient @code{jal} instruction.
+ 
+-The @code{target} attribute is presently implemented for
+-x86, PowerPC, and Nios II targets only.
+-The options supported are specific to each target.
++ at item mips16
++ at itemx nomips16
++ at cindex @code{mips16} function attribute, MIPS
++ at cindex @code{nomips16} function attribute, MIPS
+ 
+-On the x86, the following options are allowed:
++On MIPS targets, you can use the @code{mips16} and @code{nomips16}
++function attributes to locally select or turn off MIPS16 code generation.
++A function with the @code{mips16} attribute is emitted as MIPS16 code,
++while MIPS16 code generation is disabled for functions with the
++ at code{nomips16} attribute.  These attributes override the
++ at option{-mips16} and @option{-mno-mips16} options on the command line
++(@pxref{MIPS Options}).
+ 
+- at table @samp
+- at item abm
+- at itemx no-abm
+- at cindex @code{target("abm")} function attribute, x86
+-Enable/disable the generation of the advanced bit instructions.
++When compiling files containing mixed MIPS16 and non-MIPS16 code, the
++preprocessor symbol @code{__mips16} reflects the setting on the command line,
++not that within individual functions.  Mixed MIPS16 and non-MIPS16 code
++may interact badly with some GCC extensions such as @code{__builtin_apply}
++(@pxref{Constructing Calls}).
+ 
+- at item aes
+- at itemx no-aes
+- at cindex @code{target("aes")} function attribute, x86
+-Enable/disable the generation of the AES instructions.
++ at item micromips, MIPS
++ at itemx nomicromips, MIPS
++ at cindex @code{micromips} function attribute
++ at cindex @code{nomicromips} function attribute
+ 
+- at item default
+- at cindex @code{target("default")} function attribute, x86
+- at xref{Function Multiversioning}, where it is used to specify the
+-default function version.
++On MIPS targets, you can use the @code{micromips} and @code{nomicromips}
++function attributes to locally select or turn off microMIPS code generation.
++A function with the @code{micromips} attribute is emitted as microMIPS code,
++while microMIPS code generation is disabled for functions with the
++ at code{nomicromips} attribute.  These attributes override the
++ at option{-mmicromips} and @option{-mno-micromips} options on the command line
++(@pxref{MIPS Options}).
+ 
+- at item mmx
+- at itemx no-mmx
+- at cindex @code{target("mmx")} function attribute, x86
+-Enable/disable the generation of the MMX instructions.
++When compiling files containing mixed microMIPS and non-microMIPS code, the
++preprocessor symbol @code{__mips_micromips} reflects the setting on the
++command line,
++not that within individual functions.  Mixed microMIPS and non-microMIPS code
++may interact badly with some GCC extensions such as @code{__builtin_apply}
++(@pxref{Constructing Calls}).
+ 
+- at item pclmul
+- at itemx no-pclmul
+- at cindex @code{target("pclmul")} function attribute, x86
+-Enable/disable the generation of the PCLMUL instructions.
++ at item nocompression
++ at cindex @code{nocompression} function attribute, MIPS
++On MIPS targets, you can use the @code{nocompression} function attribute
++to locally turn off MIPS16 and microMIPS code generation.  This attribute
++overrides the @option{-mips16} and @option{-mmicromips} options on the
++command line (@pxref{MIPS Options}).
++ at end table
+ 
+- at item popcnt
+- at itemx no-popcnt
+- at cindex @code{target("popcnt")} function attribute, x86
+-Enable/disable the generation of the POPCNT instruction.
++ at node MSP430 Function Attributes
++ at subsection MSP430 Function Attributes
+ 
+- at item sse
+- at itemx no-sse
+- at cindex @code{target("sse")} function attribute, x86
+-Enable/disable the generation of the SSE instructions.
++These function attributes are supported by the MSP430 back end:
+ 
+- at item sse2
+- at itemx no-sse2
+- at cindex @code{target("sse2")} function attribute, x86
+-Enable/disable the generation of the SSE2 instructions.
++ at table @code
++ at item critical
++ at cindex @code{critical} function attribute, MSP430
++Critical functions disable interrupts upon entry and restore the
++previous interrupt state upon exit.  Critical functions cannot also
++have the @code{naked} or @code{reentrant} attributes.  They can have
++the @code{interrupt} attribute.
+ 
+- at item sse3
+- at itemx no-sse3
+- at cindex @code{target("sse3")} function attribute, x86
+-Enable/disable the generation of the SSE3 instructions.
++ at item interrupt
++ at cindex @code{interrupt} function attribute, MSP430
++Use this attribute to indicate
++that the specified function is an interrupt handler.  The compiler generates
++function entry and exit sequences suitable for use in an interrupt handler
++when this attribute is present.
+ 
+- at item sse4
+- at itemx no-sse4
+- at cindex @code{target("sse4")} function attribute, x86
+-Enable/disable the generation of the SSE4 instructions (both SSE4.1
+-and SSE4.2).
++You can provide an argument to the interrupt
++attribute which specifies a name or number.  If the argument is a
++number it indicates the slot in the interrupt vector table (0 - 31) to
++which this handler should be assigned.  If the argument is a name it
++is treated as a symbolic name for the vector slot.  These names should
++match up with appropriate entries in the linker script.  By default
++the names @code{watchdog} for vector 26, @code{nmi} for vector 30 and
++ at code{reset} for vector 31 are recognized.
+ 
+- at item sse4.1
+- at itemx no-sse4.1
+- at cindex @code{target("sse4.1")} function attribute, x86
+-Enable/disable the generation of the sse4.1 instructions.
++ at item naked
++ at cindex @code{naked} function attribute, MSP430
++This attribute allows the compiler to construct the
++requisite function declaration, while allowing the body of the
++function to be assembly code. The specified function will not have
++prologue/epilogue sequences generated by the compiler. Only basic
++ at code{asm} statements can safely be included in naked functions
++(@pxref{Basic Asm}). While using extended @code{asm} or a mixture of
++basic @code{asm} and C code may appear to work, they cannot be
++depended upon to work reliably and are not supported.
+ 
+- at item sse4.2
+- at itemx no-sse4.2
+- at cindex @code{target("sse4.2")} function attribute, x86
+-Enable/disable the generation of the sse4.2 instructions.
++ at item reentrant
++ at cindex @code{reentrant} function attribute, MSP430
++Reentrant functions disable interrupts upon entry and enable them
++upon exit.  Reentrant functions cannot also have the @code{naked}
++or @code{critical} attributes.  They can have the @code{interrupt}
++attribute.
+ 
+- at item sse4a
+- at itemx no-sse4a
+- at cindex @code{target("sse4a")} function attribute, x86
+-Enable/disable the generation of the SSE4A instructions.
++ at item wakeup
++ at cindex @code{wakeup} function attribute, MSP430
++This attribute only applies to interrupt functions.  It is silently
++ignored if applied to a non-interrupt function.  A wakeup interrupt
++function will rouse the processor from any low-power state that it
++might be in when the function exits.
++ at end table
+ 
+- at item fma4
+- at itemx no-fma4
+- at cindex @code{target("fma4")} function attribute, x86
+-Enable/disable the generation of the FMA4 instructions.
++ at node NDS32 Function Attributes
++ at subsection NDS32 Function Attributes
+ 
+- at item xop
+- at itemx no-xop
+- at cindex @code{target("xop")} function attribute, x86
+-Enable/disable the generation of the XOP instructions.
++These function attributes are supported by the NDS32 back end:
+ 
+- at item lwp
+- at itemx no-lwp
+- at cindex @code{target("lwp")} function attribute, x86
+-Enable/disable the generation of the LWP instructions.
++ at table @code
++ at item exception
++ at cindex @code{exception} function attribute
++ at cindex exception handler functions, NDS32
++Use this attribute on the NDS32 target to indicate that the specified function
++is an exception handler.  The compiler will generate corresponding sections
++for use in an exception handler.
+ 
+- at item ssse3
+- at itemx no-ssse3
+- at cindex @code{target("ssse3")} function attribute, x86
+-Enable/disable the generation of the SSSE3 instructions.
++ at item interrupt
++ at cindex @code{interrupt} function attribute, NDS32
++On NDS32 target, this attribute indicates that the specified function
++is an interrupt handler.  The compiler generates corresponding sections
++for use in an interrupt handler.  You can use the following attributes
++to modify the behavior:
++ at table @code
++ at item nested
++ at cindex @code{nested} function attribute, NDS32
++This interrupt service routine is interruptible.
++ at item not_nested
++ at cindex @code{not_nested} function attribute, NDS32
++This interrupt service routine is not interruptible.
++ at item nested_ready
++ at cindex @code{nested_ready} function attribute, NDS32
++This interrupt service routine is interruptible after @code{PSW.GIE}
++(global interrupt enable) is set.  This allows interrupt service routine to
++finish some short critical code before enabling interrupts.
++ at item save_all
++ at cindex @code{save_all} function attribute, NDS32
++The system will help save all registers into stack before entering
++interrupt handler.
++ at item partial_save
++ at cindex @code{partial_save} function attribute, NDS32
++The system will help save caller registers into stack before entering
++interrupt handler.
++ at end table
+ 
+- at item cld
+- at itemx no-cld
+- at cindex @code{target("cld")} function attribute, x86
+-Enable/disable the generation of the CLD before string moves.
++ at item naked
++ at cindex @code{naked} function attribute, NDS32
++This attribute allows the compiler to construct the
++requisite function declaration, while allowing the body of the
++function to be assembly code. The specified function will not have
++prologue/epilogue sequences generated by the compiler. Only basic
++ at code{asm} statements can safely be included in naked functions
++(@pxref{Basic Asm}). While using extended @code{asm} or a mixture of
++basic @code{asm} and C code may appear to work, they cannot be
++depended upon to work reliably and are not supported.
+ 
+- at item fancy-math-387
+- at itemx no-fancy-math-387
+- at cindex @code{target("fancy-math-387")} function attribute, x86
+-Enable/disable the generation of the @code{sin}, @code{cos}, and
+- at code{sqrt} instructions on the 387 floating-point unit.
++ at item reset
++ at cindex @code{reset} function attribute, NDS32
++ at cindex reset handler functions
++Use this attribute on the NDS32 target to indicate that the specified function
++is a reset handler.  The compiler will generate corresponding sections
++for use in a reset handler.  You can use the following attributes
++to provide extra exception handling:
++ at table @code
++ at item nmi
++ at cindex @code{nmi} function attribute, NDS32
++Provide a user-defined function to handle NMI exception.
++ at item warm
++ at cindex @code{warm} function attribute, NDS32
++Provide a user-defined function to handle warm reset exception.
++ at end table
++ at end table
+ 
+- at item fused-madd
+- at itemx no-fused-madd
+- at cindex @code{target("fused-madd")} function attribute, x86
+-Enable/disable the generation of the fused multiply/add instructions.
++ at node Nios II Function Attributes
++ at subsection Nios II Function Attributes
+ 
+- at item ieee-fp
+- at itemx no-ieee-fp
+- at cindex @code{target("ieee-fp")} function attribute, x86
+-Enable/disable the generation of floating point that depends on IEEE arithmetic.
++These function attributes are supported by the Nios II back end:
+ 
+- at item inline-all-stringops
+- at itemx no-inline-all-stringops
+- at cindex @code{target("inline-all-stringops")} function attribute, x86
+-Enable/disable inlining of string operations.
++ at table @code
++ at item target (@var{options})
++ at cindex @code{target} function attribute
++As discussed in @ref{Common Function Attributes}, this attribute 
++allows specification of target-specific compilation options.
++
++When compiling for Nios II, the following options are allowed:
++
++ at table @samp
++ at item custom- at var{insn}=@var{N}
++ at itemx no-custom- at var{insn}
++ at cindex @code{target("custom- at var{insn}=@var{N}")} function attribute, Nios II
++ at cindex @code{target("no-custom- at var{insn}")} function attribute, Nios II
++Each @samp{custom- at var{insn}=@var{N}} attribute locally enables use of a
++custom instruction with encoding @var{N} when generating code that uses 
++ at var{insn}.  Similarly, @samp{no-custom- at var{insn}} locally inhibits use of
++the custom instruction @var{insn}.
++These target attributes correspond to the
++ at option{-mcustom- at var{insn}=@var{N}} and @option{-mno-custom- at var{insn}}
++command-line options, and support the same set of @var{insn} keywords.
++ at xref{Nios II Options}, for more information.
+ 
+- at item inline-stringops-dynamically
+- at itemx no-inline-stringops-dynamically
+- at cindex @code{target("inline-stringops-dynamically")} function attribute, x86
+-Enable/disable the generation of the inline code to do small string
+-operations and calling the library routines for large operations.
++ at item custom-fpu-cfg=@var{name}
++ at cindex @code{target("custom-fpu-cfg=@var{name}")} function attribute, Nios II
++This attribute corresponds to the @option{-mcustom-fpu-cfg=@var{name}}
++command-line option, to select a predefined set of custom instructions
++named @var{name}.
++ at xref{Nios II Options}, for more information.
++ at end table
++ at end table
+ 
+- at item align-stringops
+- at itemx no-align-stringops
+- at cindex @code{target("align-stringops")} function attribute, x86
+-Do/do not align destination of inlined string operations.
++ at node PowerPC Function Attributes
++ at subsection PowerPC Function Attributes
+ 
+- at item recip
+- at itemx no-recip
+- at cindex @code{target("recip")} function attribute, x86
+-Enable/disable the generation of RCPSS, RCPPS, RSQRTSS and RSQRTPS
+-instructions followed an additional Newton-Raphson step instead of
+-doing a floating-point division.
++These function attributes are supported by the PowerPC back end:
+ 
+- at item arch=@var{ARCH}
+- at cindex @code{target("arch=@var{ARCH}")} function attribute, x86
+-Specify the architecture to generate code for in compiling the function.
++ at table @code
++ at item longcall
++ at itemx shortcall
++ at cindex indirect calls, PowerPC
++ at cindex @code{longcall} function attribute, PowerPC
++ at cindex @code{shortcall} function attribute, PowerPC
++The @code{longcall} attribute
++indicates that the function might be far away from the call site and
++require a different (more expensive) calling sequence.  The
++ at code{shortcall} attribute indicates that the function is always close
++enough for the shorter calling sequence to be used.  These attributes
++override both the @option{-mlongcall} switch and
++the @code{#pragma longcall} setting.
+ 
+- at item tune=@var{TUNE}
+- at cindex @code{target("tune=@var{TUNE}")} function attribute, x86
+-Specify the architecture to tune for in compiling the function.
++ at xref{RS/6000 and PowerPC Options}, for more information on whether long
++calls are necessary.
+ 
+- at item fpmath=@var{FPMATH}
+- at cindex @code{target("fpmath=@var{FPMATH}")} function attribute, x86
+-Specify which floating-point unit to use.  The
+- at code{target("fpmath=sse,387")} option must be specified as
+- at code{target("fpmath=sse+387")} because the comma would separate
+-different options.
+- at end table
++ at item target (@var{options})
++ at cindex @code{target} function attribute
++As discussed in @ref{Common Function Attributes}, this attribute 
++allows specification of target-specific compilation options.
+ 
+ On the PowerPC, the following options are allowed:
+ 
+@@ -4293,666 +4630,535 @@ compilation tunes for the @var{CPU} architecture, and not the
+ default tuning specified on the command line.
+ @end table
+ 
+-When compiling for Nios II, the following options are allowed:
+-
+- at table @samp
+- at item custom- at var{insn}=@var{N}
+- at itemx no-custom- at var{insn}
+- at cindex @code{target("custom- at var{insn}=@var{N}")} function attribute, Nios II
+- at cindex @code{target("no-custom- at var{insn}")} function attribute, Nios II
+-Each @samp{custom- at var{insn}=@var{N}} attribute locally enables use of a
+-custom instruction with encoding @var{N} when generating code that uses 
+- at var{insn}.  Similarly, @samp{no-custom- at var{insn}} locally inhibits use of
+-the custom instruction @var{insn}.
+-These target attributes correspond to the
+- at option{-mcustom- at var{insn}=@var{N}} and @option{-mno-custom- at var{insn}}
+-command-line options, and support the same set of @var{insn} keywords.
+- at xref{Nios II Options}, for more information.
+-
+- at item custom-fpu-cfg=@var{name}
+- at cindex @code{target("custom-fpu-cfg=@var{name}")} function attribute, Nios II
+-This attribute corresponds to the @option{-mcustom-fpu-cfg=@var{name}}
+-command-line option, to select a predefined set of custom instructions
+-named @var{name}.
+- at xref{Nios II Options}, for more information.
+- at end table
+-
+-On the x86 and PowerPC back ends, the inliner does not inline a
++On the PowerPC, the inliner does not inline a
+ function that has different target options than the caller, unless the
+-callee has a subset of the target options of the caller.  For example
+-a function declared with @code{target("sse3")} can inline a function
+-with @code{target("sse2")}, since @code{-msse3} implies @code{-msse2}.
+-
+- at item trap_exit
+- at cindex @code{trap_exit} function attribute, SH
+-Use this attribute on the SH for an @code{interrupt_handler} to return using
+- at code{trapa} instead of @code{rte}.  This attribute expects an integer
+-argument specifying the trap number to be used.
+-
+- at item trapa_handler
+- at cindex @code{trapa_handler} function attribute, SH
+-On SH targets this function attribute is similar to @code{interrupt_handler}
+-but it does not save and restore all registers.
+-
+- at item unused
+- at cindex @code{unused} function attribute
+-This attribute, attached to a function, means that the function is meant
+-to be possibly unused.  GCC does not produce a warning for this
+-function.
+-
+- at item used
+- at cindex @code{used} function attribute
+-This attribute, attached to a function, means that code must be emitted
+-for the function even if it appears that the function is not referenced.
+-This is useful, for example, when the function is referenced only in
+-inline assembly.
+-
+-When applied to a member function of a C++ class template, the
+-attribute also means that the function is instantiated if the
+-class itself is instantiated.
+-
+- at item vector
+- at cindex @code{vector} function attribute, RX
+-This RX attribute is similar to the @code{interrupt} attribute, including its
+-parameters, but does not make the function an interrupt-handler type
+-function (i.e. it retains the normal C function calling ABI).  See the
+- at code{interrupt} attribute for a description of its arguments.
+-
+- at item version_id
+- at cindex @code{version_id} function attribute, IA-64
+-This IA-64 HP-UX attribute, attached to a global variable or function, renames a
+-symbol to contain a version string, thus allowing for function level
+-versioning.  HP-UX system header files may use function level versioning
+-for some system calls.
+-
+- at smallexample
+-extern int foo () __attribute__((version_id ("20040821")));
+- at end smallexample
+-
+- at noindent
+-Calls to @var{foo} are mapped to calls to @var{foo@{20040821@}}.
+-
+- at item visibility ("@var{visibility_type}")
+- at cindex @code{visibility} function attribute
+-This attribute affects the linkage of the declaration to which it is attached.
+-There are four supported @var{visibility_type} values: default,
+-hidden, protected or internal visibility.
+-
+- at smallexample
+-void __attribute__ ((visibility ("protected")))
+-f () @{ /* @r{Do something.} */; @}
+-int i __attribute__ ((visibility ("hidden")));
+- at end smallexample
+-
+-The possible values of @var{visibility_type} correspond to the
+-visibility settings in the ELF gABI.
+-
+- at table @dfn
+- at c keep this list of visibilities in alphabetical order.
+-
+- at item default
+-Default visibility is the normal case for the object file format.
+-This value is available for the visibility attribute to override other
+-options that may change the assumed visibility of entities.
+-
+-On ELF, default visibility means that the declaration is visible to other
+-modules and, in shared libraries, means that the declared entity may be
+-overridden.
+-
+-On Darwin, default visibility means that the declaration is visible to
+-other modules.
+-
+-Default visibility corresponds to ``external linkage'' in the language.
+-
+- at item hidden
+-Hidden visibility indicates that the entity declared has a new
+-form of linkage, which we call ``hidden linkage''.  Two
+-declarations of an object with hidden linkage refer to the same object
+-if they are in the same shared object.
+-
+- at item internal
+-Internal visibility is like hidden visibility, but with additional
+-processor specific semantics.  Unless otherwise specified by the
+-psABI, GCC defines internal visibility to mean that a function is
+- at emph{never} called from another module.  Compare this with hidden
+-functions which, while they cannot be referenced directly by other
+-modules, can be referenced indirectly via function pointers.  By
+-indicating that a function cannot be called from outside the module,
+-GCC may for instance omit the load of a PIC register since it is known
+-that the calling function loaded the correct value.
+-
+- at item protected
+-Protected visibility is like default visibility except that it
+-indicates that references within the defining module bind to the
+-definition in that module.  That is, the declared entity cannot be
+-overridden by another module.
+-
++callee has a subset of the target options of the caller.
+ @end table
+ 
+-All visibilities are supported on many, but not all, ELF targets
+-(supported when the assembler supports the @samp{.visibility}
+-pseudo-op).  Default visibility is supported everywhere.  Hidden
+-visibility is supported on Darwin targets.
+-
+-The visibility attribute should be applied only to declarations that
+-would otherwise have external linkage.  The attribute should be applied
+-consistently, so that the same entity should not be declared with
+-different settings of the attribute.
++ at node RL78 Function Attributes
++ at subsection RL78 Function Attributes
+ 
+-In C++, the visibility attribute applies to types as well as functions
+-and objects, because in C++ types have linkage.  A class must not have
+-greater visibility than its non-static data member types and bases,
+-and class members default to the visibility of their class.  Also, a
+-declaration without explicit visibility is limited to the visibility
+-of its type.
++These function attributes are supported by the RL78 back end:
+ 
+-In C++, you can mark member functions and static member variables of a
+-class with the visibility attribute.  This is useful if you know a
+-particular method or static member variable should only be used from
+-one shared object; then you can mark it hidden while the rest of the
+-class has default visibility.  Care must be taken to avoid breaking
+-the One Definition Rule; for example, it is usually not useful to mark
+-an inline method as hidden without marking the whole class as hidden.
++ at table @code
++ at item interrupt
++ at itemx brk_interrupt
++ at cindex @code{interrupt} function attribute, RL78
++ at cindex @code{brk_interrupt} function attribute, RL78
++These attributes indicate
++that the specified function is an interrupt handler.  The compiler generates
++function entry and exit sequences suitable for use in an interrupt handler
++when this attribute is present.
+ 
+-A C++ namespace declaration can also have the visibility attribute.
++Use @code{brk_interrupt} instead of @code{interrupt} for
++handlers intended to be used with the @code{BRK} opcode (i.e.@: those
++that must end with @code{RETB} instead of @code{RETI}).
+ 
+- at smallexample
+-namespace nspace1 __attribute__ ((visibility ("protected")))
+-@{ /* @r{Do something.} */; @}
+- at end smallexample
++ at item naked
++ at cindex @code{naked} function attribute, RL78
++This attribute allows the compiler to construct the
++requisite function declaration, while allowing the body of the
++function to be assembly code. The specified function will not have
++prologue/epilogue sequences generated by the compiler. Only basic
++ at code{asm} statements can safely be included in naked functions
++(@pxref{Basic Asm}). While using extended @code{asm} or a mixture of
++basic @code{asm} and C code may appear to work, they cannot be
++depended upon to work reliably and are not supported.
++ at end table
+ 
+-This attribute applies only to the particular namespace body, not to
+-other definitions of the same namespace; it is equivalent to using
+- at samp{#pragma GCC visibility} before and after the namespace
+-definition (@pxref{Visibility Pragmas}).
++ at node RX Function Attributes
++ at subsection RX Function Attributes
+ 
+-In C++, if a template argument has limited visibility, this
+-restriction is implicitly propagated to the template instantiation.
+-Otherwise, template instantiations and specializations default to the
+-visibility of their template.
++These function attributes are supported by the RX back end:
+ 
+-If both the template and enclosing class have explicit visibility, the
+-visibility from the template is used.
++ at table @code
++ at item fast_interrupt
++ at cindex @code{fast_interrupt} function attribute, RX
++Use this attribute on the RX port to indicate that the specified
++function is a fast interrupt handler.  This is just like the
++ at code{interrupt} attribute, except that @code{freit} is used to return
++instead of @code{reit}.
+ 
+- at item vliw
+- at cindex @code{vliw} function attribute, MeP
+-On MeP, the @code{vliw} attribute tells the compiler to emit
+-instructions in VLIW mode instead of core mode.  Note that this
+-attribute is not allowed unless a VLIW coprocessor has been configured
+-and enabled through command-line options.
++ at item interrupt
++ at cindex @code{interrupt} function attribute, RX
++Use this attribute to indicate
++that the specified function is an interrupt handler.  The compiler generates
++function entry and exit sequences suitable for use in an interrupt handler
++when this attribute is present.
+ 
+- at item warn_unused_result
+- at cindex @code{warn_unused_result} function attribute
+-The @code{warn_unused_result} attribute causes a warning to be emitted
+-if a caller of the function with this attribute does not use its
+-return value.  This is useful for functions where not checking
+-the result is either a security problem or always a bug, such as
+- at code{realloc}.
++On RX targets, you may specify one or more vector numbers as arguments
++to the attribute, as well as naming an alternate table name.
++Parameters are handled sequentially, so one handler can be assigned to
++multiple entries in multiple tables.  One may also pass the magic
++string @code{"$default"} which causes the function to be used for any
++unfilled slots in the current table.
+ 
++This example shows a simple assignment of a function to one vector in
++the default table (note that preprocessor macros may be used for
++chip-specific symbolic vector names):
+ @smallexample
+-int fn () __attribute__ ((warn_unused_result));
+-int foo ()
+-@{
+-  if (fn () < 0) return -1;
+-  fn ();
+-  return 0;
+-@}
++void __attribute__ ((interrupt (5))) txd1_handler ();
+ @end smallexample
+ 
+- at noindent
+-results in warning on line 5.
+-
+- at item weak
+- at cindex @code{weak} function attribute
+-The @code{weak} attribute causes the declaration to be emitted as a weak
+-symbol rather than a global.  This is primarily useful in defining
+-library functions that can be overridden in user code, though it can
+-also be used with non-function declarations.  Weak symbols are supported
+-for ELF targets, and also for a.out targets when using the GNU assembler
+-and linker.
+-
+- at item weakref
+- at itemx weakref ("@var{target}")
+- at cindex @code{weakref} function attribute
+-The @code{weakref} attribute marks a declaration as a weak reference.
+-Without arguments, it should be accompanied by an @code{alias} attribute
+-naming the target symbol.  Optionally, the @var{target} may be given as
+-an argument to @code{weakref} itself.  In either case, @code{weakref}
+-implicitly marks the declaration as @code{weak}.  Without a
+- at var{target}, given as an argument to @code{weakref} or to @code{alias},
+- at code{weakref} is equivalent to @code{weak}.
+-
++This example assigns a function to two slots in the default table
++(using preprocessor macros defined elsewhere) and makes it the default
++for the @code{dct} table:
+ @smallexample
+-static int x() __attribute__ ((weakref ("y")));
+-/* is equivalent to... */
+-static int x() __attribute__ ((weak, weakref, alias ("y")));
+-/* and to... */
+-static int x() __attribute__ ((weakref));
+-static int x() __attribute__ ((alias ("y")));
++void __attribute__ ((interrupt (RXD1_VECT,RXD2_VECT,"dct","$default")))
++	txd1_handler ();
+ @end smallexample
+ 
+-A weak reference is an alias that does not by itself require a
+-definition to be given for the target symbol.  If the target symbol is
+-only referenced through weak references, then it becomes a @code{weak}
+-undefined symbol.  If it is directly referenced, however, then such
+-strong references prevail, and a definition is required for the
+-symbol, not necessarily in the same translation unit.
++ at item naked
++ at cindex @code{naked} function attribute, RX
++This attribute allows the compiler to construct the
++requisite function declaration, while allowing the body of the
++function to be assembly code. The specified function will not have
++prologue/epilogue sequences generated by the compiler. Only basic
++ at code{asm} statements can safely be included in naked functions
++(@pxref{Basic Asm}). While using extended @code{asm} or a mixture of
++basic @code{asm} and C code may appear to work, they cannot be
++depended upon to work reliably and are not supported.
+ 
+-The effect is equivalent to moving all references to the alias to a
+-separate translation unit, renaming the alias to the aliased symbol,
+-declaring it as weak, compiling the two separate translation units and
+-performing a reloadable link on them.
++ at item vector
++ at cindex @code{vector} function attribute, RX
++This RX attribute is similar to the @code{interrupt} attribute, including its
++parameters, but does not make the function an interrupt-handler type
++function (i.e. it retains the normal C function calling ABI).  See the
++ at code{interrupt} attribute for a description of its arguments.
++ at end table
+ 
+-At present, a declaration to which @code{weakref} is attached can
+-only be @code{static}.
++ at node S/390 Function Attributes
++ at subsection S/390 Function Attributes
+ 
+- at end table
++These function attributes are supported on the S/390:
+ 
+-You can specify multiple attributes in a declaration by separating them
+-by commas within the double parentheses or by immediately following an
+-attribute declaration with another attribute declaration.
++ at table @code
++ at item hotpatch (@var{halfwords-before-function-label}, at var{halfwords-after-function-label})
++ at cindex @code{hotpatch} function attribute, S/390
+ 
+- at cindex @code{#pragma}, reason for not using
+- at cindex pragma, reason for not using
+-Some people object to the @code{__attribute__} feature, suggesting that
+-ISO C's @code{#pragma} should be used instead.  At the time
+- at code{__attribute__} was designed, there were two reasons for not doing
+-this.
++On S/390 System z targets, you can use this function attribute to
++make GCC generate a ``hot-patching'' function prologue.  If the
++ at option{-mhotpatch=} command-line option is used at the same time,
++the @code{hotpatch} attribute takes precedence.  The first of the
++two arguments specifies the number of halfwords to be added before
++the function label.  A second argument can be used to specify the
++number of halfwords to be added after the function label.  For
++both arguments the maximum allowed value is 1000000.
+ 
+- at enumerate
+- at item
+-It is impossible to generate @code{#pragma} commands from a macro.
++If both arguments are zero, hotpatching is disabled.
++ at end table
+ 
+- at item
+-There is no telling what the same @code{#pragma} might mean in another
+-compiler.
+- at end enumerate
++ at node SH Function Attributes
++ at subsection SH Function Attributes
+ 
+-These two reasons applied to almost any application that might have been
+-proposed for @code{#pragma}.  It was basically a mistake to use
+- at code{#pragma} for @emph{anything}.
++These function attributes are supported on the SH family of processors:
+ 
+-The ISO C99 standard includes @code{_Pragma}, which now allows pragmas
+-to be generated from macros.  In addition, a @code{#pragma GCC}
+-namespace is now in use for GCC-specific pragmas.  However, it has been
+-found convenient to use @code{__attribute__} to achieve a natural
+-attachment of attributes to their corresponding declarations, whereas
+- at code{#pragma GCC} is of use for constructs that do not naturally form
+-part of the grammar.  @xref{Pragmas,,Pragmas Accepted by GCC}.
++ at table @code
++ at item function_vector
++ at cindex @code{function_vector} function attribute, SH
++ at cindex calling functions through the function vector on SH2A
++On SH2A targets, this attribute declares a function to be called using the
++TBR relative addressing mode.  The argument to this attribute is the entry
++number of the same function in a vector table containing all the TBR
++relative addressable functions.  For correct operation the TBR must be setup
++accordingly to point to the start of the vector table before any functions with
++this attribute are invoked.  Usually a good place to do the initialization is
++the startup routine.  The TBR relative vector table can have at max 256 function
++entries.  The jumps to these functions are generated using a SH2A specific,
++non delayed branch instruction JSR/N @@(disp8,TBR).  You must use GAS and GLD
++from GNU binutils version 2.7 or later for this attribute to work correctly.
+ 
+- at node Label Attributes
+- at section Label Attributes
+- at cindex Label Attributes
++In an application, for a function being called once, this attribute
++saves at least 8 bytes of code; and if other successive calls are being
++made to the same function, it saves 2 bytes of code per each of these
++calls.
+ 
+-GCC allows attributes to be set on C labels.  @xref{Attribute Syntax}, for 
+-details of the exact syntax for using attributes.  Other attributes are 
+-available for functions (@pxref{Function Attributes}), variables 
+-(@pxref{Variable Attributes}) and for types (@pxref{Type Attributes}).
++ at item interrupt_handler
++ at cindex @code{interrupt_handler} function attribute, SH
++Use this attribute to
++indicate that the specified function is an interrupt handler.  The compiler
++generates function entry and exit sequences suitable for use in an
++interrupt handler when this attribute is present.
+ 
+-This example uses the @code{cold} label attribute to indicate the 
+- at code{ErrorHandling} branch is unlikely to be taken and that the
+- at code{ErrorHandling} label is unused:
++ at item nosave_low_regs
++ at cindex @code{nosave_low_regs} function attribute, SH
++Use this attribute on SH targets to indicate that an @code{interrupt_handler}
++function should not save and restore registers R0..R7.  This can be used on SH3*
++and SH4* targets that have a second R0..R7 register bank for non-reentrant
++interrupt handlers.
+ 
+- at smallexample
++ at item renesas
++ at cindex @code{renesas} function attribute, SH
++On SH targets this attribute specifies that the function or struct follows the
++Renesas ABI.
+ 
+-   asm goto ("some asm" : : : : NoError);
++ at item resbank
++ at cindex @code{resbank} function attribute, SH
++On the SH2A target, this attribute enables the high-speed register
++saving and restoration using a register bank for @code{interrupt_handler}
++routines.  Saving to the bank is performed automatically after the CPU
++accepts an interrupt that uses a register bank.
+ 
+-/* This branch (the fall-through from the asm) is less commonly used */
+-ErrorHandling: 
+-   __attribute__((cold, unused)); /* Semi-colon is required here */
+-   printf("error\n");
+-   return 0;
++The nineteen 32-bit registers comprising general register R0 to R14,
++control register GBR, and system registers MACH, MACL, and PR and the
++vector table address offset are saved into a register bank.  Register
++banks are stacked in first-in last-out (FILO) sequence.  Restoration
++from the bank is executed by issuing a RESBANK instruction.
+ 
+-NoError:
+-   printf("no error\n");
+-   return 1;
++ at item sp_switch
++ at cindex @code{sp_switch} function attribute, SH
++Use this attribute on the SH to indicate an @code{interrupt_handler}
++function should switch to an alternate stack.  It expects a string
++argument that names a global variable holding the address of the
++alternate stack.
++
++ at smallexample
++void *alt_stack;
++void f () __attribute__ ((interrupt_handler,
++                          sp_switch ("alt_stack")));
+ @end smallexample
+ 
+- at table @code
+- at item unused
+- at cindex @code{unused} label attribute
+-This feature is intended for program-generated code that may contain 
+-unused labels, but which is compiled with @option{-Wall}.  It is
+-not normally appropriate to use in it human-written code, though it
+-could be useful in cases where the code that jumps to the label is
+-contained within an @code{#ifdef} conditional.
++ at item trap_exit
++ at cindex @code{trap_exit} function attribute, SH
++Use this attribute on the SH for an @code{interrupt_handler} to return using
++ at code{trapa} instead of @code{rte}.  This attribute expects an integer
++argument specifying the trap number to be used.
+ 
+- at item hot
+- at cindex @code{hot} label attribute
+-The @code{hot} attribute on a label is used to inform the compiler that
+-the path following the label is more likely than paths that are not so
+-annotated.  This attribute is used in cases where @code{__builtin_expect}
+-cannot be used, for instance with computed goto or @code{asm goto}.
++ at item trapa_handler
++ at cindex @code{trapa_handler} function attribute, SH
++On SH targets this function attribute is similar to @code{interrupt_handler}
++but it does not save and restore all registers.
++ at end table
+ 
+- at item cold
+- at cindex @code{cold} label attribute
+-The @code{cold} attribute on labels is used to inform the compiler that
+-the path following the label is unlikely to be executed.  This attribute
+-is used in cases where @code{__builtin_expect} cannot be used, for instance
+-with computed goto or @code{asm goto}.
++ at node SPU Function Attributes
++ at subsection SPU Function Attributes
++
++These function attributes are supported by the SPU back end:
+ 
++ at table @code
++ at item naked
++ at cindex @code{naked} function attribute, SPU
++This attribute allows the compiler to construct the
++requisite function declaration, while allowing the body of the
++function to be assembly code. The specified function will not have
++prologue/epilogue sequences generated by the compiler. Only basic
++ at code{asm} statements can safely be included in naked functions
++(@pxref{Basic Asm}). While using extended @code{asm} or a mixture of
++basic @code{asm} and C code may appear to work, they cannot be
++depended upon to work reliably and are not supported.
+ @end table
+ 
+- at node Attribute Syntax
+- at section Attribute Syntax
+- at cindex attribute syntax
++ at node Symbian OS Function Attributes
++ at subsection Symbian OS Function Attributes
+ 
+-This section describes the syntax with which @code{__attribute__} may be
+-used, and the constructs to which attribute specifiers bind, for the C
+-language.  Some details may vary for C++ and Objective-C at .  Because of
+-infelicities in the grammar for attributes, some forms described here
+-may not be successfully parsed in all cases.
++ at xref{Microsoft Windows Function Attributes}, for discussion of the
++ at code{dllexport} and @code{dllimport} attributes.
+ 
+-There are some problems with the semantics of attributes in C++.  For
+-example, there are no manglings for attributes, although they may affect
+-code generation, so problems may arise when attributed types are used in
+-conjunction with templates or overloading.  Similarly, @code{typeid}
+-does not distinguish between types with different attributes.  Support
+-for attributes in C++ may be restricted in future to attributes on
+-declarations only, but not on nested declarators.
++ at node Visium Function Attributes
++ at subsection Visium Function Attributes
+ 
+- at xref{Function Attributes}, for details of the semantics of attributes
+-applying to functions.  @xref{Variable Attributes}, for details of the
+-semantics of attributes applying to variables.  @xref{Type Attributes},
+-for details of the semantics of attributes applying to structure, union
+-and enumerated types.
+- at xref{Label Attributes}, for details of the semantics of attributes 
+-applying to labels.
++These function attributes are supported by the Visium back end:
+ 
+-An @dfn{attribute specifier} is of the form
+- at code{__attribute__ ((@var{attribute-list}))}.  An @dfn{attribute list}
+-is a possibly empty comma-separated sequence of @dfn{attributes}, where
+-each attribute is one of the following:
++ at table @code
++ at item interrupt
++ at cindex @code{interrupt} function attribute, Visium
++Use this attribute to indicate
++that the specified function is an interrupt handler.  The compiler generates
++function entry and exit sequences suitable for use in an interrupt handler
++when this attribute is present.
++ at end table
+ 
+- at itemize @bullet
+- at item
+-Empty.  Empty attributes are ignored.
++ at node x86 Function Attributes
++ at subsection x86 Function Attributes
+ 
+- at item
+-A word (which may be an identifier such as @code{unused}, or a reserved
+-word such as @code{const}).
++These function attributes are supported by the x86 back end:
+ 
+- at item
+-A word, followed by, in parentheses, parameters for the attribute.
+-These parameters take one of the following forms:
++ at table @code
++ at item cdecl
++ at cindex @code{cdecl} function attribute, x86-32
++ at cindex functions that pop the argument stack on x86-32
++ at opindex mrtd
++On the x86-32 targets, the @code{cdecl} attribute causes the compiler to
++assume that the calling function pops off the stack space used to
++pass arguments.  This is
++useful to override the effects of the @option{-mrtd} switch.
+ 
+- at itemize @bullet
+- at item
+-An identifier.  For example, @code{mode} attributes use this form.
++ at item fastcall
++ at cindex @code{fastcall} function attribute, x86-32
++ at cindex functions that pop the argument stack on x86-32
++On x86-32 targets, the @code{fastcall} attribute causes the compiler to
++pass the first argument (if of integral type) in the register ECX and
++the second argument (if of integral type) in the register EDX at .  Subsequent
++and other typed arguments are passed on the stack.  The called function
++pops the arguments off the stack.  If the number of arguments is variable all
++arguments are pushed on the stack.
+ 
+- at item
+-An identifier followed by a comma and a non-empty comma-separated list
+-of expressions.  For example, @code{format} attributes use this form.
++ at item thiscall
++ at cindex @code{thiscall} function attribute, x86-32
++ at cindex functions that pop the argument stack on x86-32
++On x86-32 targets, the @code{thiscall} attribute causes the compiler to
++pass the first argument (if of integral type) in the register ECX.
++Subsequent and other typed arguments are passed on the stack. The called
++function pops the arguments off the stack.
++If the number of arguments is variable all arguments are pushed on the
++stack.
++The @code{thiscall} attribute is intended for C++ non-static member functions.
++As a GCC extension, this calling convention can be used for C functions
++and for static member methods.
+ 
+- at item
+-A possibly empty comma-separated list of expressions.  For example,
+- at code{format_arg} attributes use this form with the list being a single
+-integer constant expression, and @code{alias} attributes use this form
+-with the list being a single string constant.
+- at end itemize
+- at end itemize
++ at item ms_abi
++ at itemx sysv_abi
++ at cindex @code{ms_abi} function attribute, x86
++ at cindex @code{sysv_abi} function attribute, x86
+ 
+-An @dfn{attribute specifier list} is a sequence of one or more attribute
+-specifiers, not separated by any other tokens.
++On 32-bit and 64-bit x86 targets, you can use an ABI attribute
++to indicate which calling convention should be used for a function.  The
++ at code{ms_abi} attribute tells the compiler to use the Microsoft ABI,
++while the @code{sysv_abi} attribute tells the compiler to use the ABI
++used on GNU/Linux and other systems.  The default is to use the Microsoft ABI
++when targeting Windows.  On all other systems, the default is the x86/AMD ABI.
+ 
+- at subsubheading Label Attributes
++Note, the @code{ms_abi} attribute for Microsoft Windows 64-bit targets currently
++requires the @option{-maccumulate-outgoing-args} option.
+ 
+-In GNU C, an attribute specifier list may appear after the colon following a
+-label, other than a @code{case} or @code{default} label.  GNU C++ only permits
+-attributes on labels if the attribute specifier is immediately
+-followed by a semicolon (i.e., the label applies to an empty
+-statement).  If the semicolon is missing, C++ label attributes are
+-ambiguous, as it is permissible for a declaration, which could begin
+-with an attribute list, to be labelled in C++.  Declarations cannot be
+-labelled in C90 or C99, so the ambiguity does not arise there.
++ at item callee_pop_aggregate_return (@var{number})
++ at cindex @code{callee_pop_aggregate_return} function attribute, x86
+ 
+- at subsubheading Type Attributes
++On x86-32 targets, you can use this attribute to control how
++aggregates are returned in memory.  If the caller is responsible for
++popping the hidden pointer together with the rest of the arguments, specify
++ at var{number} equal to zero.  If callee is responsible for popping the
++hidden pointer, specify @var{number} equal to one.  
+ 
+-An attribute specifier list may appear as part of a @code{struct},
+- at code{union} or @code{enum} specifier.  It may go either immediately
+-after the @code{struct}, @code{union} or @code{enum} keyword, or after
+-the closing brace.  The former syntax is preferred.
+-Where attribute specifiers follow the closing brace, they are considered
+-to relate to the structure, union or enumerated type defined, not to any
+-enclosing declaration the type specifier appears in, and the type
+-defined is not complete until after the attribute specifiers.
+- at c Otherwise, there would be the following problems: a shift/reduce
+- at c conflict between attributes binding the struct/union/enum and
+- at c binding to the list of specifiers/qualifiers; and "aligned"
+- at c attributes could use sizeof for the structure, but the size could be
+- at c changed later by "packed" attributes.
++The default x86-32 ABI assumes that the callee pops the
++stack for hidden pointer.  However, on x86-32 Microsoft Windows targets,
++the compiler assumes that the
++caller pops the stack for hidden pointer.
+ 
++ at item ms_hook_prologue
++ at cindex @code{ms_hook_prologue} function attribute, x86
+ 
+- at subsubheading All other attributes
++On 32-bit and 64-bit x86 targets, you can use
++this function attribute to make GCC generate the ``hot-patching'' function
++prologue used in Win32 API functions in Microsoft Windows XP Service Pack 2
++and newer.
+ 
+-Otherwise, an attribute specifier appears as part of a declaration,
+-counting declarations of unnamed parameters and type names, and relates
+-to that declaration (which may be nested in another declaration, for
+-example in the case of a parameter declaration), or to a particular declarator
+-within a declaration.  Where an
+-attribute specifier is applied to a parameter declared as a function or
+-an array, it should apply to the function or array rather than the
+-pointer to which the parameter is implicitly converted, but this is not
+-yet correctly implemented.
++ at item regparm (@var{number})
++ at cindex @code{regparm} function attribute, x86
++ at cindex functions that are passed arguments in registers on x86-32
++On x86-32 targets, the @code{regparm} attribute causes the compiler to
++pass arguments number one to @var{number} if they are of integral type
++in registers EAX, EDX, and ECX instead of on the stack.  Functions that
++take a variable number of arguments continue to be passed all of their
++arguments on the stack.
+ 
+-Any list of specifiers and qualifiers at the start of a declaration may
+-contain attribute specifiers, whether or not such a list may in that
+-context contain storage class specifiers.  (Some attributes, however,
+-are essentially in the nature of storage class specifiers, and only make
+-sense where storage class specifiers may be used; for example,
+- at code{section}.)  There is one necessary limitation to this syntax: the
+-first old-style parameter declaration in a function definition cannot
+-begin with an attribute specifier, because such an attribute applies to
+-the function instead by syntax described below (which, however, is not
+-yet implemented in this case).  In some other cases, attribute
+-specifiers are permitted by this grammar but not yet supported by the
+-compiler.  All attribute specifiers in this place relate to the
+-declaration as a whole.  In the obsolescent usage where a type of
+- at code{int} is implied by the absence of type specifiers, such a list of
+-specifiers and qualifiers may be an attribute specifier list with no
+-other specifiers or qualifiers.
++Beware that on some ELF systems this attribute is unsuitable for
++global functions in shared libraries with lazy binding (which is the
++default).  Lazy binding sends the first call via resolving code in
++the loader, which might assume EAX, EDX and ECX can be clobbered, as
++per the standard calling conventions.  Solaris 8 is affected by this.
++Systems with the GNU C Library version 2.1 or higher
++and FreeBSD are believed to be
++safe since the loaders there save EAX, EDX and ECX.  (Lazy binding can be
++disabled with the linker or the loader if desired, to avoid the
++problem.)
+ 
+-At present, the first parameter in a function prototype must have some
+-type specifier that is not an attribute specifier; this resolves an
+-ambiguity in the interpretation of @code{void f(int
+-(__attribute__((foo)) x))}, but is subject to change.  At present, if
+-the parentheses of a function declarator contain only attributes then
+-those attributes are ignored, rather than yielding an error or warning
+-or implying a single parameter of type int, but this is subject to
+-change.
++ at item sseregparm
++ at cindex @code{sseregparm} function attribute, x86
++On x86-32 targets with SSE support, the @code{sseregparm} attribute
++causes the compiler to pass up to 3 floating-point arguments in
++SSE registers instead of on the stack.  Functions that take a
++variable number of arguments continue to pass all of their
++floating-point arguments on the stack.
+ 
+-An attribute specifier list may appear immediately before a declarator
+-(other than the first) in a comma-separated list of declarators in a
+-declaration of more than one identifier using a single list of
+-specifiers and qualifiers.  Such attribute specifiers apply
+-only to the identifier before whose declarator they appear.  For
+-example, in
++ at item force_align_arg_pointer
++ at cindex @code{force_align_arg_pointer} function attribute, x86
++On x86 targets, the @code{force_align_arg_pointer} attribute may be
++applied to individual function definitions, generating an alternate
++prologue and epilogue that realigns the run-time stack if necessary.
++This supports mixing legacy codes that run with a 4-byte aligned stack
++with modern codes that keep a 16-byte stack for SSE compatibility.
+ 
+- at smallexample
+-__attribute__((noreturn)) void d0 (void),
+-    __attribute__((format(printf, 1, 2))) d1 (const char *, ...),
+-     d2 (void);
+- at end smallexample
++ at item stdcall
++ at cindex @code{stdcall} function attribute, x86-32
++ at cindex functions that pop the argument stack on x86-32
++On x86-32 targets, the @code{stdcall} attribute causes the compiler to
++assume that the called function pops off the stack space used to
++pass arguments, unless it takes a variable number of arguments.
+ 
+- at noindent
+-the @code{noreturn} attribute applies to all the functions
+-declared; the @code{format} attribute only applies to @code{d1}.
++ at item target (@var{options})
++ at cindex @code{target} function attribute
++As discussed in @ref{Common Function Attributes}, this attribute 
++allows specification of target-specific compilation options.
+ 
+-An attribute specifier list may appear immediately before the comma,
+- at code{=} or semicolon terminating the declaration of an identifier other
+-than a function definition.  Such attribute specifiers apply
+-to the declared object or function.  Where an
+-assembler name for an object or function is specified (@pxref{Asm
+-Labels}), the attribute must follow the @code{asm}
+-specification.
++On the x86, the following options are allowed:
++ at table @samp
++ at item abm
++ at itemx no-abm
++ at cindex @code{target("abm")} function attribute, x86
++Enable/disable the generation of the advanced bit instructions.
+ 
+-An attribute specifier list may, in future, be permitted to appear after
+-the declarator in a function definition (before any old-style parameter
+-declarations or the function body).
++ at item aes
++ at itemx no-aes
++ at cindex @code{target("aes")} function attribute, x86
++Enable/disable the generation of the AES instructions.
+ 
+-Attribute specifiers may be mixed with type qualifiers appearing inside
+-the @code{[]} of a parameter array declarator, in the C99 construct by
+-which such qualifiers are applied to the pointer to which the array is
+-implicitly converted.  Such attribute specifiers apply to the pointer,
+-not to the array, but at present this is not implemented and they are
+-ignored.
++ at item default
++ at cindex @code{target("default")} function attribute, x86
++ at xref{Function Multiversioning}, where it is used to specify the
++default function version.
+ 
+-An attribute specifier list may appear at the start of a nested
+-declarator.  At present, there are some limitations in this usage: the
+-attributes correctly apply to the declarator, but for most individual
+-attributes the semantics this implies are not implemented.
+-When attribute specifiers follow the @code{*} of a pointer
+-declarator, they may be mixed with any type qualifiers present.
+-The following describes the formal semantics of this syntax.  It makes the
+-most sense if you are familiar with the formal specification of
+-declarators in the ISO C standard.
++ at item mmx
++ at itemx no-mmx
++ at cindex @code{target("mmx")} function attribute, x86
++Enable/disable the generation of the MMX instructions.
+ 
+-Consider (as in C99 subclause 6.7.5 paragraph 4) a declaration @code{T
+-D1}, where @code{T} contains declaration specifiers that specify a type
+- at var{Type} (such as @code{int}) and @code{D1} is a declarator that
+-contains an identifier @var{ident}.  The type specified for @var{ident}
+-for derived declarators whose type does not include an attribute
+-specifier is as in the ISO C standard.
++ at item pclmul
++ at itemx no-pclmul
++ at cindex @code{target("pclmul")} function attribute, x86
++Enable/disable the generation of the PCLMUL instructions.
++
++ at item popcnt
++ at itemx no-popcnt
++ at cindex @code{target("popcnt")} function attribute, x86
++Enable/disable the generation of the POPCNT instruction.
++
++ at item sse
++ at itemx no-sse
++ at cindex @code{target("sse")} function attribute, x86
++Enable/disable the generation of the SSE instructions.
++
++ at item sse2
++ at itemx no-sse2
++ at cindex @code{target("sse2")} function attribute, x86
++Enable/disable the generation of the SSE2 instructions.
+ 
+-If @code{D1} has the form @code{( @var{attribute-specifier-list} D )},
+-and the declaration @code{T D} specifies the type
+-``@var{derived-declarator-type-list} @var{Type}'' for @var{ident}, then
+- at code{T D1} specifies the type ``@var{derived-declarator-type-list}
+- at var{attribute-specifier-list} @var{Type}'' for @var{ident}.
++ at item sse3
++ at itemx no-sse3
++ at cindex @code{target("sse3")} function attribute, x86
++Enable/disable the generation of the SSE3 instructions.
+ 
+-If @code{D1} has the form @code{*
+- at var{type-qualifier-and-attribute-specifier-list} D}, and the
+-declaration @code{T D} specifies the type
+-``@var{derived-declarator-type-list} @var{Type}'' for @var{ident}, then
+- at code{T D1} specifies the type ``@var{derived-declarator-type-list}
+- at var{type-qualifier-and-attribute-specifier-list} pointer to @var{Type}'' for
+- at var{ident}.
++ at item sse4
++ at itemx no-sse4
++ at cindex @code{target("sse4")} function attribute, x86
++Enable/disable the generation of the SSE4 instructions (both SSE4.1
++and SSE4.2).
+ 
+-For example,
++ at item sse4.1
++ at itemx no-sse4.1
++ at cindex @code{target("sse4.1")} function attribute, x86
++Enable/disable the generation of the sse4.1 instructions.
+ 
+- at smallexample
+-void (__attribute__((noreturn)) ****f) (void);
+- at end smallexample
++ at item sse4.2
++ at itemx no-sse4.2
++ at cindex @code{target("sse4.2")} function attribute, x86
++Enable/disable the generation of the sse4.2 instructions.
+ 
+- at noindent
+-specifies the type ``pointer to pointer to pointer to pointer to
+-non-returning function returning @code{void}''.  As another example,
++ at item sse4a
++ at itemx no-sse4a
++ at cindex @code{target("sse4a")} function attribute, x86
++Enable/disable the generation of the SSE4A instructions.
+ 
+- at smallexample
+-char *__attribute__((aligned(8))) *f;
+- at end smallexample
++ at item fma4
++ at itemx no-fma4
++ at cindex @code{target("fma4")} function attribute, x86
++Enable/disable the generation of the FMA4 instructions.
+ 
+- at noindent
+-specifies the type ``pointer to 8-byte-aligned pointer to @code{char}''.
+-Note again that this does not work with most attributes; for example,
+-the usage of @samp{aligned} and @samp{noreturn} attributes given above
+-is not yet supported.
++ at item xop
++ at itemx no-xop
++ at cindex @code{target("xop")} function attribute, x86
++Enable/disable the generation of the XOP instructions.
+ 
+-For compatibility with existing code written for compiler versions that
+-did not implement attributes on nested declarators, some laxity is
+-allowed in the placing of attributes.  If an attribute that only applies
+-to types is applied to a declaration, it is treated as applying to
+-the type of that declaration.  If an attribute that only applies to
+-declarations is applied to the type of a declaration, it is treated
+-as applying to that declaration; and, for compatibility with code
+-placing the attributes immediately before the identifier declared, such
+-an attribute applied to a function return type is treated as
+-applying to the function type, and such an attribute applied to an array
+-element type is treated as applying to the array type.  If an
+-attribute that only applies to function types is applied to a
+-pointer-to-function type, it is treated as applying to the pointer
+-target type; if such an attribute is applied to a function return type
+-that is not a pointer-to-function type, it is treated as applying
+-to the function type.
++ at item lwp
++ at itemx no-lwp
++ at cindex @code{target("lwp")} function attribute, x86
++Enable/disable the generation of the LWP instructions.
+ 
+- at node Function Prototypes
+- at section Prototypes and Old-Style Function Definitions
+- at cindex function prototype declarations
+- at cindex old-style function definitions
+- at cindex promotion of formal parameters
++ at item ssse3
++ at itemx no-ssse3
++ at cindex @code{target("ssse3")} function attribute, x86
++Enable/disable the generation of the SSSE3 instructions.
+ 
+-GNU C extends ISO C to allow a function prototype to override a later
+-old-style non-prototype definition.  Consider the following example:
++ at item cld
++ at itemx no-cld
++ at cindex @code{target("cld")} function attribute, x86
++Enable/disable the generation of the CLD before string moves.
+ 
+- at smallexample
+-/* @r{Use prototypes unless the compiler is old-fashioned.}  */
+-#ifdef __STDC__
+-#define P(x) x
+-#else
+-#define P(x) ()
+-#endif
++ at item fancy-math-387
++ at itemx no-fancy-math-387
++ at cindex @code{target("fancy-math-387")} function attribute, x86
++Enable/disable the generation of the @code{sin}, @code{cos}, and
++ at code{sqrt} instructions on the 387 floating-point unit.
+ 
+-/* @r{Prototype function declaration.}  */
+-int isroot P((uid_t));
++ at item fused-madd
++ at itemx no-fused-madd
++ at cindex @code{target("fused-madd")} function attribute, x86
++Enable/disable the generation of the fused multiply/add instructions.
+ 
+-/* @r{Old-style function definition.}  */
+-int
+-isroot (x)   /* @r{??? lossage here ???} */
+-     uid_t x;
+-@{
+-  return x == 0;
+-@}
+- at end smallexample
++ at item ieee-fp
++ at itemx no-ieee-fp
++ at cindex @code{target("ieee-fp")} function attribute, x86
++Enable/disable the generation of floating point that depends on IEEE arithmetic.
+ 
+-Suppose the type @code{uid_t} happens to be @code{short}.  ISO C does
+-not allow this example, because subword arguments in old-style
+-non-prototype definitions are promoted.  Therefore in this example the
+-function definition's argument is really an @code{int}, which does not
+-match the prototype argument type of @code{short}.
++ at item inline-all-stringops
++ at itemx no-inline-all-stringops
++ at cindex @code{target("inline-all-stringops")} function attribute, x86
++Enable/disable inlining of string operations.
+ 
+-This restriction of ISO C makes it hard to write code that is portable
+-to traditional C compilers, because the programmer does not know
+-whether the @code{uid_t} type is @code{short}, @code{int}, or
+- at code{long}.  Therefore, in cases like these GNU C allows a prototype
+-to override a later old-style definition.  More precisely, in GNU C, a
+-function prototype argument type overrides the argument type specified
+-by a later old-style definition if the former type is the same as the
+-latter type before promotion.  Thus in GNU C the above example is
+-equivalent to the following:
++ at item inline-stringops-dynamically
++ at itemx no-inline-stringops-dynamically
++ at cindex @code{target("inline-stringops-dynamically")} function attribute, x86
++Enable/disable the generation of the inline code to do small string
++operations and calling the library routines for large operations.
+ 
+- at smallexample
+-int isroot (uid_t);
++ at item align-stringops
++ at itemx no-align-stringops
++ at cindex @code{target("align-stringops")} function attribute, x86
++Do/do not align destination of inlined string operations.
+ 
+-int
+-isroot (uid_t x)
+-@{
+-  return x == 0;
+-@}
+- at end smallexample
++ at item recip
++ at itemx no-recip
++ at cindex @code{target("recip")} function attribute, x86
++Enable/disable the generation of RCPSS, RCPPS, RSQRTSS and RSQRTPS
++instructions followed an additional Newton-Raphson step instead of
++doing a floating-point division.
+ 
+- at noindent
+-GNU C++ does not support old-style function definitions, so this
+-extension is irrelevant.
++ at item arch=@var{ARCH}
++ at cindex @code{target("arch=@var{ARCH}")} function attribute, x86
++Specify the architecture to generate code for in compiling the function.
+ 
+- at node C++ Comments
+- at section C++ Style Comments
+- at cindex @code{//}
+- at cindex C++ comments
+- at cindex comments, C++ style
++ at item tune=@var{TUNE}
++ at cindex @code{target("tune=@var{TUNE}")} function attribute, x86
++Specify the architecture to tune for in compiling the function.
+ 
+-In GNU C, you may use C++ style comments, which start with @samp{//} and
+-continue until the end of the line.  Many other C implementations allow
+-such comments, and they are included in the 1999 C standard.  However,
+-C++ style comments are not recognized if you specify an @option{-std}
+-option specifying a version of ISO C before C99, or @option{-ansi}
+-(equivalent to @option{-std=c90}).
++ at item fpmath=@var{FPMATH}
++ at cindex @code{target("fpmath=@var{FPMATH}")} function attribute, x86
++Specify which floating-point unit to use.  You must specify the
++ at code{target("fpmath=sse,387")} option as
++ at code{target("fpmath=sse+387")} because the comma would separate
++different options.
++ at end table
+ 
+- at node Dollar Signs
+- at section Dollar Signs in Identifier Names
+- at cindex $
+- at cindex dollar signs in identifier names
+- at cindex identifier names, dollar signs in
++On the x86, the inliner does not inline a
++function that has different target options than the caller, unless the
++callee has a subset of the target options of the caller.  For example
++a function declared with @code{target("sse3")} can inline a function
++with @code{target("sse2")}, since @code{-msse3} implies @code{-msse2}.
++ at end table
+ 
+-In GNU C, you may normally use dollar signs in identifier names.
+-This is because many traditional C implementations allow such identifiers.
+-However, dollar signs in identifiers are not supported on a few target
+-machines, typically because the target assembler does not allow them.
++ at node Xstormy16 Function Attributes
++ at subsection Xstormy16 Function Attributes
+ 
+- at node Character Escapes
+- at section The Character @key{ESC} in Constants
++These function attributes are supported by the Xstormy16 back end:
+ 
+-You can use the sequence @samp{\e} in a string or character constant to
+-stand for the ASCII character @key{ESC}.
++ at table @code
++ at item interrupt
++ at cindex @code{interrupt} function attribute, Xstormy16
++Use this attribute to indicate
++that the specified function is an interrupt handler.  The compiler generates
++function entry and exit sequences suitable for use in an interrupt handler
++when this attribute is present.
++ at end table
+ 
+ @node Variable Attributes
+ @section Specifying Attributes of Variables
+@@ -4970,14 +5176,29 @@ types (@pxref{Type Attributes}).
+ Other front ends might define more attributes
+ (@pxref{C++ Extensions,,Extensions to the C++ Language}).
+ 
+-You may also specify attributes with @samp{__} preceding and following
+-each keyword.  This allows you to use them in header files without
+-being concerned about a possible macro of the same name.  For example,
+-you may use @code{__aligned__} instead of @code{aligned}.
+-
+ @xref{Attribute Syntax}, for details of the exact syntax for using
+ attributes.
+ 
++ at menu
++* Common Variable Attributes::
++* AVR Variable Attributes::
++* Blackfin Variable Attributes::
++* H8/300 Variable Attributes::
++* IA-64 Variable Attributes::
++* M32R/D Variable Attributes::
++* MeP Variable Attributes::
++* Microsoft Windows Variable Attributes::
++* PowerPC Variable Attributes::
++* SPU Variable Attributes::
++* x86 Variable Attributes::
++* Xstormy16 Variable Attributes::
++ at end menu
++
++ at node Common Variable Attributes
++ at subsection Common Variable Attributes
++
++The following attributes are supported on most targets.
++
+ @table @code
+ @cindex @code{aligned} variable attribute
+ @item aligned (@var{alignment})
+@@ -5046,7 +5267,7 @@ in an @code{__attribute__} still only provides you with 8-byte
+ alignment.  See your linker documentation for further information.
+ 
+ The @code{aligned} attribute can also be used for functions
+-(@pxref{Function Attributes}.)
++(@pxref{Common Function Attributes}.)
+ 
+ @item cleanup (@var{cleanup_function})
+ @cindex @code{cleanup} variable attribute
+@@ -5100,7 +5321,8 @@ argument, which must be a string, is printed in the warning if
+ present.
+ 
+ The @code{deprecated} attribute can also be used for functions and
+-types (@pxref{Function Attributes}, @pxref{Type Attributes}.)
++types (@pxref{Common Function Attributes},
++ at pxref{Common Type Attributes}).
+ 
+ @item mode (@var{mode})
+ @cindex @code{mode} variable attribute
+@@ -5171,47 +5393,20 @@ Use the @code{section} attribute with
+ @emph{global} variables and not @emph{local} variables,
+ as shown in the example.
+ 
+-You may use the @code{section} attribute with initialized or
+-uninitialized global variables but the linker requires
+-each object be defined once, with the exception that uninitialized
+-variables tentatively go in the @code{common} (or @code{bss}) section
+-and can be multiply ``defined''.  Using the @code{section} attribute
+-changes what section the variable goes into and may cause the
+-linker to issue an error if an uninitialized variable has multiple
+-definitions.  You can force a variable to be initialized with the
+- at option{-fno-common} flag or the @code{nocommon} attribute.
+-
+-Some file formats do not support arbitrary sections so the @code{section}
+-attribute is not available on all platforms.
+-If you need to map the entire contents of a module to a particular
+-section, consider using the facilities of the linker instead.
+-
+- at item shared
+- at cindex @code{shared} variable attribute
+-On Microsoft Windows, in addition to putting variable definitions in a named
+-section, the section can also be shared among all running copies of an
+-executable or DLL at .  For example, this small program defines shared data
+-by putting it in a named section @code{shared} and marking the section
+-shareable:
+-
+- at smallexample
+-int foo __attribute__((section ("shared"), shared)) = 0;
+-
+-int
+-main()
+-@{
+-  /* @r{Read and write foo.  All running
+-     copies see the same value.}  */
+-  return 0;
+-@}
+- at end smallexample
+-
+- at noindent
+-You may only use the @code{shared} attribute along with @code{section}
+-attribute with a fully-initialized global definition because of the way
+-linkers work.  See @code{section} attribute for more information.
++You may use the @code{section} attribute with initialized or
++uninitialized global variables but the linker requires
++each object be defined once, with the exception that uninitialized
++variables tentatively go in the @code{common} (or @code{bss}) section
++and can be multiply ``defined''.  Using the @code{section} attribute
++changes what section the variable goes into and may cause the
++linker to issue an error if an uninitialized variable has multiple
++definitions.  You can force a variable to be initialized with the
++ at option{-fno-common} flag or the @code{nocommon} attribute.
+ 
+-The @code{shared} attribute is only available on Microsoft Windows at .
++Some file formats do not support arbitrary sections so the @code{section}
++attribute is not available on all platforms.
++If you need to map the entire contents of a module to a particular
++section, consider using the facilities of the linker instead.
+ 
+ @item tls_model ("@var{tls_model}")
+ @cindex @code{tls_model} variable attribute
+@@ -5258,17 +5453,280 @@ This attribute is only applicable to integral and float scalars,
+ although arrays, pointers, and function return values are allowed in
+ conjunction with this construct.
+ 
+-Aggregates with this attribute are invalid, even if they are of the same
+-size as a corresponding scalar.  For example, the declaration:
++Aggregates with this attribute are invalid, even if they are of the same
++size as a corresponding scalar.  For example, the declaration:
++
++ at smallexample
++struct S @{ int a; @};
++struct S  __attribute__ ((vector_size (16))) foo;
++ at end smallexample
++
++ at noindent
++is invalid even if the size of the structure is the same as the size of
++the @code{int}.
++
++ at item weak
++ at cindex @code{weak} variable attribute
++The @code{weak} attribute is described in
++ at ref{Common Function Attributes}.
++
++ at end table
++
++ at node AVR Variable Attributes
++ at subsection AVR Variable Attributes
++
++ at table @code
++ at item progmem
++ at cindex @code{progmem} variable attribute, AVR
++The @code{progmem} attribute is used on the AVR to place read-only
++data in the non-volatile program memory (flash). The @code{progmem}
++attribute accomplishes this by putting respective variables into a
++section whose name starts with @code{.progmem}.
++
++This attribute works similar to the @code{section} attribute
++but adds additional checking. Notice that just like the
++ at code{section} attribute, @code{progmem} affects the location
++of the data but not how this data is accessed.
++
++In order to read data located with the @code{progmem} attribute
++(inline) assembler must be used.
++ at smallexample
++/* Use custom macros from @w{@uref{http://nongnu.org/avr-libc/user-manual/,AVR-LibC}} */
++#include <avr/pgmspace.h> 
++
++/* Locate var in flash memory */
++const int var[2] PROGMEM = @{ 1, 2 @};
++
++int read_var (int i)
++@{
++    /* Access var[] by accessor macro from avr/pgmspace.h */
++    return (int) pgm_read_word (& var[i]);
++@}
++ at end smallexample
++
++AVR is a Harvard architecture processor and data and read-only data
++normally resides in the data memory (RAM).
++
++See also the @ref{AVR Named Address Spaces} section for
++an alternate way to locate and access data in flash memory.
++
++ at item io
++ at itemx io (@var{addr})
++ at cindex @code{io} variable attribute, AVR
++Variables with the @code{io} attribute are used to address
++memory-mapped peripherals in the io address range.
++If an address is specified, the variable
++is assigned that address, and the value is interpreted as an
++address in the data address space.
++Example:
++
++ at smallexample
++volatile int porta __attribute__((io (0x22)));
++ at end smallexample
++
++The address specified in the address in the data address range.
++
++Otherwise, the variable it is not assigned an address, but the
++compiler will still use in/out instructions where applicable,
++assuming some other module assigns an address in the io address range.
++Example:
++
++ at smallexample
++extern volatile int porta __attribute__((io));
++ at end smallexample
++
++ at item io_low
++ at itemx io_low (@var{addr})
++ at cindex @code{io_low} variable attribute, AVR
++This is like the @code{io} attribute, but additionally it informs the
++compiler that the object lies in the lower half of the I/O area,
++allowing the use of @code{cbi}, @code{sbi}, @code{sbic} and @code{sbis}
++instructions.
++
++ at item address
++ at itemx address (@var{addr})
++ at cindex @code{address} variable attribute, AVR
++Variables with the @code{address} attribute are used to address
++memory-mapped peripherals that may lie outside the io address range.
++
++ at smallexample
++volatile int porta __attribute__((address (0x600)));
++ at end smallexample
++
++ at end table
++
++ at node Blackfin Variable Attributes
++ at subsection Blackfin Variable Attributes
++
++Three attributes are currently defined for the Blackfin.
++
++ at table @code
++ at item l1_data
++ at itemx l1_data_A
++ at itemx l1_data_B
++ at cindex @code{l1_data} variable attribute, Blackfin
++ at cindex @code{l1_data_A} variable attribute, Blackfin
++ at cindex @code{l1_data_B} variable attribute, Blackfin
++Use these attributes on the Blackfin to place the variable into L1 Data SRAM.
++Variables with @code{l1_data} attribute are put into the specific section
++named @code{.l1.data}. Those with @code{l1_data_A} attribute are put into
++the specific section named @code{.l1.data.A}. Those with @code{l1_data_B}
++attribute are put into the specific section named @code{.l1.data.B}.
++
++ at item l2
++ at cindex @code{l2} variable attribute, Blackfin
++Use this attribute on the Blackfin to place the variable into L2 SRAM.
++Variables with @code{l2} attribute are put into the specific section
++named @code{.l2.data}.
++ at end table
++
++ at node H8/300 Variable Attributes
++ at subsection H8/300 Variable Attributes
++
++These variable attributes are available for H8/300 targets:
++
++ at table @code
++ at item eightbit_data
++ at cindex @code{eightbit_data} variable attribute, H8/300
++ at cindex eight-bit data on the H8/300, H8/300H, and H8S
++Use this attribute on the H8/300, H8/300H, and H8S to indicate that the specified
++variable should be placed into the eight-bit data section.
++The compiler generates more efficient code for certain operations
++on data in the eight-bit data area.  Note the eight-bit data area is limited to
++256 bytes of data.
++
++You must use GAS and GLD from GNU binutils version 2.7 or later for
++this attribute to work correctly.
++
++ at item tiny_data
++ at cindex @code{tiny_data} variable attribute, H8/300
++ at cindex tiny data section on the H8/300H and H8S
++Use this attribute on the H8/300H and H8S to indicate that the specified
++variable should be placed into the tiny data section.
++The compiler generates more efficient code for loads and stores
++on data in the tiny data section.  Note the tiny data area is limited to
++slightly under 32KB of data.
++
++ at end table
++
++ at node IA-64 Variable Attributes
++ at subsection IA-64 Variable Attributes
++
++The IA-64 back end supports the following variable attribute:
++
++ at table @code
++ at item model (@var{model-name})
++ at cindex @code{model} variable attribute, IA-64
++
++On IA-64, use this attribute to set the addressability of an object.
++At present, the only supported identifier for @var{model-name} is
++ at code{small}, indicating addressability via ``small'' (22-bit)
++addresses (so that their addresses can be loaded with the @code{addl}
++instruction).  Caveat: such addressing is by definition not position
++independent and hence this attribute must not be used for objects
++defined by shared libraries.
++
++ at end table
++
++ at node M32R/D Variable Attributes
++ at subsection M32R/D Variable Attributes
++
++One attribute is currently defined for the M32R/D at .
++
++ at table @code
++ at item model (@var{model-name})
++ at cindex @code{model-name} variable attribute, M32R/D
++ at cindex variable addressability on the M32R/D
++Use this attribute on the M32R/D to set the addressability of an object.
++The identifier @var{model-name} is one of @code{small}, @code{medium},
++or @code{large}, representing each of the code models.
++
++Small model objects live in the lower 16MB of memory (so that their
++addresses can be loaded with the @code{ld24} instruction).
++
++Medium and large model objects may live anywhere in the 32-bit address space
++(the compiler generates @code{seth/add3} instructions to load their
++addresses).
++ at end table
++
++ at node MeP Variable Attributes
++ at subsection MeP Variable Attributes
++
++The MeP target has a number of addressing modes and busses.  The
++ at code{near} space spans the standard memory space's first 16 megabytes
++(24 bits).  The @code{far} space spans the entire 32-bit memory space.
++The @code{based} space is a 128-byte region in the memory space that
++is addressed relative to the @code{$tp} register.  The @code{tiny}
++space is a 65536-byte region relative to the @code{$gp} register.  In
++addition to these memory regions, the MeP target has a separate 16-bit
++control bus which is specified with @code{cb} attributes.
++
++ at table @code
++
++ at item based
++ at cindex @code{based} variable attribute, MeP
++Any variable with the @code{based} attribute is assigned to the
++ at code{.based} section, and is accessed with relative to the
++ at code{$tp} register.
++
++ at item tiny
++ at cindex @code{tiny} variable attribute, MeP
++Likewise, the @code{tiny} attribute assigned variables to the
++ at code{.tiny} section, relative to the @code{$gp} register.
++
++ at item near
++ at cindex @code{near} variable attribute, MeP
++Variables with the @code{near} attribute are assumed to have addresses
++that fit in a 24-bit addressing mode.  This is the default for large
++variables (@code{-mtiny=4} is the default) but this attribute can
++override @code{-mtiny=} for small variables, or override @code{-ml}.
++
++ at item far
++ at cindex @code{far} variable attribute, MeP
++Variables with the @code{far} attribute are addressed using a full
++32-bit address.  Since this covers the entire memory space, this
++allows modules to make no assumptions about where variables might be
++stored.
++
++ at item io
++ at cindex @code{io} variable attribute, MeP
++ at itemx io (@var{addr})
++Variables with the @code{io} attribute are used to address
++memory-mapped peripherals.  If an address is specified, the variable
++is assigned that address, else it is not assigned an address (it is
++assumed some other module assigns an address).  Example:
++
++ at smallexample
++int timer_count __attribute__((io(0x123)));
++ at end smallexample
++
++ at item cb
++ at itemx cb (@var{addr})
++ at cindex @code{cb} variable attribute, MeP
++Variables with the @code{cb} attribute are used to access the control
++bus, using special instructions.  @code{addr} indicates the control bus
++address.  Example:
+ 
+ @smallexample
+-struct S @{ int a; @};
+-struct S  __attribute__ ((vector_size (16))) foo;
++int cpu_clock __attribute__((cb(0x123)));
+ @end smallexample
+ 
+- at noindent
+-is invalid even if the size of the structure is the same as the size of
+-the @code{int}.
++ at end table
++
++ at node Microsoft Windows Variable Attributes
++ at subsection Microsoft Windows Variable Attributes
++
++You can use these attributes on Microsoft Windows targets.
++ at ref{x86 Variable Attributes} for additional Windows compatibility
++attributes available on all x86 targets.
++
++ at table @code
++ at item dllimport
++ at itemx dllexport
++ at cindex @code{dllimport} variable attribute
++ at cindex @code{dllexport} variable attribute
++The @code{dllimport} and @code{dllexport} attributes are described in
++ at ref{Microsoft Windows Function Attributes}.
+ 
+ @item selectany
+ @cindex @code{selectany} variable attribute
+@@ -5291,891 +5749,1062 @@ targets.  You can use @code{__declspec (selectany)} as a synonym for
+ @code{__attribute__ ((selectany))} for compatibility with other
+ compilers.
+ 
+- at item weak
+- at cindex @code{weak} variable attribute
+-The @code{weak} attribute is described in @ref{Function Attributes}.
++ at item shared
++ at cindex @code{shared} variable attribute
++On Microsoft Windows, in addition to putting variable definitions in a named
++section, the section can also be shared among all running copies of an
++executable or DLL at .  For example, this small program defines shared data
++by putting it in a named section @code{shared} and marking the section
++shareable:
+ 
+- at item dllimport
+- at cindex @code{dllimport} variable attribute
+-The @code{dllimport} attribute is described in @ref{Function Attributes}.
++ at smallexample
++int foo __attribute__((section ("shared"), shared)) = 0;
+ 
+- at item dllexport
+- at cindex @code{dllexport} variable attribute
+-The @code{dllexport} attribute is described in @ref{Function Attributes}.
++int
++main()
++@{
++  /* @r{Read and write foo.  All running
++     copies see the same value.}  */
++  return 0;
++@}
++ at end smallexample
++
++ at noindent
++You may only use the @code{shared} attribute along with @code{section}
++attribute with a fully-initialized global definition because of the way
++linkers work.  See @code{section} attribute for more information.
++
++The @code{shared} attribute is only available on Microsoft Windows at .
+ 
+ @end table
+ 
+- at anchor{AVR Variable Attributes}
+- at subsection AVR Variable Attributes
++ at node PowerPC Variable Attributes
++ at subsection PowerPC Variable Attributes
++
++Three attributes currently are defined for PowerPC configurations:
++ at code{altivec}, @code{ms_struct} and @code{gcc_struct}.
++
++ at cindex @code{ms_struct} variable attribute, PowerPC
++ at cindex @code{gcc_struct} variable attribute, PowerPC
++For full documentation of the struct attributes please see the
++documentation in @ref{x86 Variable Attributes}.
++
++ at cindex @code{altivec} variable attribute, PowerPC
++For documentation of @code{altivec} attribute please see the
++documentation in @ref{PowerPC Type Attributes}.
++
++ at node SPU Variable Attributes
++ at subsection SPU Variable Attributes
++
++ at cindex @code{spu_vector} variable attribute, SPU
++The SPU supports the @code{spu_vector} attribute for variables.  For
++documentation of this attribute please see the documentation in
++ at ref{SPU Type Attributes}.
++
++ at node x86 Variable Attributes
++ at subsection x86 Variable Attributes
++
++Two attributes are currently defined for x86 configurations:
++ at code{ms_struct} and @code{gcc_struct}.
+ 
+ @table @code
+- at item progmem
+- at cindex @code{progmem} variable attribute, AVR
+-The @code{progmem} attribute is used on the AVR to place read-only
+-data in the non-volatile program memory (flash). The @code{progmem}
+-attribute accomplishes this by putting respective variables into a
+-section whose name starts with @code{.progmem}.
++ at item ms_struct
++ at itemx gcc_struct
++ at cindex @code{ms_struct} variable attribute, x86
++ at cindex @code{gcc_struct} variable attribute, x86
+ 
+-This attribute works similar to the @code{section} attribute
+-but adds additional checking. Notice that just like the
+- at code{section} attribute, @code{progmem} affects the location
+-of the data but not how this data is accessed.
++If @code{packed} is used on a structure, or if bit-fields are used,
++it may be that the Microsoft ABI lays out the structure differently
++than the way GCC normally does.  Particularly when moving packed
++data between functions compiled with GCC and the native Microsoft compiler
++(either via function call or as data in a file), it may be necessary to access
++either format.
+ 
+-In order to read data located with the @code{progmem} attribute
+-(inline) assembler must be used.
+- at smallexample
+-/* Use custom macros from @w{@uref{http://nongnu.org/avr-libc/user-manual/,AVR-LibC}} */
+-#include <avr/pgmspace.h> 
++Currently @option{-m[no-]ms-bitfields} is provided for the Microsoft Windows x86
++compilers to match the native Microsoft compiler.
+ 
+-/* Locate var in flash memory */
+-const int var[2] PROGMEM = @{ 1, 2 @};
++The Microsoft structure layout algorithm is fairly simple with the exception
++of the bit-field packing.  
++The padding and alignment of members of structures and whether a bit-field 
++can straddle a storage-unit boundary are determine by these rules:
+ 
+-int read_var (int i)
+-@{
+-    /* Access var[] by accessor macro from avr/pgmspace.h */
+-    return (int) pgm_read_word (& var[i]);
+-@}
++ at enumerate
++ at item Structure members are stored sequentially in the order in which they are
++declared: the first member has the lowest memory address and the last member
++the highest.
++
++ at item Every data object has an alignment requirement.  The alignment requirement
++for all data except structures, unions, and arrays is either the size of the
++object or the current packing size (specified with either the
++ at code{aligned} attribute or the @code{pack} pragma),
++whichever is less.  For structures, unions, and arrays,
++the alignment requirement is the largest alignment requirement of its members.
++Every object is allocated an offset so that:
++
++ at smallexample
++offset % alignment_requirement == 0
+ @end smallexample
+ 
+-AVR is a Harvard architecture processor and data and read-only data
+-normally resides in the data memory (RAM).
++ at item Adjacent bit-fields are packed into the same 1-, 2-, or 4-byte allocation
++unit if the integral types are the same size and if the next bit-field fits
++into the current allocation unit without crossing the boundary imposed by the
++common alignment requirements of the bit-fields.
++ at end enumerate
+ 
+-See also the @ref{AVR Named Address Spaces} section for
+-an alternate way to locate and access data in flash memory.
++MSVC interprets zero-length bit-fields in the following ways:
+ 
+- at item io
+- at itemx io (@var{addr})
+- at cindex @code{io} variable attribute, AVR
+-Variables with the @code{io} attribute are used to address
+-memory-mapped peripherals in the io address range.
+-If an address is specified, the variable
+-is assigned that address, and the value is interpreted as an
+-address in the data address space.
+-Example:
++ at enumerate
++ at item If a zero-length bit-field is inserted between two bit-fields that
++are normally coalesced, the bit-fields are not coalesced.
++
++For example:
+ 
+ @smallexample
+-volatile int porta __attribute__((io (0x22)));
++struct
++ @{
++   unsigned long bf_1 : 12;
++   unsigned long : 0;
++   unsigned long bf_2 : 12;
++ @} t1;
+ @end smallexample
+ 
+-The address specified in the address in the data address range.
++ at noindent
++The size of @code{t1} is 8 bytes with the zero-length bit-field.  If the
++zero-length bit-field were removed, @code{t1}'s size would be 4 bytes.
+ 
+-Otherwise, the variable it is not assigned an address, but the
+-compiler will still use in/out instructions where applicable,
+-assuming some other module assigns an address in the io address range.
+-Example:
++ at item If a zero-length bit-field is inserted after a bit-field, @code{foo}, and the
++alignment of the zero-length bit-field is greater than the member that follows it,
++ at code{bar}, @code{bar} is aligned as the type of the zero-length bit-field.
++
++For example:
+ 
+ @smallexample
+-extern volatile int porta __attribute__((io));
++struct
++ @{
++   char foo : 4;
++   short : 0;
++   char bar;
++ @} t2;
++
++struct
++ @{
++   char foo : 4;
++   short : 0;
++   double bar;
++ @} t3;
+ @end smallexample
+ 
+- at item io_low
+- at itemx io_low (@var{addr})
+- at cindex @code{io_low} variable attribute, AVR
+-This is like the @code{io} attribute, but additionally it informs the
+-compiler that the object lies in the lower half of the I/O area,
+-allowing the use of @code{cbi}, @code{sbi}, @code{sbic} and @code{sbis}
+-instructions.
++ at noindent
++For @code{t2}, @code{bar} is placed at offset 2, rather than offset 1.
++Accordingly, the size of @code{t2} is 4.  For @code{t3}, the zero-length
++bit-field does not affect the alignment of @code{bar} or, as a result, the size
++of the structure.
+ 
+- at item address
+- at itemx address (@var{addr})
+- at cindex @code{address} variable attribute, AVR
+-Variables with the @code{address} attribute are used to address
+-memory-mapped peripherals that may lie outside the io address range.
++Taking this into account, it is important to note the following:
++
++ at enumerate
++ at item If a zero-length bit-field follows a normal bit-field, the type of the
++zero-length bit-field may affect the alignment of the structure as whole. For
++example, @code{t2} has a size of 4 bytes, since the zero-length bit-field follows a
++normal bit-field, and is of type short.
++
++ at item Even if a zero-length bit-field is not followed by a normal bit-field, it may
++still affect the alignment of the structure:
+ 
+ @smallexample
+-volatile int porta __attribute__((address (0x600)));
++struct
++ @{
++   char foo : 6;
++   long : 0;
++ @} t4;
+ @end smallexample
+ 
+- at end table
+-
+- at subsection Blackfin Variable Attributes
++ at noindent
++Here, @code{t4} takes up 4 bytes.
++ at end enumerate
+ 
+-Three attributes are currently defined for the Blackfin.
++ at item Zero-length bit-fields following non-bit-field members are ignored:
+ 
+- at table @code
+- at item l1_data
+- at itemx l1_data_A
+- at itemx l1_data_B
+- at cindex @code{l1_data} variable attribute, Blackfin
+- at cindex @code{l1_data_A} variable attribute, Blackfin
+- at cindex @code{l1_data_B} variable attribute, Blackfin
+-Use these attributes on the Blackfin to place the variable into L1 Data SRAM.
+-Variables with @code{l1_data} attribute are put into the specific section
+-named @code{.l1.data}. Those with @code{l1_data_A} attribute are put into
+-the specific section named @code{.l1.data.A}. Those with @code{l1_data_B}
+-attribute are put into the specific section named @code{.l1.data.B}.
++ at smallexample
++struct
++ @{
++   char foo;
++   long : 0;
++   char bar;
++ @} t5;
++ at end smallexample
+ 
+- at item l2
+- at cindex @code{l2} variable attribute, Blackfin
+-Use this attribute on the Blackfin to place the variable into L2 SRAM.
+-Variables with @code{l2} attribute are put into the specific section
+-named @code{.l2.data}.
++ at noindent
++Here, @code{t5} takes up 2 bytes.
++ at end enumerate
+ @end table
+ 
+- at subsection H8/300 Variable Attributes
++ at node Xstormy16 Variable Attributes
++ at subsection Xstormy16 Variable Attributes
+ 
+-These variable attributes are available for H8/300 targets:
++One attribute is currently defined for xstormy16 configurations:
++ at code{below100}.
+ 
+ @table @code
+- at item eightbit_data
+- at cindex @code{eightbit_data} variable attribute, H8/300
+- at cindex eight-bit data on the H8/300, H8/300H, and H8S
+-Use this attribute on the H8/300, H8/300H, and H8S to indicate that the specified
+-variable should be placed into the eight-bit data section.
+-The compiler generates more efficient code for certain operations
+-on data in the eight-bit data area.  Note the eight-bit data area is limited to
+-256 bytes of data.
+-
+-You must use GAS and GLD from GNU binutils version 2.7 or later for
+-this attribute to work correctly.
++ at item below100
++ at cindex @code{below100} variable attribute, Xstormy16
+ 
+- at item tiny_data
+- at cindex @code{tiny_data} variable attribute, H8/300
+- at cindex tiny data section on the H8/300H and H8S
+-Use this attribute on the H8/300H and H8S to indicate that the specified
+-variable should be placed into the tiny data section.
+-The compiler generates more efficient code for loads and stores
+-on data in the tiny data section.  Note the tiny data area is limited to
+-slightly under 32KB of data.
++If a variable has the @code{below100} attribute (@code{BELOW100} is
++allowed also), GCC places the variable in the first 0x100 bytes of
++memory and use special opcodes to access it.  Such variables are
++placed in either the @code{.bss_below100} section or the
++ at code{.data_below100} section.
+ 
+ @end table
+ 
+- at subsection IA-64 Variable Attributes
++ at node Type Attributes
++ at section Specifying Attributes of Types
++ at cindex attribute of types
++ at cindex type attributes
+ 
+-The IA-64 back end supports the following variable attribute:
++The keyword @code{__attribute__} allows you to specify special
++attributes of types.  Some type attributes apply only to @code{struct}
++and @code{union} types, while others can apply to any type defined
++via a @code{typedef} declaration.  Other attributes are defined for
++functions (@pxref{Function Attributes}), labels (@pxref{Label 
++Attributes}) and for variables (@pxref{Variable Attributes}).
+ 
+- at table @code
+- at item model (@var{model-name})
+- at cindex @code{model} variable attribute, IA-64
++The @code{__attribute__} keyword is followed by an attribute specification
++inside double parentheses.  
+ 
+-On IA-64, use this attribute to set the addressability of an object.
+-At present, the only supported identifier for @var{model-name} is
+- at code{small}, indicating addressability via ``small'' (22-bit)
+-addresses (so that their addresses can be loaded with the @code{addl}
+-instruction).  Caveat: such addressing is by definition not position
+-independent and hence this attribute must not be used for objects
+-defined by shared libraries.
++You may specify type attributes in an enum, struct or union type
++declaration or definition by placing them immediately after the
++ at code{struct}, @code{union} or @code{enum} keyword.  A less preferred
++syntax is to place them just past the closing curly brace of the
++definition.
+ 
+- at end table
++You can also include type attributes in a @code{typedef} declaration.
++ at xref{Attribute Syntax}, for details of the exact syntax for using
++attributes.
+ 
+- at subsection M32R/D Variable Attributes
++ at menu
++* Common Type Attributes::
++* ARM Type Attributes::
++* MeP Type Attributes::
++* PowerPC Type Attributes::
++* SPU Type Attributes::
++* x86 Type Attributes::
++ at end menu
+ 
+-One attribute is currently defined for the M32R/D at .
++ at node Common Type Attributes
++ at subsection Common Type Attributes
++
++The following type attributes are supported on most targets.
+ 
+ @table @code
+- at item model (@var{model-name})
+- at cindex @code{model-name} variable attribute, M32R/D
+- at cindex variable addressability on the M32R/D
+-Use this attribute on the M32R/D to set the addressability of an object.
+-The identifier @var{model-name} is one of @code{small}, @code{medium},
+-or @code{large}, representing each of the code models.
++ at cindex @code{aligned} type attribute
++ at item aligned (@var{alignment})
++This attribute specifies a minimum alignment (in bytes) for variables
++of the specified type.  For example, the declarations:
+ 
+-Small model objects live in the lower 16MB of memory (so that their
+-addresses can be loaded with the @code{ld24} instruction).
++ at smallexample
++struct S @{ short f[3]; @} __attribute__ ((aligned (8)));
++typedef int more_aligned_int __attribute__ ((aligned (8)));
++ at end smallexample
+ 
+-Medium and large model objects may live anywhere in the 32-bit address space
+-(the compiler generates @code{seth/add3} instructions to load their
+-addresses).
+- at end table
++ at noindent
++force the compiler to ensure (as far as it can) that each variable whose
++type is @code{struct S} or @code{more_aligned_int} is allocated and
++aligned @emph{at least} on a 8-byte boundary.  On a SPARC, having all
++variables of type @code{struct S} aligned to 8-byte boundaries allows
++the compiler to use the @code{ldd} and @code{std} (doubleword load and
++store) instructions when copying one variable of type @code{struct S} to
++another, thus improving run-time efficiency.
+ 
+- at anchor{MeP Variable Attributes}
+- at subsection MeP Variable Attributes
++Note that the alignment of any given @code{struct} or @code{union} type
++is required by the ISO C standard to be at least a perfect multiple of
++the lowest common multiple of the alignments of all of the members of
++the @code{struct} or @code{union} in question.  This means that you @emph{can}
++effectively adjust the alignment of a @code{struct} or @code{union}
++type by attaching an @code{aligned} attribute to any one of the members
++of such a type, but the notation illustrated in the example above is a
++more obvious, intuitive, and readable way to request the compiler to
++adjust the alignment of an entire @code{struct} or @code{union} type.
+ 
+-The MeP target has a number of addressing modes and busses.  The
+- at code{near} space spans the standard memory space's first 16 megabytes
+-(24 bits).  The @code{far} space spans the entire 32-bit memory space.
+-The @code{based} space is a 128-byte region in the memory space that
+-is addressed relative to the @code{$tp} register.  The @code{tiny}
+-space is a 65536-byte region relative to the @code{$gp} register.  In
+-addition to these memory regions, the MeP target has a separate 16-bit
+-control bus which is specified with @code{cb} attributes.
++As in the preceding example, you can explicitly specify the alignment
++(in bytes) that you wish the compiler to use for a given @code{struct}
++or @code{union} type.  Alternatively, you can leave out the alignment factor
++and just ask the compiler to align a type to the maximum
++useful alignment for the target machine you are compiling for.  For
++example, you could write:
+ 
+- at table @code
++ at smallexample
++struct S @{ short f[3]; @} __attribute__ ((aligned));
++ at end smallexample
+ 
+- at item based
+- at cindex @code{based} variable attribute, MeP
+-Any variable with the @code{based} attribute is assigned to the
+- at code{.based} section, and is accessed with relative to the
+- at code{$tp} register.
++Whenever you leave out the alignment factor in an @code{aligned}
++attribute specification, the compiler automatically sets the alignment
++for the type to the largest alignment that is ever used for any data
++type on the target machine you are compiling for.  Doing this can often
++make copy operations more efficient, because the compiler can use
++whatever instructions copy the biggest chunks of memory when performing
++copies to or from the variables that have types that you have aligned
++this way.
+ 
+- at item tiny
+- at cindex @code{tiny} variable attribute, MeP
+-Likewise, the @code{tiny} attribute assigned variables to the
+- at code{.tiny} section, relative to the @code{$gp} register.
++In the example above, if the size of each @code{short} is 2 bytes, then
++the size of the entire @code{struct S} type is 6 bytes.  The smallest
++power of two that is greater than or equal to that is 8, so the
++compiler sets the alignment for the entire @code{struct S} type to 8
++bytes.
+ 
+- at item near
+- at cindex @code{near} variable attribute, MeP
+-Variables with the @code{near} attribute are assumed to have addresses
+-that fit in a 24-bit addressing mode.  This is the default for large
+-variables (@code{-mtiny=4} is the default) but this attribute can
+-override @code{-mtiny=} for small variables, or override @code{-ml}.
++Note that although you can ask the compiler to select a time-efficient
++alignment for a given type and then declare only individual stand-alone
++objects of that type, the compiler's ability to select a time-efficient
++alignment is primarily useful only when you plan to create arrays of
++variables having the relevant (efficiently aligned) type.  If you
++declare or use arrays of variables of an efficiently-aligned type, then
++it is likely that your program also does pointer arithmetic (or
++subscripting, which amounts to the same thing) on pointers to the
++relevant type, and the code that the compiler generates for these
++pointer arithmetic operations is often more efficient for
++efficiently-aligned types than for other types.
+ 
+- at item far
+- at cindex @code{far} variable attribute, MeP
+-Variables with the @code{far} attribute are addressed using a full
+-32-bit address.  Since this covers the entire memory space, this
+-allows modules to make no assumptions about where variables might be
+-stored.
++The @code{aligned} attribute can only increase the alignment; but you
++can decrease it by specifying @code{packed} as well.  See below.
+ 
+- at item io
+- at cindex @code{io} variable attribute, MeP
+- at itemx io (@var{addr})
+-Variables with the @code{io} attribute are used to address
+-memory-mapped peripherals.  If an address is specified, the variable
+-is assigned that address, else it is not assigned an address (it is
+-assumed some other module assigns an address).  Example:
++Note that the effectiveness of @code{aligned} attributes may be limited
++by inherent limitations in your linker.  On many systems, the linker is
++only able to arrange for variables to be aligned up to a certain maximum
++alignment.  (For some linkers, the maximum supported alignment may
++be very very small.)  If your linker is only able to align variables
++up to a maximum of 8-byte alignment, then specifying @code{aligned(16)}
++in an @code{__attribute__} still only provides you with 8-byte
++alignment.  See your linker documentation for further information.
++
++ at opindex fshort-enums
++Specifying this attribute for @code{struct} and @code{union} types is
++equivalent to specifying the @code{packed} attribute on each of the
++structure or union members.  Specifying the @option{-fshort-enums}
++flag on the line is equivalent to specifying the @code{packed}
++attribute on all @code{enum} definitions.
++
++In the following example @code{struct my_packed_struct}'s members are
++packed closely together, but the internal layout of its @code{s} member
++is not packed---to do that, @code{struct my_unpacked_struct} needs to
++be packed too.
+ 
+ @smallexample
+-int timer_count __attribute__((io(0x123)));
++struct my_unpacked_struct
++ @{
++    char c;
++    int i;
++ @};
++
++struct __attribute__ ((__packed__)) my_packed_struct
++  @{
++     char c;
++     int  i;
++     struct my_unpacked_struct s;
++  @};
+ @end smallexample
+ 
+- at item cb
+- at itemx cb (@var{addr})
+- at cindex @code{cb} variable attribute, MeP
+-Variables with the @code{cb} attribute are used to access the control
+-bus, using special instructions.  @code{addr} indicates the control bus
+-address.  Example:
++You may only specify this attribute on the definition of an @code{enum},
++ at code{struct} or @code{union}, not on a @code{typedef} that does not
++also define the enumerated type, structure or union.
++
++ at item bnd_variable_size
++ at cindex @code{bnd_variable_size} type attribute
++ at cindex Pointer Bounds Checker attributes
++When applied to a structure field, this attribute tells Pointer
++Bounds Checker that the size of this field should not be computed
++using static type information.  It may be used to mark variably-sized
++static array fields placed at the end of a structure.
++
++ at smallexample
++struct S
++@{
++  int size;
++  char data[1];
++@}
++S *p = (S *)malloc (sizeof(S) + 100);
++p->data[10] = 0; //Bounds violation
++ at end smallexample
++
++ at noindent
++By using an attribute for the field we may avoid unwanted bound
++violation checks:
++
++ at smallexample
++struct S
++@{
++  int size;
++  char data[1] __attribute__((bnd_variable_size));
++@}
++S *p = (S *)malloc (sizeof(S) + 100);
++p->data[10] = 0; //OK
++ at end smallexample
++
++ at item deprecated
++ at itemx deprecated (@var{msg})
++ at cindex @code{deprecated} type attribute
++The @code{deprecated} attribute results in a warning if the type
++is used anywhere in the source file.  This is useful when identifying
++types that are expected to be removed in a future version of a program.
++If possible, the warning also includes the location of the declaration
++of the deprecated type, to enable users to easily find further
++information about why the type is deprecated, or what they should do
++instead.  Note that the warnings only occur for uses and then only
++if the type is being applied to an identifier that itself is not being
++declared as deprecated.
+ 
+ @smallexample
+-int cpu_clock __attribute__((cb(0x123)));
++typedef int T1 __attribute__ ((deprecated));
++T1 x;
++typedef T1 T2;
++T2 y;
++typedef T1 T3 __attribute__ ((deprecated));
++T3 z __attribute__ ((deprecated));
+ @end smallexample
+ 
+- at end table
+-
+- at subsection PowerPC Variable Attributes
++ at noindent
++results in a warning on line 2 and 3 but not lines 4, 5, or 6.  No
++warning is issued for line 4 because T2 is not explicitly
++deprecated.  Line 5 has no warning because T3 is explicitly
++deprecated.  Similarly for line 6.  The optional @var{msg}
++argument, which must be a string, is printed in the warning if
++present.
+ 
+-Three attributes currently are defined for PowerPC configurations:
+- at code{altivec}, @code{ms_struct} and @code{gcc_struct}.
++The @code{deprecated} attribute can also be used for functions and
++variables (@pxref{Function Attributes}, @pxref{Variable Attributes}.)
+ 
+- at cindex @code{ms_struct} variable attribute, PowerPC
+- at cindex @code{gcc_struct} variable attribute, PowerPC
+-For full documentation of the struct attributes please see the
+-documentation in @ref{x86 Variable Attributes}.
++ at item designated_init
++ at cindex @code{designated_init} type attribute
++This attribute may only be applied to structure types.  It indicates
++that any initialization of an object of this type must use designated
++initializers rather than positional initializers.  The intent of this
++attribute is to allow the programmer to indicate that a structure's
++layout may change, and that therefore relying on positional
++initialization will result in future breakage.
+ 
+- at cindex @code{altivec} variable attribute, PowerPC
+-For documentation of @code{altivec} attribute please see the
+-documentation in @ref{PowerPC Type Attributes}.
++GCC emits warnings based on this attribute by default; use
++ at option{-Wno-designated-init} to suppress them.
+ 
+- at subsection SPU Variable Attributes
++ at item may_alias
++ at cindex @code{may_alias} type attribute
++Accesses through pointers to types with this attribute are not subject
++to type-based alias analysis, but are instead assumed to be able to alias
++any other type of objects.
++In the context of section 6.5 paragraph 7 of the C99 standard,
++an lvalue expression
++dereferencing such a pointer is treated like having a character type.
++See @option{-fstrict-aliasing} for more information on aliasing issues.
++This extension exists to support some vector APIs, in which pointers to
++one vector type are permitted to alias pointers to a different vector type.
+ 
+- at cindex @code{spu_vector} variable attribute, SPU
+-The SPU supports the @code{spu_vector} attribute for variables.  For
+-documentation of this attribute please see the documentation in
+- at ref{SPU Type Attributes}.
++Note that an object of a type with this attribute does not have any
++special semantics.
+ 
+- at anchor{x86 Variable Attributes}
+- at subsection x86 Variable Attributes
++Example of use:
+ 
+-Two attributes are currently defined for x86 configurations:
+- at code{ms_struct} and @code{gcc_struct}.
++ at smallexample
++typedef short __attribute__((__may_alias__)) short_a;
+ 
+- at table @code
+- at item ms_struct
+- at itemx gcc_struct
+- at cindex @code{ms_struct} variable attribute, x86
+- at cindex @code{gcc_struct} variable attribute, x86
++int
++main (void)
++@{
++  int a = 0x12345678;
++  short_a *b = (short_a *) &a;
+ 
+-If @code{packed} is used on a structure, or if bit-fields are used,
+-it may be that the Microsoft ABI lays out the structure differently
+-than the way GCC normally does.  Particularly when moving packed
+-data between functions compiled with GCC and the native Microsoft compiler
+-(either via function call or as data in a file), it may be necessary to access
+-either format.
++  b[1] = 0;
+ 
+-Currently @option{-m[no-]ms-bitfields} is provided for the Microsoft Windows x86
+-compilers to match the native Microsoft compiler.
++  if (a == 0x12345678)
++    abort();
+ 
+-The Microsoft structure layout algorithm is fairly simple with the exception
+-of the bit-field packing.  
+-The padding and alignment of members of structures and whether a bit-field 
+-can straddle a storage-unit boundary are determine by these rules:
++  exit(0);
++@}
++ at end smallexample
+ 
+- at enumerate
+- at item Structure members are stored sequentially in the order in which they are
+-declared: the first member has the lowest memory address and the last member
+-the highest.
++ at noindent
++If you replaced @code{short_a} with @code{short} in the variable
++declaration, the above program would abort when compiled with
++ at option{-fstrict-aliasing}, which is on by default at @option{-O2} or
++above.
+ 
+- at item Every data object has an alignment requirement.  The alignment requirement
+-for all data except structures, unions, and arrays is either the size of the
+-object or the current packing size (specified with either the
+- at code{aligned} attribute or the @code{pack} pragma),
+-whichever is less.  For structures, unions, and arrays,
+-the alignment requirement is the largest alignment requirement of its members.
+-Every object is allocated an offset so that:
++ at item packed
++ at cindex @code{packed} type attribute
++This attribute, attached to @code{struct} or @code{union} type
++definition, specifies that each member (other than zero-width bit-fields)
++of the structure or union is placed to minimize the memory required.  When
++attached to an @code{enum} definition, it indicates that the smallest
++integral type should be used.
+ 
+- at smallexample
+-offset % alignment_requirement == 0
+- at end smallexample
++ at item transparent_union
++ at cindex @code{transparent_union} type attribute
+ 
+- at item Adjacent bit-fields are packed into the same 1-, 2-, or 4-byte allocation
+-unit if the integral types are the same size and if the next bit-field fits
+-into the current allocation unit without crossing the boundary imposed by the
+-common alignment requirements of the bit-fields.
+- at end enumerate
++This attribute, attached to a @code{union} type definition, indicates
++that any function parameter having that union type causes calls to that
++function to be treated in a special way.
+ 
+-MSVC interprets zero-length bit-fields in the following ways:
++First, the argument corresponding to a transparent union type can be of
++any type in the union; no cast is required.  Also, if the union contains
++a pointer type, the corresponding argument can be a null pointer
++constant or a void pointer expression; and if the union contains a void
++pointer type, the corresponding argument can be any pointer expression.
++If the union member type is a pointer, qualifiers like @code{const} on
++the referenced type must be respected, just as with normal pointer
++conversions.
+ 
+- at enumerate
+- at item If a zero-length bit-field is inserted between two bit-fields that
+-are normally coalesced, the bit-fields are not coalesced.
++Second, the argument is passed to the function using the calling
++conventions of the first member of the transparent union, not the calling
++conventions of the union itself.  All members of the union must have the
++same machine representation; this is necessary for this argument passing
++to work properly.
+ 
+-For example:
++Transparent unions are designed for library functions that have multiple
++interfaces for compatibility reasons.  For example, suppose the
++ at code{wait} function must accept either a value of type @code{int *} to
++comply with POSIX, or a value of type @code{union wait *} to comply with
++the 4.1BSD interface.  If @code{wait}'s parameter were @code{void *},
++ at code{wait} would accept both kinds of arguments, but it would also
++accept any other pointer type and this would make argument type checking
++less useful.  Instead, @code{<sys/wait.h>} might define the interface
++as follows:
+ 
+ @smallexample
+-struct
+- @{
+-   unsigned long bf_1 : 12;
+-   unsigned long : 0;
+-   unsigned long bf_2 : 12;
+- @} t1;
++typedef union __attribute__ ((__transparent_union__))
++  @{
++    int *__ip;
++    union wait *__up;
++  @} wait_status_ptr_t;
++
++pid_t wait (wait_status_ptr_t);
+ @end smallexample
+ 
+ @noindent
+-The size of @code{t1} is 8 bytes with the zero-length bit-field.  If the
+-zero-length bit-field were removed, @code{t1}'s size would be 4 bytes.
+-
+- at item If a zero-length bit-field is inserted after a bit-field, @code{foo}, and the
+-alignment of the zero-length bit-field is greater than the member that follows it,
+- at code{bar}, @code{bar} is aligned as the type of the zero-length bit-field.
+-
+-For example:
++This interface allows either @code{int *} or @code{union wait *}
++arguments to be passed, using the @code{int *} calling convention.
++The program can call @code{wait} with arguments of either type:
+ 
+ @smallexample
+-struct
+- @{
+-   char foo : 4;
+-   short : 0;
+-   char bar;
+- @} t2;
+-
+-struct
+- @{
+-   char foo : 4;
+-   short : 0;
+-   double bar;
+- @} t3;
++int w1 () @{ int w; return wait (&w); @}
++int w2 () @{ union wait w; return wait (&w); @}
+ @end smallexample
+ 
+ @noindent
+-For @code{t2}, @code{bar} is placed at offset 2, rather than offset 1.
+-Accordingly, the size of @code{t2} is 4.  For @code{t3}, the zero-length
+-bit-field does not affect the alignment of @code{bar} or, as a result, the size
+-of the structure.
+-
+-Taking this into account, it is important to note the following:
+-
+- at enumerate
+- at item If a zero-length bit-field follows a normal bit-field, the type of the
+-zero-length bit-field may affect the alignment of the structure as whole. For
+-example, @code{t2} has a size of 4 bytes, since the zero-length bit-field follows a
+-normal bit-field, and is of type short.
+-
+- at item Even if a zero-length bit-field is not followed by a normal bit-field, it may
+-still affect the alignment of the structure:
++With this interface, @code{wait}'s implementation might look like this:
+ 
+ @smallexample
+-struct
+- @{
+-   char foo : 6;
+-   long : 0;
+- @} t4;
++pid_t wait (wait_status_ptr_t p)
++@{
++  return waitpid (-1, p.__ip, 0);
++@}
+ @end smallexample
+ 
+- at noindent
+-Here, @code{t4} takes up 4 bytes.
+- at end enumerate
++ at item unused
++ at cindex @code{unused} type attribute
++When attached to a type (including a @code{union} or a @code{struct}),
++this attribute means that variables of that type are meant to appear
++possibly unused.  GCC does not produce a warning for any variables of
++that type, even if the variable appears to do nothing.  This is often
++the case with lock or thread classes, which are usually defined and then
++not referenced, but contain constructors and destructors that have
++nontrivial bookkeeping functions.
+ 
+- at item Zero-length bit-fields following non-bit-field members are ignored:
++ at item visibility
++ at cindex @code{visibility} type attribute
++In C++, attribute visibility (@pxref{Function Attributes}) can also be
++applied to class, struct, union and enum types.  Unlike other type
++attributes, the attribute must appear between the initial keyword and
++the name of the type; it cannot appear after the body of the type.
+ 
+- at smallexample
+-struct
+- @{
+-   char foo;
+-   long : 0;
+-   char bar;
+- @} t5;
+- at end smallexample
++Note that the type visibility is applied to vague linkage entities
++associated with the class (vtable, typeinfo node, etc.).  In
++particular, if a class is thrown as an exception in one shared object
++and caught in another, the class must have default visibility.
++Otherwise the two shared objects are unable to use the same
++typeinfo node and exception handling will break.
+ 
+- at noindent
+-Here, @code{t5} takes up 2 bytes.
+- at end enumerate
+ @end table
+ 
+- at subsection Xstormy16 Variable Attributes
++To specify multiple attributes, separate them by commas within the
++double parentheses: for example, @samp{__attribute__ ((aligned (16),
++packed))}.
+ 
+-One attribute is currently defined for xstormy16 configurations:
+- at code{below100}.
++ at node ARM Type Attributes
++ at subsection ARM Type Attributes
+ 
+- at table @code
+- at item below100
+- at cindex @code{below100} variable attribute, Xstormy16
++ at cindex @code{notshared} type attribute, ARM
++On those ARM targets that support @code{dllimport} (such as Symbian
++OS), you can use the @code{notshared} attribute to indicate that the
++virtual table and other similar data for a class should not be
++exported from a DLL at .  For example:
+ 
+-If a variable has the @code{below100} attribute (@code{BELOW100} is
+-allowed also), GCC places the variable in the first 0x100 bytes of
+-memory and use special opcodes to access it.  Such variables are
+-placed in either the @code{.bss_below100} section or the
+- at code{.data_below100} section.
++ at smallexample
++class __declspec(notshared) C @{
++public:
++  __declspec(dllimport) C();
++  virtual void f();
++@}
+ 
+- at end table
++__declspec(dllexport)
++C::C() @{@}
++ at end smallexample
+ 
+- at node Type Attributes
+- at section Specifying Attributes of Types
+- at cindex attribute of types
+- at cindex type attributes
++ at noindent
++In this code, @code{C::C} is exported from the current DLL, but the
++virtual table for @code{C} is not exported.  (You can use
++ at code{__attribute__} instead of @code{__declspec} if you prefer, but
++most Symbian OS code uses @code{__declspec}.)
+ 
+-The keyword @code{__attribute__} allows you to specify special
+-attributes of @code{struct} and @code{union} types when you define
+-such types.  This keyword is followed by an attribute specification
+-inside double parentheses.  Eight attributes are currently defined for
+-types: @code{aligned}, @code{packed}, @code{transparent_union},
+- at code{unused}, @code{deprecated}, @code{visibility}, @code{may_alias}
+-and @code{bnd_variable_size}.  Other attributes are defined for
+-functions (@pxref{Function Attributes}), labels (@pxref{Label 
+-Attributes}) and for variables (@pxref{Variable Attributes}).
++ at node MeP Type Attributes
++ at subsection MeP Type Attributes
+ 
+-You may also specify any one of these attributes with @samp{__}
+-preceding and following its keyword.  This allows you to use these
+-attributes in header files without being concerned about a possible
+-macro of the same name.  For example, you may use @code{__aligned__}
+-instead of @code{aligned}.
++ at cindex @code{based} type attribute, MeP
++ at cindex @code{tiny} type attribute, MeP
++ at cindex @code{near} type attribute, MeP
++ at cindex @code{far} type attribute, MeP
++Many of the MeP variable attributes may be applied to types as well.
++Specifically, the @code{based}, @code{tiny}, @code{near}, and
++ at code{far} attributes may be applied to either.  The @code{io} and
++ at code{cb} attributes may not be applied to types.
+ 
+-You may specify type attributes in an enum, struct or union type
+-declaration or definition, or for other types in a @code{typedef}
+-declaration.
++ at node PowerPC Type Attributes
++ at subsection PowerPC Type Attributes
+ 
+-For an enum, struct or union type, you may specify attributes either
+-between the enum, struct or union tag and the name of the type, or
+-just past the closing curly brace of the @emph{definition}.  The
+-former syntax is preferred.
++Three attributes currently are defined for PowerPC configurations:
++ at code{altivec}, @code{ms_struct} and @code{gcc_struct}.
+ 
+- at xref{Attribute Syntax}, for details of the exact syntax for using
+-attributes.
++ at cindex @code{ms_struct} type attribute, PowerPC
++ at cindex @code{gcc_struct} type attribute, PowerPC
++For full documentation of the @code{ms_struct} and @code{gcc_struct}
++attributes please see the documentation in @ref{x86 Type Attributes}.
+ 
+- at table @code
+- at cindex @code{aligned} type attribute
+- at item aligned (@var{alignment})
+-This attribute specifies a minimum alignment (in bytes) for variables
+-of the specified type.  For example, the declarations:
++ at cindex @code{altivec} type attribute, PowerPC
++The @code{altivec} attribute allows one to declare AltiVec vector data
++types supported by the AltiVec Programming Interface Manual.  The
++attribute requires an argument to specify one of three vector types:
++ at code{vector__}, @code{pixel__} (always followed by unsigned short),
++and @code{bool__} (always followed by unsigned).
+ 
+ @smallexample
+-struct S @{ short f[3]; @} __attribute__ ((aligned (8)));
+-typedef int more_aligned_int __attribute__ ((aligned (8)));
++__attribute__((altivec(vector__)))
++__attribute__((altivec(pixel__))) unsigned short
++__attribute__((altivec(bool__))) unsigned
+ @end smallexample
+ 
+- at noindent
+-force the compiler to ensure (as far as it can) that each variable whose
+-type is @code{struct S} or @code{more_aligned_int} is allocated and
+-aligned @emph{at least} on a 8-byte boundary.  On a SPARC, having all
+-variables of type @code{struct S} aligned to 8-byte boundaries allows
+-the compiler to use the @code{ldd} and @code{std} (doubleword load and
+-store) instructions when copying one variable of type @code{struct S} to
+-another, thus improving run-time efficiency.
++These attributes mainly are intended to support the @code{__vector},
++ at code{__pixel}, and @code{__bool} AltiVec keywords.
+ 
+-Note that the alignment of any given @code{struct} or @code{union} type
+-is required by the ISO C standard to be at least a perfect multiple of
+-the lowest common multiple of the alignments of all of the members of
+-the @code{struct} or @code{union} in question.  This means that you @emph{can}
+-effectively adjust the alignment of a @code{struct} or @code{union}
+-type by attaching an @code{aligned} attribute to any one of the members
+-of such a type, but the notation illustrated in the example above is a
+-more obvious, intuitive, and readable way to request the compiler to
+-adjust the alignment of an entire @code{struct} or @code{union} type.
++ at node SPU Type Attributes
++ at subsection SPU Type Attributes
+ 
+-As in the preceding example, you can explicitly specify the alignment
+-(in bytes) that you wish the compiler to use for a given @code{struct}
+-or @code{union} type.  Alternatively, you can leave out the alignment factor
+-and just ask the compiler to align a type to the maximum
+-useful alignment for the target machine you are compiling for.  For
+-example, you could write:
++ at cindex @code{spu_vector} type attribute, SPU
++The SPU supports the @code{spu_vector} attribute for types.  This attribute
++allows one to declare vector data types supported by the Sony/Toshiba/IBM SPU
++Language Extensions Specification.  It is intended to support the
++ at code{__vector} keyword.
+ 
+- at smallexample
+-struct S @{ short f[3]; @} __attribute__ ((aligned));
+- at end smallexample
++ at node x86 Type Attributes
++ at subsection x86 Type Attributes
+ 
+-Whenever you leave out the alignment factor in an @code{aligned}
+-attribute specification, the compiler automatically sets the alignment
+-for the type to the largest alignment that is ever used for any data
+-type on the target machine you are compiling for.  Doing this can often
+-make copy operations more efficient, because the compiler can use
+-whatever instructions copy the biggest chunks of memory when performing
+-copies to or from the variables that have types that you have aligned
+-this way.
++Two attributes are currently defined for x86 configurations:
++ at code{ms_struct} and @code{gcc_struct}.
+ 
+-In the example above, if the size of each @code{short} is 2 bytes, then
+-the size of the entire @code{struct S} type is 6 bytes.  The smallest
+-power of two that is greater than or equal to that is 8, so the
+-compiler sets the alignment for the entire @code{struct S} type to 8
+-bytes.
++ at table @code
+ 
+-Note that although you can ask the compiler to select a time-efficient
+-alignment for a given type and then declare only individual stand-alone
+-objects of that type, the compiler's ability to select a time-efficient
+-alignment is primarily useful only when you plan to create arrays of
+-variables having the relevant (efficiently aligned) type.  If you
+-declare or use arrays of variables of an efficiently-aligned type, then
+-it is likely that your program also does pointer arithmetic (or
+-subscripting, which amounts to the same thing) on pointers to the
+-relevant type, and the code that the compiler generates for these
+-pointer arithmetic operations is often more efficient for
+-efficiently-aligned types than for other types.
++ at item ms_struct
++ at itemx gcc_struct
++ at cindex @code{ms_struct} type attribute, x86
++ at cindex @code{gcc_struct} type attribute, x86
+ 
+-The @code{aligned} attribute can only increase the alignment; but you
+-can decrease it by specifying @code{packed} as well.  See below.
++If @code{packed} is used on a structure, or if bit-fields are used
++it may be that the Microsoft ABI packs them differently
++than GCC normally packs them.  Particularly when moving packed
++data between functions compiled with GCC and the native Microsoft compiler
++(either via function call or as data in a file), it may be necessary to access
++either format.
+ 
+-Note that the effectiveness of @code{aligned} attributes may be limited
+-by inherent limitations in your linker.  On many systems, the linker is
+-only able to arrange for variables to be aligned up to a certain maximum
+-alignment.  (For some linkers, the maximum supported alignment may
+-be very very small.)  If your linker is only able to align variables
+-up to a maximum of 8-byte alignment, then specifying @code{aligned(16)}
+-in an @code{__attribute__} still only provides you with 8-byte
+-alignment.  See your linker documentation for further information.
++Currently @option{-m[no-]ms-bitfields} is provided for the Microsoft Windows x86
++compilers to match the native Microsoft compiler.
++ at end table
+ 
+- at item packed
+- at cindex @code{packed} type attribute
+-This attribute, attached to @code{struct} or @code{union} type
+-definition, specifies that each member (other than zero-width bit-fields)
+-of the structure or union is placed to minimize the memory required.  When
+-attached to an @code{enum} definition, it indicates that the smallest
+-integral type should be used.
++ at node Label Attributes
++ at section Label Attributes
++ at cindex Label Attributes
+ 
+- at opindex fshort-enums
+-Specifying this attribute for @code{struct} and @code{union} types is
+-equivalent to specifying the @code{packed} attribute on each of the
+-structure or union members.  Specifying the @option{-fshort-enums}
+-flag on the line is equivalent to specifying the @code{packed}
+-attribute on all @code{enum} definitions.
++GCC allows attributes to be set on C labels.  @xref{Attribute Syntax}, for 
++details of the exact syntax for using attributes.  Other attributes are 
++available for functions (@pxref{Function Attributes}), variables 
++(@pxref{Variable Attributes}) and for types (@pxref{Type Attributes}).
+ 
+-In the following example @code{struct my_packed_struct}'s members are
+-packed closely together, but the internal layout of its @code{s} member
+-is not packed---to do that, @code{struct my_unpacked_struct} needs to
+-be packed too.
++This example uses the @code{cold} label attribute to indicate the 
++ at code{ErrorHandling} branch is unlikely to be taken and that the
++ at code{ErrorHandling} label is unused:
+ 
+ @smallexample
+-struct my_unpacked_struct
+- @{
+-    char c;
+-    int i;
+- @};
+ 
+-struct __attribute__ ((__packed__)) my_packed_struct
+-  @{
+-     char c;
+-     int  i;
+-     struct my_unpacked_struct s;
+-  @};
++   asm goto ("some asm" : : : : NoError);
++
++/* This branch (the fall-through from the asm) is less commonly used */
++ErrorHandling: 
++   __attribute__((cold, unused)); /* Semi-colon is required here */
++   printf("error\n");
++   return 0;
++
++NoError:
++   printf("no error\n");
++   return 1;
+ @end smallexample
+ 
+-You may only specify this attribute on the definition of an @code{enum},
+- at code{struct} or @code{union}, not on a @code{typedef} that does not
+-also define the enumerated type, structure or union.
++ at table @code
++ at item unused
++ at cindex @code{unused} label attribute
++This feature is intended for program-generated code that may contain 
++unused labels, but which is compiled with @option{-Wall}.  It is
++not normally appropriate to use in it human-written code, though it
++could be useful in cases where the code that jumps to the label is
++contained within an @code{#ifdef} conditional.
+ 
+- at item transparent_union
+- at cindex @code{transparent_union} type attribute
++ at item hot
++ at cindex @code{hot} label attribute
++The @code{hot} attribute on a label is used to inform the compiler that
++the path following the label is more likely than paths that are not so
++annotated.  This attribute is used in cases where @code{__builtin_expect}
++cannot be used, for instance with computed goto or @code{asm goto}.
+ 
+-This attribute, attached to a @code{union} type definition, indicates
+-that any function parameter having that union type causes calls to that
+-function to be treated in a special way.
++ at item cold
++ at cindex @code{cold} label attribute
++The @code{cold} attribute on labels is used to inform the compiler that
++the path following the label is unlikely to be executed.  This attribute
++is used in cases where @code{__builtin_expect} cannot be used, for instance
++with computed goto or @code{asm goto}.
++
++ at end table
++
++ at node Attribute Syntax
++ at section Attribute Syntax
++ at cindex attribute syntax
++
++This section describes the syntax with which @code{__attribute__} may be
++used, and the constructs to which attribute specifiers bind, for the C
++language.  Some details may vary for C++ and Objective-C at .  Because of
++infelicities in the grammar for attributes, some forms described here
++may not be successfully parsed in all cases.
++
++There are some problems with the semantics of attributes in C++.  For
++example, there are no manglings for attributes, although they may affect
++code generation, so problems may arise when attributed types are used in
++conjunction with templates or overloading.  Similarly, @code{typeid}
++does not distinguish between types with different attributes.  Support
++for attributes in C++ may be restricted in future to attributes on
++declarations only, but not on nested declarators.
+ 
+-First, the argument corresponding to a transparent union type can be of
+-any type in the union; no cast is required.  Also, if the union contains
+-a pointer type, the corresponding argument can be a null pointer
+-constant or a void pointer expression; and if the union contains a void
+-pointer type, the corresponding argument can be any pointer expression.
+-If the union member type is a pointer, qualifiers like @code{const} on
+-the referenced type must be respected, just as with normal pointer
+-conversions.
++ at xref{Function Attributes}, for details of the semantics of attributes
++applying to functions.  @xref{Variable Attributes}, for details of the
++semantics of attributes applying to variables.  @xref{Type Attributes},
++for details of the semantics of attributes applying to structure, union
++and enumerated types.
++ at xref{Label Attributes}, for details of the semantics of attributes 
++applying to labels.
+ 
+-Second, the argument is passed to the function using the calling
+-conventions of the first member of the transparent union, not the calling
+-conventions of the union itself.  All members of the union must have the
+-same machine representation; this is necessary for this argument passing
+-to work properly.
++An @dfn{attribute specifier} is of the form
++ at code{__attribute__ ((@var{attribute-list}))}.  An @dfn{attribute list}
++is a possibly empty comma-separated sequence of @dfn{attributes}, where
++each attribute is one of the following:
+ 
+-Transparent unions are designed for library functions that have multiple
+-interfaces for compatibility reasons.  For example, suppose the
+- at code{wait} function must accept either a value of type @code{int *} to
+-comply with POSIX, or a value of type @code{union wait *} to comply with
+-the 4.1BSD interface.  If @code{wait}'s parameter were @code{void *},
+- at code{wait} would accept both kinds of arguments, but it would also
+-accept any other pointer type and this would make argument type checking
+-less useful.  Instead, @code{<sys/wait.h>} might define the interface
+-as follows:
++ at itemize @bullet
++ at item
++Empty.  Empty attributes are ignored.
+ 
+- at smallexample
+-typedef union __attribute__ ((__transparent_union__))
+-  @{
+-    int *__ip;
+-    union wait *__up;
+-  @} wait_status_ptr_t;
++ at item
++An attribute name
++(which may be an identifier such as @code{unused}, or a reserved
++word such as @code{const}).
+ 
+-pid_t wait (wait_status_ptr_t);
+- at end smallexample
++ at item
++An attribute name followed by a parenthesized list of
++parameters for the attribute.
++These parameters take one of the following forms:
+ 
+- at noindent
+-This interface allows either @code{int *} or @code{union wait *}
+-arguments to be passed, using the @code{int *} calling convention.
+-The program can call @code{wait} with arguments of either type:
++ at itemize @bullet
++ at item
++An identifier.  For example, @code{mode} attributes use this form.
+ 
+- at smallexample
+-int w1 () @{ int w; return wait (&w); @}
+-int w2 () @{ union wait w; return wait (&w); @}
+- at end smallexample
++ at item
++An identifier followed by a comma and a non-empty comma-separated list
++of expressions.  For example, @code{format} attributes use this form.
+ 
+- at noindent
+-With this interface, @code{wait}'s implementation might look like this:
++ at item
++A possibly empty comma-separated list of expressions.  For example,
++ at code{format_arg} attributes use this form with the list being a single
++integer constant expression, and @code{alias} attributes use this form
++with the list being a single string constant.
++ at end itemize
++ at end itemize
+ 
+- at smallexample
+-pid_t wait (wait_status_ptr_t p)
+-@{
+-  return waitpid (-1, p.__ip, 0);
+-@}
+- at end smallexample
++An @dfn{attribute specifier list} is a sequence of one or more attribute
++specifiers, not separated by any other tokens.
+ 
+- at item unused
+- at cindex @code{unused} type attribute
+-When attached to a type (including a @code{union} or a @code{struct}),
+-this attribute means that variables of that type are meant to appear
+-possibly unused.  GCC does not produce a warning for any variables of
+-that type, even if the variable appears to do nothing.  This is often
+-the case with lock or thread classes, which are usually defined and then
+-not referenced, but contain constructors and destructors that have
+-nontrivial bookkeeping functions.
++You may optionally specify attribute names with @samp{__}
++preceding and following the name.
++This allows you to use them in header files without
++being concerned about a possible macro of the same name.  For example,
++you may use the attribute name @code{__noreturn__} instead of @code{noreturn}.
+ 
+- at item deprecated
+- at itemx deprecated (@var{msg})
+- at cindex @code{deprecated} type attribute
+-The @code{deprecated} attribute results in a warning if the type
+-is used anywhere in the source file.  This is useful when identifying
+-types that are expected to be removed in a future version of a program.
+-If possible, the warning also includes the location of the declaration
+-of the deprecated type, to enable users to easily find further
+-information about why the type is deprecated, or what they should do
+-instead.  Note that the warnings only occur for uses and then only
+-if the type is being applied to an identifier that itself is not being
+-declared as deprecated.
+ 
+- at smallexample
+-typedef int T1 __attribute__ ((deprecated));
+-T1 x;
+-typedef T1 T2;
+-T2 y;
+-typedef T1 T3 __attribute__ ((deprecated));
+-T3 z __attribute__ ((deprecated));
+- at end smallexample
++ at subsubheading Label Attributes
+ 
+- at noindent
+-results in a warning on line 2 and 3 but not lines 4, 5, or 6.  No
+-warning is issued for line 4 because T2 is not explicitly
+-deprecated.  Line 5 has no warning because T3 is explicitly
+-deprecated.  Similarly for line 6.  The optional @var{msg}
+-argument, which must be a string, is printed in the warning if
+-present.
++In GNU C, an attribute specifier list may appear after the colon following a
++label, other than a @code{case} or @code{default} label.  GNU C++ only permits
++attributes on labels if the attribute specifier is immediately
++followed by a semicolon (i.e., the label applies to an empty
++statement).  If the semicolon is missing, C++ label attributes are
++ambiguous, as it is permissible for a declaration, which could begin
++with an attribute list, to be labelled in C++.  Declarations cannot be
++labelled in C90 or C99, so the ambiguity does not arise there.
+ 
+-The @code{deprecated} attribute can also be used for functions and
+-variables (@pxref{Function Attributes}, @pxref{Variable Attributes}.)
++ at subsubheading Type Attributes
+ 
+- at item may_alias
+- at cindex @code{may_alias} type attribute
+-Accesses through pointers to types with this attribute are not subject
+-to type-based alias analysis, but are instead assumed to be able to alias
+-any other type of objects.
+-In the context of section 6.5 paragraph 7 of the C99 standard,
+-an lvalue expression
+-dereferencing such a pointer is treated like having a character type.
+-See @option{-fstrict-aliasing} for more information on aliasing issues.
+-This extension exists to support some vector APIs, in which pointers to
+-one vector type are permitted to alias pointers to a different vector type.
++An attribute specifier list may appear as part of a @code{struct},
++ at code{union} or @code{enum} specifier.  It may go either immediately
++after the @code{struct}, @code{union} or @code{enum} keyword, or after
++the closing brace.  The former syntax is preferred.
++Where attribute specifiers follow the closing brace, they are considered
++to relate to the structure, union or enumerated type defined, not to any
++enclosing declaration the type specifier appears in, and the type
++defined is not complete until after the attribute specifiers.
++ at c Otherwise, there would be the following problems: a shift/reduce
++ at c conflict between attributes binding the struct/union/enum and
++ at c binding to the list of specifiers/qualifiers; and "aligned"
++ at c attributes could use sizeof for the structure, but the size could be
++ at c changed later by "packed" attributes.
+ 
+-Note that an object of a type with this attribute does not have any
+-special semantics.
+ 
+-Example of use:
++ at subsubheading All other attributes
+ 
+- at smallexample
+-typedef short __attribute__((__may_alias__)) short_a;
++Otherwise, an attribute specifier appears as part of a declaration,
++counting declarations of unnamed parameters and type names, and relates
++to that declaration (which may be nested in another declaration, for
++example in the case of a parameter declaration), or to a particular declarator
++within a declaration.  Where an
++attribute specifier is applied to a parameter declared as a function or
++an array, it should apply to the function or array rather than the
++pointer to which the parameter is implicitly converted, but this is not
++yet correctly implemented.
+ 
+-int
+-main (void)
+-@{
+-  int a = 0x12345678;
+-  short_a *b = (short_a *) &a;
++Any list of specifiers and qualifiers at the start of a declaration may
++contain attribute specifiers, whether or not such a list may in that
++context contain storage class specifiers.  (Some attributes, however,
++are essentially in the nature of storage class specifiers, and only make
++sense where storage class specifiers may be used; for example,
++ at code{section}.)  There is one necessary limitation to this syntax: the
++first old-style parameter declaration in a function definition cannot
++begin with an attribute specifier, because such an attribute applies to
++the function instead by syntax described below (which, however, is not
++yet implemented in this case).  In some other cases, attribute
++specifiers are permitted by this grammar but not yet supported by the
++compiler.  All attribute specifiers in this place relate to the
++declaration as a whole.  In the obsolescent usage where a type of
++ at code{int} is implied by the absence of type specifiers, such a list of
++specifiers and qualifiers may be an attribute specifier list with no
++other specifiers or qualifiers.
+ 
+-  b[1] = 0;
++At present, the first parameter in a function prototype must have some
++type specifier that is not an attribute specifier; this resolves an
++ambiguity in the interpretation of @code{void f(int
++(__attribute__((foo)) x))}, but is subject to change.  At present, if
++the parentheses of a function declarator contain only attributes then
++those attributes are ignored, rather than yielding an error or warning
++or implying a single parameter of type int, but this is subject to
++change.
+ 
+-  if (a == 0x12345678)
+-    abort();
++An attribute specifier list may appear immediately before a declarator
++(other than the first) in a comma-separated list of declarators in a
++declaration of more than one identifier using a single list of
++specifiers and qualifiers.  Such attribute specifiers apply
++only to the identifier before whose declarator they appear.  For
++example, in
+ 
+-  exit(0);
+-@}
++ at smallexample
++__attribute__((noreturn)) void d0 (void),
++    __attribute__((format(printf, 1, 2))) d1 (const char *, ...),
++     d2 (void);
+ @end smallexample
+ 
+ @noindent
+-If you replaced @code{short_a} with @code{short} in the variable
+-declaration, the above program would abort when compiled with
+- at option{-fstrict-aliasing}, which is on by default at @option{-O2} or
+-above.
++the @code{noreturn} attribute applies to all the functions
++declared; the @code{format} attribute only applies to @code{d1}.
+ 
+- at item visibility
+- at cindex @code{visibility} type attribute
+-In C++, attribute visibility (@pxref{Function Attributes}) can also be
+-applied to class, struct, union and enum types.  Unlike other type
+-attributes, the attribute must appear between the initial keyword and
+-the name of the type; it cannot appear after the body of the type.
++An attribute specifier list may appear immediately before the comma,
++ at code{=} or semicolon terminating the declaration of an identifier other
++than a function definition.  Such attribute specifiers apply
++to the declared object or function.  Where an
++assembler name for an object or function is specified (@pxref{Asm
++Labels}), the attribute must follow the @code{asm}
++specification.
+ 
+-Note that the type visibility is applied to vague linkage entities
+-associated with the class (vtable, typeinfo node, etc.).  In
+-particular, if a class is thrown as an exception in one shared object
+-and caught in another, the class must have default visibility.
+-Otherwise the two shared objects are unable to use the same
+-typeinfo node and exception handling will break.
++An attribute specifier list may, in future, be permitted to appear after
++the declarator in a function definition (before any old-style parameter
++declarations or the function body).
++
++Attribute specifiers may be mixed with type qualifiers appearing inside
++the @code{[]} of a parameter array declarator, in the C99 construct by
++which such qualifiers are applied to the pointer to which the array is
++implicitly converted.  Such attribute specifiers apply to the pointer,
++not to the array, but at present this is not implemented and they are
++ignored.
++
++An attribute specifier list may appear at the start of a nested
++declarator.  At present, there are some limitations in this usage: the
++attributes correctly apply to the declarator, but for most individual
++attributes the semantics this implies are not implemented.
++When attribute specifiers follow the @code{*} of a pointer
++declarator, they may be mixed with any type qualifiers present.
++The following describes the formal semantics of this syntax.  It makes the
++most sense if you are familiar with the formal specification of
++declarators in the ISO C standard.
+ 
+- at item designated_init
+- at cindex @code{designated_init} type attribute
+-This attribute may only be applied to structure types.  It indicates
+-that any initialization of an object of this type must use designated
+-initializers rather than positional initializers.  The intent of this
+-attribute is to allow the programmer to indicate that a structure's
+-layout may change, and that therefore relying on positional
+-initialization will result in future breakage.
++Consider (as in C99 subclause 6.7.5 paragraph 4) a declaration @code{T
++D1}, where @code{T} contains declaration specifiers that specify a type
++ at var{Type} (such as @code{int}) and @code{D1} is a declarator that
++contains an identifier @var{ident}.  The type specified for @var{ident}
++for derived declarators whose type does not include an attribute
++specifier is as in the ISO C standard.
+ 
+-GCC emits warnings based on this attribute by default; use
+- at option{-Wno-designated-init} to suppress them.
++If @code{D1} has the form @code{( @var{attribute-specifier-list} D )},
++and the declaration @code{T D} specifies the type
++``@var{derived-declarator-type-list} @var{Type}'' for @var{ident}, then
++ at code{T D1} specifies the type ``@var{derived-declarator-type-list}
++ at var{attribute-specifier-list} @var{Type}'' for @var{ident}.
+ 
+- at item bnd_variable_size
+- at cindex @code{bnd_variable_size} type attribute
+- at cindex Pointer Bounds Checker attributes
+-When applied to a structure field, this attribute tells Pointer
+-Bounds Checker that the size of this field should not be computed
+-using static type information.  It may be used to mark variably-sized
+-static array fields placed at the end of a structure.
++If @code{D1} has the form @code{*
++ at var{type-qualifier-and-attribute-specifier-list} D}, and the
++declaration @code{T D} specifies the type
++``@var{derived-declarator-type-list} @var{Type}'' for @var{ident}, then
++ at code{T D1} specifies the type ``@var{derived-declarator-type-list}
++ at var{type-qualifier-and-attribute-specifier-list} pointer to @var{Type}'' for
++ at var{ident}.
++
++For example,
+ 
+ @smallexample
+-struct S
+-@{
+-  int size;
+-  char data[1];
+-@}
+-S *p = (S *)malloc (sizeof(S) + 100);
+-p->data[10] = 0; //Bounds violation
++void (__attribute__((noreturn)) ****f) (void);
+ @end smallexample
+ 
+ @noindent
+-By using an attribute for the field we may avoid unwanted bound
+-violation checks:
++specifies the type ``pointer to pointer to pointer to pointer to
++non-returning function returning @code{void}''.  As another example,
+ 
+ @smallexample
+-struct S
+-@{
+-  int size;
+-  char data[1] __attribute__((bnd_variable_size));
+-@}
+-S *p = (S *)malloc (sizeof(S) + 100);
+-p->data[10] = 0; //OK
++char *__attribute__((aligned(8))) *f;
+ @end smallexample
+ 
+- at end table
++ at noindent
++specifies the type ``pointer to 8-byte-aligned pointer to @code{char}''.
++Note again that this does not work with most attributes; for example,
++the usage of @samp{aligned} and @samp{noreturn} attributes given above
++is not yet supported.
+ 
+-To specify multiple attributes, separate them by commas within the
+-double parentheses: for example, @samp{__attribute__ ((aligned (16),
+-packed))}.
++For compatibility with existing code written for compiler versions that
++did not implement attributes on nested declarators, some laxity is
++allowed in the placing of attributes.  If an attribute that only applies
++to types is applied to a declaration, it is treated as applying to
++the type of that declaration.  If an attribute that only applies to
++declarations is applied to the type of a declaration, it is treated
++as applying to that declaration; and, for compatibility with code
++placing the attributes immediately before the identifier declared, such
++an attribute applied to a function return type is treated as
++applying to the function type, and such an attribute applied to an array
++element type is treated as applying to the array type.  If an
++attribute that only applies to function types is applied to a
++pointer-to-function type, it is treated as applying to the pointer
++target type; if such an attribute is applied to a function return type
++that is not a pointer-to-function type, it is treated as applying
++to the function type.
+ 
+- at subsection ARM Type Attributes
++ at node Function Prototypes
++ at section Prototypes and Old-Style Function Definitions
++ at cindex function prototype declarations
++ at cindex old-style function definitions
++ at cindex promotion of formal parameters
+ 
+- at cindex @code{notshared} type attribute, ARM
+-On those ARM targets that support @code{dllimport} (such as Symbian
+-OS), you can use the @code{notshared} attribute to indicate that the
+-virtual table and other similar data for a class should not be
+-exported from a DLL at .  For example:
++GNU C extends ISO C to allow a function prototype to override a later
++old-style non-prototype definition.  Consider the following example:
+ 
+ @smallexample
+-class __declspec(notshared) C @{
+-public:
+-  __declspec(dllimport) C();
+-  virtual void f();
+-@}
+-
+-__declspec(dllexport)
+-C::C() @{@}
+- at end smallexample
+-
+- at noindent
+-In this code, @code{C::C} is exported from the current DLL, but the
+-virtual table for @code{C} is not exported.  (You can use
+- at code{__attribute__} instead of @code{__declspec} if you prefer, but
+-most Symbian OS code uses @code{__declspec}.)
+-
+- at anchor{MeP Type Attributes}
+- at subsection MeP Type Attributes
+-
+- at cindex @code{based} type attribute, MeP
+- at cindex @code{tiny} type attribute, MeP
+- at cindex @code{near} type attribute, MeP
+- at cindex @code{far} type attribute, MeP
+-Many of the MeP variable attributes may be applied to types as well.
+-Specifically, the @code{based}, @code{tiny}, @code{near}, and
+- at code{far} attributes may be applied to either.  The @code{io} and
+- at code{cb} attributes may not be applied to types.
++/* @r{Use prototypes unless the compiler is old-fashioned.}  */
++#ifdef __STDC__
++#define P(x) x
++#else
++#define P(x) ()
++#endif
+ 
+- at anchor{PowerPC Type Attributes}
+- at subsection PowerPC Type Attributes
++/* @r{Prototype function declaration.}  */
++int isroot P((uid_t));
+ 
+-Three attributes currently are defined for PowerPC configurations:
+- at code{altivec}, @code{ms_struct} and @code{gcc_struct}.
++/* @r{Old-style function definition.}  */
++int
++isroot (x)   /* @r{??? lossage here ???} */
++     uid_t x;
++@{
++  return x == 0;
++@}
++ at end smallexample
+ 
+- at cindex @code{ms_struct} type attribute, PowerPC
+- at cindex @code{gcc_struct} type attribute, PowerPC
+-For full documentation of the @code{ms_struct} and @code{gcc_struct}
+-attributes please see the documentation in @ref{x86 Type Attributes}.
++Suppose the type @code{uid_t} happens to be @code{short}.  ISO C does
++not allow this example, because subword arguments in old-style
++non-prototype definitions are promoted.  Therefore in this example the
++function definition's argument is really an @code{int}, which does not
++match the prototype argument type of @code{short}.
+ 
+- at cindex @code{altivec} type attribute, PowerPC
+-The @code{altivec} attribute allows one to declare AltiVec vector data
+-types supported by the AltiVec Programming Interface Manual.  The
+-attribute requires an argument to specify one of three vector types:
+- at code{vector__}, @code{pixel__} (always followed by unsigned short),
+-and @code{bool__} (always followed by unsigned).
++This restriction of ISO C makes it hard to write code that is portable
++to traditional C compilers, because the programmer does not know
++whether the @code{uid_t} type is @code{short}, @code{int}, or
++ at code{long}.  Therefore, in cases like these GNU C allows a prototype
++to override a later old-style definition.  More precisely, in GNU C, a
++function prototype argument type overrides the argument type specified
++by a later old-style definition if the former type is the same as the
++latter type before promotion.  Thus in GNU C the above example is
++equivalent to the following:
+ 
+ @smallexample
+-__attribute__((altivec(vector__)))
+-__attribute__((altivec(pixel__))) unsigned short
+-__attribute__((altivec(bool__))) unsigned
+- at end smallexample
+-
+-These attributes mainly are intended to support the @code{__vector},
+- at code{__pixel}, and @code{__bool} AltiVec keywords.
++int isroot (uid_t);
+ 
+- at anchor{SPU Type Attributes}
+- at subsection SPU Type Attributes
++int
++isroot (uid_t x)
++@{
++  return x == 0;
++@}
++ at end smallexample
+ 
+- at cindex @code{spu_vector} type attribute, SPU
+-The SPU supports the @code{spu_vector} attribute for types.  This attribute
+-allows one to declare vector data types supported by the Sony/Toshiba/IBM SPU
+-Language Extensions Specification.  It is intended to support the
+- at code{__vector} keyword.
++ at noindent
++GNU C++ does not support old-style function definitions, so this
++extension is irrelevant.
+ 
+- at anchor{x86 Type Attributes}
+- at subsection x86 Type Attributes
++ at node C++ Comments
++ at section C++ Style Comments
++ at cindex @code{//}
++ at cindex C++ comments
++ at cindex comments, C++ style
+ 
+-Two attributes are currently defined for x86 configurations:
+- at code{ms_struct} and @code{gcc_struct}.
++In GNU C, you may use C++ style comments, which start with @samp{//} and
++continue until the end of the line.  Many other C implementations allow
++such comments, and they are included in the 1999 C standard.  However,
++C++ style comments are not recognized if you specify an @option{-std}
++option specifying a version of ISO C before C99, or @option{-ansi}
++(equivalent to @option{-std=c90}).
+ 
+- at table @code
++ at node Dollar Signs
++ at section Dollar Signs in Identifier Names
++ at cindex $
++ at cindex dollar signs in identifier names
++ at cindex identifier names, dollar signs in
+ 
+- at item ms_struct
+- at itemx gcc_struct
+- at cindex @code{ms_struct} type attribute, x86
+- at cindex @code{gcc_struct} type attribute, x86
++In GNU C, you may normally use dollar signs in identifier names.
++This is because many traditional C implementations allow such identifiers.
++However, dollar signs in identifiers are not supported on a few target
++machines, typically because the target assembler does not allow them.
+ 
+-If @code{packed} is used on a structure, or if bit-fields are used
+-it may be that the Microsoft ABI packs them differently
+-than GCC normally packs them.  Particularly when moving packed
+-data between functions compiled with GCC and the native Microsoft compiler
+-(either via function call or as data in a file), it may be necessary to access
+-either format.
++ at node Character Escapes
++ at section The Character @key{ESC} in Constants
+ 
+-Currently @option{-m[no-]ms-bitfields} is provided for the Microsoft Windows x86
+-compilers to match the native Microsoft compiler.
+- at end table
++You can use the sequence @samp{\e} in a string or character constant to
++stand for the ASCII character @key{ESC}.
+ 
+ @node Alignment
+ @section Inquiring on Alignment of Types or Variables
+@@ -8213,15 +8842,19 @@ identifier, or a sequence of member accesses and array references.
+ The following built-in functions
+ are intended to be compatible with those described
+ in the @cite{Intel Itanium Processor-specific Application Binary Interface},
+-section 7.4.  As such, they depart from the normal GCC practice of using
+-the @samp{__builtin_} prefix, and further that they are overloaded such that
+-they work on multiple types.
++section 7.4.  As such, they depart from normal GCC practice by not using
++the @samp{__builtin_} prefix and also by being overloaded so that they
++work on multiple types.
+ 
+ The definition given in the Intel documentation allows only for the use of
+-the types @code{int}, @code{long}, @code{long long} as well as their unsigned
++the types @code{int}, @code{long}, @code{long long} or their unsigned
+ counterparts.  GCC allows any integral scalar or pointer type that is
+ 1, 2, 4 or 8 bytes in length.
+ 
++These functions are implemented in terms of the @samp{__atomic}
++builtins (@pxref{__atomic Builtins}).  They should not be used for new
++code which should use the @samp{__atomic} builtins instead.
++
+ Not all operations are supported by all target processors.  If a particular
+ operation cannot be implemented on the target processor, a warning is
+ generated and a call to an external function is generated.  The external
+@@ -8243,11 +8876,10 @@ after the operation.
+ All of the routines are described in the Intel documentation to take
+ ``an optional list of variables protected by the memory barrier''.  It's
+ not clear what is meant by that; it could mean that @emph{only} the
+-following variables are protected, or it could mean that these variables
+-should in addition be protected.  At present GCC ignores this list and
+-protects all variables that are globally accessible.  If in the future
+-we make some use of this list, an empty list will continue to mean all
+-globally accessible variables.
++listed variables are protected, or it could mean a list of additional
++variables to be protected.  The list is ignored by GCC which treats it as
++empty.  GCC interprets an empty list as meaning that all globally
++accessible variables should be protected.
+ 
+ @table @code
+ @item @var{type} __sync_fetch_and_add (@var{type} *ptr, @var{type} value, ...)
+@@ -8350,45 +8982,47 @@ are not prevented from being speculated to before the barrier.
+ @node __atomic Builtins
+ @section Built-in Functions for Memory Model Aware Atomic Operations
+ 
+-The following built-in functions approximately match the requirements for
+-C++11 memory model. Many are similar to the @samp{__sync} prefixed built-in
+-functions, but all also have a memory model parameter.  These are all
+-identified by being prefixed with @samp{__atomic}, and most are overloaded
+-such that they work with multiple types.
++The following built-in functions approximately match the requirements
++for C++11 concurrency and memory models.  They are all
++identified by being prefixed with @samp{__atomic} and most are
++overloaded so that they work with multiple types.
+ 
+-GCC allows any integral scalar or pointer type that is 1, 2, 4, or 8
+-bytes in length. 16-byte integral types are also allowed if
+- at samp{__int128} (@pxref{__int128}) is supported by the architecture.
++These functions are intended to replace the legacy @samp{__sync}
++builtins.  The main difference is that the memory model to be used is a
++parameter to the functions.  New code should always use the
++ at samp{__atomic} builtins rather than the @samp{__sync} builtins.
+ 
+-Target architectures are encouraged to provide their own patterns for
+-each of these built-in functions.  If no target is provided, the original 
+-non-memory model set of @samp{__sync} atomic built-in functions are
+-utilized, along with any required synchronization fences surrounding it in
+-order to achieve the proper behavior.  Execution in this case is subject
+-to the same restrictions as those built-in functions.
++Note that the @samp{__atomic} builtins assume that programs will
++conform to the C++11 model for concurrency.  In particular, they assume
++that programs are free of data races.  See the C++11 standard for
++detailed definitions.
+ 
+-If there is no pattern or mechanism to provide a lock free instruction
+-sequence, a call is made to an external routine with the same parameters
+-to be resolved at run time.
++The @samp{__atomic} builtins can be used with any integral scalar or
++pointer type that is 1, 2, 4, or 8 bytes in length.  16-byte integral
++types are also allowed if @samp{__int128} (@pxref{__int128}) is
++supported by the architecture.
+ 
+ The four non-arithmetic functions (load, store, exchange, and 
+ compare_exchange) all have a generic version as well.  This generic
+ version works on any data type.  If the data type size maps to one
+ of the integral sizes that may have lock free support, the generic
+-version utilizes the lock free built-in function.  Otherwise an
++version uses the lock free built-in function.  Otherwise an
+ external call is left to be resolved at run time.  This external call is
+ the same format with the addition of a @samp{size_t} parameter inserted
+ as the first parameter indicating the size of the object being pointed to.
+ All objects must be the same size.
+ 
+ There are 6 different memory models that can be specified.  These map
+-to the same names in the C++11 standard.  Refer there or to the
+- at uref{http://gcc.gnu.org/wiki/Atomic/GCCMM/AtomicSync,GCC wiki on
+-atomic synchronization} for more detailed definitions.  These memory
+-models integrate both barriers to code motion as well as synchronization
+-requirements with other threads. These are listed in approximately
+-ascending order of strength. It is also possible to use target specific
+-flags for memory model flags, like Hardware Lock Elision.
++to the C++11 memory models with the same names, see the C++11 standard
++or the @uref{http://gcc.gnu.org/wiki/Atomic/GCCMM/AtomicSync,GCC wiki
++on atomic synchronization} for detailed definitions.  Individual
++targets may also support additional memory models for use on specific
++architectures.  Refer to the target documentation for details of
++these.
++
++The memory models integrate both barriers to code motion as well as
++synchronization requirements with other threads.  They are listed here
++in approximately ascending order of strength.
+ 
+ @table  @code
+ @item __ATOMIC_RELAXED
+@@ -8403,13 +9037,32 @@ semantic stores from another thread.
+ Barrier to sinking of code and synchronizes with acquire (or stronger)
+ semantic loads from another thread.
+ @item __ATOMIC_ACQ_REL
+-Full barrier in both directions and synchronizes with acquire loads and
++Barrier in both directions and synchronizes with acquire loads and
+ release stores in another thread.
+ @item __ATOMIC_SEQ_CST
+-Full barrier in both directions and synchronizes with acquire loads and
++Barrier in both directions and synchronizes with acquire loads and
+ release stores in all threads.
+ @end table
+ 
++Note that the scope of a C++11 memory model depends on whether or not
++the function being called is a @emph{fence} (such as
++ at samp{__atomic_thread_fence}).  In a fence, all memory accesses are
++subject to the restrictions of the memory model.  When the function is
++an operation on a location, the restrictions apply only to those
++memory accesses that could affect or that could depend on the
++location.
++
++Target architectures are encouraged to provide their own patterns for
++each of these built-in functions.  If no target is provided, the original
++non-memory model set of @samp{__sync} atomic built-in functions are
++used, along with any required synchronization fences surrounding it in
++order to achieve the proper behavior.  Execution in this case is subject
++to the same restrictions as those built-in functions.
++
++If there is no pattern or mechanism to provide a lock free instruction
++sequence, a call is made to an external routine with the same parameters
++to be resolved at run time.
++
+ When implementing patterns for these built-in functions, the memory model
+ parameter can be ignored as long as the pattern implements the most
+ restrictive @code{__ATOMIC_SEQ_CST} model.  Any of the other memory models
+@@ -8480,19 +9133,20 @@ of @code{*@var{ptr}} is copied into @code{*@var{ret}}.
+ @deftypefn {Built-in Function} bool __atomic_compare_exchange_n (@var{type} *ptr, @var{type} *expected, @var{type} desired, bool weak, int success_memmodel, int failure_memmodel)
+ This built-in function implements an atomic compare and exchange operation.
+ This compares the contents of @code{*@var{ptr}} with the contents of
+- at code{*@var{expected}} and if equal, writes @var{desired} into
+- at code{*@var{ptr}}.  If they are not equal, the current contents of
++ at code{*@var{expected}}. If equal, the operation is a @emph{read-modify-write}
++which writes @var{desired} into @code{*@var{ptr}}.  If they are not
++equal, the operation is a @emph{read} and the current contents of
+ @code{*@var{ptr}} is written into @code{*@var{expected}}.  @var{weak} is true
+ for weak compare_exchange, and false for the strong variation.  Many targets 
+ only offer the strong variation and ignore the parameter.  When in doubt, use
+ the strong variation.
+ 
+ True is returned if @var{desired} is written into
+- at code{*@var{ptr}} and the execution is considered to conform to the
++ at code{*@var{ptr}} and the operation is considered to conform to the
+ memory model specified by @var{success_memmodel}.  There are no
+ restrictions on what memory model can be used here.
+ 
+-False is returned otherwise, and the execution is considered to conform
++False is returned otherwise, and the operation is considered to conform
+ to @var{failure_memmodel}. This memory model cannot be
+ @code{__ATOMIC_RELEASE} nor @code{__ATOMIC_ACQ_REL}.  It also cannot be a
+ stronger model than that specified by @var{success_memmodel}.
+@@ -17455,6 +18109,7 @@ we do not recommend the use of pragmas; @xref{Function Attributes},
+ for further explanation.
+ 
+ @menu
++* AArch64 Pragmas::
+ * ARM Pragmas::
+ * M32C Pragmas::
+ * MeP Pragmas::
+@@ -17471,6 +18126,19 @@ for further explanation.
+ * Loop-Specific Pragmas::
+ @end menu
+ 
++ at node AArch64 Pragmas
++ at subsection AArch64 Pragmas
++
++The pragmas defined by the AArch64 target correspond to the AArch64
++target function attributes.  They can be specified as below:
++ at smallexample
++#pragma GCC target("string")
++ at end smallexample
++
++where @code{@var{string}} can be any string accepted as an AArch64 target
++attribute.  @xref{AArch64 Function Attributes}, for more details
++on the permissible values of @code{string}.
++
+ @node ARM Pragmas
+ @subsection ARM Pragmas
+ 
+--- a/src/gcc/doc/install.texi
++++ b/src/gcc/doc/install.texi
+@@ -1544,15 +1544,17 @@ their runtime libraries should be built.  For a list of valid values for
+ @var{langN} you can issue the following command in the
+ @file{gcc} directory of your GCC source tree:@*
+ @smallexample
+-grep language= */config-lang.in
++grep ^language= */config-lang.in
+ @end smallexample
+ Currently, you can use any of the following:
+ @code{all}, @code{ada}, @code{c}, @code{c++}, @code{fortran},
+- at code{go}, @code{java}, @code{objc}, @code{obj-c++}.
++ at code{go}, @code{java}, @code{jit}, @code{lto}, @code{objc}, @code{obj-c++}.
+ Building the Ada compiler has special requirements, see below.
+ If you do not pass this flag, or specify the option @code{all}, then all
+ default languages available in the @file{gcc} sub-tree will be configured.
+-Ada, Go and Objective-C++ are not default languages; the rest are.
++Ada, Go, Jit, and Objective-C++ are not default languages.  LTO is not a
++default language, but is built by default because @option{--enable-lto} is
++enabled by default.  The other languages are default languages.
+ 
+ @item --enable-stage1-languages=@var{lang1}, at var{lang2}, at dots{}
+ Specify that a particular subset of compilers and their runtime
+--- a/src/gcc/doc/invoke.texi
++++ b/src/gcc/doc/invoke.texi
+@@ -667,7 +667,7 @@ Objective-C and Objective-C++ Dialects}.
+ -mcpu=@var{cpu}}
+ 
+ @emph{GNU/Linux Options}
+- at gccoptlist{-mglibc -muclibc -mbionic -mandroid @gol
++ at gccoptlist{-mglibc -muclibc -mmusl -mbionic -mandroid @gol
+ -tno-android-cc -tno-android-ld}
+ 
+ @emph{H8/300 Options}
+@@ -12259,7 +12259,10 @@ Generate big-endian code.  This is the default when GCC is configured for an
+ 
+ @item -mgeneral-regs-only
+ @opindex mgeneral-regs-only
+-Generate code which uses only the general registers.
++Generate code which uses only the general-purpose registers.  This is equivalent
++to feature modifier @option{nofp} of @option{-march} or @option{-mcpu}, except
++that @option{-mgeneral-regs-only} takes precedence over any conflicting feature
++modifier regardless of sequence.
+ 
+ @item -mlittle-endian
+ @opindex mlittle-endian
+@@ -12326,20 +12329,26 @@ corresponding flag to the linker.
+ @opindex march
+ Specify the name of the target architecture, optionally suffixed by one or
+ more feature modifiers.  This option has the form
+- at option{-march=@var{arch}@r{@{}+ at r{[}no at r{]}@var{feature}@r{@}*}}, where the
+-only permissible value for @var{arch} is @samp{armv8-a}.  The permissible
+-values for @var{feature} are documented in the sub-section below.
++ at option{-march=@var{arch}@r{@{}+ at r{[}no at r{]}@var{feature}@r{@}*}}.
+ 
+-Where conflicting feature modifiers are specified, the right-most feature is
+-used.
++The permissible values for @var{arch} are @samp{armv8-a} or
++ at samp{armv8.1-a}.
+ 
+-GCC uses this name to determine what kind of instructions it can emit when
+-generating assembly code.
++For the permissible values for @var{feature}, see the sub-section on
++ at ref{aarch64-feature-modifiers,, at option{-march} and @option{-mcpu}
++Feature Modifiers}.  Where conflicting feature modifiers are
++specified, the right-most feature is used.
+ 
+-Where @option{-march} is specified without either of @option{-mtune}
+-or @option{-mcpu} also being specified, the code is tuned to perform
+-well across a range of target processors implementing the target
+-architecture.
++Additionally on native AArch64 GNU/Linux systems the value
++ at samp{native} is available.  This option causes the compiler to pick the
++architecture of the host system.  If the compiler is unable to recognize the
++architecture of the host system this option has no effect.
++
++GCC uses @var{name} to determine what kind of instructions it can emit
++when generating assembly code.  If @option{-march} is specified
++without either of @option{-mtune} or @option{-mcpu} also being
++specified, the code is tuned to perform well across a range of target
++processors implementing the target architecture.
+ 
+ @item -mtune=@var{name}
+ @opindex mtune
+@@ -12352,6 +12361,12 @@ Additionally, this option can specify that GCC should tune the performance
+ of the code for a big.LITTLE system.  Permissible values for this
+ option are: @samp{cortex-a57.cortex-a53}, @samp{cortex-a72.cortex-a53}.
+ 
++Additionally on native AArch64 GNU/Linux systems the value
++ at samp{native} is available.  This option causes the compiler to pick
++the architecture of and tune the performance of the code for the
++processor of the host system.  If the compiler is unable to recognize
++the processor of the host system this option has no effect.
++
+ Where none of @option{-mtune=}, @option{-mcpu=} or @option{-march=}
+ are specified, the code is tuned to perform well across a range
+ of target processors.
+@@ -12360,45 +12375,75 @@ This option cannot be suffixed by feature modifiers.
+ 
+ @item -mcpu=@var{name}
+ @opindex mcpu
+-Specify the name of the target processor, optionally suffixed by one or more
+-feature modifiers.  This option has the form
+- at option{-mcpu=@var{cpu}@r{@{}+ at r{[}no at r{]}@var{feature}@r{@}*}}, where the
+-permissible values for @var{cpu} are the same as those available for
+- at option{-mtune}.
+-
+-The permissible values for @var{feature} are documented in the sub-section
+-below.
+-
+-Where conflicting feature modifiers are specified, the right-most feature is
+-used.
+-
+-GCC uses this name to determine what kind of instructions it can emit when
++Specify the name of the target processor, optionally suffixed by one
++or more feature modifiers.  This option has the form
++ at option{-mcpu=@var{cpu}@r{@{}+ at r{[}no at r{]}@var{feature}@r{@}*}}, where
++the permissible values for @var{cpu} are the same as those available
++for @option{-mtune}.  The permissible values for @var{feature} are
++documented in the sub-section on
++ at ref{aarch64-feature-modifiers,, at option{-march} and @option{-mcpu}
++Feature Modifiers}.  Where conflicting feature modifiers are
++specified, the right-most feature is used.
++
++Additionally on native AArch64 GNU/Linux systems the value
++ at samp{native} is available.  This option causes the compiler to tune
++the performance of the code for the processor of the host system.  If
++the compiler is unable to recognize the processor of the host system
++this option has no effect.
++
++GCC uses @var{name} to determine what kind of instructions it can emit when
+ generating assembly code (as if by @option{-march}) and to determine
+ the target processor for which to tune for performance (as if
+ by @option{-mtune}).  Where this option is used in conjunction
+ with @option{-march} or @option{-mtune}, those options take precedence
+ over the appropriate part of this option.
++
++ at item -moverride=@var{string}
++ at opindex moverride
++Override tuning decisions made by the back-end in response to a
++ at option{-mtune=} switch.  The syntax, semantics, and accepted values
++for @var{string} in this option are not guaranteed to be consistent
++across releases.
++
++This option is only intended to be useful when developing GCC.
+ @end table
+ 
+ @subsubsection @option{-march} and @option{-mcpu} Feature Modifiers
++ at anchor{aarch64-feature-modifiers}
+ @cindex @option{-march} feature modifiers
+ @cindex @option{-mcpu} feature modifiers
+-Feature modifiers used with @option{-march} and @option{-mcpu} can be one
+-the following:
++Feature modifiers used with @option{-march} and @option{-mcpu} can be any of
++the following and their inverses @option{no at var{feature}}:
+ 
+ @table @samp
+ @item crc
+ Enable CRC extension.
+ @item crypto
+-Enable Crypto extension.  This implies Advanced SIMD is enabled.
++Enable Crypto extension.  This also enables Advanced SIMD and floating-point
++instructions.
+ @item fp
+-Enable floating-point instructions.
++Enable floating-point instructions.  This is on by default for all possible
++values for options @option{-march} and @option{-mcpu}.
+ @item simd
+-Enable Advanced SIMD instructions.  This implies floating-point instructions
+-are enabled.  This is the default for all current possible values for options
+- at option{-march} and @option{-mcpu=}.
++Enable Advanced SIMD instructions.  This also enables floating-point
++instructions.  This is on by default for all possible values for options
++ at option{-march} and @option{-mcpu}.
++ at item lse
++Enable Large System Extension instructions.
++ at item pan
++Enable Privileged Access Never support.
++ at item lor
++Enable Limited Ordering Regions support.
++ at item rdma
++Enable ARMv8.1 Advanced SIMD instructions.  This implies Advanced SIMD
++is enabled.
++
+ @end table
+ 
++That is, @option{crypto} implies @option{simd} implies @option{fp}.
++Conversely, @option{nofp} (or equivalently, @option{-mgeneral-regs-only})
++implies @option{nosimd} implies @option{nocrypto}.
++
+ @node Adapteva Epiphany Options
+ @subsection Adapteva Epiphany Options
+ 
+@@ -13169,7 +13214,7 @@ of the @option{-mcpu=} option.  Permissible names are: @samp{armv2},
+ @samp{armv2a}, @samp{armv3}, @samp{armv3m}, @samp{armv4}, @samp{armv4t},
+ @samp{armv5}, @samp{armv5t}, @samp{armv5e}, @samp{armv5te},
+ @samp{armv6}, @samp{armv6j},
+- at samp{armv6t2}, @samp{armv6z}, @samp{armv6zk}, @samp{armv6-m},
++ at samp{armv6t2}, @samp{armv6z}, @samp{armv6kz}, @samp{armv6-m},
+ @samp{armv7}, @samp{armv7-a}, @samp{armv7-r}, @samp{armv7-m}, @samp{armv7e-m},
+ @samp{armv7ve}, @samp{armv8-a}, @samp{armv8-a+crc},
+ @samp{iwmmxt}, @samp{iwmmxt2}, @samp{ep9312}.
+@@ -13208,9 +13253,9 @@ Permissible names are: @samp{arm2}, @samp{arm250},
+ @samp{arm10e}, @samp{arm1020e}, @samp{arm1022e},
+ @samp{arm1136j-s}, @samp{arm1136jf-s}, @samp{mpcore}, @samp{mpcorenovfp},
+ @samp{arm1156t2-s}, @samp{arm1156t2f-s}, @samp{arm1176jz-s}, @samp{arm1176jzf-s},
+- at samp{cortex-a5}, @samp{cortex-a7}, @samp{cortex-a8}, @samp{cortex-a9},
+- at samp{cortex-a12}, @samp{cortex-a15}, @samp{cortex-a53},
+- at samp{cortex-a57}, @samp{cortex-a72},
++ at samp{generic-armv7-a}, @samp{cortex-a5}, @samp{cortex-a7}, @samp{cortex-a8},
++ at samp{cortex-a9}, @samp{cortex-a12}, @samp{cortex-a15}, @samp{cortex-a17},
++ at samp{cortex-a53}, @samp{cortex-a57}, @samp{cortex-a72},
+ @samp{cortex-r4},
+ @samp{cortex-r4f}, @samp{cortex-r5}, @samp{cortex-r7}, @samp{cortex-m7},
+ @samp{cortex-m4},
+@@ -13230,8 +13275,8 @@ Permissible names are: @samp{arm2}, @samp{arm250},
+ 
+ Additionally, this option can specify that GCC should tune the performance
+ of the code for a big.LITTLE system.  Permissible names are:
+- at samp{cortex-a15.cortex-a7}, @samp{cortex-a57.cortex-a53},
+- at samp{cortex-a72.cortex-a53}.
++ at samp{cortex-a15.cortex-a7}, @samp{cortex-a17.cortex-a7},
++ at samp{cortex-a57.cortex-a53}, @samp{cortex-a72.cortex-a53}.
+ 
+ @option{-mtune=generic- at var{arch}} specifies that GCC should tune the
+ performance for a blend of processors within architecture @var{arch}.
+@@ -13397,6 +13442,10 @@ that executes in ARM state, but the default can be changed by
+ configuring GCC with the @option{--with-mode=}@var{state}
+ configure option.
+ 
++You can also override the ARM and Thumb mode for each function
++by using the @code{target("thumb")} and @code{target("arm")} function attributes
++(@pxref{ARM Function Attributes}) or pragmas (@pxref{Function Specific Option Pragmas}).
++
+ @item -mtpcs-frame
+ @opindex mtpcs-frame
+ Generate a stack frame that is compliant with the Thumb Procedure Call
+@@ -15325,13 +15374,19 @@ These @samp{-m} options are defined for GNU/Linux targets:
+ @item -mglibc
+ @opindex mglibc
+ Use the GNU C library.  This is the default except
+-on @samp{*-*-linux-*uclibc*} and @samp{*-*-linux-*android*} targets.
++on @samp{*-*-linux-*uclibc*}, @samp{*-*-linux-*musl*} and
++ at samp{*-*-linux-*android*} targets.
+ 
+ @item -muclibc
+ @opindex muclibc
+ Use uClibc C library.  This is the default on
+ @samp{*-*-linux-*uclibc*} targets.
+ 
++ at item -mmusl
++ at opindex mmusl
++Use the musl C library.  This is the default on
++ at samp{*-*-linux-*musl*} targets.
++
+ @item -mbionic
+ @opindex mbionic
+ Use Bionic C library.  This is the default on
+--- a/src/gcc/doc/match-and-simplify.texi
++++ b/src/gcc/doc/match-and-simplify.texi
+@@ -39,7 +39,7 @@ APIs are introduced.
+ @deftypefnx {GIMPLE function} tree gimple_simplify (enum tree_code, tree, tree, tree, tree, gimple_seq *, tree (*)(tree))
+ @deftypefnx {GIMPLE function} tree gimple_simplify (enum built_in_function, tree, tree, gimple_seq *, tree (*)(tree))
+ @deftypefnx {GIMPLE function} tree gimple_simplify (enum built_in_function, tree, tree, tree, gimple_seq *, tree (*)(tree))
+- at deftypefnx {GIMPLE function} tree gimple_simplify (enum built_in_function, tree, tree, tree, gimple_seq *, tree (*)(tree))
++ at deftypefnx {GIMPLE function} tree gimple_simplify (enum built_in_function, tree, tree, tree, tree, gimple_seq *, tree (*)(tree))
+ The main GIMPLE API entry to the expression simplifications mimicing
+ that of the GENERIC fold_@{unary,binary,ternary@} functions.
+ @end deftypefn
+@@ -64,6 +64,7 @@ Ontop of these a @code{fold_buildN}-like API for GIMPLE is introduced:
+ @deftypefnx {GIMPLE function} tree gimple_build (gimple_seq *, location_t, enum tree_code, tree, tree, tree, tree, tree (*valueize) (tree) = NULL);
+ @deftypefnx {GIMPLE function} tree gimple_build (gimple_seq *, location_t, enum built_in_function, tree, tree, tree (*valueize) (tree) = NULL);
+ @deftypefnx {GIMPLE function} tree gimple_build (gimple_seq *, location_t, enum built_in_function, tree, tree, tree, tree (*valueize) (tree) = NULL);
++ at deftypefnx {GIMPLE function} tree gimple_build (gimple_seq *, location_t, enum built_in_function, tree, tree, tree, tree, tree (*valueize) (tree) = NULL);
+ @deftypefnx {GIMPLE function} tree gimple_convert (gimple_seq *, location_t, tree, tree);
+ @end deftypefn
+ 
+--- a/src/gcc/doc/md.texi
++++ b/src/gcc/doc/md.texi
+@@ -4893,10 +4893,10 @@ is of a wider mode, is computed and added to operand 3. Operand 3 is of a mode
+ equal or wider than the mode of the absolute difference. The result is placed
+ in operand 0, which is of the same mode as operand 3.
+ 
+- at cindex @code{ssum_widen at var{m3}} instruction pattern
+- at item @samp{ssum_widen at var{m3}}
+- at cindex @code{usum_widen at var{m3}} instruction pattern
+- at itemx @samp{usum_widen at var{m3}}
++ at cindex @code{widen_ssum at var{m3}} instruction pattern
++ at item @samp{widen_ssum at var{m3}}
++ at cindex @code{widen_usum at var{m3}} instruction pattern
++ at itemx @samp{widen_usum at var{m3}}
+ Operands 0 and 2 are of the same mode, which is wider than the mode of
+ operand 1. Add operand 1 to operand 2 and place the widened result in
+ operand 0. (This is used express accumulation of elements into an accumulator
+--- a/src/gcc/doc/sourcebuild.texi
++++ b/src/gcc/doc/sourcebuild.texi
+@@ -1549,7 +1549,12 @@ options.  Some multilibs may be incompatible with these options.
+ @item arm_neon_fp16_ok
+ @anchor{arm_neon_fp16_ok}
+ ARM Target supports @code{-mfpu=neon-fp16 -mfloat-abi=softfp} or compatible
+-options.  Some multilibs may be incompatible with these options.
++options, including @code{-mfp16-format=ieee} if necessary to obtain the
++ at code{__fp16} type.  Some multilibs may be incompatible with these options.
++
++ at item arm_neon_fp16_hw
++Test system supports executing Neon half-precision float instructions.
++(Implies previous.)
+ 
+ @item arm_thumb1_ok
+ ARM target generates Thumb-1 code for @code{-mthumb}.
+@@ -1695,6 +1700,9 @@ Target supports FPU instructions.
+ @item non_strict_align
+ Target does not require strict alignment.
+ 
++ at item sqrt_insn
++Target has a square root instruction that the compiler can generate.
++
+ @item sse
+ Target supports compiling @code{sse} instructions.
+ 
+@@ -2013,7 +2021,7 @@ keyword}.
+ @item arm_neon_fp16
+ NEON and half-precision floating point support.  Only ARM targets
+ support this feature, and only then in certain modes; see
+-the @ref{arm_neon_ok,,arm_neon_fp16_ok effective target keyword}.
++the @ref{arm_neon_fp16_ok,,arm_neon_fp16_ok effective target keyword}.
+ 
+ @item arm_vfp3
+ arm vfp3 floating point support; see
+@@ -2210,13 +2218,17 @@ Check branch and/or call counts, in addition to line counts, in
+ 
+ @subsubsection Clean up generated test files
+ 
++Usually the test-framework removes files that were generated during
++testing. If a testcase, for example, uses any dumping mechanism to
++inspect a passes dump file, the testsuite recognized the dump option
++passed to the tool and schedules a final cleanup to remove these files.
++
++There are, however, following additional cleanup directives that can be
++used to annotate a testcase "manually".
+ @table @code
+ @item cleanup-coverage-files
+ Removes coverage data files generated for this test.
+ 
+- at item cleanup-ipa-dump @var{suffix}
+-Removes IPA dump files generated for this test.
+-
+ @item cleanup-modules "@var{list-of-extra-modules}"
+ Removes Fortran module files generated for this test, excluding the
+ module names listed in keep-modules.
+@@ -2251,21 +2263,23 @@ end module keep2
+ ! @{ dg-final @{ keep-modules "" @} @} ! keep all
+ @end smallexample
+ 
++ at item dg-keep-saved-temps "@var{list-of-suffixes-not-to-delete}"
++Whitespace separated list of suffixes that should not be deleted
++automatically in a testcase that uses @option{-save-temps}.
++ at smallexample
++// @{ dg-options "-save-temps -fpch-preprocess -I." @}
++int main() @{ return 0; @}
++// @{ dg-keep-saved-temps ".s" @} ! just keep assembler file
++// @{ dg-keep-saved-temps ".s" ".i" @} ! ... and .i
++// @{ dg-keep-saved-temps ".ii" ".o" @} ! or just .ii and .o
++ at end smallexample
++
+ @item cleanup-profile-file
+ Removes profiling files generated for this test.
+ 
+ @item cleanup-repo-files
+ Removes files generated for this test for @option{-frepo}.
+ 
+- at item cleanup-rtl-dump @var{suffix}
+-Removes RTL dump files generated for this test.
+-
+- at item cleanup-saved-temps
+-Removes files for the current test which were kept for @option{-save-temps}.
+-
+- at item cleanup-tree-dump @var{suffix}
+-Removes tree dump files matching @var{suffix} which were generated for
+-this test.
+ @end table
+ 
+ @node Ada Tests
+--- a/src/gcc/doc/tm.texi
++++ b/src/gcc/doc/tm.texi
+@@ -9789,7 +9789,7 @@ be documented in @file{extend.texi}.
+ 
+ @deftypevr {Target Hook} {const struct attribute_spec *} TARGET_ATTRIBUTE_TABLE
+ If defined, this target hook points to an array of @samp{struct
+-attribute_spec} (defined in @file{tree.h}) specifying the machine
++attribute_spec} (defined in @file{tree-core.h}) specifying the machine
+ specific attributes for this target and some of the restrictions on the
+ entities to which these attributes are applied and the arguments they
+ take.
diff --git a/debian/patches/gcc-linaro-no-macros.diff b/debian/patches/gcc-linaro-no-macros.diff
new file mode 100644
index 0000000..c4b8670
--- /dev/null
+++ b/debian/patches/gcc-linaro-no-macros.diff
@@ -0,0 +1,105 @@
+# DP : Don't add the __LINARO_RELEASE__ and __LINARO_SPIN__ macros for distro builds.
+
+Index: b/src/gcc/cppbuiltin.c
+===================================================================
+--- a/src/gcc/cppbuiltin.c
++++ b/src/gcc/cppbuiltin.c
+@@ -62,41 +62,18 @@ parse_basever (int *major, int *minor, i
+     *patchlevel = s_patchlevel;
+ }
+ 
+-/* Parse a LINAROVER version string of the format "M.m-year.month[-spin][~dev]"
+-   to create Linaro release number YYYYMM and spin version.  */
+-static void
+-parse_linarover (int *release, int *spin)
+-{
+-  static int s_year = -1, s_month, s_spin;
+-
+-  if (s_year == -1)
+-    if (sscanf (LINAROVER, "%*[^-]-%d.%d-%d", &s_year, &s_month, &s_spin) != 3)
+-      {
+-	sscanf (LINAROVER, "%*[^-]-%d.%d", &s_year, &s_month);
+-	s_spin = 0;
+-      }
+-
+-  if (release)
+-    *release = s_year * 100 + s_month;
+-
+-  if (spin)
+-    *spin = s_spin;
+-}
+ 
+ /* Define __GNUC__, __GNUC_MINOR__, __GNUC_PATCHLEVEL__ and __VERSION__.  */
+ static void
+ define__GNUC__ (cpp_reader *pfile)
+ {
+-  int major, minor, patchlevel, linaro_release, linaro_spin;
++  int major, minor, patchlevel;
+ 
+   parse_basever (&major, &minor, &patchlevel);
+-  parse_linarover (&linaro_release, &linaro_spin);
+   cpp_define_formatted (pfile, "__GNUC__=%d", major);
+   cpp_define_formatted (pfile, "__GNUC_MINOR__=%d", minor);
+   cpp_define_formatted (pfile, "__GNUC_PATCHLEVEL__=%d", patchlevel);
+   cpp_define_formatted (pfile, "__VERSION__=\"%s\"", version_string);
+-  cpp_define_formatted (pfile, "__LINARO_RELEASE__=%d", linaro_release);
+-  cpp_define_formatted (pfile, "__LINARO_SPIN__=%d", linaro_spin);
+   cpp_define_formatted (pfile, "__ATOMIC_RELAXED=%d", MEMMODEL_RELAXED);
+   cpp_define_formatted (pfile, "__ATOMIC_SEQ_CST=%d", MEMMODEL_SEQ_CST);
+   cpp_define_formatted (pfile, "__ATOMIC_ACQUIRE=%d", MEMMODEL_ACQUIRE);
+Index: b/src/gcc/Makefile.in
+===================================================================
+--- a/src/gcc/Makefile.in
++++ b/src/gcc/Makefile.in
+@@ -810,12 +810,10 @@ BASEVER     := $(srcdir)/BASE-VER  # 4.x
+ DEVPHASE    := $(srcdir)/DEV-PHASE # experimental, prerelease, ""
+ DATESTAMP   := $(srcdir)/DATESTAMP # YYYYMMDD or empty
+ REVISION    := $(srcdir)/REVISION  # [BRANCH revision XXXXXX]
+-LINAROVER   := $(srcdir)/LINARO-VERSION # M.x-YYYY.MM[-S][~dev]
+ 
+ BASEVER_c   := $(shell cat $(BASEVER))
+ DEVPHASE_c  := $(shell cat $(DEVPHASE))
+ DATESTAMP_c := $(shell cat $(DATESTAMP))
+-LINAROVER_c := $(shell cat $(LINAROVER))
+ 
+ ifeq (,$(wildcard $(REVISION)))
+ REVISION_c  :=
+@@ -842,7 +840,6 @@ DATESTAMP_s := \
+   "\"$(if $(DEVPHASE_c)$(filter-out 0,$(PATCHLEVEL_c)), $(DATESTAMP_c))\""
+ PKGVERSION_s:= "\"@PKGVERSION@\""
+ BUGURL_s    := "\"@REPORT_BUGS_TO@\""
+-LINAROVER_s := "\"$(LINAROVER_c)\""
+ 
+ PKGVERSION  := @PKGVERSION@
+ BUGURL_TEXI := @REPORT_BUGS_TEXI@
+@@ -2622,9 +2619,8 @@ PREPROCESSOR_DEFINES = \
+   -DSTANDARD_EXEC_PREFIX=\"$(libdir)/gcc/\" \
+   @TARGET_SYSTEM_ROOT_DEFINE@
+ 
+-CFLAGS-cppbuiltin.o += $(PREPROCESSOR_DEFINES) -DBASEVER=$(BASEVER_s) \
+-	-DLINAROVER=$(LINAROVER_s)
+-cppbuiltin.o: $(BASEVER) $(LINAROVER)
++CFLAGS-cppbuiltin.o += $(PREPROCESSOR_DEFINES) -DBASEVER=$(BASEVER_s)
++cppbuiltin.o: $(BASEVER)
+ 
+ CFLAGS-cppdefault.o += $(PREPROCESSOR_DEFINES)
+ 
+Index: b/src/gcc/LINARO-VERSION
+===================================================================
+--- a/src/gcc/LINARO-VERSION
++++ /dev/null
+@@ -1,1 +0,0 @@
+-5.2-2015.11~dev
+Index: b/src/gcc/configure.ac
+===================================================================
+--- a/src/gcc/configure.ac
++++ b/src/gcc/configure.ac
+@@ -862,7 +862,7 @@ AC_ARG_WITH(specs,
+ )
+ AC_SUBST(CONFIGURE_SPECS)
+ 
+-ACX_PKGVERSION([Linaro GCC `cat $srcdir/LINARO-VERSION`])
++ACX_PKGVERSION([GCC])
+ ACX_BUGURL([http://gcc.gnu.org/bugs.html])
+ 
+ # Sanity check enable_languages in case someone does not run the toplevel
diff --git a/debian/patches/gcc-linaro-revert-r230427.diff b/debian/patches/gcc-linaro-revert-r230427.diff
new file mode 100644
index 0000000..0ab63ed
--- /dev/null
+++ b/debian/patches/gcc-linaro-revert-r230427.diff
@@ -0,0 +1,17 @@
+2015-11-16  Charles Baylis  <charles.baylis at linaro.org>
+
+	Backport from mainline r227407
+	PR ipa/67280
+	* cgraphunit.c (cgraph_node::create_wrapper): Set can_throw_external
+	in new callgraph edge.
+
+--- a/src/gcc/cgraphunit.c
++++ b/src/gcc/cgraphunit.c
+@@ -2505,7 +2505,6 @@
+   memset (&thunk, 0, sizeof (cgraph_thunk_info));
+   thunk.thunk_p = true;
+   create_edge (target, NULL, count, CGRAPH_FREQ_BASE);
+-  callees->can_throw_external = !TREE_NOTHROW (target->decl);
+ 
+   tree arguments = DECL_ARGUMENTS (decl);
+ 
diff --git a/debian/patches/gcc-linaro.diff b/debian/patches/gcc-linaro.diff
new file mode 100644
index 0000000..bc8e98d
--- /dev/null
+++ b/debian/patches/gcc-linaro.diff
@@ -0,0 +1,95490 @@
+# DP: Changes for the Linaro 5-2015.11 release.
+
+LANG=C git diff 3e5774f831e9eca881babb16108038af1d444690 4c4566ae0c0962f52ccb4270c9c111dd17c6ac1a \
+ | egrep -v '^(diff|index) ' \
+ | filterdiff --strip=1 --addoldprefix=a/src/  --addnewprefix=b/src/ \
+ | sed 's,a/src//dev/null,/dev/null,'
+
+--- a/src/fixincludes/mkfixinc.sh
++++ b/src/fixincludes/mkfixinc.sh
+@@ -19,7 +19,8 @@ case $machine in
+     powerpc-*-eabi*    | \
+     powerpc-*-rtems*   | \
+     powerpcle-*-eabisim* | \
+-    powerpcle-*-eabi* )
++    powerpcle-*-eabi* | \
++    *-musl* )
+ 	#  IF there is no include fixing,
+ 	#  THEN create a no-op fixer and exit
+ 	(echo "#! /bin/sh" ; echo "exit 0" ) > ${target}
+--- /dev/null
++++ b/src/gcc/LINARO-VERSION
+@@ -0,0 +1 @@
++5.2-2015.11~dev
+--- a/src/gcc/Makefile.in
++++ b/src/gcc/Makefile.in
+@@ -527,10 +527,6 @@ xm_include_list=@xm_include_list@
+ xm_defines=@xm_defines@
+ lang_checks=
+ lang_checks_parallelized=
+-# Upper limit to which it is useful to parallelize this lang target.
+-# It doesn't make sense to try e.g. 128 goals for small testsuites
+-# like objc or go.
+-check_gcc_parallelize=10000
+ lang_opt_files=@lang_opt_files@ $(srcdir)/c-family/c.opt $(srcdir)/common.opt
+ lang_specs_files=@lang_specs_files@
+ lang_tree_files=@lang_tree_files@
+@@ -814,10 +810,12 @@ BASEVER     := $(srcdir)/BASE-VER  # 4.x.y
+ DEVPHASE    := $(srcdir)/DEV-PHASE # experimental, prerelease, ""
+ DATESTAMP   := $(srcdir)/DATESTAMP # YYYYMMDD or empty
+ REVISION    := $(srcdir)/REVISION  # [BRANCH revision XXXXXX]
++LINAROVER   := $(srcdir)/LINARO-VERSION # M.x-YYYY.MM[-S][~dev]
+ 
+ BASEVER_c   := $(shell cat $(BASEVER))
+ DEVPHASE_c  := $(shell cat $(DEVPHASE))
+ DATESTAMP_c := $(shell cat $(DATESTAMP))
++LINAROVER_c := $(shell cat $(LINAROVER))
+ 
+ ifeq (,$(wildcard $(REVISION)))
+ REVISION_c  :=
+@@ -844,6 +842,7 @@ DATESTAMP_s := \
+   "\"$(if $(DEVPHASE_c)$(filter-out 0,$(PATCHLEVEL_c)), $(DATESTAMP_c))\""
+ PKGVERSION_s:= "\"@PKGVERSION@\""
+ BUGURL_s    := "\"@REPORT_BUGS_TO@\""
++LINAROVER_s := "\"$(LINAROVER_c)\""
+ 
+ PKGVERSION  := @PKGVERSION@
+ BUGURL_TEXI := @REPORT_BUGS_TEXI@
+@@ -2623,8 +2622,9 @@ PREPROCESSOR_DEFINES = \
+   -DSTANDARD_EXEC_PREFIX=\"$(libdir)/gcc/\" \
+   @TARGET_SYSTEM_ROOT_DEFINE@
+ 
+-CFLAGS-cppbuiltin.o += $(PREPROCESSOR_DEFINES) -DBASEVER=$(BASEVER_s)
+-cppbuiltin.o: $(BASEVER)
++CFLAGS-cppbuiltin.o += $(PREPROCESSOR_DEFINES) -DBASEVER=$(BASEVER_s) \
++	-DLINAROVER=$(LINAROVER_s)
++cppbuiltin.o: $(BASEVER) $(LINAROVER)
+ 
+ CFLAGS-cppdefault.o += $(PREPROCESSOR_DEFINES)
+ 
+@@ -3736,7 +3736,9 @@ check_p_subdirs=$(wordlist 1,$(check_p_count),$(wordlist 1, \
+ #
+ # To parallelize some language check, add the corresponding check-$lang
+ # to lang_checks_parallelized variable and define check_$lang_parallelize
+-# variable (see above check_gcc_parallelize description).
++# variable.  This is the upper limit to which it is useful to parallelize the
++# check-$lang target.  It doesn't make sense to try e.g. 128 goals for small
++# testsuites like objc or go.
+ $(lang_checks_parallelized): check-% : site.exp
+ 	-rm -rf $(TESTSUITEDIR)/$*-parallel
+ 	@if [ "$(filter -j, $(MFLAGS))" = "-j" ]; then \
+--- a/src/gcc/ada/gcc-interface/Make-lang.in
++++ b/src/gcc/ada/gcc-interface/Make-lang.in
+@@ -811,6 +811,7 @@ ada.mostlyclean:
+ 	-$(RM) ada/*$(coverageexts)
+ 	-$(RM) ada/sdefault.adb ada/stamp-sdefault ada/stamp-snames
+ 	-$(RMDIR) ada/tools
++	-$(RM) gnatbind$(exeext) gnat1$(exeext)
+ ada.clean:
+ ada.distclean:
+ 	-$(RM) ada/Makefile
+--- a/src/gcc/builtins.c
++++ b/src/gcc/builtins.c
+@@ -5477,7 +5477,8 @@ expand_builtin_atomic_compare_exchange (machine_mode mode, tree exp,
+      the normal case where EXPECT is totally private, i.e. a register.  At
+      which point the store can be unconditional.  */
+   label = gen_label_rtx ();
+-  emit_cmp_and_jump_insns (target, const0_rtx, NE, NULL, VOIDmode, 1, label);
++  emit_cmp_and_jump_insns (target, const0_rtx, NE, NULL,
++			   GET_MODE (target), 1, label);
+   emit_move_insn (expect, oldval);
+   emit_label (label);
+ 
+--- a/src/gcc/c-family/c-common.h
++++ b/src/gcc/c-family/c-common.h
+@@ -1084,6 +1084,8 @@ extern const unsigned char executable_checksum[16];
+ /* In c-cppbuiltin.c  */
+ extern void builtin_define_std (const char *macro);
+ extern void builtin_define_with_value (const char *, const char *, int);
++extern void builtin_define_with_int_value (const char *, HOST_WIDE_INT);
++extern void builtin_define_type_sizeof (const char *, tree);
+ extern void c_stddef_cpp_builtins (void);
+ extern void fe_file_change (const struct line_map *);
+ extern void c_parse_error (const char *, enum cpp_ttype, tree, unsigned char);
+--- a/src/gcc/c-family/c-cppbuiltin.c
++++ b/src/gcc/c-family/c-cppbuiltin.c
+@@ -58,8 +58,6 @@ along with GCC; see the file COPYING3.  If not see
+ #endif
+ 
+ /* Non-static as some targets don't use it.  */
+-void builtin_define_std (const char *) ATTRIBUTE_UNUSED;
+-static void builtin_define_with_int_value (const char *, HOST_WIDE_INT);
+ static void builtin_define_with_hex_fp_value (const char *, tree,
+ 					      int, const char *,
+ 					      const char *,
+@@ -68,7 +66,6 @@ static void builtin_define_stdint_macros (void);
+ static void builtin_define_constants (const char *, tree);
+ static void builtin_define_type_max (const char *, tree);
+ static void builtin_define_type_minmax (const char *, const char *, tree);
+-static void builtin_define_type_sizeof (const char *, tree);
+ static void builtin_define_float_constants (const char *,
+ 					    const char *,
+ 					    const char *,
+@@ -113,7 +110,7 @@ mode_has_fma (machine_mode mode)
+ }
+ 
+ /* Define NAME with value TYPE size_unit.  */
+-static void
++void
+ builtin_define_type_sizeof (const char *name, tree type)
+ {
+   builtin_define_with_int_value (name,
+@@ -1372,7 +1369,7 @@ builtin_define_with_value (const char *macro, const char *expansion, int is_str)
+ 
+ 
+ /* Pass an object-like macro and an integer value to define it to.  */
+-static void
++void
+ builtin_define_with_int_value (const char *macro, HOST_WIDE_INT value)
+ {
+   char *buf;
+--- a/src/gcc/c/Make-lang.in
++++ b/src/gcc/c/Make-lang.in
+@@ -95,6 +95,8 @@ c.srcman:
+ # List of targets that can use the generic check- rule and its // variant.
+ lang_checks += check-gcc
+ lang_checks_parallelized += check-gcc
++# For description see the check_$lang_parallelize comment in gcc/Makefile.in.
++check_gcc_parallelize=10000
+ 
+ # 'make check' in gcc/ looks for check-c.  Redirect it to check-gcc.
+ check-c : check-gcc
+--- a/src/gcc/c/c-decl.c
++++ b/src/gcc/c/c-decl.c
+@@ -2632,6 +2632,12 @@ merge_decls (tree newdecl, tree olddecl, tree newtype, tree oldtype)
+   else if (DECL_PRESERVE_P (newdecl))
+     DECL_PRESERVE_P (olddecl) = 1;
+ 
++  /* Merge DECL_COMMON */
++  if (VAR_P (olddecl) && VAR_P (newdecl)
++      && !lookup_attribute ("common", DECL_ATTRIBUTES (newdecl))
++      && !lookup_attribute ("nocommon", DECL_ATTRIBUTES (newdecl)))
++    DECL_COMMON (newdecl) = DECL_COMMON (newdecl) && DECL_COMMON (olddecl);
++
+   /* Copy most of the decl-specific fields of NEWDECL into OLDDECL.
+      But preserve OLDDECL's DECL_UID, DECL_CONTEXT and
+      DECL_ARGUMENTS (if appropriate).  */
+@@ -7524,12 +7530,23 @@ detect_field_duplicates (tree fieldlist)
+ /* Finish up struct info used by -Wc++-compat.  */
+ 
+ static void
+-warn_cxx_compat_finish_struct (tree fieldlist)
++warn_cxx_compat_finish_struct (tree fieldlist, enum tree_code code,
++			       location_t record_loc)
+ {
+   unsigned int ix;
+   tree x;
+   struct c_binding *b;
+ 
++  if (fieldlist == NULL_TREE)
++    {
++      if (code == RECORD_TYPE)
++	warning_at (record_loc, OPT_Wc___compat,
++		    "empty struct has size 0 in C, size 1 in C++");
++      else
++	warning_at (record_loc, OPT_Wc___compat,
++		    "empty union has size 0 in C, size 1 in C++");
++    }
++
+   /* Set the C_TYPE_DEFINED_IN_STRUCT flag for each type defined in
+      the current struct.  We do this now at the end of the struct
+      because the flag is used to issue visibility warnings, and we
+@@ -7862,7 +7879,7 @@ finish_struct (location_t loc, tree t, tree fieldlist, tree attributes,
+ 			  DECL_EXPR, build_decl (loc, TYPE_DECL, NULL, t)));
+ 
+   if (warn_cxx_compat)
+-    warn_cxx_compat_finish_struct (fieldlist);
++    warn_cxx_compat_finish_struct (fieldlist, TREE_CODE (t), loc);
+ 
+   struct_parse_info->struct_types.release ();
+   struct_parse_info->fields.release ();
+--- a/src/gcc/cfgexpand.c
++++ b/src/gcc/cfgexpand.c
+@@ -1382,7 +1382,16 @@ expand_one_var (tree var, bool toplevel, bool really_expand)
+   else
+     {
+       if (really_expand)
+-        expand_one_stack_var (origvar);
++        {
++          if (lookup_attribute ("naked",
++                                DECL_ATTRIBUTES (current_function_decl)))
++            error ("cannot allocate stack for variable %q+D, naked function.",
++                   var);
++
++          expand_one_stack_var (origvar);
++        }
++
++
+       return tree_to_uhwi (DECL_SIZE_UNIT (var));
+     }
+   return 0;
+--- a/src/gcc/cfgloop.h
++++ b/src/gcc/cfgloop.h
+@@ -116,6 +116,14 @@ enum loop_estimation
+   EST_LAST
+ };
+ 
++/* The structure describing non-overflow control induction variable for
++   loop's exit edge.  */
++struct GTY ((chain_next ("%h.next"))) control_iv {
++  tree base;
++  tree step;
++  struct control_iv *next;
++};
++
+ /* Structure to hold information for each natural loop.  */
+ struct GTY ((chain_next ("%h.next"))) loop {
+   /* Index into loops array.  */
+@@ -203,6 +211,9 @@ struct GTY ((chain_next ("%h.next"))) loop {
+   /* Upper bound on number of iterations of a loop.  */
+   struct nb_iter_bound *bounds;
+ 
++  /* Non-overflow control ivs of a loop.  */
++  struct control_iv *control_ivs;
++
+   /* Head of the cyclic list of the exits of the loop.  */
+   struct loop_exit *exits;
+ 
+--- a/src/gcc/cgraphunit.c
++++ b/src/gcc/cgraphunit.c
+@@ -2505,6 +2505,7 @@ cgraph_node::create_wrapper (cgraph_node *target)
+   memset (&thunk, 0, sizeof (cgraph_thunk_info));
+   thunk.thunk_p = true;
+   create_edge (target, NULL, count, CGRAPH_FREQ_BASE);
++  callees->can_throw_external = !TREE_NOTHROW (target->decl);
+ 
+   tree arguments = DECL_ARGUMENTS (decl);
+ 
+--- a/src/gcc/combine.c
++++ b/src/gcc/combine.c
+@@ -1650,6 +1650,73 @@ setup_incoming_promotions (rtx_insn *first)
+     }
+ }
+ 
++#ifdef SHORT_IMMEDIATES_SIGN_EXTEND
++/* If MODE has a precision lower than PREC and SRC is a non-negative constant
++   that would appear negative in MODE, sign-extend SRC for use in nonzero_bits
++   because some machines (maybe most) will actually do the sign-extension and
++   this is the conservative approach.
++
++   ??? For 2.5, try to tighten up the MD files in this regard instead of this
++   kludge.  */
++
++static rtx
++sign_extend_short_imm (rtx src, machine_mode mode, unsigned int prec)
++{
++  if (GET_MODE_PRECISION (mode) < prec
++      && CONST_INT_P (src)
++      && INTVAL (src) > 0
++      && val_signbit_known_set_p (mode, INTVAL (src)))
++    src = GEN_INT (INTVAL (src) | ~GET_MODE_MASK (mode));
++
++  return src;
++}
++#endif
++
++/* Update RSP for pseudo-register X from INSN's REG_EQUAL note (if one exists)
++   and SET.  */
++
++static void
++update_rsp_from_reg_equal (reg_stat_type *rsp, rtx_insn *insn, const_rtx set,
++			   rtx x)
++{
++  rtx reg_equal_note = insn ? find_reg_equal_equiv_note (insn) : NULL_RTX;
++  unsigned HOST_WIDE_INT bits = 0;
++  rtx reg_equal = NULL, src = SET_SRC (set);
++  unsigned int num = 0;
++
++  if (reg_equal_note)
++    reg_equal = XEXP (reg_equal_note, 0);
++
++#ifdef SHORT_IMMEDIATES_SIGN_EXTEND
++  src = sign_extend_short_imm (src, GET_MODE (x), BITS_PER_WORD);
++  if (reg_equal)
++    reg_equal = sign_extend_short_imm (reg_equal, GET_MODE (x), BITS_PER_WORD);
++#endif
++
++  /* Don't call nonzero_bits if it cannot change anything.  */
++  if (rsp->nonzero_bits != ~(unsigned HOST_WIDE_INT) 0)
++    {
++      bits = nonzero_bits (src, nonzero_bits_mode);
++      if (reg_equal && bits)
++	bits &= nonzero_bits (reg_equal, nonzero_bits_mode);
++      rsp->nonzero_bits |= bits;
++    }
++
++  /* Don't call num_sign_bit_copies if it cannot change anything.  */
++  if (rsp->sign_bit_copies != 1)
++    {
++      num = num_sign_bit_copies (SET_SRC (set), GET_MODE (x));
++      if (reg_equal && num != GET_MODE_PRECISION (GET_MODE (x)))
++	{
++	  unsigned int numeq = num_sign_bit_copies (reg_equal, GET_MODE (x));
++	  if (num == 0 || numeq > num)
++	    num = numeq;
++	}
++      if (rsp->sign_bit_copies == 0 || num < rsp->sign_bit_copies)
++	rsp->sign_bit_copies = num;
++    }
++}
++
+ /* Called via note_stores.  If X is a pseudo that is narrower than
+    HOST_BITS_PER_WIDE_INT and is being set, record what bits are known zero.
+ 
+@@ -1665,7 +1732,6 @@ static void
+ set_nonzero_bits_and_sign_copies (rtx x, const_rtx set, void *data)
+ {
+   rtx_insn *insn = (rtx_insn *) data;
+-  unsigned int num;
+ 
+   if (REG_P (x)
+       && REGNO (x) >= FIRST_PSEUDO_REGISTER
+@@ -1725,34 +1791,7 @@ set_nonzero_bits_and_sign_copies (rtx x, const_rtx set, void *data)
+       if (SET_DEST (set) == x
+ 	  || (paradoxical_subreg_p (SET_DEST (set))
+ 	      && SUBREG_REG (SET_DEST (set)) == x))
+-	{
+-	  rtx src = SET_SRC (set);
+-
+-#ifdef SHORT_IMMEDIATES_SIGN_EXTEND
+-	  /* If X is narrower than a word and SRC is a non-negative
+-	     constant that would appear negative in the mode of X,
+-	     sign-extend it for use in reg_stat[].nonzero_bits because some
+-	     machines (maybe most) will actually do the sign-extension
+-	     and this is the conservative approach.
+-
+-	     ??? For 2.5, try to tighten up the MD files in this regard
+-	     instead of this kludge.  */
+-
+-	  if (GET_MODE_PRECISION (GET_MODE (x)) < BITS_PER_WORD
+-	      && CONST_INT_P (src)
+-	      && INTVAL (src) > 0
+-	      && val_signbit_known_set_p (GET_MODE (x), INTVAL (src)))
+-	    src = GEN_INT (INTVAL (src) | ~GET_MODE_MASK (GET_MODE (x)));
+-#endif
+-
+-	  /* Don't call nonzero_bits if it cannot change anything.  */
+-	  if (rsp->nonzero_bits != ~(unsigned HOST_WIDE_INT) 0)
+-	    rsp->nonzero_bits |= nonzero_bits (src, nonzero_bits_mode);
+-	  num = num_sign_bit_copies (SET_SRC (set), GET_MODE (x));
+-	  if (rsp->sign_bit_copies == 0
+-	      || rsp->sign_bit_copies > num)
+-	    rsp->sign_bit_copies = num;
+-	}
++	update_rsp_from_reg_equal (rsp, insn, set, x);
+       else
+ 	{
+ 	  rsp->nonzero_bits = GET_MODE_MASK (GET_MODE (x));
+@@ -1914,6 +1953,15 @@ can_combine_p (rtx_insn *insn, rtx_insn *i3, rtx_insn *pred ATTRIBUTE_UNUSED,
+   set = expand_field_assignment (set);
+   src = SET_SRC (set), dest = SET_DEST (set);
+ 
++  /* Do not eliminate user-specified register if it is in an
++     asm input because we may break the register asm usage defined
++     in GCC manual if allow to do so.
++     Be aware that this may cover more cases than we expect but this
++     should be harmless.  */
++  if (REG_P (dest) && REG_USERVAR_P (dest) && HARD_REGISTER_P (dest)
++      && extract_asm_operands (PATTERN (i3)))
++    return 0;
++
+   /* Don't eliminate a store in the stack pointer.  */
+   if (dest == stack_pointer_rtx
+       /* Don't combine with an insn that sets a register to itself if it has
+@@ -5463,6 +5511,51 @@ combine_simplify_rtx (rtx x, machine_mode op0_mode, int in_dest,
+       SUBST (XEXP (x, 1), temp);
+     }
+ 
++  /* Try to fold this expression in case we have constants that weren't
++     present before.  */
++  temp = 0;
++  switch (GET_RTX_CLASS (code))
++    {
++    case RTX_UNARY:
++      if (op0_mode == VOIDmode)
++	op0_mode = GET_MODE (XEXP (x, 0));
++      temp = simplify_unary_operation (code, mode, XEXP (x, 0), op0_mode);
++      break;
++    case RTX_COMPARE:
++    case RTX_COMM_COMPARE:
++      {
++	machine_mode cmp_mode = GET_MODE (XEXP (x, 0));
++	if (cmp_mode == VOIDmode)
++	  {
++	    cmp_mode = GET_MODE (XEXP (x, 1));
++	    if (cmp_mode == VOIDmode)
++	      cmp_mode = op0_mode;
++	  }
++	temp = simplify_relational_operation (code, mode, cmp_mode,
++					      XEXP (x, 0), XEXP (x, 1));
++      }
++      break;
++    case RTX_COMM_ARITH:
++    case RTX_BIN_ARITH:
++      temp = simplify_binary_operation (code, mode, XEXP (x, 0), XEXP (x, 1));
++      break;
++    case RTX_BITFIELD_OPS:
++    case RTX_TERNARY:
++      temp = simplify_ternary_operation (code, mode, op0_mode, XEXP (x, 0),
++					 XEXP (x, 1), XEXP (x, 2));
++      break;
++    default:
++      break;
++    }
++
++  if (temp)
++    {
++      x = temp;
++      code = GET_CODE (temp);
++      op0_mode = VOIDmode;
++      mode = GET_MODE (temp);
++    }
++
+   /* If this is a simple operation applied to an IF_THEN_ELSE, try
+      applying it to the arms of the IF_THEN_ELSE.  This often simplifies
+      things.  Check for cases where both arms are testing the same
+@@ -5562,51 +5655,6 @@ combine_simplify_rtx (rtx x, machine_mode op0_mode, int in_dest,
+ 	}
+     }
+ 
+-  /* Try to fold this expression in case we have constants that weren't
+-     present before.  */
+-  temp = 0;
+-  switch (GET_RTX_CLASS (code))
+-    {
+-    case RTX_UNARY:
+-      if (op0_mode == VOIDmode)
+-	op0_mode = GET_MODE (XEXP (x, 0));
+-      temp = simplify_unary_operation (code, mode, XEXP (x, 0), op0_mode);
+-      break;
+-    case RTX_COMPARE:
+-    case RTX_COMM_COMPARE:
+-      {
+-	machine_mode cmp_mode = GET_MODE (XEXP (x, 0));
+-	if (cmp_mode == VOIDmode)
+-	  {
+-	    cmp_mode = GET_MODE (XEXP (x, 1));
+-	    if (cmp_mode == VOIDmode)
+-	      cmp_mode = op0_mode;
+-	  }
+-	temp = simplify_relational_operation (code, mode, cmp_mode,
+-					      XEXP (x, 0), XEXP (x, 1));
+-      }
+-      break;
+-    case RTX_COMM_ARITH:
+-    case RTX_BIN_ARITH:
+-      temp = simplify_binary_operation (code, mode, XEXP (x, 0), XEXP (x, 1));
+-      break;
+-    case RTX_BITFIELD_OPS:
+-    case RTX_TERNARY:
+-      temp = simplify_ternary_operation (code, mode, op0_mode, XEXP (x, 0),
+-					 XEXP (x, 1), XEXP (x, 2));
+-      break;
+-    default:
+-      break;
+-    }
+-
+-  if (temp)
+-    {
+-      x = temp;
+-      code = GET_CODE (temp);
+-      op0_mode = VOIDmode;
+-      mode = GET_MODE (temp);
+-    }
+-
+   /* First see if we can apply the inverse distributive law.  */
+   if (code == PLUS || code == MINUS
+       || code == AND || code == IOR || code == XOR)
+@@ -7723,9 +7771,8 @@ extract_left_shift (rtx x, int count)
+    We try, as much as possible, to re-use rtl expressions to save memory.
+ 
+    IN_CODE says what kind of expression we are processing.  Normally, it is
+-   SET.  In a memory address (inside a MEM, PLUS or minus, the latter two
+-   being kludges), it is MEM.  When processing the arguments of a comparison
+-   or a COMPARE against zero, it is COMPARE.  */
++   SET.  In a memory address it is MEM.  When processing the arguments of
++   a comparison or a COMPARE against zero, it is COMPARE.  */
+ 
+ rtx
+ make_compound_operation (rtx x, enum rtx_code in_code)
+@@ -7745,8 +7792,6 @@ make_compound_operation (rtx x, enum rtx_code in_code)
+      but once inside, go back to our default of SET.  */
+ 
+   next_code = (code == MEM ? MEM
+-	       : ((code == PLUS || code == MINUS)
+-		  && SCALAR_INT_MODE_P (mode)) ? MEM
+ 	       : ((code == COMPARE || COMPARISON_P (x))
+ 		  && XEXP (x, 1) == const0_rtx) ? COMPARE
+ 	       : in_code == COMPARE ? SET : in_code);
+@@ -9797,20 +9842,8 @@ reg_nonzero_bits_for_combine (const_rtx x, machine_mode mode,
+   if (tem)
+     {
+ #ifdef SHORT_IMMEDIATES_SIGN_EXTEND
+-      /* If X is narrower than MODE and TEM is a non-negative
+-	 constant that would appear negative in the mode of X,
+-	 sign-extend it for use in reg_nonzero_bits because some
+-	 machines (maybe most) will actually do the sign-extension
+-	 and this is the conservative approach.
+-
+-	 ??? For 2.5, try to tighten up the MD files in this regard
+-	 instead of this kludge.  */
+-
+-      if (GET_MODE_PRECISION (GET_MODE (x)) < GET_MODE_PRECISION (mode)
+-	  && CONST_INT_P (tem)
+-	  && INTVAL (tem) > 0
+-	  && val_signbit_known_set_p (GET_MODE (x), INTVAL (tem)))
+-	tem = GEN_INT (INTVAL (tem) | ~GET_MODE_MASK (GET_MODE (x)));
++      tem = sign_extend_short_imm (tem, GET_MODE (x),
++				   GET_MODE_PRECISION (mode));
+ #endif
+       return tem;
+     }
+--- a/src/gcc/common/config/aarch64/aarch64-common.c
++++ b/src/gcc/common/config/aarch64/aarch64-common.c
+@@ -27,7 +27,7 @@
+ #include "common/common-target-def.h"
+ #include "opts.h"
+ #include "flags.h"
+-#include "errors.h"
++#include "diagnostic.h"
+ 
+ #ifdef  TARGET_BIG_ENDIAN_DEFAULT
+ #undef  TARGET_DEFAULT_TARGET_FLAGS
+@@ -60,7 +60,7 @@ static const struct default_options aarch_option_optimization_table[] =
+    respective component of -mcpu.  This logic is implemented
+    in config/aarch64/aarch64.c:aarch64_override_options.  */
+ 
+-static bool
++bool
+ aarch64_handle_option (struct gcc_options *opts,
+ 		       struct gcc_options *opts_set ATTRIBUTE_UNUSED,
+ 		       const struct cl_decoded_option *decoded,
+@@ -68,6 +68,7 @@ aarch64_handle_option (struct gcc_options *opts,
+ {
+   size_t code = decoded->opt_index;
+   const char *arg = decoded->arg;
++  int val = decoded->value;
+ 
+   switch (code)
+     {
+@@ -83,6 +84,22 @@ aarch64_handle_option (struct gcc_options *opts,
+       opts->x_aarch64_tune_string = arg;
+       return true;
+ 
++    case OPT_mgeneral_regs_only:
++      opts->x_target_flags |= MASK_GENERAL_REGS_ONLY;
++      return true;
++
++    case OPT_mfix_cortex_a53_835769:
++      opts->x_aarch64_fix_a53_err835769 = val;
++      return true;
++
++    case OPT_mstrict_align:
++      opts->x_target_flags |= MASK_STRICT_ALIGN;
++      return true;
++
++    case OPT_momit_leaf_frame_pointer:
++      opts->x_flag_omit_frame_pointer = val;
++      return true;
++
+     default:
+       return true;
+     }
+@@ -90,36 +107,134 @@ aarch64_handle_option (struct gcc_options *opts,
+ 
+ struct gcc_targetm_common targetm_common = TARGETM_COMMON_INITIALIZER;
+ 
+-#define AARCH64_CPU_NAME_LENGTH 128
++/* An ISA extension in the co-processor and main instruction set space.  */
++struct aarch64_option_extension
++{
++  const char *const name;
++  const unsigned long flags_on;
++  const unsigned long flags_off;
++};
++
++/* ISA extensions in AArch64.  */
++static const struct aarch64_option_extension all_extensions[] =
++{
++#define AARCH64_OPT_EXTENSION(NAME, FLAGS_ON, FLAGS_OFF, FEATURE_STRING) \
++  {NAME, FLAGS_ON, FLAGS_OFF},
++#include "config/aarch64/aarch64-option-extensions.def"
++#undef AARCH64_OPT_EXTENSION
++  {NULL, 0, 0}
++};
++
++struct processor_name_to_arch
++{
++  const std::string processor_name;
++  const enum aarch64_arch arch;
++  const unsigned long flags;
++};
++
++struct arch_to_arch_name
++{
++  const enum aarch64_arch arch;
++  const std::string arch_name;
++};
++
++/* Map processor names to the architecture revision they implement and
++   the default set of architectural feature flags they support.  */
++static const struct processor_name_to_arch all_cores[] =
++{
++#define AARCH64_CORE(NAME, X, IDENT, ARCH_IDENT, FLAGS, COSTS, IMP, PART) \
++  {NAME, AARCH64_ARCH_##ARCH_IDENT, FLAGS},
++#include "config/aarch64/aarch64-cores.def"
++#undef AARCH64_CORE
++  {"generic", AARCH64_ARCH_8A, AARCH64_FL_FOR_ARCH8},
++  {"", aarch64_no_arch, 0}
++};
++
++/* Map architecture revisions to their string representation.  */
++static const struct arch_to_arch_name all_architectures[] =
++{
++#define AARCH64_ARCH(NAME, CORE, ARCH_IDENT, ARCH, FLAGS) \
++  {AARCH64_ARCH_##ARCH_IDENT, NAME},
++#include "config/aarch64/aarch64-arches.def"
++#undef AARCH64_ARCH
++  {aarch64_no_arch, ""}
++};
++
++/* Return a string representation of ISA_FLAGS.  */
++
++std::string
++aarch64_get_extension_string_for_isa_flags (unsigned long isa_flags)
++{
++  const struct aarch64_option_extension *opt = NULL;
++  std::string outstr = "";
++
++  for (opt = all_extensions; opt->name != NULL; opt++)
++    if ((isa_flags & opt->flags_on) == opt->flags_on)
++      {
++	outstr += "+";
++	outstr += opt->name;
++      }
++  return outstr;
++}
+ 
+-/* Truncate NAME at the first '.' character seen up to the first '+'
+-   or return NAME unmodified.  */
++/* Attempt to rewrite NAME, which has been passed on the command line
++   as a -mcpu option to an equivalent -march value.  If we can do so,
++   return the new string, otherwise return an error.  */
+ 
+ const char *
+ aarch64_rewrite_selected_cpu (const char *name)
+ {
+-  static char output_buf[AARCH64_CPU_NAME_LENGTH + 1] = {0};
+-  const char *bL_sep;
+-  const char *feats;
+-  size_t pref_size;
+-  size_t feat_size;
++  std::string original_string (name);
++  std::string extensions;
++  std::string processor;
++  size_t extension_pos = original_string.find_first_of ('+');
+ 
+-  bL_sep = strchr (name, '.');
+-  if (!bL_sep)
+-    return name;
+-
+-  feats = strchr (name, '+');
+-  feat_size = feats ? strnlen (feats, AARCH64_CPU_NAME_LENGTH) : 0;
+-  pref_size = bL_sep - name;
++  /* Strip and save the extension string.  */
++  if (extension_pos != std::string::npos)
++    {
++      processor = original_string.substr (0, extension_pos);
++      extensions = original_string.substr (extension_pos,
++					std::string::npos);
++    }
++  else
++    {
++      /* No extensions.  */
++      processor = original_string;
++    }
+ 
+-  if ((feat_size + pref_size) > AARCH64_CPU_NAME_LENGTH)
+-    internal_error ("-mcpu string too large");
++  const struct processor_name_to_arch* p_to_a;
++  for (p_to_a = all_cores;
++       p_to_a->arch != aarch64_no_arch;
++       p_to_a++)
++    {
++      if (p_to_a->processor_name == processor)
++	break;
++    }
+ 
+-  strncpy (output_buf, name, pref_size);
+-  if (feats)
+-    strncpy (output_buf + pref_size, feats, feat_size);
++  const struct arch_to_arch_name* a_to_an;
++  for (a_to_an = all_architectures;
++       a_to_an->arch != aarch64_no_arch;
++       a_to_an++)
++    {
++      if (a_to_an->arch == p_to_a->arch)
++	break;
++    }
+ 
+-  return output_buf;
++  /* We couldn't find that proceesor name, or the processor name we
++     found does not map to an architecture we understand.  */
++  if (p_to_a->arch == aarch64_no_arch
++      || a_to_an->arch == aarch64_no_arch)
++    fatal_error (input_location, "unknown value %qs for -mcpu", name);
++
++  std::string outstr = a_to_an->arch_name
++	+ aarch64_get_extension_string_for_isa_flags (p_to_a->flags)
++	+ extensions;
++
++  /* We are going to memory leak here, nobody elsewhere
++     in the callchain is going to clean up after us.  The alternative is
++     to allocate a static buffer, and assert that it is big enough for our
++     modified string, which seems much worse!  */
++  return xstrdup (outstr.c_str ());
+ }
+ 
+ /* Called by the driver to rewrite a name passed to the -mcpu
+--- a/src/gcc/config.gcc
++++ b/src/gcc/config.gcc
+@@ -302,7 +302,9 @@ m32c*-*-*)
+ aarch64*-*-*)
+ 	cpu_type=aarch64
+ 	extra_headers="arm_neon.h arm_acle.h"
+-	extra_objs="aarch64-builtins.o aarch-common.o"
++	c_target_objs="aarch64-c.o"
++	cxx_target_objs="aarch64-c.o"
++	extra_objs="aarch64-builtins.o aarch-common.o cortex-a57-fma-steering.o"
+ 	target_gtfiles="\$(srcdir)/config/aarch64/aarch64-builtins.c"
+ 	target_has_targetm_common=yes
+ 	;;
+@@ -575,7 +577,7 @@ case ${target} in
+ esac
+ 
+ # Common C libraries.
+-tm_defines="$tm_defines LIBC_GLIBC=1 LIBC_UCLIBC=2 LIBC_BIONIC=3"
++tm_defines="$tm_defines LIBC_GLIBC=1 LIBC_UCLIBC=2 LIBC_BIONIC=3 LIBC_MUSL=4"
+ 
+ # 32-bit x86 processors supported by --with-arch=.  Each processor
+ # MUST be separated by exactly one space.
+@@ -720,6 +722,9 @@ case ${target} in
+     *-*-*uclibc*)
+       tm_defines="$tm_defines DEFAULT_LIBC=LIBC_UCLIBC"
+       ;;
++    *-*-*musl*)
++      tm_defines="$tm_defines DEFAULT_LIBC=LIBC_MUSL"
++      ;;
+     *)
+       tm_defines="$tm_defines DEFAULT_LIBC=LIBC_GLIBC"
+       ;;
+@@ -3484,7 +3489,7 @@ case "${target}" in
+ 
+ 			eval "val=\$with_$which"
+ 			base_val=`echo $val | sed -e 's/\+.*//'`
+-			ext_val=`echo $val | sed -e 's/[a-z0-9\-]\+//'`
++			ext_val=`echo $val | sed -e 's/[a-z0-9.-]\+//'`
+ 
+ 			if [ $which = arch ]; then
+ 			  def=aarch64-arches.def
+--- a/src/gcc/config.host
++++ b/src/gcc/config.host
+@@ -99,6 +99,14 @@ case ${host} in
+ esac
+ 
+ case ${host} in
++  aarch64*-*-linux*)
++    case ${target} in
++      aarch64*-*-*)
++	host_extra_gcc_objs="driver-aarch64.o"
++	host_xmake_file="${host_xmake_file} aarch64/x-aarch64"
++	;;
++    esac
++    ;;
+   arm*-*-freebsd* | arm*-*-linux*)
+     case ${target} in
+       arm*-*-*)
+--- a/src/gcc/config/aarch64/aarch64-arches.def
++++ b/src/gcc/config/aarch64/aarch64-arches.def
+@@ -19,11 +19,17 @@
+ 
+ /* Before using #include to read this file, define a macro:
+ 
+-      AARCH64_ARCH(NAME, CORE, ARCH, FLAGS)
++      AARCH64_ARCH(NAME, CORE, ARCH_IDENT, ARCH_REV, FLAGS)
+ 
+    The NAME is the name of the architecture, represented as a string
+    constant.  The CORE is the identifier for a core representative of
+-   this architecture.  ARCH is the architecture revision.  FLAGS are
+-   the flags implied by the architecture.  */
++   this architecture.  ARCH_IDENT is the architecture identifier.  It must be
++   unique and be syntactically valid to appear as part of an enum identifier.
++   ARCH_REV is an integer specifying the architecture major revision.
++   FLAGS are the flags implied by the architecture.
++   Due to the assumptions about the positions of these fields in config.gcc,
++   the NAME should be kept as the first argument and FLAGS as the last.  */
++
++AARCH64_ARCH("armv8-a",	      generic,	     8A,	8,  AARCH64_FL_FOR_ARCH8)
++AARCH64_ARCH("armv8.1-a",     generic,	     8_1A,	8,  AARCH64_FL_FOR_ARCH8_1)
+ 
+-AARCH64_ARCH("armv8-a",	      generic,	     8,  AARCH64_FL_FOR_ARCH8)
+--- a/src/gcc/config/aarch64/aarch64-builtins.c
++++ b/src/gcc/config/aarch64/aarch64-builtins.c
+@@ -80,6 +80,7 @@
+ 
+ #define v8qi_UP  V8QImode
+ #define v4hi_UP  V4HImode
++#define v4hf_UP  V4HFmode
+ #define v2si_UP  V2SImode
+ #define v2sf_UP  V2SFmode
+ #define v1df_UP  V1DFmode
+@@ -87,12 +88,12 @@
+ #define df_UP    DFmode
+ #define v16qi_UP V16QImode
+ #define v8hi_UP  V8HImode
++#define v8hf_UP  V8HFmode
+ #define v4si_UP  V4SImode
+ #define v4sf_UP  V4SFmode
+ #define v2di_UP  V2DImode
+ #define v2df_UP  V2DFmode
+ #define ti_UP	 TImode
+-#define ei_UP	 EImode
+ #define oi_UP	 OImode
+ #define ci_UP	 CImode
+ #define xi_UP	 XImode
+@@ -133,7 +134,9 @@ enum aarch64_type_qualifiers
+   /* Polynomial types.  */
+   qualifier_poly = 0x100,
+   /* Lane indices - must be in range, and flipped for bigendian.  */
+-  qualifier_lane_index = 0x200
++  qualifier_lane_index = 0x200,
++  /* Lane indices for single lane structure loads and stores.  */
++  qualifier_struct_load_store_lane_index = 0x400
+ };
+ 
+ typedef struct
+@@ -235,7 +238,7 @@ aarch64_types_load1_qualifiers[SIMD_MAX_BUILTIN_ARGS]
+ static enum aarch64_type_qualifiers
+ aarch64_types_loadstruct_lane_qualifiers[SIMD_MAX_BUILTIN_ARGS]
+   = { qualifier_none, qualifier_const_pointer_map_mode,
+-      qualifier_none, qualifier_none };
++      qualifier_none, qualifier_struct_load_store_lane_index };
+ #define TYPES_LOADSTRUCT_LANE (aarch64_types_loadstruct_lane_qualifiers)
+ 
+ static enum aarch64_type_qualifiers
+@@ -267,7 +270,7 @@ aarch64_types_store1_qualifiers[SIMD_MAX_BUILTIN_ARGS]
+ static enum aarch64_type_qualifiers
+ aarch64_types_storestruct_lane_qualifiers[SIMD_MAX_BUILTIN_ARGS]
+   = { qualifier_void, qualifier_pointer_map_mode,
+-      qualifier_none, qualifier_none };
++      qualifier_none, qualifier_struct_load_store_lane_index };
+ #define TYPES_STORESTRUCT_LANE (aarch64_types_storestruct_lane_qualifiers)
+ 
+ #define CF0(N, X) CODE_FOR_aarch64_##N##X
+@@ -312,6 +315,12 @@ aarch64_types_storestruct_lane_qualifiers[SIMD_MAX_BUILTIN_ARGS]
+ #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)
++#define VAR13(T, N, MAP, A, B, C, D, E, F, G, H, I, J, K, L, M) \
++  VAR12 (T, N, MAP, A, B, C, D, E, F, G, H, I, J, K, L) \
++  VAR1 (T, N, MAP, M)
++#define VAR14(T, X, MAP, A, B, C, D, E, F, G, H, I, J, K, L, M, N) \
++  VAR13 (T, X, MAP, A, B, C, D, E, F, G, H, I, J, K, L, M) \
++  VAR1 (T, X, MAP, N)
+ 
+ #include "aarch64-builtin-iterators.h"
+ 
+@@ -389,6 +398,7 @@ const char *aarch64_scalar_builtin_types[] = {
+   "__builtin_aarch64_simd_qi",
+   "__builtin_aarch64_simd_hi",
+   "__builtin_aarch64_simd_si",
++  "__builtin_aarch64_simd_hf",
+   "__builtin_aarch64_simd_sf",
+   "__builtin_aarch64_simd_di",
+   "__builtin_aarch64_simd_df",
+@@ -453,8 +463,10 @@ static struct aarch64_simd_type_info aarch64_simd_types [] = {
+ };
+ #undef ENTRY
+ 
++/* This type is not SIMD-specific; it is the user-visible __fp16.  */
++static tree aarch64_fp16_type_node = NULL_TREE;
++
+ static tree aarch64_simd_intOI_type_node = NULL_TREE;
+-static tree aarch64_simd_intEI_type_node = NULL_TREE;
+ static tree aarch64_simd_intCI_type_node = NULL_TREE;
+ static tree aarch64_simd_intXI_type_node = NULL_TREE;
+ 
+@@ -528,12 +540,12 @@ aarch64_simd_builtin_std_type (enum machine_mode mode,
+       return QUAL_TYPE (TI);
+     case OImode:
+       return aarch64_simd_intOI_type_node;
+-    case EImode:
+-      return aarch64_simd_intEI_type_node;
+     case CImode:
+       return aarch64_simd_intCI_type_node;
+     case XImode:
+       return aarch64_simd_intXI_type_node;
++    case HFmode:
++      return aarch64_fp16_type_node;
+     case SFmode:
+       return float_type_node;
+     case DFmode:
+@@ -618,6 +630,8 @@ aarch64_init_simd_builtin_types (void)
+   aarch64_simd_types[Poly64x2_t].eltype = aarch64_simd_types[Poly64_t].itype;
+ 
+   /* Continue with standard types.  */
++  aarch64_simd_types[Float16x4_t].eltype = aarch64_fp16_type_node;
++  aarch64_simd_types[Float16x8_t].eltype = aarch64_fp16_type_node;
+   aarch64_simd_types[Float32x2_t].eltype = float_type_node;
+   aarch64_simd_types[Float32x4_t].eltype = float_type_node;
+   aarch64_simd_types[Float64x1_t].eltype = double_type_node;
+@@ -642,15 +656,11 @@ aarch64_init_simd_builtin_types (void)
+ #define AARCH64_BUILD_SIGNED_TYPE(mode)  \
+   make_signed_type (GET_MODE_PRECISION (mode));
+   aarch64_simd_intOI_type_node = AARCH64_BUILD_SIGNED_TYPE (OImode);
+-  aarch64_simd_intEI_type_node = AARCH64_BUILD_SIGNED_TYPE (EImode);
+   aarch64_simd_intCI_type_node = AARCH64_BUILD_SIGNED_TYPE (CImode);
+   aarch64_simd_intXI_type_node = AARCH64_BUILD_SIGNED_TYPE (XImode);
+ #undef AARCH64_BUILD_SIGNED_TYPE
+ 
+   tdecl = add_builtin_type
+-	    ("__builtin_aarch64_simd_ei" , aarch64_simd_intEI_type_node);
+-  TYPE_NAME (aarch64_simd_intEI_type_node) = tdecl;
+-  tdecl = add_builtin_type
+ 	    ("__builtin_aarch64_simd_oi" , aarch64_simd_intOI_type_node);
+   TYPE_NAME (aarch64_simd_intOI_type_node) = tdecl;
+   tdecl = add_builtin_type
+@@ -669,6 +679,8 @@ aarch64_init_simd_builtin_scalar_types (void)
+ 					     "__builtin_aarch64_simd_qi");
+   (*lang_hooks.types.register_builtin_type) (intHI_type_node,
+ 					     "__builtin_aarch64_simd_hi");
++  (*lang_hooks.types.register_builtin_type) (aarch64_fp16_type_node,
++					     "__builtin_aarch64_simd_hf");
+   (*lang_hooks.types.register_builtin_type) (intSI_type_node,
+ 					     "__builtin_aarch64_simd_si");
+   (*lang_hooks.types.register_builtin_type) (float_type_node,
+@@ -698,11 +710,18 @@ aarch64_init_simd_builtin_scalar_types (void)
+ 					     "__builtin_aarch64_simd_udi");
+ }
+ 
+-static void
++static bool aarch64_simd_builtins_initialized_p = false;
++
++void
+ aarch64_init_simd_builtins (void)
+ {
+   unsigned int i, fcode = AARCH64_SIMD_PATTERN_START;
+ 
++  if (aarch64_simd_builtins_initialized_p)
++    return;
++
++  aarch64_simd_builtins_initialized_p = true;
++
+   aarch64_init_simd_builtin_types ();
+ 
+   /* Strong-typing hasn't been implemented for all AdvSIMD builtin intrinsics.
+@@ -863,10 +882,16 @@ aarch64_init_builtins (void)
+     = add_builtin_function ("__builtin_aarch64_set_fpsr", ftype_set_fpr,
+ 			    AARCH64_BUILTIN_SET_FPSR, BUILT_IN_MD, NULL, NULL_TREE);
+ 
++  aarch64_fp16_type_node = make_node (REAL_TYPE);
++  TYPE_PRECISION (aarch64_fp16_type_node) = 16;
++  layout_type (aarch64_fp16_type_node);
++
++  (*lang_hooks.types.register_builtin_type) (aarch64_fp16_type_node, "__fp16");
++
+   if (TARGET_SIMD)
+     aarch64_init_simd_builtins ();
+-  if (TARGET_CRC32)
+-    aarch64_init_crc32_builtins ();
++
++  aarch64_init_crc32_builtins ();
+ }
+ 
+ tree
+@@ -883,12 +908,15 @@ typedef enum
+   SIMD_ARG_COPY_TO_REG,
+   SIMD_ARG_CONSTANT,
+   SIMD_ARG_LANE_INDEX,
++  SIMD_ARG_STRUCT_LOAD_STORE_LANE_INDEX,
+   SIMD_ARG_STOP
+ } builtin_simd_arg;
+ 
++
+ static rtx
+ aarch64_simd_expand_args (rtx target, int icode, int have_retval,
+-			  tree exp, builtin_simd_arg *args)
++			  tree exp, builtin_simd_arg *args,
++			  enum machine_mode builtin_mode)
+ {
+   rtx pat;
+   rtx op[SIMD_MAX_BUILTIN_ARGS + 1]; /* First element for result operand.  */
+@@ -927,6 +955,19 @@ aarch64_simd_expand_args (rtx target, int icode, int have_retval,
+ 		op[opc] = copy_to_mode_reg (mode, op[opc]);
+ 	      break;
+ 
++	    case SIMD_ARG_STRUCT_LOAD_STORE_LANE_INDEX:
++	      gcc_assert (opc > 1);
++	      if (CONST_INT_P (op[opc]))
++		{
++		  aarch64_simd_lane_bounds (op[opc], 0,
++					    GET_MODE_NUNITS (builtin_mode),
++					    exp);
++		  /* Keep to GCC-vector-extension lane indices in the RTL.  */
++		  op[opc] =
++		    GEN_INT (ENDIAN_LANE_N (builtin_mode, INTVAL (op[opc])));
++		}
++	      goto constant_arg;
++
+ 	    case SIMD_ARG_LANE_INDEX:
+ 	      /* Must be a previous operand into which this is an index.  */
+ 	      gcc_assert (opc > 0);
+@@ -941,6 +982,7 @@ aarch64_simd_expand_args (rtx target, int icode, int have_retval,
+ 	      /* Fall through - if the lane index isn't a constant then
+ 		 the next case will error.  */
+ 	    case SIMD_ARG_CONSTANT:
++constant_arg:
+ 	      if (!(*insn_data[icode].operand[opc].predicate)
+ 		  (op[opc], mode))
+ 	      {
+@@ -1049,6 +1091,8 @@ aarch64_simd_expand_builtin (int fcode, tree exp, rtx target)
+ 
+       if (d->qualifiers[qualifiers_k] & qualifier_lane_index)
+ 	args[k] = SIMD_ARG_LANE_INDEX;
++      else if (d->qualifiers[qualifiers_k] & qualifier_struct_load_store_lane_index)
++	args[k] = SIMD_ARG_STRUCT_LOAD_STORE_LANE_INDEX;
+       else if (d->qualifiers[qualifiers_k] & qualifier_immediate)
+ 	args[k] = SIMD_ARG_CONSTANT;
+       else if (d->qualifiers[qualifiers_k] & qualifier_maybe_immediate)
+@@ -1072,7 +1116,7 @@ aarch64_simd_expand_builtin (int fcode, tree exp, rtx target)
+   /* The interface to aarch64_simd_expand_args expects a 0 if
+      the function is void, and a 1 if it is not.  */
+   return aarch64_simd_expand_args
+-	  (target, icode, !is_void, exp, &args[1]);
++	  (target, icode, !is_void, exp, &args[1], d->mode);
+ }
+ 
+ rtx
+@@ -1146,7 +1190,7 @@ aarch64_expand_builtin (tree exp,
+ 	  icode = (fcode == AARCH64_BUILTIN_SET_FPSR) ?
+ 	    CODE_FOR_set_fpsr : CODE_FOR_set_fpcr;
+ 	  arg0 = CALL_EXPR_ARG (exp, 0);
+-	  op0 = expand_normal (arg0);
++	  op0 = force_reg (SImode, expand_normal (arg0));
+ 	  pat = GEN_FCN (icode) (op0);
+ 	}
+       emit_insn (pat);
+--- /dev/null
++++ b/src/gcc/config/aarch64/aarch64-c.c
+@@ -0,0 +1,203 @@
++/* Target-specific code for C family languages.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++
++   This file is part of GCC.
++
++   GCC is free software; you can redistribute it and/or modify
++   it under the terms of the GNU General Public License as published by
++   the Free Software Foundation; either version 3, or (at your option)
++   any later version.
++
++   GCC is distributed in the hope that it will be useful,
++   but WITHOUT ANY WARRANTY; without even the implied warranty of
++   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++   GNU General Public License for more details.
++
++   You should have received a copy of the GNU General Public License
++   along with GCC; see the file COPYING3.  If not see
++   <http://www.gnu.org/licenses/>.  */
++
++#include "config.h"
++#include "system.h"
++#include "coretypes.h"
++#include "tm.h"
++#include "input.h"
++#include "tm_p.h"
++#include "flags.h"
++#include "c-family/c-common.h"
++#include "cpplib.h"
++#include "c-family/c-pragma.h"
++#include "langhooks.h"
++#include "target.h"
++
++
++#define builtin_define(TXT) cpp_define (pfile, TXT)
++#define builtin_assert(TXT) cpp_assert (pfile, TXT)
++
++
++static void
++aarch64_def_or_undef (bool def_p, const char *macro, cpp_reader *pfile)
++{
++  if (def_p)
++    cpp_define (pfile, macro);
++  else
++    cpp_undef (pfile, macro);
++}
++
++/* Define the macros that we always expect to have on AArch64.  */
++
++static void
++aarch64_define_unconditional_macros (cpp_reader *pfile)
++{
++  builtin_define ("__aarch64__");
++  builtin_define ("__ARM_64BIT_STATE");
++
++  builtin_define ("__ARM_ARCH_ISA_A64");
++  builtin_define_with_int_value ("__ARM_ALIGN_MAX_PWR", 28);
++  builtin_define_with_int_value ("__ARM_ALIGN_MAX_STACK_PWR", 16);
++
++  /* __ARM_ARCH_8A is not mandated by ACLE but we define it unconditionally
++     as interoperability with the same arm macro.  */
++  builtin_define ("__ARM_ARCH_8A");
++
++  builtin_define_with_int_value ("__ARM_ARCH_PROFILE", 'A');
++  builtin_define ("__ARM_FEATURE_CLZ");
++  builtin_define ("__ARM_FEATURE_IDIV");
++  builtin_define ("__ARM_FEATURE_UNALIGNED");
++  builtin_define ("__ARM_PCS_AAPCS64");
++  builtin_define_with_int_value ("__ARM_SIZEOF_WCHAR_T", WCHAR_TYPE_SIZE / 8);
++}
++
++/* Undefine/redefine macros that depend on the current backend state and may
++   need to change when a target pragma modifies the backend state.  */
++
++static void
++aarch64_update_cpp_builtins (cpp_reader *pfile)
++{
++  aarch64_def_or_undef (flag_unsafe_math_optimizations, "__ARM_FP_FAST", pfile);
++
++  builtin_define_with_int_value ("__ARM_ARCH", aarch64_architecture_version);
++
++  builtin_define_with_int_value ("__ARM_SIZEOF_MINIMAL_ENUM",
++				 flag_short_enums ? 1 : 4);
++  aarch64_def_or_undef (TARGET_BIG_END, "__AARCH64EB__", pfile);
++  aarch64_def_or_undef (TARGET_BIG_END, "__ARM_BIG_ENDIAN", pfile);
++  aarch64_def_or_undef (!TARGET_BIG_END, "__AARCH64EL__", pfile);
++
++  aarch64_def_or_undef (TARGET_FLOAT, "__ARM_FEATURE_FMA", pfile);
++
++  if (TARGET_FLOAT || TARGET_SIMD)
++    {
++      builtin_define_with_int_value ("__ARM_FP", 0x0E);
++      builtin_define ("__ARM_FP16_FORMAT_IEEE");
++      builtin_define ("__ARM_FP16_ARGS");
++    }
++  else
++    cpp_undef (pfile, "__ARM_FP");
++
++  aarch64_def_or_undef (TARGET_SIMD, "__ARM_FEATURE_NUMERIC_MAXMIN", pfile);
++  aarch64_def_or_undef (TARGET_SIMD, "__ARM_NEON", pfile);
++
++
++  aarch64_def_or_undef (TARGET_CRC32, "__ARM_FEATURE_CRC32", pfile);
++
++  cpp_undef (pfile, "__AARCH64_CMODEL_TINY__");
++  cpp_undef (pfile, "__AARCH64_CMODEL_SMALL__");
++  cpp_undef (pfile, "__AARCH64_CMODEL_LARGE__");
++
++  switch (aarch64_cmodel)
++    {
++      case AARCH64_CMODEL_TINY:
++      case AARCH64_CMODEL_TINY_PIC:
++	builtin_define ("__AARCH64_CMODEL_TINY__");
++	break;
++      case AARCH64_CMODEL_SMALL:
++      case AARCH64_CMODEL_SMALL_PIC:
++	builtin_define ("__AARCH64_CMODEL_SMALL__");
++	break;
++      case AARCH64_CMODEL_LARGE:
++	builtin_define ("__AARCH64_CMODEL_LARGE__");
++	break;
++      default:
++	break;
++    }
++
++  aarch64_def_or_undef (TARGET_ILP32, "_ILP32", pfile);
++  aarch64_def_or_undef (TARGET_ILP32, "__ILP32__", pfile);
++
++  aarch64_def_or_undef (TARGET_CRYPTO, "__ARM_FEATURE_CRYPTO", pfile);
++}
++
++/* Implement TARGET_CPU_CPP_BUILTINS.  */
++
++void
++aarch64_cpu_cpp_builtins (cpp_reader *pfile)
++{
++  aarch64_define_unconditional_macros (pfile);
++  aarch64_update_cpp_builtins (pfile);
++}
++
++/* Hook to validate the current #pragma GCC target and set the state, and
++   update the macros based on what was changed.  If ARGS is NULL, then
++   POP_TARGET is used to reset the options.  */
++
++static bool
++aarch64_pragma_target_parse (tree args, tree pop_target)
++{
++  /* If args is not NULL then process it and setup the target-specific
++     information that it specifies.  */
++  if (args)
++    {
++      if (!aarch64_process_target_attr (args, "pragma"))
++	return false;
++
++      aarch64_override_options_internal (&global_options);
++    }
++
++  /* args is NULL, restore to the state described in pop_target.  */
++  else
++    {
++      pop_target = pop_target ? pop_target : target_option_default_node;
++      cl_target_option_restore (&global_options,
++				TREE_TARGET_OPTION (pop_target));
++    }
++
++  target_option_current_node
++    = build_target_option_node (&global_options);
++
++  aarch64_reset_previous_fndecl ();
++  /* For the definitions, ensure all newly defined macros are considered
++     as used for -Wunused-macros.  There is no point warning about the
++     compiler predefined macros.  */
++  cpp_options *cpp_opts = cpp_get_options (parse_in);
++  unsigned char saved_warn_unused_macros = cpp_opts->warn_unused_macros;
++  cpp_opts->warn_unused_macros = 0;
++
++  aarch64_update_cpp_builtins (parse_in);
++
++  cpp_opts->warn_unused_macros = saved_warn_unused_macros;
++
++  /* Initialize SIMD builtins if we haven't already.
++     Set current_target_pragma to NULL for the duration so that
++     the builtin initialization code doesn't try to tag the functions
++     being built with the attributes specified by any current pragma, thus
++     going into an infinite recursion.  */
++  if (TARGET_SIMD)
++    {
++      tree saved_current_target_pragma = current_target_pragma;
++      current_target_pragma = NULL;
++      aarch64_init_simd_builtins ();
++      current_target_pragma = saved_current_target_pragma;
++    }
++
++  return true;
++}
++
++/* Implement REGISTER_TARGET_PRAGMAS.  */
++
++void
++aarch64_register_pragmas (void)
++{
++  /* Update pragma hook to allow parsing #pragma GCC target.  */
++  targetm.target_option.pragma_parse = aarch64_pragma_target_parse;
++}
+--- a/src/gcc/config/aarch64/aarch64-cores.def
++++ b/src/gcc/config/aarch64/aarch64-cores.def
+@@ -21,27 +21,34 @@
+ 
+    Before using #include to read this file, define a macro:
+ 
+-      AARCH64_CORE(CORE_NAME, CORE_IDENT, SCHEDULER_IDENT, ARCH, FLAGS, COSTS)
++      AARCH64_CORE(CORE_NAME, CORE_IDENT, SCHEDULER_IDENT, ARCH_IDENT, FLAGS, COSTS, IMP, PART)
+ 
+    The CORE_NAME is the name of the core, represented as a string constant.
+    The CORE_IDENT is the name of the core, represented as an identifier.
+    The SCHEDULER_IDENT is the name of the core for which scheduling decisions
+    will be made, represented as an identifier.
+-   ARCH is the architecture revision implemented by the chip.
++   ARCH_IDENT is the architecture implemented by the chip as specified in
++   aarch64-arches.def.
+    FLAGS are the bitwise-or of the traits that apply to that core.
+    This need not include flags implied by the architecture.
+-   COSTS is the name of the rtx_costs routine to use.  */
++   COSTS is the name of the rtx_costs routine to use.
++   IMP is the implementer ID of the CPU vendor.  On a GNU/Linux system it can
++   be found in /proc/cpuinfo.
++   PART is the part number of the CPU.  On a GNU/Linux system it can be found
++   in /proc/cpuinfo.  For big.LITTLE systems this should have the form at of
++   "<big core part number>.<LITTLE core part number>".  */
+ 
+ /* V8 Architecture Processors.  */
+ 
+-AARCH64_CORE("cortex-a53",  cortexa53, cortexa53, 8,  AARCH64_FL_FOR_ARCH8 | AARCH64_FL_CRC, cortexa53)
+-AARCH64_CORE("cortex-a57",  cortexa57, cortexa57, 8,  AARCH64_FL_FOR_ARCH8 | AARCH64_FL_CRC, cortexa57)
+-AARCH64_CORE("cortex-a72",  cortexa72, cortexa57, 8,  AARCH64_FL_FOR_ARCH8 | AARCH64_FL_CRC, cortexa57)
+-AARCH64_CORE("exynos-m1",   exynosm1,  cortexa57, 8,  AARCH64_FL_FOR_ARCH8 | AARCH64_FL_CRC | AARCH64_FL_CRYPTO, cortexa57)
+-AARCH64_CORE("thunderx",    thunderx,  thunderx, 8,  AARCH64_FL_FOR_ARCH8 | AARCH64_FL_CRC | AARCH64_FL_CRYPTO, thunderx)
+-AARCH64_CORE("xgene1",      xgene1,    xgene1,    8,  AARCH64_FL_FOR_ARCH8, xgene1)
++AARCH64_CORE("cortex-a53",  cortexa53, cortexa53, 8A,  AARCH64_FL_FOR_ARCH8 | AARCH64_FL_CRC, cortexa53, "0x41", "0xd03")
++AARCH64_CORE("cortex-a57",  cortexa57, cortexa57, 8A,  AARCH64_FL_FOR_ARCH8 | AARCH64_FL_CRC, cortexa57, "0x41", "0xd07")
++AARCH64_CORE("cortex-a72",  cortexa72, cortexa57, 8A,  AARCH64_FL_FOR_ARCH8 | AARCH64_FL_CRC, cortexa72, "0x41", "0xd08")
++AARCH64_CORE("exynos-m1",   exynosm1,  cortexa57, 8A,  AARCH64_FL_FOR_ARCH8 | AARCH64_FL_CRC | AARCH64_FL_CRYPTO, cortexa72, "0x53", "0x001")
++AARCH64_CORE("thunderx",    thunderx,  thunderx,  8A,  AARCH64_FL_FOR_ARCH8 | AARCH64_FL_CRC | AARCH64_FL_CRYPTO, thunderx,  "0x43", "0x0a1")
++AARCH64_CORE("xgene1",      xgene1,    xgene1,    8A,  AARCH64_FL_FOR_ARCH8, xgene1, "0x50", "0x000")
+ 
+ /* V8 big.LITTLE implementations.  */
+ 
+-AARCH64_CORE("cortex-a57.cortex-a53",  cortexa57cortexa53, cortexa53, 8,  AARCH64_FL_FOR_ARCH8 | AARCH64_FL_CRC, cortexa57)
+-AARCH64_CORE("cortex-a72.cortex-a53",  cortexa72cortexa53, cortexa53, 8,  AARCH64_FL_FOR_ARCH8 | AARCH64_FL_CRC, cortexa57)
++AARCH64_CORE("cortex-a57.cortex-a53",  cortexa57cortexa53, cortexa53, 8A,  AARCH64_FL_FOR_ARCH8 | AARCH64_FL_CRC, cortexa57, "0x41", "0xd07.0xd03")
++AARCH64_CORE("cortex-a72.cortex-a53",  cortexa72cortexa53, cortexa53, 8A,  AARCH64_FL_FOR_ARCH8 | AARCH64_FL_CRC, cortexa72, "0x41", "0xd08.0xd03")
++
+--- a/src/gcc/config/aarch64/aarch64-cost-tables.h
++++ b/src/gcc/config/aarch64/aarch64-cost-tables.h
+@@ -83,7 +83,9 @@ const struct cpu_cost_table thunderx_extra_costs =
+     0,			/* N/A: Stm_regs_per_insn_subsequent.  */
+     0,			/* Storef.  */
+     0,			/* Stored.  */
+-    COSTS_N_INSNS (1)  /* Store_unaligned.  */
++    COSTS_N_INSNS (1),	/* Store_unaligned.  */
++    COSTS_N_INSNS (1),	/* Loadv.  */
++    COSTS_N_INSNS (1)	/* Storev.  */
+   },
+   {
+     /* FP SFmode */
+--- a/src/gcc/config/aarch64/aarch64-elf-raw.h
++++ b/src/gcc/config/aarch64/aarch64-elf-raw.h
+@@ -27,7 +27,7 @@
+   " crtend%O%s crtn%O%s " \
+   "%{Ofast|ffast-math|funsafe-math-optimizations:crtfastmath.o%s}"
+ 
+-#ifdef TARGET_FIX_ERR_A53_835769_DEFAULT
++#if TARGET_FIX_ERR_A53_835769_DEFAULT
+ #define CA53_ERR_835769_SPEC \
+   " %{!mno-fix-cortex-a53-835769:--fix-cortex-a53-835769}"
+ #else
+--- a/src/gcc/config/aarch64/aarch64-elf.h
++++ b/src/gcc/config/aarch64/aarch64-elf.h
+@@ -132,7 +132,8 @@
+ #undef DRIVER_SELF_SPECS
+ #define DRIVER_SELF_SPECS \
+   " %{!mbig-endian:%{!mlittle-endian:" ENDIAN_SPEC "}}" \
+-  " %{!mabi=*:" ABI_SPEC "}"
++  " %{!mabi=*:" ABI_SPEC "}" \
++  MCPU_MTUNE_NATIVE_SPECS
+ 
+ #ifdef HAVE_AS_MABI_OPTION
+ #define ASM_MABI_SPEC	"%{mabi=*:-mabi=%*}"
+@@ -152,9 +153,6 @@ ASM_MABI_SPEC
+ #undef TYPE_OPERAND_FMT
+ #define TYPE_OPERAND_FMT	"%%%s"
+ 
+-#undef TARGET_ASM_NAMED_SECTION
+-#define TARGET_ASM_NAMED_SECTION  aarch64_elf_asm_named_section
+-
+ /* Stabs debug not required.  */
+ #undef DBX_DEBUGGING_INFO
+ 
+--- /dev/null
++++ b/src/gcc/config/aarch64/aarch64-fusion-pairs.def
+@@ -0,0 +1,36 @@
++/* Copyright (C) 2015 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
++   <http://www.gnu.org/licenses/>.  */
++
++/* Pairs of instructions which can be fused. before including this file,
++   define a macro:
++
++     AARCH64_FUSION_PAIR (name, internal_name)
++
++   Where:
++
++     NAME is a string giving a friendly name for the instructions to fuse.
++     INTERNAL_NAME gives the internal name suitable for appending to
++     AARCH64_FUSE_ to give an enum name. */
++
++AARCH64_FUSION_PAIR ("mov+movk", MOV_MOVK)
++AARCH64_FUSION_PAIR ("adrp+add", ADRP_ADD)
++AARCH64_FUSION_PAIR ("movk+movk", MOVK_MOVK)
++AARCH64_FUSION_PAIR ("adrp+ldr", ADRP_LDR)
++AARCH64_FUSION_PAIR ("cmp+branch", CMP_BRANCH)
++
+--- a/src/gcc/config/aarch64/aarch64-ldpstp.md
++++ b/src/gcc/config/aarch64/aarch64-ldpstp.md
+@@ -98,6 +98,47 @@
+     }
+ })
+ 
++(define_peephole2
++  [(set (match_operand:VD 0 "register_operand" "")
++	(match_operand:VD 1 "aarch64_mem_pair_operand" ""))
++   (set (match_operand:VD 2 "register_operand" "")
++	(match_operand:VD 3 "memory_operand" ""))]
++  "aarch64_operands_ok_for_ldpstp (operands, true, <MODE>mode)"
++  [(parallel [(set (match_dup 0) (match_dup 1))
++	      (set (match_dup 2) (match_dup 3))])]
++{
++  rtx base, offset_1, offset_2;
++
++  extract_base_offset_in_addr (operands[1], &base, &offset_1);
++  extract_base_offset_in_addr (operands[3], &base, &offset_2);
++  if (INTVAL (offset_1) > INTVAL (offset_2))
++    {
++      std::swap (operands[0], operands[2]);
++      std::swap (operands[1], operands[3]);
++    }
++})
++
++(define_peephole2
++  [(set (match_operand:VD 0 "aarch64_mem_pair_operand" "")
++	(match_operand:VD 1 "register_operand" ""))
++   (set (match_operand:VD 2 "memory_operand" "")
++	(match_operand:VD 3 "register_operand" ""))]
++  "TARGET_SIMD && aarch64_operands_ok_for_ldpstp (operands, false, <MODE>mode)"
++  [(parallel [(set (match_dup 0) (match_dup 1))
++	      (set (match_dup 2) (match_dup 3))])]
++{
++  rtx base, offset_1, offset_2;
++
++  extract_base_offset_in_addr (operands[0], &base, &offset_1);
++  extract_base_offset_in_addr (operands[2], &base, &offset_2);
++  if (INTVAL (offset_1) > INTVAL (offset_2))
++    {
++      std::swap (operands[0], operands[2]);
++      std::swap (operands[1], operands[3]);
++    }
++})
++
++
+ ;; Handle sign/zero extended consecutive load/store.
+ 
+ (define_peephole2
+--- a/src/gcc/config/aarch64/aarch64-linux.h
++++ b/src/gcc/config/aarch64/aarch64-linux.h
+@@ -23,6 +23,9 @@
+ 
+ #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux-aarch64%{mbig-endian:_be}%{mabi=ilp32:_ilp32}.so.1"
+ 
++#undef MUSL_DYNAMIC_LINKER
++#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-aarch64%{mbig-endian:_be}%{mabi=ilp32:_ilp32}.so.1"
++
+ #undef  ASAN_CC1_SPEC
+ #define ASAN_CC1_SPEC "%{%:sanitize(address):-funwind-tables}"
+ 
+@@ -42,7 +45,7 @@
+    %{mbig-endian:-EB} %{mlittle-endian:-EL}     \
+    -maarch64linux%{mabi=ilp32:32}%{mbig-endian:b}"
+ 
+-#ifdef TARGET_FIX_ERR_A53_835769_DEFAULT
++#if TARGET_FIX_ERR_A53_835769_DEFAULT
+ #define CA53_ERR_835769_SPEC \
+   " %{!mno-fix-cortex-a53-835769:--fix-cortex-a53-835769}"
+ #else
+--- a/src/gcc/config/aarch64/aarch64-modes.def
++++ b/src/gcc/config/aarch64/aarch64-modes.def
+@@ -36,6 +36,10 @@ CC_MODE (CC_DLTU);
+ CC_MODE (CC_DGEU);
+ CC_MODE (CC_DGTU);
+ 
++/* Half-precision floating point for __fp16.  */
++FLOAT_MODE (HF, 2, 0);
++ADJUST_FLOAT_FORMAT (HF, &ieee_half_format);
++
+ /* Vector modes.  */
+ VECTOR_MODES (INT, 8);        /*       V8QI V4HI V2SI.  */
+ VECTOR_MODES (INT, 16);       /* V16QI V8HI V4SI V2DI.  */
+@@ -46,9 +50,8 @@ VECTOR_MODE (FLOAT, DF, 1);   /*                 V1DF.  */
+ /* Oct Int: 256-bit integer mode needed for 32-byte vector arguments.  */
+ INT_MODE (OI, 32);
+ 
+-/* Opaque integer modes for 3, 6 or 8 Neon double registers (2 is
+-   TImode).  */
+-INT_MODE (EI, 24);
++/* Opaque integer modes for 3 or 4 Neon q-registers / 6 or 8 Neon d-registers
++   (2 d-regs = 1 q-reg = TImode).  */
+ INT_MODE (CI, 48);
+ INT_MODE (XI, 64);
+ 
+--- a/src/gcc/config/aarch64/aarch64-option-extensions.def
++++ b/src/gcc/config/aarch64/aarch64-option-extensions.def
+@@ -21,18 +21,24 @@
+ 
+    Before using #include to read this file, define a macro:
+ 
+-      AARCH64_OPT_EXTENSION(EXT_NAME, FLAGS_ON, FLAGS_OFF)
++      AARCH64_OPT_EXTENSION(EXT_NAME, FLAGS_ON, FLAGS_OFF, FEATURE_STRING)
+ 
+    EXT_NAME is the name of the extension, represented as a string constant.
+    FLAGS_ON are the bitwise-or of the features that the extension adds.
+-   FLAGS_OFF are the bitwise-or of the features that the extension removes.  */
+-
+-/* V8 Architecture Extensions.
+-   This list currently contains example extensions for CPUs that implement
+-   AArch64, and therefore serves as a template for adding more CPUs in the
+-   future.  */
+-
+-AARCH64_OPT_EXTENSION("fp",	AARCH64_FL_FP,	AARCH64_FL_FPSIMD | AARCH64_FL_CRYPTO)
+-AARCH64_OPT_EXTENSION("simd",	AARCH64_FL_FPSIMD,	AARCH64_FL_SIMD | AARCH64_FL_CRYPTO)
+-AARCH64_OPT_EXTENSION("crypto",	AARCH64_FL_CRYPTO | AARCH64_FL_FPSIMD,	AARCH64_FL_CRYPTO)
+-AARCH64_OPT_EXTENSION("crc",	AARCH64_FL_CRC,	AARCH64_FL_CRC)
++   FLAGS_OFF are the bitwise-or of the features that the extension removes.
++   FEAT_STRING is a string containing the entries in the 'Features' field of
++   /proc/cpuinfo on a GNU/Linux system that correspond to this architecture
++   extension being available.  Sometimes multiple entries are needed to enable
++   the extension (for example, the 'crypto' extension depends on four
++   entries: aes, pmull, sha1, sha2 being present).  In that case this field
++   should contain a whitespace-separated list of the strings in 'Features'
++   that are required.  Their order is not important.  */
++
++AARCH64_OPT_EXTENSION("fp",	AARCH64_FL_FP,                          AARCH64_FL_FPSIMD | AARCH64_FL_CRYPTO | AARCH64_FL_RDMA, "fp")
++AARCH64_OPT_EXTENSION("simd",	AARCH64_FL_FPSIMD,                      AARCH64_FL_SIMD | AARCH64_FL_CRYPTO | AARCH64_FL_RDMA,   "asimd")
++AARCH64_OPT_EXTENSION("crypto",	AARCH64_FL_CRYPTO | AARCH64_FL_FPSIMD,  AARCH64_FL_CRYPTO,   "aes pmull sha1 sha2")
++AARCH64_OPT_EXTENSION("crc",	AARCH64_FL_CRC,                         AARCH64_FL_CRC,                        "crc32")
++AARCH64_OPT_EXTENSION("lse",	AARCH64_FL_LSE,                         AARCH64_FL_LSE,                        "lse")
++AARCH64_OPT_EXTENSION("pan",	AARCH64_FL_PAN,		AARCH64_FL_PAN,		"pan")
++AARCH64_OPT_EXTENSION("lor",	AARCH64_FL_LOR,		AARCH64_FL_LOR,		"lor")
++AARCH64_OPT_EXTENSION("rdma",	AARCH64_FL_RDMA | AARCH64_FL_FPSIMD,	AARCH64_FL_RDMA,	"rdma")
+--- a/src/gcc/config/aarch64/aarch64-opts.h
++++ b/src/gcc/config/aarch64/aarch64-opts.h
+@@ -25,7 +25,7 @@
+ /* The various cores that implement AArch64.  */
+ enum aarch64_processor
+ {
+-#define AARCH64_CORE(NAME, INTERNAL_IDENT, SCHED, ARCH, FLAGS, COSTS) \
++#define AARCH64_CORE(NAME, INTERNAL_IDENT, SCHED, ARCH, FLAGS, COSTS, IMP, PART) \
+   INTERNAL_IDENT,
+ #include "aarch64-cores.def"
+ #undef AARCH64_CORE
+@@ -35,6 +35,15 @@ enum aarch64_processor
+   aarch64_none
+ };
+ 
++enum aarch64_arch
++{
++#define AARCH64_ARCH(NAME, CORE, ARCH_IDENT, ARCH_REV, FLAGS) \
++  AARCH64_ARCH_##ARCH_IDENT,
++#include "aarch64-arches.def"
++#undef AARCH64_ARCH
++  aarch64_no_arch
++};
++
+ /* TLS types.  */
+ enum aarch64_tls_type {
+   TLS_TRADITIONAL,
+--- a/src/gcc/config/aarch64/aarch64-protos.h
++++ b/src/gcc/config/aarch64/aarch64-protos.h
+@@ -22,6 +22,8 @@
+ #ifndef GCC_AARCH64_PROTOS_H
+ #define GCC_AARCH64_PROTOS_H
+ 
++#include "input.h"
++
+ /*
+   SYMBOL_CONTEXT_ADR
+   The symbol is used in a load-address operation.
+@@ -64,7 +66,7 @@ enum aarch64_symbol_context
+    SYMBOL_SMALL_TLSGD
+    SYMBOL_SMALL_TLSDESC
+    SYMBOL_SMALL_GOTTPREL
+-   SYMBOL_SMALL_TPREL
++   SYMBOL_TLSLE
+    Each of of these represents a thread-local symbol, and corresponds to the
+    thread local storage relocation operator for the symbol being referred to.
+ 
+@@ -98,9 +100,9 @@ enum aarch64_symbol_type
+   SYMBOL_SMALL_TLSGD,
+   SYMBOL_SMALL_TLSDESC,
+   SYMBOL_SMALL_GOTTPREL,
+-  SYMBOL_SMALL_TPREL,
+   SYMBOL_TINY_ABSOLUTE,
+   SYMBOL_TINY_GOT,
++  SYMBOL_TLSLE,
+   SYMBOL_FORCE_TO_MEM
+ };
+ 
+@@ -162,26 +164,83 @@ struct cpu_vector_cost
+   const int cond_not_taken_branch_cost;  /* Cost of not taken branch.  */
+ };
+ 
++/* Branch costs.  */
++struct cpu_branch_cost
++{
++  const int predictable;    /* Predictable branch or optimizing for size.  */
++  const int unpredictable;  /* Unpredictable branch or optimizing for speed.  */
++};
++
+ struct tune_params
+ {
+-  const struct cpu_cost_table *const insn_extra_cost;
+-  const struct cpu_addrcost_table *const addr_cost;
+-  const struct cpu_regmove_cost *const regmove_cost;
+-  const struct cpu_vector_cost *const vec_costs;
+-  const int memmov_cost;
+-  const int issue_rate;
+-  const unsigned int fuseable_ops;
+-  const int function_align;
+-  const int jump_align;
+-  const int loop_align;
+-  const int int_reassoc_width;
+-  const int fp_reassoc_width;
+-  const int vec_reassoc_width;
++  const struct cpu_cost_table *insn_extra_cost;
++  const struct cpu_addrcost_table *addr_cost;
++  const struct cpu_regmove_cost *regmove_cost;
++  const struct cpu_vector_cost *vec_costs;
++  const struct cpu_branch_cost *branch_costs;
++  int memmov_cost;
++  int issue_rate;
++  unsigned int fusible_ops;
++  int function_align;
++  int jump_align;
++  int loop_align;
++  int int_reassoc_width;
++  int fp_reassoc_width;
++  int vec_reassoc_width;
++  int min_div_recip_mul_sf;
++  int min_div_recip_mul_df;
++  unsigned int extra_tuning_flags;
++};
++
++#define AARCH64_FUSION_PAIR(x, name) \
++  AARCH64_FUSE_##name##_index, 
++/* Supported fusion operations.  */
++enum aarch64_fusion_pairs_index
++{
++#include "aarch64-fusion-pairs.def"
++  AARCH64_FUSE_index_END
++};
++#undef AARCH64_FUSION_PAIR
++
++#define AARCH64_FUSION_PAIR(x, name) \
++  AARCH64_FUSE_##name = (1u << AARCH64_FUSE_##name##_index),
++/* Supported fusion operations.  */
++enum aarch64_fusion_pairs
++{
++  AARCH64_FUSE_NOTHING = 0,
++#include "aarch64-fusion-pairs.def"
++  AARCH64_FUSE_ALL = (1u << AARCH64_FUSE_index_END) - 1
++};
++#undef AARCH64_FUSION_PAIR
++
++#define AARCH64_EXTRA_TUNING_OPTION(x, name) \
++  AARCH64_EXTRA_TUNE_##name##_index,
++/* Supported tuning flags indexes.  */
++enum aarch64_extra_tuning_flags_index
++{
++#include "aarch64-tuning-flags.def"
++  AARCH64_EXTRA_TUNE_index_END
++};
++#undef AARCH64_EXTRA_TUNING_OPTION
++
++
++#define AARCH64_EXTRA_TUNING_OPTION(x, name) \
++  AARCH64_EXTRA_TUNE_##name = (1u << AARCH64_EXTRA_TUNE_##name##_index),
++/* Supported tuning flags.  */
++enum aarch64_extra_tuning_flags
++{
++  AARCH64_EXTRA_TUNE_NONE = 0,
++#include "aarch64-tuning-flags.def"
++  AARCH64_EXTRA_TUNE_ALL = (1u << AARCH64_EXTRA_TUNE_index_END) - 1
+ };
++#undef AARCH64_EXTRA_TUNING_OPTION
++
++extern struct tune_params aarch64_tune_params;
+ 
+ HOST_WIDE_INT aarch64_initial_elimination_offset (unsigned, unsigned);
+ int aarch64_get_condition_code (rtx);
+ bool aarch64_bitmask_imm (HOST_WIDE_INT val, machine_mode);
++int aarch64_branch_cost (bool, bool);
+ enum aarch64_symbol_type
+ aarch64_classify_symbolic_expression (rtx, enum aarch64_symbol_context);
+ bool aarch64_const_vec_all_same_int_p (rtx, HOST_WIDE_INT);
+@@ -191,9 +250,12 @@ 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_handle_option (struct gcc_options *, struct gcc_options *,
++			     const struct cl_decoded_option *, location_t);
+ bool aarch64_is_extend_from_extract (machine_mode, rtx, rtx);
+ bool aarch64_is_long_call_p (rtx);
+ bool aarch64_label_mentioned_p (rtx);
++void aarch64_declare_function_name (FILE *, const char*, tree);
+ bool aarch64_legitimate_pic_operand_p (rtx);
+ bool aarch64_modes_tieable_p (machine_mode mode1,
+ 			      machine_mode mode2);
+@@ -243,11 +305,14 @@ rtx aarch64_simd_gen_const_vector_dup (machine_mode, int);
+ bool aarch64_simd_mem_operand_p (rtx);
+ rtx aarch64_simd_vect_par_cnst_half (machine_mode, bool);
+ rtx aarch64_tls_get_addr (void);
++std::string aarch64_get_extension_string_for_isa_flags (unsigned long);
+ 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 *);
++void aarch64_cpu_cpp_builtins (cpp_reader *);
+ void aarch64_elf_asm_named_section (const char *, unsigned, tree);
++void aarch64_err_no_fpadvsimd (machine_mode, const char *);
+ void aarch64_expand_epilogue (bool);
+ void aarch64_expand_mov_immediate (rtx, rtx);
+ void aarch64_expand_prologue (void);
+@@ -255,21 +320,19 @@ void aarch64_expand_vector_init (rtx, rtx);
+ void aarch64_init_cumulative_args (CUMULATIVE_ARGS *, const_tree, rtx,
+ 				   const_tree, unsigned);
+ void aarch64_init_expanders (void);
++void aarch64_init_simd_builtins (void);
+ void aarch64_print_operand (FILE *, rtx, char);
+ void aarch64_print_operand_address (FILE *, rtx);
+ void aarch64_emit_call_insn (rtx);
++void aarch64_register_pragmas (void);
++void aarch64_relayout_simd_types (void);
++void aarch64_reset_previous_fndecl (void);
+ 
+ /* Initialize builtins for SIMD intrinsics.  */
+ void init_aarch64_simd_builtins (void);
+ 
+ void aarch64_simd_emit_reg_reg_move (rtx *, enum machine_mode, unsigned int);
+ 
+-/* Emit code to place a AdvSIMD pair result in memory locations (with equal
+-   registers).  */
+-void aarch64_simd_emit_pair_result_insn (machine_mode,
+-					 rtx (*intfn) (rtx, rtx, rtx), rtx,
+-					 rtx);
+-
+ /* Expand builtins for SIMD intrinsics.  */
+ rtx aarch64_simd_expand_builtin (int, tree, rtx);
+ 
+@@ -295,12 +358,20 @@ rtx aarch64_load_tp (rtx);
+ 
+ void aarch64_expand_compare_and_swap (rtx op[]);
+ void aarch64_split_compare_and_swap (rtx op[]);
++void aarch64_gen_atomic_cas (rtx, rtx, rtx, rtx, rtx);
++
++bool aarch64_atomic_ldop_supported_p (enum rtx_code);
++void aarch64_gen_atomic_ldop (enum rtx_code, rtx, rtx, rtx, rtx, rtx);
+ void aarch64_split_atomic_op (enum rtx_code, rtx, rtx, rtx, rtx, rtx, rtx);
+ 
+ bool aarch64_gen_adjusted_ldpstp (rtx *, bool, enum machine_mode, RTX_CODE);
+ #endif /* RTX_CODE */
+ 
+ void aarch64_init_builtins (void);
++
++bool aarch64_process_target_attr (tree, const char*);
++void aarch64_override_options_internal (struct gcc_options *);
++
+ rtx aarch64_expand_builtin (tree exp,
+ 			    rtx target,
+ 			    rtx subtarget ATTRIBUTE_UNUSED,
+--- a/src/gcc/config/aarch64/aarch64-simd-builtin-types.def
++++ b/src/gcc/config/aarch64/aarch64-simd-builtin-types.def
+@@ -44,6 +44,8 @@
+   ENTRY (Poly16x8_t, V8HI, poly, 12)
+   ENTRY (Poly64x1_t, DI, poly, 12)
+   ENTRY (Poly64x2_t, V2DI, poly, 12)
++  ENTRY (Float16x4_t, V4HF, none, 13)
++  ENTRY (Float16x8_t, V8HF, none, 13)
+   ENTRY (Float32x2_t, V2SF, none, 13)
+   ENTRY (Float32x4_t, V4SF, none, 13)
+   ENTRY (Float64x1_t, V1DF, none, 13)
+--- a/src/gcc/config/aarch64/aarch64-simd-builtins.def
++++ b/src/gcc/config/aarch64/aarch64-simd-builtins.def
+@@ -88,9 +88,9 @@
+   BUILTIN_VALLDIF (LOADSTRUCT, ld3r, 0)
+   BUILTIN_VALLDIF (LOADSTRUCT, ld4r, 0)
+   /* Implemented by aarch64_ld<VSTRUCT:nregs>_lane<VQ:mode>.  */
+-  BUILTIN_VQ (LOADSTRUCT_LANE, ld2_lane, 0)
+-  BUILTIN_VQ (LOADSTRUCT_LANE, ld3_lane, 0)
+-  BUILTIN_VQ (LOADSTRUCT_LANE, ld4_lane, 0)
++  BUILTIN_VALLDIF (LOADSTRUCT_LANE, ld2_lane, 0)
++  BUILTIN_VALLDIF (LOADSTRUCT_LANE, ld3_lane, 0)
++  BUILTIN_VALLDIF (LOADSTRUCT_LANE, ld4_lane, 0)
+   /* Implemented by aarch64_st<VSTRUCT:nregs><VDC:mode>.  */
+   BUILTIN_VDC (STORESTRUCT, st2, 0)
+   BUILTIN_VDC (STORESTRUCT, st3, 0)
+@@ -100,9 +100,9 @@
+   BUILTIN_VQ (STORESTRUCT, st3, 0)
+   BUILTIN_VQ (STORESTRUCT, st4, 0)
+ 
+-  BUILTIN_VQ (STORESTRUCT_LANE, st2_lane, 0)
+-  BUILTIN_VQ (STORESTRUCT_LANE, st3_lane, 0)
+-  BUILTIN_VQ (STORESTRUCT_LANE, st4_lane, 0)
++  BUILTIN_VALLDIF (STORESTRUCT_LANE, st2_lane, 0)
++  BUILTIN_VALLDIF (STORESTRUCT_LANE, st3_lane, 0)
++  BUILTIN_VALLDIF (STORESTRUCT_LANE, st4_lane, 0)
+ 
+   BUILTIN_VQW (BINOP, saddl2, 0)
+   BUILTIN_VQW (BINOP, uaddl2, 0)
+@@ -361,17 +361,19 @@
+   BUILTIN_VSDQ_I_DI (UNOP, abs, 0)
+   BUILTIN_VDQF (UNOP, abs, 2)
+ 
+-  VAR1 (UNOP, vec_unpacks_hi_, 10, v4sf)
++  BUILTIN_VQ_HSF (UNOP, vec_unpacks_hi_, 10)
+   VAR1 (BINOP, float_truncate_hi_, 0, v4sf)
++  VAR1 (BINOP, float_truncate_hi_, 0, v8hf)
+ 
+   VAR1 (UNOP, float_extend_lo_, 0, v2df)
+-  VAR1 (UNOP, float_truncate_lo_, 0, v2sf)
++  VAR1 (UNOP, float_extend_lo_,  0, v4sf)
++  BUILTIN_VDF (UNOP, float_truncate_lo_, 0)
+ 
+-  /* Implemented by aarch64_ld1<VALL:mode>.  */
+-  BUILTIN_VALL (LOAD1, ld1, 0)
++  /* Implemented by aarch64_ld1<VALL_F16:mode>.  */
++  BUILTIN_VALL_F16 (LOAD1, ld1, 0)
+ 
+-  /* Implemented by aarch64_st1<VALL:mode>.  */
+-  BUILTIN_VALL (STORE1, st1, 0)
++  /* Implemented by aarch64_st1<VALL_F16:mode>.  */
++  BUILTIN_VALL_F16 (STORE1, st1, 0)
+ 
+   /* Implemented by fma<mode>4.  */
+   BUILTIN_VDQF (TERNOP, fma, 4)
+@@ -405,3 +407,8 @@
+   VAR1 (BINOPP, crypto_pmull, 0, di)
+   VAR1 (BINOPP, crypto_pmull, 0, v2di)
+ 
++  /* Implemented by aarch64_tbl3v8qi.  */
++  VAR1 (BINOP, tbl3, 0, v8qi)
++
++  /* Implemented by aarch64_tbx4v8qi.  */
++  VAR1 (TERNOP, tbx4, 0, v8qi)
+--- a/src/gcc/config/aarch64/aarch64-simd.md
++++ b/src/gcc/config/aarch64/aarch64-simd.md
+@@ -19,8 +19,8 @@
+ ;; <http://www.gnu.org/licenses/>.
+ 
+ (define_expand "mov<mode>"
+-  [(set (match_operand:VALL 0 "nonimmediate_operand" "")
+-	(match_operand:VALL 1 "general_operand" ""))]
++  [(set (match_operand:VALL_F16 0 "nonimmediate_operand" "")
++	(match_operand:VALL_F16 1 "general_operand" ""))]
+   "TARGET_SIMD"
+   "
+     if (GET_CODE (operands[0]) == MEM)
+@@ -53,18 +53,19 @@
+ )
+ 
+ (define_insn "aarch64_simd_dup<mode>"
+-  [(set (match_operand:VDQF 0 "register_operand" "=w")
+-        (vec_duplicate:VDQF (match_operand:<VEL> 1 "register_operand" "w")))]
++  [(set (match_operand:VDQF_F16 0 "register_operand" "=w")
++	(vec_duplicate:VDQF_F16
++	  (match_operand:<VEL> 1 "register_operand" "w")))]
+   "TARGET_SIMD"
+   "dup\\t%0.<Vtype>, %1.<Vetype>[0]"
+   [(set_attr "type" "neon_dup<q>")]
+ )
+ 
+ (define_insn "aarch64_dup_lane<mode>"
+-  [(set (match_operand:VALL 0 "register_operand" "=w")
+-	(vec_duplicate:VALL
++  [(set (match_operand:VALL_F16 0 "register_operand" "=w")
++	(vec_duplicate:VALL_F16
+ 	  (vec_select:<VEL>
+-	    (match_operand:VALL 1 "register_operand" "w")
++	    (match_operand:VALL_F16 1 "register_operand" "w")
+ 	    (parallel [(match_operand:SI 2 "immediate_operand" "i")])
+           )))]
+   "TARGET_SIMD"
+@@ -76,8 +77,8 @@
+ )
+ 
+ (define_insn "aarch64_dup_lane_<vswap_width_name><mode>"
+-  [(set (match_operand:VALL 0 "register_operand" "=w")
+-	(vec_duplicate:VALL
++  [(set (match_operand:VALL_F16 0 "register_operand" "=w")
++	(vec_duplicate:VALL_F16
+ 	  (vec_select:<VEL>
+ 	    (match_operand:<VSWAP_WIDTH> 1 "register_operand" "w")
+ 	    (parallel [(match_operand:SI 2 "immediate_operand" "i")])
+@@ -152,6 +153,34 @@
+    (set_attr "length" "4,4,4,8,8,8,4")]
+ )
+ 
++(define_insn "load_pair<mode>"
++  [(set (match_operand:VD 0 "register_operand" "=w")
++	(match_operand:VD 1 "aarch64_mem_pair_operand" "Ump"))
++   (set (match_operand:VD 2 "register_operand" "=w")
++	(match_operand:VD 3 "memory_operand" "m"))]
++  "TARGET_SIMD
++   && rtx_equal_p (XEXP (operands[3], 0),
++		   plus_constant (Pmode,
++				  XEXP (operands[1], 0),
++				  GET_MODE_SIZE (<MODE>mode)))"
++  "ldp\\t%d0, %d2, %1"
++  [(set_attr "type" "neon_ldp")]
++)
++
++(define_insn "store_pair<mode>"
++  [(set (match_operand:VD 0 "aarch64_mem_pair_operand" "=Ump")
++	(match_operand:VD 1 "register_operand" "w"))
++   (set (match_operand:VD 2 "memory_operand" "=m")
++	(match_operand:VD 3 "register_operand" "w"))]
++  "TARGET_SIMD
++   && rtx_equal_p (XEXP (operands[2], 0),
++		   plus_constant (Pmode,
++				  XEXP (operands[0], 0),
++				  GET_MODE_SIZE (<MODE>mode)))"
++  "stp\\t%d1, %d3, %0"
++  [(set_attr "type" "neon_stp")]
++)
++
+ (define_split
+   [(set (match_operand:VQ 0 "register_operand" "")
+       (match_operand:VQ 1 "register_operand" ""))]
+@@ -834,11 +863,11 @@
+ )
+ 
+ (define_insn "aarch64_simd_vec_set<mode>"
+-  [(set (match_operand:VDQF 0 "register_operand" "=w")
+-        (vec_merge:VDQF
+-	    (vec_duplicate:VDQF
++  [(set (match_operand:VDQF_F16 0 "register_operand" "=w")
++	(vec_merge:VDQF_F16
++	    (vec_duplicate:VDQF_F16
+ 		(match_operand:<VEL> 1 "register_operand" "w"))
+-	    (match_operand:VDQF 3 "register_operand" "0")
++	    (match_operand:VDQF_F16 3 "register_operand" "0")
+ 	    (match_operand:SI 2 "immediate_operand" "i")))]
+   "TARGET_SIMD"
+   {
+@@ -851,7 +880,7 @@
+ )
+ 
+ (define_expand "vec_set<mode>"
+-  [(match_operand:VDQF 0 "register_operand" "+w")
++  [(match_operand:VDQF_F16 0 "register_operand" "+w")
+    (match_operand:<VEL> 1 "register_operand" "w")
+    (match_operand:SI 2 "immediate_operand" "")]
+   "TARGET_SIMD"
+@@ -1691,61 +1720,116 @@
+ 
+ ;; 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)])
+-	  )))]
++(define_insn "aarch64_simd_vec_unpacks_lo_<mode>"
++  [(set (match_operand:<VWIDE> 0 "register_operand" "=w")
++        (float_extend:<VWIDE> (vec_select:<VHALF>
++			       (match_operand:VQ_HSF 1 "register_operand" "w")
++			       (match_operand:VQ_HSF 2 "vect_par_cnst_lo_half" "")
++			    )))]
+   "TARGET_SIMD"
+-  "fcvtl\\t%0.2d, %1.2s"
++  "fcvtl\\t%0.<Vwtype>, %1.<Vhalftype>"
+   [(set_attr "type" "neon_fp_cvt_widen_s")]
+ )
+ 
+-(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")))]
++;; ??? Note that the vectorizer usage of the vec_unpacks_[lo/hi] patterns
++;; is inconsistent with vector ordering elsewhere in the compiler, in that
++;; the meaning of HI and LO changes depending on the target endianness.
++;; While elsewhere we map the higher numbered elements of a vector to
++;; the lower architectural lanes of the vector, for these patterns we want
++;; to always treat "hi" as referring to the higher architectural lanes.
++;; Consequently, while the patterns below look inconsistent with our
++;; other big-endian patterns their behaviour is as required.
++
++(define_expand "vec_unpacks_lo_<mode>"
++  [(match_operand:<VWIDE> 0 "register_operand" "")
++   (match_operand:VQ_HSF 1 "register_operand" "")]
+   "TARGET_SIMD"
+-  "fcvtl\\t%0.2d, %1.2s"
++  {
++    rtx p = aarch64_simd_vect_par_cnst_half (<MODE>mode, false);
++    emit_insn (gen_aarch64_simd_vec_unpacks_lo_<mode> (operands[0],
++						       operands[1], p));
++    DONE;
++  }
++)
++
++(define_insn "aarch64_simd_vec_unpacks_hi_<mode>"
++  [(set (match_operand:<VWIDE> 0 "register_operand" "=w")
++        (float_extend:<VWIDE> (vec_select:<VHALF>
++			       (match_operand:VQ_HSF 1 "register_operand" "w")
++			       (match_operand:VQ_HSF 2 "vect_par_cnst_hi_half" "")
++			    )))]
++  "TARGET_SIMD"
++  "fcvtl2\\t%0.<Vwtype>, %1.<Vtype>"
+   [(set_attr "type" "neon_fp_cvt_widen_s")]
+ )
+ 
+-(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)])
+-	  )))]
++(define_expand "vec_unpacks_hi_<mode>"
++  [(match_operand:<VWIDE> 0 "register_operand" "")
++   (match_operand:VQ_HSF 1 "register_operand" "")]
+   "TARGET_SIMD"
+-  "fcvtl2\\t%0.2d, %1.4s"
++  {
++    rtx p = aarch64_simd_vect_par_cnst_half (<MODE>mode, true);
++    emit_insn (gen_aarch64_simd_vec_unpacks_lo_<mode> (operands[0],
++						       operands[1], p));
++    DONE;
++  }
++)
++(define_insn "aarch64_float_extend_lo_<Vwide>"
++  [(set (match_operand:<VWIDE> 0 "register_operand" "=w")
++	(float_extend:<VWIDE>
++	  (match_operand:VDF 1 "register_operand" "w")))]
++  "TARGET_SIMD"
++  "fcvtl\\t%0<Vmwtype>, %1<Vmtype>"
+   [(set_attr "type" "neon_fp_cvt_widen_s")]
+ )
+ 
+ ;; 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")))]
++(define_insn "aarch64_float_truncate_lo_<mode>"
++  [(set (match_operand:VDF 0 "register_operand" "=w")
++      (float_truncate:VDF
++	(match_operand:<VWIDE> 1 "register_operand" "w")))]
+   "TARGET_SIMD"
+-  "fcvtn\\t%0.2s, %1.2d"
++  "fcvtn\\t%0.<Vtype>, %1<Vmwtype>"
+   [(set_attr "type" "neon_fp_cvt_narrow_d_q")]
+ )
+ 
+-(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"
++(define_insn "aarch64_float_truncate_hi_<Vdbl>_le"
++  [(set (match_operand:<VDBL> 0 "register_operand" "=w")
++    (vec_concat:<VDBL>
++      (match_operand:VDF 1 "register_operand" "0")
++      (float_truncate:VDF
++	(match_operand:<VWIDE> 2 "register_operand" "w"))))]
++  "TARGET_SIMD && !BYTES_BIG_ENDIAN"
++  "fcvtn2\\t%0.<Vdtype>, %2<Vmwtype>"
++  [(set_attr "type" "neon_fp_cvt_narrow_d_q")]
++)
++
++(define_insn "aarch64_float_truncate_hi_<Vdbl>_be"
++  [(set (match_operand:<VDBL> 0 "register_operand" "=w")
++    (vec_concat:<VDBL>
++      (float_truncate:VDF
++	(match_operand:<VWIDE> 2 "register_operand" "w"))
++      (match_operand:VDF 1 "register_operand" "0")))]
++  "TARGET_SIMD && BYTES_BIG_ENDIAN"
++  "fcvtn2\\t%0.<Vdtype>, %2<Vmwtype>"
+   [(set_attr "type" "neon_fp_cvt_narrow_d_q")]
+ )
+ 
++(define_expand "aarch64_float_truncate_hi_<Vdbl>"
++  [(match_operand:<VDBL> 0 "register_operand" "=w")
++   (match_operand:VDF 1 "register_operand" "0")
++   (match_operand:<VWIDE> 2 "register_operand" "w")]
++  "TARGET_SIMD"
++{
++  rtx (*gen) (rtx, rtx, rtx) = BYTES_BIG_ENDIAN
++			     ? gen_aarch64_float_truncate_hi_<Vdbl>_be
++			     : gen_aarch64_float_truncate_hi_<Vdbl>_le;
++  emit_insn (gen (operands[0], operands[1], operands[2]));
++  DONE;
++}
++)
++
+ (define_expand "vec_pack_trunc_v2df"
+   [(set (match_operand:V4SF 0 "register_operand")
+       (vec_concat:V4SF
+@@ -2057,13 +2141,13 @@
+ })
+ 
+ (define_expand "aarch64_vcond_internal<mode><mode>"
+-  [(set (match_operand:VDQ_I 0 "register_operand")
+-	(if_then_else:VDQ_I
++  [(set (match_operand:VSDQ_I_DI 0 "register_operand")
++	(if_then_else:VSDQ_I_DI
+ 	  (match_operator 3 "comparison_operator"
+-	    [(match_operand:VDQ_I 4 "register_operand")
+-	     (match_operand:VDQ_I 5 "nonmemory_operand")])
+-	  (match_operand:VDQ_I 1 "nonmemory_operand")
+-	  (match_operand:VDQ_I 2 "nonmemory_operand")))]
++	    [(match_operand:VSDQ_I_DI 4 "register_operand")
++	     (match_operand:VSDQ_I_DI 5 "nonmemory_operand")])
++	  (match_operand:VSDQ_I_DI 1 "nonmemory_operand")
++	  (match_operand:VSDQ_I_DI 2 "nonmemory_operand")))]
+   "TARGET_SIMD"
+ {
+   rtx op1 = operands[1];
+@@ -2365,13 +2449,13 @@
+ })
+ 
+ (define_expand "vcond<mode><mode>"
+-  [(set (match_operand:VALL 0 "register_operand")
+-	(if_then_else:VALL
++  [(set (match_operand:VALLDI 0 "register_operand")
++	(if_then_else:VALLDI
+ 	  (match_operator 3 "comparison_operator"
+-	    [(match_operand:VALL 4 "register_operand")
+-	     (match_operand:VALL 5 "nonmemory_operand")])
+-	  (match_operand:VALL 1 "nonmemory_operand")
+-	  (match_operand:VALL 2 "nonmemory_operand")))]
++	    [(match_operand:VALLDI 4 "register_operand")
++	     (match_operand:VALLDI 5 "nonmemory_operand")])
++	  (match_operand:VALLDI 1 "nonmemory_operand")
++	  (match_operand:VALLDI 2 "nonmemory_operand")))]
+   "TARGET_SIMD"
+ {
+   emit_insn (gen_aarch64_vcond_internal<mode><mode> (operands[0], operands[1],
+@@ -2398,13 +2482,13 @@
+ })
+ 
+ (define_expand "vcondu<mode><mode>"
+-  [(set (match_operand:VDQ_I 0 "register_operand")
+-	(if_then_else:VDQ_I
++  [(set (match_operand:VSDQ_I_DI 0 "register_operand")
++	(if_then_else:VSDQ_I_DI
+ 	  (match_operator 3 "comparison_operator"
+-	    [(match_operand:VDQ_I 4 "register_operand")
+-	     (match_operand:VDQ_I 5 "nonmemory_operand")])
+-	  (match_operand:VDQ_I 1 "nonmemory_operand")
+-	  (match_operand:VDQ_I 2 "nonmemory_operand")))]
++	    [(match_operand:VSDQ_I_DI 4 "register_operand")
++	     (match_operand:VSDQ_I_DI 5 "nonmemory_operand")])
++	  (match_operand:VSDQ_I_DI 1 "nonmemory_operand")
++	  (match_operand:VSDQ_I_DI 2 "nonmemory_operand")))]
+   "TARGET_SIMD"
+ {
+   emit_insn (gen_aarch64_vcond_internal<mode><mode> (operands[0], operands[1],
+@@ -2450,7 +2534,7 @@
+ (define_insn "aarch64_get_lane<mode>"
+   [(set (match_operand:<VEL> 0 "aarch64_simd_nonimmediate_operand" "=r, w, Utv")
+ 	(vec_select:<VEL>
+-	  (match_operand:VALL 1 "register_operand" "w, w, w")
++	  (match_operand:VALL_F16 1 "register_operand" "w, w, w")
+ 	  (parallel [(match_operand:SI 2 "immediate_operand" "i, i, i")])))]
+   "TARGET_SIMD"
+   {
+@@ -2474,23 +2558,33 @@
+ ;; dest vector.
+ 
+ (define_insn "*aarch64_combinez<mode>"
+-  [(set (match_operand:<VDBL> 0 "register_operand" "=&w")
++  [(set (match_operand:<VDBL> 0 "register_operand" "=w,w,w")
+         (vec_concat:<VDBL>
+-	   (match_operand:VD_BHSI 1 "register_operand" "w")
+-	   (match_operand:VD_BHSI 2 "aarch64_simd_imm_zero" "Dz")))]
++	   (match_operand:VD_BHSI 1 "general_operand" "w,r,m")
++	   (match_operand:VD_BHSI 2 "aarch64_simd_imm_zero" "Dz,Dz,Dz")))]
+   "TARGET_SIMD && !BYTES_BIG_ENDIAN"
+-  "mov\\t%0.8b, %1.8b"
+-  [(set_attr "type" "neon_move<q>")]
++  "@
++   mov\\t%0.8b, %1.8b
++   fmov\t%d0, %1
++   ldr\\t%d0, %1"
++  [(set_attr "type" "neon_move<q>, neon_from_gp, neon_load1_1reg")
++   (set_attr "simd" "yes,*,yes")
++   (set_attr "fp" "*,yes,*")]
+ )
+ 
+ (define_insn "*aarch64_combinez_be<mode>"
+-  [(set (match_operand:<VDBL> 0 "register_operand" "=&w")
++  [(set (match_operand:<VDBL> 0 "register_operand" "=w,w,w")
+         (vec_concat:<VDBL>
+-	   (match_operand:VD_BHSI 2 "aarch64_simd_imm_zero" "Dz")
+-	   (match_operand:VD_BHSI 1 "register_operand" "w")))]
++	   (match_operand:VD_BHSI 2 "aarch64_simd_imm_zero" "Dz,Dz,Dz")
++	   (match_operand:VD_BHSI 1 "general_operand" "w,r,m")))]
+   "TARGET_SIMD && BYTES_BIG_ENDIAN"
+-  "mov\\t%0.8b, %1.8b"
+-  [(set_attr "type" "neon_move<q>")]
++  "@
++   mov\\t%0.8b, %1.8b
++   fmov\t%d0, %1
++   ldr\\t%d0, %1"
++  [(set_attr "type" "neon_move<q>, neon_from_gp, neon_load1_1reg")
++   (set_attr "simd" "yes,*,yes")
++   (set_attr "fp" "*,yes,*")]
+ )
+ 
+ (define_expand "aarch64_combine<mode>"
+@@ -3906,7 +4000,7 @@
+ 
+ (define_insn "aarch64_simd_ld2r<mode>"
+   [(set (match_operand:OI 0 "register_operand" "=w")
+-       (unspec:OI [(match_operand:<V_TWO_ELEM> 1 "aarch64_simd_struct_operand" "Utv")
++       (unspec:OI [(match_operand:BLK 1 "aarch64_simd_struct_operand" "Utv")
+                    (unspec:VALLDIF [(const_int 0)] UNSPEC_VSTRUCTDUMMY) ]
+                   UNSPEC_LD2_DUP))]
+   "TARGET_SIMD"
+@@ -3916,13 +4010,16 @@
+ 
+ (define_insn "aarch64_vec_load_lanesoi_lane<mode>"
+   [(set (match_operand:OI 0 "register_operand" "=w")
+-	(unspec:OI [(match_operand:<V_TWO_ELEM> 1 "aarch64_simd_struct_operand" "Utv")
++	(unspec:OI [(match_operand:BLK 1 "aarch64_simd_struct_operand" "Utv")
+ 		    (match_operand:OI 2 "register_operand" "0")
+ 		    (match_operand:SI 3 "immediate_operand" "i")
+-		    (unspec:VQ [(const_int 0)] UNSPEC_VSTRUCTDUMMY) ]
++		    (unspec:VALLDIF [(const_int 0)] UNSPEC_VSTRUCTDUMMY) ]
+ 		   UNSPEC_LD2_LANE))]
+   "TARGET_SIMD"
+-  "ld2\\t{%S0.<Vetype> - %T0.<Vetype>}[%3], %1"
++  {
++    operands[3] = GEN_INT (ENDIAN_LANE_N (<MODE>mode, INTVAL (operands[3])));
++    return "ld2\\t{%S0.<Vetype> - %T0.<Vetype>}[%3], %1";
++  }
+   [(set_attr "type" "neon_load2_one_lane")]
+ )
+ 
+@@ -3955,15 +4052,19 @@
+   [(set_attr "type" "neon_store2_2reg<q>")]
+ )
+ 
+-(define_insn "vec_store_lanesoi_lane<mode>"
+-  [(set (match_operand:<V_TWO_ELEM> 0 "aarch64_simd_struct_operand" "=Utv")
+-	(unspec:<V_TWO_ELEM> [(match_operand:OI 1 "register_operand" "w")
+-                    (unspec:VQ [(const_int 0)] UNSPEC_VSTRUCTDUMMY)
++;; RTL uses GCC vector extension indices, so flip only for assembly.
++(define_insn "aarch64_vec_store_lanesoi_lane<mode>"
++  [(set (match_operand:BLK 0 "aarch64_simd_struct_operand" "=Utv")
++	(unspec:BLK [(match_operand:OI 1 "register_operand" "w")
++		    (unspec:VALLDIF [(const_int 0)] UNSPEC_VSTRUCTDUMMY)
+ 		    (match_operand:SI 2 "immediate_operand" "i")]
+-                   UNSPEC_ST2_LANE))]
++		   UNSPEC_ST2_LANE))]
+   "TARGET_SIMD"
+-  "st2\\t{%S1.<Vetype> - %T1.<Vetype>}[%2], %0"
+-  [(set_attr "type" "neon_store3_one_lane<q>")]
++  {
++    operands[2] = GEN_INT (ENDIAN_LANE_N (<MODE>mode, INTVAL (operands[2])));
++    return "st2\\t{%S1.<Vetype> - %T1.<Vetype>}[%2], %0";
++  }
++  [(set_attr "type" "neon_store2_one_lane<q>")]
+ )
+ 
+ (define_expand "vec_store_lanesoi<mode>"
+@@ -3997,7 +4098,7 @@
+ 
+ (define_insn "aarch64_simd_ld3r<mode>"
+   [(set (match_operand:CI 0 "register_operand" "=w")
+-       (unspec:CI [(match_operand:<V_THREE_ELEM> 1 "aarch64_simd_struct_operand" "Utv")
++       (unspec:CI [(match_operand:BLK 1 "aarch64_simd_struct_operand" "Utv")
+                    (unspec:VALLDIF [(const_int 0)] UNSPEC_VSTRUCTDUMMY) ]
+                   UNSPEC_LD3_DUP))]
+   "TARGET_SIMD"
+@@ -4007,13 +4108,16 @@
+ 
+ (define_insn "aarch64_vec_load_lanesci_lane<mode>"
+   [(set (match_operand:CI 0 "register_operand" "=w")
+-	(unspec:CI [(match_operand:<V_THREE_ELEM> 1 "aarch64_simd_struct_operand" "Utv")
++	(unspec:CI [(match_operand:BLK 1 "aarch64_simd_struct_operand" "Utv")
+ 		    (match_operand:CI 2 "register_operand" "0")
+ 		    (match_operand:SI 3 "immediate_operand" "i")
+-		    (unspec:VQ [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
++		    (unspec:VALLDIF [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
+ 		   UNSPEC_LD3_LANE))]
+   "TARGET_SIMD"
+-  "ld3\\t{%S0.<Vetype> - %U0.<Vetype>}[%3], %1"
++{
++    operands[3] = GEN_INT (ENDIAN_LANE_N (<MODE>mode, INTVAL (operands[3])));
++    return "ld3\\t{%S0.<Vetype> - %U0.<Vetype>}[%3], %1";
++}
+   [(set_attr "type" "neon_load3_one_lane")]
+ )
+ 
+@@ -4046,14 +4150,18 @@
+   [(set_attr "type" "neon_store3_3reg<q>")]
+ )
+ 
+-(define_insn "vec_store_lanesci_lane<mode>"
+-  [(set (match_operand:<V_THREE_ELEM> 0 "aarch64_simd_struct_operand" "=Utv")
+-	(unspec:<V_THREE_ELEM> [(match_operand:CI 1 "register_operand" "w")
+-                    (unspec:VQ [(const_int 0)] UNSPEC_VSTRUCTDUMMY)
+-		    (match_operand:SI 2 "immediate_operand" "i")]
+-                   UNSPEC_ST3_LANE))]
++;; RTL uses GCC vector extension indices, so flip only for assembly.
++(define_insn "aarch64_vec_store_lanesci_lane<mode>"
++  [(set (match_operand:BLK 0 "aarch64_simd_struct_operand" "=Utv")
++	(unspec:BLK [(match_operand:CI 1 "register_operand" "w")
++		     (unspec:VALLDIF [(const_int 0)] UNSPEC_VSTRUCTDUMMY)
++		     (match_operand:SI 2 "immediate_operand" "i")]
++		    UNSPEC_ST3_LANE))]
+   "TARGET_SIMD"
+-  "st3\\t{%S1.<Vetype> - %U1.<Vetype>}[%2], %0"
++  {
++    operands[2] = GEN_INT (ENDIAN_LANE_N (<MODE>mode, INTVAL (operands[2])));
++    return "st3\\t{%S1.<Vetype> - %U1.<Vetype>}[%2], %0";
++  }
+   [(set_attr "type" "neon_store3_one_lane<q>")]
+ )
+ 
+@@ -4088,7 +4196,7 @@
+ 
+ (define_insn "aarch64_simd_ld4r<mode>"
+   [(set (match_operand:XI 0 "register_operand" "=w")
+-       (unspec:XI [(match_operand:<V_FOUR_ELEM> 1 "aarch64_simd_struct_operand" "Utv")
++       (unspec:XI [(match_operand:BLK 1 "aarch64_simd_struct_operand" "Utv")
+                    (unspec:VALLDIF [(const_int 0)] UNSPEC_VSTRUCTDUMMY) ]
+                   UNSPEC_LD4_DUP))]
+   "TARGET_SIMD"
+@@ -4098,13 +4206,16 @@
+ 
+ (define_insn "aarch64_vec_load_lanesxi_lane<mode>"
+   [(set (match_operand:XI 0 "register_operand" "=w")
+-	(unspec:XI [(match_operand:<V_FOUR_ELEM> 1 "aarch64_simd_struct_operand" "Utv")
++	(unspec:XI [(match_operand:BLK 1 "aarch64_simd_struct_operand" "Utv")
+ 		    (match_operand:XI 2 "register_operand" "0")
+ 		    (match_operand:SI 3 "immediate_operand" "i")
+-		    (unspec:VQ [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
++		    (unspec:VALLDIF [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
+ 		   UNSPEC_LD4_LANE))]
+   "TARGET_SIMD"
+-  "ld4\\t{%S0.<Vetype> - %V0.<Vetype>}[%3], %1"
++{
++    operands[3] = GEN_INT (ENDIAN_LANE_N (<MODE>mode, INTVAL (operands[3])));
++    return "ld4\\t{%S0.<Vetype> - %V0.<Vetype>}[%3], %1";
++}
+   [(set_attr "type" "neon_load4_one_lane")]
+ )
+ 
+@@ -4137,14 +4248,18 @@
+   [(set_attr "type" "neon_store4_4reg<q>")]
+ )
+ 
+-(define_insn "vec_store_lanesxi_lane<mode>"
+-  [(set (match_operand:<V_FOUR_ELEM> 0 "aarch64_simd_struct_operand" "=Utv")
+-	(unspec:<V_FOUR_ELEM> [(match_operand:XI 1 "register_operand" "w")
+-                    (unspec:VQ [(const_int 0)] UNSPEC_VSTRUCTDUMMY)
+-		    (match_operand:SI 2 "immediate_operand" "i")]
+-                   UNSPEC_ST4_LANE))]
++;; RTL uses GCC vector extension indices, so flip only for assembly.
++(define_insn "aarch64_vec_store_lanesxi_lane<mode>"
++  [(set (match_operand:BLK 0 "aarch64_simd_struct_operand" "=Utv")
++	(unspec:BLK [(match_operand:XI 1 "register_operand" "w")
++		     (unspec:VALLDIF [(const_int 0)] UNSPEC_VSTRUCTDUMMY)
++		     (match_operand:SI 2 "immediate_operand" "i")]
++		    UNSPEC_ST4_LANE))]
+   "TARGET_SIMD"
+-  "st4\\t{%S1.<Vetype> - %V1.<Vetype>}[%2], %0"
++  {
++    operands[2] = GEN_INT (ENDIAN_LANE_N (<MODE>mode, INTVAL (operands[2])));
++    return "st4\\t{%S1.<Vetype> - %V1.<Vetype>}[%2], %0";
++  }
+   [(set_attr "type" "neon_store4_one_lane<q>")]
+ )
+ 
+@@ -4222,8 +4337,9 @@
+ )
+ 
+ (define_insn "aarch64_be_ld1<mode>"
+-  [(set (match_operand:VALLDI 0	"register_operand" "=w")
+-	(unspec:VALLDI [(match_operand:VALLDI 1 "aarch64_simd_struct_operand" "Utv")]
++  [(set (match_operand:VALLDI_F16 0	"register_operand" "=w")
++	(unspec:VALLDI_F16 [(match_operand:VALLDI_F16 1
++			     "aarch64_simd_struct_operand" "Utv")]
+ 	UNSPEC_LD1))]
+   "TARGET_SIMD"
+   "ld1\\t{%0<Vmtype>}, %1"
+@@ -4231,8 +4347,8 @@
+ )
+ 
+ (define_insn "aarch64_be_st1<mode>"
+-  [(set (match_operand:VALLDI 0 "aarch64_simd_struct_operand" "=Utv")
+-	(unspec:VALLDI [(match_operand:VALLDI 1 "register_operand" "w")]
++  [(set (match_operand:VALLDI_F16 0 "aarch64_simd_struct_operand" "=Utv")
++	(unspec:VALLDI_F16 [(match_operand:VALLDI_F16 1 "register_operand" "w")]
+ 	UNSPEC_ST1))]
+   "TARGET_SIMD"
+   "st1\\t{%1<Vmtype>}, %0"
+@@ -4249,7 +4365,7 @@
+    #
+    stp\\t%q1, %R1, %0
+    ldp\\t%q0, %R0, %1"
+-  [(set_attr "type" "multiple,neon_store2_2reg_q,neon_load2_2reg_q")
++  [(set_attr "type" "multiple,neon_stp_q,neon_ldp_q")
+    (set (attr "length") (symbol_ref "aarch64_simd_attr_length_move (insn)"))]
+ )
+ 
+@@ -4337,42 +4453,18 @@
+     FAIL;
+ })
+ 
+-(define_expand "aarch64_ld2r<mode>"
+-  [(match_operand:OI 0 "register_operand" "=w")
++(define_expand "aarch64_ld<VSTRUCT:nregs>r<VALLDIF:mode>"
++  [(match_operand:VSTRUCT 0 "register_operand" "=w")
+    (match_operand:DI 1 "register_operand" "w")
+    (unspec:VALLDIF [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
+   "TARGET_SIMD"
+ {
+-  machine_mode mode = <V_TWO_ELEM>mode;
+-  rtx mem = gen_rtx_MEM (mode, operands[1]);
++  rtx mem = gen_rtx_MEM (BLKmode, operands[1]);
++  set_mem_size (mem, GET_MODE_SIZE (GET_MODE_INNER (<VALLDIF:MODE>mode))
++		     * <VSTRUCT:nregs>);
+ 
+-  emit_insn (gen_aarch64_simd_ld2r<mode> (operands[0], mem));
+-  DONE;
+-})
+-
+-(define_expand "aarch64_ld3r<mode>"
+-  [(match_operand:CI 0 "register_operand" "=w")
+-   (match_operand:DI 1 "register_operand" "w")
+-   (unspec:VALLDIF [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
+-  "TARGET_SIMD"
+-{
+-  machine_mode mode = <V_THREE_ELEM>mode;
+-  rtx mem = gen_rtx_MEM (mode, operands[1]);
+-
+-  emit_insn (gen_aarch64_simd_ld3r<mode> (operands[0], mem));
+-  DONE;
+-})
+-
+-(define_expand "aarch64_ld4r<mode>"
+-  [(match_operand:XI 0 "register_operand" "=w")
+-   (match_operand:DI 1 "register_operand" "w")
+-   (unspec:VALLDIF [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
+-  "TARGET_SIMD"
+-{
+-  machine_mode mode = <V_FOUR_ELEM>mode;
+-  rtx mem = gen_rtx_MEM (mode, operands[1]);
+-
+-  emit_insn (gen_aarch64_simd_ld4r<mode> (operands[0],mem));
++  emit_insn (gen_aarch64_simd_ld<VSTRUCT:nregs>r<VALLDIF:mode> (operands[0],
++								mem));
+   DONE;
+ })
+ 
+@@ -4381,8 +4473,9 @@
+ 	(subreg:OI
+ 	  (vec_concat:<VRL2>
+ 	    (vec_concat:<VDBL>
+-	     (unspec:VD [(match_operand:TI 1 "aarch64_simd_struct_operand" "Utv")]
+-			UNSPEC_LD2)
++	     (unspec:VD
++		[(match_operand:BLK 1 "aarch64_simd_struct_operand" "Utv")]
++		UNSPEC_LD2)
+ 	     (vec_duplicate:VD (const_int 0)))
+ 	    (vec_concat:<VDBL>
+ 	     (unspec:VD [(match_dup 1)]
+@@ -4398,8 +4491,9 @@
+ 	(subreg:OI
+ 	  (vec_concat:<VRL2>
+ 	    (vec_concat:<VDBL>
+-	     (unspec:DX [(match_operand:TI 1 "aarch64_simd_struct_operand" "Utv")]
+-			UNSPEC_LD2)
++	     (unspec:DX
++		[(match_operand:BLK 1 "aarch64_simd_struct_operand" "Utv")]
++		UNSPEC_LD2)
+ 	     (const_int 0))
+ 	    (vec_concat:<VDBL>
+ 	     (unspec:DX [(match_dup 1)]
+@@ -4416,8 +4510,9 @@
+ 	 (vec_concat:<VRL3>
+ 	  (vec_concat:<VRL2>
+ 	    (vec_concat:<VDBL>
+-	     (unspec:VD [(match_operand:EI 1 "aarch64_simd_struct_operand" "Utv")]
+-			UNSPEC_LD3)
++	     (unspec:VD
++		[(match_operand:BLK 1 "aarch64_simd_struct_operand" "Utv")]
++		UNSPEC_LD3)
+ 	     (vec_duplicate:VD (const_int 0)))
+ 	    (vec_concat:<VDBL>
+ 	     (unspec:VD [(match_dup 1)]
+@@ -4438,8 +4533,9 @@
+ 	 (vec_concat:<VRL3>
+ 	  (vec_concat:<VRL2>
+ 	    (vec_concat:<VDBL>
+-	     (unspec:DX [(match_operand:EI 1 "aarch64_simd_struct_operand" "Utv")]
+-			UNSPEC_LD3)
++	     (unspec:DX
++		[(match_operand:BLK 1 "aarch64_simd_struct_operand" "Utv")]
++		UNSPEC_LD3)
+ 	     (const_int 0))
+ 	    (vec_concat:<VDBL>
+ 	     (unspec:DX [(match_dup 1)]
+@@ -4460,8 +4556,9 @@
+ 	 (vec_concat:<VRL4>
+ 	   (vec_concat:<VRL2>
+ 	     (vec_concat:<VDBL>
+-	       (unspec:VD [(match_operand:OI 1 "aarch64_simd_struct_operand" "Utv")]
+-			  UNSPEC_LD4)
++	       (unspec:VD
++		[(match_operand:BLK 1 "aarch64_simd_struct_operand" "Utv")]
++		UNSPEC_LD4)
+ 	       (vec_duplicate:VD (const_int 0)))
+ 	      (vec_concat:<VDBL>
+ 	        (unspec:VD [(match_dup 1)]
+@@ -4487,8 +4584,9 @@
+ 	 (vec_concat:<VRL4>
+ 	   (vec_concat:<VRL2>
+ 	     (vec_concat:<VDBL>
+-	       (unspec:DX [(match_operand:OI 1 "aarch64_simd_struct_operand" "Utv")]
+-			  UNSPEC_LD4)
++	       (unspec:DX
++		[(match_operand:BLK 1 "aarch64_simd_struct_operand" "Utv")]
++		UNSPEC_LD4)
+ 	       (const_int 0))
+ 	      (vec_concat:<VDBL>
+ 	        (unspec:DX [(match_dup 1)]
+@@ -4514,23 +4612,23 @@
+   (unspec:VDC [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
+   "TARGET_SIMD"
+ {
+-  machine_mode mode = <VSTRUCT:VSTRUCT_DREG>mode;
+-  rtx mem = gen_rtx_MEM (mode, operands[1]);
++  rtx mem = gen_rtx_MEM (BLKmode, operands[1]);
++  set_mem_size (mem, <VSTRUCT:nregs> * 8);
+ 
+   emit_insn (gen_aarch64_ld<VSTRUCT:nregs><VDC:mode>_dreg (operands[0], mem));
+   DONE;
+ })
+ 
+-(define_expand "aarch64_ld1<VALL:mode>"
+- [(match_operand:VALL 0 "register_operand")
++(define_expand "aarch64_ld1<VALL_F16:mode>"
++ [(match_operand:VALL_F16 0 "register_operand")
+   (match_operand:DI 1 "register_operand")]
+   "TARGET_SIMD"
+ {
+-  machine_mode mode = <VALL:MODE>mode;
++  machine_mode mode = <VALL_F16:MODE>mode;
+   rtx mem = gen_rtx_MEM (mode, operands[1]);
+ 
+   if (BYTES_BIG_ENDIAN)
+-    emit_insn (gen_aarch64_be_ld1<VALL:mode> (operands[0], mem));
++    emit_insn (gen_aarch64_be_ld1<VALL_F16:mode> (operands[0], mem));
+   else
+     emit_move_insn (operands[0], mem);
+   DONE;
+@@ -4545,72 +4643,30 @@
+   machine_mode mode = <VSTRUCT:MODE>mode;
+   rtx mem = gen_rtx_MEM (mode, operands[1]);
+ 
+-  emit_insn (gen_vec_load_lanes<VSTRUCT:mode><VQ:mode> (operands[0], mem));
++  emit_insn (gen_aarch64_simd_ld<VSTRUCT:nregs><VQ:mode> (operands[0], mem));
+   DONE;
+ })
+ 
+-(define_expand "aarch64_ld2_lane<mode>"
+-  [(match_operand:OI 0 "register_operand" "=w")
++(define_expand "aarch64_ld<VSTRUCT:nregs>_lane<VALLDIF:mode>"
++  [(match_operand:VSTRUCT 0 "register_operand" "=w")
+ 	(match_operand:DI 1 "register_operand" "w")
+-	(match_operand:OI 2 "register_operand" "0")
++	(match_operand:VSTRUCT 2 "register_operand" "0")
+ 	(match_operand:SI 3 "immediate_operand" "i")
+-	(unspec:VQ [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
++	(unspec:VALLDIF [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
+   "TARGET_SIMD"
+ {
+-  machine_mode mode = <V_TWO_ELEM>mode;
+-  rtx mem = gen_rtx_MEM (mode, operands[1]);
++  rtx mem = gen_rtx_MEM (BLKmode, operands[1]);
++  set_mem_size (mem, GET_MODE_SIZE (GET_MODE_INNER (<VALLDIF:MODE>mode))
++		     * <VSTRUCT:nregs>);
+ 
+-  aarch64_simd_lane_bounds (operands[3], 0, GET_MODE_NUNITS (<VCONQ>mode),
++  aarch64_simd_lane_bounds (operands[3], 0,
++			    GET_MODE_NUNITS (<VALLDIF:MODE>mode),
+ 			    NULL);
+-  emit_insn (gen_aarch64_vec_load_lanesoi_lane<mode> (operands[0],
+-						      mem,
+-						      operands[2],
+-						      operands[3]));
++  emit_insn (gen_aarch64_vec_load_lanes<VSTRUCT:mode>_lane<VALLDIF:mode> (
++	operands[0], mem, operands[2], operands[3]));
+   DONE;
+ })
+ 
+-(define_expand "aarch64_ld3_lane<mode>"
+-  [(match_operand:CI 0 "register_operand" "=w")
+-	(match_operand:DI 1 "register_operand" "w")
+-	(match_operand:CI 2 "register_operand" "0")
+-	(match_operand:SI 3 "immediate_operand" "i")
+-	(unspec:VQ [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
+-  "TARGET_SIMD"
+-{
+-  machine_mode mode = <V_THREE_ELEM>mode;
+-  rtx mem = gen_rtx_MEM (mode, operands[1]);
+-
+-  aarch64_simd_lane_bounds (operands[3], 0, GET_MODE_NUNITS (<VCONQ>mode),
+-			    NULL);
+-  emit_insn (gen_aarch64_vec_load_lanesci_lane<mode> (operands[0],
+-						      mem,
+-						      operands[2],
+-						      operands[3]));
+-  DONE;
+-})
+-
+-(define_expand "aarch64_ld4_lane<mode>"
+-  [(match_operand:XI 0 "register_operand" "=w")
+-	(match_operand:DI 1 "register_operand" "w")
+-	(match_operand:XI 2 "register_operand" "0")
+-	(match_operand:SI 3 "immediate_operand" "i")
+-	(unspec:VQ [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
+-  "TARGET_SIMD"
+-{
+-  machine_mode mode = <V_FOUR_ELEM>mode;
+-  rtx mem = gen_rtx_MEM (mode, operands[1]);
+-
+-  aarch64_simd_lane_bounds (operands[3], 0, GET_MODE_NUNITS (<VCONQ>mode),
+-			    NULL);
+-  emit_insn (gen_aarch64_vec_load_lanesxi_lane<mode> (operands[0],
+-						      mem,
+-						      operands[2],
+-						      operands[3]));
+-  DONE;
+-})
+-
+-
+-
+ ;; Expanders for builtins to extract vector registers from large
+ ;; opaque integer modes.
+ 
+@@ -4654,9 +4710,9 @@
+ ;; vec_perm support
+ 
+ (define_expand "vec_perm_const<mode>"
+-  [(match_operand:VALL 0 "register_operand")
+-   (match_operand:VALL 1 "register_operand")
+-   (match_operand:VALL 2 "register_operand")
++  [(match_operand:VALL_F16 0 "register_operand")
++   (match_operand:VALL_F16 1 "register_operand")
++   (match_operand:VALL_F16 2 "register_operand")
+    (match_operand:<V_cmp_result> 3)]
+   "TARGET_SIMD"
+ {
+@@ -4701,6 +4757,27 @@
+   [(set_attr "type" "neon_tbl2_q")]
+ )
+ 
++(define_insn "aarch64_tbl3v8qi"
++  [(set (match_operand:V8QI 0 "register_operand" "=w")
++	(unspec:V8QI [(match_operand:OI 1 "register_operand" "w")
++		      (match_operand:V8QI 2 "register_operand" "w")]
++		      UNSPEC_TBL))]
++  "TARGET_SIMD"
++  "tbl\\t%S0.8b, {%S1.16b - %T1.16b}, %S2.8b"
++  [(set_attr "type" "neon_tbl3")]
++)
++
++(define_insn "aarch64_tbx4v8qi"
++  [(set (match_operand:V8QI 0 "register_operand" "=w")
++	(unspec:V8QI [(match_operand:V8QI 1 "register_operand" "0")
++		      (match_operand:OI 2 "register_operand" "w")
++		      (match_operand:V8QI 3 "register_operand" "w")]
++		      UNSPEC_TBX))]
++  "TARGET_SIMD"
++  "tbx\\t%S0.8b, {%S2.16b - %T2.16b}, %S3.8b"
++  [(set_attr "type" "neon_tbl4")]
++)
++
+ (define_insn_and_split "aarch64_combinev16qi"
+   [(set (match_operand:OI 0 "register_operand" "=w")
+ 	(unspec:OI [(match_operand:V16QI 1 "register_operand" "w")
+@@ -4753,8 +4830,8 @@
+ )
+ 
+ (define_insn "aarch64_st2<mode>_dreg"
+-  [(set (match_operand:TI 0 "aarch64_simd_struct_operand" "=Utv")
+-	(unspec:TI [(match_operand:OI 1 "register_operand" "w")
++  [(set (match_operand:BLK 0 "aarch64_simd_struct_operand" "=Utv")
++	(unspec:BLK [(match_operand:OI 1 "register_operand" "w")
+                     (unspec:VD [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
+                    UNSPEC_ST2))]
+   "TARGET_SIMD"
+@@ -4763,8 +4840,8 @@
+ )
+ 
+ (define_insn "aarch64_st2<mode>_dreg"
+-  [(set (match_operand:TI 0 "aarch64_simd_struct_operand" "=Utv")
+-	(unspec:TI [(match_operand:OI 1 "register_operand" "w")
++  [(set (match_operand:BLK 0 "aarch64_simd_struct_operand" "=Utv")
++	(unspec:BLK [(match_operand:OI 1 "register_operand" "w")
+                     (unspec:DX [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
+                    UNSPEC_ST2))]
+   "TARGET_SIMD"
+@@ -4773,8 +4850,8 @@
+ )
+ 
+ (define_insn "aarch64_st3<mode>_dreg"
+-  [(set (match_operand:EI 0 "aarch64_simd_struct_operand" "=Utv")
+-	(unspec:EI [(match_operand:CI 1 "register_operand" "w")
++  [(set (match_operand:BLK 0 "aarch64_simd_struct_operand" "=Utv")
++	(unspec:BLK [(match_operand:CI 1 "register_operand" "w")
+                     (unspec:VD [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
+                    UNSPEC_ST3))]
+   "TARGET_SIMD"
+@@ -4783,8 +4860,8 @@
+ )
+ 
+ (define_insn "aarch64_st3<mode>_dreg"
+-  [(set (match_operand:EI 0 "aarch64_simd_struct_operand" "=Utv")
+-	(unspec:EI [(match_operand:CI 1 "register_operand" "w")
++  [(set (match_operand:BLK 0 "aarch64_simd_struct_operand" "=Utv")
++	(unspec:BLK [(match_operand:CI 1 "register_operand" "w")
+                     (unspec:DX [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
+                    UNSPEC_ST3))]
+   "TARGET_SIMD"
+@@ -4793,8 +4870,8 @@
+ )
+ 
+ (define_insn "aarch64_st4<mode>_dreg"
+-  [(set (match_operand:OI 0 "aarch64_simd_struct_operand" "=Utv")
+-	(unspec:OI [(match_operand:XI 1 "register_operand" "w")
++  [(set (match_operand:BLK 0 "aarch64_simd_struct_operand" "=Utv")
++	(unspec:BLK [(match_operand:XI 1 "register_operand" "w")
+                     (unspec:VD [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
+                    UNSPEC_ST4))]
+   "TARGET_SIMD"
+@@ -4803,8 +4880,8 @@
+ )
+ 
+ (define_insn "aarch64_st4<mode>_dreg"
+-  [(set (match_operand:OI 0 "aarch64_simd_struct_operand" "=Utv")
+-	(unspec:OI [(match_operand:XI 1 "register_operand" "w")
++  [(set (match_operand:BLK 0 "aarch64_simd_struct_operand" "=Utv")
++	(unspec:BLK [(match_operand:XI 1 "register_operand" "w")
+                     (unspec:DX [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
+                    UNSPEC_ST4))]
+   "TARGET_SIMD"
+@@ -4818,8 +4895,8 @@
+   (unspec:VDC [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
+   "TARGET_SIMD"
+ {
+-  machine_mode mode = <VSTRUCT:VSTRUCT_DREG>mode;
+-  rtx mem = gen_rtx_MEM (mode, operands[0]);
++  rtx mem = gen_rtx_MEM (BLKmode, operands[0]);
++  set_mem_size (mem, <VSTRUCT:nregs> * 8);
+ 
+   emit_insn (gen_aarch64_st<VSTRUCT:nregs><VDC:mode>_dreg (mem, operands[1]));
+   DONE;
+@@ -4834,71 +4911,36 @@
+   machine_mode mode = <VSTRUCT:MODE>mode;
+   rtx mem = gen_rtx_MEM (mode, operands[0]);
+ 
+-  emit_insn (gen_vec_store_lanes<VSTRUCT:mode><VQ:mode> (mem, operands[1]));
+-  DONE;
+-})
+-
+-(define_expand "aarch64_st2_lane<VQ:mode>"
+- [(match_operand:DI 0 "register_operand" "r")
+-  (match_operand:OI 1 "register_operand" "w")
+-  (unspec:VQ [(const_int 0)] UNSPEC_VSTRUCTDUMMY)
+-  (match_operand:SI 2 "immediate_operand")]
+-  "TARGET_SIMD"
+-{
+-  machine_mode mode = <V_TWO_ELEM>mode;
+-  rtx mem = gen_rtx_MEM (mode, operands[0]);
+-  operands[2] = GEN_INT (ENDIAN_LANE_N (<MODE>mode, INTVAL (operands[2])));
+-
+-  emit_insn (gen_vec_store_lanesoi_lane<VQ:mode> (mem,
+-						  operands[1],
+-						  operands[2]));
++  emit_insn (gen_aarch64_simd_st<VSTRUCT:nregs><VQ:mode> (mem, operands[1]));
+   DONE;
+ })
+ 
+-(define_expand "aarch64_st3_lane<VQ:mode>"
++(define_expand "aarch64_st<VSTRUCT:nregs>_lane<VALLDIF:mode>"
+  [(match_operand:DI 0 "register_operand" "r")
+-  (match_operand:CI 1 "register_operand" "w")
+-  (unspec:VQ [(const_int 0)] UNSPEC_VSTRUCTDUMMY)
+-  (match_operand:SI 2 "immediate_operand")]
+-  "TARGET_SIMD"
+-{
+-  machine_mode mode = <V_THREE_ELEM>mode;
+-  rtx mem = gen_rtx_MEM (mode, operands[0]);
+-  operands[2] = GEN_INT (ENDIAN_LANE_N (<MODE>mode, INTVAL (operands[2])));
+-
+-  emit_insn (gen_vec_store_lanesci_lane<VQ:mode> (mem,
+-						  operands[1],
+-						  operands[2]));
+-  DONE;
+-})
+-
+-(define_expand "aarch64_st4_lane<VQ:mode>"
+- [(match_operand:DI 0 "register_operand" "r")
+-  (match_operand:XI 1 "register_operand" "w")
+-  (unspec:VQ [(const_int 0)] UNSPEC_VSTRUCTDUMMY)
++  (match_operand:VSTRUCT 1 "register_operand" "w")
++  (unspec:VALLDIF [(const_int 0)] UNSPEC_VSTRUCTDUMMY)
+   (match_operand:SI 2 "immediate_operand")]
+   "TARGET_SIMD"
+ {
+-  machine_mode mode = <V_FOUR_ELEM>mode;
+-  rtx mem = gen_rtx_MEM (mode, operands[0]);
+-  operands[2] = GEN_INT (ENDIAN_LANE_N (<MODE>mode, INTVAL (operands[2])));
++  rtx mem = gen_rtx_MEM (BLKmode, operands[0]);
++  set_mem_size (mem, GET_MODE_SIZE (GET_MODE_INNER (<VALLDIF:MODE>mode))
++		     * <VSTRUCT:nregs>);
+ 
+-  emit_insn (gen_vec_store_lanesxi_lane<VQ:mode> (mem,
+-						  operands[1],
+-						  operands[2]));
++  emit_insn (gen_aarch64_vec_store_lanes<VSTRUCT:mode>_lane<VALLDIF:mode> (
++		mem, operands[1], operands[2]));
+   DONE;
+ })
+ 
+-(define_expand "aarch64_st1<VALL:mode>"
++(define_expand "aarch64_st1<VALL_F16:mode>"
+  [(match_operand:DI 0 "register_operand")
+-  (match_operand:VALL 1 "register_operand")]
++  (match_operand:VALL_F16 1 "register_operand")]
+   "TARGET_SIMD"
+ {
+-  machine_mode mode = <VALL:MODE>mode;
++  machine_mode mode = <VALL_F16:MODE>mode;
+   rtx mem = gen_rtx_MEM (mode, operands[0]);
+ 
+   if (BYTES_BIG_ENDIAN)
+-    emit_insn (gen_aarch64_be_st1<VALL:mode> (mem, operands[1]));
++    emit_insn (gen_aarch64_be_st1<VALL_F16:mode> (mem, operands[1]));
+   else
+     emit_move_insn (mem, operands[1]);
+   DONE;
+@@ -4929,7 +4971,7 @@
+ ;; Standard pattern name vec_init<mode>.
+ 
+ (define_expand "vec_init<mode>"
+-  [(match_operand:VALL 0 "register_operand" "")
++  [(match_operand:VALL_F16 0 "register_operand" "")
+    (match_operand 1 "" "")]
+   "TARGET_SIMD"
+ {
+@@ -4938,8 +4980,8 @@
+ })
+ 
+ (define_insn "*aarch64_simd_ld1r<mode>"
+-  [(set (match_operand:VALL 0 "register_operand" "=w")
+-	(vec_duplicate:VALL
++  [(set (match_operand:VALL_F16 0 "register_operand" "=w")
++	(vec_duplicate:VALL_F16
+ 	  (match_operand:<VEL> 1 "aarch64_simd_struct_operand" "Utv")))]
+   "TARGET_SIMD"
+   "ld1r\\t{%0.<Vtype>}, %1"
+@@ -4986,7 +5028,7 @@
+ 
+ (define_expand "vec_extract<mode>"
+   [(match_operand:<VEL> 0 "aarch64_simd_nonimmediate_operand" "")
+-   (match_operand:VALL 1 "register_operand" "")
++   (match_operand:VALL_F16 1 "register_operand" "")
+    (match_operand:SI 2 "immediate_operand" "")]
+   "TARGET_SIMD"
+ {
+--- /dev/null
++++ b/src/gcc/config/aarch64/aarch64-tuning-flags.def
+@@ -0,0 +1,32 @@
++/* Copyright (C) 2015 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
++   <http://www.gnu.org/licenses/>.  */
++
++/* Additional control over certain tuning parameters.  Before including
++   this file, define a macro:
++
++     AARCH64_EXTRA_TUNING_OPTION (name, internal_name)
++
++   Where:
++
++     NAME is a string giving a friendly name for the tuning flag.
++     INTERNAL_NAME gives the internal name suitable for appending to
++     AARCH64_TUNE_ to give an enum name. */
++
++AARCH64_EXTRA_TUNING_OPTION ("rename_fma_regs", RENAME_FMA_REGS)
++
+--- a/src/gcc/config/aarch64/aarch64.c
++++ b/src/gcc/config/aarch64/aarch64.c
+@@ -75,6 +75,8 @@
+ #include "tm_p.h"
+ #include "recog.h"
+ #include "langhooks.h"
++#include "opts.h"
++#include "diagnostic.h"
+ #include "diagnostic-core.h"
+ #include "hash-table.h"
+ #include "tree-ssa-alias.h"
+@@ -95,6 +97,8 @@
+ #include "rtl-iter.h"
+ #include "tm-constrs.h"
+ #include "sched-int.h"
++#include "cortex-a57-fma-steering.h"
++#include "target-globals.h"
+ 
+ /* Defined for convenience.  */
+ #define POINTER_BYTES (POINTER_SIZE / BITS_PER_UNIT)
+@@ -166,7 +170,6 @@ static void aarch64_elf_asm_constructor (rtx, int) ATTRIBUTE_UNUSED;
+ static void aarch64_elf_asm_destructor (rtx, int) ATTRIBUTE_UNUSED;
+ static void aarch64_override_options_after_change (void);
+ static bool aarch64_vector_mode_supported_p (machine_mode);
+-static unsigned bit_count (unsigned HOST_WIDE_INT);
+ static bool aarch64_vectorize_vec_perm_const_ok (machine_mode vmode,
+ 						 const unsigned char *sel);
+ static int aarch64_address_cost (rtx, machine_mode, addr_space_t, bool);
+@@ -177,15 +180,39 @@ unsigned aarch64_architecture_version;
+ /* The processor for which instructions should be scheduled.  */
+ enum aarch64_processor aarch64_tune = cortexa53;
+ 
+-/* The current tuning set.  */
+-const struct tune_params *aarch64_tune_params;
+-
+-/* Mask to specify which instructions we are allowed to generate.  */
+-unsigned long aarch64_isa_flags = 0;
+-
+ /* Mask to specify which instruction scheduling options should be used.  */
+ unsigned long aarch64_tune_flags = 0;
+ 
++/* Support for command line parsing of boolean flags in the tuning
++   structures.  */
++struct aarch64_flag_desc
++{
++  const char* name;
++  unsigned int flag;
++};
++
++#define AARCH64_FUSION_PAIR(name, internal_name) \
++  { name, AARCH64_FUSE_##internal_name },
++static const struct aarch64_flag_desc aarch64_fusible_pairs[] =
++{
++  { "none", AARCH64_FUSE_NOTHING },
++#include "aarch64-fusion-pairs.def"
++  { "all", AARCH64_FUSE_ALL },
++  { NULL, AARCH64_FUSE_NOTHING }
++};
++#undef AARCH64_FUION_PAIR
++
++#define AARCH64_EXTRA_TUNING_OPTION(name, internal_name) \
++  { name, AARCH64_EXTRA_TUNE_##internal_name },
++static const struct aarch64_flag_desc aarch64_tuning_flags[] =
++{
++  { "none", AARCH64_EXTRA_TUNE_NONE },
++#include "aarch64-tuning-flags.def"
++  { "all", AARCH64_EXTRA_TUNE_ALL },
++  { NULL, AARCH64_EXTRA_TUNE_NONE }
++};
++#undef AARCH64_EXTRA_TUNING_OPTION
++
+ /* Tuning parameters.  */
+ 
+ static const struct cpu_addrcost_table generic_addrcost_table =
+@@ -332,12 +359,12 @@ static const struct cpu_vector_cost xgene1_vector_cost =
+   1 /* cond_not_taken_branch_cost  */
+ };
+ 
+-#define AARCH64_FUSE_NOTHING	(0)
+-#define AARCH64_FUSE_MOV_MOVK	(1 << 0)
+-#define AARCH64_FUSE_ADRP_ADD	(1 << 1)
+-#define AARCH64_FUSE_MOVK_MOVK	(1 << 2)
+-#define AARCH64_FUSE_ADRP_LDR	(1 << 3)
+-#define AARCH64_FUSE_CMP_BRANCH	(1 << 4)
++/* Generic costs for branch instructions.  */
++static const struct cpu_branch_cost generic_branch_cost =
++{
++  2,  /* Predictable.  */
++  2   /* Unpredictable.  */
++};
+ 
+ static const struct tune_params generic_tunings =
+ {
+@@ -345,15 +372,19 @@ static const struct tune_params generic_tunings =
+   &generic_addrcost_table,
+   &generic_regmove_cost,
+   &generic_vector_cost,
++  &generic_branch_cost,
+   4, /* memmov_cost  */
+   2, /* issue_rate  */
+-  AARCH64_FUSE_NOTHING, /* fuseable_ops  */
++  AARCH64_FUSE_NOTHING, /* fusible_ops  */
+   8,	/* function_align.  */
+   8,	/* jump_align.  */
+   4,	/* loop_align.  */
+   2,	/* int_reassoc_width.  */
+   4,	/* fp_reassoc_width.  */
+-  1	/* vec_reassoc_width.  */
++  1,	/* vec_reassoc_width.  */
++  2,	/* min_div_recip_mul_sf.  */
++  2,	/* min_div_recip_mul_df.  */
++  (AARCH64_EXTRA_TUNE_NONE)	/* tune_flags.  */
+ };
+ 
+ static const struct tune_params cortexa53_tunings =
+@@ -362,16 +393,20 @@ static const struct tune_params cortexa53_tunings =
+   &generic_addrcost_table,
+   &cortexa53_regmove_cost,
+   &generic_vector_cost,
++  &generic_branch_cost,
+   4, /* memmov_cost  */
+   2, /* issue_rate  */
+   (AARCH64_FUSE_MOV_MOVK | AARCH64_FUSE_ADRP_ADD
+-   | AARCH64_FUSE_MOVK_MOVK | AARCH64_FUSE_ADRP_LDR), /* fuseable_ops  */
++   | AARCH64_FUSE_MOVK_MOVK | AARCH64_FUSE_ADRP_LDR), /* fusible_ops  */
+   8,	/* function_align.  */
+   8,	/* jump_align.  */
+   4,	/* loop_align.  */
+   2,	/* int_reassoc_width.  */
+   4,	/* fp_reassoc_width.  */
+-  1	/* vec_reassoc_width.  */
++  1,	/* vec_reassoc_width.  */
++  2,	/* min_div_recip_mul_sf.  */
++  2,	/* min_div_recip_mul_df.  */
++  (AARCH64_EXTRA_TUNE_NONE)	/* tune_flags.  */
+ };
+ 
+ static const struct tune_params cortexa57_tunings =
+@@ -380,16 +415,42 @@ static const struct tune_params cortexa57_tunings =
+   &cortexa57_addrcost_table,
+   &cortexa57_regmove_cost,
+   &cortexa57_vector_cost,
++  &generic_branch_cost,
++  4, /* memmov_cost  */
++  3, /* issue_rate  */
++  (AARCH64_FUSE_MOV_MOVK | AARCH64_FUSE_ADRP_ADD
++   | AARCH64_FUSE_MOVK_MOVK), /* fusible_ops  */
++  16,	/* function_align.  */
++  8,	/* jump_align.  */
++  4,	/* loop_align.  */
++  2,	/* int_reassoc_width.  */
++  4,	/* fp_reassoc_width.  */
++  1,	/* vec_reassoc_width.  */
++  2,	/* min_div_recip_mul_sf.  */
++  2,	/* min_div_recip_mul_df.  */
++  (AARCH64_EXTRA_TUNE_RENAME_FMA_REGS)	/* tune_flags.  */
++};
++
++static const struct tune_params cortexa72_tunings =
++{
++  &cortexa57_extra_costs,
++  &cortexa57_addrcost_table,
++  &cortexa57_regmove_cost,
++  &cortexa57_vector_cost,
++  &generic_branch_cost,
+   4, /* memmov_cost  */
+   3, /* issue_rate  */
+   (AARCH64_FUSE_MOV_MOVK | AARCH64_FUSE_ADRP_ADD
+-   | AARCH64_FUSE_MOVK_MOVK), /* fuseable_ops  */
++   | AARCH64_FUSE_MOVK_MOVK), /* fusible_ops  */
+   16,	/* function_align.  */
+   8,	/* jump_align.  */
+   4,	/* loop_align.  */
+   2,	/* int_reassoc_width.  */
+   4,	/* fp_reassoc_width.  */
+-  1	/* vec_reassoc_width.  */
++  1,	/* vec_reassoc_width.  */
++  2,	/* min_div_recip_mul_sf.  */
++  2,	/* min_div_recip_mul_df.  */
++  (AARCH64_EXTRA_TUNE_NONE)	/* tune_flags.  */
+ };
+ 
+ static const struct tune_params thunderx_tunings =
+@@ -398,15 +459,19 @@ static const struct tune_params thunderx_tunings =
+   &generic_addrcost_table,
+   &thunderx_regmove_cost,
+   &generic_vector_cost,
++  &generic_branch_cost,
+   6, /* memmov_cost  */
+   2, /* issue_rate  */
+-  AARCH64_FUSE_CMP_BRANCH, /* fuseable_ops  */
++  AARCH64_FUSE_CMP_BRANCH, /* fusible_ops  */
+   8,	/* function_align.  */
+   8,	/* jump_align.  */
+   8,	/* loop_align.  */
+   2,	/* int_reassoc_width.  */
+   4,	/* fp_reassoc_width.  */
+-  1	/* vec_reassoc_width.  */
++  1,	/* vec_reassoc_width.  */
++  2,	/* min_div_recip_mul_sf.  */
++  2,	/* min_div_recip_mul_df.  */
++  (AARCH64_EXTRA_TUNE_NONE)	/* tune_flags.  */
+ };
+ 
+ static const struct tune_params xgene1_tunings =
+@@ -415,55 +480,85 @@ static const struct tune_params xgene1_tunings =
+   &xgene1_addrcost_table,
+   &xgene1_regmove_cost,
+   &xgene1_vector_cost,
++  &generic_branch_cost,
+   6, /* memmov_cost  */
+   4, /* issue_rate  */
+-  AARCH64_FUSE_NOTHING, /* fuseable_ops  */
++  AARCH64_FUSE_NOTHING, /* fusible_ops  */
+   16,	/* function_align.  */
+   8,	/* jump_align.  */
+   16,	/* loop_align.  */
+   2,	/* int_reassoc_width.  */
+   4,	/* fp_reassoc_width.  */
+-  1	/* vec_reassoc_width.  */
++  1,	/* vec_reassoc_width.  */
++  2,	/* min_div_recip_mul_sf.  */
++  2,	/* min_div_recip_mul_df.  */
++  (AARCH64_EXTRA_TUNE_NONE)	/* tune_flags.  */
++};
++
++/* Support for fine-grained override of the tuning structures.  */
++struct aarch64_tuning_override_function
++{
++  const char* name;
++  void (*parse_override)(const char*, struct tune_params*);
++};
++
++static void aarch64_parse_fuse_string (const char*, struct tune_params*);
++static void aarch64_parse_tune_string (const char*, struct tune_params*);
++
++static const struct aarch64_tuning_override_function
++aarch64_tuning_override_functions[] =
++{
++  { "fuse", aarch64_parse_fuse_string },
++  { "tune", aarch64_parse_tune_string },
++  { NULL, NULL }
+ };
+ 
+ /* A processor implementing AArch64.  */
+ struct processor
+ {
+   const char *const name;
+-  enum aarch64_processor core;
+-  const char *arch;
++  enum aarch64_processor ident;
++  enum aarch64_processor sched_core;
++  enum aarch64_arch arch;
+   unsigned architecture_version;
+   const unsigned long flags;
+   const struct tune_params *const tune;
+ };
+ 
++/* Architectures implementing AArch64.  */
++static const struct processor all_architectures[] =
++{
++#define AARCH64_ARCH(NAME, CORE, ARCH_IDENT, ARCH_REV, FLAGS) \
++  {NAME, CORE, CORE, AARCH64_ARCH_##ARCH_IDENT, ARCH_REV, FLAGS, NULL},
++#include "aarch64-arches.def"
++#undef AARCH64_ARCH
++  {NULL, aarch64_none, aarch64_none, aarch64_no_arch, 0, 0, NULL}
++};
++
+ /* Processor cores implementing AArch64.  */
+ static const struct processor all_cores[] =
+ {
+-#define AARCH64_CORE(NAME, IDENT, SCHED, ARCH, FLAGS, COSTS) \
+-  {NAME, SCHED, #ARCH, ARCH, FLAGS, &COSTS##_tunings},
++#define AARCH64_CORE(NAME, IDENT, SCHED, ARCH, FLAGS, COSTS, IMP, PART) \
++  {NAME, IDENT, SCHED, AARCH64_ARCH_##ARCH,				\
++  all_architectures[AARCH64_ARCH_##ARCH].architecture_version,	\
++  FLAGS, &COSTS##_tunings},
+ #include "aarch64-cores.def"
+ #undef AARCH64_CORE
+-  {"generic", cortexa53, "8", 8, AARCH64_FL_FOR_ARCH8, &generic_tunings},
+-  {NULL, aarch64_none, NULL, 0, 0, NULL}
++  {"generic", generic, cortexa53, AARCH64_ARCH_8A, 8,
++    AARCH64_FL_FOR_ARCH8, &generic_tunings},
++  {NULL, aarch64_none, aarch64_none, aarch64_no_arch, 0, 0, NULL}
+ };
+ 
+-/* Architectures implementing AArch64.  */
+-static const struct processor all_architectures[] =
+-{
+-#define AARCH64_ARCH(NAME, CORE, ARCH, FLAGS) \
+-  {NAME, CORE, #ARCH, ARCH, FLAGS, NULL},
+-#include "aarch64-arches.def"
+-#undef AARCH64_ARCH
+-  {NULL, aarch64_none, NULL, 0, 0, NULL}
+-};
+ 
+-/* Target specification.  These are populated as commandline arguments
+-   are processed, or NULL if not specified.  */
++/* Target specification.  These are populated by the -march, -mtune, -mcpu
++   handling code or by target attributes.  */
+ static const struct processor *selected_arch;
+ static const struct processor *selected_cpu;
+ static const struct processor *selected_tune;
+ 
++/* The current tuning set.  */
++struct tune_params aarch64_tune_params = generic_tunings;
++
+ #define AARCH64_CPU_DEFAULT_FLAGS ((selected_cpu) ? selected_cpu->flags : 0)
+ 
+ /* An ISA extension in the co-processor and main instruction set space.  */
+@@ -477,7 +572,7 @@ struct aarch64_option_extension
+ /* ISA extensions in AArch64.  */
+ static const struct aarch64_option_extension all_extensions[] =
+ {
+-#define AARCH64_OPT_EXTENSION(NAME, FLAGS_ON, FLAGS_OFF) \
++#define AARCH64_OPT_EXTENSION(NAME, FLAGS_ON, FLAGS_OFF, FEATURE_STRING) \
+   {NAME, FLAGS_ON, FLAGS_OFF},
+ #include "aarch64-option-extensions.def"
+ #undef AARCH64_OPT_EXTENSION
+@@ -488,12 +583,6 @@ static const struct aarch64_option_extension all_extensions[] =
+    increment address.  */
+ static machine_mode aarch64_memory_reference_mode;
+ 
+-/* A table of valid AArch64 "bitmask immediate" values for
+-   logical instructions.  */
+-
+-#define AARCH64_NUM_BITMASKS  5334
+-static unsigned HOST_WIDE_INT aarch64_bitmasks[AARCH64_NUM_BITMASKS];
+-
+ typedef enum aarch64_cond_code
+ {
+   AARCH64_EQ = 0, AARCH64_NE, AARCH64_CS, AARCH64_CC, AARCH64_MI, AARCH64_PL,
+@@ -511,10 +600,22 @@ static const char * const aarch64_condition_codes[] =
+   "hi", "ls", "ge", "lt", "gt", "le", "al", "nv"
+ };
+ 
++void
++aarch64_err_no_fpadvsimd (machine_mode mode, const char *msg)
++{
++  const char *mc = FLOAT_MODE_P (mode) ? "floating-point" : "vector";
++  if (TARGET_GENERAL_REGS_ONLY)
++    error ("%qs is incompatible with %s %s", "-mgeneral-regs-only", mc, msg);
++  else
++    error ("%qs feature modifier is incompatible with %s %s", "+nofp", mc, msg);
++}
++
+ static unsigned int
+-aarch64_min_divisions_for_recip_mul (enum machine_mode mode ATTRIBUTE_UNUSED)
++aarch64_min_divisions_for_recip_mul (enum machine_mode mode)
+ {
+-  return 2;
++  if (GET_MODE_UNIT_SIZE (mode) == 4)
++    return aarch64_tune_params.min_div_recip_mul_sf;
++  return aarch64_tune_params.min_div_recip_mul_df;
+ }
+ 
+ static int
+@@ -522,11 +623,11 @@ aarch64_reassociation_width (unsigned opc ATTRIBUTE_UNUSED,
+ 			     enum machine_mode mode)
+ {
+   if (VECTOR_MODE_P (mode))
+-    return aarch64_tune_params->vec_reassoc_width;
++    return aarch64_tune_params.vec_reassoc_width;
+   if (INTEGRAL_MODE_P (mode))
+-    return aarch64_tune_params->int_reassoc_width;
++    return aarch64_tune_params.int_reassoc_width;
+   if (FLOAT_MODE_P (mode))
+-    return aarch64_tune_params->fp_reassoc_width;
++    return aarch64_tune_params.fp_reassoc_width;
+   return 1;
+ }
+ 
+@@ -567,7 +668,8 @@ aarch64_array_mode_supported_p (machine_mode mode,
+ 				unsigned HOST_WIDE_INT nelems)
+ {
+   if (TARGET_SIMD
+-      && AARCH64_VALID_SIMD_QREG_MODE (mode)
++      && (AARCH64_VALID_SIMD_QREG_MODE (mode)
++	  || AARCH64_VALID_SIMD_DREG_MODE (mode))
+       && (nelems >= 2 && nelems <= 4))
+     return true;
+ 
+@@ -908,14 +1010,14 @@ aarch64_load_symref_appropriately (rtx dest, rtx imm,
+ 	return;
+       }
+ 
+-    case SYMBOL_SMALL_TPREL:
++    case SYMBOL_TLSLE:
+       {
+ 	rtx tp = aarch64_load_tp (NULL);
+ 
+ 	if (GET_MODE (dest) != Pmode)
+ 	  tp = gen_lowpart (GET_MODE (dest), tp);
+ 
+-	emit_insn (gen_tlsle_small (dest, tp, imm));
++	emit_insn (gen_tlsle (dest, tp, imm));
+ 	set_unique_reg_note (get_last_insn (), REG_EQUIV, imm);
+ 	return;
+       }
+@@ -1052,6 +1154,9 @@ aarch64_split_simd_combine (rtx dst, rtx src1, rtx src2)
+ 	case V2SImode:
+ 	  gen = gen_aarch64_simd_combinev2si;
+ 	  break;
++	case V4HFmode:
++	  gen = gen_aarch64_simd_combinev4hf;
++	  break;
+ 	case V2SFmode:
+ 	  gen = gen_aarch64_simd_combinev2sf;
+ 	  break;
+@@ -1100,6 +1205,9 @@ aarch64_split_simd_move (rtx dst, rtx src)
+ 	case V2DImode:
+ 	  gen = gen_aarch64_split_simd_movv2di;
+ 	  break;
++	case V8HFmode:
++	  gen = gen_aarch64_split_simd_movv8hf;
++	  break;
+ 	case V4SFmode:
+ 	  gen = gen_aarch64_split_simd_movv4sf;
+ 	  break;
+@@ -1149,268 +1257,95 @@ static int
+ aarch64_internal_mov_immediate (rtx dest, rtx imm, bool generate,
+ 				machine_mode mode)
+ {
+-  unsigned HOST_WIDE_INT mask;
+   int i;
+-  bool first;
+-  unsigned HOST_WIDE_INT val;
+-  bool subtargets;
+-  rtx subtarget;
+-  int one_match, zero_match, first_not_ffff_match;
+-  int num_insns = 0;
++  unsigned HOST_WIDE_INT val, val2, mask;
++  int one_match, zero_match;
++  int num_insns;
+ 
+-  if (CONST_INT_P (imm) && aarch64_move_imm (INTVAL (imm), mode))
++  val = INTVAL (imm);
++
++  if (aarch64_move_imm (val, mode))
+     {
+       if (generate)
+ 	emit_insn (gen_rtx_SET (VOIDmode, dest, imm));
+-      num_insns++;
+-      return num_insns;
++      return 1;
+     }
+ 
+-  if (mode == SImode)
++  if ((val >> 32) == 0 || mode == SImode)
+     {
+-      /* We know we can't do this in 1 insn, and we must be able to do it
+-	 in two; so don't mess around looking for sequences that don't buy
+-	 us anything.  */
+       if (generate)
+ 	{
+-	  emit_insn (gen_rtx_SET (VOIDmode, dest,
+-				  GEN_INT (INTVAL (imm) & 0xffff)));
+-	  emit_insn (gen_insv_immsi (dest, GEN_INT (16),
+-				     GEN_INT ((INTVAL (imm) >> 16) & 0xffff)));
++	  emit_insn (gen_rtx_SET (VOIDmode, dest, GEN_INT (val & 0xffff)));
++	  if (mode == SImode)
++	    emit_insn (gen_insv_immsi (dest, GEN_INT (16),
++				       GEN_INT ((val >> 16) & 0xffff)));
++	  else
++	    emit_insn (gen_insv_immdi (dest, GEN_INT (16),
++				       GEN_INT ((val >> 16) & 0xffff)));
+ 	}
+-      num_insns += 2;
+-      return num_insns;
++      return 2;
+     }
+ 
+   /* Remaining cases are all for DImode.  */
+ 
+-  val = INTVAL (imm);
+-  subtargets = optimize && can_create_pseudo_p ();
+-
+-  one_match = 0;
+-  zero_match = 0;
+   mask = 0xffff;
+-  first_not_ffff_match = -1;
+-
+-  for (i = 0; i < 64; i += 16, mask <<= 16)
+-    {
+-      if ((val & mask) == mask)
+-	one_match++;
+-      else
+-	{
+-	  if (first_not_ffff_match < 0)
+-	    first_not_ffff_match = i;
+-	  if ((val & mask) == 0)
+-	    zero_match++;
+-	}
+-    }
+-
+-  if (one_match == 2)
+-    {
+-      /* Set one of the quarters and then insert back into result.  */
+-      mask = 0xffffll << first_not_ffff_match;
+-      if (generate)
+-	{
+-	  emit_insn (gen_rtx_SET (VOIDmode, dest, GEN_INT (val | mask)));
+-	  emit_insn (gen_insv_immdi (dest, GEN_INT (first_not_ffff_match),
+-				     GEN_INT ((val >> first_not_ffff_match)
+-					      & 0xffff)));
+-	}
+-      num_insns += 2;
+-      return num_insns;
+-    }
+-
+-  if (zero_match == 2)
+-    goto simple_sequence;
++  zero_match = ((val & mask) == 0) + ((val & (mask << 16)) == 0) +
++    ((val & (mask << 32)) == 0) + ((val & (mask << 48)) == 0);
++  one_match = ((~val & mask) == 0) + ((~val & (mask << 16)) == 0) +
++    ((~val & (mask << 32)) == 0) + ((~val & (mask << 48)) == 0);
+ 
+-  mask = 0x0ffff0000UL;
+-  for (i = 16; i < 64; i += 16, mask <<= 16)
++  if (zero_match != 2 && one_match != 2)
+     {
+-      HOST_WIDE_INT comp = mask & ~(mask - 1);
++      /* Try emitting a bitmask immediate with a movk replacing 16 bits.
++	 For a 64-bit bitmask try whether changing 16 bits to all ones or
++	 zeroes creates a valid bitmask.  To check any repeated bitmask,
++	 try using 16 bits from the other 32-bit half of val.  */
+ 
+-      if (aarch64_uimm12_shift (val - (val & mask)))
++      for (i = 0; i < 64; i += 16, mask <<= 16)
+ 	{
+-	  if (generate)
+-	    {
+-	      subtarget = subtargets ? gen_reg_rtx (DImode) : dest;
+-	      emit_insn (gen_rtx_SET (VOIDmode, subtarget,
+-				      GEN_INT (val & mask)));
+-	      emit_insn (gen_adddi3 (dest, subtarget,
+-				     GEN_INT (val - (val & mask))));
+-	    }
+-	  num_insns += 2;
+-	  return num_insns;
+-	}
+-      else if (aarch64_uimm12_shift (-(val - ((val + comp) & mask))))
+-	{
+-	  if (generate)
+-	    {
+-	      subtarget = subtargets ? gen_reg_rtx (DImode) : dest;
+-	      emit_insn (gen_rtx_SET (VOIDmode, subtarget,
+-				      GEN_INT ((val + comp) & mask)));
+-	      emit_insn (gen_adddi3 (dest, subtarget,
+-				     GEN_INT (val - ((val + comp) & mask))));
+-	    }
+-	  num_insns += 2;
+-	  return num_insns;
+-	}
+-      else if (aarch64_uimm12_shift (val - ((val - comp) | ~mask)))
+-	{
+-	  if (generate)
+-	    {
+-	      subtarget = subtargets ? gen_reg_rtx (DImode) : dest;
+-	      emit_insn (gen_rtx_SET (VOIDmode, subtarget,
+-				      GEN_INT ((val - comp) | ~mask)));
+-	      emit_insn (gen_adddi3 (dest, subtarget,
+-				     GEN_INT (val - ((val - comp) | ~mask))));
+-	    }
+-	  num_insns += 2;
+-	  return num_insns;
+-	}
+-      else if (aarch64_uimm12_shift (-(val - (val | ~mask))))
+-	{
+-	  if (generate)
+-	    {
+-	      subtarget = subtargets ? gen_reg_rtx (DImode) : dest;
+-	      emit_insn (gen_rtx_SET (VOIDmode, subtarget,
+-				      GEN_INT (val | ~mask)));
+-	      emit_insn (gen_adddi3 (dest, subtarget,
+-				     GEN_INT (val - (val | ~mask))));
+-	    }
+-	  num_insns += 2;
+-	  return num_insns;
++	  val2 = val & ~mask;
++	  if (val2 != val && aarch64_bitmask_imm (val2, mode))
++	    break;
++	  val2 = val | mask;
++	  if (val2 != val && aarch64_bitmask_imm (val2, mode))
++	    break;
++	  val2 = val2 & ~mask;
++	  val2 = val2 | (((val2 >> 32) | (val2 << 32)) & mask);
++	  if (val2 != val && aarch64_bitmask_imm (val2, mode))
++	    break;
+ 	}
+-    }
+-
+-  /* See if we can do it by arithmetically combining two
+-     immediates.  */
+-  for (i = 0; i < AARCH64_NUM_BITMASKS; i++)
+-    {
+-      int j;
+-      mask = 0xffff;
+-
+-      if (aarch64_uimm12_shift (val - aarch64_bitmasks[i])
+-	  || aarch64_uimm12_shift (-val + aarch64_bitmasks[i]))
++      if (i != 64)
+ 	{
+ 	  if (generate)
+ 	    {
+-	      subtarget = subtargets ? gen_reg_rtx (DImode) : dest;
+-	      emit_insn (gen_rtx_SET (VOIDmode, subtarget,
+-				      GEN_INT (aarch64_bitmasks[i])));
+-	      emit_insn (gen_adddi3 (dest, subtarget,
+-				     GEN_INT (val - aarch64_bitmasks[i])));
+-	    }
+-	  num_insns += 2;
+-	  return num_insns;
+-	}
+-
+-      for (j = 0; j < 64; j += 16, mask <<= 16)
+-	{
+-	  if ((aarch64_bitmasks[i] & ~mask) == (val & ~mask))
+-	    {
+-	      if (generate)
+-		{
+-		  emit_insn (gen_rtx_SET (VOIDmode, dest,
+-					  GEN_INT (aarch64_bitmasks[i])));
+-		  emit_insn (gen_insv_immdi (dest, GEN_INT (j),
+-					     GEN_INT ((val >> j) & 0xffff)));
+-		}
+-	      num_insns += 2;
+-	      return num_insns;
++	      emit_insn (gen_rtx_SET (VOIDmode, dest, GEN_INT (val2)));
++	      emit_insn (gen_insv_immdi (dest, GEN_INT (i),
++					 GEN_INT ((val >> i) & 0xffff)));
+ 	    }
+ 	}
+     }
+ 
+-  /* See if we can do it by logically combining two immediates.  */
+-  for (i = 0; i < AARCH64_NUM_BITMASKS; i++)
+-    {
+-      if ((aarch64_bitmasks[i] & val) == aarch64_bitmasks[i])
+-	{
+-	  int j;
+-
+-	  for (j = i + 1; j < AARCH64_NUM_BITMASKS; j++)
+-	    if (val == (aarch64_bitmasks[i] | aarch64_bitmasks[j]))
+-	      {
+-		if (generate)
+-		  {
+-		    subtarget = subtargets ? gen_reg_rtx (mode) : dest;
+-		    emit_insn (gen_rtx_SET (VOIDmode, subtarget,
+-					    GEN_INT (aarch64_bitmasks[i])));
+-		    emit_insn (gen_iordi3 (dest, subtarget,
+-					   GEN_INT (aarch64_bitmasks[j])));
+-		  }
+-		num_insns += 2;
+-		return num_insns;
+-	      }
+-	}
+-      else if ((val & aarch64_bitmasks[i]) == val)
+-	{
+-	  int j;
++  /* Generate 2-4 instructions, skipping 16 bits of all zeroes or ones which
++     are emitted by the initial mov.  If one_match > zero_match, skip set bits,
++     otherwise skip zero bits.  */
+ 
+-	  for (j = i + 1; j < AARCH64_NUM_BITMASKS; j++)
+-	    if (val == (aarch64_bitmasks[j] & aarch64_bitmasks[i]))
+-	      {
+-		if (generate)
+-		  {
+-		    subtarget = subtargets ? gen_reg_rtx (mode) : dest;
+-		    emit_insn (gen_rtx_SET (VOIDmode, subtarget,
+-					    GEN_INT (aarch64_bitmasks[j])));
+-		    emit_insn (gen_anddi3 (dest, subtarget,
+-					   GEN_INT (aarch64_bitmasks[i])));
+-		  }
+-		num_insns += 2;
+-		return num_insns;
+-	      }
+-	}
+-    }
++  num_insns = 1;
++  mask = 0xffff;
++  val2 = one_match > zero_match ? ~val : val;
++  i = (val2 & mask) != 0 ? 0 : (val2 & (mask << 16)) != 0 ? 16 : 32;
+ 
+-  if (one_match > zero_match)
++  if (generate)
++    emit_insn (gen_rtx_SET (VOIDmode, dest, GEN_INT (one_match > zero_match
++						    ? (val | ~(mask << i))
++						    : (val & (mask << i)))));
++  for (i += 16; i < 64; i += 16)
+     {
+-      /* Set either first three quarters or all but the third.	 */
+-      mask = 0xffffll << (16 - first_not_ffff_match);
++      if ((val2 & (mask << i)) == 0)
++	continue;
+       if (generate)
+-	emit_insn (gen_rtx_SET (VOIDmode, dest,
+-				GEN_INT (val | mask | 0xffffffff00000000ull)));
++	emit_insn (gen_insv_immdi (dest, GEN_INT (i),
++				   GEN_INT ((val >> i) & 0xffff)));
+       num_insns ++;
+-
+-      /* Now insert other two quarters.	 */
+-      for (i = first_not_ffff_match + 16, mask <<= (first_not_ffff_match << 1);
+-	   i < 64; i += 16, mask <<= 16)
+-	{
+-	  if ((val & mask) != mask)
+-	    {
+-	      if (generate)
+-		emit_insn (gen_insv_immdi (dest, GEN_INT (i),
+-					   GEN_INT ((val >> i) & 0xffff)));
+-	      num_insns ++;
+-	    }
+-	}
+-      return num_insns;
+-    }
+-
+- simple_sequence:
+-  first = true;
+-  mask = 0xffff;
+-  for (i = 0; i < 64; i += 16, mask <<= 16)
+-    {
+-      if ((val & mask) != 0)
+-	{
+-	  if (first)
+-	    {
+-	      if (generate)
+-		emit_insn (gen_rtx_SET (VOIDmode, dest,
+-					GEN_INT (val & mask)));
+-	      num_insns ++;
+-	      first = false;
+-	    }
+-	  else
+-	    {
+-	      if (generate)
+-		emit_insn (gen_insv_immdi (dest, GEN_INT (i),
+-					   GEN_INT ((val >> i) & 0xffff)));
+-	      num_insns ++;
+-	    }
+-	}
+     }
+ 
+   return num_insns;
+@@ -1471,9 +1406,9 @@ aarch64_expand_mov_immediate (rtx dest, rtx imm)
+ 	    }
+ 	  /* FALLTHRU */
+ 
+-        case SYMBOL_SMALL_TPREL:
+ 	case SYMBOL_SMALL_ABSOLUTE:
+ 	case SYMBOL_TINY_ABSOLUTE:
++	case SYMBOL_TLSLE:
+ 	  aarch64_load_symref_appropriately (dest, imm, sty);
+ 	  return;
+ 
+@@ -1763,6 +1698,9 @@ aarch64_layout_arg (cumulative_args_t pcum_v, machine_mode mode,
+      and homogenous short-vector aggregates (HVA).  */
+   if (allocate_nvrn)
+     {
++      if (!TARGET_FLOAT)
++	aarch64_err_no_fpadvsimd (mode, "argument");
++
+       if (nvrn + nregs <= NUM_FP_ARG_REGS)
+ 	{
+ 	  pcum->aapcs_nextnvrn = nvrn + nregs;
+@@ -1889,6 +1827,17 @@ aarch64_init_cumulative_args (CUMULATIVE_ARGS *pcum,
+   pcum->aapcs_stack_words = 0;
+   pcum->aapcs_stack_size = 0;
+ 
++  if (!TARGET_FLOAT
++      && fndecl && TREE_PUBLIC (fndecl)
++      && fntype && fntype != error_mark_node)
++    {
++      const_tree type = TREE_TYPE (fntype);
++      machine_mode mode ATTRIBUTE_UNUSED; /* To pass pointer as argument.  */
++      int nregs ATTRIBUTE_UNUSED; /* Likewise.  */
++      if (aarch64_vfp_is_call_or_return_candidate (TYPE_MODE (type), type,
++						   &mode, &nregs, NULL))
++	aarch64_err_no_fpadvsimd (TYPE_MODE (type), "return type");
++    }
+   return;
+ }
+ 
+@@ -2992,67 +2941,6 @@ aarch64_tls_referenced_p (rtx x)
+ }
+ 
+ 
+-static int
+-aarch64_bitmasks_cmp (const void *i1, const void *i2)
+-{
+-  const unsigned HOST_WIDE_INT *imm1 = (const unsigned HOST_WIDE_INT *) i1;
+-  const unsigned HOST_WIDE_INT *imm2 = (const unsigned HOST_WIDE_INT *) i2;
+-
+-  if (*imm1 < *imm2)
+-    return -1;
+-  if (*imm1 > *imm2)
+-    return +1;
+-  return 0;
+-}
+-
+-
+-static void
+-aarch64_build_bitmask_table (void)
+-{
+-  unsigned HOST_WIDE_INT mask, imm;
+-  unsigned int log_e, e, s, r;
+-  unsigned int nimms = 0;
+-
+-  for (log_e = 1; log_e <= 6; log_e++)
+-    {
+-      e = 1 << log_e;
+-      if (e == 64)
+-	mask = ~(HOST_WIDE_INT) 0;
+-      else
+-	mask = ((HOST_WIDE_INT) 1 << e) - 1;
+-      for (s = 1; s < e; s++)
+-	{
+-	  for (r = 0; r < e; r++)
+-	    {
+-	      /* set s consecutive bits to 1 (s < 64) */
+-	      imm = ((unsigned HOST_WIDE_INT)1 << s) - 1;
+-	      /* rotate right by r */
+-	      if (r != 0)
+-		imm = ((imm >> r) | (imm << (e - r))) & mask;
+-	      /* replicate the constant depending on SIMD size */
+-	      switch (log_e) {
+-	      case 1: imm |= (imm <<  2);
+-	      case 2: imm |= (imm <<  4);
+-	      case 3: imm |= (imm <<  8);
+-	      case 4: imm |= (imm << 16);
+-	      case 5: imm |= (imm << 32);
+-	      case 6:
+-		break;
+-	      default:
+-		gcc_unreachable ();
+-	      }
+-	      gcc_assert (nimms < AARCH64_NUM_BITMASKS);
+-	      aarch64_bitmasks[nimms++] = imm;
+-	    }
+-	}
+-    }
+-
+-  gcc_assert (nimms == AARCH64_NUM_BITMASKS);
+-  qsort (aarch64_bitmasks, nimms, sizeof (aarch64_bitmasks[0]),
+-	 aarch64_bitmasks_cmp);
+-}
+-
+-
+ /* Return true if val can be encoded as a 12-bit unsigned immediate with
+    a left shift of 0 or 12 bits.  */
+ bool
+@@ -3084,19 +2972,63 @@ aarch64_movw_imm (HOST_WIDE_INT val, machine_mode mode)
+ 	  || (val & (((HOST_WIDE_INT) 0xffff) << 16)) == val);
+ }
+ 
++/* Multipliers for repeating bitmasks of width 32, 16, 8, 4, and 2.  */
++
++static const unsigned HOST_WIDE_INT bitmask_imm_mul[] =
++  {
++    0x0000000100000001ull,
++    0x0001000100010001ull,
++    0x0101010101010101ull,
++    0x1111111111111111ull,
++    0x5555555555555555ull,
++  };
++
+ 
+ /* Return true if val is a valid bitmask immediate.  */
++
+ bool
+-aarch64_bitmask_imm (HOST_WIDE_INT val, machine_mode mode)
++aarch64_bitmask_imm (HOST_WIDE_INT val_in, machine_mode mode)
+ {
+-  if (GET_MODE_SIZE (mode) < 8)
+-    {
+-      /* Replicate bit pattern.  */
+-      val &= (HOST_WIDE_INT) 0xffffffff;
+-      val |= val << 32;
+-    }
+-  return bsearch (&val, aarch64_bitmasks, AARCH64_NUM_BITMASKS,
+-		  sizeof (aarch64_bitmasks[0]), aarch64_bitmasks_cmp) != NULL;
++  unsigned HOST_WIDE_INT val, tmp, mask, first_one, next_one;
++  int bits;
++
++  /* Check for a single sequence of one bits and return quickly if so.
++     The special cases of all ones and all zeroes returns false.  */
++  val = (unsigned HOST_WIDE_INT) val_in;
++  tmp = val + (val & -val);
++
++  if (tmp == (tmp & -tmp))
++    return (val + 1) > 1;
++
++  /* Replicate 32-bit immediates so we can treat them as 64-bit.  */
++  if (mode == SImode)
++    val = (val << 32) | (val & 0xffffffff);
++
++  /* Invert if the immediate doesn't start with a zero bit - this means we
++     only need to search for sequences of one bits.  */
++  if (val & 1)
++    val = ~val;
++
++  /* Find the first set bit and set tmp to val with the first sequence of one
++     bits removed.  Return success if there is a single sequence of ones.  */
++  first_one = val & -val;
++  tmp = val & (val + first_one);
++
++  if (tmp == 0)
++    return true;
++
++  /* Find the next set bit and compute the difference in bit position.  */
++  next_one = tmp & -tmp;
++  bits = clz_hwi (first_one) - clz_hwi (next_one);
++  mask = val ^ tmp;
++
++  /* Check the bit position difference is a power of 2, and that the first
++     sequence of one bits fits within 'bits' bits.  */
++  if ((mask >> bits) != 0 || bits != (bits & -bits))
++    return false;
++
++  /* Check the sequence of one bits is repeated 64/bits times.  */
++  return val == mask * bitmask_imm_mul[__builtin_clz (bits) - 26];
+ }
+ 
+ 
+@@ -3372,6 +3304,18 @@ offset_12bit_unsigned_scaled_p (machine_mode mode, HOST_WIDE_INT offset)
+ 	  && offset % GET_MODE_SIZE (mode) == 0);
+ }
+ 
++/* Return true if MODE is one of the modes for which we
++   support LDP/STP operations.  */
++
++static bool
++aarch64_mode_valid_for_sched_fusion_p (machine_mode mode)
++{
++  return mode == SImode || mode == DImode
++	 || mode == SFmode || mode == DFmode
++	 || (aarch64_vector_mode_supported_p (mode)
++	     && GET_MODE_SIZE (mode) == 8);
++}
++
+ /* Return true if X is a valid address for machine mode MODE.  If it is,
+    fill in INFO appropriately.  STRICT_P is true if REG_OK_STRICT is in
+    effect.  OUTER_CODE is PARALLEL for a load/store pair.  */
+@@ -3945,19 +3889,6 @@ aarch64_const_vec_all_same_int_p (rtx x, HOST_WIDE_INT val)
+   return aarch64_const_vec_all_same_in_range_p (x, val, val);
+ }
+ 
+-static unsigned
+-bit_count (unsigned HOST_WIDE_INT value)
+-{
+-  unsigned count = 0;
+-
+-  while (value)
+-    {
+-      count++;
+-      value &= value - 1;
+-    }
+-
+-  return count;
+-}
+ 
+ /* N Z C V.  */
+ #define AARCH64_CC_V 1
+@@ -4112,7 +4043,7 @@ aarch64_print_operand (FILE *f, rtx x, char code)
+ 	  return;
+ 	}
+ 
+-      asm_fprintf (f, "%u", bit_count (INTVAL (x)));
++      asm_fprintf (f, "%u", popcount_hwi (INTVAL (x)));
+       break;
+ 
+     case 'H':
+@@ -4263,6 +4194,7 @@ aarch64_print_operand (FILE *f, rtx x, char code)
+ 	  output_address (XEXP (x, 0));
+ 	  break;
+ 
++	case CONST:
+ 	case LABEL_REF:
+ 	case SYMBOL_REF:
+ 	  output_addr_const (asm_out_file, x);
+@@ -4342,7 +4274,7 @@ aarch64_print_operand (FILE *f, rtx x, char code)
+ 	  asm_fprintf (asm_out_file, ":gottprel:");
+ 	  break;
+ 
+-	case SYMBOL_SMALL_TPREL:
++	case SYMBOL_TLSLE:
+ 	  asm_fprintf (asm_out_file, ":tprel:");
+ 	  break;
+ 
+@@ -4375,7 +4307,7 @@ aarch64_print_operand (FILE *f, rtx x, char code)
+ 	  asm_fprintf (asm_out_file, ":gottprel_lo12:");
+ 	  break;
+ 
+-	case SYMBOL_SMALL_TPREL:
++	case SYMBOL_TLSLE:
+ 	  asm_fprintf (asm_out_file, ":tprel_lo12_nc:");
+ 	  break;
+ 
+@@ -4393,7 +4325,7 @@ aarch64_print_operand (FILE *f, rtx x, char code)
+ 
+       switch (aarch64_classify_symbolic_expression (x, SYMBOL_CONTEXT_ADR))
+ 	{
+-	case SYMBOL_SMALL_TPREL:
++	case SYMBOL_TLSLE:
+ 	  asm_fprintf (asm_out_file, ":tprel_hi12:");
+ 	  break;
+ 	default:
+@@ -4901,8 +4833,9 @@ aarch64_class_max_nregs (reg_class_t regclass, machine_mode mode)
+     case FP_REGS:
+     case FP_LO_REGS:
+       return
+-	aarch64_vector_mode_p (mode) ? (GET_MODE_SIZE (mode) + 15) / 16 :
+-				       (GET_MODE_SIZE (mode) + 7) / 8;
++	aarch64_vector_mode_p (mode)
++	  ? (GET_MODE_SIZE (mode) + UNITS_PER_VREG - 1) / UNITS_PER_VREG
++	  : (GET_MODE_SIZE (mode) + UNITS_PER_WORD - 1) / UNITS_PER_WORD;
+     case STACK_REG:
+       return 1;
+ 
+@@ -5157,9 +5090,18 @@ aarch64_strip_extend (rtx x)
+   return x;
+ }
+ 
++/* Return true iff CODE is a shift supported in combination
++   with arithmetic instructions.  */
++
++static bool
++aarch64_shift_p (enum rtx_code code)
++{
++  return code == ASHIFT || code == ASHIFTRT || code == LSHIFTRT;
++}
++
+ /* Helper function for rtx cost calculation.  Calculate the cost of
+-   a MULT, which may be part of a multiply-accumulate rtx.  Return
+-   the calculated cost of the expression, recursing manually in to
++   a MULT or ASHIFT, which may be part of a compound PLUS/MINUS rtx.
++   Return the calculated cost of the expression, recursing manually in to
+    operands where needed.  */
+ 
+ static int
+@@ -5167,9 +5109,9 @@ aarch64_rtx_mult_cost (rtx x, int code, int outer, bool speed)
+ {
+   rtx op0, op1;
+   const struct cpu_cost_table *extra_cost
+-    = aarch64_tune_params->insn_extra_cost;
++    = aarch64_tune_params.insn_extra_cost;
+   int cost = 0;
+-  bool maybe_fma = (outer == PLUS || outer == MINUS);
++  bool compound_p = (outer == PLUS || outer == MINUS);
+   machine_mode mode = GET_MODE (x);
+ 
+   gcc_checking_assert (code == MULT);
+@@ -5184,24 +5126,50 @@ aarch64_rtx_mult_cost (rtx x, int code, int outer, bool speed)
+   if (GET_MODE_CLASS (mode) == MODE_INT)
+     {
+       /* The multiply will be canonicalized as a shift, cost it as such.  */
+-      if (CONST_INT_P (op1)
+-	  && exact_log2 (INTVAL (op1)) > 0)
++      if (aarch64_shift_p (GET_CODE (x))
++	  || (CONST_INT_P (op1)
++	      && exact_log2 (INTVAL (op1)) > 0))
+ 	{
++	  bool is_extend = GET_CODE (op0) == ZERO_EXTEND
++	                   || GET_CODE (op0) == SIGN_EXTEND;
+ 	  if (speed)
+ 	    {
+-	      if (maybe_fma)
+-		/* ADD (shifted register).  */
+-		cost += extra_cost->alu.arith_shift;
++	      if (compound_p)
++	        {
++	          if (REG_P (op1))
++		    /* ARITH + shift-by-register.  */
++		    cost += extra_cost->alu.arith_shift_reg;
++		  else if (is_extend)
++		    /* ARITH + extended register.  We don't have a cost field
++		       for ARITH+EXTEND+SHIFT, so use extend_arith here.  */
++		    cost += extra_cost->alu.extend_arith;
++		  else
++		    /* ARITH + shift-by-immediate.  */
++		    cost += extra_cost->alu.arith_shift;
++		}
+ 	      else
+ 		/* LSL (immediate).  */
+-		cost += extra_cost->alu.shift;
++	        cost += extra_cost->alu.shift;
++
+ 	    }
++	  /* Strip extends as we will have costed them in the case above.  */
++	  if (is_extend)
++	    op0 = aarch64_strip_extend (op0);
+ 
+ 	  cost += rtx_cost (op0, GET_CODE (op0), 0, speed);
+ 
+ 	  return cost;
+ 	}
+ 
++      /* MNEG or [US]MNEGL.  Extract the NEG operand and indicate that it's a
++	 compound and let the below cases handle it.  After all, MNEG is a
++	 special-case alias of MSUB.  */
++      if (GET_CODE (op0) == NEG)
++	{
++	  op0 = XEXP (op0, 0);
++	  compound_p = true;
++	}
++
+       /* Integer multiplies or FMAs have zero/sign extending variants.  */
+       if ((GET_CODE (op0) == ZERO_EXTEND
+ 	   && GET_CODE (op1) == ZERO_EXTEND)
+@@ -5213,8 +5181,8 @@ aarch64_rtx_mult_cost (rtx x, int code, int outer, bool speed)
+ 
+ 	  if (speed)
+ 	    {
+-	      if (maybe_fma)
+-		/* MADD/SMADDL/UMADDL.  */
++	      if (compound_p)
++		/* SMADDL/UMADDL/UMSUBL/SMSUBL.  */
+ 		cost += extra_cost->mult[0].extend_add;
+ 	      else
+ 		/* MUL/SMULL/UMULL.  */
+@@ -5224,15 +5192,15 @@ aarch64_rtx_mult_cost (rtx x, int code, int outer, bool speed)
+ 	  return cost;
+ 	}
+ 
+-      /* This is either an integer multiply or an FMA.  In both cases
++      /* This is either an integer multiply or a MADD.  In both cases
+ 	 we want to recurse and cost the operands.  */
+       cost += rtx_cost (op0, MULT, 0, speed)
+ 	      + rtx_cost (op1, MULT, 1, speed);
+ 
+       if (speed)
+ 	{
+-	  if (maybe_fma)
+-	    /* MADD.  */
++	  if (compound_p)
++	    /* MADD/MSUB.  */
+ 	    cost += extra_cost->mult[mode == DImode].add;
+ 	  else
+ 	    /* MUL.  */
+@@ -5250,7 +5218,7 @@ aarch64_rtx_mult_cost (rtx x, int code, int outer, bool speed)
+ 	     which case FNMUL is different than FMUL with operand negation.  */
+ 	  bool neg0 = GET_CODE (op0) == NEG;
+ 	  bool neg1 = GET_CODE (op1) == NEG;
+-	  if (maybe_fma || !flag_rounding_math || (neg0 && neg1))
++	  if (compound_p || !flag_rounding_math || (neg0 && neg1))
+ 	    {
+ 	      if (neg0)
+ 		op0 = XEXP (op0, 0);
+@@ -5258,7 +5226,7 @@ aarch64_rtx_mult_cost (rtx x, int code, int outer, bool speed)
+ 		op1 = XEXP (op1, 0);
+ 	    }
+ 
+-	  if (maybe_fma)
++	  if (compound_p)
+ 	    /* FMADD/FNMADD/FNMSUB/FMSUB.  */
+ 	    cost += extra_cost->fp[mode == DFmode].fma;
+ 	  else
+@@ -5279,7 +5247,7 @@ aarch64_address_cost (rtx x,
+ 		      bool speed)
+ {
+   enum rtx_code c = GET_CODE (x);
+-  const struct cpu_addrcost_table *addr_cost = aarch64_tune_params->addr_cost;
++  const struct cpu_addrcost_table *addr_cost = aarch64_tune_params.addr_cost;
+   struct aarch64_address_info info;
+   int cost = 0;
+   info.shift = 0;
+@@ -5367,6 +5335,23 @@ aarch64_address_cost (rtx x,
+   return cost;
+ }
+ 
++/* Return the cost of a branch.  If SPEED_P is true then the compiler is
++   optimizing for speed.  If PREDICTABLE_P is true then the branch is predicted
++   to be taken.  */
++
++int
++aarch64_branch_cost (bool speed_p, bool predictable_p)
++{
++  /* When optimizing for speed, use the cost of unpredictable branches.  */
++  const struct cpu_branch_cost *branch_costs =
++    aarch64_tune_params.branch_costs;
++
++  if (!speed_p || predictable_p)
++    return branch_costs->predictable;
++  else
++    return branch_costs->unpredictable;
++}
++
+ /* Return true if the RTX X in mode MODE is a zero or sign extract
+    usable in an ADD or SUB (extended register) instruction.  */
+ static bool
+@@ -5415,6 +5400,51 @@ aarch64_frint_unspec_p (unsigned int u)
+     }
+ }
+ 
++/* Return true iff X is an rtx that will match an extr instruction
++   i.e. as described in the *extr<mode>5_insn family of patterns.
++   OP0 and OP1 will be set to the operands of the shifts involved
++   on success and will be NULL_RTX otherwise.  */
++
++static bool
++aarch64_extr_rtx_p (rtx x, rtx *res_op0, rtx *res_op1)
++{
++  rtx op0, op1;
++  machine_mode mode = GET_MODE (x);
++
++  *res_op0 = NULL_RTX;
++  *res_op1 = NULL_RTX;
++
++  if (GET_CODE (x) != IOR)
++    return false;
++
++  op0 = XEXP (x, 0);
++  op1 = XEXP (x, 1);
++
++  if ((GET_CODE (op0) == ASHIFT && GET_CODE (op1) == LSHIFTRT)
++      || (GET_CODE (op1) == ASHIFT && GET_CODE (op0) == LSHIFTRT))
++    {
++     /* Canonicalise locally to ashift in op0, lshiftrt in op1.  */
++      if (GET_CODE (op1) == ASHIFT)
++        std::swap (op0, op1);
++
++      if (!CONST_INT_P (XEXP (op0, 1)) || !CONST_INT_P (XEXP (op1, 1)))
++        return false;
++
++      unsigned HOST_WIDE_INT shft_amnt_0 = UINTVAL (XEXP (op0, 1));
++      unsigned HOST_WIDE_INT shft_amnt_1 = UINTVAL (XEXP (op1, 1));
++
++      if (shft_amnt_0 < GET_MODE_BITSIZE (mode)
++          && shft_amnt_0 + shft_amnt_1 == GET_MODE_BITSIZE (mode))
++        {
++          *res_op0 = XEXP (op0, 0);
++          *res_op1 = XEXP (op1, 0);
++          return true;
++        }
++    }
++
++  return false;
++}
++
+ /* Calculate the cost of calculating (if_then_else (OP0) (OP1) (OP2)),
+    storing it in *COST.  Result is true if the total cost of the operation
+    has now been calculated.  */
+@@ -5497,7 +5527,7 @@ aarch64_rtx_costs (rtx x, int code, int outer ATTRIBUTE_UNUSED,
+ {
+   rtx op0, op1, op2;
+   const struct cpu_cost_table *extra_cost
+-    = aarch64_tune_params->insn_extra_cost;
++    = aarch64_tune_params.insn_extra_cost;
+   machine_mode mode = GET_MODE (x);
+ 
+   /* By default, assume that everything has equivalent cost to the
+@@ -5505,16 +5535,6 @@ aarch64_rtx_costs (rtx x, int code, int outer ATTRIBUTE_UNUSED,
+      above this default.  */
+   *cost = COSTS_N_INSNS (1);
+ 
+-  /* TODO: The cost infrastructure currently does not handle
+-     vector operations.  Assume that all vector operations
+-     are equally expensive.  */
+-  if (VECTOR_MODE_P (mode))
+-    {
+-      if (speed)
+-	*cost += extra_cost->vect.alu;
+-      return true;
+-    }
+-
+   switch (code)
+     {
+     case SET:
+@@ -5529,7 +5549,9 @@ aarch64_rtx_costs (rtx x, int code, int outer ATTRIBUTE_UNUSED,
+ 	  if (speed)
+ 	    {
+ 	      rtx address = XEXP (op0, 0);
+-	      if (GET_MODE_CLASS (mode) == MODE_INT)
++	      if (VECTOR_MODE_P (mode))
++		*cost += extra_cost->ldst.storev;
++	      else if (GET_MODE_CLASS (mode) == MODE_INT)
+ 		*cost += extra_cost->ldst.store;
+ 	      else if (mode == SFmode)
+ 		*cost += extra_cost->ldst.storef;
+@@ -5550,15 +5572,22 @@ aarch64_rtx_costs (rtx x, int code, int outer ATTRIBUTE_UNUSED,
+ 
+ 	  /* Fall through.  */
+ 	case REG:
++	  /* The cost is one per vector-register copied.  */
++	  if (VECTOR_MODE_P (GET_MODE (op0)) && REG_P (op1))
++	    {
++	      int n_minus_1 = (GET_MODE_SIZE (GET_MODE (op0)) - 1)
++			      / GET_MODE_SIZE (V4SImode);
++	      *cost = COSTS_N_INSNS (n_minus_1 + 1);
++	    }
+ 	  /* const0_rtx is in general free, but we will use an
+ 	     instruction to set a register to 0.  */
+-          if (REG_P (op1) || op1 == const0_rtx)
+-            {
+-              /* The cost is 1 per register copied.  */
+-              int n_minus_1 = (GET_MODE_SIZE (GET_MODE (op0)) - 1)
++	  else if (REG_P (op1) || op1 == const0_rtx)
++	    {
++	      /* The cost is 1 per register copied.  */
++	      int n_minus_1 = (GET_MODE_SIZE (GET_MODE (op0)) - 1)
+ 			      / UNITS_PER_WORD;
+-              *cost = COSTS_N_INSNS (n_minus_1 + 1);
+-            }
++	      *cost = COSTS_N_INSNS (n_minus_1 + 1);
++	    }
+           else
+ 	    /* Cost is just the cost of the RHS of the set.  */
+ 	    *cost += rtx_cost (op1, SET, 1, speed);
+@@ -5656,7 +5685,9 @@ aarch64_rtx_costs (rtx x, int code, int outer ATTRIBUTE_UNUSED,
+ 	     approximation for the additional cost of the addressing
+ 	     mode.  */
+ 	  rtx address = XEXP (x, 0);
+-	  if (GET_MODE_CLASS (mode) == MODE_INT)
++	  if (VECTOR_MODE_P (mode))
++	    *cost += extra_cost->ldst.loadv;
++	  else if (GET_MODE_CLASS (mode) == MODE_INT)
+ 	    *cost += extra_cost->ldst.load;
+ 	  else if (mode == SFmode)
+ 	    *cost += extra_cost->ldst.loadf;
+@@ -5673,6 +5704,16 @@ aarch64_rtx_costs (rtx x, int code, int outer ATTRIBUTE_UNUSED,
+     case NEG:
+       op0 = XEXP (x, 0);
+ 
++      if (VECTOR_MODE_P (mode))
++	{
++	  if (speed)
++	    {
++	      /* FNEG.  */
++	      *cost += extra_cost->vect.alu;
++	    }
++	  return false;
++	}
++
+       if (GET_MODE_CLASS (GET_MODE (x)) == MODE_INT)
+        {
+           if (GET_RTX_CLASS (GET_CODE (op0)) == RTX_COMPARE
+@@ -5717,7 +5758,12 @@ aarch64_rtx_costs (rtx x, int code, int outer ATTRIBUTE_UNUSED,
+     case CLRSB:
+     case CLZ:
+       if (speed)
+-        *cost += extra_cost->alu.clz;
++	{
++	  if (VECTOR_MODE_P (mode))
++	    *cost += extra_cost->vect.alu;
++	  else
++	    *cost += extra_cost->alu.clz;
++	}
+ 
+       return false;
+ 
+@@ -5796,12 +5842,27 @@ aarch64_rtx_costs (rtx x, int code, int outer ATTRIBUTE_UNUSED,
+ 
+           if (CONST_DOUBLE_P (op1) && aarch64_float_const_zero_rtx_p (op1))
+             {
++              *cost += rtx_cost (op0, COMPARE, 0, speed);
+               /* FCMP supports constant 0.0 for no extra cost. */
+               return true;
+             }
+           return false;
+         }
+ 
++      if (VECTOR_MODE_P (mode))
++	{
++	  /* Vector compare.  */
++	  if (speed)
++	    *cost += extra_cost->vect.alu;
++
++	  if (aarch64_float_const_zero_rtx_p (op1))
++	    {
++	      /* Vector cm (eq|ge|gt|lt|le) supports constant 0.0 for no extra
++		 cost.  */
++	      return true;
++	    }
++	  return false;
++	}
+       return false;
+ 
+     case MINUS:
+@@ -5810,6 +5871,8 @@ aarch64_rtx_costs (rtx x, int code, int outer ATTRIBUTE_UNUSED,
+ 	op1 = XEXP (x, 1);
+ 
+ cost_minus:
++	*cost += rtx_cost (op0, MINUS, 0, speed);
++
+ 	/* Detect valid immediates.  */
+ 	if ((GET_MODE_CLASS (mode) == MODE_INT
+ 	     || (GET_MODE_CLASS (mode) == MODE_CC
+@@ -5817,20 +5880,17 @@ cost_minus:
+ 	    && CONST_INT_P (op1)
+ 	    && aarch64_uimm12_shift (INTVAL (op1)))
+ 	  {
+-	    *cost += rtx_cost (op0, MINUS, 0, speed);
+-
+ 	    if (speed)
+ 	      /* SUB(S) (immediate).  */
+ 	      *cost += extra_cost->alu.arith;
+ 	    return true;
+-
+ 	  }
+ 
+ 	/* Look for SUB (extended register).  */
+         if (aarch64_rtx_arith_op_extract_p (op1, mode))
+ 	  {
+ 	    if (speed)
+-	      *cost += extra_cost->alu.arith_shift;
++	      *cost += extra_cost->alu.extend_arith;
+ 
+ 	    *cost += rtx_cost (XEXP (XEXP (op1, 0), 0),
+ 			       (enum rtx_code) GET_CODE (op1),
+@@ -5842,13 +5902,12 @@ cost_minus:
+ 
+ 	/* Cost this as an FMA-alike operation.  */
+ 	if ((GET_CODE (new_op1) == MULT
+-	     || GET_CODE (new_op1) == ASHIFT)
++	     || aarch64_shift_p (GET_CODE (new_op1)))
+ 	    && code != COMPARE)
+ 	  {
+ 	    *cost += aarch64_rtx_mult_cost (new_op1, MULT,
+ 					    (enum rtx_code) code,
+ 					    speed);
+-	    *cost += rtx_cost (op0, MINUS, 0, speed);
+ 	    return true;
+ 	  }
+ 
+@@ -5856,12 +5915,21 @@ cost_minus:
+ 
+ 	if (speed)
+ 	  {
+-	    if (GET_MODE_CLASS (mode) == MODE_INT)
+-	      /* SUB(S).  */
+-	      *cost += extra_cost->alu.arith;
++	    if (VECTOR_MODE_P (mode))
++	      {
++		/* Vector SUB.  */
++		*cost += extra_cost->vect.alu;
++	      }
++	    else if (GET_MODE_CLASS (mode) == MODE_INT)
++	      {
++		/* SUB(S).  */
++		*cost += extra_cost->alu.arith;
++	      }
+ 	    else if (GET_MODE_CLASS (mode) == MODE_FLOAT)
+-	      /* FSUB.  */
+-	      *cost += extra_cost->fp[mode == DFmode].addsub;
++	      {
++		/* FSUB.  */
++		*cost += extra_cost->fp[mode == DFmode].addsub;
++	      }
+ 	  }
+ 	return true;
+       }
+@@ -5895,11 +5963,13 @@ cost_plus:
+ 	    return true;
+ 	  }
+ 
++	*cost += rtx_cost (op1, PLUS, 1, speed);
++
+ 	/* Look for ADD (extended register).  */
+         if (aarch64_rtx_arith_op_extract_p (op0, mode))
+ 	  {
+ 	    if (speed)
+-	      *cost += extra_cost->alu.arith_shift;
++	      *cost += extra_cost->alu.extend_arith;
+ 
+ 	    *cost += rtx_cost (XEXP (XEXP (op0, 0), 0),
+ 			       (enum rtx_code) GET_CODE (op0),
+@@ -5912,25 +5982,32 @@ cost_plus:
+ 	new_op0 = aarch64_strip_extend (op0);
+ 
+ 	if (GET_CODE (new_op0) == MULT
+-	    || GET_CODE (new_op0) == ASHIFT)
++	    || aarch64_shift_p (GET_CODE (new_op0)))
+ 	  {
+ 	    *cost += aarch64_rtx_mult_cost (new_op0, MULT, PLUS,
+ 					    speed);
+-	    *cost += rtx_cost (op1, PLUS, 1, speed);
+ 	    return true;
+ 	  }
+ 
+-	*cost += (rtx_cost (new_op0, PLUS, 0, speed)
+-		  + rtx_cost (op1, PLUS, 1, speed));
++	*cost += rtx_cost (new_op0, PLUS, 0, speed);
+ 
+ 	if (speed)
+ 	  {
+-	    if (GET_MODE_CLASS (mode) == MODE_INT)
+-	      /* ADD.  */
+-	      *cost += extra_cost->alu.arith;
++	    if (VECTOR_MODE_P (mode))
++	      {
++		/* Vector ADD.  */
++		*cost += extra_cost->vect.alu;
++	      }
++	    else if (GET_MODE_CLASS (mode) == MODE_INT)
++	      {
++		/* ADD.  */
++		*cost += extra_cost->alu.arith;
++	      }
+ 	    else if (GET_MODE_CLASS (mode) == MODE_FLOAT)
+-	      /* FADD.  */
+-	      *cost += extra_cost->fp[mode == DFmode].addsub;
++	      {
++		/* FADD.  */
++		*cost += extra_cost->fp[mode == DFmode].addsub;
++	      }
+ 	  }
+ 	return true;
+       }
+@@ -5939,8 +6016,12 @@ cost_plus:
+       *cost = COSTS_N_INSNS (1);
+ 
+       if (speed)
+-        *cost += extra_cost->alu.rev;
+-
++	{
++	  if (VECTOR_MODE_P (mode))
++	    *cost += extra_cost->vect.alu;
++	  else
++	    *cost += extra_cost->alu.rev;
++	}
+       return false;
+ 
+     case IOR:
+@@ -5948,8 +6029,22 @@ cost_plus:
+         {
+           *cost = COSTS_N_INSNS (1);
+ 
++	  if (speed)
++	    {
++	      if (VECTOR_MODE_P (mode))
++		*cost += extra_cost->vect.alu;
++	      else
++		*cost += extra_cost->alu.rev;
++	    }
++	  return true;
++        }
++
++      if (aarch64_extr_rtx_p (x, &op0, &op1))
++        {
++          *cost += rtx_cost (op0, IOR, 0, speed)
++                   + rtx_cost (op1, IOR, 1, speed);
+           if (speed)
+-            *cost += extra_cost->alu.rev;
++            *cost += extra_cost->alu.shift;
+ 
+           return true;
+         }
+@@ -5960,6 +6055,13 @@ cost_plus:
+       op0 = XEXP (x, 0);
+       op1 = XEXP (x, 1);
+ 
++      if (VECTOR_MODE_P (mode))
++	{
++	  if (speed)
++	    *cost += extra_cost->vect.alu;
++	  return true;
++	}
++
+       if (code == AND
+           && GET_CODE (op0) == MULT
+           && CONST_INT_P (XEXP (op0, 1))
+@@ -6025,13 +6127,52 @@ cost_plus:
+       return false;
+ 
+     case NOT:
++      x = XEXP (x, 0);
++      op0 = aarch64_strip_shift (x);
++
++      if (VECTOR_MODE_P (mode))
++	{
++	  /* Vector NOT.  */
++	  *cost += extra_cost->vect.alu;
++	  return false;
++	}
++
++      /* MVN-shifted-reg.  */
++      if (op0 != x)
++        {
++          *cost += rtx_cost (op0, (enum rtx_code) code, 0, speed);
++
++          if (speed)
++            *cost += extra_cost->alu.log_shift;
++
++          return true;
++        }
++      /* EON can have two forms: (xor (not a) b) but also (not (xor a b)).
++         Handle the second form here taking care that 'a' in the above can
++         be a shift.  */
++      else if (GET_CODE (op0) == XOR)
++        {
++          rtx newop0 = XEXP (op0, 0);
++          rtx newop1 = XEXP (op0, 1);
++          rtx op0_stripped = aarch64_strip_shift (newop0);
++
++          *cost += rtx_cost (newop1, (enum rtx_code) code, 1, speed)
++                   + rtx_cost (op0_stripped, XOR, 0, speed);
++
++          if (speed)
++            {
++              if (op0_stripped != newop0)
++                *cost += extra_cost->alu.log_shift;
++              else
++                *cost += extra_cost->alu.logical;
++            }
++
++          return true;
++        }
+       /* MVN.  */
+       if (speed)
+ 	*cost += extra_cost->alu.logical;
+ 
+-      /* The logical instruction could have the shifted register form,
+-         but the cost is the same if the shift is processed as a separate
+-         instruction, so we don't bother with it here.  */
+       return false;
+ 
+     case ZERO_EXTEND:
+@@ -6067,10 +6208,19 @@ cost_plus:
+ 	  return true;
+ 	}
+ 
+-      /* UXTB/UXTH.  */
+       if (speed)
+-	*cost += extra_cost->alu.extend;
+-
++	{
++	  if (VECTOR_MODE_P (mode))
++	    {
++	      /* UMOV.  */
++	      *cost += extra_cost->vect.alu;
++	    }
++	  else
++	    {
++	      /* UXTB/UXTH.  */
++	      *cost += extra_cost->alu.extend;
++	    }
++	}
+       return false;
+ 
+     case SIGN_EXTEND:
+@@ -6090,7 +6240,12 @@ cost_plus:
+ 	}
+ 
+       if (speed)
+-	*cost += extra_cost->alu.extend;
++	{
++	  if (VECTOR_MODE_P (mode))
++	    *cost += extra_cost->vect.alu;
++	  else
++	    *cost += extra_cost->alu.extend;
++	}
+       return false;
+ 
+     case ASHIFT:
+@@ -6099,10 +6254,20 @@ cost_plus:
+ 
+       if (CONST_INT_P (op1))
+         {
+-	  /* LSL (immediate), UBMF, UBFIZ and friends.  These are all
+-	     aliases.  */
+ 	  if (speed)
+-	    *cost += extra_cost->alu.shift;
++	    {
++	      if (VECTOR_MODE_P (mode))
++		{
++		  /* Vector shift (immediate).  */
++		  *cost += extra_cost->vect.alu;
++		}
++	      else
++		{
++		  /* LSL (immediate), UBMF, UBFIZ and friends.  These are all
++		     aliases.  */
++		  *cost += extra_cost->alu.shift;
++		}
++	    }
+ 
+           /* We can incorporate zero/sign extend for free.  */
+           if (GET_CODE (op0) == ZERO_EXTEND
+@@ -6114,10 +6279,19 @@ cost_plus:
+         }
+       else
+         {
+-	  /* LSLV.  */
+ 	  if (speed)
+-	    *cost += extra_cost->alu.shift_reg;
+-
++	    {
++	      if (VECTOR_MODE_P (mode))
++		{
++		  /* Vector shift (register).  */
++		  *cost += extra_cost->vect.alu;
++		}
++	      else
++		{
++		  /* LSLV.  */
++		  *cost += extra_cost->alu.shift_reg;
++		}
++	    }
+ 	  return false;  /* All arguments need to be in registers.  */
+         }
+ 
+@@ -6132,7 +6306,12 @@ cost_plus:
+ 	{
+ 	  /* ASR (immediate) and friends.  */
+ 	  if (speed)
+-	    *cost += extra_cost->alu.shift;
++	    {
++	      if (VECTOR_MODE_P (mode))
++		*cost += extra_cost->vect.alu;
++	      else
++		*cost += extra_cost->alu.shift;
++	    }
+ 
+ 	  *cost += rtx_cost (op0, (enum rtx_code) code, 0, speed);
+ 	  return true;
+@@ -6142,8 +6321,12 @@ cost_plus:
+ 
+ 	  /* ASR (register) and friends.  */
+ 	  if (speed)
+-	    *cost += extra_cost->alu.shift_reg;
+-
++	    {
++	      if (VECTOR_MODE_P (mode))
++		*cost += extra_cost->vect.alu;
++	      else
++		*cost += extra_cost->alu.shift_reg;
++	    }
+ 	  return false;  /* All arguments need to be in registers.  */
+ 	}
+ 
+@@ -6191,7 +6374,12 @@ cost_plus:
+     case SIGN_EXTRACT:
+       /* UBFX/SBFX.  */
+       if (speed)
+-	*cost += extra_cost->alu.bfx;
++	{
++	  if (VECTOR_MODE_P (mode))
++	    *cost += extra_cost->vect.alu;
++	  else
++	    *cost += extra_cost->alu.bfx;
++	}
+ 
+       /* We can trust that the immediates used will be correct (there
+ 	 are no by-register forms), so we need only cost op0.  */
+@@ -6208,7 +6396,9 @@ cost_plus:
+     case UMOD:
+       if (speed)
+ 	{
+-	  if (GET_MODE_CLASS (GET_MODE (x)) == MODE_INT)
++	  if (VECTOR_MODE_P (mode))
++	    *cost += extra_cost->vect.alu;
++	  else if (GET_MODE_CLASS (GET_MODE (x)) == MODE_INT)
+ 	    *cost += (extra_cost->mult[GET_MODE (x) == DImode].add
+ 		      + extra_cost->mult[GET_MODE (x) == DImode].idiv);
+ 	  else if (GET_MODE (x) == DFmode)
+@@ -6225,7 +6415,9 @@ cost_plus:
+     case SQRT:
+       if (speed)
+ 	{
+-	  if (GET_MODE_CLASS (mode) == MODE_INT)
++	  if (VECTOR_MODE_P (mode))
++	    *cost += extra_cost->vect.alu;
++	  else if (GET_MODE_CLASS (mode) == MODE_INT)
+ 	    /* There is no integer SQRT, so only DIV and UDIV can get
+ 	       here.  */
+ 	    *cost += extra_cost->mult[mode == DImode].idiv;
+@@ -6257,7 +6449,12 @@ cost_plus:
+       op2 = XEXP (x, 2);
+ 
+       if (speed)
+-	*cost += extra_cost->fp[mode == DFmode].fma;
++	{
++	  if (VECTOR_MODE_P (mode))
++	    *cost += extra_cost->vect.alu;
++	  else
++	    *cost += extra_cost->fp[mode == DFmode].fma;
++	}
+ 
+       /* FMSUB, FNMADD, and FNMSUB are free.  */
+       if (GET_CODE (op0) == NEG)
+@@ -6295,14 +6492,36 @@ cost_plus:
+       *cost += rtx_cost (op2, FMA, 2, speed);
+       return true;
+ 
++    case FLOAT:
++    case UNSIGNED_FLOAT:
++      if (speed)
++	*cost += extra_cost->fp[mode == DFmode].fromint;
++      return false;
++
+     case FLOAT_EXTEND:
+       if (speed)
+-	*cost += extra_cost->fp[mode == DFmode].widen;
++	{
++	  if (VECTOR_MODE_P (mode))
++	    {
++	      /*Vector truncate.  */
++	      *cost += extra_cost->vect.alu;
++	    }
++	  else
++	    *cost += extra_cost->fp[mode == DFmode].widen;
++	}
+       return false;
+ 
+     case FLOAT_TRUNCATE:
+       if (speed)
+-	*cost += extra_cost->fp[mode == DFmode].narrow;
++	{
++	  if (VECTOR_MODE_P (mode))
++	    {
++	      /*Vector conversion.  */
++	      *cost += extra_cost->vect.alu;
++	    }
++	  else
++	    *cost += extra_cost->fp[mode == DFmode].narrow;
++	}
+       return false;
+ 
+     case FIX:
+@@ -6323,15 +6542,37 @@ cost_plus:
+         }
+ 
+       if (speed)
+-        *cost += extra_cost->fp[GET_MODE (x) == DFmode].toint;
+-
++	{
++	  if (VECTOR_MODE_P (mode))
++	    *cost += extra_cost->vect.alu;
++	  else
++	    *cost += extra_cost->fp[GET_MODE (x) == DFmode].toint;
++	}
+       *cost += rtx_cost (x, (enum rtx_code) code, 0, speed);
+       return true;
+ 
+     case ABS:
+-      if (GET_MODE_CLASS (mode) == MODE_FLOAT)
++      if (VECTOR_MODE_P (mode))
++	{
++	  /* ABS (vector).  */
++	  if (speed)
++	    *cost += extra_cost->vect.alu;
++	}
++      else if (GET_MODE_CLASS (mode) == MODE_FLOAT)
+ 	{
+-	  /* FABS and FNEG are analogous.  */
++	  op0 = XEXP (x, 0);
++
++	  /* FABD, which is analogous to FADD.  */
++	  if (GET_CODE (op0) == MINUS)
++	    {
++	      *cost += rtx_cost (XEXP (op0, 0), MINUS, 0, speed);
++			+ rtx_cost (XEXP (op0, 1), MINUS, 1, speed);
++	      if (speed)
++		*cost += extra_cost->fp[mode == DFmode].addsub;
++
++	      return true;
++	    }
++	  /* Simple FABS is analogous to FNEG.  */
+ 	  if (speed)
+ 	    *cost += extra_cost->fp[mode == DFmode].neg;
+ 	}
+@@ -6350,10 +6591,15 @@ cost_plus:
+     case SMIN:
+       if (speed)
+ 	{
+-	  /* FMAXNM/FMINNM/FMAX/FMIN.
+-	     TODO: This may not be accurate for all implementations, but
+-	     we do not model this in the cost tables.  */
+-	  *cost += extra_cost->fp[mode == DFmode].addsub;
++	  if (VECTOR_MODE_P (mode))
++	    *cost += extra_cost->vect.alu;
++	  else
++	    {
++	      /* FMAXNM/FMINNM/FMAX/FMIN.
++	         TODO: This may not be accurate for all implementations, but
++	         we do not model this in the cost tables.  */
++	      *cost += extra_cost->fp[mode == DFmode].addsub;
++	    }
+ 	}
+       return false;
+ 
+@@ -6447,7 +6693,7 @@ aarch64_register_move_cost (machine_mode mode,
+   enum reg_class from = (enum reg_class) from_i;
+   enum reg_class to = (enum reg_class) to_i;
+   const struct cpu_regmove_cost *regmove_cost
+-    = aarch64_tune_params->regmove_cost;
++    = aarch64_tune_params.regmove_cost;
+ 
+   /* Caller save and pointer regs are equivalent to GENERAL_REGS.  */
+   if (to == CALLER_SAVE_REGS || to == POINTER_REGS)
+@@ -6502,14 +6748,14 @@ aarch64_memory_move_cost (machine_mode mode ATTRIBUTE_UNUSED,
+ 			  reg_class_t rclass ATTRIBUTE_UNUSED,
+ 			  bool in ATTRIBUTE_UNUSED)
+ {
+-  return aarch64_tune_params->memmov_cost;
++  return aarch64_tune_params.memmov_cost;
+ }
+ 
+ /* Return the number of instructions that can be issued per cycle.  */
+ static int
+ aarch64_sched_issue_rate (void)
+ {
+-  return aarch64_tune_params->issue_rate;
++  return aarch64_tune_params.issue_rate;
+ }
+ 
+ static int
+@@ -6533,44 +6779,44 @@ aarch64_builtin_vectorization_cost (enum vect_cost_for_stmt type_of_cost,
+   switch (type_of_cost)
+     {
+       case scalar_stmt:
+-	return aarch64_tune_params->vec_costs->scalar_stmt_cost;
++	return aarch64_tune_params.vec_costs->scalar_stmt_cost;
+ 
+       case scalar_load:
+-	return aarch64_tune_params->vec_costs->scalar_load_cost;
++	return aarch64_tune_params.vec_costs->scalar_load_cost;
+ 
+       case scalar_store:
+-	return aarch64_tune_params->vec_costs->scalar_store_cost;
++	return aarch64_tune_params.vec_costs->scalar_store_cost;
+ 
+       case vector_stmt:
+-	return aarch64_tune_params->vec_costs->vec_stmt_cost;
++	return aarch64_tune_params.vec_costs->vec_stmt_cost;
+ 
+       case vector_load:
+-	return aarch64_tune_params->vec_costs->vec_align_load_cost;
++	return aarch64_tune_params.vec_costs->vec_align_load_cost;
+ 
+       case vector_store:
+-	return aarch64_tune_params->vec_costs->vec_store_cost;
++	return aarch64_tune_params.vec_costs->vec_store_cost;
+ 
+       case vec_to_scalar:
+-	return aarch64_tune_params->vec_costs->vec_to_scalar_cost;
++	return aarch64_tune_params.vec_costs->vec_to_scalar_cost;
+ 
+       case scalar_to_vec:
+-	return aarch64_tune_params->vec_costs->scalar_to_vec_cost;
++	return aarch64_tune_params.vec_costs->scalar_to_vec_cost;
+ 
+       case unaligned_load:
+-	return aarch64_tune_params->vec_costs->vec_unalign_load_cost;
++	return aarch64_tune_params.vec_costs->vec_unalign_load_cost;
+ 
+       case unaligned_store:
+-	return aarch64_tune_params->vec_costs->vec_unalign_store_cost;
++	return aarch64_tune_params.vec_costs->vec_unalign_store_cost;
+ 
+       case cond_branch_taken:
+-	return aarch64_tune_params->vec_costs->cond_taken_branch_cost;
++	return aarch64_tune_params.vec_costs->cond_taken_branch_cost;
+ 
+       case cond_branch_not_taken:
+-	return aarch64_tune_params->vec_costs->cond_not_taken_branch_cost;
++	return aarch64_tune_params.vec_costs->cond_not_taken_branch_cost;
+ 
+       case vec_perm:
+       case vec_promote_demote:
+-	return aarch64_tune_params->vec_costs->vec_stmt_cost;
++	return aarch64_tune_params.vec_costs->vec_stmt_cost;
+ 
+       case vec_construct:
+         elements = TYPE_VECTOR_SUBPARTS (vectype);
+@@ -6615,12 +6861,26 @@ aarch64_add_stmt_cost (void *data, int count, enum vect_cost_for_stmt kind,
+   return retval;
+ }
+ 
+-static void initialize_aarch64_code_model (void);
++static void initialize_aarch64_code_model (struct gcc_options *);
+ 
+-/* Parse the architecture extension string.  */
++/* Enum describing the various ways that the
++   aarch64_parse_{arch,tune,cpu,extension} functions can fail.
++   This way their callers can choose what kind of error to give.  */
+ 
+-static void
+-aarch64_parse_extension (char *str)
++enum aarch64_parse_opt_result
++{
++  AARCH64_PARSE_OK,			/* Parsing was successful.  */
++  AARCH64_PARSE_MISSING_ARG,		/* Missing argument.  */
++  AARCH64_PARSE_INVALID_FEATURE,	/* Invalid feature modifier.  */
++  AARCH64_PARSE_INVALID_ARG		/* Invalid arch, tune, cpu arg.  */
++};
++
++/* Parse the architecture extension string STR and update ISA_FLAGS
++   with the architecture features turned on or off.  Return a
++   aarch64_parse_opt_result describing the result.  */
++
++static enum aarch64_parse_opt_result
++aarch64_parse_extension (char *str, unsigned long *isa_flags)
+ {
+   /* The extension string is parsed left to right.  */
+   const struct aarch64_option_extension *opt = NULL;
+@@ -6651,11 +6911,8 @@ aarch64_parse_extension (char *str)
+ 	adding_ext = 1;
+ 
+       if (len == 0)
+-	{
+-	  error ("missing feature modifier after %qs", adding_ext ? "+"
+-	                                                          : "+no");
+-	  return;
+-	}
++	return AARCH64_PARSE_MISSING_ARG;
++
+ 
+       /* Scan over the extensions table trying to find an exact match.  */
+       for (opt = all_extensions; opt->name != NULL; opt++)
+@@ -6664,9 +6921,9 @@ aarch64_parse_extension (char *str)
+ 	    {
+ 	      /* Add or remove the extension.  */
+ 	      if (adding_ext)
+-		aarch64_isa_flags |= opt->flags_on;
++		*isa_flags |= opt->flags_on;
+ 	      else
+-		aarch64_isa_flags &= ~(opt->flags_off);
++		*isa_flags &= ~(opt->flags_off);
+ 	      break;
+ 	    }
+ 	}
+@@ -6674,27 +6931,30 @@ aarch64_parse_extension (char *str)
+       if (opt->name == NULL)
+ 	{
+ 	  /* Extension not found in list.  */
+-	  error ("unknown feature modifier %qs", str);
+-	  return;
++	  return AARCH64_PARSE_INVALID_FEATURE;
+ 	}
+ 
+       str = ext;
+     };
+ 
+-  return;
++  return AARCH64_PARSE_OK;
+ }
+ 
+-/* Parse the ARCH string.  */
++/* Parse the TO_PARSE string and put the architecture struct that it
++   selects into RES and the architectural features into ISA_FLAGS.
++   Return an aarch64_parse_opt_result describing the parse result.
++   If there is an error parsing, RES and ISA_FLAGS are left unchanged.  */
+ 
+-static void
+-aarch64_parse_arch (void)
++static enum aarch64_parse_opt_result
++aarch64_parse_arch (const char *to_parse, const struct processor **res,
++		    unsigned long *isa_flags)
+ {
+   char *ext;
+   const struct processor *arch;
+-  char *str = (char *) alloca (strlen (aarch64_arch_string) + 1);
++  char *str = (char *) alloca (strlen (to_parse) + 1);
+   size_t len;
+ 
+-  strcpy (str, aarch64_arch_string);
++  strcpy (str, to_parse);
+ 
+   ext = strchr (str, '+');
+ 
+@@ -6704,54 +6964,52 @@ aarch64_parse_arch (void)
+     len = strlen (str);
+ 
+   if (len == 0)
+-    {
+-      error ("missing arch name in -march=%qs", str);
+-      return;
+-    }
++    return AARCH64_PARSE_MISSING_ARG;
++
+ 
+-  /* Loop through the list of supported ARCHs to find a match.  */
++  /* Loop through the list of supported ARCHes to find a match.  */
+   for (arch = all_architectures; arch->name != NULL; arch++)
+     {
+       if (strlen (arch->name) == len && strncmp (arch->name, str, len) == 0)
+ 	{
+-	  selected_arch = arch;
+-	  aarch64_isa_flags = selected_arch->flags;
+-
+-	  if (!selected_cpu)
+-	    selected_cpu = &all_cores[selected_arch->core];
++	  unsigned long isa_temp = arch->flags;
+ 
+ 	  if (ext != NULL)
+ 	    {
+-	      /* ARCH string contains at least one extension.  */
+-	      aarch64_parse_extension (ext);
+-	    }
++	      /* TO_PARSE string contains at least one extension.  */
++	      enum aarch64_parse_opt_result ext_res
++		= aarch64_parse_extension (ext, &isa_temp);
+ 
+-	  if (strcmp (selected_arch->arch, selected_cpu->arch))
+-	    {
+-	      warning (0, "switch -mcpu=%s conflicts with -march=%s switch",
+-		       selected_cpu->name, selected_arch->name);
++	      if (ext_res != AARCH64_PARSE_OK)
++		return ext_res;
+ 	    }
+-
+-	  return;
++	  /* Extension parsing was successful.  Confirm the result
++	     arch and ISA flags.  */
++	  *res = arch;
++	  *isa_flags = isa_temp;
++	  return AARCH64_PARSE_OK;
+ 	}
+     }
+ 
+   /* ARCH name not found in list.  */
+-  error ("unknown value %qs for -march", str);
+-  return;
++  return AARCH64_PARSE_INVALID_ARG;
+ }
+ 
+-/* Parse the CPU string.  */
++/* Parse the TO_PARSE string and put the result tuning in RES and the
++   architecture flags in ISA_FLAGS.  Return an aarch64_parse_opt_result
++   describing the parse result.  If there is an error parsing, RES and
++   ISA_FLAGS are left unchanged.  */
+ 
+-static void
+-aarch64_parse_cpu (void)
++static enum aarch64_parse_opt_result
++aarch64_parse_cpu (const char *to_parse, const struct processor **res,
++		   unsigned long *isa_flags)
+ {
+   char *ext;
+   const struct processor *cpu;
+-  char *str = (char *) alloca (strlen (aarch64_cpu_string) + 1);
++  char *str = (char *) alloca (strlen (to_parse) + 1);
+   size_t len;
+ 
+-  strcpy (str, aarch64_cpu_string);
++  strcpy (str, to_parse);
+ 
+   ext = strchr (str, '+');
+ 
+@@ -6761,157 +7019,556 @@ aarch64_parse_cpu (void)
+     len = strlen (str);
+ 
+   if (len == 0)
+-    {
+-      error ("missing cpu name in -mcpu=%qs", str);
+-      return;
+-    }
++    return AARCH64_PARSE_MISSING_ARG;
++
+ 
+   /* Loop through the list of supported CPUs to find a match.  */
+   for (cpu = all_cores; cpu->name != NULL; cpu++)
+     {
+       if (strlen (cpu->name) == len && strncmp (cpu->name, str, len) == 0)
+ 	{
+-	  selected_cpu = cpu;
+-	  aarch64_isa_flags = selected_cpu->flags;
++	  unsigned long isa_temp = cpu->flags;
++
+ 
+ 	  if (ext != NULL)
+ 	    {
+-	      /* CPU string contains at least one extension.  */
+-	      aarch64_parse_extension (ext);
+-	    }
++	      /* TO_PARSE string contains at least one extension.  */
++	      enum aarch64_parse_opt_result ext_res
++		= aarch64_parse_extension (ext, &isa_temp);
+ 
+-	  return;
++	      if (ext_res != AARCH64_PARSE_OK)
++		return ext_res;
++	    }
++	  /* Extension parsing was successfull.  Confirm the result
++	     cpu and ISA flags.  */
++	  *res = cpu;
++	  *isa_flags = isa_temp;
++	  return AARCH64_PARSE_OK;
+ 	}
+     }
+ 
+   /* CPU name not found in list.  */
+-  error ("unknown value %qs for -mcpu", str);
+-  return;
++  return AARCH64_PARSE_INVALID_ARG;
+ }
+ 
+-/* Parse the TUNE string.  */
++/* Parse the TO_PARSE string and put the cpu it selects into RES.
++   Return an aarch64_parse_opt_result describing the parse result.
++   If the parsing fails the RES does not change.  */
+ 
+-static void
+-aarch64_parse_tune (void)
++static enum aarch64_parse_opt_result
++aarch64_parse_tune (const char *to_parse, const struct processor **res)
+ {
+   const struct processor *cpu;
+-  char *str = (char *) alloca (strlen (aarch64_tune_string) + 1);
+-  strcpy (str, aarch64_tune_string);
++  char *str = (char *) alloca (strlen (to_parse) + 1);
++
++  strcpy (str, to_parse);
+ 
+   /* Loop through the list of supported CPUs to find a match.  */
+   for (cpu = all_cores; cpu->name != NULL; cpu++)
+     {
+       if (strcmp (cpu->name, str) == 0)
+ 	{
+-	  selected_tune = cpu;
+-	  return;
++	  *res = cpu;
++	  return AARCH64_PARSE_OK;
+ 	}
+     }
+ 
+   /* CPU name not found in list.  */
+-  error ("unknown value %qs for -mtune", str);
+-  return;
++  return AARCH64_PARSE_INVALID_ARG;
+ }
+ 
++/* Parse TOKEN, which has length LENGTH to see if it is an option
++   described in FLAG.  If it is, return the index bit for that fusion type.
++   If not, error (printing OPTION_NAME) and return zero.  */
+ 
+-/* Implement TARGET_OPTION_OVERRIDE.  */
+-
+-static void
+-aarch64_override_options (void)
++static unsigned int
++aarch64_parse_one_option_token (const char *token,
++				size_t length,
++				const struct aarch64_flag_desc *flag,
++				const char *option_name)
+ {
+-  /* -mcpu=CPU is shorthand for -march=ARCH_FOR_CPU, -mtune=CPU.
+-     If either of -march or -mtune is given, they override their
+-     respective component of -mcpu.
+-
+-     So, first parse AARCH64_CPU_STRING, then the others, be careful
+-     with -march as, if -mcpu is not present on the command line, march
+-     must set a sensible default CPU.  */
+-  if (aarch64_cpu_string)
++  for (; flag->name != NULL; flag++)
+     {
+-      aarch64_parse_cpu ();
++      if (length == strlen (flag->name)
++	  && !strncmp (flag->name, token, length))
++	return flag->flag;
+     }
+ 
+-  if (aarch64_arch_string)
++  error ("unknown flag passed in -moverride=%s (%s)", option_name, token);
++  return 0;
++}
++
++/* Parse OPTION which is a comma-separated list of flags to enable.
++   FLAGS gives the list of flags we understand, INITIAL_STATE gives any
++   default state we inherit from the CPU tuning structures.  OPTION_NAME
++   gives the top-level option we are parsing in the -moverride string,
++   for use in error messages.  */
++
++static unsigned int
++aarch64_parse_boolean_options (const char *option,
++			       const struct aarch64_flag_desc *flags,
++			       unsigned int initial_state,
++			       const char *option_name)
++{
++  const char separator = '.';
++  const char* specs = option;
++  const char* ntoken = option;
++  unsigned int found_flags = initial_state;
++
++  while ((ntoken = strchr (specs, separator)))
+     {
+-      aarch64_parse_arch ();
++      size_t token_length = ntoken - specs;
++      unsigned token_ops = aarch64_parse_one_option_token (specs,
++							   token_length,
++							   flags,
++							   option_name);
++      /* If we find "none" (or, for simplicity's sake, an error) anywhere
++	 in the token stream, reset the supported operations.  So:
++
++	   adrp+add.cmp+branch.none.adrp+add
++
++	   would have the result of turning on only adrp+add fusion.  */
++      if (!token_ops)
++	found_flags = 0;
++
++      found_flags |= token_ops;
++      specs = ++ntoken;
+     }
+ 
+-  if (aarch64_tune_string)
++  /* We ended with a comma, print something.  */
++  if (!(*specs))
+     {
+-      aarch64_parse_tune ();
++      error ("%s string ill-formed\n", option_name);
++      return 0;
+     }
+ 
+-#ifndef HAVE_AS_MABI_OPTION
+-  /* The compiler may have been configured with 2.23.* binutils, which does
+-     not have support for ILP32.  */
+-  if (TARGET_ILP32)
+-    error ("Assembler does not support -mabi=ilp32");
+-#endif
++  /* We still have one more token to parse.  */
++  size_t token_length = strlen (specs);
++  unsigned token_ops = aarch64_parse_one_option_token (specs,
++						       token_length,
++						       flags,
++						       option_name);
++   if (!token_ops)
++     found_flags = 0;
+ 
+-  initialize_aarch64_code_model ();
++  found_flags |= token_ops;
++  return found_flags;
++}
+ 
+-  aarch64_build_bitmask_table ();
++/* Support for overriding instruction fusion.  */
+ 
+-  /* This target defaults to strict volatile bitfields.  */
+-  if (flag_strict_volatile_bitfields < 0 && abi_version_at_least (2))
+-    flag_strict_volatile_bitfields = 1;
++static void
++aarch64_parse_fuse_string (const char *fuse_string,
++			    struct tune_params *tune)
++{
++  tune->fusible_ops = aarch64_parse_boolean_options (fuse_string,
++						     aarch64_fusible_pairs,
++						     tune->fusible_ops,
++						     "fuse=");
++}
+ 
+-  /* If the user did not specify a processor, choose the default
+-     one for them.  This will be the CPU set during configuration using
+-     --with-cpu, otherwise it is "generic".  */
+-  if (!selected_cpu)
+-    {
+-      selected_cpu = &all_cores[TARGET_CPU_DEFAULT & 0x3f];
+-      aarch64_isa_flags = TARGET_CPU_DEFAULT >> 6;
+-    }
++/* Support for overriding other tuning flags.  */
+ 
+-  gcc_assert (selected_cpu);
++static void
++aarch64_parse_tune_string (const char *tune_string,
++			    struct tune_params *tune)
++{
++  tune->extra_tuning_flags
++    = aarch64_parse_boolean_options (tune_string,
++				     aarch64_tuning_flags,
++				     tune->extra_tuning_flags,
++				     "tune=");
++}
+ 
+-  if (!selected_tune)
+-    selected_tune = selected_cpu;
++/* Parse TOKEN, which has length LENGTH to see if it is a tuning option
++   we understand.  If it is, extract the option string and handoff to
++   the appropriate function.  */
+ 
+-  aarch64_tune_flags = selected_tune->flags;
+-  aarch64_tune = selected_tune->core;
+-  aarch64_tune_params = selected_tune->tune;
+-  aarch64_architecture_version = selected_cpu->architecture_version;
++void
++aarch64_parse_one_override_token (const char* token,
++				  size_t length,
++				  struct tune_params *tune)
++{
++  const struct aarch64_tuning_override_function *fn
++    = aarch64_tuning_override_functions;
+ 
+-  if (aarch64_fix_a53_err835769 == 2)
++  const char *option_part = strchr (token, '=');
++  if (!option_part)
+     {
+-#ifdef TARGET_FIX_ERR_A53_835769_DEFAULT
+-      aarch64_fix_a53_err835769 = 1;
+-#else
+-      aarch64_fix_a53_err835769 = 0;
+-#endif
++      error ("tuning string missing in option (%s)", token);
++      return;
++    }
++
++  /* Get the length of the option name.  */
++  length = option_part - token;
++  /* Skip the '=' to get to the option string.  */
++  option_part++;
++
++  for (; fn->name != NULL; fn++)
++    {
++      if (!strncmp (fn->name, token, length))
++	{
++	  fn->parse_override (option_part, tune);
++	  return;
++	}
+     }
+ 
+-  aarch64_override_options_after_change ();
++  error ("unknown tuning option (%s)",token);
++  return;
+ }
+ 
+-/* Implement targetm.override_options_after_change.  */
++/* Parse STRING looking for options in the format:
++     string	:: option:string
++     option	:: name=substring
++     name	:: {a-z}
++     substring	:: defined by option.  */
+ 
+ static void
+-aarch64_override_options_after_change (void)
++aarch64_parse_override_string (const char* input_string,
++			       struct tune_params* tune)
+ {
+-  if (flag_omit_frame_pointer)
+-    flag_omit_leaf_frame_pointer = false;
+-  else if (flag_omit_leaf_frame_pointer)
+-    flag_omit_frame_pointer = true;
++  const char separator = ':';
++  size_t string_length = strlen (input_string) + 1;
++  char *string_root = (char *) xmalloc (sizeof (*string_root) * string_length);
++  char *string = string_root;
++  strncpy (string, input_string, string_length);
++  string[string_length - 1] = '\0';
+ 
+-  /* If not optimizing for size, set the default
+-     alignment to what the target wants */
+-  if (!optimize_size)
++  char* ntoken = string;
++
++  while ((ntoken = strchr (string, separator)))
+     {
+-      if (align_loops <= 0)
+-	align_loops = aarch64_tune_params->loop_align;
+-      if (align_jumps <= 0)
+-	align_jumps = aarch64_tune_params->jump_align;
+-      if (align_functions <= 0)
+-	align_functions = aarch64_tune_params->function_align;
++      size_t token_length = ntoken - string;
++      /* Make this substring look like a string.  */
++      *ntoken = '\0';
++      aarch64_parse_one_override_token (string, token_length, tune);
++      string = ++ntoken;
+     }
++
++  /* One last option to parse.  */
++  aarch64_parse_one_override_token (string, strlen (string), tune);
++  free (string_root);
+ }
+ 
+-static struct machine_function *
+-aarch64_init_machine_status (void)
++
++static void
++aarch64_override_options_after_change_1 (struct gcc_options *opts)
++{
++  if (opts->x_flag_omit_frame_pointer)
++    opts->x_flag_omit_leaf_frame_pointer = false;
++  else if (opts->x_flag_omit_leaf_frame_pointer)
++    opts->x_flag_omit_frame_pointer = true;
++
++  /* If not opzimizing for size, set the default
++     alignment to what the target wants.  */
++  if (!opts->x_optimize_size)
++    {
++      if (opts->x_align_loops <= 0)
++	opts->x_align_loops = aarch64_tune_params.loop_align;
++      if (opts->x_align_jumps <= 0)
++	opts->x_align_jumps = aarch64_tune_params.jump_align;
++      if (opts->x_align_functions <= 0)
++	opts->x_align_functions = aarch64_tune_params.function_align;
++    }
++}
++
++/* 'Unpack' up the internal tuning structs and update the options
++    in OPTS.  The caller must have set up selected_tune and selected_arch
++    as all the other target-specific codegen decisions are
++    derived from them.  */
++
++void
++aarch64_override_options_internal (struct gcc_options *opts)
++{
++  aarch64_tune_flags = selected_tune->flags;
++  aarch64_tune = selected_tune->sched_core;
++  /* Make a copy of the tuning parameters attached to the core, which
++     we may later overwrite.  */
++  aarch64_tune_params = *(selected_tune->tune);
++  aarch64_architecture_version = selected_arch->architecture_version;
++
++  if (opts->x_aarch64_override_tune_string)
++    aarch64_parse_override_string (opts->x_aarch64_override_tune_string,
++				  &aarch64_tune_params);
++
++  /* This target defaults to strict volatile bitfields.  */
++  if (opts->x_flag_strict_volatile_bitfields < 0 && abi_version_at_least (2))
++    opts->x_flag_strict_volatile_bitfields = 1;
++
++  /* -mgeneral-regs-only sets a mask in target_flags, make sure that
++     aarch64_isa_flags does not contain the FP/SIMD/Crypto feature flags
++     in case some code tries reading aarch64_isa_flags directly to check if
++     FP is available.  Reuse the aarch64_parse_extension machinery since it
++     knows how to disable any other flags that fp implies.  */
++  if (TARGET_GENERAL_REGS_ONLY_P (opts->x_target_flags))
++    {
++      /* aarch64_parse_extension takes char* rather than const char* because
++	 it is usually called from within other parsing functions.  */
++      char tmp_str[] = "+nofp";
++      aarch64_parse_extension (tmp_str, &opts->x_aarch64_isa_flags);
++    }
++
++  initialize_aarch64_code_model (opts);
++
++  aarch64_override_options_after_change_1 (opts);
++}
++
++/* Validate a command-line -mcpu option.  Parse the cpu and extensions (if any)
++   specified in STR and throw errors if appropriate.  Put the results if
++   they are valid in RES and ISA_FLAGS.  Return whether the option is
++   valid.  */
++
++static bool
++aarch64_validate_mcpu (const char *str, const struct processor **res,
++		       unsigned long *isa_flags)
++{
++  enum aarch64_parse_opt_result parse_res
++    = aarch64_parse_cpu (str, res, isa_flags);
++
++  if (parse_res == AARCH64_PARSE_OK)
++    return true;
++
++  switch (parse_res)
++    {
++      case AARCH64_PARSE_MISSING_ARG:
++	error ("missing cpu name in -mcpu=%qs", str);
++	break;
++      case AARCH64_PARSE_INVALID_ARG:
++	error ("unknown value %qs for -mcpu", str);
++	break;
++      case AARCH64_PARSE_INVALID_FEATURE:
++	error ("invalid feature modifier in -mcpu=%qs", str);
++	break;
++      default:
++	gcc_unreachable ();
++    }
++
++  return false;
++}
++
++/* Validate a command-line -march option.  Parse the arch and extensions
++   (if any) specified in STR and throw errors if appropriate.  Put the
++   results, if they are valid, in RES and ISA_FLAGS.  Return whether the
++   option is valid.  */
++
++static bool
++aarch64_validate_march (const char *str, const struct processor **res,
++		       unsigned long *isa_flags)
++{
++  enum aarch64_parse_opt_result parse_res
++    = aarch64_parse_arch (str, res, isa_flags);
++
++  if (parse_res == AARCH64_PARSE_OK)
++    return true;
++
++  switch (parse_res)
++    {
++      case AARCH64_PARSE_MISSING_ARG:
++	error ("missing arch name in -march=%qs", str);
++	break;
++      case AARCH64_PARSE_INVALID_ARG:
++	error ("unknown value %qs for -march", str);
++	break;
++      case AARCH64_PARSE_INVALID_FEATURE:
++	error ("invalid feature modifier in -march=%qs", str);
++	break;
++      default:
++	gcc_unreachable ();
++    }
++
++  return false;
++}
++
++/* Validate a command-line -mtune option.  Parse the cpu
++   specified in STR and throw errors if appropriate.  Put the
++   result, if it is valid, in RES.  Return whether the option is
++   valid.  */
++
++static bool
++aarch64_validate_mtune (const char *str, const struct processor **res)
++{
++  enum aarch64_parse_opt_result parse_res
++    = aarch64_parse_tune (str, res);
++
++  if (parse_res == AARCH64_PARSE_OK)
++    return true;
++
++  switch (parse_res)
++    {
++      case AARCH64_PARSE_MISSING_ARG:
++	error ("missing cpu name in -mtune=%qs", str);
++	break;
++      case AARCH64_PARSE_INVALID_ARG:
++	error ("unknown value %qs for -mtune", str);
++	break;
++      default:
++	gcc_unreachable ();
++    }
++  return false;
++}
++
++/* Return the CPU corresponding to the enum CPU.
++   If it doesn't specify a cpu, return the default.  */
++
++static const struct processor *
++aarch64_get_tune_cpu (enum aarch64_processor cpu)
++{
++  if (cpu != aarch64_none)
++    return &all_cores[cpu];
++
++  /* The & 0x3f is to extract the bottom 6 bits that encode the
++     default cpu as selected by the --with-cpu GCC configure option
++     in config.gcc.
++     ???: The whole TARGET_CPU_DEFAULT and AARCH64_CPU_DEFAULT_FLAGS
++     flags mechanism should be reworked to make it more sane.  */
++  return &all_cores[TARGET_CPU_DEFAULT & 0x3f];
++}
++
++/* Return the architecture corresponding to the enum ARCH.
++   If it doesn't specify a valid architecture, return the default.  */
++
++static const struct processor *
++aarch64_get_arch (enum aarch64_arch arch)
++{
++  if (arch != aarch64_no_arch)
++    return &all_architectures[arch];
++
++  const struct processor *cpu = &all_cores[TARGET_CPU_DEFAULT & 0x3f];
++
++  return &all_architectures[cpu->arch];
++}
++
++/* Implement TARGET_OPTION_OVERRIDE.  This is called once in the beginning
++   and is used to parse the -m{cpu,tune,arch} strings and setup the initial
++   tuning structs.  In particular it must set selected_tune and
++   aarch64_isa_flags that define the available ISA features and tuning
++   decisions.  It must also set selected_arch as this will be used to
++   output the .arch asm tags for each function.  */
++
++static void
++aarch64_override_options (void)
++{
++  unsigned long cpu_isa = 0;
++  unsigned long arch_isa = 0;
++  aarch64_isa_flags = 0;
++
++  bool valid_cpu = true;
++  bool valid_tune = true;
++  bool valid_arch = true;
++
++  selected_cpu = NULL;
++  selected_arch = NULL;
++  selected_tune = NULL;
++
++  /* -mcpu=CPU is shorthand for -march=ARCH_FOR_CPU, -mtune=CPU.
++     If either of -march or -mtune is given, they override their
++     respective component of -mcpu.  */
++  if (aarch64_cpu_string)
++    valid_cpu = aarch64_validate_mcpu (aarch64_cpu_string, &selected_cpu,
++					&cpu_isa);
++
++  if (aarch64_arch_string)
++    valid_arch = aarch64_validate_march (aarch64_arch_string, &selected_arch,
++					  &arch_isa);
++
++  if (aarch64_tune_string)
++    valid_tune = aarch64_validate_mtune (aarch64_tune_string, &selected_tune);
++
++  /* If the user did not specify a processor, choose the default
++     one for them.  This will be the CPU set during configuration using
++     --with-cpu, otherwise it is "generic".  */
++  if (!selected_cpu)
++    {
++      if (selected_arch)
++	{
++	  selected_cpu = &all_cores[selected_arch->ident];
++	  aarch64_isa_flags = arch_isa;
++	  explicit_arch = selected_arch->arch;
++	}
++      else
++	{
++	  /* Get default configure-time CPU.  */
++	  selected_cpu = aarch64_get_tune_cpu (aarch64_none);
++	  aarch64_isa_flags = TARGET_CPU_DEFAULT >> 6;
++	}
++
++      if (selected_tune)
++	explicit_tune_core = selected_tune->ident;
++    }
++  /* If both -mcpu and -march are specified check that they are architecturally
++     compatible, warn if they're not and prefer the -march ISA flags.  */
++  else if (selected_arch)
++    {
++      if (selected_arch->arch != selected_cpu->arch)
++	{
++	  warning (0, "switch -mcpu=%s conflicts with -march=%s switch",
++		       all_architectures[selected_cpu->arch].name,
++		       selected_arch->name);
++	}
++      aarch64_isa_flags = arch_isa;
++      explicit_arch = selected_arch->arch;
++      explicit_tune_core = selected_tune ? selected_tune->ident
++					  : selected_cpu->ident;
++    }
++  else
++    {
++      /* -mcpu but no -march.  */
++      aarch64_isa_flags = cpu_isa;
++      explicit_tune_core = selected_tune ? selected_tune->ident
++					  : selected_cpu->ident;
++      gcc_assert (selected_cpu);
++      selected_arch = &all_architectures[selected_cpu->arch];
++      explicit_arch = selected_arch->arch;
++    }
++
++  /* Set the arch as well as we will need it when outputing
++     the .arch directive in assembly.  */
++  if (!selected_arch)
++    {
++      gcc_assert (selected_cpu);
++      selected_arch = &all_architectures[selected_cpu->arch];
++    }
++
++  if (!selected_tune)
++    selected_tune = selected_cpu;
++
++#ifndef HAVE_AS_MABI_OPTION
++  /* The compiler may have been configured with 2.23.* binutils, which does
++     not have support for ILP32.  */
++  if (TARGET_ILP32)
++    error ("Assembler does not support -mabi=ilp32");
++#endif
++
++  /* Make sure we properly set up the explicit options.  */
++  if ((aarch64_cpu_string && valid_cpu)
++       || (aarch64_tune_string && valid_tune))
++    gcc_assert (explicit_tune_core != aarch64_none);
++
++  if ((aarch64_cpu_string && valid_cpu)
++       || (aarch64_arch_string && valid_arch))
++    gcc_assert (explicit_arch != aarch64_no_arch);
++
++  aarch64_override_options_internal (&global_options);
++
++  /* Save these options as the default ones in case we push and pop them later
++     while processing functions with potential target attributes.  */
++  target_option_default_node = target_option_current_node
++      = build_target_option_node (&global_options);
++
++  aarch64_register_fma_steering ();
++
++}
++
++/* Implement targetm.override_options_after_change.  */
++
++static void
++aarch64_override_options_after_change (void)
++{
++  aarch64_override_options_after_change_1 (&global_options);
++}
++
++static struct machine_function *
++aarch64_init_machine_status (void)
+ {
+   struct machine_function *machine;
+   machine = ggc_cleared_alloc<machine_function> ();
+@@ -6926,11 +7583,11 @@ aarch64_init_expanders (void)
+ 
+ /* A checking mechanism for the implementation of the various code models.  */
+ static void
+-initialize_aarch64_code_model (void)
++initialize_aarch64_code_model (struct gcc_options *opts)
+ {
+-   if (flag_pic)
++   if (opts->x_flag_pic)
+      {
+-       switch (aarch64_cmodel_var)
++       switch (opts->x_aarch64_cmodel_var)
+ 	 {
+ 	 case AARCH64_CMODEL_TINY:
+ 	   aarch64_cmodel = AARCH64_CMODEL_TINY_PIC;
+@@ -6940,13 +7597,761 @@ initialize_aarch64_code_model (void)
+ 	   break;
+ 	 case AARCH64_CMODEL_LARGE:
+ 	   sorry ("code model %qs with -f%s", "large",
+-		  flag_pic > 1 ? "PIC" : "pic");
++		  opts->x_flag_pic > 1 ? "PIC" : "pic");
+ 	 default:
+ 	   gcc_unreachable ();
+ 	 }
+      }
+    else
+-     aarch64_cmodel = aarch64_cmodel_var;
++     aarch64_cmodel = opts->x_aarch64_cmodel_var;
++}
++
++/* Implement TARGET_OPTION_SAVE.  */
++
++static void
++aarch64_option_save (struct cl_target_option *ptr, struct gcc_options *opts)
++{
++  ptr->x_aarch64_override_tune_string = opts->x_aarch64_override_tune_string;
++}
++
++/* Implements TARGET_OPTION_RESTORE.  Restore the backend codegen decisions
++   using the information saved in PTR.  */
++
++static void
++aarch64_option_restore (struct gcc_options *opts, struct cl_target_option *ptr)
++{
++  opts->x_explicit_tune_core = ptr->x_explicit_tune_core;
++  selected_tune = aarch64_get_tune_cpu (ptr->x_explicit_tune_core);
++  opts->x_explicit_arch = ptr->x_explicit_arch;
++  selected_arch = aarch64_get_arch (ptr->x_explicit_arch);
++  opts->x_aarch64_override_tune_string = ptr->x_aarch64_override_tune_string;
++
++  aarch64_override_options_internal (opts);
++}
++
++/* Implement TARGET_OPTION_PRINT.  */
++
++static void
++aarch64_option_print (FILE *file, int indent, struct cl_target_option *ptr)
++{
++  const struct processor *cpu
++    = aarch64_get_tune_cpu (ptr->x_explicit_tune_core);
++  unsigned long isa_flags = ptr->x_aarch64_isa_flags;
++  const struct processor *arch = aarch64_get_arch (ptr->x_explicit_arch);
++  std::string extension
++    = aarch64_get_extension_string_for_isa_flags (isa_flags);
++
++  fprintf (file, "%*sselected tune = %s\n", indent, "", cpu->name);
++  fprintf (file, "%*sselected arch = %s%s\n", indent, "",
++	   arch->name, extension.c_str ());
++}
++
++static GTY(()) tree aarch64_previous_fndecl;
++
++void
++aarch64_reset_previous_fndecl (void)
++{
++  aarch64_previous_fndecl = NULL;
++}
++
++/* Implement TARGET_SET_CURRENT_FUNCTION.  Unpack the codegen decisions
++   like tuning and ISA features from the DECL_FUNCTION_SPECIFIC_TARGET
++   of the function, if such exists.  This function may be called multiple
++   times on a single function so use aarch64_previous_fndecl to avoid
++   setting up identical state.  */
++
++static void
++aarch64_set_current_function (tree fndecl)
++{
++  tree old_tree = (aarch64_previous_fndecl
++		   ? DECL_FUNCTION_SPECIFIC_TARGET (aarch64_previous_fndecl)
++		   : NULL_TREE);
++
++  tree new_tree = (fndecl
++		   ? DECL_FUNCTION_SPECIFIC_TARGET (fndecl)
++		   : NULL_TREE);
++
++
++  if (fndecl && fndecl != aarch64_previous_fndecl)
++    {
++      aarch64_previous_fndecl = fndecl;
++      if (old_tree == new_tree)
++	;
++
++      else if (new_tree && new_tree != target_option_default_node)
++	{
++	  cl_target_option_restore (&global_options,
++				    TREE_TARGET_OPTION (new_tree));
++	  if (TREE_TARGET_GLOBALS (new_tree))
++	    restore_target_globals (TREE_TARGET_GLOBALS (new_tree));
++	  else
++	    TREE_TARGET_GLOBALS (new_tree)
++	      = save_target_globals_default_opts ();
++	}
++
++      else if (old_tree && old_tree != target_option_default_node)
++	{
++	  new_tree = target_option_current_node;
++	  cl_target_option_restore (&global_options,
++				    TREE_TARGET_OPTION (new_tree));
++	  if (TREE_TARGET_GLOBALS (new_tree))
++	    restore_target_globals (TREE_TARGET_GLOBALS (new_tree));
++	  else if (new_tree == target_option_default_node)
++	    restore_target_globals (&default_target_globals);
++	  else
++	    TREE_TARGET_GLOBALS (new_tree)
++	      = save_target_globals_default_opts ();
++	}
++    }
++
++  if (!fndecl)
++    return;
++
++  /* If we turned on SIMD make sure that any vector parameters are re-laid out
++     so that they use proper vector modes.  */
++  if (TARGET_SIMD)
++    {
++      tree parms = DECL_ARGUMENTS (fndecl);
++      for (; parms && parms != void_list_node; parms = TREE_CHAIN (parms))
++	{
++	  if (TREE_CODE (parms) == PARM_DECL
++	      && VECTOR_TYPE_P (TREE_TYPE (parms))
++	      && DECL_MODE (parms) != TYPE_MODE (TREE_TYPE (parms)))
++	    relayout_decl (parms);
++	}
++    }
++}
++
++/* Enum describing the various ways we can handle attributes.
++   In many cases we can reuse the generic option handling machinery.  */
++
++enum aarch64_attr_opt_type
++{
++  aarch64_attr_mask,	/* Attribute should set a bit in target_flags.  */
++  aarch64_attr_bool,	/* Attribute sets or unsets a boolean variable.  */
++  aarch64_attr_enum,	/* Attribute sets an enum variable.  */
++  aarch64_attr_custom	/* Attribute requires a custom handling function.  */
++};
++
++/* All the information needed to handle a target attribute.
++   NAME is the name of the attribute.
++   ATTR_TYPE specifies the type of behaviour of the attribute as described
++   in the definition of enum aarch64_attr_opt_type.
++   ALLOW_NEG is true if the attribute supports a "no-" form.
++   HANDLER is the function that takes the attribute string and whether
++   it is a pragma or attribute and handles the option.  It is needed only
++   when the ATTR_TYPE is aarch64_attr_custom.
++   OPT_NUM is the enum specifying the option that the attribute modifies.
++   This is needed for attributes that mirror the behaviour of a command-line
++   option, that is it has ATTR_TYPE aarch64_attr_mask, aarch64_attr_bool or
++   aarch64_attr_enum.  */
++
++struct aarch64_attribute_info
++{
++  const char *name;
++  enum aarch64_attr_opt_type attr_type;
++  bool allow_neg;
++  bool (*handler) (const char *, const char *);
++  enum opt_code opt_num;
++};
++
++/* Handle the ARCH_STR argument to the arch= target attribute.
++   PRAGMA_OR_ATTR is used in potential error messages.  */
++
++static bool
++aarch64_handle_attr_arch (const char *str, const char *pragma_or_attr)
++{
++  const struct processor *tmp_arch = NULL;
++  enum aarch64_parse_opt_result parse_res
++    = aarch64_parse_arch (str, &tmp_arch, &aarch64_isa_flags);
++
++  if (parse_res == AARCH64_PARSE_OK)
++    {
++      gcc_assert (tmp_arch);
++      selected_arch = tmp_arch;
++      explicit_arch = selected_arch->arch;
++      return true;
++    }
++
++  switch (parse_res)
++    {
++      case AARCH64_PARSE_MISSING_ARG:
++	error ("missing architecture name in 'arch' target %s", pragma_or_attr);
++	break;
++      case AARCH64_PARSE_INVALID_ARG:
++	error ("unknown value %qs for 'arch' target %s", str, pragma_or_attr);
++	break;
++      case AARCH64_PARSE_INVALID_FEATURE:
++	error ("invalid feature modifier %qs for 'arch' target %s",
++	       str, pragma_or_attr);
++	break;
++      default:
++	gcc_unreachable ();
++    }
++
++  return false;
++}
++
++/* Handle the argument CPU_STR to the cpu= target attribute.
++   PRAGMA_OR_ATTR is used in potential error messages.  */
++
++static bool
++aarch64_handle_attr_cpu (const char *str, const char *pragma_or_attr)
++{
++  const struct processor *tmp_cpu = NULL;
++  enum aarch64_parse_opt_result parse_res
++    = aarch64_parse_cpu (str, &tmp_cpu, &aarch64_isa_flags);
++
++  if (parse_res == AARCH64_PARSE_OK)
++    {
++      gcc_assert (tmp_cpu);
++      selected_tune = tmp_cpu;
++      explicit_tune_core = selected_tune->ident;
++
++      selected_arch = &all_architectures[tmp_cpu->arch];
++      explicit_arch = selected_arch->arch;
++      return true;
++    }
++
++  switch (parse_res)
++    {
++      case AARCH64_PARSE_MISSING_ARG:
++	error ("missing cpu name in 'cpu' target %s", pragma_or_attr);
++	break;
++      case AARCH64_PARSE_INVALID_ARG:
++	error ("unknown value %qs for 'cpu' target %s", str, pragma_or_attr);
++	break;
++      case AARCH64_PARSE_INVALID_FEATURE:
++	error ("invalid feature modifier %qs for 'cpu' target %s",
++	       str, pragma_or_attr);
++	break;
++      default:
++	gcc_unreachable ();
++    }
++
++  return false;
++}
++
++/* Handle the argument STR to the tune= target attribute.
++   PRAGMA_OR_ATTR is used in potential error messages.  */
++
++static bool
++aarch64_handle_attr_tune (const char *str, const char *pragma_or_attr)
++{
++  const struct processor *tmp_tune = NULL;
++  enum aarch64_parse_opt_result parse_res
++    = aarch64_parse_tune (str, &tmp_tune);
++
++  if (parse_res == AARCH64_PARSE_OK)
++    {
++      gcc_assert (tmp_tune);
++      selected_tune = tmp_tune;
++      explicit_tune_core = selected_tune->ident;
++      return true;
++    }
++
++  switch (parse_res)
++    {
++      case AARCH64_PARSE_INVALID_ARG:
++	error ("unknown value %qs for 'tune' target %s", str, pragma_or_attr);
++	break;
++      default:
++	gcc_unreachable ();
++    }
++
++  return false;
++}
++
++/* Parse an architecture extensions target attribute string specified in STR.
++   For example "+fp+nosimd".  Show any errors if needed.  Return TRUE
++   if successful.  Update aarch64_isa_flags to reflect the ISA features
++   modified.
++   PRAGMA_OR_ATTR is used in potential error messages.  */
++
++static bool
++aarch64_handle_attr_isa_flags (char *str, const char *pragma_or_attr)
++{
++  enum aarch64_parse_opt_result parse_res;
++  unsigned long isa_flags = aarch64_isa_flags;
++
++  /* We allow "+nothing" in the beginning to clear out all architectural
++     features if the user wants to handpick specific features.  */
++  if (strncmp ("+nothing", str, 8) == 0)
++    {
++      isa_flags = 0;
++      str += 8;
++    }
++
++  parse_res = aarch64_parse_extension (str, &isa_flags);
++
++  if (parse_res == AARCH64_PARSE_OK)
++    {
++      aarch64_isa_flags = isa_flags;
++      return true;
++    }
++
++  switch (parse_res)
++    {
++      case AARCH64_PARSE_MISSING_ARG:
++	error ("missing feature modifier in target %s %qs",
++	       pragma_or_attr, str);
++	break;
++
++      case AARCH64_PARSE_INVALID_FEATURE:
++	error ("invalid feature modifier in target %s %qs",
++	       pragma_or_attr, str);
++	break;
++
++      default:
++	gcc_unreachable ();
++    }
++
++ return false;
++}
++
++/* The target attributes that we support.  On top of these we also support just
++   ISA extensions, like  __attribute__ ((target ("+crc"))), but that case is
++   handled explicitly in aarch64_process_one_target_attr.  */
++
++static const struct aarch64_attribute_info aarch64_attributes[] =
++{
++  { "general-regs-only", aarch64_attr_mask, false, NULL,
++     OPT_mgeneral_regs_only },
++  { "fix-cortex-a53-835769", aarch64_attr_bool, true, NULL,
++     OPT_mfix_cortex_a53_835769 },
++  { "cmodel", aarch64_attr_enum, false, NULL, OPT_mcmodel_ },
++  { "strict-align", aarch64_attr_mask, false, NULL, OPT_mstrict_align },
++  { "omit-leaf-frame-pointer", aarch64_attr_bool, true, NULL,
++     OPT_momit_leaf_frame_pointer },
++  { "tls-dialect", aarch64_attr_enum, false, NULL, OPT_mtls_dialect_ },
++  { "arch", aarch64_attr_custom, false, aarch64_handle_attr_arch,
++     OPT_march_ },
++  { "cpu", aarch64_attr_custom, false, aarch64_handle_attr_cpu, OPT_mcpu_ },
++  { "tune", aarch64_attr_custom, false, aarch64_handle_attr_tune,
++     OPT_mtune_ },
++  { NULL, aarch64_attr_custom, false, NULL, OPT____ }
++};
++
++/* Parse ARG_STR which contains the definition of one target attribute.
++   Show appropriate errors if any or return true if the attribute is valid.
++   PRAGMA_OR_ATTR holds the string to use in error messages about whether
++   we're processing a target attribute or pragma.  */
++
++static bool
++aarch64_process_one_target_attr (char *arg_str, const char* pragma_or_attr)
++{
++  bool invert = false;
++
++  size_t len = strlen (arg_str);
++
++  if (len == 0)
++    {
++      error ("malformed target %s", pragma_or_attr);
++      return false;
++    }
++
++  char *str_to_check = (char *) alloca (len + 1);
++  strcpy (str_to_check, arg_str);
++
++  /* Skip leading whitespace.  */
++  while (*str_to_check == ' ' || *str_to_check == '\t')
++    str_to_check++;
++
++  /* We have something like __attribute__ ((target ("+fp+nosimd"))).
++     It is easier to detect and handle it explicitly here rather than going
++     through the machinery for the rest of the target attributes in this
++     function.  */
++  if (*str_to_check == '+')
++    return aarch64_handle_attr_isa_flags (str_to_check, pragma_or_attr);
++
++  if (len > 3 && strncmp (str_to_check, "no-", 3) == 0)
++    {
++      invert = true;
++      str_to_check += 3;
++    }
++  char *arg = strchr (str_to_check, '=');
++
++  /* If we found opt=foo then terminate STR_TO_CHECK at the '='
++     and point ARG to "foo".  */
++  if (arg)
++    {
++      *arg = '\0';
++      arg++;
++    }
++  const struct aarch64_attribute_info *p_attr;
++  for (p_attr = aarch64_attributes; p_attr->name; p_attr++)
++    {
++      /* If the names don't match up, or the user has given an argument
++	 to an attribute that doesn't accept one, or didn't give an argument
++	 to an attribute that expects one, fail to match.  */
++      if (strcmp (str_to_check, p_attr->name) != 0)
++	continue;
++
++      bool attr_need_arg_p = p_attr->attr_type == aarch64_attr_custom
++			      || p_attr->attr_type == aarch64_attr_enum;
++
++      if (attr_need_arg_p ^ (arg != NULL))
++	{
++	  error ("target %s %qs does not accept an argument",
++		  pragma_or_attr, str_to_check);
++	  return false;
++	}
++
++      /* If the name matches but the attribute does not allow "no-" versions
++	 then we can't match.  */
++      if (invert && !p_attr->allow_neg)
++	{
++	  error ("target %s %qs does not allow a negated form",
++		  pragma_or_attr, str_to_check);
++	  return false;
++	}
++
++      switch (p_attr->attr_type)
++	{
++	/* Has a custom handler registered.
++	   For example, cpu=, arch=, tune=.  */
++	  case aarch64_attr_custom:
++	    gcc_assert (p_attr->handler);
++	    if (!p_attr->handler (arg, pragma_or_attr))
++	      return false;
++	    break;
++
++	  /* Either set or unset a boolean option.  */
++	  case aarch64_attr_bool:
++	    {
++	      struct cl_decoded_option decoded;
++
++	      generate_option (p_attr->opt_num, NULL, !invert,
++			       CL_TARGET, &decoded);
++	      aarch64_handle_option (&global_options, &global_options_set,
++				      &decoded, input_location);
++	      break;
++	    }
++	  /* Set or unset a bit in the target_flags.  aarch64_handle_option
++	     should know what mask to apply given the option number.  */
++	  case aarch64_attr_mask:
++	    {
++	      struct cl_decoded_option decoded;
++	      /* We only need to specify the option number.
++		 aarch64_handle_option will know which mask to apply.  */
++	      decoded.opt_index = p_attr->opt_num;
++	      decoded.value = !invert;
++	      aarch64_handle_option (&global_options, &global_options_set,
++				      &decoded, input_location);
++	      break;
++	    }
++	  /* Use the option setting machinery to set an option to an enum.  */
++	  case aarch64_attr_enum:
++	    {
++	      gcc_assert (arg);
++	      bool valid;
++	      int value;
++	      valid = opt_enum_arg_to_value (p_attr->opt_num, arg,
++					      &value, CL_TARGET);
++	      if (valid)
++		{
++		  set_option (&global_options, NULL, p_attr->opt_num, value,
++			      NULL, DK_UNSPECIFIED, input_location,
++			      global_dc);
++		}
++	      else
++		{
++		  error ("target %s %s=%s is not valid",
++			 pragma_or_attr, str_to_check, arg);
++		}
++	      break;
++	    }
++	  default:
++	    gcc_unreachable ();
++	}
++    }
++
++  return true;
++}
++
++/* Count how many times the character C appears in
++   NULL-terminated string STR.  */
++
++static unsigned int
++num_occurences_in_str (char c, char *str)
++{
++  unsigned int res = 0;
++  while (*str != '\0')
++    {
++      if (*str == c)
++	res++;
++
++      str++;
++    }
++
++  return res;
++}
++
++/* Parse the tree in ARGS that contains the target attribute information
++   and update the global target options space.  PRAGMA_OR_ATTR is a string
++   to be used in error messages, specifying whether this is processing
++   a target attribute or a target pragma.  */
++
++bool
++aarch64_process_target_attr (tree args, const char* pragma_or_attr)
++{
++  if (TREE_CODE (args) == TREE_LIST)
++    {
++      do
++	{
++	  tree head = TREE_VALUE (args);
++	  if (head)
++	    {
++	      if (!aarch64_process_target_attr (head, pragma_or_attr))
++		return false;
++	    }
++	  args = TREE_CHAIN (args);
++	} while (args);
++
++      return true;
++    }
++  /* We expect to find a string to parse.  */
++  gcc_assert (TREE_CODE (args) == STRING_CST);
++
++  size_t len = strlen (TREE_STRING_POINTER (args));
++  char *str_to_check = (char *) alloca (len + 1);
++  strcpy (str_to_check, TREE_STRING_POINTER (args));
++
++  if (len == 0)
++    {
++      error ("malformed target %s value", pragma_or_attr);
++      return false;
++    }
++
++  /* Used to catch empty spaces between commas i.e.
++     attribute ((target ("attr1,,attr2"))).  */
++  unsigned int num_commas = num_occurences_in_str (',', str_to_check);
++
++  /* Handle multiple target attributes separated by ','.  */
++  char *token = strtok (str_to_check, ",");
++
++  unsigned int num_attrs = 0;
++  while (token)
++    {
++      num_attrs++;
++      if (!aarch64_process_one_target_attr (token, pragma_or_attr))
++	{
++	  error ("target %s %qs is invalid", pragma_or_attr, token);
++	  return false;
++	}
++
++      token = strtok (NULL, ",");
++    }
++
++  if (num_attrs != num_commas + 1)
++    {
++      error ("malformed target %s list %qs",
++	      pragma_or_attr, TREE_STRING_POINTER (args));
++      return false;
++    }
++
++  return true;
++}
++
++/* Implement TARGET_OPTION_VALID_ATTRIBUTE_P.  This is used to
++   process attribute ((target ("..."))).  */
++
++static bool
++aarch64_option_valid_attribute_p (tree fndecl, tree, tree args, int)
++{
++  struct cl_target_option cur_target;
++  bool ret;
++  tree old_optimize;
++  tree new_target, new_optimize;
++  tree existing_target = DECL_FUNCTION_SPECIFIC_TARGET (fndecl);
++
++  /* If what we're processing is the current pragma string then the
++     target option node is already stored in target_option_current_node
++     by aarch64_pragma_target_parse in aarch64-c.c.  Use that to avoid
++     having to re-parse the string.  This is especially useful to keep
++     arm_neon.h compile times down since that header contains a lot
++     of intrinsics enclosed in pragmas.  */
++  if (!existing_target && args == current_target_pragma)
++    {
++      DECL_FUNCTION_SPECIFIC_TARGET (fndecl) = target_option_current_node;
++      return true;
++    }
++  tree func_optimize = DECL_FUNCTION_SPECIFIC_OPTIMIZATION (fndecl);
++
++  old_optimize = build_optimization_node (&global_options);
++  func_optimize = DECL_FUNCTION_SPECIFIC_OPTIMIZATION (fndecl);
++
++  /* If the function changed the optimization levels as well as setting
++     target options, start with the optimizations specified.  */
++  if (func_optimize && func_optimize != old_optimize)
++    cl_optimization_restore (&global_options,
++			     TREE_OPTIMIZATION (func_optimize));
++
++  /* Save the current target options to restore at the end.  */
++  cl_target_option_save (&cur_target, &global_options);
++
++  /* If fndecl already has some target attributes applied to it, unpack
++     them so that we add this attribute on top of them, rather than
++     overwriting them.  */
++  if (existing_target)
++    {
++      struct cl_target_option *existing_options
++	= TREE_TARGET_OPTION (existing_target);
++
++      if (existing_options)
++	cl_target_option_restore (&global_options, existing_options);
++    }
++  else
++    cl_target_option_restore (&global_options,
++			TREE_TARGET_OPTION (target_option_current_node));
++
++
++  ret = aarch64_process_target_attr (args, "attribute");
++
++  /* Set up any additional state.  */
++  if (ret)
++    {
++      aarch64_override_options_internal (&global_options);
++      /* Initialize SIMD builtins if we haven't already.
++	 Set current_target_pragma to NULL for the duration so that
++	 the builtin initialization code doesn't try to tag the functions
++	 being built with the attributes specified by any current pragma, thus
++	 going into an infinite recursion.  */
++      if (TARGET_SIMD)
++	{
++	  tree saved_current_target_pragma = current_target_pragma;
++	  current_target_pragma = NULL;
++	  aarch64_init_simd_builtins ();
++	  current_target_pragma = saved_current_target_pragma;
++	}
++      new_target = build_target_option_node (&global_options);
++    }
++  else
++    new_target = NULL;
++
++  new_optimize = build_optimization_node (&global_options);
++
++  if (fndecl && ret)
++    {
++      DECL_FUNCTION_SPECIFIC_TARGET (fndecl) = new_target;
++
++      if (old_optimize != new_optimize)
++	DECL_FUNCTION_SPECIFIC_OPTIMIZATION (fndecl) = new_optimize;
++    }
++
++  cl_target_option_restore (&global_options, &cur_target);
++
++  if (old_optimize != new_optimize)
++    cl_optimization_restore (&global_options,
++			     TREE_OPTIMIZATION (old_optimize));
++  return ret;
++}
++
++/* Helper for aarch64_can_inline_p.  In the case where CALLER and CALLEE are
++   tri-bool options (yes, no, don't care) and the default value is
++   DEF, determine whether to reject inlining.  */
++
++static bool
++aarch64_tribools_ok_for_inlining_p (int caller, int callee,
++				     int dont_care, int def)
++{
++  /* If the callee doesn't care, always allow inlining.  */
++  if (callee == dont_care)
++    return true;
++
++  /* If the caller doesn't care, always allow inlining.  */
++  if (caller == dont_care)
++    return true;
++
++  /* Otherwise, allow inlining if either the callee and caller values
++     agree, or if the callee is using the default value.  */
++  return (callee == caller || callee == def);
++}
++
++/* Implement TARGET_CAN_INLINE_P.  Decide whether it is valid
++   to inline CALLEE into CALLER based on target-specific info.
++   Make sure that the caller and callee have compatible architectural
++   features.  Then go through the other possible target attributes
++   and see if they can block inlining.  Try not to reject always_inline
++   callees unless they are incompatible architecturally.  */
++
++static bool
++aarch64_can_inline_p (tree caller, tree callee)
++{
++  tree caller_tree = DECL_FUNCTION_SPECIFIC_TARGET (caller);
++  tree callee_tree = DECL_FUNCTION_SPECIFIC_TARGET (callee);
++
++  /* If callee has no option attributes, then it is ok to inline.  */
++  if (!callee_tree)
++    return true;
++
++  struct cl_target_option *caller_opts
++	= TREE_TARGET_OPTION (caller_tree ? caller_tree
++					   : target_option_default_node);
++
++  struct cl_target_option *callee_opts = TREE_TARGET_OPTION (callee_tree);
++
++
++  /* Callee's ISA flags should be a subset of the caller's.  */
++  if ((caller_opts->x_aarch64_isa_flags & callee_opts->x_aarch64_isa_flags)
++       != callee_opts->x_aarch64_isa_flags)
++    return false;
++
++  /* Allow non-strict aligned functions inlining into strict
++     aligned ones.  */
++  if ((TARGET_STRICT_ALIGN_P (caller_opts->x_target_flags)
++       != TARGET_STRICT_ALIGN_P (callee_opts->x_target_flags))
++      && !(!TARGET_STRICT_ALIGN_P (callee_opts->x_target_flags)
++	   && TARGET_STRICT_ALIGN_P (caller_opts->x_target_flags)))
++    return false;
++
++  bool always_inline = lookup_attribute ("always_inline",
++					  DECL_ATTRIBUTES (callee));
++
++  /* If the architectural features match up and the callee is always_inline
++     then the other attributes don't matter.  */
++  if (always_inline)
++    return true;
++
++  if (caller_opts->x_aarch64_cmodel_var
++      != callee_opts->x_aarch64_cmodel_var)
++    return false;
++
++  if (caller_opts->x_aarch64_tls_dialect
++      != callee_opts->x_aarch64_tls_dialect)
++    return false;
++
++  /* Honour explicit requests to workaround errata.  */
++  if (!aarch64_tribools_ok_for_inlining_p (
++	  caller_opts->x_aarch64_fix_a53_err835769,
++	  callee_opts->x_aarch64_fix_a53_err835769,
++	  2, TARGET_FIX_ERR_A53_835769_DEFAULT))
++    return false;
++
++  /* If the user explicitly specified -momit-leaf-frame-pointer for the
++     caller and calle and they don't match up, reject inlining.  */
++  if (!aarch64_tribools_ok_for_inlining_p (
++	  caller_opts->x_flag_omit_leaf_frame_pointer,
++	  callee_opts->x_flag_omit_leaf_frame_pointer,
++	  2, 1))
++    return false;
++
++  /* If the callee has specific tuning overrides, respect them.  */
++  if (callee_opts->x_aarch64_override_tune_string != NULL
++      && caller_opts->x_aarch64_override_tune_string == NULL)
++    return false;
++
++  /* If the user specified tuning override strings for the
++     caller and callee and they don't match up, reject inlining.
++     We just do a string compare here, we don't analyze the meaning
++     of the string, as it would be too costly for little gain.  */
++  if (callee_opts->x_aarch64_override_tune_string
++      && caller_opts->x_aarch64_override_tune_string
++      && (strcmp (callee_opts->x_aarch64_override_tune_string,
++		  caller_opts->x_aarch64_override_tune_string) != 0))
++    return false;
++
++  return true;
+ }
+ 
+ /* Return true if SYMBOL_REF X binds locally.  */
+@@ -6988,7 +8393,7 @@ aarch64_classify_tls_symbol (rtx x)
+       return SYMBOL_SMALL_GOTTPREL;
+ 
+     case TLS_MODEL_LOCAL_EXEC:
+-      return SYMBOL_SMALL_TPREL;
++      return SYMBOL_TLSLE;
+ 
+     case TLS_MODEL_EMULATED:
+     case TLS_MODEL_NONE:
+@@ -7104,16 +8509,13 @@ aarch64_valid_floating_const (machine_mode mode, rtx x)
+   if (!CONST_DOUBLE_P (x))
+     return false;
+ 
+-  /* TODO: We could handle moving 0.0 to a TFmode register,
+-     but first we would like to refactor the movtf_aarch64
+-     to be more amicable to split moves properly and
+-     correctly gate on TARGET_SIMD.  For now - reject all
+-     constants which are not to SFmode or DFmode registers.  */
++  if (aarch64_float_const_zero_rtx_p (x))
++    return true;
++
++  /* We only handle moving 0.0 to a TFmode register.  */
+   if (!(mode == SFmode || mode == DFmode))
+     return false;
+ 
+-  if (aarch64_float_const_zero_rtx_p (x))
+-    return true;
+   return aarch64_float_const_representable_p (x);
+ }
+ 
+@@ -7247,9 +8649,7 @@ aarch64_expand_builtin_va_start (tree valist, rtx nextarg ATTRIBUTE_UNUSED)
+ 
+   if (!TARGET_FLOAT)
+     {
+-      if (cum->aapcs_nvrn > 0)
+-	sorry ("%qs and floating point or vector arguments",
+-	       "-mgeneral-regs-only");
++      gcc_assert (cum->aapcs_nvrn == 0);
+       vr_save_area_size = 0;
+     }
+ 
+@@ -7356,8 +8756,7 @@ aarch64_gimplify_va_arg_expr (tree valist, tree type, gimple_seq *pre_p,
+     {
+       /* TYPE passed in fp/simd registers.  */
+       if (!TARGET_FLOAT)
+-	sorry ("%qs and floating point or vector arguments",
+-	       "-mgeneral-regs-only");
++	aarch64_err_no_fpadvsimd (mode, "varargs");
+ 
+       f_top = build3 (COMPONENT_REF, TREE_TYPE (f_vrtop),
+ 		      unshare_expr (valist), f_vrtop, NULL_TREE);
+@@ -7594,9 +8993,7 @@ aarch64_setup_incoming_varargs (cumulative_args_t cum_v, machine_mode mode,
+ 
+   if (!TARGET_FLOAT)
+     {
+-      if (local_cum.aapcs_nvrn > 0)
+-	sorry ("%qs and floating point or vector arguments",
+-	       "-mgeneral-regs-only");
++      gcc_assert (local_cum.aapcs_nvrn == 0);
+       vr_saved = 0;
+     }
+ 
+@@ -7830,6 +9227,26 @@ aapcs_vfp_sub_candidate (const_tree type, machine_mode *modep)
+   return -1;
+ }
+ 
++/* Return TRUE if the type, as described by TYPE and MODE, is a short vector
++   type as described in AAPCS64 \S 4.1.2.
++
++   See the comment above aarch64_composite_type_p for the notes on MODE.  */
++
++static bool
++aarch64_short_vector_p (const_tree type,
++			machine_mode mode)
++{
++  HOST_WIDE_INT size = -1;
++
++  if (type && TREE_CODE (type) == VECTOR_TYPE)
++    size = int_size_in_bytes (type);
++  else if (GET_MODE_CLASS (mode) == MODE_VECTOR_INT
++	    || GET_MODE_CLASS (mode) == MODE_VECTOR_FLOAT)
++    size = GET_MODE_SIZE (mode);
++
++  return (size == 8 || size == 16);
++}
++
+ /* Return TRUE if the type, as described by TYPE and MODE, is a composite
+    type as described in AAPCS64 \S 4.3.  This includes aggregate, union and
+    array types.  The C99 floating-point complex types are also considered
+@@ -7851,36 +9268,18 @@ static bool
+ aarch64_composite_type_p (const_tree type,
+ 			  machine_mode mode)
+ {
+-  if (type && (AGGREGATE_TYPE_P (type) || TREE_CODE (type) == COMPLEX_TYPE))
+-    return true;
++  if (aarch64_short_vector_p (type, mode))
++    return false;
+ 
+-  if (mode == BLKmode
+-      || GET_MODE_CLASS (mode) == MODE_COMPLEX_FLOAT
+-      || GET_MODE_CLASS (mode) == MODE_COMPLEX_INT)
++  if (type && (AGGREGATE_TYPE_P (type) || TREE_CODE (type) == COMPLEX_TYPE))
+     return true;
+ 
+-  return false;
+-}
+-
+-/* Return TRUE if the type, as described by TYPE and MODE, is a short vector
+-   type as described in AAPCS64 \S 4.1.2.
+-
+-   See the comment above aarch64_composite_type_p for the notes on MODE.  */
+-
+-static bool
+-aarch64_short_vector_p (const_tree type,
+-			machine_mode mode)
+-{
+-  HOST_WIDE_INT size = -1;
+-
+-  if (type && TREE_CODE (type) == VECTOR_TYPE)
+-    size = int_size_in_bytes (type);
+-  else if (!aarch64_composite_type_p (type, mode)
+-	   && (GET_MODE_CLASS (mode) == MODE_VECTOR_INT
+-	       || GET_MODE_CLASS (mode) == MODE_VECTOR_FLOAT))
+-    size = GET_MODE_SIZE (mode);
++  if (mode == BLKmode
++      || GET_MODE_CLASS (mode) == MODE_COMPLEX_FLOAT
++      || GET_MODE_CLASS (mode) == MODE_COMPLEX_INT)
++    return true;
+ 
+-  return (size == 8 || size == 16) ? true : false;
++  return false;
+ }
+ 
+ /* Return TRUE if an argument, whose type is described by TYPE and MODE,
+@@ -7954,6 +9353,7 @@ aarch64_vector_mode_supported_p (machine_mode mode)
+ 	  || mode == V2SImode  || mode == V4HImode
+ 	  || mode == V8QImode || mode == V2SFmode
+ 	  || mode == V4SFmode || mode == V2DFmode
++	  || mode == V4HFmode || mode == V8HFmode
+ 	  || mode == V1DFmode))
+     return true;
+ 
+@@ -8029,6 +9429,10 @@ aarch64_mangle_type (const_tree type)
+   if (lang_hooks.types_compatible_p (CONST_CAST_TREE (type), va_list_type))
+     return "St9__va_list";
+ 
++  /* Half-precision float.  */
++  if (TREE_CODE (type) == REAL_TYPE && TYPE_PRECISION (type) == 16)
++    return "Dh";
++
+   /* Mangle AArch64-specific internal types.  TYPE_NAME is non-NULL_TREE for
+      builtin types.  */
+   if (TYPE_NAME (type) != NULL)
+@@ -8130,7 +9534,7 @@ aarch64_madd_needs_nop (rtx_insn* insn)
+   rtx_insn *prev;
+   rtx body;
+ 
+-  if (!aarch64_fix_a53_err835769)
++  if (!TARGET_FIX_ERR_A53_835769)
+     return false;
+ 
+   if (recog_memoized (insn) < 0)
+@@ -8575,30 +9979,12 @@ aarch64_simd_lane_bounds (rtx operand, HOST_WIDE_INT low, HOST_WIDE_INT high,
+   if (lane < low || lane >= high)
+   {
+     if (exp)
+-      error ("%Klane %ld out of range %ld - %ld", exp, lane, low, high - 1);
++      error ("%Klane %wd out of range %wd - %wd", exp, lane, low, high - 1);
+     else
+-      error ("lane %ld out of range %ld - %ld", lane, low, high - 1);
++      error ("lane %wd out of range %wd - %wd", lane, low, high - 1);
+   }
+ }
+ 
+-/* Emit code to place a AdvSIMD pair result in memory locations (with equal
+-   registers).  */
+-void
+-aarch64_simd_emit_pair_result_insn (machine_mode mode,
+-			    rtx (*intfn) (rtx, rtx, rtx), rtx destaddr,
+-                            rtx op1)
+-{
+-  rtx mem = gen_rtx_MEM (mode, destaddr);
+-  rtx tmp1 = gen_reg_rtx (mode);
+-  rtx tmp2 = gen_reg_rtx (mode);
+-
+-  emit_insn (intfn (tmp1, op1, tmp2));
+-
+-  emit_move_insn (mem, tmp1);
+-  mem = adjust_address (mem, mode, GET_MODE_SIZE (mode));
+-  emit_move_insn (mem, tmp2);
+-}
+-
+ /* Return TRUE if OP is a valid vector addressing mode.  */
+ bool
+ aarch64_simd_mem_operand_p (rtx op)
+@@ -8659,7 +10045,7 @@ aarch64_simd_attr_length_move (rtx_insn *insn)
+ }
+ 
+ /* Compute and return the length of aarch64_simd_reglist<mode>, where <mode> is
+-   one of VSTRUCT modes: OI, CI, EI, or XI.  */
++   one of VSTRUCT modes: OI, CI, or XI.  */
+ int
+ aarch64_simd_attr_length_rglist (enum machine_mode mode)
+ {
+@@ -8781,22 +10167,19 @@ aarch64_expand_vector_init (rtx target, rtx vals)
+   machine_mode mode = GET_MODE (target);
+   machine_mode inner_mode = GET_MODE_INNER (mode);
+   int n_elts = GET_MODE_NUNITS (mode);
+-  int n_var = 0, one_var = -1;
++  int n_var = 0;
++  rtx any_const = NULL_RTX;
+   bool all_same = true;
+-  rtx x, mem;
+-  int i;
+ 
+-  x = XVECEXP (vals, 0, 0);
+-  if (!CONST_INT_P (x) && !CONST_DOUBLE_P (x))
+-    n_var = 1, one_var = 0;
+-  
+-  for (i = 1; i < n_elts; ++i)
++  for (int i = 0; i < n_elts; ++i)
+     {
+-      x = XVECEXP (vals, 0, i);
++      rtx x = XVECEXP (vals, 0, i);
+       if (!CONST_INT_P (x) && !CONST_DOUBLE_P (x))
+-	++n_var, one_var = i;
++	++n_var;
++      else
++	any_const = x;
+ 
+-      if (!rtx_equal_p (x, XVECEXP (vals, 0, 0)))
++      if (i > 0 && !rtx_equal_p (x, XVECEXP (vals, 0, 0)))
+ 	all_same = false;
+     }
+ 
+@@ -8813,36 +10196,60 @@ aarch64_expand_vector_init (rtx target, rtx vals)
+   /* Splat a single non-constant element if we can.  */
+   if (all_same)
+     {
+-      x = copy_to_mode_reg (inner_mode, XVECEXP (vals, 0, 0));
++      rtx x = copy_to_mode_reg (inner_mode, XVECEXP (vals, 0, 0));
+       aarch64_emit_move (target, gen_rtx_VEC_DUPLICATE (mode, x));
+       return;
+     }
+ 
+-  /* One field is non-constant.  Load constant then overwrite varying
+-     field.  This is more efficient than using the stack.  */
+-  if (n_var == 1)
++  /* Half the fields (or less) are non-constant.  Load constant then overwrite
++     varying fields.  Hope that this is more efficient than using the stack.  */
++  if (n_var <= n_elts/2)
+     {
+       rtx copy = copy_rtx (vals);
+-      rtx index = GEN_INT (one_var);
+-      enum insn_code icode;
+ 
+-      /* Load constant part of vector, substitute neighboring value for
+-	 varying element.  */
+-      XVECEXP (copy, 0, one_var) = XVECEXP (vals, 0, one_var ^ 1);
++      /* Load constant part of vector.  We really don't care what goes into the
++	 parts we will overwrite, but we're more likely to be able to load the
++	 constant efficiently if it has fewer, larger, repeating parts
++	 (see aarch64_simd_valid_immediate).  */
++      for (int i = 0; i < n_elts; i++)
++	{
++	  rtx x = XVECEXP (vals, 0, i);
++	  if (CONST_INT_P (x) || CONST_DOUBLE_P (x))
++	    continue;
++	  rtx subst = any_const;
++	  for (int bit = n_elts / 2; bit > 0; bit /= 2)
++	    {
++	      /* Look in the copied vector, as more elements are const.  */
++	      rtx test = XVECEXP (copy, 0, i ^ bit);
++	      if (CONST_INT_P (test) || CONST_DOUBLE_P (test))
++		{
++		  subst = test;
++		  break;
++		}
++	    }
++	  XVECEXP (copy, 0, i) = subst;
++	}
+       aarch64_expand_vector_init (target, copy);
+ 
+-      /* Insert variable.  */
+-      x = copy_to_mode_reg (inner_mode, XVECEXP (vals, 0, one_var));
+-      icode = optab_handler (vec_set_optab, mode);
++      /* Insert variables.  */
++      enum insn_code icode = optab_handler (vec_set_optab, mode);
+       gcc_assert (icode != CODE_FOR_nothing);
+-      emit_insn (GEN_FCN (icode) (target, x, index));
++
++      for (int i = 0; i < n_elts; i++)
++	{
++	  rtx x = XVECEXP (vals, 0, i);
++	  if (CONST_INT_P (x) || CONST_DOUBLE_P (x))
++	    continue;
++	  x = copy_to_mode_reg (inner_mode, x);
++	  emit_insn (GEN_FCN (icode) (target, x, GEN_INT (i)));
++	}
+       return;
+     }
+ 
+   /* Construct the vector in memory one field at a time
+      and load the whole vector.  */
+-  mem = assign_stack_temp (mode, GET_MODE_SIZE (mode));
+-  for (i = 0; i < n_elts; i++)
++  rtx mem = assign_stack_temp (mode, GET_MODE_SIZE (mode));
++  for (int i = 0; i < n_elts; i++)
+     emit_move_insn (adjust_address_nv (mem, inner_mode,
+ 				    i * GET_MODE_SIZE (inner_mode)),
+ 		    XVECEXP (vals, 0, i));
+@@ -8858,80 +10265,6 @@ aarch64_shift_truncation_mask (machine_mode mode)
+      || aarch64_vect_struct_mode_p (mode)) ? 0 : (GET_MODE_BITSIZE (mode) - 1);
+ }
+ 
+-#ifndef TLS_SECTION_ASM_FLAG
+-#define TLS_SECTION_ASM_FLAG 'T'
+-#endif
+-
+-void
+-aarch64_elf_asm_named_section (const char *name, unsigned int flags,
+-			       tree decl ATTRIBUTE_UNUSED)
+-{
+-  char flagchars[10], *f = flagchars;
+-
+-  /* If we have already declared this section, we can use an
+-     abbreviated form to switch back to it -- unless this section is
+-     part of a COMDAT groups, in which case GAS requires the full
+-     declaration every time.  */
+-  if (!(HAVE_COMDAT_GROUP && (flags & SECTION_LINKONCE))
+-      && (flags & SECTION_DECLARED))
+-    {
+-      fprintf (asm_out_file, "\t.section\t%s\n", name);
+-      return;
+-    }
+-
+-  if (!(flags & SECTION_DEBUG))
+-    *f++ = 'a';
+-  if (flags & SECTION_WRITE)
+-    *f++ = 'w';
+-  if (flags & SECTION_CODE)
+-    *f++ = 'x';
+-  if (flags & SECTION_SMALL)
+-    *f++ = 's';
+-  if (flags & SECTION_MERGE)
+-    *f++ = 'M';
+-  if (flags & SECTION_STRINGS)
+-    *f++ = 'S';
+-  if (flags & SECTION_TLS)
+-    *f++ = TLS_SECTION_ASM_FLAG;
+-  if (HAVE_COMDAT_GROUP && (flags & SECTION_LINKONCE))
+-    *f++ = 'G';
+-  *f = '\0';
+-
+-  fprintf (asm_out_file, "\t.section\t%s,\"%s\"", name, flagchars);
+-
+-  if (!(flags & SECTION_NOTYPE))
+-    {
+-      const char *type;
+-      const char *format;
+-
+-      if (flags & SECTION_BSS)
+-	type = "nobits";
+-      else
+-	type = "progbits";
+-
+-#ifdef TYPE_OPERAND_FMT
+-      format = "," TYPE_OPERAND_FMT;
+-#else
+-      format = ",@%s";
+-#endif
+-
+-      fprintf (asm_out_file, format, type);
+-
+-      if (flags & SECTION_ENTSIZE)
+-	fprintf (asm_out_file, ",%d", flags & SECTION_ENTSIZE);
+-      if (HAVE_COMDAT_GROUP && (flags & SECTION_LINKONCE))
+-	{
+-	  if (TREE_CODE (decl) == IDENTIFIER_NODE)
+-	    fprintf (asm_out_file, ",%s,comdat", IDENTIFIER_POINTER (decl));
+-	  else
+-	    fprintf (asm_out_file, ",%s,comdat",
+-		     IDENTIFIER_POINTER (DECL_COMDAT_GROUP (decl)));
+-	}
+-    }
+-
+-  putc ('\n', asm_out_file);
+-}
+-
+ /* Select a format to encode pointers in exception handling data.  */
+ int
+ aarch64_asm_preferred_eh_data_format (int code ATTRIBUTE_UNUSED, int global)
+@@ -8955,6 +10288,45 @@ aarch64_asm_preferred_eh_data_format (int code ATTRIBUTE_UNUSED, int global)
+    return (global ? DW_EH_PE_indirect : 0) | DW_EH_PE_pcrel | type;
+ }
+ 
++/* Implement ASM_DECLARE_FUNCTION_NAME.  Output the ISA features used
++   by the function fndecl.  */
++
++void
++aarch64_declare_function_name (FILE *stream, const char* name,
++				tree fndecl)
++{
++  tree target_parts = DECL_FUNCTION_SPECIFIC_TARGET (fndecl);
++
++  struct cl_target_option *targ_options;
++  if (target_parts)
++    targ_options = TREE_TARGET_OPTION (target_parts);
++  else
++    targ_options = TREE_TARGET_OPTION (target_option_current_node);
++  gcc_assert (targ_options);
++
++  const struct processor *this_arch
++    = aarch64_get_arch (targ_options->x_explicit_arch);
++
++  unsigned long isa_flags = targ_options->x_aarch64_isa_flags;
++  std::string extension
++    = aarch64_get_extension_string_for_isa_flags (isa_flags);
++  asm_fprintf (asm_out_file, "\t.arch %s%s\n",
++	       this_arch->name, extension.c_str ());
++
++  /* Print the cpu name we're tuning for in the comments, might be
++     useful to readers of the generated asm.  */
++
++  const struct processor *this_tune
++    = aarch64_get_tune_cpu (targ_options->x_explicit_tune_core);
++
++  asm_fprintf (asm_out_file, "\t" ASM_COMMENT_START ".tune %s\n",
++	       this_tune->name);
++
++  /* Don't forget the type directive for ELF.  */
++  ASM_OUTPUT_TYPE_DIRECTIVE (stream, name, "function");
++  ASM_OUTPUT_LABEL (stream, name);
++}
++
+ /* Emit load exclusive.  */
+ 
+ static void
+@@ -9015,7 +10387,23 @@ aarch64_expand_compare_and_swap (rtx operands[])
+ {
+   rtx bval, rval, mem, oldval, newval, is_weak, mod_s, mod_f, x;
+   machine_mode mode, cmp_mode;
+-  rtx (*gen) (rtx, rtx, rtx, rtx, rtx, rtx, rtx);
++  typedef rtx (*gen_cas_fn) (rtx, rtx, rtx, rtx, rtx, rtx, rtx);
++  int idx;
++  gen_cas_fn gen;
++  const gen_cas_fn split_cas[] =
++  {
++    gen_aarch64_compare_and_swapqi,
++    gen_aarch64_compare_and_swaphi,
++    gen_aarch64_compare_and_swapsi,
++    gen_aarch64_compare_and_swapdi
++  };
++  const gen_cas_fn atomic_cas[] =
++  {
++    gen_aarch64_compare_and_swapqi_lse,
++    gen_aarch64_compare_and_swaphi_lse,
++    gen_aarch64_compare_and_swapsi_lse,
++    gen_aarch64_compare_and_swapdi_lse
++  };
+ 
+   bval = operands[0];
+   rval = operands[1];
+@@ -9060,13 +10448,17 @@ aarch64_expand_compare_and_swap (rtx operands[])
+ 
+   switch (mode)
+     {
+-    case QImode: gen = gen_atomic_compare_and_swapqi_1; break;
+-    case HImode: gen = gen_atomic_compare_and_swaphi_1; break;
+-    case SImode: gen = gen_atomic_compare_and_swapsi_1; break;
+-    case DImode: gen = gen_atomic_compare_and_swapdi_1; break;
++    case QImode: idx = 0; break;
++    case HImode: idx = 1; break;
++    case SImode: idx = 2; break;
++    case DImode: idx = 3; break;
+     default:
+       gcc_unreachable ();
+     }
++  if (TARGET_LSE)
++    gen = atomic_cas[idx];
++  else
++    gen = split_cas[idx];
+ 
+   emit_insn (gen (rval, mem, oldval, newval, is_weak, mod_s, mod_f));
+ 
+@@ -9078,6 +10470,32 @@ aarch64_expand_compare_and_swap (rtx operands[])
+   emit_insn (gen_rtx_SET (VOIDmode, bval, x));
+ }
+ 
++/* Test whether the target supports using a atomic load-operate instruction.
++   CODE is the operation and AFTER is TRUE if the data in memory after the
++   operation should be returned and FALSE if the data before the operation
++   should be returned.  Returns FALSE if the operation isn't supported by the
++   architecture.  */
++
++bool
++aarch64_atomic_ldop_supported_p (enum rtx_code code)
++{
++  if (!TARGET_LSE)
++    return false;
++
++  switch (code)
++    {
++    case SET:
++    case AND:
++    case IOR:
++    case XOR:
++    case MINUS:
++    case PLUS:
++      return true;
++    default:
++      return false;
++    }
++}
++
+ /* Emit a barrier, that is appropriate for memory model MODEL, at the end of a
+    sequence implementing an atomic operation.  */
+ 
+@@ -9095,6 +10513,42 @@ aarch64_emit_post_barrier (enum memmodel model)
+     }
+ }
+ 
++/* Emit an atomic compare-and-swap operation.  RVAL is the destination register
++   for the data in memory.  EXPECTED is the value expected to be in memory.
++   DESIRED is the value to store to memory.  MEM is the memory location.  MODEL
++   is the memory ordering to use.  */
++
++void
++aarch64_gen_atomic_cas (rtx rval, rtx mem,
++			rtx expected, rtx desired,
++			rtx model)
++{
++  rtx (*gen) (rtx, rtx, rtx, rtx);
++  machine_mode mode;
++
++  mode = GET_MODE (mem);
++
++  switch (mode)
++    {
++    case QImode: gen = gen_aarch64_atomic_casqi; break;
++    case HImode: gen = gen_aarch64_atomic_cashi; break;
++    case SImode: gen = gen_aarch64_atomic_cassi; break;
++    case DImode: gen = gen_aarch64_atomic_casdi; break;
++    default:
++      gcc_unreachable ();
++    }
++
++  /* Move the expected value into the CAS destination register.  */
++  emit_insn (gen_rtx_SET (VOIDmode, rval, expected));
++
++  /* Emit the CAS.  */
++  emit_insn (gen (rval, mem, desired, model));
++
++  /* Compare the expected value with the value loaded by the CAS, to establish
++     whether the swap was made.  */
++  aarch64_gen_compare_reg (EQ, rval, expected);
++}
++
+ /* Split a compare and swap pattern.  */
+ 
+ void
+@@ -9163,11 +10617,257 @@ aarch64_split_compare_and_swap (rtx operands[])
+     aarch64_emit_post_barrier (model);
+ }
+ 
++/* Emit a BIC instruction.  */
++
++static void
++aarch64_emit_bic (machine_mode mode, rtx dst, rtx s1, rtx s2, int shift)
++{
++  rtx shift_rtx = GEN_INT (shift);
++  rtx (*gen) (rtx, rtx, rtx, rtx);
++
++  switch (mode)
++    {
++    case SImode: gen = gen_and_one_cmpl_lshrsi3; break;
++    case DImode: gen = gen_and_one_cmpl_lshrdi3; break;
++    default:
++      gcc_unreachable ();
++    }
++
++  emit_insn (gen (dst, s2, shift_rtx, s1));
++}
++
++/* Emit an atomic swap.  */
++
++static void
++aarch64_emit_atomic_swap (machine_mode mode, rtx dst, rtx value,
++			  rtx mem, rtx model)
++{
++  rtx (*gen) (rtx, rtx, rtx, rtx);
++
++  switch (mode)
++    {
++    case QImode: gen = gen_aarch64_atomic_swpqi; break;
++    case HImode: gen = gen_aarch64_atomic_swphi; break;
++    case SImode: gen = gen_aarch64_atomic_swpsi; break;
++    case DImode: gen = gen_aarch64_atomic_swpdi; break;
++    default:
++      gcc_unreachable ();
++    }
++
++  emit_insn (gen (dst, mem, value, model));
++}
++
++/* Operations supported by aarch64_emit_atomic_load_op.  */
++
++enum aarch64_atomic_load_op_code
++{
++  AARCH64_LDOP_PLUS,	/* A + B  */
++  AARCH64_LDOP_XOR,	/* A ^ B  */
++  AARCH64_LDOP_OR,	/* A | B  */
++  AARCH64_LDOP_BIC	/* A & ~B  */
++};
++
++/* Emit an atomic load-operate.  */
++
++static void
++aarch64_emit_atomic_load_op (enum aarch64_atomic_load_op_code code,
++			     machine_mode mode, rtx dst, rtx src,
++			     rtx mem, rtx model)
++{
++  typedef rtx (*aarch64_atomic_load_op_fn) (rtx, rtx, rtx, rtx);
++  const aarch64_atomic_load_op_fn plus[] =
++  {
++    gen_aarch64_atomic_loadaddqi,
++    gen_aarch64_atomic_loadaddhi,
++    gen_aarch64_atomic_loadaddsi,
++    gen_aarch64_atomic_loadadddi
++  };
++  const aarch64_atomic_load_op_fn eor[] =
++  {
++    gen_aarch64_atomic_loadeorqi,
++    gen_aarch64_atomic_loadeorhi,
++    gen_aarch64_atomic_loadeorsi,
++    gen_aarch64_atomic_loadeordi
++  };
++  const aarch64_atomic_load_op_fn ior[] =
++  {
++    gen_aarch64_atomic_loadsetqi,
++    gen_aarch64_atomic_loadsethi,
++    gen_aarch64_atomic_loadsetsi,
++    gen_aarch64_atomic_loadsetdi
++  };
++  const aarch64_atomic_load_op_fn bic[] =
++  {
++    gen_aarch64_atomic_loadclrqi,
++    gen_aarch64_atomic_loadclrhi,
++    gen_aarch64_atomic_loadclrsi,
++    gen_aarch64_atomic_loadclrdi
++  };
++  aarch64_atomic_load_op_fn gen;
++  int idx = 0;
++
++  switch (mode)
++    {
++    case QImode: idx = 0; break;
++    case HImode: idx = 1; break;
++    case SImode: idx = 2; break;
++    case DImode: idx = 3; break;
++    default:
++      gcc_unreachable ();
++    }
++
++  switch (code)
++    {
++    case AARCH64_LDOP_PLUS: gen = plus[idx]; break;
++    case AARCH64_LDOP_XOR: gen = eor[idx]; break;
++    case AARCH64_LDOP_OR: gen = ior[idx]; break;
++    case AARCH64_LDOP_BIC: gen = bic[idx]; break;
++    default:
++      gcc_unreachable ();
++    }
++
++  emit_insn (gen (dst, mem, src, model));
++}
++
++/* Emit an atomic load+operate.  CODE is the operation.  OUT_DATA is the
++   location to store the data read from memory.  OUT_RESULT is the location to
++   store the result of the operation.  MEM is the memory location to read and
++   modify.  MODEL_RTX is the memory ordering to use.  VALUE is the second
++   operand for the operation.  Either OUT_DATA or OUT_RESULT, but not both, can
++   be NULL.  */
++
++void
++aarch64_gen_atomic_ldop (enum rtx_code code, rtx out_data, rtx out_result,
++			 rtx mem, rtx value, rtx model_rtx)
++{
++  machine_mode mode = GET_MODE (mem);
++  machine_mode wmode = (mode == DImode ? DImode : SImode);
++  const bool short_mode = (mode < SImode);
++  aarch64_atomic_load_op_code ldop_code;
++  rtx src;
++  rtx x;
++
++  if (out_data)
++    out_data = gen_lowpart (mode, out_data);
++
++  if (out_result)
++    out_result = gen_lowpart (mode, out_result);
++
++  /* Make sure the value is in a register, putting it into a destination
++     register if it needs to be manipulated.  */
++  if (!register_operand (value, mode)
++      || code == AND || code == MINUS)
++    {
++      src = out_result ? out_result : out_data;
++      emit_move_insn (src, gen_lowpart (mode, value));
++    }
++  else
++    src = value;
++  gcc_assert (register_operand (src, mode));
++
++  /* Preprocess the data for the operation as necessary.  If the operation is
++     a SET then emit a swap instruction and finish.  */
++  switch (code)
++    {
++    case SET:
++      aarch64_emit_atomic_swap (mode, out_data, src, mem, model_rtx);
++      return;
++
++    case MINUS:
++      /* Negate the value and treat it as a PLUS.  */
++      {
++	rtx neg_src;
++
++	/* Resize the value if necessary.  */
++	if (short_mode)
++	  src = gen_lowpart (wmode, src);
++
++	neg_src = gen_rtx_NEG (wmode, src);
++	emit_insn (gen_rtx_SET (VOIDmode, src, neg_src));
++
++	if (short_mode)
++	  src = gen_lowpart (mode, src);
++      }
++      /* Fall-through.  */
++    case PLUS:
++      ldop_code = AARCH64_LDOP_PLUS;
++      break;
++
++    case IOR:
++      ldop_code = AARCH64_LDOP_OR;
++      break;
++
++    case XOR:
++      ldop_code = AARCH64_LDOP_XOR;
++      break;
++
++    case AND:
++      {
++	rtx not_src;
++
++	/* Resize the value if necessary.  */
++	if (short_mode)
++	  src = gen_lowpart (wmode, src);
++
++	not_src = gen_rtx_NOT (wmode, src);
++	emit_insn (gen_rtx_SET (VOIDmode, src, not_src));
++
++	if (short_mode)
++	  src = gen_lowpart (mode, src);
++      }
++      ldop_code = AARCH64_LDOP_BIC;
++      break;
++
++    default:
++      /* The operation can't be done with atomic instructions.  */
++      gcc_unreachable ();
++    }
++
++  aarch64_emit_atomic_load_op (ldop_code, mode, out_data, src, mem, model_rtx);
++
++  /* If necessary, calculate the data in memory after the update by redoing the
++     operation from values in registers.  */
++  if (!out_result)
++    return;
++
++  if (short_mode)
++    {
++      src = gen_lowpart (wmode, src);
++      out_data = gen_lowpart (wmode, out_data);
++      out_result = gen_lowpart (wmode, out_result);
++    }
++
++  x = NULL_RTX;
++
++  switch (code)
++    {
++    case MINUS:
++    case PLUS:
++      x = gen_rtx_PLUS (wmode, out_data, src);
++      break;
++    case IOR:
++      x = gen_rtx_IOR (wmode, out_data, src);
++      break;
++    case XOR:
++      x = gen_rtx_XOR (wmode, out_data, src);
++      break;
++    case AND:
++      aarch64_emit_bic (wmode, out_result, out_data, src, 0);
++      return;
++    default:
++      gcc_unreachable ();
++    }
++
++  emit_set_insn (out_result, x);
++
++  return;
++}
++
+ /* Split an atomic operation.  */
+ 
+ void
+ aarch64_split_atomic_op (enum rtx_code code, rtx old_out, rtx new_out, rtx mem,
+-		     rtx value, rtx model_rtx, rtx cond)
++			 rtx value, rtx model_rtx, rtx cond)
+ {
+   machine_mode mode = GET_MODE (mem);
+   machine_mode wmode = (mode == DImode ? DImode : SImode);
+@@ -9176,6 +10876,7 @@ aarch64_split_atomic_op (enum rtx_code code, rtx old_out, rtx new_out, rtx mem,
+   rtx_code_label *label;
+   rtx x;
+ 
++  /* Split the atomic operation into a sequence.  */
+   label = gen_label_rtx ();
+   emit_label (label);
+ 
+@@ -9236,33 +10937,30 @@ aarch64_split_atomic_op (enum rtx_code code, rtx old_out, rtx new_out, rtx mem,
+ }
+ 
+ static void
+-aarch64_print_extension (void)
++aarch64_init_libfuncs (void)
+ {
+-  const struct aarch64_option_extension *opt = NULL;
++   /* Half-precision float operations.  The compiler handles all operations
++     with NULL libfuncs by converting to SFmode.  */
+ 
+-  for (opt = all_extensions; opt->name != NULL; opt++)
+-    if ((aarch64_isa_flags & opt->flags_on) == opt->flags_on)
+-      asm_fprintf (asm_out_file, "+%s", opt->name);
++  /* Conversions.  */
++  set_conv_libfunc (trunc_optab, HFmode, SFmode, "__gnu_f2h_ieee");
++  set_conv_libfunc (sext_optab, SFmode, HFmode, "__gnu_h2f_ieee");
+ 
+-  asm_fprintf (asm_out_file, "\n");
+-}
++  /* Arithmetic.  */
++  set_optab_libfunc (add_optab, HFmode, NULL);
++  set_optab_libfunc (sdiv_optab, HFmode, NULL);
++  set_optab_libfunc (smul_optab, HFmode, NULL);
++  set_optab_libfunc (neg_optab, HFmode, NULL);
++  set_optab_libfunc (sub_optab, HFmode, NULL);
+ 
+-static void
+-aarch64_start_file (void)
+-{
+-  if (selected_arch)
+-    {
+-      asm_fprintf (asm_out_file, "\t.arch %s", selected_arch->name);
+-      aarch64_print_extension ();
+-    }
+-  else if (selected_cpu)
+-    {
+-      const char *truncated_name
+-	    = aarch64_rewrite_selected_cpu (selected_cpu->name);
+-      asm_fprintf (asm_out_file, "\t.cpu %s", truncated_name);
+-      aarch64_print_extension ();
+-    }
+-  default_file_start();
++  /* Comparisons.  */
++  set_optab_libfunc (eq_optab, HFmode, NULL);
++  set_optab_libfunc (ne_optab, HFmode, NULL);
++  set_optab_libfunc (lt_optab, HFmode, NULL);
++  set_optab_libfunc (le_optab, HFmode, NULL);
++  set_optab_libfunc (ge_optab, HFmode, NULL);
++  set_optab_libfunc (gt_optab, HFmode, NULL);
++  set_optab_libfunc (unord_optab, HFmode, NULL);
+ }
+ 
+ /* Target hook for c_mode_for_suffix.  */
+@@ -9303,7 +11001,8 @@ aarch64_float_const_representable_p (rtx x)
+   if (!CONST_DOUBLE_P (x))
+     return false;
+ 
+-  if (GET_MODE (x) == VOIDmode)
++  /* We don't support HFmode constants yet.  */
++  if (GET_MODE (x) == VOIDmode || GET_MODE (x) == HFmode)
+     return false;
+ 
+   REAL_VALUE_FROM_CONST_DOUBLE (r, x);
+@@ -10006,6 +11705,8 @@ aarch64_evpc_dup (struct expand_vec_perm_d *d)
+     case V4SImode: gen = gen_aarch64_dup_lanev4si; break;
+     case V2SImode: gen = gen_aarch64_dup_lanev2si; break;
+     case V2DImode: gen = gen_aarch64_dup_lanev2di; break;
++    case V8HFmode: gen = gen_aarch64_dup_lanev8hf; break;
++    case V4HFmode: gen = gen_aarch64_dup_lanev4hf; break;
+     case V4SFmode: gen = gen_aarch64_dup_lanev4sf; break;
+     case V2SFmode: gen = gen_aarch64_dup_lanev2sf; break;
+     case V2DFmode: gen = gen_aarch64_dup_lanev2df; break;
+@@ -10604,7 +12305,7 @@ aarch64_gen_ccmp_next (rtx *prep_seq, rtx *gen_seq, rtx prev, int cmp_code,
+ static bool
+ aarch64_macro_fusion_p (void)
+ {
+-  return aarch64_tune_params->fuseable_ops != AARCH64_FUSE_NOTHING;
++  return aarch64_tune_params.fusible_ops != AARCH64_FUSE_NOTHING;
+ }
+ 
+ 
+@@ -10624,7 +12325,7 @@ aarch_macro_fusion_pair_p (rtx_insn *prev, rtx_insn *curr)
+     return false;
+ 
+   if (simple_sets_p
+-      && (aarch64_tune_params->fuseable_ops & AARCH64_FUSE_MOV_MOVK))
++      && (aarch64_tune_params.fusible_ops & AARCH64_FUSE_MOV_MOVK))
+     {
+       /* We are trying to match:
+          prev (mov)  == (set (reg r0) (const_int imm16))
+@@ -10649,7 +12350,7 @@ aarch_macro_fusion_pair_p (rtx_insn *prev, rtx_insn *curr)
+     }
+ 
+   if (simple_sets_p
+-      && (aarch64_tune_params->fuseable_ops & AARCH64_FUSE_ADRP_ADD))
++      && (aarch64_tune_params.fusible_ops & AARCH64_FUSE_ADRP_ADD))
+     {
+ 
+       /*  We're trying to match:
+@@ -10675,7 +12376,7 @@ aarch_macro_fusion_pair_p (rtx_insn *prev, rtx_insn *curr)
+     }
+ 
+   if (simple_sets_p
+-      && (aarch64_tune_params->fuseable_ops & AARCH64_FUSE_MOVK_MOVK))
++      && (aarch64_tune_params.fusible_ops & AARCH64_FUSE_MOVK_MOVK))
+     {
+ 
+       /* We're trying to match:
+@@ -10704,7 +12405,7 @@ aarch_macro_fusion_pair_p (rtx_insn *prev, rtx_insn *curr)
+ 
+     }
+   if (simple_sets_p
+-      && (aarch64_tune_params->fuseable_ops & AARCH64_FUSE_ADRP_LDR))
++      && (aarch64_tune_params.fusible_ops & AARCH64_FUSE_ADRP_LDR))
+     {
+       /* We're trying to match:
+           prev (adrp) == (set (reg r0)
+@@ -10735,7 +12436,7 @@ aarch_macro_fusion_pair_p (rtx_insn *prev, rtx_insn *curr)
+         }
+     }
+ 
+-  if ((aarch64_tune_params->fuseable_ops & AARCH64_FUSE_CMP_BRANCH)
++  if ((aarch64_tune_params.fusible_ops & AARCH64_FUSE_CMP_BRANCH)
+       && any_condjump_p (curr))
+     {
+       enum attr_type prev_type = get_attr_type (prev);
+@@ -10815,8 +12516,9 @@ fusion_load_store (rtx_insn *insn, rtx *base, rtx *offset)
+   src = SET_SRC (x);
+   dest = SET_DEST (x);
+ 
+-  if (GET_MODE (dest) != SImode && GET_MODE (dest) != DImode
+-      && GET_MODE (dest) != SFmode && GET_MODE (dest) != DFmode)
++  machine_mode dest_mode = GET_MODE (dest);
++
++  if (!aarch64_mode_valid_for_sched_fusion_p (dest_mode))
+     return SCHED_FUSION_NONE;
+ 
+   if (GET_CODE (src) == SIGN_EXTEND)
+@@ -11239,6 +12941,14 @@ aarch64_gen_adjusted_ldpstp (rtx *operands, bool load,
+   return true;
+ }
+ 
++/* Implement TARGET_PROMOTED_TYPE to promote __fp16 to float.  */
++static tree
++aarch64_promoted_type (const_tree t)
++{
++  if (SCALAR_FLOAT_TYPE_P (t) && TYPE_PRECISION (t) == 16)
++    return float_type_node;
++  return NULL_TREE;
++}
+ #undef TARGET_ADDRESS_COST
+ #define TARGET_ADDRESS_COST aarch64_address_cost
+ 
+@@ -11262,9 +12972,6 @@ aarch64_gen_adjusted_ldpstp (rtx *operands, bool load,
+ #define TARGET_ASM_CAN_OUTPUT_MI_THUNK \
+   hook_bool_const_tree_hwi_hwi_const_tree_true
+ 
+-#undef TARGET_ASM_FILE_START
+-#define TARGET_ASM_FILE_START aarch64_start_file
+-
+ #undef TARGET_ASM_OUTPUT_MI_THUNK
+ #define TARGET_ASM_OUTPUT_MI_THUNK aarch64_output_mi_thunk
+ 
+@@ -11283,6 +12990,9 @@ aarch64_gen_adjusted_ldpstp (rtx *operands, bool load,
+ #undef TARGET_CAN_ELIMINATE
+ #define TARGET_CAN_ELIMINATE aarch64_can_eliminate
+ 
++#undef TARGET_CAN_INLINE_P
++#define TARGET_CAN_INLINE_P aarch64_can_inline_p
++
+ #undef TARGET_CANNOT_FORCE_CONST_MEM
+ #define TARGET_CANNOT_FORCE_CONST_MEM aarch64_cannot_force_const_mem
+ 
+@@ -11384,6 +13094,21 @@ aarch64_gen_adjusted_ldpstp (rtx *operands, bool load,
+ #define TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE \
+   aarch64_override_options_after_change
+ 
++#undef TARGET_OPTION_SAVE
++#define TARGET_OPTION_SAVE aarch64_option_save
++
++#undef TARGET_OPTION_RESTORE
++#define TARGET_OPTION_RESTORE aarch64_option_restore
++
++#undef TARGET_OPTION_PRINT
++#define TARGET_OPTION_PRINT aarch64_option_print
++
++#undef TARGET_OPTION_VALID_ATTRIBUTE_P
++#define TARGET_OPTION_VALID_ATTRIBUTE_P aarch64_option_valid_attribute_p
++
++#undef TARGET_SET_CURRENT_FUNCTION
++#define TARGET_SET_CURRENT_FUNCTION aarch64_set_current_function
++
+ #undef TARGET_PASS_BY_REFERENCE
+ #define TARGET_PASS_BY_REFERENCE aarch64_pass_by_reference
+ 
+@@ -11393,6 +13118,9 @@ aarch64_gen_adjusted_ldpstp (rtx *operands, bool load,
+ #undef TARGET_SCHED_REASSOCIATION_WIDTH
+ #define TARGET_SCHED_REASSOCIATION_WIDTH aarch64_reassociation_width
+ 
++#undef TARGET_PROMOTED_TYPE
++#define TARGET_PROMOTED_TYPE aarch64_promoted_type
++
+ #undef TARGET_SECONDARY_RELOAD
+ #define TARGET_SECONDARY_RELOAD aarch64_secondary_reload
+ 
+@@ -11485,6 +13213,8 @@ aarch64_gen_adjusted_ldpstp (rtx *operands, bool load,
+ #define TARGET_VECTORIZE_VEC_PERM_CONST_OK \
+   aarch64_vectorize_vec_perm_const_ok
+ 
++#undef TARGET_INIT_LIBFUNCS
++#define TARGET_INIT_LIBFUNCS aarch64_init_libfuncs
+ 
+ #undef TARGET_FIXED_CONDITION_CODE_REGS
+ #define TARGET_FIXED_CONDITION_CODE_REGS aarch64_fixed_condition_code_regs
+--- a/src/gcc/config/aarch64/aarch64.h
++++ b/src/gcc/config/aarch64/aarch64.h
+@@ -23,80 +23,13 @@
+ #define GCC_AARCH64_H
+ 
+ /* Target CPU builtins.  */
+-#define TARGET_CPU_CPP_BUILTINS()			\
+-  do							\
+-    {							\
+-      builtin_define ("__aarch64__");                   \
+-      builtin_define ("__ARM_64BIT_STATE");             \
+-      builtin_define_with_int_value                     \
+-        ("__ARM_ARCH", aarch64_architecture_version);   \
+-      cpp_define_formatted                                              \
+-        (parse_in, "__ARM_ARCH_%dA", aarch64_architecture_version);     \
+-      builtin_define ("__ARM_ARCH_ISA_A64");            \
+-      builtin_define_with_int_value                     \
+-        ("__ARM_ARCH_PROFILE", 'A');                    \
+-      builtin_define ("__ARM_FEATURE_CLZ");             \
+-      builtin_define ("__ARM_FEATURE_IDIV");            \
+-      builtin_define ("__ARM_FEATURE_UNALIGNED");       \
+-      if (flag_unsafe_math_optimizations)               \
+-        builtin_define ("__ARM_FP_FAST");               \
+-      builtin_define ("__ARM_PCS_AAPCS64");             \
+-      builtin_define_with_int_value                     \
+-        ("__ARM_SIZEOF_WCHAR_T", WCHAR_TYPE_SIZE / 8);  \
+-      builtin_define_with_int_value                     \
+-        ("__ARM_SIZEOF_MINIMAL_ENUM",                   \
+-         flag_short_enums? 1 : 4);                      \
+-      if (TARGET_BIG_END)				\
+-        {                                               \
+-          builtin_define ("__AARCH64EB__");             \
+-          builtin_define ("__ARM_BIG_ENDIAN");          \
+-        }                                               \
+-      else						\
+-	builtin_define ("__AARCH64EL__");		\
+-							\
+-      if (TARGET_FLOAT)                                         \
+-        {                                                       \
+-          builtin_define ("__ARM_FEATURE_FMA");                 \
+-          builtin_define_with_int_value ("__ARM_FP", 0x0C);     \
+-        }                                                       \
+-      if (TARGET_SIMD)                                          \
+-        {                                                       \
+-          builtin_define ("__ARM_FEATURE_NUMERIC_MAXMIN");      \
+-          builtin_define ("__ARM_NEON");			\
+-          builtin_define_with_int_value ("__ARM_NEON_FP", 0x0C);\
+-        }                                                       \
+-							        \
+-      if (TARGET_CRC32)				        \
+-	builtin_define ("__ARM_FEATURE_CRC32");		\
+-							\
+-      switch (aarch64_cmodel)				\
+-	{						\
+-	  case AARCH64_CMODEL_TINY:			\
+-	  case AARCH64_CMODEL_TINY_PIC:			\
+-	    builtin_define ("__AARCH64_CMODEL_TINY__");	\
+-	    break;					\
+-	  case AARCH64_CMODEL_SMALL:			\
+-	  case AARCH64_CMODEL_SMALL_PIC:		\
+-	    builtin_define ("__AARCH64_CMODEL_SMALL__");\
+-	    break;					\
+-	  case AARCH64_CMODEL_LARGE:			\
+-	    builtin_define ("__AARCH64_CMODEL_LARGE__");	\
+-	    break;					\
+-	  default:					\
+-	    break;					\
+-	}						\
+-							\
+-      if (TARGET_ILP32)					\
+-	{						\
+-	  cpp_define (parse_in, "_ILP32");		\
+-	  cpp_define (parse_in, "__ILP32__");		\
+-	}						\
+-      if (TARGET_CRYPTO)				\
+-	builtin_define ("__ARM_FEATURE_CRYPTO");	\
+-    } while (0)
++#define TARGET_CPU_CPP_BUILTINS()	\
++  aarch64_cpu_cpp_builtins (pfile)
+ 
+ 

+ 
++#define REGISTER_TARGET_PRAGMAS() aarch64_register_pragmas ()
++
+ /* Target machine storage layout.  */
+ 
+ #define PROMOTE_MODE(MODE, UNSIGNEDP, TYPE)	\
+@@ -198,8 +131,12 @@ extern unsigned aarch64_architecture_version;
+ #define AARCH64_FL_SIMD       (1 << 0)	/* Has SIMD instructions.  */
+ #define AARCH64_FL_FP         (1 << 1)	/* Has FP.  */
+ #define AARCH64_FL_CRYPTO     (1 << 2)	/* Has crypto.  */
+-#define AARCH64_FL_SLOWMUL    (1 << 3)	/* A slow multiply core.  */
+-#define AARCH64_FL_CRC        (1 << 4)	/* Has CRC.  */
++#define AARCH64_FL_CRC        (1 << 3)	/* Has CRC.  */
++/* ARMv8.1 architecture extensions.  */
++#define AARCH64_FL_LSE	      (1 << 4)  /* Has Large System Extensions.  */
++#define AARCH64_FL_PAN	      (1 << 5)  /* Has Privileged Access Never.  */
++#define AARCH64_FL_LOR	      (1 << 6)  /* Has Limited Ordering regions.  */
++#define AARCH64_FL_RDMA	      (1 << 7)  /* Has ARMv8.1 Adv.SIMD.  */
+ 
+ /* Has FP and SIMD.  */
+ #define AARCH64_FL_FPSIMD     (AARCH64_FL_FP | AARCH64_FL_SIMD)
+@@ -209,17 +146,17 @@ extern unsigned aarch64_architecture_version;
+ 
+ /* Architecture flags that effect instruction selection.  */
+ #define AARCH64_FL_FOR_ARCH8       (AARCH64_FL_FPSIMD)
++#define AARCH64_FL_FOR_ARCH8_1			       \
++  (AARCH64_FL_FOR_ARCH8 | AARCH64_FL_LSE | AARCH64_FL_PAN \
++   | AARCH64_FL_LOR | AARCH64_FL_RDMA)
+ 
+ /* Macros to test ISA flags.  */
+-extern unsigned long aarch64_isa_flags;
++
+ #define AARCH64_ISA_CRC            (aarch64_isa_flags & AARCH64_FL_CRC)
+ #define AARCH64_ISA_CRYPTO         (aarch64_isa_flags & AARCH64_FL_CRYPTO)
+ #define AARCH64_ISA_FP             (aarch64_isa_flags & AARCH64_FL_FP)
+ #define AARCH64_ISA_SIMD           (aarch64_isa_flags & AARCH64_FL_SIMD)
+-
+-/* Macros to test tuning flags.  */
+-extern unsigned long aarch64_tune_flags;
+-#define AARCH64_TUNE_SLOWMUL       (aarch64_tune_flags & AARCH64_FL_SLOWMUL)
++#define AARCH64_ISA_LSE		   (aarch64_isa_flags & AARCH64_FL_LSE)
+ 
+ /* Crypto is an optional extension to AdvSIMD.  */
+ #define TARGET_CRYPTO (TARGET_SIMD && AARCH64_ISA_CRYPTO)
+@@ -227,6 +164,23 @@ extern unsigned long aarch64_tune_flags;
+ /* CRC instructions that can be enabled through +crc arch extension.  */
+ #define TARGET_CRC32 (AARCH64_ISA_CRC)
+ 
++/* Atomic instructions that can be enabled through the +lse extension.  */
++#define TARGET_LSE (AARCH64_ISA_LSE)
++
++/* Make sure this is always defined so we don't have to check for ifdefs
++   but rather use normal ifs.  */
++#ifndef TARGET_FIX_ERR_A53_835769_DEFAULT
++#define TARGET_FIX_ERR_A53_835769_DEFAULT 0
++#else
++#undef TARGET_FIX_ERR_A53_835769_DEFAULT
++#define TARGET_FIX_ERR_A53_835769_DEFAULT 1
++#endif
++
++/* Apply the workaround for Cortex-A53 erratum 835769.  */
++#define TARGET_FIX_ERR_A53_835769	\
++  ((aarch64_fix_a53_err835769 == 2)	\
++  ? TARGET_FIX_ERR_A53_835769_DEFAULT : aarch64_fix_a53_err835769)
++
+ /* Standard register usage.  */
+ 
+ /* 31 64-bit general purpose registers R0-R30:
+@@ -416,6 +370,10 @@ extern unsigned long aarch64_tune_flags;
+ #define ASM_PREFERRED_EH_DATA_FORMAT(CODE, GLOBAL) \
+   aarch64_asm_preferred_eh_data_format ((CODE), (GLOBAL))
+ 
++/* Output the assembly strings we want to add to a function definition.  */
++#define ASM_DECLARE_FUNCTION_NAME(STR, NAME, DECL)	\
++  aarch64_declare_function_name (STR, NAME, DECL)
++
+ /* The register that holds the return address in exception handlers.  */
+ #define AARCH64_EH_STACKADJ_REGNUM	(R0_REGNUM + 4)
+ #define EH_RETURN_STACKADJ_RTX	gen_rtx_REG (Pmode, AARCH64_EH_STACKADJ_REGNUM)
+@@ -506,7 +464,7 @@ enum reg_class
+ 
+ enum target_cpus
+ {
+-#define AARCH64_CORE(NAME, INTERNAL_IDENT, SCHED, ARCH, FLAGS, COSTS) \
++#define AARCH64_CORE(NAME, INTERNAL_IDENT, SCHED, ARCH, FLAGS, COSTS, IMP, PART) \
+   TARGET_CPU_##INTERNAL_IDENT,
+ #include "aarch64-cores.def"
+ #undef AARCH64_CORE
+@@ -823,7 +781,8 @@ do {									     \
+ #define TRAMPOLINE_SECTION text_section
+ 
+ /* To start with.  */
+-#define BRANCH_COST(SPEED_P, PREDICTABLE_P) 2
++#define BRANCH_COST(SPEED_P, PREDICTABLE_P) \
++  (aarch64_branch_cost (SPEED_P, PREDICTABLE_P))
+ 

+ 
+ /* Assembly output.  */
+@@ -892,6 +851,9 @@ do {									     \
+ #define HARD_REGNO_CALL_PART_CLOBBERED(REGNO, MODE) \
+ 		(FP_REGNUM_P (REGNO) && GET_MODE_SIZE (MODE) > 8)
+ 
++#undef SWITCHABLE_TARGET
++#define SWITCHABLE_TARGET 1
++
+ /* Check TLS Descriptors mechanism is selected.  */
+ #define TARGET_TLS_DESC (aarch64_tls_dialect == TLS_DESCRIPTORS)
+ 
+@@ -907,10 +869,17 @@ extern enum aarch64_code_model aarch64_cmodel;
+   (aarch64_cmodel == AARCH64_CMODEL_TINY		\
+    || aarch64_cmodel == AARCH64_CMODEL_TINY_PIC)
+ 
++/* Modes valid for AdvSIMD D registers, i.e. that fit in half a Q register.  */
++#define AARCH64_VALID_SIMD_DREG_MODE(MODE) \
++  ((MODE) == V2SImode || (MODE) == V4HImode || (MODE) == V8QImode \
++   || (MODE) == V2SFmode || (MODE) == V4HFmode || (MODE) == DImode \
++   || (MODE) == DFmode)
++
+ /* Modes valid for AdvSIMD Q registers.  */
+ #define AARCH64_VALID_SIMD_QREG_MODE(MODE) \
+   ((MODE) == V4SImode || (MODE) == V8HImode || (MODE) == V16QImode \
+-   || (MODE) == V4SFmode || (MODE) == V2DImode || mode == V2DFmode)
++   || (MODE) == V4SFmode || (MODE) == V8HFmode || (MODE) == V2DImode \
++   || (MODE) == V2DFmode)
+ 
+ #define ENDIAN_LANE_N(mode, n)  \
+   (BYTES_BIG_ENDIAN ? GET_MODE_NUNITS (mode) - 1 - n : n)
+@@ -922,17 +891,30 @@ extern enum aarch64_code_model aarch64_cmodel;
+   {"arch", "%{!march=*:%{!mcpu=*:-march=%(VALUE)}}" },	\
+   {"cpu",  "%{!march=*:%{!mcpu=*:-mcpu=%(VALUE)}}" },
+ 
+-#define BIG_LITTLE_SPEC \
+-   " %{mcpu=*:-mcpu=%:rewrite_mcpu(%{mcpu=*:%*})}"
++#define MCPU_TO_MARCH_SPEC \
++   " %{mcpu=*:-march=%:rewrite_mcpu(%{mcpu=*:%*})}"
+ 
+ extern const char *aarch64_rewrite_mcpu (int argc, const char **argv);
+-#define BIG_LITTLE_CPU_SPEC_FUNCTIONS \
++#define MCPU_TO_MARCH_SPEC_FUNCTIONS \
+   { "rewrite_mcpu", aarch64_rewrite_mcpu },
+ 
+-#define ASM_CPU_SPEC \
+-   BIG_LITTLE_SPEC
++#if defined(__aarch64__)
++extern const char *host_detect_local_cpu (int argc, const char **argv);
++# define EXTRA_SPEC_FUNCTIONS						\
++  { "local_cpu_detect", host_detect_local_cpu },			\
++  MCPU_TO_MARCH_SPEC_FUNCTIONS
+ 
+-#define EXTRA_SPEC_FUNCTIONS BIG_LITTLE_CPU_SPEC_FUNCTIONS
++# define MCPU_MTUNE_NATIVE_SPECS					\
++   " %{march=native:%<march=native %:local_cpu_detect(arch)}"		\
++   " %{mcpu=native:%<mcpu=native %:local_cpu_detect(cpu)}"		\
++   " %{mtune=native:%<mtune=native %:local_cpu_detect(tune)}"
++#else
++# define MCPU_MTUNE_NATIVE_SPECS ""
++# define EXTRA_SPEC_FUNCTIONS MCPU_TO_MARCH_SPEC_FUNCTIONS
++#endif
++
++#define ASM_CPU_SPEC \
++   MCPU_TO_MARCH_SPEC
+ 
+ #define EXTRA_SPECS						\
+   { "asm_cpu_spec",		ASM_CPU_SPEC }
+--- a/src/gcc/config/aarch64/aarch64.md
++++ b/src/gcc/config/aarch64/aarch64.md
+@@ -116,6 +116,7 @@
+     UNSPEC_ST4_LANE
+     UNSPEC_TLS
+     UNSPEC_TLSDESC
++    UNSPEC_TLSLE
+     UNSPEC_USHL_2S
+     UNSPEC_VSTRUCTDUMMY
+     UNSPEC_SP_SET
+@@ -827,7 +828,7 @@
+        gcc_unreachable ();
+      }
+ }
+-  [(set_attr "type" "mov_reg,mov_imm,mov_imm,load1,load1,store1,store1,\
++  [(set_attr "type" "mov_reg,mov_imm,neon_move,load1,load1,store1,store1,\
+                      neon_to_gp<q>,neon_from_gp<q>,neon_dup")
+    (set_attr "simd" "*,*,yes,*,*,*,*,yes,yes,yes")]
+ )
+@@ -912,7 +913,7 @@
+        DONE;
+     }"
+   [(set_attr "type" "mov_reg,mov_reg,mov_reg,mov_imm,mov_imm,load1,load1,store1,store1,\
+-                     adr,adr,f_mcr,f_mrc,fmov,fmov")
++                     adr,adr,f_mcr,f_mrc,fmov,neon_move")
+    (set_attr "fp" "*,*,*,*,*,*,yes,*,yes,*,*,yes,yes,yes,*")
+    (set_attr "simd" "*,*,*,*,*,*,*,*,*,*,*,*,*,*,yes")]
+ )
+@@ -976,26 +977,48 @@
+ })
+ 
+ (define_expand "mov<mode>"
+-  [(set (match_operand:GPF 0 "nonimmediate_operand" "")
+-	(match_operand:GPF 1 "general_operand" ""))]
++  [(set (match_operand:GPF_TF_F16 0 "nonimmediate_operand" "")
++	(match_operand:GPF_TF_F16 1 "general_operand" ""))]
+   ""
+-  "
++  {
+     if (!TARGET_FLOAT)
+-     {
+-	sorry (\"%qs and floating point code\", \"-mgeneral-regs-only\");
++      {
++	aarch64_err_no_fpadvsimd (<MODE>mode, "code");
+ 	FAIL;
+-     }
++      }
+ 
+-    if (GET_CODE (operands[0]) == MEM)
++    if (GET_CODE (operands[0]) == MEM
++        && ! (GET_CODE (operands[1]) == CONST_DOUBLE
++	      && aarch64_float_const_zero_rtx_p (operands[1])))
+       operands[1] = force_reg (<MODE>mode, operands[1]);
+-  "
++  }
++)
++
++(define_insn "*movhf_aarch64"
++  [(set (match_operand:HF 0 "nonimmediate_operand" "=w, ?r,w,w,m,r,m ,r")
++	(match_operand:HF 1 "general_operand"      "?rY, w,w,m,w,m,rY,r"))]
++  "TARGET_FLOAT && (register_operand (operands[0], HFmode)
++    || register_operand (operands[1], HFmode))"
++  "@
++   mov\\t%0.h[0], %w1
++   umov\\t%w0, %1.h[0]
++   mov\\t%0.h[0], %1.h[0]
++   ldr\\t%h0, %1
++   str\\t%h1, %0
++   ldrh\\t%w0, %1
++   strh\\t%w1, %0
++   mov\\t%w0, %w1"
++  [(set_attr "type" "neon_from_gp,neon_to_gp,fmov,\
++                     f_loads,f_stores,load1,store1,mov_reg")
++   (set_attr "simd" "yes,yes,yes,*,*,*,*,*")
++   (set_attr "fp"   "*,*,*,yes,yes,*,*,*")]
+ )
+ 
+ (define_insn "*movsf_aarch64"
+   [(set (match_operand:SF 0 "nonimmediate_operand" "=w, ?r,w,w  ,w,m,r,m ,r")
+ 	(match_operand:SF 1 "general_operand"      "?rY, w,w,Ufc,m,w,m,rY,r"))]
+   "TARGET_FLOAT && (register_operand (operands[0], SFmode)
+-    || register_operand (operands[1], SFmode))"
++    || aarch64_reg_or_fp_zero (operands[1], SFmode))"
+   "@
+    fmov\\t%s0, %w1
+    fmov\\t%w0, %s1
+@@ -1007,14 +1030,14 @@
+    str\\t%w1, %0
+    mov\\t%w0, %w1"
+   [(set_attr "type" "f_mcr,f_mrc,fmov,fconsts,\
+-                     f_loads,f_stores,f_loads,f_stores,mov_reg")]
++                     f_loads,f_stores,load1,store1,mov_reg")]
+ )
+ 
+ (define_insn "*movdf_aarch64"
+   [(set (match_operand:DF 0 "nonimmediate_operand" "=w, ?r,w,w  ,w,m,r,m ,r")
+ 	(match_operand:DF 1 "general_operand"      "?rY, w,w,Ufc,m,w,m,rY,r"))]
+   "TARGET_FLOAT && (register_operand (operands[0], DFmode)
+-    || register_operand (operands[1], DFmode))"
++    || aarch64_reg_or_fp_zero (operands[1], DFmode))"
+   "@
+    fmov\\t%d0, %x1
+    fmov\\t%x0, %d1
+@@ -1026,32 +1049,16 @@
+    str\\t%x1, %0
+    mov\\t%x0, %x1"
+   [(set_attr "type" "f_mcr,f_mrc,fmov,fconstd,\
+-                     f_loadd,f_stored,f_loadd,f_stored,mov_reg")]
+-)
+-
+-(define_expand "movtf"
+-  [(set (match_operand:TF 0 "nonimmediate_operand" "")
+-	(match_operand:TF 1 "general_operand" ""))]
+-  ""
+-  "
+-    if (!TARGET_FLOAT)
+-     {
+-	sorry (\"%qs and floating point code\", \"-mgeneral-regs-only\");
+-	FAIL;
+-     }
+-
+-    if (GET_CODE (operands[0]) == MEM)
+-      operands[1] = force_reg (TFmode, operands[1]);
+-  "
++                     f_loadd,f_stored,load1,store1,mov_reg")]
+ )
+ 
+ (define_insn "*movtf_aarch64"
+   [(set (match_operand:TF 0
+-	 "nonimmediate_operand" "=w,?&r,w ,?r,w,?w,w,m,?r ,Ump")
++	 "nonimmediate_operand" "=w,?&r,w ,?r,w,?w,w,m,?r ,Ump,Ump")
+ 	(match_operand:TF 1
+-	 "general_operand"      " w,?r, ?r,w ,Y,Y ,m,w,Ump,?rY"))]
++	 "general_operand"      " w,?r, ?r,w ,Y,Y ,m,w,Ump,?r ,Y"))]
+   "TARGET_FLOAT && (register_operand (operands[0], TFmode)
+-    || register_operand (operands[1], TFmode))"
++    || aarch64_reg_or_fp_zero (operands[1], TFmode))"
+   "@
+    orr\\t%0.16b, %1.16b, %1.16b
+    #
+@@ -1062,12 +1069,13 @@
+    ldr\\t%q0, %1
+    str\\t%q1, %0
+    ldp\\t%0, %H0, %1
+-   stp\\t%1, %H1, %0"
+-  [(set_attr "type" "logic_reg,multiple,f_mcr,f_mrc,fconstd,fconstd,\
+-                     f_loadd,f_stored,neon_load1_2reg,neon_store1_2reg")
+-   (set_attr "length" "4,8,8,8,4,4,4,4,4,4")
+-   (set_attr "fp" "*,*,yes,yes,*,yes,yes,yes,*,*")
+-   (set_attr "simd" "yes,*,*,*,yes,*,*,*,*,*")]
++   stp\\t%1, %H1, %0
++   stp\\txzr, xzr, %0"
++  [(set_attr "type" "logic_reg,multiple,f_mcr,f_mrc,neon_move_q,fconstd,\
++                     f_loadd,f_stored,load2,store2,store2")
++   (set_attr "length" "4,8,8,8,4,4,4,4,4,4,4")
++   (set_attr "fp" "*,*,yes,yes,*,yes,yes,yes,*,*,*")
++   (set_attr "simd" "yes,*,*,*,yes,*,*,*,*,*,*")]
+ )
+ 
+ (define_split
+@@ -1414,18 +1422,28 @@
+   "
+   if (! aarch64_plus_operand (operands[2], VOIDmode))
+     {
+-      rtx subtarget = ((optimize && can_create_pseudo_p ())
+-		       ? gen_reg_rtx (<MODE>mode) : operands[0]);
+       HOST_WIDE_INT imm = INTVAL (operands[2]);
+ 
+-      if (imm < 0)
+-	imm = -(-imm & ~0xfff);
++      if (aarch64_move_imm (imm, <MODE>mode) && can_create_pseudo_p ())
++        {
++	  rtx tmp = gen_reg_rtx (<MODE>mode);
++	  emit_move_insn (tmp, operands[2]);
++	  operands[2] = tmp;
++        }
+       else
+-        imm &= ~0xfff;
+-
+-      emit_insn (gen_add<mode>3 (subtarget, operands[1], GEN_INT (imm)));
+-      operands[1] = subtarget;
+-      operands[2] = GEN_INT (INTVAL (operands[2]) - imm);
++        {
++	  rtx subtarget = ((optimize && can_create_pseudo_p ())
++			   ? gen_reg_rtx (<MODE>mode) : operands[0]);
++
++	  if (imm < 0)
++	    imm = -(-imm & ~0xfff);
++	  else
++	    imm &= ~0xfff;
++
++	  emit_insn (gen_add<mode>3 (subtarget, operands[1], GEN_INT (imm)));
++	  operands[1] = subtarget;
++	  operands[2] = GEN_INT (INTVAL (operands[2]) - imm);
++        }
+     }
+   "
+ )
+@@ -1529,6 +1547,38 @@
+   [(set_attr "type" "alus_sreg,alus_imm,alus_imm")]
+ )
+ 
++(define_insn "*adds_shift_imm_<mode>"
++  [(set (reg:CC_NZ CC_REGNUM)
++	(compare:CC_NZ
++	 (plus:GPI (ASHIFT:GPI 
++		    (match_operand:GPI 1 "register_operand" "r")
++		    (match_operand:QI 2 "aarch64_shift_imm_<mode>" "n"))
++		   (match_operand:GPI 3 "register_operand" "r"))
++	 (const_int 0)))
++   (set (match_operand:GPI 0 "register_operand" "=r")
++	(plus:GPI (ASHIFT:GPI (match_dup 1) (match_dup 2))
++		  (match_dup 3)))]
++  ""
++  "adds\\t%<w>0, %<w>3, %<w>1, <shift> %2"
++  [(set_attr "type" "alus_shift_imm")]
++)
++
++(define_insn "*subs_shift_imm_<mode>"
++  [(set (reg:CC_NZ CC_REGNUM)
++	(compare:CC_NZ
++	 (minus:GPI (match_operand:GPI 1 "register_operand" "r")
++		    (ASHIFT:GPI
++		     (match_operand:GPI 2 "register_operand" "r")
++		     (match_operand:QI 3 "aarch64_shift_imm_<mode>" "n")))
++	 (const_int 0)))
++   (set (match_operand:GPI 0 "register_operand" "=r")
++	(minus:GPI (match_dup 1)
++		   (ASHIFT:GPI (match_dup 2) (match_dup 3))))]
++  ""
++  "subs\\t%<w>0, %<w>1, %<w>2, <shift> %3"
++  [(set_attr "type" "alus_shift_imm")]
++)
++
+ (define_insn "*adds_mul_imm_<mode>"
+   [(set (reg:CC_NZ CC_REGNUM)
+ 	(compare:CC_NZ
+@@ -1589,6 +1639,42 @@
+   [(set_attr "type" "alus_ext")]
+ )
+ 
++(define_insn "*adds_<optab><ALLX:mode>_shift_<GPI:mode>"
++  [(set (reg:CC_NZ CC_REGNUM)
++	(compare:CC_NZ
++	 (plus:GPI (ashift:GPI 
++		    (ANY_EXTEND:GPI 
++		     (match_operand:ALLX 1 "register_operand" "r"))
++		    (match_operand 2 "aarch64_imm3" "Ui3"))
++		   (match_operand:GPI 3 "register_operand" "r"))
++	 (const_int 0)))
++   (set (match_operand:GPI 0 "register_operand" "=rk")
++	(plus:GPI (ashift:GPI (ANY_EXTEND:GPI (match_dup 1))
++			      (match_dup 2))
++		  (match_dup 3)))]
++  ""
++  "adds\\t%<GPI:w>0, %<GPI:w>3, %<GPI:w>1, <su>xt<ALLX:size> %2"
++  [(set_attr "type" "alus_ext")]
++)
++
++(define_insn "*subs_<optab><ALLX:mode>_shift_<GPI:mode>"
++  [(set (reg:CC_NZ CC_REGNUM)
++	(compare:CC_NZ
++	 (minus:GPI (match_operand:GPI 1 "register_operand" "r")
++		    (ashift:GPI 
++		     (ANY_EXTEND:GPI
++		      (match_operand:ALLX 2 "register_operand" "r"))
++		     (match_operand 3 "aarch64_imm3" "Ui3")))
++	 (const_int 0)))
++   (set (match_operand:GPI 0 "register_operand" "=rk")
++	(minus:GPI (match_dup 1)
++		   (ashift:GPI (ANY_EXTEND:GPI (match_dup 2))
++			       (match_dup 3))))]
++  ""
++  "subs\\t%<GPI:w>0, %<GPI:w>1, %<GPI:w>2, <su>xt<ALLX:size> %3"
++  [(set_attr "type" "alus_ext")]
++)
++
+ (define_insn "*adds_<optab><mode>_multp2"
+   [(set (reg:CC_NZ CC_REGNUM)
+ 	(compare:CC_NZ
+@@ -1884,6 +1970,38 @@
+   [(set_attr "type" "adc_reg")]
+ )
+ 
++(define_insn "*add_uxt<mode>_shift2"
++  [(set (match_operand:GPI 0 "register_operand" "=rk")
++	(plus:GPI (and:GPI
++		   (ashift:GPI (match_operand:GPI 1 "register_operand" "r")
++			       (match_operand 2 "aarch64_imm3" "Ui3"))
++		   (match_operand 3 "const_int_operand" "n"))
++		  (match_operand:GPI 4 "register_operand" "r")))]
++  "aarch64_uxt_size (INTVAL (operands[2]), INTVAL (operands[3])) != 0"
++  "*
++  operands[3] = GEN_INT (aarch64_uxt_size (INTVAL(operands[2]),
++					   INTVAL (operands[3])));
++  return \"add\t%<w>0, %<w>4, %<w>1, uxt%e3 %2\";"
++  [(set_attr "type" "alu_ext")]
++)
++
++;; zero_extend version of above
++(define_insn "*add_uxtsi_shift2_uxtw"
++  [(set (match_operand:DI 0 "register_operand" "=rk")
++	(zero_extend:DI
++	 (plus:SI (and:SI
++		   (ashift:SI (match_operand:SI 1 "register_operand" "r")
++			      (match_operand 2 "aarch64_imm3" "Ui3"))
++		   (match_operand 3 "const_int_operand" "n"))
++		  (match_operand:SI 4 "register_operand" "r"))))]
++  "aarch64_uxt_size (INTVAL (operands[2]), INTVAL (operands[3])) != 0"
++  "*
++  operands[3] = GEN_INT (aarch64_uxt_size (INTVAL (operands[2]),
++					   INTVAL (operands[3])));
++  return \"add\t%w0, %w4, %w1, uxt%e3 %2\";"
++  [(set_attr "type" "alu_ext")]
++)
++
+ (define_insn "*add_uxt<mode>_multp2"
+   [(set (match_operand:GPI 0 "register_operand" "=rk")
+ 	(plus:GPI (and:GPI
+@@ -2140,6 +2258,38 @@
+   [(set_attr "type" "adc_reg")]
+ )
+ 
++(define_insn "*sub_uxt<mode>_shift2"
++  [(set (match_operand:GPI 0 "register_operand" "=rk")
++	(minus:GPI (match_operand:GPI 4 "register_operand" "rk")
++		   (and:GPI
++		    (ashift:GPI (match_operand:GPI 1 "register_operand" "r")
++				(match_operand 2 "aarch64_imm3" "Ui3"))
++		    (match_operand 3 "const_int_operand" "n"))))]
++  "aarch64_uxt_size (INTVAL (operands[2]),INTVAL (operands[3])) != 0"
++  "*
++  operands[3] = GEN_INT (aarch64_uxt_size (INTVAL (operands[2]),
++					   INTVAL (operands[3])));
++  return \"sub\t%<w>0, %<w>4, %<w>1, uxt%e3 %2\";"
++  [(set_attr "type" "alu_ext")]
++)
++
++;; zero_extend version of above
++(define_insn "*sub_uxtsi_shift2_uxtw"
++  [(set (match_operand:DI 0 "register_operand" "=rk")
++	(zero_extend:DI
++	 (minus:SI (match_operand:SI 4 "register_operand" "rk")
++		   (and:SI
++		    (ashift:SI (match_operand:SI 1 "register_operand" "r")
++			       (match_operand 2 "aarch64_imm3" "Ui3"))
++		    (match_operand 3 "const_int_operand" "n")))))]
++  "aarch64_uxt_size (INTVAL (operands[2]),INTVAL (operands[3])) != 0"
++  "*
++  operands[3] = GEN_INT (aarch64_uxt_size (INTVAL (operands[2]),
++					   INTVAL (operands[3])));
++  return \"sub\t%w0, %w4, %w1, uxt%e3 %2\";"
++  [(set_attr "type" "alu_ext")]
++)
++
+ (define_insn "*sub_uxt<mode>_multp2"
+   [(set (match_operand:GPI 0 "register_operand" "=rk")
+ 	(minus:GPI (match_operand:GPI 4 "register_operand" "rk")
+@@ -2172,35 +2322,16 @@
+   [(set_attr "type" "alu_ext")]
+ )
+ 
+-(define_insn_and_split "absdi2"
+-  [(set (match_operand:DI 0 "register_operand" "=&r,w")
+-	(abs:DI (match_operand:DI 1 "register_operand" "r,w")))]
++(define_expand "abs<mode>2"
++  [(match_operand:GPI 0 "register_operand" "")
++   (match_operand:GPI 1 "register_operand" "")]
+   ""
+-  "@
+-   #
+-   abs\\t%d0, %d1"
+-  "reload_completed
+-   && GP_REGNUM_P (REGNO (operands[0]))
+-   && GP_REGNUM_P (REGNO (operands[1]))"
+-  [(const_int 0)]
+   {
+-    emit_insn (gen_rtx_SET (VOIDmode, operands[0],
+-			    gen_rtx_XOR (DImode,
+-					 gen_rtx_ASHIFTRT (DImode,
+-							   operands[1],
+-							   GEN_INT (63)),
+-					 operands[1])));
+-    emit_insn (gen_rtx_SET (VOIDmode,
+-			    operands[0],
+-			    gen_rtx_MINUS (DImode,
+-					   operands[0],
+-					   gen_rtx_ASHIFTRT (DImode,
+-							     operands[1],
+-							     GEN_INT (63)))));
++    rtx ccreg = aarch64_gen_compare_reg (LT, operands[1], const0_rtx);
++    rtx x = gen_rtx_LT (VOIDmode, ccreg, const0_rtx);
++    emit_insn (gen_csneg3<mode>_insn (operands[0], x, operands[1], operands[1]));
+     DONE;
+   }
+-  [(set_attr "type" "alu_sreg")
+-   (set_attr "simd" "no,yes")]
+ )
+ 
+ (define_insn "neg<mode>2"
+@@ -2757,6 +2888,18 @@
+   [(set_attr "type" "csel")]
+ )
+ 
++(define_insn "*cmovdi_insn_uxtw"
++  [(set (match_operand:DI 0 "register_operand" "=r")
++	(if_then_else:DI
++	 (match_operator 1 "aarch64_comparison_operator"
++	  [(match_operand 2 "cc_register" "") (const_int 0)])
++	 (zero_extend:DI (match_operand:SI 3 "register_operand" "r"))
++	 (zero_extend:DI (match_operand:SI 4 "register_operand" "r"))))]
++  ""
++  "csel\\t%w0, %w3, %w4, %m1"
++  [(set_attr "type" "csel")]
++)
++
+ (define_insn "*cmov<mode>_insn"
+   [(set (match_operand:GPF 0 "register_operand" "=w")
+ 	(if_then_else:GPF
+@@ -2852,7 +2995,7 @@
+         (plus:GPI (match_operand 2 "aarch64_comparison_operation" "")
+                   (match_operand:GPI 1 "register_operand" "r")))]
+   ""
+-  "csinc\\t%<w>0, %<w>1, %<w>1, %M2"
++  "cinc\\t%<w>0, %<w>1, %m2"
+   [(set_attr "type" "csel")]
+ )
+ 
+@@ -2879,7 +3022,19 @@
+   [(set_attr "type" "csel")]
+ )
+ 
+-(define_insn "*csneg3<mode>_insn"
++(define_insn "csneg3_uxtw_insn"
++  [(set (match_operand:DI 0 "register_operand" "=r")
++	(zero_extend:DI
++	  (if_then_else:SI
++	    (match_operand 1 "aarch64_comparison_operation" "")
++	    (neg:SI (match_operand:SI 2 "register_operand" "r"))
++	    (match_operand:SI 3 "aarch64_reg_or_zero" "rZ"))))]
++  ""
++  "csneg\\t%w0, %w3, %w2, %M1"
++  [(set_attr "type" "csel")]
++)
++
++(define_insn "csneg3<mode>_insn"
+   [(set (match_operand:GPI 0 "register_operand" "=r")
+         (if_then_else:GPI
+ 	  (match_operand 1 "aarch64_comparison_operation" "")
+@@ -3058,6 +3213,26 @@
+    (set_attr "simd" "*,yes")]
+ )
+ 
++(define_insn "*<NLOGICAL:optab>_one_cmplsidi3_ze"
++  [(set (match_operand:DI 0 "register_operand" "=r")
++	(zero_extend:DI
++	  (NLOGICAL:SI (not:SI (match_operand:SI 1 "register_operand" "r"))
++	               (match_operand:SI 2 "register_operand" "r"))))]
++  ""
++  "<NLOGICAL:nlogical>\\t%w0, %w2, %w1"
++  [(set_attr "type" "logic_reg")]
++)
++
++(define_insn "*xor_one_cmplsidi3_ze"
++  [(set (match_operand:DI 0 "register_operand" "=r")
++        (zero_extend:DI
++          (not:SI (xor:SI (match_operand:SI 1 "register_operand" "r")
++                          (match_operand:SI 2 "register_operand" "r")))))]
++  ""
++  "eon\\t%w0, %w1, %w2"
++  [(set_attr "type" "logic_reg")]
++)
++
+ ;; (xor (not a) b) is simplify_rtx-ed down to (not (xor a b)).
+ ;; eon does not operate on SIMD registers so the vector variant must be split.
+ (define_insn_and_split "*xor_one_cmpl<mode>3"
+@@ -3119,7 +3294,7 @@
+   [(set_attr "type" "logics_reg")]
+ )
+ 
+-(define_insn "*<LOGICAL:optab>_one_cmpl_<SHIFT:optab><mode>3"
++(define_insn "<LOGICAL:optab>_one_cmpl_<SHIFT:optab><mode>3"
+   [(set (match_operand:GPI 0 "register_operand" "=r")
+ 	(LOGICAL:GPI (not:GPI
+ 		      (SHIFT:GPI
+@@ -3128,7 +3303,33 @@
+ 		     (match_operand:GPI 3 "register_operand" "r")))]
+   ""
+   "<LOGICAL:nlogical>\\t%<w>0, %<w>3, %<w>1, <SHIFT:shift> %2"
+-  [(set_attr "type" "logics_shift_imm")]
++  [(set_attr "type" "logic_shift_imm")]
++)
++
++(define_insn "*eor_one_cmpl_<SHIFT:optab><mode>3_alt"
++  [(set (match_operand:GPI 0 "register_operand" "=r")
++	(not:GPI (xor:GPI
++		      (SHIFT:GPI
++		       (match_operand:GPI 1 "register_operand" "r")
++		       (match_operand:QI 2 "aarch64_shift_imm_<mode>" "n"))
++		     (match_operand:GPI 3 "register_operand" "r"))))]
++  ""
++  "eon\\t%<w>0, %<w>3, %<w>1, <SHIFT:shift> %2"
++  [(set_attr "type" "logic_shift_imm")]
++)
++
++;; Zero-extend version of the above.
++(define_insn "*eor_one_cmpl_<SHIFT:optab>sidi3_alt_ze"
++  [(set (match_operand:DI 0 "register_operand" "=r")
++	(zero_extend:DI
++	  (not:SI (xor:SI
++		    (SHIFT:SI
++		      (match_operand:SI 1 "register_operand" "r")
++		      (match_operand:QI 2 "aarch64_shift_imm_si" "n"))
++		    (match_operand:SI 3 "register_operand" "r")))))]
++  ""
++  "eon\\t%w0, %w3, %w1, <SHIFT:shift> %2"
++  [(set_attr "type" "logic_shift_imm")]
+ )
+ 
+ (define_insn "*and_one_cmpl_<SHIFT:optab><mode>3_compare0"
+@@ -3240,7 +3441,7 @@
+ 	 (const_int 0)))]
+   ""
+   "tst\\t%<w>0, %<w>1"
+-  [(set_attr "type" "logics_reg")]
++  [(set_attr "type" "logics_reg,logics_imm")]
+ )
+ 
+ (define_insn "*and_<SHIFT:optab><mode>3nr_compare0"
+@@ -3347,32 +3548,33 @@
+ 
+ ;; Logical left shift using SISD or Integer instruction
+ (define_insn "*aarch64_ashl_sisd_or_int_<mode>3"
+-  [(set (match_operand:GPI 0 "register_operand" "=w,w,r")
++  [(set (match_operand:GPI 0 "register_operand" "=r,w,w")
+         (ashift:GPI
+-          (match_operand:GPI 1 "register_operand" "w,w,r")
+-          (match_operand:QI 2 "aarch64_reg_or_shift_imm_<mode>" "Us<cmode>,w,rUs<cmode>")))]
++          (match_operand:GPI 1 "register_operand" "r,w,w")
++          (match_operand:QI 2 "aarch64_reg_or_shift_imm_<mode>" "rUs<cmode>,Us<cmode>,w")))]
+   ""
+   "@
++   lsl\t%<w>0, %<w>1, %<w>2
+    shl\t%<rtn>0<vas>, %<rtn>1<vas>, %2
+-   ushl\t%<rtn>0<vas>, %<rtn>1<vas>, %<rtn>2<vas>
+-   lsl\t%<w>0, %<w>1, %<w>2"
+-  [(set_attr "simd" "yes,yes,no")
+-   (set_attr "type" "neon_shift_imm<q>, neon_shift_reg<q>,shift_reg")]
++   ushl\t%<rtn>0<vas>, %<rtn>1<vas>, %<rtn>2<vas>"
++  [(set_attr "simd" "no,yes,yes")
++   (set_attr "type" "shift_reg,neon_shift_imm<q>, neon_shift_reg<q>")]
+ )
+ 
+ ;; Logical right shift using SISD or Integer instruction
+ (define_insn "*aarch64_lshr_sisd_or_int_<mode>3"
+-  [(set (match_operand:GPI 0 "register_operand" "=w,&w,r")
++  [(set (match_operand:GPI 0 "register_operand" "=r,w,&w,&w")
+         (lshiftrt:GPI
+-          (match_operand:GPI 1 "register_operand" "w,w,r")
+-          (match_operand:QI 2 "aarch64_reg_or_shift_imm_<mode>" "Us<cmode>,w,rUs<cmode>")))]
++          (match_operand:GPI 1 "register_operand" "r,w,w,w")
++          (match_operand:QI 2 "aarch64_reg_or_shift_imm_<mode>" "rUs<cmode>,Us<cmode>,w,0")))]
+   ""
+   "@
++   lsr\t%<w>0, %<w>1, %<w>2
+    ushr\t%<rtn>0<vas>, %<rtn>1<vas>, %2
+    #
+-   lsr\t%<w>0, %<w>1, %<w>2"
+-  [(set_attr "simd" "yes,yes,no")
+-   (set_attr "type" "neon_shift_imm<q>,neon_shift_reg<q>,shift_reg")]
++   #"
++  [(set_attr "simd" "no,yes,yes,yes")
++   (set_attr "type" "shift_reg,neon_shift_imm<q>,neon_shift_reg<q>,neon_shift_reg<q>")]
+ )
+ 
+ (define_split
+@@ -3407,18 +3609,18 @@
+ 
+ ;; Arithmetic right shift using SISD or Integer instruction
+ (define_insn "*aarch64_ashr_sisd_or_int_<mode>3"
+-  [(set (match_operand:GPI 0 "register_operand" "=w,&w,&w,r")
++  [(set (match_operand:GPI 0 "register_operand" "=r,w,&w,&w")
+         (ashiftrt:GPI
+-          (match_operand:GPI 1 "register_operand" "w,w,w,r")
+-          (match_operand:QI 2 "aarch64_reg_or_shift_imm_di" "Us<cmode>,w,0,rUs<cmode>")))]
++          (match_operand:GPI 1 "register_operand" "r,w,w,w")
++          (match_operand:QI 2 "aarch64_reg_or_shift_imm_di" "rUs<cmode>,Us<cmode>,w,0")))]
+   ""
+   "@
++   asr\t%<w>0, %<w>1, %<w>2
+    sshr\t%<rtn>0<vas>, %<rtn>1<vas>, %2
+    #
+-   #
+-   asr\t%<w>0, %<w>1, %<w>2"
+-  [(set_attr "simd" "yes,yes,yes,no")
+-   (set_attr "type" "neon_shift_imm<q>,neon_shift_reg<q>,neon_shift_reg<q>,shift_reg")]
++   #"
++  [(set_attr "simd" "no,yes,yes,yes")
++   (set_attr "type" "shift_reg,neon_shift_imm<q>,neon_shift_reg<q>,neon_shift_reg<q>")]
+ )
+ 
+ (define_split
+@@ -3551,6 +3753,21 @@
+   [(set_attr "type" "shift_imm")]
+ )
+ 
++;; There are no canonicalisation rules for ashift and lshiftrt inside an ior
++;; so we have to match both orderings.
++(define_insn "*extr<mode>5_insn_alt"
++  [(set (match_operand:GPI 0 "register_operand" "=r")
++	(ior:GPI  (lshiftrt:GPI (match_operand:GPI 2 "register_operand" "r")
++			        (match_operand 4 "const_int_operand" "n"))
++		  (ashift:GPI (match_operand:GPI 1 "register_operand" "r")
++			      (match_operand 3 "const_int_operand" "n"))))]
++  "UINTVAL (operands[3]) < GET_MODE_BITSIZE (<MODE>mode)
++   && (UINTVAL (operands[3]) + UINTVAL (operands[4])
++       == GET_MODE_BITSIZE (<MODE>mode))"
++  "extr\\t%<w>0, %<w>1, %<w>2, %4"
++  [(set_attr "type" "shift_imm")]
++)
++
+ ;; zero_extend version of the above
+ (define_insn "*extrsi5_insn_uxtw"
+   [(set (match_operand:DI 0 "register_operand" "=r")
+@@ -3565,6 +3782,19 @@
+   [(set_attr "type" "shift_imm")]
+ )
+ 
++(define_insn "*extrsi5_insn_uxtw_alt"
++  [(set (match_operand:DI 0 "register_operand" "=r")
++	(zero_extend:DI
++	 (ior:SI (lshiftrt:SI (match_operand:SI 2 "register_operand" "r")
++			       (match_operand 4 "const_int_operand" "n"))
++		 (ashift:SI (match_operand:SI 1 "register_operand" "r")
++			    (match_operand 3 "const_int_operand" "n")))))]
++  "UINTVAL (operands[3]) < 32 &&
++   (UINTVAL (operands[3]) + UINTVAL (operands[4]) == 32)"
++  "extr\\t%w0, %w1, %w2, %4"
++  [(set_attr "type" "shift_imm")]
++)
++
+ (define_insn "*ror<mode>3_insn"
+   [(set (match_operand:GPI 0 "register_operand" "=r")
+ 	(rotate:GPI (match_operand:GPI 1 "register_operand" "r")
+@@ -3696,6 +3926,16 @@
+   [(set_attr "type" "bfm")]
+ )
+ 
++(define_insn "*aarch64_bfi<GPI:mode><ALLX:mode>4"
++  [(set (zero_extract:GPI (match_operand:GPI 0 "register_operand" "+r")
++			  (match_operand 1 "const_int_operand" "n")
++			  (match_operand 2 "const_int_operand" "n"))
++	(zero_extend:GPI (match_operand:ALLX 3  "register_operand" "r")))]
++  "UINTVAL (operands[1]) <= <ALLX:sizen>"
++  "bfi\\t%<GPI:w>0, %<GPI:w>3, %2, %1"
++  [(set_attr "type" "bfm")]
++)
++
+ (define_insn "*extr_insv_lower_reg<mode>"
+   [(set (zero_extract:GPI (match_operand:GPI 0 "register_operand" "+r")
+ 			  (match_operand 1 "const_int_operand" "n")
+@@ -3888,6 +4128,22 @@
+   [(set_attr "type" "f_cvt")]
+ )
+ 
++(define_insn "extendhfsf2"
++  [(set (match_operand:SF 0 "register_operand" "=w")
++        (float_extend:SF (match_operand:HF 1 "register_operand" "w")))]
++  "TARGET_FLOAT"
++  "fcvt\\t%s0, %h1"
++  [(set_attr "type" "f_cvt")]
++)
++
++(define_insn "extendhfdf2"
++  [(set (match_operand:DF 0 "register_operand" "=w")
++        (float_extend:DF (match_operand:HF 1 "register_operand" "w")))]
++  "TARGET_FLOAT"
++  "fcvt\\t%d0, %h1"
++  [(set_attr "type" "f_cvt")]
++)
++
+ (define_insn "truncdfsf2"
+   [(set (match_operand:SF 0 "register_operand" "=w")
+         (float_truncate:SF (match_operand:DF 1 "register_operand" "w")))]
+@@ -3896,6 +4152,22 @@
+   [(set_attr "type" "f_cvt")]
+ )
+ 
++(define_insn "truncsfhf2"
++  [(set (match_operand:HF 0 "register_operand" "=w")
++        (float_truncate:HF (match_operand:SF 1 "register_operand" "w")))]
++  "TARGET_FLOAT"
++  "fcvt\\t%h0, %s1"
++  [(set_attr "type" "f_cvt")]
++)
++
++(define_insn "truncdfhf2"
++  [(set (match_operand:HF 0 "register_operand" "=w")
++        (float_truncate:HF (match_operand:DF 1 "register_operand" "w")))]
++  "TARGET_FLOAT"
++  "fcvt\\t%h0, %d1"
++  [(set_attr "type" "f_cvt")]
++)
++
+ (define_insn "fix_trunc<GPF:mode><GPI:mode>2"
+   [(set (match_operand:GPI 0 "register_operand" "=r")
+         (fix:GPI (match_operand:GPF 1 "register_operand" "w")))]
+@@ -3915,7 +4187,7 @@
+ (define_insn "<optab><fcvt_target><GPF:mode>2"
+   [(set (match_operand:GPF 0 "register_operand" "=w,w")
+         (FLOATUORS:GPF (match_operand:<FCVT_TARGET> 1 "register_operand" "w,r")))]
+-  ""
++  "TARGET_FLOAT"
+   "@
+    <su_optab>cvtf\t%<GPF:s>0, %<s>1
+    <su_optab>cvtf\t%<GPF:s>0, %<w1>1"
+@@ -4042,6 +4314,52 @@
+   [(set_attr "type" "f_minmax<s>")]
+ )
+ 
++;; For copysign (x, y), we want to generate:
++;;
++;;   LDR d2, #(1 << 63)
++;;   BSL v2.8b, [y], [x]
++;;
++;; or another, equivalent, sequence using one of BSL/BIT/BIF.
++;; aarch64_simd_bsldf will select the best suited of these instructions
++;; to generate based on register allocation, and knows how to partially
++;; constant fold based on the values of X and Y, so expand through that.
++
++(define_expand "copysigndf3"
++  [(match_operand:DF 0 "register_operand")
++   (match_operand:DF 1 "register_operand")
++   (match_operand:DF 2 "register_operand")]
++  "TARGET_FLOAT && TARGET_SIMD"
++{
++  rtx mask = gen_reg_rtx (DImode);
++  emit_move_insn (mask, GEN_INT (HOST_WIDE_INT_1U << 63));
++  emit_insn (gen_aarch64_simd_bsldf (operands[0], mask,
++				     operands[2], operands[1]));
++  DONE;
++}
++)
++
++;; As above, but we must first get to a 64-bit value if we wish to use
++;; aarch64_simd_bslv2sf.
++
++(define_expand "copysignsf3"
++  [(match_operand:SF 0 "register_operand")
++   (match_operand:SF 1 "register_operand")
++   (match_operand:SF 2 "register_operand")]
++  "TARGET_FLOAT && TARGET_SIMD"
++{
++  rtx mask = gen_reg_rtx (DImode);
++
++  /* Juggle modes to get us in to a vector mode for BSL.  */
++  rtx op1 = lowpart_subreg (V2SFmode, operands[1], SFmode);
++  rtx op2 = lowpart_subreg (V2SFmode, operands[2], SFmode);
++  rtx tmp = gen_reg_rtx (V2SFmode);
++  emit_move_insn (mask, GEN_INT (HOST_WIDE_INT_1U << 31));
++  emit_insn (gen_aarch64_simd_bslv2sf (tmp, mask, op2, op1));
++  emit_move_insn (operands[0], lowpart_subreg (SFmode, tmp, V2SFmode));
++  DONE;
++}
++)
++
+ ;; -------------------------------------------------------------------
+ ;; Reload support
+ ;; -------------------------------------------------------------------
+@@ -4230,27 +4548,25 @@
+    (set_attr "length" "8")]
+ )
+ 
+-(define_expand "tlsle_small"
++(define_expand "tlsle"
+   [(set (match_operand 0 "register_operand" "=r")
+         (unspec [(match_operand 1 "register_operand" "r")
+                    (match_operand 2 "aarch64_tls_le_symref" "S")]
+-                   UNSPEC_GOTSMALLTLS))]
++                   UNSPEC_TLSLE))]
+   ""
+ {
+   machine_mode mode = GET_MODE (operands[0]);
+   emit_insn ((mode == DImode
+-	      ? gen_tlsle_small_di
+-	      : gen_tlsle_small_si) (operands[0],
+-				     operands[1],
+-				     operands[2]));
++	      ? gen_tlsle_di
++	      : gen_tlsle_si) (operands[0], operands[1], operands[2]));
+   DONE;
+ })
+ 
+-(define_insn "tlsle_small_<mode>"
++(define_insn "tlsle_<mode>"
+   [(set (match_operand:P 0 "register_operand" "=r")
+         (unspec:P [(match_operand:P 1 "register_operand" "r")
+                    (match_operand 2 "aarch64_tls_le_symref" "S")]
+-		   UNSPEC_GOTSMALLTLS))]
++		   UNSPEC_TLSLE))]
+   ""
+   "add\\t%<w>0, %<w>1, #%G2, lsl #12\;add\\t%<w>0, %<w>0, #%L2"
+   [(set_attr "type" "alu_sreg")
+--- a/src/gcc/config/aarch64/aarch64.opt
++++ b/src/gcc/config/aarch64/aarch64.opt
+@@ -21,6 +21,18 @@
+ HeaderInclude
+ config/aarch64/aarch64-opts.h
+ 
++TargetVariable
++enum aarch64_processor explicit_tune_core = aarch64_none
++
++TargetVariable
++enum aarch64_arch explicit_arch = aarch64_no_arch
++
++TargetSave
++const char *x_aarch64_override_tune_string
++
++TargetVariable
++unsigned long aarch64_isa_flags = 0
++
+ ; The TLS dialect names to use with -mtls-dialect.
+ 
+ Enum
+@@ -48,27 +60,16 @@ Enum(cmodel) String(small) Value(AARCH64_CMODEL_SMALL)
+ EnumValue
+ Enum(cmodel) String(large) Value(AARCH64_CMODEL_LARGE)
+ 
+-; The cpu/arch option names to use in cpu/arch selection.
+-
+-Variable
+-const char *aarch64_arch_string
+-
+-Variable
+-const char *aarch64_cpu_string
+-
+-Variable
+-const char *aarch64_tune_string
+-
+ mbig-endian
+ Target Report RejectNegative Mask(BIG_END)
+ Assume target CPU is configured as big endian
+ 
+ mgeneral-regs-only
+-Target Report RejectNegative Mask(GENERAL_REGS_ONLY)
++Target Report RejectNegative Mask(GENERAL_REGS_ONLY) Save
+ Generate code which uses only the general registers
+ 
+ mfix-cortex-a53-835769
+-Target Report Var(aarch64_fix_a53_err835769) Init(2)
++Target Report Var(aarch64_fix_a53_err835769) Init(2) Save
+ Workaround for ARM Cortex-A53 Erratum number 835769
+ 
+ mfix-cortex-a53-843419
+@@ -80,19 +81,19 @@ Target Report RejectNegative InverseMask(BIG_END)
+ Assume target CPU is configured as little endian
+ 
+ mcmodel=
+-Target RejectNegative Joined Enum(cmodel) Var(aarch64_cmodel_var) Init(AARCH64_CMODEL_SMALL)
++Target RejectNegative Joined Enum(cmodel) Var(aarch64_cmodel_var) Init(AARCH64_CMODEL_SMALL) Save
+ Specify the code model
+ 
+ mstrict-align
+-Target Report RejectNegative Mask(STRICT_ALIGN)
++Target Report RejectNegative Mask(STRICT_ALIGN) Save
+ Don't assume that unaligned accesses are handled by the system
+ 
+ momit-leaf-frame-pointer
+-Target Report Save Var(flag_omit_leaf_frame_pointer) Init(1)
++Target Report Var(flag_omit_leaf_frame_pointer) Init(2) Save
+ Omit the frame pointer in leaf functions
+ 
+ mtls-dialect=
+-Target RejectNegative Joined Enum(tls_type) Var(aarch64_tls_dialect) Init(TLS_DESCRIPTORS)
++Target RejectNegative Joined Enum(tls_type) Var(aarch64_tls_dialect) Init(TLS_DESCRIPTORS) Save
+ Specify TLS dialect
+ 
+ march=
+@@ -111,6 +112,10 @@ mabi=
+ Target RejectNegative Joined Enum(aarch64_abi) Var(aarch64_abi) Init(AARCH64_ABI_DEFAULT)
+ -mabi=ABI	Generate code that conforms to the specified ABI
+ 
++moverride=
++Target RejectNegative ToLower Joined Var(aarch64_override_tune_string)
++-moverride=STRING	Power users only! Override CPU optimization parameters
++
+ Enum
+ Name(aarch64_abi) Type(int)
+ Known AArch64 ABIs (for use with the -mabi= option):
+--- a/src/gcc/config/aarch64/arm_acle.h
++++ b/src/gcc/config/aarch64/arm_acle.h
+@@ -28,11 +28,15 @@
+ #define _GCC_ARM_ACLE_H
+ 
+ #include <stdint.h>
++
++#pragma GCC push_options
++
++#pragma GCC target ("+nothing+crc")
++
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+ 
+-#ifdef __ARM_FEATURE_CRC32
+ __extension__ static __inline uint32_t __attribute__ ((__always_inline__))
+ __crc32b (uint32_t __a, uint8_t __b)
+ {
+@@ -81,10 +85,10 @@ __crc32d (uint32_t __a, uint64_t __b)
+   return __builtin_aarch64_crc32x (__a, __b);
+ }
+ 
+-#endif
+-
+ #ifdef __cplusplus
+ }
+ #endif
+ 
++#pragma GCC pop_options
++
+ #endif
+--- a/src/gcc/config/aarch64/arm_neon.h
++++ b/src/gcc/config/aarch64/arm_neon.h
+@@ -27,9 +27,8 @@
+ #ifndef _AARCH64_NEON_H_
+ #define _AARCH64_NEON_H_
+ 
+-#ifndef __ARM_NEON
+-#error You must enable AdvancedSIMD instructions to use arm_neon.h
+-#else
++#pragma GCC push_options
++#pragma GCC target ("+nothing+simd")
+ 
+ #include <stdint.h>
+ 
+@@ -40,6 +39,7 @@ typedef __Int8x8_t int8x8_t;
+ typedef __Int16x4_t int16x4_t;
+ typedef __Int32x2_t int32x2_t;
+ typedef __Int64x1_t int64x1_t;
++typedef __Float16x4_t float16x4_t;
+ typedef __Float32x2_t float32x2_t;
+ typedef __Poly8x8_t poly8x8_t;
+ typedef __Poly16x4_t poly16x4_t;
+@@ -52,6 +52,7 @@ typedef __Int8x16_t int8x16_t;
+ typedef __Int16x8_t int16x8_t;
+ typedef __Int32x4_t int32x4_t;
+ typedef __Int64x2_t int64x2_t;
++typedef __Float16x8_t float16x8_t;
+ typedef __Float32x4_t float32x4_t;
+ typedef __Float64x2_t float64x2_t;
+ typedef __Poly8x16_t poly8x16_t;
+@@ -67,6 +68,7 @@ typedef __Poly16_t poly16_t;
+ typedef __Poly64_t poly64_t;
+ typedef __Poly128_t poly128_t;
+ 
++typedef __fp16 float16_t;
+ typedef float float32_t;
+ typedef double float64_t;
+ 
+@@ -150,6 +152,16 @@ typedef struct uint64x2x2_t
+   uint64x2_t val[2];
+ } uint64x2x2_t;
+ 
++typedef struct float16x4x2_t
++{
++  float16x4_t val[2];
++} float16x4x2_t;
++
++typedef struct float16x8x2_t
++{
++  float16x8_t val[2];
++} float16x8x2_t;
++
+ typedef struct float32x2x2_t
+ {
+   float32x2_t val[2];
+@@ -270,6 +282,16 @@ typedef struct uint64x2x3_t
+   uint64x2_t val[3];
+ } uint64x2x3_t;
+ 
++typedef struct float16x4x3_t
++{
++  float16x4_t val[3];
++} float16x4x3_t;
++
++typedef struct float16x8x3_t
++{
++  float16x8_t val[3];
++} float16x8x3_t;
++
+ typedef struct float32x2x3_t
+ {
+   float32x2_t val[3];
+@@ -390,6 +412,16 @@ typedef struct uint64x2x4_t
+   uint64x2_t val[4];
+ } uint64x2x4_t;
+ 
++typedef struct float16x4x4_t
++{
++  float16x4_t val[4];
++} float16x4x4_t;
++
++typedef struct float16x8x4_t
++{
++  float16x8_t val[4];
++} float16x8x4_t;
++
+ typedef struct float32x2x4_t
+ {
+   float32x2_t val[4];
+@@ -2641,6 +2673,12 @@ vcreate_s64 (uint64_t __a)
+   return (int64x1_t) {__a};
+ }
+ 
++__extension__ static __inline float16x4_t __attribute__ ((__always_inline__))
++vcreate_f16 (uint64_t __a)
++{
++  return (float16x4_t) __a;
++}
++
+ __extension__ static __inline float32x2_t __attribute__ ((__always_inline__))
+ vcreate_f32 (uint64_t __a)
+ {
+@@ -2691,6 +2729,12 @@ vcreate_p16 (uint64_t __a)
+ 
+ /* vget_lane  */
+ 
++__extension__ static __inline float16_t __attribute__ ((__always_inline__))
++vget_lane_f16 (float16x4_t __a, const int __b)
++{
++  return __aarch64_vget_lane_any (__a, __b);
++}
++
+ __extension__ static __inline float32_t __attribute__ ((__always_inline__))
+ vget_lane_f32 (float32x2_t __a, const int __b)
+ {
+@@ -2765,6 +2809,12 @@ vget_lane_u64 (uint64x1_t __a, const int __b)
+ 
+ /* vgetq_lane  */
+ 
++__extension__ static __inline float16_t __attribute__ ((__always_inline__))
++vgetq_lane_f16 (float16x8_t __a, const int __b)
++{
++  return __aarch64_vget_lane_any (__a, __b);
++}
++
+ __extension__ static __inline float32_t __attribute__ ((__always_inline__))
+ vgetq_lane_f32 (float32x4_t __a, const int __b)
+ {
+@@ -2840,6 +2890,12 @@ vgetq_lane_u64 (uint64x2_t __a, const int __b)
+ /* vreinterpret  */
+ 
+ __extension__ static __inline poly8x8_t __attribute__ ((__always_inline__))
++vreinterpret_p8_f16 (float16x4_t __a)
++{
++  return (poly8x8_t) __a;
++}
++
++__extension__ static __inline poly8x8_t __attribute__ ((__always_inline__))
+ vreinterpret_p8_f64 (float64x1_t __a)
+ {
+   return (poly8x8_t) __a;
+@@ -2936,6 +2992,12 @@ vreinterpretq_p8_s64 (int64x2_t __a)
+ }
+ 
+ __extension__ static __inline poly8x16_t __attribute__ ((__always_inline__))
++vreinterpretq_p8_f16 (float16x8_t __a)
++{
++  return (poly8x16_t) __a;
++}
++
++__extension__ static __inline poly8x16_t __attribute__ ((__always_inline__))
+ vreinterpretq_p8_f32 (float32x4_t __a)
+ {
+   return (poly8x16_t) __a;
+@@ -2972,6 +3034,12 @@ vreinterpretq_p8_p16 (poly16x8_t __a)
+ }
+ 
+ __extension__ static __inline poly16x4_t __attribute__ ((__always_inline__))
++vreinterpret_p16_f16 (float16x4_t __a)
++{
++  return (poly16x4_t) __a;
++}
++
++__extension__ static __inline poly16x4_t __attribute__ ((__always_inline__))
+ vreinterpret_p16_f64 (float64x1_t __a)
+ {
+   return (poly16x4_t) __a;
+@@ -3068,6 +3136,12 @@ vreinterpretq_p16_s64 (int64x2_t __a)
+ }
+ 
+ __extension__ static __inline poly16x8_t __attribute__ ((__always_inline__))
++vreinterpretq_p16_f16 (float16x8_t __a)
++{
++  return (poly16x8_t) __a;
++}
++
++__extension__ static __inline poly16x8_t __attribute__ ((__always_inline__))
+ vreinterpretq_p16_f32 (float32x4_t __a)
+ {
+   return (poly16x8_t) __a;
+@@ -3103,6 +3177,156 @@ vreinterpretq_p16_p8 (poly8x16_t __a)
+   return (poly16x8_t) __a;
+ }
+ 
++__extension__ static __inline float16x4_t __attribute__ ((__always_inline__))
++vreinterpret_f16_f64 (float64x1_t __a)
++{
++  return (float16x4_t) __a;
++}
++
++__extension__ static __inline float16x4_t __attribute__ ((__always_inline__))
++vreinterpret_f16_s8 (int8x8_t __a)
++{
++  return (float16x4_t) __a;
++}
++
++__extension__ static __inline float16x4_t __attribute__ ((__always_inline__))
++vreinterpret_f16_s16 (int16x4_t __a)
++{
++  return (float16x4_t) __a;
++}
++
++__extension__ static __inline float16x4_t __attribute__ ((__always_inline__))
++vreinterpret_f16_s32 (int32x2_t __a)
++{
++  return (float16x4_t) __a;
++}
++
++__extension__ static __inline float16x4_t __attribute__ ((__always_inline__))
++vreinterpret_f16_s64 (int64x1_t __a)
++{
++  return (float16x4_t) __a;
++}
++
++__extension__ static __inline float16x4_t __attribute__ ((__always_inline__))
++vreinterpret_f16_f32 (float32x2_t __a)
++{
++  return (float16x4_t) __a;
++}
++
++__extension__ static __inline float16x4_t __attribute__ ((__always_inline__))
++vreinterpret_f16_u8 (uint8x8_t __a)
++{
++  return (float16x4_t) __a;
++}
++
++__extension__ static __inline float16x4_t __attribute__ ((__always_inline__))
++vreinterpret_f16_u16 (uint16x4_t __a)
++{
++  return (float16x4_t) __a;
++}
++
++__extension__ static __inline float16x4_t __attribute__ ((__always_inline__))
++vreinterpret_f16_u32 (uint32x2_t __a)
++{
++  return (float16x4_t) __a;
++}
++
++__extension__ static __inline float16x4_t __attribute__ ((__always_inline__))
++vreinterpret_f16_u64 (uint64x1_t __a)
++{
++  return (float16x4_t) __a;
++}
++
++__extension__ static __inline float16x4_t __attribute__ ((__always_inline__))
++vreinterpret_f16_p8 (poly8x8_t __a)
++{
++  return (float16x4_t) __a;
++}
++
++__extension__ static __inline float16x4_t __attribute__ ((__always_inline__))
++vreinterpret_f16_p16 (poly16x4_t __a)
++{
++  return (float16x4_t) __a;
++}
++
++__extension__ static __inline float16x8_t __attribute__ ((__always_inline__))
++vreinterpretq_f16_f64 (float64x2_t __a)
++{
++  return (float16x8_t) __a;
++}
++
++__extension__ static __inline float16x8_t __attribute__ ((__always_inline__))
++vreinterpretq_f16_s8 (int8x16_t __a)
++{
++  return (float16x8_t) __a;
++}
++
++__extension__ static __inline float16x8_t __attribute__ ((__always_inline__))
++vreinterpretq_f16_s16 (int16x8_t __a)
++{
++  return (float16x8_t) __a;
++}
++
++__extension__ static __inline float16x8_t __attribute__ ((__always_inline__))
++vreinterpretq_f16_s32 (int32x4_t __a)
++{
++  return (float16x8_t) __a;
++}
++
++__extension__ static __inline float16x8_t __attribute__ ((__always_inline__))
++vreinterpretq_f16_s64 (int64x2_t __a)
++{
++  return (float16x8_t) __a;
++}
++
++__extension__ static __inline float16x8_t __attribute__ ((__always_inline__))
++vreinterpretq_f16_f32 (float32x4_t __a)
++{
++  return (float16x8_t) __a;
++}
++
++__extension__ static __inline float16x8_t __attribute__ ((__always_inline__))
++vreinterpretq_f16_u8 (uint8x16_t __a)
++{
++  return (float16x8_t) __a;
++}
++
++__extension__ static __inline float16x8_t __attribute__ ((__always_inline__))
++vreinterpretq_f16_u16 (uint16x8_t __a)
++{
++  return (float16x8_t) __a;
++}
++
++__extension__ static __inline float16x8_t __attribute__ ((__always_inline__))
++vreinterpretq_f16_u32 (uint32x4_t __a)
++{
++  return (float16x8_t) __a;
++}
++
++__extension__ static __inline float16x8_t __attribute__ ((__always_inline__))
++vreinterpretq_f16_u64 (uint64x2_t __a)
++{
++  return (float16x8_t) __a;
++}
++
++__extension__ static __inline float16x8_t __attribute__ ((__always_inline__))
++vreinterpretq_f16_p8 (poly8x16_t __a)
++{
++  return (float16x8_t) __a;
++}
++
++__extension__ static __inline float16x8_t __attribute__ ((__always_inline__))
++vreinterpretq_f16_p16 (poly16x8_t __a)
++{
++  return (float16x8_t) __a;
++}
++
++__extension__ static __inline float32x2_t __attribute__ ((__always_inline__))
++vreinterpret_f32_f16 (float16x4_t __a)
++{
++  return (float32x2_t) __a;
++}
++
+ __extension__ static __inline float32x2_t __attribute__ ((__always_inline__))
+ vreinterpret_f32_f64 (float64x1_t __a)
+ {
+@@ -3170,6 +3394,12 @@ vreinterpret_f32_p16 (poly16x4_t __a)
+ }
+ 
+ __extension__ static __inline float32x4_t __attribute__ ((__always_inline__))
++vreinterpretq_f32_f16 (float16x8_t __a)
++{
++  return (float32x4_t) __a;
++}
++
++__extension__ static __inline float32x4_t __attribute__ ((__always_inline__))
+ vreinterpretq_f32_f64 (float64x2_t __a)
+ {
+   return (float32x4_t) __a;
+@@ -3236,6 +3466,12 @@ vreinterpretq_f32_p16 (poly16x8_t __a)
+ }
+ 
+ __extension__ static __inline float64x1_t __attribute__((__always_inline__))
++vreinterpret_f64_f16 (float16x4_t __a)
++{
++  return (float64x1_t) __a;
++}
++
++__extension__ static __inline float64x1_t __attribute__((__always_inline__))
+ vreinterpret_f64_f32 (float32x2_t __a)
+ {
+   return (float64x1_t) __a;
+@@ -3302,6 +3538,12 @@ vreinterpret_f64_u64 (uint64x1_t __a)
+ }
+ 
+ __extension__ static __inline float64x2_t __attribute__((__always_inline__))
++vreinterpretq_f64_f16 (float16x8_t __a)
++{
++  return (float64x2_t) __a;
++}
++
++__extension__ static __inline float64x2_t __attribute__((__always_inline__))
+ vreinterpretq_f64_f32 (float32x4_t __a)
+ {
+   return (float64x2_t) __a;
+@@ -3368,6 +3610,12 @@ vreinterpretq_f64_u64 (uint64x2_t __a)
+ }
+ 
+ __extension__ static __inline int64x1_t __attribute__ ((__always_inline__))
++vreinterpret_s64_f16 (float16x4_t __a)
++{
++  return (int64x1_t) __a;
++}
++
++__extension__ static __inline int64x1_t __attribute__ ((__always_inline__))
+ vreinterpret_s64_f64 (float64x1_t __a)
+ {
+   return (int64x1_t) __a;
+@@ -3458,6 +3706,12 @@ vreinterpretq_s64_s32 (int32x4_t __a)
+ }
+ 
+ __extension__ static __inline int64x2_t __attribute__ ((__always_inline__))
++vreinterpretq_s64_f16 (float16x8_t __a)
++{
++  return (int64x2_t) __a;
++}
++
++__extension__ static __inline int64x2_t __attribute__ ((__always_inline__))
+ vreinterpretq_s64_f32 (float32x4_t __a)
+ {
+   return (int64x2_t) __a;
+@@ -3500,6 +3754,12 @@ vreinterpretq_s64_p16 (poly16x8_t __a)
+ }
+ 
+ __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__))
++vreinterpret_u64_f16 (float16x4_t __a)
++{
++  return (uint64x1_t) __a;
++}
++
++__extension__ static __inline uint64x1_t __attribute__ ((__always_inline__))
+ vreinterpret_u64_f64 (float64x1_t __a)
+ {
+   return (uint64x1_t) __a;
+@@ -3596,6 +3856,12 @@ vreinterpretq_u64_s64 (int64x2_t __a)
+ }
+ 
+ __extension__ static __inline uint64x2_t __attribute__ ((__always_inline__))
++vreinterpretq_u64_f16 (float16x8_t __a)
++{
++  return (uint64x2_t) __a;
++}
++
++__extension__ static __inline uint64x2_t __attribute__ ((__always_inline__))
+ vreinterpretq_u64_f32 (float32x4_t __a)
+ {
+   return (uint64x2_t) __a;
+@@ -3632,6 +3898,12 @@ vreinterpretq_u64_p16 (poly16x8_t __a)
+ }
+ 
+ __extension__ static __inline int8x8_t __attribute__ ((__always_inline__))
++vreinterpret_s8_f16 (float16x4_t __a)
++{
++  return (int8x8_t) __a;
++}
++
++__extension__ static __inline int8x8_t __attribute__ ((__always_inline__))
+ vreinterpret_s8_f64 (float64x1_t __a)
+ {
+   return (int8x8_t) __a;
+@@ -3722,6 +3994,12 @@ vreinterpretq_s8_s64 (int64x2_t __a)
+ }
+ 
+ __extension__ static __inline int8x16_t __attribute__ ((__always_inline__))
++vreinterpretq_s8_f16 (float16x8_t __a)
++{
++  return (int8x16_t) __a;
++}
++
++__extension__ static __inline int8x16_t __attribute__ ((__always_inline__))
+ vreinterpretq_s8_f32 (float32x4_t __a)
+ {
+   return (int8x16_t) __a;
+@@ -3764,6 +4042,12 @@ vreinterpretq_s8_p16 (poly16x8_t __a)
+ }
+ 
+ __extension__ static __inline int16x4_t __attribute__ ((__always_inline__))
++vreinterpret_s16_f16 (float16x4_t __a)
++{
++  return (int16x4_t) __a;
++}
++
++__extension__ static __inline int16x4_t __attribute__ ((__always_inline__))
+ vreinterpret_s16_f64 (float64x1_t __a)
+ {
+   return (int16x4_t) __a;
+@@ -3854,6 +4138,12 @@ vreinterpretq_s16_s64 (int64x2_t __a)
+ }
+ 
+ __extension__ static __inline int16x8_t __attribute__ ((__always_inline__))
++vreinterpretq_s16_f16 (float16x8_t __a)
++{
++  return (int16x8_t) __a;
++}
++
++__extension__ static __inline int16x8_t __attribute__ ((__always_inline__))
+ vreinterpretq_s16_f32 (float32x4_t __a)
+ {
+   return (int16x8_t) __a;
+@@ -3896,6 +4186,12 @@ vreinterpretq_s16_p16 (poly16x8_t __a)
+ }
+ 
+ __extension__ static __inline int32x2_t __attribute__ ((__always_inline__))
++vreinterpret_s32_f16 (float16x4_t __a)
++{
++  return (int32x2_t) __a;
++}
++
++__extension__ static __inline int32x2_t __attribute__ ((__always_inline__))
+ vreinterpret_s32_f64 (float64x1_t __a)
+ {
+   return (int32x2_t) __a;
+@@ -3986,6 +4282,12 @@ vreinterpretq_s32_s64 (int64x2_t __a)
+ }
+ 
+ __extension__ static __inline int32x4_t __attribute__ ((__always_inline__))
++vreinterpretq_s32_f16 (float16x8_t __a)
++{
++  return (int32x4_t) __a;
++}
++
++__extension__ static __inline int32x4_t __attribute__ ((__always_inline__))
+ vreinterpretq_s32_f32 (float32x4_t __a)
+ {
+   return (int32x4_t) __a;
+@@ -4028,6 +4330,12 @@ vreinterpretq_s32_p16 (poly16x8_t __a)
+ }
+ 
+ __extension__ static __inline uint8x8_t __attribute__ ((__always_inline__))
++vreinterpret_u8_f16 (float16x4_t __a)
++{
++  return (uint8x8_t) __a;
++}
++
++__extension__ static __inline uint8x8_t __attribute__ ((__always_inline__))
+ vreinterpret_u8_f64 (float64x1_t __a)
+ {
+   return (uint8x8_t) __a;
+@@ -4124,6 +4432,12 @@ vreinterpretq_u8_s64 (int64x2_t __a)
+ }
+ 
+ __extension__ static __inline uint8x16_t __attribute__ ((__always_inline__))
++vreinterpretq_u8_f16 (float16x8_t __a)
++{
++  return (uint8x16_t) __a;
++}
++
++__extension__ static __inline uint8x16_t __attribute__ ((__always_inline__))
+ vreinterpretq_u8_f32 (float32x4_t __a)
+ {
+   return (uint8x16_t) __a;
+@@ -4160,6 +4474,12 @@ vreinterpretq_u8_p16 (poly16x8_t __a)
+ }
+ 
+ __extension__ static __inline uint16x4_t __attribute__ ((__always_inline__))
++vreinterpret_u16_f16 (float16x4_t __a)
++{
++  return (uint16x4_t) __a;
++}
++
++__extension__ static __inline uint16x4_t __attribute__ ((__always_inline__))
+ vreinterpret_u16_f64 (float64x1_t __a)
+ {
+   return (uint16x4_t) __a;
+@@ -4256,6 +4576,12 @@ vreinterpretq_u16_s64 (int64x2_t __a)
+ }
+ 
+ __extension__ static __inline uint16x8_t __attribute__ ((__always_inline__))
++vreinterpretq_u16_f16 (float16x8_t __a)
++{
++  return (uint16x8_t) __a;
++}
++
++__extension__ static __inline uint16x8_t __attribute__ ((__always_inline__))
+ vreinterpretq_u16_f32 (float32x4_t __a)
+ {
+   return (uint16x8_t) __a;
+@@ -4292,6 +4618,12 @@ vreinterpretq_u16_p16 (poly16x8_t __a)
+ }
+ 
+ __extension__ static __inline uint32x2_t __attribute__ ((__always_inline__))
++vreinterpret_u32_f16 (float16x4_t __a)
++{
++  return (uint32x2_t) __a;
++}
++
++__extension__ static __inline uint32x2_t __attribute__ ((__always_inline__))
+ vreinterpret_u32_f64 (float64x1_t __a)
+ {
+   return (uint32x2_t) __a;
+@@ -4388,6 +4720,12 @@ vreinterpretq_u32_s64 (int64x2_t __a)
+ }
+ 
+ __extension__ static __inline uint32x4_t __attribute__ ((__always_inline__))
++vreinterpretq_u32_f16 (float16x8_t __a)
++{
++  return (uint32x4_t) __a;
++}
++
++__extension__ static __inline uint32x4_t __attribute__ ((__always_inline__))
+ vreinterpretq_u32_f32 (float32x4_t __a)
+ {
+   return (uint32x4_t) __a;
+@@ -4425,6 +4763,12 @@ vreinterpretq_u32_p16 (poly16x8_t __a)
+ 
+ /* vset_lane  */
+ 
++__extension__ static __inline float16x4_t __attribute__ ((__always_inline__))
++vset_lane_f16 (float16_t __elem, float16x4_t __vec, const int __index)
++{
++  return __aarch64_vset_lane_any (__elem, __vec, __index);
++}
++
+ __extension__ static __inline float32x2_t __attribute__ ((__always_inline__))
+ vset_lane_f32 (float32_t __elem, float32x2_t __vec, const int __index)
+ {
+@@ -4499,6 +4843,12 @@ vset_lane_u64 (uint64_t __elem, uint64x1_t __vec, const int __index)
+ 
+ /* vsetq_lane  */
+ 
++__extension__ static __inline float16x8_t __attribute__ ((__always_inline__))
++vsetq_lane_f16 (float16_t __elem, float16x8_t __vec, const int __index)
++{
++  return __aarch64_vset_lane_any (__elem, __vec, __index);
++}
++
+ __extension__ static __inline float32x4_t __attribute__ ((__always_inline__))
+ vsetq_lane_f32 (float32_t __elem, float32x4_t __vec, const int __index)
+ {
+@@ -4576,6 +4926,12 @@ vsetq_lane_u64 (uint64_t __elem, uint64x2_t __vec, const int __index)
+   uint64x1_t lo = vcreate_u64 (vgetq_lane_u64 (tmp, 0));  \
+   return vreinterpret_##__TYPE##_u64 (lo);
+ 
++__extension__ static __inline float16x4_t __attribute__ ((__always_inline__))
++vget_low_f16 (float16x8_t __a)
++{
++  __GET_LOW (f16);
++}
++
+ __extension__ static __inline float32x2_t __attribute__ ((__always_inline__))
+ vget_low_f32 (float32x4_t __a)
+ {
+@@ -4655,6 +5011,12 @@ vget_low_u64 (uint64x2_t __a)
+   uint64x1_t hi = vcreate_u64 (vgetq_lane_u64 (tmp, 1));	\
+   return vreinterpret_##__TYPE##_u64 (hi);
+ 
++__extension__ static __inline float16x4_t __attribute__ ((__always_inline__))
++vget_high_f16 (float16x8_t __a)
++{
++  __GET_HIGH (f16);
++}
++
+ __extension__ static __inline float32x2_t __attribute__ ((__always_inline__))
+ vget_high_f32 (float32x4_t __a)
+ {
+@@ -4753,6 +5115,12 @@ vcombine_s64 (int64x1_t __a, int64x1_t __b)
+   return __builtin_aarch64_combinedi (__a[0], __b[0]);
+ }
+ 
++__extension__ static __inline float16x8_t __attribute__ ((__always_inline__))
++vcombine_f16 (float16x4_t __a, float16x4_t __b)
++{
++  return __builtin_aarch64_combinev4hf (__a, __b);
++}
++
+ __extension__ static __inline float32x4_t __attribute__ ((__always_inline__))
+ vcombine_f32 (float32x2_t __a, float32x2_t __b)
+ {
+@@ -5657,16 +6025,6 @@ vaddlvq_u32 (uint32x4_t a)
+        result;                                                          \
+      })
+ 
+-/* vcvt_f16_f32 not supported */
+-
+-/* vcvt_f32_f16 not supported */
+-
+-/* vcvt_high_f16_f32 not supported */
+-
+-/* vcvt_high_f32_f16 not supported */
+-
+-static float32x2_t vdup_n_f32 (float32_t);
+-
+ #define vcvt_n_f32_s32(a, b)                                            \
+   __extension__                                                         \
+     ({                                                                  \
+@@ -9824,272 +10182,6 @@ vrsqrtss_f32 (float32_t a, float32_t b)
+        result;                                                          \
+      })
+ 
+-#define vst1_lane_f32(a, b, c)                                          \
+-  __extension__                                                         \
+-    ({                                                                  \
+-       float32x2_t b_ = (b);                                            \
+-       float32_t * a_ = (a);                                            \
+-       __asm__ ("st1 {%1.s}[%2],[%0]"                                   \
+-                :                                                       \
+-                : "r"(a_), "w"(b_), "i"(c)                              \
+-                : "memory");                                            \
+-     })
+-
+-#define vst1_lane_f64(a, b, c)                                          \
+-  __extension__                                                         \
+-    ({                                                                  \
+-       float64x1_t b_ = (b);                                            \
+-       float64_t * a_ = (a);                                            \
+-       __asm__ ("st1 {%1.d}[%2],[%0]"                                   \
+-                :                                                       \
+-                : "r"(a_), "w"(b_), "i"(c)                              \
+-                : "memory");                                            \
+-     })
+-
+-#define vst1_lane_p8(a, b, c)                                           \
+-  __extension__                                                         \
+-    ({                                                                  \
+-       poly8x8_t b_ = (b);                                              \
+-       poly8_t * a_ = (a);                                              \
+-       __asm__ ("st1 {%1.b}[%2],[%0]"                                   \
+-                :                                                       \
+-                : "r"(a_), "w"(b_), "i"(c)                              \
+-                : "memory");                                            \
+-     })
+-
+-#define vst1_lane_p16(a, b, c)                                          \
+-  __extension__                                                         \
+-    ({                                                                  \
+-       poly16x4_t b_ = (b);                                             \
+-       poly16_t * a_ = (a);                                             \
+-       __asm__ ("st1 {%1.h}[%2],[%0]"                                   \
+-                :                                                       \
+-                : "r"(a_), "w"(b_), "i"(c)                              \
+-                : "memory");                                            \
+-     })
+-
+-#define vst1_lane_s8(a, b, c)                                           \
+-  __extension__                                                         \
+-    ({                                                                  \
+-       int8x8_t b_ = (b);                                               \
+-       int8_t * a_ = (a);                                               \
+-       __asm__ ("st1 {%1.b}[%2],[%0]"                                   \
+-                :                                                       \
+-                : "r"(a_), "w"(b_), "i"(c)                              \
+-                : "memory");                                            \
+-     })
+-
+-#define vst1_lane_s16(a, b, c)                                          \
+-  __extension__                                                         \
+-    ({                                                                  \
+-       int16x4_t b_ = (b);                                              \
+-       int16_t * a_ = (a);                                              \
+-       __asm__ ("st1 {%1.h}[%2],[%0]"                                   \
+-                :                                                       \
+-                : "r"(a_), "w"(b_), "i"(c)                              \
+-                : "memory");                                            \
+-     })
+-
+-#define vst1_lane_s32(a, b, c)                                          \
+-  __extension__                                                         \
+-    ({                                                                  \
+-       int32x2_t b_ = (b);                                              \
+-       int32_t * a_ = (a);                                              \
+-       __asm__ ("st1 {%1.s}[%2],[%0]"                                   \
+-                :                                                       \
+-                : "r"(a_), "w"(b_), "i"(c)                              \
+-                : "memory");                                            \
+-     })
+-
+-#define vst1_lane_s64(a, b, c)                                          \
+-  __extension__                                                         \
+-    ({                                                                  \
+-       int64x1_t b_ = (b);                                              \
+-       int64_t * a_ = (a);                                              \
+-       __asm__ ("st1 {%1.d}[%2],[%0]"                                   \
+-                :                                                       \
+-                : "r"(a_), "w"(b_), "i"(c)                              \
+-                : "memory");                                            \
+-     })
+-
+-#define vst1_lane_u8(a, b, c)                                           \
+-  __extension__                                                         \
+-    ({                                                                  \
+-       uint8x8_t b_ = (b);                                              \
+-       uint8_t * a_ = (a);                                              \
+-       __asm__ ("st1 {%1.b}[%2],[%0]"                                   \
+-                :                                                       \
+-                : "r"(a_), "w"(b_), "i"(c)                              \
+-                : "memory");                                            \
+-     })
+-
+-#define vst1_lane_u16(a, b, c)                                          \
+-  __extension__                                                         \
+-    ({                                                                  \
+-       uint16x4_t b_ = (b);                                             \
+-       uint16_t * a_ = (a);                                             \
+-       __asm__ ("st1 {%1.h}[%2],[%0]"                                   \
+-                :                                                       \
+-                : "r"(a_), "w"(b_), "i"(c)                              \
+-                : "memory");                                            \
+-     })
+-
+-#define vst1_lane_u32(a, b, c)                                          \
+-  __extension__                                                         \
+-    ({                                                                  \
+-       uint32x2_t b_ = (b);                                             \
+-       uint32_t * a_ = (a);                                             \
+-       __asm__ ("st1 {%1.s}[%2],[%0]"                                   \
+-                :                                                       \
+-                : "r"(a_), "w"(b_), "i"(c)                              \
+-                : "memory");                                            \
+-     })
+-
+-#define vst1_lane_u64(a, b, c)                                          \
+-  __extension__                                                         \
+-    ({                                                                  \
+-       uint64x1_t b_ = (b);                                             \
+-       uint64_t * a_ = (a);                                             \
+-       __asm__ ("st1 {%1.d}[%2],[%0]"                                   \
+-                :                                                       \
+-                : "r"(a_), "w"(b_), "i"(c)                              \
+-                : "memory");                                            \
+-     })
+-
+-
+-#define vst1q_lane_f32(a, b, c)                                         \
+-  __extension__                                                         \
+-    ({                                                                  \
+-       float32x4_t b_ = (b);                                            \
+-       float32_t * a_ = (a);                                            \
+-       __asm__ ("st1 {%1.s}[%2],[%0]"                                   \
+-                :                                                       \
+-                : "r"(a_), "w"(b_), "i"(c)                              \
+-                : "memory");                                            \
+-     })
+-
+-#define vst1q_lane_f64(a, b, c)                                         \
+-  __extension__                                                         \
+-    ({                                                                  \
+-       float64x2_t b_ = (b);                                            \
+-       float64_t * a_ = (a);                                            \
+-       __asm__ ("st1 {%1.d}[%2],[%0]"                                   \
+-                :                                                       \
+-                : "r"(a_), "w"(b_), "i"(c)                              \
+-                : "memory");                                            \
+-     })
+-
+-#define vst1q_lane_p8(a, b, c)                                          \
+-  __extension__                                                         \
+-    ({                                                                  \
+-       poly8x16_t b_ = (b);                                             \
+-       poly8_t * a_ = (a);                                              \
+-       __asm__ ("st1 {%1.b}[%2],[%0]"                                   \
+-                :                                                       \
+-                : "r"(a_), "w"(b_), "i"(c)                              \
+-                : "memory");                                            \
+-     })
+-
+-#define vst1q_lane_p16(a, b, c)                                         \
+-  __extension__                                                         \
+-    ({                                                                  \
+-       poly16x8_t b_ = (b);                                             \
+-       poly16_t * a_ = (a);                                             \
+-       __asm__ ("st1 {%1.h}[%2],[%0]"                                   \
+-                :                                                       \
+-                : "r"(a_), "w"(b_), "i"(c)                              \
+-                : "memory");                                            \
+-     })
+-
+-#define vst1q_lane_s8(a, b, c)                                          \
+-  __extension__                                                         \
+-    ({                                                                  \
+-       int8x16_t b_ = (b);                                              \
+-       int8_t * a_ = (a);                                               \
+-       __asm__ ("st1 {%1.b}[%2],[%0]"                                   \
+-                :                                                       \
+-                : "r"(a_), "w"(b_), "i"(c)                              \
+-                : "memory");                                            \
+-     })
+-
+-#define vst1q_lane_s16(a, b, c)                                         \
+-  __extension__                                                         \
+-    ({                                                                  \
+-       int16x8_t b_ = (b);                                              \
+-       int16_t * a_ = (a);                                              \
+-       __asm__ ("st1 {%1.h}[%2],[%0]"                                   \
+-                :                                                       \
+-                : "r"(a_), "w"(b_), "i"(c)                              \
+-                : "memory");                                            \
+-     })
+-
+-#define vst1q_lane_s32(a, b, c)                                         \
+-  __extension__                                                         \
+-    ({                                                                  \
+-       int32x4_t b_ = (b);                                              \
+-       int32_t * a_ = (a);                                              \
+-       __asm__ ("st1 {%1.s}[%2],[%0]"                                   \
+-                :                                                       \
+-                : "r"(a_), "w"(b_), "i"(c)                              \
+-                : "memory");                                            \
+-     })
+-
+-#define vst1q_lane_s64(a, b, c)                                         \
+-  __extension__                                                         \
+-    ({                                                                  \
+-       int64x2_t b_ = (b);                                              \
+-       int64_t * a_ = (a);                                              \
+-       __asm__ ("st1 {%1.d}[%2],[%0]"                                   \
+-                :                                                       \
+-                : "r"(a_), "w"(b_), "i"(c)                              \
+-                : "memory");                                            \
+-     })
+-
+-#define vst1q_lane_u8(a, b, c)                                          \
+-  __extension__                                                         \
+-    ({                                                                  \
+-       uint8x16_t b_ = (b);                                             \
+-       uint8_t * a_ = (a);                                              \
+-       __asm__ ("st1 {%1.b}[%2],[%0]"                                   \
+-                :                                                       \
+-                : "r"(a_), "w"(b_), "i"(c)                              \
+-                : "memory");                                            \
+-     })
+-
+-#define vst1q_lane_u16(a, b, c)                                         \
+-  __extension__                                                         \
+-    ({                                                                  \
+-       uint16x8_t b_ = (b);                                             \
+-       uint16_t * a_ = (a);                                             \
+-       __asm__ ("st1 {%1.h}[%2],[%0]"                                   \
+-                :                                                       \
+-                : "r"(a_), "w"(b_), "i"(c)                              \
+-                : "memory");                                            \
+-     })
+-
+-#define vst1q_lane_u32(a, b, c)                                         \
+-  __extension__                                                         \
+-    ({                                                                  \
+-       uint32x4_t b_ = (b);                                             \
+-       uint32_t * a_ = (a);                                             \
+-       __asm__ ("st1 {%1.s}[%2],[%0]"                                   \
+-                :                                                       \
+-                : "r"(a_), "w"(b_), "i"(c)                              \
+-                : "memory");                                            \
+-     })
+-
+-#define vst1q_lane_u64(a, b, c)                                         \
+-  __extension__                                                         \
+-    ({                                                                  \
+-       uint64x2_t b_ = (b);                                             \
+-       uint64_t * a_ = (a);                                             \
+-       __asm__ ("st1 {%1.d}[%2],[%0]"                                   \
+-                :                                                       \
+-                : "r"(a_), "w"(b_), "i"(c)                              \
+-                : "memory");                                            \
+-     })
+-
+-
+ __extension__ static __inline uint8x8_t __attribute__ ((__always_inline__))
+ vtst_p8 (poly8x8_t a, poly8x8_t b)
+ {
+@@ -10149,7 +10241,7 @@ vtstq_p16 (poly16x8_t a, poly16x8_t b)
+    +------+----+----+----+----+
+    |uint  | Y  | Y  | N  | N  |
+    +------+----+----+----+----+
+-   |float | -  | -  | N  | N  |
++   |float | -  | Y  | N  | N  |
+    +------+----+----+----+----+
+    |poly  | Y  | Y  | -  | -  |
+    +------+----+----+----+----+
+@@ -10163,7 +10255,7 @@ vtstq_p16 (poly16x8_t a, poly16x8_t b)
+    +------+----+----+----+----+
+    |uint  | Y  | Y  | Y  | Y  |
+    +------+----+----+----+----+
+-   |float | -  | -  | Y  | Y  |
++   |float | -  | Y  | Y  | Y  |
+    +------+----+----+----+----+
+    |poly  | Y  | Y  | -  | -  |
+    +------+----+----+----+----+
+@@ -10177,7 +10269,7 @@ vtstq_p16 (poly16x8_t a, poly16x8_t b)
+    +------+----+----+----+----+
+    |uint  | Y  | N  | N  | Y  |
+    +------+----+----+----+----+
+-   |float | -  | -  | N  | Y  |
++   |float | -  | N  | N  | Y  |
+    +------+----+----+----+----+
+    |poly  | Y  | N  | -  | -  |
+    +------+----+----+----+----+
+@@ -10193,6 +10285,7 @@ __STRUCTN (int, 8, 2)
+ __STRUCTN (int, 16, 2)
+ __STRUCTN (uint, 8, 2)
+ __STRUCTN (uint, 16, 2)
++__STRUCTN (float, 16, 2)
+ __STRUCTN (poly, 8, 2)
+ __STRUCTN (poly, 16, 2)
+ /* 3-element structs.  */
+@@ -10204,6 +10297,7 @@ __STRUCTN (uint, 8, 3)
+ __STRUCTN (uint, 16, 3)
+ __STRUCTN (uint, 32, 3)
+ __STRUCTN (uint, 64, 3)
++__STRUCTN (float, 16, 3)
+ __STRUCTN (float, 32, 3)
+ __STRUCTN (float, 64, 3)
+ __STRUCTN (poly, 8, 3)
+@@ -10218,8 +10312,8 @@ __STRUCTN (float, 64, 4)
+ #undef __STRUCTN
+ 
+ 
+-#define __ST2_LANE_FUNC(intype, largetype, ptrtype,			     \
+-			mode, ptr_mode, funcsuffix, signedtype)		     \
++#define __ST2_LANE_FUNC(intype, largetype, ptrtype, mode,		     \
++			qmode, ptr_mode, funcsuffix, signedtype)	     \
+ __extension__ static __inline void					     \
+ __attribute__ ((__always_inline__))					     \
+ vst2_lane_ ## funcsuffix (ptrtype *__ptr,				     \
+@@ -10233,31 +10327,39 @@ vst2_lane_ ## funcsuffix (ptrtype *__ptr,				     \
+   __temp.val[1]								     \
+     = vcombine_##funcsuffix (__b.val[1],				     \
+ 			     vcreate_##funcsuffix (__AARCH64_UINT64_C (0))); \
+-  __o = __builtin_aarch64_set_qregoi##mode (__o,			     \
+-					    (signedtype) __temp.val[0], 0);  \
+-  __o = __builtin_aarch64_set_qregoi##mode (__o,			     \
+-					    (signedtype) __temp.val[1], 1);  \
++  __o = __builtin_aarch64_set_qregoi##qmode (__o,			     \
++					     (signedtype) __temp.val[0], 0); \
++  __o = __builtin_aarch64_set_qregoi##qmode (__o,			     \
++					     (signedtype) __temp.val[1], 1); \
+   __builtin_aarch64_st2_lane##mode ((__builtin_aarch64_simd_ ## ptr_mode *)  \
+ 				     __ptr, __o, __c);			     \
+ }
+ 
+-__ST2_LANE_FUNC (float32x2x2_t, float32x4x2_t, float32_t, v4sf, sf, f32,
++__ST2_LANE_FUNC (float16x4x2_t, float16x8x2_t, float16_t, v4hf, v8hf, hf, f16,
++		 float16x8_t)
++__ST2_LANE_FUNC (float32x2x2_t, float32x4x2_t, float32_t, v2sf, v4sf, sf, f32,
+ 		 float32x4_t)
+-__ST2_LANE_FUNC (float64x1x2_t, float64x2x2_t, float64_t, v2df, df, f64,
++__ST2_LANE_FUNC (float64x1x2_t, float64x2x2_t, float64_t, df, v2df, df, f64,
+ 		 float64x2_t)
+-__ST2_LANE_FUNC (poly8x8x2_t, poly8x16x2_t, poly8_t, v16qi, qi, p8, int8x16_t)
+-__ST2_LANE_FUNC (poly16x4x2_t, poly16x8x2_t, poly16_t, v8hi, hi, p16,
++__ST2_LANE_FUNC (poly8x8x2_t, poly8x16x2_t, poly8_t, v8qi, v16qi, qi, p8,
++		 int8x16_t)
++__ST2_LANE_FUNC (poly16x4x2_t, poly16x8x2_t, poly16_t, v4hi, v8hi, hi, p16,
+ 		 int16x8_t)
+-__ST2_LANE_FUNC (int8x8x2_t, int8x16x2_t, int8_t, v16qi, qi, s8, int8x16_t)
+-__ST2_LANE_FUNC (int16x4x2_t, int16x8x2_t, int16_t, v8hi, hi, s16, int16x8_t)
+-__ST2_LANE_FUNC (int32x2x2_t, int32x4x2_t, int32_t, v4si, si, s32, int32x4_t)
+-__ST2_LANE_FUNC (int64x1x2_t, int64x2x2_t, int64_t, v2di, di, s64, int64x2_t)
+-__ST2_LANE_FUNC (uint8x8x2_t, uint8x16x2_t, uint8_t, v16qi, qi, u8, int8x16_t)
+-__ST2_LANE_FUNC (uint16x4x2_t, uint16x8x2_t, uint16_t, v8hi, hi, u16,
++__ST2_LANE_FUNC (int8x8x2_t, int8x16x2_t, int8_t, v8qi, v16qi, qi, s8,
++		 int8x16_t)
++__ST2_LANE_FUNC (int16x4x2_t, int16x8x2_t, int16_t, v4hi, v8hi, hi, s16,
+ 		 int16x8_t)
+-__ST2_LANE_FUNC (uint32x2x2_t, uint32x4x2_t, uint32_t, v4si, si, u32,
++__ST2_LANE_FUNC (int32x2x2_t, int32x4x2_t, int32_t, v2si, v4si, si, s32,
+ 		 int32x4_t)
+-__ST2_LANE_FUNC (uint64x1x2_t, uint64x2x2_t, uint64_t, v2di, di, u64,
++__ST2_LANE_FUNC (int64x1x2_t, int64x2x2_t, int64_t, di, v2di, di, s64,
++		 int64x2_t)
++__ST2_LANE_FUNC (uint8x8x2_t, uint8x16x2_t, uint8_t, v8qi, v16qi, qi, u8,
++		 int8x16_t)
++__ST2_LANE_FUNC (uint16x4x2_t, uint16x8x2_t, uint16_t, v4hi, v8hi, hi, u16,
++		 int16x8_t)
++__ST2_LANE_FUNC (uint32x2x2_t, uint32x4x2_t, uint32_t, v2si, v4si, si, u32,
++		 int32x4_t)
++__ST2_LANE_FUNC (uint64x1x2_t, uint64x2x2_t, uint64_t, di, v2di, di, u64,
+ 		 int64x2_t)
+ 
+ #undef __ST2_LANE_FUNC
+@@ -10273,6 +10375,7 @@ vst2q_lane_ ## funcsuffix (ptrtype *__ptr,				    \
+ 				    __ptr, __temp.__o, __c);		    \
+ }
+ 
++__ST2_LANE_FUNC (float16x8x2_t, float16_t, v8hf, hf, f16)
+ __ST2_LANE_FUNC (float32x4x2_t, float32_t, v4sf, sf, f32)
+ __ST2_LANE_FUNC (float64x2x2_t, float64_t, v2df, df, f64)
+ __ST2_LANE_FUNC (poly8x16x2_t, poly8_t, v16qi, qi, p8)
+@@ -10286,8 +10389,8 @@ __ST2_LANE_FUNC (uint16x8x2_t, uint16_t, v8hi, hi, u16)
+ __ST2_LANE_FUNC (uint32x4x2_t, uint32_t, v4si, si, u32)
+ __ST2_LANE_FUNC (uint64x2x2_t, uint64_t, v2di, di, u64)
+ 
+-#define __ST3_LANE_FUNC(intype, largetype, ptrtype,			     \
+-			mode, ptr_mode, funcsuffix, signedtype)		     \
++#define __ST3_LANE_FUNC(intype, largetype, ptrtype, mode,		     \
++			qmode, ptr_mode, funcsuffix, signedtype)	     \
+ __extension__ static __inline void					     \
+ __attribute__ ((__always_inline__))					     \
+ vst3_lane_ ## funcsuffix (ptrtype *__ptr,				     \
+@@ -10304,33 +10407,41 @@ vst3_lane_ ## funcsuffix (ptrtype *__ptr,				     \
+   __temp.val[2]								     \
+     = vcombine_##funcsuffix (__b.val[2],				     \
+ 			     vcreate_##funcsuffix (__AARCH64_UINT64_C (0))); \
+-  __o = __builtin_aarch64_set_qregci##mode (__o,			     \
+-					    (signedtype) __temp.val[0], 0);  \
+-  __o = __builtin_aarch64_set_qregci##mode (__o,			     \
+-					    (signedtype) __temp.val[1], 1);  \
+-  __o = __builtin_aarch64_set_qregci##mode (__o,			     \
+-					    (signedtype) __temp.val[2], 2);  \
++  __o = __builtin_aarch64_set_qregci##qmode (__o,			     \
++					     (signedtype) __temp.val[0], 0); \
++  __o = __builtin_aarch64_set_qregci##qmode (__o,			     \
++					     (signedtype) __temp.val[1], 1); \
++  __o = __builtin_aarch64_set_qregci##qmode (__o,			     \
++					     (signedtype) __temp.val[2], 2); \
+   __builtin_aarch64_st3_lane##mode ((__builtin_aarch64_simd_ ## ptr_mode *)  \
+ 				     __ptr, __o, __c);			     \
+ }
+ 
+-__ST3_LANE_FUNC (float32x2x3_t, float32x4x3_t, float32_t, v4sf, sf, f32,
++__ST3_LANE_FUNC (float16x4x3_t, float16x8x3_t, float16_t, v4hf, v8hf, hf, f16,
++		 float16x8_t)
++__ST3_LANE_FUNC (float32x2x3_t, float32x4x3_t, float32_t, v2sf, v4sf, sf, f32,
+ 		 float32x4_t)
+-__ST3_LANE_FUNC (float64x1x3_t, float64x2x3_t, float64_t, v2df, df, f64,
++__ST3_LANE_FUNC (float64x1x3_t, float64x2x3_t, float64_t, df, v2df, df, f64,
+ 		 float64x2_t)
+-__ST3_LANE_FUNC (poly8x8x3_t, poly8x16x3_t, poly8_t, v16qi, qi, p8, int8x16_t)
+-__ST3_LANE_FUNC (poly16x4x3_t, poly16x8x3_t, poly16_t, v8hi, hi, p16,
++__ST3_LANE_FUNC (poly8x8x3_t, poly8x16x3_t, poly8_t, v8qi, v16qi, qi, p8,
++		 int8x16_t)
++__ST3_LANE_FUNC (poly16x4x3_t, poly16x8x3_t, poly16_t, v4hi, v8hi, hi, p16,
++		 int16x8_t)
++__ST3_LANE_FUNC (int8x8x3_t, int8x16x3_t, int8_t, v8qi, v16qi, qi, s8,
++		 int8x16_t)
++__ST3_LANE_FUNC (int16x4x3_t, int16x8x3_t, int16_t, v4hi, v8hi, hi, s16,
+ 		 int16x8_t)
+-__ST3_LANE_FUNC (int8x8x3_t, int8x16x3_t, int8_t, v16qi, qi, s8, int8x16_t)
+-__ST3_LANE_FUNC (int16x4x3_t, int16x8x3_t, int16_t, v8hi, hi, s16, int16x8_t)
+-__ST3_LANE_FUNC (int32x2x3_t, int32x4x3_t, int32_t, v4si, si, s32, int32x4_t)
+-__ST3_LANE_FUNC (int64x1x3_t, int64x2x3_t, int64_t, v2di, di, s64, int64x2_t)
+-__ST3_LANE_FUNC (uint8x8x3_t, uint8x16x3_t, uint8_t, v16qi, qi, u8, int8x16_t)
+-__ST3_LANE_FUNC (uint16x4x3_t, uint16x8x3_t, uint16_t, v8hi, hi, u16,
++__ST3_LANE_FUNC (int32x2x3_t, int32x4x3_t, int32_t, v2si, v4si, si, s32,
++		 int32x4_t)
++__ST3_LANE_FUNC (int64x1x3_t, int64x2x3_t, int64_t, di, v2di, di, s64,
++		 int64x2_t)
++__ST3_LANE_FUNC (uint8x8x3_t, uint8x16x3_t, uint8_t, v8qi, v16qi, qi, u8,
++		 int8x16_t)
++__ST3_LANE_FUNC (uint16x4x3_t, uint16x8x3_t, uint16_t, v4hi, v8hi, hi, u16,
+ 		 int16x8_t)
+-__ST3_LANE_FUNC (uint32x2x3_t, uint32x4x3_t, uint32_t, v4si, si, u32,
++__ST3_LANE_FUNC (uint32x2x3_t, uint32x4x3_t, uint32_t, v2si, v4si, si, u32,
+ 		 int32x4_t)
+-__ST3_LANE_FUNC (uint64x1x3_t, uint64x2x3_t, uint64_t, v2di, di, u64,
++__ST3_LANE_FUNC (uint64x1x3_t, uint64x2x3_t, uint64_t, di, v2di, di, u64,
+ 		 int64x2_t)
+ 
+ #undef __ST3_LANE_FUNC
+@@ -10346,6 +10457,7 @@ vst3q_lane_ ## funcsuffix (ptrtype *__ptr,				    \
+ 				    __ptr, __temp.__o, __c);		    \
+ }
+ 
++__ST3_LANE_FUNC (float16x8x3_t, float16_t, v8hf, hf, f16)
+ __ST3_LANE_FUNC (float32x4x3_t, float32_t, v4sf, sf, f32)
+ __ST3_LANE_FUNC (float64x2x3_t, float64_t, v2df, df, f64)
+ __ST3_LANE_FUNC (poly8x16x3_t, poly8_t, v16qi, qi, p8)
+@@ -10359,8 +10471,8 @@ __ST3_LANE_FUNC (uint16x8x3_t, uint16_t, v8hi, hi, u16)
+ __ST3_LANE_FUNC (uint32x4x3_t, uint32_t, v4si, si, u32)
+ __ST3_LANE_FUNC (uint64x2x3_t, uint64_t, v2di, di, u64)
+ 
+-#define __ST4_LANE_FUNC(intype, largetype, ptrtype,			     \
+-			mode, ptr_mode, funcsuffix, signedtype)		     \
++#define __ST4_LANE_FUNC(intype, largetype, ptrtype, mode,		     \
++			qmode, ptr_mode, funcsuffix, signedtype)	     \
+ __extension__ static __inline void					     \
+ __attribute__ ((__always_inline__))					     \
+ vst4_lane_ ## funcsuffix (ptrtype *__ptr,				     \
+@@ -10380,35 +10492,43 @@ vst4_lane_ ## funcsuffix (ptrtype *__ptr,				     \
+   __temp.val[3]								     \
+     = vcombine_##funcsuffix (__b.val[3],				     \
+ 			     vcreate_##funcsuffix (__AARCH64_UINT64_C (0))); \
+-  __o = __builtin_aarch64_set_qregxi##mode (__o,			     \
+-					    (signedtype) __temp.val[0], 0);  \
+-  __o = __builtin_aarch64_set_qregxi##mode (__o,			     \
+-					    (signedtype) __temp.val[1], 1);  \
+-  __o = __builtin_aarch64_set_qregxi##mode (__o,			     \
+-					    (signedtype) __temp.val[2], 2);  \
+-  __o = __builtin_aarch64_set_qregxi##mode (__o,			     \
+-					    (signedtype) __temp.val[3], 3);  \
++  __o = __builtin_aarch64_set_qregxi##qmode (__o,			     \
++					     (signedtype) __temp.val[0], 0); \
++  __o = __builtin_aarch64_set_qregxi##qmode (__o,			     \
++					     (signedtype) __temp.val[1], 1); \
++  __o = __builtin_aarch64_set_qregxi##qmode (__o,			     \
++					     (signedtype) __temp.val[2], 2); \
++  __o = __builtin_aarch64_set_qregxi##qmode (__o,			     \
++					     (signedtype) __temp.val[3], 3); \
+   __builtin_aarch64_st4_lane##mode ((__builtin_aarch64_simd_ ## ptr_mode *)  \
+ 				     __ptr, __o, __c);			     \
+ }
+ 
+-__ST4_LANE_FUNC (float32x2x4_t, float32x4x4_t, float32_t, v4sf, sf, f32,
++__ST4_LANE_FUNC (float16x4x4_t, float16x8x4_t, float16_t, v4hf, v8hf, hf, f16,
++		 float16x8_t)
++__ST4_LANE_FUNC (float32x2x4_t, float32x4x4_t, float32_t, v2sf, v4sf, sf, f32,
+ 		 float32x4_t)
+-__ST4_LANE_FUNC (float64x1x4_t, float64x2x4_t, float64_t, v2df, df, f64,
++__ST4_LANE_FUNC (float64x1x4_t, float64x2x4_t, float64_t, df, v2df, df, f64,
+ 		 float64x2_t)
+-__ST4_LANE_FUNC (poly8x8x4_t, poly8x16x4_t, poly8_t, v16qi, qi, p8, int8x16_t)
+-__ST4_LANE_FUNC (poly16x4x4_t, poly16x8x4_t, poly16_t, v8hi, hi, p16,
++__ST4_LANE_FUNC (poly8x8x4_t, poly8x16x4_t, poly8_t, v8qi, v16qi, qi, p8,
++		 int8x16_t)
++__ST4_LANE_FUNC (poly16x4x4_t, poly16x8x4_t, poly16_t, v4hi, v8hi, hi, p16,
+ 		 int16x8_t)
+-__ST4_LANE_FUNC (int8x8x4_t, int8x16x4_t, int8_t, v16qi, qi, s8, int8x16_t)
+-__ST4_LANE_FUNC (int16x4x4_t, int16x8x4_t, int16_t, v8hi, hi, s16, int16x8_t)
+-__ST4_LANE_FUNC (int32x2x4_t, int32x4x4_t, int32_t, v4si, si, s32, int32x4_t)
+-__ST4_LANE_FUNC (int64x1x4_t, int64x2x4_t, int64_t, v2di, di, s64, int64x2_t)
+-__ST4_LANE_FUNC (uint8x8x4_t, uint8x16x4_t, uint8_t, v16qi, qi, u8, int8x16_t)
+-__ST4_LANE_FUNC (uint16x4x4_t, uint16x8x4_t, uint16_t, v8hi, hi, u16,
++__ST4_LANE_FUNC (int8x8x4_t, int8x16x4_t, int8_t, v8qi, v16qi, qi, s8,
++		 int8x16_t)
++__ST4_LANE_FUNC (int16x4x4_t, int16x8x4_t, int16_t, v4hi, v8hi, hi, s16,
+ 		 int16x8_t)
+-__ST4_LANE_FUNC (uint32x2x4_t, uint32x4x4_t, uint32_t, v4si, si, u32,
++__ST4_LANE_FUNC (int32x2x4_t, int32x4x4_t, int32_t, v2si, v4si, si, s32,
+ 		 int32x4_t)
+-__ST4_LANE_FUNC (uint64x1x4_t, uint64x2x4_t, uint64_t, v2di, di, u64,
++__ST4_LANE_FUNC (int64x1x4_t, int64x2x4_t, int64_t, di, v2di, di, s64,
++		 int64x2_t)
++__ST4_LANE_FUNC (uint8x8x4_t, uint8x16x4_t, uint8_t, v8qi, v16qi, qi, u8,
++		 int8x16_t)
++__ST4_LANE_FUNC (uint16x4x4_t, uint16x8x4_t, uint16_t, v4hi, v8hi, hi, u16,
++		 int16x8_t)
++__ST4_LANE_FUNC (uint32x2x4_t, uint32x4x4_t, uint32_t, v2si, v4si, si, u32,
++		 int32x4_t)
++__ST4_LANE_FUNC (uint64x1x4_t, uint64x2x4_t, uint64_t, di, v2di, di, u64,
+ 		 int64x2_t)
+ 
+ #undef __ST4_LANE_FUNC
+@@ -10424,6 +10544,7 @@ vst4q_lane_ ## funcsuffix (ptrtype *__ptr,				    \
+ 				    __ptr, __temp.__o, __c);		    \
+ }
+ 
++__ST4_LANE_FUNC (float16x8x4_t, float16_t, v8hf, hf, f16)
+ __ST4_LANE_FUNC (float32x4x4_t, float32_t, v4sf, sf, f32)
+ __ST4_LANE_FUNC (float64x2x4_t, float64_t, v2df, df, f64)
+ __ST4_LANE_FUNC (poly8x16x4_t, poly8_t, v16qi, qi, p8)
+@@ -11153,13 +11274,14 @@ vtbl3_s8 (int8x8x3_t tab, int8x8_t idx)
+ {
+   int8x8_t result;
+   int8x16x2_t temp;
++  __builtin_aarch64_simd_oi __o;
+   temp.val[0] = vcombine_s8 (tab.val[0], tab.val[1]);
+   temp.val[1] = vcombine_s8 (tab.val[2], vcreate_s8 (__AARCH64_UINT64_C (0x0)));
+-  __asm__ ("ld1 {v16.16b - v17.16b }, %1\n\t"
+-	   "tbl %0.8b, {v16.16b - v17.16b}, %2.8b\n\t"
+-           : "=w"(result)
+-           : "Q"(temp), "w"(idx)
+-           : "v16", "v17", "memory");
++  __o = __builtin_aarch64_set_qregoiv16qi (__o,
++					   (int8x16_t) temp.val[0], 0);
++  __o = __builtin_aarch64_set_qregoiv16qi (__o,
++					   (int8x16_t) temp.val[1], 1);
++  result = __builtin_aarch64_tbl3v8qi (__o, idx);
+   return result;
+ }
+ 
+@@ -11168,13 +11290,14 @@ vtbl3_u8 (uint8x8x3_t tab, uint8x8_t idx)
+ {
+   uint8x8_t result;
+   uint8x16x2_t temp;
++  __builtin_aarch64_simd_oi __o;
+   temp.val[0] = vcombine_u8 (tab.val[0], tab.val[1]);
+   temp.val[1] = vcombine_u8 (tab.val[2], vcreate_u8 (__AARCH64_UINT64_C (0x0)));
+-  __asm__ ("ld1 {v16.16b - v17.16b }, %1\n\t"
+-	   "tbl %0.8b, {v16.16b - v17.16b}, %2.8b\n\t"
+-           : "=w"(result)
+-           : "Q"(temp), "w"(idx)
+-           : "v16", "v17", "memory");
++  __o = __builtin_aarch64_set_qregoiv16qi (__o,
++					   (int8x16_t) temp.val[0], 0);
++  __o = __builtin_aarch64_set_qregoiv16qi (__o,
++					   (int8x16_t) temp.val[1], 1);
++  result = (uint8x8_t)__builtin_aarch64_tbl3v8qi (__o, (int8x8_t)idx);
+   return result;
+ }
+ 
+@@ -11183,13 +11306,14 @@ vtbl3_p8 (poly8x8x3_t tab, uint8x8_t idx)
+ {
+   poly8x8_t result;
+   poly8x16x2_t temp;
++  __builtin_aarch64_simd_oi __o;
+   temp.val[0] = vcombine_p8 (tab.val[0], tab.val[1]);
+   temp.val[1] = vcombine_p8 (tab.val[2], vcreate_p8 (__AARCH64_UINT64_C (0x0)));
+-  __asm__ ("ld1 {v16.16b - v17.16b }, %1\n\t"
+-	   "tbl %0.8b, {v16.16b - v17.16b}, %2.8b\n\t"
+-           : "=w"(result)
+-           : "Q"(temp), "w"(idx)
+-           : "v16", "v17", "memory");
++  __o = __builtin_aarch64_set_qregoiv16qi (__o,
++					   (int8x16_t) temp.val[0], 0);
++  __o = __builtin_aarch64_set_qregoiv16qi (__o,
++					   (int8x16_t) temp.val[1], 1);
++  result = (poly8x8_t)__builtin_aarch64_tbl3v8qi (__o, (int8x8_t)idx);
+   return result;
+ }
+ 
+@@ -11198,13 +11322,14 @@ vtbl4_s8 (int8x8x4_t tab, int8x8_t idx)
+ {
+   int8x8_t result;
+   int8x16x2_t temp;
++  __builtin_aarch64_simd_oi __o;
+   temp.val[0] = vcombine_s8 (tab.val[0], tab.val[1]);
+   temp.val[1] = vcombine_s8 (tab.val[2], tab.val[3]);
+-  __asm__ ("ld1 {v16.16b - v17.16b }, %1\n\t"
+-	   "tbl %0.8b, {v16.16b - v17.16b}, %2.8b\n\t"
+-           : "=w"(result)
+-           : "Q"(temp), "w"(idx)
+-           : "v16", "v17", "memory");
++  __o = __builtin_aarch64_set_qregoiv16qi (__o,
++					   (int8x16_t) temp.val[0], 0);
++  __o = __builtin_aarch64_set_qregoiv16qi (__o,
++					   (int8x16_t) temp.val[1], 1);
++  result = __builtin_aarch64_tbl3v8qi (__o, idx);
+   return result;
+ }
+ 
+@@ -11213,13 +11338,14 @@ vtbl4_u8 (uint8x8x4_t tab, uint8x8_t idx)
+ {
+   uint8x8_t result;
+   uint8x16x2_t temp;
++  __builtin_aarch64_simd_oi __o;
+   temp.val[0] = vcombine_u8 (tab.val[0], tab.val[1]);
+   temp.val[1] = vcombine_u8 (tab.val[2], tab.val[3]);
+-  __asm__ ("ld1 {v16.16b - v17.16b }, %1\n\t"
+-	   "tbl %0.8b, {v16.16b - v17.16b}, %2.8b\n\t"
+-           : "=w"(result)
+-           : "Q"(temp), "w"(idx)
+-           : "v16", "v17", "memory");
++  __o = __builtin_aarch64_set_qregoiv16qi (__o,
++					   (int8x16_t) temp.val[0], 0);
++  __o = __builtin_aarch64_set_qregoiv16qi (__o,
++					   (int8x16_t) temp.val[1], 1);
++  result = (uint8x8_t)__builtin_aarch64_tbl3v8qi (__o, (int8x8_t)idx);
+   return result;
+ }
+ 
+@@ -11228,13 +11354,14 @@ vtbl4_p8 (poly8x8x4_t tab, uint8x8_t idx)
+ {
+   poly8x8_t result;
+   poly8x16x2_t temp;
++  __builtin_aarch64_simd_oi __o;
+   temp.val[0] = vcombine_p8 (tab.val[0], tab.val[1]);
+   temp.val[1] = vcombine_p8 (tab.val[2], tab.val[3]);
+-  __asm__ ("ld1 {v16.16b - v17.16b }, %1\n\t"
+-	   "tbl %0.8b, {v16.16b - v17.16b}, %2.8b\n\t"
+-           : "=w"(result)
+-           : "Q"(temp), "w"(idx)
+-           : "v16", "v17", "memory");
++  __o = __builtin_aarch64_set_qregoiv16qi (__o,
++					   (int8x16_t) temp.val[0], 0);
++  __o = __builtin_aarch64_set_qregoiv16qi (__o,
++					   (int8x16_t) temp.val[1], 1);
++  result = (poly8x8_t)__builtin_aarch64_tbl3v8qi (__o, (int8x8_t)idx);
+   return result;
+ }
+ 
+@@ -11274,51 +11401,6 @@ vtbx2_p8 (poly8x8_t r, poly8x8x2_t tab, uint8x8_t idx)
+   return result;
+ }
+ 
+-__extension__ static __inline int8x8_t __attribute__ ((__always_inline__))
+-vtbx4_s8 (int8x8_t r, int8x8x4_t tab, int8x8_t idx)
+-{
+-  int8x8_t result = r;
+-  int8x16x2_t temp;
+-  temp.val[0] = vcombine_s8 (tab.val[0], tab.val[1]);
+-  temp.val[1] = vcombine_s8 (tab.val[2], tab.val[3]);
+-  __asm__ ("ld1 {v16.16b - v17.16b }, %1\n\t"
+-	   "tbx %0.8b, {v16.16b - v17.16b}, %2.8b\n\t"
+-           : "+w"(result)
+-           : "Q"(temp), "w"(idx)
+-           : "v16", "v17", "memory");
+-  return result;
+-}
+-
+-__extension__ static __inline uint8x8_t __attribute__ ((__always_inline__))
+-vtbx4_u8 (uint8x8_t r, uint8x8x4_t tab, uint8x8_t idx)
+-{
+-  uint8x8_t result = r;
+-  uint8x16x2_t temp;
+-  temp.val[0] = vcombine_u8 (tab.val[0], tab.val[1]);
+-  temp.val[1] = vcombine_u8 (tab.val[2], tab.val[3]);
+-  __asm__ ("ld1 {v16.16b - v17.16b }, %1\n\t"
+-	   "tbx %0.8b, {v16.16b - v17.16b}, %2.8b\n\t"
+-           : "+w"(result)
+-           : "Q"(temp), "w"(idx)
+-           : "v16", "v17", "memory");
+-  return result;
+-}
+-
+-__extension__ static __inline poly8x8_t __attribute__ ((__always_inline__))
+-vtbx4_p8 (poly8x8_t r, poly8x8x4_t tab, uint8x8_t idx)
+-{
+-  poly8x8_t result = r;
+-  poly8x16x2_t temp;
+-  temp.val[0] = vcombine_p8 (tab.val[0], tab.val[1]);
+-  temp.val[1] = vcombine_p8 (tab.val[2], tab.val[3]);
+-  __asm__ ("ld1 {v16.16b - v17.16b }, %1\n\t"
+-	   "tbx %0.8b, {v16.16b - v17.16b}, %2.8b\n\t"
+-           : "+w"(result)
+-           : "Q"(temp), "w"(idx)
+-           : "v16", "v17", "memory");
+-  return result;
+-}
+-
+ /* End of temporary inline asm.  */
+ 
+ /* Start of optimal implementations in approved order.  */
+@@ -11664,35 +11746,34 @@ vbslq_u64 (uint64x2_t __a, uint64x2_t __b, uint64x2_t __c)
+   return __builtin_aarch64_simd_bslv2di_uuuu (__a, __b, __c);
+ }
+ 
+-#ifdef __ARM_FEATURE_CRYPTO
+-
++#pragma GCC push_options
++#pragma GCC target ("+nothing+crypto")
+ /* vaes  */
+ 
+-static __inline uint8x16_t
++__extension__ static __inline uint8x16_t __attribute__ ((__always_inline__))
+ vaeseq_u8 (uint8x16_t data, uint8x16_t key)
+ {
+   return __builtin_aarch64_crypto_aesev16qi_uuu (data, key);
+ }
+ 
+-static __inline uint8x16_t
++__extension__ static __inline uint8x16_t __attribute__ ((__always_inline__))
+ vaesdq_u8 (uint8x16_t data, uint8x16_t key)
+ {
+   return __builtin_aarch64_crypto_aesdv16qi_uuu (data, key);
+ }
+ 
+-static __inline uint8x16_t
++__extension__ static __inline uint8x16_t __attribute__ ((__always_inline__))
+ vaesmcq_u8 (uint8x16_t data)
+ {
+   return __builtin_aarch64_crypto_aesmcv16qi_uu (data);
+ }
+ 
+-static __inline uint8x16_t
++__extension__ static __inline uint8x16_t __attribute__ ((__always_inline__))
+ vaesimcq_u8 (uint8x16_t data)
+ {
+   return __builtin_aarch64_crypto_aesimcv16qi_uu (data);
+ }
+-
+-#endif
++#pragma GCC pop_options
+ 
+ /* vcage  */
+ 
+@@ -11887,7 +11968,7 @@ vceq_s32 (int32x2_t __a, int32x2_t __b)
+ __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__))
+ vceq_s64 (int64x1_t __a, int64x1_t __b)
+ {
+-  return (uint64x1_t) {__a[0] == __b[0] ? -1ll : 0ll};
++  return (uint64x1_t) (__a == __b);
+ }
+ 
+ __extension__ static __inline uint8x8_t __attribute__ ((__always_inline__))
+@@ -11911,7 +11992,7 @@ vceq_u32 (uint32x2_t __a, uint32x2_t __b)
+ __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__))
+ vceq_u64 (uint64x1_t __a, uint64x1_t __b)
+ {
+-  return (uint64x1_t) {__a[0] == __b[0] ? -1ll : 0ll};
++  return (__a == __b);
+ }
+ 
+ __extension__ static __inline uint32x4_t __attribute__ ((__always_inline__))
+@@ -12047,7 +12128,7 @@ vceqz_s32 (int32x2_t __a)
+ __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__))
+ vceqz_s64 (int64x1_t __a)
+ {
+-  return (uint64x1_t) {__a[0] == 0ll ? -1ll : 0ll};
++  return (uint64x1_t) (__a == __AARCH64_INT64_C (0));
+ }
+ 
+ __extension__ static __inline uint8x8_t __attribute__ ((__always_inline__))
+@@ -12071,7 +12152,7 @@ vceqz_u32 (uint32x2_t __a)
+ __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__))
+ vceqz_u64 (uint64x1_t __a)
+ {
+-  return (uint64x1_t) {__a[0] == 0ll ? -1ll : 0ll};
++  return (__a == __AARCH64_UINT64_C (0));
+ }
+ 
+ __extension__ static __inline uint32x4_t __attribute__ ((__always_inline__))
+@@ -12201,7 +12282,7 @@ vcge_s32 (int32x2_t __a, int32x2_t __b)
+ __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__))
+ vcge_s64 (int64x1_t __a, int64x1_t __b)
+ {
+-  return (uint64x1_t) {__a[0] >= __b[0] ? -1ll : 0ll};
++  return (uint64x1_t) (__a >= __b);
+ }
+ 
+ __extension__ static __inline uint8x8_t __attribute__ ((__always_inline__))
+@@ -12225,7 +12306,7 @@ vcge_u32 (uint32x2_t __a, uint32x2_t __b)
+ __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__))
+ vcge_u64 (uint64x1_t __a, uint64x1_t __b)
+ {
+-  return (uint64x1_t) {__a[0] >= __b[0] ? -1ll : 0ll};
++  return (__a >= __b);
+ }
+ 
+ __extension__ static __inline uint32x4_t __attribute__ ((__always_inline__))
+@@ -12349,7 +12430,7 @@ vcgez_s32 (int32x2_t __a)
+ __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__))
+ vcgez_s64 (int64x1_t __a)
+ {
+-  return (uint64x1_t) {__a[0] >= 0ll ? -1ll : 0ll};
++  return (uint64x1_t) (__a >= __AARCH64_INT64_C (0));
+ }
+ 
+ __extension__ static __inline uint32x4_t __attribute__ ((__always_inline__))
+@@ -12443,7 +12524,7 @@ vcgt_s32 (int32x2_t __a, int32x2_t __b)
+ __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__))
+ vcgt_s64 (int64x1_t __a, int64x1_t __b)
+ {
+-  return (uint64x1_t) (__a[0] > __b[0] ? -1ll : 0ll);
++  return (uint64x1_t) (__a > __b);
+ }
+ 
+ __extension__ static __inline uint8x8_t __attribute__ ((__always_inline__))
+@@ -12467,7 +12548,7 @@ vcgt_u32 (uint32x2_t __a, uint32x2_t __b)
+ __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__))
+ vcgt_u64 (uint64x1_t __a, uint64x1_t __b)
+ {
+-  return (uint64x1_t) (__a[0] > __b[0] ? -1ll : 0ll);
++  return (__a > __b);
+ }
+ 
+ __extension__ static __inline uint32x4_t __attribute__ ((__always_inline__))
+@@ -12591,7 +12672,7 @@ vcgtz_s32 (int32x2_t __a)
+ __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__))
+ vcgtz_s64 (int64x1_t __a)
+ {
+-  return (uint64x1_t) {__a[0] > 0ll ? -1ll : 0ll};
++  return (uint64x1_t) (__a > __AARCH64_INT64_C (0));
+ }
+ 
+ __extension__ static __inline uint32x4_t __attribute__ ((__always_inline__))
+@@ -12685,7 +12766,7 @@ vcle_s32 (int32x2_t __a, int32x2_t __b)
+ __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__))
+ vcle_s64 (int64x1_t __a, int64x1_t __b)
+ {
+-  return (uint64x1_t) {__a[0] <= __b[0] ? -1ll : 0ll};
++  return (uint64x1_t) (__a <= __b);
+ }
+ 
+ __extension__ static __inline uint8x8_t __attribute__ ((__always_inline__))
+@@ -12709,7 +12790,7 @@ vcle_u32 (uint32x2_t __a, uint32x2_t __b)
+ __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__))
+ vcle_u64 (uint64x1_t __a, uint64x1_t __b)
+ {
+-  return (uint64x1_t) {__a[0] <= __b[0] ? -1ll : 0ll};
++  return (__a <= __b);
+ }
+ 
+ __extension__ static __inline uint32x4_t __attribute__ ((__always_inline__))
+@@ -12833,7 +12914,7 @@ vclez_s32 (int32x2_t __a)
+ __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__))
+ vclez_s64 (int64x1_t __a)
+ {
+-  return (uint64x1_t) {__a[0] <= 0ll ? -1ll : 0ll};
++  return (uint64x1_t) (__a <= __AARCH64_INT64_C (0));
+ }
+ 
+ __extension__ static __inline uint32x4_t __attribute__ ((__always_inline__))
+@@ -12927,7 +13008,7 @@ vclt_s32 (int32x2_t __a, int32x2_t __b)
+ __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__))
+ vclt_s64 (int64x1_t __a, int64x1_t __b)
+ {
+-  return (uint64x1_t) {__a[0] < __b[0] ? -1ll : 0ll};
++  return (uint64x1_t) (__a < __b);
+ }
+ 
+ __extension__ static __inline uint8x8_t __attribute__ ((__always_inline__))
+@@ -12951,7 +13032,7 @@ vclt_u32 (uint32x2_t __a, uint32x2_t __b)
+ __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__))
+ vclt_u64 (uint64x1_t __a, uint64x1_t __b)
+ {
+-  return (uint64x1_t) {__a[0] < __b[0] ? -1ll : 0ll};
++  return (__a < __b);
+ }
+ 
+ __extension__ static __inline uint32x4_t __attribute__ ((__always_inline__))
+@@ -13075,7 +13156,7 @@ vcltz_s32 (int32x2_t __a)
+ __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__))
+ vcltz_s64 (int64x1_t __a)
+ {
+-  return (uint64x1_t) {__a[0] < 0ll ? -1ll : 0ll};
++  return (uint64x1_t) (__a < __AARCH64_INT64_C (0));
+ }
+ 
+ __extension__ static __inline uint32x4_t __attribute__ ((__always_inline__))
+@@ -13286,6 +13367,18 @@ vcntq_u8 (uint8x16_t __a)
+ 
+ /* vcvt (double -> float).  */
+ 
++__extension__ static __inline float16x4_t __attribute__ ((__always_inline__))
++vcvt_f16_f32 (float32x4_t __a)
++{
++  return __builtin_aarch64_float_truncate_lo_v4hf (__a);
++}
++
++__extension__ static __inline float16x8_t __attribute__ ((__always_inline__))
++vcvt_high_f16_f32 (float16x4_t __a, float32x4_t __b)
++{
++  return __builtin_aarch64_float_truncate_hi_v8hf (__a, __b);
++}
++
+ __extension__ static __inline float32x2_t __attribute__ ((__always_inline__))
+ vcvt_f32_f64 (float64x2_t __a)
+ {
+@@ -13300,6 +13393,12 @@ vcvt_high_f32_f64 (float32x2_t __a, float64x2_t __b)
+ 
+ /* vcvt (float -> double).  */
+ 
++__extension__ static __inline float32x4_t __attribute__ ((__always_inline__))
++vcvt_f32_f16 (float16x4_t __a)
++{
++  return __builtin_aarch64_float_extend_lo_v4sf (__a);
++}
++
+ __extension__ static __inline float64x2_t __attribute__ ((__always_inline__))
+ vcvt_f64_f32 (float32x2_t __a)
+ {
+@@ -13307,6 +13406,12 @@ vcvt_f64_f32 (float32x2_t __a)
+   return __builtin_aarch64_float_extend_lo_v2df (__a);
+ }
+ 
++__extension__ static __inline float32x4_t __attribute__ ((__always_inline__))
++vcvt_high_f32_f16 (float16x8_t __a)
++{
++  return __builtin_aarch64_vec_unpacks_hi_v8hf (__a);
++}
++
+ __extension__ static __inline float64x2_t __attribute__ ((__always_inline__))
+ vcvt_high_f64_f32 (float32x4_t __a)
+ {
+@@ -14880,6 +14985,12 @@ vfmsq_laneq_f64 (float64x2_t __a, float64x2_t __b,
+ 
+ /* vld1 */
+ 
++__extension__ static __inline float16x4_t __attribute__ ((__always_inline__))
++vld1_f16 (const float16_t *__a)
++{
++  return __builtin_aarch64_ld1v4hf (__a);
++}
++
+ __extension__ static __inline float32x2_t __attribute__ ((__always_inline__))
+ vld1_f32 (const float32_t *a)
+ {
+@@ -14959,6 +15070,12 @@ vld1_u64 (const uint64_t *a)
+ 
+ /* vld1q */
+ 
++__extension__ static __inline float16x8_t __attribute__ ((__always_inline__))
++vld1q_f16 (const float16_t *__a)
++{
++  return __builtin_aarch64_ld1v8hf (__a);
++}
++
+ __extension__ static __inline float32x4_t __attribute__ ((__always_inline__))
+ vld1q_f32 (const float32_t *a)
+ {
+@@ -15039,6 +15156,13 @@ vld1q_u64 (const uint64_t *a)
+ 
+ /* vld1_dup  */
+ 
++__extension__ static __inline float16x4_t __attribute__ ((__always_inline__))
++vld1_dup_f16 (const float16_t* __a)
++{
++  float16_t __f = *__a;
++  return (float16x4_t) { __f, __f, __f, __f };
++}
++
+ __extension__ static __inline float32x2_t __attribute__ ((__always_inline__))
+ vld1_dup_f32 (const float32_t* __a)
+ {
+@@ -15113,6 +15237,13 @@ vld1_dup_u64 (const uint64_t* __a)
+ 
+ /* vld1q_dup  */
+ 
++__extension__ static __inline float16x8_t __attribute__ ((__always_inline__))
++vld1q_dup_f16 (const float16_t* __a)
++{
++  float16_t __f = *__a;
++  return (float16x8_t) { __f, __f, __f, __f, __f, __f, __f, __f };
++}
++
+ __extension__ static __inline float32x4_t __attribute__ ((__always_inline__))
+ vld1q_dup_f32 (const float32_t* __a)
+ {
+@@ -15187,6 +15318,12 @@ vld1q_dup_u64 (const uint64_t* __a)
+ 
+ /* vld1_lane  */
+ 
++__extension__ static __inline float16x4_t __attribute__ ((__always_inline__))
++vld1_lane_f16 (const float16_t *__src, float16x4_t __vec, const int __lane)
++{
++  return __aarch64_vset_lane_any (*__src, __vec, __lane);
++}
++
+ __extension__ static __inline float32x2_t __attribute__ ((__always_inline__))
+ vld1_lane_f32 (const float32_t *__src, float32x2_t __vec, const int __lane)
+ {
+@@ -15261,6 +15398,12 @@ vld1_lane_u64 (const uint64_t *__src, uint64x1_t __vec, const int __lane)
+ 
+ /* vld1q_lane  */
+ 
++__extension__ static __inline float16x8_t __attribute__ ((__always_inline__))
++vld1q_lane_f16 (const float16_t *__src, float16x8_t __vec, const int __lane)
++{
++  return __aarch64_vset_lane_any (*__src, __vec, __lane);
++}
++
+ __extension__ static __inline float32x4_t __attribute__ ((__always_inline__))
+ vld1q_lane_f32 (const float32_t *__src, float32x4_t __vec, const int __lane)
+ {
+@@ -15456,6 +15599,17 @@ vld2_u32 (const uint32_t * __a)
+   return ret;
+ }
+ 
++__extension__ static __inline float16x4x2_t __attribute__ ((__always_inline__))
++vld2_f16 (const float16_t * __a)
++{
++  float16x4x2_t ret;
++  __builtin_aarch64_simd_oi __o;
++  __o = __builtin_aarch64_ld2v4hf (__a);
++  ret.val[0] = __builtin_aarch64_get_dregoiv4hf (__o, 0);
++  ret.val[1] = __builtin_aarch64_get_dregoiv4hf (__o, 1);
++  return ret;
++}
++
+ __extension__ static __inline float32x2x2_t __attribute__ ((__always_inline__))
+ vld2_f32 (const float32_t * __a)
+ {
+@@ -15577,6 +15731,17 @@ vld2q_u64 (const uint64_t * __a)
+   return ret;
+ }
+ 
++__extension__ static __inline float16x8x2_t __attribute__ ((__always_inline__))
++vld2q_f16 (const float16_t * __a)
++{
++  float16x8x2_t ret;
++  __builtin_aarch64_simd_oi __o;
++  __o = __builtin_aarch64_ld2v8hf (__a);
++  ret.val[0] = __builtin_aarch64_get_qregoiv8hf (__o, 0);
++  ret.val[1] = __builtin_aarch64_get_qregoiv8hf (__o, 1);
++  return ret;
++}
++
+ __extension__ static __inline float32x4x2_t __attribute__ ((__always_inline__))
+ vld2q_f32 (const float32_t * __a)
+ {
+@@ -15731,6 +15896,18 @@ vld3_u32 (const uint32_t * __a)
+   return ret;
+ }
+ 
++__extension__ static __inline float16x4x3_t __attribute__ ((__always_inline__))
++vld3_f16 (const float16_t * __a)
++{
++  float16x4x3_t ret;
++  __builtin_aarch64_simd_ci __o;
++  __o = __builtin_aarch64_ld3v4hf (__a);
++  ret.val[0] = __builtin_aarch64_get_dregciv4hf (__o, 0);
++  ret.val[1] = __builtin_aarch64_get_dregciv4hf (__o, 1);
++  ret.val[2] = __builtin_aarch64_get_dregciv4hf (__o, 2);
++  return ret;
++}
++
+ __extension__ static __inline float32x2x3_t __attribute__ ((__always_inline__))
+ vld3_f32 (const float32_t * __a)
+ {
+@@ -15863,6 +16040,18 @@ vld3q_u64 (const uint64_t * __a)
+   return ret;
+ }
+ 
++__extension__ static __inline float16x8x3_t __attribute__ ((__always_inline__))
++vld3q_f16 (const float16_t * __a)
++{
++  float16x8x3_t ret;
++  __builtin_aarch64_simd_ci __o;
++  __o = __builtin_aarch64_ld3v8hf (__a);
++  ret.val[0] = __builtin_aarch64_get_qregciv8hf (__o, 0);
++  ret.val[1] = __builtin_aarch64_get_qregciv8hf (__o, 1);
++  ret.val[2] = __builtin_aarch64_get_qregciv8hf (__o, 2);
++  return ret;
++}
++
+ __extension__ static __inline float32x4x3_t __attribute__ ((__always_inline__))
+ vld3q_f32 (const float32_t * __a)
+ {
+@@ -16030,6 +16219,19 @@ vld4_u32 (const uint32_t * __a)
+   return ret;
+ }
+ 
++__extension__ static __inline float16x4x4_t __attribute__ ((__always_inline__))
++vld4_f16 (const float16_t * __a)
++{
++  float16x4x4_t ret;
++  __builtin_aarch64_simd_xi __o;
++  __o = __builtin_aarch64_ld4v4hf (__a);
++  ret.val[0] = __builtin_aarch64_get_dregxiv4hf (__o, 0);
++  ret.val[1] = __builtin_aarch64_get_dregxiv4hf (__o, 1);
++  ret.val[2] = __builtin_aarch64_get_dregxiv4hf (__o, 2);
++  ret.val[3] = __builtin_aarch64_get_dregxiv4hf (__o, 3);
++  return ret;
++}
++
+ __extension__ static __inline float32x2x4_t __attribute__ ((__always_inline__))
+ vld4_f32 (const float32_t * __a)
+ {
+@@ -16173,6 +16375,19 @@ vld4q_u64 (const uint64_t * __a)
+   return ret;
+ }
+ 
++__extension__ static __inline float16x8x4_t __attribute__ ((__always_inline__))
++vld4q_f16 (const float16_t * __a)
++{
++  float16x8x4_t ret;
++  __builtin_aarch64_simd_xi __o;
++  __o = __builtin_aarch64_ld4v8hf (__a);
++  ret.val[0] = __builtin_aarch64_get_qregxiv8hf (__o, 0);
++  ret.val[1] = __builtin_aarch64_get_qregxiv8hf (__o, 1);
++  ret.val[2] = __builtin_aarch64_get_qregxiv8hf (__o, 2);
++  ret.val[3] = __builtin_aarch64_get_qregxiv8hf (__o, 3);
++  return ret;
++}
++
+ __extension__ static __inline float32x4x4_t __attribute__ ((__always_inline__))
+ vld4q_f32 (const float32_t * __a)
+ {
+@@ -16234,6 +16449,17 @@ vld2_dup_s32 (const int32_t * __a)
+   return ret;
+ }
+ 
++__extension__ static __inline float16x4x2_t __attribute__ ((__always_inline__))
++vld2_dup_f16 (const float16_t * __a)
++{
++  float16x4x2_t ret;
++  __builtin_aarch64_simd_oi __o;
++  __o = __builtin_aarch64_ld2rv4hf ((const __builtin_aarch64_simd_hf *) __a);
++  ret.val[0] = __builtin_aarch64_get_dregoiv4hf (__o, 0);
++  ret.val[1] = (float16x4_t) __builtin_aarch64_get_dregoiv4hf (__o, 1);
++  return ret;
++}
++
+ __extension__ static __inline float32x2x2_t __attribute__ ((__always_inline__))
+ vld2_dup_f32 (const float32_t * __a)
+ {
+@@ -16443,6 +16669,17 @@ vld2q_dup_u64 (const uint64_t * __a)
+   return ret;
+ }
+ 
++__extension__ static __inline float16x8x2_t __attribute__ ((__always_inline__))
++vld2q_dup_f16 (const float16_t * __a)
++{
++  float16x8x2_t ret;
++  __builtin_aarch64_simd_oi __o;
++  __o = __builtin_aarch64_ld2rv8hf ((const __builtin_aarch64_simd_hf *) __a);
++  ret.val[0] = (float16x8_t) __builtin_aarch64_get_qregoiv8hf (__o, 0);
++  ret.val[1] = __builtin_aarch64_get_qregoiv8hf (__o, 1);
++  return ret;
++}
++
+ __extension__ static __inline float32x4x2_t __attribute__ ((__always_inline__))
+ vld2q_dup_f32 (const float32_t * __a)
+ {
+@@ -16597,6 +16834,18 @@ vld3_dup_u32 (const uint32_t * __a)
+   return ret;
+ }
+ 
++__extension__ static __inline float16x4x3_t __attribute__ ((__always_inline__))
++vld3_dup_f16 (const float16_t * __a)
++{
++  float16x4x3_t ret;
++  __builtin_aarch64_simd_ci __o;
++  __o = __builtin_aarch64_ld3rv4hf ((const __builtin_aarch64_simd_hf *) __a);
++  ret.val[0] = (float16x4_t) __builtin_aarch64_get_dregciv4hf (__o, 0);
++  ret.val[1] = (float16x4_t) __builtin_aarch64_get_dregciv4hf (__o, 1);
++  ret.val[2] = (float16x4_t) __builtin_aarch64_get_dregciv4hf (__o, 2);
++  return ret;
++}
++
+ __extension__ static __inline float32x2x3_t __attribute__ ((__always_inline__))
+ vld3_dup_f32 (const float32_t * __a)
+ {
+@@ -16729,6 +16978,18 @@ vld3q_dup_u64 (const uint64_t * __a)
+   return ret;
+ }
+ 
++__extension__ static __inline float16x8x3_t __attribute__ ((__always_inline__))
++vld3q_dup_f16 (const float16_t * __a)
++{
++  float16x8x3_t ret;
++  __builtin_aarch64_simd_ci __o;
++  __o = __builtin_aarch64_ld3rv8hf ((const __builtin_aarch64_simd_hf *) __a);
++  ret.val[0] = (float16x8_t) __builtin_aarch64_get_qregciv8hf (__o, 0);
++  ret.val[1] = (float16x8_t) __builtin_aarch64_get_qregciv8hf (__o, 1);
++  ret.val[2] = (float16x8_t) __builtin_aarch64_get_qregciv8hf (__o, 2);
++  return ret;
++}
++
+ __extension__ static __inline float32x4x3_t __attribute__ ((__always_inline__))
+ vld3q_dup_f32 (const float32_t * __a)
+ {
+@@ -16896,6 +17157,19 @@ vld4_dup_u32 (const uint32_t * __a)
+   return ret;
+ }
+ 
++__extension__ static __inline float16x4x4_t __attribute__ ((__always_inline__))
++vld4_dup_f16 (const float16_t * __a)
++{
++  float16x4x4_t ret;
++  __builtin_aarch64_simd_xi __o;
++  __o = __builtin_aarch64_ld4rv4hf ((const __builtin_aarch64_simd_hf *) __a);
++  ret.val[0] = (float16x4_t) __builtin_aarch64_get_dregxiv4hf (__o, 0);
++  ret.val[1] = (float16x4_t) __builtin_aarch64_get_dregxiv4hf (__o, 1);
++  ret.val[2] = (float16x4_t) __builtin_aarch64_get_dregxiv4hf (__o, 2);
++  ret.val[3] = (float16x4_t) __builtin_aarch64_get_dregxiv4hf (__o, 3);
++  return ret;
++}
++
+ __extension__ static __inline float32x2x4_t __attribute__ ((__always_inline__))
+ vld4_dup_f32 (const float32_t * __a)
+ {
+@@ -17039,6 +17313,19 @@ vld4q_dup_u64 (const uint64_t * __a)
+   return ret;
+ }
+ 
++__extension__ static __inline float16x8x4_t __attribute__ ((__always_inline__))
++vld4q_dup_f16 (const float16_t * __a)
++{
++  float16x8x4_t ret;
++  __builtin_aarch64_simd_xi __o;
++  __o = __builtin_aarch64_ld4rv8hf ((const __builtin_aarch64_simd_hf *) __a);
++  ret.val[0] = (float16x8_t) __builtin_aarch64_get_qregxiv8hf (__o, 0);
++  ret.val[1] = (float16x8_t) __builtin_aarch64_get_qregxiv8hf (__o, 1);
++  ret.val[2] = (float16x8_t) __builtin_aarch64_get_qregxiv8hf (__o, 2);
++  ret.val[3] = (float16x8_t) __builtin_aarch64_get_qregxiv8hf (__o, 3);
++  return ret;
++}
++
+ __extension__ static __inline float32x4x4_t __attribute__ ((__always_inline__))
+ vld4q_dup_f32 (const float32_t * __a)
+ {
+@@ -17067,8 +17354,8 @@ vld4q_dup_f64 (const float64_t * __a)
+ 
+ /* vld2_lane */
+ 
+-#define __LD2_LANE_FUNC(intype, vectype, largetype, ptrtype,		   \
+-			 mode, ptrmode, funcsuffix, signedtype)		   \
++#define __LD2_LANE_FUNC(intype, vectype, largetype, ptrtype, mode,	   \
++			 qmode, ptrmode, funcsuffix, signedtype)	   \
+ __extension__ static __inline intype __attribute__ ((__always_inline__))   \
+ vld2_lane_##funcsuffix (const ptrtype * __ptr, intype __b, const int __c)  \
+ {									   \
+@@ -17078,12 +17365,12 @@ vld2_lane_##funcsuffix (const ptrtype * __ptr, intype __b, const int __c)  \
+     vcombine_##funcsuffix (__b.val[0], vcreate_##funcsuffix (0));	   \
+   __temp.val[1] =							   \
+     vcombine_##funcsuffix (__b.val[1], vcreate_##funcsuffix (0));	   \
+-  __o = __builtin_aarch64_set_qregoi##mode (__o,			   \
+-					   (signedtype) __temp.val[0],	   \
+-					   0);				   \
+-  __o = __builtin_aarch64_set_qregoi##mode (__o,			   \
+-					   (signedtype) __temp.val[1],	   \
+-					   1);				   \
++  __o = __builtin_aarch64_set_qregoi##qmode (__o,			   \
++					    (signedtype) __temp.val[0],	   \
++					    0);				   \
++  __o = __builtin_aarch64_set_qregoi##qmode (__o,			   \
++					    (signedtype) __temp.val[1],	   \
++					    1);				   \
+   __o =	__builtin_aarch64_ld2_lane##mode (				   \
+ 	  (__builtin_aarch64_simd_##ptrmode *) __ptr, __o, __c);	   \
+   __b.val[0] = (vectype) __builtin_aarch64_get_dregoidi (__o, 0);	   \
+@@ -17091,29 +17378,31 @@ vld2_lane_##funcsuffix (const ptrtype * __ptr, intype __b, const int __c)  \
+   return __b;								   \
+ }
+ 
+-__LD2_LANE_FUNC (float32x2x2_t, float32x2_t, float32x4x2_t, float32_t, v4sf,
++__LD2_LANE_FUNC (float16x4x2_t, float16x4_t, float16x8x2_t, float16_t, v4hf,
++		 v8hf, hf, f16, float16x8_t)
++__LD2_LANE_FUNC (float32x2x2_t, float32x2_t, float32x4x2_t, float32_t, v2sf, v4sf,
+ 		 sf, f32, float32x4_t)
+-__LD2_LANE_FUNC (float64x1x2_t, float64x1_t, float64x2x2_t, float64_t, v2df,
++__LD2_LANE_FUNC (float64x1x2_t, float64x1_t, float64x2x2_t, float64_t, df, v2df,
+ 		 df, f64, float64x2_t)
+-__LD2_LANE_FUNC (poly8x8x2_t, poly8x8_t, poly8x16x2_t, poly8_t, v16qi, qi, p8,
++__LD2_LANE_FUNC (poly8x8x2_t, poly8x8_t, poly8x16x2_t, poly8_t, v8qi, v16qi, qi, p8,
+ 		 int8x16_t)
+-__LD2_LANE_FUNC (poly16x4x2_t, poly16x4_t, poly16x8x2_t, poly16_t, v8hi, hi,
++__LD2_LANE_FUNC (poly16x4x2_t, poly16x4_t, poly16x8x2_t, poly16_t, v4hi, v8hi, hi,
+ 		 p16, int16x8_t)
+-__LD2_LANE_FUNC (int8x8x2_t, int8x8_t, int8x16x2_t, int8_t, v16qi, qi, s8,
++__LD2_LANE_FUNC (int8x8x2_t, int8x8_t, int8x16x2_t, int8_t, v8qi, v16qi, qi, s8,
+ 		 int8x16_t)
+-__LD2_LANE_FUNC (int16x4x2_t, int16x4_t, int16x8x2_t, int16_t, v8hi, hi, s16,
++__LD2_LANE_FUNC (int16x4x2_t, int16x4_t, int16x8x2_t, int16_t, v4hi, v8hi, hi, s16,
+ 		 int16x8_t)
+-__LD2_LANE_FUNC (int32x2x2_t, int32x2_t, int32x4x2_t, int32_t, v4si, si, s32,
++__LD2_LANE_FUNC (int32x2x2_t, int32x2_t, int32x4x2_t, int32_t, v2si, v4si, si, s32,
+ 		 int32x4_t)
+-__LD2_LANE_FUNC (int64x1x2_t, int64x1_t, int64x2x2_t, int64_t, v2di, di, s64,
++__LD2_LANE_FUNC (int64x1x2_t, int64x1_t, int64x2x2_t, int64_t, di, v2di, di, s64,
+ 		 int64x2_t)
+-__LD2_LANE_FUNC (uint8x8x2_t, uint8x8_t, uint8x16x2_t, uint8_t, v16qi, qi, u8,
++__LD2_LANE_FUNC (uint8x8x2_t, uint8x8_t, uint8x16x2_t, uint8_t, v8qi, v16qi, qi, u8,
+ 		 int8x16_t)
+-__LD2_LANE_FUNC (uint16x4x2_t, uint16x4_t, uint16x8x2_t, uint16_t, v8hi, hi,
++__LD2_LANE_FUNC (uint16x4x2_t, uint16x4_t, uint16x8x2_t, uint16_t, v4hi, v8hi, hi,
+ 		 u16, int16x8_t)
+-__LD2_LANE_FUNC (uint32x2x2_t, uint32x2_t, uint32x4x2_t, uint32_t, v4si, si,
++__LD2_LANE_FUNC (uint32x2x2_t, uint32x2_t, uint32x4x2_t, uint32_t, v2si, v4si, si,
+ 		 u32, int32x4_t)
+-__LD2_LANE_FUNC (uint64x1x2_t, uint64x1_t, uint64x2x2_t, uint64_t, v2di, di,
++__LD2_LANE_FUNC (uint64x1x2_t, uint64x1_t, uint64x2x2_t, uint64_t, di, v2di, di,
+ 		 u64, int64x2_t)
+ 
+ #undef __LD2_LANE_FUNC
+@@ -17135,6 +17424,7 @@ vld2q_lane_##funcsuffix (const ptrtype * __ptr, intype __b, const int __c) \
+   return ret;								   \
+ }
+ 
++__LD2_LANE_FUNC (float16x8x2_t, float16x8_t, float16_t, v8hf, hf, f16)
+ __LD2_LANE_FUNC (float32x4x2_t, float32x4_t, float32_t, v4sf, sf, f32)
+ __LD2_LANE_FUNC (float64x2x2_t, float64x2_t, float64_t, v2df, df, f64)
+ __LD2_LANE_FUNC (poly8x16x2_t, poly8x16_t, poly8_t, v16qi, qi, p8)
+@@ -17152,8 +17442,8 @@ __LD2_LANE_FUNC (uint64x2x2_t, uint64x2_t, uint64_t, v2di, di, u64)
+ 
+ /* vld3_lane */
+ 
+-#define __LD3_LANE_FUNC(intype, vectype, largetype, ptrtype,		   \
+-			 mode, ptrmode, funcsuffix, signedtype)		   \
++#define __LD3_LANE_FUNC(intype, vectype, largetype, ptrtype, mode,	   \
++			 qmode, ptrmode, funcsuffix, signedtype)	   \
+ __extension__ static __inline intype __attribute__ ((__always_inline__))   \
+ vld3_lane_##funcsuffix (const ptrtype * __ptr, intype __b, const int __c)  \
+ {									   \
+@@ -17165,15 +17455,15 @@ vld3_lane_##funcsuffix (const ptrtype * __ptr, intype __b, const int __c)  \
+     vcombine_##funcsuffix (__b.val[1], vcreate_##funcsuffix (0));	   \
+   __temp.val[2] =							   \
+     vcombine_##funcsuffix (__b.val[2], vcreate_##funcsuffix (0));	   \
+-  __o = __builtin_aarch64_set_qregci##mode (__o,			   \
+-					   (signedtype) __temp.val[0],	   \
+-					   0);				   \
+-  __o = __builtin_aarch64_set_qregci##mode (__o,			   \
+-					   (signedtype) __temp.val[1],	   \
+-					   1);				   \
+-  __o = __builtin_aarch64_set_qregci##mode (__o,			   \
+-					   (signedtype) __temp.val[2],	   \
+-					   2);				   \
++  __o = __builtin_aarch64_set_qregci##qmode (__o,			   \
++					    (signedtype) __temp.val[0],	   \
++					    0);				   \
++  __o = __builtin_aarch64_set_qregci##qmode (__o,			   \
++					    (signedtype) __temp.val[1],	   \
++					    1);				   \
++  __o = __builtin_aarch64_set_qregci##qmode (__o,			   \
++					    (signedtype) __temp.val[2],	   \
++					    2);				   \
+   __o =	__builtin_aarch64_ld3_lane##mode (				   \
+ 	  (__builtin_aarch64_simd_##ptrmode *) __ptr, __o, __c);	   \
+   __b.val[0] = (vectype) __builtin_aarch64_get_dregcidi (__o, 0);	   \
+@@ -17182,29 +17472,31 @@ vld3_lane_##funcsuffix (const ptrtype * __ptr, intype __b, const int __c)  \
+   return __b;								   \
+ }
+ 
+-__LD3_LANE_FUNC (float32x2x3_t, float32x2_t, float32x4x3_t, float32_t, v4sf,
++__LD3_LANE_FUNC (float16x4x3_t, float16x4_t, float16x8x3_t, float16_t, v4hf,
++		 v8hf, hf, f16, float16x8_t)
++__LD3_LANE_FUNC (float32x2x3_t, float32x2_t, float32x4x3_t, float32_t, v2sf, v4sf,
+ 		 sf, f32, float32x4_t)
+-__LD3_LANE_FUNC (float64x1x3_t, float64x1_t, float64x2x3_t, float64_t, v2df,
++__LD3_LANE_FUNC (float64x1x3_t, float64x1_t, float64x2x3_t, float64_t, df, v2df,
+ 		 df, f64, float64x2_t)
+-__LD3_LANE_FUNC (poly8x8x3_t, poly8x8_t, poly8x16x3_t, poly8_t, v16qi, qi, p8,
++__LD3_LANE_FUNC (poly8x8x3_t, poly8x8_t, poly8x16x3_t, poly8_t, v8qi, v16qi, qi, p8,
+ 		 int8x16_t)
+-__LD3_LANE_FUNC (poly16x4x3_t, poly16x4_t, poly16x8x3_t, poly16_t, v8hi, hi,
++__LD3_LANE_FUNC (poly16x4x3_t, poly16x4_t, poly16x8x3_t, poly16_t, v4hi, v8hi, hi,
+ 		 p16, int16x8_t)
+-__LD3_LANE_FUNC (int8x8x3_t, int8x8_t, int8x16x3_t, int8_t, v16qi, qi, s8,
++__LD3_LANE_FUNC (int8x8x3_t, int8x8_t, int8x16x3_t, int8_t, v8qi, v16qi, qi, s8,
+ 		 int8x16_t)
+-__LD3_LANE_FUNC (int16x4x3_t, int16x4_t, int16x8x3_t, int16_t, v8hi, hi, s16,
++__LD3_LANE_FUNC (int16x4x3_t, int16x4_t, int16x8x3_t, int16_t, v4hi, v8hi, hi, s16,
+ 		 int16x8_t)
+-__LD3_LANE_FUNC (int32x2x3_t, int32x2_t, int32x4x3_t, int32_t, v4si, si, s32,
++__LD3_LANE_FUNC (int32x2x3_t, int32x2_t, int32x4x3_t, int32_t, v2si, v4si, si, s32,
+ 		 int32x4_t)
+-__LD3_LANE_FUNC (int64x1x3_t, int64x1_t, int64x2x3_t, int64_t, v2di, di, s64,
++__LD3_LANE_FUNC (int64x1x3_t, int64x1_t, int64x2x3_t, int64_t, di, v2di, di, s64,
+ 		 int64x2_t)
+-__LD3_LANE_FUNC (uint8x8x3_t, uint8x8_t, uint8x16x3_t, uint8_t, v16qi, qi, u8,
++__LD3_LANE_FUNC (uint8x8x3_t, uint8x8_t, uint8x16x3_t, uint8_t, v8qi, v16qi, qi, u8,
+ 		 int8x16_t)
+-__LD3_LANE_FUNC (uint16x4x3_t, uint16x4_t, uint16x8x3_t, uint16_t, v8hi, hi,
++__LD3_LANE_FUNC (uint16x4x3_t, uint16x4_t, uint16x8x3_t, uint16_t, v4hi, v8hi, hi,
+ 		 u16, int16x8_t)
+-__LD3_LANE_FUNC (uint32x2x3_t, uint32x2_t, uint32x4x3_t, uint32_t, v4si, si,
++__LD3_LANE_FUNC (uint32x2x3_t, uint32x2_t, uint32x4x3_t, uint32_t, v2si, v4si, si,
+ 		 u32, int32x4_t)
+-__LD3_LANE_FUNC (uint64x1x3_t, uint64x1_t, uint64x2x3_t, uint64_t, v2di, di,
++__LD3_LANE_FUNC (uint64x1x3_t, uint64x1_t, uint64x2x3_t, uint64_t, di, v2di, di,
+ 		 u64, int64x2_t)
+ 
+ #undef __LD3_LANE_FUNC
+@@ -17228,6 +17520,7 @@ vld3q_lane_##funcsuffix (const ptrtype * __ptr, intype __b, const int __c) \
+   return ret;								   \
+ }
+ 
++__LD3_LANE_FUNC (float16x8x3_t, float16x8_t, float16_t, v8hf, hf, f16)
+ __LD3_LANE_FUNC (float32x4x3_t, float32x4_t, float32_t, v4sf, sf, f32)
+ __LD3_LANE_FUNC (float64x2x3_t, float64x2_t, float64_t, v2df, df, f64)
+ __LD3_LANE_FUNC (poly8x16x3_t, poly8x16_t, poly8_t, v16qi, qi, p8)
+@@ -17245,8 +17538,8 @@ __LD3_LANE_FUNC (uint64x2x3_t, uint64x2_t, uint64_t, v2di, di, u64)
+ 
+ /* vld4_lane */
+ 
+-#define __LD4_LANE_FUNC(intype, vectype, largetype, ptrtype,		   \
+-			 mode, ptrmode, funcsuffix, signedtype)		   \
++#define __LD4_LANE_FUNC(intype, vectype, largetype, ptrtype, mode,	   \
++			 qmode, ptrmode, funcsuffix, signedtype)	   \
+ __extension__ static __inline intype __attribute__ ((__always_inline__))   \
+ vld4_lane_##funcsuffix (const ptrtype * __ptr, intype __b, const int __c)  \
+ {									   \
+@@ -17260,18 +17553,18 @@ vld4_lane_##funcsuffix (const ptrtype * __ptr, intype __b, const int __c)  \
+     vcombine_##funcsuffix (__b.val[2], vcreate_##funcsuffix (0));	   \
+   __temp.val[3] =							   \
+     vcombine_##funcsuffix (__b.val[3], vcreate_##funcsuffix (0));	   \
+-  __o = __builtin_aarch64_set_qregxi##mode (__o,			   \
+-					   (signedtype) __temp.val[0],	   \
+-					   0);				   \
+-  __o = __builtin_aarch64_set_qregxi##mode (__o,			   \
+-					   (signedtype) __temp.val[1],	   \
+-					   1);				   \
+-  __o = __builtin_aarch64_set_qregxi##mode (__o,			   \
+-					   (signedtype) __temp.val[2],	   \
+-					   2);				   \
+-  __o = __builtin_aarch64_set_qregxi##mode (__o,			   \
+-					   (signedtype) __temp.val[3],	   \
+-					   3);				   \
++  __o = __builtin_aarch64_set_qregxi##qmode (__o,			   \
++					    (signedtype) __temp.val[0],	   \
++					    0);				   \
++  __o = __builtin_aarch64_set_qregxi##qmode (__o,			   \
++					    (signedtype) __temp.val[1],	   \
++					    1);				   \
++  __o = __builtin_aarch64_set_qregxi##qmode (__o,			   \
++					    (signedtype) __temp.val[2],	   \
++					    2);				   \
++  __o = __builtin_aarch64_set_qregxi##qmode (__o,			   \
++					    (signedtype) __temp.val[3],	   \
++					    3);				   \
+   __o =	__builtin_aarch64_ld4_lane##mode (				   \
+ 	  (__builtin_aarch64_simd_##ptrmode *) __ptr, __o, __c);	   \
+   __b.val[0] = (vectype) __builtin_aarch64_get_dregxidi (__o, 0);	   \
+@@ -17283,29 +17576,31 @@ vld4_lane_##funcsuffix (const ptrtype * __ptr, intype __b, const int __c)  \
+ 
+ /* vld4q_lane */
+ 
+-__LD4_LANE_FUNC (float32x2x4_t, float32x2_t, float32x4x4_t, float32_t, v4sf,
++__LD4_LANE_FUNC (float16x4x4_t, float16x4_t, float16x8x4_t, float16_t, v4hf,
++		 v8hf, hf, f16, float16x8_t)
++__LD4_LANE_FUNC (float32x2x4_t, float32x2_t, float32x4x4_t, float32_t, v2sf, v4sf,
+ 		 sf, f32, float32x4_t)
+-__LD4_LANE_FUNC (float64x1x4_t, float64x1_t, float64x2x4_t, float64_t, v2df,
++__LD4_LANE_FUNC (float64x1x4_t, float64x1_t, float64x2x4_t, float64_t, df, v2df,
+ 		 df, f64, float64x2_t)
+-__LD4_LANE_FUNC (poly8x8x4_t, poly8x8_t, poly8x16x4_t, poly8_t, v16qi, qi, p8,
++__LD4_LANE_FUNC (poly8x8x4_t, poly8x8_t, poly8x16x4_t, poly8_t, v8qi, v16qi, qi, p8,
+ 		 int8x16_t)
+-__LD4_LANE_FUNC (poly16x4x4_t, poly16x4_t, poly16x8x4_t, poly16_t, v8hi, hi,
++__LD4_LANE_FUNC (poly16x4x4_t, poly16x4_t, poly16x8x4_t, poly16_t, v4hi, v8hi, hi,
+ 		 p16, int16x8_t)
+-__LD4_LANE_FUNC (int8x8x4_t, int8x8_t, int8x16x4_t, int8_t, v16qi, qi, s8,
++__LD4_LANE_FUNC (int8x8x4_t, int8x8_t, int8x16x4_t, int8_t, v8qi, v16qi, qi, s8,
+ 		 int8x16_t)
+-__LD4_LANE_FUNC (int16x4x4_t, int16x4_t, int16x8x4_t, int16_t, v8hi, hi, s16,
++__LD4_LANE_FUNC (int16x4x4_t, int16x4_t, int16x8x4_t, int16_t, v4hi, v8hi, hi, s16,
+ 		 int16x8_t)
+-__LD4_LANE_FUNC (int32x2x4_t, int32x2_t, int32x4x4_t, int32_t, v4si, si, s32,
++__LD4_LANE_FUNC (int32x2x4_t, int32x2_t, int32x4x4_t, int32_t, v2si, v4si, si, s32,
+ 		 int32x4_t)
+-__LD4_LANE_FUNC (int64x1x4_t, int64x1_t, int64x2x4_t, int64_t, v2di, di, s64,
++__LD4_LANE_FUNC (int64x1x4_t, int64x1_t, int64x2x4_t, int64_t, di, v2di, di, s64,
+ 		 int64x2_t)
+-__LD4_LANE_FUNC (uint8x8x4_t, uint8x8_t, uint8x16x4_t, uint8_t, v16qi, qi, u8,
++__LD4_LANE_FUNC (uint8x8x4_t, uint8x8_t, uint8x16x4_t, uint8_t, v8qi, v16qi, qi, u8,
+ 		 int8x16_t)
+-__LD4_LANE_FUNC (uint16x4x4_t, uint16x4_t, uint16x8x4_t, uint16_t, v8hi, hi,
++__LD4_LANE_FUNC (uint16x4x4_t, uint16x4_t, uint16x8x4_t, uint16_t, v4hi, v8hi, hi,
+ 		 u16, int16x8_t)
+-__LD4_LANE_FUNC (uint32x2x4_t, uint32x2_t, uint32x4x4_t, uint32_t, v4si, si,
++__LD4_LANE_FUNC (uint32x2x4_t, uint32x2_t, uint32x4x4_t, uint32_t, v2si, v4si, si,
+ 		 u32, int32x4_t)
+-__LD4_LANE_FUNC (uint64x1x4_t, uint64x1_t, uint64x2x4_t, uint64_t, v2di, di,
++__LD4_LANE_FUNC (uint64x1x4_t, uint64x1_t, uint64x2x4_t, uint64_t, di, v2di, di,
+ 		 u64, int64x2_t)
+ 
+ #undef __LD4_LANE_FUNC
+@@ -17331,6 +17626,7 @@ vld4q_lane_##funcsuffix (const ptrtype * __ptr, intype __b, const int __c) \
+   return ret;								   \
+ }
+ 
++__LD4_LANE_FUNC (float16x8x4_t, float16x8_t, float16_t, v8hf, hf, f16)
+ __LD4_LANE_FUNC (float32x4x4_t, float32x4_t, float32_t, v4sf, sf, f32)
+ __LD4_LANE_FUNC (float64x2x4_t, float64x2_t, float64_t, v2df, df, f64)
+ __LD4_LANE_FUNC (poly8x16x4_t, poly8x16_t, poly8_t, v16qi, qi, p8)
+@@ -21317,82 +21613,85 @@ vrsrad_n_u64 (uint64_t __a, uint64_t __b, const int __c)
+   return __builtin_aarch64_ursra_ndi_uuus (__a, __b, __c);
+ }
+ 
+-#ifdef __ARM_FEATURE_CRYPTO
++#pragma GCC push_options
++#pragma GCC target ("+nothing+crypto")
+ 
+ /* vsha1  */
+ 
+-static __inline uint32x4_t
++__extension__ static __inline uint32x4_t __attribute__ ((__always_inline__))
+ vsha1cq_u32 (uint32x4_t hash_abcd, uint32_t hash_e, uint32x4_t wk)
+ {
+   return __builtin_aarch64_crypto_sha1cv4si_uuuu (hash_abcd, hash_e, wk);
+ }
+-static __inline uint32x4_t
++
++__extension__ static __inline uint32x4_t __attribute__ ((__always_inline__))
+ vsha1mq_u32 (uint32x4_t hash_abcd, uint32_t hash_e, uint32x4_t wk)
+ {
+   return __builtin_aarch64_crypto_sha1mv4si_uuuu (hash_abcd, hash_e, wk);
+ }
+-static __inline uint32x4_t
++
++__extension__ static __inline uint32x4_t __attribute__ ((__always_inline__))
+ vsha1pq_u32 (uint32x4_t hash_abcd, uint32_t hash_e, uint32x4_t wk)
+ {
+   return __builtin_aarch64_crypto_sha1pv4si_uuuu (hash_abcd, hash_e, wk);
+ }
+ 
+-static __inline uint32_t
++__extension__ static __inline uint32_t __attribute__ ((__always_inline__))
+ vsha1h_u32 (uint32_t hash_e)
+ {
+   return __builtin_aarch64_crypto_sha1hsi_uu (hash_e);
+ }
+ 
+-static __inline uint32x4_t
++__extension__ static __inline uint32x4_t __attribute__ ((__always_inline__))
+ vsha1su0q_u32 (uint32x4_t w0_3, uint32x4_t w4_7, uint32x4_t w8_11)
+ {
+   return __builtin_aarch64_crypto_sha1su0v4si_uuuu (w0_3, w4_7, w8_11);
+ }
+ 
+-static __inline uint32x4_t
++__extension__ static __inline uint32x4_t __attribute__ ((__always_inline__))
+ vsha1su1q_u32 (uint32x4_t tw0_3, uint32x4_t w12_15)
+ {
+   return __builtin_aarch64_crypto_sha1su1v4si_uuu (tw0_3, w12_15);
+ }
+ 
+-static __inline uint32x4_t
++__extension__ static __inline uint32x4_t __attribute__ ((__always_inline__))
+ vsha256hq_u32 (uint32x4_t hash_abcd, uint32x4_t hash_efgh, uint32x4_t wk)
+ {
+   return __builtin_aarch64_crypto_sha256hv4si_uuuu (hash_abcd, hash_efgh, wk);
+ }
+ 
+-static __inline uint32x4_t
++__extension__ static __inline uint32x4_t __attribute__ ((__always_inline__))
+ vsha256h2q_u32 (uint32x4_t hash_efgh, uint32x4_t hash_abcd, uint32x4_t wk)
+ {
+   return __builtin_aarch64_crypto_sha256h2v4si_uuuu (hash_efgh, hash_abcd, wk);
+ }
+ 
+-static __inline uint32x4_t
++__extension__ static __inline uint32x4_t __attribute__ ((__always_inline__))
+ vsha256su0q_u32 (uint32x4_t w0_3, uint32x4_t w4_7)
+ {
+   return __builtin_aarch64_crypto_sha256su0v4si_uuu (w0_3, w4_7);
+ }
+ 
+-static __inline uint32x4_t
++__extension__ static __inline uint32x4_t __attribute__ ((__always_inline__))
+ vsha256su1q_u32 (uint32x4_t tw0_3, uint32x4_t w8_11, uint32x4_t w12_15)
+ {
+   return __builtin_aarch64_crypto_sha256su1v4si_uuuu (tw0_3, w8_11, w12_15);
+ }
+ 
+-static __inline poly128_t
++__extension__ static __inline poly128_t __attribute__ ((__always_inline__))
+ vmull_p64 (poly64_t a, poly64_t b)
+ {
+   return
+     __builtin_aarch64_crypto_pmulldi_ppp (a, b);
+ }
+ 
+-static __inline poly128_t
++__extension__ static __inline poly128_t __attribute__ ((__always_inline__))
+ vmull_high_p64 (poly64x2_t a, poly64x2_t b)
+ {
+   return __builtin_aarch64_crypto_pmullv2di_ppp (a, b);
+ }
+ 
+-#endif
++#pragma GCC pop_options
+ 
+ /* vshl */
+ 
+@@ -22226,6 +22525,12 @@ vsrid_n_u64 (uint64_t __a, uint64_t __b, const int __c)
+ /* vst1 */
+ 
+ __extension__ static __inline void __attribute__ ((__always_inline__))
++vst1_f16 (float16_t *__a, float16x4_t __b)
++{
++  __builtin_aarch64_st1v4hf (__a, __b);
++}
++
++__extension__ static __inline void __attribute__ ((__always_inline__))
+ vst1_f32 (float32_t *a, float32x2_t b)
+ {
+   __builtin_aarch64_st1v2sf ((__builtin_aarch64_simd_sf *) a, b);
+@@ -22302,6 +22607,14 @@ vst1_u64 (uint64_t *a, uint64x1_t b)
+   *a = b[0];
+ }
+ 
++/* vst1q */
++
++__extension__ static __inline void __attribute__ ((__always_inline__))
++vst1q_f16 (float16_t *__a, float16x8_t __b)
++{
++  __builtin_aarch64_st1v8hf (__a, __b);
++}
++
+ __extension__ static __inline void __attribute__ ((__always_inline__))
+ vst1q_f32 (float32_t *a, float32x4_t b)
+ {
+@@ -22314,8 +22627,6 @@ vst1q_f64 (float64_t *a, float64x2_t b)
+   __builtin_aarch64_st1v2df ((__builtin_aarch64_simd_df *) a, b);
+ }
+ 
+-/* vst1q */
+-
+ __extension__ static __inline void __attribute__ ((__always_inline__))
+ vst1q_p8 (poly8_t *a, poly8x16_t b)
+ {
+@@ -22382,6 +22693,166 @@ vst1q_u64 (uint64_t *a, uint64x2_t b)
+ 			     (int64x2_t) b);
+ }
+ 
++/* vst1_lane */
++
++__extension__ static __inline void __attribute__ ((__always_inline__))
++vst1_lane_f16 (float16_t *__a, float16x4_t __b, const int __lane)
++{
++  *__a = __aarch64_vget_lane_any (__b, __lane);
++}
++
++__extension__ static __inline void __attribute__ ((__always_inline__))
++vst1_lane_f32 (float32_t *__a, float32x2_t __b, const int __lane)
++{
++  *__a = __aarch64_vget_lane_any (__b, __lane);
++}
++
++__extension__ static __inline void __attribute__ ((__always_inline__))
++vst1_lane_f64 (float64_t *__a, float64x1_t __b, const int __lane)
++{
++  *__a = __aarch64_vget_lane_any (__b, __lane);
++}
++
++__extension__ static __inline void __attribute__ ((__always_inline__))
++vst1_lane_p8 (poly8_t *__a, poly8x8_t __b, const int __lane)
++{
++  *__a = __aarch64_vget_lane_any (__b, __lane);
++}
++
++__extension__ static __inline void __attribute__ ((__always_inline__))
++vst1_lane_p16 (poly16_t *__a, poly16x4_t __b, const int __lane)
++{
++  *__a = __aarch64_vget_lane_any (__b, __lane);
++}
++
++__extension__ static __inline void __attribute__ ((__always_inline__))
++vst1_lane_s8 (int8_t *__a, int8x8_t __b, const int __lane)
++{
++  *__a = __aarch64_vget_lane_any (__b, __lane);
++}
++
++__extension__ static __inline void __attribute__ ((__always_inline__))
++vst1_lane_s16 (int16_t *__a, int16x4_t __b, const int __lane)
++{
++  *__a = __aarch64_vget_lane_any (__b, __lane);
++}
++
++__extension__ static __inline void __attribute__ ((__always_inline__))
++vst1_lane_s32 (int32_t *__a, int32x2_t __b, const int __lane)
++{
++  *__a = __aarch64_vget_lane_any (__b, __lane);
++}
++
++__extension__ static __inline void __attribute__ ((__always_inline__))
++vst1_lane_s64 (int64_t *__a, int64x1_t __b, const int __lane)
++{
++  *__a = __aarch64_vget_lane_any (__b, __lane);
++}
++
++__extension__ static __inline void __attribute__ ((__always_inline__))
++vst1_lane_u8 (uint8_t *__a, uint8x8_t __b, const int __lane)
++{
++  *__a = __aarch64_vget_lane_any (__b, __lane);
++}
++
++__extension__ static __inline void __attribute__ ((__always_inline__))
++vst1_lane_u16 (uint16_t *__a, uint16x4_t __b, const int __lane)
++{
++  *__a = __aarch64_vget_lane_any (__b, __lane);
++}
++
++__extension__ static __inline void __attribute__ ((__always_inline__))
++vst1_lane_u32 (uint32_t *__a, uint32x2_t __b, const int __lane)
++{
++  *__a = __aarch64_vget_lane_any (__b, __lane);
++}
++
++__extension__ static __inline void __attribute__ ((__always_inline__))
++vst1_lane_u64 (uint64_t *__a, uint64x1_t __b, const int __lane)
++{
++  *__a = __aarch64_vget_lane_any (__b, __lane);
++}
++
++/* vst1q_lane */
++
++__extension__ static __inline void __attribute__ ((__always_inline__))
++vst1q_lane_f16 (float16_t *__a, float16x8_t __b, const int __lane)
++{
++  *__a = __aarch64_vget_lane_any (__b, __lane);
++}
++
++__extension__ static __inline void __attribute__ ((__always_inline__))
++vst1q_lane_f32 (float32_t *__a, float32x4_t __b, const int __lane)
++{
++  *__a = __aarch64_vget_lane_any (__b, __lane);
++}
++
++__extension__ static __inline void __attribute__ ((__always_inline__))
++vst1q_lane_f64 (float64_t *__a, float64x2_t __b, const int __lane)
++{
++  *__a = __aarch64_vget_lane_any (__b, __lane);
++}
++
++__extension__ static __inline void __attribute__ ((__always_inline__))
++vst1q_lane_p8 (poly8_t *__a, poly8x16_t __b, const int __lane)
++{
++  *__a = __aarch64_vget_lane_any (__b, __lane);
++}
++
++__extension__ static __inline void __attribute__ ((__always_inline__))
++vst1q_lane_p16 (poly16_t *__a, poly16x8_t __b, const int __lane)
++{
++  *__a = __aarch64_vget_lane_any (__b, __lane);
++}
++
++__extension__ static __inline void __attribute__ ((__always_inline__))
++vst1q_lane_s8 (int8_t *__a, int8x16_t __b, const int __lane)
++{
++  *__a = __aarch64_vget_lane_any (__b, __lane);
++}
++
++__extension__ static __inline void __attribute__ ((__always_inline__))
++vst1q_lane_s16 (int16_t *__a, int16x8_t __b, const int __lane)
++{
++  *__a = __aarch64_vget_lane_any (__b, __lane);
++}
++
++__extension__ static __inline void __attribute__ ((__always_inline__))
++vst1q_lane_s32 (int32_t *__a, int32x4_t __b, const int __lane)
++{
++  *__a = __aarch64_vget_lane_any (__b, __lane);
++}
++
++__extension__ static __inline void __attribute__ ((__always_inline__))
++vst1q_lane_s64 (int64_t *__a, int64x2_t __b, const int __lane)
++{
++  *__a = __aarch64_vget_lane_any (__b, __lane);
++}
++
++__extension__ static __inline void __attribute__ ((__always_inline__))
++vst1q_lane_u8 (uint8_t *__a, uint8x16_t __b, const int __lane)
++{
++  *__a = __aarch64_vget_lane_any (__b, __lane);
++}
++
++__extension__ static __inline void __attribute__ ((__always_inline__))
++vst1q_lane_u16 (uint16_t *__a, uint16x8_t __b, const int __lane)
++{
++  *__a = __aarch64_vget_lane_any (__b, __lane);
++}
++
++__extension__ static __inline void __attribute__ ((__always_inline__))
++vst1q_lane_u32 (uint32_t *__a, uint32x4_t __b, const int __lane)
++{
++  *__a = __aarch64_vget_lane_any (__b, __lane);
++}
++
++__extension__ static __inline void __attribute__ ((__always_inline__))
++vst1q_lane_u64 (uint64_t *__a, uint64x2_t __b, const int __lane)
++{
++  *__a = __aarch64_vget_lane_any (__b, __lane);
++}
++
+ /* vstn */
+ 
+ __extension__ static __inline void
+@@ -22517,6 +22988,18 @@ vst2_u32 (uint32_t * __a, uint32x2x2_t val)
+ }
+ 
+ __extension__ static __inline void __attribute__ ((__always_inline__))
++vst2_f16 (float16_t * __a, float16x4x2_t val)
++{
++  __builtin_aarch64_simd_oi __o;
++  float16x8x2_t temp;
++  temp.val[0] = vcombine_f16 (val.val[0], vcreate_f16 (__AARCH64_UINT64_C (0)));
++  temp.val[1] = vcombine_f16 (val.val[1], vcreate_f16 (__AARCH64_UINT64_C (0)));
++  __o = __builtin_aarch64_set_qregoiv8hf (__o, temp.val[0], 0);
++  __o = __builtin_aarch64_set_qregoiv8hf (__o, temp.val[1], 1);
++  __builtin_aarch64_st2v4hf (__a, __o);
++}
++
++__extension__ static __inline void __attribute__ ((__always_inline__))
+ vst2_f32 (float32_t * __a, float32x2x2_t val)
+ {
+   __builtin_aarch64_simd_oi __o;
+@@ -22619,6 +23102,15 @@ vst2q_u64 (uint64_t * __a, uint64x2x2_t val)
+ }
+ 
+ __extension__ static __inline void __attribute__ ((__always_inline__))
++vst2q_f16 (float16_t * __a, float16x8x2_t val)
++{
++  __builtin_aarch64_simd_oi __o;
++  __o = __builtin_aarch64_set_qregoiv8hf (__o, val.val[0], 0);
++  __o = __builtin_aarch64_set_qregoiv8hf (__o, val.val[1], 1);
++  __builtin_aarch64_st2v8hf (__a, __o);
++}
++
++__extension__ static __inline void __attribute__ ((__always_inline__))
+ vst2q_f32 (float32_t * __a, float32x4x2_t val)
+ {
+   __builtin_aarch64_simd_oi __o;
+@@ -22791,6 +23283,20 @@ vst3_u32 (uint32_t * __a, uint32x2x3_t val)
+ }
+ 
+ __extension__ static __inline void __attribute__ ((__always_inline__))
++vst3_f16 (float16_t * __a, float16x4x3_t val)
++{
++  __builtin_aarch64_simd_ci __o;
++  float16x8x3_t temp;
++  temp.val[0] = vcombine_f16 (val.val[0], vcreate_f16 (__AARCH64_UINT64_C (0)));
++  temp.val[1] = vcombine_f16 (val.val[1], vcreate_f16 (__AARCH64_UINT64_C (0)));
++  temp.val[2] = vcombine_f16 (val.val[2], vcreate_f16 (__AARCH64_UINT64_C (0)));
++  __o = __builtin_aarch64_set_qregciv8hf (__o, (float16x8_t) temp.val[0], 0);
++  __o = __builtin_aarch64_set_qregciv8hf (__o, (float16x8_t) temp.val[1], 1);
++  __o = __builtin_aarch64_set_qregciv8hf (__o, (float16x8_t) temp.val[2], 2);
++  __builtin_aarch64_st3v4hf ((__builtin_aarch64_simd_hf *) __a, __o);
++}
++
++__extension__ static __inline void __attribute__ ((__always_inline__))
+ vst3_f32 (float32_t * __a, float32x2x3_t val)
+ {
+   __builtin_aarch64_simd_ci __o;
+@@ -22905,6 +23411,16 @@ vst3q_u64 (uint64_t * __a, uint64x2x3_t val)
+ }
+ 
+ __extension__ static __inline void __attribute__ ((__always_inline__))
++vst3q_f16 (float16_t * __a, float16x8x3_t val)
++{
++  __builtin_aarch64_simd_ci __o;
++  __o = __builtin_aarch64_set_qregciv8hf (__o, (float16x8_t) val.val[0], 0);
++  __o = __builtin_aarch64_set_qregciv8hf (__o, (float16x8_t) val.val[1], 1);
++  __o = __builtin_aarch64_set_qregciv8hf (__o, (float16x8_t) val.val[2], 2);
++  __builtin_aarch64_st3v8hf ((__builtin_aarch64_simd_hf *) __a, __o);
++}
++
++__extension__ static __inline void __attribute__ ((__always_inline__))
+ vst3q_f32 (float32_t * __a, float32x4x3_t val)
+ {
+   __builtin_aarch64_simd_ci __o;
+@@ -23101,6 +23617,22 @@ vst4_u32 (uint32_t * __a, uint32x2x4_t val)
+ }
+ 
+ __extension__ static __inline void __attribute__ ((__always_inline__))
++vst4_f16 (float16_t * __a, float16x4x4_t val)
++{
++  __builtin_aarch64_simd_xi __o;
++  float16x8x4_t temp;
++  temp.val[0] = vcombine_f16 (val.val[0], vcreate_f16 (__AARCH64_UINT64_C (0)));
++  temp.val[1] = vcombine_f16 (val.val[1], vcreate_f16 (__AARCH64_UINT64_C (0)));
++  temp.val[2] = vcombine_f16 (val.val[2], vcreate_f16 (__AARCH64_UINT64_C (0)));
++  temp.val[3] = vcombine_f16 (val.val[3], vcreate_f16 (__AARCH64_UINT64_C (0)));
++  __o = __builtin_aarch64_set_qregxiv8hf (__o, (float16x8_t) temp.val[0], 0);
++  __o = __builtin_aarch64_set_qregxiv8hf (__o, (float16x8_t) temp.val[1], 1);
++  __o = __builtin_aarch64_set_qregxiv8hf (__o, (float16x8_t) temp.val[2], 2);
++  __o = __builtin_aarch64_set_qregxiv8hf (__o, (float16x8_t) temp.val[3], 3);
++  __builtin_aarch64_st4v4hf ((__builtin_aarch64_simd_hf *) __a, __o);
++}
++
++__extension__ static __inline void __attribute__ ((__always_inline__))
+ vst4_f32 (float32_t * __a, float32x2x4_t val)
+ {
+   __builtin_aarch64_simd_xi __o;
+@@ -23227,6 +23759,17 @@ vst4q_u64 (uint64_t * __a, uint64x2x4_t val)
+ }
+ 
+ __extension__ static __inline void __attribute__ ((__always_inline__))
++vst4q_f16 (float16_t * __a, float16x8x4_t val)
++{
++  __builtin_aarch64_simd_xi __o;
++  __o = __builtin_aarch64_set_qregxiv8hf (__o, (float16x8_t) val.val[0], 0);
++  __o = __builtin_aarch64_set_qregxiv8hf (__o, (float16x8_t) val.val[1], 1);
++  __o = __builtin_aarch64_set_qregxiv8hf (__o, (float16x8_t) val.val[2], 2);
++  __o = __builtin_aarch64_set_qregxiv8hf (__o, (float16x8_t) val.val[3], 3);
++  __builtin_aarch64_st4v8hf ((__builtin_aarch64_simd_hf *) __a, __o);
++}
++
++__extension__ static __inline void __attribute__ ((__always_inline__))
+ vst4q_f32 (float32_t * __a, float32x4x4_t val)
+ {
+   __builtin_aarch64_simd_xi __o;
+@@ -23322,6 +23865,58 @@ vtbx3_p8 (poly8x8_t __r, poly8x8x3_t __tab, uint8x8_t __idx)
+   return vbsl_p8 (__mask, __tbl, __r);
+ }
+ 
++/* vtbx4  */
++
++__extension__ static __inline int8x8_t __attribute__ ((__always_inline__))
++vtbx4_s8 (int8x8_t __r, int8x8x4_t __tab, int8x8_t __idx)
++{
++  int8x8_t result;
++  int8x16x2_t temp;
++  __builtin_aarch64_simd_oi __o;
++  temp.val[0] = vcombine_s8 (__tab.val[0], __tab.val[1]);
++  temp.val[1] = vcombine_s8 (__tab.val[2], __tab.val[3]);
++  __o = __builtin_aarch64_set_qregoiv16qi (__o,
++					   (int8x16_t) temp.val[0], 0);
++  __o = __builtin_aarch64_set_qregoiv16qi (__o,
++					   (int8x16_t) temp.val[1], 1);
++  result = __builtin_aarch64_tbx4v8qi (__r, __o, __idx);
++  return result;
++}
++
++__extension__ static __inline uint8x8_t __attribute__ ((__always_inline__))
++vtbx4_u8 (uint8x8_t __r, uint8x8x4_t __tab, uint8x8_t __idx)
++{
++  uint8x8_t result;
++  uint8x16x2_t temp;
++  __builtin_aarch64_simd_oi __o;
++  temp.val[0] = vcombine_u8 (__tab.val[0], __tab.val[1]);
++  temp.val[1] = vcombine_u8 (__tab.val[2], __tab.val[3]);
++  __o = __builtin_aarch64_set_qregoiv16qi (__o,
++					   (int8x16_t) temp.val[0], 0);
++  __o = __builtin_aarch64_set_qregoiv16qi (__o,
++					   (int8x16_t) temp.val[1], 1);
++  result = (uint8x8_t)__builtin_aarch64_tbx4v8qi ((int8x8_t)__r, __o,
++						  (int8x8_t)__idx);
++  return result;
++}
++
++__extension__ static __inline poly8x8_t __attribute__ ((__always_inline__))
++vtbx4_p8 (poly8x8_t __r, poly8x8x4_t __tab, uint8x8_t __idx)
++{
++  poly8x8_t result;
++  poly8x16x2_t temp;
++  __builtin_aarch64_simd_oi __o;
++  temp.val[0] = vcombine_p8 (__tab.val[0], __tab.val[1]);
++  temp.val[1] = vcombine_p8 (__tab.val[2], __tab.val[3]);
++  __o = __builtin_aarch64_set_qregoiv16qi (__o,
++					   (int8x16_t) temp.val[0], 0);
++  __o = __builtin_aarch64_set_qregoiv16qi (__o,
++					   (int8x16_t) temp.val[1], 1);
++  result = (poly8x8_t)__builtin_aarch64_tbx4v8qi ((int8x8_t)__r, __o,
++						  (int8x8_t)__idx);
++  return result;
++}
++
+ /* vtrn */
+ 
+ __extension__ static __inline float32x2_t __attribute__ ((__always_inline__))
+@@ -23887,7 +24482,7 @@ vtst_s32 (int32x2_t __a, int32x2_t __b)
+ __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__))
+ vtst_s64 (int64x1_t __a, int64x1_t __b)
+ {
+-  return (uint64x1_t) {(__a[0] & __b[0]) ? -1ll : 0ll};
++  return (uint64x1_t) ((__a & __b) != __AARCH64_INT64_C (0));
+ }
+ 
+ __extension__ static __inline uint8x8_t __attribute__ ((__always_inline__))
+@@ -23911,7 +24506,7 @@ vtst_u32 (uint32x2_t __a, uint32x2_t __b)
+ __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__))
+ vtst_u64 (uint64x1_t __a, uint64x1_t __b)
+ {
+-  return (uint64x1_t) {(__a[0] & __b[0]) ? -1ll : 0ll};
++  return ((__a & __b) != __AARCH64_UINT64_C (0));
+ }
+ 
+ __extension__ static __inline uint8x16_t __attribute__ ((__always_inline__))
+@@ -25012,6 +25607,6 @@ __INTERLEAVE_LIST (zip)
+ #undef __aarch64_vdupq_laneq_u32
+ #undef __aarch64_vdupq_laneq_u64
+ 
+-#endif
++#pragma GCC pop_options
+ 
+ #endif
+--- a/src/gcc/config/aarch64/atomics.md
++++ b/src/gcc/config/aarch64/atomics.md
+@@ -26,9 +26,28 @@
+     UNSPECV_STL				; Represent an atomic store or store-release.
+     UNSPECV_ATOMIC_CMPSW		; Represent an atomic compare swap.
+     UNSPECV_ATOMIC_EXCHG		; Represent an atomic exchange.
++    UNSPECV_ATOMIC_CAS			; Represent an atomic CAS.
++    UNSPECV_ATOMIC_SWP			; Represent an atomic SWP.
+     UNSPECV_ATOMIC_OP			; Represent an atomic operation.
++    UNSPECV_ATOMIC_LDOP			; Represent an atomic load-operation
++    UNSPECV_ATOMIC_LDOP_OR		; Represent an atomic load-or
++    UNSPECV_ATOMIC_LDOP_BIC		; Represent an atomic load-bic
++    UNSPECV_ATOMIC_LDOP_XOR		; Represent an atomic load-xor
++    UNSPECV_ATOMIC_LDOP_PLUS		; Represent an atomic load-add
+ ])
+ 
++;; Iterators for load-operate instructions.
++
++(define_int_iterator ATOMIC_LDOP
++ [UNSPECV_ATOMIC_LDOP_OR UNSPECV_ATOMIC_LDOP_BIC
++  UNSPECV_ATOMIC_LDOP_XOR UNSPECV_ATOMIC_LDOP_PLUS])
++
++(define_int_attr atomic_ldop
++ [(UNSPECV_ATOMIC_LDOP_OR "set") (UNSPECV_ATOMIC_LDOP_BIC "clr")
++  (UNSPECV_ATOMIC_LDOP_XOR "eor") (UNSPECV_ATOMIC_LDOP_PLUS "add")])
++
++;; Instruction patterns.
++
+ (define_expand "atomic_compare_and_swap<mode>"
+   [(match_operand:SI 0 "register_operand" "")			;; bool out
+    (match_operand:ALLI 1 "register_operand" "")			;; val out
+@@ -45,10 +64,10 @@
+   }
+ )
+ 
+-(define_insn_and_split "atomic_compare_and_swap<mode>_1"
++(define_insn_and_split "aarch64_compare_and_swap<mode>"
+   [(set (reg:CC CC_REGNUM)					;; bool out
+     (unspec_volatile:CC [(const_int 0)] UNSPECV_ATOMIC_CMPSW))
+-   (set (match_operand:SI 0 "register_operand" "=&r")		;; val out
++   (set (match_operand:SI 0 "register_operand" "=&r")	   ;; val out
+     (zero_extend:SI
+       (match_operand:SHORT 1 "aarch64_sync_memory_operand" "+Q"))) ;; memory
+    (set (match_dup 1)
+@@ -57,7 +76,7 @@
+        (match_operand:SHORT 3 "register_operand" "r")	;; desired
+        (match_operand:SI 4 "const_int_operand")		;; is_weak
+        (match_operand:SI 5 "const_int_operand")		;; mod_s
+-       (match_operand:SI 6 "const_int_operand")]		;; mod_f
++       (match_operand:SI 6 "const_int_operand")]	;; mod_f
+       UNSPECV_ATOMIC_CMPSW))
+    (clobber (match_scratch:SI 7 "=&r"))]
+   ""
+@@ -70,17 +89,17 @@
+   }
+ )
+ 
+-(define_insn_and_split "atomic_compare_and_swap<mode>_1"
++(define_insn_and_split "aarch64_compare_and_swap<mode>"
+   [(set (reg:CC CC_REGNUM)					;; bool out
+     (unspec_volatile:CC [(const_int 0)] UNSPECV_ATOMIC_CMPSW))
+    (set (match_operand:GPI 0 "register_operand" "=&r")		;; val out
+-    (match_operand:GPI 1 "aarch64_sync_memory_operand" "+Q")) ;; memory
++    (match_operand:GPI 1 "aarch64_sync_memory_operand" "+Q"))   ;; memory
+    (set (match_dup 1)
+     (unspec_volatile:GPI
+       [(match_operand:GPI 2 "aarch64_plus_operand" "rI")	;; expect
+        (match_operand:GPI 3 "register_operand" "r")		;; desired
+-       (match_operand:SI 4 "const_int_operand")		;; is_weak
+-       (match_operand:SI 5 "const_int_operand")		;; mod_s
++       (match_operand:SI 4 "const_int_operand")			;; is_weak
++       (match_operand:SI 5 "const_int_operand")			;; mod_s
+        (match_operand:SI 6 "const_int_operand")]		;; mod_f
+       UNSPECV_ATOMIC_CMPSW))
+    (clobber (match_scratch:SI 7 "=&r"))]
+@@ -94,7 +113,79 @@
+   }
+ )
+ 
+-(define_insn_and_split "atomic_exchange<mode>"
++(define_insn_and_split "aarch64_compare_and_swap<mode>_lse"
++  [(set (reg:CC CC_REGNUM)					;; bool out
++    (unspec_volatile:CC [(const_int 0)] UNSPECV_ATOMIC_CMPSW))
++   (set (match_operand:SI 0 "register_operand" "=&r")		;; val out
++    (zero_extend:SI
++      (match_operand:SHORT 1 "aarch64_sync_memory_operand" "+Q"))) ;; memory
++   (set (match_dup 1)
++    (unspec_volatile:SHORT
++      [(match_operand:SI 2 "aarch64_plus_operand" "rI")	;; expected
++       (match_operand:SHORT 3 "register_operand" "r")	;; desired
++       (match_operand:SI 4 "const_int_operand")		;; is_weak
++       (match_operand:SI 5 "const_int_operand")		;; mod_s
++       (match_operand:SI 6 "const_int_operand")]	;; mod_f
++      UNSPECV_ATOMIC_CMPSW))]
++  "TARGET_LSE"
++  "#"
++  "&& reload_completed"
++  [(const_int 0)]
++  {
++    aarch64_gen_atomic_cas (operands[0], operands[1],
++			    operands[2], operands[3],
++			    operands[5]);
++    DONE;
++  }
++)
++
++(define_insn_and_split "aarch64_compare_and_swap<mode>_lse"
++  [(set (reg:CC CC_REGNUM)					;; bool out
++    (unspec_volatile:CC [(const_int 0)] UNSPECV_ATOMIC_CMPSW))
++   (set (match_operand:GPI 0 "register_operand" "=&r")		;; val out
++    (match_operand:GPI 1 "aarch64_sync_memory_operand" "+Q"))   ;; memory
++   (set (match_dup 1)
++    (unspec_volatile:GPI
++      [(match_operand:GPI 2 "aarch64_plus_operand" "rI")	;; expect
++       (match_operand:GPI 3 "register_operand" "r")		;; desired
++       (match_operand:SI 4 "const_int_operand")			;; is_weak
++       (match_operand:SI 5 "const_int_operand")			;; mod_s
++       (match_operand:SI 6 "const_int_operand")]		;; mod_f
++      UNSPECV_ATOMIC_CMPSW))]
++  "TARGET_LSE"
++  "#"
++  "&& reload_completed"
++  [(const_int 0)]
++  {
++    aarch64_gen_atomic_cas (operands[0], operands[1],
++			    operands[2], operands[3],
++			    operands[5]);
++    DONE;
++  }
++)
++
++(define_expand "atomic_exchange<mode>"
++ [(match_operand:ALLI 0 "register_operand" "")
++  (match_operand:ALLI 1 "aarch64_sync_memory_operand" "")
++  (match_operand:ALLI 2 "register_operand" "")
++  (match_operand:SI 3 "const_int_operand" "")]
++  ""
++  {
++    rtx (*gen) (rtx, rtx, rtx, rtx);
++
++    /* Use an atomic SWP when available.  */
++    if (TARGET_LSE)
++      gen = gen_aarch64_atomic_exchange<mode>_lse;
++    else
++      gen = gen_aarch64_atomic_exchange<mode>;
++
++    emit_insn (gen (operands[0], operands[1], operands[2], operands[3]));
++
++    DONE;
++  }
++)
++
++(define_insn_and_split "aarch64_atomic_exchange<mode>"
+   [(set (match_operand:ALLI 0 "register_operand" "=&r")		;; output
+     (match_operand:ALLI 1 "aarch64_sync_memory_operand" "+Q")) ;; memory
+    (set (match_dup 1)
+@@ -110,28 +201,87 @@
+   [(const_int 0)]
+   {
+     aarch64_split_atomic_op (SET, operands[0], NULL, operands[1],
+-			    operands[2], operands[3], operands[4]);
++			     operands[2], operands[3], operands[4]);
++    DONE;
++  }
++)
++
++(define_insn_and_split "aarch64_atomic_exchange<mode>_lse"
++  [(set (match_operand:ALLI 0 "register_operand" "=&r")
++    (match_operand:ALLI 1 "aarch64_sync_memory_operand" "+Q"))
++   (set (match_dup 1)
++    (unspec_volatile:ALLI
++      [(match_operand:ALLI 2 "register_operand" "r")
++       (match_operand:SI 3 "const_int_operand" "")]
++      UNSPECV_ATOMIC_EXCHG))]
++  "TARGET_LSE"
++  "#"
++  "&& reload_completed"
++  [(const_int 0)]
++  {
++    aarch64_gen_atomic_ldop (SET, operands[0], NULL, operands[1],
++			     operands[2], operands[3]);
++    DONE;
++  }
++)
++
++(define_expand "atomic_<atomic_optab><mode>"
++ [(match_operand:ALLI 0 "aarch64_sync_memory_operand" "")
++  (atomic_op:ALLI
++   (match_operand:ALLI 1 "<atomic_op_operand>" "")
++   (match_operand:SI 2 "const_int_operand"))]
++  ""
++  {
++    rtx (*gen) (rtx, rtx, rtx);
++
++    /* Use an atomic load-operate instruction when possible.  */
++    if (aarch64_atomic_ldop_supported_p (<CODE>))
++      gen = gen_aarch64_atomic_<atomic_optab><mode>_lse;
++    else
++      gen = gen_aarch64_atomic_<atomic_optab><mode>;
++
++    emit_insn (gen (operands[0], operands[1], operands[2]));
++
+     DONE;
+   }
+ )
+ 
+-(define_insn_and_split "atomic_<atomic_optab><mode>"
++(define_insn_and_split "aarch64_atomic_<atomic_optab><mode>"
++ [(set (match_operand:ALLI 0 "aarch64_sync_memory_operand" "+Q")
++   (unspec_volatile:ALLI
++    [(atomic_op:ALLI (match_dup 0)
++      (match_operand:ALLI 1 "<atomic_op_operand>" "r<const_atomic>"))
++     (match_operand:SI 2 "const_int_operand")]
++    UNSPECV_ATOMIC_OP))
++  (clobber (reg:CC CC_REGNUM))
++  (clobber (match_scratch:ALLI 3 "=&r"))
++  (clobber (match_scratch:SI 4 "=&r"))]
++  ""
++  "#"
++  "&& reload_completed"
++  [(const_int 0)]
++  {
++    aarch64_split_atomic_op (<CODE>, NULL, operands[3], operands[0],
++			     operands[1], operands[2], operands[4]);
++    DONE;
++  }
++)
++
++(define_insn_and_split "aarch64_atomic_<atomic_optab><mode>_lse"
+   [(set (match_operand:ALLI 0 "aarch64_sync_memory_operand" "+Q")
+     (unspec_volatile:ALLI
+       [(atomic_op:ALLI (match_dup 0)
+ 	(match_operand:ALLI 1 "<atomic_op_operand>" "r<const_atomic>"))
+-       (match_operand:SI 2 "const_int_operand")]		;; model
++       (match_operand:SI 2 "const_int_operand")]
+       UNSPECV_ATOMIC_OP))
+-       (clobber (reg:CC CC_REGNUM))
+-   (clobber (match_scratch:ALLI 3 "=&r"))
+-   (clobber (match_scratch:SI 4 "=&r"))]
+-  ""
++   (clobber (match_scratch:ALLI 3 "=&r"))]
++  "TARGET_LSE"
+   "#"
+   "&& reload_completed"
+   [(const_int 0)]
+   {
+-    aarch64_split_atomic_op (<CODE>, NULL, operands[3], operands[0],
+-			    operands[1], operands[2], operands[4]);
++    aarch64_gen_atomic_ldop (<CODE>, operands[3], NULL, operands[0],
++			     operands[1], operands[2]);
+     DONE;
+   }
+ )
+@@ -158,7 +308,30 @@
+   }
+ )
+ 
+-(define_insn_and_split "atomic_fetch_<atomic_optab><mode>"
++;; Load-operate-store, returning the updated memory data.
++
++(define_expand "atomic_fetch_<atomic_optab><mode>"
++ [(match_operand:ALLI 0 "register_operand" "")
++  (match_operand:ALLI 1 "aarch64_sync_memory_operand" "")
++  (atomic_op:ALLI
++   (match_operand:ALLI 2 "<atomic_op_operand>" "")
++   (match_operand:SI 3 "const_int_operand"))]
++ ""
++{
++  rtx (*gen) (rtx, rtx, rtx, rtx);
++
++  /* Use an atomic load-operate instruction when possible.  */
++  if (aarch64_atomic_ldop_supported_p (<CODE>))
++    gen = gen_aarch64_atomic_fetch_<atomic_optab><mode>_lse;
++  else
++    gen = gen_aarch64_atomic_fetch_<atomic_optab><mode>;
++
++  emit_insn (gen (operands[0], operands[1], operands[2], operands[3]));
++
++  DONE;
++})
++
++(define_insn_and_split "aarch64_atomic_fetch_<atomic_optab><mode>"
+   [(set (match_operand:ALLI 0 "register_operand" "=&r")
+     (match_operand:ALLI 1 "aarch64_sync_memory_operand" "+Q"))
+    (set (match_dup 1)
+@@ -181,6 +354,26 @@
+   }
+ )
+ 
++(define_insn_and_split "aarch64_atomic_fetch_<atomic_optab><mode>_lse"
++  [(set (match_operand:ALLI 0 "register_operand" "=&r")
++    (match_operand:ALLI 1 "aarch64_sync_memory_operand" "+Q"))
++   (set (match_dup 1)
++    (unspec_volatile:ALLI
++      [(atomic_op:ALLI (match_dup 1)
++	(match_operand:ALLI 2 "<atomic_op_operand>" "r<const_atomic>"))
++       (match_operand:SI 3 "const_int_operand")]
++      UNSPECV_ATOMIC_LDOP))]
++  "TARGET_LSE"
++  "#"
++  "&& reload_completed"
++  [(const_int 0)]
++  {
++    aarch64_gen_atomic_ldop (<CODE>, operands[0], NULL, operands[1],
++			     operands[2], operands[3]);
++    DONE;
++  }
++)
++
+ (define_insn_and_split "atomic_fetch_nand<mode>"
+   [(set (match_operand:ALLI 0 "register_operand" "=&r")
+     (match_operand:ALLI 1 "aarch64_sync_memory_operand" "+Q"))
+@@ -205,7 +398,31 @@
+   }
+ )
+ 
+-(define_insn_and_split "atomic_<atomic_optab>_fetch<mode>"
++;; Load-operate-store, returning the original memory data.
++
++(define_expand "atomic_<atomic_optab>_fetch<mode>"
++ [(match_operand:ALLI 0 "register_operand" "")
++  (atomic_op:ALLI
++   (match_operand:ALLI 1 "aarch64_sync_memory_operand" "")
++   (match_operand:ALLI 2 "<atomic_op_operand>" ""))
++  (match_operand:SI 3 "const_int_operand")]
++ ""
++{
++  rtx (*gen) (rtx, rtx, rtx, rtx);
++  rtx value = operands[2];
++
++  /* Use an atomic load-operate instruction when possible.  */
++  if (aarch64_atomic_ldop_supported_p (<CODE>))
++    gen = gen_aarch64_atomic_<atomic_optab>_fetch<mode>_lse;
++  else
++    gen = gen_aarch64_atomic_<atomic_optab>_fetch<mode>;
++
++  emit_insn (gen (operands[0], operands[1], value, operands[3]));
++
++  DONE;
++})
++
++(define_insn_and_split "aarch64_atomic_<atomic_optab>_fetch<mode>"
+   [(set (match_operand:ALLI 0 "register_operand" "=&r")
+     (atomic_op:ALLI
+       (match_operand:ALLI 1 "aarch64_sync_memory_operand" "+Q")
+@@ -228,6 +445,29 @@
+   }
+ )
+ 
++(define_insn_and_split "aarch64_atomic_<atomic_optab>_fetch<mode>_lse"
++  [(set (match_operand:ALLI 0 "register_operand" "=&r")
++    (atomic_op:ALLI
++     (match_operand:ALLI 1 "aarch64_sync_memory_operand" "+Q")
++     (match_operand:ALLI 2 "<atomic_op_operand>" "r<const_atomic>")))
++   (set (match_dup 1)
++    (unspec_volatile:ALLI
++      [(match_dup 1)
++       (match_dup 2)
++       (match_operand:SI 3 "const_int_operand")]
++      UNSPECV_ATOMIC_LDOP))
++     (clobber (match_scratch:ALLI 4 "=r"))]
++  "TARGET_LSE"
++  "#"
++  "&& reload_completed"
++  [(const_int 0)]
++  {
++    aarch64_gen_atomic_ldop (<CODE>, operands[4], operands[0], operands[1],
++			     operands[2], operands[3]);
++    DONE;
++  }
++)
++
+ (define_insn_and_split "atomic_nand_fetch<mode>"
+   [(set (match_operand:ALLI 0 "register_operand" "=&r")
+     (not:ALLI
+@@ -370,3 +610,100 @@
+       return "dmb\\tish";
+   }
+ )
++
++;; ARMv8.1 LSE instructions.
++
++;; Atomic swap with memory.
++(define_insn "aarch64_atomic_swp<mode>"
++ [(set (match_operand:ALLI 0 "register_operand" "+&r")
++   (match_operand:ALLI 1 "aarch64_sync_memory_operand" "+Q"))
++  (set (match_dup 1)
++   (unspec_volatile:ALLI
++    [(match_operand:ALLI 2 "register_operand" "r")
++     (match_operand:SI 3 "const_int_operand" "")]
++    UNSPECV_ATOMIC_SWP))]
++  "TARGET_LSE && reload_completed"
++  {
++    enum memmodel model = memmodel_from_int (INTVAL (operands[3]));
++    if (is_mm_relaxed (model))
++      return "swp<atomic_sfx>\t%<w>2, %<w>0, %1";
++    else if (is_mm_acquire (model) || is_mm_consume (model))
++      return "swpa<atomic_sfx>\t%<w>2, %<w>0, %1";
++    else if (is_mm_release (model))
++      return "swpl<atomic_sfx>\t%<w>2, %<w>0, %1";
++    else
++      return "swpal<atomic_sfx>\t%<w>2, %<w>0, %1";
++  })
++
++;; Atomic compare-and-swap: HI and smaller modes.
++
++(define_insn "aarch64_atomic_cas<mode>"
++ [(set (match_operand:SI 0 "register_operand" "+&r")		  ;; out
++   (zero_extend:SI
++    (match_operand:SHORT 1 "aarch64_sync_memory_operand" "+Q")))  ;; memory.
++  (set (match_dup 1)
++   (unspec_volatile:SHORT
++    [(match_dup 0)
++     (match_operand:SHORT 2 "register_operand" "r")	;; value.
++     (match_operand:SI 3 "const_int_operand" "")]	;; model.
++    UNSPECV_ATOMIC_CAS))]
++ "TARGET_LSE && reload_completed"
++{
++  enum memmodel model = memmodel_from_int (INTVAL (operands[3]));
++  if (is_mm_relaxed (model))
++    return "cas<atomic_sfx>\t%<w>0, %<w>2, %1";
++  else if (is_mm_acquire (model) || is_mm_consume (model))
++    return "casa<atomic_sfx>\t%<w>0, %<w>2, %1";
++  else if (is_mm_release (model))
++    return "casl<atomic_sfx>\t%<w>0, %<w>2, %1";
++  else
++    return "casal<atomic_sfx>\t%<w>0, %<w>2, %1";
++})
++
++;; Atomic compare-and-swap: SI and larger modes.
++
++(define_insn "aarch64_atomic_cas<mode>"
++ [(set (match_operand:GPI 0 "register_operand" "+&r")	      ;; out
++   (match_operand:GPI 1 "aarch64_sync_memory_operand" "+Q"))  ;; memory.
++  (set (match_dup 1)
++   (unspec_volatile:GPI
++    [(match_dup 0)
++     (match_operand:GPI 2 "register_operand" "r")	;; value.
++     (match_operand:SI 3 "const_int_operand" "")]	;; model.
++    UNSPECV_ATOMIC_CAS))]
++  "TARGET_LSE && reload_completed"
++{
++    enum memmodel model = memmodel_from_int (INTVAL (operands[3]));
++    if (is_mm_relaxed (model))
++      return "cas<atomic_sfx>\t%<w>0, %<w>2, %1";
++    else if (is_mm_acquire (model) || is_mm_consume (model))
++      return "casa<atomic_sfx>\t%<w>0, %<w>2, %1";
++    else if (is_mm_release (model))
++      return "casl<atomic_sfx>\t%<w>0, %<w>2, %1";
++    else
++      return "casal<atomic_sfx>\t%<w>0, %<w>2, %1";
++})
++
++;; Atomic load-op: Load data, operate, store result, keep data.
++
++(define_insn "aarch64_atomic_load<atomic_ldop><mode>"
++ [(set (match_operand:ALLI 0 "register_operand" "=r")
++   (match_operand:ALLI 1 "aarch64_sync_memory_operand" "+Q"))
++  (set (match_dup 1)
++   (unspec_volatile:ALLI
++    [(match_dup 1)
++     (match_operand:ALLI 2 "register_operand")
++     (match_operand:SI 3 "const_int_operand")]
++    ATOMIC_LDOP))]
++ "TARGET_LSE && reload_completed"
++ {
++   enum memmodel model = memmodel_from_int (INTVAL (operands[3]));
++   if (is_mm_relaxed (model))
++     return "ld<atomic_ldop><atomic_sfx>\t%<w>2, %<w>0, %1";
++   else if (is_mm_acquire (model) || is_mm_consume (model))
++     return "ld<atomic_ldop>a<atomic_sfx>\t%<w>2, %<w>0, %1";
++   else if (is_mm_release (model))
++     return "ld<atomic_ldop>l<atomic_sfx>\t%<w>2, %<w>0, %1";
++   else
++     return "ld<atomic_ldop>al<atomic_sfx>\t%<w>2, %<w>0, %1";
++ })
+--- /dev/null
++++ b/src/gcc/config/aarch64/cortex-a57-fma-steering.c
+@@ -0,0 +1,1099 @@
++/* FMA steering optimization pass for Cortex-A57.
++   Copyright (C) 2015 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
++   <http://www.gnu.org/licenses/>.  */
++
++#include "config.h"
++#include "system.h"
++#include "coretypes.h"
++#include "tm.h"
++#include "regs.h"
++#include "insn-config.h"
++#include "hard-reg-set.h"
++#include "dominance.h"
++#include "cfg.h"
++#include "cfganal.h"
++#include "predict.h"
++#include "basic-block.h"
++#include "insn-attr.h"
++#include "machmode.h"
++#include "recog.h"
++#include "output.h"
++#include "vec.h"
++#include "hash-map.h"
++#include "bitmap.h"
++#include "obstack.h"
++#include "df.h"
++#include "target.h"
++#include "rtl.h"
++#include "context.h"
++#include "tree-pass.h"
++#include "regrename.h"
++#include "cortex-a57-fma-steering.h"
++#include "aarch64-protos.h"
++
++#include <list>
++
++/* For better performance, the destination of FMADD/FMSUB instructions should
++   have the same parity as their accumulator register if the accumulator
++   contains the result of a previous FMUL or FMADD/FMSUB instruction if
++   targetting Cortex-A57 processors.  Performance is also increased by
++   otherwise keeping a good balance in the parity of the destination register
++   of FMUL or FMADD/FMSUB.
++
++   This pass ensure that registers are renamed so that these conditions hold.
++   We reuse the existing register renaming facility from regrename.c to build
++   dependency chains and expose candidate registers for renaming.
++
++
++   The algorithm has three steps:
++
++   First, the functions of the register renaming pass are called.  These
++   analyze the instructions and produce a list of def/use chains of
++   instructions.
++
++   Next, this information is used to build trees of multiply and
++   multiply-accumulate instructions.  The roots of these trees are any
++   multiply, or any multiply-accumulate whose accumulator is not dependent on
++   a multiply or multiply-accumulate instruction.  A child is added to the
++   tree where a dependency chain exists between the result of the parent
++   instruction and the accumulator operand of the child, as in the diagram
++   below:
++
++		 fmul s2, s0, s1
++		/		\
++   fmadd s0, s1, s1, s2   fmadd s4, s1, s1 s2
++	    |
++   fmadd s3, s1, s1, s0
++
++   Trees made of a single instruction are permitted.
++
++   Finally, renaming is performed.  The parity of the destination register at
++   the root of a tree is checked against the current balance of multiply and
++   multiply-accumulate on each pipeline.  If necessary, the root of a tree is
++   renamed, in which case the rest of the tree is then renamed to keep the same
++   parity in the destination registers of all instructions in the tree.  */
++
++
++
++/* Forward declarations.  */
++class fma_node;
++class fma_root_node;
++class func_fma_steering;
++
++/* Dependencies between FMUL or FMADD/FMSUB instructions and subsequent
++   FMADD/FMSUB instructions form a graph.  This is because alternatives can
++   make a register be set by several FMUL or FMADD/FMSUB instructions in
++   different basic blocks and because of loops.  For ease of browsing, the
++   connected components of this graph are broken up into forests of trees.
++   Forests are represented by fma_forest objects, contained in the fma_forests
++   list.  Using a separate object for the forests allows for a better use of
++   memory as there is some information that is global to each forest, such as
++   the number of FMSUB and FMADD/FMSUB instructions currently scheduled on each
++   floating-point execution pipelines.  */
++
++class fma_forest
++{
++public:
++  fma_forest (func_fma_steering *, fma_root_node *, int);
++  ~fma_forest ();
++
++  int get_id ();
++  std::list<fma_root_node *> *get_roots ();
++  func_fma_steering *get_globals ();
++  int get_target_parity ();
++  void fma_node_created (fma_node *);
++  void merge_forest (fma_forest *);
++  void dump_info ();
++  void dispatch ();
++
++private:
++  /* The list of roots that form this forest.  */
++  std::list<fma_root_node *> *m_roots;
++
++  /* Target parity the destination register of all FMUL and FMADD/FMSUB
++     instructions in this forest should have.  */
++  int m_target_parity;
++
++  /* Link to the instance of func_fma_steering holding data related to the
++     FMA steering of the current function (cfun).  */
++  func_fma_steering *m_globals;
++
++  /* Identifier for the forest (used for dumps).  */
++  int m_id;
++
++  /* Total number of nodes in the forest (for statistics).  */
++  int m_nb_nodes;
++};
++
++class fma_node
++{
++public:
++  fma_node (fma_node *parent, du_chain *chain);
++  ~fma_node ();
++
++  bool root_p ();
++  fma_forest *get_forest ();
++  std::list<fma_node *> *get_children ();
++  rtx_insn *get_insn ();
++  void add_child (fma_node *);
++  int get_parity ();
++  void set_head (du_head *);
++  void rename (fma_forest *);
++  void dump_info (fma_forest *);
++
++protected:
++  /* Root node that lead to this node.  */
++  fma_root_node *m_root;
++
++  /* The parent node of this node.  If the node belong to a chain with several
++     parent nodes, the first one encountered in a depth-first search is chosen
++     as canonical parent.  */
++  fma_node *m_parent;
++
++  /* The list of child nodes.  If a chain contains several parent nodes, one is
++     chosen as canonical parent and the others will have no children.  */
++  std::list<fma_node *> *m_children;
++
++  /* The associated DU_HEAD chain that the insn represented by this object
++     is (one of) the root of.  When a chain contains several roots, the non
++     canonical ones have this field set to NULL.  */
++  struct du_head *m_head;
++
++  /* The FMUL or FMADD/FMSUB instruction this object corresponds to.  */
++  rtx_insn *m_insn;
++};
++
++class fma_root_node : public fma_node
++{
++public:
++  fma_root_node (func_fma_steering *, du_chain *, int);
++
++  fma_forest *get_forest ();
++  void set_forest (fma_forest *);
++  void dump_info (fma_forest *);
++
++private:
++  /* The forest this node belonged to when it was created.  */
++  fma_forest *m_forest;
++};
++
++/* Class holding all data and methods relative to the FMA steering of a given
++   function.  The FMA steering pass could then run in parallel for different
++   functions.  */
++
++class func_fma_steering
++{
++public:
++  func_fma_steering ();
++  ~func_fma_steering ();
++
++  int get_fpu_balance ();
++  void remove_forest (fma_forest *);
++  bool put_node (fma_node *);
++  void update_balance (int);
++  fma_node *get_fma_node (rtx_insn *);
++  void analyze_fma_fmul_insn (fma_forest *, du_chain *, du_head_p);
++  void execute_fma_steering ();
++
++private:
++  void dfs (void (*) (fma_forest *), void (*) (fma_forest *, fma_root_node *),
++	    void (*) (fma_forest *, fma_node *), bool);
++  void analyze ();
++  void rename_fma_trees ();
++
++  /* Mapping between FMUL or FMADD/FMSUB instructions and the associated
++     fma_node object.  Used when analyzing an instruction that is a root of
++     a chain to find if such an object was created because this instruction
++     is also a use in another chain.  */
++  hash_map<rtx_insn *, fma_node *> *m_insn_fma_head_map;
++
++  /* A list of all the forests in a given function.  */
++  std::list<fma_forest *> m_fma_forests;
++
++  /* Balance of FMUL and FMADD/FMSUB instructions between the two FPU
++     pipelines:
++     < 0: more instruction dispatched to the first pipeline
++     == 0: perfect balance
++     > 0: more instruction dispatched to the second pipeline.  */
++  int m_fpu_balance;
++
++  /* Identifier for the next forest created.  */
++  int m_next_forest_id;
++};
++
++/* Rename the register HEAD->regno in all the insns in the chain HEAD to any
++   register not in the set UNAVAILABLE.  Adapted from rename_chains in
++   regrename.c.  */
++
++static bool
++rename_single_chain (du_head_p head, HARD_REG_SET *unavailable)
++{
++  int best_new_reg;
++  int n_uses = 0;
++  struct du_chain *tmp;
++  int reg = head->regno;
++  enum reg_class super_class = NO_REGS;
++
++  if (head->cannot_rename)
++    return false;
++
++  if (fixed_regs[reg] || global_regs[reg]
++      || (frame_pointer_needed && reg == HARD_FRAME_POINTER_REGNUM))
++    return false;
++
++  /* Iterate over elements in the chain in order to:
++     1. Count number of uses, and narrow the set of registers we can
++	use for renaming.
++     2. Compute the superunion of register classes in this chain.  */
++  for (tmp = head->first; tmp; tmp = tmp->next_use)
++    {
++      if (DEBUG_INSN_P (tmp->insn))
++	continue;
++      n_uses++;
++      IOR_COMPL_HARD_REG_SET (*unavailable, reg_class_contents[tmp->cl]);
++      super_class = reg_class_superunion[(int) super_class][(int) tmp->cl];
++    }
++
++  if (n_uses < 1)
++    return false;
++
++  best_new_reg = find_rename_reg (head, super_class, unavailable, reg,
++				  false);
++
++  if (dump_file)
++    {
++      fprintf (dump_file, "Register %s in insn %d", reg_names[reg],
++	       INSN_UID (head->first->insn));
++      if (head->need_caller_save_reg)
++	fprintf (dump_file, " crosses a call");
++    }
++
++  if (best_new_reg == reg)
++    {
++      if (dump_file)
++	fprintf (dump_file, "; no available better choice\n");
++      return false;
++    }
++
++  if (regrename_do_replace (head, best_new_reg))
++    {
++      if (dump_file)
++	fprintf (dump_file, ", renamed as %s\n", reg_names[best_new_reg]);
++      df_set_regs_ever_live (best_new_reg, true);
++    }
++  else
++    {
++      if (dump_file)
++	fprintf (dump_file, ", renaming as %s failed\n",
++		 reg_names[best_new_reg]);
++      return false;
++    }
++  return true;
++}
++
++/* Return whether T is the attribute of a FMADD/FMSUB-like instruction.  */
++
++static bool
++is_fmac_op (enum attr_type t)
++{
++  return (t == TYPE_FMACS) || (t == TYPE_FMACD) || (t == TYPE_NEON_FP_MLA_S);
++}
++
++/* Return whether T is the attribute of a FMUL instruction.  */
++
++static bool
++is_fmul_op (enum attr_type t)
++{
++  return (t == TYPE_FMULS) || (t == TYPE_FMULD) || (t == TYPE_NEON_FP_MUL_S);
++}
++
++/* Return whether INSN is an FMUL (if FMUL_OK is true) or FMADD/FMSUB
++   instruction.  */
++
++static bool
++is_fmul_fmac_insn (rtx_insn *insn, bool fmul_ok)
++{
++  enum attr_type t;
++
++  if (!NONDEBUG_INSN_P (insn))
++    return false;
++
++  if (recog_memoized (insn) < 0)
++    return false;
++
++  /* Only consider chain(s) this instruction is a root of if this is an FMUL or
++     FMADD/FMSUB instruction.  This allows to avoid browsing chains of all
++     instructions for FMUL or FMADD/FMSUB in them.  */
++  t = get_attr_type (insn);
++  return is_fmac_op (t) || (fmul_ok && is_fmul_op (t));
++}
++
++
++/*
++ * Class fma_forest method definitions.
++ */
++
++fma_forest::fma_forest (func_fma_steering *fma_steer, fma_root_node *fma_root,
++			int id)
++{
++      memset (this, 0, sizeof (*this));
++      this->m_globals = fma_steer;
++      this->m_roots = new std::list<fma_root_node *>;
++      this->m_roots->push_back (fma_root);
++      this->m_id = id;
++}
++
++fma_forest::~fma_forest ()
++{
++  delete this->m_roots;
++}
++
++int
++fma_forest::get_id ()
++{
++  return this->m_id;
++}
++
++std::list<fma_root_node *> *
++fma_forest::get_roots ()
++{
++  return this->m_roots;
++}
++
++func_fma_steering *
++fma_forest::get_globals ()
++{
++  return this->m_globals;
++}
++
++int
++fma_forest::get_target_parity ()
++{
++  return this->m_target_parity;
++}
++
++/* Act on the creation of NODE by updating statistics in FOREST and adding an
++   entry for it in the func_fma_steering hashmap.  */
++
++void fma_forest::fma_node_created (fma_node *node)
++{
++  bool created = !this->m_globals->put_node (node);
++
++  gcc_assert (created);
++  this->m_nb_nodes++;
++}
++
++/* Merge REF_FOREST and OTHER_FOREST together, making REF_FOREST the canonical
++   fma_forest object to represent both.  */
++
++void
++fma_forest::merge_forest (fma_forest *other_forest)
++{
++  std::list<fma_root_node *> *other_roots;
++  std::list<fma_root_node *>::iterator other_root_iter;
++
++  if (this == other_forest)
++    return;
++
++  other_roots = other_forest->m_roots;
++
++  /* Update root nodes' pointer to forest.  */
++  for (other_root_iter = other_roots->begin ();
++       other_root_iter != other_roots->end (); other_root_iter++)
++    (*other_root_iter)->set_forest (this);
++
++  /* Remove other_forest from the list of forests and move its tree roots in
++     the list of tree roots of ref_forest.  */
++  this->m_globals->remove_forest (other_forest);
++  this->m_roots->splice (this->m_roots->begin (), *other_roots);
++  delete other_forest;
++
++  this->m_nb_nodes += other_forest->m_nb_nodes;
++}
++
++/* Dump information about the forest FOREST.  */
++
++void
++fma_forest::dump_info ()
++{
++  gcc_assert (dump_file);
++
++  fprintf (dump_file, "Forest #%d has %d nodes\n", this->m_id,
++	   this->m_nb_nodes);
++}
++
++/* Wrapper around fma_forest::dump_info for use as parameter of function
++   pointer type in func_fma_steering::dfs.  */
++
++static void
++dump_forest_info (fma_forest *forest)
++{
++  forest->dump_info ();
++}
++
++/* Dispatch forest to the least utilized pipeline.  */
++
++void
++fma_forest::dispatch ()
++{
++  this->m_target_parity = this->m_roots->front ()->get_parity ();
++  int fpu_balance = this->m_globals->get_fpu_balance ();
++  if (fpu_balance != 0)
++    this->m_target_parity = (fpu_balance < 0);
++
++  if (dump_file)
++    fprintf (dump_file, "Target parity for forest #%d: %s\n", this->m_id,
++	     this->m_target_parity ? "odd" : "even");
++}
++
++/* Wrapper around fma_forest::dispatch for use as parameter of function pointer
++   type in func_fma_steering::dfs.  */
++
++static void
++dispatch_forest (fma_forest *forest)
++{
++  forest->dispatch ();
++}
++
++fma_node::fma_node (fma_node *parent, du_chain *chain)
++{
++  memset (this, 0, sizeof (*this));
++  this->m_parent = parent;
++  this->m_children = new std::list<fma_node *>;
++  this->m_insn = chain->insn;
++  /* root_p () cannot be used to check for root before root is set.  */
++  if (this->m_parent == this)
++    this->m_root = static_cast<fma_root_node *> (parent);
++  else
++    {
++      this->m_root = parent->m_root;
++      this->get_forest ()->fma_node_created (this);
++    }
++}
++
++fma_node::~fma_node ()
++{
++  delete this->m_children;
++}
++
++std::list<fma_node *> *
++fma_node::get_children ()
++{
++  return this->m_children;
++}
++
++rtx_insn *
++fma_node::get_insn ()
++{
++  return this->m_insn;
++}
++
++void
++fma_node::set_head (du_head *head)
++{
++  gcc_assert (!this->m_head);
++  this->m_head = head;
++}
++
++/* Add a child to this node in the list of children.  */
++
++void
++fma_node::add_child (fma_node *child)
++{
++  this->m_children->push_back (child);
++}
++
++/* Return the parity of the destination register of the instruction represented
++   by this node.  */
++
++int
++fma_node::get_parity ()
++{
++  return this->m_head->regno % 2;
++}
++
++/* Get the actual forest associated with a non root node as the one the node
++   points to might have been merged into another one.  In that case the pointer
++   in the root nodes are updated so we return the forest pointer of a root node
++   pointed to by the initial forest.  Despite being a oneliner, this method is
++   defined here as it references a method from fma_root_node.  */
++
++fma_forest *
++fma_node::get_forest ()
++{
++  return this->m_root->get_forest ();
++}
++
++/* Return whether a node is a root node.  */
++
++bool
++fma_node::root_p ()
++{
++  return this->m_root == this;
++}
++
++/* Dump information about the children of node FMA_NODE in forest FOREST.  */
++
++void
++fma_node::dump_info (ATTRIBUTE_UNUSED fma_forest *forest)
++{
++  struct du_chain *chain;
++  std::list<fma_node *>::iterator fma_child;
++
++  gcc_assert (dump_file);
++
++  if (this->get_children ()->empty ())
++    return;
++
++  fprintf (dump_file, "Instruction(s)");
++  for (chain = this->m_head->first; chain; chain = chain->next_use)
++    {
++      if (!is_fmul_fmac_insn (chain->insn, true))
++	continue;
++
++      if (chain->loc != &SET_DEST (PATTERN (chain->insn)))
++	continue;
++
++      fprintf (dump_file, " %d", INSN_UID (chain->insn));
++    }
++
++  fprintf (dump_file, " is(are) accumulator dependency of instructions");
++  for (fma_child = this->get_children ()->begin ();
++       fma_child != this->get_children ()->end (); fma_child++)
++    fprintf (dump_file, " %d", INSN_UID ((*fma_child)->m_insn));
++  fprintf (dump_file, "\n");
++}
++
++/* Wrapper around fma_node::dump_info for use as parameter of function pointer
++   type in func_fma_steering::dfs.  */
++
++static void
++dump_tree_node_info (fma_forest *forest, fma_node *node)
++{
++  node->dump_info (forest);
++}
++
++/* Rename the destination register of a single FMUL or FMADD/FMSUB instruction
++   represented by FMA_NODE to a register that respect the target parity for
++   FOREST or with same parity of the instruction represented by its parent node
++   if it has one.  */
++
++void
++fma_node::rename (fma_forest *forest)
++{
++  int cur_parity, target_parity;
++
++  /* This is alternate root of a chain and thus has no children.  It will be
++     renamed when processing the canonical root for that chain.  */
++  if (!this->m_head)
++    return;
++
++  target_parity = forest->get_target_parity ();
++  if (this->m_parent)
++    target_parity = this->m_parent->get_parity ();
++  cur_parity = this->get_parity ();
++
++  /* Rename if parity differs.  */
++  if (cur_parity != target_parity)
++    {
++      rtx_insn *insn = this->m_insn;
++      HARD_REG_SET unavailable;
++      enum machine_mode mode;
++      int reg;
++
++      if (dump_file)
++	{
++	  unsigned cur_dest_reg = this->m_head->regno;
++
++	  fprintf (dump_file, "FMA or FMUL at insn %d but destination "
++		   "register (%s) has different parity from expected to "
++		   "maximize FPU pipeline utilization\n", INSN_UID (insn),
++		   reg_names[cur_dest_reg]);
++	}
++
++      /* Don't clobber traceback for noreturn functions.  */
++      CLEAR_HARD_REG_SET (unavailable);
++      if (frame_pointer_needed)
++	{
++	  add_to_hard_reg_set (&unavailable, Pmode, FRAME_POINTER_REGNUM);
++	  add_to_hard_reg_set (&unavailable, Pmode, HARD_FRAME_POINTER_REGNUM);
++	}
++
++      /* Exclude registers with wrong parity.  */
++      mode = GET_MODE (SET_DEST (PATTERN (insn)));
++      for (reg = cur_parity; reg < FIRST_PSEUDO_REGISTER; reg += 2)
++	add_to_hard_reg_set (&unavailable, mode, reg);
++
++      if (!rename_single_chain (this->m_head, &unavailable))
++	{
++	  if (dump_file)
++	    fprintf (dump_file, "Destination register of insn %d could not be "
++		     "renamed. Dependent FMA insns will use this parity from "
++		     "there on.\n", INSN_UID (insn));
++	}
++      else
++	cur_parity = target_parity;
++    }
++
++  forest->get_globals ()->update_balance (cur_parity);
++}
++
++/* Wrapper around fma_node::dump_info for use as parameter of function pointer
++   type in func_fma_steering::dfs.  */
++
++static void
++rename_fma_node (fma_forest *forest, fma_node *node)
++{
++  node->rename (forest);
++}
++
++fma_root_node::fma_root_node (func_fma_steering *globals, du_chain *chain,
++			      int id) : fma_node (this, chain)
++{
++  this->m_forest = new fma_forest (globals, this, id);
++  this->m_forest->fma_node_created (this);
++}
++
++fma_forest *
++fma_root_node::get_forest ()
++{
++  return this->m_forest;
++}
++
++void
++fma_root_node::set_forest (fma_forest *ref_forest)
++{
++  this->m_forest = ref_forest;
++}
++
++/* Dump information about the roots of forest FOREST.  */
++
++void
++fma_root_node::dump_info (fma_forest *forest)
++{
++  gcc_assert (dump_file);
++
++  if (this == forest->get_roots ()->front ())
++    fprintf (dump_file, "Instruction(s) at root of forest #%d:",
++	     forest->get_id ());
++  fprintf (dump_file, " %d", INSN_UID (this->m_insn));
++  if (this == forest->get_roots ()->back ())
++    fprintf (dump_file, "\n");
++}
++
++/* Wrapper around fma_root_node::dump_info for use as parameter of function
++   pointer type in func_fma_steering::dfs.  */
++
++static void
++dump_tree_root_info (fma_forest *forest, fma_root_node *node)
++{
++  node->dump_info (forest);
++}
++
++func_fma_steering::func_fma_steering () : m_fpu_balance (0)
++{
++  this->m_insn_fma_head_map = new hash_map<rtx_insn *, fma_node *>;
++  this->m_fma_forests.clear ();
++  this->m_next_forest_id = 0;
++}
++
++func_fma_steering::~func_fma_steering ()
++{
++  delete this->m_insn_fma_head_map;
++}
++
++int
++func_fma_steering::get_fpu_balance ()
++{
++  return this->m_fpu_balance;
++}
++
++void
++func_fma_steering::remove_forest (fma_forest *forest)
++{
++  this->m_fma_forests.remove (forest);
++}
++
++/* Memorize the mapping of this instruction to its fma_node object and return
++   whether such a mapping existed.  */
++
++bool
++func_fma_steering::put_node (fma_node *node)
++{
++  return this->m_insn_fma_head_map->put (node->get_insn (), node);
++}
++
++/* Update the current balance considering a node with the given PARITY.  */
++
++void
++func_fma_steering::update_balance (int parity)
++{
++  this->m_fpu_balance = parity ? this->m_fpu_balance + 1
++			       : this->m_fpu_balance - 1;
++}
++
++/* Return whether an fma_node object exists for instruction INSN and, if not,
++   allocate one in *RET.  */
++
++fma_node *
++func_fma_steering::get_fma_node (rtx_insn *insn)
++{
++  fma_node **fma_slot;
++
++  fma_slot = this->m_insn_fma_head_map->get (insn);
++  if (fma_slot)
++    return *fma_slot;
++  return NULL;
++}
++
++/* Allocate and initialize fma_node objects for the FMUL or FMADD/FMSUB
++   instruction in CHAIN->insn and its dependent FMADD/FMSUB instructions, all
++   part of FOREST.  For the children, the associated head is left untouched
++   (and thus null) as this function will be called again when considering the
++   chain where they are def.  For the parent, the chain is given in HEAD.  */
++
++void
++func_fma_steering::analyze_fma_fmul_insn (fma_forest *ref_forest,
++					  du_chain *chain, du_head_p head)
++{
++  fma_forest *forest;
++  fma_node *node = this->get_fma_node (chain->insn);
++
++  /* This is a root node.  */
++  if (!node)
++    {
++      fma_root_node *root_node;
++
++      root_node = new fma_root_node (this, chain, this->m_next_forest_id++);
++      forest = root_node->get_forest ();
++      node = root_node;
++
++      /* Until proved otherwise, assume this root is not part of an existing
++	 forest and thus add its forest to the list of forests.  */
++      this->m_fma_forests.push_back (forest);
++    }
++  else
++    forest = node->get_forest ();
++
++  node->set_head (head);
++
++  /* fma_node is part of a chain with several defs, one of them having already
++     been processed.  The root of that already processed def is the canonical
++     one and the root of fma_node is added to its forest.  No need to process
++     the children nodes as they were already processed when the other def was
++     processed.  */
++  if (ref_forest)
++    {
++      ref_forest->merge_forest (forest);
++      return;
++    }
++
++  for (chain = head->first; chain; chain = chain->next_use)
++    {
++      fma_node *child_fma;
++      rtx fma_rtx, *accum_rtx_p;
++
++      if (!is_fmul_fmac_insn (chain->insn, false))
++	continue;
++
++      /* Get FMA rtx.  */
++      fma_rtx = SET_SRC (PATTERN (chain->insn));
++      /* FMA is negated.  */
++      if (GET_CODE (fma_rtx) == NEG)
++	fma_rtx = XEXP (fma_rtx, 0);
++      /* Get accumulator rtx.  */
++      accum_rtx_p = &XEXP (fma_rtx, 2);
++      /* Accumulator is negated.  */
++      if (!REG_P (*accum_rtx_p))
++	accum_rtx_p = &XEXP (*accum_rtx_p, 0);
++
++      /* This du_chain structure is not for the accumulator register.  */
++      if (accum_rtx_p != chain->loc)
++	continue;
++
++      /* If object already created, this is a loop carried dependency.  We
++	 don't include this object in the children as we want trees for
++	 rename_fma_trees to not be an infinite loop.  */
++      if (this->get_fma_node (chain->insn))
++	continue;
++
++      child_fma = new fma_node (node, chain);
++
++      /* Memorize the mapping of this instruction to its fma_node object
++	 as it will be processed for the chain starting at its destination
++	 register later.  */
++
++      /* Link to siblings.  */
++      node->add_child (child_fma);
++    }
++}
++
++/* Perform a depth-first search of the forests of fma_node in
++   THIS->m_fma_forests, calling PROCESS_FOREST () on each fma_forest object in
++   THIS->m_fma_forests list, PROCESS_ROOT () on each tree root and
++   PROCESS_NODE () on each node.  If FREE is true, free all std::list in the
++   same dfs.  */
++
++void
++func_fma_steering::dfs (void (*process_forest) (fma_forest *),
++			void (*process_root) (fma_forest *, fma_root_node *),
++			void (*process_node) (fma_forest *, fma_node *),
++			bool free)
++{
++  vec<fma_node *> to_process;
++  std::list<fma_forest *>::iterator forest_iter;
++
++  to_process.create (0);
++
++  /* For each forest.  */
++  for (forest_iter = this->m_fma_forests.begin ();
++       forest_iter != this->m_fma_forests.end (); forest_iter++)
++    {
++      std::list<fma_root_node *>::iterator root_iter;
++
++      if (process_forest)
++	process_forest (*forest_iter);
++
++      /* For each tree root in this forest.  */
++      for (root_iter = (*forest_iter)->get_roots ()->begin ();
++	   root_iter != (*forest_iter)->get_roots ()->end (); root_iter++)
++	{
++	  if (process_root)
++	    process_root (*forest_iter, *root_iter);
++	  to_process.safe_push (*root_iter);
++	}
++
++      /* For each tree node in this forest.  */
++      while (!to_process.is_empty ())
++	{
++	  fma_node *node;
++	  std::list<fma_node *>::iterator child_iter;
++
++	  node = to_process.pop ();
++
++	  if (process_node)
++	    process_node (*forest_iter, node);
++
++	  /* Absence of children might indicate an alternate root of a *chain*.
++	     It's ok to skip it here as the chain will be renamed when
++	     processing the canonical root for that chain.  */
++	  if (node->get_children ()->empty ())
++	    continue;
++
++	  for (child_iter = node->get_children ()->begin ();
++	       child_iter != node->get_children ()->end (); child_iter++)
++	    to_process.safe_push (*child_iter);
++	  if (free)
++	    {
++	      if (node->root_p ())
++		delete static_cast<fma_root_node *> (node);
++	      else
++		delete node;
++	    }
++	}
++      if (free)
++	delete *forest_iter;
++    }
++
++  to_process.release ();
++}
++
++/* Build the dependency trees of FMUL and FMADD/FMSUB instructions.  */
++
++void
++func_fma_steering::analyze ()
++{
++  int i, n_blocks, *bb_dfs_preorder;
++  basic_block bb;
++  rtx_insn *insn;
++
++  bb_dfs_preorder = XNEWVEC (int, last_basic_block_for_fn (cfun));
++  n_blocks = pre_and_rev_post_order_compute (bb_dfs_preorder, NULL, false);
++
++  /* Browse the graph of basic blocks looking for FMUL or FMADD/FMSUB
++     instructions.  */
++  for (i = 0; i < n_blocks; i++)
++    {
++      bb = BASIC_BLOCK_FOR_FN (cfun, bb_dfs_preorder[i]);
++      FOR_BB_INSNS (bb, insn)
++	{
++	  operand_rr_info *dest_op_info;
++	  struct du_chain *chain;
++	  unsigned dest_regno;
++	  fma_forest *forest;
++	  du_head_p head;
++	  int i;
++
++	  if (!is_fmul_fmac_insn (insn, true))
++	    continue;
++
++	  /* Search the chain where this instruction is (one of) the root.  */
++	  dest_op_info = insn_rr[INSN_UID (insn)].op_info;
++	  dest_regno = REGNO (SET_DEST (PATTERN (insn)));
++	  for (i = 0; i < dest_op_info->n_chains; i++)
++	    {
++	      /* The register tracked by this chain does not match the
++		 destination register of insn.  */
++	      if (dest_op_info->heads[i]->regno != dest_regno)
++		continue;
++
++	      head = dest_op_info->heads[i];
++	      /* The chain was merged in another, find the new head.  */
++	      if (!head->first)
++		head = regrename_chain_from_id (head->id);
++
++	      /* Search the chain element for this instruction and, if another
++		 FMUL or FMADD/FMSUB instruction was already processed, note
++		 the forest of its tree.  */
++	      forest = NULL;
++	      for (chain = head->first; chain; chain = chain->next_use)
++		{
++		  fma_node **fma_slot;
++
++		  if (!is_fmul_fmac_insn (chain->insn, true))
++		    continue;
++
++		  /* This is a use, continue.  */
++		  if (chain->loc != &SET_DEST (PATTERN (chain->insn)))
++		    continue;
++
++		  if (chain->insn == insn)
++		    break;
++
++		  fma_slot = this->m_insn_fma_head_map->get (chain->insn);
++		  if (fma_slot && (*fma_slot)->get_children ())
++		    forest = (*fma_slot)->get_forest ();
++		}
++	      if (chain)
++		break;
++	    }
++
++	  /* We didn't find a chain with a def for this instruction.  */
++	  gcc_assert (i < dest_op_info->n_chains);
++
++	  this->analyze_fma_fmul_insn (forest, chain, head);
++	}
++    }
++  free (bb_dfs_preorder);
++
++  if (dump_file)
++    this->dfs (dump_forest_info, dump_tree_root_info, dump_tree_node_info,
++	       false);
++}
++
++/* Perform the renaming of all chains with FMUL or FMADD/FMSUB involved with
++   the objective of keeping FPU pipeline balanced in term of instructions and
++   having FMADD/FMSUB with dependencies on previous FMUL or FMADD/FMSUB be
++   scheduled on the same pipeline.  */
++
++void
++func_fma_steering::rename_fma_trees ()
++{
++  this->dfs (dispatch_forest, NULL, rename_fma_node, true);
++
++  if (dump_file && !this->m_fma_forests.empty ())
++    {
++      fprintf (dump_file, "Function %s has ", current_function_name ());
++      if (this->m_fpu_balance == 0)
++	fprintf (dump_file, "perfect balance of FMUL/FMA chains between the "
++		 "two FPU pipelines\n");
++      else if (this->m_fpu_balance > 0)
++	fprintf (dump_file, "%d more FMUL/FMA chains scheduled on the second "
++		 "FPU pipeline\n", this->m_fpu_balance);
++      else /* this->m_fpu_balance < 0 */
++	fprintf (dump_file, "%d more FMUL/FMA chains scheduled on the first "
++		 "FPU pipeline\n", - this->m_fpu_balance);
++    }
++}
++
++/* Execute FMA steering pass.  */
++
++void
++func_fma_steering::execute_fma_steering ()
++{
++  df_set_flags (DF_LR_RUN_DCE);
++  df_note_add_problem ();
++  df_analyze ();
++  df_set_flags (DF_DEFER_INSN_RESCAN);
++
++  regrename_init (true);
++  regrename_analyze (NULL);
++  this->analyze ();
++  this->rename_fma_trees ();
++  regrename_finish ();
++}
++
++const pass_data pass_data_fma_steering =
++{
++  RTL_PASS, /* type */
++  "fma_steering", /* name */
++  OPTGROUP_NONE, /* optinfo_flags */
++  TV_NONE, /* tv_id */
++  0, /* properties_required */
++  0, /* properties_provided */
++  0, /* properties_destroyed */
++  0, /* todo_flags_start */
++  TODO_df_finish, /* todo_flags_finish */
++};
++
++class pass_fma_steering : public rtl_opt_pass
++{
++public:
++  pass_fma_steering (gcc::context *ctxt)
++    : rtl_opt_pass (pass_data_fma_steering, ctxt)
++  {}
++
++  /* opt_pass methods: */
++  virtual bool gate (function *)
++    {
++      return (aarch64_tune_params.extra_tuning_flags
++	      & AARCH64_EXTRA_TUNE_RENAME_FMA_REGS)
++	      && optimize >= 2;
++    }
++
++  virtual unsigned int execute (function *)
++    {
++      func_fma_steering *fma_steering = new func_fma_steering;
++      fma_steering->execute_fma_steering ();
++      delete fma_steering;
++      return 0;
++    }
++
++}; // class pass_fma_steering
++
++/* Create a new fma steering pass instance.  */
++
++static rtl_opt_pass *
++make_pass_fma_steering (gcc::context *ctxt)
++{
++  return new pass_fma_steering (ctxt);
++}
++
++/* Register the FMA steering pass to the pass manager.  */
++
++void
++aarch64_register_fma_steering ()
++{
++  opt_pass *pass_fma_steering = make_pass_fma_steering (g);
++
++  static struct register_pass_info fma_steering_info
++    = { pass_fma_steering, "rnreg", 1, PASS_POS_INSERT_AFTER };
++
++  register_pass (&fma_steering_info);
++}
+--- /dev/null
++++ b/src/gcc/config/aarch64/cortex-a57-fma-steering.h
+@@ -0,0 +1,22 @@
++/* This file contains declarations for the FMA steering optimization
++   pass for Cortex-A57.
++   Copyright (C) 2015 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
++   <http://www.gnu.org/licenses/>.  */
++
++void aarch64_register_fma_steering (void);
+--- /dev/null
++++ b/src/gcc/config/aarch64/driver-aarch64.c
+@@ -0,0 +1,307 @@
++/* Native CPU detection for aarch64.
++   Copyright (C) 2015 Free Software Foundation, Inc.
++
++   This file is part of GCC.
++
++   GCC is free software; you can redistribute it and/or modify
++   it under the terms of the GNU General Public License as published by
++   the Free Software Foundation; either version 3, or (at your option)
++   any later version.
++
++   GCC is distributed in the hope that it will be useful,
++   but WITHOUT ANY WARRANTY; without even the implied warranty of
++   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++   GNU General Public License for more details.
++
++   You should have received a copy of the GNU General Public License
++   along with GCC; see the file COPYING3.  If not see
++   <http://www.gnu.org/licenses/>.  */
++
++#include "config.h"
++#include "system.h"
++
++struct arch_extension
++{
++  const char *ext;
++  const char *feat_string;
++};
++
++#define AARCH64_OPT_EXTENSION(EXT_NAME, FLAGS_ON, FLAGS_OFF, FEATURE_STRING) \
++  { EXT_NAME, FEATURE_STRING },
++static struct arch_extension ext_to_feat_string[] =
++{
++#include "aarch64-option-extensions.def"
++};
++#undef AARCH64_OPT_EXTENSION
++
++
++struct aarch64_core_data
++{
++  const char* name;
++  const char* arch;
++  const char* implementer_id;
++  const char* part_no;
++};
++
++#define AARCH64_CORE(CORE_NAME, CORE_IDENT, SCHED, ARCH, FLAGS, COSTS, IMP, PART) \
++  { CORE_NAME, #ARCH, IMP, PART },
++
++static struct aarch64_core_data cpu_data [] =
++{
++#include "aarch64-cores.def"
++  { NULL, NULL, NULL, NULL }
++};
++
++#undef AARCH64_CORE
++
++struct aarch64_arch_driver_info
++{
++  const char* id;
++  const char* name;
++};
++
++#define AARCH64_ARCH(NAME, CORE, ARCH_IDENT, ARCH_REV, FLAGS) \
++  { #ARCH_IDENT, NAME  },
++
++static struct aarch64_arch_driver_info aarch64_arches [] =
++{
++#include "aarch64-arches.def"
++  {NULL, NULL}
++};
++
++#undef AARCH64_ARCH
++
++/* Return the full architecture name string corresponding to the
++   identifier ID.  */
++
++static const char*
++get_arch_name_from_id (const char* id)
++{
++  unsigned int i = 0;
++
++  for (i = 0; aarch64_arches[i].id != NULL; i++)
++    {
++      if (strcmp (id, aarch64_arches[i].id) == 0)
++        return aarch64_arches[i].name;
++    }
++
++  return NULL;
++}
++
++
++/* Check wether the string CORE contains the same CPU part numbers
++   as BL_STRING.  For example CORE="{0xd03, 0xd07}" and BL_STRING="0xd07.0xd03"
++   should return true.  */
++
++static bool
++valid_bL_string_p (const char** core, const char* bL_string)
++{
++  return strstr (bL_string, core[0]) != NULL
++         && strstr (bL_string, core[1]) != NULL;
++}
++
++/*  Return true iff ARR contains STR in one of its two elements.  */
++
++static bool
++contains_string_p (const char** arr, const char* str)
++{
++  bool res = false;
++
++  if (arr[0] != NULL)
++    {
++      res = strstr (arr[0], str) != NULL;
++      if (res)
++        return res;
++
++      if (arr[1] != NULL)
++        return strstr (arr[1], str) != NULL;
++    }
++
++  return false;
++}
++
++/* This will be called by the spec parser in gcc.c when it sees
++   a %:local_cpu_detect(args) construct.  Currently it will be called
++   with either "arch", "cpu" or "tune" as argument depending on if
++   -march=native, -mcpu=native or -mtune=native is to be substituted.
++
++   It returns a string containing new command line parameters to be
++   put at the place of the above two options, depending on what CPU
++   this is executed.  E.g. "-march=armv8-a" on a Cortex-A57 for
++   -march=native.  If the routine can't detect a known processor,
++   the -march or -mtune option is discarded.
++
++   For -mtune and -mcpu arguments it attempts to detect the CPU or
++   a big.LITTLE system.
++   ARGC and ARGV are set depending on the actual arguments given
++   in the spec.  */
++
++const char *
++host_detect_local_cpu (int argc, const char **argv)
++{
++  const char *arch_id = NULL;
++  const char *res = NULL;
++  static const int num_exts = ARRAY_SIZE (ext_to_feat_string);
++  char buf[128];
++  FILE *f = NULL;
++  bool arch = false;
++  bool tune = false;
++  bool cpu = false;
++  unsigned int i = 0;
++  unsigned int core_idx = 0;
++  const char* imps[2] = { NULL, NULL };
++  const char* cores[2] = { NULL, NULL };
++  unsigned int n_cores = 0;
++  unsigned int n_imps = 0;
++  bool processed_exts = false;
++  const char *ext_string = "";
++
++  gcc_assert (argc);
++
++  if (!argv[0])
++    goto not_found;
++
++  /* Are we processing -march, mtune or mcpu?  */
++  arch = strcmp (argv[0], "arch") == 0;
++  if (!arch)
++    tune = strcmp (argv[0], "tune") == 0;
++
++  if (!arch && !tune)
++    cpu = strcmp (argv[0], "cpu") == 0;
++
++  if (!arch && !tune && !cpu)
++    goto not_found;
++
++  f = fopen ("/proc/cpuinfo", "r");
++
++  if (f == NULL)
++    goto not_found;
++
++  /* Look through /proc/cpuinfo to determine the implementer
++     and then the part number that identifies a particular core.  */
++  while (fgets (buf, sizeof (buf), f) != NULL)
++    {
++      if (strstr (buf, "implementer") != NULL)
++	{
++	  for (i = 0; cpu_data[i].name != NULL; i++)
++	    if (strstr (buf, cpu_data[i].implementer_id) != NULL
++                && !contains_string_p (imps, cpu_data[i].implementer_id))
++	      {
++                if (n_imps == 2)
++                  goto not_found;
++
++                imps[n_imps++] = cpu_data[i].implementer_id;
++
++                break;
++	      }
++          continue;
++	}
++
++      if (strstr (buf, "part") != NULL)
++	{
++	  for (i = 0; cpu_data[i].name != NULL; i++)
++	    if (strstr (buf, cpu_data[i].part_no) != NULL
++                && !contains_string_p (cores, cpu_data[i].part_no))
++	      {
++                if (n_cores == 2)
++                  goto not_found;
++
++                cores[n_cores++] = cpu_data[i].part_no;
++	        core_idx = i;
++	        arch_id = cpu_data[i].arch;
++	        break;
++	      }
++          continue;
++        }
++      if (!tune && !processed_exts && strstr (buf, "Features") != NULL)
++        {
++          for (i = 0; i < num_exts; i++)
++            {
++              bool enabled = true;
++              char *p = NULL;
++              char *feat_string = concat (ext_to_feat_string[i].feat_string, NULL);
++
++              p = strtok (feat_string, " ");
++
++              while (p != NULL)
++                {
++                  if (strstr (buf, p) == NULL)
++                    {
++                      enabled = false;
++                      break;
++                    }
++                  p = strtok (NULL, " ");
++                }
++              ext_string = concat (ext_string, "+", enabled ? "" : "no",
++                                   ext_to_feat_string[i].ext, NULL);
++            }
++          processed_exts = true;
++        }
++    }
++
++  fclose (f);
++  f = NULL;
++
++  /* Weird cpuinfo format that we don't know how to handle.  */
++  if (n_cores == 0 || n_cores > 2 || n_imps != 1)
++    goto not_found;
++
++  if (arch && !arch_id)
++    goto not_found;
++
++  if (arch)
++    {
++      const char* arch_name = get_arch_name_from_id (arch_id);
++
++      /* We got some arch indentifier that's not in aarch64-arches.def?  */
++      if (!arch_name)
++        goto not_found;
++
++      res = concat ("-march=", arch_name, NULL);
++    }
++  /* We have big.LITTLE.  */
++  else if (n_cores == 2)
++    {
++      for (i = 0; cpu_data[i].name != NULL; i++)
++        {
++          if (strchr (cpu_data[i].part_no, '.') != NULL
++              && strncmp (cpu_data[i].implementer_id, imps[0], strlen (imps[0]) - 1) == 0
++              && valid_bL_string_p (cores, cpu_data[i].part_no))
++            {
++              res = concat ("-m", cpu ? "cpu" : "tune", "=", cpu_data[i].name, NULL);
++              break;
++            }
++        }
++      if (!res)
++        goto not_found;
++    }
++  /* The simple, non-big.LITTLE case.  */
++  else
++    {
++      if (strncmp (cpu_data[core_idx].implementer_id, imps[0],
++                   strlen (imps[0]) - 1) != 0)
++        goto not_found;
++
++      res = concat ("-m", cpu ? "cpu" : "tune", "=",
++                      cpu_data[core_idx].name, NULL);
++    }
++
++  if (tune)
++    return res;
++
++  res = concat (res, ext_string, NULL);
++
++  return res;
++
++not_found:
++  {
++   /* If detection fails we ignore the option.
++      Clean up and return empty string.  */
++
++    if (f)
++      fclose (f);
++
++    return "";
++  }
++}
++
+--- a/src/gcc/config/aarch64/iterators.md
++++ b/src/gcc/config/aarch64/iterators.md
+@@ -38,6 +38,12 @@
+ ;; Iterator for General Purpose Floating-point registers (32- and 64-bit modes)
+ (define_mode_iterator GPF [SF DF])
+ 
++;; Iterator for all scalar floating point modes (HF, SF, DF and TF)
++(define_mode_iterator GPF_TF_F16 [HF SF DF TF])
++
++;; Double vector modes.
++(define_mode_iterator VDF [V2SF V4HF])
++
+ ;; Integer vector modes.
+ (define_mode_iterator VDQ_I [V8QI V16QI V4HI V8HI V2SI V4SI V2DI])
+ 
+@@ -49,7 +55,7 @@
+ (define_mode_iterator VSDQ_I_DI [V8QI V16QI V4HI V8HI V2SI V4SI V2DI DI])
+ 
+ ;; Double vector modes.
+-(define_mode_iterator VD [V8QI V4HI V2SI V2SF])
++(define_mode_iterator VD [V8QI V4HI V4HF V2SI V2SF])
+ 
+ ;; vector, 64-bit container, all integer modes
+ (define_mode_iterator VD_BHSI [V8QI V4HI V2SI])
+@@ -58,10 +64,10 @@
+ (define_mode_iterator VDQ_BHSI [V8QI V16QI V4HI V8HI V2SI V4SI])
+ 
+ ;; Quad vector modes.
+-(define_mode_iterator VQ [V16QI V8HI V4SI V2DI V4SF V2DF])
++(define_mode_iterator VQ [V16QI V8HI V4SI V2DI V8HF V4SF V2DF])
+ 
+ ;; VQ without 2 element modes.
+-(define_mode_iterator VQ_NO2E [V16QI V8HI V4SI V4SF])
++(define_mode_iterator VQ_NO2E [V16QI V8HI V4SI V8HF V4SF])
+ 
+ ;; Quad vector with only 2 element modes.
+ (define_mode_iterator VQ_2E [V2DI V2DF])
+@@ -76,7 +82,10 @@
+ ;; pointer-sized quantities.  Exactly one of the two alternatives will match.
+ (define_mode_iterator PTR [(SI "ptr_mode == SImode") (DI "ptr_mode == DImode")])
+ 
+-;; Vector Float modes.
++;; Vector Float modes suitable for moving, loading and storing.
++(define_mode_iterator VDQF_F16 [V4HF V8HF V2SF V4SF V2DF])
++
++;; Vector Float modes, barring HF modes.
+ (define_mode_iterator VDQF [V2SF V4SF V2DF])
+ 
+ ;; Vector Float modes, and DF.
+@@ -85,6 +94,9 @@
+ ;; Vector single Float modes.
+ (define_mode_iterator VDQSF [V2SF V4SF])
+ 
++;; Quad vector Float modes with half/single elements.
++(define_mode_iterator VQ_HSF [V8HF V4SF])
++
+ ;; Modes suitable to use as the return type of a vcond expression.
+ (define_mode_iterator VDQF_COND [V2SF V2SI V4SF V4SI V2DF V2DI])
+ 
+@@ -94,15 +106,23 @@
+ ;; Vector Float modes with 2 elements.
+ (define_mode_iterator V2F [V2SF V2DF])
+ 
+-;; All modes.
++;; All vector modes on which we support any arithmetic operations.
+ (define_mode_iterator VALL [V8QI V16QI V4HI V8HI V2SI V4SI V2DI V2SF V4SF V2DF])
+ 
+-;; All vector modes and DI.
++;; All vector modes suitable for moving, loading, and storing.
++(define_mode_iterator VALL_F16 [V8QI V16QI V4HI V8HI V2SI V4SI V2DI
++				V4HF V8HF V2SF V4SF V2DF])
++
++;; All vector modes barring HF modes, plus DI.
+ (define_mode_iterator VALLDI [V8QI V16QI V4HI V8HI V2SI V4SI V2DI V2SF V4SF V2DF DI])
+ 
+-;; All vector modes and DI and DF.
++;; All vector modes and DI.
++(define_mode_iterator VALLDI_F16 [V8QI V16QI V4HI V8HI V2SI V4SI V2DI
++				  V4HF V8HF V2SF V4SF V2DF DI])
++
++;; All vector modes, plus DI and DF.
+ (define_mode_iterator VALLDIF [V8QI V16QI V4HI V8HI V2SI V4SI
+-			       V2DI V2SF V4SF V2DF DI DF])
++			       V2DI V4HF V8HF V2SF V4SF V2DF DI DF])
+ 
+ ;; Vector modes for Integer reduction across lanes.
+ (define_mode_iterator VDQV [V8QI V16QI V4HI V8HI V4SI V2DI])
+@@ -123,7 +143,7 @@
+ (define_mode_iterator VQW [V16QI V8HI V4SI])
+ 
+ ;; Double vector modes for combines.
+-(define_mode_iterator VDC [V8QI V4HI V2SI V2SF DI DF])
++(define_mode_iterator VDC [V8QI V4HI V4HF V2SI V2SF DI DF])
+ 
+ ;; Vector modes except double int.
+ (define_mode_iterator VDQIF [V8QI V16QI V4HI V8HI V2SI V4SI V2SF V4SF V2DF])
+@@ -250,6 +270,7 @@
+     UNSPEC_USHLL	; Used in aarch64-simd.md.
+     UNSPEC_ADDP		; Used in aarch64-simd.md.
+     UNSPEC_TBL		; Used in vector permute patterns.
++    UNSPEC_TBX		; Used in vector permute patterns.
+     UNSPEC_CONCAT	; Used in vector permute patterns.
+     UNSPEC_ZIP1		; Used in vector permute patterns.
+     UNSPEC_ZIP2		; Used in vector permute patterns.
+@@ -350,7 +371,8 @@
+                          (V2SI "2s") (V4SI  "4s")
+                          (DI   "1d") (DF    "1d")
+                          (V2DI "2d") (V2SF "2s")
+-			 (V4SF "4s") (V2DF "2d")])
++			 (V4SF "4s") (V2DF "2d")
++			 (V4HF "4h") (V8HF "8h")])
+ 
+ (define_mode_attr Vrevsuff [(V4HI "16") (V8HI "16") (V2SI "32")
+                             (V4SI "32") (V2DI "64")])
+@@ -358,7 +380,8 @@
+ (define_mode_attr Vmtype [(V8QI ".8b") (V16QI ".16b")
+ 			 (V4HI ".4h") (V8HI  ".8h")
+ 			 (V2SI ".2s") (V4SI  ".4s")
+-			 (V2DI ".2d") (V2SF ".2s")
++			 (V2DI ".2d") (V4HF ".4h")
++			 (V8HF ".8h") (V2SF ".2s")
+ 			 (V4SF ".4s") (V2DF ".2d")
+ 			 (DI   "")    (SI   "")
+ 			 (HI   "")    (QI   "")
+@@ -375,7 +398,8 @@
+ (define_mode_attr Vetype [(V8QI "b") (V16QI "b")
+ 			  (V4HI "h") (V8HI  "h")
+                           (V2SI "s") (V4SI  "s")
+-			  (V2DI "d") (V2SF  "s")
++			  (V2DI "d") (V4HF "h")
++			  (V8HF "h") (V2SF  "s")
+ 			  (V4SF "s") (V2DF  "d")
+ 			  (SF   "s") (DF  "d")
+ 			  (QI "b")   (HI "h")
+@@ -385,7 +409,8 @@
+ (define_mode_attr Vbtype [(V8QI "8b")  (V16QI "16b")
+ 			  (V4HI "8b") (V8HI  "16b")
+ 			  (V2SI "8b") (V4SI  "16b")
+-			  (V2DI "16b") (V2SF  "8b")
++			  (V2DI "16b") (V4HF "8b")
++			  (V8HF "16b") (V2SF  "8b")
+ 			  (V4SF "16b") (V2DF  "16b")
+ 			  (DI   "8b")  (DF    "8b")
+ 			  (SI   "8b")])
+@@ -395,6 +420,7 @@
+ 			(V4HI "HI") (V8HI "HI")
+                         (V2SI "SI") (V4SI "SI")
+                         (DI "DI")   (V2DI "DI")
++                        (V4HF "HF") (V8HF "HF")
+                         (V2SF "SF") (V4SF "SF")
+                         (V2DF "DF") (DF "DF")
+ 			(SI   "SI") (HI   "HI")
+@@ -413,6 +439,7 @@
+ 			 (V4HI "V8HI") (V8HI "V8HI")
+ 			 (V2SI "V4SI") (V4SI "V4SI")
+ 			 (DI   "V2DI") (V2DI "V2DI")
++			 (V4HF "V8HF") (V8HF "V8HF")
+ 			 (V2SF "V2SF") (V4SF "V4SF")
+ 			 (V2DF "V2DF") (SI   "V4SI")
+ 			 (HI   "V8HI") (QI   "V16QI")])
+@@ -422,16 +449,22 @@
+ 			 (V4HI "V2HI")  (V8HI  "V4HI")
+ 			 (V2SI "SI")    (V4SI  "V2SI")
+ 			 (V2DI "DI")    (V2SF  "SF")
+-			 (V4SF "V2SF")  (V2DF  "DF")])
++			 (V4SF "V2SF")  (V4HF "V2HF")
++			 (V8HF "V4HF")  (V2DF  "DF")])
+ 
+ ;; Double modes of vector modes.
+ (define_mode_attr VDBL [(V8QI "V16QI") (V4HI "V8HI")
++			(V4HF "V8HF")
+ 			(V2SI "V4SI")  (V2SF "V4SF")
+ 			(SI   "V2SI")  (DI   "V2DI")
+ 			(DF   "V2DF")])
+ 
++;; Register suffix for double-length mode.
++(define_mode_attr Vdtype [(V4HF "8h") (V2SF "4s")])
++
+ ;; Double modes of vector modes (lower case).
+ (define_mode_attr Vdbl [(V8QI "v16qi") (V4HI "v8hi")
++			(V4HF "v8hf")
+ 			(V2SI "v4si")  (V2SF "v4sf")
+ 			(SI   "v2si")  (DI   "v2di")
+ 			(DF   "v2df")])
+@@ -462,24 +495,31 @@
+ (define_mode_attr VWIDE [(V8QI "V8HI") (V4HI "V4SI")
+ 			 (V2SI "V2DI") (V16QI "V8HI") 
+ 			 (V8HI "V4SI") (V4SI "V2DI")
+-			 (HI "SI")     (SI "DI")]
+-
++			 (HI "SI")     (SI "DI")
++			 (V8HF "V4SF") (V4SF "V2DF")
++			 (V4HF "V4SF") (V2SF "V2DF")]
+ )
+ 
+-;; Widened mode register suffixes for VD_BHSI/VQW.
++;; Widened modes of vector modes, lowercase
++(define_mode_attr Vwide [(V2SF "v2df") (V4HF "v4sf")])
++
++;; Widened mode register suffixes for VD_BHSI/VQW/VQ_HSF.
+ (define_mode_attr Vwtype [(V8QI "8h") (V4HI "4s")
+ 			  (V2SI "2d") (V16QI "8h") 
+-			  (V8HI "4s") (V4SI "2d")])
++			  (V8HI "4s") (V4SI "2d")
++			  (V8HF "4s") (V4SF "2d")])
+ 
+ ;; Widened mode register suffixes for VDW/VQW.
+ (define_mode_attr Vmwtype [(V8QI ".8h") (V4HI ".4s")
+ 			   (V2SI ".2d") (V16QI ".8h") 
+ 			   (V8HI ".4s") (V4SI ".2d")
++			   (V4HF ".4s") (V2SF ".2d")
+ 			   (SI   "")    (HI   "")])
+ 
+-;; Lower part register suffixes for VQW.
++;; Lower part register suffixes for VQW/VQ_HSF.
+ (define_mode_attr Vhalftype [(V16QI "8b") (V8HI "4h")
+-			     (V4SI "2s")])
++			     (V4SI "2s") (V8HF "4h")
++			     (V4SF "2s")])
+ 
+ ;; Define corresponding core/FP element mode for each vector mode.
+ (define_mode_attr vw   [(V8QI "w") (V16QI "w")
+@@ -506,6 +546,7 @@
+ 				(V4HI "V4HI") (V8HI  "V8HI")
+ 				(V2SI "V2SI") (V4SI  "V4SI")
+ 				(DI   "DI")   (V2DI  "V2DI")
++				(V4HF "V4HI") (V8HF  "V8HI")
+ 				(V2SF "V2SI") (V4SF  "V4SI")
+ 				(V2DF "V2DI") (DF    "DI")
+ 				(SF   "SI")])
+@@ -515,6 +556,7 @@
+ 				(V4HI "v4hi") (V8HI  "v8hi")
+ 				(V2SI "v2si") (V4SI  "v4si")
+ 				(DI   "di")   (V2DI  "v2di")
++				(V4HF "v4hi") (V8HF  "v8hi")
+ 				(V2SF "v2si") (V4SF  "v4si")
+ 				(V2DF "v2di") (DF    "di")
+ 				(SF   "si")])
+@@ -533,56 +575,25 @@
+ 
+ (define_mode_attr Vendreg [(OI "T") (CI "U") (XI "V")])
+ 
++;; This is both the number of Q-Registers needed to hold the corresponding
++;; opaque large integer mode, and the number of elements touched by the
++;; ld..._lane and st..._lane operations.
+ (define_mode_attr nregs [(OI "2") (CI "3") (XI "4")])
+ 
+ (define_mode_attr VRL2 [(V8QI "V32QI") (V4HI "V16HI")
++			(V4HF "V16HF")
+ 			(V2SI "V8SI")  (V2SF "V8SF")
+-			(DI   "V4DI")  (DF   "V4DF")
+-			(V16QI "V32QI") (V8HI "V16HI")
+-			(V4SI "V8SI")  (V4SF "V8SF")
+-			(V2DI "V4DI")  (V2DF "V4DF")])
++			(DI   "V4DI")  (DF   "V4DF")])
+ 
+ (define_mode_attr VRL3 [(V8QI "V48QI") (V4HI "V24HI")
++			(V4HF "V24HF")
+ 			(V2SI "V12SI")  (V2SF "V12SF")
+-			(DI   "V6DI")  (DF   "V6DF")
+-			(V16QI "V48QI") (V8HI "V24HI")
+-			(V4SI "V12SI")  (V4SF "V12SF")
+-			(V2DI "V6DI")  (V2DF "V6DF")])
++			(DI   "V6DI")  (DF   "V6DF")])
+ 
+ (define_mode_attr VRL4 [(V8QI "V64QI") (V4HI "V32HI")
++			(V4HF "V32HF")
+ 			(V2SI "V16SI")  (V2SF "V16SF")
+-			(DI   "V8DI")  (DF   "V8DF")
+-			(V16QI "V64QI") (V8HI "V32HI")
+-			(V4SI "V16SI")  (V4SF "V16SF")
+-			(V2DI "V8DI")  (V2DF "V8DF")])
+-
+-(define_mode_attr VSTRUCT_DREG [(OI "TI") (CI "EI") (XI "OI")])
+-
+-;; Mode of pair of elements for each vector mode, to define transfer
+-;; size for structure lane/dup loads and stores.
+-(define_mode_attr V_TWO_ELEM [(V8QI "HI")   (V16QI "HI")
+-                              (V4HI "SI")   (V8HI "SI")
+-                              (V2SI "V2SI") (V4SI "V2SI")
+-                              (DI "V2DI")   (V2DI "V2DI")
+-                              (V2SF "V2SF") (V4SF "V2SF")
+-                              (DF "V2DI")   (V2DF "V2DI")])
+-
+-;; Similar, for three elements.
+-(define_mode_attr V_THREE_ELEM [(V8QI "BLK") (V16QI "BLK")
+-                                (V4HI "BLK") (V8HI "BLK")
+-                                (V2SI "BLK") (V4SI "BLK")
+-                                (DI "EI")    (V2DI "EI")
+-                                (V2SF "BLK") (V4SF "BLK")
+-                                (DF "EI")    (V2DF "EI")])
+-
+-;; Similar, for four elements.
+-(define_mode_attr V_FOUR_ELEM [(V8QI "SI")   (V16QI "SI")
+-                               (V4HI "V4HI") (V8HI "V4HI")
+-                               (V2SI "V4SI") (V4SI "V4SI")
+-                               (DI "OI")     (V2DI "OI")
+-                               (V2SF "V4SF") (V4SF "V4SF")
+-                               (DF "OI")     (V2DF "OI")])
+-
++			(DI   "V8DI")  (DF   "V8DF")])
+ 
+ ;; Mode for atomic operation suffixes
+ (define_mode_attr atomic_sfx
+@@ -600,12 +611,14 @@
+ 				(V2SI "V4SI") (V4SI  "V2SI")
+ 				(DI   "V2DI") (V2DI  "DI")
+ 				(V2SF "V4SF") (V4SF  "V2SF")
++				(V4HF "V8HF") (V8HF  "V4HF")
+ 				(DF   "V2DF") (V2DF  "DF")])
+ 
+ (define_mode_attr vswap_width_name [(V8QI "to_128") (V16QI "to_64")
+ 				    (V4HI "to_128") (V8HI  "to_64")
+ 				    (V2SI "to_128") (V4SI  "to_64")
+ 				    (DI   "to_128") (V2DI  "to_64")
++				    (V4HF "to_128") (V8HF  "to_64")
+ 				    (V2SF "to_128") (V4SF  "to_64")
+ 				    (DF   "to_128") (V2DF  "to_64")])
+ 
+@@ -639,6 +652,7 @@
+ 		     (V4HI "") (V8HI  "_q")
+ 		     (V2SI "") (V4SI  "_q")
+ 		     (DI   "") (V2DI  "_q")
++		     (V4HF "") (V8HF "_q")
+ 		     (V2SF "") (V4SF  "_q")
+ 			       (V2DF  "_q")
+ 		     (QI "") (HI "") (SI "") (DI "") (SF "") (DF "")])
+--- a/src/gcc/config/aarch64/t-aarch64
++++ b/src/gcc/config/aarch64/t-aarch64
+@@ -48,6 +48,21 @@ aarch-common.o: $(srcdir)/config/arm/aarch-common.c $(CONFIG_H) $(SYSTEM_H) \
+ 	$(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
+ 		$(srcdir)/config/arm/aarch-common.c
+ 
++aarch64-c.o: $(srcdir)/config/aarch64/aarch64-c.c $(CONFIG_H) $(SYSTEM_H) \
++    coretypes.h $(TM_H) $(TREE_H) output.h $(C_COMMON_H)
++	$(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
++		$(srcdir)/config/aarch64/aarch64-c.c
++
++cortex-a57-fma-steering.o: $(srcdir)/config/aarch64/cortex-a57-fma-steering.c \
++    $(CONFIG_H) $(SYSTEM_H) $(TM_H) $(REGS_H) insn-config.h $(RTL_BASE_H) \
++    dominance.h cfg.h cfganal.h $(BASIC_BLOCK_H) $(INSN_ATTR_H) $(RECOG_H) \
++    output.h hash-map.h $(DF_H) $(OBSTACK_H) $(TARGET_H) $(RTL_H) \
++    $(CONTEXT_H) $(TREE_PASS_H) regrename.h \
++    $(srcdir)/config/aarch64/cortex-a57-fma-steering.h \
++    $(srcdir)/config/aarch64/aarch64-protos.h
++	$(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
++		$(srcdir)/config/aarch64/cortex-a57-fma-steering.c
++
+ comma=,
+ MULTILIB_OPTIONS    = $(subst $(comma),/, $(patsubst %, mabi=%, $(subst $(comma),$(comma)mabi=,$(TM_MULTILIB_CONFIG))))
+ MULTILIB_DIRNAMES   = $(subst $(comma), ,$(TM_MULTILIB_CONFIG))
+--- a/src/gcc/config/aarch64/thunderx.md
++++ b/src/gcc/config/aarch64/thunderx.md
+@@ -39,7 +39,7 @@
+ 
+ (define_insn_reservation "thunderx_shift" 1
+   (and (eq_attr "tune" "thunderx")
+-       (eq_attr "type" "bfm,extend,shift_imm,shift_reg"))
++       (eq_attr "type" "bfm,extend,shift_imm,shift_reg,rbit,rev"))
+   "thunderx_pipe0 | thunderx_pipe1")
+ 
+ 
+@@ -66,12 +66,18 @@
+        (eq_attr "type" "mul,muls,mla,mlas,clz,smull,umull,smlal,umlal"))
+   "thunderx_pipe1 + thunderx_mult")
+ 
+-;; Multiply high instructions take an extra cycle and cause the muliply unit to
+-;; be busy for an extra cycle.
++;; crcb,crch,crcw is 4 cycles and can only happen on pipe 1
+ 
+-;(define_insn_reservation "thunderx_mul_high" 5
++(define_insn_reservation "thunderx_crc32" 4
++  (and (eq_attr "tune" "thunderx")
++       (eq_attr "type" "crc"))
++  "thunderx_pipe1 + thunderx_mult")
++
++;; crcx is 5 cycles and only happen on pipe 1
++;(define_insn_reservation "thunderx_crc64" 5
+ ;  (and (eq_attr "tune" "thunderx")
+-;       (eq_attr "type" "smull,umull"))
++;       (eq_attr "type" "crc")
++;       (eq_attr "mode" "DI"))
+ ;  "thunderx_pipe1 + thunderx_mult")
+ 
+ (define_insn_reservation "thunderx_div32" 22
+@@ -97,6 +103,11 @@
+        (eq_attr "type" "store2"))
+   "thunderx_pipe0 + thunderx_pipe1")
+ 
++;; Prefetch are single issued
++;(define_insn_reservation "thunderx_prefetch" 1
++;  (and (eq_attr "tune" "thunderx")
++;       (eq_attr "type" "prefetch"))
++;  "thunderx_pipe0 + thunderx_pipe1")
+ 
+ ;; loads (and load pairs) from L1 take 3 cycles in pipe 0
+ (define_insn_reservation "thunderx_load" 3
+@@ -121,10 +132,21 @@
+        (eq_attr "type" "fconsts,fconstd"))
+   "thunderx_pipe1")
+ 
+-;; Moves between fp are 2 cycles including min/max/select/abs/neg
++;; Moves between fp are 2 cycles including min/max
+ (define_insn_reservation "thunderx_fmov" 2
+   (and (eq_attr "tune" "thunderx")
+-       (eq_attr "type" "fmov,f_minmaxs,f_minmaxd,fcsel,ffarithd,ffariths"))
++       (eq_attr "type" "fmov,f_minmaxs,f_minmaxd"))
++  "thunderx_pipe1")
++
++;; ABS, and NEG are 1 cycle
++(define_insn_reservation "thunderx_fabs" 1
++  (and (eq_attr "tune" "thunderx")
++       (eq_attr "type" "ffariths,ffarithd"))
++  "thunderx_pipe1")
++
++(define_insn_reservation "thunderx_fcsel" 3
++  (and (eq_attr "tune" "thunderx")
++       (eq_attr "type" "fcsel"))
+   "thunderx_pipe1")
+ 
+ (define_insn_reservation "thunderx_fmovgpr" 2
+@@ -132,6 +154,11 @@
+        (eq_attr "type" "f_mrc, f_mcr"))
+   "thunderx_pipe1")
+ 
++(define_insn_reservation "thunderx_fcmp" 3
++  (and (eq_attr "tune" "thunderx")
++       (eq_attr "type" "fcmps,fcmpd"))
++  "thunderx_pipe1")
++
+ (define_insn_reservation "thunderx_fmul" 6
+   (and (eq_attr "tune" "thunderx")
+        (eq_attr "type" "fmacs,fmacd,fmuls,fmuld"))
+@@ -152,21 +179,21 @@
+        (eq_attr "type" "fsqrts"))
+   "thunderx_pipe1 + thunderx_divide, thunderx_divide*13")
+ 
+-(define_insn_reservation "thunderx_fsqrtd" 28
++(define_insn_reservation "thunderx_fsqrtd" 31
+   (and (eq_attr "tune" "thunderx")
+        (eq_attr "type" "fsqrtd"))
+-  "thunderx_pipe1 + thunderx_divide, thunderx_divide*31")
++  "thunderx_pipe1 + thunderx_divide, thunderx_divide*27")
+ 
+ ;; The rounding conversion inside fp is 4 cycles
+ (define_insn_reservation "thunderx_frint" 4
+   (and (eq_attr "tune" "thunderx")
+-       (eq_attr "type" "f_rints,f_rintd"))
++       (eq_attr "type" "f_cvt,f_rints,f_rintd"))
+   "thunderx_pipe1")
+ 
+ ;; Float to integer with a move from int to/from float is 6 cycles
+ (define_insn_reservation "thunderx_f_cvt" 6
+   (and (eq_attr "tune" "thunderx")
+-       (eq_attr "type" "f_cvt,f_cvtf2i,f_cvti2f"))
++       (eq_attr "type" "f_cvtf2i,f_cvti2f"))
+   "thunderx_pipe1")
+ 
+ ;; FP/SIMD load/stores happen in pipe 0
+@@ -184,9 +211,12 @@
+   "thunderx_pipe0+thunderx_pipe1")
+ 
+ ;; FP/SIMD Stores takes one cycle in pipe 0
++;; ST1 with one registers either multiple structures or single structure is
++;;    also one cycle.
+ (define_insn_reservation "thunderx_simd_fp_store" 1
+   (and (eq_attr "tune" "thunderx")
+-       (eq_attr "type" "f_stored,f_stores,neon_store1_1reg,neon_store1_1reg_q"))
++       (eq_attr "type" "f_stored,f_stores,neon_store1_1reg,neon_store1_1reg_q, \
++			neon_store1_one_lane, neon_store1_one_lane_q"))
+   "thunderx_pipe0")
+ 
+ ;; 64bit neon store pairs are single issue for one cycle
+@@ -201,24 +231,38 @@
+        (eq_attr "type" "neon_store1_2reg_q"))
+   "(thunderx_pipe0 + thunderx_pipe1)*2")
+ 
++;; LD1R/LD1 (with a single struct) takes 6 cycles and issued in pipe0
++(define_insn_reservation "thunderx_neon_ld1" 6
++  (and (eq_attr "tune" "thunderx")
++       (eq_attr "type" "neon_load1_all_lanes"))
++  "thunderx_pipe0")
+ 
+ ;; SIMD/NEON (q forms take an extra cycle)
++;; SIMD For ThunderX is 64bit wide,
+ 
+-;; Thunder simd move instruction types - 2/3 cycles
++;; ThunderX simd move instruction types - 2/3 cycles
++;; ThunderX dup, ins is the same
++;; ThunderX SIMD fabs/fneg instruction types
+ (define_insn_reservation "thunderx_neon_move" 2
+   (and (eq_attr "tune" "thunderx")
+        (eq_attr "type" "neon_logic, neon_bsl, neon_fp_compare_s, \
+-			neon_fp_compare_d, neon_move"))
++			neon_fp_compare_d, neon_move, neon_dup, \
++			neon_ins, neon_from_gp, neon_to_gp, \
++			neon_abs, neon_neg, \
++			neon_fp_neg_s, neon_fp_abs_s"))
+   "thunderx_pipe1 + thunderx_simd")
+ 
+ (define_insn_reservation "thunderx_neon_move_q" 3
+   (and (eq_attr "tune" "thunderx")
+        (eq_attr "type" "neon_logic_q, neon_bsl_q, neon_fp_compare_s_q, \
+-			neon_fp_compare_d_q, neon_move_q"))
++			neon_fp_compare_d_q, neon_move_q, neon_dup_q, \
++			neon_ins_q, neon_from_gp_q, neon_to_gp_q, \
++			neon_abs_q, neon_neg_q, \
++			neon_fp_neg_s_q, neon_fp_neg_d_q, \
++			neon_fp_abs_s_q, neon_fp_abs_d_q"))
+   "thunderx_pipe1 + thunderx_simd, thunderx_simd")
+ 
+-
+-;; Thunder simd simple/add instruction types - 4/5 cycles
++;; ThunderX simd simple/add instruction types - 4/5 cycles
+ 
+ (define_insn_reservation "thunderx_neon_add" 4
+   (and (eq_attr "tune" "thunderx")
+@@ -227,7 +271,9 @@
+ 			neon_add_halve, neon_sub_halve, neon_qadd, neon_compare, \
+ 			neon_compare_zero, neon_minmax, neon_abd, neon_add, neon_sub, \
+ 			neon_fp_minmax_s, neon_fp_minmax_d, neon_reduc_add, neon_cls, \
+-			neon_qabs, neon_qneg, neon_fp_addsub_s, neon_fp_addsub_d"))
++			neon_qabs, neon_qneg, neon_fp_addsub_s, neon_fp_addsub_d, \
++			neon_arith_acc, neon_rev, neon_fp_abd_s, neon_fp_abd_d, \
++			neon_fp_reduc_minmax_s"))
+   "thunderx_pipe1 + thunderx_simd")
+ 
+ ;; BIG NOTE: neon_add_long/neon_sub_long don't have a q form which is incorrect
+@@ -240,13 +286,74 @@
+ 			neon_compare_zero_q, neon_minmax_q, neon_abd_q, neon_add_q, neon_sub_q, \
+ 			neon_fp_minmax_s_q, neon_fp_minmax_d_q, neon_reduc_add_q, neon_cls_q, \
+ 			neon_qabs_q, neon_qneg_q, neon_fp_addsub_s_q, neon_fp_addsub_d_q, \
+-			neon_add_long, neon_sub_long"))
++			neon_add_long, neon_sub_long, neon_fp_abd_s_q, neon_fp_abd_d_q, \
++			neon_arith_acc_q, neon_rev_q, \
++			neon_fp_reduc_minmax_s_q, neon_fp_reduc_minmax_d_q"))
+   "thunderx_pipe1 + thunderx_simd, thunderx_simd")
+ 
++;; Multiplies (float and integer) and shifts and permutes (except for TBL) and float conversions
++;; are 6/7 cycles
++(define_insn_reservation "thunderx_neon_mult" 6
++  (and (eq_attr "tune" "thunderx")
++       (eq_attr "type" "neon_fp_mul_s, neon_fp_mul_d, neon_fp_mla_s, neon_fp_mla_d, \
++			neon_mla_b, neon_mla_h, neon_mla_s, \
++			neon_mla_h_scalar, neon_mla_s_scalar, \
++			neon_ext, neon_shift_imm, neon_permute, \
++			neon_int_to_fp_s, neon_int_to_fp_d, neon_shift_reg, \
++			neon_sat_shift_reg, neon_shift_acc, \
++			neon_mul_b, neon_mul_h, neon_mul_s, \
++			neon_mul_h_scalar, neon_mul_s_scalar, \
++			neon_fp_mul_s_scalar, \
++			neon_fp_mla_s_scalar"))
++  "thunderx_pipe1 + thunderx_simd")
++
++(define_insn_reservation "thunderx_neon_mult_q" 7
++  (and (eq_attr "tune" "thunderx")
++       (eq_attr "type" "neon_fp_mul_s_q, neon_fp_mul_d_q, neon_fp_mla_s_q, neon_fp_mla_d_q, \
++			neon_mla_b_q, neon_mla_h_q, neon_mla_s_q, \
++			neon_mla_h_scalar_q, neon_mla_s_scalar_q, \
++			neon_ext_q, neon_shift_imm_q, neon_permute_q, \
++			neon_int_to_fp_s_q, neon_int_to_fp_d_q, neon_shift_reg_q, \
++			neon_sat_shift_reg_q, neon_shift_acc_q, \
++			neon_shift_imm_long, \
++			neon_mul_b_q, neon_mul_h_q, neon_mul_s_q, \
++			neon_mul_h_scalar_q, neon_mul_s_scalar_q, \
++			neon_fp_mul_s_scalar_q, neon_fp_mul_d_scalar_q, \
++			neon_mul_b_long, neon_mul_h_long, neon_mul_s_long, \
++			neon_shift_imm_narrow_q, neon_fp_cvt_widen_s, neon_fp_cvt_narrow_d_q, \
++			neon_fp_mla_s_scalar_q, neon_fp_mla_d_scalar_q"))
++  "thunderx_pipe1 + thunderx_simd, thunderx_simd")
++
++
++;; AES[ED] is 5 cycles
++(define_insn_reservation "thunderx_crypto_aese" 5
++  (and (eq_attr "tune" "thunderx")
++       (eq_attr "type" "crypto_aese"))
++  "thunderx_pipe1 + thunderx_simd, thunderx_simd")
+ 
+-;; Thunder 128bit SIMD reads the upper halve in cycle 2 and writes in the last cycle
+-(define_bypass 2 "thunderx_neon_move_q" "thunderx_neon_move_q, thunderx_neon_add_q")
+-(define_bypass 4 "thunderx_neon_add_q" "thunderx_neon_move_q, thunderx_neon_add_q")
++;; AES{,I}MC is 3 cycles
++(define_insn_reservation "thunderx_crypto_aesmc" 3
++  (and (eq_attr "tune" "thunderx")
++       (eq_attr "type" "crypto_aesmc"))
++  "thunderx_pipe1 + thunderx_simd, thunderx_simd")
++
++
++;; Thunder 128bit SIMD reads the upper halve in cycle 2 and writes upper halve in the last cycle
++(define_bypass 2 "thunderx_neon_move_q" "thunderx_neon_move_q, thunderx_neon_add_q, thunderx_neon_mult_q")
++(define_bypass 4 "thunderx_neon_add_q" "thunderx_neon_move_q, thunderx_neon_add_q, thunderx_neon_mult_q")
++(define_bypass 6 "thunderx_neon_mult_q" "thunderx_neon_move_q, thunderx_neon_add_q, thunderx_neon_mult_q")
++
++;; 64bit TBL is emulated and takes 160 cycles
++(define_insn_reservation "thunderx_tbl" 160
++  (and (eq_attr "tune" "thunderx")
++       (eq_attr "type" "neon_tbl1"))
++  "(thunderx_pipe1+thunderx_pipe0)*160")
++
++;; 128bit TBL is emulated and takes 320 cycles
++(define_insn_reservation "thunderx_tblq" 320
++  (and (eq_attr "tune" "thunderx")
++       (eq_attr "type" "neon_tbl1_q"))
++  "(thunderx_pipe1+thunderx_pipe0)*320")
+ 
+ ;; Assume both pipes are needed for unknown and multiple-instruction
+ ;; patterns.
+--- /dev/null
++++ b/src/gcc/config/aarch64/x-aarch64
+@@ -0,0 +1,3 @@
++driver-aarch64.o: $(srcdir)/config/aarch64/driver-aarch64.c \
++  $(CONFIG_H) $(SYSTEM_H)
++	$(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) $<
+--- a/src/gcc/config/alpha/linux.h
++++ b/src/gcc/config/alpha/linux.h
+@@ -61,10 +61,14 @@ along with GCC; see the file COPYING3.  If not see
+ #define OPTION_GLIBC  (DEFAULT_LIBC == LIBC_GLIBC)
+ #define OPTION_UCLIBC (DEFAULT_LIBC == LIBC_UCLIBC)
+ #define OPTION_BIONIC (DEFAULT_LIBC == LIBC_BIONIC)
++#undef OPTION_MUSL
++#define OPTION_MUSL   (DEFAULT_LIBC == LIBC_MUSL)
+ #else
+ #define OPTION_GLIBC  (linux_libc == LIBC_GLIBC)
+ #define OPTION_UCLIBC (linux_libc == LIBC_UCLIBC)
+ #define OPTION_BIONIC (linux_libc == LIBC_BIONIC)
++#undef OPTION_MUSL
++#define OPTION_MUSL   (linux_libc == LIBC_MUSL)
+ #endif
+ 
+ /* Determine what functions are present at the runtime;
+--- a/src/gcc/config/arm/aarch-common-protos.h
++++ b/src/gcc/config/arm/aarch-common-protos.h
+@@ -102,6 +102,8 @@ struct mem_cost_table
+   const int storef;		/* SFmode.  */
+   const int stored;		/* DFmode.  */
+   const int store_unaligned;	/* Extra for unaligned stores.  */
++  const int loadv;		/* Vector load.  */
++  const int storev;		/* Vector store.  */
+ };
+ 
+ struct fp_cost_table
+--- a/src/gcc/config/arm/aarch-cost-tables.h
++++ b/src/gcc/config/arm/aarch-cost-tables.h
+@@ -81,7 +81,9 @@ const struct cpu_cost_table generic_extra_costs =
+     1,			/* stm_regs_per_insn_subsequent.  */
+     COSTS_N_INSNS (2),	/* storef.  */
+     COSTS_N_INSNS (3),	/* stored.  */
+-    COSTS_N_INSNS (1)  /* store_unaligned.  */
++    COSTS_N_INSNS (1),	/* store_unaligned.  */
++    COSTS_N_INSNS (1),	/* loadv.  */
++    COSTS_N_INSNS (1)	/* storev.  */
+   },
+   {
+     /* FP SFmode */
+@@ -130,12 +132,12 @@ const struct cpu_cost_table cortexa53_extra_costs =
+     0,			/* arith.  */
+     0,			/* logical.  */
+     COSTS_N_INSNS (1),	/* shift.  */
+-    COSTS_N_INSNS (2),	/* shift_reg.  */
++    0,			/* shift_reg.  */
+     COSTS_N_INSNS (1),	/* arith_shift.  */
+-    COSTS_N_INSNS (2),	/* arith_shift_reg.  */
++    COSTS_N_INSNS (1),	/* arith_shift_reg.  */
+     COSTS_N_INSNS (1),	/* log_shift.  */
+-    COSTS_N_INSNS (2),	/* log_shift_reg.  */
+-    0,			/* extend.  */
++    COSTS_N_INSNS (1),	/* log_shift_reg.  */
++    COSTS_N_INSNS (1),	/* extend.  */
+     COSTS_N_INSNS (1),	/* extend_arith.  */
+     COSTS_N_INSNS (1),	/* bfi.  */
+     COSTS_N_INSNS (1),	/* bfx.  */
+@@ -182,7 +184,9 @@ const struct cpu_cost_table cortexa53_extra_costs =
+     2,				/* stm_regs_per_insn_subsequent.  */
+     0,				/* storef.  */
+     0,				/* stored.  */
+-    COSTS_N_INSNS (1)		/* store_unaligned.  */
++    COSTS_N_INSNS (1),		/* store_unaligned.  */
++    COSTS_N_INSNS (1),		/* loadv.  */
++    COSTS_N_INSNS (1)		/* storev.  */
+   },
+   {
+     /* FP SFmode */
+@@ -283,7 +287,9 @@ const struct cpu_cost_table cortexa57_extra_costs =
+     2,                         /* stm_regs_per_insn_subsequent.  */
+     0,                         /* storef.  */
+     0,                         /* stored.  */
+-    COSTS_N_INSNS (1)          /* store_unaligned.  */
++    COSTS_N_INSNS (1),         /* store_unaligned.  */
++    COSTS_N_INSNS (1),         /* loadv.  */
++    COSTS_N_INSNS (1)          /* storev.  */
+   },
+   {
+     /* FP SFmode */
+@@ -385,6 +391,8 @@ const struct cpu_cost_table xgene1_extra_costs =
+     0,                         /* storef.  */
+     0,                         /* stored.  */
+     0,                         /* store_unaligned.  */
++    COSTS_N_INSNS (1),         /* loadv.  */
++    COSTS_N_INSNS (1)          /* storev.  */
+   },
+   {
+     /* FP SFmode */
+--- a/src/gcc/config/arm/arm-arches.def
++++ b/src/gcc/config/arm/arm-arches.def
+@@ -23,38 +23,40 @@
+ 
+    The NAME is the name of the architecture, represented as a string
+    constant.  The CORE is the identifier for a core representative of
+-   this architecture.  ARCH is the architecture revision.  FLAGS are
+-   the flags implied by the architecture.
++   this architecture.  ARCH is the architecture revision.  FLAGS is
++   the set of feature flags implied by the architecture.
+ 
+    genopt.sh assumes no whitespace up to the first "," in each entry.  */
+ 
+-ARM_ARCH("armv2",   arm2,       2,   FL_CO_PROC | FL_MODE26 | FL_FOR_ARCH2)
+-ARM_ARCH("armv2a",  arm2,       2,   FL_CO_PROC | FL_MODE26 | FL_FOR_ARCH2)
+-ARM_ARCH("armv3",   arm6,       3,   FL_CO_PROC | FL_MODE26 | FL_FOR_ARCH3)
+-ARM_ARCH("armv3m",  arm7m,      3M,  FL_CO_PROC | FL_MODE26 | FL_FOR_ARCH3M)
+-ARM_ARCH("armv4",   arm7tdmi,   4,   FL_CO_PROC | FL_MODE26 | FL_FOR_ARCH4)
++ARM_ARCH("armv2",   arm2,       2,	ARM_FSET_MAKE_CPU1 (FL_CO_PROC | FL_MODE26 | FL_FOR_ARCH2))
++ARM_ARCH("armv2a",  arm2,       2,	ARM_FSET_MAKE_CPU1 (FL_CO_PROC | FL_MODE26 | FL_FOR_ARCH2))
++ARM_ARCH("armv3",   arm6,       3,	ARM_FSET_MAKE_CPU1 (FL_CO_PROC | FL_MODE26 | FL_FOR_ARCH3))
++ARM_ARCH("armv3m",  arm7m,      3M,	ARM_FSET_MAKE_CPU1 (FL_CO_PROC | FL_MODE26 | FL_FOR_ARCH3M))
++ARM_ARCH("armv4",   arm7tdmi,   4,	ARM_FSET_MAKE_CPU1 (FL_CO_PROC | FL_MODE26 | FL_FOR_ARCH4))
+ /* Strictly, FL_MODE26 is a permitted option for v4t, but there are no
+    implementations that support it, so we will leave it out for now.  */
+-ARM_ARCH("armv4t",  arm7tdmi,   4T,  FL_CO_PROC |             FL_FOR_ARCH4T)
+-ARM_ARCH("armv5",   arm10tdmi,  5,   FL_CO_PROC |             FL_FOR_ARCH5)
+-ARM_ARCH("armv5t",  arm10tdmi,  5T,  FL_CO_PROC |             FL_FOR_ARCH5T)
+-ARM_ARCH("armv5e",  arm1026ejs, 5E,  FL_CO_PROC |             FL_FOR_ARCH5E)
+-ARM_ARCH("armv5te", arm1026ejs, 5TE, FL_CO_PROC |             FL_FOR_ARCH5TE)
+-ARM_ARCH("armv6",   arm1136js,  6,   FL_CO_PROC |             FL_FOR_ARCH6)
+-ARM_ARCH("armv6j",  arm1136js,  6J,  FL_CO_PROC |             FL_FOR_ARCH6J)
+-ARM_ARCH("armv6k",  mpcore,	6K,  FL_CO_PROC |             FL_FOR_ARCH6K)
+-ARM_ARCH("armv6z",  arm1176jzs, 6Z,  FL_CO_PROC |             FL_FOR_ARCH6Z)
+-ARM_ARCH("armv6zk", arm1176jzs, 6ZK, FL_CO_PROC |             FL_FOR_ARCH6ZK)
+-ARM_ARCH("armv6t2", arm1156t2s, 6T2, FL_CO_PROC |             FL_FOR_ARCH6T2)
+-ARM_ARCH("armv6-m", cortexm1,	6M,			      FL_FOR_ARCH6M)
+-ARM_ARCH("armv6s-m", cortexm1,	6M,			      FL_FOR_ARCH6M)
+-ARM_ARCH("armv7",   cortexa8,	7,   FL_CO_PROC |	      FL_FOR_ARCH7)
+-ARM_ARCH("armv7-a", cortexa8,	7A,  FL_CO_PROC |	      FL_FOR_ARCH7A)
+-ARM_ARCH("armv7ve", cortexa8,	7A,  FL_CO_PROC |	      FL_FOR_ARCH7VE)
+-ARM_ARCH("armv7-r", cortexr4,	7R,  FL_CO_PROC |	      FL_FOR_ARCH7R)
+-ARM_ARCH("armv7-m", cortexm3,	7M,  FL_CO_PROC |	      FL_FOR_ARCH7M)
+-ARM_ARCH("armv7e-m", cortexm4,  7EM, FL_CO_PROC |	      FL_FOR_ARCH7EM)
+-ARM_ARCH("armv8-a", cortexa53,  8A,  FL_CO_PROC |             FL_FOR_ARCH8A)
+-ARM_ARCH("armv8-a+crc",cortexa53, 8A,FL_CO_PROC | FL_CRC32  | FL_FOR_ARCH8A)
+-ARM_ARCH("iwmmxt",  iwmmxt,     5TE, FL_LDSCHED | FL_STRONG | FL_FOR_ARCH5TE | FL_XSCALE | FL_IWMMXT)
+-ARM_ARCH("iwmmxt2", iwmmxt2,    5TE, FL_LDSCHED | FL_STRONG | FL_FOR_ARCH5TE | FL_XSCALE | FL_IWMMXT | FL_IWMMXT2)
++ARM_ARCH("armv4t",  arm7tdmi,   4T,	ARM_FSET_MAKE_CPU1 (FL_CO_PROC |             FL_FOR_ARCH4T))
++ARM_ARCH("armv5",   arm10tdmi,  5,	ARM_FSET_MAKE_CPU1 (FL_CO_PROC |             FL_FOR_ARCH5))
++ARM_ARCH("armv5t",  arm10tdmi,  5T,	ARM_FSET_MAKE_CPU1 (FL_CO_PROC |             FL_FOR_ARCH5T))
++ARM_ARCH("armv5e",  arm1026ejs, 5E,	ARM_FSET_MAKE_CPU1 (FL_CO_PROC |             FL_FOR_ARCH5E))
++ARM_ARCH("armv5te", arm1026ejs, 5TE,	ARM_FSET_MAKE_CPU1 (FL_CO_PROC |             FL_FOR_ARCH5TE))
++ARM_ARCH("armv6",   arm1136js,  6,	ARM_FSET_MAKE_CPU1 (FL_CO_PROC |             FL_FOR_ARCH6))
++ARM_ARCH("armv6j",  arm1136js,  6J,	ARM_FSET_MAKE_CPU1 (FL_CO_PROC |             FL_FOR_ARCH6J))
++ARM_ARCH("armv6k",  mpcore,	6K,	ARM_FSET_MAKE_CPU1 (FL_CO_PROC |             FL_FOR_ARCH6K))
++ARM_ARCH("armv6z",  arm1176jzs, 6Z,	ARM_FSET_MAKE_CPU1 (FL_CO_PROC |             FL_FOR_ARCH6Z))
++ARM_ARCH("armv6kz", arm1176jzs, 6KZ,	ARM_FSET_MAKE_CPU1 (FL_CO_PROC |             FL_FOR_ARCH6KZ))
++ARM_ARCH("armv6zk", arm1176jzs, 6KZ,	ARM_FSET_MAKE_CPU1 (FL_CO_PROC |             FL_FOR_ARCH6KZ))
++ARM_ARCH("armv6t2", arm1156t2s, 6T2,	ARM_FSET_MAKE_CPU1 (FL_CO_PROC |             FL_FOR_ARCH6T2))
++ARM_ARCH("armv6-m", cortexm1,	6M,	ARM_FSET_MAKE_CPU1 (FL_FOR_ARCH6M))
++ARM_ARCH("armv6s-m", cortexm1,	6M,	ARM_FSET_MAKE_CPU1 (FL_FOR_ARCH6M))
++ARM_ARCH("armv7",   cortexa8,	7,	ARM_FSET_MAKE_CPU1 (FL_CO_PROC |	      FL_FOR_ARCH7))
++ARM_ARCH("armv7-a", cortexa8,	7A,	ARM_FSET_MAKE_CPU1 (FL_CO_PROC |	      FL_FOR_ARCH7A))
++ARM_ARCH("armv7ve", cortexa8,	7A,	ARM_FSET_MAKE_CPU1 (FL_CO_PROC |	      FL_FOR_ARCH7VE))
++ARM_ARCH("armv7-r", cortexr4,	7R,	ARM_FSET_MAKE_CPU1 (FL_CO_PROC |	      FL_FOR_ARCH7R))
++ARM_ARCH("armv7-m", cortexm3,	7M,	ARM_FSET_MAKE_CPU1 (FL_CO_PROC |	      FL_FOR_ARCH7M))
++ARM_ARCH("armv7e-m", cortexm4,  7EM,	ARM_FSET_MAKE_CPU1 (FL_CO_PROC |	      FL_FOR_ARCH7EM))
++ARM_ARCH("armv8-a", cortexa53,  8A,	ARM_FSET_MAKE_CPU1 (FL_CO_PROC |             FL_FOR_ARCH8A))
++ARM_ARCH("armv8-a+crc",cortexa53, 8A,   ARM_FSET_MAKE_CPU1 (FL_CO_PROC | FL_CRC32  | FL_FOR_ARCH8A))
++ARM_ARCH("iwmmxt",  iwmmxt,     5TE,	ARM_FSET_MAKE_CPU1 (FL_LDSCHED | FL_STRONG | FL_FOR_ARCH5TE | FL_XSCALE | FL_IWMMXT))
++ARM_ARCH("iwmmxt2", iwmmxt2,    5TE,	ARM_FSET_MAKE_CPU1 (FL_LDSCHED | FL_STRONG | FL_FOR_ARCH5TE | FL_XSCALE | FL_IWMMXT | FL_IWMMXT2))
++
+--- a/src/gcc/config/arm/arm-builtins.c
++++ b/src/gcc/config/arm/arm-builtins.c
+@@ -89,7 +89,9 @@ enum arm_type_qualifiers
+   /* qualifier_const_pointer | qualifier_map_mode  */
+   qualifier_const_pointer_map_mode = 0x86,
+   /* Polynomial types.  */
+-  qualifier_poly = 0x100
++  qualifier_poly = 0x100,
++  /* Lane indices - must be within range of previous argument = a vector.  */
++  qualifier_lane_index = 0x200
+ };
+ 
+ /*  The qualifier_internal allows generation of a unary builtin from
+@@ -120,21 +122,40 @@ arm_ternop_qualifiers[SIMD_MAX_BUILTIN_ARGS]
+ 
+ /* T (T, immediate).  */
+ static enum arm_type_qualifiers
+-arm_getlane_qualifiers[SIMD_MAX_BUILTIN_ARGS]
++arm_binop_imm_qualifiers[SIMD_MAX_BUILTIN_ARGS]
+   = { qualifier_none, qualifier_none, qualifier_immediate };
++#define BINOP_IMM_QUALIFIERS (arm_binop_imm_qualifiers)
++
++/* T (T, lane index).  */
++static enum arm_type_qualifiers
++arm_getlane_qualifiers[SIMD_MAX_BUILTIN_ARGS]
++  = { qualifier_none, qualifier_none, qualifier_lane_index };
+ #define GETLANE_QUALIFIERS (arm_getlane_qualifiers)
+ 
+ /* T (T, T, T, immediate).  */
+ static enum arm_type_qualifiers
+-arm_lanemac_qualifiers[SIMD_MAX_BUILTIN_ARGS]
++arm_mac_n_qualifiers[SIMD_MAX_BUILTIN_ARGS]
+   = { qualifier_none, qualifier_none, qualifier_none,
+       qualifier_none, qualifier_immediate };
+-#define LANEMAC_QUALIFIERS (arm_lanemac_qualifiers)
++#define MAC_N_QUALIFIERS (arm_mac_n_qualifiers)
++
++/* T (T, T, T, lane index).  */
++static enum arm_type_qualifiers
++arm_mac_lane_qualifiers[SIMD_MAX_BUILTIN_ARGS]
++  = { qualifier_none, qualifier_none, qualifier_none,
++      qualifier_none, qualifier_lane_index };
++#define MAC_LANE_QUALIFIERS (arm_mac_lane_qualifiers)
+ 
+ /* T (T, T, immediate).  */
+ static enum arm_type_qualifiers
+-arm_setlane_qualifiers[SIMD_MAX_BUILTIN_ARGS]
++arm_ternop_imm_qualifiers[SIMD_MAX_BUILTIN_ARGS]
+   = { qualifier_none, qualifier_none, qualifier_none, qualifier_immediate };
++#define TERNOP_IMM_QUALIFIERS (arm_ternop_imm_qualifiers)
++
++/* T (T, T, lane index).  */
++static enum arm_type_qualifiers
++arm_setlane_qualifiers[SIMD_MAX_BUILTIN_ARGS]
++  = { qualifier_none, qualifier_none, qualifier_none, qualifier_lane_index };
+ #define SETLANE_QUALIFIERS (arm_setlane_qualifiers)
+ 
+ /* T (T, T).  */
+@@ -183,6 +204,7 @@ arm_storestruct_lane_qualifiers[SIMD_MAX_BUILTIN_ARGS]
+ #define di_UP    DImode
+ #define v16qi_UP V16QImode
+ #define v8hi_UP  V8HImode
++#define v8hf_UP  V8HFmode
+ #define v4si_UP  V4SImode
+ #define v4sf_UP  V4SFmode
+ #define v2di_UP  V2DImode
+@@ -231,6 +253,12 @@ typedef struct {
+ #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)
+ 
+ /* 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
+@@ -525,12 +553,16 @@ enum arm_builtins
+ #undef CRYPTO2
+ #undef CRYPTO3
+ 
++  ARM_BUILTIN_NEON_BASE,
++  ARM_BUILTIN_NEON_LANE_CHECK = ARM_BUILTIN_NEON_BASE,
++
+ #include "arm_neon_builtins.def"
+ 
+   ARM_BUILTIN_MAX
+ };
+ 
+-#define ARM_BUILTIN_NEON_BASE (ARM_BUILTIN_MAX - ARRAY_SIZE (neon_builtin_data))
++#define ARM_BUILTIN_NEON_PATTERN_START \
++    (ARM_BUILTIN_MAX - ARRAY_SIZE (neon_builtin_data))
+ 
+ #undef CF
+ #undef VAR1
+@@ -758,13 +790,6 @@ arm_init_simd_builtin_types (void)
+   int nelts = sizeof (arm_simd_types) / sizeof (arm_simd_types[0]);
+   tree tdecl;
+ 
+-  /* Initialize the HFmode scalar type.  */
+-  arm_simd_floatHF_type_node = make_node (REAL_TYPE);
+-  TYPE_PRECISION (arm_simd_floatHF_type_node) = GET_MODE_PRECISION (HFmode);
+-  layout_type (arm_simd_floatHF_type_node);
+-  (*lang_hooks.types.register_builtin_type) (arm_simd_floatHF_type_node,
+-					     "__builtin_neon_hf");
+-
+   /* Poly types are a world of their own.  In order to maintain legacy
+      ABI, they get initialized using the old interface, and don't get
+      an entry in our mangling table, consequently, they get default
+@@ -812,7 +837,10 @@ arm_init_simd_builtin_types (void)
+      mangling.  */
+ 
+   /* Continue with standard types.  */
++  /* The __builtin_simd{64,128}_float16 types are kept private unless
++     we have a scalar __fp16 type.  */
+   arm_simd_types[Float16x4_t].eltype = arm_simd_floatHF_type_node;
++  arm_simd_types[Float16x8_t].eltype = arm_simd_floatHF_type_node;
+   arm_simd_types[Float32x2_t].eltype = float_type_node;
+   arm_simd_types[Float32x4_t].eltype = float_type_node;
+ 
+@@ -889,7 +917,7 @@ arm_init_simd_builtin_scalar_types (void)
+ static void
+ arm_init_neon_builtins (void)
+ {
+-  unsigned int i, fcode = ARM_BUILTIN_NEON_BASE;
++  unsigned int i, fcode = ARM_BUILTIN_NEON_PATTERN_START;
+ 
+   arm_init_simd_builtin_types ();
+ 
+@@ -899,6 +927,15 @@ arm_init_neon_builtins (void)
+      system.  */
+   arm_init_simd_builtin_scalar_types ();
+ 
++  tree lane_check_fpr = build_function_type_list (void_type_node,
++						  intSI_type_node,
++						  intSI_type_node,
++						  NULL);
++  arm_builtin_decls[ARM_BUILTIN_NEON_LANE_CHECK] =
++      add_builtin_function ("__builtin_arm_lane_check", lane_check_fpr,
++			    ARM_BUILTIN_NEON_LANE_CHECK, BUILT_IN_MD,
++			    NULL, NULL_TREE);
++
+   for (i = 0; i < ARRAY_SIZE (neon_builtin_data); i++, fcode++)
+     {
+       bool print_type_signature_p = false;
+@@ -1086,10 +1123,11 @@ arm_init_neon_builtins (void)
+ #undef NUM_DREG_TYPES
+ #undef NUM_QREG_TYPES
+ 
+-#define def_mbuiltin(MASK, NAME, TYPE, CODE)				\
++#define def_mbuiltin(FLAGS, NAME, TYPE, CODE)				\
+   do									\
+     {									\
+-      if ((MASK) & insn_flags)						\
++      const arm_feature_set flags = FLAGS;				\
++      if (ARM_FSET_CPU_SUBSET (flags, insn_flags))			\
+ 	{								\
+ 	  tree bdecl;							\
+ 	  bdecl = add_builtin_function ((NAME), (TYPE), (CODE),		\
+@@ -1101,7 +1139,7 @@ arm_init_neon_builtins (void)
+ 
+ struct builtin_description
+ {
+-  const unsigned int       mask;
++  const arm_feature_set    features;
+   const enum insn_code     icode;
+   const char * const       name;
+   const enum arm_builtins  code;
+@@ -1112,11 +1150,13 @@ struct builtin_description
+ static const struct builtin_description bdesc_2arg[] =
+ {
+ #define IWMMXT_BUILTIN(code, string, builtin) \
+-  { FL_IWMMXT, CODE_FOR_##code, "__builtin_arm_" string, \
++  { ARM_FSET_MAKE_CPU1 (FL_IWMMXT), CODE_FOR_##code, \
++    "__builtin_arm_" string,			     \
+     ARM_BUILTIN_##builtin, UNKNOWN, 0 },
+ 
+ #define IWMMXT2_BUILTIN(code, string, builtin) \
+-  { FL_IWMMXT2, CODE_FOR_##code, "__builtin_arm_" string, \
++  { ARM_FSET_MAKE_CPU1 (FL_IWMMXT2), CODE_FOR_##code, \
++    "__builtin_arm_" string,			      \
+     ARM_BUILTIN_##builtin, UNKNOWN, 0 },
+ 
+   IWMMXT_BUILTIN (addv8qi3, "waddb", WADDB)
+@@ -1199,10 +1239,12 @@ static const struct builtin_description bdesc_2arg[] =
+   IWMMXT_BUILTIN (iwmmxt_walignr3, "walignr3", WALIGNR3)
+ 
+ #define IWMMXT_BUILTIN2(code, builtin) \
+-  { FL_IWMMXT, CODE_FOR_##code, NULL, ARM_BUILTIN_##builtin, UNKNOWN, 0 },
++  { ARM_FSET_MAKE_CPU1 (FL_IWMMXT), CODE_FOR_##code, NULL, \
++    ARM_BUILTIN_##builtin, UNKNOWN, 0 },
+ 
+ #define IWMMXT2_BUILTIN2(code, builtin) \
+-  { FL_IWMMXT2, CODE_FOR_##code, NULL, ARM_BUILTIN_##builtin, UNKNOWN, 0 },
++  { ARM_FSET_MAKE_CPU2 (FL_IWMMXT2), CODE_FOR_##code, NULL, \
++    ARM_BUILTIN_##builtin, UNKNOWN, 0 },
+ 
+   IWMMXT2_BUILTIN2 (iwmmxt_waddbhusm, WADDBHUSM)
+   IWMMXT2_BUILTIN2 (iwmmxt_waddbhusl, WADDBHUSL)
+@@ -1217,7 +1259,7 @@ static const struct builtin_description bdesc_2arg[] =
+ 
+ 
+ #define FP_BUILTIN(L, U) \
+-  {0, CODE_FOR_##L, "__builtin_arm_"#L, ARM_BUILTIN_##U, \
++  {ARM_FSET_EMPTY, CODE_FOR_##L, "__builtin_arm_"#L, ARM_BUILTIN_##U, \
+    UNKNOWN, 0},
+ 
+   FP_BUILTIN (get_fpscr, GET_FPSCR)
+@@ -1225,8 +1267,8 @@ static const struct builtin_description bdesc_2arg[] =
+ #undef FP_BUILTIN
+ 
+ #define CRC32_BUILTIN(L, U) \
+-  {0, CODE_FOR_##L, "__builtin_arm_"#L, ARM_BUILTIN_##U, \
+-   UNKNOWN, 0},
++  {ARM_FSET_EMPTY, CODE_FOR_##L, "__builtin_arm_"#L, \
++   ARM_BUILTIN_##U, UNKNOWN, 0},
+    CRC32_BUILTIN (crc32b, CRC32B)
+    CRC32_BUILTIN (crc32h, CRC32H)
+    CRC32_BUILTIN (crc32w, CRC32W)
+@@ -1236,9 +1278,9 @@ static const struct builtin_description bdesc_2arg[] =
+ #undef CRC32_BUILTIN
+ 
+ 
+-#define CRYPTO_BUILTIN(L, U) \
+-  {0, CODE_FOR_crypto_##L, "__builtin_arm_crypto_"#L, ARM_BUILTIN_CRYPTO_##U, \
+-   UNKNOWN, 0},
++#define CRYPTO_BUILTIN(L, U)					   \
++  {ARM_FSET_EMPTY, CODE_FOR_crypto_##L,	"__builtin_arm_crypto_"#L, \
++   ARM_BUILTIN_CRYPTO_##U, UNKNOWN, 0},
+ #undef CRYPTO1
+ #undef CRYPTO2
+ #undef CRYPTO3
+@@ -1494,7 +1536,9 @@ arm_init_iwmmxt_builtins (void)
+       machine_mode mode;
+       tree type;
+ 
+-      if (d->name == 0 || !(d->mask == FL_IWMMXT || d->mask == FL_IWMMXT2))
++      if (d->name == 0 ||
++	  !(ARM_FSET_HAS_CPU1 (d->features, FL_IWMMXT) ||
++	    ARM_FSET_HAS_CPU1 (d->features, FL_IWMMXT2)))
+ 	continue;
+ 
+       mode = insn_data[d->icode].operand[1].mode;
+@@ -1518,17 +1562,17 @@ arm_init_iwmmxt_builtins (void)
+ 	  gcc_unreachable ();
+ 	}
+ 
+-      def_mbuiltin (d->mask, d->name, type, d->code);
++      def_mbuiltin (d->features, d->name, type, d->code);
+     }
+ 
+   /* Add the remaining MMX insns with somewhat more complicated types.  */
+ #define iwmmx_mbuiltin(NAME, TYPE, CODE)			\
+-  def_mbuiltin (FL_IWMMXT, "__builtin_arm_" NAME, (TYPE),	\
+-		ARM_BUILTIN_ ## CODE)
++  def_mbuiltin (ARM_FSET_MAKE_CPU1 (FL_IWMMXT), "__builtin_arm_" NAME, \
++		(TYPE), ARM_BUILTIN_ ## CODE)
+ 
+ #define iwmmx2_mbuiltin(NAME, TYPE, CODE)                      \
+-  def_mbuiltin (FL_IWMMXT2, "__builtin_arm_" NAME, (TYPE),     \
+-               ARM_BUILTIN_ ## CODE)
++  def_mbuiltin (ARM_FSET_MAKE_CPU1 (FL_IWMMXT2), "__builtin_arm_" NAME, \
++		(TYPE),	ARM_BUILTIN_ ## CODE)
+ 
+   iwmmx_mbuiltin ("wzero", di_ftype_void, WZERO);
+   iwmmx_mbuiltin ("setwcgr0", void_ftype_int, SETWCGR0);
+@@ -1682,10 +1726,12 @@ arm_init_iwmmxt_builtins (void)
+ static void
+ arm_init_fp16_builtins (void)
+ {
+-  tree fp16_type = make_node (REAL_TYPE);
+-  TYPE_PRECISION (fp16_type) = 16;
+-  layout_type (fp16_type);
+-  (*lang_hooks.types.register_builtin_type) (fp16_type, "__fp16");
++  arm_simd_floatHF_type_node = make_node (REAL_TYPE);
++  TYPE_PRECISION (arm_simd_floatHF_type_node) = GET_MODE_PRECISION (HFmode);
++  layout_type (arm_simd_floatHF_type_node);
++  if (arm_fp16_format)
++    (*lang_hooks.types.register_builtin_type) (arm_simd_floatHF_type_node,
++					       "__fp16");
+ }
+ 
+ static void
+@@ -1730,12 +1776,13 @@ arm_init_builtins (void)
+   if (TARGET_REALLY_IWMMXT)
+     arm_init_iwmmxt_builtins ();
+ 
++  /* This creates the arm_simd_floatHF_type_node so must come before
++     arm_init_neon_builtins which uses it.  */
++  arm_init_fp16_builtins ();
++
+   if (TARGET_NEON)
+     arm_init_neon_builtins ();
+ 
+-  if (arm_fp16_format)
+-    arm_init_fp16_builtins ();
+-
+   if (TARGET_CRC32)
+     arm_init_crc32_builtins ();
+ 
+@@ -1939,6 +1986,7 @@ arm_expand_unop_builtin (enum insn_code icode,
+ typedef enum {
+   NEON_ARG_COPY_TO_REG,
+   NEON_ARG_CONSTANT,
++  NEON_ARG_LANE_INDEX,
+   NEON_ARG_MEMORY,
+   NEON_ARG_STOP
+ } builtin_arg;
+@@ -2055,6 +2103,16 @@ arm_expand_neon_args (rtx target, machine_mode map_mode, int fcode,
+ 		op[argc] = copy_to_mode_reg (mode[argc], op[argc]);
+ 	      break;
+ 
++	    case NEON_ARG_LANE_INDEX:
++	      /* Previous argument must be a vector, which this indexes.  */
++	      gcc_assert (argc > 0);
++	      if (CONST_INT_P (op[argc]))
++		{
++		  enum machine_mode vmode = mode[argc - 1];
++		  neon_lane_bounds (op[argc], 0, GET_MODE_NUNITS (vmode), exp);
++		}
++	      /* Fall through - if the lane index isn't a constant then
++		 the next case will error.  */
+ 	    case NEON_ARG_CONSTANT:
+ 	      if (!(*insn_data[icode].operand[opno].predicate)
+ 		  (op[argc], mode[argc]))
+@@ -2151,14 +2209,31 @@ arm_expand_neon_args (rtx target, machine_mode map_mode, int fcode,
+   return target;
+ }
+ 
+-/* Expand a Neon builtin. These are "special" because they don't have symbolic
++/* Expand a Neon builtin, i.e. those registered only if TARGET_NEON holds.
++   Most of these are "special" because they don't have symbolic
+    constants defined per-instruction or per instruction-variant. Instead, the
+    required info is looked up in the table neon_builtin_data.  */
+ static rtx
+ arm_expand_neon_builtin (int fcode, tree exp, rtx target)
+ {
++  if (fcode == ARM_BUILTIN_NEON_LANE_CHECK)
++    {
++      /* Builtin is only to check bounds of the lane passed to some intrinsics
++	 that are implemented with gcc vector extensions in arm_neon.h.  */
++
++      tree nlanes = CALL_EXPR_ARG (exp, 0);
++      gcc_assert (TREE_CODE (nlanes) == INTEGER_CST);
++      rtx lane_idx = expand_normal (CALL_EXPR_ARG (exp, 1));
++      if (CONST_INT_P (lane_idx))
++	neon_lane_bounds (lane_idx, 0, TREE_INT_CST_LOW (nlanes), exp);
++      else
++	error ("%Klane index must be a constant immediate", exp);
++      /* Don't generate any RTL.  */
++      return const0_rtx;
++    }
++
+   neon_builtin_datum *d =
+-		&neon_builtin_data[fcode - ARM_BUILTIN_NEON_BASE];
++		&neon_builtin_data[fcode - ARM_BUILTIN_NEON_PATTERN_START];
+   enum insn_code icode = d->code;
+   builtin_arg args[SIMD_MAX_BUILTIN_ARGS];
+   int num_args = insn_data[d->code].n_operands;
+@@ -2182,7 +2257,9 @@ arm_expand_neon_builtin (int fcode, tree exp, rtx target)
+       int operands_k = k - is_void;
+       int expr_args_k = k - 1;
+ 
+-      if (d->qualifiers[qualifiers_k] & qualifier_immediate)
++      if (d->qualifiers[qualifiers_k] & qualifier_lane_index)
++	args[k] = NEON_ARG_LANE_INDEX;
++      else if (d->qualifiers[qualifiers_k] & qualifier_immediate)
+ 	args[k] = NEON_ARG_CONSTANT;
+       else if (d->qualifiers[qualifiers_k] & qualifier_maybe_immediate)
+ 	{
+--- a/src/gcc/config/arm/arm-c.c
++++ b/src/gcc/config/arm/arm-c.c
+@@ -31,7 +31,11 @@
+ #include "wide-int.h"
+ #include "inchash.h"
+ #include "tree.h"
++#include "tm_p.h"
+ #include "c-family/c-common.h"
++#include "target.h"
++#include "target-def.h"
++#include "c-family/c-pragma.h"
+ 
+ /* Output C specific EABI object attributes.  These can not be done in
+    arm.c because they require information from the C frontend.  */
+@@ -51,3 +55,223 @@ arm_lang_object_attributes_init (void)
+ {
+   arm_lang_output_object_attributes_hook = arm_output_c_attributes;
+ }
++
++#define builtin_define(TXT) cpp_define (pfile, TXT)
++#define builtin_assert(TXT) cpp_assert (pfile, TXT)
++
++/* Define or undefine macros based on the current target.  If the user does
++   #pragma GCC target, we need to adjust the macros dynamically.  */
++
++static void
++def_or_undef_macro(struct cpp_reader* pfile, const char *name, bool def_p)
++{
++  if (def_p)
++    cpp_define (pfile, name);
++  else
++    cpp_undef (pfile, name);
++}
++
++static void
++arm_cpu_builtins (struct cpp_reader* pfile)
++{
++  def_or_undef_macro (pfile, "__ARM_FEATURE_DSP", TARGET_DSP_MULTIPLY);
++  def_or_undef_macro (pfile, "__ARM_FEATURE_QBIT", TARGET_ARM_QBIT); 
++  def_or_undef_macro (pfile, "__ARM_FEATURE_SAT", TARGET_ARM_SAT);
++  if (TARGET_CRYPTO)
++    builtin_define ("__ARM_FEATURE_CRYPTO");
++  if (unaligned_access)
++    builtin_define ("__ARM_FEATURE_UNALIGNED");
++  if (TARGET_CRC32)
++    builtin_define ("__ARM_FEATURE_CRC32");
++
++  def_or_undef_macro (pfile, "__ARM_32BIT_STATE", TARGET_32BIT); 
++
++  if (TARGET_ARM_FEATURE_LDREX)
++    builtin_define_with_int_value ("__ARM_FEATURE_LDREX", 
++				   TARGET_ARM_FEATURE_LDREX);
++  else
++    cpp_undef (pfile, "__ARM_FEATURE_LDREX");
++
++  def_or_undef_macro (pfile, "__ARM_FEATURE_CLZ",
++		      ((TARGET_ARM_ARCH >= 5 && !TARGET_THUMB)
++		       || TARGET_ARM_ARCH_ISA_THUMB >=2));
++
++  def_or_undef_macro (pfile, "__ARM_FEATURE_SIMD32", TARGET_INT_SIMD);
++
++  builtin_define_with_int_value ("__ARM_SIZEOF_MINIMAL_ENUM",
++				 flag_short_enums ? 1 : 4);
++  builtin_define_type_sizeof ("__ARM_SIZEOF_WCHAR_T", wchar_type_node);
++  if (TARGET_ARM_ARCH_PROFILE)
++    builtin_define_with_int_value ("__ARM_ARCH_PROFILE",
++				   TARGET_ARM_ARCH_PROFILE);
++
++  /* Define __arm__ even when in thumb mode, for
++     consistency with armcc.  */
++  builtin_define ("__arm__");
++  if (TARGET_ARM_ARCH)
++    builtin_define_with_int_value ("__ARM_ARCH", TARGET_ARM_ARCH);
++  if (arm_arch_notm)
++    builtin_define ("__ARM_ARCH_ISA_ARM");
++  builtin_define ("__APCS_32__");
++
++  def_or_undef_macro (pfile, "__thumb__", TARGET_THUMB);
++  def_or_undef_macro (pfile, "__thumb2__", TARGET_THUMB2);
++  if (TARGET_BIG_END)
++    def_or_undef_macro (pfile, "__THUMBEB__", TARGET_THUMB);
++  else
++    def_or_undef_macro (pfile, "__THUMBEL__", TARGET_THUMB);
++
++  if (TARGET_ARM_ARCH_ISA_THUMB)
++    builtin_define_with_int_value ("__ARM_ARCH_ISA_THUMB",
++				   TARGET_ARM_ARCH_ISA_THUMB);
++
++  if (TARGET_BIG_END)
++    {
++      builtin_define ("__ARMEB__");
++      builtin_define ("__ARM_BIG_ENDIAN");
++    }
++  else
++    {
++      builtin_define ("__ARMEL__");
++    }
++
++  if (TARGET_SOFT_FLOAT)
++    builtin_define ("__SOFTFP__");
++
++  if (TARGET_VFP)
++    builtin_define ("__VFP_FP__");
++	
++  if (TARGET_ARM_FP)
++    builtin_define_with_int_value ("__ARM_FP", TARGET_ARM_FP);
++  if (arm_fp16_format == ARM_FP16_FORMAT_IEEE)
++    builtin_define ("__ARM_FP16_FORMAT_IEEE");
++  if (arm_fp16_format == ARM_FP16_FORMAT_ALTERNATIVE)
++    builtin_define ("__ARM_FP16_FORMAT_ALTERNATIVE");
++  if (TARGET_FMA)
++    builtin_define ("__ARM_FEATURE_FMA");
++
++  if (TARGET_NEON)
++    {
++      builtin_define ("__ARM_NEON__");
++      builtin_define ("__ARM_NEON");
++    }
++  if (TARGET_NEON_FP)
++    builtin_define_with_int_value ("__ARM_NEON_FP", TARGET_NEON_FP);
++  
++  /* Add a define for interworking. Needed when building libgcc.a.  */
++  if (arm_cpp_interwork)
++    builtin_define ("__THUMB_INTERWORK__");
++
++
++  builtin_define (arm_arch_name);
++  if (arm_arch_xscale)
++    builtin_define ("__XSCALE__");
++  if (arm_arch_iwmmxt)
++    {
++      builtin_define ("__IWMMXT__");
++      builtin_define ("__ARM_WMMX");
++    }
++  if (arm_arch_iwmmxt2)
++    builtin_define ("__IWMMXT2__");
++  /* ARMv6KZ was originally identified as the misspelled __ARM_ARCH_6ZK__.  To
++     preserve the existing behaviour, the misspelled feature macro must still be
++     defined.  */
++  if (arm_arch6kz)
++    builtin_define ("__ARM_ARCH_6ZK__");
++  if (TARGET_AAPCS_BASED)
++    {
++      if (arm_pcs_default == ARM_PCS_AAPCS_VFP)
++	builtin_define ("__ARM_PCS_VFP");
++      else if (arm_pcs_default == ARM_PCS_AAPCS)
++	builtin_define ("__ARM_PCS");
++      builtin_define ("__ARM_EABI__");
++    }
++
++  def_or_undef_macro (pfile, "__ARM_ARCH_EXT_IDIV__", TARGET_IDIV);
++  def_or_undef_macro (pfile, "__ARM_FEATURE_IDIV", TARGET_IDIV);
++
++  def_or_undef_macro (pfile, "__ARM_ASM_SYNTAX_UNIFIED__", inline_asm_unified);
++}
++
++void
++arm_cpu_cpp_builtins (struct cpp_reader * pfile)
++{
++  builtin_assert ("cpu=arm");
++  builtin_assert ("machine=arm");
++
++  arm_cpu_builtins (pfile);
++}
++
++/* Hook to validate the current #pragma GCC target and set the arch custom
++   mode state.  If ARGS is NULL, then POP_TARGET is used to reset
++   the options.  */
++static bool
++arm_pragma_target_parse (tree args, tree pop_target)
++{
++  tree prev_tree = build_target_option_node (&global_options);
++  tree cur_tree;
++  struct cl_target_option *prev_opt;
++  struct cl_target_option *cur_opt;
++
++  if (! args)
++    {
++      cur_tree = ((pop_target) ? pop_target : target_option_default_node);
++      cl_target_option_restore (&global_options,
++				TREE_TARGET_OPTION (cur_tree));
++    }
++  else
++    {
++      cur_tree = arm_valid_target_attribute_tree (args, &global_options,
++						  &global_options_set);
++      if (cur_tree == NULL_TREE)
++	{
++	  cl_target_option_restore (&global_options,
++				    TREE_TARGET_OPTION (prev_tree));
++	  return false;
++	}
++    }
++
++  target_option_current_node = cur_tree;
++  arm_reset_previous_fndecl ();
++
++  /* Figure out the previous mode.  */
++  prev_opt  = TREE_TARGET_OPTION (prev_tree);
++  cur_opt   = TREE_TARGET_OPTION (cur_tree);
++
++  gcc_assert (prev_opt);
++  gcc_assert (cur_opt);
++
++  if (cur_opt->x_target_flags != prev_opt->x_target_flags)
++    {
++      /* For the definitions, ensure all newly defined macros are considered
++	 as used for -Wunused-macros.  There is no point warning about the
++	 compiler predefined macros.  */
++      cpp_options *cpp_opts = cpp_get_options (parse_in);
++      unsigned char saved_warn_unused_macros = cpp_opts->warn_unused_macros;
++      cpp_opts->warn_unused_macros = 0;
++
++      /* Update macros.  */
++      gcc_assert (cur_opt->x_target_flags == target_flags);
++      arm_cpu_builtins (parse_in);
++
++      cpp_opts->warn_unused_macros = saved_warn_unused_macros;
++    }
++
++  return true;
++}
++
++/* Register target pragmas.  We need to add the hook for parsing #pragma GCC
++   option here rather than in arm.c since it will pull in various preprocessor
++   functions, and those are not present in languages like fortran without a
++   preprocessor.  */
++
++void
++arm_register_target_pragmas (void)
++{
++  /* Update pragma hook to allow parsing #pragma GCC target.  */
++  targetm.target_option.pragma_parse = arm_pragma_target_parse;
++
++#ifdef REGISTER_SUBTARGET_PRAGMAS
++  REGISTER_SUBTARGET_PRAGMAS ();
++#endif
++}
+--- a/src/gcc/config/arm/arm-cores.def
++++ b/src/gcc/config/arm/arm-cores.def
+@@ -33,7 +33,7 @@
+    The TUNE_IDENT is the name of the core for which scheduling decisions
+    should be made, represented as an identifier.
+    ARCH is the architecture revision implemented by the chip.
+-   FLAGS are the bitwise-or of the traits that apply to that core.
++   FLAGS is the set of feature flags of that core.
+    This need not include flags implied by the architecture.
+    COSTS is the name of the rtx_costs routine to use.
+ 
+@@ -43,134 +43,134 @@
+    Some tools assume no whitespace up to the first "," in each entry.  */
+ 
+ /* V2/V2A Architecture Processors */
+-ARM_CORE("arm2", 	arm2, arm2,	2, FL_CO_PROC | FL_MODE26, slowmul)
+-ARM_CORE("arm250", 	arm250, arm250,	2, FL_CO_PROC | FL_MODE26, slowmul)
+-ARM_CORE("arm3",	arm3, arm3,	2, FL_CO_PROC | FL_MODE26, slowmul)
++ARM_CORE("arm2",	arm2, arm2,	2,	ARM_FSET_MAKE_CPU1 (FL_CO_PROC | FL_MODE26 | FL_FOR_ARCH2), slowmul)
++ARM_CORE("arm250",	arm250, arm250,	2,	ARM_FSET_MAKE_CPU1 (FL_CO_PROC | FL_MODE26 | FL_FOR_ARCH2), slowmul)
++ARM_CORE("arm3",	arm3, arm3,	2,	ARM_FSET_MAKE_CPU1 (FL_CO_PROC | FL_MODE26 | FL_FOR_ARCH2), slowmul)
+ 
+ /* V3 Architecture Processors */
+-ARM_CORE("arm6",	arm6, arm6,		3, FL_CO_PROC | FL_MODE26, slowmul)
+-ARM_CORE("arm60",	arm60, arm60,		3, FL_CO_PROC | FL_MODE26, slowmul)
+-ARM_CORE("arm600",	arm600, arm600,		3, FL_CO_PROC | FL_MODE26 | FL_WBUF, slowmul)
+-ARM_CORE("arm610",	arm610, arm610,		3, FL_MODE26 | FL_WBUF, slowmul)
+-ARM_CORE("arm620",	arm620, arm620,		3, FL_CO_PROC | FL_MODE26 | FL_WBUF, slowmul)
+-ARM_CORE("arm7",	arm7, arm7,		3, FL_CO_PROC | FL_MODE26, slowmul)
+-ARM_CORE("arm7d",	arm7d, arm7d,		3, FL_CO_PROC | FL_MODE26, slowmul)
+-ARM_CORE("arm7di",	arm7di, arm7di,		3, FL_CO_PROC | FL_MODE26, slowmul)
+-ARM_CORE("arm70",	arm70, arm70,		3, FL_CO_PROC | FL_MODE26, slowmul)
+-ARM_CORE("arm700",	arm700, arm700,		3, FL_CO_PROC | FL_MODE26 | FL_WBUF, slowmul)
+-ARM_CORE("arm700i",	arm700i, arm700i,	3, FL_CO_PROC | FL_MODE26 | FL_WBUF, slowmul)
+-ARM_CORE("arm710",	arm710, arm710,		3, FL_MODE26 | FL_WBUF, slowmul)
+-ARM_CORE("arm720",	arm720, arm720,		3, FL_MODE26 | FL_WBUF, slowmul)
+-ARM_CORE("arm710c",	arm710c, arm710c,	3, FL_MODE26 | FL_WBUF, slowmul)
+-ARM_CORE("arm7100",	arm7100, arm7100,	3, FL_MODE26 | FL_WBUF, slowmul)
+-ARM_CORE("arm7500",	arm7500, arm7500,	3, FL_MODE26 | FL_WBUF, slowmul)
++ARM_CORE("arm6",	arm6, arm6,		3,	ARM_FSET_MAKE_CPU1 (FL_CO_PROC | FL_MODE26 | FL_FOR_ARCH3), slowmul)
++ARM_CORE("arm60",	arm60, arm60,		3,	ARM_FSET_MAKE_CPU1 (FL_CO_PROC | FL_MODE26 | FL_FOR_ARCH3), slowmul)
++ARM_CORE("arm600",	arm600, arm600,		3,	ARM_FSET_MAKE_CPU1 (FL_CO_PROC | FL_MODE26 | FL_WBUF | FL_FOR_ARCH3), slowmul)
++ARM_CORE("arm610",	arm610, arm610,		3,	ARM_FSET_MAKE_CPU1 (FL_MODE26 | FL_WBUF | FL_FOR_ARCH3), slowmul)
++ARM_CORE("arm620",	arm620, arm620,		3,	ARM_FSET_MAKE_CPU1 (FL_CO_PROC | FL_MODE26 | FL_WBUF | FL_FOR_ARCH3), slowmul)
++ARM_CORE("arm7",	arm7, arm7,		3,	ARM_FSET_MAKE_CPU1 (FL_CO_PROC | FL_MODE26 | FL_FOR_ARCH3), slowmul)
++ARM_CORE("arm7d",	arm7d, arm7d,		3,	ARM_FSET_MAKE_CPU1 (FL_CO_PROC | FL_MODE26 | FL_FOR_ARCH3), slowmul)
++ARM_CORE("arm7di",	arm7di, arm7di,		3,	ARM_FSET_MAKE_CPU1 (FL_CO_PROC | FL_MODE26 | FL_FOR_ARCH3), slowmul)
++ARM_CORE("arm70",	arm70, arm70,		3,	ARM_FSET_MAKE_CPU1 (FL_CO_PROC | FL_MODE26 | FL_FOR_ARCH3), slowmul)
++ARM_CORE("arm700",	arm700, arm700,		3,	ARM_FSET_MAKE_CPU1 (FL_CO_PROC | FL_MODE26 | FL_WBUF | FL_FOR_ARCH3), slowmul)
++ARM_CORE("arm700i",	arm700i, arm700i,	3,	ARM_FSET_MAKE_CPU1 (FL_CO_PROC | FL_MODE26 | FL_WBUF | FL_FOR_ARCH3), slowmul)
++ARM_CORE("arm710",	arm710, arm710,		3,	ARM_FSET_MAKE_CPU1 (FL_MODE26 | FL_WBUF | FL_FOR_ARCH3), slowmul)
++ARM_CORE("arm720",	arm720, arm720,		3,	ARM_FSET_MAKE_CPU1 (FL_MODE26 | FL_WBUF | FL_FOR_ARCH3), slowmul)
++ARM_CORE("arm710c",	arm710c, arm710c,	3,	ARM_FSET_MAKE_CPU1 (FL_MODE26 | FL_WBUF | FL_FOR_ARCH3), slowmul)
++ARM_CORE("arm7100",	arm7100, arm7100,	3,	ARM_FSET_MAKE_CPU1 (FL_MODE26 | FL_WBUF | FL_FOR_ARCH3), slowmul)
++ARM_CORE("arm7500",	arm7500, arm7500,	3,	ARM_FSET_MAKE_CPU1 (FL_MODE26 | FL_WBUF | FL_FOR_ARCH3), slowmul)
+ /* Doesn't have an external co-proc, but does have embedded fpa. */
+-ARM_CORE("arm7500fe", arm7500fe, arm7500fe,	3, FL_CO_PROC | FL_MODE26 | FL_WBUF, slowmul)
++ARM_CORE("arm7500fe", arm7500fe, arm7500fe,	3,	ARM_FSET_MAKE_CPU1 (FL_CO_PROC | FL_MODE26 | FL_WBUF | FL_FOR_ARCH3), slowmul)
+ 
+ /* V3M Architecture Processors */
+ /* arm7m doesn't exist on its own, but only with D, ("and", and I), but
+    those don't alter the code, so arm7m is sometimes used.  */
+-ARM_CORE("arm7m",   arm7m, arm7m,	3M, FL_CO_PROC | FL_MODE26, fastmul)
+-ARM_CORE("arm7dm",  arm7dm, arm7dm,	3M, FL_CO_PROC | FL_MODE26, fastmul)
+-ARM_CORE("arm7dmi", arm7dmi, arm7dmi,	3M, FL_CO_PROC | FL_MODE26, fastmul)
++ARM_CORE("arm7m",   arm7m, arm7m,	3M,	ARM_FSET_MAKE_CPU1 (FL_CO_PROC | FL_MODE26 | FL_FOR_ARCH3M), fastmul)
++ARM_CORE("arm7dm",  arm7dm, arm7dm,	3M,	ARM_FSET_MAKE_CPU1 (FL_CO_PROC | FL_MODE26 | FL_FOR_ARCH3M), fastmul)
++ARM_CORE("arm7dmi", arm7dmi, arm7dmi,	3M,	ARM_FSET_MAKE_CPU1 (FL_CO_PROC | FL_MODE26 | FL_FOR_ARCH3M), fastmul)
+ 
+ /* V4 Architecture Processors */
+-ARM_CORE("arm8",          arm8, arm8,			4, FL_MODE26 | FL_LDSCHED, fastmul)
+-ARM_CORE("arm810",        arm810, arm810,		4, FL_MODE26 | FL_LDSCHED, fastmul)
+-ARM_CORE("strongarm",     strongarm, strongarm,		4, FL_MODE26 | FL_LDSCHED | FL_STRONG, strongarm)
+-ARM_CORE("strongarm110",  strongarm110, strongarm110,	4, FL_MODE26 | FL_LDSCHED | FL_STRONG, strongarm)
+-ARM_CORE("strongarm1100", strongarm1100, strongarm1100, 4, FL_MODE26 | FL_LDSCHED | FL_STRONG, strongarm)
+-ARM_CORE("strongarm1110", strongarm1110, strongarm1110, 4, FL_MODE26 | FL_LDSCHED | FL_STRONG, strongarm)
+-ARM_CORE("fa526",         fa526, fa526,			4, FL_LDSCHED, fastmul)
+-ARM_CORE("fa626",         fa626, fa626,			4, FL_LDSCHED, fastmul)
++ARM_CORE("arm8",          arm8, arm8,			4,	ARM_FSET_MAKE_CPU1 (FL_MODE26 | FL_LDSCHED | FL_FOR_ARCH4), fastmul)
++ARM_CORE("arm810",        arm810, arm810,		4,	ARM_FSET_MAKE_CPU1 (FL_MODE26 | FL_LDSCHED | FL_FOR_ARCH4), fastmul)
++ARM_CORE("strongarm",     strongarm, strongarm,		4,	ARM_FSET_MAKE_CPU1 (FL_MODE26 | FL_LDSCHED | FL_STRONG | FL_FOR_ARCH4), strongarm)
++ARM_CORE("strongarm110",  strongarm110, strongarm110,	4,	ARM_FSET_MAKE_CPU1 (FL_MODE26 | FL_LDSCHED | FL_STRONG | FL_FOR_ARCH4), strongarm)
++ARM_CORE("strongarm1100", strongarm1100, strongarm1100, 4,	ARM_FSET_MAKE_CPU1 (FL_MODE26 | FL_LDSCHED | FL_STRONG | FL_FOR_ARCH4), strongarm)
++ARM_CORE("strongarm1110", strongarm1110, strongarm1110, 4,	ARM_FSET_MAKE_CPU1 (FL_MODE26 | FL_LDSCHED | FL_STRONG | FL_FOR_ARCH4), strongarm)
++ARM_CORE("fa526",         fa526, fa526,			4,	ARM_FSET_MAKE_CPU1 (FL_LDSCHED | FL_FOR_ARCH4), fastmul)
++ARM_CORE("fa626",         fa626, fa626,			4,	ARM_FSET_MAKE_CPU1 (FL_LDSCHED | FL_FOR_ARCH4), fastmul)
+ 
+ /* V4T Architecture Processors */
+-ARM_CORE("arm7tdmi",	arm7tdmi, arm7tdmi,	4T, FL_CO_PROC, fastmul)
+-ARM_CORE("arm7tdmi-s",	arm7tdmis, arm7tdmis,	4T, FL_CO_PROC, fastmul)
+-ARM_CORE("arm710t",	arm710t, arm710t,	4T, FL_WBUF,    fastmul)
+-ARM_CORE("arm720t",	arm720t, arm720t,	4T, FL_WBUF,    fastmul)
+-ARM_CORE("arm740t",	arm740t, arm740t,	4T, FL_WBUF,    fastmul)
+-ARM_CORE("arm9",	arm9, arm9,		4T, FL_LDSCHED, fastmul)
+-ARM_CORE("arm9tdmi",	arm9tdmi, arm9tdmi,	4T, FL_LDSCHED, fastmul)
+-ARM_CORE("arm920",	arm920, arm920,		4T, FL_LDSCHED, fastmul)
+-ARM_CORE("arm920t",	arm920t, arm920t,	4T, FL_LDSCHED, fastmul)
+-ARM_CORE("arm922t",	arm922t, arm922t,	4T, FL_LDSCHED, fastmul)
+-ARM_CORE("arm940t",	arm940t, arm940t,	4T, FL_LDSCHED, fastmul)
+-ARM_CORE("ep9312",	ep9312, ep9312,		4T, FL_LDSCHED, fastmul)
++ARM_CORE("arm7tdmi",	arm7tdmi, arm7tdmi,	4T,	ARM_FSET_MAKE_CPU1 (FL_CO_PROC | FL_FOR_ARCH4T), fastmul)
++ARM_CORE("arm7tdmi-s",	arm7tdmis, arm7tdmis,	4T,	ARM_FSET_MAKE_CPU1 (FL_CO_PROC | FL_FOR_ARCH4T), fastmul)
++ARM_CORE("arm710t",	arm710t, arm710t,	4T,	ARM_FSET_MAKE_CPU1 (FL_WBUF | FL_FOR_ARCH4T),    fastmul)
++ARM_CORE("arm720t",	arm720t, arm720t,	4T,	ARM_FSET_MAKE_CPU1 (FL_WBUF | FL_FOR_ARCH4T),    fastmul)
++ARM_CORE("arm740t",	arm740t, arm740t,	4T,	ARM_FSET_MAKE_CPU1 (FL_WBUF | FL_FOR_ARCH4T),    fastmul)
++ARM_CORE("arm9",	arm9, arm9,		4T,	ARM_FSET_MAKE_CPU1 (FL_LDSCHED | FL_FOR_ARCH4T), fastmul)
++ARM_CORE("arm9tdmi",	arm9tdmi, arm9tdmi,	4T,	ARM_FSET_MAKE_CPU1 (FL_LDSCHED | FL_FOR_ARCH4T), fastmul)
++ARM_CORE("arm920",	arm920, arm920,		4T,	ARM_FSET_MAKE_CPU1 (FL_LDSCHED | FL_FOR_ARCH4T), fastmul)
++ARM_CORE("arm920t",	arm920t, arm920t,	4T,	ARM_FSET_MAKE_CPU1 (FL_LDSCHED | FL_FOR_ARCH4T), fastmul)
++ARM_CORE("arm922t",	arm922t, arm922t,	4T,	ARM_FSET_MAKE_CPU1 (FL_LDSCHED | FL_FOR_ARCH4T), fastmul)
++ARM_CORE("arm940t",	arm940t, arm940t,	4T,	ARM_FSET_MAKE_CPU1 (FL_LDSCHED | FL_FOR_ARCH4T), fastmul)
++ARM_CORE("ep9312",	ep9312, ep9312,		4T,	ARM_FSET_MAKE_CPU1 (FL_LDSCHED | FL_FOR_ARCH4T), fastmul)
+ 
+ /* V5T Architecture Processors */
+-ARM_CORE("arm10tdmi",	arm10tdmi, arm10tdmi,	5T, FL_LDSCHED, fastmul)
+-ARM_CORE("arm1020t",	arm1020t, arm1020t,	5T, FL_LDSCHED, fastmul)
++ARM_CORE("arm10tdmi",	arm10tdmi, arm10tdmi,	5T,	ARM_FSET_MAKE_CPU1 (FL_LDSCHED | FL_FOR_ARCH5T), fastmul)
++ARM_CORE("arm1020t",	arm1020t, arm1020t,	5T,	ARM_FSET_MAKE_CPU1 (FL_LDSCHED | FL_FOR_ARCH5T), fastmul)
+ 
+ /* V5TE Architecture Processors */
+-ARM_CORE("arm9e",	arm9e, arm9e,		5TE, FL_LDSCHED, 9e)
+-ARM_CORE("arm946e-s",	arm946es, arm946es,	5TE, FL_LDSCHED, 9e)
+-ARM_CORE("arm966e-s",	arm966es, arm966es,	5TE, FL_LDSCHED, 9e)
+-ARM_CORE("arm968e-s",	arm968es, arm968es,	5TE, FL_LDSCHED, 9e)
+-ARM_CORE("arm10e",	arm10e, arm10e,		5TE, FL_LDSCHED, fastmul)
+-ARM_CORE("arm1020e",	arm1020e, arm1020e,	5TE, FL_LDSCHED, fastmul)
+-ARM_CORE("arm1022e",	arm1022e, arm1022e,	5TE, FL_LDSCHED, fastmul)
+-ARM_CORE("xscale",	xscale, xscale,		5TE, FL_LDSCHED | FL_STRONG | FL_XSCALE, xscale)
+-ARM_CORE("iwmmxt",	iwmmxt, iwmmxt,		5TE, FL_LDSCHED | FL_STRONG | FL_XSCALE | FL_IWMMXT, xscale)
+-ARM_CORE("iwmmxt2",	iwmmxt2, iwmmxt2,	5TE, FL_LDSCHED | FL_STRONG | FL_XSCALE | FL_IWMMXT | FL_IWMMXT2, xscale)
+-ARM_CORE("fa606te",	fa606te, fa606te,	5TE, FL_LDSCHED, 9e)
+-ARM_CORE("fa626te",	fa626te, fa626te,	5TE, FL_LDSCHED, 9e)
+-ARM_CORE("fmp626",	fmp626, fmp626,		5TE, FL_LDSCHED, 9e)
+-ARM_CORE("fa726te",	fa726te, fa726te,	5TE, FL_LDSCHED, fa726te)
++ARM_CORE("arm9e",	arm9e, arm9e,		5TE,	ARM_FSET_MAKE_CPU1 (FL_LDSCHED | FL_FOR_ARCH5TE), 9e)
++ARM_CORE("arm946e-s",	arm946es, arm946es,	5TE,	ARM_FSET_MAKE_CPU1 (FL_LDSCHED | FL_FOR_ARCH5TE), 9e)
++ARM_CORE("arm966e-s",	arm966es, arm966es,	5TE,	ARM_FSET_MAKE_CPU1 (FL_LDSCHED | FL_FOR_ARCH5TE), 9e)
++ARM_CORE("arm968e-s",	arm968es, arm968es,	5TE,	ARM_FSET_MAKE_CPU1 (FL_LDSCHED | FL_FOR_ARCH5TE), 9e)
++ARM_CORE("arm10e",	arm10e, arm10e,		5TE,	ARM_FSET_MAKE_CPU1 (FL_LDSCHED | FL_FOR_ARCH5TE), fastmul)
++ARM_CORE("arm1020e",	arm1020e, arm1020e,	5TE,	ARM_FSET_MAKE_CPU1 (FL_LDSCHED | FL_FOR_ARCH5TE), fastmul)
++ARM_CORE("arm1022e",	arm1022e, arm1022e,	5TE,	ARM_FSET_MAKE_CPU1 (FL_LDSCHED | FL_FOR_ARCH5TE), fastmul)
++ARM_CORE("xscale",	xscale, xscale,		5TE,	ARM_FSET_MAKE_CPU1 (FL_LDSCHED | FL_STRONG | FL_XSCALE | FL_FOR_ARCH5TE), xscale)
++ARM_CORE("iwmmxt",	iwmmxt, iwmmxt,		5TE,	ARM_FSET_MAKE_CPU1 (FL_LDSCHED | FL_STRONG | FL_XSCALE | FL_IWMMXT | FL_FOR_ARCH5TE), xscale)
++ARM_CORE("iwmmxt2",	iwmmxt2, iwmmxt2,	5TE,	ARM_FSET_MAKE_CPU1 (FL_LDSCHED | FL_STRONG | FL_XSCALE | FL_IWMMXT | FL_IWMMXT2 | FL_FOR_ARCH5TE), xscale)
++ARM_CORE("fa606te",	fa606te, fa606te,	5TE,	ARM_FSET_MAKE_CPU1 (FL_LDSCHED | FL_FOR_ARCH5TE), 9e)
++ARM_CORE("fa626te",	fa626te, fa626te,	5TE,	ARM_FSET_MAKE_CPU1 (FL_LDSCHED | FL_FOR_ARCH5TE), 9e)
++ARM_CORE("fmp626",	fmp626, fmp626,		5TE,	ARM_FSET_MAKE_CPU1 (FL_LDSCHED | FL_FOR_ARCH5TE), 9e)
++ARM_CORE("fa726te",	fa726te, fa726te,	5TE,	ARM_FSET_MAKE_CPU1 (FL_LDSCHED | FL_FOR_ARCH5TE), fa726te)
+ 
+ /* V5TEJ Architecture Processors */
+-ARM_CORE("arm926ej-s",	arm926ejs, arm926ejs,	5TEJ, FL_LDSCHED, 9e)
+-ARM_CORE("arm1026ej-s",	arm1026ejs, arm1026ejs,	5TEJ, FL_LDSCHED, 9e)
++ARM_CORE("arm926ej-s",	arm926ejs, arm926ejs,	5TEJ,	ARM_FSET_MAKE_CPU1 (FL_LDSCHED | FL_FOR_ARCH5TEJ), 9e)
++ARM_CORE("arm1026ej-s",	arm1026ejs, arm1026ejs,	5TEJ,	ARM_FSET_MAKE_CPU1 (FL_LDSCHED | FL_FOR_ARCH5TEJ), 9e)
+ 
+ /* V6 Architecture Processors */
+-ARM_CORE("arm1136j-s",		arm1136js, arm1136js,		6J,  FL_LDSCHED, 9e)
+-ARM_CORE("arm1136jf-s",		arm1136jfs, arm1136jfs,		6J,  FL_LDSCHED | FL_VFPV2, 9e)
+-ARM_CORE("arm1176jz-s",		arm1176jzs, arm1176jzs,		6ZK, FL_LDSCHED, 9e)
+-ARM_CORE("arm1176jzf-s",	arm1176jzfs, arm1176jzfs,	6ZK, FL_LDSCHED | FL_VFPV2, 9e)
+-ARM_CORE("mpcorenovfp",		mpcorenovfp, mpcorenovfp,	6K,  FL_LDSCHED, 9e)
+-ARM_CORE("mpcore",		mpcore, mpcore,			6K,  FL_LDSCHED | FL_VFPV2, 9e)
+-ARM_CORE("arm1156t2-s",		arm1156t2s, arm1156t2s,		6T2, FL_LDSCHED, v6t2)
+-ARM_CORE("arm1156t2f-s",	arm1156t2fs, arm1156t2fs,	6T2, FL_LDSCHED | FL_VFPV2, v6t2)
++ARM_CORE("arm1136j-s",		arm1136js, arm1136js,		6J,	ARM_FSET_MAKE_CPU1 (FL_LDSCHED | FL_FOR_ARCH6J), 9e)
++ARM_CORE("arm1136jf-s",		arm1136jfs, arm1136jfs,		6J,	ARM_FSET_MAKE_CPU1 (FL_LDSCHED | FL_VFPV2 | FL_FOR_ARCH6J), 9e)
++ARM_CORE("arm1176jz-s",		arm1176jzs, arm1176jzs,		6KZ,	ARM_FSET_MAKE_CPU1 (FL_LDSCHED | FL_FOR_ARCH6KZ), 9e)
++ARM_CORE("arm1176jzf-s",	arm1176jzfs, arm1176jzfs,	6KZ,	ARM_FSET_MAKE_CPU1 (FL_LDSCHED | FL_VFPV2 | FL_FOR_ARCH6KZ), 9e)
++ARM_CORE("mpcorenovfp",		mpcorenovfp, mpcorenovfp,	6K,	ARM_FSET_MAKE_CPU1 (FL_LDSCHED | FL_FOR_ARCH6K), 9e)
++ARM_CORE("mpcore",		mpcore, mpcore,			6K,	ARM_FSET_MAKE_CPU1 (FL_LDSCHED | FL_VFPV2 | FL_FOR_ARCH6K), 9e)
++ARM_CORE("arm1156t2-s",		arm1156t2s, arm1156t2s,		6T2,	ARM_FSET_MAKE_CPU1 (FL_LDSCHED | FL_FOR_ARCH6T2), v6t2)
++ARM_CORE("arm1156t2f-s",	arm1156t2fs, arm1156t2fs,	6T2,	ARM_FSET_MAKE_CPU1 (FL_LDSCHED | FL_VFPV2 | FL_FOR_ARCH6T2), v6t2)
+ 
+ /* V6M Architecture Processors */
+-ARM_CORE("cortex-m1",		cortexm1, cortexm1,		6M, FL_LDSCHED, v6m)
+-ARM_CORE("cortex-m0",		cortexm0, cortexm0,		6M, FL_LDSCHED, v6m)
+-ARM_CORE("cortex-m0plus",	cortexm0plus, cortexm0plus,	6M, FL_LDSCHED, v6m)
++ARM_CORE("cortex-m1",		cortexm1, cortexm1,		6M,	ARM_FSET_MAKE_CPU1 (FL_LDSCHED | FL_FOR_ARCH6M), v6m)
++ARM_CORE("cortex-m0",		cortexm0, cortexm0,		6M,	ARM_FSET_MAKE_CPU1 (FL_LDSCHED | FL_FOR_ARCH6M), v6m)
++ARM_CORE("cortex-m0plus",	cortexm0plus, cortexm0plus,	6M,	ARM_FSET_MAKE_CPU1 (FL_LDSCHED | FL_FOR_ARCH6M), v6m)
+ 
+ /* V6M Architecture Processors for small-multiply implementations.  */
+-ARM_CORE("cortex-m1.small-multiply",	cortexm1smallmultiply, cortexm1,	6M, FL_LDSCHED | FL_SMALLMUL, v6m)
+-ARM_CORE("cortex-m0.small-multiply",	cortexm0smallmultiply, cortexm0,	6M, FL_LDSCHED | FL_SMALLMUL, v6m)
+-ARM_CORE("cortex-m0plus.small-multiply",cortexm0plussmallmultiply, cortexm0plus,6M, FL_LDSCHED | FL_SMALLMUL, v6m)
++ARM_CORE("cortex-m1.small-multiply",	cortexm1smallmultiply, cortexm1,	6M,	ARM_FSET_MAKE_CPU1 (FL_LDSCHED | FL_SMALLMUL | FL_FOR_ARCH6M), v6m)
++ARM_CORE("cortex-m0.small-multiply",	cortexm0smallmultiply, cortexm0,	6M,	ARM_FSET_MAKE_CPU1 (FL_LDSCHED | FL_SMALLMUL | FL_FOR_ARCH6M), v6m)
++ARM_CORE("cortex-m0plus.small-multiply",cortexm0plussmallmultiply, cortexm0plus,6M,	ARM_FSET_MAKE_CPU1 (FL_LDSCHED | FL_SMALLMUL | FL_FOR_ARCH6M), v6m)
+ 
+ /* V7 Architecture Processors */
+-ARM_CORE("generic-armv7-a",	genericv7a, genericv7a,		7A,  FL_LDSCHED, cortex)
+-ARM_CORE("cortex-a5",		cortexa5, cortexa5,		7A,  FL_LDSCHED, cortex_a5)
+-ARM_CORE("cortex-a7",		cortexa7, cortexa7,		7A,  FL_LDSCHED | FL_THUMB_DIV | FL_ARM_DIV, cortex_a7)
+-ARM_CORE("cortex-a8",		cortexa8, cortexa8,		7A,  FL_LDSCHED, cortex_a8)
+-ARM_CORE("cortex-a9",		cortexa9, cortexa9,		7A,  FL_LDSCHED, cortex_a9)
+-ARM_CORE("cortex-a12",	  	cortexa12, cortexa17,		7A,  FL_LDSCHED | FL_THUMB_DIV | FL_ARM_DIV, cortex_a12)
+-ARM_CORE("cortex-a15",		cortexa15, cortexa15,		7A,  FL_LDSCHED | FL_THUMB_DIV | FL_ARM_DIV, cortex_a15)
+-ARM_CORE("cortex-a17",		cortexa17, cortexa17,		7A,  FL_LDSCHED | FL_THUMB_DIV | FL_ARM_DIV, cortex_a12)
+-ARM_CORE("cortex-r4",		cortexr4, cortexr4,		7R,  FL_LDSCHED, cortex)
+-ARM_CORE("cortex-r4f",		cortexr4f, cortexr4f,		7R,  FL_LDSCHED, cortex)
+-ARM_CORE("cortex-r5",		cortexr5, cortexr5,		7R,  FL_LDSCHED | FL_ARM_DIV, cortex)
+-ARM_CORE("cortex-r7",		cortexr7, cortexr7,		7R,  FL_LDSCHED | FL_ARM_DIV, cortex)
+-ARM_CORE("cortex-m7",		cortexm7, cortexm7,		7EM, FL_LDSCHED | FL_NO_VOLATILE_CE, cortex_m7)
+-ARM_CORE("cortex-m4",		cortexm4, cortexm4,		7EM, FL_LDSCHED, v7m)
+-ARM_CORE("cortex-m3",		cortexm3, cortexm3,		7M,  FL_LDSCHED, v7m)
+-ARM_CORE("marvell-pj4",		marvell_pj4, marvell_pj4,	7A,  FL_LDSCHED, 9e)
++ARM_CORE("generic-armv7-a",	genericv7a, genericv7a,		7A,	ARM_FSET_MAKE_CPU1 (FL_LDSCHED | FL_FOR_ARCH7A), cortex)
++ARM_CORE("cortex-a5",		cortexa5, cortexa5,		7A,	ARM_FSET_MAKE_CPU1 (FL_LDSCHED | FL_FOR_ARCH7A), cortex_a5)
++ARM_CORE("cortex-a7",		cortexa7, cortexa7,		7A,	ARM_FSET_MAKE_CPU1 (FL_LDSCHED | FL_THUMB_DIV | FL_ARM_DIV | FL_FOR_ARCH7A), cortex_a7)
++ARM_CORE("cortex-a8",		cortexa8, cortexa8,		7A,	ARM_FSET_MAKE_CPU1 (FL_LDSCHED | FL_FOR_ARCH7A), cortex_a8)
++ARM_CORE("cortex-a9",		cortexa9, cortexa9,		7A,	ARM_FSET_MAKE_CPU1 (FL_LDSCHED | FL_FOR_ARCH7A), cortex_a9)
++ARM_CORE("cortex-a12",		cortexa12, cortexa17,		7A,	ARM_FSET_MAKE_CPU1 (FL_LDSCHED | FL_THUMB_DIV | FL_ARM_DIV | FL_FOR_ARCH7A), cortex_a12)
++ARM_CORE("cortex-a15",		cortexa15, cortexa15,		7A,	ARM_FSET_MAKE_CPU1 (FL_LDSCHED | FL_THUMB_DIV | FL_ARM_DIV | FL_FOR_ARCH7A), cortex_a15)
++ARM_CORE("cortex-a17",		cortexa17, cortexa17,		7A,	ARM_FSET_MAKE_CPU1 (FL_LDSCHED | FL_THUMB_DIV | FL_ARM_DIV | FL_FOR_ARCH7A), cortex_a12)
++ARM_CORE("cortex-r4",		cortexr4, cortexr4,		7R,	ARM_FSET_MAKE_CPU1 (FL_LDSCHED | FL_FOR_ARCH7R), cortex)
++ARM_CORE("cortex-r4f",		cortexr4f, cortexr4f,		7R,	ARM_FSET_MAKE_CPU1 (FL_LDSCHED | FL_FOR_ARCH7R), cortex)
++ARM_CORE("cortex-r5",		cortexr5, cortexr5,		7R,	ARM_FSET_MAKE_CPU1 (FL_LDSCHED | FL_ARM_DIV | FL_FOR_ARCH7R), cortex)
++ARM_CORE("cortex-r7",		cortexr7, cortexr7,		7R,	ARM_FSET_MAKE_CPU1 (FL_LDSCHED | FL_ARM_DIV | FL_FOR_ARCH7R), cortex)
++ARM_CORE("cortex-m7",		cortexm7, cortexm7,		7EM,	ARM_FSET_MAKE_CPU1 (FL_LDSCHED | FL_NO_VOLATILE_CE | FL_FOR_ARCH7EM), cortex_m7)
++ARM_CORE("cortex-m4",		cortexm4, cortexm4,		7EM,	ARM_FSET_MAKE_CPU1 (FL_LDSCHED | FL_FOR_ARCH7EM), v7m)
++ARM_CORE("cortex-m3",		cortexm3, cortexm3,		7M,	ARM_FSET_MAKE_CPU1 (FL_LDSCHED | FL_FOR_ARCH7M), v7m)
++ARM_CORE("marvell-pj4",		marvell_pj4, marvell_pj4,	7A,	ARM_FSET_MAKE_CPU1 (FL_LDSCHED | FL_FOR_ARCH7A), marvell_pj4)
+ 
+ /* V7 big.LITTLE implementations */
+-ARM_CORE("cortex-a15.cortex-a7", cortexa15cortexa7, cortexa7,	7A,  FL_LDSCHED | FL_THUMB_DIV | FL_ARM_DIV, cortex_a15)
+-ARM_CORE("cortex-a17.cortex-a7", cortexa17cortexa7, cortexa7,	7A,  FL_LDSCHED | FL_THUMB_DIV | FL_ARM_DIV, cortex_a12)
++ARM_CORE("cortex-a15.cortex-a7", cortexa15cortexa7, cortexa7,	7A,	ARM_FSET_MAKE_CPU1 (FL_LDSCHED | FL_THUMB_DIV | FL_ARM_DIV | FL_FOR_ARCH7A), cortex_a15)
++ARM_CORE("cortex-a17.cortex-a7", cortexa17cortexa7, cortexa7,	7A,	ARM_FSET_MAKE_CPU1 (FL_LDSCHED | FL_THUMB_DIV | FL_ARM_DIV | FL_FOR_ARCH7A), cortex_a12)
+ 
+ /* V8 Architecture Processors */
+-ARM_CORE("cortex-a53",	cortexa53, cortexa53,	8A, FL_LDSCHED | FL_CRC32, cortex_a53)
+-ARM_CORE("cortex-a57",	cortexa57, cortexa57,	8A, FL_LDSCHED | FL_CRC32, cortex_a57)
+-ARM_CORE("cortex-a72",	cortexa72, cortexa57,	8A, FL_LDSCHED | FL_CRC32, cortex_a57)
+-ARM_CORE("exynos-m1",	exynosm1,  cortexa57,	8A, FL_LDSCHED | FL_CRC32, cortex_a57)
+-ARM_CORE("xgene1",      xgene1,    xgene1,      8A, FL_LDSCHED,            xgene1)
++ARM_CORE("cortex-a53",	cortexa53, cortexa53,	8A,	ARM_FSET_MAKE_CPU1 (FL_LDSCHED | FL_CRC32 | FL_FOR_ARCH8A), cortex_a53)
++ARM_CORE("cortex-a57",	cortexa57, cortexa57,	8A,	ARM_FSET_MAKE_CPU1 (FL_LDSCHED | FL_CRC32 | FL_FOR_ARCH8A), cortex_a57)
++ARM_CORE("cortex-a72",	cortexa72, cortexa57,	8A,	ARM_FSET_MAKE_CPU1 (FL_LDSCHED | FL_CRC32 | FL_FOR_ARCH8A), cortex_a57)
++ARM_CORE("exynos-m1",	exynosm1,  cortexa57,	8A,	ARM_FSET_MAKE_CPU1 (FL_LDSCHED | FL_CRC32 | FL_FOR_ARCH8A), cortex_a57)
++ARM_CORE("xgene1",      xgene1,    xgene1,      8A,	ARM_FSET_MAKE_CPU1 (FL_LDSCHED | FL_FOR_ARCH8A),            xgene1)
+ 
+ /* V8 big.LITTLE implementations */
+-ARM_CORE("cortex-a57.cortex-a53", cortexa57cortexa53, cortexa53, 8A,  FL_LDSCHED | FL_CRC32, cortex_a57)
+-ARM_CORE("cortex-a72.cortex-a53", cortexa72cortexa53, cortexa53, 8A,  FL_LDSCHED | FL_CRC32, cortex_a57)
++ARM_CORE("cortex-a57.cortex-a53", cortexa57cortexa53, cortexa53, 8A,	ARM_FSET_MAKE_CPU1 (FL_LDSCHED | FL_CRC32 | FL_FOR_ARCH8A), cortex_a57)
++ARM_CORE("cortex-a72.cortex-a53", cortexa72cortexa53, cortexa53, 8A,	ARM_FSET_MAKE_CPU1 (FL_LDSCHED | FL_CRC32 | FL_FOR_ARCH8A), cortex_a57)
+--- a/src/gcc/config/arm/arm-fpus.def
++++ b/src/gcc/config/arm/arm-fpus.def
+@@ -19,30 +19,30 @@
+ 
+ /* Before using #include to read this file, define a macro:
+ 
+-      ARM_FPU(NAME, MODEL, REV, VFP_REGS, NEON, FP16, CRYPTO)
++      ARM_FPU(NAME, MODEL, REV, VFP_REGS, FEATURES)
+ 
+    The arguments are the fields of struct arm_fpu_desc.
+ 
+    genopt.sh assumes no whitespace up to the first "," in each entry.  */
+ 
+-ARM_FPU("vfp",		ARM_FP_MODEL_VFP, 2, VFP_REG_D16, false, false, false)
+-ARM_FPU("vfpv3",	ARM_FP_MODEL_VFP, 3, VFP_REG_D32, false, false, false)
+-ARM_FPU("vfpv3-fp16",	ARM_FP_MODEL_VFP, 3, VFP_REG_D32, false, true, false)
+-ARM_FPU("vfpv3-d16",	ARM_FP_MODEL_VFP, 3, VFP_REG_D16, false, false, false)
+-ARM_FPU("vfpv3-d16-fp16",	ARM_FP_MODEL_VFP, 3, VFP_REG_D16, false, true, false)
+-ARM_FPU("vfpv3xd",	ARM_FP_MODEL_VFP, 3, VFP_REG_SINGLE, false, false, false)
+-ARM_FPU("vfpv3xd-fp16",	ARM_FP_MODEL_VFP, 3, VFP_REG_SINGLE, false, true, false)
+-ARM_FPU("neon",		ARM_FP_MODEL_VFP, 3, VFP_REG_D32, true , false, false)
+-ARM_FPU("neon-fp16",	ARM_FP_MODEL_VFP, 3, VFP_REG_D32, true, true, false)
+-ARM_FPU("vfpv4",	ARM_FP_MODEL_VFP, 4, VFP_REG_D32, false, true, false)
+-ARM_FPU("vfpv4-d16",	ARM_FP_MODEL_VFP, 4, VFP_REG_D16, false, true, false)
+-ARM_FPU("fpv4-sp-d16",	ARM_FP_MODEL_VFP, 4, VFP_REG_SINGLE, false, true, false)
+-ARM_FPU("fpv5-sp-d16",	ARM_FP_MODEL_VFP, 5, VFP_REG_SINGLE, false, true, false)
+-ARM_FPU("fpv5-d16",	ARM_FP_MODEL_VFP, 5, VFP_REG_D16, false, true, false)
+-ARM_FPU("neon-vfpv4",	ARM_FP_MODEL_VFP, 4, VFP_REG_D32, true, true, false)
+-ARM_FPU("fp-armv8",	ARM_FP_MODEL_VFP, 8, VFP_REG_D32, false, true, false)
+-ARM_FPU("neon-fp-armv8",ARM_FP_MODEL_VFP, 8, VFP_REG_D32, true, true, false)
++ARM_FPU("vfp",		ARM_FP_MODEL_VFP, 2, VFP_REG_D16, FPU_FL_NONE)
++ARM_FPU("vfpv3",	ARM_FP_MODEL_VFP, 3, VFP_REG_D32, FPU_FL_NONE)
++ARM_FPU("vfpv3-fp16",	ARM_FP_MODEL_VFP, 3, VFP_REG_D32, FPU_FL_FP16)
++ARM_FPU("vfpv3-d16",	ARM_FP_MODEL_VFP, 3, VFP_REG_D16, FPU_FL_NONE)
++ARM_FPU("vfpv3-d16-fp16",	ARM_FP_MODEL_VFP, 3, VFP_REG_D16, FPU_FL_FP16)
++ARM_FPU("vfpv3xd",	ARM_FP_MODEL_VFP, 3, VFP_REG_SINGLE, FPU_FL_NONE)
++ARM_FPU("vfpv3xd-fp16",	ARM_FP_MODEL_VFP, 3, VFP_REG_SINGLE, FPU_FL_FP16)
++ARM_FPU("neon",		ARM_FP_MODEL_VFP, 3, VFP_REG_D32, FPU_FL_NEON)
++ARM_FPU("neon-fp16",	ARM_FP_MODEL_VFP, 3, VFP_REG_D32, FPU_FL_NEON | FPU_FL_FP16)
++ARM_FPU("vfpv4",	ARM_FP_MODEL_VFP, 4, VFP_REG_D32, FPU_FL_FP16)
++ARM_FPU("vfpv4-d16",	ARM_FP_MODEL_VFP, 4, VFP_REG_D16, FPU_FL_FP16)
++ARM_FPU("fpv4-sp-d16",	ARM_FP_MODEL_VFP, 4, VFP_REG_SINGLE, FPU_FL_FP16)
++ARM_FPU("fpv5-sp-d16",	ARM_FP_MODEL_VFP, 5, VFP_REG_SINGLE, FPU_FL_FP16)
++ARM_FPU("fpv5-d16",	ARM_FP_MODEL_VFP, 5, VFP_REG_D16, FPU_FL_FP16)
++ARM_FPU("neon-vfpv4",	ARM_FP_MODEL_VFP, 4, VFP_REG_D32, FPU_FL_NEON | FPU_FL_FP16)
++ARM_FPU("fp-armv8",	ARM_FP_MODEL_VFP, 8, VFP_REG_D32, FPU_FL_FP16)
++ARM_FPU("neon-fp-armv8",ARM_FP_MODEL_VFP, 8, VFP_REG_D32, FPU_FL_NEON | FPU_FL_FP16)
+ ARM_FPU("crypto-neon-fp-armv8",
+-			ARM_FP_MODEL_VFP, 8, VFP_REG_D32, true, true, true)
++			ARM_FP_MODEL_VFP, 8, VFP_REG_D32, FPU_FL_NEON | FPU_FL_FP16 | FPU_FL_CRYPTO)
+ /* Compatibility aliases.  */
+-ARM_FPU("vfp3",		ARM_FP_MODEL_VFP, 3, VFP_REG_D32, false, false, false)
++ARM_FPU("vfp3",		ARM_FP_MODEL_VFP, 3, VFP_REG_D32, FPU_FL_NONE)
+--- a/src/gcc/config/arm/arm-protos.h
++++ b/src/gcc/config/arm/arm-protos.h
+@@ -30,6 +30,7 @@ extern void arm_load_pic_register (unsigned long);
+ extern int arm_volatile_func (void);
+ extern void arm_expand_prologue (void);
+ extern void arm_expand_epilogue (bool);
++extern void arm_declare_function_name (FILE *, const char *, tree);
+ extern void thumb2_expand_return (bool);
+ extern const char *arm_strip_name_encoding (const char *);
+ extern void arm_asm_output_labelref (FILE *, const char *);
+@@ -66,10 +67,6 @@ extern rtx legitimize_tls_address (rtx, rtx);
+ extern bool arm_legitimate_address_p (machine_mode, rtx, bool);
+ extern int arm_legitimate_address_outer_p (machine_mode, rtx, RTX_CODE, int);
+ extern int thumb_legitimate_offset_p (machine_mode, HOST_WIDE_INT);
+-extern bool arm_legitimize_reload_address (rtx *, machine_mode, int, int,
+-					   int);
+-extern rtx thumb_legitimize_reload_address (rtx *, machine_mode, int, int,
+-					    int);
+ extern int thumb1_legitimate_address_p (machine_mode, rtx, int);
+ extern bool ldm_stm_operation_p (rtx, bool, machine_mode mode,
+                                  bool, bool);
+@@ -89,7 +86,7 @@ extern void neon_pairwise_reduce (rtx, rtx, machine_mode,
+ 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_lane_bounds (rtx, HOST_WIDE_INT, HOST_WIDE_INT, const_tree);
+ extern void neon_const_bounds (rtx, HOST_WIDE_INT, HOST_WIDE_INT);
+ extern HOST_WIDE_INT neon_element_bits (machine_mode);
+ extern void neon_reinterpret (rtx, rtx);
+@@ -185,9 +182,6 @@ extern const char *thumb1_unexpanded_epilogue (void);
+ extern void thumb1_expand_prologue (void);
+ extern void thumb1_expand_epilogue (void);
+ extern const char *thumb1_output_interwork (void);
+-#ifdef TREE_CODE
+-extern int is_called_in_ARM_mode (tree);
+-#endif
+ extern int thumb_shiftable_const (unsigned HOST_WIDE_INT);
+ #ifdef RTX_CODE
+ extern enum arm_cond_code maybe_get_arm_condition_code (rtx);
+@@ -216,14 +210,15 @@ extern int arm_dllexport_p (tree);
+ extern int arm_dllimport_p (tree);
+ extern void arm_mark_dllexport (tree);
+ extern void arm_mark_dllimport (tree);
++extern bool arm_change_mode_p (tree);
+ #endif
+ 
++extern tree arm_valid_target_attribute_tree (tree, struct gcc_options *,
++					     struct gcc_options *);
+ extern void arm_pr_long_calls (struct cpp_reader *);
+ extern void arm_pr_no_long_calls (struct cpp_reader *);
+ extern void arm_pr_long_calls_off (struct cpp_reader *);
+ 
+-extern void arm_lang_object_attributes_init(void);
+-
+ extern const char *arm_mangle_type (const_tree);
+ extern const char *arm_mangle_builtin_type (const_tree);
+ 
+@@ -257,13 +252,6 @@ struct cpu_vec_costs {
+ 
+ struct cpu_cost_table;
+ 
+-enum arm_sched_autopref
+-  {
+-    ARM_SCHED_AUTOPREF_OFF,
+-    ARM_SCHED_AUTOPREF_RANK,
+-    ARM_SCHED_AUTOPREF_FULL
+-  };
+-
+ /* Dump function ARM_PRINT_TUNE_INFO should be updated whenever this
+    structure is modified.  */
+ 
+@@ -272,39 +260,58 @@ struct tune_params
+   bool (*rtx_costs) (rtx, RTX_CODE, RTX_CODE, int *, bool);
+   const struct cpu_cost_table *insn_extra_cost;
+   bool (*sched_adjust_cost) (rtx_insn *, rtx, rtx_insn *, int *);
++  int (*branch_cost) (bool, bool);
++  /* Vectorizer costs.  */
++  const struct cpu_vec_costs* vec_costs;
+   int constant_limit;
+   /* Maximum number of instructions to conditionalise.  */
+   int max_insns_skipped;
+-  int num_prefetch_slots;
+-  int l1_cache_size;
+-  int l1_cache_line_size;
+-  bool prefer_constant_pool;
+-  int (*branch_cost) (bool, bool);
++  /* Maximum number of instructions to inline calls to memset.  */
++  int max_insns_inline_memset;
++  /* Issue rate of the processor.  */
++  unsigned int issue_rate;
++  /* Explicit prefetch data.  */
++  struct
++    {
++      int num_slots;
++      int l1_cache_size;
++      int l1_cache_line_size;
++    } prefetch;
++  enum {PREF_CONST_POOL_FALSE, PREF_CONST_POOL_TRUE}
++    prefer_constant_pool: 1;
+   /* Prefer STRD/LDRD instructions over PUSH/POP/LDM/STM.  */
+-  bool prefer_ldrd_strd;
++  enum {PREF_LDRD_FALSE, PREF_LDRD_TRUE} prefer_ldrd_strd: 1;
+   /* The preference for non short cirtcuit operation when optimizing for
+      performance. The first element covers Thumb state and the second one
+      is for ARM state.  */
+-  bool logical_op_non_short_circuit[2];
+-  /* Vectorizer costs.  */
+-  const struct cpu_vec_costs* vec_costs;
+-  /* Prefer Neon for 64-bit bitops.  */
+-  bool prefer_neon_for_64bits;
++  enum log_op_non_short_circuit {LOG_OP_NON_SHORT_CIRCUIT_FALSE,
++				 LOG_OP_NON_SHORT_CIRCUIT_TRUE};
++  log_op_non_short_circuit logical_op_non_short_circuit_thumb: 1;
++  log_op_non_short_circuit logical_op_non_short_circuit_arm: 1;
+   /* Prefer 32-bit encoding instead of flag-setting 16-bit encoding.  */
+-  bool disparage_flag_setting_t16_encodings;
+-  /* Prefer 32-bit encoding instead of 16-bit encoding where subset of flags
+-     would be set.  */
+-  bool disparage_partial_flag_setting_t16_encodings;
++  enum {DISPARAGE_FLAGS_NEITHER, DISPARAGE_FLAGS_PARTIAL, DISPARAGE_FLAGS_ALL}
++    disparage_flag_setting_t16_encodings: 2;
++  enum {PREF_NEON_64_FALSE, PREF_NEON_64_TRUE} prefer_neon_for_64bits: 1;
+   /* Prefer to inline string operations like memset by using Neon.  */
+-  bool string_ops_prefer_neon;
+-  /* Maximum number of instructions to inline calls to memset.  */
+-  int max_insns_inline_memset;
+-  /* Bitfield encoding the fuseable pairs of instructions.  */
+-  unsigned int fuseable_ops;
++  enum {PREF_NEON_STRINGOPS_FALSE, PREF_NEON_STRINGOPS_TRUE}
++    string_ops_prefer_neon: 1;
++  /* Bitfield encoding the fusible pairs of instructions.  Use FUSE_OPS
++     in an initializer if multiple fusion operations are supported on a
++     target.  */
++  enum fuse_ops
++  {
++    FUSE_NOTHING   = 0,
++    FUSE_MOVW_MOVT = 1 << 0
++  } fusible_ops: 1;
+   /* Depth of scheduling queue to check for L2 autoprefetcher.  */
+-  enum arm_sched_autopref sched_autopref;
++  enum {SCHED_AUTOPREF_OFF, SCHED_AUTOPREF_RANK, SCHED_AUTOPREF_FULL}
++    sched_autopref: 2;
+ };
+ 
++/* Smash multiple fusion operations into a type that can be used for an
++   initializer.  */
++#define FUSE_OPS(x) ((tune_params::fuse_ops) (x))
++
+ extern const struct tune_params *current_tune;
+ extern int vfp3_const_double_for_fract_bits (rtx);
+ /* return power of two from operand, otherwise 0.  */
+@@ -324,14 +331,23 @@ extern bool arm_autoinc_modes_ok_p (machine_mode, enum arm_auto_incmodes);
+ 
+ extern void arm_emit_eabi_attribute (const char *, int, int);
+ 
++extern void arm_reset_previous_fndecl (void);
++
+ /* Defined in gcc/common/config/arm-common.c.  */
+ extern const char *arm_rewrite_selected_cpu (const char *name);
+ 
++/* Defined in gcc/common/config/arm-c.c.  */
++extern void arm_lang_object_attributes_init (void);
++extern void arm_register_target_pragmas (void);
++extern void arm_cpu_cpp_builtins (struct cpp_reader *);
++
+ extern bool arm_is_constant_pool_ref (rtx);
+ 
+ /* Flags used to identify the presence of processor capabilities.  */
+ 
+ /* Bit values used to identify processor capabilities.  */
++#define FL_NONE	      (0)	      /* No flags.  */
++#define FL_ANY	      (0xffffffff)    /* All flags.  */
+ #define FL_CO_PROC    (1 << 0)        /* Has external co-processor bus */
+ #define FL_ARCH3M     (1 << 1)        /* Extended multiply */
+ #define FL_MODE26     (1 << 2)        /* 26-bit mode support */
+@@ -368,6 +384,7 @@ extern bool arm_is_constant_pool_ref (rtx);
+ 
+ #define FL_IWMMXT     (1 << 29)	      /* XScale v2 or "Intel Wireless MMX technology".  */
+ #define FL_IWMMXT2    (1 << 30)       /* "Intel Wireless MMX2 technology".  */
++#define FL_ARCH6KZ    (1 << 31)       /* ARMv6KZ architecture.  */
+ 
+ /* Flags that only effect tuning, not available instructions.  */
+ #define FL_TUNE		(FL_WBUF | FL_VFPV2 | FL_STRONG | FL_LDSCHED \
+@@ -387,7 +404,7 @@ extern bool arm_is_constant_pool_ref (rtx);
+ #define FL_FOR_ARCH6J	FL_FOR_ARCH6
+ #define FL_FOR_ARCH6K	(FL_FOR_ARCH6 | FL_ARCH6K)
+ #define FL_FOR_ARCH6Z	FL_FOR_ARCH6
+-#define FL_FOR_ARCH6ZK	FL_FOR_ARCH6K
++#define FL_FOR_ARCH6KZ	(FL_FOR_ARCH6K | FL_ARCH6KZ)
+ #define FL_FOR_ARCH6T2	(FL_FOR_ARCH6 | FL_THUMB2)
+ #define FL_FOR_ARCH6M	(FL_FOR_ARCH6 & ~FL_NOTM)
+ #define FL_FOR_ARCH7	((FL_FOR_ARCH6T2 & ~FL_NOTM) | FL_ARCH7)
+@@ -398,13 +415,116 @@ extern bool arm_is_constant_pool_ref (rtx);
+ #define FL_FOR_ARCH7EM  (FL_FOR_ARCH7M | FL_ARCH7EM)
+ #define FL_FOR_ARCH8A	(FL_FOR_ARCH7VE | FL_ARCH8)
+ 
++/* There are too many feature bits to fit in a single word so the set of cpu and
++   fpu capabilities is a structure.  A feature set is created and manipulated
++   with the ARM_FSET macros.  */
++
++typedef struct
++{
++  unsigned long cpu[2];
++} arm_feature_set;
++
++
++/* Initialize a feature set.  */
++
++#define ARM_FSET_MAKE(CPU1,CPU2) { { (CPU1), (CPU2) } }
++
++#define ARM_FSET_MAKE_CPU1(CPU1) ARM_FSET_MAKE ((CPU1), (FL_NONE))
++#define ARM_FSET_MAKE_CPU2(CPU2) ARM_FSET_MAKE ((FL_NONE), (CPU2))
++
++/* Accessors.  */
++
++#define ARM_FSET_CPU1(S) ((S).cpu[0])
++#define ARM_FSET_CPU2(S) ((S).cpu[1])
++
++/* Useful combinations.  */
++
++#define ARM_FSET_EMPTY ARM_FSET_MAKE (FL_NONE, FL_NONE)
++#define ARM_FSET_ANY ARM_FSET_MAKE (FL_ANY, FL_ANY)
++
++/* Tests for a specific CPU feature.  */
++
++#define ARM_FSET_HAS_CPU1(A, F)  \
++  (((A).cpu[0] & ((unsigned long)(F))) == ((unsigned long)(F)))
++#define ARM_FSET_HAS_CPU2(A, F)  \
++  (((A).cpu[1] & ((unsigned long)(F))) == ((unsigned long)(F)))
++#define ARM_FSET_HAS_CPU(A, F1, F2)				\
++  (ARM_FSET_HAS_CPU1 ((A), (F1)) && ARM_FSET_HAS_CPU2 ((A), (F2)))
++
++/* Add a feature to a feature set.  */
++
++#define ARM_FSET_ADD_CPU1(DST, F)		\
++  do {						\
++    (DST).cpu[0] |= (F);			\
++  } while (0)
++
++#define ARM_FSET_ADD_CPU2(DST, F)		\
++  do {						\
++    (DST).cpu[1] |= (F);			\
++  } while (0)
++
++/* Remove a feature from a feature set.  */
++
++#define ARM_FSET_DEL_CPU1(DST, F)		\
++  do {						\
++    (DST).cpu[0] &= ~(F);			\
++  } while (0)
++
++#define ARM_FSET_DEL_CPU2(DST, F)		\
++  do {						\
++    (DST).cpu[1] &= ~(F);			\
++  } while (0)
++
++/* Union of feature sets.  */
++
++#define ARM_FSET_UNION(DST,F1,F2)		\
++  do {						\
++    (DST).cpu[0] = (F1).cpu[0] | (F2).cpu[0];	\
++    (DST).cpu[1] = (F1).cpu[1] | (F2).cpu[1];	\
++  } while (0)
++
++/* Intersection of feature sets.  */
++
++#define ARM_FSET_INTER(DST,F1,F2)		\
++  do {						\
++    (DST).cpu[0] = (F1).cpu[0] & (F2).cpu[0];	\
++    (DST).cpu[1] = (F1).cpu[1] & (F2).cpu[1];	\
++  } while (0)
++
++/* Exclusive disjunction.  */
++
++#define ARM_FSET_XOR(DST,F1,F2)				\
++  do {							\
++    (DST).cpu[0] = (F1).cpu[0] ^ (F2).cpu[0];		\
++    (DST).cpu[1] = (F1).cpu[1] ^ (F2).cpu[1];		\
++  } while (0)
++
++/* Difference of feature sets: F1 excluding the elements of F2.  */
++
++#define ARM_FSET_EXCLUDE(DST,F1,F2)		\
++  do {						\
++    (DST).cpu[0] = (F1).cpu[0] & ~(F2).cpu[0];	\
++    (DST).cpu[1] = (F1).cpu[1] & ~(F2).cpu[1];	\
++  } while (0)
++
++/* Test for an empty feature set.  */
++
++#define ARM_FSET_IS_EMPTY(A)		\
++  (!((A).cpu[0]) && !((A).cpu[1]))
++
++/* Tests whether the cpu features of A are a subset of B.  */
++
++#define ARM_FSET_CPU_SUBSET(A,B)					\
++  ((((A).cpu[0] & (B).cpu[0]) == (A).cpu[0])				\
++   && (((A).cpu[1] & (B).cpu[1]) == (A).cpu[1]))
++
+ /* The bits in this mask specify which
+    instructions we are allowed to generate.  */
+-extern unsigned long insn_flags;
++extern arm_feature_set insn_flags;
+ 
+ /* The bits in this mask specify which instruction scheduling options should
+    be used.  */
+-extern unsigned long tune_flags;
++extern arm_feature_set tune_flags;
+ 
+ /* Nonzero if this chip supports the ARM Architecture 3M extensions.  */
+ extern int arm_arch3m;
+@@ -427,6 +547,9 @@ extern int arm_arch6;
+ /* Nonzero if this chip supports the ARM 6K extensions.  */
+ extern int arm_arch6k;
+ 
++/* Nonzero if this chip supports the ARM 6KZ extensions.  */
++extern int arm_arch6kz;
++
+ /* Nonzero if instructions present in ARMv6-M can be used.  */
+ extern int arm_arch6m;
+ 
+@@ -467,12 +590,6 @@ extern int arm_tune_wbuf;
+ /* Nonzero if tuning for Cortex-A9.  */
+ extern int arm_tune_cortex_a9;
+ 
+-/* Nonzero if generating Thumb instructions.  */
+-extern int thumb_code;
+-
+-/* Nonzero if generating Thumb-1 instructions.  */
+-extern int thumb1_code;
+-
+ /* Nonzero if we should define __THUMB_INTERWORK__ in the
+    preprocessor.
+    XXX This is a bit of a hack, it's intended to help work around
+--- a/src/gcc/config/arm/arm-simd-builtin-types.def
++++ b/src/gcc/config/arm/arm-simd-builtin-types.def
+@@ -44,5 +44,7 @@
+ 
+   ENTRY (Float16x4_t, V4HF, none, 64, float16, 18)
+   ENTRY (Float32x2_t, V2SF, none, 64, float32, 18)
++
++  ENTRY (Float16x8_t, V8HF, none, 128, float16, 19)
+   ENTRY (Float32x4_t, V4SF, none, 128, float32, 19)
+ 
+--- a/src/gcc/config/arm/arm-tables.opt
++++ b/src/gcc/config/arm/arm-tables.opt
+@@ -371,46 +371,49 @@ EnumValue
+ Enum(arm_arch) String(armv6z) Value(13)
+ 
+ EnumValue
+-Enum(arm_arch) String(armv6zk) Value(14)
++Enum(arm_arch) String(armv6kz) Value(14)
+ 
+ EnumValue
+-Enum(arm_arch) String(armv6t2) Value(15)
++Enum(arm_arch) String(armv6zk) Value(15)
+ 
+ EnumValue
+-Enum(arm_arch) String(armv6-m) Value(16)
++Enum(arm_arch) String(armv6t2) Value(16)
+ 
+ EnumValue
+-Enum(arm_arch) String(armv6s-m) Value(17)
++Enum(arm_arch) String(armv6-m) Value(17)
+ 
+ EnumValue
+-Enum(arm_arch) String(armv7) Value(18)
++Enum(arm_arch) String(armv6s-m) Value(18)
+ 
+ EnumValue
+-Enum(arm_arch) String(armv7-a) Value(19)
++Enum(arm_arch) String(armv7) Value(19)
+ 
+ EnumValue
+-Enum(arm_arch) String(armv7ve) Value(20)
++Enum(arm_arch) String(armv7-a) Value(20)
+ 
+ EnumValue
+-Enum(arm_arch) String(armv7-r) Value(21)
++Enum(arm_arch) String(armv7ve) Value(21)
+ 
+ EnumValue
+-Enum(arm_arch) String(armv7-m) Value(22)
++Enum(arm_arch) String(armv7-r) Value(22)
+ 
+ EnumValue
+-Enum(arm_arch) String(armv7e-m) Value(23)
++Enum(arm_arch) String(armv7-m) Value(23)
+ 
+ EnumValue
+-Enum(arm_arch) String(armv8-a) Value(24)
++Enum(arm_arch) String(armv7e-m) Value(24)
+ 
+ EnumValue
+-Enum(arm_arch) String(armv8-a+crc) Value(25)
++Enum(arm_arch) String(armv8-a) Value(25)
+ 
+ EnumValue
+-Enum(arm_arch) String(iwmmxt) Value(26)
++Enum(arm_arch) String(armv8-a+crc) Value(26)
+ 
+ EnumValue
+-Enum(arm_arch) String(iwmmxt2) Value(27)
++Enum(arm_arch) String(iwmmxt) Value(27)
++
++EnumValue
++Enum(arm_arch) String(iwmmxt2) Value(28)
+ 
+ Enum
+ Name(arm_fpu) Type(int)
+--- a/src/gcc/config/arm/arm.c
++++ b/src/gcc/config/arm/arm.c
+@@ -94,10 +94,12 @@
+ #include "opts.h"
+ #include "dumpfile.h"
+ #include "gimple-expr.h"
++#include "target-globals.h"
+ #include "builtins.h"
+ #include "tm-constrs.h"
+ #include "rtl-iter.h"
+ #include "sched-int.h"
++#include "tree.h"
+ 
+ /* Forward definitions of types.  */
+ typedef struct minipool_node    Mnode;
+@@ -117,10 +119,12 @@ static int arm_compute_static_chain_stack_bytes (void);
+ static arm_stack_offsets *arm_get_frame_offsets (void);
+ static void arm_add_gc_roots (void);
+ static int arm_gen_constant (enum rtx_code, machine_mode, rtx,
+-			     HOST_WIDE_INT, rtx, rtx, int, int);
++			     unsigned HOST_WIDE_INT, rtx, rtx, int, int);
+ static unsigned bit_count (unsigned long);
++static unsigned feature_count (const arm_feature_set*);
+ static int arm_address_register_rtx_p (rtx, int);
+ static int arm_legitimate_index_p (machine_mode, rtx, RTX_CODE, int);
++static bool is_called_in_ARM_mode (tree);
+ static int thumb2_legitimate_index_p (machine_mode, rtx, int);
+ static int thumb1_base_register_rtx_p (rtx, machine_mode, int);
+ static rtx arm_legitimize_address (rtx, rtx, machine_mode);
+@@ -231,6 +235,7 @@ static void arm_encode_section_info (tree, rtx, int);
+ 
+ static void arm_file_end (void);
+ static void arm_file_start (void);
++static void arm_insert_attributes (tree, tree *);
+ 
+ static void arm_setup_incoming_varargs (cumulative_args_t, machine_mode,
+ 					tree, int *, int);
+@@ -264,6 +269,10 @@ static tree arm_build_builtin_va_list (void);
+ static void arm_expand_builtin_va_start (tree, rtx);
+ static tree arm_gimplify_va_arg_expr (tree, tree, gimple_seq *, gimple_seq *);
+ static void arm_option_override (void);
++static void arm_option_print (FILE *, int, struct cl_target_option *);
++static void arm_set_current_function (tree);
++static bool arm_can_inline_p (tree, tree);
++static bool arm_valid_target_attribute_p (tree, tree, tree, int);
+ static unsigned HOST_WIDE_INT arm_shift_truncation_mask (machine_mode);
+ static bool arm_macro_fusion_p (void);
+ static bool arm_cannot_copy_insn_p (rtx_insn *);
+@@ -386,6 +395,9 @@ static const struct attribute_spec arm_attribute_table[] =
+ #undef  TARGET_ATTRIBUTE_TABLE
+ #define TARGET_ATTRIBUTE_TABLE arm_attribute_table
+ 
++#undef  TARGET_INSERT_ATTRIBUTES
++#define TARGET_INSERT_ATTRIBUTES arm_insert_attributes
++
+ #undef TARGET_ASM_FILE_START
+ #define TARGET_ASM_FILE_START arm_file_start
+ #undef TARGET_ASM_FILE_END
+@@ -412,9 +424,15 @@ static const struct attribute_spec arm_attribute_table[] =
+ #undef  TARGET_ASM_FUNCTION_EPILOGUE
+ #define TARGET_ASM_FUNCTION_EPILOGUE arm_output_function_epilogue
+ 
++#undef TARGET_CAN_INLINE_P
++#define TARGET_CAN_INLINE_P arm_can_inline_p
++
+ #undef  TARGET_OPTION_OVERRIDE
+ #define TARGET_OPTION_OVERRIDE arm_option_override
+ 
++#undef TARGET_OPTION_PRINT
++#define TARGET_OPTION_PRINT arm_option_print
++
+ #undef  TARGET_COMP_TYPE_ATTRIBUTES
+ #define TARGET_COMP_TYPE_ATTRIBUTES arm_comp_type_attributes
+ 
+@@ -430,6 +448,12 @@ static const struct attribute_spec arm_attribute_table[] =
+ #undef  TARGET_SCHED_ADJUST_COST
+ #define TARGET_SCHED_ADJUST_COST arm_adjust_cost
+ 
++#undef TARGET_SET_CURRENT_FUNCTION
++#define TARGET_SET_CURRENT_FUNCTION arm_set_current_function
++
++#undef TARGET_OPTION_VALID_ATTRIBUTE_P
++#define TARGET_OPTION_VALID_ATTRIBUTE_P arm_valid_target_attribute_p
++
+ #undef TARGET_SCHED_REORDER
+ #define TARGET_SCHED_REORDER arm_sched_reorder
+ 
+@@ -772,11 +796,11 @@ static int thumb_call_reg_needed;
+ 
+ /* The bits in this mask specify which
+    instructions we are allowed to generate.  */
+-unsigned long insn_flags = 0;
++arm_feature_set insn_flags = ARM_FSET_EMPTY;
+ 
+ /* The bits in this mask specify which instruction scheduling options should
+    be used.  */
+-unsigned long tune_flags = 0;
++arm_feature_set tune_flags = ARM_FSET_EMPTY;
+ 
+ /* The highest ARM architecture version supported by the
+    target.  */
+@@ -806,6 +830,9 @@ int arm_arch6 = 0;
+ /* Nonzero if this chip supports the ARM 6K extensions.  */
+ int arm_arch6k = 0;
+ 
++/* Nonzero if this chip supports the ARM 6KZ extensions.  */
++int arm_arch6kz = 0;
++
+ /* Nonzero if instructions present in ARMv6-M can be used.  */
+ int arm_arch6m = 0;
+ 
+@@ -846,12 +873,6 @@ int arm_tune_wbuf = 0;
+ /* Nonzero if tuning for Cortex-A9.  */
+ int arm_tune_cortex_a9 = 0;
+ 
+-/* Nonzero if generating Thumb instructions.  */
+-int thumb_code = 0;
+-
+-/* Nonzero if generating Thumb-1 instructions.  */
+-int thumb1_code = 0;
+-
+ /* Nonzero if we should define __THUMB_INTERWORK__ in the
+    preprocessor.
+    XXX This is a bit of a hack, it's intended to help work around
+@@ -935,16 +956,18 @@ struct processors
+   enum processor_type core;
+   const char *arch;
+   enum base_architecture base_arch;
+-  const unsigned long flags;
++  const arm_feature_set flags;
+   const struct tune_params *const tune;
+ };
+ 
+ 
+-#define ARM_PREFETCH_NOT_BENEFICIAL 0, -1, -1
+-#define ARM_PREFETCH_BENEFICIAL(prefetch_slots,l1_size,l1_line_size) \
+-  prefetch_slots, \
+-  l1_size, \
+-  l1_line_size
++#define ARM_PREFETCH_NOT_BENEFICIAL { 0, -1, -1 }
++#define ARM_PREFETCH_BENEFICIAL(num_slots,l1_size,l1_line_size) \
++  {								\
++    num_slots,							\
++    l1_size,							\
++    l1_line_size						\
++  }
+ 
+ /* arm generic vectorizer costs.  */
+ static const
+@@ -1027,7 +1050,9 @@ const struct cpu_cost_table cortexa9_extra_costs =
+     2,			/* stm_regs_per_insn_subsequent.  */
+     COSTS_N_INSNS (1),	/* storef.  */
+     COSTS_N_INSNS (1),	/* stored.  */
+-    COSTS_N_INSNS (1)	/* store_unaligned.  */
++    COSTS_N_INSNS (1),	/* store_unaligned.  */
++    COSTS_N_INSNS (1),	/* loadv.  */
++    COSTS_N_INSNS (1)	/* storev.  */
+   },
+   {
+     /* FP SFmode */
+@@ -1128,7 +1153,9 @@ const struct cpu_cost_table cortexa8_extra_costs =
+     2,			/* stm_regs_per_insn_subsequent.  */
+     COSTS_N_INSNS (1),	/* storef.  */
+     COSTS_N_INSNS (1),	/* stored.  */
+-    COSTS_N_INSNS (1)	/* store_unaligned.  */
++    COSTS_N_INSNS (1),	/* store_unaligned.  */
++    COSTS_N_INSNS (1),	/* loadv.  */
++    COSTS_N_INSNS (1)	/* storev.  */
+   },
+   {
+     /* FP SFmode */
+@@ -1230,7 +1257,9 @@ const struct cpu_cost_table cortexa5_extra_costs =
+     2,			/* stm_regs_per_insn_subsequent.  */
+     COSTS_N_INSNS (2),	/* storef.  */
+     COSTS_N_INSNS (2),	/* stored.  */
+-    COSTS_N_INSNS (1)	/* store_unaligned.  */
++    COSTS_N_INSNS (1),	/* store_unaligned.  */
++    COSTS_N_INSNS (1),	/* loadv.  */
++    COSTS_N_INSNS (1)	/* storev.  */
+   },
+   {
+     /* FP SFmode */
+@@ -1333,7 +1362,9 @@ const struct cpu_cost_table cortexa7_extra_costs =
+     2,			/* stm_regs_per_insn_subsequent.  */
+     COSTS_N_INSNS (2),	/* storef.  */
+     COSTS_N_INSNS (2),	/* stored.  */
+-    COSTS_N_INSNS (1)	/* store_unaligned.  */
++    COSTS_N_INSNS (1),	/* store_unaligned.  */
++    COSTS_N_INSNS (1),	/* loadv.  */
++    COSTS_N_INSNS (1)	/* storev.  */
+   },
+   {
+     /* FP SFmode */
+@@ -1434,7 +1465,9 @@ const struct cpu_cost_table cortexa12_extra_costs =
+     2,			/* stm_regs_per_insn_subsequent.  */
+     COSTS_N_INSNS (2),	/* storef.  */
+     COSTS_N_INSNS (2),	/* stored.  */
+-    0			/* store_unaligned.  */
++    0,			/* store_unaligned.  */
++    COSTS_N_INSNS (1),	/* loadv.  */
++    COSTS_N_INSNS (1)	/* storev.  */
+   },
+   {
+     /* FP SFmode */
+@@ -1535,7 +1568,9 @@ const struct cpu_cost_table cortexa15_extra_costs =
+     2,			/* stm_regs_per_insn_subsequent.  */
+     0,			/* storef.  */
+     0,			/* stored.  */
+-    0			/* store_unaligned.  */
++    0,			/* store_unaligned.  */
++    COSTS_N_INSNS (1),	/* loadv.  */
++    COSTS_N_INSNS (1)	/* storev.  */
+   },
+   {
+     /* FP SFmode */
+@@ -1636,7 +1671,9 @@ const struct cpu_cost_table v7m_extra_costs =
+     1,			/* stm_regs_per_insn_subsequent.  */
+     COSTS_N_INSNS (2),	/* storef.  */
+     COSTS_N_INSNS (3),	/* stored.  */
+-    COSTS_N_INSNS (1)  /* store_unaligned.  */
++    COSTS_N_INSNS (1),	/* store_unaligned.  */
++    COSTS_N_INSNS (1),	/* loadv.  */
++    COSTS_N_INSNS (1)	/* storev.  */
+   },
+   {
+     /* FP SFmode */
+@@ -1678,49 +1715,50 @@ const struct cpu_cost_table v7m_extra_costs =
+   }
+ };
+ 
+-#define ARM_FUSE_NOTHING	(0)
+-#define ARM_FUSE_MOVW_MOVT	(1 << 0)
+-
+ const struct tune_params arm_slowmul_tune =
+ {
+   arm_slowmul_rtx_costs,
+-  NULL,
+-  NULL,						/* Sched adj cost.  */
++  NULL,					/* Insn extra costs.  */
++  NULL,					/* Sched adj cost.  */
++  arm_default_branch_cost,
++  &arm_default_vec_cost,
+   3,						/* Constant limit.  */
+   5,						/* Max cond insns.  */
++  8,						/* Memset max inline.  */
++  1,						/* Issue rate.  */
+   ARM_PREFETCH_NOT_BENEFICIAL,
+-  true,						/* Prefer constant pool.  */
+-  arm_default_branch_cost,
+-  false,					/* Prefer LDRD/STRD.  */
+-  {true, true},					/* Prefer non short circuit.  */
+-  &arm_default_vec_cost,                        /* Vectorizer costs.  */
+-  false,                                        /* Prefer Neon for 64-bits bitops.  */
+-  false, false,                                 /* Prefer 32-bit encodings.  */
+-  false,					/* Prefer Neon for stringops.  */
+-  8,						/* Maximum insns to inline memset.  */
+-  ARM_FUSE_NOTHING,				/* Fuseable pairs of instructions.  */
+-  ARM_SCHED_AUTOPREF_OFF			/* Sched L2 autopref.  */
++  tune_params::PREF_CONST_POOL_TRUE,
++  tune_params::PREF_LDRD_FALSE,
++  tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* Thumb.  */
++  tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* ARM.  */
++  tune_params::DISPARAGE_FLAGS_NEITHER,
++  tune_params::PREF_NEON_64_FALSE,
++  tune_params::PREF_NEON_STRINGOPS_FALSE,
++  tune_params::FUSE_NOTHING,
++  tune_params::SCHED_AUTOPREF_OFF
+ };
+ 
+ const struct tune_params arm_fastmul_tune =
+ {
+   arm_fastmul_rtx_costs,
+-  NULL,
+-  NULL,						/* Sched adj cost.  */
++  NULL,					/* Insn extra costs.  */
++  NULL,					/* Sched adj cost.  */
++  arm_default_branch_cost,
++  &arm_default_vec_cost,
+   1,						/* Constant limit.  */
+   5,						/* Max cond insns.  */
++  8,						/* Memset max inline.  */
++  1,						/* Issue rate.  */
+   ARM_PREFETCH_NOT_BENEFICIAL,
+-  true,						/* Prefer constant pool.  */
+-  arm_default_branch_cost,
+-  false,					/* Prefer LDRD/STRD.  */
+-  {true, true},					/* Prefer non short circuit.  */
+-  &arm_default_vec_cost,                        /* Vectorizer costs.  */
+-  false,                                        /* Prefer Neon for 64-bits bitops.  */
+-  false, false,                                 /* Prefer 32-bit encodings.  */
+-  false,					/* Prefer Neon for stringops.  */
+-  8,						/* Maximum insns to inline memset.  */
+-  ARM_FUSE_NOTHING,				/* Fuseable pairs of instructions.  */
+-  ARM_SCHED_AUTOPREF_OFF			/* Sched L2 autopref.  */
++  tune_params::PREF_CONST_POOL_TRUE,
++  tune_params::PREF_LDRD_FALSE,
++  tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* Thumb.  */
++  tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* ARM.  */
++  tune_params::DISPARAGE_FLAGS_NEITHER,
++  tune_params::PREF_NEON_64_FALSE,
++  tune_params::PREF_NEON_STRINGOPS_FALSE,
++  tune_params::FUSE_NOTHING,
++  tune_params::SCHED_AUTOPREF_OFF
+ };
+ 
+ /* StrongARM has early execution of branches, so a sequence that is worth
+@@ -1729,233 +1767,279 @@ const struct tune_params arm_fastmul_tune =
+ const struct tune_params arm_strongarm_tune =
+ {
+   arm_fastmul_rtx_costs,
+-  NULL,
+-  NULL,						/* Sched adj cost.  */
++  NULL,					/* Insn extra costs.  */
++  NULL,					/* Sched adj cost.  */
++  arm_default_branch_cost,
++  &arm_default_vec_cost,
+   1,						/* Constant limit.  */
+   3,						/* Max cond insns.  */
++  8,						/* Memset max inline.  */
++  1,						/* Issue rate.  */
+   ARM_PREFETCH_NOT_BENEFICIAL,
+-  true,						/* Prefer constant pool.  */
+-  arm_default_branch_cost,
+-  false,					/* Prefer LDRD/STRD.  */
+-  {true, true},					/* Prefer non short circuit.  */
+-  &arm_default_vec_cost,                        /* Vectorizer costs.  */
+-  false,                                        /* Prefer Neon for 64-bits bitops.  */
+-  false, false,                                 /* Prefer 32-bit encodings.  */
+-  false,					/* Prefer Neon for stringops.  */
+-  8,						/* Maximum insns to inline memset.  */
+-  ARM_FUSE_NOTHING,				/* Fuseable pairs of instructions.  */
+-  ARM_SCHED_AUTOPREF_OFF			/* Sched L2 autopref.  */
++  tune_params::PREF_CONST_POOL_TRUE,
++  tune_params::PREF_LDRD_FALSE,
++  tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* Thumb.  */
++  tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* ARM.  */
++  tune_params::DISPARAGE_FLAGS_NEITHER,
++  tune_params::PREF_NEON_64_FALSE,
++  tune_params::PREF_NEON_STRINGOPS_FALSE,
++  tune_params::FUSE_NOTHING,
++  tune_params::SCHED_AUTOPREF_OFF
+ };
+ 
+ const struct tune_params arm_xscale_tune =
+ {
+   arm_xscale_rtx_costs,
+-  NULL,
++  NULL,					/* Insn extra costs.  */
+   xscale_sched_adjust_cost,
++  arm_default_branch_cost,
++  &arm_default_vec_cost,
+   2,						/* Constant limit.  */
+   3,						/* Max cond insns.  */
++  8,						/* Memset max inline.  */
++  1,						/* Issue rate.  */
+   ARM_PREFETCH_NOT_BENEFICIAL,
+-  true,						/* Prefer constant pool.  */
+-  arm_default_branch_cost,
+-  false,					/* Prefer LDRD/STRD.  */
+-  {true, true},					/* Prefer non short circuit.  */
+-  &arm_default_vec_cost,                        /* Vectorizer costs.  */
+-  false,                                        /* Prefer Neon for 64-bits bitops.  */
+-  false, false,                                 /* Prefer 32-bit encodings.  */
+-  false,					/* Prefer Neon for stringops.  */
+-  8,						/* Maximum insns to inline memset.  */
+-  ARM_FUSE_NOTHING,				/* Fuseable pairs of instructions.  */
+-  ARM_SCHED_AUTOPREF_OFF			/* Sched L2 autopref.  */
++  tune_params::PREF_CONST_POOL_TRUE,
++  tune_params::PREF_LDRD_FALSE,
++  tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* Thumb.  */
++  tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* ARM.  */
++  tune_params::DISPARAGE_FLAGS_NEITHER,
++  tune_params::PREF_NEON_64_FALSE,
++  tune_params::PREF_NEON_STRINGOPS_FALSE,
++  tune_params::FUSE_NOTHING,
++  tune_params::SCHED_AUTOPREF_OFF
+ };
+ 
+ const struct tune_params arm_9e_tune =
+ {
+   arm_9e_rtx_costs,
+-  NULL,
+-  NULL,						/* Sched adj cost.  */
++  NULL,					/* Insn extra costs.  */
++  NULL,					/* Sched adj cost.  */
++  arm_default_branch_cost,
++  &arm_default_vec_cost,
+   1,						/* Constant limit.  */
+   5,						/* Max cond insns.  */
++  8,						/* Memset max inline.  */
++  1,						/* Issue rate.  */
+   ARM_PREFETCH_NOT_BENEFICIAL,
+-  true,						/* Prefer constant pool.  */
++  tune_params::PREF_CONST_POOL_TRUE,
++  tune_params::PREF_LDRD_FALSE,
++  tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* Thumb.  */
++  tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* ARM.  */
++  tune_params::DISPARAGE_FLAGS_NEITHER,
++  tune_params::PREF_NEON_64_FALSE,
++  tune_params::PREF_NEON_STRINGOPS_FALSE,
++  tune_params::FUSE_NOTHING,
++  tune_params::SCHED_AUTOPREF_OFF
++};
++
++const struct tune_params arm_marvell_pj4_tune =
++{
++  arm_9e_rtx_costs,
++  NULL,					/* Insn extra costs.  */
++  NULL,					/* Sched adj cost.  */
+   arm_default_branch_cost,
+-  false,					/* Prefer LDRD/STRD.  */
+-  {true, true},					/* Prefer non short circuit.  */
+-  &arm_default_vec_cost,                        /* Vectorizer costs.  */
+-  false,                                        /* Prefer Neon for 64-bits bitops.  */
+-  false, false,                                 /* Prefer 32-bit encodings.  */
+-  false,					/* Prefer Neon for stringops.  */
+-  8,						/* Maximum insns to inline memset.  */
+-  ARM_FUSE_NOTHING,				/* Fuseable pairs of instructions.  */
+-  ARM_SCHED_AUTOPREF_OFF			/* Sched L2 autopref.  */
++  &arm_default_vec_cost,
++  1,						/* Constant limit.  */
++  5,						/* Max cond insns.  */
++  8,						/* Memset max inline.  */
++  2,						/* Issue rate.  */
++  ARM_PREFETCH_NOT_BENEFICIAL,
++  tune_params::PREF_CONST_POOL_TRUE,
++  tune_params::PREF_LDRD_FALSE,
++  tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* Thumb.  */
++  tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* ARM.  */
++  tune_params::DISPARAGE_FLAGS_NEITHER,
++  tune_params::PREF_NEON_64_FALSE,
++  tune_params::PREF_NEON_STRINGOPS_FALSE,
++  tune_params::FUSE_NOTHING,
++  tune_params::SCHED_AUTOPREF_OFF
+ };
+ 
+ const struct tune_params arm_v6t2_tune =
+ {
+   arm_9e_rtx_costs,
+-  NULL,
+-  NULL,						/* Sched adj cost.  */
++  NULL,					/* Insn extra costs.  */
++  NULL,					/* Sched adj cost.  */
++  arm_default_branch_cost,
++  &arm_default_vec_cost,
+   1,						/* Constant limit.  */
+   5,						/* Max cond insns.  */
++  8,						/* Memset max inline.  */
++  1,						/* Issue rate.  */
+   ARM_PREFETCH_NOT_BENEFICIAL,
+-  false,					/* Prefer constant pool.  */
+-  arm_default_branch_cost,
+-  false,					/* Prefer LDRD/STRD.  */
+-  {true, true},					/* Prefer non short circuit.  */
+-  &arm_default_vec_cost,                        /* Vectorizer costs.  */
+-  false,                                        /* Prefer Neon for 64-bits bitops.  */
+-  false, false,                                 /* Prefer 32-bit encodings.  */
+-  false,					/* Prefer Neon for stringops.  */
+-  8,						/* Maximum insns to inline memset.  */
+-  ARM_FUSE_NOTHING,				/* Fuseable pairs of instructions.  */
+-  ARM_SCHED_AUTOPREF_OFF			/* Sched L2 autopref.  */
++  tune_params::PREF_CONST_POOL_FALSE,
++  tune_params::PREF_LDRD_FALSE,
++  tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* Thumb.  */
++  tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* ARM.  */
++  tune_params::DISPARAGE_FLAGS_NEITHER,
++  tune_params::PREF_NEON_64_FALSE,
++  tune_params::PREF_NEON_STRINGOPS_FALSE,
++  tune_params::FUSE_NOTHING,
++  tune_params::SCHED_AUTOPREF_OFF
+ };
+ 
++
+ /* Generic Cortex tuning.  Use more specific tunings if appropriate.  */
+ const struct tune_params arm_cortex_tune =
+ {
+   arm_9e_rtx_costs,
+   &generic_extra_costs,
+-  NULL,						/* Sched adj cost.  */
++  NULL,					/* Sched adj cost.  */
++  arm_default_branch_cost,
++  &arm_default_vec_cost,
+   1,						/* Constant limit.  */
+   5,						/* Max cond insns.  */
++  8,						/* Memset max inline.  */
++  2,						/* Issue rate.  */
+   ARM_PREFETCH_NOT_BENEFICIAL,
+-  false,					/* Prefer constant pool.  */
+-  arm_default_branch_cost,
+-  false,					/* Prefer LDRD/STRD.  */
+-  {true, true},					/* Prefer non short circuit.  */
+-  &arm_default_vec_cost,                        /* Vectorizer costs.  */
+-  false,                                        /* Prefer Neon for 64-bits bitops.  */
+-  false, false,                                 /* Prefer 32-bit encodings.  */
+-  false,					/* Prefer Neon for stringops.  */
+-  8,						/* Maximum insns to inline memset.  */
+-  ARM_FUSE_NOTHING,				/* Fuseable pairs of instructions.  */
+-  ARM_SCHED_AUTOPREF_OFF			/* Sched L2 autopref.  */
++  tune_params::PREF_CONST_POOL_FALSE,
++  tune_params::PREF_LDRD_FALSE,
++  tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* Thumb.  */
++  tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* ARM.  */
++  tune_params::DISPARAGE_FLAGS_NEITHER,
++  tune_params::PREF_NEON_64_FALSE,
++  tune_params::PREF_NEON_STRINGOPS_FALSE,
++  tune_params::FUSE_NOTHING,
++  tune_params::SCHED_AUTOPREF_OFF
+ };
+ 
+ const struct tune_params arm_cortex_a8_tune =
+ {
+   arm_9e_rtx_costs,
+   &cortexa8_extra_costs,
+-  NULL,						/* Sched adj cost.  */
++  NULL,					/* Sched adj cost.  */
++  arm_default_branch_cost,
++  &arm_default_vec_cost,
+   1,						/* Constant limit.  */
+   5,						/* Max cond insns.  */
++  8,						/* Memset max inline.  */
++  2,						/* Issue rate.  */
+   ARM_PREFETCH_NOT_BENEFICIAL,
+-  false,					/* Prefer constant pool.  */
+-  arm_default_branch_cost,
+-  false,					/* Prefer LDRD/STRD.  */
+-  {true, true},					/* Prefer non short circuit.  */
+-  &arm_default_vec_cost,                        /* Vectorizer costs.  */
+-  false,                                        /* Prefer Neon for 64-bits bitops.  */
+-  false, false,                                 /* Prefer 32-bit encodings.  */
+-  true,						/* Prefer Neon for stringops.  */
+-  8,						/* Maximum insns to inline memset.  */
+-  ARM_FUSE_NOTHING,				/* Fuseable pairs of instructions.  */
+-  ARM_SCHED_AUTOPREF_OFF			/* Sched L2 autopref.  */
++  tune_params::PREF_CONST_POOL_FALSE,
++  tune_params::PREF_LDRD_FALSE,
++  tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* Thumb.  */
++  tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* ARM.  */
++  tune_params::DISPARAGE_FLAGS_NEITHER,
++  tune_params::PREF_NEON_64_FALSE,
++  tune_params::PREF_NEON_STRINGOPS_TRUE,
++  tune_params::FUSE_NOTHING,
++  tune_params::SCHED_AUTOPREF_OFF
+ };
+ 
+ const struct tune_params arm_cortex_a7_tune =
+ {
+   arm_9e_rtx_costs,
+   &cortexa7_extra_costs,
+-  NULL,
++  NULL,					/* Sched adj cost.  */
++  arm_default_branch_cost,
++  &arm_default_vec_cost,
+   1,						/* Constant limit.  */
+   5,						/* Max cond insns.  */
++  8,						/* Memset max inline.  */
++  2,						/* Issue rate.  */
+   ARM_PREFETCH_NOT_BENEFICIAL,
+-  false,					/* Prefer constant pool.  */
+-  arm_default_branch_cost,
+-  false,					/* Prefer LDRD/STRD.  */
+-  {true, true},					/* Prefer non short circuit.  */
+-  &arm_default_vec_cost,			/* Vectorizer costs.  */
+-  false,					/* Prefer Neon for 64-bits bitops.  */
+-  false, false,                                 /* Prefer 32-bit encodings.  */
+-  true,						/* Prefer Neon for stringops.  */
+-  8,						/* Maximum insns to inline memset.  */
+-  ARM_FUSE_NOTHING,				/* Fuseable pairs of instructions.  */
+-  ARM_SCHED_AUTOPREF_OFF			/* Sched L2 autopref.  */
++  tune_params::PREF_CONST_POOL_FALSE,
++  tune_params::PREF_LDRD_FALSE,
++  tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* Thumb.  */
++  tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* ARM.  */
++  tune_params::DISPARAGE_FLAGS_NEITHER,
++  tune_params::PREF_NEON_64_FALSE,
++  tune_params::PREF_NEON_STRINGOPS_TRUE,
++  tune_params::FUSE_NOTHING,
++  tune_params::SCHED_AUTOPREF_OFF
+ };
+ 
+ const struct tune_params arm_cortex_a15_tune =
+ {
+   arm_9e_rtx_costs,
+   &cortexa15_extra_costs,
+-  NULL,						/* Sched adj cost.  */
++  NULL,					/* Sched adj cost.  */
++  arm_default_branch_cost,
++  &arm_default_vec_cost,
+   1,						/* Constant limit.  */
+   2,						/* Max cond insns.  */
++  8,						/* Memset max inline.  */
++  3,						/* Issue rate.  */
+   ARM_PREFETCH_NOT_BENEFICIAL,
+-  false,					/* Prefer constant pool.  */
+-  arm_default_branch_cost,
+-  true,						/* Prefer LDRD/STRD.  */
+-  {true, true},					/* Prefer non short circuit.  */
+-  &arm_default_vec_cost,                        /* Vectorizer costs.  */
+-  false,                                        /* Prefer Neon for 64-bits bitops.  */
+-  true, true,                                   /* Prefer 32-bit encodings.  */
+-  true,						/* Prefer Neon for stringops.  */
+-  8,						/* Maximum insns to inline memset.  */
+-  ARM_FUSE_NOTHING,				/* Fuseable pairs of instructions.  */
+-  ARM_SCHED_AUTOPREF_FULL			/* Sched L2 autopref.  */
++  tune_params::PREF_CONST_POOL_FALSE,
++  tune_params::PREF_LDRD_TRUE,
++  tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* Thumb.  */
++  tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* ARM.  */
++  tune_params::DISPARAGE_FLAGS_ALL,
++  tune_params::PREF_NEON_64_FALSE,
++  tune_params::PREF_NEON_STRINGOPS_TRUE,
++  tune_params::FUSE_NOTHING,
++  tune_params::SCHED_AUTOPREF_FULL
+ };
+ 
+ const struct tune_params arm_cortex_a53_tune =
+ {
+   arm_9e_rtx_costs,
+   &cortexa53_extra_costs,
+-  NULL,						/* Scheduler cost adjustment.  */
++  NULL,					/* Sched adj cost.  */
++  arm_default_branch_cost,
++  &arm_default_vec_cost,
+   1,						/* Constant limit.  */
+   5,						/* Max cond insns.  */
++  8,						/* Memset max inline.  */
++  2,						/* Issue rate.  */
+   ARM_PREFETCH_NOT_BENEFICIAL,
+-  false,					/* Prefer constant pool.  */
+-  arm_default_branch_cost,
+-  false,					/* Prefer LDRD/STRD.  */
+-  {true, true},					/* Prefer non short circuit.  */
+-  &arm_default_vec_cost,			/* Vectorizer costs.  */
+-  false,					/* Prefer Neon for 64-bits bitops.  */
+-  false, false,                                 /* Prefer 32-bit encodings.  */
+-  true,						/* Prefer Neon for stringops.  */
+-  8,						/* Maximum insns to inline memset.  */
+-  ARM_FUSE_MOVW_MOVT,				/* Fuseable pairs of instructions.  */
+-  ARM_SCHED_AUTOPREF_OFF			/* Sched L2 autopref.  */
++  tune_params::PREF_CONST_POOL_FALSE,
++  tune_params::PREF_LDRD_FALSE,
++  tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* Thumb.  */
++  tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* ARM.  */
++  tune_params::DISPARAGE_FLAGS_NEITHER,
++  tune_params::PREF_NEON_64_FALSE,
++  tune_params::PREF_NEON_STRINGOPS_TRUE,
++  FUSE_OPS (tune_params::FUSE_MOVW_MOVT),
++  tune_params::SCHED_AUTOPREF_OFF
+ };
+ 
+ const struct tune_params arm_cortex_a57_tune =
+ {
+   arm_9e_rtx_costs,
+   &cortexa57_extra_costs,
+-  NULL,                                         /* Scheduler cost adjustment.  */
+-  1,                                           /* Constant limit.  */
+-  2,                                           /* Max cond insns.  */
+-  ARM_PREFETCH_NOT_BENEFICIAL,
+-  false,                                       /* Prefer constant pool.  */
++  NULL,					/* Sched adj cost.  */
+   arm_default_branch_cost,
+-  true,                                       /* Prefer LDRD/STRD.  */
+-  {true, true},                                /* Prefer non short circuit.  */
+-  &arm_default_vec_cost,                       /* Vectorizer costs.  */
+-  false,                                       /* Prefer Neon for 64-bits bitops.  */
+-  true, true,                                  /* Prefer 32-bit encodings.  */
+-  true,						/* Prefer Neon for stringops.  */
+-  8,						/* Maximum insns to inline memset.  */
+-  ARM_FUSE_MOVW_MOVT,				/* Fuseable pairs of instructions.  */
+-  ARM_SCHED_AUTOPREF_FULL			/* Sched L2 autopref.  */
++  &arm_default_vec_cost,
++  1,						/* Constant limit.  */
++  2,						/* Max cond insns.  */
++  8,						/* Memset max inline.  */
++  3,						/* Issue rate.  */
++  ARM_PREFETCH_NOT_BENEFICIAL,
++  tune_params::PREF_CONST_POOL_FALSE,
++  tune_params::PREF_LDRD_TRUE,
++  tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* Thumb.  */
++  tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* ARM.  */
++  tune_params::DISPARAGE_FLAGS_ALL,
++  tune_params::PREF_NEON_64_FALSE,
++  tune_params::PREF_NEON_STRINGOPS_TRUE,
++  FUSE_OPS (tune_params::FUSE_MOVW_MOVT),
++  tune_params::SCHED_AUTOPREF_FULL
+ };
+ 
+ const struct tune_params arm_xgene1_tune =
+ {
+   arm_9e_rtx_costs,
+   &xgene1_extra_costs,
+-  NULL,                                        /* Scheduler cost adjustment.  */
+-  1,                                           /* Constant limit.  */
+-  2,                                           /* Max cond insns.  */
+-  ARM_PREFETCH_NOT_BENEFICIAL,
+-  false,                                       /* Prefer constant pool.  */
++  NULL,					/* Sched adj cost.  */
+   arm_default_branch_cost,
+-  true,                                        /* Prefer LDRD/STRD.  */
+-  {true, true},                                /* Prefer non short circuit.  */
+-  &arm_default_vec_cost,                       /* Vectorizer costs.  */
+-  false,                                       /* Prefer Neon for 64-bits bitops.  */
+-  true, true,                                  /* Prefer 32-bit encodings.  */
+-  false,				       /* Prefer Neon for stringops.  */
+-  32,					       /* Maximum insns to inline memset.  */
+-  ARM_FUSE_NOTHING,				/* Fuseable pairs of instructions.  */
+-  ARM_SCHED_AUTOPREF_OFF			/* Sched L2 autopref.  */
++  &arm_default_vec_cost,
++  1,						/* Constant limit.  */
++  2,						/* Max cond insns.  */
++  32,						/* Memset max inline.  */
++  4,						/* Issue rate.  */
++  ARM_PREFETCH_NOT_BENEFICIAL,
++  tune_params::PREF_CONST_POOL_FALSE,
++  tune_params::PREF_LDRD_TRUE,
++  tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* Thumb.  */
++  tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* ARM.  */
++  tune_params::DISPARAGE_FLAGS_ALL,
++  tune_params::PREF_NEON_64_FALSE,
++  tune_params::PREF_NEON_STRINGOPS_FALSE,
++  tune_params::FUSE_NOTHING,
++  tune_params::SCHED_AUTOPREF_OFF
+ };
+ 
+ /* Branches can be dual-issued on Cortex-A5, so conditional execution is
+@@ -1965,21 +2049,23 @@ const struct tune_params arm_cortex_a5_tune =
+ {
+   arm_9e_rtx_costs,
+   &cortexa5_extra_costs,
+-  NULL,						/* Sched adj cost.  */
++  NULL,					/* Sched adj cost.  */
++  arm_cortex_a5_branch_cost,
++  &arm_default_vec_cost,
+   1,						/* Constant limit.  */
+   1,						/* Max cond insns.  */
++  8,						/* Memset max inline.  */
++  2,						/* Issue rate.  */
+   ARM_PREFETCH_NOT_BENEFICIAL,
+-  false,					/* Prefer constant pool.  */
+-  arm_cortex_a5_branch_cost,
+-  false,					/* Prefer LDRD/STRD.  */
+-  {false, false},				/* Prefer non short circuit.  */
+-  &arm_default_vec_cost,                        /* Vectorizer costs.  */
+-  false,                                        /* Prefer Neon for 64-bits bitops.  */
+-  false, false,                                 /* Prefer 32-bit encodings.  */
+-  true,						/* Prefer Neon for stringops.  */
+-  8,						/* Maximum insns to inline memset.  */
+-  ARM_FUSE_NOTHING,				/* Fuseable pairs of instructions.  */
+-  ARM_SCHED_AUTOPREF_OFF			/* Sched L2 autopref.  */
++  tune_params::PREF_CONST_POOL_FALSE,
++  tune_params::PREF_LDRD_FALSE,
++  tune_params::LOG_OP_NON_SHORT_CIRCUIT_FALSE,		/* Thumb.  */
++  tune_params::LOG_OP_NON_SHORT_CIRCUIT_FALSE,		/* ARM.  */
++  tune_params::DISPARAGE_FLAGS_NEITHER,
++  tune_params::PREF_NEON_64_FALSE,
++  tune_params::PREF_NEON_STRINGOPS_TRUE,
++  tune_params::FUSE_NOTHING,
++  tune_params::SCHED_AUTOPREF_OFF
+ };
+ 
+ const struct tune_params arm_cortex_a9_tune =
+@@ -1987,41 +2073,45 @@ const struct tune_params arm_cortex_a9_tune =
+   arm_9e_rtx_costs,
+   &cortexa9_extra_costs,
+   cortex_a9_sched_adjust_cost,
++  arm_default_branch_cost,
++  &arm_default_vec_cost,
+   1,						/* Constant limit.  */
+   5,						/* Max cond insns.  */
++  8,						/* Memset max inline.  */
++  2,						/* Issue rate.  */
+   ARM_PREFETCH_BENEFICIAL(4,32,32),
+-  false,					/* Prefer constant pool.  */
+-  arm_default_branch_cost,
+-  false,					/* Prefer LDRD/STRD.  */
+-  {true, true},					/* Prefer non short circuit.  */
+-  &arm_default_vec_cost,                        /* Vectorizer costs.  */
+-  false,                                        /* Prefer Neon for 64-bits bitops.  */
+-  false, false,                                 /* Prefer 32-bit encodings.  */
+-  false,					/* Prefer Neon for stringops.  */
+-  8,						/* Maximum insns to inline memset.  */
+-  ARM_FUSE_NOTHING,				/* Fuseable pairs of instructions.  */
+-  ARM_SCHED_AUTOPREF_OFF			/* Sched L2 autopref.  */
++  tune_params::PREF_CONST_POOL_FALSE,
++  tune_params::PREF_LDRD_FALSE,
++  tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* Thumb.  */
++  tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* ARM.  */
++  tune_params::DISPARAGE_FLAGS_NEITHER,
++  tune_params::PREF_NEON_64_FALSE,
++  tune_params::PREF_NEON_STRINGOPS_FALSE,
++  tune_params::FUSE_NOTHING,
++  tune_params::SCHED_AUTOPREF_OFF
+ };
+ 
+ const struct tune_params arm_cortex_a12_tune =
+ {
+   arm_9e_rtx_costs,
+   &cortexa12_extra_costs,
+-  NULL,						/* Sched adj cost.  */
++  NULL,					/* Sched adj cost.  */
++  arm_default_branch_cost,
++  &arm_default_vec_cost,                        /* Vectorizer costs.  */
+   1,						/* Constant limit.  */
+   2,						/* Max cond insns.  */
++  8,						/* Memset max inline.  */
++  2,						/* Issue rate.  */
+   ARM_PREFETCH_NOT_BENEFICIAL,
+-  false,					/* Prefer constant pool.  */
+-  arm_default_branch_cost,
+-  true,						/* Prefer LDRD/STRD.  */
+-  {true, true},					/* Prefer non short circuit.  */
+-  &arm_default_vec_cost,                        /* Vectorizer costs.  */
+-  false,                                        /* Prefer Neon for 64-bits bitops.  */
+-  true, true,                                   /* Prefer 32-bit encodings.  */
+-  true,						/* Prefer Neon for stringops.  */
+-  8,						/* Maximum insns to inline memset.  */
+-  ARM_FUSE_MOVW_MOVT,				/* Fuseable pairs of instructions.  */
+-  ARM_SCHED_AUTOPREF_OFF			/* Sched L2 autopref.  */
++  tune_params::PREF_CONST_POOL_FALSE,
++  tune_params::PREF_LDRD_TRUE,
++  tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* Thumb.  */
++  tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* ARM.  */
++  tune_params::DISPARAGE_FLAGS_ALL,
++  tune_params::PREF_NEON_64_FALSE,
++  tune_params::PREF_NEON_STRINGOPS_TRUE,
++  FUSE_OPS (tune_params::FUSE_MOVW_MOVT),
++  tune_params::SCHED_AUTOPREF_OFF
+ };
+ 
+ /* armv7m tuning.  On Cortex-M4 cores for example, MOVW/MOVT take a single
+@@ -2035,21 +2125,23 @@ const struct tune_params arm_v7m_tune =
+ {
+   arm_9e_rtx_costs,
+   &v7m_extra_costs,
+-  NULL,						/* Sched adj cost.  */
++  NULL,					/* Sched adj cost.  */
++  arm_cortex_m_branch_cost,
++  &arm_default_vec_cost,
+   1,						/* Constant limit.  */
+   2,						/* Max cond insns.  */
++  8,						/* Memset max inline.  */
++  1,						/* Issue rate.  */
+   ARM_PREFETCH_NOT_BENEFICIAL,
+-  true,						/* Prefer constant pool.  */
+-  arm_cortex_m_branch_cost,
+-  false,					/* Prefer LDRD/STRD.  */
+-  {false, false},				/* Prefer non short circuit.  */
+-  &arm_default_vec_cost,                        /* Vectorizer costs.  */
+-  false,                                        /* Prefer Neon for 64-bits bitops.  */
+-  false, false,                                 /* Prefer 32-bit encodings.  */
+-  false,					/* Prefer Neon for stringops.  */
+-  8,						/* Maximum insns to inline memset.  */
+-  ARM_FUSE_NOTHING,				/* Fuseable pairs of instructions.  */
+-  ARM_SCHED_AUTOPREF_OFF			/* Sched L2 autopref.  */
++  tune_params::PREF_CONST_POOL_TRUE,
++  tune_params::PREF_LDRD_FALSE,
++  tune_params::LOG_OP_NON_SHORT_CIRCUIT_FALSE,		/* Thumb.  */
++  tune_params::LOG_OP_NON_SHORT_CIRCUIT_FALSE,		/* ARM.  */
++  tune_params::DISPARAGE_FLAGS_NEITHER,
++  tune_params::PREF_NEON_64_FALSE,
++  tune_params::PREF_NEON_STRINGOPS_FALSE,
++  tune_params::FUSE_NOTHING,
++  tune_params::SCHED_AUTOPREF_OFF
+ };
+ 
+ /* Cortex-M7 tuning.  */
+@@ -2058,21 +2150,23 @@ const struct tune_params arm_cortex_m7_tune =
+ {
+   arm_9e_rtx_costs,
+   &v7m_extra_costs,
+-  NULL,						/* Sched adj cost.  */
++  NULL,					/* Sched adj cost.  */
++  arm_cortex_m7_branch_cost,
++  &arm_default_vec_cost,
+   0,						/* Constant limit.  */
+   1,						/* Max cond insns.  */
++  8,						/* Memset max inline.  */
++  2,						/* Issue rate.  */
+   ARM_PREFETCH_NOT_BENEFICIAL,
+-  true,						/* Prefer constant pool.  */
+-  arm_cortex_m7_branch_cost,
+-  false,					/* Prefer LDRD/STRD.  */
+-  {true, true},					/* Prefer non short circuit.  */
+-  &arm_default_vec_cost,                        /* Vectorizer costs.  */
+-  false,                                        /* Prefer Neon for 64-bits bitops.  */
+-  false, false,                                 /* Prefer 32-bit encodings.  */
+-  false,					/* Prefer Neon for stringops.  */
+-  8,						/* Maximum insns to inline memset.  */
+-  ARM_FUSE_NOTHING,				/* Fuseable pairs of instructions.  */
+-  ARM_SCHED_AUTOPREF_OFF			/* Sched L2 autopref.  */
++  tune_params::PREF_CONST_POOL_TRUE,
++  tune_params::PREF_LDRD_FALSE,
++  tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* Thumb.  */
++  tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* ARM.  */
++  tune_params::DISPARAGE_FLAGS_NEITHER,
++  tune_params::PREF_NEON_64_FALSE,
++  tune_params::PREF_NEON_STRINGOPS_FALSE,
++  tune_params::FUSE_NOTHING,
++  tune_params::SCHED_AUTOPREF_OFF
+ };
+ 
+ /* The arm_v6m_tune is duplicated from arm_cortex_tune, rather than
+@@ -2080,43 +2174,47 @@ const struct tune_params arm_cortex_m7_tune =
+ const struct tune_params arm_v6m_tune =
+ {
+   arm_9e_rtx_costs,
+-  NULL,
+-  NULL,						/* Sched adj cost.  */
++  NULL,					/* Insn extra costs.  */
++  NULL,					/* Sched adj cost.  */
++  arm_default_branch_cost,
++  &arm_default_vec_cost,                        /* Vectorizer costs.  */
+   1,						/* Constant limit.  */
+   5,						/* Max cond insns.  */
++  8,						/* Memset max inline.  */
++  1,						/* Issue rate.  */
+   ARM_PREFETCH_NOT_BENEFICIAL,
+-  false,					/* Prefer constant pool.  */
+-  arm_default_branch_cost,
+-  false,					/* Prefer LDRD/STRD.  */
+-  {false, false},				/* Prefer non short circuit.  */
+-  &arm_default_vec_cost,                        /* Vectorizer costs.  */
+-  false,                                        /* Prefer Neon for 64-bits bitops.  */
+-  false, false,                                 /* Prefer 32-bit encodings.  */
+-  false,					/* Prefer Neon for stringops.  */
+-  8,						/* Maximum insns to inline memset.  */
+-  ARM_FUSE_NOTHING,				/* Fuseable pairs of instructions.  */
+-  ARM_SCHED_AUTOPREF_OFF			/* Sched L2 autopref.  */
++  tune_params::PREF_CONST_POOL_FALSE,
++  tune_params::PREF_LDRD_FALSE,
++  tune_params::LOG_OP_NON_SHORT_CIRCUIT_FALSE,		/* Thumb.  */
++  tune_params::LOG_OP_NON_SHORT_CIRCUIT_FALSE,		/* ARM.  */
++  tune_params::DISPARAGE_FLAGS_NEITHER,
++  tune_params::PREF_NEON_64_FALSE,
++  tune_params::PREF_NEON_STRINGOPS_FALSE,
++  tune_params::FUSE_NOTHING,
++  tune_params::SCHED_AUTOPREF_OFF
+ };
+ 
+ const struct tune_params arm_fa726te_tune =
+ {
+   arm_9e_rtx_costs,
+-  NULL,
++  NULL,					/* Insn extra costs.  */
+   fa726te_sched_adjust_cost,
++  arm_default_branch_cost,
++  &arm_default_vec_cost,
+   1,						/* Constant limit.  */
+   5,						/* Max cond insns.  */
++  8,						/* Memset max inline.  */
++  2,						/* Issue rate.  */
+   ARM_PREFETCH_NOT_BENEFICIAL,
+-  true,						/* Prefer constant pool.  */
+-  arm_default_branch_cost,
+-  false,					/* Prefer LDRD/STRD.  */
+-  {true, true},					/* Prefer non short circuit.  */
+-  &arm_default_vec_cost,                        /* Vectorizer costs.  */
+-  false,                                        /* Prefer Neon for 64-bits bitops.  */
+-  false, false,                                 /* Prefer 32-bit encodings.  */
+-  false,					/* Prefer Neon for stringops.  */
+-  8,						/* Maximum insns to inline memset.  */
+-  ARM_FUSE_NOTHING,				/* Fuseable pairs of instructions.  */
+-  ARM_SCHED_AUTOPREF_OFF			/* Sched L2 autopref.  */
++  tune_params::PREF_CONST_POOL_TRUE,
++  tune_params::PREF_LDRD_FALSE,
++  tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* Thumb.  */
++  tune_params::LOG_OP_NON_SHORT_CIRCUIT_TRUE,		/* ARM.  */
++  tune_params::DISPARAGE_FLAGS_NEITHER,
++  tune_params::PREF_NEON_64_FALSE,
++  tune_params::PREF_NEON_STRINGOPS_FALSE,
++  tune_params::FUSE_NOTHING,
++  tune_params::SCHED_AUTOPREF_OFF
+ };
+ 
+ 
+@@ -2127,10 +2225,10 @@ static const struct processors all_cores[] =
+   /* ARM Cores */
+ #define ARM_CORE(NAME, X, IDENT, ARCH, FLAGS, COSTS) \
+   {NAME, IDENT, #ARCH, BASE_ARCH_##ARCH,	  \
+-    FLAGS | FL_FOR_ARCH##ARCH, &arm_##COSTS##_tune},
++   FLAGS, &arm_##COSTS##_tune},
+ #include "arm-cores.def"
+ #undef ARM_CORE
+-  {NULL, arm_none, NULL, BASE_ARCH_0, 0, NULL}
++  {NULL, arm_none, NULL, BASE_ARCH_0, ARM_FSET_EMPTY, NULL}
+ };
+ 
+ static const struct processors all_architectures[] =
+@@ -2143,7 +2241,7 @@ static const struct processors all_architectures[] =
+   {NAME, CORE, #ARCH, BASE_ARCH_##ARCH, FLAGS, NULL},
+ #include "arm-arches.def"
+ #undef ARM_ARCH
+-  {NULL, arm_none, NULL, BASE_ARCH_0, 0, NULL}
++  {NULL, arm_none, NULL, BASE_ARCH_0, ARM_FSET_EMPTY, NULL}
+ };
+ 
+ 
+@@ -2161,8 +2259,8 @@ char arm_arch_name[] = "__ARM_ARCH_0UNK__";
+ 
+ static const struct arm_fpu_desc all_fpus[] =
+ {
+-#define ARM_FPU(NAME, MODEL, REV, VFP_REGS, NEON, FP16, CRYPTO) \
+-  { NAME, MODEL, REV, VFP_REGS, NEON, FP16, CRYPTO },
++#define ARM_FPU(NAME, MODEL, REV, VFP_REGS, FEATURES) \
++  { NAME, MODEL, REV, VFP_REGS, FEATURES },
+ #include "arm-fpus.def"
+ #undef ARM_FPU
+ };
+@@ -2209,6 +2307,14 @@ bit_count (unsigned long value)
+   return count;
+ }
+ 
++/* Return the number of features in feature-set SET.  */
++static unsigned
++feature_count (const arm_feature_set * set)
++{
++  return (bit_count (ARM_FSET_CPU1 (*set))
++	  + bit_count (ARM_FSET_CPU2 (*set)));
++}
++
+ typedef struct
+ {
+   machine_mode mode;
+@@ -2626,6 +2732,172 @@ arm_gimplify_va_arg_expr (tree valist, tree type, gimple_seq *pre_p,
+   return std_gimplify_va_arg_expr (valist, type, pre_p, post_p);
+ }
+ 
++/* Check any incompatible options that the user has specified.  */
++static void
++arm_option_check_internal (struct gcc_options *opts)
++{
++  int flags = opts->x_target_flags;
++
++  /* Make sure that the processor choice does not conflict with any of the
++     other command line choices.  */
++  if (TARGET_ARM_P (flags) && !ARM_FSET_HAS_CPU1 (insn_flags, FL_NOTM))
++    error ("target CPU does not support ARM mode");
++
++  /* TARGET_BACKTRACE calls leaf_function_p, which causes a crash if done
++     from here where no function is being compiled currently.  */
++  if ((TARGET_TPCS_FRAME || TARGET_TPCS_LEAF_FRAME) && TARGET_ARM_P (flags))
++    warning (0, "enabling backtrace support is only meaningful when compiling for the Thumb");
++
++  if (TARGET_ARM_P (flags) && TARGET_CALLEE_INTERWORKING)
++    warning (0, "enabling callee interworking support is only meaningful when compiling for the Thumb");
++
++  /* If this target is normally configured to use APCS frames, warn if they
++     are turned off and debugging is turned on.  */
++  if (TARGET_ARM_P (flags)
++      && write_symbols != NO_DEBUG
++      && !TARGET_APCS_FRAME
++      && (TARGET_DEFAULT & MASK_APCS_FRAME))
++    warning (0, "-g with -mno-apcs-frame may not give sensible debugging");
++
++  /* iWMMXt unsupported under Thumb mode.  */
++  if (TARGET_THUMB_P (flags) && TARGET_IWMMXT)
++    error ("iWMMXt unsupported under Thumb mode");
++
++  if (TARGET_HARD_TP && TARGET_THUMB1_P (flags))
++    error ("can not use -mtp=cp15 with 16-bit Thumb");
++
++  if (TARGET_THUMB_P (flags) && TARGET_VXWORKS_RTP && flag_pic)
++    {
++      error ("RTP PIC is incompatible with Thumb");
++      flag_pic = 0;
++    }
++
++  /* We only support -mslow-flash-data on armv7-m targets.  */
++  if (target_slow_flash_data
++      && ((!(arm_arch7 && !arm_arch_notm) && !arm_arch7em)
++	  || (TARGET_THUMB1_P (flags) || flag_pic || TARGET_NEON)))
++    error ("-mslow-flash-data only supports non-pic code on armv7-m targets");
++}
++
++/* Recompute the global settings depending on target attribute options.  */
++
++static void
++arm_option_params_internal (void)
++{
++  /* If we are not using the default (ARM mode) section anchor offset
++     ranges, then set the correct ranges now.  */
++  if (TARGET_THUMB1)
++    {
++      /* Thumb-1 LDR instructions cannot have negative offsets.
++         Permissible positive offset ranges are 5-bit (for byte loads),
++         6-bit (for halfword loads), or 7-bit (for word loads).
++         Empirical results suggest a 7-bit anchor range gives the best
++         overall code size.  */
++      targetm.min_anchor_offset = 0;
++      targetm.max_anchor_offset = 127;
++    }
++  else if (TARGET_THUMB2)
++    {
++      /* The minimum is set such that the total size of the block
++         for a particular anchor is 248 + 1 + 4095 bytes, which is
++         divisible by eight, ensuring natural spacing of anchors.  */
++      targetm.min_anchor_offset = -248;
++      targetm.max_anchor_offset = 4095;
++    }
++  else
++    {
++      targetm.min_anchor_offset = TARGET_MIN_ANCHOR_OFFSET;
++      targetm.max_anchor_offset = TARGET_MAX_ANCHOR_OFFSET;
++    }
++
++  if (optimize_size)
++    {
++      /* If optimizing for size, bump the number of instructions that we
++         are prepared to conditionally execute (even on a StrongARM).  */
++      max_insns_skipped = 6;
++
++      /* For THUMB2, we limit the conditional sequence to one IT block.  */
++      if (TARGET_THUMB2)
++        max_insns_skipped = arm_restrict_it ? 1 : 4;
++    }
++  else
++    /* When -mrestrict-it is in use tone down the if-conversion.  */
++    max_insns_skipped = (TARGET_THUMB2 && arm_restrict_it)
++      ? 1 : current_tune->max_insns_skipped;
++}
++
++/* True if -mflip-thumb should next add an attribute for the default
++   mode, false if it should next add an attribute for the opposite mode.  */
++static GTY(()) bool thumb_flipper;
++
++/* Options after initial target override.  */
++static GTY(()) tree init_optimize;
++
++/* Reset options between modes that the user has specified.  */
++static void
++arm_option_override_internal (struct gcc_options *opts,
++			      struct gcc_options *opts_set)
++{
++  if (TARGET_THUMB_P (opts->x_target_flags)
++      && !(ARM_FSET_HAS_CPU1 (insn_flags, FL_THUMB)))
++    {
++      warning (0, "target CPU does not support THUMB instructions");
++      opts->x_target_flags &= ~MASK_THUMB;
++    }
++
++  if (TARGET_APCS_FRAME && TARGET_THUMB_P (opts->x_target_flags))
++    {
++      /* warning (0, "ignoring -mapcs-frame because -mthumb was used"); */
++      opts->x_target_flags &= ~MASK_APCS_FRAME;
++    }
++
++  /* Callee super interworking implies thumb interworking.  Adding
++     this to the flags here simplifies the logic elsewhere.  */
++  if (TARGET_THUMB_P (opts->x_target_flags) && TARGET_CALLEE_INTERWORKING)
++    opts->x_target_flags |= MASK_INTERWORK;
++
++  /* need to remember initial values so combinaisons of options like
++     -mflip-thumb -mthumb -fno-schedule-insns work for any attribute.  */
++  cl_optimization *to = TREE_OPTIMIZATION (init_optimize);
++
++  if (! opts_set->x_arm_restrict_it)
++    opts->x_arm_restrict_it = arm_arch8;
++
++  if (!TARGET_THUMB2_P (opts->x_target_flags))
++    opts->x_arm_restrict_it = 0;
++
++  /* Don't warn since it's on by default in -O2.  */
++  if (TARGET_THUMB1_P (opts->x_target_flags))
++    opts->x_flag_schedule_insns = 0;
++  else
++    opts->x_flag_schedule_insns = to->x_flag_schedule_insns;
++
++  /* Disable shrink-wrap when optimizing function for size, since it tends to
++     generate additional returns.  */
++  if (optimize_function_for_size_p (cfun)
++      && TARGET_THUMB2_P (opts->x_target_flags))
++    opts->x_flag_shrink_wrap = false;
++  else
++    opts->x_flag_shrink_wrap = to->x_flag_shrink_wrap;
++
++  /* In Thumb1 mode, we emit the epilogue in RTL, but the last insn
++     - epilogue_insns - does not accurately model the corresponding insns
++     emitted in the asm file.  In particular, see the comment in thumb_exit
++     'Find out how many of the (return) argument registers we can corrupt'.
++     As a consequence, the epilogue may clobber registers without fipa-ra
++     finding out about it.  Therefore, disable fipa-ra in Thumb1 mode.
++     TODO: Accurately model clobbers for epilogue_insns and reenable
++     fipa-ra.  */
++  if (TARGET_THUMB1_P (opts->x_target_flags))
++    opts->x_flag_ipa_ra = 0;
++  else
++    opts->x_flag_ipa_ra = to->x_flag_ipa_ra;
++
++  /* Thumb2 inline assembly code should always use unified syntax.
++     This will apply to ARM and Thumb1 eventually.  */
++  opts->x_inline_asm_unified = TARGET_THUMB2_P (opts->x_target_flags);
++}
++
+ /* Fix up any incompatible options that the user has specified.  */
+ static void
+ arm_option_override (void)
+@@ -2654,8 +2926,13 @@ arm_option_override (void)
+     {
+       if (arm_selected_cpu)
+ 	{
++	  const arm_feature_set tuning_flags = ARM_FSET_MAKE_CPU1 (FL_TUNE);
++	  arm_feature_set selected_flags;
++	  ARM_FSET_XOR (selected_flags, arm_selected_cpu->flags,
++			arm_selected_arch->flags);
++	  ARM_FSET_EXCLUDE (selected_flags, selected_flags, tuning_flags);
+ 	  /* Check for conflict between mcpu and march.  */
+-	  if ((arm_selected_cpu->flags ^ arm_selected_arch->flags) & ~FL_TUNE)
++	  if (!ARM_FSET_IS_EMPTY (selected_flags))
+ 	    {
+ 	      warning (0, "switch -mcpu=%s conflicts with -march=%s switch",
+ 		       arm_selected_cpu->name, arm_selected_arch->name);
+@@ -2679,7 +2956,7 @@ arm_option_override (void)
+   if (!arm_selected_cpu)
+     {
+       const struct processors * sel;
+-      unsigned int        sought;
++      arm_feature_set sought = ARM_FSET_EMPTY;;
+ 
+       arm_selected_cpu = &all_cores[TARGET_CPU_DEFAULT];
+       if (!arm_selected_cpu->name)
+@@ -2699,26 +2976,27 @@ arm_option_override (void)
+ 
+       /* Now check to see if the user has specified some command line
+ 	 switch that require certain abilities from the cpu.  */
+-      sought = 0;
+ 
+       if (TARGET_INTERWORK || TARGET_THUMB)
+ 	{
+-	  sought |= (FL_THUMB | FL_MODE32);
++	  ARM_FSET_ADD_CPU1 (sought, FL_THUMB);
++	  ARM_FSET_ADD_CPU1 (sought, FL_MODE32);
+ 
+ 	  /* There are no ARM processors that support both APCS-26 and
+ 	     interworking.  Therefore we force FL_MODE26 to be removed
+ 	     from insn_flags here (if it was set), so that the search
+ 	     below will always be able to find a compatible processor.  */
+-	  insn_flags &= ~FL_MODE26;
++	  ARM_FSET_DEL_CPU1 (insn_flags, FL_MODE26);
+ 	}
+ 
+-      if (sought != 0 && ((sought & insn_flags) != sought))
++      if (!ARM_FSET_IS_EMPTY (sought)
++	  && !(ARM_FSET_CPU_SUBSET (sought, insn_flags)))
+ 	{
+ 	  /* Try to locate a CPU type that supports all of the abilities
+ 	     of the default CPU, plus the extra abilities requested by
+ 	     the user.  */
+ 	  for (sel = all_cores; sel->name != NULL; sel++)
+-	    if ((sel->flags & sought) == (sought | insn_flags))
++	    if (ARM_FSET_CPU_SUBSET (sought, sel->flags))
+ 	      break;
+ 
+ 	  if (sel->name == NULL)
+@@ -2738,19 +3016,23 @@ arm_option_override (void)
+ 		 command line options we scan the array again looking
+ 		 for a best match.  */
+ 	      for (sel = all_cores; sel->name != NULL; sel++)
+-		if ((sel->flags & sought) == sought)
+-		  {
+-		    unsigned count;
+-
+-		    count = bit_count (sel->flags & insn_flags);
+-
+-		    if (count >= current_bit_count)
+-		      {
+-			best_fit = sel;
+-			current_bit_count = count;
+-		      }
+-		  }
++		{
++		  arm_feature_set required = ARM_FSET_EMPTY;
++		  ARM_FSET_UNION (required, sought, insn_flags);
++		  if (ARM_FSET_CPU_SUBSET (required, sel->flags))
++		    {
++		      unsigned count;
++		      arm_feature_set flags;
++		      ARM_FSET_INTER (flags, sel->flags, insn_flags);
++		      count = feature_count (&flags);
+ 
++		      if (count >= current_bit_count)
++			{
++			  best_fit = sel;
++			  current_bit_count = count;
++			}
++		    }
++		}
+ 	      gcc_assert (best_fit);
+ 	      sel = best_fit;
+ 	    }
+@@ -2772,44 +3054,19 @@ arm_option_override (void)
+   tune_flags = arm_selected_tune->flags;
+   current_tune = arm_selected_tune->tune;
+ 
+-  /* Make sure that the processor choice does not conflict with any of the
+-     other command line choices.  */
+-  if (TARGET_ARM && !(insn_flags & FL_NOTM))
+-    error ("target CPU does not support ARM mode");
++  /* TBD: Dwarf info for apcs frame is not handled yet.  */
++  if (TARGET_APCS_FRAME)
++    flag_shrink_wrap = false;
+ 
+   /* BPABI targets use linker tricks to allow interworking on cores
+      without thumb support.  */
+-  if (TARGET_INTERWORK && !((insn_flags & FL_THUMB) || TARGET_BPABI))
++  if (TARGET_INTERWORK
++      && !(ARM_FSET_HAS_CPU1 (insn_flags, FL_THUMB) || TARGET_BPABI))
+     {
+       warning (0, "target CPU does not support interworking" );
+       target_flags &= ~MASK_INTERWORK;
+     }
+ 
+-  if (TARGET_THUMB && !(insn_flags & FL_THUMB))
+-    {
+-      warning (0, "target CPU does not support THUMB instructions");
+-      target_flags &= ~MASK_THUMB;
+-    }
+-
+-  if (TARGET_APCS_FRAME && TARGET_THUMB)
+-    {
+-      /* warning (0, "ignoring -mapcs-frame because -mthumb was used"); */
+-      target_flags &= ~MASK_APCS_FRAME;
+-    }
+-
+-  /* Callee super interworking implies thumb interworking.  Adding
+-     this to the flags here simplifies the logic elsewhere.  */
+-  if (TARGET_THUMB && TARGET_CALLEE_INTERWORKING)
+-    target_flags |= MASK_INTERWORK;
+-
+-  /* TARGET_BACKTRACE calls leaf_function_p, which causes a crash if done
+-     from here where no function is being compiled currently.  */
+-  if ((TARGET_TPCS_FRAME || TARGET_TPCS_LEAF_FRAME) && TARGET_ARM)
+-    warning (0, "enabling backtrace support is only meaningful when compiling for the Thumb");
+-
+-  if (TARGET_ARM && TARGET_CALLEE_INTERWORKING)
+-    warning (0, "enabling callee interworking support is only meaningful when compiling for the Thumb");
+-
+   if (TARGET_APCS_STACK && !TARGET_APCS_FRAME)
+     {
+       warning (0, "-mapcs-stack-check incompatible with -mno-apcs-frame");
+@@ -2825,73 +3082,38 @@ arm_option_override (void)
+   if (TARGET_APCS_REENT)
+     warning (0, "APCS reentrant code not supported.  Ignored");
+ 
+-  /* If this target is normally configured to use APCS frames, warn if they
+-     are turned off and debugging is turned on.  */
+-  if (TARGET_ARM
+-      && write_symbols != NO_DEBUG
+-      && !TARGET_APCS_FRAME
+-      && (TARGET_DEFAULT & MASK_APCS_FRAME))
+-    warning (0, "-g with -mno-apcs-frame may not give sensible debugging");
+-
+   if (TARGET_APCS_FLOAT)
+     warning (0, "passing floating point arguments in fp regs not yet supported");
+ 
+   /* Initialize boolean versions of the flags, for use in the arm.md file.  */
+-  arm_arch3m = (insn_flags & FL_ARCH3M) != 0;
+-  arm_arch4 = (insn_flags & FL_ARCH4) != 0;
+-  arm_arch4t = arm_arch4 & ((insn_flags & FL_THUMB) != 0);
+-  arm_arch5 = (insn_flags & FL_ARCH5) != 0;
+-  arm_arch5e = (insn_flags & FL_ARCH5E) != 0;
+-  arm_arch6 = (insn_flags & FL_ARCH6) != 0;
+-  arm_arch6k = (insn_flags & FL_ARCH6K) != 0;
+-  arm_arch_notm = (insn_flags & FL_NOTM) != 0;
++  arm_arch3m = ARM_FSET_HAS_CPU1 (insn_flags, FL_ARCH3M);
++  arm_arch4 = ARM_FSET_HAS_CPU1 (insn_flags, FL_ARCH4);
++  arm_arch4t = arm_arch4 && (ARM_FSET_HAS_CPU1 (insn_flags, FL_THUMB));
++  arm_arch5 = ARM_FSET_HAS_CPU1 (insn_flags, FL_ARCH5);
++  arm_arch5e = ARM_FSET_HAS_CPU1 (insn_flags, FL_ARCH5E);
++  arm_arch6 = ARM_FSET_HAS_CPU1 (insn_flags, FL_ARCH6);
++  arm_arch6k = ARM_FSET_HAS_CPU1 (insn_flags, FL_ARCH6K);
++  arm_arch6kz = arm_arch6k && ARM_FSET_HAS_CPU1 (insn_flags, FL_ARCH6KZ);
++  arm_arch_notm = ARM_FSET_HAS_CPU1 (insn_flags, FL_NOTM);
+   arm_arch6m = arm_arch6 && !arm_arch_notm;
+-  arm_arch7 = (insn_flags & FL_ARCH7) != 0;
+-  arm_arch7em = (insn_flags & FL_ARCH7EM) != 0;
+-  arm_arch8 = (insn_flags & FL_ARCH8) != 0;
+-  arm_arch_thumb2 = (insn_flags & FL_THUMB2) != 0;
+-  arm_arch_xscale = (insn_flags & FL_XSCALE) != 0;
+-
+-  arm_ld_sched = (tune_flags & FL_LDSCHED) != 0;
+-  arm_tune_strongarm = (tune_flags & FL_STRONG) != 0;
+-  thumb_code = TARGET_ARM == 0;
+-  thumb1_code = TARGET_THUMB1 != 0;
+-  arm_tune_wbuf = (tune_flags & FL_WBUF) != 0;
+-  arm_tune_xscale = (tune_flags & FL_XSCALE) != 0;
+-  arm_arch_iwmmxt = (insn_flags & FL_IWMMXT) != 0;
+-  arm_arch_iwmmxt2 = (insn_flags & FL_IWMMXT2) != 0;
+-  arm_arch_thumb_hwdiv = (insn_flags & FL_THUMB_DIV) != 0;
+-  arm_arch_arm_hwdiv = (insn_flags & FL_ARM_DIV) != 0;
+-  arm_arch_no_volatile_ce = (insn_flags & FL_NO_VOLATILE_CE) != 0;
++  arm_arch7 = ARM_FSET_HAS_CPU1 (insn_flags, FL_ARCH7);
++  arm_arch7em = ARM_FSET_HAS_CPU1 (insn_flags, FL_ARCH7EM);
++  arm_arch8 = ARM_FSET_HAS_CPU1 (insn_flags, FL_ARCH8);
++  arm_arch_thumb2 = ARM_FSET_HAS_CPU1 (insn_flags, FL_THUMB2);
++  arm_arch_xscale = ARM_FSET_HAS_CPU1 (insn_flags, FL_XSCALE);
++
++  arm_ld_sched = ARM_FSET_HAS_CPU1 (tune_flags, FL_LDSCHED);
++  arm_tune_strongarm = ARM_FSET_HAS_CPU1 (tune_flags, FL_STRONG);
++  arm_tune_wbuf = ARM_FSET_HAS_CPU1 (tune_flags, FL_WBUF);
++  arm_tune_xscale = ARM_FSET_HAS_CPU1 (tune_flags, FL_XSCALE);
++  arm_arch_iwmmxt = ARM_FSET_HAS_CPU1 (insn_flags, FL_IWMMXT);
++  arm_arch_iwmmxt2 = ARM_FSET_HAS_CPU1 (insn_flags, FL_IWMMXT2);
++  arm_arch_thumb_hwdiv = ARM_FSET_HAS_CPU1 (insn_flags, FL_THUMB_DIV);
++  arm_arch_arm_hwdiv = ARM_FSET_HAS_CPU1 (insn_flags, FL_ARM_DIV);
++  arm_arch_no_volatile_ce = ARM_FSET_HAS_CPU1 (insn_flags, FL_NO_VOLATILE_CE);
+   arm_tune_cortex_a9 = (arm_tune == cortexa9) != 0;
+-  arm_arch_crc = (insn_flags & FL_CRC32) != 0;
+-  arm_m_profile_small_mul = (insn_flags & FL_SMALLMUL) != 0;
+-  if (arm_restrict_it == 2)
+-    arm_restrict_it = arm_arch8 && TARGET_THUMB2;
+-
+-  if (!TARGET_THUMB2)
+-    arm_restrict_it = 0;
+-
+-  /* If we are not using the default (ARM mode) section anchor offset
+-     ranges, then set the correct ranges now.  */
+-  if (TARGET_THUMB1)
+-    {
+-      /* Thumb-1 LDR instructions cannot have negative offsets.
+-         Permissible positive offset ranges are 5-bit (for byte loads),
+-         6-bit (for halfword loads), or 7-bit (for word loads).
+-         Empirical results suggest a 7-bit anchor range gives the best
+-         overall code size.  */
+-      targetm.min_anchor_offset = 0;
+-      targetm.max_anchor_offset = 127;
+-    }
+-  else if (TARGET_THUMB2)
+-    {
+-      /* The minimum is set such that the total size of the block
+-         for a particular anchor is 248 + 1 + 4095 bytes, which is
+-         divisible by eight, ensuring natural spacing of anchors.  */
+-      targetm.min_anchor_offset = -248;
+-      targetm.max_anchor_offset = 4095;
+-    }
++  arm_arch_crc = ARM_FSET_HAS_CPU1 (insn_flags, FL_CRC32);
++  arm_m_profile_small_mul = ARM_FSET_HAS_CPU1 (insn_flags, FL_SMALLMUL);
+ 
+   /* V5 code we generate is completely interworking capable, so we turn off
+      TARGET_INTERWORK here to avoid many tests later on.  */
+@@ -2951,10 +3173,6 @@ arm_option_override (void)
+   if (TARGET_IWMMXT && TARGET_NEON)
+     error ("iWMMXt and NEON are incompatible");
+ 
+-  /* iWMMXt unsupported under Thumb mode.  */
+-  if (TARGET_THUMB && TARGET_IWMMXT)
+-    error ("iWMMXt unsupported under Thumb mode");
+-
+   /* __fp16 support currently assumes the core has ldrh.  */
+   if (!arm_arch4 && arm_fp16_format != ARM_FP16_FORMAT_NONE)
+     sorry ("__fp16 and no ldrh");
+@@ -2987,7 +3205,7 @@ arm_option_override (void)
+ 
+   /* For arm2/3 there is no need to do any scheduling if we are doing
+      software floating-point.  */
+-  if (TARGET_SOFT_FLOAT && (tune_flags & FL_MODE32) == 0)
++  if (TARGET_SOFT_FLOAT && !ARM_FSET_HAS_CPU1 (tune_flags, FL_MODE32))
+     flag_schedule_insns = flag_schedule_insns_after_reload = 0;
+ 
+   /* Use the cp15 method if it is available.  */
+@@ -2999,9 +3217,6 @@ arm_option_override (void)
+ 	target_thread_pointer = TP_SOFT;
+     }
+ 
+-  if (TARGET_HARD_TP && TARGET_THUMB1)
+-    error ("can not use -mtp=cp15 with 16-bit Thumb");
+-
+   /* Override the default structure alignment for AAPCS ABI.  */
+   if (!global_options_set.x_arm_structure_size_boundary)
+     {
+@@ -3024,12 +3239,6 @@ arm_option_override (void)
+ 	}
+     }
+ 
+-  if (!TARGET_ARM && TARGET_VXWORKS_RTP && flag_pic)
+-    {
+-      error ("RTP PIC is incompatible with Thumb");
+-      flag_pic = 0;
+-    }
+-
+   /* If stack checking is disabled, we can use r10 as the PIC register,
+      which keeps r9 available.  The EABI specifies r9 as the PIC register.  */
+   if (flag_pic && TARGET_SINGLE_PIC_BASE)
+@@ -3097,25 +3306,6 @@ arm_option_override (void)
+       unaligned_access = 0;
+     }
+ 
+-  if (TARGET_THUMB1 && flag_schedule_insns)
+-    {
+-      /* Don't warn since it's on by default in -O2.  */
+-      flag_schedule_insns = 0;
+-    }
+-
+-  if (optimize_size)
+-    {
+-      /* If optimizing for size, bump the number of instructions that we
+-         are prepared to conditionally execute (even on a StrongARM).  */
+-      max_insns_skipped = 6;
+-
+-      /* For THUMB2, we limit the conditional sequence to one IT block.  */
+-      if (TARGET_THUMB2)
+-	max_insns_skipped = MAX_INSN_PER_IT_BLOCK;
+-    }
+-  else
+-    max_insns_skipped = current_tune->max_insns_skipped;
+-
+   /* Hot/Cold partitioning is not currently supported, since we can't
+      handle literal pool placement in that case.  */
+   if (flag_reorder_blocks_and_partition)
+@@ -3140,31 +3330,33 @@ arm_option_override (void)
+       && abi_version_at_least(2))
+     flag_strict_volatile_bitfields = 1;
+ 
+-  /* Enable sw prefetching at -O3 for CPUS that have prefetch, and we have deemed
+-     it beneficial (signified by setting num_prefetch_slots to 1 or more.)  */
++  /* Enable sw prefetching at -O3 for CPUS that have prefetch, and we
++     have deemed it beneficial (signified by setting
++     prefetch.num_slots to 1 or more).  */
+   if (flag_prefetch_loop_arrays < 0
+       && HAVE_prefetch
+       && optimize >= 3
+-      && current_tune->num_prefetch_slots > 0)
++      && current_tune->prefetch.num_slots > 0)
+     flag_prefetch_loop_arrays = 1;
+ 
+-  /* Set up parameters to be used in prefetching algorithm.  Do not override the
+-     defaults unless we are tuning for a core we have researched values for.  */
+-  if (current_tune->num_prefetch_slots > 0)
++  /* Set up parameters to be used in prefetching algorithm.  Do not
++     override the defaults unless we are tuning for a core we have
++     researched values for.  */
++  if (current_tune->prefetch.num_slots > 0)
+     maybe_set_param_value (PARAM_SIMULTANEOUS_PREFETCHES,
+-                           current_tune->num_prefetch_slots,
+-                           global_options.x_param_values,
+-                           global_options_set.x_param_values);
+-  if (current_tune->l1_cache_line_size >= 0)
++			   current_tune->prefetch.num_slots,
++			   global_options.x_param_values,
++			   global_options_set.x_param_values);
++  if (current_tune->prefetch.l1_cache_line_size >= 0)
+     maybe_set_param_value (PARAM_L1_CACHE_LINE_SIZE,
+-                           current_tune->l1_cache_line_size,
+-                           global_options.x_param_values,
+-                           global_options_set.x_param_values);
+-  if (current_tune->l1_cache_size >= 0)
++			   current_tune->prefetch.l1_cache_line_size,
++			   global_options.x_param_values,
++			   global_options_set.x_param_values);
++  if (current_tune->prefetch.l1_cache_size >= 0)
+     maybe_set_param_value (PARAM_L1_CACHE_SIZE,
+-                           current_tune->l1_cache_size,
+-                           global_options.x_param_values,
+-                           global_options_set.x_param_values);
++			   current_tune->prefetch.l1_cache_size,
++			   global_options.x_param_values,
++			   global_options_set.x_param_values);
+ 
+   /* Use Neon to perform 64-bits operations rather than core
+      registers.  */
+@@ -3174,67 +3366,63 @@ arm_option_override (void)
+ 
+   /* Use the alternative scheduling-pressure algorithm by default.  */
+   maybe_set_param_value (PARAM_SCHED_PRESSURE_ALGORITHM, SCHED_PRESSURE_MODEL,
+-                         global_options.x_param_values,
+-                         global_options_set.x_param_values);
++			 global_options.x_param_values,
++			 global_options_set.x_param_values);
+ 
+   /* Look through ready list and all of queue for instructions
+      relevant for L2 auto-prefetcher.  */
+   int param_sched_autopref_queue_depth;
+-  if (current_tune->sched_autopref == ARM_SCHED_AUTOPREF_OFF)
+-    param_sched_autopref_queue_depth = -1;
+-  else if (current_tune->sched_autopref == ARM_SCHED_AUTOPREF_RANK)
+-    param_sched_autopref_queue_depth = 0;
+-  else if (current_tune->sched_autopref == ARM_SCHED_AUTOPREF_FULL)
+-    param_sched_autopref_queue_depth = max_insn_queue_index + 1;
+-  else
+-    gcc_unreachable ();
++
++  switch (current_tune->sched_autopref)
++    {
++    case tune_params::SCHED_AUTOPREF_OFF:
++      param_sched_autopref_queue_depth = -1;
++      break;
++
++    case tune_params::SCHED_AUTOPREF_RANK:
++      param_sched_autopref_queue_depth = 0;
++      break;
++
++    case tune_params::SCHED_AUTOPREF_FULL:
++      param_sched_autopref_queue_depth = max_insn_queue_index + 1;
++      break;
++
++    default:
++      gcc_unreachable ();
++    }
++
+   maybe_set_param_value (PARAM_SCHED_AUTOPREF_QUEUE_DEPTH,
+ 			 param_sched_autopref_queue_depth,
+-                         global_options.x_param_values,
+-                         global_options_set.x_param_values);
+-
+-  /* Disable shrink-wrap when optimizing function for size, since it tends to
+-     generate additional returns.  */
+-  if (optimize_function_for_size_p (cfun) && TARGET_THUMB2)
+-    flag_shrink_wrap = false;
+-  /* TBD: Dwarf info for apcs frame is not handled yet.  */
+-  if (TARGET_APCS_FRAME)
+-    flag_shrink_wrap = false;
+-
+-  /* We only support -mslow-flash-data on armv7-m targets.  */
+-  if (target_slow_flash_data
+-      && ((!(arm_arch7 && !arm_arch_notm) && !arm_arch7em)
+-	  || (TARGET_THUMB1 || flag_pic || TARGET_NEON)))
+-    error ("-mslow-flash-data only supports non-pic code on armv7-m targets");
++			 global_options.x_param_values,
++			 global_options_set.x_param_values);
+ 
+   /* Currently, for slow flash data, we just disable literal pools.  */
+   if (target_slow_flash_data)
+     arm_disable_literal_pool = true;
+ 
+-  /* Thumb2 inline assembly code should always use unified syntax.
+-     This will apply to ARM and Thumb1 eventually.  */
+-  if (TARGET_THUMB2)
+-    inline_asm_unified = 1;
+-
+   /* Disable scheduling fusion by default if it's not armv7 processor
+      or doesn't prefer ldrd/strd.  */
+   if (flag_schedule_fusion == 2
+       && (!arm_arch7 || !current_tune->prefer_ldrd_strd))
+     flag_schedule_fusion = 0;
+ 
+-  /* In Thumb1 mode, we emit the epilogue in RTL, but the last insn
+-     - epilogue_insns - does not accurately model the corresponding insns
+-     emitted in the asm file.  In particular, see the comment in thumb_exit
+-     'Find out how many of the (return) argument registers we can corrupt'.
+-     As a consequence, the epilogue may clobber registers without fipa-ra
+-     finding out about it.  Therefore, disable fipa-ra in Thumb1 mode.
+-     TODO: Accurately model clobbers for epilogue_insns and reenable
+-     fipa-ra.  */
+-  if (TARGET_THUMB1)
+-    flag_ipa_ra = 0;
++  /* Need to remember initial options before they are overriden.  */
++  init_optimize = build_optimization_node (&global_options);
++
++  arm_option_override_internal (&global_options, &global_options_set);
++  arm_option_check_internal (&global_options);
++  arm_option_params_internal ();
+ 
+   /* Register global variables with the garbage collector.  */
+   arm_add_gc_roots ();
++
++  /* Save the initial options in case the user does function specific
++     options.  */
++  target_option_default_node = target_option_current_node
++    = build_target_option_node (&global_options);
++
++  /* Init initial mode for testing.  */
++  thumb_flipper = TARGET_THUMB;
+ }
+ 
+ static void
+@@ -3388,13 +3576,20 @@ arm_warn_func_return (tree decl)
+ static void
+ arm_asm_trampoline_template (FILE *f)
+ {
++  if (TARGET_UNIFIED_ASM)
++    fprintf (f, "\t.syntax unified\n");
++  else
++    fprintf (f, "\t.syntax divided\n");
++
+   if (TARGET_ARM)
+     {
++      fprintf (f, "\t.arm\n");
+       asm_fprintf (f, "\tldr\t%r, [%r, #0]\n", STATIC_CHAIN_REGNUM, PC_REGNUM);
+       asm_fprintf (f, "\tldr\t%r, [%r, #0]\n", PC_REGNUM, PC_REGNUM);
+     }
+   else if (TARGET_THUMB2)
+     {
++      fprintf (f, "\t.thumb\n");
+       /* The Thumb-2 trampoline is similar to the arm implementation.
+ 	 Unlike 16-bit Thumb, we enter the stub in thumb mode.  */
+       asm_fprintf (f, "\tldr.w\t%r, [%r, #4]\n",
+@@ -4058,8 +4253,8 @@ emit_constant_insn (rtx cond, rtx pattern)
+ 
+ static int
+ arm_gen_constant (enum rtx_code code, machine_mode mode, rtx cond,
+-		  HOST_WIDE_INT val, rtx target, rtx source, int subtargets,
+-		  int generate)
++		  unsigned HOST_WIDE_INT val, rtx target, rtx source,
++		  int subtargets, int generate)
+ {
+   int can_invert = 0;
+   int can_negate = 0;
+@@ -4437,7 +4632,7 @@ arm_gen_constant (enum rtx_code code, machine_mode mode, rtx cond,
+ 	  mvn	r0, r0, asl #12
+ 	  mvn	r0, r0, lsr #12  */
+       if (set_sign_bit_copies > 8
+-	  && (val & (-1 << (32 - set_sign_bit_copies))) == val)
++	  && (val & (HOST_WIDE_INT_M1U << (32 - set_sign_bit_copies))) == val)
+ 	{
+ 	  if (generate)
+ 	    {
+@@ -7946,236 +8141,6 @@ thumb_legitimize_address (rtx x, rtx orig_x, machine_mode mode)
+   return x;
+ }
+ 
+-bool
+-arm_legitimize_reload_address (rtx *p,
+-			       machine_mode mode,
+-			       int opnum, int type,
+-			       int ind_levels ATTRIBUTE_UNUSED)
+-{
+-  /* We must recognize output that we have already generated ourselves.  */
+-  if (GET_CODE (*p) == PLUS
+-      && GET_CODE (XEXP (*p, 0)) == PLUS
+-      && REG_P (XEXP (XEXP (*p, 0), 0))
+-      && CONST_INT_P (XEXP (XEXP (*p, 0), 1))
+-      && CONST_INT_P (XEXP (*p, 1)))
+-    {
+-      push_reload (XEXP (*p, 0), NULL_RTX, &XEXP (*p, 0), NULL,
+-		   MODE_BASE_REG_CLASS (mode), GET_MODE (*p),
+-		   VOIDmode, 0, 0, opnum, (enum reload_type) type);
+-      return true;
+-    }
+-
+-  if (GET_CODE (*p) == PLUS
+-      && REG_P (XEXP (*p, 0))
+-      && ARM_REGNO_OK_FOR_BASE_P (REGNO (XEXP (*p, 0)))
+-      /* If the base register is equivalent to a constant, let the generic
+-	 code handle it.  Otherwise we will run into problems if a future
+-	 reload pass decides to rematerialize the constant.  */
+-      && !reg_equiv_constant (ORIGINAL_REGNO (XEXP (*p, 0)))
+-      && CONST_INT_P (XEXP (*p, 1)))
+-    {
+-      HOST_WIDE_INT val = INTVAL (XEXP (*p, 1));
+-      HOST_WIDE_INT low, high;
+-
+-      /* Detect coprocessor load/stores.  */
+-      bool coproc_p = ((TARGET_HARD_FLOAT
+-			&& TARGET_VFP
+-			&& (mode == SFmode || mode == DFmode))
+-		       || (TARGET_REALLY_IWMMXT
+-			   && VALID_IWMMXT_REG_MODE (mode))
+-		       || (TARGET_NEON
+-			   && (VALID_NEON_DREG_MODE (mode)
+-			       || VALID_NEON_QREG_MODE (mode))));
+-
+-      /* For some conditions, bail out when lower two bits are unaligned.  */
+-      if ((val & 0x3) != 0
+-	  /* Coprocessor load/store indexes are 8-bits + '00' appended.  */
+-	  && (coproc_p
+-	      /* For DI, and DF under soft-float: */
+-	      || ((mode == DImode || mode == DFmode)
+-		  /* Without ldrd, we use stm/ldm, which does not
+-		     fair well with unaligned bits.  */
+-		  && (! TARGET_LDRD
+-		      /* Thumb-2 ldrd/strd is [-1020,+1020] in steps of 4.  */
+-		      || TARGET_THUMB2))))
+-	return false;
+-
+-      /* When breaking down a [reg+index] reload address into [(reg+high)+low],
+-	 of which the (reg+high) gets turned into a reload add insn,
+-	 we try to decompose the index into high/low values that can often
+-	 also lead to better reload CSE.
+-	 For example:
+-	         ldr r0, [r2, #4100]  // Offset too large
+-		 ldr r1, [r2, #4104]  // Offset too large
+-
+-	 is best reloaded as:
+-	         add t1, r2, #4096
+-		 ldr r0, [t1, #4]
+-		 add t2, r2, #4096
+-		 ldr r1, [t2, #8]
+-
+-	 which post-reload CSE can simplify in most cases to eliminate the
+-	 second add instruction:
+-	         add t1, r2, #4096
+-		 ldr r0, [t1, #4]
+-		 ldr r1, [t1, #8]
+-
+-	 The idea here is that we want to split out the bits of the constant
+-	 as a mask, rather than as subtracting the maximum offset that the
+-	 respective type of load/store used can handle.
+-
+-	 When encountering negative offsets, we can still utilize it even if
+-	 the overall offset is positive; sometimes this may lead to an immediate
+-	 that can be constructed with fewer instructions.
+-	 For example:
+-	         ldr r0, [r2, #0x3FFFFC]
+-
+-	 This is best reloaded as:
+-	         add t1, r2, #0x400000
+-		 ldr r0, [t1, #-4]
+-
+-	 The trick for spotting this for a load insn with N bits of offset
+-	 (i.e. bits N-1:0) is to look at bit N; if it is set, then chose a
+-	 negative offset that is going to make bit N and all the bits below
+-	 it become zero in the remainder part.
+-
+-	 The SIGN_MAG_LOW_ADDR_BITS macro below implements this, with respect
+-	 to sign-magnitude addressing (i.e. separate +- bit, or 1's complement),
+-	 used in most cases of ARM load/store instructions.  */
+-
+-#define SIGN_MAG_LOW_ADDR_BITS(VAL, N)					\
+-      (((VAL) & ((1 << (N)) - 1))					\
+-       ? (((VAL) & ((1 << ((N) + 1)) - 1)) ^ (1 << (N))) - (1 << (N))	\
+-       : 0)
+-
+-      if (coproc_p)
+-	{
+-	  low = SIGN_MAG_LOW_ADDR_BITS (val, 10);
+-
+-	  /* NEON quad-word load/stores are made of two double-word accesses,
+-	     so the valid index range is reduced by 8. Treat as 9-bit range if
+-	     we go over it.  */
+-	  if (TARGET_NEON && VALID_NEON_QREG_MODE (mode) && low >= 1016)
+-	    low = SIGN_MAG_LOW_ADDR_BITS (val, 9);
+-	}
+-      else if (GET_MODE_SIZE (mode) == 8)
+-	{
+-	  if (TARGET_LDRD)
+-	    low = (TARGET_THUMB2
+-		   ? SIGN_MAG_LOW_ADDR_BITS (val, 10)
+-		   : SIGN_MAG_LOW_ADDR_BITS (val, 8));
+-	  else
+-	    /* For pre-ARMv5TE (without ldrd), we use ldm/stm(db/da/ib)
+-	       to access doublewords. The supported load/store offsets are
+-	       -8, -4, and 4, which we try to produce here.  */
+-	    low = ((val & 0xf) ^ 0x8) - 0x8;
+-	}
+-      else if (GET_MODE_SIZE (mode) < 8)
+-	{
+-	  /* NEON element load/stores do not have an offset.  */
+-	  if (TARGET_NEON_FP16 && mode == HFmode)
+-	    return false;
+-
+-	  if (TARGET_THUMB2)
+-	    {
+-	      /* Thumb-2 has an asymmetrical index range of (-256,4096).
+-		 Try the wider 12-bit range first, and re-try if the result
+-		 is out of range.  */
+-	      low = SIGN_MAG_LOW_ADDR_BITS (val, 12);
+-	      if (low < -255)
+-		low = SIGN_MAG_LOW_ADDR_BITS (val, 8);
+-	    }
+-	  else
+-	    {
+-	      if (mode == HImode || mode == HFmode)
+-		{
+-		  if (arm_arch4)
+-		    low = SIGN_MAG_LOW_ADDR_BITS (val, 8);
+-		  else
+-		    {
+-		      /* The storehi/movhi_bytes fallbacks can use only
+-			 [-4094,+4094] of the full ldrb/strb index range.  */
+-		      low = SIGN_MAG_LOW_ADDR_BITS (val, 12);
+-		      if (low == 4095 || low == -4095)
+-			return false;
+-		    }
+-		}
+-	      else
+-		low = SIGN_MAG_LOW_ADDR_BITS (val, 12);
+-	    }
+-	}
+-      else
+-	return false;
+-
+-      high = ((((val - low) & (unsigned HOST_WIDE_INT) 0xffffffff)
+-	       ^ (unsigned HOST_WIDE_INT) 0x80000000)
+-	      - (unsigned HOST_WIDE_INT) 0x80000000);
+-      /* Check for overflow or zero */
+-      if (low == 0 || high == 0 || (high + low != val))
+-	return false;
+-
+-      /* Reload the high part into a base reg; leave the low part
+-	 in the mem.
+-	 Note that replacing this gen_rtx_PLUS with plus_constant is
+-	 wrong in this case because we rely on the
+-	 (plus (plus reg c1) c2) structure being preserved so that
+-	 XEXP (*p, 0) in push_reload below uses the correct term.  */
+-      *p = gen_rtx_PLUS (GET_MODE (*p),
+-			 gen_rtx_PLUS (GET_MODE (*p), XEXP (*p, 0),
+-				       GEN_INT (high)),
+-			 GEN_INT (low));
+-      push_reload (XEXP (*p, 0), NULL_RTX, &XEXP (*p, 0), NULL,
+-		   MODE_BASE_REG_CLASS (mode), GET_MODE (*p),
+-		   VOIDmode, 0, 0, opnum, (enum reload_type) type);
+-      return true;
+-    }
+-
+-  return false;
+-}
+-
+-rtx
+-thumb_legitimize_reload_address (rtx *x_p,
+-				 machine_mode mode,
+-				 int opnum, int type,
+-				 int ind_levels ATTRIBUTE_UNUSED)
+-{
+-  rtx x = *x_p;
+-
+-  if (GET_CODE (x) == PLUS
+-      && GET_MODE_SIZE (mode) < 4
+-      && REG_P (XEXP (x, 0))
+-      && XEXP (x, 0) == stack_pointer_rtx
+-      && CONST_INT_P (XEXP (x, 1))
+-      && !thumb_legitimate_offset_p (mode, INTVAL (XEXP (x, 1))))
+-    {
+-      rtx orig_x = x;
+-
+-      x = copy_rtx (x);
+-      push_reload (orig_x, NULL_RTX, x_p, NULL, MODE_BASE_REG_CLASS (mode),
+-		   Pmode, VOIDmode, 0, 0, opnum, (enum reload_type) type);
+-      return x;
+-    }
+-
+-  /* If both registers are hi-regs, then it's better to reload the
+-     entire expression rather than each register individually.  That
+-     only requires one reload register rather than two.  */
+-  if (GET_CODE (x) == PLUS
+-      && REG_P (XEXP (x, 0))
+-      && REG_P (XEXP (x, 1))
+-      && !REG_MODE_OK_FOR_REG_BASE_P (XEXP (x, 0), mode)
+-      && !REG_MODE_OK_FOR_REG_BASE_P (XEXP (x, 1), mode))
+-    {
+-      rtx orig_x = x;
+-
+-      x = copy_rtx (x);
+-      push_reload (orig_x, NULL_RTX, x_p, NULL, MODE_BASE_REG_CLASS (mode),
+-		   Pmode, VOIDmode, 0, 0, opnum, (enum reload_type) type);
+-      return x;
+-    }
+-
+-  return NULL;
+-}
+-
+ /* Return TRUE if X contains any TLS symbol references.  */
+ 
+ bool
+@@ -9399,7 +9364,8 @@ static bool
+ arm_unspec_cost (rtx x, enum rtx_code /* outer_code */, bool speed_p, int *cost)
+ {
+   const struct cpu_cost_table *extra_cost = current_tune->insn_extra_cost;
+-  gcc_assert (GET_CODE (x) == UNSPEC);
++  rtx_code code = GET_CODE (x);
++  gcc_assert (code == UNSPEC || code == UNSPEC_VOLATILE);
+ 
+   switch (XINT (x, 1))
+     {
+@@ -9445,7 +9411,7 @@ arm_unspec_cost (rtx x, enum rtx_code /* outer_code */, bool speed_p, int *cost)
+       *cost = COSTS_N_INSNS (2);
+       break;
+     }
+-  return false;
++  return true;
+ }
+ 
+ /* Cost of a libcall.  We assume one insn per argument, an amount for the
+@@ -11008,6 +10974,7 @@ arm_new_rtx_costs (rtx x, enum rtx_code code, enum rtx_code outer_code,
+       *cost = LIBCALL_COST (1);
+       return false;
+ 
++    case UNSPEC_VOLATILE:
+     case UNSPEC:
+       return arm_unspec_cost (x, outer_code, speed_p, cost);
+ 
+@@ -12908,12 +12875,12 @@ neon_expand_vector_init (rtx target, rtx vals)
+ }
+ 
+ /* Ensure OPERAND lies between LOW (inclusive) and HIGH (exclusive).  Raise
+-   ERR if it doesn't.  FIXME: NEON bounds checks occur late in compilation, so
+-   reported source locations are bogus.  */
++   ERR if it doesn't.  EXP indicates the source location, which includes the
++   inlining history for intrinsics.  */
+ 
+ static void
+ bounds_check (rtx operand, HOST_WIDE_INT low, HOST_WIDE_INT high,
+-	      const char *err)
++	      const_tree exp, const char *desc)
+ {
+   HOST_WIDE_INT lane;
+ 
+@@ -12922,15 +12889,22 @@ bounds_check (rtx operand, HOST_WIDE_INT low, HOST_WIDE_INT high,
+   lane = INTVAL (operand);
+ 
+   if (lane < low || lane >= high)
+-    error (err);
++    {
++      if (exp)
++	error ("%K%s %wd out of range %wd - %wd",
++	       exp, desc, lane, low, high - 1);
++      else
++	error ("%s %wd out of range %wd - %wd", desc, lane, low, high - 1);
++    }
+ }
+ 
+ /* Bounds-check lanes.  */
+ 
+ void
+-neon_lane_bounds (rtx operand, HOST_WIDE_INT low, HOST_WIDE_INT high)
++neon_lane_bounds (rtx operand, HOST_WIDE_INT low, HOST_WIDE_INT high,
++		  const_tree exp)
+ {
+-  bounds_check (operand, low, high, "lane out of range");
++  bounds_check (operand, low, high, exp, "lane");
+ }
+ 
+ /* Bounds-check constants.  */
+@@ -12938,7 +12912,7 @@ neon_lane_bounds (rtx operand, HOST_WIDE_INT low, HOST_WIDE_INT high)
+ void
+ neon_const_bounds (rtx operand, HOST_WIDE_INT low, HOST_WIDE_INT high)
+ {
+-  bounds_check (operand, low, high, "constant out of range");
++  bounds_check (operand, low, high, NULL_TREE, "constant");
+ }
+ 
+ HOST_WIDE_INT
+@@ -14525,7 +14499,10 @@ arm_block_move_unaligned_straight (rtx dstbase, rtx srcbase,
+ 				srcoffset + j * UNITS_PER_WORD - src_autoinc);
+ 	  mem = adjust_automodify_address (srcbase, SImode, addr,
+ 					   srcoffset + j * UNITS_PER_WORD);
+-	  emit_insn (gen_unaligned_loadsi (regs[j], mem));
++	  if (src_aligned)
++	    emit_move_insn (regs[j], mem);
++	  else
++	    emit_insn (gen_unaligned_loadsi (regs[j], mem));
+ 	}
+       srcoffset += words * UNITS_PER_WORD;
+     }
+@@ -14544,7 +14521,10 @@ arm_block_move_unaligned_straight (rtx dstbase, rtx srcbase,
+ 				dstoffset + j * UNITS_PER_WORD - dst_autoinc);
+ 	  mem = adjust_automodify_address (dstbase, SImode, addr,
+ 					   dstoffset + j * UNITS_PER_WORD);
+-	  emit_insn (gen_unaligned_storesi (mem, regs[j]));
++	  if (dst_aligned)
++	    emit_move_insn (mem, regs[j]);
++	  else
++	    emit_insn (gen_unaligned_storesi (mem, regs[j]));
+ 	}
+       dstoffset += words * UNITS_PER_WORD;
+     }
+@@ -17287,14 +17267,16 @@ thumb2_reorg (void)
+ 
+   FOR_EACH_BB_FN (bb, cfun)
+     {
+-      if (current_tune->disparage_flag_setting_t16_encodings
++      if ((current_tune->disparage_flag_setting_t16_encodings
++	   == tune_params::DISPARAGE_FLAGS_ALL)
+ 	  && optimize_bb_for_speed_p (bb))
+ 	continue;
+ 
+       rtx_insn *insn;
+       Convert_Action action = SKIP;
+       Convert_Action action_for_partial_flag_setting
+-	= (current_tune->disparage_partial_flag_setting_t16_encodings
++	= ((current_tune->disparage_flag_setting_t16_encodings
++	    != tune_params::DISPARAGE_FLAGS_NEITHER)
+ 	   && optimize_bb_for_speed_p (bb))
+ 	  ? SKIP : CONV;
+ 
+@@ -17699,7 +17681,7 @@ arm_output_multireg_pop (rtx *operands, bool return_pc, rtx cond, bool reverse,
+     }
+ 
+   conditional = reverse ? "%?%D0" : "%?%d0";
+-  if ((regno_base == SP_REGNUM) && TARGET_UNIFIED_ASM)
++  if ((regno_base == SP_REGNUM) && TARGET_THUMB)
+     {
+       /* Output pop (not stmfd) because it has a shorter encoding.  */
+       gcc_assert (update);
+@@ -17998,19 +17980,27 @@ output_mov_long_double_arm_from_arm (rtx *operands)
+ void
+ arm_emit_movpair (rtx dest, rtx src)
+  {
++  rtx insn;
++
+   /* If the src is an immediate, simplify it.  */
+   if (CONST_INT_P (src))
+     {
+       HOST_WIDE_INT val = INTVAL (src);
+       emit_set_insn (dest, GEN_INT (val & 0x0000ffff));
+       if ((val >> 16) & 0x0000ffff)
+-        emit_set_insn (gen_rtx_ZERO_EXTRACT (SImode, dest, GEN_INT (16),
+-                                             GEN_INT (16)),
+-                       GEN_INT ((val >> 16) & 0x0000ffff));
++	{
++	  emit_set_insn (gen_rtx_ZERO_EXTRACT (SImode, dest, GEN_INT (16),
++					       GEN_INT (16)),
++			 GEN_INT ((val >> 16) & 0x0000ffff));
++	  insn = get_last_insn ();
++	  set_unique_reg_note (insn, REG_EQUAL, copy_rtx (src));
++	}
+       return;
+     }
+    emit_set_insn (dest, gen_rtx_HIGH (SImode, src));
+    emit_set_insn (dest, gen_rtx_LO_SUM (SImode, dest, src));
++   insn = get_last_insn ();
++   set_unique_reg_note (insn, REG_EQUAL, copy_rtx (src));
+  }
+ 
+ /* Output a move between double words.  It must be REG<-MEM
+@@ -24077,19 +24067,19 @@ thumb_far_jump_used_p (void)
+ }
+ 
+ /* Return nonzero if FUNC must be entered in ARM mode.  */
+-int
++static bool
+ is_called_in_ARM_mode (tree func)
+ {
+   gcc_assert (TREE_CODE (func) == FUNCTION_DECL);
+ 
+   /* Ignore the problem about functions whose address is taken.  */
+   if (TARGET_CALLEE_INTERWORKING && TREE_PUBLIC (func))
+-    return TRUE;
++    return true;
+ 
+ #ifdef ARM_PE
+   return lookup_attribute ("interfacearm", DECL_ATTRIBUTES (func)) != NULL_TREE;
+ #else
+-  return FALSE;
++  return false;
+ #endif
+ }
+ 
+@@ -24375,6 +24365,24 @@ arm_init_expanders (void)
+     mark_reg_pointer (arg_pointer_rtx, PARM_BOUNDARY);
+ }
+ 
++/* Check that FUNC is called with a different mode.  */
++
++bool
++arm_change_mode_p (tree func)
++{
++  if (TREE_CODE (func) != FUNCTION_DECL)
++    return false;
++
++  tree callee_tree = DECL_FUNCTION_SPECIFIC_TARGET (func);
++
++  if (!callee_tree)
++    callee_tree = target_option_default_node;
++
++  struct cl_target_option *callee_opts = TREE_TARGET_OPTION (callee_tree);
++  int flags = callee_opts->x_target_flags;
++
++  return (TARGET_THUMB_P (flags) != TARGET_THUMB);
++}
+ 
+ /* Like arm_compute_initial_elimination offset.  Simpler because there
+    isn't an ABI specified frame pointer for Thumb.  Instead, we set it
+@@ -25660,12 +25668,12 @@ arm_print_tune_info (void)
+ 	       current_tune->constant_limit);
+   asm_fprintf (asm_out_file, "\t\t at max_insns_skipped:\t%d\n",
+ 	       current_tune->max_insns_skipped);
+-  asm_fprintf (asm_out_file, "\t\t at num_prefetch_slots:\t%d\n",
+-	       current_tune->num_prefetch_slots);
+-  asm_fprintf (asm_out_file, "\t\t at l1_cache_size:\t%d\n",
+-	       current_tune->l1_cache_size);
+-  asm_fprintf (asm_out_file, "\t\t at l1_cache_line_size:\t%d\n",
+-	       current_tune->l1_cache_line_size);
++  asm_fprintf (asm_out_file, "\t\t at prefetch.num_slots:\t%d\n",
++	       current_tune->prefetch.num_slots);
++  asm_fprintf (asm_out_file, "\t\t at prefetch.l1_cache_size:\t%d\n",
++	       current_tune->prefetch.l1_cache_size);
++  asm_fprintf (asm_out_file, "\t\t at prefetch.l1_cache_line_size:\t%d\n",
++	       current_tune->prefetch.l1_cache_line_size);
+   asm_fprintf (asm_out_file, "\t\t at prefer_constant_pool:\t%d\n",
+ 	       (int) current_tune->prefer_constant_pool);
+   asm_fprintf (asm_out_file, "\t\t at branch_cost:\t(s:speed, p:predictable)\n");
+@@ -25681,23 +25689,19 @@ arm_print_tune_info (void)
+   asm_fprintf (asm_out_file, "\t\t at prefer_ldrd_strd:\t%d\n",
+ 	       (int) current_tune->prefer_ldrd_strd);
+   asm_fprintf (asm_out_file, "\t\t at logical_op_non_short_circuit:\t[%d,%d]\n",
+-	       (int) current_tune->logical_op_non_short_circuit[0],
+-	       (int) current_tune->logical_op_non_short_circuit[1]);
++	       (int) current_tune->logical_op_non_short_circuit_thumb,
++	       (int) current_tune->logical_op_non_short_circuit_arm);
+   asm_fprintf (asm_out_file, "\t\t at prefer_neon_for_64bits:\t%d\n",
+ 	       (int) current_tune->prefer_neon_for_64bits);
+   asm_fprintf (asm_out_file,
+ 	       "\t\t at disparage_flag_setting_t16_encodings:\t%d\n",
+ 	       (int) current_tune->disparage_flag_setting_t16_encodings);
+-  asm_fprintf (asm_out_file,
+-	       "\t\t at disparage_partial_flag_setting_t16_encodings:\t%d\n",
+-	       (int) current_tune
+-	               ->disparage_partial_flag_setting_t16_encodings);
+   asm_fprintf (asm_out_file, "\t\t at string_ops_prefer_neon:\t%d\n",
+ 	       (int) current_tune->string_ops_prefer_neon);
+   asm_fprintf (asm_out_file, "\t\t at max_insns_inline_memset:\t%d\n",
+ 	       current_tune->max_insns_inline_memset);
+-  asm_fprintf (asm_out_file, "\t\t at fuseable_ops:\t%u\n",
+-	       current_tune->fuseable_ops);
++  asm_fprintf (asm_out_file, "\t\t at fusible_ops:\t%u\n",
++	       current_tune->fusible_ops);
+   asm_fprintf (asm_out_file, "\t\t at sched_autopref:\t%d\n",
+ 	       (int) current_tune->sched_autopref);
+ }
+@@ -25707,9 +25711,6 @@ arm_file_start (void)
+ {
+   int val;
+ 
+-  if (TARGET_UNIFIED_ASM)
+-    asm_fprintf (asm_out_file, "\t.syntax unified\n");
+-
+   if (TARGET_BPABI)
+     {
+       const char *fpu_name;
+@@ -26376,7 +26377,8 @@ arm_vector_mode_supported_p (machine_mode mode)
+ {
+   /* Neon also supports V2SImode, etc. listed in the clause below.  */
+   if (TARGET_NEON && (mode == V2SFmode || mode == V4SImode || mode == V8HImode
+-      || mode == V4HFmode || mode == V16QImode || mode == V4SFmode || mode == V2DImode))
++      || mode == V4HFmode || mode == V16QImode || mode == V4SFmode
++      || mode == V2DImode || mode == V8HFmode))
+     return true;
+ 
+   if ((TARGET_NEON || TARGET_IWMMXT)
+@@ -26509,7 +26511,7 @@ arm_dbx_register_number (unsigned int regno)
+   if (IS_IWMMXT_REGNUM (regno))
+     return 112 + regno - FIRST_IWMMXT_REGNUM;
+ 
+-  gcc_unreachable ();
++  return DWARF_FRAME_REGISTERS;
+ }
+ 
+ /* Dwarf models VFPv3 registers as 32 64-bit registers.
+@@ -27213,40 +27215,12 @@ thumb2_output_casesi (rtx *operands)
+     }
+ }
+ 
+-/* Most ARM cores are single issue, but some newer ones can dual issue.
+-   The scheduler descriptions rely on this being correct.  */
++/* Implement TARGET_SCHED_ISSUE_RATE.  Lookup the issue rate in the
++   per-core tuning structs.  */
+ static int
+ arm_issue_rate (void)
+ {
+-  switch (arm_tune)
+-    {
+-    case xgene1:
+-      return 4;
+-
+-    case cortexa15:
+-    case cortexa57:
+-    case exynosm1:
+-      return 3;
+-
+-    case cortexm7:
+-    case cortexr4:
+-    case cortexr4f:
+-    case cortexr5:
+-    case genericv7a:
+-    case cortexa5:
+-    case cortexa7:
+-    case cortexa8:
+-    case cortexa9:
+-    case cortexa12:
+-    case cortexa17:
+-    case cortexa53:
+-    case fa726te:
+-    case marvell_pj4:
+-      return 2;
+-
+-    default:
+-      return 1;
+-    }
++  return current_tune->issue_rate;
+ }
+ 
+ /* Return how many instructions should scheduler lookahead to choose the
+@@ -29422,7 +29396,7 @@ arm_gen_setmem (rtx *operands)
+ static bool
+ arm_macro_fusion_p (void)
+ {
+-  return current_tune->fuseable_ops != ARM_FUSE_NOTHING;
++  return current_tune->fusible_ops != tune_params::FUSE_NOTHING;
+ }
+ 
+ 
+@@ -29443,44 +29417,44 @@ aarch_macro_fusion_pair_p (rtx_insn* prev, rtx_insn* curr)
+   if (!arm_macro_fusion_p ())
+     return false;
+ 
+-  if (current_tune->fuseable_ops & ARM_FUSE_MOVW_MOVT)
++  if (current_tune->fusible_ops & tune_params::FUSE_MOVW_MOVT)
+     {
+       /* We are trying to fuse
+-         movw imm / movt imm
+-         instructions as a group that gets scheduled together.  */
++	 movw imm / movt imm
++	 instructions as a group that gets scheduled together.  */
+ 
+       set_dest = SET_DEST (curr_set);
+ 
+       if (GET_MODE (set_dest) != SImode)
+-        return false;
++	return false;
+ 
+       /* We are trying to match:
+-         prev (movw)  == (set (reg r0) (const_int imm16))
+-         curr (movt) == (set (zero_extract (reg r0)
+-                                           (const_int 16)
+-                                           (const_int 16))
+-                             (const_int imm16_1))
+-         or
+-         prev (movw) == (set (reg r1)
+-                              (high (symbol_ref ("SYM"))))
+-         curr (movt) == (set (reg r0)
+-                             (lo_sum (reg r1)
+-                                     (symbol_ref ("SYM"))))  */
++	 prev (movw)  == (set (reg r0) (const_int imm16))
++	 curr (movt) == (set (zero_extract (reg r0)
++					  (const_int 16)
++					   (const_int 16))
++			     (const_int imm16_1))
++	 or
++	 prev (movw) == (set (reg r1)
++			      (high (symbol_ref ("SYM"))))
++	 curr (movt) == (set (reg r0)
++			     (lo_sum (reg r1)
++				     (symbol_ref ("SYM"))))  */
+       if (GET_CODE (set_dest) == ZERO_EXTRACT)
+-        {
+-          if (CONST_INT_P (SET_SRC (curr_set))
+-              && CONST_INT_P (SET_SRC (prev_set))
+-              && REG_P (XEXP (set_dest, 0))
+-              && REG_P (SET_DEST (prev_set))
+-              && REGNO (XEXP (set_dest, 0)) == REGNO (SET_DEST (prev_set)))
+-            return true;
+-        }
++	{
++	  if (CONST_INT_P (SET_SRC (curr_set))
++	      && CONST_INT_P (SET_SRC (prev_set))
++	      && REG_P (XEXP (set_dest, 0))
++	      && REG_P (SET_DEST (prev_set))
++	      && REGNO (XEXP (set_dest, 0)) == REGNO (SET_DEST (prev_set)))
++	    return true;
++	}
+       else if (GET_CODE (SET_SRC (curr_set)) == LO_SUM
+-               && REG_P (SET_DEST (curr_set))
+-               && REG_P (SET_DEST (prev_set))
+-               && GET_CODE (SET_SRC (prev_set)) == HIGH
+-               && REGNO (SET_DEST (curr_set)) == REGNO (SET_DEST (prev_set)))
+-             return true;
++	       && REG_P (SET_DEST (curr_set))
++	       && REG_P (SET_DEST (prev_set))
++	       && GET_CODE (SET_SRC (prev_set)) == HIGH
++	       && REGNO (SET_DEST (curr_set)) == REGNO (SET_DEST (prev_set)))
++	     return true;
+     }
+   return false;
+ }
+@@ -29544,6 +29518,273 @@ arm_is_constant_pool_ref (rtx x)
+ 	  && CONSTANT_POOL_ADDRESS_P (XEXP (x, 0)));
+ }
+ 
++/* Remember the last target of arm_set_current_function.  */
++static GTY(()) tree arm_previous_fndecl;
++
++/* Invalidate arm_previous_fndecl.  */
++void
++arm_reset_previous_fndecl (void)
++{
++  arm_previous_fndecl = NULL_TREE;
++}
++
++/* Establish appropriate back-end context for processing the function
++   FNDECL.  The argument might be NULL to indicate processing at top
++   level, outside of any function scope.  */
++static void
++arm_set_current_function (tree fndecl)
++{
++  if (!fndecl || fndecl == arm_previous_fndecl)
++    return;
++
++  tree old_tree = (arm_previous_fndecl
++		   ? DECL_FUNCTION_SPECIFIC_TARGET (arm_previous_fndecl)
++		   : NULL_TREE);
++
++  tree new_tree = DECL_FUNCTION_SPECIFIC_TARGET (fndecl);
++
++  arm_previous_fndecl = fndecl;
++  if (old_tree == new_tree)
++    return;
++
++  if (new_tree && new_tree != target_option_default_node)
++    {
++      cl_target_option_restore (&global_options,
++				TREE_TARGET_OPTION (new_tree));
++
++      if (TREE_TARGET_GLOBALS (new_tree))
++	restore_target_globals (TREE_TARGET_GLOBALS (new_tree));
++      else
++	TREE_TARGET_GLOBALS (new_tree)
++	  = save_target_globals_default_opts ();
++    }
++
++  else if (old_tree && old_tree != target_option_default_node)
++    {
++      new_tree = target_option_current_node;
++
++      cl_target_option_restore (&global_options,
++				TREE_TARGET_OPTION (new_tree));
++      if (TREE_TARGET_GLOBALS (new_tree))
++	restore_target_globals (TREE_TARGET_GLOBALS (new_tree));
++      else if (new_tree == target_option_default_node)
++	restore_target_globals (&default_target_globals);
++      else
++	TREE_TARGET_GLOBALS (new_tree)
++	  = save_target_globals_default_opts ();
++    }
++
++  arm_option_params_internal ();
++}
++
++/* Implement TARGET_OPTION_PRINT.  */
++
++static void
++arm_option_print (FILE *file, int indent, struct cl_target_option *ptr)
++{
++  int flags = ptr->x_target_flags;
++
++  fprintf (file, "%*sselected arch %s\n", indent, "",
++	   TARGET_THUMB2_P (flags) ? "thumb2" :
++	   TARGET_THUMB_P (flags) ? "thumb1" :
++	   "arm");
++}
++
++/* Hook to determine if one function can safely inline another.  */
++
++static bool
++arm_can_inline_p (tree caller ATTRIBUTE_UNUSED, tree callee ATTRIBUTE_UNUSED)
++{
++  /* Overidde default hook: Always OK to inline between different modes. 
++     Function with mode specific instructions, e.g using asm, must be explicitely 
++     protected with noinline.  */
++  return true;
++}
++
++/* Inner function to process the attribute((target(...))), take an argument and
++   set the current options from the argument.  If we have a list, recursively
++   go over the list.  */
++
++static bool
++arm_valid_target_attribute_rec (tree args, struct gcc_options *opts)
++{
++  if (TREE_CODE (args) == TREE_LIST)
++    {
++      bool ret = true;
++      for (; args; args = TREE_CHAIN (args))
++	if (TREE_VALUE (args)
++	    && !arm_valid_target_attribute_rec (TREE_VALUE (args), opts))
++	  ret = false;
++      return ret;
++    }
++
++  else if (TREE_CODE (args) != STRING_CST)
++    {
++      error ("attribute %<target%> argument not a string");
++      return false;
++    }
++
++  char *argstr = ASTRDUP (TREE_STRING_POINTER (args));
++  while (argstr && *argstr != '\0')
++    {
++      while (ISSPACE (*argstr))
++	argstr++;
++
++      if (!strcmp (argstr, "thumb"))
++	{
++	  opts->x_target_flags |= MASK_THUMB;
++	  arm_option_check_internal (opts);
++	  return true;
++	}
++
++      if (!strcmp (argstr, "arm"))
++	{
++	  opts->x_target_flags &= ~MASK_THUMB;
++	  arm_option_check_internal (opts);
++	  return true;
++	}
++
++      warning (0, "attribute(target(\"%s\")) is unknown", argstr);
++      return false;
++    }
++
++  return false;
++}
++
++/* Return a TARGET_OPTION_NODE tree of the target options listed or NULL.  */
++
++tree
++arm_valid_target_attribute_tree (tree args, struct gcc_options *opts,
++				 struct gcc_options *opts_set)
++{
++  if (!arm_valid_target_attribute_rec (args, opts))
++    return NULL_TREE;
++
++  /* Do any overrides, such as global options arch=xxx.  */
++  arm_option_override_internal (opts, opts_set);
++
++  return build_target_option_node (opts);
++}
++
++static void 
++add_attribute  (const char * mode, tree *attributes)
++{
++  size_t len = strlen (mode);
++  tree value = build_string (len, mode);
++
++  TREE_TYPE (value) = build_array_type (char_type_node,
++					build_index_type (size_int (len)));
++
++  *attributes = tree_cons (get_identifier ("target"),
++			   build_tree_list (NULL_TREE, value),
++			   *attributes);
++}
++
++/* For testing. Insert thumb or arm modes alternatively on functions.  */
++
++static void
++arm_insert_attributes (tree fndecl, tree * attributes)
++{
++  const char *mode;
++
++  if (! TARGET_FLIP_THUMB)
++    return;
++
++  if (TREE_CODE (fndecl) != FUNCTION_DECL || DECL_EXTERNAL(fndecl)
++      || DECL_BUILT_IN (fndecl) || DECL_ARTIFICIAL (fndecl))
++   return;
++
++  /* Nested definitions must inherit mode.  */
++  if (current_function_decl)
++   {
++     mode = TARGET_THUMB ? "thumb" : "arm";      
++     add_attribute (mode, attributes);
++     return;
++   }
++
++  /* If there is already a setting don't change it.  */
++  if (lookup_attribute ("target", *attributes) != NULL)
++    return;
++
++  mode = thumb_flipper ? "thumb" : "arm";
++  add_attribute (mode, attributes);
++
++  thumb_flipper = !thumb_flipper;
++}
++
++/* Hook to validate attribute((target("string"))).  */
++
++static bool
++arm_valid_target_attribute_p (tree fndecl, tree ARG_UNUSED (name),
++			      tree args, int ARG_UNUSED (flags))
++{
++  bool ret = true;
++  struct gcc_options func_options;
++  tree cur_tree, new_optimize;
++  gcc_assert ((fndecl != NULL_TREE) && (args != NULL_TREE));
++
++  /* Get the optimization options of the current function.  */
++  tree func_optimize = DECL_FUNCTION_SPECIFIC_OPTIMIZATION (fndecl);
++
++  /* If the function changed the optimization levels as well as setting target
++     options, start with the optimizations specified.  */
++  if (!func_optimize)
++    func_optimize = optimization_default_node;
++
++  /* Init func_options.  */
++  memset (&func_options, 0, sizeof (func_options));
++  init_options_struct (&func_options, NULL);
++  lang_hooks.init_options_struct (&func_options);
++
++  /* Initialize func_options to the defaults.  */
++  cl_optimization_restore (&func_options,
++			   TREE_OPTIMIZATION (func_optimize));
++
++  cl_target_option_restore (&func_options,
++			    TREE_TARGET_OPTION (target_option_default_node));
++
++  /* Set func_options flags with new target mode.  */
++  cur_tree = arm_valid_target_attribute_tree (args, &func_options,
++					      &global_options_set);
++
++  if (cur_tree == NULL_TREE)
++    ret = false;
++
++  new_optimize = build_optimization_node (&func_options);
++
++  DECL_FUNCTION_SPECIFIC_TARGET (fndecl) = cur_tree;
++
++  DECL_FUNCTION_SPECIFIC_OPTIMIZATION (fndecl) = new_optimize;
++
++  return ret;
++}
++
++void
++arm_declare_function_name (FILE *stream, const char *name, tree decl)
++{
++  if (TARGET_UNIFIED_ASM)
++    fprintf (stream, "\t.syntax unified\n");
++  else
++    fprintf (stream, "\t.syntax divided\n");
++
++  if (TARGET_THUMB)
++    {
++      if (is_called_in_ARM_mode (decl)
++	  || (TARGET_THUMB1 && !TARGET_THUMB1_ONLY
++	      && cfun->is_thunk))
++	fprintf (stream, "\t.code 32\n");
++      else if (TARGET_THUMB1)
++	fprintf (stream, "\t.code\t16\n\t.thumb_func\n");
++      else
++	fprintf (stream, "\t.thumb\n\t.thumb_func\n");
++    }
++  else
++    fprintf (stream, "\t.arm\n");
++
++  if (TARGET_POKE_FUNCTION_NAME)
++    arm_poke_function_name (stream, (const char *) name);
++}
++
+ /* If MEM is in the form of [base+offset], extract the two parts
+    of address and set to BASE and OFFSET, otherwise return false
+    after clearing BASE and OFFSET.  */
+--- a/src/gcc/config/arm/arm.h
++++ b/src/gcc/config/arm/arm.h
+@@ -45,132 +45,7 @@
+ extern char arm_arch_name[];
+ 
+ /* Target CPU builtins.  */
+-#define TARGET_CPU_CPP_BUILTINS()			\
+-  do							\
+-    {							\
+-	if (TARGET_DSP_MULTIPLY)			\
+-	   builtin_define ("__ARM_FEATURE_DSP");	\
+-        if (TARGET_ARM_QBIT)				\
+-           builtin_define ("__ARM_FEATURE_QBIT");	\
+-        if (TARGET_ARM_SAT)				\
+-           builtin_define ("__ARM_FEATURE_SAT");	\
+-        if (TARGET_CRYPTO)				\
+-	   builtin_define ("__ARM_FEATURE_CRYPTO");	\
+-	if (unaligned_access)				\
+-	  builtin_define ("__ARM_FEATURE_UNALIGNED");	\
+-	if (TARGET_CRC32)				\
+-	  builtin_define ("__ARM_FEATURE_CRC32");	\
+-	if (TARGET_32BIT)				\
+-	  builtin_define ("__ARM_32BIT_STATE");		\
+-	if (TARGET_ARM_FEATURE_LDREX)				\
+-	  builtin_define_with_int_value (			\
+-	    "__ARM_FEATURE_LDREX", TARGET_ARM_FEATURE_LDREX);	\
+-	if ((TARGET_ARM_ARCH >= 5 && !TARGET_THUMB)		\
+-	     || TARGET_ARM_ARCH_ISA_THUMB >=2)			\
+-	  builtin_define ("__ARM_FEATURE_CLZ");			\
+-	if (TARGET_INT_SIMD)					\
+-	  builtin_define ("__ARM_FEATURE_SIMD32");		\
+-								\
+-	builtin_define_with_int_value (				\
+-	  "__ARM_SIZEOF_MINIMAL_ENUM",				\
+-	  flag_short_enums ? 1 : 4);				\
+-	builtin_define_type_sizeof ("__ARM_SIZEOF_WCHAR_T",	\
+-				    wchar_type_node);		\
+-	if (TARGET_ARM_ARCH_PROFILE)				\
+-	  builtin_define_with_int_value (			\
+-	    "__ARM_ARCH_PROFILE", TARGET_ARM_ARCH_PROFILE);	\
+-								\
+-	/* Define __arm__ even when in thumb mode, for	\
+-	   consistency with armcc.  */			\
+-	builtin_define ("__arm__");			\
+-	if (TARGET_ARM_ARCH)				\
+-	  builtin_define_with_int_value (		\
+-	    "__ARM_ARCH", TARGET_ARM_ARCH);		\
+-	if (arm_arch_notm)				\
+-	  builtin_define ("__ARM_ARCH_ISA_ARM");	\
+-	builtin_define ("__APCS_32__");			\
+-	if (TARGET_THUMB)				\
+-	  builtin_define ("__thumb__");			\
+-	if (TARGET_THUMB2)				\
+-	  builtin_define ("__thumb2__");		\
+-	if (TARGET_ARM_ARCH_ISA_THUMB)			\
+-	  builtin_define_with_int_value (		\
+-	    "__ARM_ARCH_ISA_THUMB",			\
+-	    TARGET_ARM_ARCH_ISA_THUMB);			\
+-							\
+-	if (TARGET_BIG_END)				\
+-	  {						\
+-	    builtin_define ("__ARMEB__");		\
+-	    builtin_define ("__ARM_BIG_ENDIAN");	\
+-	    if (TARGET_THUMB)				\
+-	      builtin_define ("__THUMBEB__");		\
+-	  }						\
+-        else						\
+-	  {						\
+-	    builtin_define ("__ARMEL__");		\
+-	    if (TARGET_THUMB)				\
+-	      builtin_define ("__THUMBEL__");		\
+-	  }						\
+-							\
+-	if (TARGET_SOFT_FLOAT)				\
+-	  builtin_define ("__SOFTFP__");		\
+-							\
+-	if (TARGET_VFP)					\
+-	  builtin_define ("__VFP_FP__");		\
+-							\
+-	if (TARGET_ARM_FP)				\
+-	  builtin_define_with_int_value (		\
+-	    "__ARM_FP", TARGET_ARM_FP);			\
+-	if (arm_fp16_format == ARM_FP16_FORMAT_IEEE)		\
+-	  builtin_define ("__ARM_FP16_FORMAT_IEEE");		\
+-	if (arm_fp16_format == ARM_FP16_FORMAT_ALTERNATIVE)	\
+-	  builtin_define ("__ARM_FP16_FORMAT_ALTERNATIVE");	\
+-        if (TARGET_FMA)					\
+-          builtin_define ("__ARM_FEATURE_FMA");		\
+-							\
+-	if (TARGET_NEON)				\
+-	  {						\
+-	    builtin_define ("__ARM_NEON__");		\
+-	    builtin_define ("__ARM_NEON");		\
+-	  }						\
+-	if (TARGET_NEON_FP)				\
+-	  builtin_define_with_int_value (		\
+-	    "__ARM_NEON_FP", TARGET_NEON_FP);		\
+-							\
+-	/* Add a define for interworking.		\
+-	   Needed when building libgcc.a.  */		\
+-	if (arm_cpp_interwork)				\
+-	  builtin_define ("__THUMB_INTERWORK__");	\
+-							\
+-	builtin_assert ("cpu=arm");			\
+-	builtin_assert ("machine=arm");			\
+-							\
+-	builtin_define (arm_arch_name);			\
+-	if (arm_arch_xscale)				\
+-	  builtin_define ("__XSCALE__");		\
+-	if (arm_arch_iwmmxt)				\
+-          {						\
+-	    builtin_define ("__IWMMXT__");		\
+-	    builtin_define ("__ARM_WMMX");		\
+-	  }						\
+-	if (arm_arch_iwmmxt2)				\
+-	  builtin_define ("__IWMMXT2__");		\
+-	if (TARGET_AAPCS_BASED)				\
+-	  {						\
+-	    if (arm_pcs_default == ARM_PCS_AAPCS_VFP)	\
+-	      builtin_define ("__ARM_PCS_VFP");		\
+-	    else if (arm_pcs_default == ARM_PCS_AAPCS)	\
+-	      builtin_define ("__ARM_PCS");		\
+-	    builtin_define ("__ARM_EABI__");		\
+-	  }						\
+-	if (TARGET_IDIV)				\
+-         {						\
+-            builtin_define ("__ARM_ARCH_EXT_IDIV__");	\
+-            builtin_define ("__ARM_FEATURE_IDIV");	\
+-         }						\
+-	if (inline_asm_unified)				\
+-	  builtin_define ("__ARM_ASM_SYNTAX_UNIFIED__");\
+-    } while (0)
++#define TARGET_CPU_CPP_BUILTINS() arm_cpu_cpp_builtins (pfile)
+ 
+ #include "config/arm/arm-opts.h"
+ 
+@@ -252,6 +127,11 @@ extern void (*arm_lang_output_object_attributes_hook)(void);
+ #define SUBTARGET_CPP_SPEC      ""
+ #endif
+ 

++/* Tree Target Specification.  */
++#define TARGET_ARM_P(flags)    (!TARGET_THUMB_P (flags))
++#define TARGET_THUMB1_P(flags) (TARGET_THUMB_P (flags) && !arm_arch_thumb2)
++#define TARGET_THUMB2_P(flags) (TARGET_THUMB_P (flags) && arm_arch_thumb2)
++
+ /* Run-time Target Specification.  */
+ #define TARGET_SOFT_FLOAT		(arm_float_abi == ARM_FLOAT_ABI_SOFT)
+ /* Use hardware floating point instructions. */
+@@ -311,11 +191,13 @@ extern void (*arm_lang_output_object_attributes_hook)(void);
+ #define TARGET_VFP_DOUBLE (TARGET_VFP && arm_fpu_desc->regs != VFP_REG_SINGLE)
+ 
+ /* FPU supports half-precision floating-point with NEON element load/store.  */
+-#define TARGET_NEON_FP16 \
+-  (TARGET_VFP && arm_fpu_desc->neon && arm_fpu_desc->fp16)
++#define TARGET_NEON_FP16						\
++  (TARGET_VFP								\
++   && ARM_FPU_FSET_HAS (arm_fpu_desc->features, FPU_FL_NEON | FPU_FL_FP16))
+ 
+ /* FPU supports VFP half-precision floating-point.  */
+-#define TARGET_FP16 (TARGET_VFP && arm_fpu_desc->fp16)
++#define TARGET_FP16							\
++  (TARGET_VFP && ARM_FPU_FSET_HAS (arm_fpu_desc->features, FPU_FL_FP16))
+ 
+ /* FPU supports fused-multiply-add operations.  */
+ #define TARGET_FMA (TARGET_VFP && arm_fpu_desc->rev >= 4)
+@@ -324,14 +206,18 @@ extern void (*arm_lang_output_object_attributes_hook)(void);
+ #define TARGET_FPU_ARMV8 (TARGET_VFP && arm_fpu_desc->rev >= 8)
+ 
+ /* FPU supports Crypto extensions.  */
+-#define TARGET_CRYPTO (TARGET_VFP && arm_fpu_desc->crypto)
++#define TARGET_CRYPTO							\
++  (TARGET_VFP && ARM_FPU_FSET_HAS (arm_fpu_desc->features, FPU_FL_CRYPTO))
++
+ 
+ /* FPU supports Neon instructions.  The setting of this macro gets
+    revealed via __ARM_NEON__ so we add extra guards upon TARGET_32BIT
+    and TARGET_HARD_FLOAT to ensure that NEON instructions are
+    available.  */
+-#define TARGET_NEON (TARGET_32BIT && TARGET_HARD_FLOAT \
+-		     && TARGET_VFP && arm_fpu_desc->neon)
++#define TARGET_NEON							\
++  (TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP			\
++   && ARM_FPU_FSET_HAS (arm_fpu_desc->features, FPU_FL_NEON))
++
+ 
+ /* Q-bit is present.  */
+ #define TARGET_ARM_QBIT \
+@@ -367,21 +253,21 @@ extern void (*arm_lang_output_object_attributes_hook)(void);
+ #define TARGET_HAVE_MEMORY_BARRIER (TARGET_HAVE_DMB || TARGET_HAVE_DMB_MCR)
+ 
+ /* Nonzero if this chip supports ldrex and strex */
+-#define TARGET_HAVE_LDREX	((arm_arch6 && TARGET_ARM) || arm_arch7)
++#define TARGET_HAVE_LDREX        ((arm_arch6 && TARGET_ARM) || arm_arch7)
+ 
+ /* Nonzero if this chip supports ldrex{bh} and strex{bh}.  */
+-#define TARGET_HAVE_LDREXBH	((arm_arch6k && TARGET_ARM) || arm_arch7)
++#define TARGET_HAVE_LDREXBH ((arm_arch6k && TARGET_ARM) || arm_arch7)
+ 
+ /* Nonzero if this chip supports ldrexd and strexd.  */
+-#define TARGET_HAVE_LDREXD	(((arm_arch6k && TARGET_ARM) || arm_arch7) \
+-				 && arm_arch_notm)
++#define TARGET_HAVE_LDREXD (((arm_arch6k && TARGET_ARM) \
++			     || arm_arch7) && arm_arch_notm)
+ 
+ /* Nonzero if this chip supports load-acquire and store-release.  */
+ #define TARGET_HAVE_LDACQ	(TARGET_ARM_ARCH >= 8)
+ 
+ /* Nonzero if integer division instructions supported.  */
+-#define TARGET_IDIV		((TARGET_ARM && arm_arch_arm_hwdiv) \
+-				 || (TARGET_THUMB2 && arm_arch_thumb_hwdiv))
++#define TARGET_IDIV	((TARGET_ARM && arm_arch_arm_hwdiv)	\
++			 || (TARGET_THUMB2 && arm_arch_thumb_hwdiv))
+ 
+ /* Nonzero if disallow volatile memory access in IT block.  */
+ #define TARGET_NO_VOLATILE_CE		(arm_arch_no_volatile_ce)
+@@ -389,6 +275,12 @@ extern void (*arm_lang_output_object_attributes_hook)(void);
+ /* Should NEON be used for 64-bits bitops.  */
+ #define TARGET_PREFER_NEON_64BITS (prefer_neon_for_64bits)
+ 
++/* Should constant I be slplit for OP.  */
++#define DONT_EARLY_SPLIT_CONSTANT(i, op) \
++				((optimize >= 2) \
++				 && can_create_pseudo_p () \
++				 && !const_ok_for_op (i, op))
++
+ /* True iff the full BPABI is being used.  If TARGET_BPABI is true,
+    then TARGET_AAPCS_BASED must be true -- but the converse does not
+    hold.  TARGET_BPABI implies the use of the BPABI runtime library,
+@@ -417,6 +309,19 @@ extern void (*arm_lang_output_object_attributes_hook)(void);
+   {"mode", "%{!marm:%{!mthumb:-m%(VALUE)}}"}, \
+   {"tls", "%{!mtls-dialect=*:-mtls-dialect=%(VALUE)}"},
+ 
++/* FPU feature sets.  */
++
++typedef unsigned long arm_fpu_feature_set;
++
++/* Test for an FPU feature.  */
++#define ARM_FPU_FSET_HAS(S,F) (((S) & (F)) == (F))
++
++/* FPU Features.  */
++#define FPU_FL_NONE	(0)
++#define FPU_FL_NEON	(1 << 0)	/* NEON instructions.  */
++#define FPU_FL_FP16	(1 << 1)	/* Half-precision.  */
++#define FPU_FL_CRYPTO	(1 << 2)	/* Crypto extensions.  */
++
+ /* Which floating point model to use.  */
+ enum arm_fp_model
+ {
+@@ -439,9 +344,7 @@ extern const struct arm_fpu_desc
+   enum arm_fp_model model;
+   int rev;
+   enum vfp_reg_type regs;
+-  int neon;
+-  int fp16;
+-  int crypto;
++  arm_fpu_feature_set features;
+ } *arm_fpu_desc;
+ 
+ /* Which floating point hardware to schedule for.  */
+@@ -473,7 +376,7 @@ enum base_architecture
+   BASE_ARCH_5TEJ = 5,
+   BASE_ARCH_6 = 6,
+   BASE_ARCH_6J = 6,
+-  BASE_ARCH_6ZK = 6,
++  BASE_ARCH_6KZ = 6,
+   BASE_ARCH_6K = 6,
+   BASE_ARCH_6T2 = 6,
+   BASE_ARCH_6M = 6,
+@@ -528,12 +431,6 @@ extern int arm_arch8;
+ /* Nonzero if this chip can benefit from load scheduling.  */
+ extern int arm_ld_sched;
+ 
+-/* Nonzero if generating Thumb code, either Thumb-1 or Thumb-2.  */
+-extern int thumb_code;
+-
+-/* Nonzero if generating Thumb-1 code.  */
+-extern int thumb1_code;
+-
+ /* Nonzero if this chip is a StrongARM.  */
+ extern int arm_tune_strongarm;
+ 
+@@ -1104,7 +1001,7 @@ extern int arm_arch_crc;
+ /* Modes valid for Neon Q registers.  */
+ #define VALID_NEON_QREG_MODE(MODE) \
+   ((MODE) == V4SImode || (MODE) == V8HImode || (MODE) == V16QImode \
+-   || (MODE) == V4SFmode || (MODE) == V2DImode)
++   || (MODE) == V8HFmode || (MODE) == V4SFmode || (MODE) == V2DImode)
+ 
+ /* Structure modes valid for Neon registers.  */
+ #define VALID_NEON_STRUCT_MODE(MODE) \
+@@ -1360,46 +1257,6 @@ enum reg_class
+      ? GENERAL_REGS : NO_REGS)					\
+     : THUMB_SECONDARY_INPUT_RELOAD_CLASS (CLASS, MODE, X)))
+ 
+-/* Try a machine-dependent way of reloading an illegitimate address
+-   operand.  If we find one, push the reload and jump to WIN.  This
+-   macro is used in only one place: `find_reloads_address' in reload.c.
+-
+-   For the ARM, we wish to handle large displacements off a base
+-   register by splitting the addend across a MOV and the mem insn.
+-   This can cut the number of reloads needed.  */
+-#define ARM_LEGITIMIZE_RELOAD_ADDRESS(X, MODE, OPNUM, TYPE, IND, WIN)	   \
+-  do									   \
+-    {									   \
+-      if (arm_legitimize_reload_address (&X, MODE, OPNUM, TYPE, IND))	   \
+-	goto WIN;							   \
+-    }									   \
+-  while (0)
+-
+-/* XXX If an HImode FP+large_offset address is converted to an HImode
+-   SP+large_offset address, then reload won't know how to fix it.  It sees
+-   only that SP isn't valid for HImode, and so reloads the SP into an index
+-   register, but the resulting address is still invalid because the offset
+-   is too big.  We fix it here instead by reloading the entire address.  */
+-/* We could probably achieve better results by defining PROMOTE_MODE to help
+-   cope with the variances between the Thumb's signed and unsigned byte and
+-   halfword load instructions.  */
+-/* ??? This should be safe for thumb2, but we may be able to do better.  */
+-#define THUMB_LEGITIMIZE_RELOAD_ADDRESS(X, MODE, OPNUM, TYPE, IND_L, WIN)     \
+-do {									      \
+-  rtx new_x = thumb_legitimize_reload_address (&X, MODE, OPNUM, TYPE, IND_L); \
+-  if (new_x)								      \
+-    {									      \
+-      X = new_x;							      \
+-      goto WIN;								      \
+-    }									      \
+-} while (0)
+-
+-#define LEGITIMIZE_RELOAD_ADDRESS(X, MODE, OPNUM, TYPE, IND_LEVELS, WIN)   \
+-  if (TARGET_ARM)							   \
+-    ARM_LEGITIMIZE_RELOAD_ADDRESS (X, MODE, OPNUM, TYPE, IND_LEVELS, WIN); \
+-  else									   \
+-    THUMB_LEGITIMIZE_RELOAD_ADDRESS (X, MODE, OPNUM, TYPE, IND_LEVELS, WIN)
+-
+ /* Return the maximum number of consecutive registers
+    needed to represent mode MODE in a register of class CLASS.
+    ARM regs are UNITS_PER_WORD bits.  
+@@ -2096,10 +1953,11 @@ enum arm_auto_incmodes
+   (current_tune->branch_cost (speed_p, predictable_p))
+ 
+ /* False if short circuit operation is preferred.  */
+-#define LOGICAL_OP_NON_SHORT_CIRCUIT				\
+-  ((optimize_size)						\
+-   ? (TARGET_THUMB ? false : true)				\
+-   : (current_tune->logical_op_non_short_circuit[TARGET_ARM]))
++#define LOGICAL_OP_NON_SHORT_CIRCUIT					\
++  ((optimize_size)							\
++   ? (TARGET_THUMB ? false : true)					\
++   : TARGET_THUMB ? static_cast<bool> (current_tune->logical_op_non_short_circuit_thumb) \
++   : static_cast<bool> (current_tune->logical_op_non_short_circuit_arm))
+ 
+ 

+ /* Position Independent Code.  */
+@@ -2135,7 +1993,8 @@ extern int making_const_table;
+   c_register_pragma (0, "long_calls", arm_pr_long_calls);		\
+   c_register_pragma (0, "no_long_calls", arm_pr_no_long_calls);		\
+   c_register_pragma (0, "long_calls_off", arm_pr_long_calls_off);	\
+-  arm_lang_object_attributes_init(); \
++  arm_lang_object_attributes_init();					\
++  arm_register_target_pragmas();                                       \
+ } while (0)
+ 
+ /* Condition code information.  */
+@@ -2222,23 +2081,7 @@ extern int making_const_table;
+    ? 1 : 0)
+ 
+ #define ARM_DECLARE_FUNCTION_NAME(STREAM, NAME, DECL) 	\
+-  do							\
+-    {							\
+-      if (TARGET_THUMB) 				\
+-        {						\
+-          if (is_called_in_ARM_mode (DECL)		\
+-	      || (TARGET_THUMB1 && !TARGET_THUMB1_ONLY	\
+-		  && cfun->is_thunk))	\
+-            fprintf (STREAM, "\t.code 32\n") ;		\
+-          else if (TARGET_THUMB1)			\
+-           fprintf (STREAM, "\t.code\t16\n\t.thumb_func\n") ;	\
+-          else						\
+-           fprintf (STREAM, "\t.thumb\n\t.thumb_func\n") ;	\
+-        }						\
+-      if (TARGET_POKE_FUNCTION_NAME)			\
+-        arm_poke_function_name (STREAM, (const char *) NAME);	\
+-    }							\
+-  while (0)
++  arm_declare_function_name ((STREAM), (NAME), (DECL));
+ 
+ /* For aliases of functions we use .thumb_set instead.  */
+ #define ASM_OUTPUT_DEF_FROM_DECLS(FILE, DECL1, DECL2)		\
+@@ -2413,4 +2256,8 @@ extern const char *host_detect_local_cpu (int argc, const char **argv);
+ 
+ #define DRIVER_SELF_SPECS MCPU_MTUNE_NATIVE_SPECS
+ #define TARGET_SUPPORTS_WIDE_INT 1
++
++/* For switching between functions with different target attributes.  */
++#define SWITCHABLE_TARGET 1
++
+ #endif /* ! GCC_ARM_H */
+--- a/src/gcc/config/arm/arm.md
++++ b/src/gcc/config/arm/arm.md
+@@ -69,13 +69,17 @@
+ ; IS_THUMB is set to 'yes' when we are generating Thumb code, and 'no' when
+ ; generating ARM code.  This is used to control the length of some insn
+ ; patterns that share the same RTL in both ARM and Thumb code.
+-(define_attr "is_thumb" "no,yes" (const (symbol_ref "thumb_code")))
++(define_attr "is_thumb" "yes,no"
++  (const (if_then_else (symbol_ref "TARGET_THUMB")
++		       (const_string "yes") (const_string "no"))))
+ 
+ ; IS_ARCH6 is set to 'yes' when we are generating code form ARMv6.
+ (define_attr "is_arch6" "no,yes" (const (symbol_ref "arm_arch6")))
+ 
+ ; IS_THUMB1 is set to 'yes' iff we are generating Thumb-1 code.
+-(define_attr "is_thumb1" "no,yes" (const (symbol_ref "thumb1_code")))
++(define_attr "is_thumb1" "yes,no"
++  (const (if_then_else (symbol_ref "TARGET_THUMB1")
++		       (const_string "yes") (const_string "no"))))
+ 
+ ; We use this attribute to disable alternatives that can produce 32-bit
+ ; instructions inside an IT-block in Thumb2 state.  ARMv8 deprecates IT blocks
+@@ -1164,10 +1168,16 @@
+     {
+       if (TARGET_32BIT)
+         {
+-          arm_split_constant (MINUS, SImode, NULL_RTX,
+-	                      INTVAL (operands[1]), operands[0],
+-	  		      operands[2], optimize && can_create_pseudo_p ());
+-          DONE;
++	  if (DONT_EARLY_SPLIT_CONSTANT (INTVAL (operands[1]), MINUS))
++	    operands[1] = force_reg (SImode, operands[1]);
++	  else
++	    {
++	      arm_split_constant (MINUS, SImode, NULL_RTX,
++				  INTVAL (operands[1]), operands[0],
++				  operands[2],
++				  optimize && can_create_pseudo_p ());
++	      DONE;
++	    }
+ 	}
+       else /* TARGET_THUMB1 */
+         operands[1] = force_reg (SImode, operands[1]);
+@@ -1177,9 +1187,9 @@
+ 
+ ; ??? Check Thumb-2 split length
+ (define_insn_and_split "*arm_subsi3_insn"
+-  [(set (match_operand:SI           0 "s_register_operand" "=l,l ,l ,l ,r ,r,r,rk,r")
+-	(minus:SI (match_operand:SI 1 "reg_or_int_operand" "l ,0 ,l ,Pz,rI,r,r,k ,?n")
+-		  (match_operand:SI 2 "reg_or_int_operand" "l ,Py,Pd,l ,r ,I,r,r ,r")))]
++  [(set (match_operand:SI           0 "s_register_operand" "=l,l ,l ,l ,r,r,r,rk,r")
++	(minus:SI (match_operand:SI 1 "reg_or_int_operand" "l ,0 ,l ,Pz,I,r,r,k ,?n")
++		  (match_operand:SI 2 "reg_or_int_operand" "l ,Py,Pd,l ,r,I,r,r ,r")))]
+   "TARGET_32BIT"
+   "@
+    sub%?\\t%0, %1, %2
+@@ -2078,14 +2088,19 @@
+ 	      operands[1] = convert_to_mode (QImode, operands[1], 1);
+ 	      emit_insn (gen_thumb2_zero_extendqisi2_v6 (operands[0],
+ 							 operands[1]));
++	      DONE;
+ 	    }
++	  else if (DONT_EARLY_SPLIT_CONSTANT (INTVAL (operands[2]), AND))
++	    operands[2] = force_reg (SImode, operands[2]);
+ 	  else
+-	    arm_split_constant (AND, SImode, NULL_RTX,
+-				INTVAL (operands[2]), operands[0],
+-				operands[1],
+-				optimize && can_create_pseudo_p ());
++	    {
++	      arm_split_constant (AND, SImode, NULL_RTX,
++				  INTVAL (operands[2]), operands[0],
++				  operands[1],
++				  optimize && can_create_pseudo_p ());
+ 
+-          DONE;
++	      DONE;
++	    }
+         }
+     }
+   else /* TARGET_THUMB1 */
+@@ -2768,6 +2783,55 @@
+ 		      (const_string "logic_shift_reg")))]
+ )
+ 
++;; Shifted bics pattern used to set up CC status register and not reusing
++;; bics output.  Pattern restricts Thumb2 shift operand as bics for Thumb2
++;; does not support shift by register.
++(define_insn "andsi_not_shiftsi_si_scc_no_reuse"
++  [(set (reg:CC_NOOV CC_REGNUM)
++	(compare:CC_NOOV
++		(and:SI (not:SI (match_operator:SI 0 "shift_operator"
++			[(match_operand:SI 1 "s_register_operand" "r")
++			 (match_operand:SI 2 "arm_rhs_operand" "rM")]))
++			(match_operand:SI 3 "s_register_operand" "r"))
++		(const_int 0)))
++   (clobber (match_scratch:SI 4 "=r"))]
++  "TARGET_ARM || (TARGET_THUMB2 && CONST_INT_P (operands[2]))"
++  "bic%.%?\\t%4, %3, %1%S0"
++  [(set_attr "predicable" "yes")
++   (set_attr "predicable_short_it" "no")
++   (set_attr "conds" "set")
++   (set_attr "shift" "1")
++   (set (attr "type") (if_then_else (match_operand 2 "const_int_operand" "")
++		      (const_string "logic_shift_imm")
++		      (const_string "logic_shift_reg")))]
++)
++
++;; Same as andsi_not_shiftsi_si_scc_no_reuse, but the bics result is also
++;; getting reused later.
++(define_insn "andsi_not_shiftsi_si_scc"
++  [(parallel [(set (reg:CC_NOOV CC_REGNUM)
++	(compare:CC_NOOV
++		(and:SI (not:SI (match_operator:SI 0 "shift_operator"
++			[(match_operand:SI 1 "s_register_operand" "r")
++			 (match_operand:SI 2 "arm_rhs_operand" "rM")]))
++			(match_operand:SI 3 "s_register_operand" "r"))
++		(const_int 0)))
++	(set (match_operand:SI 4 "s_register_operand" "=r")
++	     (and:SI (not:SI (match_op_dup 0
++		     [(match_dup 1)
++		      (match_dup 2)]))
++		     (match_dup 3)))])]
++  "TARGET_ARM || (TARGET_THUMB2 && CONST_INT_P (operands[2]))"
++  "bic%.%?\\t%4, %3, %1%S0"
++  [(set_attr "predicable" "yes")
++   (set_attr "predicable_short_it" "no")
++   (set_attr "conds" "set")
++   (set_attr "shift" "1")
++   (set (attr "type") (if_then_else (match_operand 2 "const_int_operand" "")
++		      (const_string "logic_shift_imm")
++		      (const_string "logic_shift_reg")))]
++)
++
+ (define_insn "*andsi_notsi_si_compare0"
+   [(set (reg:CC_NOOV CC_REGNUM)
+ 	(compare:CC_NOOV
+@@ -2884,10 +2948,16 @@
+     {
+       if (TARGET_32BIT)
+         {
+-          arm_split_constant (IOR, SImode, NULL_RTX,
+-	                      INTVAL (operands[2]), operands[0], operands[1],
+-			      optimize && can_create_pseudo_p ());
+-          DONE;
++	  if (DONT_EARLY_SPLIT_CONSTANT (INTVAL (operands[2]), IOR))
++	    operands[2] = force_reg (SImode, operands[2]);
++	  else
++	    {
++	      arm_split_constant (IOR, SImode, NULL_RTX,
++				  INTVAL (operands[2]), operands[0],
++				  operands[1],
++				  optimize && can_create_pseudo_p ());
++	      DONE;
++	    }
+ 	}
+       else /* TARGET_THUMB1 */
+         {
+@@ -3054,10 +3124,16 @@
+     {
+       if (TARGET_32BIT)
+         {
+-          arm_split_constant (XOR, SImode, NULL_RTX,
+-	                      INTVAL (operands[2]), operands[0], operands[1],
+-			      optimize && can_create_pseudo_p ());
+-          DONE;
++	  if (DONT_EARLY_SPLIT_CONSTANT (INTVAL (operands[2]), XOR))
++	    operands[2] = force_reg (SImode, operands[2]);
++	  else
++	    {
++	      arm_split_constant (XOR, SImode, NULL_RTX,
++				  INTVAL (operands[2]), operands[0],
++				  operands[1],
++				  optimize && can_create_pseudo_p ());
++	      DONE;
++	    }
+ 	}
+       else /* TARGET_THUMB1 */
+         {
+@@ -5076,7 +5152,7 @@
+ 
+ (define_split
+   [(set (match_operand:SI 0 "s_register_operand" "")
+-	(ior_xor:SI (and:SI (ashift:SI
++	(IOR_XOR:SI (and:SI (ashift:SI
+ 			     (match_operand:SI 1 "s_register_operand" "")
+ 			     (match_operand:SI 2 "const_int_operand" ""))
+ 			    (match_operand:SI 3 "const_int_operand" ""))
+@@ -5088,7 +5164,7 @@
+        == (GET_MODE_MASK (GET_MODE (operands[5]))
+            & (GET_MODE_MASK (GET_MODE (operands[5]))
+ 	      << (INTVAL (operands[2])))))"
+-  [(set (match_dup 0) (ior_xor:SI (ashift:SI (match_dup 1) (match_dup 2))
++  [(set (match_dup 0) (IOR_XOR:SI (ashift:SI (match_dup 1) (match_dup 2))
+ 				  (match_dup 4)))
+    (set (match_dup 0) (zero_extend:SI (match_dup 5)))]
+   "operands[5] = gen_lowpart (GET_MODE (operands[5]), operands[0]);"
+@@ -5590,10 +5666,18 @@
+           && !(const_ok_for_arm (INTVAL (operands[1]))
+                || const_ok_for_arm (~INTVAL (operands[1]))))
+         {
+-           arm_split_constant (SET, SImode, NULL_RTX,
+-	                       INTVAL (operands[1]), operands[0], NULL_RTX,
+-			       optimize && can_create_pseudo_p ());
+-          DONE;
++	   if (DONT_EARLY_SPLIT_CONSTANT (INTVAL (operands[1]), SET))
++	     {
++		emit_insn (gen_rtx_SET (SImode, operands[0], operands[1]));
++		DONE;
++	     }
++	  else
++	     {
++		arm_split_constant (SET, SImode, NULL_RTX,
++	                            INTVAL (operands[1]), operands[0], NULL_RTX,
++			            optimize && can_create_pseudo_p ());
++		DONE;
++	     }
+         }
+     }
+   else /* TARGET_THUMB1...  */
+@@ -5667,7 +5751,7 @@
+   [(set_attr "predicable" "yes")
+    (set_attr "predicable_short_it" "no")
+    (set_attr "length" "4")
+-   (set_attr "type" "mov_imm")]
++   (set_attr "type" "alu_sreg")]
+ )
+ 
+ (define_insn "*arm_movsi_insn"
+@@ -6713,7 +6797,7 @@
+ 
+   /* Support only fixed point registers.  */
+   if (!CONST_INT_P (operands[2])
+-      || INTVAL (operands[2]) > 14
++      || INTVAL (operands[2]) > MAX_LDM_STM_OPS
+       || INTVAL (operands[2]) < 2
+       || !MEM_P (operands[1])
+       || !REG_P (operands[0])
+@@ -6738,7 +6822,7 @@
+ 
+   /* Support only fixed point registers.  */
+   if (!CONST_INT_P (operands[2])
+-      || INTVAL (operands[2]) > 14
++      || INTVAL (operands[2]) > MAX_LDM_STM_OPS
+       || INTVAL (operands[2]) < 2
+       || !REG_P (operands[1])
+       || !MEM_P (operands[0])
+@@ -6923,7 +7007,7 @@
+   [(set_attr "conds" "set")
+    (set_attr "shift" "1")
+    (set_attr "arch" "32,a,a")
+-   (set_attr "type" "alus_shift_imm,alu_shift_reg,alus_shift_imm")])
++   (set_attr "type" "alus_shift_imm,alus_shift_reg,alus_shift_imm")])
+ 
+ (define_insn "*cmpsi_shiftsi_swp"
+   [(set (reg:CC_SWP CC_REGNUM)
+@@ -6936,7 +7020,7 @@
+   [(set_attr "conds" "set")
+    (set_attr "shift" "1")
+    (set_attr "arch" "32,a,a")
+-   (set_attr "type" "alus_shift_imm,alu_shift_reg,alus_shift_imm")])
++   (set_attr "type" "alus_shift_imm,alus_shift_reg,alus_shift_imm")])
+ 
+ (define_insn "*arm_cmpsi_negshiftsi_si"
+   [(set (reg:CC_Z CC_REGNUM)
+@@ -7529,10 +7613,10 @@
+                                         (const_string "mov_imm")
+                                         (const_string "mov_reg"))
+                           (const_string "mvn_imm")
+-                          (const_string "mov_reg")
+-                          (const_string "mov_reg")
+-                          (const_string "mov_reg")
+-                          (const_string "mov_reg")])]
++                          (const_string "multiple")
++                          (const_string "multiple")
++                          (const_string "multiple")
++                          (const_string "multiple")])]
+ )
+ 
+ (define_insn "*movsfcc_soft_insn"
+@@ -7755,6 +7839,13 @@
+    && !arm_is_long_call_p (SYMBOL_REF_DECL (operands[0]))"
+   "*
+   {
++   rtx op = operands[0];
++
++   /* Switch mode now when possible.  */
++   if (SYMBOL_REF_DECL (op) && !TREE_PUBLIC (SYMBOL_REF_DECL (op))
++        && arm_arch5 && arm_change_mode_p (SYMBOL_REF_DECL (op)))
++      return NEED_PLT_RELOC ? \"blx%?\\t%a0(PLT)\" : \"blx%?\\t(%a0)\";
++
+     return NEED_PLT_RELOC ? \"bl%?\\t%a0(PLT)\" : \"bl%?\\t%a0\";
+   }"
+   [(set_attr "type" "call")]
+@@ -7772,6 +7863,13 @@
+    && !arm_is_long_call_p (SYMBOL_REF_DECL (operands[1]))"
+   "*
+   {
++   rtx op = operands[1];
++
++   /* Switch mode now when possible.  */
++   if (SYMBOL_REF_DECL (op) && !TREE_PUBLIC (SYMBOL_REF_DECL (op))
++        && arm_arch5 && arm_change_mode_p (SYMBOL_REF_DECL (op)))
++      return NEED_PLT_RELOC ? \"blx%?\\t%a1(PLT)\" : \"blx%?\\t(%a1)\";
++
+     return NEED_PLT_RELOC ? \"bl%?\\t%a1(PLT)\" : \"bl%?\\t%a1\";
+   }"
+   [(set_attr "type" "call")]
+@@ -7885,7 +7983,7 @@
+ )
+ 
+ (define_expand "<return_str>return"
+-  [(returns)]
++  [(RETURNS)]
+   "(TARGET_ARM || (TARGET_THUMB2
+                    && ARM_FUNC_TYPE (arm_current_func_type ()) == ARM_FT_NORMAL
+                    && !IS_STACKALIGN (arm_current_func_type ())))
+@@ -7923,7 +8021,7 @@
+   [(set (pc)
+         (if_then_else (match_operator 0 "arm_comparison_operator"
+ 		       [(match_operand 1 "cc_register" "") (const_int 0)])
+-                      (returns)
++                      (RETURNS)
+                       (pc)))]
+   "TARGET_ARM  <return_cond_true>"
+   "*
+@@ -7946,7 +8044,7 @@
+         (if_then_else (match_operator 0 "arm_comparison_operator"
+ 		       [(match_operand 1 "cc_register" "") (const_int 0)])
+                       (pc)
+-		      (returns)))]
++		      (RETURNS)))]
+   "TARGET_ARM <return_cond_true>"
+   "*
+   {
+@@ -8280,7 +8378,7 @@
+ 
+ (define_insn "*<arith_shift_insn>_multsi"
+   [(set (match_operand:SI 0 "s_register_operand" "=r,r")
+-	(shiftable_ops:SI
++	(SHIFTABLE_OPS:SI
+ 	 (mult:SI (match_operand:SI 2 "s_register_operand" "r,r")
+ 		  (match_operand:SI 3 "power_of_two_operand" ""))
+ 	 (match_operand:SI 1 "s_register_operand" "rk,<t2_binop0>")))]
+@@ -8294,7 +8392,7 @@
+ 
+ (define_insn "*<arith_shift_insn>_shiftsi"
+   [(set (match_operand:SI 0 "s_register_operand" "=r,r,r")
+-	(shiftable_ops:SI
++	(SHIFTABLE_OPS:SI
+ 	 (match_operator:SI 2 "shift_nomul_operator"
+ 	  [(match_operand:SI 3 "s_register_operand" "r,r,r")
+ 	   (match_operand:SI 4 "shift_amount_operand" "M,M,r")])
+@@ -8690,7 +8788,14 @@
+     return \"\";
+   "
+   [(set_attr "conds" "use")
+-   (set_attr "type" "mov_reg,mov_reg,multiple")
++   (set_attr_alternative "type"
++                         [(if_then_else (match_operand 2 "const_int_operand" "")
++                                        (const_string "mov_imm")
++                                        (const_string "mov_reg"))
++                          (if_then_else (match_operand 1 "const_int_operand" "")
++                                        (const_string "mov_imm")
++                                        (const_string "mov_reg"))
++                          (const_string "multiple")])
+    (set_attr "length" "4,4,8")]
+ )
+ 
+@@ -9486,8 +9591,8 @@
+                                         (const_string "alu_imm" )
+                                         (const_string "alu_sreg"))
+                           (const_string "alu_imm")
+-                          (const_string "alu_sreg")
+-                          (const_string "alu_sreg")])]
++                          (const_string "multiple")
++                          (const_string "multiple")])]
+ )
+ 
+ (define_insn "*ifcompare_move_plus"
+@@ -9524,7 +9629,13 @@
+    sub%D4\\t%0, %2, #%n3\;mov%d4\\t%0, %1"
+   [(set_attr "conds" "use")
+    (set_attr "length" "4,4,8,8")
+-   (set_attr "type" "alu_sreg,alu_imm,multiple,multiple")]
++   (set_attr_alternative "type"
++                         [(if_then_else (match_operand 3 "const_int_operand" "")
++                                        (const_string "alu_imm" )
++                                        (const_string "alu_sreg"))
++                          (const_string "alu_imm")
++                          (const_string "multiple")
++                          (const_string "multiple")])]
+ )
+ 
+ (define_insn "*ifcompare_arith_arith"
+@@ -9619,7 +9730,11 @@
+    %I5%d4\\t%0, %2, %3\;mov%D4\\t%0, %1"
+   [(set_attr "conds" "use")
+    (set_attr "length" "4,8")
+-   (set_attr "type" "alu_shift_reg,multiple")]
++   (set_attr_alternative "type"
++                         [(if_then_else (match_operand 3 "const_int_operand" "")
++                                        (const_string "alu_shift_imm" )
++                                        (const_string "alu_shift_reg"))
++                          (const_string "multiple")])]
+ )
+ 
+ (define_insn "*ifcompare_move_arith"
+@@ -9680,7 +9795,11 @@
+    %I5%D4\\t%0, %2, %3\;mov%d4\\t%0, %1"
+   [(set_attr "conds" "use")
+    (set_attr "length" "4,8")
+-   (set_attr "type" "alu_shift_reg,multiple")]
++   (set_attr_alternative "type"
++                         [(if_then_else (match_operand 3 "const_int_operand" "")
++                                        (const_string "alu_shift_imm" )
++                                        (const_string "alu_shift_reg"))
++                          (const_string "multiple")])]
+ )
+ 
+ (define_insn "*ifcompare_move_not"
+@@ -9787,7 +9906,12 @@
+   [(set_attr "conds" "use")
+    (set_attr "shift" "2")
+    (set_attr "length" "4,8,8")
+-   (set_attr "type" "mov_shift_reg,multiple,multiple")]
++   (set_attr_alternative "type"
++                         [(if_then_else (match_operand 3 "const_int_operand" "")
++                                        (const_string "mov_shift" )
++                                        (const_string "mov_shift_reg"))
++                          (const_string "multiple")
++                          (const_string "multiple")])]
+ )
+ 
+ (define_insn "*ifcompare_move_shift"
+@@ -9825,7 +9949,12 @@
+   [(set_attr "conds" "use")
+    (set_attr "shift" "2")
+    (set_attr "length" "4,8,8")
+-   (set_attr "type" "mov_shift_reg,multiple,multiple")]
++   (set_attr_alternative "type"
++                         [(if_then_else (match_operand 3 "const_int_operand" "")
++                                        (const_string "mov_shift" )
++                                        (const_string "mov_shift_reg"))
++                          (const_string "multiple")
++                          (const_string "multiple")])]
+ )
+ 
+ (define_insn "*ifcompare_shift_shift"
+@@ -10906,7 +11035,7 @@
+  [(set_attr "predicable" "yes")
+   (set_attr "predicable_short_it" "no")
+   (set_attr "length" "4")
+-  (set_attr "type" "mov_imm")]
++  (set_attr "type" "alu_sreg")]
+ )
+ 
+ (define_insn "*arm_rev"
+--- a/src/gcc/config/arm/arm.opt
++++ b/src/gcc/config/arm/arm.opt
+@@ -122,6 +122,10 @@ Enum(float_abi_type) String(softfp) Value(ARM_FLOAT_ABI_SOFTFP)
+ EnumValue
+ Enum(float_abi_type) String(hard) Value(ARM_FLOAT_ABI_HARD)
+ 
++mflip-thumb
++Target Report Var(TARGET_FLIP_THUMB) Undocumented
++Switch ARM/Thumb modes on alternating functions for compiler testing
++
+ mfp16-format=
+ Target RejectNegative Joined Enum(arm_fp16_format_type) Var(arm_fp16_format) Init(ARM_FP16_FORMAT_NONE)
+ Specify the __fp16 floating-point format
+@@ -182,7 +186,7 @@ Target RejectNegative Joined UInteger Var(arm_structure_size_boundary) Init(DEFA
+ Specify the minimum bit alignment of structures
+ 
+ mthumb
+-Target Report RejectNegative Mask(THUMB)
++Target Report RejectNegative Mask(THUMB) Save
+ Generate code for Thumb state
+ 
+ mthumb-interwork
+@@ -246,7 +250,7 @@ Target Report Var(target_word_relocations) Init(TARGET_DEFAULT_WORD_RELOCATIONS)
+ Only generate absolute relocations on word sized values.
+ 
+ mrestrict-it
+-Target Report Var(arm_restrict_it) Init(2)
++Target Report Var(arm_restrict_it) Init(2) Save
+ Generate IT blocks appropriate for ARMv8.
+ 
+ mold-rtx-costs
+@@ -275,5 +279,5 @@ Target Report Var(target_slow_flash_data) Init(0)
+ Assume loading data from flash is slower than fetching instructions.
+ 
+ masm-syntax-unified
+-Target Report Var(inline_asm_unified) Init(0)
++Target Report Var(inline_asm_unified) Init(0) Save
+ Assume unified syntax for Thumb inline assembly code.
+--- a/src/gcc/config/arm/arm_neon.h
++++ b/src/gcc/config/arm/arm_neon.h
+@@ -41,7 +41,10 @@ typedef __simd64_int8_t int8x8_t;
+ typedef __simd64_int16_t int16x4_t;
+ typedef __simd64_int32_t int32x2_t;
+ typedef __builtin_neon_di int64x1_t;
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++typedef __fp16 float16_t;
+ typedef __simd64_float16_t float16x4_t;
++#endif
+ typedef __simd64_float32_t float32x2_t;
+ typedef __simd64_poly8_t poly8x8_t;
+ typedef __simd64_poly16_t poly16x4_t;
+@@ -57,6 +60,9 @@ typedef __simd128_int8_t int8x16_t;
+ typedef __simd128_int16_t int16x8_t;
+ typedef __simd128_int32_t int32x4_t;
+ typedef __simd128_int64_t int64x2_t;
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++typedef __simd128_float16_t float16x8_t;
++#endif
+ typedef __simd128_float32_t float32x4_t;
+ typedef __simd128_poly8_t poly8x16_t;
+ typedef __simd128_poly16_t poly16x8_t;
+@@ -160,6 +166,20 @@ typedef struct uint64x2x2_t
+   uint64x2_t val[2];
+ } uint64x2x2_t;
+ 
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++typedef struct float16x4x2_t
++{
++  float16x4_t val[2];
++} float16x4x2_t;
++#endif
++
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++typedef struct float16x8x2_t
++{
++  float16x8_t val[2];
++} float16x8x2_t;
++#endif
++
+ typedef struct float32x2x2_t
+ {
+   float32x2_t val[2];
+@@ -286,6 +306,20 @@ typedef struct uint64x2x3_t
+   uint64x2_t val[3];
+ } uint64x2x3_t;
+ 
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++typedef struct float16x4x3_t
++{
++  float16x4_t val[3];
++} float16x4x3_t;
++#endif
++
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++typedef struct float16x8x3_t
++{
++  float16x8_t val[3];
++} float16x8x3_t;
++#endif
++
+ typedef struct float32x2x3_t
+ {
+   float32x2_t val[3];
+@@ -412,6 +446,20 @@ typedef struct uint64x2x4_t
+   uint64x2_t val[4];
+ } uint64x2x4_t;
+ 
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++typedef struct float16x4x4_t
++{
++  float16x4_t val[4];
++} float16x4x4_t;
++#endif
++
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++typedef struct float16x8x4_t
++{
++  float16x8_t val[4];
++} float16x8x4_t;
++#endif
++
+ typedef struct float32x2x4_t
+ {
+   float32x2_t val[4];
+@@ -5201,6 +5249,21 @@ vget_lane_s32 (int32x2_t __a, const int __b)
+   return (int32_t)__builtin_neon_vget_lanev2si (__a, __b);
+ }
+ 
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++/* Functions cannot accept or return __FP16 types.  Even if the function
++   were marked always-inline so there were no call sites, the declaration
++   would nonetheless raise an error.  Hence, we must use a macro instead.  */
++
++#define vget_lane_f16(__v, __idx)		\
++  __extension__					\
++    ({						\
++      float16x4_t __vec = (__v);		\
++      __builtin_arm_lane_check (4, __idx);	\
++      float16_t __res = __vec[__idx];		\
++      __res;					\
++    })
++#endif
++
+ __extension__ static __inline float32_t __attribute__ ((__always_inline__))
+ vget_lane_f32 (float32x2_t __a, const int __b)
+ {
+@@ -5267,6 +5330,17 @@ vgetq_lane_s32 (int32x4_t __a, const int __b)
+   return (int32_t)__builtin_neon_vget_lanev4si (__a, __b);
+ }
+ 
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++#define vgetq_lane_f16(__v, __idx)		\
++  __extension__					\
++    ({						\
++      float16x8_t __vec = (__v);		\
++      __builtin_arm_lane_check (8, __idx);	\
++      float16_t __res = __vec[__idx];		\
++      __res;					\
++    })
++#endif
++
+ __extension__ static __inline float32_t __attribute__ ((__always_inline__))
+ vgetq_lane_f32 (float32x4_t __a, const int __b)
+ {
+@@ -5333,6 +5407,18 @@ vset_lane_s32 (int32_t __a, int32x2_t __b, const int __c)
+   return (int32x2_t)__builtin_neon_vset_lanev2si ((__builtin_neon_si) __a, __b, __c);
+ }
+ 
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++#define vset_lane_f16(__e, __v, __idx)		\
++  __extension__					\
++    ({						\
++      float16_t __elem = (__e);			\
++      float16x4_t __vec = (__v);		\
++      __builtin_arm_lane_check (4, __idx);	\
++      __vec[__idx] = __elem;			\
++      __vec;					\
++    })
++#endif
++
+ __extension__ static __inline float32x2_t __attribute__ ((__always_inline__))
+ vset_lane_f32 (float32_t __a, float32x2_t __b, const int __c)
+ {
+@@ -5399,6 +5485,18 @@ vsetq_lane_s32 (int32_t __a, int32x4_t __b, const int __c)
+   return (int32x4_t)__builtin_neon_vset_lanev4si ((__builtin_neon_si) __a, __b, __c);
+ }
+ 
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++#define vsetq_lane_f16(__e, __v, __idx)		\
++  __extension__					\
++    ({						\
++      float16_t __elem = (__e);			\
++      float16x8_t __vec = (__v);		\
++      __builtin_arm_lane_check (8, __idx);	\
++      __vec[__idx] = __elem;			\
++      __vec;					\
++    })
++#endif
++
+ __extension__ static __inline float32x4_t __attribute__ ((__always_inline__))
+ vsetq_lane_f32 (float32_t __a, float32x4_t __b, const int __c)
+ {
+@@ -5479,6 +5577,14 @@ vcreate_s64 (uint64_t __a)
+   return (int64x1_t)__builtin_neon_vcreatedi ((__builtin_neon_di) __a);
+ }
+ 
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++__extension__ static __inline float16x4_t __attribute__ ((__always_inline__))
++vcreate_f16 (uint64_t __a)
++{
++  return (float16x4_t) __a;
++}
++#endif
++
+ __extension__ static __inline float32x2_t __attribute__ ((__always_inline__))
+ vcreate_f32 (uint64_t __a)
+ {
+@@ -5981,6 +6087,14 @@ vcombine_s64 (int64x1_t __a, int64x1_t __b)
+   return (int64x2_t)__builtin_neon_vcombinedi (__a, __b);
+ }
+ 
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++__extension__ static __inline float16x8_t __attribute__ ((__always_inline__))
++vcombine_f16 (float16x4_t __a, float16x4_t __b)
++{
++  return __builtin_neon_vcombinev4hf (__a, __b);
++}
++#endif
++
+ __extension__ static __inline float32x4_t __attribute__ ((__always_inline__))
+ vcombine_f32 (float32x2_t __a, float32x2_t __b)
+ {
+@@ -6055,6 +6169,14 @@ vget_high_s64 (int64x2_t __a)
+   return (int64x1_t)__builtin_neon_vget_highv2di (__a);
+ }
+ 
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++__extension__ static __inline float16x4_t __attribute__ ((__always_inline__))
++vget_high_f16 (float16x8_t __a)
++{
++  return __builtin_neon_vget_highv8hf (__a);
++}
++#endif
++
+ __extension__ static __inline float32x2_t __attribute__ ((__always_inline__))
+ vget_high_f32 (float32x4_t __a)
+ {
+@@ -6115,6 +6237,14 @@ vget_low_s32 (int32x4_t __a)
+   return (int32x2_t)__builtin_neon_vget_lowv4si (__a);
+ }
+ 
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++__extension__ static __inline float16x4_t __attribute__ ((__always_inline__))
++vget_low_f16 (float16x8_t __a)
++{
++  return __builtin_neon_vget_lowv8hf (__a);
++}
++#endif
++
+ __extension__ static __inline float32x2_t __attribute__ ((__always_inline__))
+ vget_low_f32 (float32x4_t __a)
+ {
+@@ -6220,21 +6350,25 @@ vcvtq_u32_f32 (float32x4_t __a)
+ }
+ 
+ #if ((__ARM_FP & 0x2) != 0)
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
+ __extension__ static __inline float16x4_t __attribute__ ((__always_inline__))
+ vcvt_f16_f32 (float32x4_t __a)
+ {
+   return (float16x4_t)__builtin_neon_vcvtv4hfv4sf (__a);
+ }
+-
+ #endif
++#endif
++
+ #if ((__ARM_FP & 0x2) != 0)
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
+ __extension__ static __inline float32x4_t __attribute__ ((__always_inline__))
+ vcvt_f32_f16 (float16x4_t __a)
+ {
+   return (float32x4_t)__builtin_neon_vcvtv4sfv4hf (__a);
+ }
+-
+ #endif
++#endif
++
+ __extension__ static __inline int32x2_t __attribute__ ((__always_inline__))
+ vcvt_n_s32_f32 (float32x2_t __a, const int __b)
+ {
+@@ -8662,6 +8796,14 @@ vld1_s64 (const int64_t * __a)
+   return (int64x1_t)__builtin_neon_vld1di ((const __builtin_neon_di *) __a);
+ }
+ 
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++__extension__ static __inline float16x4_t __attribute__ ((__always_inline__))
++vld1_f16 (const float16_t * __a)
++{
++  return __builtin_neon_vld1v4hf (__a);
++}
++#endif
++
+ __extension__ static __inline float32x2_t __attribute__ ((__always_inline__))
+ vld1_f32 (const float32_t * __a)
+ {
+@@ -8736,6 +8878,14 @@ vld1q_s64 (const int64_t * __a)
+   return (int64x2_t)__builtin_neon_vld1v2di ((const __builtin_neon_di *) __a);
+ }
+ 
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++__extension__ static __inline float16x8_t __attribute__ ((__always_inline__))
++vld1q_f16 (const float16_t * __a)
++{
++  return __builtin_neon_vld1v8hf (__a);
++}
++#endif
++
+ __extension__ static __inline float32x4_t __attribute__ ((__always_inline__))
+ vld1q_f32 (const float32_t * __a)
+ {
+@@ -8796,6 +8946,14 @@ vld1_lane_s32 (const int32_t * __a, int32x2_t __b, const int __c)
+   return (int32x2_t)__builtin_neon_vld1_lanev2si ((const __builtin_neon_si *) __a, __b, __c);
+ }
+ 
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++__extension__ static __inline float16x4_t __attribute__ ((__always_inline__))
++vld1_lane_f16 (const float16_t * __a, float16x4_t __b, const int __c)
++{
++  return vset_lane_f16 (*__a, __b, __c);
++}
++#endif
++
+ __extension__ static __inline float32x2_t __attribute__ ((__always_inline__))
+ vld1_lane_f32 (const float32_t * __a, float32x2_t __b, const int __c)
+ {
+@@ -8870,6 +9028,14 @@ vld1q_lane_s32 (const int32_t * __a, int32x4_t __b, const int __c)
+   return (int32x4_t)__builtin_neon_vld1_lanev4si ((const __builtin_neon_si *) __a, __b, __c);
+ }
+ 
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++__extension__ static __inline float16x8_t __attribute__ ((__always_inline__))
++vld1q_lane_f16 (const float16_t * __a, float16x8_t __b, const int __c)
++{
++  return vsetq_lane_f16 (*__a, __b, __c);
++}
++#endif
++
+ __extension__ static __inline float32x4_t __attribute__ ((__always_inline__))
+ vld1q_lane_f32 (const float32_t * __a, float32x4_t __b, const int __c)
+ {
+@@ -8944,6 +9110,15 @@ vld1_dup_s32 (const int32_t * __a)
+   return (int32x2_t)__builtin_neon_vld1_dupv2si ((const __builtin_neon_si *) __a);
+ }
+ 
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++__extension__ static __inline float16x4_t __attribute__ ((__always_inline__))
++vld1_dup_f16 (const float16_t * __a)
++{
++  float16_t __f = *__a;
++  return (float16x4_t) { __f, __f, __f, __f };
++}
++#endif
++
+ __extension__ static __inline float32x2_t __attribute__ ((__always_inline__))
+ vld1_dup_f32 (const float32_t * __a)
+ {
+@@ -9018,6 +9193,15 @@ vld1q_dup_s32 (const int32_t * __a)
+   return (int32x4_t)__builtin_neon_vld1_dupv4si ((const __builtin_neon_si *) __a);
+ }
+ 
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++__extension__ static __inline float16x8_t __attribute__ ((__always_inline__))
++vld1q_dup_f16 (const float16_t * __a)
++{
++  float16_t __f = *__a;
++  return (float16x8_t) { __f, __f, __f, __f, __f, __f, __f, __f };
++}
++#endif
++
+ __extension__ static __inline float32x4_t __attribute__ ((__always_inline__))
+ vld1q_dup_f32 (const float32_t * __a)
+ {
+@@ -9106,6 +9290,14 @@ vst1_s64 (int64_t * __a, int64x1_t __b)
+   __builtin_neon_vst1di ((__builtin_neon_di *) __a, __b);
+ }
+ 
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++__extension__ static __inline void __attribute__ ((__always_inline__))
++vst1_f16 (float16_t * __a, float16x4_t __b)
++{
++  __builtin_neon_vst1v4hf (__a, __b);
++}
++#endif
++
+ __extension__ static __inline void __attribute__ ((__always_inline__))
+ vst1_f32 (float32_t * __a, float32x2_t __b)
+ {
+@@ -9180,6 +9372,14 @@ vst1q_s64 (int64_t * __a, int64x2_t __b)
+   __builtin_neon_vst1v2di ((__builtin_neon_di *) __a, __b);
+ }
+ 
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++__extension__ static __inline void __attribute__ ((__always_inline__))
++vst1q_f16 (float16_t * __a, float16x8_t __b)
++{
++  __builtin_neon_vst1v8hf (__a, __b);
++}
++#endif
++
+ __extension__ static __inline void __attribute__ ((__always_inline__))
+ vst1q_f32 (float32_t * __a, float32x4_t __b)
+ {
+@@ -9240,6 +9440,14 @@ vst1_lane_s32 (int32_t * __a, int32x2_t __b, const int __c)
+   __builtin_neon_vst1_lanev2si ((__builtin_neon_si *) __a, __b, __c);
+ }
+ 
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++__extension__ static __inline void __attribute__ ((__always_inline__))
++vst1_lane_f16 (float16_t * __a, float16x4_t __b, const int __c)
++{
++  __builtin_neon_vst1_lanev4hf (__a, __b, __c);
++}
++#endif
++
+ __extension__ static __inline void __attribute__ ((__always_inline__))
+ vst1_lane_f32 (float32_t * __a, float32x2_t __b, const int __c)
+ {
+@@ -9314,6 +9522,14 @@ vst1q_lane_s32 (int32_t * __a, int32x4_t __b, const int __c)
+   __builtin_neon_vst1_lanev4si ((__builtin_neon_si *) __a, __b, __c);
+ }
+ 
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++__extension__ static __inline void __attribute__ ((__always_inline__))
++vst1q_lane_f16 (float16_t * __a, float16x8_t __b, const int __c)
++{
++  __builtin_neon_vst1_lanev8hf (__a, __b, __c);
++}
++#endif
++
+ __extension__ static __inline void __attribute__ ((__always_inline__))
+ vst1q_lane_f32 (float32_t * __a, float32x4_t __b, const int __c)
+ {
+@@ -9394,6 +9610,16 @@ vld2_s32 (const int32_t * __a)
+   return __rv.__i;
+ }
+ 
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++__extension__ static __inline float16x4x2_t __attribute__ ((__always_inline__))
++vld2_f16 (const float16_t * __a)
++{
++  union { float16x4x2_t __i; __builtin_neon_ti __o; } __rv;
++  __rv.__o = __builtin_neon_vld2v4hf (__a);
++  return __rv.__i;
++}
++#endif
++
+ __extension__ static __inline float32x2x2_t __attribute__ ((__always_inline__))
+ vld2_f32 (const float32_t * __a)
+ {
+@@ -9492,6 +9718,16 @@ vld2q_s32 (const int32_t * __a)
+   return __rv.__i;
+ }
+ 
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++__extension__ static __inline float16x8x2_t __attribute__ ((__always_inline__))
++vld2q_f16 (const float16_t * __a)
++{
++  union { float16x8x2_t __i; __builtin_neon_oi __o; } __rv;
++  __rv.__o = __builtin_neon_vld2v8hf (__a);
++  return __rv.__i;
++}
++#endif
++
+ __extension__ static __inline float32x4x2_t __attribute__ ((__always_inline__))
+ vld2q_f32 (const float32_t * __a)
+ {
+@@ -9567,6 +9803,17 @@ vld2_lane_s32 (const int32_t * __a, int32x2x2_t __b, const int __c)
+   return __rv.__i;
+ }
+ 
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++__extension__ static __inline float16x4x2_t __attribute__ ((__always_inline__))
++vld2_lane_f16 (const float16_t * __a, float16x4x2_t __b, const int __c)
++{
++  union { float16x4x2_t __i; __builtin_neon_ti __o; } __bu = { __b };
++  union { float16x4x2_t __i; __builtin_neon_ti __o; } __rv;
++  __rv.__o = __builtin_neon_vld2_lanev4hf ( __a, __bu.__o, __c);
++  return __rv.__i;
++}
++#endif
++
+ __extension__ static __inline float32x2x2_t __attribute__ ((__always_inline__))
+ vld2_lane_f32 (const float32_t * __a, float32x2x2_t __b, const int __c)
+ {
+@@ -9639,6 +9886,17 @@ vld2q_lane_s32 (const int32_t * __a, int32x4x2_t __b, const int __c)
+   return __rv.__i;
+ }
+ 
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++__extension__ static __inline float16x8x2_t __attribute__ ((__always_inline__))
++vld2q_lane_f16 (const float16_t * __a, float16x8x2_t __b, const int __c)
++{
++  union { float16x8x2_t __i; __builtin_neon_oi __o; } __bu = { __b };
++  union { float16x8x2_t __i; __builtin_neon_oi __o; } __rv;
++  __rv.__o = __builtin_neon_vld2_lanev8hf (__a, __bu.__o, __c);
++  return __rv.__i;
++}
++#endif
++
+ __extension__ static __inline float32x4x2_t __attribute__ ((__always_inline__))
+ vld2q_lane_f32 (const float32_t * __a, float32x4x2_t __b, const int __c)
+ {
+@@ -9699,6 +9957,16 @@ vld2_dup_s32 (const int32_t * __a)
+   return __rv.__i;
+ }
+ 
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++__extension__ static __inline float16x4x2_t __attribute__ ((__always_inline__))
++vld2_dup_f16 (const float16_t * __a)
++{
++  union { float16x4x2_t __i; __builtin_neon_ti __o; } __rv;
++  __rv.__o = __builtin_neon_vld2_dupv4hf (__a);
++  return __rv.__i;
++}
++#endif
++
+ __extension__ static __inline float32x2x2_t __attribute__ ((__always_inline__))
+ vld2_dup_f32 (const float32_t * __a)
+ {
+@@ -9794,6 +10062,15 @@ vst2_s32 (int32_t * __a, int32x2x2_t __b)
+   __builtin_neon_vst2v2si ((__builtin_neon_si *) __a, __bu.__o);
+ }
+ 
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++__extension__ static __inline void __attribute__ ((__always_inline__))
++vst2_f16 (float16_t * __a, float16x4x2_t __b)
++{
++  union { float16x4x2_t __i; __builtin_neon_ti __o; } __bu = { __b };
++  __builtin_neon_vst2v4hf (__a, __bu.__o);
++}
++#endif
++
+ __extension__ static __inline void __attribute__ ((__always_inline__))
+ vst2_f32 (float32_t * __a, float32x2x2_t __b)
+ {
+@@ -9880,6 +10157,15 @@ vst2q_s32 (int32_t * __a, int32x4x2_t __b)
+   __builtin_neon_vst2v4si ((__builtin_neon_si *) __a, __bu.__o);
+ }
+ 
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++__extension__ static __inline void __attribute__ ((__always_inline__))
++vst2q_f16 (float16_t * __a, float16x8x2_t __b)
++{
++  union { float16x8x2_t __i; __builtin_neon_oi __o; } __bu = { __b };
++  __builtin_neon_vst2v8hf (__a, __bu.__o);
++}
++#endif
++
+ __extension__ static __inline void __attribute__ ((__always_inline__))
+ vst2q_f32 (float32_t * __a, float32x4x2_t __b)
+ {
+@@ -9943,6 +10229,15 @@ vst2_lane_s32 (int32_t * __a, int32x2x2_t __b, const int __c)
+   __builtin_neon_vst2_lanev2si ((__builtin_neon_si *) __a, __bu.__o, __c);
+ }
+ 
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++__extension__ static __inline void __attribute__ ((__always_inline__))
++vst2_lane_f16 (float16_t * __a, float16x4x2_t __b, const int __c)
++{
++  union { float16x4x2_t __i; __builtin_neon_ti __o; } __bu = { __b };
++  __builtin_neon_vst2_lanev4hf (__a, __bu.__o, __c);
++}
++#endif
++
+ __extension__ static __inline void __attribute__ ((__always_inline__))
+ vst2_lane_f32 (float32_t * __a, float32x2x2_t __b, const int __c)
+ {
+@@ -9999,6 +10294,15 @@ vst2q_lane_s32 (int32_t * __a, int32x4x2_t __b, const int __c)
+   __builtin_neon_vst2_lanev4si ((__builtin_neon_si *) __a, __bu.__o, __c);
+ }
+ 
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++__extension__ static __inline void __attribute__ ((__always_inline__))
++vst2q_lane_f16 (float16_t * __a, float16x8x2_t __b, const int __c)
++{
++  union { float16x8x2_t __i; __builtin_neon_oi __o; } __bu = { __b };
++  __builtin_neon_vst2_lanev8hf (__a, __bu.__o, __c);
++}
++#endif
++
+ __extension__ static __inline void __attribute__ ((__always_inline__))
+ vst2q_lane_f32 (float32_t * __a, float32x4x2_t __b, const int __c)
+ {
+@@ -10051,6 +10355,16 @@ vld3_s32 (const int32_t * __a)
+   return __rv.__i;
+ }
+ 
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++__extension__ static __inline float16x4x3_t __attribute__ ((__always_inline__))
++vld3_f16 (const float16_t * __a)
++{
++  union { float16x4x3_t __i; __builtin_neon_ei __o; } __rv;
++  __rv.__o = __builtin_neon_vld3v4hf (__a);
++  return __rv.__i;
++}
++#endif
++
+ __extension__ static __inline float32x2x3_t __attribute__ ((__always_inline__))
+ vld3_f32 (const float32_t * __a)
+ {
+@@ -10149,6 +10463,16 @@ vld3q_s32 (const int32_t * __a)
+   return __rv.__i;
+ }
+ 
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++__extension__ static __inline float16x8x3_t __attribute__ ((__always_inline__))
++vld3q_f16 (const float16_t * __a)
++{
++  union { float16x8x3_t __i; __builtin_neon_ci __o; } __rv;
++  __rv.__o = __builtin_neon_vld3v8hf (__a);
++  return __rv.__i;
++}
++#endif
++
+ __extension__ static __inline float32x4x3_t __attribute__ ((__always_inline__))
+ vld3q_f32 (const float32_t * __a)
+ {
+@@ -10224,6 +10548,17 @@ vld3_lane_s32 (const int32_t * __a, int32x2x3_t __b, const int __c)
+   return __rv.__i;
+ }
+ 
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++__extension__ static __inline float16x4x3_t __attribute__ ((__always_inline__))
++vld3_lane_f16 (const float16_t * __a, float16x4x3_t __b, const int __c)
++{
++  union { float16x4x3_t __i; __builtin_neon_ei __o; } __bu = { __b };
++  union { float16x4x3_t __i; __builtin_neon_ei __o; } __rv;
++  __rv.__o = __builtin_neon_vld3_lanev4hf (__a, __bu.__o, __c);
++  return __rv.__i;
++}
++#endif
++
+ __extension__ static __inline float32x2x3_t __attribute__ ((__always_inline__))
+ vld3_lane_f32 (const float32_t * __a, float32x2x3_t __b, const int __c)
+ {
+@@ -10296,6 +10631,17 @@ vld3q_lane_s32 (const int32_t * __a, int32x4x3_t __b, const int __c)
+   return __rv.__i;
+ }
+ 
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++__extension__ static __inline float16x8x3_t __attribute__ ((__always_inline__))
++vld3q_lane_f16 (const float16_t * __a, float16x8x3_t __b, const int __c)
++{
++  union { float16x8x3_t __i; __builtin_neon_ci __o; } __bu = { __b };
++  union { float16x8x3_t __i; __builtin_neon_ci __o; } __rv;
++  __rv.__o = __builtin_neon_vld3_lanev8hf (__a, __bu.__o, __c);
++  return __rv.__i;
++}
++#endif
++
+ __extension__ static __inline float32x4x3_t __attribute__ ((__always_inline__))
+ vld3q_lane_f32 (const float32_t * __a, float32x4x3_t __b, const int __c)
+ {
+@@ -10356,6 +10702,16 @@ vld3_dup_s32 (const int32_t * __a)
+   return __rv.__i;
+ }
+ 
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++__extension__ static __inline float16x4x3_t __attribute__ ((__always_inline__))
++vld3_dup_f16 (const float16_t * __a)
++{
++  union { float16x4x3_t __i; __builtin_neon_ei __o; } __rv;
++  __rv.__o = __builtin_neon_vld3_dupv4hf (__a);
++  return __rv.__i;
++}
++#endif
++
+ __extension__ static __inline float32x2x3_t __attribute__ ((__always_inline__))
+ vld3_dup_f32 (const float32_t * __a)
+ {
+@@ -10451,6 +10807,15 @@ vst3_s32 (int32_t * __a, int32x2x3_t __b)
+   __builtin_neon_vst3v2si ((__builtin_neon_si *) __a, __bu.__o);
+ }
+ 
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++__extension__ static __inline void __attribute__ ((__always_inline__))
++vst3_f16 (float16_t * __a, float16x4x3_t __b)
++{
++  union { float16x4x3_t __i; __builtin_neon_ei __o; } __bu = { __b };
++  __builtin_neon_vst3v4hf (__a, __bu.__o);
++}
++#endif
++
+ __extension__ static __inline void __attribute__ ((__always_inline__))
+ vst3_f32 (float32_t * __a, float32x2x3_t __b)
+ {
+@@ -10537,6 +10902,15 @@ vst3q_s32 (int32_t * __a, int32x4x3_t __b)
+   __builtin_neon_vst3v4si ((__builtin_neon_si *) __a, __bu.__o);
+ }
+ 
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++__extension__ static __inline void __attribute__ ((__always_inline__))
++vst3q_f16 (float16_t * __a, float16x8x3_t __b)
++{
++  union { float16x8x3_t __i; __builtin_neon_ci __o; } __bu = { __b };
++  __builtin_neon_vst3v8hf (__a, __bu.__o);
++}
++#endif
++
+ __extension__ static __inline void __attribute__ ((__always_inline__))
+ vst3q_f32 (float32_t * __a, float32x4x3_t __b)
+ {
+@@ -10600,6 +10974,15 @@ vst3_lane_s32 (int32_t * __a, int32x2x3_t __b, const int __c)
+   __builtin_neon_vst3_lanev2si ((__builtin_neon_si *) __a, __bu.__o, __c);
+ }
+ 
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++__extension__ static __inline void __attribute__ ((__always_inline__))
++vst3_lane_f16 (float16_t * __a, float16x4x3_t __b, const int __c)
++{
++  union { float16x4x3_t __i; __builtin_neon_ei __o; } __bu = { __b };
++  __builtin_neon_vst3_lanev4hf (__a, __bu.__o, __c);
++}
++#endif
++
+ __extension__ static __inline void __attribute__ ((__always_inline__))
+ vst3_lane_f32 (float32_t * __a, float32x2x3_t __b, const int __c)
+ {
+@@ -10656,6 +11039,15 @@ vst3q_lane_s32 (int32_t * __a, int32x4x3_t __b, const int __c)
+   __builtin_neon_vst3_lanev4si ((__builtin_neon_si *) __a, __bu.__o, __c);
+ }
+ 
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++__extension__ static __inline void __attribute__ ((__always_inline__))
++vst3q_lane_f16 (float16_t * __a, float16x8x3_t __b, const int __c)
++{
++  union { float16x8x3_t __i; __builtin_neon_ci __o; } __bu = { __b };
++  __builtin_neon_vst3_lanev8hf (__a, __bu.__o, __c);
++}
++#endif
++
+ __extension__ static __inline void __attribute__ ((__always_inline__))
+ vst3q_lane_f32 (float32_t * __a, float32x4x3_t __b, const int __c)
+ {
+@@ -10708,6 +11100,16 @@ vld4_s32 (const int32_t * __a)
+   return __rv.__i;
+ }
+ 
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++__extension__ static __inline float16x4x4_t __attribute__ ((__always_inline__))
++vld4_f16 (const float16_t * __a)
++{
++  union { float16x4x4_t __i; __builtin_neon_oi __o; } __rv;
++  __rv.__o = __builtin_neon_vld4v4hf (__a);
++  return __rv.__i;
++}
++#endif
++
+ __extension__ static __inline float32x2x4_t __attribute__ ((__always_inline__))
+ vld4_f32 (const float32_t * __a)
+ {
+@@ -10806,6 +11208,16 @@ vld4q_s32 (const int32_t * __a)
+   return __rv.__i;
+ }
+ 
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++__extension__ static __inline float16x8x4_t __attribute__ ((__always_inline__))
++vld4q_f16 (const float16_t * __a)
++{
++  union { float16x8x4_t __i; __builtin_neon_xi __o; } __rv;
++  __rv.__o = __builtin_neon_vld4v8hf (__a);
++  return __rv.__i;
++}
++#endif
++
+ __extension__ static __inline float32x4x4_t __attribute__ ((__always_inline__))
+ vld4q_f32 (const float32_t * __a)
+ {
+@@ -10881,6 +11293,18 @@ vld4_lane_s32 (const int32_t * __a, int32x2x4_t __b, const int __c)
+   return __rv.__i;
+ }
+ 
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++__extension__ static __inline float16x4x4_t __attribute__ ((__always_inline__))
++vld4_lane_f16 (const float16_t * __a, float16x4x4_t __b, const int __c)
++{
++  union { float16x4x4_t __i; __builtin_neon_oi __o; } __bu = { __b };
++  union { float16x4x4_t __i; __builtin_neon_oi __o; } __rv;
++  __rv.__o = __builtin_neon_vld4_lanev4hf (__a,
++					   __bu.__o, __c);
++  return __rv.__i;
++}
++#endif
++
+ __extension__ static __inline float32x2x4_t __attribute__ ((__always_inline__))
+ vld4_lane_f32 (const float32_t * __a, float32x2x4_t __b, const int __c)
+ {
+@@ -10953,6 +11377,18 @@ vld4q_lane_s32 (const int32_t * __a, int32x4x4_t __b, const int __c)
+   return __rv.__i;
+ }
+ 
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++__extension__ static __inline float16x8x4_t __attribute__ ((__always_inline__))
++vld4q_lane_f16 (const float16_t * __a, float16x8x4_t __b, const int __c)
++{
++  union { float16x8x4_t __i; __builtin_neon_xi __o; } __bu = { __b };
++  union { float16x8x4_t __i; __builtin_neon_xi __o; } __rv;
++  __rv.__o = __builtin_neon_vld4_lanev8hf (__a,
++					   __bu.__o, __c);
++  return __rv.__i;
++}
++#endif
++
+ __extension__ static __inline float32x4x4_t __attribute__ ((__always_inline__))
+ vld4q_lane_f32 (const float32_t * __a, float32x4x4_t __b, const int __c)
+ {
+@@ -11013,6 +11449,16 @@ vld4_dup_s32 (const int32_t * __a)
+   return __rv.__i;
+ }
+ 
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++__extension__ static __inline float16x4x4_t __attribute__ ((__always_inline__))
++vld4_dup_f16 (const float16_t * __a)
++{
++  union { float16x4x4_t __i; __builtin_neon_oi __o; } __rv;
++  __rv.__o = __builtin_neon_vld4_dupv4hf (__a);
++  return __rv.__i;
++}
++#endif
++
+ __extension__ static __inline float32x2x4_t __attribute__ ((__always_inline__))
+ vld4_dup_f32 (const float32_t * __a)
+ {
+@@ -11108,6 +11554,15 @@ vst4_s32 (int32_t * __a, int32x2x4_t __b)
+   __builtin_neon_vst4v2si ((__builtin_neon_si *) __a, __bu.__o);
+ }
+ 
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++__extension__ static __inline void __attribute__ ((__always_inline__))
++vst4_f16 (float16_t * __a, float16x4x4_t __b)
++{
++  union { float16x4x4_t __i; __builtin_neon_oi __o; } __bu = { __b };
++  __builtin_neon_vst4v4hf (__a, __bu.__o);
++}
++#endif
++
+ __extension__ static __inline void __attribute__ ((__always_inline__))
+ vst4_f32 (float32_t * __a, float32x2x4_t __b)
+ {
+@@ -11194,6 +11649,15 @@ vst4q_s32 (int32_t * __a, int32x4x4_t __b)
+   __builtin_neon_vst4v4si ((__builtin_neon_si *) __a, __bu.__o);
+ }
+ 
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++__extension__ static __inline void __attribute__ ((__always_inline__))
++vst4q_f16 (float16_t * __a, float16x8x4_t __b)
++{
++  union { float16x8x4_t __i; __builtin_neon_xi __o; } __bu = { __b };
++  __builtin_neon_vst4v8hf (__a, __bu.__o);
++}
++#endif
++
+ __extension__ static __inline void __attribute__ ((__always_inline__))
+ vst4q_f32 (float32_t * __a, float32x4x4_t __b)
+ {
+@@ -11257,6 +11721,15 @@ vst4_lane_s32 (int32_t * __a, int32x2x4_t __b, const int __c)
+   __builtin_neon_vst4_lanev2si ((__builtin_neon_si *) __a, __bu.__o, __c);
+ }
+ 
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++__extension__ static __inline void __attribute__ ((__always_inline__))
++vst4_lane_f16 (float16_t * __a, float16x4x4_t __b, const int __c)
++{
++  union { float16x4x4_t __i; __builtin_neon_oi __o; } __bu = { __b };
++  __builtin_neon_vst4_lanev4hf (__a, __bu.__o, __c);
++}
++#endif
++
+ __extension__ static __inline void __attribute__ ((__always_inline__))
+ vst4_lane_f32 (float32_t * __a, float32x2x4_t __b, const int __c)
+ {
+@@ -11313,6 +11786,15 @@ vst4q_lane_s32 (int32_t * __a, int32x4x4_t __b, const int __c)
+   __builtin_neon_vst4_lanev4si ((__builtin_neon_si *) __a, __bu.__o, __c);
+ }
+ 
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++__extension__ static __inline void __attribute__ ((__always_inline__))
++vst4q_lane_f16 (float16_t * __a, float16x8x4_t __b, const int __c)
++{
++  union { float16x8x4_t __i; __builtin_neon_xi __o; } __bu = { __b };
++  __builtin_neon_vst4_lanev8hf (__a, __bu.__o, __c);
++}
++#endif
++
+ __extension__ static __inline void __attribute__ ((__always_inline__))
+ vst4q_lane_f32 (float32_t * __a, float32x4x4_t __b, const int __c)
+ {
+@@ -11827,6 +12309,14 @@ vreinterpret_p8_p16 (poly16x4_t __a)
+   return (poly8x8_t)__builtin_neon_vreinterpretv8qiv4hi ((int16x4_t) __a);
+ }
+ 
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++__extension__ static __inline poly8x8_t __attribute__ ((__always_inline__))
++vreinterpret_p8_f16 (float16x4_t __a)
++{
++  return (poly8x8_t) __a;
++}
++#endif
++
+ __extension__ static __inline poly8x8_t __attribute__ ((__always_inline__))
+ vreinterpret_p8_f32 (float32x2_t __a)
+ {
+@@ -11895,6 +12385,14 @@ vreinterpret_p16_p8 (poly8x8_t __a)
+   return (poly16x4_t)__builtin_neon_vreinterpretv4hiv8qi ((int8x8_t) __a);
+ }
+ 
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++__extension__ static __inline poly16x4_t __attribute__ ((__always_inline__))
++vreinterpret_p16_f16 (float16x4_t __a)
++{
++  return (poly16x4_t) __a;
++}
++#endif
++
+ __extension__ static __inline poly16x4_t __attribute__ ((__always_inline__))
+ vreinterpret_p16_f32 (float32x2_t __a)
+ {
+@@ -11957,6 +12455,104 @@ vreinterpret_p16_u32 (uint32x2_t __a)
+   return (poly16x4_t)__builtin_neon_vreinterpretv4hiv2si ((int32x2_t) __a);
+ }
+ 
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++__extension__ static __inline float16x4_t __attribute__ ((__always_inline__))
++vreinterpret_f16_p8 (poly8x8_t __a)
++{
++  return (float16x4_t) __a;
++}
++#endif
++
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++__extension__ static __inline float16x4_t __attribute__ ((__always_inline__))
++vreinterpret_f16_p16 (poly16x4_t __a)
++{
++  return (float16x4_t) __a;
++}
++#endif
++
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++__extension__ static __inline float16x4_t __attribute__ ((__always_inline__))
++vreinterpret_f16_f32 (float32x2_t __a)
++{
++  return (float16x4_t) __a;
++}
++#endif
++
++#ifdef __ARM_FEATURE_CRYPTO
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++__extension__ static __inline float16x4_t __attribute__ ((__always_inline__))
++vreinterpret_f16_p64 (poly64x1_t __a)
++{
++  return (float16x4_t) __a;
++}
++#endif
++#endif
++
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++__extension__ static __inline float16x4_t __attribute__ ((__always_inline__))
++vreinterpret_f16_s64 (int64x1_t __a)
++{
++  return (float16x4_t) __a;
++}
++#endif
++
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++__extension__ static __inline float16x4_t __attribute__ ((__always_inline__))
++vreinterpret_f16_u64 (uint64x1_t __a)
++{
++  return (float16x4_t) __a;
++}
++#endif
++
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++__extension__ static __inline float16x4_t __attribute__ ((__always_inline__))
++vreinterpret_f16_s8 (int8x8_t __a)
++{
++  return (float16x4_t) __a;
++}
++#endif
++
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++__extension__ static __inline float16x4_t __attribute__ ((__always_inline__))
++vreinterpret_f16_s16 (int16x4_t __a)
++{
++  return (float16x4_t) __a;
++}
++#endif
++
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++__extension__ static __inline float16x4_t __attribute__ ((__always_inline__))
++vreinterpret_f16_s32 (int32x2_t __a)
++{
++  return (float16x4_t) __a;
++}
++#endif
++
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++__extension__ static __inline float16x4_t __attribute__ ((__always_inline__))
++vreinterpret_f16_u8 (uint8x8_t __a)
++{
++  return (float16x4_t) __a;
++}
++#endif
++
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++__extension__ static __inline float16x4_t __attribute__ ((__always_inline__))
++vreinterpret_f16_u16 (uint16x4_t __a)
++{
++  return (float16x4_t) __a;
++}
++#endif
++
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++__extension__ static __inline float16x4_t __attribute__ ((__always_inline__))
++vreinterpret_f16_u32 (uint32x2_t __a)
++{
++  return (float16x4_t) __a;
++}
++#endif
++
+ __extension__ static __inline float32x2_t __attribute__ ((__always_inline__))
+ vreinterpret_f32_p8 (poly8x8_t __a)
+ {
+@@ -11969,6 +12565,14 @@ vreinterpret_f32_p16 (poly16x4_t __a)
+   return (float32x2_t)__builtin_neon_vreinterpretv2sfv4hi ((int16x4_t) __a);
+ }
+ 
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++__extension__ static __inline float32x2_t __attribute__ ((__always_inline__))
++vreinterpret_f32_f16 (float16x4_t __a)
++{
++  return (float32x2_t) __a;
++}
++#endif
++
+ #ifdef __ARM_FEATURE_CRYPTO
+ __extension__ static __inline float32x2_t __attribute__ ((__always_inline__))
+ vreinterpret_f32_p64 (poly64x1_t __a)
+@@ -12041,6 +12645,17 @@ vreinterpret_p64_p16 (poly16x4_t __a)
+ }
+ 
+ #endif
++
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++#ifdef __ARM_FEATURE_CRYPTO
++__extension__ static __inline poly64x1_t __attribute__ ((__always_inline__))
++vreinterpret_p64_f16 (float16x4_t __a)
++{
++  return (poly64x1_t) __a;
++}
++#endif
++#endif
++
+ #ifdef __ARM_FEATURE_CRYPTO
+ __extension__ static __inline poly64x1_t __attribute__ ((__always_inline__))
+ vreinterpret_p64_f32 (float32x2_t __a)
+@@ -12125,6 +12740,14 @@ vreinterpret_s64_p16 (poly16x4_t __a)
+   return (int64x1_t)__builtin_neon_vreinterpretdiv4hi ((int16x4_t) __a);
+ }
+ 
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++__extension__ static __inline int64x1_t __attribute__ ((__always_inline__))
++vreinterpret_s64_f16 (float16x4_t __a)
++{
++  return (int64x1_t) __a;
++}
++#endif
++
+ __extension__ static __inline int64x1_t __attribute__ ((__always_inline__))
+ vreinterpret_s64_f32 (float32x2_t __a)
+ {
+@@ -12193,6 +12816,14 @@ vreinterpret_u64_p16 (poly16x4_t __a)
+   return (uint64x1_t)__builtin_neon_vreinterpretdiv4hi ((int16x4_t) __a);
+ }
+ 
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++__extension__ static __inline uint64x1_t __attribute__ ((__always_inline__))
++vreinterpret_u64_f16 (float16x4_t __a)
++{
++  return (uint64x1_t) __a;
++}
++#endif
++
+ __extension__ static __inline uint64x1_t __attribute__ ((__always_inline__))
+ vreinterpret_u64_f32 (float32x2_t __a)
+ {
+@@ -12261,6 +12892,14 @@ vreinterpret_s8_p16 (poly16x4_t __a)
+   return (int8x8_t)__builtin_neon_vreinterpretv8qiv4hi ((int16x4_t) __a);
+ }
+ 
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++__extension__ static __inline int8x8_t __attribute__ ((__always_inline__))
++vreinterpret_s8_f16 (float16x4_t __a)
++{
++  return (int8x8_t) __a;
++}
++#endif
++
+ __extension__ static __inline int8x8_t __attribute__ ((__always_inline__))
+ vreinterpret_s8_f32 (float32x2_t __a)
+ {
+@@ -12329,6 +12968,14 @@ vreinterpret_s16_p16 (poly16x4_t __a)
+   return (int16x4_t)__builtin_neon_vreinterpretv4hiv4hi ((int16x4_t) __a);
+ }
+ 
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++__extension__ static __inline int16x4_t __attribute__ ((__always_inline__))
++vreinterpret_s16_f16 (float16x4_t __a)
++{
++  return (int16x4_t) __a;
++}
++#endif
++
+ __extension__ static __inline int16x4_t __attribute__ ((__always_inline__))
+ vreinterpret_s16_f32 (float32x2_t __a)
+ {
+@@ -12397,6 +13044,14 @@ vreinterpret_s32_p16 (poly16x4_t __a)
+   return (int32x2_t)__builtin_neon_vreinterpretv2siv4hi ((int16x4_t) __a);
+ }
+ 
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++__extension__ static __inline int32x2_t __attribute__ ((__always_inline__))
++vreinterpret_s32_f16 (float16x4_t __a)
++{
++  return (int32x2_t) __a;
++}
++#endif
++
+ __extension__ static __inline int32x2_t __attribute__ ((__always_inline__))
+ vreinterpret_s32_f32 (float32x2_t __a)
+ {
+@@ -12465,6 +13120,14 @@ vreinterpret_u8_p16 (poly16x4_t __a)
+   return (uint8x8_t)__builtin_neon_vreinterpretv8qiv4hi ((int16x4_t) __a);
+ }
+ 
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++__extension__ static __inline uint8x8_t __attribute__ ((__always_inline__))
++vreinterpret_u8_f16 (float16x4_t __a)
++{
++  return (uint8x8_t) __a;
++}
++#endif
++
+ __extension__ static __inline uint8x8_t __attribute__ ((__always_inline__))
+ vreinterpret_u8_f32 (float32x2_t __a)
+ {
+@@ -12533,6 +13196,14 @@ vreinterpret_u16_p16 (poly16x4_t __a)
+   return (uint16x4_t)__builtin_neon_vreinterpretv4hiv4hi ((int16x4_t) __a);
+ }
+ 
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++__extension__ static __inline uint16x4_t __attribute__ ((__always_inline__))
++vreinterpret_u16_f16 (float16x4_t __a)
++{
++  return (uint16x4_t) __a;
++}
++#endif
++
+ __extension__ static __inline uint16x4_t __attribute__ ((__always_inline__))
+ vreinterpret_u16_f32 (float32x2_t __a)
+ {
+@@ -12601,6 +13272,14 @@ vreinterpret_u32_p16 (poly16x4_t __a)
+   return (uint32x2_t)__builtin_neon_vreinterpretv2siv4hi ((int16x4_t) __a);
+ }
+ 
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++__extension__ static __inline uint32x2_t __attribute__ ((__always_inline__))
++vreinterpret_u32_f16 (float16x4_t __a)
++{
++  return (uint32x2_t) __a;
++}
++#endif
++
+ __extension__ static __inline uint32x2_t __attribute__ ((__always_inline__))
+ vreinterpret_u32_f32 (float32x2_t __a)
+ {
+@@ -12663,6 +13342,14 @@ vreinterpretq_p8_p16 (poly16x8_t __a)
+   return (poly8x16_t)__builtin_neon_vreinterpretv16qiv8hi ((int16x8_t) __a);
+ }
+ 
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++__extension__ static __inline poly8x16_t __attribute__ ((__always_inline__))
++vreinterpretq_p8_f16 (float16x8_t __a)
++{
++  return (poly8x16_t) __a;
++}
++#endif
++
+ __extension__ static __inline poly8x16_t __attribute__ ((__always_inline__))
+ vreinterpretq_p8_f32 (float32x4_t __a)
+ {
+@@ -12739,6 +13426,14 @@ vreinterpretq_p16_p8 (poly8x16_t __a)
+   return (poly16x8_t)__builtin_neon_vreinterpretv8hiv16qi ((int8x16_t) __a);
+ }
+ 
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++__extension__ static __inline poly16x8_t __attribute__ ((__always_inline__))
++vreinterpretq_p16_f16 (float16x8_t __a)
++{
++  return (poly16x8_t) __a;
++}
++#endif
++
+ __extension__ static __inline poly16x8_t __attribute__ ((__always_inline__))
+ vreinterpretq_p16_f32 (float32x4_t __a)
+ {
+@@ -12809,6 +13504,114 @@ vreinterpretq_p16_u32 (uint32x4_t __a)
+   return (poly16x8_t)__builtin_neon_vreinterpretv8hiv4si ((int32x4_t) __a);
+ }
+ 
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++__extension__ static __inline float16x8_t __attribute__ ((__always_inline__))
++vreinterpretq_f16_p8 (poly8x16_t __a)
++{
++  return (float16x8_t) __a;
++}
++#endif
++
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++__extension__ static __inline float16x8_t __attribute__ ((__always_inline__))
++vreinterpretq_f16_p16 (poly16x8_t __a)
++{
++  return (float16x8_t) __a;
++}
++#endif
++
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++__extension__ static __inline float16x8_t __attribute__ ((__always_inline__))
++vreinterpretq_f16_f32 (float32x4_t __a)
++{
++  return (float16x8_t) __a;
++}
++#endif
++
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++#ifdef __ARM_FEATURE_CRYPTO
++__extension__ static __inline float16x8_t __attribute__ ((__always_inline__))
++vreinterpretq_f16_p64 (poly64x2_t __a)
++{
++  return (float16x8_t) __a;
++}
++#endif
++#endif
++
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++#ifdef __ARM_FEATURE_CRYPTO
++__extension__ static __inline float16x8_t __attribute__ ((__always_inline__))
++vreinterpretq_f16_p128 (poly128_t __a)
++{
++  return (float16x8_t) __a;
++}
++#endif
++#endif
++
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++__extension__ static __inline float16x8_t __attribute__ ((__always_inline__))
++vreinterpretq_f16_s64 (int64x2_t __a)
++{
++  return (float16x8_t) __a;
++}
++#endif
++
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++__extension__ static __inline float16x8_t __attribute__ ((__always_inline__))
++vreinterpretq_f16_u64 (uint64x2_t __a)
++{
++  return (float16x8_t) __a;
++}
++#endif
++
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++__extension__ static __inline float16x8_t __attribute__ ((__always_inline__))
++vreinterpretq_f16_s8 (int8x16_t __a)
++{
++  return (float16x8_t) __a;
++}
++#endif
++
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++__extension__ static __inline float16x8_t __attribute__ ((__always_inline__))
++vreinterpretq_f16_s16 (int16x8_t __a)
++{
++  return (float16x8_t) __a;
++}
++#endif
++
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++__extension__ static __inline float16x8_t __attribute__ ((__always_inline__))
++vreinterpretq_f16_s32 (int32x4_t __a)
++{
++  return (float16x8_t) __a;
++}
++#endif
++
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++__extension__ static __inline float16x8_t __attribute__ ((__always_inline__))
++vreinterpretq_f16_u8 (uint8x16_t __a)
++{
++  return (float16x8_t) __a;
++}
++#endif
++
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++__extension__ static __inline float16x8_t __attribute__ ((__always_inline__))
++vreinterpretq_f16_u16 (uint16x8_t __a)
++{
++  return (float16x8_t) __a;
++}
++#endif
++
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++__extension__ static __inline float16x8_t __attribute__ ((__always_inline__))
++vreinterpretq_f16_u32 (uint32x4_t __a)
++{
++  return (float16x8_t) __a;
++}
++#endif
++
+ __extension__ static __inline float32x4_t __attribute__ ((__always_inline__))
+ vreinterpretq_f32_p8 (poly8x16_t __a)
+ {
+@@ -12821,6 +13624,14 @@ vreinterpretq_f32_p16 (poly16x8_t __a)
+   return (float32x4_t)__builtin_neon_vreinterpretv4sfv8hi ((int16x8_t) __a);
+ }
+ 
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++__extension__ static __inline float32x4_t __attribute__ ((__always_inline__))
++vreinterpretq_f32_f16 (float16x8_t __a)
++{
++  return (float32x4_t) __a;
++}
++#endif
++
+ #ifdef __ARM_FEATURE_CRYPTO
+ __extension__ static __inline float32x4_t __attribute__ ((__always_inline__))
+ vreinterpretq_f32_p64 (poly64x2_t __a)
+@@ -12901,6 +13712,17 @@ vreinterpretq_p64_p16 (poly16x8_t __a)
+ }
+ 
+ #endif
++
++#ifdef __ARM_FEATURE_CRYPTO
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++__extension__ static __inline poly64x2_t __attribute__ ((__always_inline__))
++vreinterpretq_p64_f16 (float16x8_t __a)
++{
++  return (poly64x2_t) __a;
++}
++#endif
++#endif
++
+ #ifdef __ARM_FEATURE_CRYPTO
+ __extension__ static __inline poly64x2_t __attribute__ ((__always_inline__))
+ vreinterpretq_p64_f32 (float32x4_t __a)
+@@ -12995,8 +13817,18 @@ vreinterpretq_p128_p16 (poly16x8_t __a)
+ {
+   return (poly128_t)__builtin_neon_vreinterprettiv8hi ((int16x8_t) __a);
+ }
++#endif
+ 
++#ifdef __ARM_FEATURE_CRYPTO
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++__extension__ static __inline poly128_t __attribute__ ((__always_inline__))
++vreinterpretq_p128_f16 (float16x8_t __a)
++{
++  return (poly128_t) __a;
++}
+ #endif
++#endif
++
+ #ifdef __ARM_FEATURE_CRYPTO
+ __extension__ static __inline poly128_t __attribute__ ((__always_inline__))
+ vreinterpretq_p128_f32 (float32x4_t __a)
+@@ -13089,6 +13921,14 @@ vreinterpretq_s64_p16 (poly16x8_t __a)
+   return (int64x2_t)__builtin_neon_vreinterpretv2div8hi ((int16x8_t) __a);
+ }
+ 
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++__extension__ static __inline int64x2_t __attribute__ ((__always_inline__))
++vreinterpretq_s64_f16 (float16x8_t __a)
++{
++  return (int64x2_t) __a;
++}
++#endif
++
+ __extension__ static __inline int64x2_t __attribute__ ((__always_inline__))
+ vreinterpretq_s64_f32 (float32x4_t __a)
+ {
+@@ -13165,6 +14005,14 @@ vreinterpretq_u64_p16 (poly16x8_t __a)
+   return (uint64x2_t)__builtin_neon_vreinterpretv2div8hi ((int16x8_t) __a);
+ }
+ 
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++__extension__ static __inline uint64x2_t __attribute__ ((__always_inline__))
++vreinterpretq_u64_f16 (float16x8_t __a)
++{
++  return (uint64x2_t) __a;
++}
++#endif
++
+ __extension__ static __inline uint64x2_t __attribute__ ((__always_inline__))
+ vreinterpretq_u64_f32 (float32x4_t __a)
+ {
+@@ -13241,6 +14089,14 @@ vreinterpretq_s8_p16 (poly16x8_t __a)
+   return (int8x16_t)__builtin_neon_vreinterpretv16qiv8hi ((int16x8_t) __a);
+ }
+ 
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++__extension__ static __inline int8x16_t __attribute__ ((__always_inline__))
++vreinterpretq_s8_f16 (float16x8_t __a)
++{
++  return (int8x16_t) __a;
++}
++#endif
++
+ __extension__ static __inline int8x16_t __attribute__ ((__always_inline__))
+ vreinterpretq_s8_f32 (float32x4_t __a)
+ {
+@@ -13317,6 +14173,14 @@ vreinterpretq_s16_p16 (poly16x8_t __a)
+   return (int16x8_t)__builtin_neon_vreinterpretv8hiv8hi ((int16x8_t) __a);
+ }
+ 
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++__extension__ static __inline int16x8_t __attribute__ ((__always_inline__))
++vreinterpretq_s16_f16 (float16x8_t __a)
++{
++  return (int16x8_t) __a;
++}
++#endif
++
+ __extension__ static __inline int16x8_t __attribute__ ((__always_inline__))
+ vreinterpretq_s16_f32 (float32x4_t __a)
+ {
+@@ -13393,6 +14257,14 @@ vreinterpretq_s32_p16 (poly16x8_t __a)
+   return (int32x4_t)__builtin_neon_vreinterpretv4siv8hi ((int16x8_t) __a);
+ }
+ 
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++__extension__ static __inline int32x4_t __attribute__ ((__always_inline__))
++vreinterpretq_s32_f16 (float16x8_t __a)
++{
++  return (int32x4_t)__builtin_neon_vreinterpretv4siv8hi ((int16x8_t) __a);
++}
++#endif
++
+ __extension__ static __inline int32x4_t __attribute__ ((__always_inline__))
+ vreinterpretq_s32_f32 (float32x4_t __a)
+ {
+@@ -13469,6 +14341,14 @@ vreinterpretq_u8_p16 (poly16x8_t __a)
+   return (uint8x16_t)__builtin_neon_vreinterpretv16qiv8hi ((int16x8_t) __a);
+ }
+ 
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++__extension__ static __inline uint8x16_t __attribute__ ((__always_inline__))
++vreinterpretq_u8_f16 (float16x8_t __a)
++{
++  return (uint8x16_t) __a;
++}
++#endif
++
+ __extension__ static __inline uint8x16_t __attribute__ ((__always_inline__))
+ vreinterpretq_u8_f32 (float32x4_t __a)
+ {
+@@ -13545,6 +14425,14 @@ vreinterpretq_u16_p16 (poly16x8_t __a)
+   return (uint16x8_t)__builtin_neon_vreinterpretv8hiv8hi ((int16x8_t) __a);
+ }
+ 
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++__extension__ static __inline uint16x8_t __attribute__ ((__always_inline__))
++vreinterpretq_u16_f16 (float16x8_t __a)
++{
++  return (uint16x8_t) __a;
++}
++#endif
++
+ __extension__ static __inline uint16x8_t __attribute__ ((__always_inline__))
+ vreinterpretq_u16_f32 (float32x4_t __a)
+ {
+@@ -13621,6 +14509,14 @@ vreinterpretq_u32_p16 (poly16x8_t __a)
+   return (uint32x4_t)__builtin_neon_vreinterpretv4siv8hi ((int16x8_t) __a);
+ }
+ 
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++__extension__ static __inline uint32x4_t __attribute__ ((__always_inline__))
++vreinterpretq_u32_f16 (float16x8_t __a)
++{
++  return (uint32x4_t) __a;
++}
++#endif
++
+ __extension__ static __inline uint32x4_t __attribute__ ((__always_inline__))
+ vreinterpretq_u32_f32 (float32x4_t __a)
+ {
+--- a/src/gcc/config/arm/arm_neon_builtins.def
++++ b/src/gcc/config/arm/arm_neon_builtins.def
+@@ -67,28 +67,28 @@ VAR8 (BINOP, vqshls, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di)
+ VAR8 (BINOP, vqshlu, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di)
+ VAR8 (BINOP, vqrshls, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di)
+ VAR8 (BINOP, vqrshlu, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di)
+-VAR8 (GETLANE, vshrs_n, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di)
+-VAR8 (GETLANE, vshru_n, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di)
+-VAR8 (GETLANE, vrshrs_n, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di)
+-VAR8 (GETLANE, vrshru_n, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di)
+-VAR3 (GETLANE, vshrn_n, v8hi, v4si, v2di)
+-VAR3 (GETLANE, vrshrn_n, v8hi, v4si, v2di)
+-VAR3 (GETLANE, vqshrns_n, v8hi, v4si, v2di)
+-VAR3 (GETLANE, vqshrnu_n, v8hi, v4si, v2di)
+-VAR3 (GETLANE, vqrshrns_n, v8hi, v4si, v2di)
+-VAR3 (GETLANE, vqrshrnu_n, v8hi, v4si, v2di)
+-VAR3 (GETLANE, vqshrun_n, v8hi, v4si, v2di)
+-VAR3 (GETLANE, vqrshrun_n, v8hi, v4si, v2di)
+-VAR8 (GETLANE, vshl_n, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di)
+-VAR8 (GETLANE, vqshl_s_n, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di)
+-VAR8 (GETLANE, vqshl_u_n, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di)
+-VAR8 (GETLANE, vqshlu_n, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di)
+-VAR3 (GETLANE, vshlls_n, v8qi, v4hi, v2si)
+-VAR3 (GETLANE, vshllu_n, v8qi, v4hi, v2si)
+-VAR8 (SETLANE, vsras_n, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di)
+-VAR8 (SETLANE, vsrau_n, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di)
+-VAR8 (SETLANE, vrsras_n, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di)
+-VAR8 (SETLANE, vrsrau_n, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di)
++VAR8 (BINOP_IMM, vshrs_n, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di)
++VAR8 (BINOP_IMM, vshru_n, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di)
++VAR8 (BINOP_IMM, vrshrs_n, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di)
++VAR8 (BINOP_IMM, vrshru_n, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di)
++VAR3 (BINOP_IMM, vshrn_n, v8hi, v4si, v2di)
++VAR3 (BINOP_IMM, vrshrn_n, v8hi, v4si, v2di)
++VAR3 (BINOP_IMM, vqshrns_n, v8hi, v4si, v2di)
++VAR3 (BINOP_IMM, vqshrnu_n, v8hi, v4si, v2di)
++VAR3 (BINOP_IMM, vqrshrns_n, v8hi, v4si, v2di)
++VAR3 (BINOP_IMM, vqrshrnu_n, v8hi, v4si, v2di)
++VAR3 (BINOP_IMM, vqshrun_n, v8hi, v4si, v2di)
++VAR3 (BINOP_IMM, vqrshrun_n, v8hi, v4si, v2di)
++VAR8 (BINOP_IMM, vshl_n, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di)
++VAR8 (BINOP_IMM, vqshl_s_n, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di)
++VAR8 (BINOP_IMM, vqshl_u_n, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di)
++VAR8 (BINOP_IMM, vqshlu_n, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di)
++VAR3 (BINOP_IMM, vshlls_n, v8qi, v4hi, v2si)
++VAR3 (BINOP_IMM, vshllu_n, v8qi, v4hi, v2si)
++VAR8 (TERNOP_IMM, vsras_n, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di)
++VAR8 (TERNOP_IMM, vsrau_n, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di)
++VAR8 (TERNOP_IMM, vrsras_n, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di)
++VAR8 (TERNOP_IMM, vrsrau_n, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di)
+ VAR2 (BINOP, vsub, v2sf, v4sf)
+ VAR3 (BINOP, vsubls, v8qi, v4hi, v2si)
+ VAR3 (BINOP, vsublu, v8qi, v4hi, v2si)
+@@ -140,8 +140,8 @@ VAR6 (BINOP, vpadals, v8qi, v4hi, v2si, v16qi, v8hi, v4si)
+ VAR6 (BINOP, vpadalu, v8qi, v4hi, v2si, v16qi, v8hi, v4si)
+ VAR2 (BINOP, vrecps, v2sf, v4sf)
+ VAR2 (BINOP, vrsqrts, v2sf, v4sf)
+-VAR8 (SETLANE, vsri_n, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di)
+-VAR8 (SETLANE, vsli_n, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di)
++VAR8 (TERNOP_IMM, vsri_n, v8qi, v4hi, v2si, di, v16qi, v8hi, v4si, v2di)
++VAR8 (TERNOP_IMM, 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)
+@@ -162,11 +162,11 @@ VAR10 (SETLANE, vset_lane,
+ VAR5 (UNOP, vcreate, v8qi, v4hi, v2si, v2sf, di)
+ VAR10 (UNOP, vdup_n,
+ 	 v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di)
+-VAR10 (BINOP, vdup_lane,
++VAR10 (GETLANE, vdup_lane,
+ 	 v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di)
+-VAR5 (COMBINE, vcombine, v8qi, v4hi, v2si, v2sf, di)
+-VAR5 (UNOP, vget_high, v16qi, v8hi, v4si, v4sf, v2di)
+-VAR5 (UNOP, vget_low, v16qi, v8hi, v4si, v4sf, v2di)
++VAR6 (COMBINE, vcombine, v8qi, v4hi, v4hf, v2si, v2sf, di)
++VAR6 (UNOP, vget_high, v16qi, v8hi, v8hf, v4si, v4sf, v2di)
++VAR6 (UNOP, vget_low, v16qi, v8hi, v8hf, v4si, v4sf, v2di)
+ VAR3 (UNOP, vmovn, v8hi, v4si, v2di)
+ VAR3 (UNOP, vqmovns, v8hi, v4si, v2di)
+ VAR3 (UNOP, vqmovnu, v8hi, v4si, v2di)
+@@ -174,23 +174,23 @@ VAR3 (UNOP, vqmovun, v8hi, v4si, v2di)
+ VAR3 (UNOP, vmovls, v8qi, v4hi, v2si)
+ VAR3 (UNOP, vmovlu, v8qi, v4hi, v2si)
+ VAR6 (SETLANE, vmul_lane, v4hi, v2si, v2sf, v8hi, v4si, v4sf)
+-VAR6 (LANEMAC, vmla_lane, v4hi, v2si, v2sf, v8hi, v4si, v4sf)
+-VAR2 (LANEMAC, vmlals_lane, v4hi, v2si)
+-VAR2 (LANEMAC, vmlalu_lane, v4hi, v2si)
+-VAR2 (LANEMAC, vqdmlal_lane, v4hi, v2si)
+-VAR6 (LANEMAC, vmls_lane, v4hi, v2si, v2sf, v8hi, v4si, v4sf)
+-VAR2 (LANEMAC, vmlsls_lane, v4hi, v2si)
+-VAR2 (LANEMAC, vmlslu_lane, v4hi, v2si)
+-VAR2 (LANEMAC, vqdmlsl_lane, v4hi, v2si)
++VAR6 (MAC_LANE, vmla_lane, v4hi, v2si, v2sf, v8hi, v4si, v4sf)
++VAR2 (MAC_LANE, vmlals_lane, v4hi, v2si)
++VAR2 (MAC_LANE, vmlalu_lane, v4hi, v2si)
++VAR2 (MAC_LANE, vqdmlal_lane, v4hi, v2si)
++VAR6 (MAC_LANE, vmls_lane, v4hi, v2si, v2sf, v8hi, v4si, v4sf)
++VAR2 (MAC_LANE, vmlsls_lane, v4hi, v2si)
++VAR2 (MAC_LANE, vmlslu_lane, v4hi, v2si)
++VAR2 (MAC_LANE, vqdmlsl_lane, v4hi, v2si)
+ VAR6 (BINOP, vmul_n, v4hi, v2si, v2sf, v8hi, v4si, v4sf)
+-VAR6 (LANEMAC, vmla_n, v4hi, v2si, v2sf, v8hi, v4si, v4sf)
+-VAR2 (LANEMAC, vmlals_n, v4hi, v2si)
+-VAR2 (LANEMAC, vmlalu_n, v4hi, v2si)
+-VAR2 (LANEMAC, vqdmlal_n, v4hi, v2si)
+-VAR6 (LANEMAC, vmls_n, v4hi, v2si, v2sf, v8hi, v4si, v4sf)
+-VAR2 (LANEMAC, vmlsls_n, v4hi, v2si)
+-VAR2 (LANEMAC, vmlslu_n, v4hi, v2si)
+-VAR2 (LANEMAC, vqdmlsl_n, v4hi, v2si)
++VAR6 (MAC_N, vmla_n, v4hi, v2si, v2sf, v8hi, v4si, v4sf)
++VAR2 (MAC_N, vmlals_n, v4hi, v2si)
++VAR2 (MAC_N, vmlalu_n, v4hi, v2si)
++VAR2 (MAC_N, vqdmlal_n, v4hi, v2si)
++VAR6 (MAC_N, vmls_n, v4hi, v2si, v2sf, v8hi, v4si, v4sf)
++VAR2 (MAC_N, vmlsls_n, v4hi, v2si)
++VAR2 (MAC_N, vmlslu_n, v4hi, v2si)
++VAR2 (MAC_N, vqdmlsl_n, v4hi, v2si)
+ VAR10 (SETLANE, vext,
+ 	 v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di)
+ VAR8 (UNOP, vrev64, v8qi, v4hi, v2si, v2sf, v16qi, v8hi, v4si, v4sf)
+@@ -242,40 +242,40 @@ VAR6 (UNOP, vreinterpretv4si, v16qi, v8hi, v4si, v4sf, v2di, ti)
+ VAR6 (UNOP, vreinterpretv4sf, v16qi, v8hi, v4si, v4sf, v2di, ti)
+ VAR6 (UNOP, vreinterpretv2di, v16qi, v8hi, v4si, v4sf, v2di, ti)
+ VAR6 (UNOP, vreinterpretti, v16qi, v8hi, v4si, v4sf, v2di, ti)
+-VAR10 (LOAD1, vld1,
+-        v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di)
++VAR12 (LOAD1, vld1,
++        v8qi, v4hi, v4hf, v2si, v2sf, di, v16qi, v8hi, v8hf, 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 (LOAD1, vld2,
+-	v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf)
+-VAR7 (LOAD1LANE, vld2_lane,
+-	v8qi, v4hi, v2si, v2sf, v8hi, v4si, v4sf)
+-VAR5 (LOAD1, vld2_dup, v8qi, v4hi, v2si, v2sf, di)
+-VAR9 (STORE1, vst2,
+-	v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf)
+-VAR7 (STORE1LANE, vst2_lane,
+-	v8qi, v4hi, v2si, v2sf, v8hi, v4si, v4sf)
+-VAR9 (LOAD1, vld3,
+-	v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf)
+-VAR7 (LOAD1LANE, vld3_lane,
+-	v8qi, v4hi, v2si, v2sf, v8hi, v4si, v4sf)
+-VAR5 (LOAD1, vld3_dup, v8qi, v4hi, v2si, v2sf, di)
+-VAR9 (STORE1, vst3,
+-	v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf)
+-VAR7 (STORE1LANE, vst3_lane,
+-	v8qi, v4hi, v2si, v2sf, v8hi, v4si, v4sf)
+-VAR9 (LOAD1, vld4,
+-	v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf)
+-VAR7 (LOAD1LANE, vld4_lane,
+-	v8qi, v4hi, v2si, v2sf, v8hi, v4si, v4sf)
+-VAR5 (LOAD1, vld4_dup, v8qi, v4hi, v2si, v2sf, di)
+-VAR9 (STORE1, vst4,
+-	v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf)
+-VAR7 (STORE1LANE, vst4_lane,
+-	v8qi, v4hi, v2si, v2sf, v8hi, v4si, v4sf)
++VAR12 (STORE1, vst1,
++	v8qi, v4hi, v4hf, v2si, v2sf, di, v16qi, v8hi, v8hf, v4si, v4sf, v2di)
++VAR12 (STORE1LANE, vst1_lane,
++	v8qi, v4hi, v4hf, v2si, v2sf, di, v16qi, v8hi, v8hf, v4si, v4sf, v2di)
++VAR11 (LOAD1, vld2,
++	v8qi, v4hi, v4hf, v2si, v2sf, di, v16qi, v8hi, v8hf, v4si, v4sf)
++VAR9 (LOAD1LANE, vld2_lane,
++	v8qi, v4hi, v4hf, v2si, v2sf, v8hi, v8hf, v4si, v4sf)
++VAR6 (LOAD1, vld2_dup, v8qi, v4hi, v4hf, v2si, v2sf, di)
++VAR11 (STORE1, vst2,
++	v8qi, v4hi, v4hf, v2si, v2sf, di, v16qi, v8hi, v8hf, v4si, v4sf)
++VAR9 (STORE1LANE, vst2_lane,
++	v8qi, v4hi, v4hf, v2si, v2sf, v8hi, v8hf, v4si, v4sf)
++VAR11 (LOAD1, vld3,
++	v8qi, v4hi, v4hf, v2si, v2sf, di, v16qi, v8hi, v8hf, v4si, v4sf)
++VAR9 (LOAD1LANE, vld3_lane,
++	v8qi, v4hi, v4hf, v2si, v2sf, v8hi, v8hf, v4si, v4sf)
++VAR6 (LOAD1, vld3_dup, v8qi, v4hi, v4hf, v2si, v2sf, di)
++VAR11 (STORE1, vst3,
++	v8qi, v4hi, v4hf, v2si, v2sf, di, v16qi, v8hi, v8hf, v4si, v4sf)
++VAR9 (STORE1LANE, vst3_lane,
++	v8qi, v4hi, v4hf, v2si, v2sf, v8hi, v8hf, v4si, v4sf)
++VAR11 (LOAD1, vld4,
++	v8qi, v4hi, v4hf, v2si, v2sf, di, v16qi, v8hi, v8hf, v4si, v4sf)
++VAR9 (LOAD1LANE, vld4_lane,
++	v8qi, v4hi, v4hf, v2si, v2sf, v8hi, v8hf, v4si, v4sf)
++VAR6 (LOAD1, vld4_dup, v8qi, v4hi, v4hf, v2si, v2sf, di)
++VAR11 (STORE1, vst4,
++	v8qi, v4hi, v4hf, v2si, v2sf, di, v16qi, v8hi, v8hf, v4si, v4sf)
++VAR9 (STORE1LANE, vst4_lane,
++	v8qi, v4hi, v4hf, v2si, v2sf, v8hi, v8hf, v4si, v4sf)
+--- a/src/gcc/config/arm/cortex-a53.md
++++ b/src/gcc/config/arm/cortex-a53.md
+@@ -325,7 +325,7 @@
+ 
+ (define_insn_reservation "cortex_a53_f_load_2reg" 5
+   (and (eq_attr "tune" "cortexa53")
+-       (eq_attr "type" "neon_load2_2reg_q"))
++       (eq_attr "type" "neon_ldp, neon_ldp_q, neon_load2_2reg_q"))
+   "(cortex_a53_slot_any+cortex_a53_ls)*2")
+ 
+ (define_insn_reservation "cortex_a53_f_loadq" 5
+@@ -360,7 +360,7 @@
+ ;; Crude Advanced SIMD approximation.
+ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+ 
+-(define_insn_reservation "cortex_53_advsimd" 4
++(define_insn_reservation "cortex_a53_advsimd" 4
+   (and (eq_attr "tune" "cortexa53")
+        (eq_attr "is_neon_type" "yes"))
+   "cortex_a53_simd0")
+--- a/src/gcc/config/arm/cortex-a57.md
++++ b/src/gcc/config/arm/cortex-a57.md
+@@ -202,7 +202,8 @@
+ 	  (eq_attr "type" "neon_load1_3reg, neon_load1_3reg_q,\
+ 			   neon_load1_4reg, neon_load1_4reg_q")
+ 	    (const_string "neon_load_b")
+-	  (eq_attr "type" "neon_load1_one_lane, neon_load1_one_lane_q,\
++	  (eq_attr "type" "neon_ldp, neon_ldp_q,\
++			   neon_load1_one_lane, neon_load1_one_lane_q,\
+ 			   neon_load1_all_lanes, neon_load1_all_lanes_q,\
+ 			   neon_load2_2reg, neon_load2_2reg_q,\
+ 			   neon_load2_all_lanes, neon_load2_all_lanes_q")
+@@ -224,7 +225,8 @@
+ 	    (const_string "neon_store_a")
+ 	  (eq_attr "type" "neon_store1_2reg, neon_store1_1reg_q")
+ 	    (const_string "neon_store_b")
+-	  (eq_attr "type" "neon_store1_3reg, neon_store1_3reg_q,\
++	  (eq_attr "type" "neon_stp, neon_stp_q,\
++			   neon_store1_3reg, neon_store1_3reg_q,\
+ 			   neon_store3_3reg, neon_store3_3reg_q,\
+ 			   neon_store2_4reg, neon_store2_4reg_q,\
+ 			   neon_store4_4reg, neon_store4_4reg_q,\
+--- a/src/gcc/config/arm/driver-arm.c
++++ b/src/gcc/config/arm/driver-arm.c
+@@ -35,6 +35,9 @@ static struct vendor_cpu arm_cpu_table[] = {
+     {"0xb02", "armv6k", "mpcore"},
+     {"0xb36", "armv6j", "arm1136j-s"},
+     {"0xb56", "armv6t2", "arm1156t2-s"},
++    /* armv6kz is the correct spelling for ARMv6KZ but may not be supported in
++       the version of binutils used.  The incorrect spelling is supported in
++       legacy and current binutils so that is used instead.  */
+     {"0xb76", "armv6zk", "arm1176jz-s"},
+     {"0xc05", "armv7-a", "cortex-a5"},
+     {"0xc07", "armv7ve", "cortex-a7"},
+--- a/src/gcc/config/arm/elf.h
++++ b/src/gcc/config/arm/elf.h
+@@ -120,7 +120,6 @@
+   { "marm", "mlittle-endian", "mfloat-abi=soft", "mno-thumb-interwork", "fno-leading-underscore" }
+ #endif
+ 

+-#define TARGET_ASM_FILE_START_APP_OFF true
+ #define TARGET_ASM_FILE_START_FILE_DIRECTIVE true
+ 

+ 
+--- a/src/gcc/config/arm/iterators.md
++++ b/src/gcc/config/arm/iterators.md
+@@ -65,20 +65,32 @@
+ ;; Integer modes supported by Neon and IWMMXT, except V2DI
+ (define_mode_iterator VINTW [V2SI V4HI V8QI V4SI V8HI V16QI])
+ 
+-;; Double-width vector modes.
++;; Double-width vector modes, on which we support arithmetic (no HF!)
+ (define_mode_iterator VD [V8QI V4HI V2SI V2SF])
+ 
++;; Double-width vector modes plus 64-bit elements for vreinterpret + vcreate.
++(define_mode_iterator VD_RE [V8QI V4HI V2SI V2SF DI])
++
+ ;; Double-width vector modes plus 64-bit elements.
+-(define_mode_iterator VDX [V8QI V4HI V2SI V2SF DI])
++(define_mode_iterator VDX [V8QI V4HI V4HF V2SI V2SF DI])
++
++;; Double-width vector modes, with V4HF - for vldN_lane and vstN_lane.
++(define_mode_iterator VD_LANE [V8QI V4HI V4HF V2SI V2SF])
+ 
+ ;; Double-width vector modes without floating-point elements.
+ (define_mode_iterator VDI [V8QI V4HI V2SI])
+ 
+-;; Quad-width vector modes.
++;; Quad-width vector modes supporting arithmetic (no HF!).
+ (define_mode_iterator VQ [V16QI V8HI V4SI V4SF])
+ 
++;; Quad-width vector modes, including V8HF.
++(define_mode_iterator VQ2 [V16QI V8HI V8HF V4SI V4SF])
++
++;; Quad-width vector modes with 16- or 32-bit elements
++(define_mode_iterator VQ_HS [V8HI V8HF V4SI V4SF])
++
+ ;; Quad-width vector modes plus 64-bit elements.
+-(define_mode_iterator VQX [V16QI V8HI V4SI V4SF V2DI])
++(define_mode_iterator VQX [V16QI V8HI V8HF V4SI V4SF V2DI])
+ 
+ ;; Quad-width vector modes without floating-point elements.
+ (define_mode_iterator VQI [V16QI V8HI V4SI])
+@@ -111,7 +123,8 @@
+ (define_mode_iterator VDQI [V8QI V16QI V4HI V8HI V2SI V4SI V2DI])
+ 
+ ;; Vector modes, including 64-bit integer elements.
+-(define_mode_iterator VDQX [V8QI V16QI V4HI V8HI V2SI V4SI V2SF V4SF DI V2DI])
++(define_mode_iterator VDQX [V8QI V16QI V4HI V8HI V2SI V4SI
++			    V4HF V8HF V2SF V4SF DI V2DI])
+ 
+ ;; Vector modes including 64-bit integer elements, but no floats.
+ (define_mode_iterator VDQIX [V8QI V16QI V4HI V8HI V2SI V4SI DI V2DI])
+@@ -181,39 +194,53 @@
+ ;; compare a second time.
+ (define_code_iterator LTUGEU [ltu geu])
+ 
++;; The signed gt, ge comparisons
++(define_code_iterator GTGE [gt ge])
++
++;; The unsigned gt, ge comparisons
++(define_code_iterator GTUGEU [gtu geu])
++
++;; Comparisons for vc<cmp>
++(define_code_iterator COMPARISONS [eq gt ge le lt])
++
+ ;; A list of ...
+-(define_code_iterator ior_xor [ior xor])
++(define_code_iterator IOR_XOR [ior xor])
+ 
+ ;; Operations on two halves of a quadword vector.
+-(define_code_iterator vqh_ops [plus smin smax umin umax])
++(define_code_iterator VQH_OPS [plus smin smax umin umax])
+ 
+ ;; Operations on two halves of a quadword vector,
+ ;; without unsigned variants (for use with *SFmode pattern).
+-(define_code_iterator vqhs_ops [plus smin smax])
++(define_code_iterator VQHS_OPS [plus smin smax])
+ 
+ ;; A list of widening operators
+ (define_code_iterator SE [sign_extend zero_extend])
+ 
+ ;; Right shifts
+-(define_code_iterator rshifts [ashiftrt lshiftrt])
++(define_code_iterator RSHIFTS [ashiftrt lshiftrt])
+ 
+ ;; Iterator for integer conversions
+ (define_code_iterator FIXUORS [fix unsigned_fix])
+ 
+ ;; Binary operators whose second operand can be shifted.
+-(define_code_iterator shiftable_ops [plus minus ior xor and])
++(define_code_iterator SHIFTABLE_OPS [plus minus ior xor and])
+ 
+-;; plus and minus are the only shiftable_ops for which Thumb2 allows
++;; plus and minus are the only SHIFTABLE_OPS for which Thumb2 allows
+ ;; a stack pointer opoerand.  The minus operation is a candidate for an rsub
+ ;; and hence only plus is supported.
+ (define_code_attr t2_binop0
+   [(plus "rk") (minus "r") (ior "r") (xor "r") (and "r")])
+ 
+-;; The instruction to use when a shiftable_ops has a shift operation as
++;; The instruction to use when a SHIFTABLE_OPS has a shift operation as
+ ;; its first operand.
+ (define_code_attr arith_shift_insn
+   [(plus "add") (minus "rsb") (ior "orr") (xor "eor") (and "and")])
+ 
++(define_code_attr cmp_op [(eq "eq") (gt "gt") (ge "ge") (lt "lt") (le "le")
++                          (gtu "gt") (geu "ge")])
++
++(define_code_attr cmp_type [(eq "i") (gt "s") (ge "s") (lt "s") (le "s")])
++
+ ;;----------------------------------------------------------------------------
+ ;; Int iterators
+ ;;----------------------------------------------------------------------------
+@@ -221,6 +248,10 @@
+ (define_int_iterator VRINT [UNSPEC_VRINTZ UNSPEC_VRINTP UNSPEC_VRINTM
+                             UNSPEC_VRINTR UNSPEC_VRINTX UNSPEC_VRINTA])
+ 
++(define_int_iterator NEON_VCMP [UNSPEC_VCEQ UNSPEC_VCGT UNSPEC_VCGE UNSPEC_VCLT UNSPEC_VCLE])
++
++(define_int_iterator NEON_VACMP [UNSPEC_VCAGE UNSPEC_VCAGT])
++
+ (define_int_iterator VCVT [UNSPEC_VRINTP UNSPEC_VRINTM UNSPEC_VRINTA])
+ 
+ (define_int_iterator NEON_VRINT [UNSPEC_NVRINTP UNSPEC_NVRINTZ UNSPEC_NVRINTM
+@@ -348,7 +379,8 @@
+ 
+ ;; Define element mode for each vector mode.
+ (define_mode_attr V_elem [(V8QI "QI") (V16QI "QI")
+-              (V4HI "HI") (V8HI "HI")
++			  (V4HI "HI") (V8HI "HI")
++			  (V4HF "HF") (V8HF "HF")
+                           (V2SI "SI") (V4SI "SI")
+                           (V2SF "SF") (V4SF "SF")
+                           (DI "DI")   (V2DI "DI")])
+@@ -365,6 +397,7 @@
+ ;; size for structure lane/dup loads and stores.
+ (define_mode_attr V_two_elem [(V8QI "HI")   (V16QI "HI")
+                               (V4HI "SI")   (V8HI "SI")
++                              (V4HF "SF")   (V8HF "SF")
+                               (V2SI "V2SI") (V4SI "V2SI")
+                               (V2SF "V2SF") (V4SF "V2SF")
+                               (DI "V2DI")   (V2DI "V2DI")])
+@@ -372,6 +405,7 @@
+ ;; Similar, for three elements.
+ (define_mode_attr V_three_elem [(V8QI "BLK") (V16QI "BLK")
+                                 (V4HI "BLK") (V8HI "BLK")
++                                (V4HF "BLK") (V8HF "BLK")
+                                 (V2SI "BLK") (V4SI "BLK")
+                                 (V2SF "BLK") (V4SF "BLK")
+                                 (DI "EI")    (V2DI "EI")])
+@@ -379,6 +413,7 @@
+ ;; Similar, for four elements.
+ (define_mode_attr V_four_elem [(V8QI "SI")   (V16QI "SI")
+                                (V4HI "V4HI") (V8HI "V4HI")
++                               (V4HF "V4HF") (V8HF "V4HF")
+                                (V2SI "V4SI") (V4SI "V4SI")
+                                (V2SF "V4SF") (V4SF "V4SF")
+                                (DI "OI")     (V2DI "OI")])
+@@ -403,7 +438,8 @@
+ 
+ ;; Modes with half the number of equal-sized elements.
+ (define_mode_attr V_HALF [(V16QI "V8QI") (V8HI "V4HI")
+-              (V4SI  "V2SI") (V4SF "V2SF") (V2DF "DF")
++			  (V8HF "V4HF") (V4SI  "V2SI")
++			  (V4SF "V2SF") (V2DF "DF")
+                           (V2DI "DI")])
+ 
+ ;; Same, but lower-case.
+@@ -413,8 +449,9 @@
+ 
+ ;; Modes with twice the number of equal-sized elements.
+ (define_mode_attr V_DOUBLE [(V8QI "V16QI") (V4HI "V8HI")
+-                (V2SI "V4SI") (V2SF "V4SF") (DF "V2DF")
+-                            (DI "V2DI")])
++			    (V2SI "V4SI") (V4HF "V8HF")
++			    (V2SF "V4SF") (DF "V2DF")
++			    (DI "V2DI")])
+ 
+ ;; Same, but lower-case.
+ (define_mode_attr V_double [(V8QI "v16qi") (V4HI "v8hi")
+@@ -436,8 +473,9 @@
+ 
+ ;; Mode of result of comparison operations (and bit-select operand 1).
+ (define_mode_attr V_cmp_result [(V8QI "V8QI") (V16QI "V16QI")
+-                    (V4HI "V4HI") (V8HI  "V8HI")
++				(V4HI "V4HI") (V8HI  "V8HI")
+                                 (V2SI "V2SI") (V4SI  "V4SI")
++				(V4HF "V4HI") (V8HF  "V8HI")
+                                 (V2SF "V2SI") (V4SF  "V4SI")
+                                 (DI   "DI")   (V2DI  "V2DI")])
+ 
+@@ -474,12 +512,14 @@
+ (define_mode_attr V_uf_sclr [(V8QI "u8")  (V16QI "u8")
+                  (V4HI "u16") (V8HI "u16")
+                              (V2SI "32") (V4SI "32")
++                             (V4HF "u16") (V8HF "u16")
+                              (V2SF "32") (V4SF "32")])
+ 
+ (define_mode_attr V_sz_elem [(V8QI "8")  (V16QI "8")
+                  (V4HI "16") (V8HI  "16")
+                              (V2SI "32") (V4SI  "32")
+                              (DI   "64") (V2DI  "64")
++			     (V4HF "16") (V8HF "16")
+                  (V2SF "32") (V4SF  "32")])
+ 
+ (define_mode_attr V_elem_ch [(V8QI "b")  (V16QI "b")
+@@ -546,6 +586,7 @@
+                             (DI   "true") (V2DI  "false")])
+ 
+ (define_mode_attr V_mode_nunits [(V8QI "8") (V16QI "16")
++				 (V4HF "4") (V8HF "8")
+                                  (V4HI "4") (V8HI "8")
+                                  (V2SI "2") (V4SI "4")
+                                  (V2SF "2") (V4SF "4")
+@@ -589,6 +630,7 @@
+ (define_mode_attr q [(V8QI "") (V16QI "_q")
+                      (V4HI "") (V8HI "_q")
+                      (V2SI "") (V4SI "_q")
++		     (V4HF "") (V8HF "_q")
+                      (V2SF "") (V4SF "_q")
+                      (DI "")   (V2DI "_q")
+                      (DF "")   (V2DF "_q")])
+@@ -677,6 +719,11 @@
+ 
+ ])
+ 
++(define_int_attr cmp_op_unsp [(UNSPEC_VCEQ "eq") (UNSPEC_VCGT "gt")
++                              (UNSPEC_VCGE "ge") (UNSPEC_VCLE "le")
++                              (UNSPEC_VCLT "lt") (UNSPEC_VCAGE "ge")
++                              (UNSPEC_VCAGT "gt")])
++
+ (define_int_attr r [
+   (UNSPEC_VRHADD_S "r") (UNSPEC_VRHADD_U "r")
+   (UNSPEC_VHADD_S "") (UNSPEC_VHADD_U "")
+@@ -774,7 +821,7 @@
+                           (UNSPEC_SHA256H2 "V4SI") (UNSPEC_SHA256SU1 "V4SI")])
+ 
+ ;; Both kinds of return insn.
+-(define_code_iterator returns [return simple_return])
++(define_code_iterator RETURNS [return simple_return])
+ (define_code_attr return_str [(return "") (simple_return "simple_")])
+ (define_code_attr return_simple_p [(return "false") (simple_return "true")])
+ (define_code_attr return_cond_false [(return " && USE_RETURN_INSN (FALSE)")
+--- a/src/gcc/config/arm/iwmmxt.md
++++ b/src/gcc/config/arm/iwmmxt.md
+@@ -107,8 +107,8 @@
+ )
+ 
+ (define_insn "*iwmmxt_arm_movdi"
+-  [(set (match_operand:DI 0 "nonimmediate_di_operand" "=r, r, r, r, m,y,y,yr,y,yrUy,*w, r,*w,*w, *Uv")
+-        (match_operand:DI 1 "di_operand"              "rDa,Db,Dc,mi,r,y,yr,y,yrUy,y, r,*w,*w,*Uvi,*w"))]
++  [(set (match_operand:DI 0 "nonimmediate_di_operand" "=r, r, r, r, m,y,y,r, y,Uy,*w, r,*w,*w, *Uv")
++        (match_operand:DI 1 "di_operand"              "rDa,Db,Dc,mi,r,y,r,y,Uy,y,  r,*w,*w,*Uvi,*w"))]
+   "TARGET_REALLY_IWMMXT
+    && (   register_operand (operands[0], DImode)
+        || register_operand (operands[1], DImode))"
+--- a/src/gcc/config/arm/linux-eabi.h
++++ b/src/gcc/config/arm/linux-eabi.h
+@@ -77,6 +77,23 @@
+     %{mfloat-abi=soft*:" GLIBC_DYNAMIC_LINKER_SOFT_FLOAT "} \
+     %{!mfloat-abi=*:" GLIBC_DYNAMIC_LINKER_DEFAULT "}"
+ 
++/* For ARM musl currently supports four dynamic linkers:
++   - ld-musl-arm.so.1 - for the EABI-derived soft-float ABI
++   - ld-musl-armhf.so.1 - for the EABI-derived hard-float ABI
++   - ld-musl-armeb.so.1 - for the EABI-derived soft-float ABI, EB
++   - ld-musl-armebhf.so.1 - for the EABI-derived hard-float ABI, EB
++   musl does not support the legacy OABI mode.
++   All the dynamic linkers live in /lib.
++   We default to soft-float, EL. */
++#undef  MUSL_DYNAMIC_LINKER
++#if TARGET_BIG_ENDIAN_DEFAULT
++#define MUSL_DYNAMIC_LINKER_E "%{mlittle-endian:;:eb}"
++#else
++#define MUSL_DYNAMIC_LINKER_E "%{mbig-endian:eb}"
++#endif
++#define MUSL_DYNAMIC_LINKER \
++  "/lib/ld-musl-arm" MUSL_DYNAMIC_LINKER_E "%{mfloat-abi=hard:hf}.so.1"
++
+ /* At this point, bpabi.h will have clobbered LINK_SPEC.  We want to
+    use the GNU/Linux version, not the generic BPABI version.  */
+ #undef  LINK_SPEC
+@@ -107,6 +124,7 @@
+ 
+ #undef	ENDFILE_SPEC
+ #define ENDFILE_SPEC \
++  "%{Ofast|ffast-math|funsafe-math-optimizations:crtfastmath.o%s} "	\
+   LINUX_OR_ANDROID_LD (GNU_USER_TARGET_ENDFILE_SPEC, ANDROID_ENDFILE_SPEC)
+ 
+ /* Use the default LIBGCC_SPEC, not the version in linux-elf.h, as we
+--- a/src/gcc/config/arm/neon-testgen.ml
++++ b/src/gcc/config/arm/neon-testgen.ml
+@@ -138,7 +138,6 @@ let emit_epilogue chan features regexps =
+      else
+        ()
+     );
+-    Printf.fprintf chan "/* { dg-final { cleanup-saved-temps } } */\n"
+ 
+ (* Check a list of C types to determine which ones are pointers and which
+    ones are const.  *)
+--- a/src/gcc/config/arm/neon.md
++++ b/src/gcc/config/arm/neon.md
+@@ -320,11 +320,11 @@
+   [(set_attr "type" "neon_load1_all_lanes<q>,neon_from_gp<q>")])
+ 
+ (define_insn "vec_set<mode>_internal"
+-  [(set (match_operand:VQ 0 "s_register_operand" "=w,w")
+-        (vec_merge:VQ
+-          (vec_duplicate:VQ
++  [(set (match_operand:VQ2 0 "s_register_operand" "=w,w")
++        (vec_merge:VQ2
++          (vec_duplicate:VQ2
+             (match_operand:<V_elem> 1 "nonimmediate_operand" "Um,r"))
+-          (match_operand:VQ 3 "s_register_operand" "0,0")
++          (match_operand:VQ2 3 "s_register_operand" "0,0")
+           (match_operand:SI 2 "immediate_operand" "i,i")))]
+   "TARGET_NEON"
+ {
+@@ -407,7 +407,7 @@
+ (define_insn "vec_extract<mode>"
+   [(set (match_operand:<V_elem> 0 "nonimmediate_operand" "=Um,r")
+ 	(vec_select:<V_elem>
+-          (match_operand:VQ 1 "s_register_operand" "w,w")
++          (match_operand:VQ2 1 "s_register_operand" "w,w")
+           (parallel [(match_operand:SI 2 "immediate_operand" "i,i")])))]
+   "TARGET_NEON"
+ {
+@@ -1114,7 +1114,7 @@
+ ;; lshrdi3_neon
+ (define_insn_and_split "<shift>di3_neon"
+   [(set (match_operand:DI 0 "s_register_operand"	     "= w, w,?&r,?r,?w,?w")
+-	(rshifts:DI (match_operand:DI 1 "s_register_operand" " 0w, w, 0r, r,0w, w")
++	(RSHIFTS:DI (match_operand:DI 1 "s_register_operand" " 0w, w, 0r, r,0w, w")
+ 		    (match_operand:SI 2 "reg_or_int_operand" "  r, i,  r, i, r, i")))
+    (clobber (match_scratch:SI 3				     "=2r, X, &r, X,2r, X"))
+    (clobber (match_scratch:SI 4				     "= X, X, &r, X, X, X"))
+@@ -1194,71 +1194,6 @@
+   [(set_attr "type" "neon_add_widen")]
+ )
+ 
+-;; VEXT can be used to synthesize coarse whole-vector shifts with 8-bit
+-;; shift-count granularity. That's good enough for the middle-end's current
+-;; needs.
+-
+-;; Note that it's not safe to perform such an operation in big-endian mode,
+-;; due to element-ordering issues.
+-
+-(define_expand "vec_shr_<mode>"
+-  [(match_operand:VDQ 0 "s_register_operand" "")
+-   (match_operand:VDQ 1 "s_register_operand" "")
+-   (match_operand:SI 2 "const_multiple_of_8_operand" "")]
+-  "TARGET_NEON && !BYTES_BIG_ENDIAN"
+-{
+-  rtx zero_reg;
+-  HOST_WIDE_INT num_bits = INTVAL (operands[2]);
+-  const int width = GET_MODE_BITSIZE (<MODE>mode);
+-  const machine_mode bvecmode = (width == 128) ? V16QImode : V8QImode;
+-  rtx (*gen_ext) (rtx, rtx, rtx, rtx) =
+-    (width == 128) ? gen_neon_vextv16qi : gen_neon_vextv8qi;
+-
+-  if (num_bits == width)
+-    {
+-      emit_move_insn (operands[0], operands[1]);
+-      DONE;
+-    }
+-
+-  zero_reg = force_reg (bvecmode, CONST0_RTX (bvecmode));
+-  operands[0] = gen_lowpart (bvecmode, operands[0]);
+-  operands[1] = gen_lowpart (bvecmode, operands[1]);
+-
+-  emit_insn (gen_ext (operands[0], operands[1], zero_reg,
+-		      GEN_INT (num_bits / BITS_PER_UNIT)));
+-  DONE;
+-})
+-
+-(define_expand "vec_shl_<mode>"
+-  [(match_operand:VDQ 0 "s_register_operand" "")
+-   (match_operand:VDQ 1 "s_register_operand" "")
+-   (match_operand:SI 2 "const_multiple_of_8_operand" "")]
+-  "TARGET_NEON && !BYTES_BIG_ENDIAN"
+-{
+-  rtx zero_reg;
+-  HOST_WIDE_INT num_bits = INTVAL (operands[2]);
+-  const int width = GET_MODE_BITSIZE (<MODE>mode);
+-  const machine_mode bvecmode = (width == 128) ? V16QImode : V8QImode;
+-  rtx (*gen_ext) (rtx, rtx, rtx, rtx) =
+-    (width == 128) ? gen_neon_vextv16qi : gen_neon_vextv8qi;
+-
+-  if (num_bits == 0)
+-    {
+-      emit_move_insn (operands[0], CONST0_RTX (<MODE>mode));
+-      DONE;
+-    }
+-
+-  num_bits = width - num_bits;
+-
+-  zero_reg = force_reg (bvecmode, CONST0_RTX (bvecmode));
+-  operands[0] = gen_lowpart (bvecmode, operands[0]);
+-  operands[1] = gen_lowpart (bvecmode, operands[1]);
+-
+-  emit_insn (gen_ext (operands[0], zero_reg, operands[1],
+-		      GEN_INT (num_bits / BITS_PER_UNIT)));
+-  DONE;
+-})
+-
+ ;; Helpers for quad-word reduction operations
+ 
+ ; Add (or smin, smax...) the low N/2 elements of the N-element vector
+@@ -1267,7 +1202,7 @@
+ 
+ (define_insn "quad_halves_<code>v4si"
+   [(set (match_operand:V2SI 0 "s_register_operand" "=w")
+-        (vqh_ops:V2SI
++        (VQH_OPS:V2SI
+           (vec_select:V2SI (match_operand:V4SI 1 "s_register_operand" "w")
+                            (parallel [(const_int 0) (const_int 1)]))
+           (vec_select:V2SI (match_dup 1)
+@@ -1280,7 +1215,7 @@
+ 
+ (define_insn "quad_halves_<code>v4sf"
+   [(set (match_operand:V2SF 0 "s_register_operand" "=w")
+-        (vqhs_ops:V2SF
++        (VQHS_OPS:V2SF
+           (vec_select:V2SF (match_operand:V4SF 1 "s_register_operand" "w")
+                            (parallel [(const_int 0) (const_int 1)]))
+           (vec_select:V2SF (match_dup 1)
+@@ -1293,7 +1228,7 @@
+ 
+ (define_insn "quad_halves_<code>v8hi"
+   [(set (match_operand:V4HI 0 "s_register_operand" "+w")
+-        (vqh_ops:V4HI
++        (VQH_OPS:V4HI
+           (vec_select:V4HI (match_operand:V8HI 1 "s_register_operand" "w")
+                            (parallel [(const_int 0) (const_int 1)
+ 				      (const_int 2) (const_int 3)]))
+@@ -1308,7 +1243,7 @@
+ 
+ (define_insn "quad_halves_<code>v16qi"
+   [(set (match_operand:V8QI 0 "s_register_operand" "+w")
+-        (vqh_ops:V8QI
++        (VQH_OPS:V8QI
+           (vec_select:V8QI (match_operand:V16QI 1 "s_register_operand" "w")
+                            (parallel [(const_int 0) (const_int 1)
+ 				      (const_int 2) (const_int 3)
+@@ -2200,134 +2135,140 @@
+   [(set_attr "type" "neon_sub_halve_narrow_q")]
+ )
+ 
+-(define_insn "neon_vceq<mode>"
+-  [(set (match_operand:<V_cmp_result> 0 "s_register_operand" "=w,w")
+-        (unspec:<V_cmp_result>
+-	  [(match_operand:VDQW 1 "s_register_operand" "w,w")
+-	   (match_operand:VDQW 2 "reg_or_zero_operand" "w,Dz")]
+-          UNSPEC_VCEQ))]
++;; These may expand to an UNSPEC pattern when a floating point mode is used
++;; without unsafe math optimizations.
++(define_expand "neon_vc<cmp_op><mode>"
++  [(match_operand:<V_cmp_result> 0 "s_register_operand" "=w,w")
++     (neg:<V_cmp_result>
++       (COMPARISONS:VDQW (match_operand:VDQW 1 "s_register_operand" "w,w")
++                         (match_operand:VDQW 2 "reg_or_zero_operand" "w,Dz")))]
+   "TARGET_NEON"
+-  "@
+-  vceq.<V_if_elem>\t%<V_reg>0, %<V_reg>1, %<V_reg>2
+-  vceq.<V_if_elem>\t%<V_reg>0, %<V_reg>1, #0"
+-  [(set (attr "type")
+-      (if_then_else (match_test "<Is_float_mode>")
+-                    (const_string "neon_fp_compare_s<q>")
+-                    (if_then_else (match_operand 2 "zero_operand")
+-                      (const_string "neon_compare_zero<q>")
+-                      (const_string "neon_compare<q>"))))]
++  {
++    /* For FP comparisons use UNSPECS unless -funsafe-math-optimizations
++       are enabled.  */
++    if (GET_MODE_CLASS (<MODE>mode) == MODE_VECTOR_FLOAT
++        && !flag_unsafe_math_optimizations)
++      {
++        /* We don't just emit a gen_neon_vc<cmp_op><mode>_insn_unspec because
++           we define gen_neon_vceq<mode>_insn_unspec only for float modes
++           whereas this expander iterates over the integer modes as well,
++           but we will never expand to UNSPECs for the integer comparisons.  */
++        switch (<MODE>mode)
++          {
++            case V2SFmode:
++              emit_insn (gen_neon_vc<cmp_op>v2sf_insn_unspec (operands[0],
++                                                              operands[1],
++                                                              operands[2]));
++              break;
++            case V4SFmode:
++              emit_insn (gen_neon_vc<cmp_op>v4sf_insn_unspec (operands[0],
++                                                              operands[1],
++                                                              operands[2]));
++              break;
++            default:
++              gcc_unreachable ();
++          }
++      }
++    else
++      emit_insn (gen_neon_vc<cmp_op><mode>_insn (operands[0],
++                                                 operands[1],
++                                                 operands[2]));
++    DONE;
++  }
+ )
+ 
+-(define_insn "neon_vcge<mode>"
++(define_insn "neon_vc<cmp_op><mode>_insn"
+   [(set (match_operand:<V_cmp_result> 0 "s_register_operand" "=w,w")
+-        (unspec:<V_cmp_result>
+-	  [(match_operand:VDQW 1 "s_register_operand" "w,w")
+-	   (match_operand:VDQW 2 "reg_or_zero_operand" "w,Dz")]
+-          UNSPEC_VCGE))]
+-  "TARGET_NEON"
+-  "@
+-  vcge.<V_s_elem>\t%<V_reg>0, %<V_reg>1, %<V_reg>2
+-  vcge.<V_s_elem>\t%<V_reg>0, %<V_reg>1, #0"
++        (neg:<V_cmp_result>
++          (COMPARISONS:<V_cmp_result>
++            (match_operand:VDQW 1 "s_register_operand" "w,w")
++            (match_operand:VDQW 2 "reg_or_zero_operand" "w,Dz"))))]
++  "TARGET_NEON && !(GET_MODE_CLASS (<MODE>mode) == MODE_VECTOR_FLOAT
++                    && !flag_unsafe_math_optimizations)"
++  {
++    char pattern[100];
++    sprintf (pattern, "vc<cmp_op>.%s%%#<V_sz_elem>\t%%<V_reg>0,"
++                      " %%<V_reg>1, %s",
++                       GET_MODE_CLASS (<MODE>mode) == MODE_VECTOR_FLOAT
++                         ? "f" : "<cmp_type>",
++                       which_alternative == 0
++                         ? "%<V_reg>2" : "#0");
++    output_asm_insn (pattern, operands);
++    return "";
++  }
+   [(set (attr "type")
+-     (if_then_else (match_test "<Is_float_mode>")
+-                   (const_string "neon_fp_compare_s<q>")
+-                    (if_then_else (match_operand 2 "zero_operand")
++        (if_then_else (match_operand 2 "zero_operand")
+                       (const_string "neon_compare_zero<q>")
+-                      (const_string "neon_compare<q>"))))]
+-)
+-
+-(define_insn "neon_vcgeu<mode>"
+-  [(set (match_operand:<V_cmp_result> 0 "s_register_operand" "=w")
+-        (unspec:<V_cmp_result>
+-	  [(match_operand:VDQIW 1 "s_register_operand" "w")
+-	   (match_operand:VDQIW 2 "s_register_operand" "w")]
+-          UNSPEC_VCGEU))]
+-  "TARGET_NEON"
+-  "vcge.u%#<V_sz_elem>\t%<V_reg>0, %<V_reg>1, %<V_reg>2"
+-  [(set_attr "type" "neon_compare<q>")]
++                      (const_string "neon_compare<q>")))]
+ )
+ 
+-(define_insn "neon_vcgt<mode>"
++(define_insn "neon_vc<cmp_op_unsp><mode>_insn_unspec"
+   [(set (match_operand:<V_cmp_result> 0 "s_register_operand" "=w,w")
+         (unspec:<V_cmp_result>
+-	  [(match_operand:VDQW 1 "s_register_operand" "w,w")
+-	   (match_operand:VDQW 2 "reg_or_zero_operand" "w,Dz")]
+-          UNSPEC_VCGT))]
++	  [(match_operand:VCVTF 1 "s_register_operand" "w,w")
++	   (match_operand:VCVTF 2 "reg_or_zero_operand" "w,Dz")]
++          NEON_VCMP))]
+   "TARGET_NEON"
+-  "@
+-  vcgt.<V_s_elem>\t%<V_reg>0, %<V_reg>1, %<V_reg>2
+-  vcgt.<V_s_elem>\t%<V_reg>0, %<V_reg>1, #0"
+-  [(set (attr "type")
+-     (if_then_else (match_test "<Is_float_mode>")
+-                   (const_string "neon_fp_compare_s<q>")
+-                    (if_then_else (match_operand 2 "zero_operand")
+-                      (const_string "neon_compare_zero<q>")
+-                      (const_string "neon_compare<q>"))))]
++  {
++    char pattern[100];
++    sprintf (pattern, "vc<cmp_op_unsp>.f%%#<V_sz_elem>\t%%<V_reg>0,"
++                       " %%<V_reg>1, %s",
++                       which_alternative == 0
++                         ? "%<V_reg>2" : "#0");
++    output_asm_insn (pattern, operands);
++    return "";
++}
++  [(set_attr "type" "neon_fp_compare_s<q>")]
+ )
+ 
+-(define_insn "neon_vcgtu<mode>"
++(define_insn "neon_vc<cmp_op>u<mode>"
+   [(set (match_operand:<V_cmp_result> 0 "s_register_operand" "=w")
+-        (unspec:<V_cmp_result>
+-	  [(match_operand:VDQIW 1 "s_register_operand" "w")
+-	   (match_operand:VDQIW 2 "s_register_operand" "w")]
+-          UNSPEC_VCGTU))]
++        (neg:<V_cmp_result>
++          (GTUGEU:<V_cmp_result>
++	    (match_operand:VDQIW 1 "s_register_operand" "w")
++	    (match_operand:VDQIW 2 "s_register_operand" "w"))))]
+   "TARGET_NEON"
+-  "vcgt.u%#<V_sz_elem>\t%<V_reg>0, %<V_reg>1, %<V_reg>2"
++  "vc<cmp_op>.u%#<V_sz_elem>\t%<V_reg>0, %<V_reg>1, %<V_reg>2"
+   [(set_attr "type" "neon_compare<q>")]
+ )
+ 
+-;; VCLE and VCLT only support comparisons with immediate zero (register
+-;; variants are VCGE and VCGT with operands reversed).
+-
+-(define_insn "neon_vcle<mode>"
+-  [(set (match_operand:<V_cmp_result> 0 "s_register_operand" "=w")
+-        (unspec:<V_cmp_result>
+-	  [(match_operand:VDQW 1 "s_register_operand" "w")
+-	   (match_operand:VDQW 2 "zero_operand" "Dz")]
+-          UNSPEC_VCLE))]
++(define_expand "neon_vca<cmp_op><mode>"
++  [(set (match_operand:<V_cmp_result> 0 "s_register_operand")
++        (neg:<V_cmp_result>
++          (GTGE:<V_cmp_result>
++            (abs:VCVTF (match_operand:VCVTF 1 "s_register_operand"))
++            (abs:VCVTF (match_operand:VCVTF 2 "s_register_operand")))))]
+   "TARGET_NEON"
+-  "vcle.<V_s_elem>\t%<V_reg>0, %<V_reg>1, #0"
+-  [(set (attr "type")
+-      (if_then_else (match_test "<Is_float_mode>")
+-                    (const_string "neon_fp_compare_s<q>")
+-                    (if_then_else (match_operand 2 "zero_operand")
+-                      (const_string "neon_compare_zero<q>")
+-                      (const_string "neon_compare<q>"))))]
+-)
+-
+-(define_insn "neon_vclt<mode>"
+-  [(set (match_operand:<V_cmp_result> 0 "s_register_operand" "=w")
+-        (unspec:<V_cmp_result>
+-	  [(match_operand:VDQW 1 "s_register_operand" "w")
+-	   (match_operand:VDQW 2 "zero_operand" "Dz")]
+-          UNSPEC_VCLT))]
+-  "TARGET_NEON"
+-  "vclt.<V_s_elem>\t%<V_reg>0, %<V_reg>1, #0"
+-  [(set (attr "type")
+-      (if_then_else (match_test "<Is_float_mode>")
+-                    (const_string "neon_fp_compare_s<q>")
+-                    (if_then_else (match_operand 2 "zero_operand")
+-                      (const_string "neon_compare_zero<q>")
+-                      (const_string "neon_compare<q>"))))]
++  {
++    if (flag_unsafe_math_optimizations)
++      emit_insn (gen_neon_vca<cmp_op><mode>_insn (operands[0], operands[1],
++                                                  operands[2]));
++    else
++      emit_insn (gen_neon_vca<cmp_op><mode>_insn_unspec (operands[0],
++                                                         operands[1],
++                                                         operands[2]));
++    DONE;
++  }
+ )
+ 
+-(define_insn "neon_vcage<mode>"
++(define_insn "neon_vca<cmp_op><mode>_insn"
+   [(set (match_operand:<V_cmp_result> 0 "s_register_operand" "=w")
+-        (unspec:<V_cmp_result> [(match_operand:VCVTF 1 "s_register_operand" "w")
+-		                (match_operand:VCVTF 2 "s_register_operand" "w")]
+-                               UNSPEC_VCAGE))]
+-  "TARGET_NEON"
+-  "vacge.<V_if_elem>\t%<V_reg>0, %<V_reg>1, %<V_reg>2"
++        (neg:<V_cmp_result>
++          (GTGE:<V_cmp_result>
++            (abs:VCVTF (match_operand:VCVTF 1 "s_register_operand" "w"))
++            (abs:VCVTF (match_operand:VCVTF 2 "s_register_operand" "w")))))]
++  "TARGET_NEON && flag_unsafe_math_optimizations"
++  "vac<cmp_op>.<V_if_elem>\t%<V_reg>0, %<V_reg>1, %<V_reg>2"
+   [(set_attr "type" "neon_fp_compare_s<q>")]
+ )
+ 
+-(define_insn "neon_vcagt<mode>"
++(define_insn "neon_vca<cmp_op_unsp><mode>_insn_unspec"
+   [(set (match_operand:<V_cmp_result> 0 "s_register_operand" "=w")
+         (unspec:<V_cmp_result> [(match_operand:VCVTF 1 "s_register_operand" "w")
+ 		                (match_operand:VCVTF 2 "s_register_operand" "w")]
+-                               UNSPEC_VCAGT))]
++                               NEON_VACMP))]
+   "TARGET_NEON"
+-  "vacgt.<V_if_elem>\t%<V_reg>0, %<V_reg>1, %<V_reg>2"
++  "vac<cmp_op_unsp>.<V_if_elem>\t%<V_reg>0, %<V_reg>1, %<V_reg>2"
+   [(set_attr "type" "neon_fp_compare_s<q>")]
+ )
+ 
+@@ -2666,7 +2607,7 @@
+   [(set (match_operand:SI 0 "s_register_operand" "=r")
+ 	(sign_extend:SI
+ 	  (vec_select:<V_elem>
+-	    (match_operand:VQ 1 "s_register_operand" "w")
++	    (match_operand:VQ2 1 "s_register_operand" "w")
+ 	    (parallel [(match_operand:SI 2 "immediate_operand" "i")]))))]
+   "TARGET_NEON"
+ {
+@@ -2693,7 +2634,7 @@
+   [(set (match_operand:SI 0 "s_register_operand" "=r")
+ 	(zero_extend:SI
+ 	  (vec_select:<V_elem>
+-	    (match_operand:VQ 1 "s_register_operand" "w")
++	    (match_operand:VQ2 1 "s_register_operand" "w")
+ 	    (parallel [(match_operand:SI 2 "immediate_operand" "i")]))))]
+   "TARGET_NEON"
+ {
+@@ -2722,8 +2663,6 @@
+    (match_operand:SI 2 "immediate_operand" "")]
+   "TARGET_NEON"
+ {
+-  neon_lane_bounds (operands[2], 0, GET_MODE_NUNITS (<MODE>mode));
+-
+   if (BYTES_BIG_ENDIAN)
+     {
+       /* The intrinsics are defined in terms of a model where the
+@@ -2753,8 +2692,6 @@
+    (match_operand:SI 2 "immediate_operand" "")]
+   "TARGET_NEON"
+ {
+-  neon_lane_bounds (operands[2], 0, GET_MODE_NUNITS (<MODE>mode));
+-
+   if (BYTES_BIG_ENDIAN)
+     {
+       /* The intrinsics are defined in terms of a model where the
+@@ -2784,7 +2721,6 @@
+    (match_operand:SI 2 "immediate_operand" "")]
+   "TARGET_NEON"
+ {
+-  neon_lane_bounds (operands[2], 0, 1);
+   emit_move_insn (operands[0], operands[1]);
+   DONE;
+ })
+@@ -2795,18 +2731,26 @@
+    (match_operand:SI 2 "immediate_operand" "")]
+   "TARGET_NEON"
+ {
+-  switch (INTVAL (operands[2]))
++  int lane;
++
++if (BYTES_BIG_ENDIAN)
+     {
+-    case 0:
+-      emit_move_insn (operands[0], gen_lowpart (DImode, operands[1]));
+-      break;
+-    case 1:
+-      emit_move_insn (operands[0], gen_highpart (DImode, operands[1]));
+-      break;
+-    default:
+-      neon_lane_bounds (operands[2], 0, 1);
+-      FAIL;
++      /* The intrinsics are defined in terms of a model where the
++	 element ordering in memory is vldm order, whereas the generic
++	 RTL is defined in terms of a model where the element ordering
++	 in memory is array order.  Convert the lane number to conform
++	 to this model.  */
++      unsigned int elt = INTVAL (operands[2]);
++      unsigned int reg_nelts = 2;
++      elt ^= reg_nelts - 1;
++      operands[2] = GEN_INT (elt);
+     }
++
++  lane = INTVAL (operands[2]);
++  gcc_assert ((lane ==0) || (lane == 1));
++  emit_move_insn (operands[0], lane == 0
++				? gen_lowpart (DImode, operands[1])
++				: gen_highpart (DImode, operands[1]));
+   DONE;
+ })
+ 
+@@ -2818,7 +2762,6 @@
+   "TARGET_NEON"
+ {
+   unsigned int elt = INTVAL (operands[3]);
+-  neon_lane_bounds (operands[3], 0, GET_MODE_NUNITS (<MODE>mode));
+ 
+   if (BYTES_BIG_ENDIAN)
+     {
+@@ -2841,13 +2784,12 @@
+    (match_operand:SI 3 "immediate_operand" "i")]
+   "TARGET_NEON"
+ {
+-  neon_lane_bounds (operands[3], 0, 1);
+   emit_move_insn (operands[0], operands[1]);
+   DONE;
+ })
+ 
+ (define_expand "neon_vcreate<mode>"
+-  [(match_operand:VDX 0 "s_register_operand" "")
++  [(match_operand:VD_RE 0 "s_register_operand" "")
+    (match_operand:DI 1 "general_operand" "")]
+   "TARGET_NEON"
+ {
+@@ -2923,7 +2865,6 @@
+    (match_operand:SI 2 "immediate_operand" "i")]
+   "TARGET_NEON"
+ {
+-  neon_lane_bounds (operands[2], 0, GET_MODE_NUNITS (<V_double_vector_mode>mode));
+   if (BYTES_BIG_ENDIAN)
+     {
+       unsigned int elt = INTVAL (operands[2]);
+@@ -2944,7 +2885,6 @@
+    (match_operand:SI 2 "immediate_operand" "i")]
+   "TARGET_NEON"
+ {
+-  neon_lane_bounds (operands[2], 0, 1);
+   emit_move_insn (operands[0], operands[1]);
+   DONE;
+ })
+@@ -2956,7 +2896,6 @@
+    (match_operand:SI 2 "immediate_operand" "i")]
+   "TARGET_NEON"
+ {
+-  neon_lane_bounds (operands[2], 0, 1);
+   emit_insn (gen_neon_vdup_nv2di (operands[0], operands[1]));
+   DONE;
+ })
+@@ -3156,7 +3095,6 @@
+                     UNSPEC_VMUL_LANE))]
+   "TARGET_NEON"
+ {
+-  neon_lane_bounds (operands[3], 0, GET_MODE_NUNITS (<MODE>mode));
+   return "vmul.<V_if_elem>\t%P0, %P1, %P2[%c3]";
+ }
+   [(set (attr "type")
+@@ -3174,7 +3112,6 @@
+                     UNSPEC_VMUL_LANE))]
+   "TARGET_NEON"
+ {
+-  neon_lane_bounds (operands[3], 0, GET_MODE_NUNITS (<V_HALF>mode));
+   return "vmul.<V_if_elem>\t%q0, %q1, %P2[%c3]";
+ }
+   [(set (attr "type")
+@@ -3192,7 +3129,6 @@
+                           VMULL_LANE))]
+   "TARGET_NEON"
+ {
+-  neon_lane_bounds (operands[3], 0, GET_MODE_NUNITS (<MODE>mode));
+   return "vmull.<sup>%#<V_sz_elem>\t%q0, %P1, %P2[%c3]";
+ }
+   [(set_attr "type" "neon_mul_<V_elem_ch>_scalar_long")]
+@@ -3207,7 +3143,6 @@
+                           UNSPEC_VQDMULL_LANE))]
+   "TARGET_NEON"
+ {
+-  neon_lane_bounds (operands[3], 0, GET_MODE_NUNITS (<MODE>mode));
+   return "vqdmull.<V_s_elem>\t%q0, %P1, %P2[%c3]";
+ }
+   [(set_attr "type" "neon_sat_mul_<V_elem_ch>_scalar_long")]
+@@ -3222,7 +3157,6 @@
+                       VQDMULH_LANE))]
+   "TARGET_NEON"
+ {
+-  neon_lane_bounds (operands[3], 0, GET_MODE_NUNITS (<MODE>mode));
+   return "vq<r>dmulh.<V_s_elem>\t%q0, %q1, %P2[%c3]";
+ }
+   [(set_attr "type" "neon_sat_mul_<V_elem_ch>_scalar_q")]
+@@ -3237,7 +3171,6 @@
+                       VQDMULH_LANE))]
+   "TARGET_NEON"
+ {
+-  neon_lane_bounds (operands[3], 0, GET_MODE_NUNITS (<MODE>mode));
+   return "vq<r>dmulh.<V_s_elem>\t%P0, %P1, %P2[%c3]";
+ }
+   [(set_attr "type" "neon_sat_mul_<V_elem_ch>_scalar_q")]
+@@ -3253,7 +3186,6 @@
+                      UNSPEC_VMLA_LANE))]
+   "TARGET_NEON"
+ {
+-  neon_lane_bounds (operands[4], 0, GET_MODE_NUNITS (<MODE>mode));
+   return "vmla.<V_if_elem>\t%P0, %P2, %P3[%c4]";
+ }
+   [(set (attr "type")
+@@ -3272,7 +3204,6 @@
+                      UNSPEC_VMLA_LANE))]
+   "TARGET_NEON"
+ {
+-  neon_lane_bounds (operands[4], 0, GET_MODE_NUNITS (<MODE>mode));
+   return "vmla.<V_if_elem>\t%q0, %q2, %P3[%c4]";
+ }
+   [(set (attr "type")
+@@ -3291,7 +3222,6 @@
+                           VMLAL_LANE))]
+   "TARGET_NEON"
+ {
+-  neon_lane_bounds (operands[4], 0, GET_MODE_NUNITS (<MODE>mode));
+   return "vmlal.<sup>%#<V_sz_elem>\t%q0, %P2, %P3[%c4]";
+ }
+   [(set_attr "type" "neon_mla_<V_elem_ch>_scalar_long")]
+@@ -3307,7 +3237,6 @@
+                           UNSPEC_VQDMLAL_LANE))]
+   "TARGET_NEON"
+ {
+-  neon_lane_bounds (operands[4], 0, GET_MODE_NUNITS (<MODE>mode));
+   return "vqdmlal.<V_s_elem>\t%q0, %P2, %P3[%c4]";
+ }
+   [(set_attr "type" "neon_sat_mla_<V_elem_ch>_scalar_long")]
+@@ -3323,7 +3252,6 @@
+                     UNSPEC_VMLS_LANE))]
+   "TARGET_NEON"
+ {
+-  neon_lane_bounds (operands[4], 0, GET_MODE_NUNITS (<MODE>mode));
+   return "vmls.<V_if_elem>\t%P0, %P2, %P3[%c4]";
+ }
+   [(set (attr "type")
+@@ -3342,7 +3270,6 @@
+                     UNSPEC_VMLS_LANE))]
+   "TARGET_NEON"
+ {
+-  neon_lane_bounds (operands[4], 0, GET_MODE_NUNITS (<MODE>mode));
+   return "vmls.<V_if_elem>\t%q0, %q2, %P3[%c4]";
+ }
+   [(set (attr "type")
+@@ -3361,7 +3288,6 @@
+                           VMLSL_LANE))]
+   "TARGET_NEON"
+ {
+-  neon_lane_bounds (operands[4], 0, GET_MODE_NUNITS (<MODE>mode));
+   return "vmlsl.<sup>%#<V_sz_elem>\t%q0, %P2, %P3[%c4]";
+ }
+   [(set_attr "type" "neon_mla_<V_elem_ch>_scalar_long")]
+@@ -3377,7 +3303,6 @@
+                           UNSPEC_VQDMLSL_LANE))]
+   "TARGET_NEON"
+ {
+-  neon_lane_bounds (operands[4], 0, GET_MODE_NUNITS (<MODE>mode));
+   return "vqdmlsl.<V_s_elem>\t%q0, %P2, %P3[%c4]";
+ }
+   [(set_attr "type" "neon_sat_mla_<V_elem_ch>_scalar_long")]
+@@ -4149,11 +4074,11 @@
+ 
+ ;; Note: Different operand numbering to handle tied registers correctly.
+ (define_insn "*neon_vtrn<mode>_insn"
+-  [(set (match_operand:VDQW 0 "s_register_operand" "=w")
++  [(set (match_operand:VDQW 0 "s_register_operand" "=&w")
+         (unspec:VDQW [(match_operand:VDQW 1 "s_register_operand" "0")
+                       (match_operand:VDQW 3 "s_register_operand" "2")]
+                      UNSPEC_VTRN1))
+-   (set (match_operand:VDQW 2 "s_register_operand" "=w")
++   (set (match_operand:VDQW 2 "s_register_operand" "=&w")
+          (unspec:VDQW [(match_dup 1) (match_dup 3)]
+                      UNSPEC_VTRN2))]
+   "TARGET_NEON"
+@@ -4175,11 +4100,11 @@
+ 
+ ;; Note: Different operand numbering to handle tied registers correctly.
+ (define_insn "*neon_vzip<mode>_insn"
+-  [(set (match_operand:VDQW 0 "s_register_operand" "=w")
++  [(set (match_operand:VDQW 0 "s_register_operand" "=&w")
+         (unspec:VDQW [(match_operand:VDQW 1 "s_register_operand" "0")
+                       (match_operand:VDQW 3 "s_register_operand" "2")]
+                      UNSPEC_VZIP1))
+-   (set (match_operand:VDQW 2 "s_register_operand" "=w")
++   (set (match_operand:VDQW 2 "s_register_operand" "=&w")
+         (unspec:VDQW [(match_dup 1) (match_dup 3)]
+                      UNSPEC_VZIP2))]
+   "TARGET_NEON"
+@@ -4201,11 +4126,11 @@
+ 
+ ;; Note: Different operand numbering to handle tied registers correctly.
+ (define_insn "*neon_vuzp<mode>_insn"
+-  [(set (match_operand:VDQW 0 "s_register_operand" "=w")
++  [(set (match_operand:VDQW 0 "s_register_operand" "=&w")
+         (unspec:VDQW [(match_operand:VDQW 1 "s_register_operand" "0")
+                       (match_operand:VDQW 3 "s_register_operand" "2")]
+                      UNSPEC_VUZP1))
+-   (set (match_operand:VDQW 2 "s_register_operand" "=w")
++   (set (match_operand:VDQW 2 "s_register_operand" "=&w")
+         (unspec:VDQW [(match_dup 1) (match_dup 3)]
+                      UNSPEC_VUZP2))]
+   "TARGET_NEON"
+@@ -4215,7 +4140,7 @@
+ 
+ (define_expand "neon_vreinterpretv8qi<mode>"
+   [(match_operand:V8QI 0 "s_register_operand" "")
+-   (match_operand:VDX 1 "s_register_operand" "")]
++   (match_operand:VD_RE 1 "s_register_operand" "")]
+   "TARGET_NEON"
+ {
+   neon_reinterpret (operands[0], operands[1]);
+@@ -4224,7 +4149,7 @@
+ 
+ (define_expand "neon_vreinterpretv4hi<mode>"
+   [(match_operand:V4HI 0 "s_register_operand" "")
+-   (match_operand:VDX 1 "s_register_operand" "")]
++   (match_operand:VD_RE 1 "s_register_operand" "")]
+   "TARGET_NEON"
+ {
+   neon_reinterpret (operands[0], operands[1]);
+@@ -4233,7 +4158,7 @@
+ 
+ (define_expand "neon_vreinterpretv2si<mode>"
+   [(match_operand:V2SI 0 "s_register_operand" "")
+-   (match_operand:VDX 1 "s_register_operand" "")]
++   (match_operand:VD_RE 1 "s_register_operand" "")]
+   "TARGET_NEON"
+ {
+   neon_reinterpret (operands[0], operands[1]);
+@@ -4242,7 +4167,7 @@
+ 
+ (define_expand "neon_vreinterpretv2sf<mode>"
+   [(match_operand:V2SF 0 "s_register_operand" "")
+-   (match_operand:VDX 1 "s_register_operand" "")]
++   (match_operand:VD_RE 1 "s_register_operand" "")]
+   "TARGET_NEON"
+ {
+   neon_reinterpret (operands[0], operands[1]);
+@@ -4251,7 +4176,7 @@
+ 
+ (define_expand "neon_vreinterpretdi<mode>"
+   [(match_operand:DI 0 "s_register_operand" "")
+-   (match_operand:VDX 1 "s_register_operand" "")]
++   (match_operand:VD_RE 1 "s_register_operand" "")]
+   "TARGET_NEON"
+ {
+   neon_reinterpret (operands[0], operands[1]);
+@@ -4510,14 +4435,14 @@
+ (define_expand "vec_load_lanesoi<mode>"
+   [(set (match_operand:OI 0 "s_register_operand")
+         (unspec:OI [(match_operand:OI 1 "neon_struct_operand")
+-                    (unspec:VQ [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
++                    (unspec:VQ2 [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
+ 		   UNSPEC_VLD2))]
+   "TARGET_NEON")
+ 
+ (define_insn "neon_vld2<mode>"
+   [(set (match_operand:OI 0 "s_register_operand" "=w")
+         (unspec:OI [(match_operand:OI 1 "neon_struct_operand" "Um")
+-                    (unspec:VQ [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
++                    (unspec:VQ2 [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
+                    UNSPEC_VLD2))]
+   "TARGET_NEON"
+   "vld2.<V_sz_elem>\t%h0, %A1"
+@@ -4528,7 +4453,7 @@
+         (unspec:TI [(match_operand:<V_two_elem> 1 "neon_struct_operand" "Um")
+                     (match_operand:TI 2 "s_register_operand" "0")
+                     (match_operand:SI 3 "immediate_operand" "i")
+-                    (unspec:VD [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
++                    (unspec:VD_LANE [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
+                    UNSPEC_VLD2_LANE))]
+   "TARGET_NEON"
+ {
+@@ -4553,7 +4478,7 @@
+         (unspec:OI [(match_operand:<V_two_elem> 1 "neon_struct_operand" "Um")
+                     (match_operand:OI 2 "s_register_operand" "0")
+                     (match_operand:SI 3 "immediate_operand" "i")
+-                    (unspec:VMQ [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
++                    (unspec:VQ_HS [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
+                    UNSPEC_VLD2_LANE))]
+   "TARGET_NEON"
+ {
+@@ -4624,14 +4549,14 @@
+ (define_expand "vec_store_lanesoi<mode>"
+   [(set (match_operand:OI 0 "neon_struct_operand")
+ 	(unspec:OI [(match_operand:OI 1 "s_register_operand")
+-                    (unspec:VQ [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
++                    (unspec:VQ2 [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
+                    UNSPEC_VST2))]
+   "TARGET_NEON")
+ 
+ (define_insn "neon_vst2<mode>"
+   [(set (match_operand:OI 0 "neon_struct_operand" "=Um")
+ 	(unspec:OI [(match_operand:OI 1 "s_register_operand" "w")
+-		    (unspec:VQ [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
++		    (unspec:VQ2 [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
+ 		   UNSPEC_VST2))]
+   "TARGET_NEON"
+   "vst2.<V_sz_elem>\t%h1, %A0"
+@@ -4643,7 +4568,7 @@
+ 	(unspec:<V_two_elem>
+ 	  [(match_operand:TI 1 "s_register_operand" "w")
+ 	   (match_operand:SI 2 "immediate_operand" "i")
+-	   (unspec:VD [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
++	   (unspec:VD_LANE [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
+ 	  UNSPEC_VST2_LANE))]
+   "TARGET_NEON"
+ {
+@@ -4668,7 +4593,7 @@
+         (unspec:<V_two_elem>
+            [(match_operand:OI 1 "s_register_operand" "w")
+             (match_operand:SI 2 "immediate_operand" "i")
+-            (unspec:VMQ [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
++            (unspec:VQ_HS [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
+            UNSPEC_VST2_LANE))]
+   "TARGET_NEON"
+ {
+@@ -4721,7 +4646,7 @@
+ (define_expand "vec_load_lanesci<mode>"
+   [(match_operand:CI 0 "s_register_operand")
+    (match_operand:CI 1 "neon_struct_operand")
+-   (unspec:VQ [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
++   (unspec:VQ2 [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
+   "TARGET_NEON"
+ {
+   emit_insn (gen_neon_vld3<mode> (operands[0], operands[1]));
+@@ -4731,7 +4656,7 @@
+ (define_expand "neon_vld3<mode>"
+   [(match_operand:CI 0 "s_register_operand")
+    (match_operand:CI 1 "neon_struct_operand")
+-   (unspec:VQ [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
++   (unspec:VQ2 [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
+   "TARGET_NEON"
+ {
+   rtx mem;
+@@ -4746,7 +4671,7 @@
+ (define_insn "neon_vld3qa<mode>"
+   [(set (match_operand:CI 0 "s_register_operand" "=w")
+         (unspec:CI [(match_operand:EI 1 "neon_struct_operand" "Um")
+-                    (unspec:VQ [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
++                    (unspec:VQ2 [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
+                    UNSPEC_VLD3A))]
+   "TARGET_NEON"
+ {
+@@ -4766,7 +4691,7 @@
+   [(set (match_operand:CI 0 "s_register_operand" "=w")
+         (unspec:CI [(match_operand:EI 1 "neon_struct_operand" "Um")
+                     (match_operand:CI 2 "s_register_operand" "0")
+-                    (unspec:VQ [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
++                    (unspec:VQ2 [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
+                    UNSPEC_VLD3B))]
+   "TARGET_NEON"
+ {
+@@ -4787,7 +4712,7 @@
+         (unspec:EI [(match_operand:<V_three_elem> 1 "neon_struct_operand" "Um")
+                     (match_operand:EI 2 "s_register_operand" "0")
+                     (match_operand:SI 3 "immediate_operand" "i")
+-                    (unspec:VD [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
++                    (unspec:VD_LANE [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
+                    UNSPEC_VLD3_LANE))]
+   "TARGET_NEON"
+ {
+@@ -4814,7 +4739,7 @@
+         (unspec:CI [(match_operand:<V_three_elem> 1 "neon_struct_operand" "Um")
+                     (match_operand:CI 2 "s_register_operand" "0")
+                     (match_operand:SI 3 "immediate_operand" "i")
+-                    (unspec:VMQ [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
++                    (unspec:VQ_HS [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
+                    UNSPEC_VLD3_LANE))]
+   "TARGET_NEON"
+ {
+@@ -4894,7 +4819,7 @@
+ (define_expand "vec_store_lanesci<mode>"
+   [(match_operand:CI 0 "neon_struct_operand")
+    (match_operand:CI 1 "s_register_operand")
+-   (unspec:VQ [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
++   (unspec:VQ2 [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
+   "TARGET_NEON"
+ {
+   emit_insn (gen_neon_vst3<mode> (operands[0], operands[1]));
+@@ -4904,7 +4829,7 @@
+ (define_expand "neon_vst3<mode>"
+   [(match_operand:CI 0 "neon_struct_operand")
+    (match_operand:CI 1 "s_register_operand")
+-   (unspec:VQ [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
++   (unspec:VQ2 [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
+   "TARGET_NEON"
+ {
+   rtx mem;
+@@ -4919,7 +4844,7 @@
+ (define_insn "neon_vst3qa<mode>"
+   [(set (match_operand:EI 0 "neon_struct_operand" "=Um")
+         (unspec:EI [(match_operand:CI 1 "s_register_operand" "w")
+-                    (unspec:VQ [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
++                    (unspec:VQ2 [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
+                    UNSPEC_VST3A))]
+   "TARGET_NEON"
+ {
+@@ -4938,7 +4863,7 @@
+ (define_insn "neon_vst3qb<mode>"
+   [(set (match_operand:EI 0 "neon_struct_operand" "=Um")
+         (unspec:EI [(match_operand:CI 1 "s_register_operand" "w")
+-                    (unspec:VQ [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
++                    (unspec:VQ2 [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
+                    UNSPEC_VST3B))]
+   "TARGET_NEON"
+ {
+@@ -4959,7 +4884,7 @@
+         (unspec:<V_three_elem>
+            [(match_operand:EI 1 "s_register_operand" "w")
+             (match_operand:SI 2 "immediate_operand" "i")
+-            (unspec:VD [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
++            (unspec:VD_LANE [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
+            UNSPEC_VST3_LANE))]
+   "TARGET_NEON"
+ {
+@@ -4986,7 +4911,7 @@
+         (unspec:<V_three_elem>
+            [(match_operand:CI 1 "s_register_operand" "w")
+             (match_operand:SI 2 "immediate_operand" "i")
+-            (unspec:VMQ [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
++            (unspec:VQ_HS [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
+            UNSPEC_VST3_LANE))]
+   "TARGET_NEON"
+ {
+@@ -5041,7 +4966,7 @@
+ (define_expand "vec_load_lanesxi<mode>"
+   [(match_operand:XI 0 "s_register_operand")
+    (match_operand:XI 1 "neon_struct_operand")
+-   (unspec:VQ [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
++   (unspec:VQ2 [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
+   "TARGET_NEON"
+ {
+   emit_insn (gen_neon_vld4<mode> (operands[0], operands[1]));
+@@ -5051,7 +4976,7 @@
+ (define_expand "neon_vld4<mode>"
+   [(match_operand:XI 0 "s_register_operand")
+    (match_operand:XI 1 "neon_struct_operand")
+-   (unspec:VQ [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
++   (unspec:VQ2 [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
+   "TARGET_NEON"
+ {
+   rtx mem;
+@@ -5066,7 +4991,7 @@
+ (define_insn "neon_vld4qa<mode>"
+   [(set (match_operand:XI 0 "s_register_operand" "=w")
+         (unspec:XI [(match_operand:OI 1 "neon_struct_operand" "Um")
+-                    (unspec:VQ [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
++                    (unspec:VQ2 [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
+                    UNSPEC_VLD4A))]
+   "TARGET_NEON"
+ {
+@@ -5087,7 +5012,7 @@
+   [(set (match_operand:XI 0 "s_register_operand" "=w")
+         (unspec:XI [(match_operand:OI 1 "neon_struct_operand" "Um")
+                     (match_operand:XI 2 "s_register_operand" "0")
+-                    (unspec:VQ [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
++                    (unspec:VQ2 [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
+                    UNSPEC_VLD4B))]
+   "TARGET_NEON"
+ {
+@@ -5109,7 +5034,7 @@
+         (unspec:OI [(match_operand:<V_four_elem> 1 "neon_struct_operand" "Um")
+                     (match_operand:OI 2 "s_register_operand" "0")
+                     (match_operand:SI 3 "immediate_operand" "i")
+-                    (unspec:VD [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
++                    (unspec:VD_LANE [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
+                    UNSPEC_VLD4_LANE))]
+   "TARGET_NEON"
+ {
+@@ -5137,7 +5062,7 @@
+         (unspec:XI [(match_operand:<V_four_elem> 1 "neon_struct_operand" "Um")
+                     (match_operand:XI 2 "s_register_operand" "0")
+                     (match_operand:SI 3 "immediate_operand" "i")
+-                    (unspec:VMQ [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
++                    (unspec:VQ_HS [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
+                    UNSPEC_VLD4_LANE))]
+   "TARGET_NEON"
+ {
+@@ -5222,7 +5147,7 @@
+ (define_expand "vec_store_lanesxi<mode>"
+   [(match_operand:XI 0 "neon_struct_operand")
+    (match_operand:XI 1 "s_register_operand")
+-   (unspec:VQ [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
++   (unspec:VQ2 [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
+   "TARGET_NEON"
+ {
+   emit_insn (gen_neon_vst4<mode> (operands[0], operands[1]));
+@@ -5232,7 +5157,7 @@
+ (define_expand "neon_vst4<mode>"
+   [(match_operand:XI 0 "neon_struct_operand")
+    (match_operand:XI 1 "s_register_operand")
+-   (unspec:VQ [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
++   (unspec:VQ2 [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
+   "TARGET_NEON"
+ {
+   rtx mem;
+@@ -5247,7 +5172,7 @@
+ (define_insn "neon_vst4qa<mode>"
+   [(set (match_operand:OI 0 "neon_struct_operand" "=Um")
+         (unspec:OI [(match_operand:XI 1 "s_register_operand" "w")
+-                    (unspec:VQ [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
++                    (unspec:VQ2 [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
+                    UNSPEC_VST4A))]
+   "TARGET_NEON"
+ {
+@@ -5267,7 +5192,7 @@
+ (define_insn "neon_vst4qb<mode>"
+   [(set (match_operand:OI 0 "neon_struct_operand" "=Um")
+         (unspec:OI [(match_operand:XI 1 "s_register_operand" "w")
+-                    (unspec:VQ [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
++                    (unspec:VQ2 [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
+                    UNSPEC_VST4B))]
+   "TARGET_NEON"
+ {
+@@ -5289,7 +5214,7 @@
+         (unspec:<V_four_elem>
+            [(match_operand:OI 1 "s_register_operand" "w")
+             (match_operand:SI 2 "immediate_operand" "i")
+-            (unspec:VD [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
++            (unspec:VD_LANE [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
+            UNSPEC_VST4_LANE))]
+   "TARGET_NEON"
+ {
+@@ -5317,7 +5242,7 @@
+         (unspec:<V_four_elem>
+            [(match_operand:XI 1 "s_register_operand" "w")
+             (match_operand:SI 2 "immediate_operand" "i")
+-            (unspec:VMQ [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
++            (unspec:VQ_HS [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
+            UNSPEC_VST4_LANE))]
+   "TARGET_NEON"
+ {
+--- a/src/gcc/config/arm/sync.md
++++ b/src/gcc/config/arm/sync.md
+@@ -50,14 +50,11 @@
+   {
+     if (TARGET_HAVE_DMB)
+       {
+-	/* Note we issue a system level barrier. We should consider issuing
+-	   a inner shareabilty zone barrier here instead, ie. "DMB ISH".  */
+-	/* ??? Differentiate based on SEQ_CST vs less strict?  */
+-	return "dmb\tsy";
++	return "dmb\\tish";
+       }
+ 
+     if (TARGET_HAVE_DMB_MCR)
+-      return "mcr\tp15, 0, r0, c7, c10, 5";
++      return "mcr\\tp15, 0, r0, c7, c10, 5";
+ 
+     gcc_unreachable ();
+   }
+--- a/src/gcc/config/arm/thumb2.md
++++ b/src/gcc/config/arm/thumb2.md
+@@ -300,7 +300,7 @@
+    ldr%?\\t%0, %1
+    str%?\\t%1, %0
+    str%?\\t%1, %0"
+-  [(set_attr "type" "mov_reg,alu_imm,alu_imm,alu_imm,mov_imm,load1,load1,store1,store1")
++  [(set_attr "type" "mov_reg,mov_imm,mov_imm,mvn_imm,mov_imm,load1,load1,store1,store1")
+    (set_attr "length" "2,4,2,4,4,4,4,4,4")
+    (set_attr "predicable" "yes")
+    (set_attr "predicable_short_it" "yes,no,yes,no,no,no,no,no,no")
+@@ -486,12 +486,12 @@
+ )
+ 
+ (define_insn_and_split "*thumb2_movsicc_insn"
+-  [(set (match_operand:SI 0 "s_register_operand" "=l,l,r,r,r,r,r,r,r,r,r")
++  [(set (match_operand:SI 0 "s_register_operand" "=l,l,r,r,r,r,r,r,r,r,r,r")
+ 	(if_then_else:SI
+ 	 (match_operator 3 "arm_comparison_operator"
+ 	  [(match_operand 4 "cc_register" "") (const_int 0)])
+-	 (match_operand:SI 1 "arm_not_operand" "0 ,lPy,0 ,0,rI,K,rI,rI,K ,K,r")
+-	 (match_operand:SI 2 "arm_not_operand" "lPy,0 ,rI,K,0 ,0,rI,K ,rI,K,r")))]
++	 (match_operand:SI 1 "arm_not_operand" "0 ,lPy,0 ,0,rI,K,I ,r,rI,K ,K,r")
++	 (match_operand:SI 2 "arm_not_operand" "lPy,0 ,rI,K,0 ,0,rI,I,K ,rI,K,r")))]
+   "TARGET_THUMB2"
+   "@
+    it\\t%D3\;mov%D3\\t%0, %2
+@@ -504,12 +504,14 @@
+    #
+    #
+    #
++   #
+    #"
+    ; alt 6: ite\\t%d3\;mov%d3\\t%0, %1\;mov%D3\\t%0, %2
+-   ; alt 7: ite\\t%d3\;mov%d3\\t%0, %1\;mvn%D3\\t%0, #%B2
+-   ; alt 8: ite\\t%d3\;mvn%d3\\t%0, #%B1\;mov%D3\\t%0, %2
+-   ; alt 9: ite\\t%d3\;mvn%d3\\t%0, #%B1\;mvn%D3\\t%0, #%B2
+-   ; alt 10: ite\\t%d3\;mov%d3\\t%0, %1\;mov%D3\\t%0, %2
++   ; alt 7: ite\\t%d3\;mov%d3\\t%0, %1\;mov%D3\\t%0, %2
++   ; alt 8: ite\\t%d3\;mov%d3\\t%0, %1\;mvn%D3\\t%0, #%B2
++   ; alt 9: ite\\t%d3\;mvn%d3\\t%0, #%B1\;mov%D3\\t%0, %2
++   ; alt 10: ite\\t%d3\;mvn%d3\\t%0, #%B1\;mvn%D3\\t%0, #%B2
++   ; alt 11: ite\\t%d3\;mov%d3\\t%0, %1\;mov%D3\\t%0, %2
+   "&& reload_completed"
+   [(const_int 0)]
+   {
+@@ -540,10 +542,30 @@
+                                                operands[2])));
+     DONE;
+   }
+-  [(set_attr "length" "4,4,6,6,6,6,10,10,10,10,6")
+-   (set_attr "enabled_for_depr_it" "yes,yes,no,no,no,no,no,no,no,no,yes")
++  [(set_attr "length" "4,4,6,6,6,6,10,8,10,10,10,6")
++   (set_attr "enabled_for_depr_it" "yes,yes,no,no,no,no,no,no,no,no,no,yes")
+    (set_attr "conds" "use")
+-   (set_attr "type" "multiple")]
++   (set_attr_alternative "type"
++                         [(if_then_else (match_operand 2 "const_int_operand" "")
++                                        (const_string "mov_imm")
++                                        (const_string "mov_reg"))
++                          (if_then_else (match_operand 1 "const_int_operand" "")
++                                        (const_string "mov_imm")
++                                        (const_string "mov_reg"))
++                          (if_then_else (match_operand 2 "const_int_operand" "")
++                                        (const_string "mov_imm")
++                                        (const_string "mov_reg"))
++                          (const_string "mvn_imm")
++                          (if_then_else (match_operand 1 "const_int_operand" "")
++                                        (const_string "mov_imm")
++                                        (const_string "mov_reg"))
++                          (const_string "mvn_imm")
++                          (const_string "multiple")
++                          (const_string "multiple")
++                          (const_string "multiple")
++                          (const_string "multiple")
++                          (const_string "multiple")
++                          (const_string "multiple")])]
+ )
+ 
+ (define_insn "*thumb2_movsfcc_soft_insn"
+@@ -1182,7 +1204,11 @@
+   "
+   [(set_attr "predicable" "yes")
+    (set_attr "length" "2")
+-   (set_attr "type" "alu_sreg")]
++   (set_attr_alternative "type"
++                         [(if_then_else (match_operand 2 "const_int_operand" "")
++                                        (const_string "alu_imm")
++                                        (const_string "alu_sreg"))
++                          (const_string "alu_imm")])]
+ )
+ 
+ (define_insn "*thumb2_subsi_short"
+@@ -1247,14 +1273,21 @@
+   "
+   [(set_attr "conds" "set")
+    (set_attr "length" "2,2,4")
+-   (set_attr "type" "alu_sreg")]
++   (set_attr_alternative "type"
++                         [(if_then_else (match_operand 2 "const_int_operand" "")
++                                        (const_string "alus_imm")
++                                        (const_string "alus_sreg"))
++                          (const_string "alus_imm")
++                          (if_then_else (match_operand 2 "const_int_operand" "")
++                                        (const_string "alus_imm")
++                                        (const_string "alus_sreg"))])]
+ )
+ 
+ (define_insn "*thumb2_addsi3_compare0_scratch"
+   [(set (reg:CC_NOOV CC_REGNUM)
+ 	(compare:CC_NOOV
+-	  (plus:SI (match_operand:SI 0 "s_register_operand" "l,l,  r,r")
+-		   (match_operand:SI 1 "arm_add_operand"    "Pv,l,IL,r"))
++	  (plus:SI (match_operand:SI 0 "s_register_operand" "l,  r")
++		   (match_operand:SI 1 "arm_add_operand"    "lPv,rIL"))
+ 	  (const_int 0)))]
+   "TARGET_THUMB2"
+   "*
+@@ -1271,8 +1304,10 @@
+       return \"cmn\\t%0, %1\";
+   "
+   [(set_attr "conds" "set")
+-   (set_attr "length" "2,2,4,4")
+-   (set_attr "type" "alus_imm,alus_sreg,alus_imm,alus_sreg")]
++   (set_attr "length" "2,4")
++   (set (attr "type") (if_then_else (match_operand 1 "const_int_operand" "")
++                                    (const_string "alus_imm")
++                                    (const_string "alus_sreg")))]
+ )
+ 
+ (define_insn "*thumb2_mulsi_short"
+--- a/src/gcc/config/arm/types.md
++++ b/src/gcc/config/arm/types.md
+@@ -375,6 +375,8 @@
+ ; neon_from_gp
+ ; neon_from_gp_q
+ ; neon_ldr
++; neon_ldp
++; neon_ldp_q
+ ; neon_load1_1reg
+ ; neon_load1_1reg_q
+ ; neon_load1_2reg
+@@ -408,6 +410,8 @@
+ ; neon_load4_one_lane
+ ; neon_load4_one_lane_q
+ ; neon_str
++; neon_stp
++; neon_stp_q
+ ; neon_store1_1reg
+ ; neon_store1_1reg_q
+ ; neon_store1_2reg
+@@ -887,6 +891,8 @@
+   neon_from_gp_q,\
+ \
+   neon_ldr,\
++  neon_ldp,\
++  neon_ldp_q,\
+   neon_load1_1reg,\
+   neon_load1_1reg_q,\
+   neon_load1_2reg,\
+@@ -924,6 +930,8 @@
+   neon_load4_one_lane_q,\
+ \
+   neon_str,\
++  neon_stp,\
++  neon_stp_q,\
+   neon_store1_1reg,\
+   neon_store1_1reg_q,\
+   neon_store1_2reg,\
+@@ -1126,7 +1134,8 @@
+           neon_sat_mla_s_long, neon_sat_mla_h_scalar_long,\
+           neon_sat_mla_s_scalar_long,\
+           neon_to_gp, neon_to_gp_q, neon_from_gp, neon_from_gp_q,\
+-          neon_ldr, neon_load1_1reg, neon_load1_1reg_q, neon_load1_2reg,\
++	   neon_ldr, neon_ldp, neon_ldp_q,\
++	   neon_load1_1reg, neon_load1_1reg_q, neon_load1_2reg,\
+           neon_load1_2reg_q, neon_load1_3reg, neon_load1_3reg_q,\
+           neon_load1_4reg, neon_load1_4reg_q, neon_load1_all_lanes,\
+           neon_load1_all_lanes_q, neon_load1_one_lane, neon_load1_one_lane_q,\
+@@ -1137,7 +1146,8 @@
+           neon_load3_all_lanes_q, neon_load3_one_lane, neon_load3_one_lane_q,\
+           neon_load4_4reg, neon_load4_4reg_q, neon_load4_all_lanes,\
+           neon_load4_all_lanes_q, neon_load4_one_lane, neon_load4_one_lane_q,\
+-          neon_str, neon_store1_1reg, neon_store1_1reg_q, neon_store1_2reg,\
++	   neon_str, neon_stp, neon_stp_q,\
++	   neon_store1_1reg, neon_store1_1reg_q, neon_store1_2reg,\
+           neon_store1_2reg_q, neon_store1_3reg, neon_store1_3reg_q,\
+           neon_store1_4reg, neon_store1_4reg_q, neon_store1_one_lane,\
+           neon_store1_one_lane_q, neon_store2_2reg, neon_store2_2reg_q,\
+@@ -1146,10 +1156,12 @@
+           neon_store3_one_lane, neon_store3_one_lane_q, neon_store4_4reg,\
+           neon_store4_4reg_q, neon_store4_one_lane, neon_store4_one_lane_q,\
+           neon_fp_abd_s, neon_fp_abd_s_q, neon_fp_abd_d, neon_fp_abd_d_q,\
++          neon_fp_abs_s, neon_fp_abs_s_q, neon_fp_abs_d, neon_fp_abs_d_q,\
+           neon_fp_addsub_s, neon_fp_addsub_s_q, neon_fp_addsub_d,\
+           neon_fp_addsub_d_q, neon_fp_compare_s, neon_fp_compare_s_q,\
+           neon_fp_compare_d, neon_fp_compare_d_q, neon_fp_minmax_s,\
+           neon_fp_minmax_s_q, neon_fp_minmax_d, neon_fp_minmax_d_q,\
++          neon_fp_neg_s, neon_fp_neg_s_q, neon_fp_neg_d, neon_fp_neg_d_q,\
+           neon_fp_reduc_add_s, neon_fp_reduc_add_s_q, neon_fp_reduc_add_d,\
+           neon_fp_reduc_add_d_q, neon_fp_reduc_minmax_s,
+           neon_fp_reduc_minmax_s_q, neon_fp_reduc_minmax_d,\
+@@ -1157,6 +1169,8 @@
+           neon_fp_cvt_narrow_s_q, neon_fp_cvt_narrow_d_q,\
+           neon_fp_cvt_widen_h, neon_fp_cvt_widen_s, neon_fp_to_int_s,\
+           neon_fp_to_int_s_q, neon_int_to_fp_s, neon_int_to_fp_s_q,\
++          neon_fp_to_int_d, neon_fp_to_int_d_q,\
++          neon_int_to_fp_d, neon_int_to_fp_d_q,\
+           neon_fp_round_s, neon_fp_round_s_q, neon_fp_recpe_s,\
+           neon_fp_recpe_s_q,\
+           neon_fp_recpe_d, neon_fp_recpe_d_q, neon_fp_recps_s,\
+--- a/src/gcc/config/arm/unknown-elf.h
++++ b/src/gcc/config/arm/unknown-elf.h
+@@ -32,7 +32,9 @@
+ #define UNKNOWN_ELF_STARTFILE_SPEC	" crti%O%s crtbegin%O%s crt0%O%s"
+ 
+ #undef  STARTFILE_SPEC
+-#define STARTFILE_SPEC	UNKNOWN_ELF_STARTFILE_SPEC
++#define STARTFILE_SPEC	\
++  "%{Ofast|ffast-math|funsafe-math-optimizations:crtfastmath.o%s} "	\
++  UNKNOWN_ELF_STARTFILE_SPEC
+ 
+ #define UNKNOWN_ELF_ENDFILE_SPEC	"crtend%O%s crtn%O%s"
+ 
+@@ -80,7 +82,9 @@
+ 									\
+       ASM_OUTPUT_ALIGN (FILE, floor_log2 (ALIGN / BITS_PER_UNIT));	\
+       ASM_OUTPUT_LABEL (FILE, NAME);					\
+-      fprintf (FILE, "\t.space\t%d\n", SIZE ? (int)(SIZE) : 1);		\
++      fprintf (FILE, "\t.space\t%d\n", SIZE ? (int) SIZE : 1);		\
++      fprintf (FILE, "\t.size\t%s, %d\n",				\
++	       NAME, SIZE ? (int) SIZE : 1);				\
+     }									\
+   while (0)
+ 
+--- a/src/gcc/config/arm/vxworks.h
++++ b/src/gcc/config/arm/vxworks.h
+@@ -40,7 +40,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+       builtin_define ("CPU=ARMARCH5");		\
+     else if (arm_arch4)				\
+       {						\
+-	if (thumb_code)				\
++	if (TARGET_THUMB)			\
+ 	  builtin_define ("CPU=ARMARCH4_T");	\
+ 	else					\
+ 	  builtin_define ("CPU=ARMARCH4");	\
+--- a/src/gcc/config/c6x/c6x.c
++++ b/src/gcc/config/c6x/c6x.c
+@@ -3532,7 +3532,7 @@ try_rename_operands (rtx_insn *head, rtx_insn *tail, unit_req_table reqs,
+   best_reg =
+     find_rename_reg (this_head, super_class, &unavailable, old_reg, true);
+ 
+-  regrename_do_replace (this_head, best_reg);
++  gcc_assert (regrename_do_replace (this_head, best_reg));
+ 
+   count_unit_reqs (new_reqs, head, PREV_INSN (tail));
+   merge_unit_reqs (new_reqs);
+@@ -3545,7 +3545,7 @@ try_rename_operands (rtx_insn *head, rtx_insn *tail, unit_req_table reqs,
+ 	       unit_req_imbalance (reqs), unit_req_imbalance (new_reqs));
+     }
+   if (unit_req_imbalance (new_reqs) > unit_req_imbalance (reqs))
+-    regrename_do_replace (this_head, old_reg);
++    gcc_assert (regrename_do_replace (this_head, old_reg));
+   else
+     memcpy (reqs, new_reqs, sizeof (unit_req_table));
+ 
+--- a/src/gcc/config/glibc-stdint.h
++++ b/src/gcc/config/glibc-stdint.h
+@@ -22,6 +22,12 @@ a copy of the GCC Runtime Library Exception along with this program;
+ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+ <http://www.gnu.org/licenses/>.  */
+ 
++/* Systems using musl libc should use this header and make sure
++   OPTION_MUSL is defined correctly before using the TYPE macros. */
++#ifndef OPTION_MUSL
++#define OPTION_MUSL 0
++#endif
++
+ #define SIG_ATOMIC_TYPE "int"
+ 
+ #define INT8_TYPE "signed char"
+@@ -43,12 +49,12 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+ #define UINT_LEAST64_TYPE (LONG_TYPE_SIZE == 64 ? "long unsigned int" : "long long unsigned int")
+ 
+ #define INT_FAST8_TYPE "signed char"
+-#define INT_FAST16_TYPE (LONG_TYPE_SIZE == 64 ? "long int" : "int")
+-#define INT_FAST32_TYPE (LONG_TYPE_SIZE == 64 ? "long int" : "int")
++#define INT_FAST16_TYPE (LONG_TYPE_SIZE == 64 && !OPTION_MUSL ? "long int" : "int")
++#define INT_FAST32_TYPE (LONG_TYPE_SIZE == 64 && !OPTION_MUSL ? "long int" : "int")
+ #define INT_FAST64_TYPE (LONG_TYPE_SIZE == 64 ? "long int" : "long long int")
+ #define UINT_FAST8_TYPE "unsigned char"
+-#define UINT_FAST16_TYPE (LONG_TYPE_SIZE == 64 ? "long unsigned int" : "unsigned int")
+-#define UINT_FAST32_TYPE (LONG_TYPE_SIZE == 64 ? "long unsigned int" : "unsigned int")
++#define UINT_FAST16_TYPE (LONG_TYPE_SIZE == 64 && !OPTION_MUSL ? "long unsigned int" : "unsigned int")
++#define UINT_FAST32_TYPE (LONG_TYPE_SIZE == 64 && !OPTION_MUSL ? "long unsigned int" : "unsigned int")
+ #define UINT_FAST64_TYPE (LONG_TYPE_SIZE == 64 ? "long unsigned int" : "long long unsigned int")
+ 
+ #define INTPTR_TYPE (LONG_TYPE_SIZE == 64 ? "long int" : "int")
+--- a/src/gcc/config/linux.h
++++ b/src/gcc/config/linux.h
+@@ -32,10 +32,14 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+ #define OPTION_GLIBC  (DEFAULT_LIBC == LIBC_GLIBC)
+ #define OPTION_UCLIBC (DEFAULT_LIBC == LIBC_UCLIBC)
+ #define OPTION_BIONIC (DEFAULT_LIBC == LIBC_BIONIC)
++#undef OPTION_MUSL
++#define OPTION_MUSL   (DEFAULT_LIBC == LIBC_MUSL)
+ #else
+ #define OPTION_GLIBC  (linux_libc == LIBC_GLIBC)
+ #define OPTION_UCLIBC (linux_libc == LIBC_UCLIBC)
+ #define OPTION_BIONIC (linux_libc == LIBC_BIONIC)
++#undef OPTION_MUSL
++#define OPTION_MUSL   (linux_libc == LIBC_MUSL)
+ #endif
+ 
+ #define GNU_USER_TARGET_OS_CPP_BUILTINS()			\
+@@ -50,21 +54,25 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+     } while (0)
+ 
+ /* Determine which dynamic linker to use depending on whether GLIBC or
+-   uClibc or Bionic is the default C library and whether
+-   -muclibc or -mglibc or -mbionic has been passed to change the default.  */
++   uClibc or Bionic or musl is the default C library and whether
++   -muclibc or -mglibc or -mbionic or -mmusl has been passed to change
++   the default.  */
+ 
+-#define CHOOSE_DYNAMIC_LINKER1(LIBC1, LIBC2, LIBC3, LD1, LD2, LD3)	\
+-  "%{" LIBC2 ":" LD2 ";:%{" LIBC3 ":" LD3 ";:" LD1 "}}"
++#define CHOOSE_DYNAMIC_LINKER1(LIBC1, LIBC2, LIBC3, LIBC4, LD1, LD2, LD3, LD4)	\
++  "%{" LIBC2 ":" LD2 ";:%{" LIBC3 ":" LD3 ";:%{" LIBC4 ":" LD4 ";:" LD1 "}}}"
+ 
+ #if DEFAULT_LIBC == LIBC_GLIBC
+-#define CHOOSE_DYNAMIC_LINKER(G, U, B) \
+-  CHOOSE_DYNAMIC_LINKER1 ("mglibc", "muclibc", "mbionic", G, U, B)
++#define CHOOSE_DYNAMIC_LINKER(G, U, B, M) \
++  CHOOSE_DYNAMIC_LINKER1 ("mglibc", "muclibc", "mbionic", "mmusl", G, U, B, M)
+ #elif DEFAULT_LIBC == LIBC_UCLIBC
+-#define CHOOSE_DYNAMIC_LINKER(G, U, B) \
+-  CHOOSE_DYNAMIC_LINKER1 ("muclibc", "mglibc", "mbionic", U, G, B)
++#define CHOOSE_DYNAMIC_LINKER(G, U, B, M) \
++  CHOOSE_DYNAMIC_LINKER1 ("muclibc", "mglibc", "mbionic", "mmusl", U, G, B, M)
+ #elif DEFAULT_LIBC == LIBC_BIONIC
+-#define CHOOSE_DYNAMIC_LINKER(G, U, B) \
+-  CHOOSE_DYNAMIC_LINKER1 ("mbionic", "mglibc", "muclibc", B, G, U)
++#define CHOOSE_DYNAMIC_LINKER(G, U, B, M) \
++  CHOOSE_DYNAMIC_LINKER1 ("mbionic", "mglibc", "muclibc", "mmusl", B, G, U, M)
++#elif DEFAULT_LIBC == LIBC_MUSL
++#define CHOOSE_DYNAMIC_LINKER(G, U, B, M) \
++  CHOOSE_DYNAMIC_LINKER1 ("mmusl", "mglibc", "muclibc", "mbionic", M, G, U, B)
+ #else
+ #error "Unsupported DEFAULT_LIBC"
+ #endif /* DEFAULT_LIBC */
+@@ -81,24 +89,100 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+ #define BIONIC_DYNAMIC_LINKER32 "/system/bin/linker"
+ #define BIONIC_DYNAMIC_LINKER64 "/system/bin/linker64"
+ #define BIONIC_DYNAMIC_LINKERX32 "/system/bin/linkerx32"
++/* Should be redefined for each target that supports musl.  */
++#define MUSL_DYNAMIC_LINKER "/dev/null"
++#define MUSL_DYNAMIC_LINKER32 "/dev/null"
++#define MUSL_DYNAMIC_LINKER64 "/dev/null"
++#define MUSL_DYNAMIC_LINKERX32 "/dev/null"
+ 
+ #define GNU_USER_DYNAMIC_LINKER						\
+   CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER, UCLIBC_DYNAMIC_LINKER,	\
+-			 BIONIC_DYNAMIC_LINKER)
++			 BIONIC_DYNAMIC_LINKER, MUSL_DYNAMIC_LINKER)
+ #define GNU_USER_DYNAMIC_LINKER32					\
+   CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER32, UCLIBC_DYNAMIC_LINKER32, \
+-			 BIONIC_DYNAMIC_LINKER32)
++			 BIONIC_DYNAMIC_LINKER32, MUSL_DYNAMIC_LINKER32)
+ #define GNU_USER_DYNAMIC_LINKER64					\
+   CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER64, UCLIBC_DYNAMIC_LINKER64, \
+-			 BIONIC_DYNAMIC_LINKER64)
++			 BIONIC_DYNAMIC_LINKER64, MUSL_DYNAMIC_LINKER64)
+ #define GNU_USER_DYNAMIC_LINKERX32					\
+   CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKERX32, UCLIBC_DYNAMIC_LINKERX32, \
+-			 BIONIC_DYNAMIC_LINKERX32)
++			 BIONIC_DYNAMIC_LINKERX32, MUSL_DYNAMIC_LINKERX32)
+ 
+ /* Whether we have Bionic libc runtime */
+ #undef TARGET_HAS_BIONIC
+ #define TARGET_HAS_BIONIC (OPTION_BIONIC)
+ 
++/* musl avoids problematic includes by rearranging the include directories.
++ * Unfortunately, this is mostly duplicated from cppdefault.c */
++#if DEFAULT_LIBC == LIBC_MUSL
++#define INCLUDE_DEFAULTS_MUSL_GPP			\
++    { GPLUSPLUS_INCLUDE_DIR, "G++", 1, 1,		\
++      GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 0 },		\
++    { GPLUSPLUS_TOOL_INCLUDE_DIR, "G++", 1, 1,		\
++      GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 1 },		\
++    { GPLUSPLUS_BACKWARD_INCLUDE_DIR, "G++", 1, 1,	\
++      GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 0 },
++
++#ifdef LOCAL_INCLUDE_DIR
++#define INCLUDE_DEFAULTS_MUSL_LOCAL			\
++    { LOCAL_INCLUDE_DIR, 0, 0, 1, 1, 2 },		\
++    { LOCAL_INCLUDE_DIR, 0, 0, 1, 1, 0 },
++#else
++#define INCLUDE_DEFAULTS_MUSL_LOCAL
++#endif
++
++#ifdef PREFIX_INCLUDE_DIR
++#define INCLUDE_DEFAULTS_MUSL_PREFIX			\
++    { PREFIX_INCLUDE_DIR, 0, 0, 1, 0, 0},
++#else
++#define INCLUDE_DEFAULTS_MUSL_PREFIX
++#endif
++
++#ifdef CROSS_INCLUDE_DIR
++#define INCLUDE_DEFAULTS_MUSL_CROSS			\
++    { CROSS_INCLUDE_DIR, "GCC", 0, 0, 0, 0},
++#else
++#define INCLUDE_DEFAULTS_MUSL_CROSS
++#endif
++
++#ifdef TOOL_INCLUDE_DIR
++#define INCLUDE_DEFAULTS_MUSL_TOOL			\
++    { TOOL_INCLUDE_DIR, "BINUTILS", 0, 1, 0, 0},
++#else
++#define INCLUDE_DEFAULTS_MUSL_TOOL
++#endif
++
++#ifdef NATIVE_SYSTEM_HEADER_DIR
++#define INCLUDE_DEFAULTS_MUSL_NATIVE			\
++    { NATIVE_SYSTEM_HEADER_DIR, 0, 0, 0, 1, 2 },	\
++    { NATIVE_SYSTEM_HEADER_DIR, 0, 0, 0, 1, 0 },
++#else
++#define INCLUDE_DEFAULTS_MUSL_NATIVE
++#endif
++
++#if defined (CROSS_DIRECTORY_STRUCTURE) && !defined (TARGET_SYSTEM_ROOT)
++# undef INCLUDE_DEFAULTS_MUSL_LOCAL
++# define INCLUDE_DEFAULTS_MUSL_LOCAL
++# undef INCLUDE_DEFAULTS_MUSL_NATIVE
++# define INCLUDE_DEFAULTS_MUSL_NATIVE
++#else
++# undef INCLUDE_DEFAULTS_MUSL_CROSS
++# define INCLUDE_DEFAULTS_MUSL_CROSS
++#endif
++
++#undef INCLUDE_DEFAULTS
++#define INCLUDE_DEFAULTS				\
++  {							\
++    INCLUDE_DEFAULTS_MUSL_GPP				\
++    INCLUDE_DEFAULTS_MUSL_PREFIX			\
++    INCLUDE_DEFAULTS_MUSL_CROSS				\
++    INCLUDE_DEFAULTS_MUSL_TOOL				\
++    INCLUDE_DEFAULTS_MUSL_NATIVE			\
++    { GCC_INCLUDE_DIR, "GCC", 0, 1, 0, 0 },		\
++    { 0, 0, 0, 0, 0, 0 }				\
++  }
++#endif
++
+ #if (DEFAULT_LIBC == LIBC_UCLIBC) && defined (SINGLE_LIBC) /* uClinux */
+ /* This is a *uclinux* target.  We don't define below macros to normal linux
+    versions, because doing so would require *uclinux* targets to include
+--- a/src/gcc/config/linux.opt
++++ b/src/gcc/config/linux.opt
+@@ -28,5 +28,9 @@ Target Report RejectNegative Var(linux_libc,LIBC_GLIBC) Negative(muclibc)
+ Use GNU C library
+ 
+ muclibc
+-Target Report RejectNegative Var(linux_libc,LIBC_UCLIBC) Negative(mbionic)
++Target Report RejectNegative Var(linux_libc,LIBC_UCLIBC) Negative(mmusl)
+ Use uClibc C library
++
++mmusl
++Target Report RejectNegative Var(linux_libc,LIBC_MUSL) Negative(mbionic)
++Use musl C library
+--- a/src/gcc/config/mips/linux.h
++++ b/src/gcc/config/mips/linux.h
+@@ -37,7 +37,13 @@ along with GCC; see the file COPYING3.  If not see
+ #define UCLIBC_DYNAMIC_LINKERN32 \
+   "%{mnan=2008:/lib32/ld-uClibc-mipsn8.so.0;:/lib32/ld-uClibc.so.0}"
+ 
++#undef MUSL_DYNAMIC_LINKER32
++#define MUSL_DYNAMIC_LINKER32 "/lib/ld-musl-mips%{EL:el}%{msoft-float:-sf}.so.1"
++#undef MUSL_DYNAMIC_LINKER64
++#define MUSL_DYNAMIC_LINKER64 "/lib/ld-musl-mips64%{EL:el}%{msoft-float:-sf}.so.1"
++#define MUSL_DYNAMIC_LINKERN32 "/lib/ld-musl-mipsn32%{EL:el}%{msoft-float:-sf}.so.1"
++
+ #define BIONIC_DYNAMIC_LINKERN32 "/system/bin/linker32"
+ #define GNU_USER_DYNAMIC_LINKERN32 \
+   CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKERN32, UCLIBC_DYNAMIC_LINKERN32, \
+-                         BIONIC_DYNAMIC_LINKERN32)
++                         BIONIC_DYNAMIC_LINKERN32, MUSL_DYNAMIC_LINKERN32)
+--- a/src/gcc/config/rs6000/linux.h
++++ b/src/gcc/config/rs6000/linux.h
+@@ -30,10 +30,14 @@
+ #define OPTION_GLIBC  (DEFAULT_LIBC == LIBC_GLIBC)
+ #define OPTION_UCLIBC (DEFAULT_LIBC == LIBC_UCLIBC)
+ #define OPTION_BIONIC (DEFAULT_LIBC == LIBC_BIONIC)
++#undef OPTION_MUSL
++#define OPTION_MUSL   (DEFAULT_LIBC == LIBC_MUSL)
+ #else
+ #define OPTION_GLIBC  (linux_libc == LIBC_GLIBC)
+ #define OPTION_UCLIBC (linux_libc == LIBC_UCLIBC)
+ #define OPTION_BIONIC (linux_libc == LIBC_BIONIC)
++#undef OPTION_MUSL
++#define OPTION_MUSL   (linux_libc == LIBC_MUSL)
+ #endif
+ 
+ /* Determine what functions are present at the runtime;
+--- a/src/gcc/config/rs6000/linux64.h
++++ b/src/gcc/config/rs6000/linux64.h
+@@ -299,10 +299,14 @@ extern int dot_symbols;
+ #define OPTION_GLIBC  (DEFAULT_LIBC == LIBC_GLIBC)
+ #define OPTION_UCLIBC (DEFAULT_LIBC == LIBC_UCLIBC)
+ #define OPTION_BIONIC (DEFAULT_LIBC == LIBC_BIONIC)
++#undef OPTION_MUSL
++#define OPTION_MUSL   (DEFAULT_LIBC == LIBC_MUSL)
+ #else
+ #define OPTION_GLIBC  (linux_libc == LIBC_GLIBC)
+ #define OPTION_UCLIBC (linux_libc == LIBC_UCLIBC)
+ #define OPTION_BIONIC (linux_libc == LIBC_BIONIC)
++#undef OPTION_MUSL
++#define OPTION_MUSL   (linux_libc == LIBC_MUSL)
+ #endif
+ 
+ /* Determine what functions are present at the runtime;
+--- a/src/gcc/configure
++++ b/src/gcc/configure
+@@ -767,10 +767,6 @@ REPORT_BUGS_TEXI
+ REPORT_BUGS_TO
+ PKGVERSION
+ CONFIGURE_SPECS
+-CROSS_SYSTEM_HEADER_DIR
+-TARGET_SYSTEM_ROOT_DEFINE
+-TARGET_SYSTEM_ROOT
+-SYSROOT_CFLAGS_FOR_TARGET
+ enable_shared
+ enable_fixed_point
+ enable_decimal_float
+@@ -809,6 +805,10 @@ LDFLAGS
+ CFLAGS
+ CC
+ GENINSRC
++CROSS_SYSTEM_HEADER_DIR
++TARGET_SYSTEM_ROOT_DEFINE
++TARGET_SYSTEM_ROOT
++SYSROOT_CFLAGS_FOR_TARGET
+ target_subdir
+ host_subdir
+ build_subdir
+@@ -870,6 +870,9 @@ ac_user_opts='
+ enable_option_checking
+ with_build_libsubdir
+ with_local_prefix
++with_native_system_header_dir
++with_build_sysroot
++with_sysroot
+ with_gxx_include_dir
+ with_cpp_install_dir
+ enable_generated_files_in_srcdir
+@@ -896,9 +899,6 @@ enable_tls
+ enable_objc_gc
+ with_dwarf2
+ enable_shared
+-with_native_system_header_dir
+-with_build_sysroot
+-with_sysroot
+ with_specs
+ with_pkgversion
+ with_bugurl
+@@ -1680,6 +1680,12 @@ Optional Packages:
+   --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
+   --with-build-libsubdir=DIR  Directory where to find libraries for build system
+   --with-local-prefix=DIR specifies directory to put local include
++  --with-native-system-header-dir=dir
++                          use dir as the directory to look for standard
++                          system header files in.  Defaults to /usr/include.
++  --with-build-sysroot=sysroot
++                          use sysroot as the system root during the build
++  --with-sysroot[=DIR]    search for usr/lib, usr/include, et al, within DIR
+   --with-gxx-include-dir=DIR
+                           specifies directory to put g++ header files
+   --with-cpp-install-dir=DIR
+@@ -1692,14 +1698,9 @@ Optional Packages:
+   --with-as               arrange to use the specified as (full pathname)
+   --with-stabs            arrange to use stabs instead of host debug format
+   --with-dwarf2           force the default debug format to be DWARF 2
+-  --with-native-system-header-dir=dir
+-                          use dir as the directory to look for standard
+-                          system header files in.  Defaults to /usr/include.
+-  --with-build-sysroot=sysroot
+-                          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 (AArch64, SH and x86-64 only)
+   --with-gnu-ld           assume the C compiler uses GNU ld default=no
+@@ -3339,6 +3340,83 @@ if test x$local_prefix = x; then
+ 	local_prefix=/usr/local
+ fi
+ 
++
++# Check whether --with-native-system-header-dir was given.
++if test "${with_native_system_header_dir+set}" = set; then :
++  withval=$with_native_system_header_dir;
++ case ${with_native_system_header_dir} in
++ yes|no) as_fn_error "bad value ${withval} given for --with-native-system-header-dir" "$LINENO" 5 ;;
++ /* | [A-Za-z]:[\\/]*) ;;
++ *) as_fn_error "--with-native-system-header-dir argument ${withval} must be an absolute directory" "$LINENO" 5 ;;
++ esac
++ configured_native_system_header_dir="${withval}"
++
++else
++  configured_native_system_header_dir=
++fi
++
++
++
++# Check whether --with-build-sysroot was given.
++if test "${with_build_sysroot+set}" = set; then :
++  withval=$with_build_sysroot; if test x"$withval" != x ; then
++     SYSROOT_CFLAGS_FOR_TARGET="--sysroot=$withval"
++   fi
++else
++  SYSROOT_CFLAGS_FOR_TARGET=
++fi
++
++
++
++if test "x$prefix" = xNONE; then
++ test_prefix=/usr/local
++else
++ test_prefix=$prefix
++fi
++if test "x$exec_prefix" = xNONE; then
++ test_exec_prefix=$test_prefix
++else
++ test_exec_prefix=$exec_prefix
++fi
++
++
++# Check whether --with-sysroot was given.
++if test "${with_sysroot+set}" = set; then :
++  withval=$with_sysroot;
++ case ${with_sysroot} in
++ /) ;;
++ */) with_sysroot=`echo $with_sysroot | sed 's,/$,,'` ;;
++ esac
++ case ${with_sysroot} in
++ yes) TARGET_SYSTEM_ROOT='${exec_prefix}/${target_noncanonical}/sys-root' ;;
++ *) TARGET_SYSTEM_ROOT=$with_sysroot ;;
++ esac
++
++ TARGET_SYSTEM_ROOT_DEFINE='-DTARGET_SYSTEM_ROOT=\"$(TARGET_SYSTEM_ROOT)\"'
++ CROSS_SYSTEM_HEADER_DIR='$(TARGET_SYSTEM_ROOT)$${sysroot_headers_suffix}$(NATIVE_SYSTEM_HEADER_DIR)'
++
++ case ${TARGET_SYSTEM_ROOT} in
++ "${test_prefix}"|"${test_prefix}/"*|\
++ "${test_exec_prefix}"|"${test_exec_prefix}/"*|\
++ '${prefix}'|'${prefix}/'*|\
++ '${exec_prefix}'|'${exec_prefix}/'*)
++   t="$TARGET_SYSTEM_ROOT_DEFINE -DTARGET_SYSTEM_ROOT_RELOCATABLE"
++   TARGET_SYSTEM_ROOT_DEFINE="$t"
++   ;;
++ esac
++
++else
++
++ TARGET_SYSTEM_ROOT=
++ TARGET_SYSTEM_ROOT_DEFINE=
++ CROSS_SYSTEM_HEADER_DIR='$(gcc_tooldir)/sys-include'
++
++fi
++
++
++
++
++
+ # Don't set gcc_gxx_include_dir to gxx_include_dir since that's only
+ # passed in by the toplevel make and thus we'd get different behavior
+ # depending on where we built the sources.
+@@ -3372,7 +3450,9 @@ gcc_gxx_include_dir_add_sysroot=0
+ if test "${with_sysroot+set}" = set; then
+   gcc_gxx_without_sysroot=`expr "${gcc_gxx_include_dir}" : "${with_sysroot}"'\(.*\)'`
+   if test "${gcc_gxx_without_sysroot}"; then
+-    gcc_gxx_include_dir="${gcc_gxx_without_sysroot}"
++    if test x${with_sysroot} != x/; then
++      gcc_gxx_include_dir="${gcc_gxx_without_sysroot}"
++    fi
+     gcc_gxx_include_dir_add_sysroot=1
+   fi
+ fi
+@@ -7269,79 +7349,6 @@ fi
+ 
+ 
+ 
+-# Check whether --with-native-system-header-dir was given.
+-if test "${with_native_system_header_dir+set}" = set; then :
+-  withval=$with_native_system_header_dir;
+- case ${with_native_system_header_dir} in
+- yes|no) as_fn_error "bad value ${withval} given for --with-native-system-header-dir" "$LINENO" 5 ;;
+- /* | [A-Za-z]:[\\/]*) ;;
+- *) as_fn_error "--with-native-system-header-dir argument ${withval} must be an absolute directory" "$LINENO" 5 ;;
+- esac
+- configured_native_system_header_dir="${withval}"
+-
+-else
+-  configured_native_system_header_dir=
+-fi
+-
+-
+-
+-# Check whether --with-build-sysroot was given.
+-if test "${with_build_sysroot+set}" = set; then :
+-  withval=$with_build_sysroot; if test x"$withval" != x ; then
+-     SYSROOT_CFLAGS_FOR_TARGET="--sysroot=$withval"
+-   fi
+-else
+-  SYSROOT_CFLAGS_FOR_TARGET=
+-fi
+-
+-
+-
+-if test "x$prefix" = xNONE; then
+- test_prefix=/usr/local
+-else
+- test_prefix=$prefix
+-fi
+-if test "x$exec_prefix" = xNONE; then
+- test_exec_prefix=$test_prefix
+-else
+- test_exec_prefix=$exec_prefix
+-fi
+-
+-
+-# Check whether --with-sysroot was given.
+-if test "${with_sysroot+set}" = set; then :
+-  withval=$with_sysroot;
+- case ${with_sysroot} in
+- yes) TARGET_SYSTEM_ROOT='${exec_prefix}/${target_noncanonical}/sys-root' ;;
+- *) TARGET_SYSTEM_ROOT=$with_sysroot ;;
+- esac
+-
+- TARGET_SYSTEM_ROOT_DEFINE='-DTARGET_SYSTEM_ROOT=\"$(TARGET_SYSTEM_ROOT)\"'
+- CROSS_SYSTEM_HEADER_DIR='$(TARGET_SYSTEM_ROOT)$${sysroot_headers_suffix}$(NATIVE_SYSTEM_HEADER_DIR)'
+-
+- case ${TARGET_SYSTEM_ROOT} in
+- "${test_prefix}"|"${test_prefix}/"*|\
+- "${test_exec_prefix}"|"${test_exec_prefix}/"*|\
+- '${prefix}'|'${prefix}/'*|\
+- '${exec_prefix}'|'${exec_prefix}/'*)
+-   t="$TARGET_SYSTEM_ROOT_DEFINE -DTARGET_SYSTEM_ROOT_RELOCATABLE"
+-   TARGET_SYSTEM_ROOT_DEFINE="$t"
+-   ;;
+- esac
+-
+-else
+-
+- TARGET_SYSTEM_ROOT=
+- TARGET_SYSTEM_ROOT_DEFINE=
+- CROSS_SYSTEM_HEADER_DIR='$(gcc_tooldir)/sys-include'
+-
+-fi
+-
+-
+-
+-
+-
+-
+ # Check whether --with-specs was given.
+ if test "${with_specs+set}" = set; then :
+   withval=$with_specs; CONFIGURE_SPECS=$withval
+@@ -7362,7 +7369,7 @@ if test "${with_pkgversion+set}" = set; then :
+       *)   PKGVERSION="($withval) " ;;
+      esac
+ else
+-  PKGVERSION="(GCC) "
++  PKGVERSION="(Linaro GCC `cat $srcdir/LINARO-VERSION`) "
+ 
+ fi
+ 
+@@ -18162,7 +18169,7 @@ else
+   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+   lt_status=$lt_dlunknown
+   cat > conftest.$ac_ext <<_LT_EOF
+-#line 18165 "configure"
++#line 18172 "configure"
+ #include "confdefs.h"
+ 
+ #if HAVE_DLFCN_H
+@@ -18268,7 +18275,7 @@ else
+   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+   lt_status=$lt_dlunknown
+   cat > conftest.$ac_ext <<_LT_EOF
+-#line 18271 "configure"
++#line 18278 "configure"
+ #include "confdefs.h"
+ 
+ #if HAVE_DLFCN_H
+@@ -27802,6 +27809,9 @@ if test "${gcc_cv_libc_provides_ssp+set}" = set; then :
+ else
+   gcc_cv_libc_provides_ssp=no
+     case "$target" in
++       *-*-musl*)
++	 # All versions of musl provide stack protector
++	 gcc_cv_libc_provides_ssp=yes;;
+        *-*-linux* | *-*-kfreebsd*-gnu | *-*-knetbsd*-gnu)
+       # glibc 2.4 and later provides __stack_chk_fail and
+       # either __stack_chk_guard, or TLS access to stack guard canary.
+@@ -27834,6 +27844,7 @@ fi
+ 	 # <http://gcc.gnu.org/ml/gcc/2008-10/msg00130.html>) and for now
+ 	 # simply assert that glibc does provide this, which is true for all
+ 	 # realistically usable GNU/Hurd configurations.
++	 # All supported versions of musl provide it as well
+ 	 gcc_cv_libc_provides_ssp=yes;;
+        *-*-darwin* | *-*-freebsd*)
+ 	 ac_fn_c_check_func "$LINENO" "__stack_chk_fail" "ac_cv_func___stack_chk_fail"
+@@ -27930,6 +27941,9 @@ case "$target" in
+       gcc_cv_target_dl_iterate_phdr=no
+     fi
+     ;;
++  *-linux-musl*)
++    gcc_cv_target_dl_iterate_phdr=yes
++    ;;
+ esac
+ 
+ if test x$gcc_cv_target_dl_iterate_phdr = xyes; then
+--- a/src/gcc/configure.ac
++++ b/src/gcc/configure.ac
+@@ -121,6 +121,73 @@ if test x$local_prefix = x; then
+ 	local_prefix=/usr/local
+ fi
+ 
++AC_ARG_WITH([native-system-header-dir],
++  [  --with-native-system-header-dir=dir
++                          use dir as the directory to look for standard
++                          system header files in.  Defaults to /usr/include.],
++[
++ case ${with_native_system_header_dir} in
++ yes|no) AC_MSG_ERROR([bad value ${withval} given for --with-native-system-header-dir]) ;;
++ /* | [[A-Za-z]]:[[\\/]]*) ;;
++ *) AC_MSG_ERROR([--with-native-system-header-dir argument ${withval} must be an absolute directory]) ;;
++ esac
++ configured_native_system_header_dir="${withval}"
++], [configured_native_system_header_dir=])
++
++AC_ARG_WITH(build-sysroot, 
++  [AS_HELP_STRING([--with-build-sysroot=sysroot],
++                  [use sysroot as the system root during the build])],
++  [if test x"$withval" != x ; then
++     SYSROOT_CFLAGS_FOR_TARGET="--sysroot=$withval"
++   fi],
++  [SYSROOT_CFLAGS_FOR_TARGET=])
++AC_SUBST(SYSROOT_CFLAGS_FOR_TARGET)
++
++if test "x$prefix" = xNONE; then
++ test_prefix=/usr/local
++else
++ test_prefix=$prefix
++fi
++if test "x$exec_prefix" = xNONE; then
++ test_exec_prefix=$test_prefix
++else
++ test_exec_prefix=$exec_prefix
++fi
++
++AC_ARG_WITH(sysroot,
++[AS_HELP_STRING([[--with-sysroot[=DIR]]],
++		[search for usr/lib, usr/include, et al, within DIR])],
++[
++ case ${with_sysroot} in
++ /) ;;
++ */) with_sysroot=`echo $with_sysroot | sed 's,/$,,'` ;;
++ esac
++ case ${with_sysroot} in
++ yes) TARGET_SYSTEM_ROOT='${exec_prefix}/${target_noncanonical}/sys-root' ;;
++ *) TARGET_SYSTEM_ROOT=$with_sysroot ;;
++ esac
++   
++ TARGET_SYSTEM_ROOT_DEFINE='-DTARGET_SYSTEM_ROOT=\"$(TARGET_SYSTEM_ROOT)\"'
++ CROSS_SYSTEM_HEADER_DIR='$(TARGET_SYSTEM_ROOT)$${sysroot_headers_suffix}$(NATIVE_SYSTEM_HEADER_DIR)'
++	
++ case ${TARGET_SYSTEM_ROOT} in
++ "${test_prefix}"|"${test_prefix}/"*|\
++ "${test_exec_prefix}"|"${test_exec_prefix}/"*|\
++ '${prefix}'|'${prefix}/'*|\
++ '${exec_prefix}'|'${exec_prefix}/'*)
++   t="$TARGET_SYSTEM_ROOT_DEFINE -DTARGET_SYSTEM_ROOT_RELOCATABLE"
++   TARGET_SYSTEM_ROOT_DEFINE="$t"
++   ;;
++ esac
++], [
++ TARGET_SYSTEM_ROOT=
++ TARGET_SYSTEM_ROOT_DEFINE=
++ CROSS_SYSTEM_HEADER_DIR='$(gcc_tooldir)/sys-include'
++])
++AC_SUBST(TARGET_SYSTEM_ROOT)
++AC_SUBST(TARGET_SYSTEM_ROOT_DEFINE)
++AC_SUBST(CROSS_SYSTEM_HEADER_DIR)
++
+ # Don't set gcc_gxx_include_dir to gxx_include_dir since that's only
+ # passed in by the toplevel make and thus we'd get different behavior
+ # depending on where we built the sources.
+@@ -152,7 +219,9 @@ gcc_gxx_include_dir_add_sysroot=0
+ if test "${with_sysroot+set}" = set; then
+   gcc_gxx_without_sysroot=`expr "${gcc_gxx_include_dir}" : "${with_sysroot}"'\(.*\)'`
+   if test "${gcc_gxx_without_sysroot}"; then
+-    gcc_gxx_include_dir="${gcc_gxx_without_sysroot}"
++    if test x${with_sysroot} != x/; then
++      gcc_gxx_include_dir="${gcc_gxx_without_sysroot}"
++    fi
+     gcc_gxx_include_dir_add_sysroot=1
+   fi
+ fi
+@@ -791,69 +860,6 @@ AC_ARG_ENABLE(shared,
+ ], [enable_shared=yes])
+ AC_SUBST(enable_shared)
+ 
+-AC_ARG_WITH([native-system-header-dir],
+-  [  --with-native-system-header-dir=dir
+-                          use dir as the directory to look for standard
+-                          system header files in.  Defaults to /usr/include.],
+-[
+- case ${with_native_system_header_dir} in
+- yes|no) AC_MSG_ERROR([bad value ${withval} given for --with-native-system-header-dir]) ;;
+- /* | [[A-Za-z]]:[[\\/]]*) ;;
+- *) AC_MSG_ERROR([--with-native-system-header-dir argument ${withval} must be an absolute directory]) ;;
+- esac
+- configured_native_system_header_dir="${withval}"
+-], [configured_native_system_header_dir=])
+-
+-AC_ARG_WITH(build-sysroot, 
+-  [AS_HELP_STRING([--with-build-sysroot=sysroot],
+-                  [use sysroot as the system root during the build])],
+-  [if test x"$withval" != x ; then
+-     SYSROOT_CFLAGS_FOR_TARGET="--sysroot=$withval"
+-   fi],
+-  [SYSROOT_CFLAGS_FOR_TARGET=])
+-AC_SUBST(SYSROOT_CFLAGS_FOR_TARGET)
+-
+-if test "x$prefix" = xNONE; then
+- test_prefix=/usr/local
+-else
+- test_prefix=$prefix
+-fi
+-if test "x$exec_prefix" = xNONE; then
+- test_exec_prefix=$test_prefix
+-else
+- test_exec_prefix=$exec_prefix
+-fi
+-
+-AC_ARG_WITH(sysroot,
+-[AS_HELP_STRING([[--with-sysroot[=DIR]]],
+-		[search for usr/lib, usr/include, et al, within DIR])],
+-[
+- case ${with_sysroot} in
+- yes) TARGET_SYSTEM_ROOT='${exec_prefix}/${target_noncanonical}/sys-root' ;;
+- *) TARGET_SYSTEM_ROOT=$with_sysroot ;;
+- esac
+-   
+- TARGET_SYSTEM_ROOT_DEFINE='-DTARGET_SYSTEM_ROOT=\"$(TARGET_SYSTEM_ROOT)\"'
+- CROSS_SYSTEM_HEADER_DIR='$(TARGET_SYSTEM_ROOT)$${sysroot_headers_suffix}$(NATIVE_SYSTEM_HEADER_DIR)'
+-	
+- case ${TARGET_SYSTEM_ROOT} in
+- "${test_prefix}"|"${test_prefix}/"*|\
+- "${test_exec_prefix}"|"${test_exec_prefix}/"*|\
+- '${prefix}'|'${prefix}/'*|\
+- '${exec_prefix}'|'${exec_prefix}/'*)
+-   t="$TARGET_SYSTEM_ROOT_DEFINE -DTARGET_SYSTEM_ROOT_RELOCATABLE"
+-   TARGET_SYSTEM_ROOT_DEFINE="$t"
+-   ;;
+- esac
+-], [
+- TARGET_SYSTEM_ROOT=
+- TARGET_SYSTEM_ROOT_DEFINE=
+- CROSS_SYSTEM_HEADER_DIR='$(gcc_tooldir)/sys-include'
+-])
+-AC_SUBST(TARGET_SYSTEM_ROOT)
+-AC_SUBST(TARGET_SYSTEM_ROOT_DEFINE)
+-AC_SUBST(CROSS_SYSTEM_HEADER_DIR)
+-
+ AC_ARG_WITH(specs,
+   [AS_HELP_STRING([--with-specs=SPECS],
+                   [add SPECS to driver command-line processing])],
+@@ -862,7 +868,7 @@ AC_ARG_WITH(specs,
+ )
+ 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
+@@ -5282,6 +5288,9 @@ AC_CACHE_CHECK(__stack_chk_fail in target C library,
+       gcc_cv_libc_provides_ssp,
+       [gcc_cv_libc_provides_ssp=no
+     case "$target" in
++       *-*-musl*)
++	 # All versions of musl provide stack protector
++	 gcc_cv_libc_provides_ssp=yes;;
+        *-*-linux* | *-*-kfreebsd*-gnu | *-*-knetbsd*-gnu)
+       # glibc 2.4 and later provides __stack_chk_fail and
+       # either __stack_chk_guard, or TLS access to stack guard canary.
+@@ -5308,6 +5317,7 @@ AC_CACHE_CHECK(__stack_chk_fail in target C library,
+ 	 # <http://gcc.gnu.org/ml/gcc/2008-10/msg00130.html>) and for now
+ 	 # simply assert that glibc does provide this, which is true for all
+ 	 # realistically usable GNU/Hurd configurations.
++	 # All supported versions of musl provide it as well
+ 	 gcc_cv_libc_provides_ssp=yes;;
+        *-*-darwin* | *-*-freebsd*)
+ 	 AC_CHECK_FUNC(__stack_chk_fail,[gcc_cv_libc_provides_ssp=yes],
+@@ -5381,6 +5391,9 @@ case "$target" in
+       gcc_cv_target_dl_iterate_phdr=no
+     fi
+     ;;
++  *-linux-musl*)
++    gcc_cv_target_dl_iterate_phdr=yes
++    ;;
+ esac
+ GCC_TARGET_TEMPLATE([TARGET_DL_ITERATE_PHDR])
+ if test x$gcc_cv_target_dl_iterate_phdr = xyes; then
+--- a/src/gcc/cp/Make-lang.in
++++ b/src/gcc/cp/Make-lang.in
+@@ -155,7 +155,7 @@ check-c++-subtargets : check-g++-subtargets
+ # List of targets that can use the generic check- rule and its // variant.
+ lang_checks += check-g++
+ lang_checks_parallelized += check-g++
+-# For description see comment above check_gcc_parallelize in gcc/Makefile.in.
++# For description see the check_$lang_parallelize comment in gcc/Makefile.in.
+ check_g++_parallelize = 10000
+ #

+ # Install hooks:
+@@ -221,6 +221,7 @@ c++.mostlyclean:
+ 	-rm -f doc/g++.1
+ 	-rm -f cp/*$(objext)
+ 	-rm -f cp/*$(coverageexts)
++	-rm -f xg++$(exeext) g++-cross$(exeext) cc1plus$(exeext)
+ c++.clean:
+ c++.distclean:
+ 	-rm -f cp/config.status cp/Makefile
+--- a/src/gcc/cppbuiltin.c
++++ b/src/gcc/cppbuiltin.c
+@@ -62,18 +62,41 @@ parse_basever (int *major, int *minor, int *patchlevel)
+     *patchlevel = s_patchlevel;
+ }
+ 
++/* Parse a LINAROVER version string of the format "M.m-year.month[-spin][~dev]"
++   to create Linaro release number YYYYMM and spin version.  */
++static void
++parse_linarover (int *release, int *spin)
++{
++  static int s_year = -1, s_month, s_spin;
++
++  if (s_year == -1)
++    if (sscanf (LINAROVER, "%*[^-]-%d.%d-%d", &s_year, &s_month, &s_spin) != 3)
++      {
++	sscanf (LINAROVER, "%*[^-]-%d.%d", &s_year, &s_month);
++	s_spin = 0;
++      }
++
++  if (release)
++    *release = s_year * 100 + s_month;
++
++  if (spin)
++    *spin = s_spin;
++}
+ 
+ /* Define __GNUC__, __GNUC_MINOR__, __GNUC_PATCHLEVEL__ and __VERSION__.  */
+ static void
+ define__GNUC__ (cpp_reader *pfile)
+ {
+-  int major, minor, patchlevel;
++  int major, minor, patchlevel, linaro_release, linaro_spin;
+ 
+   parse_basever (&major, &minor, &patchlevel);
++  parse_linarover (&linaro_release, &linaro_spin);
+   cpp_define_formatted (pfile, "__GNUC__=%d", major);
+   cpp_define_formatted (pfile, "__GNUC_MINOR__=%d", minor);
+   cpp_define_formatted (pfile, "__GNUC_PATCHLEVEL__=%d", patchlevel);
+   cpp_define_formatted (pfile, "__VERSION__=\"%s\"", version_string);
++  cpp_define_formatted (pfile, "__LINARO_RELEASE__=%d", linaro_release);
++  cpp_define_formatted (pfile, "__LINARO_SPIN__=%d", linaro_spin);
+   cpp_define_formatted (pfile, "__ATOMIC_RELAXED=%d", MEMMODEL_RELAXED);
+   cpp_define_formatted (pfile, "__ATOMIC_SEQ_CST=%d", MEMMODEL_SEQ_CST);
+   cpp_define_formatted (pfile, "__ATOMIC_ACQUIRE=%d", MEMMODEL_ACQUIRE);
+--- a/src/gcc/cprop.c
++++ b/src/gcc/cprop.c
+@@ -285,6 +285,15 @@ cprop_constant_p (const_rtx x)
+   return CONSTANT_P (x) && (GET_CODE (x) != CONST || shared_const_p (x));
+ }
+ 
++/* Determine whether the rtx X should be treated as a register that can
++   be propagated.  Any pseudo-register is fine.  */
++
++static bool
++cprop_reg_p (const_rtx x)
++{
++  return REG_P (x) && !HARD_REGISTER_P (x);
++}
++
+ /* Scan SET present in INSN and add an entry to the hash TABLE.
+    IMPLICIT is true if it's an implicit set, false otherwise.  */
+ 
+@@ -295,8 +304,7 @@ hash_scan_set (rtx set, rtx_insn *insn, struct hash_table_d *table,
+   rtx src = SET_SRC (set);
+   rtx dest = SET_DEST (set);
+ 
+-  if (REG_P (dest)
+-      && ! HARD_REGISTER_P (dest)
++  if (cprop_reg_p (dest)
+       && reg_available_p (dest, insn)
+       && can_copy_p (GET_MODE (dest)))
+     {
+@@ -321,9 +329,8 @@ hash_scan_set (rtx set, rtx_insn *insn, struct hash_table_d *table,
+ 	src = XEXP (note, 0), set = gen_rtx_SET (VOIDmode, dest, src);
+ 
+       /* Record sets for constant/copy propagation.  */
+-      if ((REG_P (src)
++      if ((cprop_reg_p (src)
+ 	   && src != dest
+-	   && ! HARD_REGISTER_P (src)
+ 	   && reg_available_p (src, insn))
+ 	  || cprop_constant_p (src))
+ 	insert_set_in_table (dest, src, insn, table, implicit);
+@@ -758,12 +765,37 @@ try_replace_reg (rtx from, rtx to, rtx_insn *insn)
+   int success = 0;
+   rtx set = single_set (insn);
+ 
++  bool check_rtx_costs = true;
++  bool speed = optimize_bb_for_speed_p (BLOCK_FOR_INSN (insn));
++  int old_cost = set ? set_rtx_cost (set, speed) : 0;
++
++  if ((note != 0
++      && REG_NOTE_KIND (note) == REG_EQUAL
++      && (GET_CODE (XEXP (note, 0)) == CONST
++	  || CONSTANT_P (XEXP (note, 0))))
++      || (set && CONSTANT_P (SET_SRC (set))))
++    check_rtx_costs = false;
++
+   /* Usually we substitute easy stuff, so we won't copy everything.
+      We however need to take care to not duplicate non-trivial CONST
+      expressions.  */
+   to = copy_rtx (to);
+ 
+   validate_replace_src_group (from, to, insn);
++
++  /* If TO is a constant, check the cost of the set after propagation
++     to the cost of the set before the propagation.  If the cost is
++     higher, then do not replace FROM with TO.  */
++
++  if (check_rtx_costs
++      && CONSTANT_P (to)
++      && (set_rtx_cost (set, speed) > old_cost))
++    {
++      cancel_changes (0);
++      return false;
++    }
++
++
+   if (num_changes_pending () && apply_change_group ())
+     success = 1;
+ 
+@@ -821,15 +853,15 @@ try_replace_reg (rtx from, rtx to, rtx_insn *insn)
+   return success;
+ }
+ 
+-/* Find a set of REGNOs that are available on entry to INSN's block.  Return
+-   NULL no such set is found.  */
++/* Find a set of REGNOs that are available on entry to INSN's block.  If found,
++   SET_RET[0] will be assigned a set with a register source and SET_RET[1] a
++   set with a constant source.  If not found the corresponding entry is set to
++   NULL.  */
+ 
+-static struct cprop_expr *
+-find_avail_set (int regno, rtx_insn *insn)
++static void
++find_avail_set (int regno, rtx_insn *insn, struct cprop_expr *set_ret[2])
+ {
+-  /* SET1 contains the last set found that can be returned to the caller for
+-     use in a substitution.  */
+-  struct cprop_expr *set1 = 0;
++  set_ret[0] = set_ret[1] = NULL;
+ 
+   /* Loops are not possible here.  To get a loop we would need two sets
+      available at the start of the block containing INSN.  i.e. we would
+@@ -869,8 +901,10 @@ find_avail_set (int regno, rtx_insn *insn)
+          If the source operand changed, we may still use it for the next
+          iteration of this loop, but we may not use it for substitutions.  */
+ 
+-      if (cprop_constant_p (src) || reg_not_set_p (src, insn))
+-	set1 = set;
++      if (cprop_constant_p (src))
++	set_ret[1] = set;
++      else if (reg_not_set_p (src, insn))
++	set_ret[0] = set;
+ 
+       /* If the source of the set is anything except a register, then
+ 	 we have reached the end of the copy chain.  */
+@@ -881,10 +915,6 @@ find_avail_set (int regno, rtx_insn *insn)
+ 	 and see if we have an available copy into SRC.  */
+       regno = REGNO (src);
+     }
+-
+-  /* SET1 holds the last set that was available and anticipatable at
+-     INSN.  */
+-  return set1;
+ }
+ 
+ /* Subroutine of cprop_insn that tries to propagate constants into
+@@ -1050,40 +1080,40 @@ cprop_insn (rtx_insn *insn)
+   int changed = 0, changed_this_round;
+   rtx note;
+ 
+-retry:
+-  changed_this_round = 0;
+-  reg_use_count = 0;
+-  note_uses (&PATTERN (insn), find_used_regs, NULL);
+-
+-  /* We may win even when propagating constants into notes.  */
+-  note = find_reg_equal_equiv_note (insn);
+-  if (note)
+-    find_used_regs (&XEXP (note, 0), NULL);
+-
+-  for (i = 0; i < reg_use_count; i++)
++  do
+     {
+-      rtx reg_used = reg_use_table[i];
+-      unsigned int regno = REGNO (reg_used);
+-      rtx src;
+-      struct cprop_expr *set;
++      changed_this_round = 0;
++      reg_use_count = 0;
++      note_uses (&PATTERN (insn), find_used_regs, NULL);
+ 
+-      /* If the register has already been set in this block, there's
+-	 nothing we can do.  */
+-      if (! reg_not_set_p (reg_used, insn))
+-	continue;
++      /* We may win even when propagating constants into notes.  */
++      note = find_reg_equal_equiv_note (insn);
++      if (note)
++	find_used_regs (&XEXP (note, 0), NULL);
+ 
+-      /* Find an assignment that sets reg_used and is available
+-	 at the start of the block.  */
+-      set = find_avail_set (regno, insn);
+-      if (! set)
+-	continue;
++      for (i = 0; i < reg_use_count; i++)
++	{
++	  rtx reg_used = reg_use_table[i];
++	  unsigned int regno = REGNO (reg_used);
++	  rtx src_cst = NULL, src_reg = NULL;
++	  struct cprop_expr *set[2];
+ 
+-      src = set->src;
++	  /* If the register has already been set in this block, there's
++	     nothing we can do.  */
++	  if (! reg_not_set_p (reg_used, insn))
++	    continue;
+ 
+-      /* Constant propagation.  */
+-      if (cprop_constant_p (src))
+-	{
+-          if (constprop_register (reg_used, src, insn))
++	  /* Find an assignment that sets reg_used and is available
++	     at the start of the block.  */
++	  find_avail_set (regno, insn, set);
++	  if (set[0])
++	    src_reg = set[0]->src;
++	  if (set[1])
++	    src_cst = set[1]->src;
++
++	  /* Constant propagation.  */
++	  if (src_cst && cprop_constant_p (src_cst)
++	      && constprop_register (reg_used, src_cst, insn))
+ 	    {
+ 	      changed_this_round = changed = 1;
+ 	      global_const_prop_count++;
+@@ -1093,18 +1123,16 @@ retry:
+ 			   "GLOBAL CONST-PROP: Replacing reg %d in ", regno);
+ 		  fprintf (dump_file, "insn %d with constant ",
+ 			   INSN_UID (insn));
+-		  print_rtl (dump_file, src);
++		  print_rtl (dump_file, src_cst);
+ 		  fprintf (dump_file, "\n");
+ 		}
+ 	      if (insn->deleted ())
+ 		return 1;
+ 	    }
+-	}
+-      else if (REG_P (src)
+-	       && REGNO (src) >= FIRST_PSEUDO_REGISTER
+-	       && REGNO (src) != regno)
+-	{
+-	  if (try_replace_reg (reg_used, src, insn))
++	  /* Copy propagation.  */
++	  else if (src_reg && cprop_reg_p (src_reg)
++		   && REGNO (src_reg) != regno
++		   && try_replace_reg (reg_used, src_reg, insn))
+ 	    {
+ 	      changed_this_round = changed = 1;
+ 	      global_copy_prop_count++;
+@@ -1113,7 +1141,7 @@ retry:
+ 		  fprintf (dump_file,
+ 			   "GLOBAL COPY-PROP: Replacing reg %d in insn %d",
+ 			   regno, INSN_UID (insn));
+-		  fprintf (dump_file, " with reg %d\n", REGNO (src));
++		  fprintf (dump_file, " with reg %d\n", REGNO (src_reg));
+ 		}
+ 
+ 	      /* The original insn setting reg_used may or may not now be
+@@ -1123,12 +1151,10 @@ retry:
+ 		 and made things worse.  */
+ 	    }
+ 	}
+-
+-      /* If try_replace_reg simplified the insn, the regs found
+-	 by find_used_regs may not be valid anymore.  Start over.  */
+-      if (changed_this_round)
+-	goto retry;
+     }
++  /* If try_replace_reg simplified the insn, the regs found by find_used_regs
++     may not be valid anymore.  Start over.  */
++  while (changed_this_round);
+ 
+   if (changed && DEBUG_INSN_P (insn))
+     return 0;
+@@ -1191,7 +1217,7 @@ do_local_cprop (rtx x, rtx_insn *insn)
+   /* Rule out USE instructions and ASM statements as we don't want to
+      change the hard registers mentioned.  */
+   if (REG_P (x)
+-      && (REGNO (x) >= FIRST_PSEUDO_REGISTER
++      && (cprop_reg_p (x)
+           || (GET_CODE (PATTERN (insn)) != USE
+ 	      && asm_noperands (PATTERN (insn)) < 0)))
+     {
+@@ -1207,7 +1233,7 @@ do_local_cprop (rtx x, rtx_insn *insn)
+ 
+ 	  if (cprop_constant_p (this_rtx))
+ 	    newcnst = this_rtx;
+-	  if (REG_P (this_rtx) && REGNO (this_rtx) >= FIRST_PSEUDO_REGISTER
++	  if (cprop_reg_p (this_rtx)
+ 	      /* Don't copy propagate if it has attached REG_EQUIV note.
+ 		 At this point this only function parameters should have
+ 		 REG_EQUIV notes and if the argument slot is used somewhere
+@@ -1328,9 +1354,8 @@ implicit_set_cond_p (const_rtx cond)
+   if (GET_CODE (cond) != EQ && GET_CODE (cond) != NE)
+     return false;
+ 
+-  /* The first operand of COND must be a pseudo-reg.  */
+-  if (! REG_P (XEXP (cond, 0))
+-      || HARD_REGISTER_P (XEXP (cond, 0)))
++  /* The first operand of COND must be a register we can propagate.  */
++  if (!cprop_reg_p (XEXP (cond, 0)))
+     return false;
+ 
+   /* The second operand of COND must be a suitable constant.  */
+--- a/src/gcc/cse.c
++++ b/src/gcc/cse.c
+@@ -4540,14 +4540,50 @@ cse_insn (rtx_insn *insn)
+   canonicalize_insn (insn, &sets, n_sets);
+ 
+   /* If this insn has a REG_EQUAL note, store the equivalent value in SRC_EQV,
+-     if different, or if the DEST is a STRICT_LOW_PART.  The latter condition
+-     is necessary because SRC_EQV is handled specially for this case, and if
+-     it isn't set, then there will be no equivalence for the destination.  */
++     if different, or if the DEST is a STRICT_LOW_PART/ZERO_EXTRACT.  The
++     latter condition is necessary because SRC_EQV is handled specially for
++     this case, and if it isn't set, then there will be no equivalence
++     for the destination.  */
+   if (n_sets == 1 && REG_NOTES (insn) != 0
+-      && (tem = find_reg_note (insn, REG_EQUAL, NULL_RTX)) != 0
+-      && (! rtx_equal_p (XEXP (tem, 0), SET_SRC (sets[0].rtl))
+-	  || GET_CODE (SET_DEST (sets[0].rtl)) == STRICT_LOW_PART))
+-    src_eqv = copy_rtx (XEXP (tem, 0));
++      && (tem = find_reg_note (insn, REG_EQUAL, NULL_RTX)) != 0)
++    {
++
++      if (GET_CODE (SET_DEST (sets[0].rtl)) != ZERO_EXTRACT
++	  && (! rtx_equal_p (XEXP (tem, 0), SET_SRC (sets[0].rtl))
++	      || GET_CODE (SET_DEST (sets[0].rtl)) == STRICT_LOW_PART))
++	src_eqv = copy_rtx (XEXP (tem, 0));
++      /* If DEST is of the form ZERO_EXTACT, as in:
++	 (set (zero_extract:SI (reg:SI 119)
++		  (const_int 16 [0x10])
++		  (const_int 16 [0x10]))
++	      (const_int 51154 [0xc7d2]))
++	 REG_EQUAL note will specify the value of register (reg:SI 119) at this
++	 point.  Note that this is different from SRC_EQV. We can however
++	 calculate SRC_EQV with the position and width of ZERO_EXTRACT.  */
++      else if (GET_CODE (SET_DEST (sets[0].rtl)) == ZERO_EXTRACT
++	       && CONST_INT_P (XEXP (tem, 0))
++	       && CONST_INT_P (XEXP (SET_DEST (sets[0].rtl), 1))
++	       && CONST_INT_P (XEXP (SET_DEST (sets[0].rtl), 2)))
++	{
++	  rtx dest_reg = XEXP (SET_DEST (sets[0].rtl), 0);
++	  rtx width = XEXP (SET_DEST (sets[0].rtl), 1);
++	  rtx pos = XEXP (SET_DEST (sets[0].rtl), 2);
++	  HOST_WIDE_INT val = INTVAL (XEXP (tem, 0));
++	  HOST_WIDE_INT mask;
++	  unsigned int shift;
++	  if (BITS_BIG_ENDIAN)
++	    shift = GET_MODE_PRECISION (GET_MODE (dest_reg))
++	      - INTVAL (pos) - INTVAL (width);
++	  else
++	    shift = INTVAL (pos);
++	  if (INTVAL (width) == HOST_BITS_PER_WIDE_INT)
++	    mask = ~(HOST_WIDE_INT) 0;
++	  else
++	    mask = ((HOST_WIDE_INT) 1 << INTVAL (width)) - 1;
++	  val = (val >> shift) & mask;
++	  src_eqv = GEN_INT (val);
++	}
++    }
+ 
+   /* Set sets[i].src_elt to the class each source belongs to.
+      Detect assignments from or to volatile things
+--- a/src/gcc/df-core.c
++++ b/src/gcc/df-core.c
+@@ -642,7 +642,6 @@ void
+ df_finish_pass (bool verify ATTRIBUTE_UNUSED)
+ {
+   int i;
+-  int removed = 0;
+ 
+ #ifdef ENABLE_DF_CHECKING
+   int saved_flags;
+@@ -658,21 +657,15 @@ df_finish_pass (bool verify ATTRIBUTE_UNUSED)
+   saved_flags = df->changeable_flags;
+ #endif
+ 
+-  for (i = 0; i < df->num_problems_defined; i++)
++  /* We iterate over problems by index as each problem removed will
++     lead to problems_in_order to be reordered.  */
++  for (i = 0; i < DF_LAST_PROBLEM_PLUS1; i++)
+     {
+-      struct dataflow *dflow = df->problems_in_order[i];
+-      struct df_problem *problem = dflow->problem;
++      struct dataflow *dflow = df->problems_by_index[i];
+ 
+-      if (dflow->optional_p)
+-	{
+-	  gcc_assert (problem->remove_problem_fun);
+-	  (problem->remove_problem_fun) ();
+-	  df->problems_in_order[i] = NULL;
+-	  df->problems_by_index[problem->id] = NULL;
+-	  removed++;
+-	}
++      if (dflow && dflow->optional_p)
++	df_remove_problem (dflow);
+     }
+-  df->num_problems_defined -= removed;
+ 
+   /* Clear all of the flags.  */
+   df->changeable_flags = 0;
+--- a/src/gcc/emit-rtl.c
++++ b/src/gcc/emit-rtl.c
+@@ -5234,7 +5234,8 @@ set_for_reg_notes (rtx insn)
+   reg = SET_DEST (pat);
+ 
+   /* Notes apply to the contents of a STRICT_LOW_PART.  */
+-  if (GET_CODE (reg) == STRICT_LOW_PART)
++  if (GET_CODE (reg) == STRICT_LOW_PART
++      || GET_CODE (reg) == ZERO_EXTRACT)
+     reg = XEXP (reg, 0);
+ 
+   /* Check that we have a register.  */
+--- a/src/gcc/expmed.c
++++ b/src/gcc/expmed.c
+@@ -2664,14 +2664,28 @@ synth_mult (struct algorithm *alg_out, unsigned HOST_WIDE_INT t,
+       m = exact_log2 (-orig_t + 1);
+       if (m >= 0 && m < maxm)
+ 	{
+-	  op_cost = shiftsub1_cost (speed, mode, m);
++	  op_cost = add_cost (speed, mode) + shift_cost (speed, mode, m);
++	  /* If the target has a cheap shift-and-subtract insn use
++	     that in preference to a shift insn followed by a sub insn.
++	     Assume that the shift-and-sub is "atomic" with a latency
++	     equal to it's cost, otherwise assume that on superscalar
++	     hardware the shift may be executed concurrently with the
++	     earlier steps in the algorithm.  */
++	  if (shiftsub1_cost (speed, mode, m) <= op_cost)
++	    {
++	      op_cost = shiftsub1_cost (speed, mode, m);
++	      op_latency = op_cost;
++	    }
++	  else
++	    op_latency = add_cost (speed, mode);
++
+ 	  new_limit.cost = best_cost.cost - op_cost;
+-	  new_limit.latency = best_cost.latency - op_cost;
++	  new_limit.latency = best_cost.latency - op_latency;
+ 	  synth_mult (alg_in, (unsigned HOST_WIDE_INT) (-orig_t + 1) >> m,
+ 		      &new_limit, mode);
+ 
+ 	  alg_in->cost.cost += op_cost;
+-	  alg_in->cost.latency += op_cost;
++	  alg_in->cost.latency += op_latency;
+ 	  if (CHEAPER_MULT_COST (&alg_in->cost, &best_cost))
+ 	    {
+ 	      best_cost = alg_in->cost;
+@@ -2704,20 +2718,12 @@ synth_mult (struct algorithm *alg_out, unsigned HOST_WIDE_INT t,
+       if (t % d == 0 && t > d && m < maxm
+ 	  && (!cache_hit || cache_alg == alg_add_factor))
+ 	{
+-	  /* If the target has a cheap shift-and-add instruction use
+-	     that in preference to a shift insn followed by an add insn.
+-	     Assume that the shift-and-add is "atomic" with a latency
+-	     equal to its cost, otherwise assume that on superscalar
+-	     hardware the shift may be executed concurrently with the
+-	     earlier steps in the algorithm.  */
+ 	  op_cost = add_cost (speed, mode) + shift_cost (speed, mode, m);
+-	  if (shiftadd_cost (speed, mode, m) < op_cost)
+-	    {
+-	      op_cost = shiftadd_cost (speed, mode, m);
+-	      op_latency = op_cost;
+-	    }
+-	  else
+-	    op_latency = add_cost (speed, mode);
++	  if (shiftadd_cost (speed, mode, m) <= op_cost)
++	    op_cost = shiftadd_cost (speed, mode, m);
++
++	  op_latency = op_cost;
++
+ 
+ 	  new_limit.cost = best_cost.cost - op_cost;
+ 	  new_limit.latency = best_cost.latency - op_latency;
+@@ -2742,20 +2748,11 @@ synth_mult (struct algorithm *alg_out, unsigned HOST_WIDE_INT t,
+       if (t % d == 0 && t > d && m < maxm
+ 	  && (!cache_hit || cache_alg == alg_sub_factor))
+ 	{
+-	  /* If the target has a cheap shift-and-subtract insn use
+-	     that in preference to a shift insn followed by a sub insn.
+-	     Assume that the shift-and-sub is "atomic" with a latency
+-	     equal to it's cost, otherwise assume that on superscalar
+-	     hardware the shift may be executed concurrently with the
+-	     earlier steps in the algorithm.  */
+ 	  op_cost = add_cost (speed, mode) + shift_cost (speed, mode, m);
+-	  if (shiftsub0_cost (speed, mode, m) < op_cost)
+-	    {
+-	      op_cost = shiftsub0_cost (speed, mode, m);
+-	      op_latency = op_cost;
+-	    }
+-	  else
+-	    op_latency = add_cost (speed, mode);
++	  if (shiftsub0_cost (speed, mode, m) <= op_cost)
++	    op_cost = shiftsub0_cost (speed, mode, m);
++
++	  op_latency = op_cost;
+ 
+ 	  new_limit.cost = best_cost.cost - op_cost;
+ 	  new_limit.latency = best_cost.latency - op_latency;
+--- a/src/gcc/expr.c
++++ b/src/gcc/expr.c
+@@ -7725,15 +7725,7 @@ expand_expr_addr_expr_1 (tree exp, rtx target, machine_mode tmode,
+ 	     marked TREE_ADDRESSABLE, which will be either a front-end
+ 	     or a tree optimizer bug.  */
+ 
+-	  if (TREE_ADDRESSABLE (exp)
+-	      && ! MEM_P (result)
+-	      && ! targetm.calls.allocate_stack_slots_for_args ())
+-	    {
+-	      error ("local frame unavailable (naked function?)");
+-	      return result;
+-	    }
+-	  else
+-	    gcc_assert (MEM_P (result));
++	  gcc_assert (MEM_P (result));
+ 	  result = XEXP (result, 0);
+ 
+ 	  /* ??? Is this needed anymore?  */
+@@ -8985,23 +8977,134 @@ expand_expr_real_2 (sepops ops, rtx target, machine_mode tmode,
+ 
+     case LSHIFT_EXPR:
+     case RSHIFT_EXPR:
+-      /* If this is a fixed-point operation, then we cannot use the code
+-	 below because "expand_shift" doesn't support sat/no-sat fixed-point
+-         shifts.   */
+-      if (ALL_FIXED_POINT_MODE_P (mode))
+-	goto binop;
++      {
++	/* If this is a fixed-point operation, then we cannot use the code
++	   below because "expand_shift" doesn't support sat/no-sat fixed-point
++	   shifts.  */
++	if (ALL_FIXED_POINT_MODE_P (mode))
++	  goto binop;
++
++	if (! safe_from_p (subtarget, treeop1, 1))
++	  subtarget = 0;
++	if (modifier == EXPAND_STACK_PARM)
++	  target = 0;
++	op0 = expand_expr (treeop0, subtarget,
++			   VOIDmode, EXPAND_NORMAL);
++
++	/* Left shift optimization when shifting across word_size boundary.
++
++	   If mode == GET_MODE_WIDER_MODE (word_mode), then normally there isn't
++	   native instruction to support this wide mode left shift.  Given below
++	   scenario:
++
++	    Type A = (Type) B  << C
++
++	    |<		 T	    >|
++	    | dest_high  |  dest_low |
++
++			 | word_size |
++
++	   If the shift amount C caused we shift B to across the word size
++	   boundary, i.e part of B shifted into high half of destination
++	   register, and part of B remains in the low half, then GCC will use
++	   the following left shift expand logic:
++
++	   1. Initialize dest_low to B.
++	   2. Initialize every bit of dest_high to the sign bit of B.
++	   3. Logic left shift dest_low by C bit to finalize dest_low.
++	      The value of dest_low before this shift is kept in a temp D.
++	   4. Logic left shift dest_high by C.
++	   5. Logic right shift D by (word_size - C).
++	   6. Or the result of 4 and 5 to finalize dest_high.
++
++	   While, by checking gimple statements, if operand B is coming from
++	   signed extension, then we can simplify above expand logic into:
++
++	      1. dest_high = src_low >> (word_size - C).
++	      2. dest_low = src_low << C.
++
++	   We can use one arithmetic right shift to finish all the purpose of
++	   steps 2, 4, 5, 6, thus we reduce the steps needed from 6 into 2.  */
++
++	temp = NULL_RTX;
++	if (code == LSHIFT_EXPR
++	    && target
++	    && REG_P (target)
++	    && ! unsignedp
++	    && mode == GET_MODE_WIDER_MODE (word_mode)
++	    && GET_MODE_SIZE (mode) == 2 * GET_MODE_SIZE (word_mode)
++	    && TREE_CONSTANT (treeop1)
++	    && TREE_CODE (treeop0) == SSA_NAME)
++	  {
++	    gimple def = SSA_NAME_DEF_STMT (treeop0);
++	    if (is_gimple_assign (def)
++		&& gimple_assign_rhs_code (def) == NOP_EXPR)
++	      {
++		machine_mode rmode = TYPE_MODE
++		  (TREE_TYPE (gimple_assign_rhs1 (def)));
+ 
+-      if (! safe_from_p (subtarget, treeop1, 1))
+-	subtarget = 0;
+-      if (modifier == EXPAND_STACK_PARM)
+-	target = 0;
+-      op0 = expand_expr (treeop0, subtarget,
+-			 VOIDmode, EXPAND_NORMAL);
+-      temp = expand_variable_shift (code, mode, op0, treeop1, target,
+-				    unsignedp);
+-      if (code == LSHIFT_EXPR)
+-	temp = REDUCE_BIT_FIELD (temp);
+-      return temp;
++		if (GET_MODE_SIZE (rmode) < GET_MODE_SIZE (mode)
++		    && TREE_INT_CST_LOW (treeop1) < GET_MODE_BITSIZE (word_mode)
++		    && ((TREE_INT_CST_LOW (treeop1) + GET_MODE_BITSIZE (rmode))
++			>= GET_MODE_BITSIZE (word_mode)))
++		  {
++		    rtx_insn *seq, *seq_old;
++		    unsigned int high_off = subreg_highpart_offset (word_mode,
++								    mode);
++		    rtx low = lowpart_subreg (word_mode, op0, mode);
++		    rtx dest_low = lowpart_subreg (word_mode, target, mode);
++		    rtx dest_high = simplify_gen_subreg (word_mode, target,
++							 mode, high_off);
++		    HOST_WIDE_INT ramount = (BITS_PER_WORD
++					     - TREE_INT_CST_LOW (treeop1));
++		    tree rshift = build_int_cst (TREE_TYPE (treeop1), ramount);
++
++		    start_sequence ();
++		    /* dest_high = src_low >> (word_size - C).  */
++		    temp = expand_variable_shift (RSHIFT_EXPR, word_mode, low,
++						  rshift, dest_high, unsignedp);
++		    if (temp != dest_high)
++		      emit_move_insn (dest_high, temp);
++
++		    /* dest_low = src_low << C.  */
++		    temp = expand_variable_shift (LSHIFT_EXPR, word_mode, low,
++						  treeop1, dest_low, unsignedp);
++		    if (temp != dest_low)
++		      emit_move_insn (dest_low, temp);
++
++		    seq = get_insns ();
++		    end_sequence ();
++		    temp = target ;
++
++		    if (have_insn_for (ASHIFT, mode))
++		      {
++			bool speed_p = optimize_insn_for_speed_p ();
++			start_sequence ();
++			rtx ret_old = expand_variable_shift (code, mode, op0,
++							     treeop1, target,
++							     unsignedp);
++
++			seq_old = get_insns ();
++			end_sequence ();
++			if (seq_cost (seq, speed_p)
++			    >= seq_cost (seq_old, speed_p))
++			  {
++			    seq = seq_old;
++			    temp = ret_old;
++			  }
++		      }
++		      emit_insn (seq);
++		  }
++	      }
++	  }
++
++	if (temp == NULL_RTX)
++	  temp = expand_variable_shift (code, mode, op0, treeop1, target,
++					unsignedp);
++	if (code == LSHIFT_EXPR)
++	  temp = REDUCE_BIT_FIELD (temp);
++	return temp;
++      }
+ 
+       /* Could determine the answer when only additive constants differ.  Also,
+ 	 the addition of one can be handled by changing the condition.  */
+--- a/src/gcc/fold-const.c
++++ b/src/gcc/fold-const.c
+@@ -7603,7 +7603,6 @@ native_interpret_real (tree type, const unsigned char *ptr, int len)
+ {
+   machine_mode mode = TYPE_MODE (type);
+   int total_bytes = GET_MODE_SIZE (mode);
+-  int byte, offset, word, words, bitpos;
+   unsigned char value;
+   /* There are always 32 bits in each long, no matter the size of
+      the hosts long.  We handle floating point representations with
+@@ -7614,16 +7613,18 @@ native_interpret_real (tree type, const unsigned char *ptr, int len)
+   total_bytes = GET_MODE_SIZE (TYPE_MODE (type));
+   if (total_bytes > len || total_bytes > 24)
+     return NULL_TREE;
+-  words = (32 / BITS_PER_UNIT) / UNITS_PER_WORD;
++  int words = (32 / BITS_PER_UNIT) / UNITS_PER_WORD;
+ 
+   memset (tmp, 0, sizeof (tmp));
+-  for (bitpos = 0; bitpos < total_bytes * BITS_PER_UNIT;
++  for (int bitpos = 0; bitpos < total_bytes * BITS_PER_UNIT;
+        bitpos += BITS_PER_UNIT)
+     {
+-      byte = (bitpos / BITS_PER_UNIT) & 3;
++      /* Both OFFSET and BYTE index within a long;
++	 bitpos indexes the whole float.  */
++      int offset, byte = (bitpos / BITS_PER_UNIT) & 3;
+       if (UNITS_PER_WORD < 4)
+ 	{
+-	  word = byte / UNITS_PER_WORD;
++	  int word = byte / UNITS_PER_WORD;
+ 	  if (WORDS_BIG_ENDIAN)
+ 	    word = (words - 1) - word;
+ 	  offset = word * UNITS_PER_WORD;
+@@ -7633,7 +7634,16 @@ native_interpret_real (tree type, const unsigned char *ptr, int len)
+ 	    offset += byte % UNITS_PER_WORD;
+ 	}
+       else
+-	offset = BYTES_BIG_ENDIAN ? 3 - byte : byte;
++	{
++	  offset = byte;
++	  if (BYTES_BIG_ENDIAN)
++	    {
++	      /* Reverse bytes within each long, or within the entire float
++		 if it's smaller than a long (for HFmode).  */
++	      offset = MIN (3, total_bytes - 1) - offset;
++	      gcc_assert (offset >= 0);
++	    }
++	}
+       value = ptr[offset + ((bitpos / BITS_PER_UNIT) & ~3)];
+ 
+       tmp[bitpos / 32] |= (unsigned long)value << (bitpos & 31);
+--- a/src/gcc/fortran/Make-lang.in
++++ b/src/gcc/fortran/Make-lang.in
+@@ -167,7 +167,7 @@ check-f95-subtargets : check-gfortran-subtargets
+ check-fortran-subtargets : check-gfortran-subtargets
+ lang_checks += check-gfortran
+ lang_checks_parallelized += check-gfortran
+-# For description see comment above check_gcc_parallelize in gcc/Makefile.in.
++# For description see the check_$lang_parallelize comment in gcc/Makefile.in.
+ check_gfortran_parallelize = 10000
+ 
+ # GFORTRAN documentation.
+@@ -275,7 +275,7 @@ fortran.uninstall:
+ # We just have to delete files specific to us.
+ 
+ fortran.mostlyclean:
+-	-rm -f f951$(exeext)
++	-rm -f gfortran$(exeext) gfortran-cross$(exeext) f951$(exeext)
+ 	-rm -f fortran/*.o
+ 
+ fortran.clean:
+--- a/src/gcc/function.c
++++ b/src/gcc/function.c
+@@ -227,6 +227,7 @@ free_after_compilation (struct function *f)
+   f->eh = NULL;
+   f->machine = NULL;
+   f->cfg = NULL;
++  f->curr_properties &= ~PROP_cfg;
+ 
+   regno_reg_rtx = NULL;
+ }
+@@ -2121,9 +2122,6 @@ aggregate_value_p (const_tree exp, const_tree fntype)
+ bool
+ use_register_for_decl (const_tree decl)
+ {
+-  if (!targetm.calls.allocate_stack_slots_for_args ())
+-    return true;
+-
+   /* Honor volatile.  */
+   if (TREE_SIDE_EFFECTS (decl))
+     return false;
+@@ -2151,6 +2149,9 @@ use_register_for_decl (const_tree decl)
+   if (flag_float_store && FLOAT_TYPE_P (TREE_TYPE (decl)))
+     return false;
+ 
++  if (!targetm.calls.allocate_stack_slots_for_args ())
++    return true;
++
+   /* If we're not interested in tracking debugging information for
+      this decl, then we can certainly put it in a register.  */
+   if (DECL_IGNORED_P (decl))
+--- a/src/gcc/genmatch.c
++++ b/src/gcc/genmatch.c
+@@ -2922,7 +2922,12 @@ parser::parse_operation ()
+ 
+   user_id *p = dyn_cast<user_id *> (op);
+   if (p && p->is_oper_list)
+-    record_operlist (id_tok->src_loc, p);
++    {
++      if (active_fors.length() == 0)
++	record_operlist (id_tok->src_loc, p);
++      else
++	fatal_at (id_tok, "operator-list %s cannot be exapnded inside 'for'", id);
++    }
+   return op;
+ }
+ 
+@@ -3338,8 +3343,13 @@ parser::parse_for (source_location)
+ 		      "others with arity %d", oper, idb->nargs, arity);
+ 
+ 	  user_id *p = dyn_cast<user_id *> (idb);
+-	  if (p && p->is_oper_list)
+-	    op->substitutes.safe_splice (p->substitutes);
++	  if (p)
++	    {
++	      if (p->is_oper_list)
++		op->substitutes.safe_splice (p->substitutes);
++	      else
++		fatal_at (token, "iterator cannot be used as operator-list");
++	    }
+ 	  else 
+ 	    op->substitutes.safe_push (idb);
+ 	}
+@@ -3436,6 +3446,11 @@ parser::parse_operator_list (source_location)
+ 	op->substitutes.safe_push (idb);
+     }
+ 
++  // Check that there is no junk after id-list
++  token = peek();
++  if (token->type != CPP_CLOSE_PAREN)
++    fatal_at (token, "expected identifier got %s", cpp_type2name (token->type, 0));
++
+   if (op->substitutes.length () == 0)
+     fatal_at (token, "operator-list cannot be empty");
+ 
+--- a/src/gcc/genpreds.c
++++ b/src/gcc/genpreds.c
+@@ -640,12 +640,14 @@ struct constraint_data
+   const char *regclass;  /* for register constraints */
+   rtx exp;               /* for other constraints */
+   unsigned int lineno;   /* line of definition */
+-  unsigned int is_register  : 1;
+-  unsigned int is_const_int : 1;
+-  unsigned int is_const_dbl : 1;
+-  unsigned int is_extra     : 1;
+-  unsigned int is_memory    : 1;
+-  unsigned int is_address   : 1;
++  unsigned int is_register	: 1;
++  unsigned int is_const_int	: 1;
++  unsigned int is_const_dbl	: 1;
++  unsigned int is_extra		: 1;
++  unsigned int is_memory	: 1;
++  unsigned int is_address	: 1;
++  unsigned int maybe_allows_reg : 1;
++  unsigned int maybe_allows_mem : 1;
+ };
+ 
+ /* Overview of all constraints beginning with a given letter.  */
+@@ -691,6 +693,9 @@ static unsigned int satisfied_start;
+ static unsigned int const_int_start, const_int_end;
+ static unsigned int memory_start, memory_end;
+ static unsigned int address_start, address_end;
++static unsigned int maybe_allows_none_start, maybe_allows_none_end;
++static unsigned int maybe_allows_reg_start, maybe_allows_reg_end;
++static unsigned int maybe_allows_mem_start, maybe_allows_mem_end;
+ 
+ /* Convert NAME, which contains angle brackets and/or underscores, to
+    a string that can be used as part of a C identifier.  The string
+@@ -711,6 +716,34 @@ mangle (const char *name)
+   return XOBFINISH (rtl_obstack, const char *);
+ }
+ 
++/* Return a bitmask, bit 1 if EXP maybe allows a REG/SUBREG, 2 if EXP
++   maybe allows a MEM.  Bits should be clear only when we are sure it
++   will not allow a REG/SUBREG or a MEM.  */
++static int
++compute_maybe_allows (rtx exp)
++{
++  switch (GET_CODE (exp))
++    {
++    case IF_THEN_ELSE:
++      /* Conservative answer is like IOR, of the THEN and ELSE branches.  */
++      return compute_maybe_allows (XEXP (exp, 1))
++	     | compute_maybe_allows (XEXP (exp, 2));
++    case AND:
++      return compute_maybe_allows (XEXP (exp, 0))
++	     & compute_maybe_allows (XEXP (exp, 1));
++    case IOR:
++      return compute_maybe_allows (XEXP (exp, 0))
++	     | compute_maybe_allows (XEXP (exp, 1));
++    case MATCH_CODE:
++      if (*XSTR (exp, 1) == '\0')
++	return (strstr (XSTR (exp, 0), "reg") != NULL ? 1 : 0)
++	       | (strstr (XSTR (exp, 0), "mem") != NULL ? 2 : 0);
++      /* FALLTHRU */
++    default:
++      return 3;
++    }
++}
++
+ /* Add one constraint, of any sort, to the tables.  NAME is its name;
+    REGCLASS is the register class, if any; EXP is the expression to
+    test, if any;  IS_MEMORY and IS_ADDRESS indicate memory and address
+@@ -866,6 +899,11 @@ add_constraint (const char *name, const char *regclass,
+   c->is_extra = !(regclass || is_const_int || is_const_dbl);
+   c->is_memory = is_memory;
+   c->is_address = is_address;
++  int maybe_allows = 3;
++  if (exp)
++    maybe_allows = compute_maybe_allows (exp);
++  c->maybe_allows_reg = (maybe_allows & 1) != 0;
++  c->maybe_allows_mem = (maybe_allows & 2) != 0;
+ 
+   c->next_this_letter = *slot;
+   *slot = c;
+@@ -940,8 +978,30 @@ choose_enum_order (void)
+       enum_order[next++] = c;
+   address_end = next;
+ 
++  maybe_allows_none_start = next;
++  FOR_ALL_CONSTRAINTS (c)
++    if (!c->is_register && !c->is_const_int && !c->is_memory && !c->is_address
++	&& !c->maybe_allows_reg && !c->maybe_allows_mem)
++      enum_order[next++] = c;
++  maybe_allows_none_end = next;
++
++  maybe_allows_reg_start = next;
++  FOR_ALL_CONSTRAINTS (c)
++    if (!c->is_register && !c->is_const_int && !c->is_memory && !c->is_address
++	&& c->maybe_allows_reg && !c->maybe_allows_mem)
++      enum_order[next++] = c;
++  maybe_allows_reg_end = next;
++
++  maybe_allows_mem_start = next;
++  FOR_ALL_CONSTRAINTS (c)
++    if (!c->is_register && !c->is_const_int && !c->is_memory && !c->is_address
++	&& !c->maybe_allows_reg && c->maybe_allows_mem)
++      enum_order[next++] = c;
++  maybe_allows_mem_end = next;
++
+   FOR_ALL_CONSTRAINTS (c)
+-    if (!c->is_register && !c->is_const_int && !c->is_memory && !c->is_address)
++    if (!c->is_register && !c->is_const_int && !c->is_memory && !c->is_address
++	&& c->maybe_allows_reg && c->maybe_allows_mem)
+       enum_order[next++] = c;
+   gcc_assert (next == num_constraints);
+ }
+@@ -1229,6 +1289,41 @@ write_range_function (const char *name, unsigned int start, unsigned int end)
+ 	    "}\n\n", name);
+ }
+ 
++/* Write a definition for insn_extra_constraint_allows_reg_mem function.  */
++static void
++write_allows_reg_mem_function (void)
++{
++  printf ("static inline void\n"
++	  "insn_extra_constraint_allows_reg_mem (enum constraint_num c,\n"
++	  "\t\t\t\t      bool *allows_reg, bool *allows_mem)\n"
++	  "{\n");
++  if (maybe_allows_none_start != maybe_allows_none_end)
++    printf ("  if (c >= CONSTRAINT_%s && c <= CONSTRAINT_%s)\n"
++	    "    return;\n",
++	    enum_order[maybe_allows_none_start]->c_name,
++	    enum_order[maybe_allows_none_end - 1]->c_name);
++  if (maybe_allows_reg_start != maybe_allows_reg_end)
++    printf ("  if (c >= CONSTRAINT_%s && c <= CONSTRAINT_%s)\n"
++	    "    {\n"
++	    "      *allows_reg = true;\n"
++	    "      return;\n"
++	    "    }\n",
++	    enum_order[maybe_allows_reg_start]->c_name,
++	    enum_order[maybe_allows_reg_end - 1]->c_name);
++  if (maybe_allows_mem_start != maybe_allows_mem_end)
++    printf ("  if (c >= CONSTRAINT_%s && c <= CONSTRAINT_%s)\n"
++	    "    {\n"
++	    "      *allows_mem = true;\n"
++	    "      return;\n"
++	    "    }\n",
++	    enum_order[maybe_allows_mem_start]->c_name,
++	    enum_order[maybe_allows_mem_end - 1]->c_name);
++  printf ("  (void) c;\n"
++	  "  *allows_reg = true;\n"
++	  "  *allows_mem = true;\n"
++	  "}\n\n");
++}
++
+ /* VEC is a list of key/value pairs, with the keys being lower bounds
+    of a range.  Output a decision tree that handles the keys covered by
+    [VEC[START], VEC[END]), returning FALLBACK for keys lower then VEC[START]'s.
+@@ -1326,6 +1421,7 @@ write_tm_preds_h (void)
+ 			    memory_start, memory_end);
+       write_range_function ("insn_extra_address_constraint",
+ 			    address_start, address_end);
++      write_allows_reg_mem_function ();
+ 
+       if (constraint_max_namelen > 1)
+         {
+--- a/src/gcc/go/Make-lang.in
++++ b/src/gcc/go/Make-lang.in
+@@ -197,6 +197,7 @@ go.uninstall:
+ go.mostlyclean:
+ 	-rm -f go/*$(objext)
+ 	-rm -f go/*$(coverageexts)
++	-rm -f gccgo$(exeext) gccgo-cross$(exeext) go1$(exeext)
+ go.clean:
+ go.distclean:
+ go.maintainer-clean:
+--- a/src/gcc/haifa-sched.c
++++ b/src/gcc/haifa-sched.c
+@@ -5553,6 +5553,35 @@ insn_finishes_cycle_p (rtx_insn *insn)
+   return false;
+ }
+ 
++/* Helper for autopref_multipass_init.  Given a SET in PAT and whether
++   we're expecting a memory WRITE or not, check that the insn is relevant to
++   the autoprefetcher modelling code.  Return true iff that is the case.
++   If it is relevant, record the base register of the memory op in BASE and
++   the offset in OFFSET.  */
++
++static bool
++analyze_set_insn_for_autopref (rtx pat, bool write, rtx *base, int *offset)
++{
++  if (GET_CODE (pat) != SET)
++    return false;
++
++  rtx mem = write ? SET_DEST (pat) : SET_SRC (pat);
++  if (!MEM_P (mem))
++    return false;
++
++  struct address_info info;
++  decompose_mem_address (&info, mem);
++
++  /* TODO: Currently only (base+const) addressing is supported.  */
++  if (info.base == NULL || !REG_P (*info.base)
++      || (info.disp != NULL && !CONST_INT_P (*info.disp)))
++    return false;
++
++  *base = *info.base;
++  *offset = info.disp ? INTVAL (*info.disp) : 0;
++  return true;
++}
++
+ /* Functions to model cache auto-prefetcher.
+ 
+    Some of the CPUs have cache auto-prefetcher, which /seems/ to initiate
+@@ -5577,30 +5606,139 @@ autopref_multipass_init (const rtx_insn *insn, int write)
+ 
+   gcc_assert (data->status == AUTOPREF_MULTIPASS_DATA_UNINITIALIZED);
+   data->base = NULL_RTX;
+-  data->offset = 0;
++  data->min_offset = 0;
++  data->max_offset = 0;
++  data->multi_mem_insn_p = false;
+   /* Set insn entry initialized, but not relevant for auto-prefetcher.  */
+   data->status = AUTOPREF_MULTIPASS_DATA_IRRELEVANT;
+ 
++  rtx pat = PATTERN (insn);
++
++  /* We have a multi-set insn like a load-multiple or store-multiple.
++     We care about these as long as all the memory ops inside the PARALLEL
++     have the same base register.  We care about the minimum and maximum
++     offsets from that base but don't check for the order of those offsets
++     within the PARALLEL insn itself.  */
++  if (GET_CODE (pat) == PARALLEL)
++    {
++      int n_elems = XVECLEN (pat, 0);
++
++      int i = 0;
++      rtx prev_base = NULL_RTX;
++      int min_offset;
++      int max_offset;
++
++      for (i = 0; i < n_elems; i++)
++	{
++	  rtx set = XVECEXP (pat, 0, i);
++	  if (GET_CODE (set) != SET)
++	    return;
++
++	  rtx base = NULL_RTX;
++	  int offset = 0;
++	  if (!analyze_set_insn_for_autopref (set, write, &base, &offset))
++	    return;
++
++	  if (i == 0)
++	    {
++	      prev_base = base;
++	      min_offset = offset;
++	      max_offset = offset;
++	    }
++	  /* Ensure that all memory operations in the PARALLEL use the same
++	     base register.  */
++	  else if (REGNO (base) != REGNO (prev_base))
++	    return;
++	  else
++	    {
++	      min_offset = MIN (min_offset, offset);
++	      max_offset = MAX (max_offset, offset);
++	    }
++	}
++
++      /* If we reached here then we have a valid PARALLEL of multiple memory
++	 ops with prev_base as the base and min_offset and max_offset
++	 containing the offsets range.  */
++      gcc_assert (prev_base);
++      data->base = prev_base;
++      data->min_offset = min_offset;
++      data->max_offset = max_offset;
++      data->multi_mem_insn_p = true;
++      data->status = AUTOPREF_MULTIPASS_DATA_NORMAL;
++
++      return;
++    }
++
++  /* Otherwise this is a single set memory operation.  */
+   rtx set = single_set (insn);
+   if (set == NULL_RTX)
+     return;
+ 
+-  rtx mem = write ? SET_DEST (set) : SET_SRC (set);
+-  if (!MEM_P (mem))
++  if (!analyze_set_insn_for_autopref (set, write, &data->base,
++				       &data->min_offset))
+     return;
+ 
+-  struct address_info info;
+-  decompose_mem_address (&info, mem);
++  /* This insn is relevant for the auto-prefetcher.
++     The base and offset fields will have been filled in the
++     analyze_set_insn_for_autopref call above.  */
++  data->status = AUTOPREF_MULTIPASS_DATA_NORMAL;
++}
+ 
+-  /* TODO: Currently only (base+const) addressing is supported.  */
+-  if (info.base == NULL || !REG_P (*info.base)
+-      || (info.disp != NULL && !CONST_INT_P (*info.disp)))
+-    return;
+ 
+-  /* This insn is relevant for auto-prefetcher.  */
+-  data->base = *info.base;
+-  data->offset = info.disp ? INTVAL (*info.disp) : 0;
+-  data->status = AUTOPREF_MULTIPASS_DATA_NORMAL;
++/* Helper for autopref_rank_for_schedule.  Given the data of two
++   insns relevant to the auto-prefetcher modelling code DATA1 and DATA2
++   return their comparison result.  Return 0 if there is no sensible
++   ranking order for the two insns.  */
++
++static int
++autopref_rank_data (autopref_multipass_data_t data1,
++		     autopref_multipass_data_t data2)
++{
++  /* Simple case when both insns are simple single memory ops.  */
++  if (!data1->multi_mem_insn_p && !data2->multi_mem_insn_p)
++    return data1->min_offset - data2->min_offset;
++
++  /* Two load/store multiple insns.  Return 0 if the offset ranges
++     overlap and the difference between the minimum offsets otherwise.  */
++  else if (data1->multi_mem_insn_p && data2->multi_mem_insn_p)
++    {
++      int min1 = data1->min_offset;
++      int max1 = data1->max_offset;
++      int min2 = data2->min_offset;
++      int max2 = data2->max_offset;
++
++      if (max1 < min2 || min1 > max2)
++	return min1 - min2;
++      else
++	return 0;
++    }
++
++  /* The other two cases is a pair of a load/store multiple and
++     a simple memory op.  Return 0 if the single op's offset is within the
++     range of the multi-op insn and the difference between the single offset
++     and the minimum offset of the multi-set insn otherwise.  */
++  else if (data1->multi_mem_insn_p && !data2->multi_mem_insn_p)
++    {
++      int max1 = data1->max_offset;
++      int min1 = data1->min_offset;
++
++      if (data2->min_offset >= min1
++	  && data2->min_offset <= max1)
++	return 0;
++      else
++	return min1 - data2->min_offset;
++    }
++  else
++    {
++      int max2 = data2->max_offset;
++      int min2 = data2->min_offset;
++
++      if (data1->min_offset >= min2
++	  && data1->min_offset <= max2)
++	return 0;
++      else
++	return data1->min_offset - min2;
++    }
+ }
+ 
+ /* Helper function for rank_for_schedule sorting.  */
+@@ -5627,7 +5765,7 @@ autopref_rank_for_schedule (const rtx_insn *insn1, const rtx_insn *insn2)
+       if (!rtx_equal_p (data1->base, data2->base))
+ 	continue;
+ 
+-      return data1->offset - data2->offset;
++      return autopref_rank_data (data1, data2);
+     }
+ 
+   return 0;
+@@ -5653,7 +5791,7 @@ autopref_multipass_dfa_lookahead_guard_1 (const rtx_insn *insn1,
+     return 0;
+ 
+   if (rtx_equal_p (data1->base, data2->base)
+-      && data1->offset > data2->offset)
++      && autopref_rank_data (data1, data2) > 0)
+     {
+       if (sched_verbose >= 2)
+ 	{
+--- a/src/gcc/ifcvt.c
++++ b/src/gcc/ifcvt.c
+@@ -1046,7 +1046,7 @@ cc_in_cond (rtx cond)
+ 
+ /* Return sequence of instructions generated by if conversion.  This
+    function calls end_sequence() to end the current stream, ensures
+-   that are instructions are unshared, recognizable non-jump insns.
++   that the instructions are unshared, recognizable non-jump insns.
+    On failure, this function returns a NULL_RTX.  */
+ 
+ static rtx_insn *
+@@ -1175,24 +1175,45 @@ noce_try_store_flag (struct noce_if_info *if_info)
+     }
+ }
+ 
+-/* Convert "if (test) x = a; else x = b", for A and B constant.  */
++/* Convert "if (test) x = a; else x = b", for A and B constant.
++   Also allow A = y + c1, B = y + c2, with a common y between A
++   and B.  */
+ 
+ static int
+ noce_try_store_flag_constants (struct noce_if_info *if_info)
+ {
+   rtx target;
+   rtx_insn *seq;
+-  int reversep;
++  bool reversep;
+   HOST_WIDE_INT itrue, ifalse, diff, tmp;
+-  int normalize, can_reverse;
+-  machine_mode mode;
++  int normalize;
++  bool can_reverse;
++  machine_mode mode = GET_MODE (if_info->x);;
++  rtx common = NULL_RTX;
++
++  rtx a = if_info->a;
++  rtx b = if_info->b;
+ 
+-  if (CONST_INT_P (if_info->a)
+-      && CONST_INT_P (if_info->b))
++  /* Handle cases like x := test ? y + 3 : y + 4.  */
++  if (GET_CODE (a) == PLUS
++      && GET_CODE (b) == PLUS
++      && CONST_INT_P (XEXP (a, 1))
++      && CONST_INT_P (XEXP (b, 1))
++      && rtx_equal_p (XEXP (a, 0), XEXP (b, 0))
++      && noce_operand_ok (XEXP (a, 0))
++      && if_info->branch_cost >= 2)
+     {
+-      mode = GET_MODE (if_info->x);
+-      ifalse = INTVAL (if_info->a);
+-      itrue = INTVAL (if_info->b);
++      common = XEXP (a, 0);
++      a = XEXP (a, 1);
++      b = XEXP (b, 1);
++    }
++
++  if (CONST_INT_P (a)
++      && CONST_INT_P (b))
++    {
++      ifalse = INTVAL (a);
++      itrue = INTVAL (b);
++      bool subtract_flag_p = false;
+ 
+       diff = (unsigned HOST_WIDE_INT) itrue - ifalse;
+       /* Make sure we can represent the difference between the two values.  */
+@@ -1205,26 +1226,71 @@ noce_try_store_flag_constants (struct noce_if_info *if_info)
+       can_reverse = (reversed_comparison_code (if_info->cond, if_info->jump)
+ 		     != UNKNOWN);
+ 
+-      reversep = 0;
++      reversep = false;
+       if (diff == STORE_FLAG_VALUE || diff == -STORE_FLAG_VALUE)
+-	normalize = 0;
++	{
++	  normalize = 0;
++	  /* We could collapse these cases but it is easier to follow the
++	     diff/STORE_FLAG_VALUE combinations when they are listed
++	     explicitly.  */
++
++	  /* test ? 3 : 4
++	     => 4 + (test != 0).  */
++	  if (diff < 0 && STORE_FLAG_VALUE < 0)
++	      reversep = false;
++	  /* test ? 4 : 3
++	     => can_reverse  | 4 + (test == 0)
++		!can_reverse | 3 - (test != 0).  */
++	  else if (diff > 0 && STORE_FLAG_VALUE < 0)
++	    {
++	      reversep = can_reverse;
++	      subtract_flag_p = !can_reverse;
++	      /* If we need to subtract the flag and we have PLUS-immediate
++		 A and B then it is unlikely to be beneficial to play tricks
++		 here.  */
++	      if (subtract_flag_p && common)
++		return FALSE;
++	    }
++	  /* test ? 3 : 4
++	     => can_reverse  | 3 + (test == 0)
++		!can_reverse | 4 - (test != 0).  */
++	  else if (diff < 0 && STORE_FLAG_VALUE > 0)
++	    {
++	      reversep = can_reverse;
++	      subtract_flag_p = !can_reverse;
++	      /* If we need to subtract the flag and we have PLUS-immediate
++		 A and B then it is unlikely to be beneficial to play tricks
++		 here.  */
++	      if (subtract_flag_p && common)
++		return FALSE;
++	    }
++	  /* test ? 4 : 3
++	     => 4 + (test != 0).  */
++	  else if (diff > 0 && STORE_FLAG_VALUE > 0)
++	    reversep = false;
++	  else
++	    gcc_unreachable ();
++	}
+       else if (ifalse == 0 && exact_log2 (itrue) >= 0
+ 	       && (STORE_FLAG_VALUE == 1
+ 		   || if_info->branch_cost >= 2))
+ 	normalize = 1;
+       else if (itrue == 0 && exact_log2 (ifalse) >= 0 && can_reverse
+ 	       && (STORE_FLAG_VALUE == 1 || if_info->branch_cost >= 2))
+-	normalize = 1, reversep = 1;
++	{
++	  normalize = 1;
++	  reversep = true;
++	}
+       else if (itrue == -1
+ 	       && (STORE_FLAG_VALUE == -1
+ 		   || if_info->branch_cost >= 2))
+ 	normalize = -1;
+       else if (ifalse == -1 && can_reverse
+ 	       && (STORE_FLAG_VALUE == -1 || if_info->branch_cost >= 2))
+-	normalize = -1, reversep = 1;
+-      else if ((if_info->branch_cost >= 2 && STORE_FLAG_VALUE == -1)
+-	       || if_info->branch_cost >= 3)
+-	normalize = -1;
++	{
++	  normalize = -1;
++	  reversep = true;
++	}
+       else
+ 	return FALSE;
+ 
+@@ -1235,6 +1301,15 @@ noce_try_store_flag_constants (struct noce_if_info *if_info)
+ 	}
+ 
+       start_sequence ();
++
++      /* If we have x := test ? x + 3 : x + 4 then move the original
++	 x out of the way while we store flags.  */
++      if (common && rtx_equal_p (common, if_info->x))
++	{
++	  common = gen_reg_rtx (mode);
++	  noce_emit_move_insn (common, if_info->x);
++	}
++
+       target = noce_emit_store_flag (if_info, if_info->x, reversep, normalize);
+       if (! target)
+ 	{
+@@ -1246,13 +1321,27 @@ noce_try_store_flag_constants (struct noce_if_info *if_info)
+ 	 =>   x = 3 + (test == 0);  */
+       if (diff == STORE_FLAG_VALUE || diff == -STORE_FLAG_VALUE)
+ 	{
+-	  target = expand_simple_binop (mode,
+-					(diff == STORE_FLAG_VALUE
+-					 ? PLUS : MINUS),
++	  /* Add the common part now.  This may allow combine to merge this
++	     with the store flag operation earlier into some sort of conditional
++	     increment/decrement if the target allows it.  */
++	  if (common)
++	    target = expand_simple_binop (mode, PLUS,
++					   target, common,
++					   target, 0, OPTAB_WIDEN);
++
++	  /* Always use ifalse here.  It should have been swapped with itrue
++	     when appropriate when reversep is true.  */
++	  target = expand_simple_binop (mode, subtract_flag_p ? MINUS : PLUS,
+ 					gen_int_mode (ifalse, mode), target,
+ 					if_info->x, 0, OPTAB_WIDEN);
+ 	}
+-
++      /* Other cases are not beneficial when the original A and B are PLUS
++	 expressions.  */
++      else if (common)
++	{
++	  end_sequence ();
++	  return FALSE;
++	}
+       /* if (test) x = 8; else x = 0;
+ 	 =>   x = (test != 0) << 3;  */
+       else if (ifalse == 0 && (tmp = exact_log2 (itrue)) >= 0)
+@@ -1270,18 +1359,10 @@ noce_try_store_flag_constants (struct noce_if_info *if_info)
+ 					target, gen_int_mode (ifalse, mode),
+ 					if_info->x, 0, OPTAB_WIDEN);
+ 	}
+-
+-      /* if (test) x = a; else x = b;
+-	 =>   x = (-(test != 0) & (b - a)) + a;  */
+       else
+ 	{
+-	  target = expand_simple_binop (mode, AND,
+-					target, gen_int_mode (diff, mode),
+-					if_info->x, 0, OPTAB_WIDEN);
+-	  if (target)
+-	    target = expand_simple_binop (mode, PLUS,
+-					  target, gen_int_mode (ifalse, mode),
+-					  if_info->x, 0, OPTAB_WIDEN);
++	  end_sequence ();
++	  return FALSE;
+ 	}
+ 
+       if (! target)
+@@ -1606,11 +1687,67 @@ noce_try_cmove (struct noce_if_info *if_info)
+ 				   INSN_LOCATION (if_info->insn_a));
+ 	  return TRUE;
+ 	}
+-      else
++      /* If both a and b are constants try a last-ditch transformation:
++	 if (test) x = a; else x = b;
++	 =>   x = (-(test != 0) & (b - a)) + a;
++	 Try this only if the target-specific expansion above has failed.
++	 The target-specific expander may want to generate sequences that
++	 we don't know about, so give them a chance before trying this
++	 approach.  */
++      else if (!targetm.have_conditional_execution ()
++		&& CONST_INT_P (if_info->a) && CONST_INT_P (if_info->b)
++		&& ((if_info->branch_cost >= 2 && STORE_FLAG_VALUE == -1)
++		    || if_info->branch_cost >= 3))
+ 	{
+-	  end_sequence ();
+-	  return FALSE;
++	  machine_mode mode = GET_MODE (if_info->x);
++	  HOST_WIDE_INT ifalse = INTVAL (if_info->a);
++	  HOST_WIDE_INT itrue = INTVAL (if_info->b);
++	  rtx target = noce_emit_store_flag (if_info, if_info->x, false, -1);
++	  if (!target)
++	    {
++	      end_sequence ();
++	      return FALSE;
++	    }
++
++	  HOST_WIDE_INT diff = (unsigned HOST_WIDE_INT) itrue - ifalse;
++	  /* Make sure we can represent the difference
++	     between the two values.  */
++	  if ((diff > 0)
++	      != ((ifalse < 0) != (itrue < 0) ? ifalse < 0 : ifalse < itrue))
++	    {
++	      end_sequence ();
++	      return FALSE;
++	    }
++
++	  diff = trunc_int_for_mode (diff, mode);
++	  target = expand_simple_binop (mode, AND,
++					target, gen_int_mode (diff, mode),
++					if_info->x, 0, OPTAB_WIDEN);
++	  if (target)
++	    target = expand_simple_binop (mode, PLUS,
++					  target, gen_int_mode (ifalse, mode),
++					  if_info->x, 0, OPTAB_WIDEN);
++	  if (target)
++	    {
++	      if (target != if_info->x)
++		noce_emit_move_insn (if_info->x, target);
++
++	      seq = end_ifcvt_sequence (if_info);
++	      if (!seq)
++		return FALSE;
++
++	      emit_insn_before_setloc (seq, if_info->jump,
++				   INSN_LOCATION (if_info->insn_a));
++	      return TRUE;
++	    }
++	  else
++	    {
++	      end_sequence ();
++	      return FALSE;
++	    }
+ 	}
++      else
++	end_sequence ();
+     }
+ 
+   return FALSE;
+@@ -2766,13 +2903,14 @@ noce_process_if_block (struct noce_if_info *if_info)
+     goto success;
+   if (noce_try_abs (if_info))
+     goto success;
++  if (!targetm.have_conditional_execution ()
++      && noce_try_store_flag_constants (if_info))
++    goto success;
+   if (HAVE_conditional_move
+       && noce_try_cmove (if_info))
+     goto success;
+   if (! targetm.have_conditional_execution ())
+     {
+-      if (noce_try_store_flag_constants (if_info))
+-	goto success;
+       if (noce_try_addcc (if_info))
+ 	goto success;
+       if (noce_try_store_flag_mask (if_info))
+--- a/src/gcc/ira-color.c
++++ b/src/gcc/ira-color.c
+@@ -1331,10 +1331,12 @@ get_next_update_cost (ira_allocno_t *allocno, ira_allocno_t *from, int *divisor)
+   return true;
+ }
+ 
+-/* Increase costs of HARD_REGNO by UPDATE_COST for ALLOCNO.  Return
+-   true if we really modified the cost.  */
++/* Increase costs of HARD_REGNO by UPDATE_COST and conflict cost by
++   UPDATE_CONFLICT_COST for ALLOCNO.  Return true if we really
++   modified the cost.  */
+ static bool
+-update_allocno_cost (ira_allocno_t allocno, int hard_regno, int update_cost)
++update_allocno_cost (ira_allocno_t allocno, int hard_regno,
++		     int update_cost, int update_conflict_cost)
+ {
+   int i;
+   enum reg_class aclass = ALLOCNO_CLASS (allocno);
+@@ -1350,7 +1352,7 @@ update_allocno_cost (ira_allocno_t allocno, int hard_regno, int update_cost)
+     (&ALLOCNO_UPDATED_CONFLICT_HARD_REG_COSTS (allocno),
+      aclass, 0, ALLOCNO_CONFLICT_HARD_REG_COSTS (allocno));
+   ALLOCNO_UPDATED_HARD_REG_COSTS (allocno)[i] += update_cost;
+-  ALLOCNO_UPDATED_CONFLICT_HARD_REG_COSTS (allocno)[i] += update_cost;
++  ALLOCNO_UPDATED_CONFLICT_HARD_REG_COSTS (allocno)[i] += update_conflict_cost;
+   return true;
+ }
+ 
+@@ -1362,7 +1364,7 @@ static void
+ update_costs_from_allocno (ira_allocno_t allocno, int hard_regno,
+ 			   int divisor, bool decr_p, bool record_p)
+ {
+-  int cost, update_cost;
++  int cost, update_cost, update_conflict_cost;
+   machine_mode mode;
+   enum reg_class rclass, aclass;
+   ira_allocno_t another_allocno, from = NULL;
+@@ -1403,11 +1405,20 @@ update_costs_from_allocno (ira_allocno_t allocno, int hard_regno,
+ 	  if (decr_p)
+ 	    cost = -cost;
+ 
+-	  update_cost = cp->freq * cost / divisor;
++	  update_conflict_cost = update_cost = cp->freq * cost / divisor;
++
++	  if (ALLOCNO_COLOR_DATA (another_allocno) != NULL
++	      && (ALLOCNO_COLOR_DATA (allocno)->first_thread_allocno
++		  != ALLOCNO_COLOR_DATA (another_allocno)->first_thread_allocno))
++	    /* Decrease conflict cost of ANOTHER_ALLOCNO if it is not
++	       in the same allocation thread.  */
++	    update_conflict_cost /= COST_HOP_DIVISOR;
++
+ 	  if (update_cost == 0)
+ 	    continue;
+ 
+-	  if (! update_allocno_cost (another_allocno, hard_regno, update_cost))
++	  if (! update_allocno_cost (another_allocno, hard_regno,
++				     update_cost, update_conflict_cost))
+ 	    continue;
+ 	  queue_update_cost (another_allocno, allocno, divisor * COST_HOP_DIVISOR);
+ 	  if (record_p && ALLOCNO_COLOR_DATA (another_allocno) != NULL)
+--- a/src/gcc/ira-costs.c
++++ b/src/gcc/ira-costs.c
+@@ -1380,8 +1380,6 @@ record_operand_costs (rtx_insn *insn, enum reg_class *pref)
+       rtx dest = SET_DEST (set);
+       rtx src = SET_SRC (set);
+ 
+-      dest = SET_DEST (set);
+-      src = SET_SRC (set);
+       if (GET_CODE (dest) == SUBREG
+ 	  && (GET_MODE_SIZE (GET_MODE (dest))
+ 	      == GET_MODE_SIZE (GET_MODE (SUBREG_REG (dest)))))
+--- a/src/gcc/jit/Make-lang.in
++++ b/src/gcc/jit/Make-lang.in
+@@ -285,6 +285,10 @@ jit.uninstall:
+ # We just have to delete files specific to us.
+ 
+ jit.mostlyclean:
++	-rm -f $(LIBGCCJIT_FILENAME) $(LIBGCCJIT_SYMLINK)
++	-rm -f $(LIBGCCJIT_LINKER_NAME_SYMLINK) $(FULL_DRIVER_NAME)
++	-rm -f $(LIBGCCJIT_SONAME)
++	-rm -f $(jit_OBJS)
+ 
+ jit.clean:
+ 
+--- a/src/gcc/loop-invariant.c
++++ b/src/gcc/loop-invariant.c
+@@ -696,6 +696,8 @@ find_defs (struct loop *loop)
+   df_remove_problem (df_chain);
+   df_process_deferred_rescans ();
+   df_chain_add_problem (DF_UD_CHAIN);
++  df_live_add_problem ();
++  df_live_set_all_dirty ();
+   df_set_flags (DF_RD_PRUNE_DEAD_DEFS);
+   df_analyze_loop (loop);
+   check_invariant_table_size ();
+@@ -740,8 +742,11 @@ create_new_invariant (struct def *def, rtx_insn *insn, bitmap depends_on,
+ 	 enough to not regress 410.bwaves either (by still moving reg+reg
+ 	 invariants).
+ 	 See http://gcc.gnu.org/ml/gcc-patches/2009-10/msg01210.html .  */
+-      inv->cheap_address = address_cost (SET_SRC (set), word_mode,
+-					 ADDR_SPACE_GENERIC, speed) < 3;
++      if (SCALAR_INT_MODE_P (GET_MODE (SET_DEST (set))))
++	inv->cheap_address = address_cost (SET_SRC (set), word_mode,
++					   ADDR_SPACE_GENERIC, speed) < 3;
++      else
++	inv->cheap_address = false;
+     }
+   else
+     {
+@@ -1174,6 +1179,7 @@ get_inv_cost (struct invariant *inv, int *comp_cost, unsigned *regs_needed,
+     }
+ 
+   if (!inv->cheap_address
++      || inv->def->n_uses == 0
+       || inv->def->n_addr_uses < inv->def->n_uses)
+     (*comp_cost) += inv->cost * inv->eqno;
+ 
+@@ -1512,6 +1518,79 @@ replace_uses (struct invariant *inv, rtx reg, bool in_group)
+   return 1;
+ }
+ 
++/* Whether invariant INV setting REG can be moved out of LOOP, at the end of
++   the block preceding its header.  */
++
++static bool
++can_move_invariant_reg (struct loop *loop, struct invariant *inv, rtx reg)
++{
++  df_ref def, use;
++  unsigned int dest_regno, defs_in_loop_count = 0;
++  rtx_insn *insn = inv->insn;
++  basic_block bb = BLOCK_FOR_INSN (inv->insn);
++
++  /* We ignore hard register and memory access for cost and complexity reasons.
++     Hard register are few at this stage and expensive to consider as they
++     require building a separate data flow.  Memory access would require using
++     df_simulate_* and can_move_insns_across functions and is more complex.  */
++  if (!REG_P (reg) || HARD_REGISTER_P (reg))
++    return false;
++
++  /* Check whether the set is always executed.  We could omit this condition if
++     we know that the register is unused outside of the loop, but it does not
++     seem worth finding out.  */
++  if (!inv->always_executed)
++    return false;
++
++  /* Check that all uses that would be dominated by def are already dominated
++     by it.  */
++  dest_regno = REGNO (reg);
++  for (use = DF_REG_USE_CHAIN (dest_regno); use; use = DF_REF_NEXT_REG (use))
++    {
++      rtx_insn *use_insn;
++      basic_block use_bb;
++
++      use_insn = DF_REF_INSN (use);
++      use_bb = BLOCK_FOR_INSN (use_insn);
++
++      /* Ignore instruction considered for moving.  */
++      if (use_insn == insn)
++	continue;
++
++      /* Don't consider uses outside loop.  */
++      if (!flow_bb_inside_loop_p (loop, use_bb))
++	continue;
++
++      /* Don't move if a use is not dominated by def in insn.  */
++      if (use_bb == bb && DF_INSN_LUID (insn) >= DF_INSN_LUID (use_insn))
++	return false;
++      if (!dominated_by_p (CDI_DOMINATORS, use_bb, bb))
++	return false;
++    }
++
++  /* Check for other defs.  Any other def in the loop might reach a use
++     currently reached by the def in insn.  */
++  for (def = DF_REG_DEF_CHAIN (dest_regno); def; def = DF_REF_NEXT_REG (def))
++    {
++      basic_block def_bb = DF_REF_BB (def);
++
++      /* Defs in exit block cannot reach a use they weren't already.  */
++      if (single_succ_p (def_bb))
++	{
++	  basic_block def_bb_succ;
++
++	  def_bb_succ = single_succ (def_bb);
++	  if (!flow_bb_inside_loop_p (loop, def_bb_succ))
++	    continue;
++	}
++
++      if (++defs_in_loop_count > 1)
++	return false;
++    }
++
++  return true;
++}
++
+ /* Move invariant INVNO out of the LOOP.  Returns true if this succeeds, false
+    otherwise.  */
+ 
+@@ -1545,11 +1624,8 @@ move_invariant_reg (struct loop *loop, unsigned invno)
+ 	    }
+ 	}
+ 
+-      /* Move the set out of the loop.  If the set is always executed (we could
+-	 omit this condition if we know that the register is unused outside of
+-	 the loop, but it does not seem worth finding out) and it has no uses
+-	 that would not be dominated by it, we may just move it (TODO).
+-	 Otherwise we need to create a temporary register.  */
++      /* If possible, just move the set out of the loop.  Otherwise, we
++	 need to create a temporary register.  */
+       set = single_set (inv->insn);
+       reg = dest = SET_DEST (set);
+       if (GET_CODE (reg) == SUBREG)
+@@ -1557,20 +1633,27 @@ move_invariant_reg (struct loop *loop, unsigned invno)
+       if (REG_P (reg))
+ 	regno = REGNO (reg);
+ 
+-      reg = gen_reg_rtx_and_attrs (dest);
++      if (!can_move_invariant_reg (loop, inv, dest))
++	{
++	  reg = gen_reg_rtx_and_attrs (dest);
+ 
+-      /* Try replacing the destination by a new pseudoregister.  */
+-      validate_change (inv->insn, &SET_DEST (set), reg, true);
++	  /* Try replacing the destination by a new pseudoregister.  */
++	  validate_change (inv->insn, &SET_DEST (set), reg, true);
+ 
+-      /* As well as all the dominated uses.  */
+-      replace_uses (inv, reg, true);
++	  /* As well as all the dominated uses.  */
++	  replace_uses (inv, reg, true);
+ 
+-      /* And validate all the changes.  */
+-      if (!apply_change_group ())
+-	goto fail;
++	  /* And validate all the changes.  */
++	  if (!apply_change_group ())
++	    goto fail;
+ 
+-      emit_insn_after (gen_move_insn (dest, reg), inv->insn);
++	  emit_insn_after (gen_move_insn (dest, reg), inv->insn);
++	}
++      else if (dump_file)
++	fprintf (dump_file, "Invariant %d moved without introducing a new "
++			    "temporary register\n", invno);
+       reorder_insns (inv->insn, inv->insn, BB_END (preheader));
++      df_recompute_luids (preheader);
+ 
+       /* If there is a REG_EQUAL note on the insn we just moved, and the
+ 	 insn is in a basic block that is not always executed or the note
+--- a/src/gcc/lra-constraints.c
++++ b/src/gcc/lra-constraints.c
+@@ -867,10 +867,11 @@ narrow_reload_pseudo_class (rtx reg, enum reg_class cl)
+    numbers with end marker -1) with reg class GOAL_CLASS.  Add input
+    and output reloads correspondingly to the lists *BEFORE and *AFTER.
+    OUT might be negative.  In this case we generate input reloads for
+-   matched input operands INS.  */
++   matched input operands INS.  EARLY_CLOBBER_P is a flag that the
++   output operand is early clobbered for chosen alternative.  */
+ static void
+ match_reload (signed char out, signed char *ins, enum reg_class goal_class,
+-	      rtx_insn **before, rtx_insn **after)
++	      rtx_insn **before, rtx_insn **after, bool early_clobber_p)
+ {
+   int i, in;
+   rtx new_in_reg, new_out_reg, reg, clobber;
+@@ -940,20 +941,34 @@ match_reload (signed char out, signed char *ins, enum reg_class goal_class,
+ 	 they live in the same place.  When we create a pseudo we
+ 	 assign value of original pseudo (if any) from which we
+ 	 created the new pseudo.  If we create the pseudo from the
+-	 input pseudo, the new pseudo will no conflict with the input
+-	 pseudo which is wrong when the input pseudo lives after the
+-	 insn and as the new pseudo value is changed by the insn
+-	 output.  Therefore we create the new pseudo from the output.
++	 input pseudo, the new pseudo will have no conflict with the
++	 input pseudo which is wrong when the input pseudo lives after
++	 the insn and as the new pseudo value is changed by the insn
++	 output.  Therefore we create the new pseudo from the output
++	 except the case when we have single matched dying input
++	 pseudo.
+ 
+ 	 We cannot reuse the current output register because we might
+ 	 have a situation like "a <- a op b", where the constraints
+ 	 force the second input operand ("b") to match the output
+ 	 operand ("a").  "b" must then be copied into a new register
+-	 so that it doesn't clobber the current value of "a".  */
++	 so that it doesn't clobber the current value of "a".
++
++	 We can not use the same value if the output pseudo is
++	 early clobbered or the input pseudo is mentioned in the
++	 output, e.g. as an address part in memory, because
++	 output reload will actually extend the pseudo liveness.
++	 We don't care about eliminable hard regs here as we are
++	 interesting only in pseudos.  */
+ 
+       new_in_reg = new_out_reg
+-	= lra_create_new_reg_with_unique_value (outmode, out_rtx,
+-						goal_class, "");
++	= (! early_clobber_p && ins[1] < 0 && REG_P (in_rtx)
++	   && (int) REGNO (in_rtx) < lra_new_regno_start
++	   && find_regno_note (curr_insn, REG_DEAD, REGNO (in_rtx))
++	   && (out < 0 || regno_use_in (REGNO (in_rtx), out_rtx) == NULL_RTX)
++	   ? lra_create_new_reg (inmode, in_rtx, goal_class, "")
++	   : lra_create_new_reg_with_unique_value (outmode, out_rtx,
++						   goal_class, ""));
+     }
+   /* In operand can be got from transformations before processing insn
+      constraints.  One example of such transformations is subreg
+@@ -1656,8 +1671,7 @@ prohibited_class_reg_set_mode_p (enum reg_class rclass,
+ {
+   HARD_REG_SET temp;
+   
+-  // ??? Is this assert right
+-  // lra_assert (hard_reg_set_subset_p (set, reg_class_contents[rclass]));
++  lra_assert (hard_reg_set_subset_p (reg_class_contents[rclass], set));
+   COPY_HARD_REG_SET (temp, set);
+   AND_COMPL_HARD_REG_SET (temp, lra_no_alloc_regs);
+   return (hard_reg_set_subset_p
+@@ -3877,13 +3891,18 @@ curr_insn_transform (bool check_only_p)
+ 	  match_inputs[0] = i;
+ 	  match_inputs[1] = -1;
+ 	  match_reload (goal_alt_matched[i][0], match_inputs,
+-			goal_alt[i], &before, &after);
++			goal_alt[i], &before, &after,
++			curr_static_id->operand_alternative
++			[goal_alt_number * n_operands + goal_alt_matched[i][0]]
++			.earlyclobber);
+ 	}
+       else if (curr_static_id->operand[i].type == OP_OUT
+ 	       && (curr_static_id->operand[goal_alt_matched[i][0]].type
+ 		   == OP_IN))
+ 	/* Generate reloads for output and matched inputs.  */
+-	match_reload (i, goal_alt_matched[i], goal_alt[i], &before, &after);
++	match_reload (i, goal_alt_matched[i], goal_alt[i], &before, &after,
++		      curr_static_id->operand_alternative
++		      [goal_alt_number * n_operands + i].earlyclobber);
+       else if (curr_static_id->operand[i].type == OP_IN
+ 	       && (curr_static_id->operand[goal_alt_matched[i][0]].type
+ 		   == OP_IN))
+@@ -3893,7 +3912,7 @@ curr_insn_transform (bool check_only_p)
+ 	  for (j = 0; (k = goal_alt_matched[i][j]) >= 0; j++)
+ 	    match_inputs[j + 1] = k;
+ 	  match_inputs[j + 1] = -1;
+-	  match_reload (-1, match_inputs, goal_alt[i], &before, &after);
++	  match_reload (-1, match_inputs, goal_alt[i], &before, &after, false);
+ 	}
+       else
+ 	/* We must generate code in any case when function
+--- a/src/gcc/lra-lives.c
++++ b/src/gcc/lra-lives.c
+@@ -777,28 +777,33 @@ process_bb_lives (basic_block bb, int &curr_point, bool dead_insn_p)
+ 	  lra_hard_reg_usage[reg->regno] += freq;
+ 
+       call_p = CALL_P (curr_insn);
++      src_regno = (set != NULL_RTX && REG_P (SET_SRC (set))
++		   ? REGNO (SET_SRC (set)) : -1);
++      dst_regno = (set != NULL_RTX && REG_P (SET_DEST (set))
++		   ? REGNO (SET_DEST (set)) : -1);
+       if (complete_info_p
+-	  && set != NULL_RTX
+-	  && REG_P (SET_DEST (set)) && REG_P (SET_SRC (set))
++	  && src_regno >= 0 && dst_regno >= 0
+ 	  /* Check that source regno does not conflict with
+ 	     destination regno to exclude most impossible
+ 	     preferences.  */
+-	  && ((((src_regno = REGNO (SET_SRC (set))) >= FIRST_PSEUDO_REGISTER
+-		&& ! sparseset_bit_p (pseudos_live, src_regno))
++	  && (((src_regno >= FIRST_PSEUDO_REGISTER
++		&& (! sparseset_bit_p (pseudos_live, src_regno)
++		    || (dst_regno >= FIRST_PSEUDO_REGISTER
++			&& lra_reg_val_equal_p (src_regno,
++						lra_reg_info[dst_regno].val,
++						lra_reg_info[dst_regno].offset))))
+ 	       || (src_regno < FIRST_PSEUDO_REGISTER
+ 		   && ! TEST_HARD_REG_BIT (hard_regs_live, src_regno)))
+ 	      /* It might be 'inheritance pseudo <- reload pseudo'.  */
+ 	      || (src_regno >= lra_constraint_new_regno_start
+-		  && ((int) REGNO (SET_DEST (set))
+-		      >= lra_constraint_new_regno_start)
++		  && dst_regno >= lra_constraint_new_regno_start
+ 		  /* Remember to skip special cases where src/dest regnos are
+ 		     the same, e.g. insn SET pattern has matching constraints
+ 		     like =r,0.  */
+-		  && src_regno != (int) REGNO (SET_DEST (set)))))
++		  && src_regno != dst_regno)))
+ 	{
+ 	  int hard_regno = -1, regno = -1;
+ 
+-	  dst_regno = REGNO (SET_DEST (set));
+ 	  if (dst_regno >= lra_constraint_new_regno_start
+ 	      && src_regno >= lra_constraint_new_regno_start)
+ 	    {
+--- a/src/gcc/objc/Make-lang.in
++++ b/src/gcc/objc/Make-lang.in
+@@ -114,6 +114,7 @@ objc.uninstall:
+ objc.mostlyclean:
+ 	-rm -f objc/*$(objext) objc/xforward objc/fflags
+ 	-rm -f objc/*$(coverageexts)
++	-rm -f cc1obj$(exeext)
+ objc.clean: objc.mostlyclean
+ 	-rm -rf objc-headers
+ objc.distclean:
+--- a/src/gcc/objcp/Make-lang.in
++++ b/src/gcc/objcp/Make-lang.in
+@@ -142,6 +142,7 @@ obj-c++.uninstall:
+ obj-c++.mostlyclean:
+ 	-rm -f objcp/*$(objext)
+ 	-rm -f objcp/*$(coverageexts)
++	-rm -f cc1objplus$(exeext)
+ obj-c++.clean: obj-c++.mostlyclean
+ obj-c++.distclean:
+ 	-rm -f objcp/config.status objcp/Makefile
+--- a/src/gcc/optabs.c
++++ b/src/gcc/optabs.c
+@@ -6544,18 +6544,28 @@ vector_compare_rtx (enum tree_code tcode, tree t_op0, tree t_op1,
+ {
+   struct expand_operand ops[2];
+   rtx rtx_op0, rtx_op1;
++  machine_mode m0, m1;
+   enum rtx_code rcode = get_rtx_code (tcode, unsignedp);
+ 
+   gcc_assert (TREE_CODE_CLASS (tcode) == tcc_comparison);
+ 
+-  /* Expand operands.  */
++  /* Expand operands.  For vector types with scalar modes, e.g. where int64x1_t
++     has mode DImode, this can produce a constant RTX of mode VOIDmode; in such
++     cases, use the original mode.  */
+   rtx_op0 = expand_expr (t_op0, NULL_RTX, TYPE_MODE (TREE_TYPE (t_op0)),
+ 			 EXPAND_STACK_PARM);
++  m0 = GET_MODE (rtx_op0);
++  if (m0 == VOIDmode)
++    m0 = TYPE_MODE (TREE_TYPE (t_op0));
++
+   rtx_op1 = expand_expr (t_op1, NULL_RTX, TYPE_MODE (TREE_TYPE (t_op1)),
+ 			 EXPAND_STACK_PARM);
++  m1 = GET_MODE (rtx_op1);
++  if (m1 == VOIDmode)
++    m1 = TYPE_MODE (TREE_TYPE (t_op1));
+ 
+-  create_input_operand (&ops[0], rtx_op0, GET_MODE (rtx_op0));
+-  create_input_operand (&ops[1], rtx_op1, GET_MODE (rtx_op1));
++  create_input_operand (&ops[0], rtx_op0, m0);
++  create_input_operand (&ops[1], rtx_op1, m1);
+   if (!maybe_legitimize_operands (icode, 4, 2, ops))
+     gcc_unreachable ();
+   return gen_rtx_fmt_ee (rcode, VOIDmode, ops[0].value, ops[1].value);
+--- a/src/gcc/params.def
++++ b/src/gcc/params.def
+@@ -262,6 +262,14 @@ DEFPARAM(PARAM_MAX_HOIST_DEPTH,
+ 	 "Maximum depth of search in the dominator tree for expressions to hoist",
+ 	 30, 0, 0)
+ 
++
++/* When synthesizing expnonentiation by a real constant operations using square
++   roots, this controls how deep sqrt chains we are willing to generate.  */
++DEFPARAM(PARAM_MAX_POW_SQRT_DEPTH,
++	 "max-pow-sqrt-depth",
++	 "Maximum depth of sqrt chains to use when synthesizing exponentiation by a real constant",
++	 5, 1, 32)
++
+ /* This parameter limits the number of insns in a loop that will be unrolled,
+    and by how much the loop is unrolled.
+ 
+--- a/src/gcc/passes.def
++++ b/src/gcc/passes.def
+@@ -247,6 +247,7 @@ along with GCC; see the file COPYING3.  If not see
+ 	  PUSH_INSERT_PASSES_WITHIN (pass_parallelize_loops)
+ 	      NEXT_PASS (pass_expand_omp_ssa);
+ 	  POP_INSERT_PASSES ()
++	  NEXT_PASS (pass_ch_vect);
+ 	  NEXT_PASS (pass_if_conversion);
+ 	  /* pass_vectorize must immediately follow pass_if_conversion.
+ 	     Please do not add any other passes in between.  */
+--- a/src/gcc/read-md.c
++++ b/src/gcc/read-md.c
+@@ -388,20 +388,31 @@ read_name (struct md_name *name)
+ {
+   int c;
+   size_t i;
++  int angle_bracket_depth;
+ 
+   c = read_skip_spaces ();
+ 
+   i = 0;
++  angle_bracket_depth = 0;
+   while (1)
+     {
++      if (c == '<')
++	angle_bracket_depth++;
++
++      if ((c == '>') && (angle_bracket_depth > 0))
++	  angle_bracket_depth--;
++
+       if (c == ' ' || c == '\n' || c == '\t' || c == '\f' || c == '\r'
+ 	  || c == EOF)
+ 	break;
+-      if (c == ':' || c == ')' || c == ']' || c == '"' || c == '/'
+-	  || c == '(' || c == '[')
++      if (angle_bracket_depth == 0)
+ 	{
+-	  unread_char (c);
+-	  break;
++	  if (c == ':' || c == ')' || c == ']'
++	      || c == '"' || c == '/' || c == '(' || c == '[')
++	    {
++	      unread_char (c);
++	      break;
++	    }
+ 	}
+ 
+       if (i == sizeof (name->buffer) - 1)
+--- a/src/gcc/regrename.c
++++ b/src/gcc/regrename.c
+@@ -505,12 +505,20 @@ rename_chains (void)
+ 	  continue;
+ 	}
+ 
+-      if (dump_file)
+-	fprintf (dump_file, ", renamed as %s\n", reg_names[best_new_reg]);
+-
+-      regrename_do_replace (this_head, best_new_reg);
+-      tick[best_new_reg] = ++this_tick;
+-      df_set_regs_ever_live (best_new_reg, true);
++      if (regrename_do_replace (this_head, best_new_reg))
++	{
++	  if (dump_file)
++	    fprintf (dump_file, ", renamed as %s\n", reg_names[best_new_reg]);
++	  tick[best_new_reg] = ++this_tick;
++	  df_set_regs_ever_live (best_new_reg, true);
++	}
++      else
++	{
++	  if (dump_file)
++	    fprintf (dump_file, ", renaming as %s failed\n",
++		     reg_names[best_new_reg]);
++	  tick[reg] = ++this_tick;
++	}
+     }
+ }
+ 
+@@ -936,7 +944,13 @@ regrename_analyze (bitmap bb_mask)
+     bb->aux = NULL;
+ }
+ 
+-void
++/* Attempt to replace all uses of the register in the chain beginning with
++   HEAD with REG.  Returns true on success and false if the replacement is
++   rejected because the insns would not validate.  The latter can happen
++   e.g. if a match_parallel predicate enforces restrictions on register
++   numbering in its subpatterns.  */
++
++bool
+ regrename_do_replace (struct du_head *head, int reg)
+ {
+   struct du_chain *chain;
+@@ -950,22 +964,26 @@ regrename_do_replace (struct du_head *head, int reg)
+       int reg_ptr = REG_POINTER (*chain->loc);
+ 
+       if (DEBUG_INSN_P (chain->insn) && REGNO (*chain->loc) != base_regno)
+-	INSN_VAR_LOCATION_LOC (chain->insn) = gen_rtx_UNKNOWN_VAR_LOC ();
++	validate_change (chain->insn, &(INSN_VAR_LOCATION_LOC (chain->insn)),
++			 gen_rtx_UNKNOWN_VAR_LOC (), true);
+       else
+ 	{
+-	  *chain->loc = gen_raw_REG (GET_MODE (*chain->loc), reg);
++	  validate_change (chain->insn, chain->loc, 
++			   gen_raw_REG (GET_MODE (*chain->loc), reg), true);
+ 	  if (regno >= FIRST_PSEUDO_REGISTER)
+ 	    ORIGINAL_REGNO (*chain->loc) = regno;
+ 	  REG_ATTRS (*chain->loc) = attr;
+ 	  REG_POINTER (*chain->loc) = reg_ptr;
+ 	}
+-
+-      df_insn_rescan (chain->insn);
+     }
+ 
++  if (!apply_change_group ())
++    return false;
++
+   mode = GET_MODE (*head->first->loc);
+   head->regno = reg;
+   head->nregs = hard_regno_nregs[reg][mode];
++  return true;
+ }
+ 
+ 
+--- a/src/gcc/regrename.h
++++ b/src/gcc/regrename.h
+@@ -91,6 +91,6 @@ extern void regrename_analyze (bitmap);
+ extern du_head_p regrename_chain_from_id (unsigned int);
+ extern int find_rename_reg (du_head_p, enum reg_class, HARD_REG_SET *, int,
+ 			    bool);
+-extern void regrename_do_replace (du_head_p, int);
++extern bool regrename_do_replace (du_head_p, int);
+ 
+ #endif
+--- a/src/gcc/rtlanal.c
++++ b/src/gcc/rtlanal.c
+@@ -104,7 +104,10 @@ generic_subrtx_iterator <T>::add_single_to_queue (array_type &array,
+ 	  return base;
+ 	}
+       gcc_checking_assert (i == LOCAL_ELEMS);
+-      vec_safe_grow (array.heap, i + 1);
++      /* A previous iteration might also have moved from the stack to the
++	 heap, in which case the heap array will already be big enough.  */
++      if (vec_safe_length (array.heap) <= i)
++	vec_safe_grow (array.heap, i + 1);
+       base = array.heap->address ();
+       memcpy (base, array.stack, sizeof (array.stack));
+       base[LOCAL_ELEMS] = x;
+--- a/src/gcc/sched-deps.c
++++ b/src/gcc/sched-deps.c
+@@ -2856,7 +2856,7 @@ sched_analyze_2 (struct deps_desc *deps, rtx x, rtx_insn *insn)
+     sched_deps_info->finish_rhs ();
+ }
+ 
+-/* Try to group two fuseable insns together to prevent scheduler
++/* Try to group two fusible insns together to prevent scheduler
+    from scheduling them apart.  */
+ 
+ static void
+--- a/src/gcc/sched-int.h
++++ b/src/gcc/sched-int.h
+@@ -811,8 +811,17 @@ struct autopref_multipass_data_
+ {
+   /* Base part of memory address.  */
+   rtx base;
+-  /* Memory offset.  */
+-  int offset;
++
++  /* Memory offsets from the base.  For single simple sets
++     only min_offset is valid.  For multi-set insns min_offset
++     and max_offset record the minimum and maximum offsets from the same
++     base among the sets inside the PARALLEL.  */
++  int min_offset;
++  int max_offset;
++
++  /* True if this is a load/store-multiple instruction.  */
++  bool multi_mem_insn_p;
++
+   /* Entry status.  */
+   enum autopref_multipass_data_status status;
+ };
+--- a/src/gcc/simplify-rtx.c
++++ b/src/gcc/simplify-rtx.c
+@@ -978,6 +978,32 @@ simplify_unary_operation_1 (enum rtx_code code, machine_mode mode, rtx op)
+       if (GET_CODE (op) == NEG)
+ 	return XEXP (op, 0);
+ 
++      /* (neg (x ? (neg y) : y)) == !x ? (neg y) : y.
++	 If comparison is not reversible use
++	 x ? y : (neg y).  */
++      if (GET_CODE (op) == IF_THEN_ELSE)
++	{
++	  rtx cond = XEXP (op, 0);
++	  rtx true_rtx = XEXP (op, 1);
++	  rtx false_rtx = XEXP (op, 2);
++
++	  if ((GET_CODE (true_rtx) == NEG
++	       && rtx_equal_p (XEXP (true_rtx, 0), false_rtx))
++	       || (GET_CODE (false_rtx) == NEG
++		   && rtx_equal_p (XEXP (false_rtx, 0), true_rtx)))
++	    {
++	      if (reversed_comparison_code (cond, NULL_RTX) != UNKNOWN)
++		temp = reversed_comparison (cond, mode);
++	      else
++		{
++		  temp = cond;
++		  std::swap (true_rtx, false_rtx);
++		}
++	      return simplify_gen_ternary (IF_THEN_ELSE, mode,
++					    mode, temp, true_rtx, false_rtx);
++	    }
++	}
++
+       /* (neg (plus X 1)) can become (not X).  */
+       if (GET_CODE (op) == PLUS
+ 	  && XEXP (op, 1) == const1_rtx)
+@@ -1171,7 +1197,7 @@ simplify_unary_operation_1 (enum rtx_code code, machine_mode mode, rtx op)
+          = (float_truncate:SF foo:DF).
+ 
+          (float_truncate:DF (float_extend:XF foo:SF))
+-         = (float_extend:SF foo:DF).  */
++         = (float_extend:DF foo:SF).  */
+       if ((GET_CODE (op) == FLOAT_TRUNCATE
+ 	   && flag_unsafe_math_optimizations)
+ 	  || GET_CODE (op) == FLOAT_EXTEND)
+@@ -1183,14 +1209,14 @@ simplify_unary_operation_1 (enum rtx_code code, machine_mode mode, rtx op)
+ 				   XEXP (op, 0), mode);
+ 
+       /*  (float_truncate (float x)) is (float x)  */
+-      if (GET_CODE (op) == FLOAT
++      if ((GET_CODE (op) == FLOAT || GET_CODE (op) == UNSIGNED_FLOAT)
+ 	  && (flag_unsafe_math_optimizations
+ 	      || (SCALAR_FLOAT_MODE_P (GET_MODE (op))
+ 		  && ((unsigned)significand_size (GET_MODE (op))
+ 		      >= (GET_MODE_PRECISION (GET_MODE (XEXP (op, 0)))
+ 			  - num_sign_bit_copies (XEXP (op, 0),
+ 						 GET_MODE (XEXP (op, 0))))))))
+-	return simplify_gen_unary (FLOAT, mode,
++	return simplify_gen_unary (GET_CODE (op), mode,
+ 				   XEXP (op, 0),
+ 				   GET_MODE (XEXP (op, 0)));
+ 
+@@ -1221,7 +1247,7 @@ simplify_unary_operation_1 (enum rtx_code code, machine_mode mode, rtx op)
+ 	  rounding can't happen.
+           */
+       if (GET_CODE (op) == FLOAT_EXTEND
+-	  || (GET_CODE (op) == FLOAT
++	  || ((GET_CODE (op) == FLOAT || GET_CODE (op) == UNSIGNED_FLOAT)
+ 	      && SCALAR_FLOAT_MODE_P (GET_MODE (op))
+ 	      && ((unsigned)significand_size (GET_MODE (op))
+ 		  >= (GET_MODE_PRECISION (GET_MODE (XEXP (op, 0)))
+--- a/src/gcc/stmt.c
++++ b/src/gcc/stmt.c
+@@ -342,13 +342,7 @@ parse_output_constraint (const char **constraint_p, int operand_num,
+ 	else if (insn_extra_memory_constraint (cn))
+ 	  *allows_mem = true;
+ 	else
+-	  {
+-	    /* Otherwise we can't assume anything about the nature of
+-	       the constraint except that it isn't purely registers.
+-	       Treat it like "g" and hope for the best.  */
+-	    *allows_reg = true;
+-	    *allows_mem = true;
+-	  }
++	  insn_extra_constraint_allows_reg_mem (cn, allows_reg, allows_mem);
+ 	break;
+       }
+ 
+@@ -465,13 +459,7 @@ parse_input_constraint (const char **constraint_p, int input_num,
+ 	else if (insn_extra_memory_constraint (cn))
+ 	  *allows_mem = true;
+ 	else
+-	  {
+-	    /* Otherwise we can't assume anything about the nature of
+-	       the constraint except that it isn't purely registers.
+-	       Treat it like "g" and hope for the best.  */
+-	    *allows_reg = true;
+-	    *allows_mem = true;
+-	  }
++	  insn_extra_constraint_allows_reg_mem (cn, allows_reg, allows_mem);
+ 	break;
+       }
+ 
+--- a/src/gcc/target.def
++++ b/src/gcc/target.def
+@@ -1975,7 +1975,7 @@ merging.",
+ DEFHOOKPOD
+ (attribute_table,
+  "If defined, this target hook points to an array of @samp{struct\n\
+-attribute_spec} (defined in @file{tree.h}) specifying the machine\n\
++attribute_spec} (defined in @file{tree-core.h}) specifying the machine\n\
+ specific attributes for this target and some of the restrictions on the\n\
+ entities to which these attributes are applied and the arguments they\n\
+ take.",
+--- a/src/gcc/testsuite/c-c++-common/Wsizeof-pointer-memaccess1.c
++++ b/src/gcc/testsuite/c-c++-common/Wsizeof-pointer-memaccess1.c
+@@ -1,6 +1,7 @@
+ /* Test -Wsizeof-pointer-memaccess warnings.  */
+ /* { dg-do compile } */
+ /* { dg-options "-Wall -Wno-sizeof-array-argument" } */
++/* { dg-options "-Wall -Wno-sizeof-array-argument -Wno-c++-compat" { target c } } */
+ 
+ typedef __SIZE_TYPE__ size_t;
+ #ifdef __cplusplus
+--- a/src/gcc/testsuite/c-c++-common/Wsizeof-pointer-memaccess2.c
++++ b/src/gcc/testsuite/c-c++-common/Wsizeof-pointer-memaccess2.c
+@@ -1,6 +1,7 @@
+ /* Test -Wsizeof-pointer-memaccess warnings.  */
+ /* { dg-do compile } */
+ /* { dg-options "-Wall -O2 -Wno-sizeof-array-argument" } */
++/* { dg-options "-Wall -O2 -Wno-sizeof-array-argument -Wno-c++-compat" {target c} } */
+ 
+ #define bos(ptr) __builtin_object_size (ptr, 1)
+ #define bos0(ptr) __builtin_object_size (ptr, 0)
+--- a/src/gcc/testsuite/c-c++-common/asan/aggressive-opts.c
++++ b/src/gcc/testsuite/c-c++-common/asan/aggressive-opts.c
+@@ -25,4 +25,3 @@ Perl_do_sv_dump()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "ASAN_CHECK" 2 "asan1" } } */
+-/* { dg-final { cleanup-tree-dump "asan1" } } */
+--- a/src/gcc/testsuite/c-c++-common/asan/inc.c
++++ b/src/gcc/testsuite/c-c++-common/asan/inc.c
+@@ -18,4 +18,3 @@ main ()
+ 
+ /* { dg-final { scan-tree-dump-times "ASAN_" 1 "asan0" } }  */
+ /* { dg-final { scan-tree-dump "ASAN_CHECK \\(.*, 4\\);" "asan0" } }  */
+-/* { dg-final { cleanup-tree-dump "asan0" } } */
+--- a/src/gcc/testsuite/c-c++-common/asan/no-asan-check-glob.c
++++ b/src/gcc/testsuite/c-c++-common/asan/no-asan-check-glob.c
+@@ -10,4 +10,3 @@ int foo ()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "ASAN_CHECK" 0 "asan1" } } */
+-/* { dg-final { cleanup-tree-dump "asan1" } } */
+--- a/src/gcc/testsuite/c-c++-common/asan/no-redundant-instrumentation-1.c
++++ b/src/gcc/testsuite/c-c++-common/asan/no-redundant-instrumentation-1.c
+@@ -57,4 +57,3 @@ main ()
+ 
+ /* { dg-final { scan-tree-dump-times "__builtin___asan_report_store1" 3 "sanopt" } } */
+ /* { dg-final { scan-tree-dump-not "__builtin___asan_report_load1" "sanopt" } } */
+-/* { dg-final { cleanup-tree-dump "sanopt" } } */
+--- a/src/gcc/testsuite/c-c++-common/asan/no-redundant-instrumentation-10.c
++++ b/src/gcc/testsuite/c-c++-common/asan/no-redundant-instrumentation-10.c
+@@ -15,4 +15,3 @@ foo ()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "__builtin___asan_report_store4" 1 "sanopt" } } */
+-/* { dg-final { cleanup-tree-dump "sanopt" } } */
+--- a/src/gcc/testsuite/c-c++-common/asan/no-redundant-instrumentation-11.c
++++ b/src/gcc/testsuite/c-c++-common/asan/no-redundant-instrumentation-11.c
+@@ -17,4 +17,3 @@ foo ()
+ 
+ /* { dg-final { scan-tree-dump-not "& 7" "sanopt" } } */
+ /* { dg-final { scan-tree-dump-not "__builtin___asan_report_store" "sanopt" } } */
+-/* { dg-final { cleanup-tree-dump "sanopt" } } */
+--- a/src/gcc/testsuite/c-c++-common/asan/no-redundant-instrumentation-12.c
++++ b/src/gcc/testsuite/c-c++-common/asan/no-redundant-instrumentation-12.c
+@@ -13,4 +13,3 @@ foo (char *p)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "__builtin___asan_report_store1" 1 "sanopt" } } */
+-/* { dg-final { cleanup-tree-dump "sanopt" } } */
+--- a/src/gcc/testsuite/c-c++-common/asan/no-redundant-instrumentation-13.c
++++ b/src/gcc/testsuite/c-c++-common/asan/no-redundant-instrumentation-13.c
+@@ -12,4 +12,3 @@ foo (char *p)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "__builtin___asan_report_store1" 1 "sanopt" } } */
+-/* { dg-final { cleanup-tree-dump "sanopt" } } */
+--- a/src/gcc/testsuite/c-c++-common/asan/no-redundant-instrumentation-14.c
++++ b/src/gcc/testsuite/c-c++-common/asan/no-redundant-instrumentation-14.c
+@@ -12,4 +12,3 @@ foo (char *p)
+ }
+ 
+ /* { dg-final { scan-tree-dump-not "__builtin___asan_report_store1" "sanopt" } } */
+-/* { dg-final { cleanup-tree-dump "sanopt" } } */
+--- a/src/gcc/testsuite/c-c++-common/asan/no-redundant-instrumentation-15.c
++++ b/src/gcc/testsuite/c-c++-common/asan/no-redundant-instrumentation-15.c
+@@ -13,4 +13,3 @@ foo (char *p)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "__builtin___asan_report_store1" 1 "sanopt" } } */
+-/* { dg-final { cleanup-tree-dump "sanopt" } } */
+--- a/src/gcc/testsuite/c-c++-common/asan/no-redundant-instrumentation-3.c
++++ b/src/gcc/testsuite/c-c++-common/asan/no-redundant-instrumentation-3.c
+@@ -15,4 +15,3 @@ foo (__INT32_TYPE__ *p)
+ /* { dg-final { scan-tree-dump-times "__builtin___asan_report" 2 "sanopt" } } */
+ /* { dg-final { scan-tree-dump-times "__builtin___asan_report_load1" 1 "sanopt" } } */
+ /* { dg-final { scan-tree-dump-times "__builtin___asan_report_store" 1 "sanopt" } } */
+-/* { dg-final { cleanup-tree-dump "sanopt" } } */
+--- a/src/gcc/testsuite/c-c++-common/asan/no-redundant-instrumentation-4.c
++++ b/src/gcc/testsuite/c-c++-common/asan/no-redundant-instrumentation-4.c
+@@ -14,4 +14,3 @@ foo  (int *a, char *b, char *c)
+ /* { dg-final { scan-tree-dump-times "& 7" 2 "sanopt" } } */
+ /* { dg-final { scan-tree-dump-times "__builtin___asan_report_load1" 1 "sanopt" } } */
+ /* { dg-final { scan-tree-dump-times "__builtin___asan_report_load4" 1 "sanopt" } } */
+-/* { dg-final { cleanup-tree-dump "sanopt" } } */
+--- a/src/gcc/testsuite/c-c++-common/asan/no-redundant-instrumentation-5.c
++++ b/src/gcc/testsuite/c-c++-common/asan/no-redundant-instrumentation-5.c
+@@ -13,4 +13,3 @@ foo  (int *a, char *b, char *c)
+ 
+ /* { dg-final { scan-tree-dump-times "& 7" 1 "sanopt" } } */
+ /* { dg-final { scan-tree-dump-times "__builtin___asan_report_load4" 1 "sanopt" } } */
+-/* { dg-final { cleanup-tree-dump "sanopt" } } */
+--- a/src/gcc/testsuite/c-c++-common/asan/no-redundant-instrumentation-6.c
++++ b/src/gcc/testsuite/c-c++-common/asan/no-redundant-instrumentation-6.c
+@@ -16,4 +16,3 @@ foo  (int *a, char *b, char *c)
+ /* { dg-final { scan-tree-dump-times "& 7" 4 "sanopt" } } */
+ /* { dg-final { scan-tree-dump-times "__builtin___asan_report_load1" 2 "sanopt" } } */
+ /* { dg-final { scan-tree-dump-times "__builtin___asan_report_load4" 2 "sanopt" } } */
+-/* { dg-final { cleanup-tree-dump "sanopt" } } */
+--- a/src/gcc/testsuite/c-c++-common/asan/no-redundant-instrumentation-7.c
++++ b/src/gcc/testsuite/c-c++-common/asan/no-redundant-instrumentation-7.c
+@@ -20,4 +20,3 @@ foo  (int *a, char *b, char *c)
+ 
+ /* { dg-final { scan-tree-dump-not "& 7" "sanopt" } } */
+ /* { dg-final { scan-tree-dump-not "__builtin___asan_report_load4" "sanopt" } } */
+-/* { dg-final { cleanup-tree-dump "sanopt" } } */
+--- a/src/gcc/testsuite/c-c++-common/asan/no-redundant-instrumentation-8.c
++++ b/src/gcc/testsuite/c-c++-common/asan/no-redundant-instrumentation-8.c
+@@ -17,4 +17,3 @@ foo  (int *a, char *b, char *c)
+ /* { dg-final { scan-tree-dump-times "& 7" 4 "sanopt" } } */
+ /* { dg-final { scan-tree-dump-times "__builtin___asan_report_load1" 2 "sanopt" } } */
+ /* { dg-final { scan-tree-dump-times "__builtin___asan_report_load4" 2 "sanopt" } } */
+-/* { dg-final { cleanup-tree-dump "sanopt" } } */
+--- a/src/gcc/testsuite/c-c++-common/asan/red-align-1.c
++++ b/src/gcc/testsuite/c-c++-common/asan/red-align-1.c
+@@ -17,4 +17,3 @@ int foo (struct st * s_p)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "& 7" 0 "sanopt" } } */
+-/* { dg-final { cleanup-tree-dump "sanopt" } } */
+--- a/src/gcc/testsuite/c-c++-common/asan/red-align-2.c
++++ b/src/gcc/testsuite/c-c++-common/asan/red-align-2.c
+@@ -17,4 +17,3 @@ int foo (struct st * s_p)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "& 7" 1 "sanopt" } } */
+-/* { dg-final { cleanup-tree-dump "sanopt" } } */
+--- a/src/gcc/testsuite/c-c++-common/asan/shadow-offset-1.c
++++ b/src/gcc/testsuite/c-c++-common/asan/shadow-offset-1.c
+@@ -8,4 +8,3 @@ int f (int *p)
+ }
+ 
+ /* { dg-final { scan-tree-dump "12345" "sanopt" }  } */
+-/* { dg-final { cleanup-tree-dump "sanopt" } } */
+--- a/src/gcc/testsuite/c-c++-common/cilk-plus/PS/clauses2.c
++++ b/src/gcc/testsuite/c-c++-common/cilk-plus/PS/clauses2.c
+@@ -15,4 +15,3 @@ void foo()
+ /* { dg-final { scan-tree-dump-times "linear\\(j:4\\)" 1 "original" } } */
+ /* { dg-final { scan-tree-dump-times "linear\\(k:1\\)" 1 "original" } } */
+ /* { dg-final { scan-tree-dump-times "safelen\\(4\\)" 1 "original" } } */
+-/* { dg-final { cleanup-tree-dump "original" } } */
+--- a/src/gcc/testsuite/c-c++-common/cilk-plus/PS/safelen.c
++++ b/src/gcc/testsuite/c-c++-common/cilk-plus/PS/safelen.c
+@@ -11,4 +11,3 @@ void foo()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "safelen\\(8\\)" 1 "gimple" } } */
+-/* { dg-final { cleanup-tree-dump "gimple" } } */
+--- a/src/gcc/testsuite/c-c++-common/cilk-plus/PS/vectorlength-3.c
++++ b/src/gcc/testsuite/c-c++-common/cilk-plus/PS/vectorlength-3.c
+@@ -11,4 +11,3 @@ foo (int *a, int *b, int *c)
+     a[i] = b[i] * c[i];
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/c-c++-common/cpp/pr63831-2.c
++++ b/src/gcc/testsuite/c-c++-common/cpp/pr63831-2.c
+@@ -4,4 +4,3 @@
+ 
+ #include "pr63831-1.c"
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/c-c++-common/fold-bitand-4.c
++++ b/src/gcc/testsuite/c-c++-common/fold-bitand-4.c
+@@ -42,4 +42,3 @@ int f5 (int i)
+ /* { dg-final { scan-tree-dump-times "\& 15" 1 "original" } } */
+ /* { dg-final { scan-tree-dump-times "return \[^\n0-9\]*0;" 2 "original" } } */
+ /* { dg-final { scan-tree-dump-times "\& 7" 1 "original" } } */
+-/* { dg-final { cleanup-tree-dump "original" } } */
+--- a/src/gcc/testsuite/c-c++-common/fold-divmul-1.c
++++ b/src/gcc/testsuite/c-c++-common/fold-divmul-1.c
+@@ -8,4 +8,3 @@ fx (int *b, int *e)
+ }
+ 
+ /* { dg-final { scan-tree-dump-not "/\\\[ex\\\]" "original" } } */
+-/* { dg-final { cleanup-tree-dump "original" } } */
+--- a/src/gcc/testsuite/c-c++-common/goacc/acc_on_device-2-off.c
++++ b/src/gcc/testsuite/c-c++-common/goacc/acc_on_device-2-off.c
+@@ -22,4 +22,3 @@ f (void)
+ /* Without -fopenacc, we're expecting one call.
+    { dg-final { scan-rtl-dump-times "\\\(call \[^\\n\]* acc_on_device" 1 "expand" } } */
+ 
+-/* { dg-final { cleanup-rtl-dump "expand" } } */
+--- a/src/gcc/testsuite/c-c++-common/goacc/acc_on_device-2.c
++++ b/src/gcc/testsuite/c-c++-common/goacc/acc_on_device-2.c
+@@ -34,4 +34,3 @@ f (void)
+ 
+    { dg-final { scan-rtl-dump-times "\\\(call \[^\\n\]* acc_on_device" 0 "expand" { xfail { c || c++ } } } } */
+ 
+-/* { dg-final { cleanup-rtl-dump "expand" } } */
+--- a/src/gcc/testsuite/c-c++-common/goacc/loop-private-1.c
++++ b/src/gcc/testsuite/c-c++-common/goacc/loop-private-1.c
+@@ -11,4 +11,3 @@ f (int i, int j)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "#pragma acc loop collapse\\(2\\) private\\(j\\) private\\(i\\)" 1 "gimple" } } */
+-/* { dg-final { cleanup-tree-dump "gimple" } } */
+--- a/src/gcc/testsuite/c-c++-common/goacc/pcopy.c
++++ b/src/gcc/testsuite/c-c++-common/goacc/pcopy.c
+@@ -8,4 +8,3 @@ f (char *cp)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "#pragma acc parallel map\\(tofrom:\\*\\(cp \\+ 3\\) \\\[len: 5]\\) map\\(alloc:cp \\\[pointer assign, bias: 3]\\)" 1 "original" } } */
+-/* { dg-final { cleanup-tree-dump "original" } } */
+--- a/src/gcc/testsuite/c-c++-common/goacc/pcopyin.c
++++ b/src/gcc/testsuite/c-c++-common/goacc/pcopyin.c
+@@ -8,4 +8,3 @@ f (char *cp)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "#pragma acc parallel map\\(to:\\*\\(cp \\+ 4\\) \\\[len: 6]\\) map\\(alloc:cp \\\[pointer assign, bias: 4]\\)" 1 "original" } } */
+-/* { dg-final { cleanup-tree-dump "original" } } */
+--- a/src/gcc/testsuite/c-c++-common/goacc/pcopyout.c
++++ b/src/gcc/testsuite/c-c++-common/goacc/pcopyout.c
+@@ -8,4 +8,3 @@ f (char *cp)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "#pragma acc parallel map\\(from:\\*\\(cp \\+ 5\\) \\\[len: 7]\\) map\\(alloc:cp \\\[pointer assign, bias: 5]\\)" 1 "original" } } */
+-/* { dg-final { cleanup-tree-dump "original" } } */
+--- a/src/gcc/testsuite/c-c++-common/goacc/pcreate.c
++++ b/src/gcc/testsuite/c-c++-common/goacc/pcreate.c
+@@ -8,4 +8,3 @@ f (char *cp)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "#pragma acc parallel map\\(alloc:\\*\\(cp \\+ 6\\) \\\[len: 8]\\) map\\(alloc:cp \\\[pointer assign, bias: 6]\\)" 1 "original" } } */
+-/* { dg-final { cleanup-tree-dump "original" } } */
+--- a/src/gcc/testsuite/c-c++-common/goacc/present-1.c
++++ b/src/gcc/testsuite/c-c++-common/goacc/present-1.c
+@@ -8,4 +8,3 @@ f (char *cp)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "#pragma acc parallel map\\(force_present:\\*\\(cp \\+ 7\\) \\\[len: 9]\\) map\\(alloc:cp \\\[pointer assign, bias: 7]\\)" 1 "original" } } */
+-/* { dg-final { cleanup-tree-dump "original" } } */
+--- a/src/gcc/testsuite/c-c++-common/gomp/atomic-10.c
++++ b/src/gcc/testsuite/c-c++-common/gomp/atomic-10.c
+@@ -22,4 +22,3 @@ foo (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "__atomic_fetch_add" 4 "ompexp" } } */
+-/* { dg-final { cleanup-tree-dump "ompexp" } } */
+--- a/src/gcc/testsuite/c-c++-common/gomp/atomic-12.c
++++ b/src/gcc/testsuite/c-c++-common/gomp/atomic-12.c
+@@ -4,7 +4,6 @@
+ /* atomicvar should never be referenced in between the barrier and
+    following #pragma omp atomic_load.  */
+ /* { dg-final { scan-tree-dump-not "barrier\[^#\]*atomicvar" "gimple" } } */
+-/* { dg-final { cleanup-tree-dump "gimple" } } */
+ 
+ #ifdef __cplusplus
+ bool atomicvar, c;
+--- a/src/gcc/testsuite/c-c++-common/gomp/atomic-13.c
++++ b/src/gcc/testsuite/c-c++-common/gomp/atomic-13.c
+@@ -4,6 +4,5 @@
+ /* atomicvar should never be referenced in between the barrier and
+    following #pragma omp atomic_load.  */
+ /* { dg-final { scan-tree-dump-not "barrier\[^#\]*atomicvar" "gimple" } } */
+-/* { dg-final { cleanup-tree-dump "gimple" } } */
+ 
+ #include "atomic-12.c"
+--- a/src/gcc/testsuite/c-c++-common/gomp/atomic-3.c
++++ b/src/gcc/testsuite/c-c++-common/gomp/atomic-3.c
+@@ -11,4 +11,3 @@ void f1(void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "xyzzy, 4" 1 "ompexp" } } */
+-/* { dg-final { cleanup-tree-dump "ompexp" } } */
+--- a/src/gcc/testsuite/c-c++-common/gomp/atomic-9.c
++++ b/src/gcc/testsuite/c-c++-common/gomp/atomic-9.c
+@@ -11,4 +11,3 @@ void f1(void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "__atomic_fetch_add" 1 "ompexp" } } */
+-/* { dg-final { cleanup-tree-dump "ompexp" } } */
+--- a/src/gcc/testsuite/c-c++-common/pr46562-2.c
++++ b/src/gcc/testsuite/c-c++-common/pr46562-2.c
+@@ -10,4 +10,3 @@ int foo(void)
+ }
+ 
+ /* { dg-final { scan-tree-dump "return 0;" "fre1" } } */
+-/* { dg-final { cleanup-tree-dump "fre1" } } */
+--- a/src/gcc/testsuite/c-c++-common/pr46562.c
++++ b/src/gcc/testsuite/c-c++-common/pr46562.c
+@@ -10,4 +10,3 @@ int foo(void)
+ }
+ 
+ /* { dg-final { scan-tree-dump "return 0;" "ccp1" } } */
+-/* { dg-final { cleanup-tree-dump "ccp1" } } */
+--- a/src/gcc/testsuite/c-c++-common/pr56493.c
++++ b/src/gcc/testsuite/c-c++-common/pr56493.c
+@@ -13,4 +13,3 @@ foo (void)
+ 
+ /* Verify we narrow the addition from unsigned long long to unsigned int type.  */
+ /* { dg-final { scan-tree-dump "  (\[a-zA-Z._0-9]*) = \\(unsigned int\\) \[^;\n\r]*;.*  (\[a-zA-Z._0-9]*) = \\(unsigned int\\) \[^;\n\r]*;.* = \\1 \\+ \\2;" "gimple" { target { ilp32 || lp64 } } } } */
+-/* { dg-final { cleanup-tree-dump "gimple" } } */
+--- a/src/gcc/testsuite/c-c++-common/pr58346-1.c
++++ b/src/gcc/testsuite/c-c++-common/pr58346-1.c
+@@ -1,5 +1,6 @@
+ /* PR c/58346 */
+ /* { dg-do compile } */
++/* { dg-options "-Wno-c++-compat" { target c } } */
+ 
+ struct U {
+ #ifdef __cplusplus
+--- a/src/gcc/testsuite/c-c++-common/raw-string-11.c
++++ b/src/gcc/testsuite/c-c++-common/raw-string-11.c
+@@ -10,4 +10,3 @@ int main ()
+ 			   sizeof ("foo%sbar%sfred%sbob?""?""?""?""?"));
+ }
+ 
+-// { dg-final { cleanup-saved-temps } }
+--- a/src/gcc/testsuite/c-c++-common/raw-string-18.c
++++ b/src/gcc/testsuite/c-c++-common/raw-string-18.c
+@@ -18,4 +18,3 @@ main ()
+ 
+ /* Verify call to foo is on line 15.  */
+ /* { dg-final { scan-tree-dump "c:15:\[^\n\r\]*foo" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/c-c++-common/raw-string-19.c
++++ b/src/gcc/testsuite/c-c++-common/raw-string-19.c
+@@ -18,5 +18,3 @@ main ()
+ 
+ /* Verify call to foo is on line 15.  */
+ /* { dg-final { scan-tree-dump "c:15:\[^\n\r\]*foo" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/c-c++-common/restrict-1.c
++++ b/src/gcc/testsuite/c-c++-common/restrict-1.c
+@@ -17,4 +17,3 @@ int main()
+ }
+ 
+ /* { dg-final { scan-tree-dump-not "link_error" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/c-c++-common/restrict-2.c
++++ b/src/gcc/testsuite/c-c++-common/restrict-2.c
+@@ -11,4 +11,3 @@ void foo (float * __restrict__ a, float * __restrict__ b, int n, int j)
+ /* We should move the RHS of the store out of the loop.  */
+ 
+ /* { dg-final { scan-tree-dump-times "Moving statement" 11 "lim1" } } */
+-/* { dg-final { cleanup-tree-dump "lim1" } } */
+--- a/src/gcc/testsuite/c-c++-common/restrict-4.c
++++ b/src/gcc/testsuite/c-c++-common/restrict-4.c
+@@ -16,4 +16,3 @@ void bar(struct Foo f, int * __restrict__ q)
+ }
+ 
+ /* { dg-final { scan-tree-dump "Executing store motion" "lim1" } } */
+-/* { dg-final { cleanup-tree-dump "lim1" } } */
+--- a/src/gcc/testsuite/c-c++-common/rotate-1.c
++++ b/src/gcc/testsuite/c-c++-common/rotate-1.c
+@@ -2,7 +2,6 @@
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -fno-ipa-icf -fdump-tree-optimized" } */
+ /* { dg-final { scan-tree-dump-times "r\[<>]\[<>]" 96 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+ 
+ unsigned int
+ f1 (unsigned int x, unsigned int y)
+--- a/src/gcc/testsuite/c-c++-common/rotate-2.c
++++ b/src/gcc/testsuite/c-c++-common/rotate-2.c
+@@ -4,7 +4,6 @@
+ /* Rotates should be recognized only in functions with | instead of + or ^,
+    or in functions that have constant shift counts (unused attribute on y).  */
+ /* { dg-final { scan-tree-dump-times "r\[<>]\[<>]" 48 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+ 
+ unsigned int
+ f1 (unsigned int x, unsigned int y)
+--- a/src/gcc/testsuite/c-c++-common/rotate-3.c
++++ b/src/gcc/testsuite/c-c++-common/rotate-3.c
+@@ -2,7 +2,6 @@
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -fno-ipa-icf -fdump-tree-optimized" } */
+ /* { dg-final { scan-tree-dump-times "r\[<>]\[<>]" 96 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+ 
+ unsigned int
+ f1 (unsigned int x, int y)
+--- a/src/gcc/testsuite/c-c++-common/rotate-4.c
++++ b/src/gcc/testsuite/c-c++-common/rotate-4.c
+@@ -4,7 +4,6 @@
+ /* Rotates should be recognized only in functions with | instead of + or ^,
+    or in functions that have constant shift counts (unused attribute on y).  */
+ /* { dg-final { scan-tree-dump-times "r\[<>]\[<>]" 48 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+ 
+ unsigned int
+ f1 (unsigned int x, int y)
+--- a/src/gcc/testsuite/c-c++-common/tm/20100127.c
++++ b/src/gcc/testsuite/c-c++-common/tm/20100127.c
+@@ -33,4 +33,3 @@ void test(void *data)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "_ITM_W.*nontrxn" 0 "tmmark" } } */
+-/* { dg-final { cleanup-tree-dump "tmmark" } } */
+--- a/src/gcc/testsuite/c-c++-common/tm/ipa-1.c
++++ b/src/gcc/testsuite/c-c++-common/tm/ipa-1.c
+@@ -20,4 +20,3 @@ int set_remove(void)
+ 
+ 
+ /* { dg-final { scan-ipa-dump-not "getTMCloneOrIrrevocable" "tmipa" } } */
+-/* { dg-final { cleanup-ipa-dump "tmipa" } } */
+--- a/src/gcc/testsuite/c-c++-common/tm/malloc.c
++++ b/src/gcc/testsuite/c-c++-common/tm/malloc.c
+@@ -23,4 +23,3 @@ void foobar(void)
+ /* { dg-final { scan-tree-dump-times "__builtin__ITM_malloc" 1 "tmmark" } } */
+ /* { dg-final { scan-tree-dump-times "__builtin__ITM_calloc" 1 "tmmark" } } */
+ /* { dg-final { scan-tree-dump-times "__builtin__ITM_free" 2 "tmmark" } } */
+-/* { dg-final { cleanup-tree-dump "tmmark" } } */
+--- a/src/gcc/testsuite/c-c++-common/tm/pr54893.c
++++ b/src/gcc/testsuite/c-c++-common/tm/pr54893.c
+@@ -13,4 +13,3 @@ int main()
+ }
+ 
+ /* { dg-final { scan-ipa-dump "GTMA_DOES_GO_IRREVOCABLE" "tmipa" } } */
+-/* { dg-final { cleanup-ipa-dump "tmipa" } } */
+--- a/src/gcc/testsuite/c-c++-common/tm/trxn-expr-3.c
++++ b/src/gcc/testsuite/c-c++-common/tm/trxn-expr-3.c
+@@ -11,4 +11,3 @@ int f2()
+ 
+ /* { dg-final { scan-tree-dump-times "ITM_RU" 2 "tmmark" } } */
+ /* { dg-final { scan-tree-dump-times "ITM_commitTransaction" 4 "tmmark" } } */
+-/* { dg-final { cleanup-tree-dump "tmmark" } } */
+--- a/src/gcc/testsuite/c-c++-common/tm/trxn-expr.c
++++ b/src/gcc/testsuite/c-c++-common/tm/trxn-expr.c
+@@ -10,4 +10,3 @@ void foobar(void)
+ 
+ /* { dg-final { scan-tree-dump-times "_ITM_RU.*york" 1 "tmmark" } } */
+ /* { dg-final { scan-tree-dump-times "_ITM_RU" 1 "tmmark" } } */
+-/* { dg-final { cleanup-tree-dump "tmmark" } } */
+--- a/src/gcc/testsuite/c-c++-common/tm/wrap-1.c
++++ b/src/gcc/testsuite/c-c++-common/tm/wrap-1.c
+@@ -7,4 +7,3 @@ void xyzzy(void) __attribute__((transaction_wrap (orig)));
+ void foo() { __transaction_relaxed { orig (); } }
+ 
+ /* { dg-final { scan-tree-dump-times "xyzzy" 1 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/c-c++-common/transparent-union-1.c
++++ b/src/gcc/testsuite/c-c++-common/transparent-union-1.c
+@@ -1,4 +1,5 @@
+ /* PR c++/51228 */
++/* { dg-options "-Wno-c++-compat" { target c } } */
+ 
+ typedef union {} U __attribute__((transparent_union)); /* { dg-warning "ignored" } */
+ 
+--- a/src/gcc/testsuite/c-c++-common/ubsan/align-7.c
++++ b/src/gcc/testsuite/c-c++-common/ubsan/align-7.c
+@@ -30,4 +30,3 @@ main ()
+ 
+ /* { dg-output "\.c:16:\[0-9]*: \[^\n\r]*member access within misaligned address 0x\[0-9a-fA-F]* for type 'struct S', which requires \[48] byte alignment.*" } */
+ /* { dg-final { scan-tree-dump-times "Optimizing" 4 "sanopt"} } */
+-/* { dg-final { cleanup-tree-dump "sanopt" } } */
+--- a/src/gcc/testsuite/c-c++-common/ubsan/align-8.c
++++ b/src/gcc/testsuite/c-c++-common/ubsan/align-8.c
+@@ -29,4 +29,3 @@ main ()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "Optimizing" 4 "sanopt"} } */
+-/* { dg-final { cleanup-tree-dump "sanopt" } } */
+--- a/src/gcc/testsuite/c-c++-common/ubsan/pr63866.c
++++ b/src/gcc/testsuite/c-c++-common/ubsan/pr63866.c
+@@ -8,4 +8,3 @@ foo (int x, int y)
+   return x + y;
+ }
+ 
+-/* { dg-final { cleanup-ipa-dump "cgraph" } } */
+--- a/src/gcc/testsuite/c-c++-common/ubsan/sanitize-all-2.c
++++ b/src/gcc/testsuite/c-c++-common/ubsan/sanitize-all-2.c
+@@ -38,4 +38,3 @@ main ()
+ 
+ /* { dg-final { scan-tree-dump-not "__ubsan_" "optimized" } } */
+ /* { dg-final { scan-tree-dump-not "UBSAN_CHECK_" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/c-c++-common/ubsan/sanitize-all-3.c
++++ b/src/gcc/testsuite/c-c++-common/ubsan/sanitize-all-3.c
+@@ -39,4 +39,3 @@ main ()
+ /* { dg-final { scan-tree-dump "__ubsan_" "optimized" } } */
+ /* { dg-final { scan-tree-dump-not "__ubsan_\[a-z_\]*_abort" "optimized" } } */
+ /* { dg-final { scan-tree-dump "UBSAN_CHECK_" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/c-c++-common/ubsan/sanitize-all-4.c
++++ b/src/gcc/testsuite/c-c++-common/ubsan/sanitize-all-4.c
+@@ -39,4 +39,3 @@ main ()
+ /* { dg-final { scan-tree-dump "__ubsan_\[a-z_\]*_abort" "optimized" } } */
+ /* { dg-final { scan-tree-dump-not "__ubsan_\[a-z_\]*\[^et\] " "optimized" } } */
+ /* { dg-final { scan-tree-dump "UBSAN_CHECK_" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/c-c++-common/vector-scalar-2.c
++++ b/src/gcc/testsuite/c-c++-common/vector-scalar-2.c
+@@ -11,4 +11,3 @@ void f (veci *a)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times " \\\+ 1" 1 "gimple" } } */
+-/* { dg-final { cleanup-tree-dump "gimple" } } */
+--- a/src/gcc/testsuite/g++.dg/abi/aarch64_guard1.C
++++ b/src/gcc/testsuite/g++.dg/abi/aarch64_guard1.C
+@@ -13,4 +13,3 @@ int *foo ()
+ }
+ 
+ // { dg-final { scan-assembler _ZGVZ3foovE1x,8,8 } }
+-// { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/g++.dg/abi/mangle-neon-aarch64.C
++++ b/src/gcc/testsuite/g++.dg/abi/mangle-neon-aarch64.C
+@@ -13,6 +13,7 @@ void f3 (uint8x8_t a) {}
+ void f4 (uint16x4_t a) {}
+ void f5 (uint32x2_t a) {}
+ void f23 (uint64x1_t a) {}
++void f61 (float16x4_t a) {}
+ void f6 (float32x2_t a) {}
+ void f7 (poly8x8_t a) {}
+ void f8 (poly16x4_t a) {}
+@@ -25,6 +26,7 @@ void f13 (uint8x16_t a) {}
+ void f14 (uint16x8_t a) {}
+ void f15 (uint32x4_t a) {}
+ void f16 (uint64x2_t a) {}
++void f171 (float16x8_t a) {}
+ void f17 (float32x4_t a) {}
+ void f18 (float64x2_t a) {}
+ void f19 (poly8x16_t a) {}
+@@ -42,6 +44,7 @@ void g1 (int8x16_t, int8x16_t) {}
+ // { dg-final { scan-assembler "_Z2f412__Uint16x4_t:" } }
+ // { dg-final { scan-assembler "_Z2f512__Uint32x2_t:" } }
+ // { dg-final { scan-assembler "_Z3f2312__Uint64x1_t:" } }
++// { dg-final { scan-assembler "_Z3f6113__Float16x4_t:" } }
+ // { dg-final { scan-assembler "_Z2f613__Float32x2_t:" } }
+ // { dg-final { scan-assembler "_Z2f711__Poly8x8_t:" } }
+ // { dg-final { scan-assembler "_Z2f812__Poly16x4_t:" } }
+@@ -53,6 +56,7 @@ void g1 (int8x16_t, int8x16_t) {}
+ // { dg-final { scan-assembler "_Z3f1412__Uint16x8_t:" } }
+ // { dg-final { scan-assembler "_Z3f1512__Uint32x4_t:" } }
+ // { dg-final { scan-assembler "_Z3f1612__Uint64x2_t:" } }
++// { dg-final { scan-assembler "_Z4f17113__Float16x8_t:" } }
+ // { dg-final { scan-assembler "_Z3f1713__Float32x4_t:" } }
+ // { dg-final { scan-assembler "_Z3f1813__Float64x2_t:" } }
+ // { dg-final { scan-assembler "_Z3f1912__Poly8x16_t:" } }
+--- a/src/gcc/testsuite/g++.dg/cdce3.C
++++ b/src/gcc/testsuite/g++.dg/cdce3.C
+@@ -4,8 +4,9 @@
+ /* { dg-additional-options "-DLARGE_LONG_DOUBLE" { target large_long_double } } */
+ /* { dg-additional-options "-DGNU_EXTENSION" { target pow10 } } */
+ /* { dg-add-options ieee } */
++/* { dg-final { scan-tree-dump  "cdce3.C:91: note: function call is shrink-wrapped into error conditions\." "cdce" { target pow10 } } } */
+ /* { dg-final { scan-tree-dump  "cdce3.C:92: note: function call is shrink-wrapped into error conditions\." "cdce" { target pow10 } } } */
+-/* { dg-final { scan-tree-dump  "cdce3.C:93: note: function call is shrink-wrapped into error conditions\." "cdce" { target pow10 } } } */
++/* { dg-final { scan-tree-dump  "cdce3.C:94: note: function call is shrink-wrapped into error conditions\." "cdce" } } */
+ /* { dg-final { scan-tree-dump  "cdce3.C:95: note: function call is shrink-wrapped into error conditions\." "cdce" } } */
+ /* { dg-final { scan-tree-dump  "cdce3.C:96: note: function call is shrink-wrapped into error conditions\." "cdce" } } */
+ /* { dg-final { scan-tree-dump  "cdce3.C:97: note: function call is shrink-wrapped into error conditions\." "cdce" } } */
+@@ -19,8 +20,6 @@
+ /* { dg-final { scan-tree-dump  "cdce3.C:105: note: function call is shrink-wrapped into error conditions\." "cdce" } } */
+ /* { dg-final { scan-tree-dump  "cdce3.C:106: note: function call is shrink-wrapped into error conditions\." "cdce" } } */
+ /* { dg-final { scan-tree-dump  "cdce3.C:107: note: function call is shrink-wrapped into error conditions\." "cdce" } } */
+-/* { dg-final { scan-tree-dump  "cdce3.C:108: note: function call is shrink-wrapped into error conditions\." "cdce" } } */
+-/* { dg-final { cleanup-tree-dump "cdce" } } */
+ 
+ #include <stdlib.h>
+ #include <math.h>
+--- a/src/gcc/testsuite/g++.dg/compat/compat.exp
++++ b/src/gcc/testsuite/g++.dg/compat/compat.exp
+@@ -78,6 +78,7 @@ proc compat-use-tst-compiler { } {
+ 	set ALWAYS_CXXFLAGS $save_always_cxxflags
+ 	set ld_library_path $save_ld_library_path
+ 	set_ld_library_path_env_vars
++	clear_effective_target_cache
+     }
+ }
+ 
+--- a/src/gcc/testsuite/g++.dg/compat/struct-layout-1.exp
++++ b/src/gcc/testsuite/g++.dg/compat/struct-layout-1.exp
+@@ -61,6 +61,7 @@ proc compat-use-alt-compiler { } {
+ 	set ld_library_path $alt_ld_library_path
+ 	set_ld_library_path_env_vars
+ 	restore_gcc_exec_prefix_env_var
++	clear_effective_target_cache
+     }
+ }
+ 
+--- a/src/gcc/testsuite/g++.dg/cpp/paste2.C
++++ b/src/gcc/testsuite/g++.dg/cpp/paste2.C
+@@ -1,7 +1,6 @@
+ // PR preprocessor/57757
+ // { dg-do compile { target c++11 } }
+ // { dg-options "-save-temps" }
+-// { dg-final cleanup-saved-temps }
+ 
+ #define S(x) x
+ extern S("C")void exit (int);
+--- a/src/gcc/testsuite/g++.dg/cpp0x/constexpr-static.C
++++ b/src/gcc/testsuite/g++.dg/cpp0x/constexpr-static.C
+@@ -12,7 +12,6 @@ struct A
+ A a(42);	    // constexpr constructor allows constant initialization
+ A ar[3] = { { 1 }, { 2 }, { 3 } };
+ // { dg-final { scan-assembler-not "static_initialization" } }
+-// { dg-final cleanup-saved-temps }
+ 
+ int main()
+ {
+--- a/src/gcc/testsuite/g++.dg/cpp0x/constexpr-static3.C
++++ b/src/gcc/testsuite/g++.dg/cpp0x/constexpr-static3.C
+@@ -1,7 +1,6 @@
+ // Test for constant initialization of class with vtable
+ // { dg-options "-save-temps" }
+ // { dg-final { scan-assembler-not "static_initialization" } }
+-// { dg-final cleanup-saved-temps }
+ // { dg-do run { target c++11 } }
+ 
+ int r = 1;
+--- a/src/gcc/testsuite/g++.dg/cpp0x/gen-attrs-34.C
++++ b/src/gcc/testsuite/g++.dg/cpp0x/gen-attrs-34.C
+@@ -16,4 +16,3 @@ unsigned int f4 ()
+ // { dg-final { scan-tree-dump-times "= f1 \\(\\)" 1 "optimized" } }
+ // { dg-final { scan-tree-dump-times "= f2 \\(\\)" 1 "optimized" } }
+ // { dg-final { scan-tree-dump-times "= f3 \\(\\)" 1 "optimized" } }
+-// { dg-final { cleanup-tree-dump "optimized" } }
+--- a/src/gcc/testsuite/g++.dg/cpp0x/initlist-opt.C
++++ b/src/gcc/testsuite/g++.dg/cpp0x/initlist-opt.C
+@@ -2,7 +2,6 @@
+ // { dg-do compile { target c++11 } }
+ // { dg-options "-O2 -fdump-tree-optimized" }
+ // { dg-final { scan-tree-dump-not "_0" "optimized" } }
+-// { dg-final { cleanup-tree-dump "optimized" } }
+ 
+ #include <initializer_list>
+ 
+--- a/src/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-decltype1.C
++++ b/src/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-decltype1.C
+@@ -2,7 +2,6 @@
+ // We force the gimple dump to trigger use of lang_decl_name.
+ // { dg-do compile { target c++11 } }
+ // { dg-options "-fdump-tree-gimple" }
+-// { dg-final { cleanup-tree-dump "gimple" } }
+ 
+ template < class T > void
+ f (T t)
+--- a/src/gcc/testsuite/g++.dg/cpp0x/stdint.C
++++ b/src/gcc/testsuite/g++.dg/cpp0x/stdint.C
+@@ -1,6 +1,6 @@
+ // PR c++/52764
+-// { dg-require-effective-target stdint_types }
+ // { dg-do compile { target c++11 } }
++// { dg-require-effective-target stdint_types }
+ 
+ #include <stdint.h>
+ 
+--- a/src/gcc/testsuite/g++.dg/eh/array1.C
++++ b/src/gcc/testsuite/g++.dg/eh/array1.C
+@@ -14,4 +14,3 @@ void f()
+ }
+ 
+ // { dg-final { scan-tree-dump-times "catch" 1 "gimple" } }
+-// { dg-final { cleanup-tree-dump "gimple" } }
+--- a/src/gcc/testsuite/g++.dg/eh/builtin1.C
++++ b/src/gcc/testsuite/g++.dg/eh/builtin1.C
+@@ -29,4 +29,3 @@ bar (int i)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "resx" 2 "eh" } } */
+-/* { dg-final { cleanup-tree-dump "eh" } } */
+--- a/src/gcc/testsuite/g++.dg/eh/builtin2.C
++++ b/src/gcc/testsuite/g++.dg/eh/builtin2.C
+@@ -28,4 +28,3 @@ bar (int i)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "resx" 0 "eh" } } */
+-/* { dg-final { cleanup-tree-dump "eh" } } */
+--- a/src/gcc/testsuite/g++.dg/eh/builtin3.C
++++ b/src/gcc/testsuite/g++.dg/eh/builtin3.C
+@@ -16,4 +16,3 @@ bar (int i)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "resx" 1 "eh" } } */
+-/* { dg-final { cleanup-tree-dump "eh" } } */
+--- a/src/gcc/testsuite/g++.dg/ext/altivec-10.C
++++ b/src/gcc/testsuite/g++.dg/ext/altivec-10.C
+@@ -19,4 +19,3 @@ vector_float f1 = { 1.0, 2.0, 3.0, 4.0 };
+ vector_float_foo = { 3.0, 4.0, 5.0, 6.0 };
+ vector_float_bar_eq { 8.0, 7.0, 6.0, 5.0 };
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/g++.dg/ext/attrib34.C
++++ b/src/gcc/testsuite/g++.dg/ext/attrib34.C
+@@ -16,4 +16,3 @@ unsigned int f4 ()
+ // { dg-final { scan-tree-dump-times "= f1 \\(\\)" 1 "optimized" } }
+ // { dg-final { scan-tree-dump-times "= f2 \\(\\)" 1 "optimized" } }
+ // { dg-final { scan-tree-dump-times "= f3 \\(\\)" 1 "optimized" } }
+-// { dg-final { cleanup-tree-dump "optimized" } }
+--- a/src/gcc/testsuite/g++.dg/ext/builtin10.C
++++ b/src/gcc/testsuite/g++.dg/ext/builtin10.C
+@@ -53,4 +53,3 @@ f4 (void)
+ // { dg-final { scan-tree-dump-not "strrchr" "optimized" } }
+ // { dg-final { scan-tree-dump-not "strpbrk" "optimized" } }
+ // { dg-final { scan-tree-dump-not "strstr" "optimized" } }
+-// { dg-final { cleanup-tree-dump "optimized" } }
+--- a/src/gcc/testsuite/g++.dg/ext/label13a.C
++++ b/src/gcc/testsuite/g++.dg/ext/label13a.C
+@@ -2,7 +2,6 @@
+ // { dg-do run }
+ // { dg-options "-save-temps" }
+ // { dg-final { scan-assembler "_ZN1CC4Ev" } }
+-// { dg-final cleanup-saved-temps }
+ 
+ int i;
+ struct A { A() {} };
+--- a/src/gcc/testsuite/g++.dg/ext/pr56790-1.C
++++ b/src/gcc/testsuite/g++.dg/ext/pr56790-1.C
+@@ -14,4 +14,3 @@ vec f (void)
+ 
+ /* { dg-final { scan-tree-dump "{ 5, 13 }" "ccp1" } } */
+ /* { dg-final { scan-tree-dump-not "VEC_COND_EXPR" "ccp1" } } */
+-/* { dg-final { cleanup-tree-dump "ccp1" } } */
+--- a/src/gcc/testsuite/g++.dg/ext/pr57735.C
++++ b/src/gcc/testsuite/g++.dg/ext/pr57735.C
+@@ -1,4 +1,7 @@
+ /* { dg-do compile { target arm*-*-* } } */
++/* { dg-require-effective-target arm_arch_v5te_ok } */
++/* { dg-require-effective-target arm_arm_ok } */
++/* { dg-skip-if "do not override -mfloat-abi" { *-*-* } { "-mfloat-abi=*" } {"-mfloat-abi=soft" } } */
+ /* { dg-options "-march=armv5te -marm  -mtune=xscale -mfloat-abi=soft -O1" } */
+ 
+ typedef unsigned int size_t;
+--- a/src/gcc/testsuite/g++.dg/ext/vector21.C
++++ b/src/gcc/testsuite/g++.dg/ext/vector21.C
+@@ -36,4 +36,3 @@ void j (vec *x, vec *y)
+ /* { dg-final { scan-tree-dump "MIN_EXPR" "gimple" } } */
+ /* { dg-final { scan-tree-dump "MAX_EXPR" "gimple" } } */
+ /* { dg-final { scan-tree-dump-not "VEC_COND_EXPR" "gimple" } } */
+-/* { dg-final { cleanup-tree-dump "gimple" } } */
+--- a/src/gcc/testsuite/g++.dg/ext/vector22.C
++++ b/src/gcc/testsuite/g++.dg/ext/vector22.C
+@@ -19,4 +19,3 @@ void h(vec*a){
+ 
+ /* { dg-final { scan-tree-dump-not "~" "gimple" } } */
+ /* { dg-final { scan-tree-dump-not "VEC_COND_EXPR" "gimple" } } */
+-/* { dg-final { cleanup-tree-dump "gimple" } } */
+--- a/src/gcc/testsuite/g++.dg/gomp/barrier-1.C
++++ b/src/gcc/testsuite/g++.dg/gomp/barrier-1.C
+@@ -15,4 +15,3 @@ void f2(bool p)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "GOMP_barrier" 2 "gimple" } } */
+-/* { dg-final { cleanup-tree-dump "gimple" } } */
+--- a/src/gcc/testsuite/g++.dg/gomp/block-0.C
++++ b/src/gcc/testsuite/g++.dg/gomp/block-0.C
+@@ -32,4 +32,3 @@ void foo()
+ }
+ 
+ // { dg-final { scan-tree-dump-times "terminate" 10 "omplower" } }
+-// { dg-final { cleanup-tree-dump "omplower" } }
+--- a/src/gcc/testsuite/g++.dg/gomp/critical-1.C
++++ b/src/gcc/testsuite/g++.dg/gomp/critical-1.C
+@@ -25,4 +25,3 @@ void foo (void)
+ /* { dg-final { scan-tree-dump-times "GOMP_critical_end" 2 "omplower" } } */
+ /* { dg-final { scan-tree-dump-times "GOMP_critical_name_start" 2 "omplower" } } */
+ /* { dg-final { scan-tree-dump-times "GOMP_critical_name_end" 2 "omplower" } } */
+-/* { dg-final { cleanup-tree-dump "omplower" } } */
+--- a/src/gcc/testsuite/g++.dg/gomp/flush-1.C
++++ b/src/gcc/testsuite/g++.dg/gomp/flush-1.C
+@@ -22,4 +22,3 @@ void f2(bool p)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "__sync_synchronize" 3 "gimple" } } */
+-/* { dg-final { cleanup-tree-dump "gimple" } } */
+--- a/src/gcc/testsuite/g++.dg/gomp/for-10.C
++++ b/src/gcc/testsuite/g++.dg/gomp/for-10.C
+@@ -14,4 +14,3 @@ void foo (int n)
+ 
+ /* { dg-final { scan-tree-dump-times "GOMP_loop_ordered_runtime_start" 1 "ompexp" } } */
+ /* { dg-final { scan-tree-dump-times "GOMP_loop_ordered_runtime_next" 1 "ompexp" } } */
+-/* { dg-final { cleanup-tree-dump "ompexp" } } */
+--- a/src/gcc/testsuite/g++.dg/gomp/for-13.C
++++ b/src/gcc/testsuite/g++.dg/gomp/for-13.C
+@@ -15,4 +15,3 @@ void foo(void)
+ }
+ 
+ // { dg-final { scan-tree-dump-times "omp_data_o" 0 "lower" } }
+-// { dg-final { cleanup-tree-dump "lower" } }
+--- a/src/gcc/testsuite/g++.dg/gomp/for-4.C
++++ b/src/gcc/testsuite/g++.dg/gomp/for-4.C
+@@ -14,4 +14,3 @@ void foo (int n)
+ 
+ /* { dg-final { scan-tree-dump-times "GOMP_loop_dynamic_start" 1 "ompexp" } } */
+ /* { dg-final { scan-tree-dump-times "GOMP_loop_dynamic_next" 1 "ompexp" } } */
+-/* { dg-final { cleanup-tree-dump "ompexp" } } */
+--- a/src/gcc/testsuite/g++.dg/gomp/for-5.C
++++ b/src/gcc/testsuite/g++.dg/gomp/for-5.C
+@@ -14,4 +14,3 @@ void foo (int n)
+ 
+ /* { dg-final { scan-tree-dump-times "GOMP_loop_guided_start" 1 "ompexp" } } */
+ /* { dg-final { scan-tree-dump-times "GOMP_loop_guided_next" 1 "ompexp" } } */
+-/* { dg-final { cleanup-tree-dump "ompexp" } } */
+--- a/src/gcc/testsuite/g++.dg/gomp/for-6.C
++++ b/src/gcc/testsuite/g++.dg/gomp/for-6.C
+@@ -14,4 +14,3 @@ void foo (int n)
+ 
+ /* { dg-final { scan-tree-dump-times "GOMP_loop_runtime_start" 1 "ompexp" } } */
+ /* { dg-final { scan-tree-dump-times "GOMP_loop_runtime_next" 1 "ompexp" } } */
+-/* { dg-final { cleanup-tree-dump "ompexp" } } */
+--- a/src/gcc/testsuite/g++.dg/gomp/for-7.C
++++ b/src/gcc/testsuite/g++.dg/gomp/for-7.C
+@@ -14,4 +14,3 @@ void foo (int n)
+ 
+ /* { dg-final { scan-tree-dump-times "GOMP_loop_ordered_static_start" 1 "ompexp" } } */
+ /* { dg-final { scan-tree-dump-times "GOMP_loop_ordered_static_next" 1 "ompexp" } } */
+-/* { dg-final { cleanup-tree-dump "ompexp" } } */
+--- a/src/gcc/testsuite/g++.dg/gomp/for-8.C
++++ b/src/gcc/testsuite/g++.dg/gomp/for-8.C
+@@ -14,4 +14,3 @@ void foo (int n)
+ 
+ /* { dg-final { scan-tree-dump-times "GOMP_loop_ordered_dynamic_start" 1 "ompexp" } } */
+ /* { dg-final { scan-tree-dump-times "GOMP_loop_ordered_dynamic_next" 1 "ompexp" } } */
+-/* { dg-final { cleanup-tree-dump "ompexp" } } */
+--- a/src/gcc/testsuite/g++.dg/gomp/for-9.C
++++ b/src/gcc/testsuite/g++.dg/gomp/for-9.C
+@@ -14,4 +14,3 @@ void foo (int n)
+ 
+ /* { dg-final { scan-tree-dump-times "GOMP_loop_ordered_guided_start" 1 "ompexp" } } */
+ /* { dg-final { scan-tree-dump-times "GOMP_loop_ordered_guided_next" 1 "ompexp" } } */
+-/* { dg-final { cleanup-tree-dump "ompexp" } } */
+--- a/src/gcc/testsuite/g++.dg/gomp/macro-3.C
++++ b/src/gcc/testsuite/g++.dg/gomp/macro-3.C
+@@ -23,4 +23,3 @@ foo (void)
+ }
+ 
+ // { dg-final { scan-tree-dump-times "#pragma omp parallel" 4 "omplower" } }
+-// { dg-final { cleanup-tree-dump "omplower" } }
+--- a/src/gcc/testsuite/g++.dg/gomp/master-3.C
++++ b/src/gcc/testsuite/g++.dg/gomp/master-3.C
+@@ -10,4 +10,3 @@ void foo (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "omp_get_thread_num" 1 "omplower" } } */
+-/* { dg-final { cleanup-tree-dump "omplower" } } */
+--- a/src/gcc/testsuite/g++.dg/gomp/openmp-simd-1.C
++++ b/src/gcc/testsuite/g++.dg/gomp/openmp-simd-1.C
+@@ -44,4 +44,3 @@ void foo(int n, float *a, float *b)
+ /* { dg-final { scan-tree-dump-not "omp teams" "original" } } */
+ /* { dg-final { scan-tree-dump-not "omp target" "original" } } */
+ /* { dg-final { scan-tree-dump-not "omp parallel" "original" } } */
+-/* { dg-final { cleanup-tree-dump "original" } } */
+--- a/src/gcc/testsuite/g++.dg/gomp/openmp-simd-2.C
++++ b/src/gcc/testsuite/g++.dg/gomp/openmp-simd-2.C
+@@ -42,4 +42,3 @@ void bar(int n, float *a, float *b)
+ /* { dg-final { scan-tree-dump-times "pragma omp simd safelen\\(64\\)" 1 "original" } } */
+ /* { dg-final { scan-tree-dump-not "omp parallel" "original" } } */
+ /* { dg-final { scan-tree-dump-not "omp for" "original" } } */
+-/* { dg-final { cleanup-tree-dump "original" } } */
+--- a/src/gcc/testsuite/g++.dg/gomp/openmp-simd-3.C
++++ b/src/gcc/testsuite/g++.dg/gomp/openmp-simd-3.C
+@@ -12,4 +12,3 @@ int main() {
+ }
+ 
+ /* { dg-final { scan-tree-dump-not "omp" "original" } } */
+-/* { dg-final { cleanup-tree-dump "original" } } */
+--- a/src/gcc/testsuite/g++.dg/gomp/ordered-1.C
++++ b/src/gcc/testsuite/g++.dg/gomp/ordered-1.C
+@@ -17,4 +17,3 @@ void foo (void)
+ 
+ /* { dg-final { scan-tree-dump-times "GOMP_ordered_start" 2 "omplower" } } */
+ /* { dg-final { scan-tree-dump-times "GOMP_ordered_end" 2 "omplower" } } */
+-/* { dg-final { cleanup-tree-dump "omplower" } } */
+--- a/src/gcc/testsuite/g++.dg/gomp/tls-wrap4.C
++++ b/src/gcc/testsuite/g++.dg/gomp/tls-wrap4.C
+@@ -1,8 +1,8 @@
+ // We don't need to call the wrapper through the PLT; we can use a separate
+ // copy per shared object.
+ 
+-// { dg-require-effective-target tls }
+ // { dg-do compile { target c++11 } }
++// { dg-require-effective-target tls }
+ // { dg-options "-fPIC" }
+ // { dg-final { scan-assembler-not "_ZTW1i at PLT" { target i?86-*-* x86_64-*-* } } }
+ 
+--- a/src/gcc/testsuite/g++.dg/gomp/tpl-barrier-1.C
++++ b/src/gcc/testsuite/g++.dg/gomp/tpl-barrier-1.C
+@@ -22,4 +22,3 @@ void f3 ()
+ }
+ 
+ // { dg-final { scan-tree-dump-times "GOMP_barrier" 2 "gimple" } }
+-// { dg-final { cleanup-tree-dump "gimple" } }
+--- a/src/gcc/testsuite/g++.dg/gomp/tpl-master-1.C
++++ b/src/gcc/testsuite/g++.dg/gomp/tpl-master-1.C
+@@ -27,4 +27,3 @@ void f3 ()
+ 
+ // { dg-final { scan-tree-dump-times "#pragma omp ordered" 1 "gimple" } }
+ // { dg-final { scan-tree-dump-times "#pragma omp master" 1 "gimple" } }
+-// { dg-final { cleanup-tree-dump "gimple" } }
+--- a/src/gcc/testsuite/g++.dg/inherit/covariant7.C
++++ b/src/gcc/testsuite/g++.dg/inherit/covariant7.C
+@@ -48,4 +48,3 @@ struct c6 : c0, c3, c4
+ // { dg-final { scan-tree-dump "84    .*c6::_ZTv0_n16_NV2c62f2Ev" "class" { target ilp32 } } }
+ // { dg-final { scan-tree-dump "168   .*c6::_ZTv0_n32_NV2c62f2Ev" "class" { target lp64 } } }
+ 
+-// { dg-final { cleanup-tree-dump "class" } }
+--- a/src/gcc/testsuite/g++.dg/inherit/virtual11.C
++++ b/src/gcc/testsuite/g++.dg/inherit/virtual11.C
+@@ -14,4 +14,3 @@ int foo (int a, int b) {
+   return d.add(a, b);
+ }
+ // { dg-final { scan-tree-dump-not "OBJ_TYPE_REF" "gimple" } }
+-// { dg-final { cleanup-tree-dump "gimple" } }
+--- a/src/gcc/testsuite/g++.dg/init/array34.C
++++ b/src/gcc/testsuite/g++.dg/init/array34.C
+@@ -3,7 +3,6 @@
+ // that need extending.
+ // { dg-options "-fdump-tree-gimple" }
+ // { dg-final { scan-tree-dump-times "Class::Class" 1 "gimple" } }
+-// { dg-final { cleanup-tree-dump "gimple" } }
+ 
+ struct Class {
+   Class();
+--- a/src/gcc/testsuite/g++.dg/init/const7.C
++++ b/src/gcc/testsuite/g++.dg/init/const7.C
+@@ -10,4 +10,3 @@ short offsets[1] = {
+ void fn() { }
+ 
+ // { dg-final { scan-tree-dump-not "initialization"  "gimple" } }
+-// { dg-final { cleanup-tree-dump "gimple" } }
+--- a/src/gcc/testsuite/g++.dg/init/new17.C
++++ b/src/gcc/testsuite/g++.dg/init/new17.C
+@@ -34,4 +34,3 @@ void foo(Vector<float, 3> *m)
+ }
+ 
+ // { dg-final { scan-tree-dump-times "= 0\.0" 1 "optimized" } }
+-// { dg-final { cleanup-tree-dump "optimized" } }
+--- a/src/gcc/testsuite/g++.dg/init/new19.C
++++ b/src/gcc/testsuite/g++.dg/init/new19.C
+@@ -70,4 +70,3 @@ int c::foo(int f1, int f2, int f3)
+ }
+ 
+ // { dg-final { scan-tree-dump "Replaced.*->ai\\\[0\\\]" "pre" } }
+-// { dg-final { cleanup-tree-dump "pre" } }
+--- a/src/gcc/testsuite/g++.dg/init/pr42556.C
++++ b/src/gcc/testsuite/g++.dg/init/pr42556.C
+@@ -7,4 +7,3 @@ void foo (int a, int b, int c, int d)
+ }
+ 
+ // { dg-final { scan-tree-dump-not "v = {}"  "gimple" } }
+-// { dg-final { cleanup-tree-dump "gimple" } }
+--- a/src/gcc/testsuite/g++.dg/ipa/comdat.C
++++ b/src/gcc/testsuite/g++.dg/ipa/comdat.C
+@@ -12,4 +12,3 @@ inline int t(void)
+ }
+ int (*f)()=t;
+ /* { dg-final { scan-ipa-dump-times "Localizing symbol" 1 "comdats"  } } */
+-/* { dg-final { cleanup-ipa-dump "comdats" } } */
+--- a/src/gcc/testsuite/g++.dg/ipa/devirt-1.C
++++ b/src/gcc/testsuite/g++.dg/ipa/devirt-1.C
+@@ -58,5 +58,3 @@ int main (int argc, char *argv[])
+ 
+ /* { dg-final { scan-ipa-dump "Discovered a virtual call to a known target.*B::foo"  "cp"  } } */
+ /* { dg-final { scan-tree-dump-times "OBJ_TYPE_REF" 0 "optimized"} } */
+-/* { dg-final { cleanup-ipa-dump "cp" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/g++.dg/ipa/devirt-10.C
++++ b/src/gcc/testsuite/g++.dg/ipa/devirt-10.C
+@@ -28,5 +28,3 @@ void  OnPaint(wxPaintEvent & event) {
+   wxBufferedPaintDC dc;
+ }
+ /* { dg-final { scan-ipa-dump-times "Discovered a virtual call to a known target" 2 "cp"  } } */
+-/* { dg-final { cleanup-ipa-dump "inline" } } */
+-/* { dg-final { cleanup-ipa-dump "cp" } } */
+--- a/src/gcc/testsuite/g++.dg/ipa/devirt-11.C
++++ b/src/gcc/testsuite/g++.dg/ipa/devirt-11.C
+@@ -43,4 +43,3 @@ bar ()
+   c + d;
+ }
+ /* { dg-final { scan-ipa-dump "Discovered a virtual call to a known target" "inline"  } } */
+-/* { dg-final { cleanup-ipa-dump "inline" } } */
+--- a/src/gcc/testsuite/g++.dg/ipa/devirt-12.C
++++ b/src/gcc/testsuite/g++.dg/ipa/devirt-12.C
+@@ -19,4 +19,3 @@ int main()
+ }
+ 
+ // { dg-final { scan-ipa-dump "Inlined 1 calls, eliminated 1 functions" "inline" } }
+-// { dg-final { cleanup-ipa-dump "inline" } }
+--- a/src/gcc/testsuite/g++.dg/ipa/devirt-13.C
++++ b/src/gcc/testsuite/g++.dg/ipa/devirt-13.C
+@@ -17,4 +17,3 @@ main()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "OBJ_TYPE_REF" 0 "ssa"} } */
+-/* { dg-final { cleanup-tree-dump "ssa" } } */
+--- a/src/gcc/testsuite/g++.dg/ipa/devirt-14.C
++++ b/src/gcc/testsuite/g++.dg/ipa/devirt-14.C
+@@ -31,4 +31,3 @@ main()
+ }
+ 
+ /* { dg-final { scan-tree-dump-not "A::foo" "ssa"} } */
+-/* { dg-final { cleanup-tree-dump "ssa" } } */
+--- a/src/gcc/testsuite/g++.dg/ipa/devirt-15.C
++++ b/src/gcc/testsuite/g++.dg/ipa/devirt-15.C
+@@ -36,7 +36,5 @@ main()
+ }
+ 
+ /* { dg-final { scan-ipa-dump "speculatively devirtualizing call" "devirt"} } */
+-/* { dg-final { cleanup-ipa-dump "devirt" } } */
+ /* Match if (PROF_6 == foo) to verify that the speculation survived.  */
+ /* { dg-final { scan-tree-dump "== foo" "optimized"} } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/g++.dg/ipa/devirt-16.C
++++ b/src/gcc/testsuite/g++.dg/ipa/devirt-16.C
+@@ -35,4 +35,3 @@ main()
+ /* { dg-final { scan-ipa-dump "builtin_unreachable" "whole-program"} } */
+ /* { dg-final { scan-ipa-dump-not "A::foo" "whole-program"} } */
+ /* { dg-final { scan-ipa-dump-not "A::foo" "whole-program"} } */
+-/* { dg-final { cleanup-ipa-dump "whole-program" } } */
+--- a/src/gcc/testsuite/g++.dg/ipa/devirt-17.C
++++ b/src/gcc/testsuite/g++.dg/ipa/devirt-17.C
+@@ -40,4 +40,3 @@ main()
+ /* { dg-final { scan-ipa-dump-not "builtin_unreachable" "whole-program"} } */
+ /* { dg-final { scan-ipa-dump "B::foo" "whole-program"} } */
+ /* { dg-final { scan-ipa-dump-not "A::foo" "whole-program"} } */
+-/* { dg-final { cleanup-ipa-dump "whole-program" } } */
+--- a/src/gcc/testsuite/g++.dg/ipa/devirt-18.C
++++ b/src/gcc/testsuite/g++.dg/ipa/devirt-18.C
+@@ -34,4 +34,3 @@ main()
+ /* { dg-final { scan-tree-dump-not "A::foo" "ssa"} } */
+ /* { dg-final { scan-tree-dump-not "B::foo" "ssa"} } */
+ /* { dg-final { scan-tree-dump "builtin_unreachable" "ssa"} } */
+-/* { dg-final { cleanup-tree-dump "ssa" } } */
+--- a/src/gcc/testsuite/g++.dg/ipa/devirt-19.C
++++ b/src/gcc/testsuite/g++.dg/ipa/devirt-19.C
+@@ -28,5 +28,4 @@ template <typename T, typename M> const M &C<T, M>::m_fn2(const T &) {
+ 
+ void fn1() { b.m_fn2(0); }
+ /* { dg-final { scan-ipa-dump-times "Discovered a virtual call to a known target" 1 "cp"  } } */
+-/* { dg-final { cleanup-ipa-dump "cp" } } */
+ 
+--- a/src/gcc/testsuite/g++.dg/ipa/devirt-2.C
++++ b/src/gcc/testsuite/g++.dg/ipa/devirt-2.C
+@@ -59,4 +59,3 @@ int main (int argc, char *argv[])
+ }
+ 
+ /* { dg-final { scan-ipa-dump "Discovered a virtual call to a known target.*B::foo"  "cp"  } } */
+-/* { dg-final { cleanup-ipa-dump "cp" } } */
+--- a/src/gcc/testsuite/g++.dg/ipa/devirt-20.C
++++ b/src/gcc/testsuite/g++.dg/ipa/devirt-20.C
+@@ -28,4 +28,3 @@ main(void)
+   return 0;
+ }
+ /* { dg-final { scan-tree-dump-not "abort" "release_ssa"  } } */
+-/* { dg-final { cleanup-tree-dump "release_ssa" } } */
+--- a/src/gcc/testsuite/g++.dg/ipa/devirt-21.C
++++ b/src/gcc/testsuite/g++.dg/ipa/devirt-21.C
+@@ -38,4 +38,3 @@ main()
+   class C c;
+ }
+ /* { dg-final { scan-ipa-dump "Discovered a virtual call to" "cp" } } */
+-/* { dg-final { cleanup-ipa-dump "cp" } } */
+--- a/src/gcc/testsuite/g++.dg/ipa/devirt-22.C
++++ b/src/gcc/testsuite/g++.dg/ipa/devirt-22.C
+@@ -38,4 +38,3 @@ void update_sources() {
+    vtbl store in destructor.  
+    Previously we devirtualized to C::m_fn1 instead of B::m_fn1.  */
+ /* { dg-final { scan-ipa-dump-times "Discovered a virtual call to a known target" 1 "cp"  } } */
+-/* { dg-final { cleanup-ipa-dump "cp" } } */
+--- a/src/gcc/testsuite/g++.dg/ipa/devirt-23.C
++++ b/src/gcc/testsuite/g++.dg/ipa/devirt-23.C
+@@ -46,4 +46,3 @@ main()
+   class C c;
+ }
+ /* { dg-final { scan-ipa-dump "Discovered a virtual call to" "cp" { xfail *-*-* } } } */
+-/* { dg-final { cleanup-ipa-dump "cp" } } */
+--- a/src/gcc/testsuite/g++.dg/ipa/devirt-24.C
++++ b/src/gcc/testsuite/g++.dg/ipa/devirt-24.C
+@@ -37,6 +37,4 @@ C *b = new (C);
+   }
+ }
+ /* { dg-final { scan-ipa-dump-times "Discovered a virtual call to a known target" 1 "inline" { xfail *-*-* } } } */
+-/* { dg-final { cleanup-ipa-dump "inline" } } */
+ /* { dg-final { scan-ipa-dump-times "Aggregate passed by reference" 1 "cp"  } } */
+-/* { dg-final { cleanup-ipa-dump "cp" } } */
+--- a/src/gcc/testsuite/g++.dg/ipa/devirt-25.C
++++ b/src/gcc/testsuite/g++.dg/ipa/devirt-25.C
+@@ -24,4 +24,3 @@ void dpr_run(ebs_Object& objectA) {
+   dpr_run(jobL);
+ }
+ /* { dg-final { scan-ipa-dump "Type inconsistent devirtualization" "cp"  } } */
+-/* { dg-final { cleanup-ipa-dump "cp" } } */
+--- a/src/gcc/testsuite/g++.dg/ipa/devirt-26.C
++++ b/src/gcc/testsuite/g++.dg/ipa/devirt-26.C
+@@ -25,4 +25,3 @@ int test(void)
+ /* The call to b->foo() is perfectly devirtualizable because C can not be in construction
+    when &c was used.  */
+ /* { dg-final { scan-tree-dump-not "OBJ_TYPE_REF" "ccp1"  } } */
+-/* { dg-final { cleanup-tree-dump "ccp1" } } */
+--- a/src/gcc/testsuite/g++.dg/ipa/devirt-27.C
++++ b/src/gcc/testsuite/g++.dg/ipa/devirt-27.C
+@@ -24,4 +24,3 @@ int test(void)
+   return d->foo()+b->foo();
+ }
+ /* { dg-final { scan-tree-dump "OBJ_TYPE_REF" "optimized"  } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/g++.dg/ipa/devirt-28.C
++++ b/src/gcc/testsuite/g++.dg/ipa/devirt-28.C
+@@ -14,4 +14,3 @@ void fn1(B* b) {
+ // { dg-final { scan-assembler-not "_ZN1AD2Ev" } }
+ // { dg-final { scan-assembler-not "_ZN1BD0Ev" } }
+ // { dg-final { scan-ipa-dump "Target is artificial" "devirt" } }
+-// { dg-final { cleanup-ipa-dump "devirt" } }
+--- a/src/gcc/testsuite/g++.dg/ipa/devirt-3.C
++++ b/src/gcc/testsuite/g++.dg/ipa/devirt-3.C
+@@ -66,5 +66,3 @@ int main (int argc, char *argv[])
+ 
+ /* { dg-final { scan-ipa-dump "Discovered a virtual call to a known target.*B::foo"  "cp"  } } */
+ /* { dg-final { scan-tree-dump-times "OBJ_TYPE_REF" 0 "optimized"} } */
+-/* { dg-final { cleanup-ipa-dump "cp" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/g++.dg/ipa/devirt-30.C
++++ b/src/gcc/testsuite/g++.dg/ipa/devirt-30.C
+@@ -22,4 +22,3 @@ void f(B* b)
+ }
+ 
+ // { dg-final { scan-ipa-dump-not "Speculatively devirtualizing" "devirt" } }
+-// { dg-final { cleanup-ipa-dump "devirt" } }
+--- a/src/gcc/testsuite/g++.dg/ipa/devirt-31.C
++++ b/src/gcc/testsuite/g++.dg/ipa/devirt-31.C
+@@ -13,4 +13,3 @@ m()
+   t();
+ }
+ // { dg-final { scan-tree-dump-not "OBJ_TYPE_REF" "ssa" } }
+-// { dg-final { cleanup-tree-dump "ssa" } }
+--- a/src/gcc/testsuite/g++.dg/ipa/devirt-32.C
++++ b/src/gcc/testsuite/g++.dg/ipa/devirt-32.C
+@@ -20,4 +20,3 @@ int main()
+   __builtin_printf("%d\n", o.obj()->val());
+ }
+ /* { dg-final { scan-ipa-dump-not "__builtin_unreachable"  "inline"  } } */
+-/* { dg-final { cleanup-ipa-dump "inline" } } */
+--- a/src/gcc/testsuite/g++.dg/ipa/devirt-34.C
++++ b/src/gcc/testsuite/g++.dg/ipa/devirt-34.C
+@@ -17,4 +17,3 @@ t(struct B *b)
+ 
+ /* { dg-final { scan-ipa-dump "Speculative targets"  "devirt"  } } */
+ /* { dg-final { scan-ipa-dump "1 speculatively devirtualized"  "devirt"  } } */
+-/* { dg-final { cleanup-ipa-dump "devirt" } } */
+--- a/src/gcc/testsuite/g++.dg/ipa/devirt-35.C
++++ b/src/gcc/testsuite/g++.dg/ipa/devirt-35.C
+@@ -18,6 +18,4 @@ m(struct B *b)
+ /* { dg-final { scan-tree-dump "converting indirect call to function virtual int B::t"  "fre1"  } } */
+ /* { dg-final { scan-ipa-dump "to virtual int B::t"  "devirt"  } } */
+ /* { dg-final { scan-ipa-dump "1 speculatively devirtualized"  "devirt"  } } */
+-/* { dg-final { cleanup-ipa-dump "devirt" } } */
+-/* { dg-final { cleanup-tree-dump "fre1" } } */
+ 
+--- a/src/gcc/testsuite/g++.dg/ipa/devirt-36.C
++++ b/src/gcc/testsuite/g++.dg/ipa/devirt-36.C
+@@ -20,6 +20,4 @@ m(struct B *b)
+ /* { dg-final { scan-tree-dump "converting indirect call to function virtual int B::t"  "fre1"  } } */
+ /* { dg-final { scan-ipa-dump "to virtual int B::t"  "devirt"  } } */
+ /* { dg-final { scan-ipa-dump "1 speculatively devirtualized"  "devirt"  } } */
+-/* { dg-final { cleanup-ipa-dump "devirt" } } */
+-/* { dg-final { cleanup-tree-dump "fre1" } } */
+ 
+--- a/src/gcc/testsuite/g++.dg/ipa/devirt-37.C
++++ b/src/gcc/testsuite/g++.dg/ipa/devirt-37.C
+@@ -34,4 +34,3 @@ t()
+ /* { dg-final { scan-tree-dump "Checking vtbl store:"  "fre2"  } } */
+ /* { dg-final { scan-tree-dump "Function call may change dynamic type:extcall"  "fre2"  } } */
+ /* { dg-final { scan-tree-dump "converting indirect call to function virtual void"  "fre2"  } } */
+-/* { dg-final { cleanup-tree-dump "fre2" } } */
+--- a/src/gcc/testsuite/g++.dg/ipa/devirt-38.C
++++ b/src/gcc/testsuite/g++.dg/ipa/devirt-38.C
+@@ -28,4 +28,3 @@ void fn1 ()
+       }
+ }
+ /* { dg-final { scan-tree-dump-not "OBJ_TYPE_REF" "ccp1"  } } */
+-/* { dg-final { cleanup-tree-dump "ccp1" } } */
+--- a/src/gcc/testsuite/g++.dg/ipa/devirt-39.C
++++ b/src/gcc/testsuite/g++.dg/ipa/devirt-39.C
+@@ -26,4 +26,3 @@ int main()
+ 
+ /* { dg-final { scan-tree-dump-not "OBJ_TYPE_REF" "optimized"  } } */
+ /* { dg-final { scan-assembler-not "_ZN3Foo5cloneEv" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/g++.dg/ipa/devirt-4.C
++++ b/src/gcc/testsuite/g++.dg/ipa/devirt-4.C
+@@ -64,5 +64,3 @@ int main (int argc, char *argv[])
+ 
+ /* { dg-final { scan-ipa-dump "Discovered a virtual call to a known target.*B::foo"  "cp"  } } */
+ /* { dg-final { scan-tree-dump-times "OBJ_TYPE_REF" 0 "optimized"} } */
+-/* { dg-final { cleanup-ipa-dump "cp" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/g++.dg/ipa/devirt-40.C
++++ b/src/gcc/testsuite/g++.dg/ipa/devirt-40.C
+@@ -20,4 +20,3 @@ A::m_fn1 (UnicodeString &, int &p2, UErrorCode &) const
+ }
+ 
+ /* { dg-final { scan-tree-dump-not "\\n  OBJ_TYPE_REF" "fre2"  } } */
+-/* { dg-final { cleanup-tree-dump "fre2" } } */
+--- a/src/gcc/testsuite/g++.dg/ipa/devirt-41.C
++++ b/src/gcc/testsuite/g++.dg/ipa/devirt-41.C
+@@ -28,4 +28,3 @@ main()
+    and from callstack we can tell that is is not in construction/destruction.  */
+ /* { dg-final { scan-ipa-dump "Second type is base of first" "inline"  } } */
+ /* { dg-final { scan-ipa-dump-times "Discovered a virtual call to a known target" 1 "inline"  } } */
+-/* { dg-final { cleanup-ipa-dump "inline" } } */
+--- a/src/gcc/testsuite/g++.dg/ipa/devirt-42.C
++++ b/src/gcc/testsuite/g++.dg/ipa/devirt-42.C
+@@ -34,5 +34,3 @@ main()
+ /* { dg-final { scan-tree-dump-times "return 2" 3 "optimized"  } } */
+ /* { dg-final { scan-tree-dump-not "OBJ_TYPE_REF" "optimized"  } } */
+ 
+-/* { dg-final { cleanup-ipa-dump "inline" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/g++.dg/ipa/devirt-43.C
++++ b/src/gcc/testsuite/g++.dg/ipa/devirt-43.C
+@@ -24,4 +24,3 @@ t(struct B *b)
+    FIXME: We could most probably can devirtualize unconditonally because dereference of b in
+    &b->a makes the type known.  GIMPLE does not represent this.  */
+ /* { dg-final { scan-ipa-dump-times "Discovered a virtual call to a speculative target" 1 "inline" { xfail *-*-* } } } */
+-/* { dg-final { cleanup-ipa-dump "inline" } } */
+--- a/src/gcc/testsuite/g++.dg/ipa/devirt-44.C
++++ b/src/gcc/testsuite/g++.dg/ipa/devirt-44.C
+@@ -29,4 +29,3 @@ main()
+ /* { dg-final { scan-ipa-dump "Second type is base of first" "inline"  } } */
+ /* { dg-final { scan-ipa-dump-times "Discovered a virtual call to a known target\[^\\n\]*A::foo" 1 "inline"  } } */
+ /* { dg-final { scan-ipa-dump-times "Discovered a virtual call to a known target\[^\\n\]*B::foo" 1 "inline"  } } */
+-/* { dg-final { cleanup-ipa-dump "inline" } } */
+--- a/src/gcc/testsuite/g++.dg/ipa/devirt-45.C
++++ b/src/gcc/testsuite/g++.dg/ipa/devirt-45.C
+@@ -39,4 +39,3 @@ main()
+ /* One invocation is A::foo () other is B::foo () even though the type is destroyed and rebuilt in test() */
+ /* { dg-final { scan-ipa-dump-times "Discovered a virtual call to a known target\[^\\n\]*A::foo" 1 "inline"  } } */
+ /* { dg-final { scan-ipa-dump-times "Discovered a virtual call to a known target\[^\\n\]*B::foo" 1 "inline"  } } */
+-/* { dg-final { cleanup-ipa-dump "inline" } } */
+--- a/src/gcc/testsuite/g++.dg/ipa/devirt-46.C
++++ b/src/gcc/testsuite/g++.dg/ipa/devirt-46.C
+@@ -23,5 +23,3 @@ m()
+ /* { dg-final { scan-ipa-dump-times "Discovered a virtual call to a known target\[^\\n\]*B::foo" 1 "inline"  } } */
+ /* { dg-final { scan-tree-dump-not "OBJ_TYPE_REF" "optimized"  } } */
+ /* { dg-final { scan-tree-dump-not "abort" "optimized"  } } */
+-/* { dg-final { cleanup-ipa-dump "inline" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/g++.dg/ipa/devirt-47.C
++++ b/src/gcc/testsuite/g++.dg/ipa/devirt-47.C
+@@ -27,5 +27,3 @@ m()
+ /* { dg-final { scan-tree-dump-not "OBJ_TYPE_REF" "optimized"  } } */
+ /* FIXME: We ought to inline thunk.  */
+ /* { dg-final { scan-tree-dump "C::_ZThn" "optimized"  } } */
+-/* { dg-final { cleanup-ipa-dump "inline" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/g++.dg/ipa/devirt-48.C
++++ b/src/gcc/testsuite/g++.dg/ipa/devirt-48.C
+@@ -29,4 +29,3 @@ m()
+ }
+ 
+ /* { dg-final { scan-ipa-dump-times "Discovered a virtual call to a known target\[^\\n\]*__builtin_unreachable" 1 "inline"  } } */
+-/* { dg-final { cleanup-ipa-dump "inline" } } */
+--- a/src/gcc/testsuite/g++.dg/ipa/devirt-5.C
++++ b/src/gcc/testsuite/g++.dg/ipa/devirt-5.C
+@@ -75,5 +75,3 @@ int main (int argc, char *argv[])
+ 
+ /* { dg-final { scan-ipa-dump "Discovered a virtual call to a known target.*B::foo"  "cp"  } } */
+ /* { dg-final { scan-tree-dump-times "OBJ_TYPE_REF" 0 "optimized"} } */
+-/* { dg-final { cleanup-ipa-dump "cp" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/g++.dg/ipa/devirt-7.C
++++ b/src/gcc/testsuite/g++.dg/ipa/devirt-7.C
+@@ -85,4 +85,3 @@ int main (int argc, char *argv[])
+ }
+ 
+ /* { dg-final { scan-ipa-dump "Discovered a virtual call to a known target.*B::foo"  "cp"  } } */
+-/* { dg-final { cleanup-ipa-dump "cp" } } */
+--- a/src/gcc/testsuite/g++.dg/ipa/devirt-9.C
++++ b/src/gcc/testsuite/g++.dg/ipa/devirt-9.C
+@@ -30,4 +30,3 @@ bar ()
+ /* We optimize out this call just after early passes.  Unfortunately
+    this unreachable removal is not logged in dump file.  */
+ /* { dg-final { scan-ipa-dump-not "OBJ_TYPE_REF" "whole-program" } } */
+-/* { dg-final { cleanup-ipa-dump "whole-program" } } */
+--- a/src/gcc/testsuite/g++.dg/ipa/devirt-c-1.C
++++ b/src/gcc/testsuite/g++.dg/ipa/devirt-c-1.C
+@@ -72,5 +72,3 @@ int main (int argc, char *argv[])
+ 
+ /* { dg-final { scan-ipa-dump "Discovered a virtual call to a known target.*A::foo"  "cp"  } } */
+ /* { dg-final { scan-tree-dump-times "OBJ_TYPE_REF" 0 "optimized"} } */
+-/* { dg-final { cleanup-ipa-dump "cp" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/g++.dg/ipa/devirt-c-2.C
++++ b/src/gcc/testsuite/g++.dg/ipa/devirt-c-2.C
+@@ -80,5 +80,3 @@ int main (int argc, char *argv[])
+ 
+ /* { dg-final { scan-ipa-dump "Discovered a virtual call to a known target.*A::foo"  "cp"  } } */
+ /* { dg-final { scan-tree-dump-times "OBJ_TYPE_REF" 0 "optimized"} } */
+-/* { dg-final { cleanup-ipa-dump "cp" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/g++.dg/ipa/devirt-c-8.C
++++ b/src/gcc/testsuite/g++.dg/ipa/devirt-c-8.C
+@@ -78,5 +78,3 @@ int main (int argc, char *argv[])
+ 
+ /* { dg-final { scan-ipa-dump "Discovered a virtual call to a known target.*A::foo"  "cp"  } } */
+ /* { dg-final { scan-tree-dump-times "OBJ_TYPE_REF" 0 "optimized"} } */
+-/* { dg-final { cleanup-ipa-dump "cp" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/g++.dg/ipa/devirt-g-1.C
++++ b/src/gcc/testsuite/g++.dg/ipa/devirt-g-1.C
+@@ -20,5 +20,3 @@ void bah() {foh(&r.s); }
+ 
+ /* { dg-final { scan-ipa-dump "Discovered a virtual call to a known target.*S::xyzzy" "cp"  } } */
+ /* { dg-final { scan-tree-dump-times "OBJ_TYPE_REF" 0 "optimized"} } */
+-/* { dg-final { cleanup-ipa-dump "cp" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/g++.dg/ipa/iinline-1.C
++++ b/src/gcc/testsuite/g++.dg/ipa/iinline-1.C
+@@ -46,4 +46,3 @@ int main (int argc, char *argv[])
+ }
+ 
+ /* { dg-final { scan-ipa-dump "String::funcOne\[^\\n\]*inline copy in int main"  "inline"  } } */
+-/* { dg-final { cleanup-ipa-dump "inline" } } */
+--- a/src/gcc/testsuite/g++.dg/ipa/iinline-2.C
++++ b/src/gcc/testsuite/g++.dg/ipa/iinline-2.C
+@@ -58,4 +58,3 @@ int main (int argc, char *argv[])
+ }
+ 
+ /* { dg-final { scan-ipa-dump "String::funcOne\[^\\n\]*inline copy in int main"  "inline"  } } */
+-/* { dg-final { cleanup-ipa-dump "inline" } } */
+--- a/src/gcc/testsuite/g++.dg/ipa/imm-devirt-1.C
++++ b/src/gcc/testsuite/g++.dg/ipa/imm-devirt-1.C
+@@ -64,4 +64,3 @@ int main (int argc, char *argv[])
+ /* { dg-final { scan-tree-dump "Inlining int middleman_2" "einline"  } } */
+ /* { dg-final { scan-tree-dump "B::foo \\(" "einline"  } } */
+ /* { dg-final { scan-tree-dump-times "OBJ_TYPE_REF" 2 "einline"  } } */
+-/* { dg-final { cleanup-tree-dump "einline" } } */
+--- a/src/gcc/testsuite/g++.dg/ipa/imm-devirt-2.C
++++ b/src/gcc/testsuite/g++.dg/ipa/imm-devirt-2.C
+@@ -93,4 +93,3 @@ int main (int argc, char *argv[])
+ 
+ /* We fold into thunk of C. Eventually we should inline the thunk.  */
+ /* { dg-final { scan-tree-dump "C::_ZThn\[0-9\]+_N1C3fooEi \\(" "einline"  } } */
+-/* { dg-final { cleanup-tree-dump "einline" } } */
+--- a/src/gcc/testsuite/g++.dg/ipa/inline-1.C
++++ b/src/gcc/testsuite/g++.dg/ipa/inline-1.C
+@@ -33,4 +33,3 @@ int main(int argc, char **argv)
+ 
+ /* { dg-final { scan-ipa-dump-times "Considering void inline_me\\(" 1 "inline"} } */
+ /* { dg-final { scan-ipa-dump-times "Considering void inline_me_too\\(" 1 "inline"} } */
+-/* { dg-final { cleanup-ipa-dump "inline" } } */
+--- a/src/gcc/testsuite/g++.dg/ipa/inline-2.C
++++ b/src/gcc/testsuite/g++.dg/ipa/inline-2.C
+@@ -33,4 +33,3 @@ int main(int argc, char **argv)
+ 
+ /* { dg-final { scan-ipa-dump-times "Considering void inline_me\\(" 1 "inline"} } */
+ /* { dg-final { scan-ipa-dump-times "Considering void inline_me_too\\(" 1 "inline"} } */
+-/* { dg-final { cleanup-ipa-dump "inline" } } */
+--- a/src/gcc/testsuite/g++.dg/ipa/inline-3.C
++++ b/src/gcc/testsuite/g++.dg/ipa/inline-3.C
+@@ -26,4 +26,3 @@ int main(int argc, char **argv)
+ 
+ /* { dg-final { scan-ipa-dump-times "Considering void inline_me\\(" 1 "inline"} } */
+ /* { dg-final { scan-ipa-dump-times "Considering void inline_me_too\\(" 1 "inline"} } */
+-/* { dg-final { cleanup-ipa-dump "inline" } } */
+--- a/src/gcc/testsuite/g++.dg/ipa/ipa-icf-1.C
++++ b/src/gcc/testsuite/g++.dg/ipa/ipa-icf-1.C
+@@ -40,4 +40,3 @@ int main()
+ 
+ /* { dg-final { scan-ipa-dump-not "Semantic equality hit:" "icf"  } } */
+ /* { dg-final { scan-ipa-dump "Equal symbols: 0" "icf"  } } */
+-/* { dg-final { cleanup-ipa-dump "icf" } } */
+--- a/src/gcc/testsuite/g++.dg/ipa/ipa-icf-2.C
++++ b/src/gcc/testsuite/g++.dg/ipa/ipa-icf-2.C
+@@ -37,4 +37,3 @@ int main()
+ 
+ /* { dg-final { scan-ipa-dump "Semantic equality hit:" "icf"  } } */
+ /* { dg-final { scan-ipa-dump "Equal symbols: 1" "icf"  } } */
+-/* { dg-final { cleanup-ipa-dump "icf" } } */
+--- a/src/gcc/testsuite/g++.dg/ipa/ipa-icf-3.C
++++ b/src/gcc/testsuite/g++.dg/ipa/ipa-icf-3.C
+@@ -33,4 +33,3 @@ int main()
+ /* { dg-final { scan-ipa-dump "Semantic equality hit:.*bar.*->.*foo.*" "icf"  } } */
+ /* { dg-final { scan-ipa-dump "Semantic equality hit:.*nula.*->.*zero.*" "icf"  } } */
+ /* { dg-final { scan-ipa-dump "Equal symbols: 2" "icf"  } } */
+-/* { dg-final { cleanup-ipa-dump "icf" } } */
+--- a/src/gcc/testsuite/g++.dg/ipa/ipa-icf-4.C
++++ b/src/gcc/testsuite/g++.dg/ipa/ipa-icf-4.C
+@@ -45,4 +45,3 @@ int main()
+ 
+ /* { dg-final { scan-ipa-dump "\(Unified; Variable alias has been created\)|\(Symbol aliases are not supported by target\)" "icf"  } } */
+ /* { dg-final { scan-ipa-dump "Equal symbols: \[67\]" "icf"  } } */
+-/* { dg-final { cleanup-ipa-dump "icf" } } */
+--- a/src/gcc/testsuite/g++.dg/ipa/ipa-icf-5.C
++++ b/src/gcc/testsuite/g++.dg/ipa/ipa-icf-5.C
+@@ -22,4 +22,3 @@ int main()
+ }
+ 
+ /* { dg-final { scan-ipa-dump "Equal symbols: 0" "icf"  } } */
+-/* { dg-final { cleanup-ipa-dump "icf" } } */
+--- a/src/gcc/testsuite/g++.dg/ipa/ipa-icf-6.C
++++ b/src/gcc/testsuite/g++.dg/ipa/ipa-icf-6.C
+@@ -34,4 +34,3 @@ main()
+   return 0;
+ }
+ /* { dg-final { scan-ipa-dump-times "Unified; Wrapper has been created" 1 "icf"  } } */
+-/* { dg-final { cleanup-ipa-dump "icf" } } */
+--- a/src/gcc/testsuite/g++.dg/ipa/ivinline-1.C
++++ b/src/gcc/testsuite/g++.dg/ipa/ivinline-1.C
+@@ -61,4 +61,3 @@ int main (int argc, char *argv[])
+ }
+ 
+ /* { dg-final { scan-ipa-dump "B::foo\[^\\n\]*inline copy in int main"  "inline"  } } */
+-/* { dg-final { cleanup-ipa-dump "inline" } } */
+--- a/src/gcc/testsuite/g++.dg/ipa/ivinline-2.C
++++ b/src/gcc/testsuite/g++.dg/ipa/ivinline-2.C
+@@ -60,4 +60,3 @@ int main (int argc, char *argv[])
+ }
+ 
+ /* { dg-final { scan-ipa-dump "B::foo\[^\\n\]*inline copy in int main"  "inline"  } } */
+-/* { dg-final { cleanup-ipa-dump "inline" } } */
+--- a/src/gcc/testsuite/g++.dg/ipa/ivinline-3.C
++++ b/src/gcc/testsuite/g++.dg/ipa/ivinline-3.C
+@@ -61,4 +61,3 @@ int main (int argc, char *argv[])
+ }
+ 
+ /* { dg-final { scan-ipa-dump "B::foo\[^\\n\]*inline copy in int main"  "inline"  } } */
+-/* { dg-final { cleanup-ipa-dump "inline" } } */
+--- a/src/gcc/testsuite/g++.dg/ipa/ivinline-4.C
++++ b/src/gcc/testsuite/g++.dg/ipa/ivinline-4.C
+@@ -67,4 +67,3 @@ int main (int argc, char *argv[])
+ }
+ 
+ /* { dg-final { scan-ipa-dump "B::foo\[^\\n\]*inline copy in int main"  "inline"  } } */
+-/* { dg-final { cleanup-ipa-dump "inline" } } */
+--- a/src/gcc/testsuite/g++.dg/ipa/ivinline-5.C
++++ b/src/gcc/testsuite/g++.dg/ipa/ivinline-5.C
+@@ -52,4 +52,3 @@ int main (int argc, char *argv[])
+ 
+ /* { dg-final { scan-ipa-dump "A::foo\[^\\n\]*inline copy in int main"  "inline"  } } */
+ /* { dg-final { scan-ipa-dump "B::foo\[^\\n\]*inline copy in int main"  "inline"  } } */
+-/* { dg-final { cleanup-ipa-dump "inline" } } */
+--- a/src/gcc/testsuite/g++.dg/ipa/ivinline-7.C
++++ b/src/gcc/testsuite/g++.dg/ipa/ivinline-7.C
+@@ -77,4 +77,3 @@ int main (int argc, char *argv[])
+ 
+ /* { dg-final { scan-ipa-dump "Discovered a virtual call to a known target.*B::.*foo"  "inline"  } } */
+ /* { dg-final { scan-ipa-dump "B::foo\[^\\n\]*inline copy in int main"  "inline"  { xfail *-*-* } } } */
+-/* { dg-final { cleanup-ipa-dump "inline" } } */
+--- a/src/gcc/testsuite/g++.dg/ipa/ivinline-8.C
++++ b/src/gcc/testsuite/g++.dg/ipa/ivinline-8.C
+@@ -74,4 +74,3 @@ int main (int argc, char *argv[])
+ 
+ /* { dg-final { scan-ipa-dump "B::foo\[^\\n\]*inline copy in int main" "inline"  } } */
+ /* { dg-final { scan-ipa-dump "B::bar\[^\\n\]*inline copy in int main" "inline"  } } */
+-/* { dg-final { cleanup-ipa-dump "inline" } } */
+--- a/src/gcc/testsuite/g++.dg/ipa/ivinline-9.C
++++ b/src/gcc/testsuite/g++.dg/ipa/ivinline-9.C
+@@ -91,4 +91,3 @@ int main (int argc, char *argv[])
+ 
+ /* { dg-final { scan-ipa-dump "Discovered a virtual call to a known target.*B::.*foo"  "inline"  } } */
+ /* { dg-final { scan-ipa-dump "B::foo\[^\\n\]*inline copy in int main"  "inline"  { xfail *-*-* } } } */
+-/* { dg-final { cleanup-ipa-dump "inline" } } */
+--- a/src/gcc/testsuite/g++.dg/ipa/pr60600.C
++++ b/src/gcc/testsuite/g++.dg/ipa/pr60600.C
+@@ -32,4 +32,3 @@ void test(top& t)
+ }
+ 
+ /* { dg-final { scan-ipa-dump "Type inconsistent devirtualization" "cp" } } */
+-/* { dg-final { cleanup-ipa-dump "cp" } } */
+--- a/src/gcc/testsuite/g++.dg/ipa/pr60640-4.C
++++ b/src/gcc/testsuite/g++.dg/ipa/pr60640-4.C
+@@ -82,4 +82,3 @@ int main (int argc, char *argv[])
+ }
+ 
+ /* { dg-final { scan-ipa-dump-times "Thunk fixed offset" 2 "cp"} } */
+-/* { dg-final { cleanup-ipa-dump "cp" } } */
+--- a/src/gcc/testsuite/g++.dg/ipa/pr63580.C
++++ b/src/gcc/testsuite/g++.dg/ipa/pr63580.C
+@@ -23,4 +23,3 @@ foo (int p1, char p2, int p3, double p4)
+ }
+ 
+ /* { dg-final { scan-ipa-dump "Equal symbols: 1" "icf"  } } */
+-/* { dg-final { cleanup-ipa-dump "icf" } } */
+--- a/src/gcc/testsuite/g++.dg/ipa/pr63595.C
++++ b/src/gcc/testsuite/g++.dg/ipa/pr63595.C
+@@ -77,4 +77,3 @@ int main()
+ }
+ 
+ /* { dg-final { scan-ipa-dump "Equal symbols: 0" "icf"  } } */
+-/* { dg-final { cleanup-ipa-dump "icf" } } */
+--- a/src/gcc/testsuite/g++.dg/ipa/pr63838.C
++++ b/src/gcc/testsuite/g++.dg/ipa/pr63838.C
+@@ -3,7 +3,6 @@
+ // { dg-options "-O2 -fdump-ipa-pure-const" }
+ // { dg-final { scan-ipa-dump-not "Function found to be nothrow: void foo" "pure-const" } }
+ // { dg-final { scan-ipa-dump-not "Function found to be nothrow: void bar" "pure-const" } }
+-// { dg-final { cleanup-ipa-dump "pure-const" } }
+ 
+ __attribute__((noinline, noclone)) static void bar (int);
+ volatile int v;
+--- a/src/gcc/testsuite/g++.dg/ipa/pr64049-1.C
++++ b/src/gcc/testsuite/g++.dg/ipa/pr64049-1.C
+@@ -34,4 +34,3 @@ LocalizedTextSet (LocalizedTextStruct* pTarget, LocalizedTextStruct* pSource)
+ }
+ 
+ /* { dg-final { scan-ipa-dump-not "__builtin_unreachable" "inline" } } */
+-/* { dg-final { cleanup-ipa-dump "inline" } } */
+--- a/src/gcc/testsuite/g++.dg/ipa/pr64146.C
++++ b/src/gcc/testsuite/g++.dg/ipa/pr64146.C
+@@ -36,4 +36,3 @@ int main (int argc, char **argv)
+ }
+ 
+ /* { dg-final { scan-ipa-dump "Equal symbols: 1" "icf"  } } */
+-/* { dg-final { cleanup-ipa-dump "icf" } } */
+--- a/src/gcc/testsuite/g++.dg/ipa/type-inheritance-1.C
++++ b/src/gcc/testsuite/g++.dg/ipa/type-inheritance-1.C
+@@ -25,4 +25,3 @@ int t(class A *a)
+ }
+ /* { dg-final { scan-ipa-dump "A::foo"  "visibility"  } } */
+ /* { dg-final { scan-ipa-dump-not "A::bar"  "visibility"  } } */
+-/* { dg-final { cleanup-ipa-dump "visibility" } } */
+--- a/src/gcc/testsuite/g++.dg/opt/nothrow1.C
++++ b/src/gcc/testsuite/g++.dg/opt/nothrow1.C
+@@ -22,4 +22,3 @@ int main()
+ 
+ // The catch block should be optimized away.
+ // { dg-final { scan-tree-dump-times "-42" 0 "optimized" } }
+-// { dg-final { cleanup-tree-dump "optimized" } }
+--- a/src/gcc/testsuite/g++.dg/opt/nrv12.C
++++ b/src/gcc/testsuite/g++.dg/opt/nrv12.C
+@@ -21,4 +21,3 @@ P foo (P x)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "return slot optimization" 1 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/g++.dg/opt/pr23372.C
++++ b/src/gcc/testsuite/g++.dg/opt/pr23372.C
+@@ -12,4 +12,3 @@ struct A {
+ void f(A);
+ void g(A *a) { f(*a); }
+ 
+-// { dg-final { cleanup-tree-dump gimple } }
+--- a/src/gcc/testsuite/g++.dg/opt/pr30965.C
++++ b/src/gcc/testsuite/g++.dg/opt/pr30965.C
+@@ -17,4 +17,3 @@ extern void assign( long& variable, long v )
+ 
+ /* { dg-final { scan-tree-dump-times ";; Function" 2 "optimized" } } */
+ /* { dg-final { scan-tree-dump-times "variable_..D. = v_..D." 2 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/g++.dg/opt/value-init1.C
++++ b/src/gcc/testsuite/g++.dg/opt/value-init1.C
+@@ -2,7 +2,6 @@
+ // { dg-do compile { target c++11 } }
+ // { dg-options "-fdump-tree-gimple" }
+ // { dg-final { scan-tree-dump-times "i = 0" 0 "gimple" } }
+-// { dg-final { cleanup-tree-dump "gimple" } }
+ 
+ struct S { S () = default; S (int i); int i; };
+ struct A { S s[100]; };
+--- a/src/gcc/testsuite/g++.dg/other/empty-class.C
++++ b/src/gcc/testsuite/g++.dg/other/empty-class.C
+@@ -14,4 +14,3 @@ obj funky(){
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "return <retval>;" 1 "gimple" } } */
+-/* { dg-final { cleanup-tree-dump "gimple" } } */
+--- a/src/gcc/testsuite/g++.dg/other/final1.C
++++ b/src/gcc/testsuite/g++.dg/other/final1.C
+@@ -24,4 +24,3 @@ void fun(A* a, B* b)
+ 
+ /* { dg-final { scan-tree-dump-times "A::foo" 2 "original"  } } */
+ /* { dg-final { scan-tree-dump-times "B::foo" 2 "original"  } } */
+-/* { dg-final { cleanup-tree-dump "original" } } */
+--- a/src/gcc/testsuite/g++.dg/other/final2.C
++++ b/src/gcc/testsuite/g++.dg/other/final2.C
+@@ -25,4 +25,3 @@ void fooF2(F2& a) { a(); int m = a; ++a; }
+ // { dg-final { scan-tree-dump-times "F2::operator\\(\\)" 1 "original" } }
+ // { dg-final { scan-tree-dump-times "F2::operator int" 1 "original" } }
+ // { dg-final { scan-tree-dump-times "F2::operator\\+\\+" 1 "original" } }
+-// { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/g++.dg/other/pr47218.C
++++ b/src/gcc/testsuite/g++.dg/other/pr47218.C
+@@ -18,4 +18,3 @@ int main ()
+   return 0;
+ }
+ 
+-// { dg-final { cleanup-saved-temps } }
+--- a/src/gcc/testsuite/g++.dg/other/static11.C
++++ b/src/gcc/testsuite/g++.dg/other/static11.C
+@@ -31,4 +31,3 @@ int main()
+   return r;
+ }
+ 
+-// { dg-final { cleanup-rtl-dump "*" } }
+--- a/src/gcc/testsuite/g++.dg/pch/pch.C
++++ b/src/gcc/testsuite/g++.dg/pch/pch.C
+@@ -5,5 +5,4 @@ int main()
+ {
+   return 0;
+ }
+-
+-// { dg-final { cleanup-saved-temps ".s" } }
++// { dg-keep-saved-temps ".s" }
+--- a/src/gcc/testsuite/g++.dg/pr55513.C
++++ b/src/gcc/testsuite/g++.dg/pr55513.C
+@@ -9,4 +9,3 @@ main ()
+ }
+ 
+ // { dg-final { scan-tree-dump-times "memcpy" 1 "gimple" } }
+-// { dg-final { cleanup-tree-dump "gimple" } }
+--- a/src/gcc/testsuite/g++.dg/pr55604.C
++++ b/src/gcc/testsuite/g++.dg/pr55604.C
+@@ -8,4 +8,3 @@ main ()
+   __builtin_printf ("%d %s\n", t, s);
+ }
+ 
+-/* { dg-final { cleanup-rtl-dump "reload" } } */
+--- a/src/gcc/testsuite/g++.dg/pr58123.C
++++ b/src/gcc/testsuite/g++.dg/pr58123.C
+@@ -15,4 +15,3 @@ int main() {
+ }
+ 
+ // { dg-final { scan-tree-dump-times "pr58123.C:13\.6\] try" 1 "gimple" } }
+-// { dg-final { cleanup-tree-dump "gimple" } }
+--- a/src/gcc/testsuite/g++.dg/pr64191.C
++++ b/src/gcc/testsuite/g++.dg/pr64191.C
+@@ -22,4 +22,3 @@ void bar_dtor_loop(Bar* p, unsigned int n)
+ 
+ // { dg-final { scan-tree-dump-times "CLOBBER" 1 "cddce1" } }
+ // { dg-final { scan-tree-dump-times "if" 0 "cddce1" } }
+-// { dg-final { cleanup-tree-dump "cddce1" } }
+--- a/src/gcc/testsuite/g++.dg/predict-loop-exit-1.C
++++ b/src/gcc/testsuite/g++.dg/predict-loop-exit-1.C
+@@ -10,4 +10,3 @@ void test() {
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "loop exit heuristics:" 3 "profile_estimate"} } */
+-/* { dg-final { cleanup-tree-dump "profile_estimate" } } */
+--- a/src/gcc/testsuite/g++.dg/predict-loop-exit-2.C
++++ b/src/gcc/testsuite/g++.dg/predict-loop-exit-2.C
+@@ -10,4 +10,3 @@ void test() {
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "loop exit heuristics:" 2 "profile_estimate"} } */
+-/* { dg-final { cleanup-tree-dump "profile_estimate" } } */
+--- a/src/gcc/testsuite/g++.dg/predict-loop-exit-3.C
++++ b/src/gcc/testsuite/g++.dg/predict-loop-exit-3.C
+@@ -10,4 +10,3 @@ void test() {
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "loop exit heuristics:" 3 "profile_estimate"} } */
+-/* { dg-final { cleanup-tree-dump "profile_estimate" } } */
+--- a/src/gcc/testsuite/g++.dg/tls/thread_local-cse.C
++++ b/src/gcc/testsuite/g++.dg/tls/thread_local-cse.C
+@@ -5,7 +5,6 @@
+ // { dg-add-options tls }
+ // { dg-require-effective-target tls_runtime }
+ // { dg-final { scan-assembler-times "call *_ZTW2ir" 1 { xfail *-*-* } } }
+-// { dg-final cleanup-saved-temps }
+ 
+ // XFAILed until the back end supports a way to mark a function as cseable
+ // though not pure.
+--- a/src/gcc/testsuite/g++.dg/tm/attrib-2.C
++++ b/src/gcc/testsuite/g++.dg/tm/attrib-2.C
+@@ -19,4 +19,3 @@ void Tcall::f() { }
+ // { dg-final { scan-tree-dump-times "_ZN5Tcall1fEv" 1 "optimized" } }
+ // { dg-final { scan-tree-dump-times "_ZGTtN5Tsafe1fEv" 1 "optimized" } }
+ // { dg-final { scan-tree-dump-times "_ZGTtN5Tcall1fEv" 1 "optimized" } }
+-// { dg-final { cleanup-tree-dump "optimized" } }
+--- a/src/gcc/testsuite/g++.dg/tm/attrib-3.C
++++ b/src/gcc/testsuite/g++.dg/tm/attrib-3.C
+@@ -30,4 +30,3 @@ void E::f() { }
+ // { dg-final { scan-tree-dump-times "_ZGTtN1B1fEv" 1 "optimized" } }
+ // { dg-final { scan-tree-dump-times "_ZN1E1fEv" 1 "optimized" } }
+ // { dg-final { scan-tree-dump-times "_ZGTtN1E1fEv" 1 "optimized" } }
+-// { dg-final { cleanup-tree-dump "optimized" } }
+--- a/src/gcc/testsuite/g++.dg/tm/noexcept-1.C
++++ b/src/gcc/testsuite/g++.dg/tm/noexcept-1.C
+@@ -34,5 +34,3 @@ int f3()
+ 
+ /* { dg-final { scan-tree-dump-times "eh_must_not_throw" 6 "tmlower" } } */
+ /* { dg-final { scan-tree-dump-times "ITM_RU" 6 "tmmark" } } */
+-/* { dg-final { cleanup-tree-dump "tmmark" } } */
+-/* { dg-final { cleanup-tree-dump "tmlower" } } */
+--- a/src/gcc/testsuite/g++.dg/tm/noexcept-3.C
++++ b/src/gcc/testsuite/g++.dg/tm/noexcept-3.C
+@@ -36,5 +36,3 @@ int f3()
+ 
+ /* { dg-final { scan-tree-dump-times "eh_must_not_throw" 0 "tmlower" } } */
+ /* { dg-final { scan-tree-dump-times "ITM_RU" 6 "tmmark" } } */
+-/* { dg-final { cleanup-tree-dump "tmmark" } } */
+-/* { dg-final { cleanup-tree-dump "tmlower" } } */
+--- a/src/gcc/testsuite/g++.dg/tm/noexcept-4.C
++++ b/src/gcc/testsuite/g++.dg/tm/noexcept-4.C
+@@ -31,5 +31,3 @@ int f3()
+ 
+ /* { dg-final { scan-tree-dump-times "eh_must_not_throw" 6 "tmlower" } } */
+ /* { dg-final { scan-tree-dump-times "ITM_RU" 6 "tmmark" } } */
+-/* { dg-final { cleanup-tree-dump "tmmark" } } */
+-/* { dg-final { cleanup-tree-dump "tmlower" } } */
+--- a/src/gcc/testsuite/g++.dg/tm/noexcept-5.C
++++ b/src/gcc/testsuite/g++.dg/tm/noexcept-5.C
+@@ -17,5 +17,3 @@ void f2(int x)
+ }
+ /* { dg-final { scan-tree-dump-times "eh_must_not_throw" 1 "tmlower" } } */
+ /* { dg-final { scan-tree-dump-times "ITM_RU" 1 "tmmark" } } */
+-/* { dg-final { cleanup-tree-dump "tmmark" } } */
+-/* { dg-final { cleanup-tree-dump "tmlower" } } */
+--- a/src/gcc/testsuite/g++.dg/tm/noexcept-6.C
++++ b/src/gcc/testsuite/g++.dg/tm/noexcept-6.C
+@@ -20,4 +20,3 @@ int f1()
+ 
+ /* { dg-final { scan-tree-dump-times "eh_must_not_throw" 0 "tmlower" } } */
+ /* { dg-final { scan-tree-dump-times "__transaction_atomic" 1 "tmlower" } } */
+-/* { dg-final { cleanup-tree-dump "tmlower" } } */
+--- a/src/gcc/testsuite/g++.dg/tm/pr47530-2.C
++++ b/src/gcc/testsuite/g++.dg/tm/pr47530-2.C
+@@ -36,4 +36,3 @@ void bench_test()
+ // The one in the instrumented code path is not.
+ // { dg-final { scan-tree-dump-times "ITM_commitTransaction.*tail call" 1 "tmedge" } }
+ 
+-// { dg-final { cleanup-tree-dump "tmedge" } }
+--- a/src/gcc/testsuite/g++.dg/tm/pr47530.C
++++ b/src/gcc/testsuite/g++.dg/tm/pr47530.C
+@@ -76,5 +76,4 @@ void LinkedList::insert(int val)
+ // Make sure we don't do tail optimization on the commit, except on
+ // the uninstrumented code path.
+ // { dg-final { scan-tree-dump-times "commitTransaction...; .tail call" 1 "optimized" } }
+-// { dg-final { cleanup-tree-dump "optimized" } }
+ 
+--- a/src/gcc/testsuite/g++.dg/tm/pr51516.C
++++ b/src/gcc/testsuite/g++.dg/tm/pr51516.C
+@@ -18,4 +18,3 @@ int main()
+ }
+ 
+ /* { dg-final { scan-assembler-not "_ITM_getTMCloneOrIrrevocable" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/g++.dg/tm/template-1.C
++++ b/src/gcc/testsuite/g++.dg/tm/template-1.C
+@@ -33,4 +33,3 @@ int f1()
+ /* 4 transactions overall, two of them write to global:  */
+ /* { dg-final { scan-tree-dump-times "ITM_RU4\\s*\\(&global" 4 "tmmark" } } */
+ /* { dg-final { scan-tree-dump-times "ITM_WU4\\s*\\(&global" 2 "tmmark" } } */
+-/* { dg-final { cleanup-tree-dump "tmmark" } } */
+--- a/src/gcc/testsuite/g++.dg/tm/template-2.C
++++ b/src/gcc/testsuite/g++.dg/tm/template-2.C
+@@ -19,4 +19,3 @@ int f1()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "ITM_RU" 2 "tmmark" } } */
+-/* { dg-final { cleanup-tree-dump "tmmark" } } */
+--- a/src/gcc/testsuite/g++.dg/torture/pr53085.C
++++ b/src/gcc/testsuite/g++.dg/torture/pr53085.C
+@@ -14,4 +14,3 @@ void aa::f(){
+ }
+ 
+ // { dg-final { scan-tree-dump-times "a ={v} 1;" 2 "optimized" } }
+-// { dg-final { cleanup-tree-dump "optimized" } }
+--- a/src/gcc/testsuite/g++.dg/tree-prof/indir-call-prof.C
++++ b/src/gcc/testsuite/g++.dg/tree-prof/indir-call-prof.C
+@@ -35,5 +35,3 @@ main (void)
+ 
+ /* { dg-final-use { scan-ipa-dump "Indirect call -> direct call.* AA transformation on insn" "profile" } } */
+ /* { dg-final-use { scan-tree-dump-not "Invalid sum" "optimized" } } */
+-/* { dg-final-use { cleanup-tree-dump "optimized" } } */
+-/* { dg-final-use { cleanup-ipa-dump "profile" } } */
+--- a/src/gcc/testsuite/g++.dg/tree-prof/inline_mismatch_args.C
++++ b/src/gcc/testsuite/g++.dg/tree-prof/inline_mismatch_args.C
+@@ -33,4 +33,3 @@ int main(void)
+ }
+ /* { dg-final-use { scan-tree-dump "Inlining .*Super::Foo" "einline" } } */
+ /* { dg-final-use { scan-tree-dump-not "mismatched arguments" "einline" } } */
+-/* { dg-final-use { cleanup-tree-dump "einline" } } */
+--- a/src/gcc/testsuite/g++.dg/tree-prof/morefunc.C
++++ b/src/gcc/testsuite/g++.dg/tree-prof/morefunc.C
+@@ -52,4 +52,3 @@ int main()
+ }
+ 
+ /* { dg-final-use { scan-ipa-dump-times "Indirect call -> direct call" 2 "profile" } } */
+-/* { dg-final-use { cleanup-ipa-dump "profile" } } */
+--- a/src/gcc/testsuite/g++.dg/tree-prof/pr35545.C
++++ b/src/gcc/testsuite/g++.dg/tree-prof/pr35545.C
+@@ -47,6 +47,4 @@ int main()
+ 
+ }
+ /* { dg-final-use { scan-ipa-dump "Indirect call -> direct call" "profile_estimate" } } */
+-/* { dg-final-use { cleanup-ipa-dump "profile_estimate" } } */
+ /* { dg-final-use { scan-tree-dump-not "OBJ_TYPE_REF" "optimized" } } */
+-/* { dg-final-use { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/g++.dg/tree-prof/reorder.C
++++ b/src/gcc/testsuite/g++.dg/tree-prof/reorder.C
+@@ -45,4 +45,3 @@ int main()
+ }
+ 
+ /* { dg-final-use { scan-ipa-dump-times "Indirect call -> direct call" 2 "profile" } } */
+-/* { dg-final-use { cleanup-ipa-dump "profile" } } */
+--- a/src/gcc/testsuite/g++.dg/tree-ssa/block1.C
++++ b/src/gcc/testsuite/g++.dg/tree-ssa/block1.C
+@@ -8,4 +8,3 @@ void bar (void)
+ }
+ 
+ // { dg-final { scan-tree-dump-times "\{" 1 "gimple" } }
+-// { dg-final { cleanup-tree-dump "gimple" } }
+--- a/src/gcc/testsuite/g++.dg/tree-ssa/calloc.C
++++ b/src/gcc/testsuite/g++.dg/tree-ssa/calloc.C
+@@ -47,4 +47,3 @@ void f (void *p, int n)
+ /* { dg-final { scan-tree-dump-times "calloc" 1 "optimized" } } */
+ /* { dg-final { scan-tree-dump-not "malloc" "optimized" } } */
+ /* { dg-final { scan-tree-dump-not "memset" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/g++.dg/tree-ssa/copyprop-1.C
++++ b/src/gcc/testsuite/g++.dg/tree-ssa/copyprop-1.C
+@@ -28,4 +28,3 @@ int foo(Object&o)
+ /* Remaining should be two loads.  */
+ 
+ /* { dg-final { scan-tree-dump-times " = \[^\n\]*;" 2 "dce2" } } */
+-/* { dg-final { cleanup-tree-dump "dce2" } } */
+--- a/src/gcc/testsuite/g++.dg/tree-ssa/deleted-label1.C
++++ b/src/gcc/testsuite/g++.dg/tree-ssa/deleted-label1.C
+@@ -1,7 +1,6 @@
+ // PR debug/58315
+ // { dg-options "-O -g -fdump-tree-einline" }
+ // { dg-final { scan-tree-dump-not "DEBUG <L0>" "einline" } }
+-// { dg-final { cleanup-tree-dump "einline" } }
+ 
+ // We used to emit useless NOTE_INSN_DELETED_DEBUG_LABELs for the
+ // artificial cdtor_label.
+--- a/src/gcc/testsuite/g++.dg/tree-ssa/ehcleanup-1.C
++++ b/src/gcc/testsuite/g++.dg/tree-ssa/ehcleanup-1.C
+@@ -28,4 +28,3 @@ t (void)
+ // And as a result also contained control flow.
+ // { dg-final { scan-tree-dump-times "Removing unreachable" 6 "ehcleanup1" } }
+ //
+-// { dg-final { cleanup-tree-dump "ehcleanup1" } }
+--- a/src/gcc/testsuite/g++.dg/tree-ssa/empty-1.C
++++ b/src/gcc/testsuite/g++.dg/tree-ssa/empty-1.C
+@@ -11,4 +11,3 @@ S bar (const S &a)
+ 
+ /* Test whether memcpy call has been optimized out.  */
+ /* { dg-final { scan-tree-dump-times "memcpy" 0 "optimized"} } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/g++.dg/tree-ssa/empty-2.C
++++ b/src/gcc/testsuite/g++.dg/tree-ssa/empty-2.C
+@@ -11,5 +11,3 @@ void t(void)
+ // { dg-final { scan-tree-dump-not "fallible" "gimple" } }
+ // Whole constructor should be optimized away.
+ // { dg-final { scan-tree-dump-not "int" "optimized" } }
+-// { dg-final { cleanup-tree-dump "gimple" } }
+-// { dg-final { cleanup-tree-dump "optimized" } }
+--- a/src/gcc/testsuite/g++.dg/tree-ssa/fold-compare.C
++++ b/src/gcc/testsuite/g++.dg/tree-ssa/fold-compare.C
+@@ -24,5 +24,4 @@ int f(const ExtentsBase &e1) {
+ }
+ 
+ /* { dg-final { scan-tree-dump-not "&my_extents" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+ 
+--- a/src/gcc/testsuite/g++.dg/tree-ssa/forwprop-switch.C
++++ b/src/gcc/testsuite/g++.dg/tree-ssa/forwprop-switch.C
+@@ -21,4 +21,3 @@ int Test(Scale s)
+ 
+ // { dg-final { scan-tree-dump-not "\\\(int\\\)" "cddce1" } }
+ // { dg-final { scan-tree-dump "switch \\\(s_.\\\(D\\\)\\\)" "cddce1" } }
+-// { dg-final { cleanup-tree-dump "cddce1" } }
+--- a/src/gcc/testsuite/g++.dg/tree-ssa/fwprop-align.C
++++ b/src/gcc/testsuite/g++.dg/tree-ssa/fwprop-align.C
+@@ -17,4 +17,3 @@ int main()
+ 
+ /* We should eliminate the check if p points to a virtual function. */
+ /* { dg-final { scan-tree-dump-times "& 1" 0 "forwprop2" } } */
+-/* { dg-final { cleanup-tree-dump "forwprop2" } } */
+--- a/src/gcc/testsuite/g++.dg/tree-ssa/inline-1.C
++++ b/src/gcc/testsuite/g++.dg/tree-ssa/inline-1.C
+@@ -33,4 +33,3 @@ int main(int argc, char **argv)
+ 
+ /* { dg-final { scan-tree-dump-times "Inlining void inline_me\\(" 1 "einline"} } */
+ /* { dg-final { scan-tree-dump-times "Inlining void inline_me_too\\(" 1 "einline"} } */
+-/* { dg-final { cleanup-tree-dump "einline" } } */
+--- a/src/gcc/testsuite/g++.dg/tree-ssa/inline-2.C
++++ b/src/gcc/testsuite/g++.dg/tree-ssa/inline-2.C
+@@ -33,4 +33,3 @@ int main(int argc, char **argv)
+ 
+ /* { dg-final { scan-tree-dump-times "Inlining void inline_me\\(" 1 "einline"} } */
+ /* { dg-final { scan-tree-dump-times "Inlining void inline_me_too\\(" 1 "einline"} } */
+-/* { dg-final { cleanup-tree-dump "einline" } } */
+--- a/src/gcc/testsuite/g++.dg/tree-ssa/inline-3.C
++++ b/src/gcc/testsuite/g++.dg/tree-ssa/inline-3.C
+@@ -26,4 +26,3 @@ int main(int argc, char **argv)
+ 
+ /* { dg-final { scan-tree-dump-times "Inlining void inline_me\\(" 1 "einline"} } */
+ /* { dg-final { scan-tree-dump-times "Inlining void inline_me_too\\(" 1 "einline"} } */
+-/* { dg-final { cleanup-tree-dump "einline" } } */
+--- a/src/gcc/testsuite/g++.dg/tree-ssa/ivopts-1.C
++++ b/src/gcc/testsuite/g++.dg/tree-ssa/ivopts-1.C
+@@ -15,4 +15,3 @@ void bar(void)
+ /* { dg-final { scan-tree-dump-not "-&x" "ivopts" } } */
+ /* { dg-final { scan-tree-dump-not "offset: (4294967292|0x0f+fc)" "ivopts" } } */
+ /* { dg-final { scan-tree-dump-not "&x\\\[5\\\]" "ivopts" } } */
+-/* { dg-final { cleanup-tree-dump "ivopts" } } */
+--- a/src/gcc/testsuite/g++.dg/tree-ssa/ivopts-2.C
++++ b/src/gcc/testsuite/g++.dg/tree-ssa/ivopts-2.C
+@@ -8,4 +8,3 @@ void test (int *b, int *e, int stride)
+   }
+ 
+ /* { dg-final { scan-tree-dump-times "PHI <\[pb\]" 1 "ivopts"} } */
+-/* { dg-final { cleanup-tree-dump "ivopts" } } */
+--- a/src/gcc/testsuite/g++.dg/tree-ssa/ivopts-3.C
++++ b/src/gcc/testsuite/g++.dg/tree-ssa/ivopts-3.C
+@@ -73,4 +73,3 @@ int main ( int , char** ) {
+ // Verify that on x86_64 and i?86 we use a single IV for the innermost loop
+ 
+ // { dg-final { scan-tree-dump "Selected IV set for loop \[0-9\]* at \[^ \]*:64, 1 IVs" "ivopts" { target x86_64-*-* i?86-*-* } } }
+-// { dg-final { cleanup-tree-dump "ivopts" } }
+--- a/src/gcc/testsuite/g++.dg/tree-ssa/new1.C
++++ b/src/gcc/testsuite/g++.dg/tree-ssa/new1.C
+@@ -39,4 +39,3 @@ int main()
+ }
+ 
+ /* { dg-final { scan-tree-dump-not "= .* \\+ -" "forwprop1" } } */
+-/* { dg-final { cleanup-tree-dump "forwprop1" } } */
+--- a/src/gcc/testsuite/g++.dg/tree-ssa/nonzero-1.C
++++ b/src/gcc/testsuite/g++.dg/tree-ssa/nonzero-1.C
+@@ -9,4 +9,3 @@ int m()
+   return q != 0;
+ }
+ /* { dg-final { scan-tree-dump "return 1" "ccp1"} } */
+-/* { dg-final { cleanup-tree-dump "ccp1" } } */
+--- a/src/gcc/testsuite/g++.dg/tree-ssa/nonzero-2.C
++++ b/src/gcc/testsuite/g++.dg/tree-ssa/nonzero-2.C
+@@ -13,4 +13,3 @@ int m()
+   return q != 0;
+ }
+ /* { dg-final { scan-tree-dump "return 1" "ccp1"} } */
+-/* { dg-final { cleanup-tree-dump "ccp1" } } */
+--- a/src/gcc/testsuite/g++.dg/tree-ssa/nothrow-1.C
++++ b/src/gcc/testsuite/g++.dg/tree-ssa/nothrow-1.C
+@@ -19,4 +19,3 @@ void q()
+ }
+ /* We shouldnotice nothrow attribute.  */
+ /* { dg-final { scan-tree-dump-times "exception" 0 "cfg"} } */
+-/* { dg-final { cleanup-tree-dump "cfg" } } */
+--- a/src/gcc/testsuite/g++.dg/tree-ssa/pointer-reference-alias.C
++++ b/src/gcc/testsuite/g++.dg/tree-ssa/pointer-reference-alias.C
+@@ -10,4 +10,3 @@ int f(int *a)
+ 
+ /* There should be only one dereferencing of a. */
+ /* { dg-final { scan-tree-dump-times "\\*a" 1 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/g++.dg/tree-ssa/pr13954.C
++++ b/src/gcc/testsuite/g++.dg/tree-ssa/pr13954.C
+@@ -26,4 +26,3 @@ copystruct1 (teststruct param)
+ 
+ /* There should be no reference to link_error. */
+ /* { dg-final { scan-tree-dump-times "link_error" 0 "optimized"} } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/g++.dg/tree-ssa/pr14703.C
++++ b/src/gcc/testsuite/g++.dg/tree-ssa/pr14703.C
+@@ -46,4 +46,3 @@ int main()
+    ::std::cerr << "fibcst<90>() == " << fibconst<90>() << "\n";
+ }
+ // { dg-final { scan-tree-dump-not "fibconst" "optimized" } }
+-// { dg-final { cleanup-tree-dump "optimized" } }
+--- a/src/gcc/testsuite/g++.dg/tree-ssa/pr14814.C
++++ b/src/gcc/testsuite/g++.dg/tree-ssa/pr14814.C
+@@ -16,5 +16,4 @@ int foo(XX& r) {
+ 
+ /* { dg-final { scan-tree-dump-times "&this" 0 "forwprop2" } } */
+ /* { dg-final { scan-tree-dump-times "&r" 0 "forwprop2" } } */
+-/* { dg-final { cleanup-tree-dump "forwprop2" } } */
+ 
+--- a/src/gcc/testsuite/g++.dg/tree-ssa/pr15791-3.C
++++ b/src/gcc/testsuite/g++.dg/tree-ssa/pr15791-3.C
+@@ -10,4 +10,3 @@ int f(int i, unsigned j)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "i == j" 0 "gimple" } } */
+-/* { dg-final { cleanup-tree-dump "gimple" } } */
+--- a/src/gcc/testsuite/g++.dg/tree-ssa/pr15791-4.C
++++ b/src/gcc/testsuite/g++.dg/tree-ssa/pr15791-4.C
+@@ -10,4 +10,3 @@ int f(int i, int j)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "i == j" 0 "gimple" } } */
+-/* { dg-final { cleanup-tree-dump "gimple" } } */
+--- a/src/gcc/testsuite/g++.dg/tree-ssa/pr15791-5.C
++++ b/src/gcc/testsuite/g++.dg/tree-ssa/pr15791-5.C
+@@ -10,4 +10,3 @@ int foo(int i, int j)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "i == j" 1 "gimple" } } */
+-/* { dg-final { cleanup-tree-dump "gimple" } } */
+--- a/src/gcc/testsuite/g++.dg/tree-ssa/pr18178.C
++++ b/src/gcc/testsuite/g++.dg/tree-ssa/pr18178.C
+@@ -44,4 +44,3 @@ void doit (array *a)
+ /* VRP should remove all but 1 if() in the loop.  */
+ 
+ /* { dg-final { scan-tree-dump-times "if " 1 "vrp1"} } */
+-/* { dg-final { cleanup-tree-dump "vrp1" } } */
+--- a/src/gcc/testsuite/g++.dg/tree-ssa/pr19476-1.C
++++ b/src/gcc/testsuite/g++.dg/tree-ssa/pr19476-1.C
+@@ -13,4 +13,3 @@ int g(){
+ 
+ /* { dg-final { scan-tree-dump     "return 42" "ccp1" } } */
+ /* { dg-final { scan-tree-dump-not "return 33" "ccp1" } } */
+-/* { dg-final { cleanup-tree-dump "ccp1" } } */
+--- a/src/gcc/testsuite/g++.dg/tree-ssa/pr19476-2.C
++++ b/src/gcc/testsuite/g++.dg/tree-ssa/pr19476-2.C
+@@ -14,4 +14,3 @@ int g(){
+ 
+ /* { dg-final { scan-tree-dump     "return 42" "optimized" } } */
+ /* { dg-final { scan-tree-dump-not "return 33" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/g++.dg/tree-ssa/pr19476-3.C
++++ b/src/gcc/testsuite/g++.dg/tree-ssa/pr19476-3.C
+@@ -8,4 +8,3 @@ int g(){
+ }
+ 
+ /* { dg-final { scan-tree-dump-not "return 42" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/g++.dg/tree-ssa/pr19476-4.C
++++ b/src/gcc/testsuite/g++.dg/tree-ssa/pr19476-4.C
+@@ -8,4 +8,3 @@ int g(){
+ }
+ 
+ /* { dg-final { scan-tree-dump-not "return 42" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/g++.dg/tree-ssa/pr19476-5.C
++++ b/src/gcc/testsuite/g++.dg/tree-ssa/pr19476-5.C
+@@ -8,4 +8,3 @@ int g(){
+ }
+ 
+ /* { dg-final { scan-tree-dump     "return 42" "ccp1" } } */
+-/* { dg-final { cleanup-tree-dump "ccp1" } } */
+--- a/src/gcc/testsuite/g++.dg/tree-ssa/pr19637.C
++++ b/src/gcc/testsuite/g++.dg/tree-ssa/pr19637.C
+@@ -30,4 +30,3 @@ int foo_void_offset(void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "return 1;" 3 "dom1" } } */
+-/* { dg-final { cleanup-tree-dump "dom1" } } */
+--- a/src/gcc/testsuite/g++.dg/tree-ssa/pr19807.C
++++ b/src/gcc/testsuite/g++.dg/tree-ssa/pr19807.C
+@@ -24,4 +24,3 @@ void bar(int i)
+ /* We can't get &a[i +- 1] in the final code and it is not clear we
+    want this.  Instead we get to see &a[i] and pointer offsetting
+    by 4 and -4U.  */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/g++.dg/tree-ssa/pr21463.C
++++ b/src/gcc/testsuite/g++.dg/tree-ssa/pr21463.C
+@@ -17,4 +17,3 @@ template struct foo_t<int>;
+ 
+ /* { dg-final { scan-tree-dump-times "MIN_EXPR" 2 "phiopt1" } } */
+ /* { dg-final { scan-tree-dump-times "MAX_EXPR" 2 "phiopt1" } } */
+-/* { dg-final { cleanup-tree-dump "phiopt1" } } */
+--- a/src/gcc/testsuite/g++.dg/tree-ssa/pr23948.C
++++ b/src/gcc/testsuite/g++.dg/tree-ssa/pr23948.C
+@@ -16,4 +16,3 @@ int make_scheduler_request(double a, double b)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times " / " 1 "recip" } } */
+-/* { dg-final { cleanup-tree-dump "recip" } } */
+--- a/src/gcc/testsuite/g++.dg/tree-ssa/pr26406.C
++++ b/src/gcc/testsuite/g++.dg/tree-ssa/pr26406.C
+@@ -11,4 +11,3 @@ int *f(int *b)
+ }
+ 
+ /* { dg-final { scan-tree-dump-not "if" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/g++.dg/tree-ssa/pr27090.C
++++ b/src/gcc/testsuite/g++.dg/tree-ssa/pr27090.C
+@@ -18,4 +18,3 @@ int foo(Foo& f)
+ }
+ 
+ /* { dg-final { scan-tree-dump "f_..D.->x;" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/g++.dg/tree-ssa/pr30738.C
++++ b/src/gcc/testsuite/g++.dg/tree-ssa/pr30738.C
+@@ -14,4 +14,3 @@ int test_min_ref (int x, int y)
+ }
+ 
+ /* { dg-final { scan-tree-dump "MIN_EXPR" "phiopt1" } } */
+-/* { dg-final { cleanup-tree-dump "phiopt1" } } */
+--- a/src/gcc/testsuite/g++.dg/tree-ssa/pr31146-2.C
++++ b/src/gcc/testsuite/g++.dg/tree-ssa/pr31146-2.C
+@@ -21,4 +21,3 @@ double foo (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump "Replaced .* != 0B. with .1" "forwprop1" } } */
+-/* { dg-final { cleanup-tree-dump "forwprop1" } } */
+--- a/src/gcc/testsuite/g++.dg/tree-ssa/pr31146.C
++++ b/src/gcc/testsuite/g++.dg/tree-ssa/pr31146.C
+@@ -13,4 +13,3 @@ void foo (int j)
+ }
+ 
+ /* { dg-final { scan-tree-dump "MEM\\\[.*&i\\\]\\\[j.*\\\] =.* 1;" "forwprop1" } } */
+-/* { dg-final { cleanup-tree-dump "forwprop?" } } */
+--- a/src/gcc/testsuite/g++.dg/tree-ssa/pr31307.C
++++ b/src/gcc/testsuite/g++.dg/tree-ssa/pr31307.C
+@@ -37,4 +37,3 @@ int test(unsigned char *d)
+ }
+ 
+ /* { dg-final { scan-tree-dump-not "r.dst" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/g++.dg/tree-ssa/pr33593.C
++++ b/src/gcc/testsuite/g++.dg/tree-ssa/pr33593.C
+@@ -16,4 +16,3 @@ main (void)
+ // The expression 1 / 0 should not be propagated into the call to foo() if it
+ // may trap.
+ // { dg-final { scan-tree-dump-times "foo \\(1 \\/ 0\\)" 0 "optimized" } }
+-// { dg-final { cleanup-tree-dump "optimized" } }
+--- a/src/gcc/testsuite/g++.dg/tree-ssa/pr33604.C
++++ b/src/gcc/testsuite/g++.dg/tree-ssa/pr33604.C
+@@ -46,4 +46,3 @@ int main(int argc, char *argv[])
+    after optimization.  */
+ 
+ /* { dg-final { scan-tree-dump-times ".MEM_\[0-9\]*\\\(D\\\)" 2 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/g++.dg/tree-ssa/pr33615-2.C
++++ b/src/gcc/testsuite/g++.dg/tree-ssa/pr33615-2.C
+@@ -17,4 +17,3 @@ foo (double a, int x)
+ // The expression 1.0 / 0.0 should not be treated as a loop invariant
+ // if it may throw an exception.
+ // { dg-final { scan-tree-dump-times "Replaced 1\\\.0e\\\+0 / 0\\\.0" 0 "pre" } }
+-// { dg-final { cleanup-tree-dump "pre" } }
+--- a/src/gcc/testsuite/g++.dg/tree-ssa/pr33615.C
++++ b/src/gcc/testsuite/g++.dg/tree-ssa/pr33615.C
+@@ -17,4 +17,3 @@ foo (double a, int x)
+ // The expression 1.0 / 0.0 should not be treated as a loop invariant
+ // if it may throw an exception.
+ // { dg-final { scan-tree-dump-times "invariant up to" 0 "lim1" } }
+-// { dg-final { cleanup-tree-dump "lim1" } }
+--- a/src/gcc/testsuite/g++.dg/tree-ssa/pr40874.C
++++ b/src/gcc/testsuite/g++.dg/tree-ssa/pr40874.C
+@@ -22,4 +22,3 @@ int main(int argc, char* argv[])
+ }
+ 
+ // { dg-final { scan-tree-dump "return 0" "optimized" } }
+-// { dg-final { cleanup-tree-dump "optimized" } }
+--- a/src/gcc/testsuite/g++.dg/tree-ssa/pr41186.C
++++ b/src/gcc/testsuite/g++.dg/tree-ssa/pr41186.C
+@@ -32,4 +32,3 @@ int main()
+ /* { dg-final { scan-tree-dump "Replaced b1.b with 1" "fre1" } } */
+ /* { dg-final { scan-tree-dump "Replaced b1.D.\[0-9\]*.i with 0" "fre1" } } */
+ /* { dg-final { scan-tree-dump "Replaced b1.D.\[0-9\]*.f with 1" "fre1" } } */
+-/* { dg-final { cleanup-tree-dump "fre1" } } */
+--- a/src/gcc/testsuite/g++.dg/tree-ssa/pr41428.C
++++ b/src/gcc/testsuite/g++.dg/tree-ssa/pr41428.C
+@@ -12,4 +12,3 @@ int foo(void)
+ }
+ 
+ /* { dg-final { scan-tree-dump "Folded into: if \\\(1 != 0\\\)" "ccp1" } } */
+-/* { dg-final { cleanup-tree-dump "ccp1" } } */
+--- a/src/gcc/testsuite/g++.dg/tree-ssa/pr43411.C
++++ b/src/gcc/testsuite/g++.dg/tree-ssa/pr43411.C
+@@ -26,4 +26,3 @@ void testInlinePsub() {
+ }
+ 
+ // { dg-final { scan-tree-dump-not "function_to_inline" "release_ssa" { xfail *-*-* } } }
+-// { dg-final { cleanup-tree-dump "release_ssa" } }
+--- a/src/gcc/testsuite/g++.dg/tree-ssa/pr44706.C
++++ b/src/gcc/testsuite/g++.dg/tree-ssa/pr44706.C
+@@ -43,4 +43,3 @@ XMLExcepts::AttrList_BadIndex, getMemoryManager());
+ /* Mistake in branch prediction caused us to split away real body of the function keeping
+    only throw () invokation.   This is bad idea.  */
+ /* { dg-final { scan-tree-dump-not "Splitting function" "fnsplit"} } */
+-/* { dg-final { cleanup-tree-dump "fnsplit" } } */
+--- a/src/gcc/testsuite/g++.dg/tree-ssa/pr45453.C
++++ b/src/gcc/testsuite/g++.dg/tree-ssa/pr45453.C
+@@ -16,4 +16,3 @@ B ()
+ }
+ /* We should inline foo and devirtualize call to foo in the inlined version.  */
+ // { dg-final { scan-tree-dump-times "OBJ_TYPE_REF" 1 "optimized" } }
+-// { dg-final { cleanup-tree-dump "optimized" } }
+--- a/src/gcc/testsuite/g++.dg/tree-ssa/pr45605.C
++++ b/src/gcc/testsuite/g++.dg/tree-ssa/pr45605.C
+@@ -34,4 +34,3 @@ int main() {
+ 
+ /* We should devirtualize call to D::Run */
+ /* { dg-final { scan-tree-dump-times "D::Run \\(" 1 "fre1" } } */
+-/* { dg-final { cleanup-tree-dump "fre1" } } */
+--- a/src/gcc/testsuite/g++.dg/tree-ssa/pr46228.C
++++ b/src/gcc/testsuite/g++.dg/tree-ssa/pr46228.C
+@@ -20,4 +20,3 @@ int main()
+ 
+ // This function is small enough to be inlined even at -Os.
+ // { dg-final { scan-tree-dump-not "_ZNSt8_Rb_treeIiiSt9_IdentityIiESt4lessIiESaIiEED2Ev" "optimized" } }
+-// { dg-final { cleanup-tree-dump "optimized" } }
+--- a/src/gcc/testsuite/g++.dg/tree-ssa/pr49911.C
++++ b/src/gcc/testsuite/g++.dg/tree-ssa/pr49911.C
+@@ -38,4 +38,3 @@ void jsop_setelem(bool y, int z) {
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "Folding predicate.*45" 0 "vrp2"} } */
+-/* { dg-final { cleanup-tree-dump "vrp2" } } */
+--- a/src/gcc/testsuite/g++.dg/tree-ssa/pr53844.C
++++ b/src/gcc/testsuite/g++.dg/tree-ssa/pr53844.C
+@@ -75,4 +75,3 @@ void test(const Vector<>& in, Vector<>& out, int i)
+ // dead stores to unused temporaries should have been removed.
+ 
+ // { dg-final { scan-tree-dump-times "VDEF" 1 "optimized" } }
+-// { dg-final { cleanup-tree-dump "optimized" } }
+--- a/src/gcc/testsuite/g++.dg/tree-ssa/pr57380.C
++++ b/src/gcc/testsuite/g++.dg/tree-ssa/pr57380.C
+@@ -19,4 +19,3 @@ int f(my_array a, my_array b) {
+ }
+ 
+ /* { dg-final { scan-tree-dump "MAX_EXPR" "phiopt1" } } */
+-/* { dg-final { cleanup-tree-dump "phiopt1" } } */
+--- a/src/gcc/testsuite/g++.dg/tree-ssa/pr58404.C
++++ b/src/gcc/testsuite/g++.dg/tree-ssa/pr58404.C
+@@ -17,4 +17,3 @@ foo ()
+ // We should propagate the reference into both memory accesses
+ // during the first forwprop pass
+ // { dg-final { scan-tree-dump-times "= &a" 0 "cddce1" } }
+-// { dg-final { cleanup-tree-dump "cddce1" } }
+--- a/src/gcc/testsuite/g++.dg/tree-ssa/pr61009.C
++++ b/src/gcc/testsuite/g++.dg/tree-ssa/pr61009.C
+@@ -50,4 +50,3 @@ bool  Test(void) {
+ // there should be a single == 0 comparison in the dump file.
+ 
+ // { dg-final { scan-tree-dump-times "== 0" 1 "dom1" } }
+-// { dg-final { cleanup-tree-dump "dom1" } }
+--- a/src/gcc/testsuite/g++.dg/tree-ssa/pr61034.C
++++ b/src/gcc/testsuite/g++.dg/tree-ssa/pr61034.C
+@@ -44,4 +44,3 @@ bool f(I a, I b, I c, I d) {
+ // { dg-final { scan-tree-dump-times ";; Function" 1 "fre2" } }
+ // { dg-final { scan-tree-dump-times "free" 19 "fre2" } }
+ // { dg-final { scan-tree-dump-times "unreachable" 11 "fre2" } }
+-// { dg-final { cleanup-tree-dump "fre2" } }
+--- /dev/null
++++ b/src/gcc/testsuite/g++.dg/tree-ssa/pr66726.c
+@@ -0,0 +1,36 @@
++
++/* { dg-do run } */
++/* { dg-options "-O2" } */
++
++/* Execution test for converting VIEW_CONVERT_EXPR.  */
++
++struct cpp_num {
++  bool f;
++};
++
++extern cpp_num  __attribute__((noinline))
++foo (cpp_num lhs,
++     cpp_num rhs)
++{
++  lhs.f = lhs.f || rhs.f;
++  return lhs;
++}
++
++cpp_num lhs, rhs, r;
++
++int main ()
++{
++
++  lhs.f = false;
++  rhs.f = false;
++  r = foo (lhs, rhs);
++  if (r.f)
++    __builtin_abort ();
++
++
++  lhs.f = false;
++  rhs.f = true;
++  r = foo (lhs, rhs);
++  if (!r.f)
++    __builtin_abort ();
++}
+--- a/src/gcc/testsuite/g++.dg/tree-ssa/pr8781.C
++++ b/src/gcc/testsuite/g++.dg/tree-ssa/pr8781.C
+@@ -25,4 +25,3 @@ int x()
+ /* We should optimize this to a direct call.  */
+ 
+ /* { dg-final { scan-tree-dump-times "= f \\(\\);" 1 "fre1" } } */
+-/* { dg-final { cleanup-tree-dump "fre1" } } */
+--- a/src/gcc/testsuite/g++.dg/tree-ssa/ptrmemfield.C
++++ b/src/gcc/testsuite/g++.dg/tree-ssa/ptrmemfield.C
+@@ -23,5 +23,4 @@ int h(void)
+ /* { dg-final { scan-tree-dump-times "offset_type" 0 "optimized"} } */
+ // And we should optimized this code to just return 0
+ /* { dg-final { scan-tree-dump-times "return 0" 1 "optimized"} } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+ 
+--- a/src/gcc/testsuite/g++.dg/tree-ssa/restrict1.C
++++ b/src/gcc/testsuite/g++.dg/tree-ssa/restrict1.C
+@@ -17,4 +17,3 @@ void bar(Foo f, int * __restrict__ q)
+ }
+ 
+ /* { dg-final { scan-tree-dump "Executing store motion" "lim1" } } */
+-/* { dg-final { cleanup-tree-dump "lim1" } } */
+--- a/src/gcc/testsuite/g++.dg/tree-ssa/restrict2.C
++++ b/src/gcc/testsuite/g++.dg/tree-ssa/restrict2.C
+@@ -59,4 +59,3 @@ f6 (S *x, S *y)
+   return x->p[0];
+ }
+ 
+-// { dg-final { cleanup-tree-dump "optimized" } }
+--- a/src/gcc/testsuite/g++.dg/tree-ssa/ssa-cast-1.C
++++ b/src/gcc/testsuite/g++.dg/tree-ssa/ssa-cast-1.C
+@@ -9,4 +9,3 @@ int &f(int *a)
+ /* There should be no cast as pointer and references are
+    considered the same type. */
+ /* { dg-final { scan-tree-dump-times "\\(int &\\)" 0 "optimized"} } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/g++.dg/tree-ssa/ssa-dom.C
++++ b/src/gcc/testsuite/g++.dg/tree-ssa/ssa-dom.C
+@@ -100,5 +100,4 @@ gimple_return_set_retval (gimple gs, tree retval)
+   gimple_set_op (gs, 0, retval);
+ }
+ /* { dg-final { scan-tree-dump-times "gss_for_code_.10." 1 "dom1"} } */
+-/* { dg-final { cleanup-tree-dump "dom1" } } */
+ 
+--- a/src/gcc/testsuite/g++.dg/tree-ssa/ssa-sra-1.C
++++ b/src/gcc/testsuite/g++.dg/tree-ssa/ssa-sra-1.C
+@@ -58,4 +58,3 @@ void temp()
+ /* We should have removed the casts from pointers to references and caused SRA to happen.  */
+ 
+ /* { dg-final { scan-tree-dump-times "link_error" 0 "optimized"} } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/g++.dg/tree-ssa/ssa-sra-2.C
++++ b/src/gcc/testsuite/g++.dg/tree-ssa/ssa-sra-2.C
+@@ -49,4 +49,3 @@ void test()
+ 
+ /* We should have removed the casts from pointers to references and caused SRA to happen.  */
+ /* { dg-final { scan-tree-dump-times "link_error" 0 "optimized"} } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/g++.dg/tree-ssa/ssa-store-ccp-1.C
++++ b/src/gcc/testsuite/g++.dg/tree-ssa/ssa-store-ccp-1.C
+@@ -16,4 +16,3 @@ int f(void)
+ /* There should be a reference to conststaticvariable since it may
+    be overriden at link time.  */
+ /* { dg-final { scan-tree-dump-times "conststaticvariable" 1 "optimized"} } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/g++.dg/tree-ssa/stabilize1.C
++++ b/src/gcc/testsuite/g++.dg/tree-ssa/stabilize1.C
+@@ -1,7 +1,6 @@
+ // PR c++/53356
+ // { dg-options "-fdump-tree-gimple" }
+ // { dg-final { scan-tree-dump-not "= 0" "gimple" } }
+-// { dg-final { cleanup-tree-dump "gimple" } }
+ 
+ class A {};
+ 
+--- a/src/gcc/testsuite/g++.dg/ubsan/null-4.C
++++ b/src/gcc/testsuite/g++.dg/ubsan/null-4.C
+@@ -17,4 +17,3 @@ main (void)
+ 
+ // { dg-output "reference binding to null pointer of type 'int'(\n|\r\n|\r)" }
+ // { dg-final { scan-tree-dump-times "Optimizing" 4 "sanopt"} }
+-// { dg-final { cleanup-tree-dump "sanopt" } }
+--- a/src/gcc/testsuite/g++.dg/ubsan/null-5.C
++++ b/src/gcc/testsuite/g++.dg/ubsan/null-5.C
+@@ -16,4 +16,3 @@ main (void)
+ }
+ 
+ // { dg-final { scan-tree-dump-times "Optimizing" 4 "sanopt"} }
+-// { dg-final { cleanup-tree-dump "sanopt" } }
+--- a/src/gcc/testsuite/g++.dg/ubsan/vptr-6.C
++++ b/src/gcc/testsuite/g++.dg/ubsan/vptr-6.C
+@@ -29,4 +29,3 @@ f4 (S &p, S &q)
+ }
+ 
+ // { dg-final { scan-tree-dump-times "__ubsan_handle_dynamic_type_cache_miss" 5 "optimized" } }
+-// { dg-final { cleanup-tree-dump "optimized" } }
+--- a/src/gcc/testsuite/g++.dg/ubsan/vptr-7.C
++++ b/src/gcc/testsuite/g++.dg/ubsan/vptr-7.C
+@@ -23,4 +23,3 @@ f3 (S *p)
+ }
+ 
+ // { dg-final { scan-tree-dump-times "__ubsan_handle_dynamic_type_cache_miss" 0 "optimized" } }
+-// { dg-final { cleanup-tree-dump "optimized" } }
+--- a/src/gcc/testsuite/g++.dg/vect/param-max-aliased-pr26197.cc
++++ b/src/gcc/testsuite/g++.dg/vect/param-max-aliased-pr26197.cc
+@@ -21,4 +21,3 @@ void bar()
+   g(&b);
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/g++.dg/vect/pr19951.cc
++++ b/src/gcc/testsuite/g++.dg/vect/pr19951.cc
+@@ -16,4 +16,3 @@ void bar()
+         foo();
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/g++.dg/vect/pr21218.cc
++++ b/src/gcc/testsuite/g++.dg/vect/pr21218.cc
+@@ -14,5 +14,4 @@ void bar(B& b)
+         b.d[i] = b.foo(i);
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/g++.dg/vect/pr21734_1.cc
++++ b/src/gcc/testsuite/g++.dg/vect/pr21734_1.cc
+@@ -17,4 +17,3 @@ void foo(B &b)
+     b[i] = 0;
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/g++.dg/vect/pr21734_2.cc
++++ b/src/gcc/testsuite/g++.dg/vect/pr21734_2.cc
+@@ -13,4 +13,3 @@ void foo(A a1, A &a2)
+     a2.a[i]=0;
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/g++.dg/vect/pr22543.cc
++++ b/src/gcc/testsuite/g++.dg/vect/pr22543.cc
+@@ -35,4 +35,3 @@ C::C()
+     int j = B().foo();
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/g++.dg/vect/pr33426-ivdep-2.cc
++++ b/src/gcc/testsuite/g++.dg/vect/pr33426-ivdep-2.cc
+@@ -30,9 +30,6 @@ void bar(int n, int *a, int *b, int *c) {
+ 
+ /* { dg-message "loop vectorized" "" { target *-*-* } 0 } */
+ /* { dg-bogus " version\[^\n\r]* alias" "" { target *-*-* } 0 } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+ /* { dg-final { scan-tree-dump-times "ANNOTATE_EXPR " 2 "original" } } */
+-/* { dg-final { cleanup-tree-dump "original" } } */
+ /* { dg-final { scan-tree-dump-times "ANNOTATE " 2 "gimple" } } */
+-/* { dg-final { cleanup-tree-dump "gimple" } } */
+--- a/src/gcc/testsuite/g++.dg/vect/pr33426-ivdep-3.cc
++++ b/src/gcc/testsuite/g++.dg/vect/pr33426-ivdep-3.cc
+@@ -17,9 +17,6 @@ void foo(int *a) {
+ 
+ /* { dg-message "loop vectorized" "" { target *-*-* } 0 } */
+ /* { dg-bogus " version\[^\n\r]* alias" "" { target *-*-* } 0 } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+ /* { dg-final { scan-tree-dump-times "ANNOTATE_EXPR " 1 "original" } } */
+-/* { dg-final { cleanup-tree-dump "original" } } */
+ /* { dg-final { scan-tree-dump-times "ANNOTATE " 1 "gimple" } } */
+-/* { dg-final { cleanup-tree-dump "gimple" } } */
+--- a/src/gcc/testsuite/g++.dg/vect/pr33426-ivdep-4.cc
++++ b/src/gcc/testsuite/g++.dg/vect/pr33426-ivdep-4.cc
+@@ -22,9 +22,6 @@ void foo(std::vector<int> *ar, int *b) {
+ 
+ /* { dg-message "loop vectorized" "" { target *-*-* } 0 } */
+ /* FIXME:     dg-bogus " version\[^\n\r]* alias" "" { target *-*-* } 0  */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+ /* { dg-final { scan-tree-dump-times "ANNOTATE_EXPR " 1 "original" } } */
+-/* { dg-final { cleanup-tree-dump "original" } } */
+ /* { dg-final { scan-tree-dump-times "ANNOTATE " 1 "gimple" } } */
+-/* { dg-final { cleanup-tree-dump "gimple" } } */
+--- a/src/gcc/testsuite/g++.dg/vect/pr33426-ivdep.cc
++++ b/src/gcc/testsuite/g++.dg/vect/pr33426-ivdep.cc
+@@ -15,4 +15,3 @@ void foo(int n, int *a, int *b, int *c, int *d, int *e) {
+ 
+ /* { dg-message "loop vectorized" "" { target *-*-* } 0 } */
+ /* { dg-bogus " version\[^\n\r]* alias" "" { target *-*-* } 0 } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/g++.dg/vect/pr33834_1.cc
++++ b/src/gcc/testsuite/g++.dg/vect/pr33834_1.cc
+@@ -47,4 +47,3 @@ internals::compute_s (void)
+ {
+   bend.compute_s ();
+ }
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/g++.dg/vect/pr33834_2.cc
++++ b/src/gcc/testsuite/g++.dg/vect/pr33834_2.cc
+@@ -29,4 +29,3 @@ LoadPAT (char *filename)
+   }
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/g++.dg/vect/pr33835.cc
++++ b/src/gcc/testsuite/g++.dg/vect/pr33835.cc
+@@ -47,4 +47,3 @@ internals::compute_s (void)
+   bend.compute_s ();
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/g++.dg/vect/pr33860.cc
++++ b/src/gcc/testsuite/g++.dg/vect/pr33860.cc
+@@ -22,4 +22,3 @@ Matrix Matrix::operator* (const Matrix matrix) const
+   return ret;
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/g++.dg/vect/pr33860a.cc
++++ b/src/gcc/testsuite/g++.dg/vect/pr33860a.cc
+@@ -24,4 +24,3 @@ Matrix Matrix::operator* (const Matrix matrix) const
+   return ret;
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/g++.dg/vect/pr36648.cc
++++ b/src/gcc/testsuite/g++.dg/vect/pr36648.cc
+@@ -19,6 +19,5 @@ int main() { }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { !  vect_no_align } } } } */
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" { target { ! vect_no_align } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+ 
+--- a/src/gcc/testsuite/g++.dg/vect/pr37143.C
++++ b/src/gcc/testsuite/g++.dg/vect/pr37143.C
+@@ -18,4 +18,3 @@ f(int NumberOfSideSets, int *ssNumDFperSide, float *ssDF)
+     newssDF[nextDF++] = ssDF[i];
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/g++.dg/vect/pr37174.cc
++++ b/src/gcc/testsuite/g++.dg/vect/pr37174.cc
+@@ -19,5 +19,4 @@ Bar::Bar() {
+         }
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/g++.dg/vect/pr43771.cc
++++ b/src/gcc/testsuite/g++.dg/vect/pr43771.cc
+@@ -11,4 +11,3 @@ void KWayNodeRefine__(int nparts, int *gpwgts, int *badminpwgt, int
+    }
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/g++.dg/vect/pr44861.cc
++++ b/src/gcc/testsuite/g++.dg/vect/pr44861.cc
+@@ -31,4 +31,3 @@ void g() {
+     new Bar(*foo, foo);
+ }
+ 
+-// { dg-final { cleanup-tree-dump "vect" } }
+--- a/src/gcc/testsuite/g++.dg/vect/pr45470-a.cc
++++ b/src/gcc/testsuite/g++.dg/vect/pr45470-a.cc
+@@ -21,4 +21,3 @@ B::B ()
+ {
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/g++.dg/vect/pr45470-b.cc
++++ b/src/gcc/testsuite/g++.dg/vect/pr45470-b.cc
+@@ -49,4 +49,3 @@ struct LoadGraph
+ LoadGraph::LoadGraph (int)
+ {}
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/g++.dg/vect/pr50698.cc
++++ b/src/gcc/testsuite/g++.dg/vect/pr50698.cc
+@@ -24,4 +24,3 @@ void sumS() {
+ }
+ 
+ // { dg-final { scan-tree-dump-not "run-time aliasing" "vect" } }
+-// { dg-final { cleanup-tree-dump "vect" } }
+--- a/src/gcc/testsuite/g++.dg/vect/pr51485.cc
++++ b/src/gcc/testsuite/g++.dg/vect/pr51485.cc
+@@ -11,4 +11,3 @@ foo (unsigned int x, double *y, A *z)
+     y[i] = bar (z[i]);
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/g++.dg/vect/pr58513.cc
++++ b/src/gcc/testsuite/g++.dg/vect/pr58513.cc
+@@ -10,4 +10,3 @@ void foo(int* a)
+ }
+ 
+ // { dg-final { scan-tree-dump "vectorized 1 loops" "vect" } }
+-// { dg-final { cleanup-tree-dump "vect" } }
+--- a/src/gcc/testsuite/g++.dg/vect/pr60000.cc
++++ b/src/gcc/testsuite/g++.dg/vect/pr60000.cc
+@@ -10,4 +10,3 @@ void foo (bool* a, int* b)
+     }
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/g++.dg/vect/pr60023.cc
++++ b/src/gcc/testsuite/g++.dg/vect/pr60023.cc
+@@ -77,4 +77,3 @@ f8 (int *p, int *q)
+     p[i] = q[i] + 1;
+ }
+ 
+-// { dg-final { cleanup-tree-dump "vect" } }
+--- a/src/gcc/testsuite/g++.dg/vect/pr60559.cc
++++ b/src/gcc/testsuite/g++.dg/vect/pr60559.cc
+@@ -5,4 +5,3 @@
+ 
+ #include "pr60023.cc"
+ 
+-// { dg-final { cleanup-tree-dump "vect" } }
+--- a/src/gcc/testsuite/g++.dg/vect/pr60729.cc
++++ b/src/gcc/testsuite/g++.dg/vect/pr60729.cc
+@@ -7,4 +7,3 @@ void doSomething(int dim, double *Y, double *A)
+     Y[k] += __builtin_fabs (A[k]);
+ }
+ 
+-// { dg-final { cleanup-tree-dump "vect" } }
+--- a/src/gcc/testsuite/g++.dg/vect/pr60836.cc
++++ b/src/gcc/testsuite/g++.dg/vect/pr60836.cc
+@@ -36,4 +36,3 @@ norm ()
+   f = 0;
+ }
+ 
+-// { dg-final { cleanup-tree-dump "vect" } }
+--- a/src/gcc/testsuite/g++.dg/vect/pr64410.cc
++++ b/src/gcc/testsuite/g++.dg/vect/pr64410.cc
+@@ -50,4 +50,3 @@ main(int argc, char** argv)
+ }
+ 
+ // { dg-final { scan-tree-dump "vectorized 1 loops in function" "vect" } }
+-// { dg-final { cleanup-tree-dump "vect" } }
+--- a/src/gcc/testsuite/g++.dg/vect/slp-pr50413.cc
++++ b/src/gcc/testsuite/g++.dg/vect/slp-pr50413.cc
+@@ -161,5 +161,4 @@ void shift(unsigned char t)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "basic block vectorized" 0 "slp2" } } */
+-/* { dg-final { cleanup-tree-dump "slp2" } } */
+ 
+--- a/src/gcc/testsuite/g++.dg/vect/slp-pr50819.cc
++++ b/src/gcc/testsuite/g++.dg/vect/slp-pr50819.cc
+@@ -50,4 +50,3 @@ const & v2) {
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "basic block vectorized" 2 "slp2" } } */
+-/* { dg-final { cleanup-tree-dump "slp2" } } */
+--- a/src/gcc/testsuite/g++.dg/vect/slp-pr56812.cc
++++ b/src/gcc/testsuite/g++.dg/vect/slp-pr56812.cc
+@@ -18,4 +18,3 @@ void mydata::Set (float x)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp1" } } */
+-/* { dg-final { cleanup-tree-dump "slp1" } } */
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.c-torture/compile/pr66168.c
+@@ -0,0 +1,15 @@
++int a, b;
++
++void
++fn1 ()
++{
++  for (;;)
++    {
++      for (b = 0; b < 3; b++)
++	{
++	  char e[2];
++	  char f = e[1];
++	  a ^= f ? 1 / f : 0;
++	}
++    }
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.c-torture/execute/pr65648.c
+@@ -0,0 +1,34 @@
++/* PR target/65648 */
++
++int a = 0, *b = 0, c = 0;
++static int d = 0;
++short e = 1;
++static long long f = 0;
++long long *i = &f;
++unsigned char j = 0;
++
++__attribute__((noinline, noclone)) void
++foo (int x, int *y)
++{
++  asm volatile ("" : : "r" (x), "r" (y) : "memory");
++}
++
++__attribute__((noinline, noclone)) void
++bar (const char *x, long long y)
++{
++  asm volatile ("" : : "r" (x), "r" (&y) : "memory");
++  if (y != 0)
++    __builtin_abort ();
++}
++
++int
++main ()
++{
++  int k = 0;
++  b = &k;
++  j = (!a) - (c <= e);
++  *i = j;
++  foo (a, &k);
++  bar ("", f);
++  return 0;
++}
+--- a/src/gcc/testsuite/gcc.dg/20050811-1.c
++++ b/src/gcc/testsuite/gcc.dg/20050811-1.c
+@@ -17,4 +17,3 @@ int bar (int x)
+     return foo ();
+ }
+ 
+-// { dg-final { cleanup-rtl-dump "*" } }
+--- a/src/gcc/testsuite/gcc.dg/20050811-2.c
++++ b/src/gcc/testsuite/gcc.dg/20050811-2.c
+@@ -17,4 +17,3 @@ int bar (int x)
+     return foo ();
+ }
+ 
+-/* { dg-final { cleanup-rtl-dump "postreload*" } } */
+--- a/src/gcc/testsuite/gcc.dg/20101013-1.c
++++ b/src/gcc/testsuite/gcc.dg/20101013-1.c
+@@ -8,4 +8,3 @@ int foo(int a)
+ }
+ 
+ /* { dg-final { scan-tree-dump ">>" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/20111227-2.c
++++ b/src/gcc/testsuite/gcc.dg/20111227-2.c
+@@ -43,4 +43,3 @@ int main(void)
+   return 0;
+ }
+ /* { dg-final { scan-rtl-dump "Elimination opportunities = 3 realized = 3" "ree" } }  */
+-/* { dg-final { cleanup-rtl-dump "ree" } }  */
+--- a/src/gcc/testsuite/gcc.dg/20111227-3.c
++++ b/src/gcc/testsuite/gcc.dg/20111227-3.c
+@@ -43,4 +43,3 @@ int main(void)
+   return 0;
+ }
+ /* { dg-final { scan-rtl-dump "Elimination opportunities = 3 realized = 3" "ree" } }  */
+-/* { dg-final { cleanup-rtl-dump "ree" } }  */
+--- a/src/gcc/testsuite/gcc.dg/20141029-1.c
++++ b/src/gcc/testsuite/gcc.dg/20141029-1.c
+@@ -25,4 +25,3 @@ foo()
+     }
+ }
+ /* { dg-final { scan-rtl-dump-times "mem/v(/.)*:HI" 4 "final" } } */
+-/* { dg-final { cleanup-rtl-dump "final" } } */
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.dg/Wcxx-compat-22.c
+@@ -0,0 +1,8 @@
++/* { dg-do compile } */
++/* { dg-options "-Wc++-compat" } */
++struct A {}; /* { dg-warning "empty struct has size 0 in C" } */
++union B {}; /* { dg-warning "empty union has size 0 in C" } */
++struct C { struct D {}; int x; }; /* { dg-warning "empty struct has size 0 in C|declaration does not declare anything" } */
++struct E { union F {}; int x; }; /* { dg-warning "empty union has size 0 in C|declaration does not declare anything" } */
++union G { union H {}; int x; }; /* { dg-warning "empty union has size 0 in C|declaration does not declare anything" } */
++union I { struct J {}; int x; }; /* { dg-warning "empty struct has size 0 in C|declaration does not declare anything" } */
+--- a/src/gcc/testsuite/gcc.dg/alias-10.c
++++ b/src/gcc/testsuite/gcc.dg/alias-10.c
+@@ -29,4 +29,3 @@ void foo (bitmap head, bitmap_element *elt)
+ 
+ 
+ /* { dg-final { scan-tree-dump-times "Unswitching" 1 "unswitch"} } */
+-/* { dg-final { cleanup-tree-dump "unswitch" } } */
+--- a/src/gcc/testsuite/gcc.dg/asr_div1.c
++++ b/src/gcc/testsuite/gcc.dg/asr_div1.c
+@@ -53,4 +53,3 @@ main ()
+ 
+ /* { dg-final { scan-rtl-dump "\\(const_int 36 " "combine" { target aarch64*-*-* } } } */
+ 
+-/* { dg-final { cleanup-rtl-dump "combine" } } */
+--- a/src/gcc/testsuite/gcc.dg/atomic-op-optimize.c
++++ b/src/gcc/testsuite/gcc.dg/atomic-op-optimize.c
+@@ -2,8 +2,8 @@
+    Test that it at happens on x86 by making sure there are 2 xchg's and no
+    compare_exchange loop.  */
+ 
+-/* { dg-require-effective-target sync_int_long } */
+ /* { dg-do compile { target { i?86-*-* x86_64-*-* } } } */
++/* { dg-require-effective-target sync_int_long } */
+ /* { dg-final { scan-assembler-times "cmpxchg" 0 } } */
+ /* { dg-final { scan-assembler-times "xchg" 2 } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/attr-alloc_align-3.c
++++ b/src/gcc/testsuite/gcc.dg/attr-alloc_align-3.c
+@@ -53,4 +53,3 @@ test6 (int len, int align)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "return 0" 4 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/attr-assume_aligned-3.c
++++ b/src/gcc/testsuite/gcc.dg/attr-assume_aligned-3.c
+@@ -21,4 +21,3 @@ test2 (int len)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "return 0" 2 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/autopar/outer-1.c
++++ b/src/gcc/testsuite/gcc.dg/autopar/outer-1.c
+@@ -29,5 +29,3 @@ int main(void)
+ /* Check that outer loop is parallelized.  */
+ /* { dg-final { scan-tree-dump-times "parallelizing outer loop" 1 "parloops" } } */
+ /* { dg-final { scan-tree-dump-times "loopfn" 4 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "parloops" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/autopar/outer-2.c
++++ b/src/gcc/testsuite/gcc.dg/autopar/outer-2.c
+@@ -29,5 +29,3 @@ int main(void)
+ 
+ /* { dg-final { scan-tree-dump-times "parallelizing outer loop" 1 "parloops" } } */
+ /* { dg-final { scan-tree-dump-times "loopfn" 4 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "parloops" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/autopar/outer-3.c
++++ b/src/gcc/testsuite/gcc.dg/autopar/outer-3.c
+@@ -29,5 +29,3 @@ int main(void)
+ /* Check that outer loop is parallelized.  */
+ /* { dg-final { scan-tree-dump-times "parallelizing outer loop" 1 "parloops" } } */
+ /* { dg-final { scan-tree-dump-times "loopfn" 4 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "parloops" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/autopar/outer-4.c
++++ b/src/gcc/testsuite/gcc.dg/autopar/outer-4.c
+@@ -33,5 +33,3 @@ int main(void)
+ 
+ /* { dg-final { scan-tree-dump-times "parallelizing outer loop" 1 "parloops" { xfail *-*-* } } } */
+ /* { dg-final { scan-tree-dump-times "loopfn" 4 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "parloops" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/autopar/outer-5.c
++++ b/src/gcc/testsuite/gcc.dg/autopar/outer-5.c
+@@ -46,5 +46,3 @@ int main(void)
+ 
+ /* { dg-final { scan-tree-dump-times "parallelizing outer loop" 1 "parloops" { xfail *-*-* } } } */
+ /* { dg-final { scan-tree-dump-times "loopfn" 4 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "parloops" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/autopar/outer-6.c
++++ b/src/gcc/testsuite/gcc.dg/autopar/outer-6.c
+@@ -47,5 +47,3 @@ int main(void)
+ /* { dg-final { scan-tree-dump-times "parallelizing outer loop" 1 "parloops" } } */
+ /* { dg-final { scan-tree-dump-times "parallelizing inner loop" 0 "parloops" } } */
+ /* { dg-final { scan-tree-dump-times "loopfn" 4 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "parloops" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/autopar/parallelization-1.c
++++ b/src/gcc/testsuite/gcc.dg/autopar/parallelization-1.c
+@@ -29,5 +29,3 @@ int main(void)
+ 
+ /* { dg-final { scan-tree-dump-times "SUCCESS: may be parallelized" 1 "parloops" } } */
+ /* { dg-final { scan-tree-dump-times "loopfn" 4 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "parloops" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/autopar/pr39500-1.c
++++ b/src/gcc/testsuite/gcc.dg/autopar/pr39500-1.c
+@@ -25,4 +25,3 @@ int main (void)
+ /* Check that the first loop in parloop got parallelized.  */
+ 
+ /* { dg-final { scan-tree-dump-times "SUCCESS: may be parallelized" 1 "parloops" } } */
+-/* { dg-final { cleanup-tree-dump "parloops" } } */
+--- a/src/gcc/testsuite/gcc.dg/autopar/pr39500-2.c
++++ b/src/gcc/testsuite/gcc.dg/autopar/pr39500-2.c
+@@ -17,4 +17,3 @@ int main (void)
+ /* This loop cannot be parallelized due to a dependence.  */
+ 
+ /* { dg-final { scan-tree-dump-times "SUCCESS: may be parallelized" 0 "parloops" } } */
+-/* { dg-final { cleanup-tree-dump "parloops" } } */
+--- a/src/gcc/testsuite/gcc.dg/autopar/pr46194.c
++++ b/src/gcc/testsuite/gcc.dg/autopar/pr46194.c
+@@ -21,4 +21,3 @@ int foo (void)
+ /* This loop cannot be parallelized due to a dependence.  */
+ 
+ /* { dg-final { scan-tree-dump-times "SUCCESS: may be parallelized" 0 "parloops" } } */
+-/* { dg-final { cleanup-tree-dump "parloops" } } */
+--- a/src/gcc/testsuite/gcc.dg/autopar/pr49580.c
++++ b/src/gcc/testsuite/gcc.dg/autopar/pr49580.c
+@@ -34,5 +34,4 @@ int main (void)
+ 
+ 
+ /* { dg-final { scan-tree-dump-times "SUCCESS: may be parallelized" 1 "parloops" } } */
+-/* { dg-final { cleanup-tree-dump "parloops" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/autopar/pr49960-1.c
++++ b/src/gcc/testsuite/gcc.dg/autopar/pr49960-1.c
+@@ -32,5 +32,3 @@ int main()
+ 
+ /* { dg-final { scan-tree-dump-times "SUCCESS: may be parallelized" 0 "parloops" } } */
+ /* { dg-final { scan-tree-dump-times "loopfn" 0 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "parloops" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/autopar/pr49960.c
++++ b/src/gcc/testsuite/gcc.dg/autopar/pr49960.c
+@@ -52,5 +52,3 @@ void main ()
+ 
+ /* { dg-final { scan-tree-dump-times "SUCCESS: may be parallelized" 0 "parloops" } } */
+ /* { dg-final { scan-tree-dump-times "loopfn" 0 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "parloops" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/autopar/reduc-1.c
++++ b/src/gcc/testsuite/gcc.dg/autopar/reduc-1.c
+@@ -68,6 +68,4 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "Detected reduction" 3 "parloops" } } */
+ /* { dg-final { scan-tree-dump-times "SUCCESS: may be parallelized" 4 "parloops" } } */
+-/* { dg-final { cleanup-tree-dump "parloops" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/autopar/reduc-1char.c
++++ b/src/gcc/testsuite/gcc.dg/autopar/reduc-1char.c
+@@ -62,6 +62,4 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "Detected reduction" 3 "parloops" } } */
+ /* { dg-final { scan-tree-dump-times "SUCCESS: may be parallelized" 4 "parloops" } } */
+-/* { dg-final { cleanup-tree-dump "parloops" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/autopar/reduc-1short.c
++++ b/src/gcc/testsuite/gcc.dg/autopar/reduc-1short.c
+@@ -61,6 +61,4 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "Detected reduction" 3 "parloops" } } */
+ /* { dg-final { scan-tree-dump-times "SUCCESS: may be parallelized" 4 "parloops" } } */
+-/* { dg-final { cleanup-tree-dump "parloops" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/autopar/reduc-2.c
++++ b/src/gcc/testsuite/gcc.dg/autopar/reduc-2.c
+@@ -65,6 +65,4 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "Detected reduction" 3 "parloops" } } */
+ /* { dg-final { scan-tree-dump-times "SUCCESS: may be parallelized" 4 "parloops" } } */
+-/* { dg-final { cleanup-tree-dump "parloops" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/autopar/reduc-2char.c
++++ b/src/gcc/testsuite/gcc.dg/autopar/reduc-2char.c
+@@ -62,7 +62,5 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "Detected reduction" 2 "parloops" } } */
+ /* { dg-final { scan-tree-dump-times "SUCCESS: may be parallelized" 3 "parloops" } } */
+-/* { dg-final { cleanup-tree-dump "parloops" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+ 
+ 
+--- a/src/gcc/testsuite/gcc.dg/autopar/reduc-2short.c
++++ b/src/gcc/testsuite/gcc.dg/autopar/reduc-2short.c
+@@ -61,6 +61,4 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "Detected reduction" 2 "parloops" } } */
+ /* { dg-final { scan-tree-dump-times "SUCCESS: may be parallelized" 3 "parloops" } } */
+-/* { dg-final { cleanup-tree-dump "parloops" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/autopar/reduc-3.c
++++ b/src/gcc/testsuite/gcc.dg/autopar/reduc-3.c
+@@ -52,6 +52,4 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "Detected reduction" 1 "parloops" } } */
+ /* { dg-final { scan-tree-dump-times "SUCCESS: may be parallelized" 2 "parloops" } } */
+-/* { dg-final { cleanup-tree-dump "parloops" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/autopar/reduc-6.c
++++ b/src/gcc/testsuite/gcc.dg/autopar/reduc-6.c
+@@ -59,5 +59,3 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "Detected reduction" 0 "parloops" } } */
+ /* { dg-final { scan-tree-dump-times "SUCCESS: may be parallelized" 1 "parloops" } } */
+ /* { dg-final { scan-tree-dump-times "FAILED: it is not a part of reduction" 3 "parloops" } } */
+-/* { dg-final { cleanup-tree-dump "parloops" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/autopar/reduc-7.c
++++ b/src/gcc/testsuite/gcc.dg/autopar/reduc-7.c
+@@ -86,6 +86,4 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "Detected reduction" 2 "parloops" } } */
+ /* { dg-final { scan-tree-dump-times "SUCCESS: may be parallelized" 3 "parloops" } } */
+-/* { dg-final { cleanup-tree-dump "parloops" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/autopar/reduc-8.c
++++ b/src/gcc/testsuite/gcc.dg/autopar/reduc-8.c
+@@ -86,5 +86,3 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "Detected reduction" 2 "parloops" } } */
+ /* { dg-final { scan-tree-dump-times "SUCCESS: may be parallelized" 3 "parloops" } } */
+-/* { dg-final { cleanup-tree-dump "parloops" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/autopar/reduc-9.c
++++ b/src/gcc/testsuite/gcc.dg/autopar/reduc-9.c
+@@ -86,5 +86,3 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "Detected reduction" 2 "parloops" } } */
+ /* { dg-final { scan-tree-dump-times "SUCCESS: may be parallelized" 3 "parloops" } } */
+-/* { dg-final { cleanup-tree-dump "parloops" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/binop-notand1.c
++++ b/src/gcc/testsuite/gcc.dg/binop-notand1.c
+@@ -8,4 +8,3 @@ foo (int a, int b)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "return 0" 1 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/binop-notand1a.c
++++ b/src/gcc/testsuite/gcc.dg/binop-notand1a.c
+@@ -10,4 +10,3 @@ foo (char a, unsigned short b)
+ /* As long as comparisons aren't boolified and casts from boolean-types
+    aren't preserved, the folding of  X & !X to zero fails.  */
+ /* { dg-final { scan-tree-dump-times "return 0" 1 "optimized" { xfail *-*-* } } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/binop-notand2.c
++++ b/src/gcc/testsuite/gcc.dg/binop-notand2.c
+@@ -8,4 +8,3 @@ foo (int a)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "return 0" 1 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/binop-notand2a.c
++++ b/src/gcc/testsuite/gcc.dg/binop-notand2a.c
+@@ -8,4 +8,3 @@ foo (int a)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "return 0" 1 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/binop-notand3.c
++++ b/src/gcc/testsuite/gcc.dg/binop-notand3.c
+@@ -8,4 +8,3 @@ foo (int a)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "return 0" 1 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/binop-notand3a.c
++++ b/src/gcc/testsuite/gcc.dg/binop-notand3a.c
+@@ -8,4 +8,3 @@ foo (short a)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "return 0" 1 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/binop-notand4.c
++++ b/src/gcc/testsuite/gcc.dg/binop-notand4.c
+@@ -8,4 +8,3 @@ foo (int a, int b)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "return 0" 1 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/binop-notand4a.c
++++ b/src/gcc/testsuite/gcc.dg/binop-notand4a.c
+@@ -10,4 +10,3 @@ foo (unsigned char a, _Bool b)
+ /* As long as comparisons aren't boolified and casts from boolean-types
+    aren't preserved, the folding of  X & !X to zero fails.  */
+ /* { dg-final { scan-tree-dump-times "return 0" 1 "optimized" { xfail *-*-* } } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/binop-notand5.c
++++ b/src/gcc/testsuite/gcc.dg/binop-notand5.c
+@@ -8,4 +8,3 @@ foo (int a, int b)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "return 0" 1 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/binop-notand5a.c
++++ b/src/gcc/testsuite/gcc.dg/binop-notand5a.c
+@@ -8,4 +8,3 @@ foo (long a, unsigned long b)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "return 0" 1 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/binop-notand6.c
++++ b/src/gcc/testsuite/gcc.dg/binop-notand6.c
+@@ -8,4 +8,3 @@ foo (int a, int b)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "return 0" 1 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/binop-notand6a.c
++++ b/src/gcc/testsuite/gcc.dg/binop-notand6a.c
+@@ -8,4 +8,3 @@ foo (unsigned long a, long b)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "return 0" 1 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/binop-notor1.c
++++ b/src/gcc/testsuite/gcc.dg/binop-notor1.c
+@@ -8,4 +8,3 @@ foo (_Bool a, _Bool b)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "return 1" 1 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/binop-notor2.c
++++ b/src/gcc/testsuite/gcc.dg/binop-notor2.c
+@@ -8,4 +8,3 @@ foo (_Bool a, _Bool b)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "return 1" 1 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/binop-notxor1.c
++++ b/src/gcc/testsuite/gcc.dg/binop-notxor1.c
+@@ -8,4 +8,3 @@ foo (_Bool a, _Bool b)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "return 1" 1 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/binop-notxor2.c
++++ b/src/gcc/testsuite/gcc.dg/binop-notxor2.c
+@@ -8,4 +8,3 @@ foo (_Bool a, _Bool b)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "return 1" 1 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/binop-xor1.c
++++ b/src/gcc/testsuite/gcc.dg/binop-xor1.c
+@@ -8,4 +8,3 @@ foo (int a, int b, int c)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "\\\^" 1 "optimized" { xfail logical_op_short_circuit } } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/binop-xor2.c
++++ b/src/gcc/testsuite/gcc.dg/binop-xor2.c
+@@ -11,4 +11,3 @@ foo (int a, int b)
+    it in the real test.  */
+ /* { dg-final { scan-tree-dump-times "<bb\[^>\]*>" 1 "optimized" } } */
+ /* { dg-final { scan-tree-dump-times "\\\^" 1 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/binop-xor3.c
++++ b/src/gcc/testsuite/gcc.dg/binop-xor3.c
+@@ -8,4 +8,3 @@ foo (int a, int b)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "\\\^" 1 "optimized" { target i?86-*-* x86_64-*-* } } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/binop-xor4.c
++++ b/src/gcc/testsuite/gcc.dg/binop-xor4.c
+@@ -11,4 +11,3 @@ foo (int a, int b, int c)
+    it in the real test.  */
+ /* { dg-final { scan-tree-dump-times "<bb\[^>\]*>" 1 "optimized" } } */
+ /* { dg-final { scan-tree-dump-times "\\\^" 1 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/binop-xor5.c
++++ b/src/gcc/testsuite/gcc.dg/binop-xor5.c
+@@ -12,4 +12,3 @@ foo (int a, int b, int c)
+ /* { dg-final { scan-tree-dump-times "<bb\[^>\]*>" 1 "optimized" } } */
+ /* { dg-final { scan-tree-dump-times "\\\^" 1 "optimized" } } */
+ /* { dg-final { scan-tree-dump-times "\&" 1 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/builtin-arith-overflow-1.c
++++ b/src/gcc/testsuite/gcc.dg/builtin-arith-overflow-1.c
+@@ -129,4 +129,3 @@ main ()
+ /* { dg-final { scan-tree-dump-not "ADD_OVERFLOW" "optimized" } } */
+ /* { dg-final { scan-tree-dump-not "SUB_OVERFLOW" "optimized" } } */
+ /* { dg-final { scan-tree-dump-not "MUL_OVERFLOW" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/builtin-arith-overflow-2.c
++++ b/src/gcc/testsuite/gcc.dg/builtin-arith-overflow-2.c
+@@ -107,4 +107,3 @@ main ()
+ /* { dg-final { scan-tree-dump-times "ADD_OVERFLOW" 2 "optimized" } } */
+ /* { dg-final { scan-tree-dump-times "SUB_OVERFLOW" 0 "optimized" } } */
+ /* { dg-final { scan-tree-dump-times "MUL_OVERFLOW" 3 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/builtin-assume-aligned-1.c
++++ b/src/gcc/testsuite/gcc.dg/builtin-assume-aligned-1.c
+@@ -38,4 +38,3 @@ test2 (double *out1, double *out2, double *out3, double *in1,
+ }
+ 
+ /* { dg-final { scan-tree-dump-not "__builtin_assume_aligned" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/builtin-bswap-6.c
++++ b/src/gcc/testsuite/gcc.dg/builtin-bswap-6.c
+@@ -39,4 +39,3 @@ int foo4 (uint32_t a, uint32_t b)
+ }
+ 
+ /* { dg-final { scan-rtl-dump-not "bswapsi" "combine" } } */
+-/* { dg-final { cleanup-rtl-dump "combine" } } */
+--- a/src/gcc/testsuite/gcc.dg/builtin-bswap-6a.c
++++ b/src/gcc/testsuite/gcc.dg/builtin-bswap-6a.c
+@@ -41,4 +41,3 @@ int foo4 (uint32_t a, uint32_t b)
+ }
+ 
+ /* { dg-final { scan-rtl-dump-not "bswapsi" "combine" } } */
+-/* { dg-final { cleanup-rtl-dump "combine" } } */
+--- a/src/gcc/testsuite/gcc.dg/builtin-bswap-7.c
++++ b/src/gcc/testsuite/gcc.dg/builtin-bswap-7.c
+@@ -40,4 +40,3 @@ int foo4 (uint64_t a, uint64_t b)
+ }
+ 
+ /* { dg-final { scan-rtl-dump-not "bswapdi" "combine" } } */
+-/* { dg-final { cleanup-rtl-dump "combine" } } */
+--- a/src/gcc/testsuite/gcc.dg/builtin-bswap-7a.c
++++ b/src/gcc/testsuite/gcc.dg/builtin-bswap-7a.c
+@@ -41,4 +41,3 @@ int foo4 (uint64_t a, uint64_t b)
+ }
+ 
+ /* { dg-final { scan-rtl-dump-not "bswapdi" "combine" } } */
+-/* { dg-final { cleanup-rtl-dump "combine" } } */
+--- a/src/gcc/testsuite/gcc.dg/builtin-bswap-8.c
++++ b/src/gcc/testsuite/gcc.dg/builtin-bswap-8.c
+@@ -43,4 +43,3 @@ uint32_t foo7 (uint32_t a, uint32_t b)
+ }
+ 
+ /* { dg-final { scan-rtl-dump-not "bswapsi" "combine" } } */
+-/* { dg-final { cleanup-rtl-dump "combine" } } */
+--- a/src/gcc/testsuite/gcc.dg/builtin-bswap-9.c
++++ b/src/gcc/testsuite/gcc.dg/builtin-bswap-9.c
+@@ -43,4 +43,3 @@ uint64_t foo7 (uint64_t a, uint64_t b)
+ }
+ 
+ /* { dg-final { scan-rtl-dump-not "bswapdi" "combine" } } */
+-/* { dg-final { cleanup-rtl-dump "combine" } } */
+--- a/src/gcc/testsuite/gcc.dg/builtin-object-size-10.c
++++ b/src/gcc/testsuite/gcc.dg/builtin-object-size-10.c
+@@ -24,4 +24,3 @@ foo(char *x)
+ 
+ /* { dg-final { scan-tree-dump "maximum object size 21" "objsz1" } } */
+ /* { dg-final { scan-tree-dump "maximum subobject size 16" "objsz1" } } */
+-/* { dg-final { cleanup-tree-dump "objsz1" } } */
+--- a/src/gcc/testsuite/gcc.dg/builtin-unreachable-2.c
++++ b/src/gcc/testsuite/gcc.dg/builtin-unreachable-2.c
+@@ -16,5 +16,3 @@ f (int i)
+ }
+ /* { dg-final { scan-tree-dump-not "foo" "optimized" } } */
+ /* { dg-final { scan-rtl-dump-not "\\(if_then_else" "cse1" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+-/* { dg-final { cleanup-rtl-dump "cse1" } } */
+--- a/src/gcc/testsuite/gcc.dg/builtin-unreachable-5.c
++++ b/src/gcc/testsuite/gcc.dg/builtin-unreachable-5.c
+@@ -20,4 +20,3 @@ foo (int a)
+ /* { dg-final { scan-tree-dump-times "goto" 0 "fab1" } } */
+ /* { dg-final { scan-tree-dump-times "L1:" 0 "fab1" } } */
+ /* { dg-final { scan-tree-dump-times "__builtin_unreachable" 0 "fab1" } } */
+-/* { dg-final { cleanup-tree-dump "fab1" } } */
+--- a/src/gcc/testsuite/gcc.dg/builtin-unreachable-6.c
++++ b/src/gcc/testsuite/gcc.dg/builtin-unreachable-6.c
+@@ -18,4 +18,3 @@ lab2:
+ 
+ /* { dg-final { scan-tree-dump-times "lab:" 1 "fab1" } } */
+ /* { dg-final { scan-tree-dump-times "__builtin_unreachable" 1 "fab1" } } */
+-/* { dg-final { cleanup-tree-dump "fab1" } } */
+--- a/src/gcc/testsuite/gcc.dg/builtins-20.c
++++ b/src/gcc/testsuite/gcc.dg/builtins-20.c
+@@ -122,7 +122,7 @@ void test2(double x, double y)
+   if (cos((y*=3, -x)) != cos((y*=3,x)))
+     link_error ();
+ 
+-  if (cos((y*=2, -fabs(tan(x/-y)))) != cos((y*=2,tan(x/y))))
++  if (cos(-fabs(tan(x/-y))) != cos(tan(x/y)))
+     link_error ();
+ 
+   if (cos(copysign(x,y)) != cos(x))
+@@ -350,7 +350,7 @@ void test2f(float x, float y)
+   if (cosf((y*=3, -x)) != cosf((y*=3,x)))
+     link_error ();
+ 
+-  if (cosf((y*=2, -fabsf(tanf(x/-y)))) != cosf((y*=2,tanf(x/y))))
++  if (cosf(-fabsf(tanf(x/-y))) != cosf(tanf(x/y)))
+     link_error ();
+ 
+   if (cosf(copysignf(x,y)) != cosf(x))
+@@ -577,7 +577,7 @@ void test2l(long double x, long double y)
+   if (cosl((y*=3, -x)) != cosl((y*=3,x)))
+     link_error ();
+ 
+-  if (cosl((y*=2, -fabsl(tanl(x/-y)))) != cosl((y*=2,tanl(x/y))))
++  if (cosl(-fabsl(tanl(x/-y))) != cosl(tanl(x/y)))
+     link_error ();
+ 
+   if (cosl(copysignl(x,y)) != cosl(x))
+--- a/src/gcc/testsuite/gcc.dg/builtins-43.c
++++ b/src/gcc/testsuite/gcc.dg/builtins-43.c
+@@ -52,8 +52,6 @@ main ()
+ 
+ /* Check that all instances of __builtin_isnan were folded.  */
+ /* { dg-final { scan-tree-dump-times "isnan" 0 "gimple" } } */
+-/* { dg-final { cleanup-tree-dump "gimple" } } */
+ 
+ /* Check that all instances of link_error were subject to DCE.  */
+ /* { dg-final { scan-tree-dump-times "link_error" 0 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/builtins-44.c
++++ b/src/gcc/testsuite/gcc.dg/builtins-44.c
+@@ -55,4 +55,3 @@ main ()
+ 
+ /* Check that all instances of link_error were subject to DCE.  */
+ /* { dg-final { scan-tree-dump-times "link_error" 0 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/builtins-45.c
++++ b/src/gcc/testsuite/gcc.dg/builtins-45.c
+@@ -54,4 +54,3 @@ main ()
+ 
+ /* Check that all instances of link_error were subject to DCE.  */
+ /* { dg-final { scan-tree-dump-times "link_error" 0 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/builtins-47.c
++++ b/src/gcc/testsuite/gcc.dg/builtins-47.c
+@@ -17,4 +17,3 @@ int main ()
+ 
+ /* { dg-final { scan-tree-dump-times "sqrt" 0 "gimple" } } */
+ /* { dg-final { scan-tree-dump-times "pow" 0 "gimple" } } */
+-/* { dg-final { cleanup-tree-dump "gimple" } } */
+--- a/src/gcc/testsuite/gcc.dg/builtins-59.c
++++ b/src/gcc/testsuite/gcc.dg/builtins-59.c
+@@ -12,4 +12,3 @@ double test (double x)
+ 
+ /* { dg-final { scan-tree-dump "__builtin_cexpi" "gimple" } } */
+ /* { dg-final { scan-tree-dump-not "sincos" "gimple" } } */
+-/* { dg-final { cleanup-tree-dump "gimple" } } */
+--- a/src/gcc/testsuite/gcc.dg/builtins-60.c
++++ b/src/gcc/testsuite/gcc.dg/builtins-60.c
+@@ -13,4 +13,3 @@ double test2 (double x)
+ 
+ /* { dg-final { scan-tree-dump "cos" "gimple" } } */
+ /* { dg-final { scan-tree-dump "sin" "gimple" } } */
+-/* { dg-final { cleanup-tree-dump "gimple" } } */
+--- a/src/gcc/testsuite/gcc.dg/builtins-61.c
++++ b/src/gcc/testsuite/gcc.dg/builtins-61.c
+@@ -30,4 +30,3 @@ double test4(double x, double y)
+ /* { dg-final { scan-tree-dump "sin" "optimized" } } */
+ /* { dg-final { scan-tree-dump "cos" "optimized" } } */
+ /* { dg-final { scan-tree-dump "return 0.0" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/builtins-62.c
++++ b/src/gcc/testsuite/gcc.dg/builtins-62.c
+@@ -38,4 +38,3 @@ double test4 (double x)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "cexpi" 3 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/cdce1.c
++++ b/src/gcc/testsuite/gcc.dg/cdce1.c
+@@ -1,8 +1,7 @@
+ /* { dg-do  run  } */
+ /* { dg-options "-O2 -fmath-errno -fdump-tree-cdce-details  -lm" } */
+ /* { dg-require-effective-target int32plus } */
+-/* { dg-final { scan-tree-dump  "cdce1.c:17: note: function call is shrink-wrapped into error conditions\."  "cdce" } } */
+-/* { dg-final { cleanup-tree-dump "cdce" } } */
++/* { dg-final { scan-tree-dump  "cdce1.c:16: note: function call is shrink-wrapped into error conditions\."  "cdce" } } */
+ /* { dg-require-effective-target large_double } */
+ 
+ #include <stdlib.h>
+--- a/src/gcc/testsuite/gcc.dg/cdce2.c
++++ b/src/gcc/testsuite/gcc.dg/cdce2.c
+@@ -1,8 +1,7 @@
+ /* { dg-do  run  } */
+ /* { dg-skip-if "doubles are floats" { "avr-*-*" } { "*" } { "" } } */
+ /* { dg-options "-O2 -fmath-errno -fdump-tree-cdce-details  -lm" } */
+-/* { dg-final { scan-tree-dump  "cdce2.c:16: note: function call is shrink-wrapped into error conditions\." "cdce" } }*/
+-/* { dg-final { cleanup-tree-dump "cdce" } } */
++/* { dg-final { scan-tree-dump  "cdce2.c:15: note: function call is shrink-wrapped into error conditions\." "cdce" } } */
+  
+ #include <stdlib.h>
+ #include <math.h>
+--- a/src/gcc/testsuite/gcc.dg/combine-clobber.c
++++ b/src/gcc/testsuite/gcc.dg/combine-clobber.c
+@@ -19,4 +19,3 @@ int f(int a, int b) { return -(a == b); }
+ 
+ /* This regexp works for reg parameters as well as mem parameters.  */
+ /* { dg-final { scan-rtl-dump {neg:SI[^:]*eq:SI[^:]*:SI} "combine" } } */
+-/* { dg-final { cleanup-rtl-dump "combine" } } */
+--- a/src/gcc/testsuite/gcc.dg/combine_ashiftrt_1.c
++++ b/src/gcc/testsuite/gcc.dg/combine_ashiftrt_1.c
+@@ -18,4 +18,3 @@ foo (int64_t a)
+    the *attempt* to match this RTL pattern, regardless of whether an
+    actual insn may be found on the platform.  */
+ /* { dg-final { scan-rtl-dump "\\(neg:DI \\(ge:DI" "combine" } } */
+-/* { dg-final { cleanup-rtl-dump "combine" } } */
+--- a/src/gcc/testsuite/gcc.dg/combine_ashiftrt_2.c
++++ b/src/gcc/testsuite/gcc.dg/combine_ashiftrt_2.c
+@@ -18,4 +18,3 @@ foo (int32_t a)
+    the *attempt* to match this RTL pattern, regardless of whether an
+    actual insn may be found on the platform.  */
+ /* { dg-final { scan-rtl-dump "\\(neg:SI \\(ge:SI" "combine" } } */
+-/* { dg-final { cleanup-rtl-dump "combine" } } */
+--- a/src/gcc/testsuite/gcc.dg/const-uniq-1.c
++++ b/src/gcc/testsuite/gcc.dg/const-uniq-1.c
+@@ -21,4 +21,3 @@ int lookup2 (int i)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "L\\\$?C\\\.*0" 2 "gimple" } } */
+-/* { dg-final { cleanup-tree-dump "gimple" } } */
+--- a/src/gcc/testsuite/gcc.dg/cpp/direct2s.c
++++ b/src/gcc/testsuite/gcc.dg/cpp/direct2s.c
+@@ -41,4 +41,3 @@ void f ()
+   int j = Y;    /* { dg-error "undeclared|for each" "no macro Y" } */
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.dg/cpp/paste4.c
++++ b/src/gcc/testsuite/gcc.dg/cpp/paste4.c
+@@ -15,4 +15,3 @@ int main ()
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.dg/cpp/separate-1.c
++++ b/src/gcc/testsuite/gcc.dg/cpp/separate-1.c
+@@ -14,4 +14,3 @@ int FOO(
+ int baz FOO /* { dg-error "parse error|syntax error|expected" "error on this line" } */
+ ;
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.dg/debug/dwarf2/pr41445-1.c
++++ b/src/gcc/testsuite/gcc.dg/debug/dwarf2/pr41445-1.c
+@@ -15,4 +15,3 @@ int varj;
+ /* { dg-final { scan-assembler "DW_TAG_variable\[^\\r\\n\]*\[\\r\\n\]+\[^\\r\\n\]*\"varh\[^\\r\\n\]*DW_AT_name(\[^\\r\\n\]*\[\\r\\n\]+\[^\\r\\n\]*DW_AT_)*\[^\\r\\n\]*\[\\r\\n\]+\[^\\r\\n\]*\[^0-9a-fA-FxX](0x)?8\[^0-9a-fA-FxX]\[^\\r\\n\]*DW_AT_decl_line" } } */
+ /* { dg-final { scan-assembler "DW_TAG_variable\[^\\r\\n\]*\[\\r\\n\]+\[^\\r\\n\]*\"vari\[^\\r\\n\]*DW_AT_name(\[^\\r\\n\]*\[\\r\\n\]+\[^\\r\\n\]*DW_AT_)*\[^\\r\\n\]*\[\\r\\n\]+\[^\\r\\n\]*\[^0-9a-fA-FxX](0xc|12)\[^0-9a-fA-FxX]\[^\\r\\n\]*DW_AT_decl_line" } } */
+ /* { dg-final { scan-assembler "DW_TAG_variable\[^\\r\\n\]*\[\\r\\n\]+\[^\\r\\n\]*\"varj\[^\\r\\n\]*DW_AT_name(\[^\\r\\n\]*\[\\r\\n\]+\[^\\r\\n\]*DW_AT_)*\[^\\r\\n\]*\[\\r\\n\]+\[^\\r\\n\]*\[^0-9a-fA-FxX](0xd|13)\[^0-9a-fA-FxX]\[^\\r\\n\]*DW_AT_decl_line" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.dg/debug/dwarf2/pr41445-3.c
++++ b/src/gcc/testsuite/gcc.dg/debug/dwarf2/pr41445-3.c
+@@ -15,4 +15,3 @@ int varj;
+ /* { dg-final { scan-assembler "DW_TAG_variable\[^\\r\\n\]*\[\\r\\n\]+\[^\\r\\n\]*\"varh\[^\\r\\n\]*DW_AT_name(\[^\\r\\n\]*\[\\r\\n\]+\[^\\r\\n\]*DW_AT_)*\[^\\r\\n\]*\[\\r\\n\]+\[^\\r\\n\]*\[^0-9a-fA-FxX](0x)?8\[^0-9a-fA-FxX]\[^\\r\\n\]*DW_AT_decl_line" } } */
+ /* { dg-final { scan-assembler "DW_TAG_variable\[^\\r\\n\]*\[\\r\\n\]+\[^\\r\\n\]*\"vari\[^\\r\\n\]*DW_AT_name(\[^\\r\\n\]*\[\\r\\n\]+\[^\\r\\n\]*DW_AT_)*\[^\\r\\n\]*\[\\r\\n\]+\[^\\r\\n\]*\[^0-9a-fA-FxX](0xc|12)\[^0-9a-fA-FxX]\[^\\r\\n\]*DW_AT_decl_line" } } */
+ /* { dg-final { scan-assembler "DW_TAG_variable\[^\\r\\n\]*\[\\r\\n\]+\[^\\r\\n\]*\"varj\[^\\r\\n\]*DW_AT_name(\[^\\r\\n\]*\[\\r\\n\]+\[^\\r\\n\]*DW_AT_)*\[^\\r\\n\]*\[\\r\\n\]+\[^\\r\\n\]*\[^0-9a-fA-FxX](0xd|13)\[^0-9a-fA-FxX]\[^\\r\\n\]*DW_AT_decl_line" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.dg/debug/dwarf2/pr41445-5.c
++++ b/src/gcc/testsuite/gcc.dg/debug/dwarf2/pr41445-5.c
+@@ -14,4 +14,3 @@ int A(B) ;
+ 
+ /* { dg-final { scan-assembler "DW_TAG_variable\[^\\r\\n\]*\[\\r\\n\]+\[^\\r\\n\]*\"vari\[^\\r\\n\]*DW_AT_name(\[^\\r\\n\]*\[\\r\\n\]+\[^\\r\\n\]*DW_AT_)*\[^\\r\\n\]*\[\\r\\n\]+\[^\\r\\n\]*\[^0-9a-fA-FxX](0xa|10)\[^0-9a-fA-FxX]\[^\\r\\n\]*DW_AT_decl_line" } } */
+ /* { dg-final { scan-assembler "DW_TAG_variable\[^\\r\\n\]*\[\\r\\n\]+\[^\\r\\n\]*\"varj\[^\\r\\n\]*DW_AT_name(\[^\\r\\n\]*\[\\r\\n\]+\[^\\r\\n\]*DW_AT_)*\[^\\r\\n\]*\[\\r\\n\]+\[^\\r\\n\]*\[^0-9a-fA-FxX](0xa|10)\[^0-9a-fA-FxX]\[^\\r\\n\]*DW_AT_decl_line" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.dg/debug/dwarf2/pr41543.c
++++ b/src/gcc/testsuite/gcc.dg/debug/dwarf2/pr41543.c
+@@ -11,4 +11,3 @@ foo (va_list ap)
+ }
+ 
+ /* { dg-final { scan-assembler-not "DW_AT_decl_file\[^\\r\\n\]*\(pr41543\.i\)" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.dg/debug/dwarf2/pr47939-1.c
++++ b/src/gcc/testsuite/gcc.dg/debug/dwarf2/pr47939-1.c
+@@ -5,4 +5,3 @@ typedef struct _Harry { int dummy; } Harry_t;
+ Harry_t harry;
+ 
+ /* { dg-final { scan-assembler "DW_TAG_typedef\[^\\r\\n\]*\[\\r\\n\]+\[^\\r\\n\]*(DW_AT_name: \"Harry_t\"|\"Harry_t..\"\[^\\r\\n\]*DW_AT_name)" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.dg/debug/dwarf2/pr47939-2.c
++++ b/src/gcc/testsuite/gcc.dg/debug/dwarf2/pr47939-2.c
+@@ -5,4 +5,3 @@ typedef const struct _Harry { int dummy; } Harry_t;
+ Harry_t harry;
+ 
+ /* { dg-final { scan-assembler "DW_TAG_typedef\[^\\r\\n\]*\[\\r\\n\]+\[^\\r\\n\]*(DW_AT_name: \"Harry_t\"|\"Harry_t..\"\[^\\r\\n\]*DW_AT_name)" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.dg/debug/dwarf2/pr47939-3.c
++++ b/src/gcc/testsuite/gcc.dg/debug/dwarf2/pr47939-3.c
+@@ -5,4 +5,3 @@ typedef struct _Harry { int dummy; } Harry_t;
+ const Harry_t harry[5];
+ 
+ /* { dg-final { scan-assembler "DW_TAG_typedef\[^\\r\\n\]*\[\\r\\n\]+\[^\\r\\n\]*(DW_AT_name: \"Harry_t\"|\"Harry_t..\"\[^\\r\\n\]*DW_AT_name)" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.dg/debug/dwarf2/pr47939-4.c
++++ b/src/gcc/testsuite/gcc.dg/debug/dwarf2/pr47939-4.c
+@@ -5,4 +5,3 @@ typedef const struct _Harry { int dummy; } Harry_t;
+ Harry_t harry[10];
+ 
+ /* { dg-final { scan-assembler "DW_TAG_typedef\[^\\r\\n\]*\[\\r\\n\]+\[^\\r\\n\]*(DW_AT_name: \"Harry_t\"|\"Harry_t..\"\[^\\r\\n\]*DW_AT_name)" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.dg/dse.c
++++ b/src/gcc/testsuite/gcc.dg/dse.c
+@@ -28,5 +28,4 @@ foo (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "Deleted dead store" 2 "dse1" } } */
+-/* { dg-final { cleanup-tree-dump "dse*" } } */
+ 
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.dg/dx-test.c
+@@ -0,0 +1,5 @@
++/* { dg-do compile } */
++/* { dg-options "-dx" } */
++
++void f(void)
++{}
+--- a/src/gcc/testsuite/gcc.dg/fold-abs-3.c
++++ b/src/gcc/testsuite/gcc.dg/fold-abs-3.c
+@@ -6,4 +6,3 @@ int f (int a) {
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "ABS" 1 "gimple" } } */
+-/* { dg-final { cleanup-tree-dump "gimple" } } */
+--- a/src/gcc/testsuite/gcc.dg/fold-abs-4.c
++++ b/src/gcc/testsuite/gcc.dg/fold-abs-4.c
+@@ -12,4 +12,3 @@ int g (_Complex float a) {
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "ABS" 0 "gimple" } } */
+-/* { dg-final { cleanup-tree-dump "gimple" } } */
+--- a/src/gcc/testsuite/gcc.dg/fold-abs-5.c
++++ b/src/gcc/testsuite/gcc.dg/fold-abs-5.c
+@@ -8,4 +8,3 @@ int test (int a, int b, int sum)
+ }
+ 
+ /* { dg-final { scan-tree-dump "ABS" "original" } } */
+-/* { dg-final { cleanup-tree-dump "original" } } */
+--- a/src/gcc/testsuite/gcc.dg/fold-addr-1.c
++++ b/src/gcc/testsuite/gcc.dg/fold-addr-1.c
+@@ -7,4 +7,3 @@ int bar(char p1, char p2)
+ }
+ 
+ /* { dg-final { scan-tree-dump "return 0;" "original" } } */
+-/* { dg-final { cleanup-tree-dump "original" } } */
+--- a/src/gcc/testsuite/gcc.dg/fold-alloca-1.c
++++ b/src/gcc/testsuite/gcc.dg/fold-alloca-1.c
+@@ -11,4 +11,3 @@ int main (int argc, char *argv[]) {
+ 	return 0;
+ }
+ /* { dg-final { scan-tree-dump-times "link_error" 0 "cfg" } } */
+-/* { dg-final { cleanup-tree-dump "cfg" } } */
+--- a/src/gcc/testsuite/gcc.dg/fold-andxor-1.c
++++ b/src/gcc/testsuite/gcc.dg/fold-andxor-1.c
+@@ -25,5 +25,4 @@ int test4(int g, int h)
+ /* { dg-final { scan-tree-dump-times "~c \& d" 1 "original" } } */
+ /* { dg-final { scan-tree-dump-times "~f \& e" 1 "original" } } */
+ /* { dg-final { scan-tree-dump-times "~h \& g" 1 "original" } } */
+-/* { dg-final { cleanup-tree-dump "original" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/fold-bitand-1.c
++++ b/src/gcc/testsuite/gcc.dg/fold-bitand-1.c
+@@ -30,4 +30,3 @@ unsigned f4(void)
+ /* { dg-final { scan-tree-dump-times "\&c4 \& 3" 0 "original" } } */
+ /* { dg-final { scan-tree-dump-times "\&c8 \& 3" 0 "original" } } */
+ /* { dg-final { scan-tree-dump-times "return 0" 2 "original" } } */
+-/* { dg-final { cleanup-tree-dump "original" } } */
+--- a/src/gcc/testsuite/gcc.dg/fold-bitand-2.c
++++ b/src/gcc/testsuite/gcc.dg/fold-bitand-2.c
+@@ -39,4 +39,3 @@ unsigned f5 (void)
+ /* { dg-final { scan-tree-dump-times "return 1" 1 "original" } } */
+ /* { dg-final { scan-tree-dump-times "return 2" 1 "original" } } */
+ /* { dg-final { scan-tree-dump-times "return 3" 1 "original" } } */
+-/* { dg-final { cleanup-tree-dump "original" } } */
+--- a/src/gcc/testsuite/gcc.dg/fold-bitand-3.c
++++ b/src/gcc/testsuite/gcc.dg/fold-bitand-3.c
+@@ -22,4 +22,3 @@ int f2 (void)
+ 
+ /* { dg-final { scan-tree-dump-times "\& 3" 0 "original" } } */
+ /* { dg-final { scan-tree-dump-times "return 1" 2 "original" } } */
+-/* { dg-final { cleanup-tree-dump "original" } } */
+--- a/src/gcc/testsuite/gcc.dg/fold-bitand-4.c
++++ b/src/gcc/testsuite/gcc.dg/fold-bitand-4.c
+@@ -13,4 +13,3 @@ unsigned bar (unsigned i)
+ 
+ /* { dg-final { scan-tree-dump-times "\\\&" 1 "original" } } */
+ /* { dg-final { scan-tree-dump-times "\\\& 4;" 1 "original" } } */
+-/* { dg-final { cleanup-tree-dump "original" } } */
+--- a/src/gcc/testsuite/gcc.dg/fold-compare-1.c
++++ b/src/gcc/testsuite/gcc.dg/fold-compare-1.c
+@@ -49,5 +49,4 @@ int test8(int l)
+ /* { dg-final { scan-tree-dump-times "j >= i" 1 "original" } } */
+ /* { dg-final { scan-tree-dump-times "k >= -3" 1 "original" } } */
+ /* { dg-final { scan-tree-dump-times "l < -2" 1 "original" } } */
+-/* { dg-final { cleanup-tree-dump "original" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/fold-compare-2.c
++++ b/src/gcc/testsuite/gcc.dg/fold-compare-2.c
+@@ -16,5 +16,4 @@ main(void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "Removing basic block" 2 "vrp1" } } */
+-/* { dg-final { cleanup-tree-dump "vrp1" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/fold-compare-3.c
++++ b/src/gcc/testsuite/gcc.dg/fold-compare-3.c
+@@ -156,4 +156,3 @@ void bla4ge (int var)
+ /* { dg-final { scan-tree-dump-times "this_comparison_is_not_decidable" 12 "cfg" } } */
+ /* { dg-final { scan-tree-dump-times "if " 12 "cfg" } } */
+ 
+-/* { dg-final { cleanup-tree-dump "cfg" } } */
+--- a/src/gcc/testsuite/gcc.dg/fold-compare-4.c
++++ b/src/gcc/testsuite/gcc.dg/fold-compare-4.c
+@@ -20,4 +20,3 @@ int test4 (int a)
+ 
+ /* { dg-final { scan-tree-dump-times "b == 0" 2 "original" } } */
+ /* { dg-final { scan-tree-dump-times "return 0" 2 "original" } } */
+-/* { dg-final { cleanup-tree-dump "original" } } */
+--- a/src/gcc/testsuite/gcc.dg/fold-compare-5.c
++++ b/src/gcc/testsuite/gcc.dg/fold-compare-5.c
+@@ -17,4 +17,3 @@ int test3 (int a)
+ /* { dg-final { scan-tree-dump-times "return 2 - a == a" 1 "original" } } */
+ /* { dg-final { scan-tree-dump-times "return 0" 1 "original" } } */
+ /* { dg-final { scan-tree-dump-times "return 1" 1 "original" } } */
+-/* { dg-final { cleanup-tree-dump "original" } } */
+--- a/src/gcc/testsuite/gcc.dg/fold-compare-6.c
++++ b/src/gcc/testsuite/gcc.dg/fold-compare-6.c
+@@ -9,4 +9,3 @@ int foo (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump "xlcbug = 1;" "original" } } */
+-/* { dg-final { cleanup-tree-dump "original" } } */
+--- a/src/gcc/testsuite/gcc.dg/fold-compare-8.c
++++ b/src/gcc/testsuite/gcc.dg/fold-compare-8.c
+@@ -8,4 +8,3 @@ foo (int x, int y)
+ }
+ 
+ /* { dg-final { scan-tree-dump "x < y" "original"  { xfail *-*-* } } } */
+-/* { dg-final { cleanup-tree-dump "original" } } */
+--- a/src/gcc/testsuite/gcc.dg/fold-complex-1.c
++++ b/src/gcc/testsuite/gcc.dg/fold-complex-1.c
+@@ -8,4 +8,3 @@ foo (_Complex float x)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "COMPLEX_EXPR" 0 "original" } } */
+-/* { dg-final { cleanup-tree-dump "original" } } */
+--- a/src/gcc/testsuite/gcc.dg/fold-cond-1.c
++++ b/src/gcc/testsuite/gcc.dg/fold-cond-1.c
+@@ -26,4 +26,3 @@ _Bool test4(int g, int h)
+ /* { dg-final { scan-tree-dump-times "e == 0 \&\& f != 0" 1 "original" } } */
+ /* { dg-final { scan-tree-dump-times "g == 0 \\? h != 0 : 1" 0 "original" } } */
+ /* { dg-final { scan-tree-dump-times "g != 0 \\? 1 : h != 0" 0 "original" } } */
+-/* { dg-final { cleanup-tree-dump "original" } } */
+--- a/src/gcc/testsuite/gcc.dg/fold-convnotconv-1.c
++++ b/src/gcc/testsuite/gcc.dg/fold-convnotconv-1.c
+@@ -13,5 +13,4 @@ unsigned int test2(unsigned int b)
+ 
+ /* { dg-final { scan-tree-dump-times "~a" 1 "original" } } */
+ /* { dg-final { scan-tree-dump-times "~b" 1 "original" } } */
+-/* { dg-final { cleanup-tree-dump "original" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/fold-convround-1.c
++++ b/src/gcc/testsuite/gcc.dg/fold-convround-1.c
+@@ -26,5 +26,4 @@ unsigned long long test3(double x)
+ /* { dg-final { scan-tree-dump-times "__builtin_llfloor" 0 "original" } } */
+ /* { dg-final { scan-tree-dump-times "__builtin_lceil" 0 "original" } } */
+ /* { dg-final { scan-tree-dump-times "__builtin_llceil" 0 "original" } } */
+-/* { dg-final { cleanup-tree-dump "original" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/fold-cstvecshift.c
++++ b/src/gcc/testsuite/gcc.dg/fold-cstvecshift.c
+@@ -10,4 +10,3 @@ void f (vec *r)
+ }
+ 
+ /* { dg-final { scan-tree-dump "{ 4, 6, 8, 10 }" "ccp1"} } */
+-/* { dg-final { cleanup-tree-dump "ccp1" } } */
+--- a/src/gcc/testsuite/gcc.dg/fold-div-1.c
++++ b/src/gcc/testsuite/gcc.dg/fold-div-1.c
+@@ -26,5 +26,4 @@ float i(float x)
+ 
+ /* { dg-final { scan-tree-dump-times " \\* " 2 "gimple" } } */
+ /* { dg-final { scan-tree-dump-times " / " 2 "gimple" } } */
+-/* { dg-final { cleanup-tree-dump "gimple" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/fold-div-2.c
++++ b/src/gcc/testsuite/gcc.dg/fold-div-2.c
+@@ -9,5 +9,4 @@ double f(double x)
+ /* Division should be turned into 1.0.  */
+ 
+ /* { dg-final { scan-tree-dump-not " / " "gimple" } } */
+-/* { dg-final { cleanup-tree-dump "gimple" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/fold-div-3.c
++++ b/src/gcc/testsuite/gcc.dg/fold-div-3.c
+@@ -12,4 +12,3 @@ apply_frontend_param (unsigned int spi_bias)
+ /* Make sure we perform the division in the narrower type.  */
+ 
+ /* { dg-final { scan-tree-dump "spi_bias = spi_bias / 1008;" "original" } } */
+-/* { dg-final { cleanup-tree-dump "original" } } */
+--- a/src/gcc/testsuite/gcc.dg/fold-eqand-1.c
++++ b/src/gcc/testsuite/gcc.dg/fold-eqand-1.c
+@@ -14,4 +14,3 @@ unsigned bar (unsigned c, unsigned d)
+ 
+ /* { dg-final { scan-tree-dump-times "a \\^ b" 1 "original" } } */
+ /* { dg-final { scan-tree-dump-times "c \\^ d" 1 "original" } } */
+-/* { dg-final { cleanup-tree-dump "original" } } */
+--- a/src/gcc/testsuite/gcc.dg/fold-eqandnot-1.c
++++ b/src/gcc/testsuite/gcc.dg/fold-eqandnot-1.c
+@@ -30,4 +30,3 @@ int test5(int e)
+ /* { dg-final { scan-tree-dump-times "\\(c \& 4\\) == 0" 1 "original" } } */
+ /* { dg-final { scan-tree-dump-times "\\(d \& 4\\) == 0" 1 "original" } } */
+ /* { dg-final { scan-tree-dump-times "\\(e \& 4\\) == 0" 1 "original" } } */
+-/* { dg-final { cleanup-tree-dump "original" } } */
+--- a/src/gcc/testsuite/gcc.dg/fold-eqandshift-1.c
++++ b/src/gcc/testsuite/gcc.dg/fold-eqandshift-1.c
+@@ -53,4 +53,3 @@ void test6(unsigned int f)
+ /* { dg-final { scan-tree-dump-times "d >> 3 \& 4" 1 "original" } } */
+ /* { dg-final { scan-tree-dump-times "e < 0" 1 "original" } } */
+ /* { dg-final { scan-tree-dump-times "if \\(0\\)" 1 "original" } } */
+-/* { dg-final { cleanup-tree-dump "original" } } */
+--- a/src/gcc/testsuite/gcc.dg/fold-eqandshift-2.c
++++ b/src/gcc/testsuite/gcc.dg/fold-eqandshift-2.c
+@@ -18,5 +18,4 @@ void baz (unsigned int b)
+ 
+ /* { dg-final { scan-tree-dump-times "\\(a \& 4\\) != 0" 1 "original" } } */
+ /* { dg-final { scan-tree-dump-times "\\(b \& 4\\) == 0" 1 "original" } } */
+-/* { dg-final { cleanup-tree-dump "original" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/fold-eqandshift-3.c
++++ b/src/gcc/testsuite/gcc.dg/fold-eqandshift-3.c
+@@ -26,4 +26,3 @@ int test2 (unsigned long b)
+ 
+ /* { dg-final { scan-tree-dump-times "\\(a \& 1073741824\\) != 0" 1 "original" } } */
+ /* { dg-final { scan-tree-dump-times "\\(b \& 1073741824\\) != 0" 1 "original" } } */
+-/* { dg-final { cleanup-tree-dump "original" } } */
+--- a/src/gcc/testsuite/gcc.dg/fold-eqcmplx-1.c
++++ b/src/gcc/testsuite/gcc.dg/fold-eqcmplx-1.c
+@@ -7,4 +7,3 @@ int foo(float x, float y)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "x == y" 1 "original" } } */
+-/* { dg-final { cleanup-tree-dump "original" } } */
+--- a/src/gcc/testsuite/gcc.dg/fold-eqxor-1.c
++++ b/src/gcc/testsuite/gcc.dg/fold-eqxor-1.c
+@@ -25,4 +25,3 @@ unsigned int test4(unsigned int g, unsigned int h)
+ /* { dg-final { scan-tree-dump-times "c != d" 1 "original" } } */
+ /* { dg-final { scan-tree-dump-times "e == f" 1 "original" } } */
+ /* { dg-final { scan-tree-dump-times "g != h" 1 "original" } } */
+-/* { dg-final { cleanup-tree-dump "original" } } */
+--- a/src/gcc/testsuite/gcc.dg/fold-eqxor-2.c
++++ b/src/gcc/testsuite/gcc.dg/fold-eqxor-2.c
+@@ -25,4 +25,3 @@ int test4(int g, int h)
+ /* { dg-final { scan-tree-dump-times "d != 0" 1 "original" } } */
+ /* { dg-final { scan-tree-dump-times "e == 0" 1 "original" } } */
+ /* { dg-final { scan-tree-dump-times "g != 0" 1 "original" } } */
+-/* { dg-final { cleanup-tree-dump "original" } } */
+--- a/src/gcc/testsuite/gcc.dg/fold-eqxor-3.c
++++ b/src/gcc/testsuite/gcc.dg/fold-eqxor-3.c
+@@ -25,4 +25,3 @@ int test4(int g, int h)
+ /* { dg-final { scan-tree-dump-times "c != 0" 1 "original" } } */
+ /* { dg-final { scan-tree-dump-times "e == 4" 1 "original" } } */
+ /* { dg-final { scan-tree-dump-times "g != 2" 1 "original" } } */
+-/* { dg-final { cleanup-tree-dump "original" } } */
+--- a/src/gcc/testsuite/gcc.dg/fold-eqxor-4.c
++++ b/src/gcc/testsuite/gcc.dg/fold-eqxor-4.c
+@@ -19,4 +19,3 @@ int test3(int e, int f)
+ /* { dg-final { scan-tree-dump-times "a == 4" 1 "original" } } */
+ /* { dg-final { scan-tree-dump-times "b == c" 1 "original" } } */
+ /* { dg-final { scan-tree-dump-times "e \\^ 2" 1 "original" } } */
+-/* { dg-final { cleanup-tree-dump "original" } } */
+--- a/src/gcc/testsuite/gcc.dg/fold-even-1.c
++++ b/src/gcc/testsuite/gcc.dg/fold-even-1.c
+@@ -30,4 +30,3 @@ int test5(int e)
+ /* { dg-final { scan-tree-dump-times "\\(c \& 1\\) == 0" 1 "original" } } */
+ /* { dg-final { scan-tree-dump-times "\\(d \& 1\\) == 0" 1 "original" } } */
+ /* { dg-final { scan-tree-dump-times "\\(e \& 1\\) == 0" 1 "original" } } */
+-/* { dg-final { cleanup-tree-dump "original" } } */
+--- a/src/gcc/testsuite/gcc.dg/fold-minus-1.c
++++ b/src/gcc/testsuite/gcc.dg/fold-minus-1.c
+@@ -17,4 +17,3 @@ void g(vec*x,vec*y,vec*z){
+ /* { dg-final { scan-tree-dump-not "/" "gimple"} } */
+ /* { dg-final { scan-tree-dump-not "\\\+" "gimple"} } */
+ /* { dg-final { scan-tree-dump "{ -13, -13 }" "gimple"} } */
+-/* { dg-final { cleanup-tree-dump "gimple" } } */
+--- a/src/gcc/testsuite/gcc.dg/fold-mod-1.c
++++ b/src/gcc/testsuite/gcc.dg/fold-mod-1.c
+@@ -23,4 +23,3 @@ unsigned int k (unsigned int d) {
+ 
+ /* { dg-final { scan-tree-dump "a % (4294967288|0x0fffffff8)" "gimple" } } */
+ /* { dg-final { scan-tree-dump-times " & 7" 3 "gimple" } } */
+-/* { dg-final { cleanup-tree-dump "gimple" } } */
+--- a/src/gcc/testsuite/gcc.dg/fold-mulconj-1.c
++++ b/src/gcc/testsuite/gcc.dg/fold-mulconj-1.c
+@@ -13,4 +13,3 @@ _Complex int bar(_Complex int z)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "CONJ_EXPR" 0 "gimple" } } */
+-/* { dg-final { cleanup-tree-dump "gimple" } } */
+--- a/src/gcc/testsuite/gcc.dg/fold-notunord.c
++++ b/src/gcc/testsuite/gcc.dg/fold-notunord.c
+@@ -7,4 +7,3 @@ int f (double d)
+ }
+ 
+ /* { dg-final { scan-tree-dump " ord " "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/fold-perm.c
++++ b/src/gcc/testsuite/gcc.dg/fold-perm.c
+@@ -17,4 +17,3 @@ void fun (veci *f, veci *g, veci *h, veci *i)
+ /* { dg-final { scan-tree-dump "VEC_PERM_EXPR.*{ 3, 3, 0, 2 }" "ccp1" } } */
+ /* { dg-final { scan-tree-dump "VEC_PERM_EXPR.*{ 1, 1, 3, 2 }" "ccp1" } } */
+ /* { dg-final { scan-tree-dump-times "VEC_PERM_EXPR" 2 "ccp1" } } */
+-/* { dg-final { cleanup-tree-dump "ccp1" } } */
+--- a/src/gcc/testsuite/gcc.dg/fold-plusmult-2.c
++++ b/src/gcc/testsuite/gcc.dg/fold-plusmult-2.c
+@@ -17,4 +17,3 @@ int bar (int i)
+ 
+ /* { dg-final { scan-tree-dump "i \\\* 4 \\\+ 2" "original" } } */
+ /* { dg-final { scan-tree-dump "\\\(i \\\+ 2\\\) \\\* 2" "original" } } */
+-/* { dg-final { cleanup-tree-dump "original" } } */
+--- a/src/gcc/testsuite/gcc.dg/fold-plusmult.c
++++ b/src/gcc/testsuite/gcc.dg/fold-plusmult.c
+@@ -12,4 +12,3 @@ int test2 (int a)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "<a> \\\* 4" 2 "original" } } */
+-/* { dg-final { cleanup-tree-dump "original" } } */
+--- a/src/gcc/testsuite/gcc.dg/fold-plusnot-1.c
++++ b/src/gcc/testsuite/gcc.dg/fold-plusnot-1.c
+@@ -26,5 +26,4 @@ unsigned int test4(unsigned int d)
+ /* { dg-final { scan-tree-dump-times "\\+ b" 0 "original" } } */
+ /* { dg-final { scan-tree-dump-times "\\+ c" 0 "original" } } */
+ /* { dg-final { scan-tree-dump-times "\\+ d" 0 "original" } } */
+-/* { dg-final { cleanup-tree-dump "original" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/fold-reassoc-1.c
++++ b/src/gcc/testsuite/gcc.dg/fold-reassoc-1.c
+@@ -7,4 +7,3 @@ double foo (double x)
+ }
+ 
+ /* { dg-final { scan-tree-dump "return 0.0;" "original" } } */
+-/* { dg-final { cleanup-tree-dump "original" } } */
+--- a/src/gcc/testsuite/gcc.dg/fold-reassoc-2.c
++++ b/src/gcc/testsuite/gcc.dg/fold-reassoc-2.c
+@@ -11,4 +11,3 @@ int bar (int i)
+ }
+ 
+ /* { dg-final { scan-tree-dump "return 1;" "original" } } */
+-/* { dg-final { cleanup-tree-dump "original" } } */
+--- a/src/gcc/testsuite/gcc.dg/fold-reassoc-3.c
++++ b/src/gcc/testsuite/gcc.dg/fold-reassoc-3.c
+@@ -14,4 +14,3 @@ foo (void)
+ 
+ /* { dg-final { scan-tree-dump-not " - " "original" } } */
+ /* { dg-final { scan-tree-dump-not " \\+ " "original" } } */
+-/* { dg-final { cleanup-tree-dump "original" } } */
+--- a/src/gcc/testsuite/gcc.dg/fold-rotate-1.c
++++ b/src/gcc/testsuite/gcc.dg/fold-rotate-1.c
+@@ -71,4 +71,3 @@ g3 (unsigned int a)
+ int i;
+ 
+ /* { dg-final { scan-tree-dump-times "&" 0 "original" } } */
+-/* { dg-final { cleanup-tree-dump "original" } } */
+--- a/src/gcc/testsuite/gcc.dg/fold-sub.c
++++ b/src/gcc/testsuite/gcc.dg/fold-sub.c
+@@ -9,4 +9,3 @@ float f(float x)
+ /* Substraction should be turned into 0.  */
+ 
+ /* { dg-final { scan-tree-dump-not " - " "gimple" } } */
+-/* { dg-final { cleanup-tree-dump "gimple" } } */
+--- a/src/gcc/testsuite/gcc.dg/fold-xor-1.c
++++ b/src/gcc/testsuite/gcc.dg/fold-xor-1.c
+@@ -9,4 +9,3 @@ unsigned int g (unsigned int a, unsigned int b) {
+   return ~a ^ ~b;
+ }
+ /* { dg-final { scan-tree-dump-times "a \\^ b" 2 "gimple" } } */
+-/* { dg-final { cleanup-tree-dump "gimple" } } */
+--- a/src/gcc/testsuite/gcc.dg/fold-xor-2.c
++++ b/src/gcc/testsuite/gcc.dg/fold-xor-2.c
+@@ -13,4 +13,3 @@ unsigned int h (unsigned int a, unsigned int b) {
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "b \\^ a" 3 "gimple" } } */
+-/* { dg-final { cleanup-tree-dump "gimple" } } */
+--- a/src/gcc/testsuite/gcc.dg/fold-xorand-1.c
++++ b/src/gcc/testsuite/gcc.dg/fold-xorand-1.c
+@@ -25,5 +25,4 @@ int test4(int g, int h)
+ /* { dg-final { scan-tree-dump-times "~c \& d" 1 "original" } } */
+ /* { dg-final { scan-tree-dump-times "~f \& e" 1 "original" } } */
+ /* { dg-final { scan-tree-dump-times "~h \& g" 1 "original" } } */
+-/* { dg-final { cleanup-tree-dump "original" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/fold-xornot-1.c
++++ b/src/gcc/testsuite/gcc.dg/fold-xornot-1.c
+@@ -13,4 +13,3 @@ int bar(int y)
+ 
+ /* { dg-final { scan-tree-dump-times "x \\^ -5" 1 "original" } } */
+ /* { dg-final { scan-tree-dump-times "y \\^ -5" 1 "original" } } */
+-/* { dg-final { cleanup-tree-dump "original" } } */
+--- a/src/gcc/testsuite/gcc.dg/goacc/acc_on_device-1.c
++++ b/src/gcc/testsuite/gcc.dg/goacc/acc_on_device-1.c
+@@ -17,4 +17,3 @@ f (void)
+ /* Unsuitable to be handled as a builtin, so we're expecting four calls.
+    { dg-final { scan-rtl-dump-times "\\\(call \[^\\n\]* acc_on_device" 4 "expand" } } */
+ 
+-/* { dg-final { cleanup-rtl-dump "expand" } } */
+--- a/src/gcc/testsuite/gcc.dg/gomp/barrier-1.c
++++ b/src/gcc/testsuite/gcc.dg/gomp/barrier-1.c
+@@ -15,4 +15,3 @@ void f2(_Bool p)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "GOMP_barrier" 2 "gimple" } } */
+-/* { dg-final { cleanup-tree-dump "gimple" } } */
+--- a/src/gcc/testsuite/gcc.dg/gomp/combined-1.c
++++ b/src/gcc/testsuite/gcc.dg/gomp/combined-1.c
+@@ -21,4 +21,3 @@ int foo (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "GOMP_parallel_loop_runtime" 3 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/gomp/critical-1.c
++++ b/src/gcc/testsuite/gcc.dg/gomp/critical-1.c
+@@ -25,4 +25,3 @@ void foo (void)
+ /* { dg-final { scan-tree-dump-times "GOMP_critical_end" 2 "ompexp" } } */
+ /* { dg-final { scan-tree-dump-times "GOMP_critical_name_start" 2 "ompexp" } } */
+ /* { dg-final { scan-tree-dump-times "GOMP_critical_name_end" 2 "ompexp" } } */
+-/* { dg-final { cleanup-tree-dump "ompexp" } } */
+--- a/src/gcc/testsuite/gcc.dg/gomp/critical-3.c
++++ b/src/gcc/testsuite/gcc.dg/gomp/critical-3.c
+@@ -9,4 +9,3 @@ void foo(void)
+ }
+ 
+ // { dg-final { scan-tree-dump-times "\\&\\.gomp_critical_user_xyzzy" 2 "ompexp" } }
+-// { dg-final { cleanup-tree-dump "ompexp" } }
+--- a/src/gcc/testsuite/gcc.dg/gomp/empty.c
++++ b/src/gcc/testsuite/gcc.dg/gomp/empty.c
+@@ -10,4 +10,3 @@ main()
+ 
+ /* There should not be a GOMP_parallel_start call.  */
+ /* { dg-final { scan-tree-dump-times "GOMP_parallel_start" 0 "ompexp"} } */
+-/* { dg-final { cleanup-tree-dump "ompexp" } } */
+--- a/src/gcc/testsuite/gcc.dg/gomp/flush-1.c
++++ b/src/gcc/testsuite/gcc.dg/gomp/flush-1.c
+@@ -21,4 +21,3 @@ void f2(_Bool p)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "__sync_synchronize" 3 "gimple" } } */
+-/* { dg-final { cleanup-tree-dump "gimple" } } */
+--- a/src/gcc/testsuite/gcc.dg/gomp/for-10.c
++++ b/src/gcc/testsuite/gcc.dg/gomp/for-10.c
+@@ -14,4 +14,3 @@ void foo (int n)
+ 
+ /* { dg-final { scan-tree-dump-times "GOMP_loop_ordered_runtime_start" 1 "ompexp" } } */
+ /* { dg-final { scan-tree-dump-times "GOMP_loop_ordered_runtime_next" 1 "ompexp" } } */
+-/* { dg-final { cleanup-tree-dump "ompexp" } } */
+--- a/src/gcc/testsuite/gcc.dg/gomp/for-13.c
++++ b/src/gcc/testsuite/gcc.dg/gomp/for-13.c
+@@ -15,4 +15,3 @@ void foo(void)
+ }
+ 
+ // { dg-final { scan-tree-dump-times "omp_data_o" 0 "ompexp" } }
+-// { dg-final { cleanup-tree-dump "ompexp" } }
+--- a/src/gcc/testsuite/gcc.dg/gomp/for-18.c
++++ b/src/gcc/testsuite/gcc.dg/gomp/for-18.c
+@@ -39,4 +39,3 @@ bar (int *a, int i)
+ 
+ /* { dg-final { scan-tree-dump-times "GOMP_parallel_loop_dynamic_start" 4 "ompexp" { xfail *-*-* } } } */
+ /* { dg-final { scan-tree-dump-times "GOMP_parallel_loop_guided_start" 4 "ompexp" { xfail *-*-* } } } */
+-/* { dg-final { cleanup-tree-dump "ompexp" } } */
+--- a/src/gcc/testsuite/gcc.dg/gomp/for-19.c
++++ b/src/gcc/testsuite/gcc.dg/gomp/for-19.c
+@@ -18,4 +18,3 @@ void foo (int *a, int i, int j, int k, int l, int m)
+ /* { dg-final { scan-tree-dump-times "shared\\(k\\)" 0 "gimple" { xfail *-*-* } } } */
+ /* { dg-final { scan-tree-dump-times "shared\\(l\\)" 0 "gimple" { xfail *-*-* } } } */
+ /* { dg-final { scan-tree-dump-times "shared\\(m\\)" 0 "gimple" { xfail *-*-* } } } */
+-/* { dg-final { cleanup-tree-dump "gimple" } } */
+--- a/src/gcc/testsuite/gcc.dg/gomp/for-4.c
++++ b/src/gcc/testsuite/gcc.dg/gomp/for-4.c
+@@ -14,4 +14,3 @@ void foo (int n)
+ 
+ /* { dg-final { scan-tree-dump-times "GOMP_loop_dynamic_start" 1 "ompexp" } } */
+ /* { dg-final { scan-tree-dump-times "GOMP_loop_dynamic_next" 1 "ompexp" } } */
+-/* { dg-final { cleanup-tree-dump "ompexp" } } */
+--- a/src/gcc/testsuite/gcc.dg/gomp/for-5.c
++++ b/src/gcc/testsuite/gcc.dg/gomp/for-5.c
+@@ -14,4 +14,3 @@ void foo (int n)
+ 
+ /* { dg-final { scan-tree-dump-times "GOMP_loop_guided_start" 1 "ompexp" } } */
+ /* { dg-final { scan-tree-dump-times "GOMP_loop_guided_next" 1 "ompexp" } } */
+-/* { dg-final { cleanup-tree-dump "ompexp" } } */
+--- a/src/gcc/testsuite/gcc.dg/gomp/for-6.c
++++ b/src/gcc/testsuite/gcc.dg/gomp/for-6.c
+@@ -14,4 +14,3 @@ void foo (int n)
+ 
+ /* { dg-final { scan-tree-dump-times "GOMP_loop_runtime_start" 1 "ompexp" } } */
+ /* { dg-final { scan-tree-dump-times "GOMP_loop_runtime_next" 1 "ompexp" } } */
+-/* { dg-final { cleanup-tree-dump "ompexp" } } */
+--- a/src/gcc/testsuite/gcc.dg/gomp/for-7.c
++++ b/src/gcc/testsuite/gcc.dg/gomp/for-7.c
+@@ -14,4 +14,3 @@ void foo (int n)
+ 
+ /* { dg-final { scan-tree-dump-times "GOMP_loop_ordered_static_start" 1 "ompexp" } } */
+ /* { dg-final { scan-tree-dump-times "GOMP_loop_ordered_static_next" 1 "ompexp" } } */
+-/* { dg-final { cleanup-tree-dump "ompexp" } } */
+--- a/src/gcc/testsuite/gcc.dg/gomp/for-8.c
++++ b/src/gcc/testsuite/gcc.dg/gomp/for-8.c
+@@ -14,4 +14,3 @@ void foo (int n)
+ 
+ /* { dg-final { scan-tree-dump-times "GOMP_loop_ordered_dynamic_start" 1 "ompexp" } } */
+ /* { dg-final { scan-tree-dump-times "GOMP_loop_ordered_dynamic_next" 1 "ompexp" } } */
+-/* { dg-final { cleanup-tree-dump "ompexp" } } */
+--- a/src/gcc/testsuite/gcc.dg/gomp/for-9.c
++++ b/src/gcc/testsuite/gcc.dg/gomp/for-9.c
+@@ -14,4 +14,3 @@ void foo (int n)
+ 
+ /* { dg-final { scan-tree-dump-times "GOMP_loop_ordered_guided_start" 1 "ompexp" } } */
+ /* { dg-final { scan-tree-dump-times "GOMP_loop_ordered_guided_next" 1 "ompexp" } } */
+-/* { dg-final { cleanup-tree-dump "ompexp" } } */
+--- a/src/gcc/testsuite/gcc.dg/gomp/macro-3.c
++++ b/src/gcc/testsuite/gcc.dg/gomp/macro-3.c
+@@ -23,4 +23,3 @@ foo (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "#pragma omp parallel" 4 "omplower" } } */
+-/* { dg-final { cleanup-tree-dump "omplower" } } */
+--- a/src/gcc/testsuite/gcc.dg/gomp/master-3.c
++++ b/src/gcc/testsuite/gcc.dg/gomp/master-3.c
+@@ -10,4 +10,3 @@ void foo (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "omp_get_thread_num" 1 "ompexp" } } */
+-/* { dg-final { cleanup-tree-dump "ompexp" } } */
+--- a/src/gcc/testsuite/gcc.dg/gomp/openmp-simd-1.c
++++ b/src/gcc/testsuite/gcc.dg/gomp/openmp-simd-1.c
+@@ -44,4 +44,3 @@ void foo(int n, float *a, float *b)
+ /* { dg-final { scan-tree-dump-not "omp teams" "original" } } */
+ /* { dg-final { scan-tree-dump-not "omp target" "original" } } */
+ /* { dg-final { scan-tree-dump-not "omp parallel" "original" } } */
+-/* { dg-final { cleanup-tree-dump "original" } } */
+--- a/src/gcc/testsuite/gcc.dg/gomp/openmp-simd-2.c
++++ b/src/gcc/testsuite/gcc.dg/gomp/openmp-simd-2.c
+@@ -40,4 +40,3 @@ void bar(int n, float *a, float *b)
+ /* { dg-final { scan-tree-dump-times "pragma omp simd safelen\\(64\\)" 1 "original" } } */
+ /* { dg-final { scan-tree-dump-not "omp parallel" "original" } } */
+ /* { dg-final { scan-tree-dump-not "omp for" "original" } } */
+-/* { dg-final { cleanup-tree-dump "original" } } */
+--- a/src/gcc/testsuite/gcc.dg/gomp/openmp-simd-3.c
++++ b/src/gcc/testsuite/gcc.dg/gomp/openmp-simd-3.c
+@@ -12,4 +12,3 @@ int main() {
+ }
+ 
+ /* { dg-final { scan-tree-dump-not "omp" "original" } } */
+-/* { dg-final { cleanup-tree-dump "original" } } */
+--- a/src/gcc/testsuite/gcc.dg/gomp/ordered-1.c
++++ b/src/gcc/testsuite/gcc.dg/gomp/ordered-1.c
+@@ -17,4 +17,3 @@ void foo (void)
+ 
+ /* { dg-final { scan-tree-dump-times "GOMP_ordered_start" 2 "ompexp" } } */
+ /* { dg-final { scan-tree-dump-times "GOMP_ordered_end" 2 "ompexp" } } */
+-/* { dg-final { cleanup-tree-dump "ompexp" } } */
+--- a/src/gcc/testsuite/gcc.dg/gomp/pr27388-1.c
++++ b/src/gcc/testsuite/gcc.dg/gomp/pr27388-1.c
+@@ -20,4 +20,3 @@ foo (void)
+ 
+ /* { dg-final { scan-tree-dump-times "shared\\\(i\\\)" 0 "omplower" } } */
+ /* { dg-final { scan-tree-dump-times "private\\\(i\\\)" 1 "omplower" } } */
+-/* { dg-final { cleanup-tree-dump "omplower" } } */
+--- a/src/gcc/testsuite/gcc.dg/gomp/pr27388-2.c
++++ b/src/gcc/testsuite/gcc.dg/gomp/pr27388-2.c
+@@ -32,4 +32,3 @@ bar (void)
+ /* { dg-final { scan-tree-dump-times "shared\\\(j\\\)\[^\\n\]*private\\\(j\\\)" 0 "omplower" } } */
+ /* { dg-final { scan-tree-dump-times "private\\\(j\\\)\[^\\n\]*shared\\\(j\\\)" 0 "omplower" } } */
+ /* { dg-final { scan-tree-dump-times "omp for\[^\\n\]*private\\\(j\\\)" 1 "omplower" } } */
+-/* { dg-final { cleanup-tree-dump "omplower" } } */
+--- a/src/gcc/testsuite/gcc.dg/gomp/pr27388-3.c
++++ b/src/gcc/testsuite/gcc.dg/gomp/pr27388-3.c
+@@ -20,4 +20,3 @@ foo (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "omp for\[^\\n\]*private" 2 "omplower" } } */
+-/* { dg-final { cleanup-tree-dump "omplower" } } */
+--- a/src/gcc/testsuite/gcc.dg/gomp/pr32468-1.c
++++ b/src/gcc/testsuite/gcc.dg/gomp/pr32468-1.c
+@@ -97,4 +97,3 @@ f6 (void)
+ /* There should not be a GOMP_parallel_{loop,sections}* call.  */
+ /* { dg-final { scan-tree-dump-times "GOMP_parallel_loop" 0 "ompexp"} } */
+ /* { dg-final { scan-tree-dump-times "GOMP_parallel_sections" 0 "ompexp"} } */
+-/* { dg-final { cleanup-tree-dump "ompexp" } } */
+--- a/src/gcc/testsuite/gcc.dg/gomp/pr34692.c
++++ b/src/gcc/testsuite/gcc.dg/gomp/pr34692.c
+@@ -25,4 +25,3 @@ cde f g h);
+   }
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "gimple" } } */
+--- a/src/gcc/testsuite/gcc.dg/gomp/simd-clones-1.c
++++ b/src/gcc/testsuite/gcc.dg/gomp/simd-clones-1.c
+@@ -30,4 +30,3 @@ void fillit(int *tot)
+ }
+ 
+ /* { dg-final { scan-tree-dump-not "special_add.constprop" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/gomp/simd-clones-2.c
++++ b/src/gcc/testsuite/gcc.dg/gomp/simd-clones-2.c
+@@ -23,4 +23,3 @@ float setArray(float *a, float x, int k)
+ /* { dg-final { scan-tree-dump "_ZGVdN8ua32vl_setArray" "optimized" { target i?86-*-* x86_64-*-* } } } */
+ /* { dg-final { scan-tree-dump "_ZGVdN8vvva32_addit" "optimized" { target i?86-*-* x86_64-*-* } } } */
+ /* { dg-final { scan-tree-dump "_ZGVdM8vl66u_addit" "optimized" { target i?86-*-* x86_64-*-* } } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/gomp/simd-clones-3.c
++++ b/src/gcc/testsuite/gcc.dg/gomp/simd-clones-3.c
+@@ -15,4 +15,3 @@ int addit(int a, int b, int c)
+ /* { dg-final { scan-tree-dump "_ZGVcM4vvv_addit" "optimized" { target i?86-*-* x86_64-*-* } } } */
+ /* { dg-final { scan-tree-dump "_ZGVdN8vvv_addit" "optimized" { target i?86-*-* x86_64-*-* } } } */
+ /* { dg-final { scan-tree-dump "_ZGVdM8vvv_addit" "optimized" { target i?86-*-* x86_64-*-* } } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/graphite/block-0.c
++++ b/src/gcc/testsuite/gcc.dg/graphite/block-0.c
+@@ -43,4 +43,3 @@ main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-not "will be loop blocked" "graphite" } } */
+-/* { dg-final { cleanup-tree-dump "graphite" } } */
+--- a/src/gcc/testsuite/gcc.dg/graphite/block-1.c
++++ b/src/gcc/testsuite/gcc.dg/graphite/block-1.c
+@@ -46,4 +46,3 @@ main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "will be loop blocked" 3 "graphite" { xfail *-*-* } } } */
+-/* { dg-final { cleanup-tree-dump "graphite" } } */
+--- a/src/gcc/testsuite/gcc.dg/graphite/block-3.c
++++ b/src/gcc/testsuite/gcc.dg/graphite/block-3.c
+@@ -59,4 +59,3 @@ main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "will be loop blocked" 1 "graphite" } } */
+-/* { dg-final { cleanup-tree-dump "graphite" } } */
+--- a/src/gcc/testsuite/gcc.dg/graphite/block-4.c
++++ b/src/gcc/testsuite/gcc.dg/graphite/block-4.c
+@@ -58,4 +58,3 @@ main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "will be loop blocked" 1 "graphite" { xfail *-*-* } } } */
+-/* { dg-final { cleanup-tree-dump "graphite" } } */
+--- a/src/gcc/testsuite/gcc.dg/graphite/block-5.c
++++ b/src/gcc/testsuite/gcc.dg/graphite/block-5.c
+@@ -54,4 +54,3 @@ main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "will be loop blocked" 1 "graphite" } } */
+-/* { dg-final { cleanup-tree-dump "graphite" } } */
+--- a/src/gcc/testsuite/gcc.dg/graphite/block-6.c
++++ b/src/gcc/testsuite/gcc.dg/graphite/block-6.c
+@@ -49,4 +49,3 @@ main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "will be loop blocked" 0 "graphite" } } */
+-/* { dg-final { cleanup-tree-dump "graphite" } } */
+--- a/src/gcc/testsuite/gcc.dg/graphite/block-7.c
++++ b/src/gcc/testsuite/gcc.dg/graphite/block-7.c
+@@ -55,4 +55,3 @@ main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "will be loop blocked" 1 "graphite" } } */
+-/* { dg-final { cleanup-tree-dump "graphite" } } */
+--- a/src/gcc/testsuite/gcc.dg/graphite/block-8.c
++++ b/src/gcc/testsuite/gcc.dg/graphite/block-8.c
+@@ -56,4 +56,3 @@ main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "will be loop blocked" 1 "graphite" } } */
+-/* { dg-final { cleanup-tree-dump "graphite" } } */
+--- a/src/gcc/testsuite/gcc.dg/graphite/block-pr47654.c
++++ b/src/gcc/testsuite/gcc.dg/graphite/block-pr47654.c
+@@ -22,4 +22,3 @@ main ()
+ }
+ 
+ /* { dg-final { scan-tree-dump-not "will be loop blocked" "graphite" } } */
+-/* { dg-final { cleanup-tree-dump "graphite" } } */
+--- a/src/gcc/testsuite/gcc.dg/graphite/interchange-0.c
++++ b/src/gcc/testsuite/gcc.dg/graphite/interchange-0.c
+@@ -47,4 +47,3 @@ main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "will be interchanged" 1 "graphite" } } */
+-/* { dg-final { cleanup-tree-dump "graphite" } } */
+--- a/src/gcc/testsuite/gcc.dg/graphite/interchange-1.c
++++ b/src/gcc/testsuite/gcc.dg/graphite/interchange-1.c
+@@ -50,4 +50,3 @@ main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "will be interchanged" 1 "graphite" } } */
+-/* { dg-final { cleanup-tree-dump "graphite" } } */
+--- a/src/gcc/testsuite/gcc.dg/graphite/interchange-10.c
++++ b/src/gcc/testsuite/gcc.dg/graphite/interchange-10.c
+@@ -47,4 +47,3 @@ main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "will be interchanged" 2 "graphite" } } */
+-/* { dg-final { cleanup-tree-dump "graphite" } } */
+--- a/src/gcc/testsuite/gcc.dg/graphite/interchange-11.c
++++ b/src/gcc/testsuite/gcc.dg/graphite/interchange-11.c
+@@ -47,4 +47,3 @@ main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "will be interchanged" 1 "graphite" } } */
+-/* { dg-final { cleanup-tree-dump "graphite" } } */
+--- a/src/gcc/testsuite/gcc.dg/graphite/interchange-12.c
++++ b/src/gcc/testsuite/gcc.dg/graphite/interchange-12.c
+@@ -54,4 +54,3 @@ main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "will be interchanged" 1 "graphite" { xfail *-*-* } } } */
+-/* { dg-final { cleanup-tree-dump "graphite" } } */
+--- a/src/gcc/testsuite/gcc.dg/graphite/interchange-13.c
++++ b/src/gcc/testsuite/gcc.dg/graphite/interchange-13.c
+@@ -51,4 +51,3 @@ main (void)
+ 
+ 
+ /* { dg-final { scan-tree-dump-times "will be interchanged" 1 "graphite" } } */
+-/* { dg-final { cleanup-tree-dump "graphite" } } */
+--- a/src/gcc/testsuite/gcc.dg/graphite/interchange-14.c
++++ b/src/gcc/testsuite/gcc.dg/graphite/interchange-14.c
+@@ -56,4 +56,3 @@ main (void)
+ 
+ /* PRE destroys the perfect nest and we can't cope with that yet.  */
+ /* { dg-final { scan-tree-dump-times "will be interchanged" 1 "graphite" { xfail *-*-* } } } */
+-/* { dg-final { cleanup-tree-dump "graphite" } } */
+--- a/src/gcc/testsuite/gcc.dg/graphite/interchange-15.c
++++ b/src/gcc/testsuite/gcc.dg/graphite/interchange-15.c
+@@ -50,5 +50,4 @@ main (void)
+ 
+ /* PRE destroys the perfect nest and we can't cope with that yet.  */
+ /* { dg-final { scan-tree-dump-times "will be interchanged" 1 "graphite" { xfail *-*-* } } } */
+-/* { dg-final { cleanup-tree-dump "graphite" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/graphite/interchange-16.c
++++ b/src/gcc/testsuite/gcc.dg/graphite/interchange-16.c
+@@ -19,4 +19,3 @@ void spread_i1 (int *rptr, int *sptr, int ncopies, int *extent, int rdelta, int
+ 
+ int main() { return 0; }
+ 
+-/* { dg-final { cleanup-tree-dump "graphite" } } */
+--- a/src/gcc/testsuite/gcc.dg/graphite/interchange-2.c
++++ b/src/gcc/testsuite/gcc.dg/graphite/interchange-2.c
+@@ -53,4 +53,3 @@ main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "will be interchanged" 1 "graphite" { xfail *-*-* } } } */ 
+-/* { dg-final { cleanup-tree-dump "graphite" } } */
+--- a/src/gcc/testsuite/gcc.dg/graphite/interchange-3.c
++++ b/src/gcc/testsuite/gcc.dg/graphite/interchange-3.c
+@@ -48,4 +48,3 @@ main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "will be interchanged" 1 "graphite" } } */
+-/* { dg-final { cleanup-tree-dump "graphite" } } */
+--- a/src/gcc/testsuite/gcc.dg/graphite/interchange-4.c
++++ b/src/gcc/testsuite/gcc.dg/graphite/interchange-4.c
+@@ -47,4 +47,3 @@ main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "will be interchanged" 1 "graphite" } } */
+-/* { dg-final { cleanup-tree-dump "graphite" } } */
+--- a/src/gcc/testsuite/gcc.dg/graphite/interchange-5.c
++++ b/src/gcc/testsuite/gcc.dg/graphite/interchange-5.c
+@@ -47,4 +47,3 @@ main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "will be interchanged" 1 "graphite" } } */
+-/* { dg-final { cleanup-tree-dump "graphite" } } */
+--- a/src/gcc/testsuite/gcc.dg/graphite/interchange-6.c
++++ b/src/gcc/testsuite/gcc.dg/graphite/interchange-6.c
+@@ -48,4 +48,3 @@ main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "will be interchanged" 1 "graphite" } } */
+-/* { dg-final { cleanup-tree-dump "graphite" } } */
+--- a/src/gcc/testsuite/gcc.dg/graphite/interchange-7.c
++++ b/src/gcc/testsuite/gcc.dg/graphite/interchange-7.c
+@@ -47,4 +47,3 @@ main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "will be interchanged" 1 "graphite" } } */
+-/* { dg-final { cleanup-tree-dump "graphite" } } */
+--- a/src/gcc/testsuite/gcc.dg/graphite/interchange-8.c
++++ b/src/gcc/testsuite/gcc.dg/graphite/interchange-8.c
+@@ -83,4 +83,3 @@ main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "will be interchanged" 2 "graphite" } } */
+-/* { dg-final { cleanup-tree-dump "graphite" } } */
+--- a/src/gcc/testsuite/gcc.dg/graphite/interchange-9.c
++++ b/src/gcc/testsuite/gcc.dg/graphite/interchange-9.c
+@@ -45,4 +45,3 @@ main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "will be interchanged" 1 "graphite" { xfail *-*-* } } } */
+-/* { dg-final { cleanup-tree-dump "graphite" } } */
+--- a/src/gcc/testsuite/gcc.dg/graphite/interchange-mvt.c
++++ b/src/gcc/testsuite/gcc.dg/graphite/interchange-mvt.c
+@@ -60,5 +60,4 @@ main (void)
+ 
+ /* PRE destroys the perfect nest and we can't cope with that yet.  */
+ /* { dg-final { scan-tree-dump-times "will be interchanged" 1 "graphite" { xfail *-*-* } } } */
+-/* { dg-final { cleanup-tree-dump "graphite" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/graphite/isl-codegen-loop-dumping.c
++++ b/src/gcc/testsuite/gcc.dg/graphite/isl-codegen-loop-dumping.c
+@@ -13,4 +13,3 @@ main (int n, int *a)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "ISL AST generated by ISL: \nfor \\(int c1 = 0; c1 < n - 1; c1 \\+= 1\\)\n  for \\(int c3 = 0; c3 < n; c3 \\+= 1\\)\n    S_4\\(c1, c3\\);" 1 "graphite"} } */
+-/* { dg-final { cleanup-tree-dump "graphite" } } */
+--- a/src/gcc/testsuite/gcc.dg/graphite/pr35356-1.c
++++ b/src/gcc/testsuite/gcc.dg/graphite/pr35356-1.c
+@@ -23,4 +23,3 @@ foo (int bar, int n, int k)
+ */
+ 
+ /* { dg-final { scan-tree-dump-times "loop_1" 0 "graphite" } } */
+-/* { dg-final { cleanup-tree-dump "graphite" } } */
+--- a/src/gcc/testsuite/gcc.dg/graphite/pr35356-2.c
++++ b/src/gcc/testsuite/gcc.dg/graphite/pr35356-2.c
+@@ -39,4 +39,3 @@ foo (int bar, int n, int k)
+ */
+ 
+ /* { dg-final { scan-tree-dump-times "for\[^\n\]+\n\[^\n\]+if" 0 "graphite" } } */
+-/* { dg-final { cleanup-tree-dump "graphite" } } */
+--- a/src/gcc/testsuite/gcc.dg/graphite/pr35356-3.c
++++ b/src/gcc/testsuite/gcc.dg/graphite/pr35356-3.c
+@@ -37,4 +37,3 @@ match (void)
+    for such cases.  */
+ 
+ /* { dg-final { scan-tree-dump-times "loop_1" 0 "graphite" { xfail *-*-* } } } */
+-/* { dg-final { cleanup-tree-dump "graphite" } } */
+--- a/src/gcc/testsuite/gcc.dg/graphite/pr37485.c
++++ b/src/gcc/testsuite/gcc.dg/graphite/pr37485.c
+@@ -31,4 +31,3 @@ void fallbackSort ( UInt32* fmap,
+    AssertH ( j < 256, 1005 );
+ }
+ /* { dg-final { scan-tree-dump-times "Loop blocked" 1 "graphite" { xfail *-*-* }} } */
+-/* { dg-final { cleanup-tree-dump "graphite" } } */
+--- a/src/gcc/testsuite/gcc.dg/graphite/pr37684.c
++++ b/src/gcc/testsuite/gcc.dg/graphite/pr37684.c
+@@ -64,4 +64,3 @@ int BZ2_bzCompressInit
+    prepare_new_block ( s );
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "graphite" } } */
+--- a/src/gcc/testsuite/gcc.dg/graphite/pr37943.c
++++ b/src/gcc/testsuite/gcc.dg/graphite/pr37943.c
+@@ -29,5 +29,4 @@ unsigned char compress(test *in)
+    }
+    return p_in || p_out;
+ }
+-/* { dg-final { cleanup-tree-dump "graphite" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/graphite/scop-0.c
++++ b/src/gcc/testsuite/gcc.dg/graphite/scop-0.c
+@@ -18,5 +18,4 @@ int toto()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "number of SCoPs: 1" 1 "graphite"} } */
+-/* { dg-final { cleanup-tree-dump "graphite" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/graphite/scop-1.c
++++ b/src/gcc/testsuite/gcc.dg/graphite/scop-1.c
+@@ -28,4 +28,3 @@ int toto()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "number of SCoPs: 3" 1 "graphite"} } */ 
+-/* { dg-final { cleanup-tree-dump "graphite" } } */
+--- a/src/gcc/testsuite/gcc.dg/graphite/scop-10.c
++++ b/src/gcc/testsuite/gcc.dg/graphite/scop-10.c
+@@ -28,4 +28,3 @@ int toto()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "number of SCoPs: 3" 1 "graphite"} } */ 
+-/* { dg-final { cleanup-tree-dump "graphite" } } */
+--- a/src/gcc/testsuite/gcc.dg/graphite/scop-11.c
++++ b/src/gcc/testsuite/gcc.dg/graphite/scop-11.c
+@@ -29,4 +29,3 @@ int toto()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "number of SCoPs: 3" 1 "graphite"} } */ 
+-/* { dg-final { cleanup-tree-dump "graphite" } } */
+--- a/src/gcc/testsuite/gcc.dg/graphite/scop-12.c
++++ b/src/gcc/testsuite/gcc.dg/graphite/scop-12.c
+@@ -33,4 +33,3 @@ int toto()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "number of SCoPs: 5" 1 "graphite"} } */ 
+-/* { dg-final { cleanup-tree-dump "graphite" } } */
+--- a/src/gcc/testsuite/gcc.dg/graphite/scop-13.c
++++ b/src/gcc/testsuite/gcc.dg/graphite/scop-13.c
+@@ -38,4 +38,3 @@ int toto()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "number of SCoPs: 2" 1 "graphite"} } */ 
+-/* { dg-final { cleanup-tree-dump "graphite" } } */
+--- a/src/gcc/testsuite/gcc.dg/graphite/scop-14.c
++++ b/src/gcc/testsuite/gcc.dg/graphite/scop-14.c
+@@ -22,4 +22,3 @@ int toto()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "number of SCoPs: 0" 1 "graphite"} } */ 
+-/* { dg-final { cleanup-tree-dump "graphite" } } */
+--- a/src/gcc/testsuite/gcc.dg/graphite/scop-15.c
++++ b/src/gcc/testsuite/gcc.dg/graphite/scop-15.c
+@@ -48,4 +48,3 @@ int longest_match(IPos cur_match)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "number of SCoPs: 0" 1 "graphite"} } */
+-/* { dg-final { cleanup-tree-dump "graphite" } } */
+--- a/src/gcc/testsuite/gcc.dg/graphite/scop-16.c
++++ b/src/gcc/testsuite/gcc.dg/graphite/scop-16.c
+@@ -22,4 +22,3 @@ int test ()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "number of SCoPs: 2" 1 "graphite"} } */
+-/* { dg-final { cleanup-tree-dump "graphite" } } */
+--- a/src/gcc/testsuite/gcc.dg/graphite/scop-17.c
++++ b/src/gcc/testsuite/gcc.dg/graphite/scop-17.c
+@@ -21,4 +21,3 @@ int test ()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "number of SCoPs: 2" 1 "graphite"} } */
+-/* { dg-final { cleanup-tree-dump "graphite" } } */
+--- a/src/gcc/testsuite/gcc.dg/graphite/scop-18.c
++++ b/src/gcc/testsuite/gcc.dg/graphite/scop-18.c
+@@ -23,4 +23,3 @@ void test (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "number of SCoPs: 2" 1 "graphite"} } */ 
+-/* { dg-final { cleanup-tree-dump "graphite" } } */
+--- a/src/gcc/testsuite/gcc.dg/graphite/scop-19.c
++++ b/src/gcc/testsuite/gcc.dg/graphite/scop-19.c
+@@ -33,5 +33,4 @@ d_growable_string_append_buffer (struct d_growable_string *dgs,
+ }
+ /* { dg-final { scan-tree-dump-times "number of SCoPs: 0" 2 "graphite" { target nonpic } } } */
+ /* { dg-final { scan-tree-dump-times "number of SCoPs: 0" 1 "graphite" { target { ! nonpic } } } } */
+-/* { dg-final { cleanup-tree-dump "graphite" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/graphite/scop-2.c
++++ b/src/gcc/testsuite/gcc.dg/graphite/scop-2.c
+@@ -36,4 +36,3 @@ int toto()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "number of SCoPs: 4" 1 "graphite"} } */ 
+-/* { dg-final { cleanup-tree-dump "graphite" } } */
+--- a/src/gcc/testsuite/gcc.dg/graphite/scop-20.c
++++ b/src/gcc/testsuite/gcc.dg/graphite/scop-20.c
+@@ -24,4 +24,3 @@ int toto()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "number of SCoPs: 2" 1 "graphite" { xfail *-*-* } } } */
+-/* { dg-final { cleanup-tree-dump "graphite" } } */
+--- a/src/gcc/testsuite/gcc.dg/graphite/scop-21.c
++++ b/src/gcc/testsuite/gcc.dg/graphite/scop-21.c
+@@ -28,4 +28,3 @@ int test ()
+   return a[20];
+ }
+ /* { dg-final { scan-tree-dump-times "number of SCoPs: 1" 1 "graphite"} } */
+-/* { dg-final { cleanup-tree-dump "graphite" } } */
+--- a/src/gcc/testsuite/gcc.dg/graphite/scop-22.c
++++ b/src/gcc/testsuite/gcc.dg/graphite/scop-22.c
+@@ -18,4 +18,3 @@ void foo(int N, int *res)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "number of SCoPs: 1" 1 "graphite"} } */
+-/* { dg-final { cleanup-tree-dump "graphite" } } */
+--- a/src/gcc/testsuite/gcc.dg/graphite/scop-3.c
++++ b/src/gcc/testsuite/gcc.dg/graphite/scop-3.c
+@@ -25,4 +25,3 @@ int toto()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "number of SCoPs: 1" 1 "graphite"} } */
+-/* { dg-final { cleanup-tree-dump "graphite" } } */
+--- a/src/gcc/testsuite/gcc.dg/graphite/scop-4.c
++++ b/src/gcc/testsuite/gcc.dg/graphite/scop-4.c
+@@ -26,4 +26,3 @@ int toto()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "number of SCoPs: 2" 1 "graphite"} } */ 
+-/* { dg-final { cleanup-tree-dump "graphite" } } */
+--- a/src/gcc/testsuite/gcc.dg/graphite/scop-5.c
++++ b/src/gcc/testsuite/gcc.dg/graphite/scop-5.c
+@@ -32,4 +32,3 @@ int toto()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "number of SCoPs: 3" 1 "graphite"} } */ 
+-/* { dg-final { cleanup-tree-dump "graphite" } } */
+--- a/src/gcc/testsuite/gcc.dg/graphite/scop-6.c
++++ b/src/gcc/testsuite/gcc.dg/graphite/scop-6.c
+@@ -28,4 +28,3 @@ int toto()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "number of SCoPs: 3" 1 "graphite"} } */ 
+-/* { dg-final { cleanup-tree-dump "graphite" } } */
+--- a/src/gcc/testsuite/gcc.dg/graphite/scop-7.c
++++ b/src/gcc/testsuite/gcc.dg/graphite/scop-7.c
+@@ -28,4 +28,3 @@ int toto()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "number of SCoPs: 3" 1 "graphite"} } */
+-/* { dg-final { cleanup-tree-dump "graphite" } } */
+--- a/src/gcc/testsuite/gcc.dg/graphite/scop-8.c
++++ b/src/gcc/testsuite/gcc.dg/graphite/scop-8.c
+@@ -28,4 +28,3 @@ int toto()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "number of SCoPs: 2" 1 "graphite"} } */
+-/* { dg-final { cleanup-tree-dump "graphite" } } */
+--- a/src/gcc/testsuite/gcc.dg/graphite/scop-9.c
++++ b/src/gcc/testsuite/gcc.dg/graphite/scop-9.c
+@@ -24,4 +24,3 @@ int toto()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "number of SCoPs: 2" 1 "graphite"} } */
+-/* { dg-final { cleanup-tree-dump "graphite" } } */
+--- a/src/gcc/testsuite/gcc.dg/graphite/scop-dsyr2k.c
++++ b/src/gcc/testsuite/gcc.dg/graphite/scop-dsyr2k.c
+@@ -17,5 +17,4 @@ void dsyr2k(long N) {
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "number of SCoPs: 1" 1 "graphite"} } */ 
+-/* { dg-final { cleanup-tree-dump "graphite" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/graphite/scop-dsyrk.c
++++ b/src/gcc/testsuite/gcc.dg/graphite/scop-dsyrk.c
+@@ -19,4 +19,3 @@ void dsyrk(long N)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "number of SCoPs: 1" 1 "graphite" } } */
+-/* { dg-final { cleanup-tree-dump "graphite" } } */
+--- a/src/gcc/testsuite/gcc.dg/graphite/scop-matmult.c
++++ b/src/gcc/testsuite/gcc.dg/graphite/scop-matmult.c
+@@ -17,4 +17,3 @@ void matmult (int n)
+ /* This one fails because the number of iterations cannot be
+    determined anymore for the outermost loop.  */
+ /* { dg-final { scan-tree-dump-times "number of SCoPs: 1" 1 "graphite" } } */
+-/* { dg-final { cleanup-tree-dump "graphite" } } */
+--- a/src/gcc/testsuite/gcc.dg/graphite/scop-mvt.c
++++ b/src/gcc/testsuite/gcc.dg/graphite/scop-mvt.c
+@@ -20,5 +20,4 @@ void mvt(long N) {
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "number of SCoPs: 2" 1 "graphite" } } */
+-/* { dg-final { cleanup-tree-dump "graphite" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/graphite/scop-sor.c
++++ b/src/gcc/testsuite/gcc.dg/graphite/scop-sor.c
+@@ -15,4 +15,3 @@ void sor(int N1, int N2){
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "number of SCoPs: 1" 1 "graphite" } } */
+-/* { dg-final { cleanup-tree-dump "graphite" } } */
+--- a/src/gcc/testsuite/gcc.dg/graphite/uns-block-1.c
++++ b/src/gcc/testsuite/gcc.dg/graphite/uns-block-1.c
+@@ -46,4 +46,3 @@ main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "will be loop blocked" 3 "graphite" } } */
+-/* { dg-final { cleanup-tree-dump "graphite" } } */
+--- a/src/gcc/testsuite/gcc.dg/graphite/uns-interchange-12.c
++++ b/src/gcc/testsuite/gcc.dg/graphite/uns-interchange-12.c
+@@ -55,4 +55,3 @@ main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "will be interchanged" 1 "graphite" } } */
+-/* { dg-final { cleanup-tree-dump "graphite" } } */
+--- a/src/gcc/testsuite/gcc.dg/graphite/uns-interchange-14.c
++++ b/src/gcc/testsuite/gcc.dg/graphite/uns-interchange-14.c
+@@ -57,4 +57,3 @@ main (void)
+ 
+ /* PRE destroys the perfect nest and we can't cope with that yet.  */
+ /* { dg-final { scan-tree-dump-times "will be interchanged" 1 "graphite" } } */
+-/* { dg-final { cleanup-tree-dump "graphite" } } */
+--- a/src/gcc/testsuite/gcc.dg/graphite/uns-interchange-15.c
++++ b/src/gcc/testsuite/gcc.dg/graphite/uns-interchange-15.c
+@@ -51,5 +51,3 @@ main (void)
+ 
+ /* PRE destroys the perfect nest and we can't cope with that yet.  */
+ /* { dg-final { scan-tree-dump-times "will be interchanged" 1 "graphite" } } */
+-/* { dg-final { cleanup-tree-dump "graphite" } } */
+-
+--- a/src/gcc/testsuite/gcc.dg/graphite/uns-interchange-9.c
++++ b/src/gcc/testsuite/gcc.dg/graphite/uns-interchange-9.c
+@@ -46,4 +46,3 @@ main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "will be interchanged" 1 "graphite" } } */
+-/* { dg-final { cleanup-tree-dump "graphite" } } */
+--- a/src/gcc/testsuite/gcc.dg/graphite/uns-interchange-mvt.c
++++ b/src/gcc/testsuite/gcc.dg/graphite/uns-interchange-mvt.c
+@@ -61,5 +61,3 @@ main (void)
+ 
+ /* PRE destroys the perfect nest and we can't cope with that yet.  */
+ /* { dg-final { scan-tree-dump-times "will be interchanged" 1 "graphite" } } */
+-/* { dg-final { cleanup-tree-dump "graphite" } } */
+-
+--- a/src/gcc/testsuite/gcc.dg/graphite/vect-pr43423.c
++++ b/src/gcc/testsuite/gcc.dg/graphite/vect-pr43423.c
+@@ -16,4 +16,3 @@ void foo(int n, int mid)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect" { xfail *-*-* } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/hoist-register-pressure-1.c
++++ b/src/gcc/testsuite/gcc.dg/hoist-register-pressure-1.c
+@@ -4,7 +4,6 @@
+    requires a load address instruction which is fine on 64 bit but
+    cannot be used on 31 bit since it does a 31 bit add only.  */
+ /* { dg-final { scan-rtl-dump "PRE/HOIST: end of bb .* copying expression" "hoist" { target { { !s390*-*-* || lp64 } && nonpic } } } } */
+-/* { dg-final { cleanup-rtl-dump "hoist" } } */
+ 
+ #define BUF 100
+ long a[BUF];
+--- a/src/gcc/testsuite/gcc.dg/hoist-register-pressure-2.c
++++ b/src/gcc/testsuite/gcc.dg/hoist-register-pressure-2.c
+@@ -4,7 +4,6 @@
+    requires a load address instruction which is fine on 64 bit but
+    cannot be used on 31 bit since it does a 31 bit add only.  */
+ /* { dg-final { scan-rtl-dump "PRE/HOIST: end of bb .* copying expression" "hoist" { target { !s390*-*-* || lp64 } } } } */
+-/* { dg-final { cleanup-rtl-dump "hoist" } } */
+ 
+ #define BUF 100
+ long a[BUF];
+--- a/src/gcc/testsuite/gcc.dg/hoist-register-pressure-3.c
++++ b/src/gcc/testsuite/gcc.dg/hoist-register-pressure-3.c
+@@ -4,7 +4,6 @@
+    requires a load address instruction which is fine on 64 bit but
+    cannot be used on 31 bit since it does a 31 bit add only.  */
+ /* { dg-final { scan-rtl-dump "PRE/HOIST: end of bb .* copying expression" "hoist" { target { !s390*-*-* || lp64 } } } } */
+-/* { dg-final { cleanup-rtl-dump "hoist" } } */
+ 
+ #define BUF 100
+ long a[BUF];
+--- a/src/gcc/testsuite/gcc.dg/inline-33.c
++++ b/src/gcc/testsuite/gcc.dg/inline-33.c
+@@ -20,4 +20,3 @@ int foo (i)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "bar"  2 "optimized"  } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/inline-36.c
++++ b/src/gcc/testsuite/gcc.dg/inline-36.c
+@@ -19,4 +19,3 @@ int foo2 (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "bar" 5 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/inline-37.c
++++ b/src/gcc/testsuite/gcc.dg/inline-37.c
+@@ -19,4 +19,3 @@ int foo2 (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "bar" 5 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/inline-38.c
++++ b/src/gcc/testsuite/gcc.dg/inline-38.c
+@@ -19,4 +19,3 @@ int foo2 (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "bar" 5 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/inline-39.c
++++ b/src/gcc/testsuite/gcc.dg/inline-39.c
+@@ -20,4 +20,3 @@ int foo2 (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "bar" 4 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/ipa/PR64550.c
++++ b/src/gcc/testsuite/gcc.dg/ipa/PR64550.c
+@@ -72,4 +72,3 @@ int main()
+ }
+ 
+ /* { dg-final { scan-ipa-dump "Equal symbols: 0" "icf"  } } */
+-/* { dg-final { cleanup-ipa-dump "icf" } } */
+--- a/src/gcc/testsuite/gcc.dg/ipa/PR65282.c
++++ b/src/gcc/testsuite/gcc.dg/ipa/PR65282.c
+@@ -17,4 +17,3 @@ main ()
+ }
+ 
+ /* { dg-final { scan-ipa-dump "Equal symbols: 0" "icf"  } } */
+-/* { dg-final { cleanup-ipa-dump "icf" } } */
+--- a/src/gcc/testsuite/gcc.dg/ipa/ctor-empty-1.c
++++ b/src/gcc/testsuite/gcc.dg/ipa/ctor-empty-1.c
+@@ -5,4 +5,3 @@ void empty_constructor()
+ {
+ }
+ /* { dg-final { scan-ipa-dump "Reclaiming functions: empty_constructor"  "free-inline-summary"  } } */
+-/* { dg-final { cleanup-ipa-dump "free-inline-summary" } } */
+--- a/src/gcc/testsuite/gcc.dg/ipa/iinline-1.c
++++ b/src/gcc/testsuite/gcc.dg/ipa/iinline-1.c
+@@ -24,4 +24,3 @@ int test (void)
+ 
+ /* { dg-final { scan-ipa-dump "indirect_call"  "inline"  } } */
+ /* { dg-final { scan-ipa-dump "hooray\[^\\n\]*inline copy in test"  "inline"  } } */
+-/* { dg-final { cleanup-ipa-dump "inline" } } */
+--- a/src/gcc/testsuite/gcc.dg/ipa/iinline-2.c
++++ b/src/gcc/testsuite/gcc.dg/ipa/iinline-2.c
+@@ -38,4 +38,3 @@ int main (int argc, int *argv[])
+ 
+ /* { dg-final { scan-ipa-dump "hooray\[^\\n\]*inline copy in main" "inline"  } } */
+ /* { dg-final { scan-ipa-dump "hip2\[^\\n\]*inline copy in main" "inline"  } } */
+-/* { dg-final { cleanup-ipa-dump "inline" } } */
+--- a/src/gcc/testsuite/gcc.dg/ipa/iinline-4.c
++++ b/src/gcc/testsuite/gcc.dg/ipa/iinline-4.c
+@@ -218,4 +218,3 @@ int test7 (void)
+ /* { dg-final { scan-ipa-dump "hooray5\[^\\n\]*inline copy in test5"  "inline"  } } */
+ /* { dg-final { scan-ipa-dump "hooray6\[^\\n\]*inline copy in test6"  "inline"  } } */
+ /* { dg-final { scan-ipa-dump "hooray7\[^\\n\]*inline copy in test7"  "inline"  } } */
+-/* { dg-final { cleanup-ipa-dump "inline" } } */
+--- a/src/gcc/testsuite/gcc.dg/ipa/iinline-5.c
++++ b/src/gcc/testsuite/gcc.dg/ipa/iinline-5.c
+@@ -121,4 +121,3 @@ int main (int argc, char **argv)
+ 
+ 
+ /* { dg-final { scan-ipa-dump-not "wrong_target\[^\\n\]*inline copy in" "inline"  } } */
+-/* { dg-final { cleanup-ipa-dump "inline" } } */
+--- a/src/gcc/testsuite/gcc.dg/ipa/iinline-6.c
++++ b/src/gcc/testsuite/gcc.dg/ipa/iinline-6.c
+@@ -69,4 +69,3 @@ int main (int argc, char **argv)
+ 
+ 
+ /* { dg-final { scan-ipa-dump-not "wrong_target\[^\\n\]*inline copy in" "inline"  } } */
+-/* { dg-final { cleanup-ipa-dump "inline" } } */
+--- a/src/gcc/testsuite/gcc.dg/ipa/iinline-7.c
++++ b/src/gcc/testsuite/gcc.dg/ipa/iinline-7.c
+@@ -154,4 +154,3 @@ int main (int argc, char **argv)
+ 
+ 
+ /* { dg-final { scan-ipa-dump-not "wrong_target\[^\\n\]*inline copy in" "inline"  } } */
+-/* { dg-final { cleanup-ipa-dump "inline" } } */
+--- a/src/gcc/testsuite/gcc.dg/ipa/inline-1.c
++++ b/src/gcc/testsuite/gcc.dg/ipa/inline-1.c
+@@ -34,4 +34,3 @@ void foo (int invariant, struct bah invariant2)
+ /* op7 change.  */
+ /* { dg-final { scan-ipa-dump-not "op7 is compile time invariant"  "inline"  } } */
+ /* { dg-final { scan-ipa-dump-not "op7 change"  "inline"  } } */
+-/* { dg-final { cleanup-ipa-dump "inline" } } */
+--- a/src/gcc/testsuite/gcc.dg/ipa/inline-2.c
++++ b/src/gcc/testsuite/gcc.dg/ipa/inline-2.c
+@@ -31,4 +31,3 @@ void foo (int invariant)
+ /* { dg-final { scan-ipa-dump "op2 change 10.000000. of time"  "inline"  } } */
+ /* After inlining bar into foo, op3 is invariant within both loops.  */
+ /* { dg-final { scan-ipa-dump "op3 change 1.000000. of time"  "inline"  } } */
+-/* { dg-final { cleanup-ipa-dump "inline" } } */
+--- a/src/gcc/testsuite/gcc.dg/ipa/inline-3.c
++++ b/src/gcc/testsuite/gcc.dg/ipa/inline-3.c
+@@ -22,4 +22,3 @@ int foo (int invariant)
+ 
+ 
+ /* { dg-final { scan-ipa-dump "Scaling time by probability:0.100000"  "inline"  } } */
+-/* { dg-final { cleanup-ipa-dump "inline" } } */
+--- a/src/gcc/testsuite/gcc.dg/ipa/inline-4.c
++++ b/src/gcc/testsuite/gcc.dg/ipa/inline-4.c
+@@ -29,4 +29,3 @@ int foo (int invariant)
+ /* { dg-final { scan-ipa-dump "Inlined 1 calls, eliminated 0 functions"  "inline"  } } */
+ /* Call to work_hard should be detected as optimized out.  */
+ /* { dg-final { scan-ipa-dump-times "predicate: .false." 8 "inline"  } } */
+-/* { dg-final { cleanup-ipa-dump "inline" } } */
+--- a/src/gcc/testsuite/gcc.dg/ipa/inline-5.c
++++ b/src/gcc/testsuite/gcc.dg/ipa/inline-5.c
+@@ -36,4 +36,3 @@ accessreference (struct a *a)
+ 
+ /* { dg-final { scan-ipa-dump-times "Will be eliminated" 4 "inline" { xfail { { hppa*-*-* } && { ! lp64 } } } } } */
+ /* { dg-final { scan-ipa-dump-times "50. will be eliminated" 1 "inline"  } } */
+-/* { dg-final { cleanup-ipa-dump "inline" } } */
+--- a/src/gcc/testsuite/gcc.dg/ipa/inline-6.c
++++ b/src/gcc/testsuite/gcc.dg/ipa/inline-6.c
+@@ -45,4 +45,3 @@ main()
+ } 
+ /* Even if function is huge, inlining it will save code.  */
+ /* { dg-final { scan-ipa-dump-times "Inlined into" 2 "inline"  } } */
+-/* { dg-final { cleanup-ipa-dump "inline" } } */
+--- a/src/gcc/testsuite/gcc.dg/ipa/inline-7.c
++++ b/src/gcc/testsuite/gcc.dg/ipa/inline-7.c
+@@ -22,4 +22,3 @@ m()
+  a(0);
+ }
+ /* { dg-final { scan-tree-dump-times "Inlining a into m" 1 "einline"  } } */
+-/* { dg-final { cleanup-tree-dump "einline" } } */
+--- a/src/gcc/testsuite/gcc.dg/ipa/inlinehint-1.c
++++ b/src/gcc/testsuite/gcc.dg/ipa/inlinehint-1.c
+@@ -18,4 +18,3 @@ m()
+   test (10);
+ }
+ /* { dg-final { scan-ipa-dump "loop_iterations"  "inline"  } } */
+-/* { dg-final { cleanup-ipa-dump "inline" } } */
+--- a/src/gcc/testsuite/gcc.dg/ipa/inlinehint-2.c
++++ b/src/gcc/testsuite/gcc.dg/ipa/inlinehint-2.c
+@@ -14,4 +14,3 @@ m(void **p)
+   t (10, p);
+ }
+ /* { dg-final { scan-ipa-dump "loop_stride"  "inline"  } } */
+-/* { dg-final { cleanup-ipa-dump "inline" } } */
+--- a/src/gcc/testsuite/gcc.dg/ipa/inlinehint-3.c
++++ b/src/gcc/testsuite/gcc.dg/ipa/inlinehint-3.c
+@@ -38,4 +38,3 @@ main()
+ /* { dg-final { scan-ipa-dump "same_scc"  "inline"  } } */
+ /* Main is not in scc, the two functions are.  */
+ /* { dg-final { scan-ipa-dump-times "In SCC" 2 "inline"  } } */
+-/* { dg-final { cleanup-ipa-dump "inline" } } */
+--- a/src/gcc/testsuite/gcc.dg/ipa/inlinehint-4.c
++++ b/src/gcc/testsuite/gcc.dg/ipa/inlinehint-4.c
+@@ -37,4 +37,3 @@ test (int i)
+ /* { dg-final { scan-ipa-dump "Wrapper penalty"  "inline"  } } */
+ /* { dg-final { scan-ipa-dump-not "Inlining lookup_slow to lookup"  "inline"  } } */
+ /* { dg-final { scan-ipa-dump "Inlining lookup to test"  "inline"  } } */
+-/* { dg-final { cleanup-ipa-dump "inline" } } */
+--- a/src/gcc/testsuite/gcc.dg/ipa/ipa-1.c
++++ b/src/gcc/testsuite/gcc.dg/ipa/ipa-1.c
+@@ -26,6 +26,5 @@ int main ()
+ 
+ /* { dg-final { scan-ipa-dump "Creating a specialized node of f" "cp" } } */
+ /* { dg-final { scan-ipa-dump "replacing param .0 a with const 7" "cp"  } } */
+-/* { dg-final { cleanup-ipa-dump "cp" } } */
+ 
+ 
+--- a/src/gcc/testsuite/gcc.dg/ipa/ipa-2.c
++++ b/src/gcc/testsuite/gcc.dg/ipa/ipa-2.c
+@@ -24,4 +24,3 @@ int main ()
+ 
+ /* { dg-final { scan-ipa-dump "Creating a specialized node of f" "cp" } } */
+ /* { dg-final { scan-ipa-dump "replacing param .0 a with const 7" "cp"  } } */
+-/* { dg-final { cleanup-ipa-dump "cp" } } */
+--- a/src/gcc/testsuite/gcc.dg/ipa/ipa-3.c
++++ b/src/gcc/testsuite/gcc.dg/ipa/ipa-3.c
+@@ -33,4 +33,3 @@ int main ()
+ /* { dg-final { scan-ipa-dump "Creating a specialized node of g" "cp" } } */
+ /* { dg-final { scan-ipa-dump "replacing param .0 b with const 7" "cp"  } } */
+ /* { dg-final { scan-ipa-dump "replacing param .1 c with const 3" "cp"  } } */
+-/* { dg-final { cleanup-ipa-dump "cp" } } */
+--- a/src/gcc/testsuite/gcc.dg/ipa/ipa-4.c
++++ b/src/gcc/testsuite/gcc.dg/ipa/ipa-4.c
+@@ -27,4 +27,3 @@ int main ()
+ 
+ /* { dg-final { scan-ipa-dump "Creating a specialized node of f" "cp"  } } */
+ /* { dg-final { scan-ipa-dump-times "replacing param .0 a with const 7" 1 "cp"  } } */
+-/* { dg-final { cleanup-ipa-dump "cp" } } */
+--- a/src/gcc/testsuite/gcc.dg/ipa/ipa-5.c
++++ b/src/gcc/testsuite/gcc.dg/ipa/ipa-5.c
+@@ -30,4 +30,3 @@ int main ()
+ /* { dg-final { scan-ipa-dump-times "Creating a specialized node" 3 "cp"  } } */
+ /* { dg-final { scan-ipa-dump "replacing param .1 c with const 3" "cp"  } } */
+ /* { dg-final { scan-ipa-dump "replacing param .0 a with const 7" "cp"  } } */
+-/* { dg-final { cleanup-ipa-dump "cp" } } */
+--- a/src/gcc/testsuite/gcc.dg/ipa/ipa-7.c
++++ b/src/gcc/testsuite/gcc.dg/ipa/ipa-7.c
+@@ -28,6 +28,5 @@ int main ()
+ 
+ /* { dg-final { scan-ipa-dump "Creating a specialized node of f" "cp" } } */
+ /* { dg-final { scan-ipa-dump-times "replacing param .. . with const 7" 1 "cp" } } */
+-/* { dg-final { cleanup-ipa-dump "cp" } } */
+ 
+ 
+--- a/src/gcc/testsuite/gcc.dg/ipa/ipa-8.c
++++ b/src/gcc/testsuite/gcc.dg/ipa/ipa-8.c
+@@ -26,6 +26,5 @@ int main ()
+ /* { dg-final { scan-ipa-dump "replacing param .0 a with const 7" "cp"  } } */
+ /* { dg-final { scan-ipa-dump "Creating a specialized node of g" "cp" } } */
+ /* { dg-final { scan-ipa-dump "replacing param .0 b with const 7" "cp"  } } */
+-/* { dg-final { cleanup-ipa-dump "cp" } } */
+ 
+ 
+--- a/src/gcc/testsuite/gcc.dg/ipa/ipa-clone-1.c
++++ b/src/gcc/testsuite/gcc.dg/ipa/ipa-clone-1.c
+@@ -17,4 +17,3 @@ bar (int arg)
+ 
+ /* { dg-final { scan-assembler "test_section" } } */
+ /* { dg-final { scan-ipa-dump "Creating a specialized node of foo" "cp" } } */
+-/* { dg-final { cleanup-ipa-dump "cp" } } */
+--- a/src/gcc/testsuite/gcc.dg/ipa/ipa-icf-1.c
++++ b/src/gcc/testsuite/gcc.dg/ipa/ipa-icf-1.c
+@@ -58,4 +58,3 @@ int main(int argc, char **argv)
+ 
+ /* { dg-final { scan-ipa-dump "Semantic equality hit:x2->x1" "icf"  } } */
+ /* { dg-final { scan-ipa-dump "Equal symbols: 1" "icf"  } } */
+-/* { dg-final { cleanup-ipa-dump "icf" } } */
+--- a/src/gcc/testsuite/gcc.dg/ipa/ipa-icf-10.c
++++ b/src/gcc/testsuite/gcc.dg/ipa/ipa-icf-10.c
+@@ -31,4 +31,3 @@ int main(int argc, char **argv)
+ 
+ /* { dg-final { scan-ipa-dump "Semantic equality hit:funkce->ferda" "icf"  } } */
+ /* { dg-final { scan-ipa-dump "Equal symbols: 1" "icf"  } } */
+-/* { dg-final { cleanup-ipa-dump "icf" } } */
+--- a/src/gcc/testsuite/gcc.dg/ipa/ipa-icf-11.c
++++ b/src/gcc/testsuite/gcc.dg/ipa/ipa-icf-11.c
+@@ -26,4 +26,3 @@ int main(int argc, char **argv)
+ 
+ /* { dg-final { scan-ipa-dump "Semantic equality hit:f1->f0" "icf"  } } */
+ /* { dg-final { scan-ipa-dump "Equal symbols: 1" "icf"  } } */
+-/* { dg-final { cleanup-ipa-dump "icf" } } */
+--- a/src/gcc/testsuite/gcc.dg/ipa/ipa-icf-12.c
++++ b/src/gcc/testsuite/gcc.dg/ipa/ipa-icf-12.c
+@@ -75,4 +75,3 @@ int main(int argc, char **argv)
+ 
+ /* { dg-final { scan-ipa-dump "Semantic equality hit:nsd->gcd" "icf"  } } */
+ /* { dg-final { scan-ipa-dump "Equal symbols: 1" "icf"  } } */
+-/* { dg-final { cleanup-ipa-dump "icf" } } */
+--- a/src/gcc/testsuite/gcc.dg/ipa/ipa-icf-13.c
++++ b/src/gcc/testsuite/gcc.dg/ipa/ipa-icf-13.c
+@@ -191,4 +191,3 @@ int main(int argc, char **argv)
+ /* { dg-final { scan-ipa-dump "Semantic equality hit:nsd_different_result2->nsd_different_result" "icf"  } } */
+ /* { dg-final { scan-ipa-dump "Semantic equality hit:nsd->gcd" "icf"  } } */
+ /* { dg-final { scan-ipa-dump "Equal symbols: 3" "icf"  } } */
+-/* { dg-final { cleanup-ipa-dump "icf" } } */
+--- a/src/gcc/testsuite/gcc.dg/ipa/ipa-icf-14.c
++++ b/src/gcc/testsuite/gcc.dg/ipa/ipa-icf-14.c
+@@ -44,4 +44,3 @@ int main(int argc, char **argv)
+ 
+ /* { dg-final { scan-ipa-dump-not "Semantic equality hit:" "icf"  } } */
+ /* { dg-final { scan-ipa-dump "Equal symbols: 0" "icf"  } } */
+-/* { dg-final { cleanup-ipa-dump "icf" } } */
+--- a/src/gcc/testsuite/gcc.dg/ipa/ipa-icf-15.c
++++ b/src/gcc/testsuite/gcc.dg/ipa/ipa-icf-15.c
+@@ -43,4 +43,3 @@ int main(int argc, char **argv)
+ }
+ 
+ /* { dg-final { scan-ipa-dump "Equal symbols: 0" "icf"  } } */
+-/* { dg-final { cleanup-ipa-dump "icf" } } */
+--- a/src/gcc/testsuite/gcc.dg/ipa/ipa-icf-16.c
++++ b/src/gcc/testsuite/gcc.dg/ipa/ipa-icf-16.c
+@@ -24,4 +24,3 @@ int main()
+ 
+ /* { dg-final { scan-ipa-dump "Semantic equality hit:bar->foo" "icf"  } } */
+ /* { dg-final { scan-ipa-dump "Equal symbols: 1" "icf"  } } */
+-/* { dg-final { cleanup-ipa-dump "icf" } } */
+--- a/src/gcc/testsuite/gcc.dg/ipa/ipa-icf-17.c
++++ b/src/gcc/testsuite/gcc.dg/ipa/ipa-icf-17.c
+@@ -34,4 +34,3 @@ int main()
+ 
+ /* { dg-final { scan-ipa-dump-not "Semantic equality hit:" "icf"  } } */
+ /* { dg-final { scan-ipa-dump "Equal symbols: 0" "icf"  } } */
+-/* { dg-final { cleanup-ipa-dump "icf" } } */
+--- a/src/gcc/testsuite/gcc.dg/ipa/ipa-icf-18.c
++++ b/src/gcc/testsuite/gcc.dg/ipa/ipa-icf-18.c
+@@ -34,4 +34,3 @@ int main()
+ 
+ /* { dg-final { scan-ipa-dump "Semantic equality hit:bar->foo" "icf"  } } */
+ /* { dg-final { scan-ipa-dump "Equal symbols: 1" "icf"  } } */
+-/* { dg-final { cleanup-ipa-dump "icf" } } */
+--- a/src/gcc/testsuite/gcc.dg/ipa/ipa-icf-19.c
++++ b/src/gcc/testsuite/gcc.dg/ipa/ipa-icf-19.c
+@@ -34,4 +34,3 @@ int main()
+ 
+ /* { dg-final { scan-ipa-dump-not "Semantic equality hit:" "icf"  } } */
+ /* { dg-final { scan-ipa-dump "Equal symbols: 0" "icf"  } } */
+-/* { dg-final { cleanup-ipa-dump "icf" } } */
+--- a/src/gcc/testsuite/gcc.dg/ipa/ipa-icf-2.c
++++ b/src/gcc/testsuite/gcc.dg/ipa/ipa-icf-2.c
+@@ -66,4 +66,3 @@ int main(int argc, char **argv)
+ 
+ /* { dg-final { scan-ipa-dump "Semantic equality hit:f2->f1" "icf"  } } */
+ /* { dg-final { scan-ipa-dump "Equal symbols: 1" "icf"  } } */
+-/* { dg-final { cleanup-ipa-dump "icf" } } */
+--- a/src/gcc/testsuite/gcc.dg/ipa/ipa-icf-20.c
++++ b/src/gcc/testsuite/gcc.dg/ipa/ipa-icf-20.c
+@@ -25,4 +25,3 @@ int main()
+ 
+ /* { dg-final { scan-ipa-dump "Semantic equality hit:bar->foo" "icf"  } } */
+ /* { dg-final { scan-ipa-dump "Equal symbols: 1" "icf"  } } */
+-/* { dg-final { cleanup-ipa-dump "icf" } } */
+--- a/src/gcc/testsuite/gcc.dg/ipa/ipa-icf-21.c
++++ b/src/gcc/testsuite/gcc.dg/ipa/ipa-icf-21.c
+@@ -24,4 +24,3 @@ int main()
+ 
+ /* { dg-final { scan-ipa-dump "Semantic equality hit:bar->foo" "icf"  } } */
+ /* { dg-final { scan-ipa-dump "Equal symbols: 1" "icf"  } } */
+-/* { dg-final { cleanup-ipa-dump "icf" } } */
+--- a/src/gcc/testsuite/gcc.dg/ipa/ipa-icf-22.c
++++ b/src/gcc/testsuite/gcc.dg/ipa/ipa-icf-22.c
+@@ -34,4 +34,3 @@ int main()
+ 
+ /* { dg-final { scan-ipa-dump-not "Semantic equality hit:" "icf"  } } */
+ /* { dg-final { scan-ipa-dump "Equal symbols: 0" "icf"  } } */
+-/* { dg-final { cleanup-ipa-dump "icf" } } */
+--- a/src/gcc/testsuite/gcc.dg/ipa/ipa-icf-23.c
++++ b/src/gcc/testsuite/gcc.dg/ipa/ipa-icf-23.c
+@@ -26,4 +26,3 @@ int main()
+ 
+ /* { dg-final { scan-ipa-dump "Semantic equality hit:bar->foo" "icf"  } } */
+ /* { dg-final { scan-ipa-dump "Equal symbols: 1" "icf"  } } */
+-/* { dg-final { cleanup-ipa-dump "icf" } } */
+--- a/src/gcc/testsuite/gcc.dg/ipa/ipa-icf-24.c
++++ b/src/gcc/testsuite/gcc.dg/ipa/ipa-icf-24.c
+@@ -33,4 +33,3 @@ int main()
+ }
+ 
+ /* { dg-final { scan-ipa-dump "Equal symbols: 0" "icf"  } } */
+-/* { dg-final { cleanup-ipa-dump "icf" } } */
+--- a/src/gcc/testsuite/gcc.dg/ipa/ipa-icf-25.c
++++ b/src/gcc/testsuite/gcc.dg/ipa/ipa-icf-25.c
+@@ -49,4 +49,3 @@ int main()
+ /* { dg-final { scan-ipa-dump "Semantic equality hit:bar->foo" "icf"  } } */
+ /* { dg-final { scan-ipa-dump "Semantic equality hit:zap->zip" "icf"  } } */
+ /* { dg-final { scan-ipa-dump "Equal symbols: 2" "icf"  } } */
+-/* { dg-final { cleanup-ipa-dump "icf" } } */
+--- a/src/gcc/testsuite/gcc.dg/ipa/ipa-icf-26.c
++++ b/src/gcc/testsuite/gcc.dg/ipa/ipa-icf-26.c
+@@ -40,4 +40,3 @@ int main()
+ 
+ /* { dg-final { scan-ipa-dump "Semantic equality hit:remove->destroy" "icf"  } } */
+ /* { dg-final { scan-ipa-dump "Equal symbols: 1" "icf"  } } */
+-/* { dg-final { cleanup-ipa-dump "icf" } } */
+--- a/src/gcc/testsuite/gcc.dg/ipa/ipa-icf-27.c
++++ b/src/gcc/testsuite/gcc.dg/ipa/ipa-icf-27.c
+@@ -27,4 +27,3 @@ int main()
+ 
+ /* { dg-final { scan-ipa-dump "Semantic equality hit:remove->destroy" "icf"  } } */
+ /* { dg-final { scan-ipa-dump "Equal symbols: 1" "icf"  } } */
+-/* { dg-final { cleanup-ipa-dump "icf" } } */
+--- a/src/gcc/testsuite/gcc.dg/ipa/ipa-icf-28.c
++++ b/src/gcc/testsuite/gcc.dg/ipa/ipa-icf-28.c
+@@ -21,4 +21,3 @@ int main()
+ }
+ /* { dg-final { scan-ipa-dump "Equal symbols: 0" "icf"  } } */
+ /* { dg-final { scan-ipa-dump "attribute values are different" "icf"  } } */
+-/* { dg-final { cleanup-ipa-dump "icf" } } */
+--- a/src/gcc/testsuite/gcc.dg/ipa/ipa-icf-29.c
++++ b/src/gcc/testsuite/gcc.dg/ipa/ipa-icf-29.c
+@@ -27,4 +27,3 @@ int main()
+ }
+ 
+ /* { dg-final { scan-ipa-dump "Equal symbols: 0" "icf"  } } */
+-/* { dg-final { cleanup-ipa-dump "icf" } } */
+--- a/src/gcc/testsuite/gcc.dg/ipa/ipa-icf-3.c
++++ b/src/gcc/testsuite/gcc.dg/ipa/ipa-icf-3.c
+@@ -33,4 +33,3 @@ int main()
+ 
+ /* { dg-final { scan-ipa-dump "Semantic equality hit:bar->foo" "icf"  } } */
+ /* { dg-final { scan-ipa-dump "Equal symbols: 1" "icf"  } } */
+-/* { dg-final { cleanup-ipa-dump "icf" } } */
+--- a/src/gcc/testsuite/gcc.dg/ipa/ipa-icf-30.c
++++ b/src/gcc/testsuite/gcc.dg/ipa/ipa-icf-30.c
+@@ -27,4 +27,3 @@ int main()
+ }
+ 
+ /* { dg-final { scan-ipa-dump "Equal symbols: 1" "icf"  } } */
+-/* { dg-final { cleanup-ipa-dump "icf" } } */
+--- a/src/gcc/testsuite/gcc.dg/ipa/ipa-icf-32.c
++++ b/src/gcc/testsuite/gcc.dg/ipa/ipa-icf-32.c
+@@ -21,4 +21,3 @@ int main()
+ 
+ /* { dg-final { scan-ipa-dump "optimization flags are different" "icf"  } } */
+ /* { dg-final { scan-ipa-dump "Equal symbols: 0" "icf"  } } */
+-/* { dg-final { cleanup-ipa-dump "icf" } } */
+--- a/src/gcc/testsuite/gcc.dg/ipa/ipa-icf-33.c
++++ b/src/gcc/testsuite/gcc.dg/ipa/ipa-icf-33.c
+@@ -23,4 +23,3 @@ int main()
+ }
+ 
+ /* { dg-final { scan-ipa-dump "Equal symbols: 1" "icf"  } } */
+-/* { dg-final { cleanup-ipa-dump "icf" } } */
+--- a/src/gcc/testsuite/gcc.dg/ipa/ipa-icf-34.c
++++ b/src/gcc/testsuite/gcc.dg/ipa/ipa-icf-34.c
+@@ -26,4 +26,3 @@ int main()
+ }
+ 
+ /* { dg-final { scan-ipa-dump "Equal symbols: 1" "icf"  } } */
+-/* { dg-final { cleanup-ipa-dump "icf" } } */
+--- a/src/gcc/testsuite/gcc.dg/ipa/ipa-icf-35.c
++++ b/src/gcc/testsuite/gcc.dg/ipa/ipa-icf-35.c
+@@ -28,4 +28,3 @@ int main()
+ /* { dg-final { scan-ipa-dump "Semantic equality hit:f2->f1" "icf"  } } */
+ /* { dg-final { scan-ipa-dump "Semantic equality hit:d->c" "icf"  } } */
+ /* { dg-final { scan-ipa-dump "Semantic equality hit:b->a" "icf"  } } */
+-/* { dg-final { cleanup-ipa-dump "icf" } } */
+--- a/src/gcc/testsuite/gcc.dg/ipa/ipa-icf-36.c
++++ b/src/gcc/testsuite/gcc.dg/ipa/ipa-icf-36.c
+@@ -34,4 +34,3 @@ int t(int tt)
+ /* { dg-final { scan-ipa-dump "Semantic equality hit:f->e" "icf"  } } */
+ /* { dg-final { scan-ipa-dump "Semantic equality hit:h->g" "icf"  } } */
+ /* { dg-final { scan-ipa-dump "Semantic equality hit:k->i" "icf"  } } */
+-/* { dg-final { cleanup-ipa-dump "icf" } } */
+--- a/src/gcc/testsuite/gcc.dg/ipa/ipa-icf-37.c
++++ b/src/gcc/testsuite/gcc.dg/ipa/ipa-icf-37.c
+@@ -34,4 +34,3 @@ int t(int tt)
+ /* { dg-final { scan-ipa-dump "Semantic equality hit:f->e" "icf"  } } */
+ /* { dg-final { scan-ipa-dump "Semantic equality hit:h->g" "icf"  } } */
+ /* { dg-final { scan-ipa-dump "Semantic equality hit:j->i" "icf"  } } */
+-/* { dg-final { cleanup-ipa-dump "icf" } } */
+--- a/src/gcc/testsuite/gcc.dg/ipa/ipa-icf-4.c
++++ b/src/gcc/testsuite/gcc.dg/ipa/ipa-icf-4.c
+@@ -29,4 +29,3 @@ int main(int argc, char **argv)
+ 
+ /* { dg-final { scan-ipa-dump-not "Semantic equality hit:" "icf"  } } */
+ /* { dg-final { scan-ipa-dump "Equal symbols: 0" "icf"  } } */
+-/* { dg-final { cleanup-ipa-dump "icf" } } */
+--- a/src/gcc/testsuite/gcc.dg/ipa/ipa-icf-5.c
++++ b/src/gcc/testsuite/gcc.dg/ipa/ipa-icf-5.c
+@@ -53,4 +53,3 @@ int main()
+ 
+ /* { dg-final { scan-ipa-dump "Semantic equality hit:f2->f1" "icf"  } } */
+ /* { dg-final { scan-ipa-dump "Equal symbols: 1" "icf"  } } */
+-/* { dg-final { cleanup-ipa-dump "icf" } } */
+--- a/src/gcc/testsuite/gcc.dg/ipa/ipa-icf-6.c
++++ b/src/gcc/testsuite/gcc.dg/ipa/ipa-icf-6.c
+@@ -33,4 +33,3 @@ int main()
+ 
+ /* { dg-final { scan-ipa-dump-not "Semantic equality hit:" "icf"  } } */
+ /* { dg-final { scan-ipa-dump "Equal symbols: 0" "icf"  } } */
+-/* { dg-final { cleanup-ipa-dump "icf" } } */
+--- a/src/gcc/testsuite/gcc.dg/ipa/ipa-icf-7.c
++++ b/src/gcc/testsuite/gcc.dg/ipa/ipa-icf-7.c
+@@ -70,4 +70,3 @@ int main()
+ 
+ /* { dg-final { scan-ipa-dump "Semantic equality hit:foo2->foo" "icf"  } } */
+ /* { dg-final { scan-ipa-dump "Equal symbols: 1" "icf"  } } */
+-/* { dg-final { cleanup-ipa-dump "icf" } } */
+--- a/src/gcc/testsuite/gcc.dg/ipa/ipa-icf-8.c
++++ b/src/gcc/testsuite/gcc.dg/ipa/ipa-icf-8.c
+@@ -42,4 +42,3 @@ int main(int argc, char **argv)
+ 
+ /* { dg-final { scan-ipa-dump "Semantic equality hit:fce2->fce1" "icf"  } } */
+ /* { dg-final { scan-ipa-dump "Equal symbols: 1" "icf"  } } */
+-/* { dg-final { cleanup-ipa-dump "icf" } } */
+--- a/src/gcc/testsuite/gcc.dg/ipa/ipa-icf-9.c
++++ b/src/gcc/testsuite/gcc.dg/ipa/ipa-icf-9.c
+@@ -30,4 +30,3 @@ int main(int argc, char **argv)
+ 
+ /* { dg-final { scan-ipa-dump-not "Semantic equality hit:" "icf"  } } */
+ /* { dg-final { scan-ipa-dump "Equal symbols: 0" "icf"  } } */
+-/* { dg-final { cleanup-ipa-dump "icf" } } */
+--- a/src/gcc/testsuite/gcc.dg/ipa/ipa-pta-1.c
++++ b/src/gcc/testsuite/gcc.dg/ipa/ipa-pta-1.c
+@@ -47,4 +47,3 @@ int main()
+ /* { dg-final { scan-ipa-dump "bar.arg1 = { a }" "pta" } } */
+ /* { dg-final { scan-ipa-dump "foo.arg0 = { a }" "pta" } } */
+ /* { dg-final { scan-ipa-dump "foo.arg1 = { a }" "pta" } } */
+-/* { dg-final { cleanup-ipa-dump "pta" } } */
+--- a/src/gcc/testsuite/gcc.dg/ipa/ipa-pta-10.c
++++ b/src/gcc/testsuite/gcc.dg/ipa/ipa-pta-10.c
+@@ -27,4 +27,3 @@ int main()
+    stuff through it.  */
+ 
+ /* { dg-final { scan-ipa-dump "ESCAPED = { (ESCAPED )?(NONLOCAL )?}" "pta" } } */
+-/* { dg-final { cleanup-ipa-dump "pta" } } */
+--- a/src/gcc/testsuite/gcc.dg/ipa/ipa-pta-11.c
++++ b/src/gcc/testsuite/gcc.dg/ipa/ipa-pta-11.c
+@@ -33,4 +33,3 @@ int main()
+    we should have i, r and s in ESCAPED as well.  */
+ 
+ /* { dg-final { scan-ipa-dump "ESCAPED = { ESCAPED NONLOCAL l k }" "pta" } } */
+-/* { dg-final { cleanup-ipa-dump "pta" } } */
+--- a/src/gcc/testsuite/gcc.dg/ipa/ipa-pta-13.c
++++ b/src/gcc/testsuite/gcc.dg/ipa/ipa-pta-13.c
+@@ -58,5 +58,3 @@ int main()
+   return x;
+ }
+ 
+-/* { dg-final { cleanup-ipa-dump "pta" } } */
+-/* { dg-final { cleanup-tree-dump "fre2" } } */
+--- a/src/gcc/testsuite/gcc.dg/ipa/ipa-pta-14.c
++++ b/src/gcc/testsuite/gcc.dg/ipa/ipa-pta-14.c
+@@ -29,4 +29,3 @@ int main()
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-ipa-dump "pta" } } */
+--- a/src/gcc/testsuite/gcc.dg/ipa/ipa-pta-16.c
++++ b/src/gcc/testsuite/gcc.dg/ipa/ipa-pta-16.c
+@@ -30,4 +30,3 @@ int main()
+ }
+ 
+ /* { dg-final { scan-ipa-dump "y.\[0-9\]*\\\+\[0-9\]* = { i }" "pta" } } */
+-/* { dg-final { cleanup-ipa-dump "pta" } } */
+--- a/src/gcc/testsuite/gcc.dg/ipa/ipa-pta-2.c
++++ b/src/gcc/testsuite/gcc.dg/ipa/ipa-pta-2.c
+@@ -22,4 +22,3 @@ int main()
+    are properly adjusted.  */
+ 
+ /* { dg-final { scan-ipa-dump "foo.arg0 = { ESCAPED NONLOCAL }" "pta" } } */
+-/* { dg-final { cleanup-ipa-dump "pta" } } */
+--- a/src/gcc/testsuite/gcc.dg/ipa/ipa-pta-3.c
++++ b/src/gcc/testsuite/gcc.dg/ipa/ipa-pta-3.c
+@@ -24,5 +24,3 @@ int main()
+ /* { dg-final { scan-ipa-dump "foo.arg0 = &a" "pta" } } */
+ /* { dg-final { scan-ipa-dump "foo.arg1 = &b" "pta" } } */
+ /* { dg-final { scan-tree-dump "Replaced \\\*p_2\\\(D\\\) with 1" "fre2" } } */
+-/* { dg-final { cleanup-tree-dump "fre2" } } */
+-/* { dg-final { cleanup-ipa-dump "pta" } } */
+--- a/src/gcc/testsuite/gcc.dg/ipa/ipa-pta-4.c
++++ b/src/gcc/testsuite/gcc.dg/ipa/ipa-pta-4.c
+@@ -29,5 +29,3 @@ int main()
+ /* { dg-final { scan-ipa-dump "foo.arg0 = &a" "pta" } } */
+ /* { dg-final { scan-ipa-dump "foo.arg1 = &b" "pta" } } */
+ /* { dg-final { scan-tree-dump "Replaced \\\*p_2\\\(D\\\) with 1" "fre2" } } */
+-/* { dg-final { cleanup-tree-dump "fre2" } } */
+-/* { dg-final { cleanup-ipa-dump "pta" } } */
+--- a/src/gcc/testsuite/gcc.dg/ipa/ipa-pta-5.c
++++ b/src/gcc/testsuite/gcc.dg/ipa/ipa-pta-5.c
+@@ -23,4 +23,3 @@ int main()
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-ipa-dump "pta" } } */
+--- a/src/gcc/testsuite/gcc.dg/ipa/ipa-pta-6.c
++++ b/src/gcc/testsuite/gcc.dg/ipa/ipa-pta-6.c
+@@ -22,4 +22,3 @@ int main()
+    still properly account for the store via *p in foo.  */
+ 
+ /* { dg-final { scan-ipa-dump "ESCAPED = { }" "pta" } } */
+-/* { dg-final { cleanup-ipa-dump "pta" } } */
+--- a/src/gcc/testsuite/gcc.dg/ipa/ipa-sra-1.c
++++ b/src/gcc/testsuite/gcc.dg/ipa/ipa-sra-1.c
+@@ -37,4 +37,3 @@ main (int argc, char *argv[])
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "About to replace expr" 2 "eipa_sra" } } */
+-/* { dg-final { cleanup-tree-dump "eipa_sra" } } */
+--- a/src/gcc/testsuite/gcc.dg/ipa/ipa-sra-2.c
++++ b/src/gcc/testsuite/gcc.dg/ipa/ipa-sra-2.c
+@@ -49,4 +49,3 @@ int main (int argc, char *argv[])
+ /* { dg-final { scan-tree-dump "About to replace expr cow_.*D.->green with ISRA" "eipa_sra"  } } */
+ /* { dg-final { scan-tree-dump "About to replace expr calf_.*D.->red with \\*ISRA" "eipa_sra"  } } */
+ /* { dg-final { scan-tree-dump "About to replace expr calf_.*D.->green with ISRA" "eipa_sra"  } } */
+-/* { dg-final { cleanup-tree-dump "eipa_sra" } } */
+--- a/src/gcc/testsuite/gcc.dg/ipa/ipa-sra-3.c
++++ b/src/gcc/testsuite/gcc.dg/ipa/ipa-sra-3.c
+@@ -36,4 +36,3 @@ void caller (void)
+ 
+ /* { dg-final { scan-tree-dump "base: z, remove_param" "eipa_sra"  } } */
+ /* { dg-final { scan-tree-dump "base: calf, remove_param" "eipa_sra"  } } */
+-/* { dg-final { cleanup-tree-dump "eipa_sra" } } */
+--- a/src/gcc/testsuite/gcc.dg/ipa/ipa-sra-4.c
++++ b/src/gcc/testsuite/gcc.dg/ipa/ipa-sra-4.c
+@@ -65,4 +65,3 @@ void caller (void)
+ /* { dg-final { scan-tree-dump "About to replace expr \\*l_.*D. with ISRA" "eipa_sra"  } } */
+ /* { dg-final { scan-tree-dump-times "About to replace expr \*j_.*D. with ISRA" 0 "eipa_sra"  } } */
+ /* { dg-final { scan-tree-dump-times "About to replace expr \*k_.*D. with ISRA" 0 "eipa_sra"  } } */
+-/* { dg-final { cleanup-tree-dump "eipa_sra" } } */
+--- a/src/gcc/testsuite/gcc.dg/ipa/ipa-sra-5.c
++++ b/src/gcc/testsuite/gcc.dg/ipa/ipa-sra-5.c
+@@ -17,4 +17,3 @@ int *caller (void)
+   return ox (&a, &b);
+ }
+ /* { dg-final { scan-tree-dump-times "base: j, remove_param" 0 "eipa_sra"  } } */
+-/* { dg-final { cleanup-tree-dump "eipa_sra" } } */
+--- a/src/gcc/testsuite/gcc.dg/ipa/ipa-sra-6.c
++++ b/src/gcc/testsuite/gcc.dg/ipa/ipa-sra-6.c
+@@ -31,4 +31,3 @@ int main (int argc, char *argv[])
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "foo " 1 "eipa_sra"  } } */
+-/* { dg-final { cleanup-tree-dump "eipa_sra" } } */
+--- a/src/gcc/testsuite/gcc.dg/ipa/ipacost-1.c
++++ b/src/gcc/testsuite/gcc.dg/ipa/ipacost-1.c
+@@ -58,5 +58,3 @@ main()
+ /* { dg-final { scan-ipa-dump-not "Creating a specialized node of i_can_not_be_propagated_fully/" "cp"  } } */
+ /* { dg-final { scan-tree-dump-not "i_can_be_propagated_fully " "optimized"  } } */
+ /* { dg-final { scan-tree-dump-not "i_can_be_propagated_fully2 " "optimized"  } } */
+-/* { dg-final { cleanup-ipa-dump "cp" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/ipa/ipacost-2.c
++++ b/src/gcc/testsuite/gcc.dg/ipa/ipacost-2.c
+@@ -77,5 +77,3 @@ main()
+ /* { dg-final { scan-ipa-dump-not "Creating a specialized node of i_can_not_be_propagated_fully/" "cp"  } } */
+ /* { dg-final { scan-tree-dump-not "i_can_be_propagated_fully \\(" "optimized"  } } */
+ /* { dg-final { scan-tree-dump-not "i_can_be_propagated_fully2 \\(" "optimized"  } } */
+-/* { dg-final { cleanup-ipa-dump "cp" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/ipa/ipcp-1.c
++++ b/src/gcc/testsuite/gcc.dg/ipa/ipcp-1.c
+@@ -47,6 +47,5 @@ main (int argc, char *argv[])
+ 
+ /* { dg-final { scan-ipa-dump "Creating a specialized node of f.*for all known contexts" "cp" } } */
+ /* { dg-final { scan-ipa-dump "replacing param .0 a with const 7" "cp"  } } */
+-/* { dg-final { cleanup-ipa-dump "cp" } } */
+ 
+ 
+--- a/src/gcc/testsuite/gcc.dg/ipa/ipcp-2.c
++++ b/src/gcc/testsuite/gcc.dg/ipa/ipcp-2.c
+@@ -96,4 +96,3 @@ top2 (int q)
+ /* { dg-final { scan-ipa-dump-times "Creating a specialized node of foo" 1 "cp" } } */
+ /* { dg-final { scan-ipa-dump-times "replacing param .. p with const 0" 3 "cp"  } } */
+ /* { dg-final { scan-ipa-dump "replacing param .0 s with const 4" "cp"  } } */
+-/* { dg-final { cleanup-ipa-dump "cp" } } */
+--- a/src/gcc/testsuite/gcc.dg/ipa/ipcp-3.c
++++ b/src/gcc/testsuite/gcc.dg/ipa/ipcp-3.c
+@@ -66,5 +66,4 @@ int main()
+ 
+ 
+ /* { dg-final { scan-ipa-dump "Creating a specialized node of mark_cell" "cp" } } */
+-/* { dg-final { cleanup-ipa-dump "cp" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/ipa/ipcp-4.c
++++ b/src/gcc/testsuite/gcc.dg/ipa/ipcp-4.c
+@@ -63,6 +63,5 @@ main (int argc, char *argv[])
+ /* { dg-final { scan-ipa-dump-not "Creating a specialized node of h.*for all known contexts" "cp" } } */
+ /* { dg-final { scan-ipa-dump-times "replacing param .0 a with const 7" 2 "cp"  } } */
+ /* { dg-final { scan-ipa-dump "replacing param .0 a with const 11" "cp"  } } */
+-/* { dg-final { cleanup-ipa-dump "cp" } } */
+ 
+ 
+--- a/src/gcc/testsuite/gcc.dg/ipa/ipcp-agg-1.c
++++ b/src/gcc/testsuite/gcc.dg/ipa/ipcp-agg-1.c
+@@ -32,6 +32,4 @@ entry (void)
+ 
+ /* { dg-final { scan-ipa-dump "Creating a specialized node of foo.*for all known contexts" "cp" } } */
+ /* { dg-final { scan-ipa-dump-times "Aggregate replacements:" 2 "cp" } } */
+-/* { dg-final { cleanup-ipa-dump "cp" } } */
+ /* { dg-final { scan-tree-dump-not "->c;" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/ipa/ipcp-agg-2.c
++++ b/src/gcc/testsuite/gcc.dg/ipa/ipcp-agg-2.c
+@@ -38,6 +38,4 @@ entry (int c)
+ }
+ /* { dg-final { scan-ipa-dump-times "Creating a specialized node of foo/\[0-9\]*\\." 2 "cp" } } */
+ /* { dg-final { scan-ipa-dump-times "Aggregate replacements:" 4 "cp" } } */
+-/* { dg-final { cleanup-ipa-dump "cp" } } */
+ /* { dg-final { scan-tree-dump-not "->c;" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/ipa/ipcp-agg-3.c
++++ b/src/gcc/testsuite/gcc.dg/ipa/ipcp-agg-3.c
+@@ -39,6 +39,4 @@ entry (int c)
+ /* { dg-final { scan-ipa-dump-times "Creating a specialized node of foo/\[0-9\]*\\." 2 "cp" } } */
+ /* { dg-final { scan-ipa-dump-times "Aggregate replacements: 1" 2 "cp" } } */
+ /* { dg-final { scan-ipa-dump-times "Aggregate replacements: 0" 2 "cp" } } */
+-/* { dg-final { cleanup-ipa-dump "cp" } } */
+ /* { dg-final { scan-tree-dump-not "->c;" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/ipa/ipcp-agg-4.c
++++ b/src/gcc/testsuite/gcc.dg/ipa/ipcp-agg-4.c
+@@ -57,6 +57,4 @@ entry2 (int c)
+ 
+ /* { dg-final { scan-ipa-dump-times "Creating a specialized node of foo/\[0-9\]*\\." 2 "cp" } } */
+ /* { dg-final { scan-ipa-dump-times "Aggregate replacements:" 4 "cp" } } */
+-/* { dg-final { cleanup-ipa-dump "cp" } } */
+ /* { dg-final { scan-tree-dump-not "->c;" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/ipa/ipcp-agg-5.c
++++ b/src/gcc/testsuite/gcc.dg/ipa/ipcp-agg-5.c
+@@ -63,6 +63,4 @@ entry2 (int c)
+ /* { dg-final { scan-ipa-dump-times "Creating a specialized node of foo/\[0-9\]*\\." 2 "cp" } } */
+ /* { dg-final { scan-ipa-dump-times "Creating a specialized node of bar/\[0-9\]*\\." 2 "cp" } } */
+ /* { dg-final { scan-ipa-dump-times "Aggregate replacements:" 8 "cp" } } */
+-/* { dg-final { cleanup-ipa-dump "cp" } } */
+ /* { dg-final { scan-tree-dump-not "->c;" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/ipa/ipcp-agg-6.c
++++ b/src/gcc/testsuite/gcc.dg/ipa/ipcp-agg-6.c
+@@ -70,6 +70,4 @@ entry2 (int c)
+ /* { dg-final { scan-ipa-dump-times "Creating a specialized node of bar/\[0-9\]*\\." 2 "cp" } } */
+ /* { dg-final { scan-ipa-dump "Creating a specialized node of bar_2.*for all known contexts" "cp" } } */
+ /* { dg-final { scan-ipa-dump-times "Aggregate replacements:" 10 "cp" } } */
+-/* { dg-final { cleanup-ipa-dump "cp" } } */
+ /* { dg-final { scan-tree-dump-not "->c;" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/ipa/ipcp-agg-7.c
++++ b/src/gcc/testsuite/gcc.dg/ipa/ipcp-agg-7.c
+@@ -49,6 +49,4 @@ entry (int c)
+ }
+ /* { dg-final { scan-ipa-dump-times "Clone of bar" 1 "cp" } } */
+ /* { dg-final { scan-ipa-dump-times "Clone of foo" 1 "cp" } } */
+-/* { dg-final { cleanup-ipa-dump "cp" } } */
+ /* { dg-final { scan-tree-dump-not "->c;" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/ipa/ipcp-agg-8.c
++++ b/src/gcc/testsuite/gcc.dg/ipa/ipcp-agg-8.c
+@@ -49,4 +49,3 @@ entry (int c)
+     }
+ }
+ /* { dg-final { scan-tree-dump "->b;" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/ipa/ipcp-agg-9.c
++++ b/src/gcc/testsuite/gcc.dg/ipa/ipcp-agg-9.c
+@@ -41,5 +41,3 @@ int test1 (void)
+ 
+ /* { dg-final { scan-ipa-dump "ipa-prop: Discovered an indirect call to a known target"  "cp"  } } */
+ /* { dg-final { scan-ipa-dump "hooray1\[^\\n\]*inline copy in hiphip1"  "inline"  } } */
+-/* { dg-final { cleanup-ipa-dump "cp" } } */
+-/* { dg-final { cleanup-ipa-dump "inline" } } */
+--- a/src/gcc/testsuite/gcc.dg/ipa/ipcp-ii-1.c
++++ b/src/gcc/testsuite/gcc.dg/ipa/ipcp-ii-1.c
+@@ -31,4 +31,3 @@ int main (int argc, int *argv[])
+ }
+ 
+ /* { dg-final { scan-ipa-dump "hooray\[^\\n\]*inline copy in hiphip.constprop"  "inline"  } } */
+-/* { dg-final { cleanup-ipa-dump "inline" } } */
+--- a/src/gcc/testsuite/gcc.dg/ipa/noclone-1.c
++++ b/src/gcc/testsuite/gcc.dg/ipa/noclone-1.c
+@@ -26,4 +26,3 @@ int main ()
+ 
+ 
+ /* { dg-final { scan-ipa-dump-times "versioned function" 0 "cp"  } } */
+-/* { dg-final { cleanup-ipa-dump "cp" } } */
+--- a/src/gcc/testsuite/gcc.dg/ipa/pr63569.c
++++ b/src/gcc/testsuite/gcc.dg/ipa/pr63569.c
+@@ -28,4 +28,3 @@ int h(int t, int *a)
+ }
+ 
+ /* { dg-final { scan-ipa-dump "Equal symbols: 0" "icf"  } } */
+-/* { dg-final { cleanup-ipa-dump "icf" } } */
+--- a/src/gcc/testsuite/gcc.dg/ipa/pr63595.c
++++ b/src/gcc/testsuite/gcc.dg/ipa/pr63595.c
+@@ -62,4 +62,3 @@ int main()
+ 
+ /* { dg-final { scan-ipa-dump "Equal symbols: 0" "icf"  } } */
+ /* { dg-final { scan-ipa-dump "PHI results are different" "icf"  } } */
+-/* { dg-final { cleanup-ipa-dump "icf" } } */
+--- a/src/gcc/testsuite/gcc.dg/ipa/pr63747.c
++++ b/src/gcc/testsuite/gcc.dg/ipa/pr63747.c
+@@ -37,4 +37,3 @@ int main()
+ }
+ 
+ /* { dg-final { scan-ipa-dump "Equal symbols: 0" "icf"  } } */
+-/* { dg-final { cleanup-ipa-dump "icf" } } */
+--- a/src/gcc/testsuite/gcc.dg/ipa/pr64307.c
++++ b/src/gcc/testsuite/gcc.dg/ipa/pr64307.c
+@@ -29,4 +29,3 @@ int main()
+ 
+ /* { dg-final { scan-ipa-dump "Semantic equality hit:real_part_2->real_part" "icf"  } } */
+ /* { dg-final { scan-ipa-dump "Equal symbols: 1" "icf"  } } */
+-/* { dg-final { cleanup-ipa-dump "icf" } } */
+--- a/src/gcc/testsuite/gcc.dg/ipa/pr65318.c
++++ b/src/gcc/testsuite/gcc.dg/ipa/pr65318.c
+@@ -15,4 +15,3 @@ main ()
+ }
+ 
+ /* { dg-final { scan-ipa-dump "Equal symbols: 0" "icf"  } } */
+-/* { dg-final { cleanup-ipa-dump "icf" } } */
+--- a/src/gcc/testsuite/gcc.dg/ipa/propalign-1.c
++++ b/src/gcc/testsuite/gcc.dg/ipa/propalign-1.c
+@@ -28,5 +28,3 @@ bar (void)
+ 
+ /* { dg-final { scan-ipa-dump "Adjusting alignment of param" "cp" } } */
+ /* { dg-final { scan-tree-dump-not "fail_the_test" "optimized" } } */
+-/* { dg-final { cleanup-ipa-dump "cp" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/ipa/propalign-2.c
++++ b/src/gcc/testsuite/gcc.dg/ipa/propalign-2.c
+@@ -54,5 +54,3 @@ bar2 (void)
+ 
+ /* { dg-final { scan-ipa-dump "Adjusting alignment of param" "cp" } } */
+ /* { dg-final { scan-tree-dump-not "fail_the_test" "optimized" } } */
+-/* { dg-final { cleanup-ipa-dump "cp" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/ipa/propalign-3.c
++++ b/src/gcc/testsuite/gcc.dg/ipa/propalign-3.c
+@@ -54,5 +54,3 @@ bar2 (void)
+ 
+ /* { dg-final { scan-ipa-dump-not "Adjusting alignment of param" "cp" } } */
+ /* { dg-final { scan-tree-dump "fail_the_test" "optimized" } } */
+-/* { dg-final { cleanup-ipa-dump "cp" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/ipa/pure-const-1.c
++++ b/src/gcc/testsuite/gcc.dg/ipa/pure-const-1.c
+@@ -75,7 +75,4 @@ test()
+ /* { dg-final { scan-tree-dump "found to be looping pure: i_am_pure4" "local-pure-const1"} } */
+ /* { dg-final { scan-ipa-dump "found to be const: i_am_const2" "pure-const"} } */
+ /* { dg-final { scan-ipa-dump "found to be const: i_am_const3" "pure-const"} } */
+-/* { dg-final { cleanup-tree-dump "local-pure-const1" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+-/* { dg-final { cleanup-ipa-dump "pure-const" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/ipa/pure-const-2.c
++++ b/src/gcc/testsuite/gcc.dg/ipa/pure-const-2.c
+@@ -26,5 +26,3 @@ main(void)
+ }
+ /* { dg-final { scan-tree-dump "found to be pure: i_am_pure" "local-pure-const1"} } */
+ /* { dg-final { scan-tree-dump-not "i_am_pure" "optimized"} } */
+-/* { dg-final { cleanup-tree-dump "local-pure-const1" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/ipa/remref-0.c
++++ b/src/gcc/testsuite/gcc.dg/ipa/remref-0.c
+@@ -26,5 +26,3 @@ int main (void)
+ 
+ /* { dg-final { scan-ipa-dump "ipa-prop: Removed a reference"  "inline"  } } */
+ /* { dg-final { scan-tree-dump-not "hooray"  "optimized"  } } */
+-/* { dg-final { cleanup-ipa-dump "inline" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/ipa/remref-1a.c
++++ b/src/gcc/testsuite/gcc.dg/ipa/remref-1a.c
+@@ -30,5 +30,3 @@ int main (void)
+ 
+ /* { dg-final { scan-ipa-dump "ipa-prop: Removed a reference"  "inline"  } } */
+ /* { dg-final { scan-tree-dump-not "hooray"  "optimized"  } } */
+-/* { dg-final { cleanup-ipa-dump "inline" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/ipa/remref-1b.c
++++ b/src/gcc/testsuite/gcc.dg/ipa/remref-1b.c
+@@ -32,6 +32,3 @@ int main (void)
+ /* { dg-final { scan-ipa-dump "removing its cloning-created reference"  "cp"  } } */
+ /* { dg-final { scan-ipa-dump "ipa-prop: Removed a reference"  "inline"  } } */
+ /* { dg-final { scan-tree-dump-not "hooray"  "optimized"  } } */
+-/* { dg-final { cleanup-ipa-dump "cp" } } */
+-/* { dg-final { cleanup-ipa-dump "inline" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/ipa/remref-2a.c
++++ b/src/gcc/testsuite/gcc.dg/ipa/remref-2a.c
+@@ -86,5 +86,3 @@ main (int argc, int *argv[])
+ 
+ /* { dg-final { scan-ipa-dump-times "ipa-prop: Removed a reference" 2 "inline"  } } */
+ /* { dg-final { scan-tree-dump-not "hooray"  "optimized"  } } */
+-/* { dg-final { cleanup-ipa-dump "inline" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/ipa/remref-2b.c
++++ b/src/gcc/testsuite/gcc.dg/ipa/remref-2b.c
+@@ -89,6 +89,3 @@ main (int argc, int *argv[])
+ /* { dg-final { scan-ipa-dump "ipa-prop: Removed a reference"  "inline"  } } */
+ /* { dg-final { scan-ipa-dump-times "ipa-prop: Removing cloning-created reference" 2 "inline"  } } */
+ /* { dg-final { scan-tree-dump-not "hooray"  "optimized"  } } */
+-/* { dg-final { cleanup-ipa-dump "cp" } } */
+-/* { dg-final { cleanup-ipa-dump "inline" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/ira-loop-pressure.c
++++ b/src/gcc/testsuite/gcc.dg/ira-loop-pressure.c
+@@ -28,5 +28,4 @@ int foo (int a, int b, int c, int d)
+ }
+ 
+ /* { dg-final { scan-rtl-dump "Decided to move invariant" "loop2_invariant"  } } */
+-/* { dg-final { cleanup-rtl-dump "loop2_invariant" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/ira-shrinkwrap-prep-1.c
++++ b/src/gcc/testsuite/gcc.dg/ira-shrinkwrap-prep-1.c
+@@ -27,5 +27,3 @@ bar (long a)
+ /* { dg-final { scan-rtl-dump "Will split live ranges of parameters" "ira"  } } */
+ /* { dg-final { scan-rtl-dump "Split live-range of register" "ira"  } } */
+ /* { dg-final { scan-rtl-dump "Performing shrink-wrapping" "pro_and_epilogue"  } } */
+-/* { dg-final { cleanup-rtl-dump "ira" } } */
+-/* { dg-final { cleanup-rtl-dump "pro_and_epilogue" } } */
+--- a/src/gcc/testsuite/gcc.dg/ira-shrinkwrap-prep-2.c
++++ b/src/gcc/testsuite/gcc.dg/ira-shrinkwrap-prep-2.c
+@@ -32,5 +32,3 @@ bar (long a)
+ /* { dg-final { scan-rtl-dump "Will split live ranges of parameters" "ira"  } } */
+ /* { dg-final { scan-rtl-dump "Split live-range of register" "ira"  } } */
+ /* { dg-final { scan-rtl-dump "Performing shrink-wrapping" "pro_and_epilogue"  } } */
+-/* { dg-final { cleanup-rtl-dump "ira" } } */
+-/* { dg-final { cleanup-rtl-dump "pro_and_epilogue" } } */
+--- a/src/gcc/testsuite/gcc.dg/loop-7.c
++++ b/src/gcc/testsuite/gcc.dg/loop-7.c
+@@ -12,5 +12,4 @@ void f(int *a)
+ 
+ /* Load of 0 is moved out of the loop.  */
+ /* { dg-final { scan-rtl-dump-times "Decided" 1 "loop2_invariant" } } */
+-/* { dg-final { cleanup-rtl-dump "loop2_invariant" } } */
+ 
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.dg/loop-8.c
+@@ -0,0 +1,23 @@
++/* { dg-do compile } */
++/* { dg-options "-O1 -fdump-rtl-loop2_invariant" } */
++
++void
++f (int *a, int *b)
++{
++  int i;
++
++  for (i = 0; i < 100; i++)
++    {
++      int d = 42;
++
++      a[i] = d;
++      if (i % 2)
++	d = i;
++      b[i] = d;
++    }
++}
++
++/* Load of 42 is moved out of the loop, introducing a new pseudo register.  */
++/* { dg-final { scan-rtl-dump-times "Decided" 1 "loop2_invariant" } } */
++/* { dg-final { scan-rtl-dump-not "without introducing a new temporary register" "loop2_invariant" } } */
++
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.dg/loop-9.c
+@@ -0,0 +1,15 @@
++/* { dg-do compile } */
++/* { dg-options "-O1 -fdump-rtl-loop2_invariant" } */
++
++void
++f (double *a)
++{
++  int i;
++  for (i = 0; i < 100; i++)
++    a[i] = 18.4242;
++}
++
++/* Load of x is moved out of the loop.  */
++/* { dg-final { scan-rtl-dump "Decided" "loop2_invariant" } } */
++/* { dg-final { scan-rtl-dump "without introducing a new temporary register" "loop2_invariant" } } */
++
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.dg/loop-invariant.c
+@@ -0,0 +1,42 @@
++/* { dg-do compile { target x86_64-*-* } } */
++/* { dg-options "-O2 -fdump-rtl-loop2_invariant" } */
++/* NOTE: The target list above could be extended to other targets that have
++         conditional moves, but don't have zero registers.  */
++
++enum test_type
++{
++  TYPE0,
++  TYPE1
++};
++
++struct type_node
++{
++  enum test_type type;
++};
++
++struct test_ref
++{
++  struct type_node *referring;
++};
++
++struct test_node
++{
++  struct test_node *next;
++};
++
++int iterate (struct test_node *, unsigned, struct test_ref **);
++
++int
++loop_invar (struct test_node *node)
++{
++  struct test_ref *ref;
++
++  for (unsigned i = 0; iterate (node, i, &ref); i++)
++    if (loop_invar ((ref->referring && ref->referring->type == TYPE0)
++                    ? ((struct test_node *) (ref->referring)) : 0))
++      return 1;
++
++  return 0;
++}
++
++/* { dg-final { scan-rtl-dump "Decided to move invariant" "loop2_invariant" } } */
+--- a/src/gcc/testsuite/gcc.dg/lower-subreg-1.c
++++ b/src/gcc/testsuite/gcc.dg/lower-subreg-1.c
+@@ -6,4 +6,3 @@
+ long long test (long long a, long long b) { return a | b; }
+ 
+ /* { dg-final { scan-rtl-dump "Splitting reg" "subreg1" } } */
+-/* { dg-final { cleanup-rtl-dump "subreg1" } } */
+--- a/src/gcc/testsuite/gcc.dg/macro-fusion-1.c
++++ b/src/gcc/testsuite/gcc.dg/macro-fusion-1.c
+@@ -12,4 +12,3 @@ double bar (double sum)
+ }
+ 
+ /* { dg-final { scan-rtl-dump-not "compare.*insn.*jump_insn.*jump_insn" "sched2" } } */
+-/* { dg-final { cleanup-rtl-dump "sched2" } } */
+--- a/src/gcc/testsuite/gcc.dg/macro-fusion-2.c
++++ b/src/gcc/testsuite/gcc.dg/macro-fusion-2.c
+@@ -15,4 +15,3 @@ double bar (double sum)
+ }
+ 
+ /* { dg-final { scan-rtl-dump-not "compare.*insn.*jump_insn.*jump_insn" "sched2" } } */
+-/* { dg-final { cleanup-rtl-dump "sched2" } } */
+--- a/src/gcc/testsuite/gcc.dg/memcpy-1.c
++++ b/src/gcc/testsuite/gcc.dg/memcpy-1.c
+@@ -2,7 +2,6 @@
+ /* { dg-options "-O2 -fdump-tree-optimized" } */
+ /* PR36598 AVR fail maybe due to cost metrics */
+ /* { dg-final { scan-tree-dump-times "nasty_local\\." 0 "optimized" { xfail { "avr-*-*" } } } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+ struct a {int a,b,c;} a;
+ int test(struct a a)
+ {
+--- a/src/gcc/testsuite/gcc.dg/memcpy-3.c
++++ b/src/gcc/testsuite/gcc.dg/memcpy-3.c
+@@ -11,4 +11,3 @@ int get_int(const void *p)
+ 
+ /* { dg-final { scan-tree-dump-not "memcpy" "optimized" } } */
+ /* { dg-final { scan-tree-dump-times "MEM" 1 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/memcpy-4.c
++++ b/src/gcc/testsuite/gcc.dg/memcpy-4.c
+@@ -11,4 +11,3 @@ f1 (char *p)
+ }
+ 
+ /* { dg-final { scan-rtl-dump "mem/u.*mem/u" "expand" { target mips*-*-* } } } */
+-/* { dg-final { cleanup-rtl-dump "expand" } } */
+--- a/src/gcc/testsuite/gcc.dg/memcpy-5.c
++++ b/src/gcc/testsuite/gcc.dg/memcpy-5.c
+@@ -25,4 +25,3 @@ TEST (d64d, double __attribute__((vector_size (64))));
+ TEST (d128d, double __attribute__((vector_size (128))));
+ 
+ /* { dg-final { scan-tree-dump-not "memcpy" "optimized" { target i?86-*-* x86_64-*-* } } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/memmove-1.c
++++ b/src/gcc/testsuite/gcc.dg/memmove-1.c
+@@ -1,7 +1,6 @@
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -fdump-tree-optimized" } */
+ /* { dg-final { scan-tree-dump-times "memmove" 0 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+ static const char a[100]={1,2,3,4};
+ char b[1000];
+ int i,i1;
+--- a/src/gcc/testsuite/gcc.dg/memmove-2.c
++++ b/src/gcc/testsuite/gcc.dg/memmove-2.c
+@@ -1,7 +1,6 @@
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -fdump-tree-optimized" } */
+ /* { dg-final { scan-tree-dump-times "memmove" 0 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+ 
+ char a[40];
+ extern void bar (char *);
+--- a/src/gcc/testsuite/gcc.dg/memmove-3.c
++++ b/src/gcc/testsuite/gcc.dg/memmove-3.c
+@@ -1,7 +1,6 @@
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -fdump-tree-optimized" } */
+ /* { dg-final { scan-tree-dump-times "memmove" 3 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+ 
+ char a[40];
+ struct A { char a[30]; };
+--- a/src/gcc/testsuite/gcc.dg/memmove-4.c
++++ b/src/gcc/testsuite/gcc.dg/memmove-4.c
+@@ -9,4 +9,3 @@ void b(char *a, char *b, int i)
+ }
+ 
+ /* { dg-final { scan-tree-dump-not "memmove" "optimized" { xfail { ! non_strict_align } } } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/minmax-1.c
++++ b/src/gcc/testsuite/gcc.dg/minmax-1.c
+@@ -80,4 +80,3 @@ int main(void)
+ 
+ /* { dg-final { scan-tree-dump-times "MIN_EXPR" 0 "original"} } */
+ /* { dg-final { scan-tree-dump-times "MAX_EXPR" 0 "original"} } */
+-/* { dg-final { cleanup-tree-dump "original" } } */
+--- a/src/gcc/testsuite/gcc.dg/nested-func-7.c
++++ b/src/gcc/testsuite/gcc.dg/nested-func-7.c
+@@ -12,4 +12,3 @@ void foo (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-not "bar" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/no-strict-overflow-1.c
++++ b/src/gcc/testsuite/gcc.dg/no-strict-overflow-1.c
+@@ -13,4 +13,3 @@ foo (int i)
+ }
+ 
+ /* { dg-final { scan-tree-dump "-[ ]*5" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/no-strict-overflow-2.c
++++ b/src/gcc/testsuite/gcc.dg/no-strict-overflow-2.c
+@@ -13,4 +13,3 @@ foo (int i)
+ }
+ 
+ /* { dg-final { scan-tree-dump "100" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/no-strict-overflow-3.c
++++ b/src/gcc/testsuite/gcc.dg/no-strict-overflow-3.c
+@@ -13,4 +13,3 @@ foo (int i, int j)
+ }
+ 
+ /* { dg-final { scan-tree-dump "1000" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/no-strict-overflow-4.c
++++ b/src/gcc/testsuite/gcc.dg/no-strict-overflow-4.c
+@@ -13,4 +13,3 @@ foo (int i)
+ }
+ 
+ /* { dg-final { scan-tree-dump "\[^ \]*_.(\\\(D\\\))? (>|<) \[^ \]*_." "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/no-strict-overflow-5.c
++++ b/src/gcc/testsuite/gcc.dg/no-strict-overflow-5.c
+@@ -17,4 +17,3 @@ int foo (int i)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "r = 3" 0 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/no-strict-overflow-6.c
++++ b/src/gcc/testsuite/gcc.dg/no-strict-overflow-6.c
+@@ -18,4 +18,3 @@ foo ()
+ }
+ 
+ /* { dg-final { scan-tree-dump "return bits" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/no-strict-overflow-7.c
++++ b/src/gcc/testsuite/gcc.dg/no-strict-overflow-7.c
+@@ -13,4 +13,3 @@ foo (char* p)
+ }
+ 
+ /* { dg-final { scan-tree-dump "\[+\]\[ \]*1000" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/no-strict-overflow-8.c
++++ b/src/gcc/testsuite/gcc.dg/no-strict-overflow-8.c
+@@ -22,4 +22,3 @@ foo (struct c *p)
+ }
+ 
+ /* { dg-final { scan-tree-dump "i_.* > 0" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/nrv3.c
++++ b/src/gcc/testsuite/gcc.dg/nrv3.c
+@@ -32,4 +32,3 @@ void foo (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "return slot optimization" 2 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/nrv4.c
++++ b/src/gcc/testsuite/gcc.dg/nrv4.c
+@@ -29,5 +29,4 @@ void foo (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "return slot optimization" 0 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/nrv5.c
++++ b/src/gcc/testsuite/gcc.dg/nrv5.c
+@@ -25,4 +25,3 @@ void foo (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "return slot optimization" 0 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/optimize-bswapdi-1.c
++++ b/src/gcc/testsuite/gcc.dg/optimize-bswapdi-1.c
+@@ -58,4 +58,3 @@ swap64_c (uint64_t x)
+ 
+ 
+ /* { dg-final { scan-tree-dump-times "64 bit bswap implementation found at" 3 "bswap" } } */
+-/* { dg-final { cleanup-tree-dump "bswap" } } */
+--- a/src/gcc/testsuite/gcc.dg/optimize-bswapdi-2.c
++++ b/src/gcc/testsuite/gcc.dg/optimize-bswapdi-2.c
+@@ -23,4 +23,3 @@ swap64_c (uint64_t x)
+ 
+ 
+ /* { dg-final { scan-tree-dump-times "64 bit bswap implementation found at" 1 "bswap" } } */
+-/* { dg-final { cleanup-tree-dump "bswap" } } */
+--- a/src/gcc/testsuite/gcc.dg/optimize-bswapdi-3.c
++++ b/src/gcc/testsuite/gcc.dg/optimize-bswapdi-3.c
+@@ -61,4 +61,3 @@ uint64_t read_be64_3 (unsigned char *data)
+ 
+ /* { dg-final { scan-tree-dump-times "64 bit load in target endianness found at" 3 "bswap" } } */
+ /* { dg-final { scan-tree-dump-times "64 bit bswap implementation found at" 3 "bswap" { xfail alpha*-*-* arm*-*-* } } } */
+-/* { dg-final { cleanup-tree-dump "bswap" } } */
+--- a/src/gcc/testsuite/gcc.dg/optimize-bswaphi-1.c
++++ b/src/gcc/testsuite/gcc.dg/optimize-bswaphi-1.c
+@@ -57,4 +57,3 @@ swap16 (HItype in)
+ /* { dg-final { scan-tree-dump-times "16 bit load in target endianness found at" 3 "bswap" } } */
+ /* { dg-final { scan-tree-dump-times "16 bit bswap implementation found at" 1 "bswap" { target alpha*-*-* arm*-*-* } } } */
+ /* { dg-final { scan-tree-dump-times "16 bit bswap implementation found at" 4 "bswap" { xfail alpha*-*-* arm*-*-* } } } */
+-/* { dg-final { cleanup-tree-dump "bswap" } } */
+--- a/src/gcc/testsuite/gcc.dg/optimize-bswapsi-1.c
++++ b/src/gcc/testsuite/gcc.dg/optimize-bswapsi-1.c
+@@ -90,4 +90,3 @@ swap32_f (unsigned in)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "32 bit bswap implementation found at" 6 "bswap" } } */
+-/* { dg-final { cleanup-tree-dump "bswap" } } */
+--- a/src/gcc/testsuite/gcc.dg/optimize-bswapsi-2.c
++++ b/src/gcc/testsuite/gcc.dg/optimize-bswapsi-2.c
+@@ -46,4 +46,3 @@ uint32_t read_be32_3 (unsigned char *data)
+ 
+ /* { dg-final { scan-tree-dump-times "32 bit load in target endianness found at" 3 "bswap" } } */
+ /* { dg-final { scan-tree-dump-times "32 bit bswap implementation found at" 3 "bswap" { xfail alpha*-*-* arm*-*-* } } } */
+-/* { dg-final { cleanup-tree-dump "bswap" } } */
+--- a/src/gcc/testsuite/gcc.dg/optimize-bswapsi-3.c
++++ b/src/gcc/testsuite/gcc.dg/optimize-bswapsi-3.c
+@@ -21,4 +21,3 @@ swap32 (SItype in)
+ }
+ 
+ /* { dg-final { scan-tree-dump-not "32 bit bswap implementation found at" "bswap" } } */
+-/* { dg-final { cleanup-tree-dump "bswap" } } */
+--- a/src/gcc/testsuite/gcc.dg/opts-4.c
++++ b/src/gcc/testsuite/gcc.dg/opts-4.c
+@@ -6,4 +6,3 @@ void f (void)
+ {
+ }
+ 
+-/* { dg-final { cleanup-rtl-dump "*" } } */
+--- a/src/gcc/testsuite/gcc.dg/pch/save-temps-1.c
++++ b/src/gcc/testsuite/gcc.dg/pch/save-temps-1.c
+@@ -5,5 +5,4 @@
+ #endif
+ #include <stddef.h>
+ int x;
+-
+-/* { dg-final { cleanup-saved-temps ".s" } } */
++/* { dg-keep-saved-temps ".s" } */
+--- a/src/gcc/testsuite/gcc.dg/pointer-arith-10.c
++++ b/src/gcc/testsuite/gcc.dg/pointer-arith-10.c
+@@ -7,4 +7,3 @@ char *foo(char *p, __UINTPTR_TYPE__ i)
+ }
+ 
+ /* { dg-final { scan-tree-dump "p +" "original" } } */
+-/* { dg-final { cleanup-tree-dump "original" } } */
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.dg/pow-sqrt-1.c
+@@ -0,0 +1,6 @@
++/* { dg-do run } */
++/* { dg-options "-O2 -ffast-math --param max-pow-sqrt-depth=5" } */
++
++#define EXPN (-6 * (0.5*0.5*0.5*0.5))
++
++#include "pow-sqrt.x"
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.dg/pow-sqrt-2.c
+@@ -0,0 +1,5 @@
++/* { dg-do run } */
++/* { dg-options "-O2 -ffast-math --param max-pow-sqrt-depth=5" } */
++
++#define EXPN (-5.875)
++#include "pow-sqrt.x"
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.dg/pow-sqrt-3.c
+@@ -0,0 +1,5 @@
++/* { dg-do run } */
++/* { dg-options "-O2 -ffast-math --param max-pow-sqrt-depth=3" } */
++
++#define EXPN (1.25)
++#include "pow-sqrt.x"
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.dg/pow-sqrt-synth-1.c
+@@ -0,0 +1,37 @@
++/* { dg-do compile { target sqrt_insn } } */
++/* { dg-options "-fdump-tree-sincos -Ofast --param max-pow-sqrt-depth=8" } */
++/* { dg-additional-options "-mfloat-abi=softfp -mfpu=neon-vfpv4" { target arm*-*-* } } */
++
++double
++foo (double a)
++{
++  return __builtin_pow (a, -5.875);
++}
++
++double
++foof (double a)
++{
++  return __builtin_pow (a, 0.75f);
++}
++
++double
++bar (double a)
++{
++  return __builtin_pow (a, 1.0 + 0.00390625);
++}
++
++double
++baz (double a)
++{
++  return __builtin_pow (a, -1.25) + __builtin_pow (a, 5.75) - __builtin_pow (a, 3.375);
++}
++
++#define N 256
++void
++vecfoo (double *a)
++{
++  for (int i = 0; i < N; i++)
++    a[i] = __builtin_pow (a[i], 1.25);
++}
++
++/* { dg-final { scan-tree-dump-times "synthesizing" 7 "sincos" } } */
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.dg/pow-sqrt.x
+@@ -0,0 +1,30 @@
++
++extern void abort (void);
++
++
++__attribute__((noinline)) double
++real_pow (double x, double pow_exp)
++{
++  return __builtin_pow (x, pow_exp);
++}
++
++#define EPS (0.000000000000000000001)
++
++#define SYNTH_POW(X, Y) __builtin_pow (X, Y)
++volatile double arg;
++
++int
++main (void)
++{
++  double i_arg = 0.1;
++
++  for (arg = i_arg; arg < 100.0; arg += 1.0)
++    {
++      double synth_res = SYNTH_POW (arg, EXPN);
++      double real_res = real_pow (arg, EXPN);
++
++      if (__builtin_abs (SYNTH_POW (arg, EXPN) - real_pow (arg, EXPN)) > EPS)
++	abort ();
++    }
++  return 0;
++}
+--- a/src/gcc/testsuite/gcc.dg/pr10474.c
++++ b/src/gcc/testsuite/gcc.dg/pr10474.c
+@@ -13,4 +13,3 @@ void f(int *i)
+ }
+ 
+ /* { dg-final { scan-rtl-dump "Performing shrink-wrapping" "pro_and_epilogue"  } } */
+-/* { dg-final { cleanup-rtl-dump "pro_and_epilogue" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr14796-1.c
++++ b/src/gcc/testsuite/gcc.dg/pr14796-1.c
+@@ -21,4 +21,3 @@ int l (int d) {
+ /* { dg-final { scan-tree-dump "b & -32" "gimple" } } */
+ /* { dg-final { scan-tree-dump "c & 15" "gimple" } } */
+ /* { dg-final { scan-tree-dump "d << 6" "gimple" } } */
+-/* { dg-final { cleanup-tree-dump "gimple" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr14796-2.c
++++ b/src/gcc/testsuite/gcc.dg/pr14796-2.c
+@@ -20,4 +20,3 @@ long long j (long long c) {
+ /* { dg-final { scan-tree-dump-times "= 0" 2 "gimple" } } */
+ /* { dg-final { scan-tree-dump "b >> 31" "gimple" } } */
+ /* { dg-final { scan-tree-dump "c & -(34359738368|0x800000000)" "gimple" } } */
+-/* { dg-final { cleanup-tree-dump "gimple" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr15784-1.c
++++ b/src/gcc/testsuite/gcc.dg/pr15784-1.c
+@@ -40,4 +40,3 @@ int i (float x) {
+ 	return fabs(x) == -0.0;
+ }
+ /* { dg-final { scan-tree-dump-times "ABS_EXPR" 0 "gimple" } } */
+-/* { dg-final { cleanup-tree-dump "gimple" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr15784-2.c
++++ b/src/gcc/testsuite/gcc.dg/pr15784-2.c
+@@ -9,4 +9,3 @@ int a (float x) {
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "ABS_EXPR" 0 "gimple" } } */
+-/* { dg-final { cleanup-tree-dump "gimple" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr15784-3.c
++++ b/src/gcc/testsuite/gcc.dg/pr15784-3.c
+@@ -11,4 +11,3 @@ int a (float x) {
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "ABS_EXPR" 1 "gimple" } } */
+-/* { dg-final { cleanup-tree-dump "gimple" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr15784-4.c
++++ b/src/gcc/testsuite/gcc.dg/pr15784-4.c
+@@ -10,4 +10,3 @@ int b (int x) {
+ 
+ /* { dg-final { scan-tree-dump "~x_..D.;" "optimized" } } */
+ /* { dg-final { scan-tree-dump "-x_..D.;" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr19105.c
++++ b/src/gcc/testsuite/gcc.dg/pr19105.c
+@@ -18,5 +18,4 @@ int range2 (enum e v, int x)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "Optimizing range tests v_\[0-9\]*.D. -.2, 2. and -.3, 4.\[\n\r\]* into|Optimizing range tests v_\[0-9\]*.D. -.2, 2. and -.3, 3. and -.4, 4.\[\n\r\]* into" 1 "reassoc1" } } */
+-/* { dg-final { cleanup-tree-dump "reassoc1" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/pr19988.c
++++ b/src/gcc/testsuite/gcc.dg/pr19988.c
+@@ -10,5 +10,3 @@ double foo(double x, double y)
+ /* { dg-final { scan-tree-dump-times " 1.23" 2 "original" } } */
+ /* CSE one multiplication.  */
+ /* { dg-final { scan-tree-dump-times " \\\* " 2 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "original" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr20115-1.c
++++ b/src/gcc/testsuite/gcc.dg/pr20115-1.c
+@@ -12,4 +12,3 @@ int bar()
+ 
+ /* Check that we only have one call to foo.  */
+ /* { dg-final { scan-tree-dump-times "foo" 1 "dom1" } } */
+-/* { dg-final { cleanup-tree-dump "dom1" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr20130-1.c
++++ b/src/gcc/testsuite/gcc.dg/pr20130-1.c
+@@ -12,4 +12,3 @@ int y (int a) {
+ 	return -(-1 * -a);
+ }
+ /* { dg-final { scan-tree-dump-times "-a" 3 "gimple" } } */
+-/* { dg-final { cleanup-tree-dump "gimple" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr20922-1.c
++++ b/src/gcc/testsuite/gcc.dg/pr20922-1.c
+@@ -35,4 +35,3 @@ int z(double i)
+   return (i + (-2.0)) > i;
+ }
+ /* { dg-final { scan-tree-dump-times " = 0" 7 "gimple" } } */
+-/* { dg-final { cleanup-tree-dump "gimple" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr20922-2.c
++++ b/src/gcc/testsuite/gcc.dg/pr20922-2.c
+@@ -15,4 +15,3 @@ int h (double i)
+   return (i + 2.0) <= i;
+ }
+ /* { dg-final { scan-tree-dump-times " = 0" 0 "gimple" } } */
+-/* { dg-final { cleanup-tree-dump "gimple" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr20922-3.c
++++ b/src/gcc/testsuite/gcc.dg/pr20922-3.c
+@@ -30,4 +30,3 @@ int z(double i)
+   return (i + (-2.0)) <= i;
+ }
+ /* { dg-final { scan-tree-dump-times " = 1" 6 "gimple" } } */
+-/* { dg-final { cleanup-tree-dump "gimple" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr20922-4.c
++++ b/src/gcc/testsuite/gcc.dg/pr20922-4.c
+@@ -35,4 +35,3 @@ int z(double i)
+   return i < (i + (-2.0));
+ }
+ /* { dg-final { scan-tree-dump-times " = 0" 7 "gimple" } } */
+-/* { dg-final { cleanup-tree-dump "gimple" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr20922-5.c
++++ b/src/gcc/testsuite/gcc.dg/pr20922-5.c
+@@ -20,4 +20,3 @@ int j (double i)
+   return i > i + 2.0;
+ }
+ /* { dg-final { scan-tree-dump-times " = 0" 0 "gimple" } } */
+-/* { dg-final { cleanup-tree-dump "gimple" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr20922-6.c
++++ b/src/gcc/testsuite/gcc.dg/pr20922-6.c
+@@ -30,4 +30,3 @@ int z(double i)
+   return i >= (i + (-2.0));
+ }
+ /* { dg-final { scan-tree-dump-times " = 1" 6 "gimple" } } */
+-/* { dg-final { cleanup-tree-dump "gimple" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr21032.c
++++ b/src/gcc/testsuite/gcc.dg/pr21032.c
+@@ -8,4 +8,3 @@ void foo(double x)
+ }
+ 
+ /* { dg-final { scan-tree-dump-not "-\\(float\\)" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr21643.c
++++ b/src/gcc/testsuite/gcc.dg/pr21643.c
+@@ -87,4 +87,3 @@ f9 (unsigned char c)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "Optimizing range tests c_\[0-9\]*.D. -.0, 31. and -.32, 32.\[\n\r\]* into" 6 "reassoc1" } } */
+-/* { dg-final { cleanup-tree-dump "reassoc1" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr23295.c
++++ b/src/gcc/testsuite/gcc.dg/pr23295.c
+@@ -7,4 +7,3 @@ int foo(int i)
+ }
+ 
+ /* { dg-final { scan-tree-dump "-5 - i" "gimple" } } */
+-/* { dg-final { cleanup-tree-dump "gimple" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr23470-1.c
++++ b/src/gcc/testsuite/gcc.dg/pr23470-1.c
+@@ -11,4 +11,3 @@ int f(double a, double b)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "if \\(0\\)" 1 "original" } } */
+-/* { dg-final { cleanup-tree-dump "original" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr23584.c
++++ b/src/gcc/testsuite/gcc.dg/pr23584.c
+@@ -18,4 +18,3 @@ int test2 (void)
+ 
+ /* { dg-final { scan-ipa-dump-not "found to be pure: test1" "pure-const" } } */
+ /* { dg-final { scan-ipa-dump-not "found to be pure: test2" "pure-const" } } */
+-/* { dg-final { cleanup-ipa-dump "pure-const" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr23623.c
++++ b/src/gcc/testsuite/gcc.dg/pr23623.c
+@@ -45,4 +45,3 @@ void readb(void)
+    the parenthesized subexpression in the regexp introduces an extra match
+    variable, we need to give a count of 12 instead of 6 here.  */
+ /* { dg-final { scan-rtl-dump-times "mem/v(/.)*:SI" 12 "final" } } */
+-/* { dg-final { cleanup-rtl-dump "final" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr23911.c
++++ b/src/gcc/testsuite/gcc.dg/pr23911.c
+@@ -18,4 +18,3 @@ test (void)
+    constant folded.  There should be no loads from b left.  */
+ /* { dg-final { scan-tree-dump-times "__complex__ \\\(1.0e\\\+0, 0.0\\\)" 2 "dce2" } } */
+ /* { dg-final { scan-tree-dump-times "= b" 0 "dce2" } } */
+-/* { dg-final { cleanup-tree-dump "dce2" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr27132.c
++++ b/src/gcc/testsuite/gcc.dg/pr27132.c
+@@ -7,4 +7,3 @@ int foo(int i)
+ }
+ 
+ /* { dg-final { scan-tree-dump "i \\+ 1" "gimple" } } */
+-/* { dg-final { cleanup-tree-dump "gimple" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr28685-1.c
++++ b/src/gcc/testsuite/gcc.dg/pr28685-1.c
+@@ -47,4 +47,3 @@ int test5 (int a, int b)
+ /* { dg-final { scan-tree-dump-times "return 0" 1 "optimized" } } */
+ /* { dg-final { scan-tree-dump-not " < " "optimized" } } */
+ /* { dg-final { scan-tree-dump-not " == " "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr29215.c
++++ b/src/gcc/testsuite/gcc.dg/pr29215.c
+@@ -30,4 +30,3 @@ main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-not "memcpy" "ccp1" } } */
+-/* { dg-final { cleanup-tree-dump "ccp1" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr29801.c
++++ b/src/gcc/testsuite/gcc.dg/pr29801.c
+@@ -21,4 +21,3 @@ int test (int param)
+ /* { dg-final { scan-tree-dump-times "return 2" 1 "optimized" } } */
+ /* { dg-final { scan-tree-dump-times "return 5" 0 "optimized" } } */
+ 
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr30137-1.c
++++ b/src/gcc/testsuite/gcc.dg/pr30137-1.c
+@@ -20,4 +20,3 @@ int foo13 (void) { return *p != &p; }
+ 
+ /* { dg-final { scan-tree-dump-not "= 0;" "gimple" } } */
+ /* { dg-final { scan-tree-dump-not "= 1;" "gimple" } } */
+-/* { dg-final { cleanup-tree-dump "gimple" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr30137-2.c
++++ b/src/gcc/testsuite/gcc.dg/pr30137-2.c
+@@ -17,4 +17,3 @@ int foo8 (void) { return &x.u.i == &x.u.s; }
+ 
+ /* { dg-final { scan-tree-dump-times "= 0" 1 "gimple" } } */
+ /* { dg-final { scan-tree-dump-times "= 1" 7 "gimple" } } */
+-/* { dg-final { cleanup-tree-dump "gimple" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr30172-1.c
++++ b/src/gcc/testsuite/gcc.dg/pr30172-1.c
+@@ -12,4 +12,3 @@ _Complex double test5 (double x, double y) { return (x + y * 1.i) * -1.i; }
+ /* { dg-final { scan-tree-dump "COMPLEX_EXPR <x, y>" "gimple" } } */
+ /* { dg-final { scan-tree-dump "D.* = -y;\n.*COMPLEX_EXPR <D.*, x>" "gimple" } } */
+ /* { dg-final { scan-tree-dump "D.* = -x;\n.*COMPLEX_EXPR <y, D.*>" "gimple" } } */
+-/* { dg-final { cleanup-tree-dump "gimple" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr30904.c
++++ b/src/gcc/testsuite/gcc.dg/pr30904.c
+@@ -15,4 +15,3 @@ int main (void)
+ 
+ 
+ /* { dg-final { scan-tree-dump-times "link_error" 0 "optimized"  } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr30957-1.c
++++ b/src/gcc/testsuite/gcc.dg/pr30957-1.c
+@@ -34,4 +34,3 @@ main ()
+ }
+ 
+ /* { dg-final { scan-rtl-dump "Expanding Accumulator" "loop2_unroll" } } */
+-/* { dg-final { cleanup-rtl-dump "loop*" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr31847.c
++++ b/src/gcc/testsuite/gcc.dg/pr31847.c
+@@ -12,4 +12,3 @@ int foo()
+ }
+ 
+ /* { dg-final { scan-tree-dump-not "Created value  for " "pre"} } */
+-/* { dg-final { cleanup-tree-dump "pre" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr32328.c
++++ b/src/gcc/testsuite/gcc.dg/pr32328.c
+@@ -14,4 +14,3 @@ void baz()
+ }
+ 
+ /* { dg-final { scan-tree-dump "Everything OK" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr32721.c
++++ b/src/gcc/testsuite/gcc.dg/pr32721.c
+@@ -16,4 +16,3 @@ spinlock1 = &spinlock[1];
+ 
+ /* { dg-final { scan-tree-dump "={v} .*spinlock" "optimized" } } */
+ /* { dg-final { scan-tree-dump "spinlock.* ={v}" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr32912-3.c
++++ b/src/gcc/testsuite/gcc.dg/pr32912-3.c
+@@ -11,4 +11,3 @@ bar (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-not "~\{" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr33653.c
++++ b/src/gcc/testsuite/gcc.dg/pr33653.c
+@@ -7,4 +7,3 @@ void f (volatile char *p)
+ }
+ 
+ /* { dg-final { scan-rtl-dump "mem/v" "shorten" } } */
+-/* { dg-final { cleanup-rtl-dump "shorten" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr33826.c
++++ b/src/gcc/testsuite/gcc.dg/pr33826.c
+@@ -48,5 +48,3 @@ int norecurse1b (int i)
+ /* { dg-final { scan-ipa-dump-not "found to be const: recurse1" "pure-const" } } */
+ /* { dg-final { scan-ipa-dump-not "found to be const: recurse2a" "pure-const" } } */
+ /* { dg-final { scan-ipa-dump-not "found to be const: recurse2b" "pure-const" } } */
+-/* { dg-final { cleanup-ipa-dump "pure-const" } } */
+-/* { dg-final { cleanup-tree-dump "local-pure-const1" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr34027-1.c
++++ b/src/gcc/testsuite/gcc.dg/pr34027-1.c
+@@ -13,4 +13,3 @@ unsigned long foobar(unsigned long ns)
+    that anymore.  */
+ /* { dg-final { scan-tree-dump-times "%" 0 "optimized" } } */
+ /* { dg-final { scan-tree-dump-times "/" 0 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr34027-2.c
++++ b/src/gcc/testsuite/gcc.dg/pr34027-2.c
+@@ -7,4 +7,3 @@ long foo(long n, long m)
+ }
+ 
+ /* { dg-final { scan-tree-dump "n % m" "gimple" } } */
+-/* { dg-final { cleanup-tree-dump "gimple" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr34263.c
++++ b/src/gcc/testsuite/gcc.dg/pr34263.c
+@@ -56,5 +56,4 @@ int look( struct s *p, struct s **pp )
+ }
+ 
+ /* { dg-final { scan-tree-dump "Cleaned-up latch block of loop with single BB" "optimized" { xfail { *-*-* } } } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/pr35729.c
++++ b/src/gcc/testsuite/gcc.dg/pr35729.c
+@@ -15,4 +15,3 @@ void func_1 (void)
+ }
+ 
+ /* { dg-final { scan-rtl-dump-times "Decided to move invariant" 0 "loop2_invariant" } } */
+-/* { dg-final { cleanup-rtl-dump "loop2_invariant" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr37171.c
++++ b/src/gcc/testsuite/gcc.dg/pr37171.c
+@@ -16,4 +16,3 @@ unsigned int f4 (void)
+ /* { dg-final { scan-tree-dump-times "= f1 \\(\\)" 1 "optimized" } } */
+ /* { dg-final { scan-tree-dump-times "= f2 \\(\\)" 1 "optimized" } } */
+ /* { dg-final { scan-tree-dump-times "= f3 \\(\\)" 1 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr37261.c
++++ b/src/gcc/testsuite/gcc.dg/pr37261.c
+@@ -12,4 +12,3 @@ foo (int x)
+ }
+ 
+ /* { dg-final { scan-tree-dump "return 0" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr37289.c
++++ b/src/gcc/testsuite/gcc.dg/pr37289.c
+@@ -11,4 +11,3 @@ void g(long x)
+ /* Make sure we do not lose the conversion.  */
+ 
+ /* { dg-final { scan-tree-dump "-\\\(long unsigned int\\\) x" "original" } } */
+-/* { dg-final { cleanup-tree-dump "original" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr37858.c
++++ b/src/gcc/testsuite/gcc.dg/pr37858.c
+@@ -9,4 +9,3 @@ main (void)
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-ipa-dump "build_ssa_passes" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr38245-1.c
++++ b/src/gcc/testsuite/gcc.dg/pr38245-1.c
+@@ -33,4 +33,3 @@ main (void)
+ 
+ /* { dg-final { scan-tree-dump-not "% 2123" "optimized" } } */
+ /* { dg-final { scan-tree-dump-not "0 / " "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr38245-2.c
++++ b/src/gcc/testsuite/gcc.dg/pr38245-2.c
+@@ -107,4 +107,3 @@ f13 (unsigned int a, unsigned int b)
+ }
+ 
+ /* { dg-final { scan-tree-dump-not "link_error" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr38645.c
++++ b/src/gcc/testsuite/gcc.dg/pr38645.c
+@@ -14,4 +14,3 @@ int foo()
+ }
+ 
+ /* { dg-final { scan-tree-dump "a.0. ={v} 1;" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr38984.c
++++ b/src/gcc/testsuite/gcc.dg/pr38984.c
+@@ -12,6 +12,5 @@ int f(int *p)
+ 
+ /* { dg-final { scan-tree-dump-times "\\\*p" 2 "optimized" } } */
+ /* { dg-final { scan-tree-dump-not "return 1" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+ 
+ 
+--- a/src/gcc/testsuite/gcc.dg/pr39874.c
++++ b/src/gcc/testsuite/gcc.dg/pr39874.c
+@@ -24,6 +24,5 @@ void test2(char *signature)
+ 
+ /* { dg-final { scan-tree-dump-times " == 15" 2 "optimized" } } */
+ /* { dg-final { scan-tree-dump-not " == 3" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+ 
+ 
+--- a/src/gcc/testsuite/gcc.dg/pr41488.c
++++ b/src/gcc/testsuite/gcc.dg/pr41488.c
+@@ -15,4 +15,3 @@ void foo (struct struct_t* sp, int start, int end)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "Simplify PEELED_CHREC into POLYNOMIAL_CHREC" 1 "sccp" } } */
+-/* { dg-final { cleanup-tree-dump "sccp" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr41574.c
++++ b/src/gcc/testsuite/gcc.dg/pr41574.c
+@@ -12,4 +12,3 @@ f(double x)
+ }
+ 
+ /* { dg-final { scan-rtl-dump-not "\\(plus:DF \\(mult:DF" "combine" } } */
+-/* { dg-final { cleanup-rtl-dump "combine*" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr41783.c
++++ b/src/gcc/testsuite/gcc.dg/pr41783.c
+@@ -17,4 +17,3 @@ int main()
+    and we want that load to be into a PRE temporary.  */
+ /* { dg-final { scan-tree-dump-times "= a_global_var;" 1 "pre" } } */
+ /* { dg-final { scan-tree-dump "pretmp\[^\\n\]* = a_global_var;" "pre" } } */
+-/* { dg-final { cleanup-tree-dump "pre" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr42963.c
++++ b/src/gcc/testsuite/gcc.dg/pr42963.c
+@@ -25,4 +25,3 @@ bar (void)
+     }
+ }
+ /* { dg-final { scan-tree-dump-times "case 1:" 0 "cfg" } } */
+-/* { dg-final { cleanup-tree-dump "cfg" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr43513.c
++++ b/src/gcc/testsuite/gcc.dg/pr43513.c
+@@ -16,4 +16,3 @@ foo3 ()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "alloca" 0 "ccp2"} } */
+-/* { dg-final { cleanup-tree-dump "ccp2" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr43864-2.c
++++ b/src/gcc/testsuite/gcc.dg/pr43864-2.c
+@@ -20,4 +20,3 @@ f (int c, int b, int d)
+ /* { dg-final { scan-tree-dump-times "if " 0 "pre"} } */
+ /* { dg-final { scan-tree-dump-times "(?n)_.*\\+.*_" 1 "pre"} } */
+ /* { dg-final { scan-tree-dump-not "Invalid sum" "pre"} } */
+-/* { dg-final { cleanup-tree-dump "pre" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr43864-3.c
++++ b/src/gcc/testsuite/gcc.dg/pr43864-3.c
+@@ -21,4 +21,3 @@ int f(int c, int b, int d)
+ /* { dg-final { scan-tree-dump-times "if " 0 "pre"} } */
+ /* { dg-final { scan-tree-dump-times "(?n)_.*\\+.*_" 1 "pre"} } */
+ /* { dg-final { scan-tree-dump-not "Invalid sum" "pre"} } */
+-/* { dg-final { cleanup-tree-dump "pre" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr43864-4.c
++++ b/src/gcc/testsuite/gcc.dg/pr43864-4.c
+@@ -26,4 +26,3 @@ int f(int c, int b, int d)
+ /* { dg-final { scan-tree-dump-times "(?n)_.*\\+.*_" 1 "pre"} } */
+ /* { dg-final { scan-tree-dump-times "(?n)_.*-.*_" 2 "pre"} } */
+ /* { dg-final { scan-tree-dump-not "Invalid sum" "pre"} } */
+-/* { dg-final { cleanup-tree-dump "pre" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr43864.c
++++ b/src/gcc/testsuite/gcc.dg/pr43864.c
+@@ -33,4 +33,3 @@ hprofStartupp (char *outputFileName, char *ctx)
+ 
+ /* { dg-final { scan-tree-dump-times "myfree \\(" 1 "pre"} } */
+ /* { dg-final { scan-tree-dump-not "Invalid sum" "pre"} } */
+-/* { dg-final { cleanup-tree-dump "pre" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr44024.c
++++ b/src/gcc/testsuite/gcc.dg/pr44024.c
+@@ -12,4 +12,3 @@ int main()
+ }
+ 
+ /* { dg-final { scan-tree-dump-not "if \\(foo" "ccp1" { target { ! avr*-*-* } } } } */
+-/* { dg-final { cleanup-tree-dump "ccp1" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr44194-1.c
++++ b/src/gcc/testsuite/gcc.dg/pr44194-1.c
+@@ -13,11 +13,9 @@ void func() {
+ }
+ 
+ /* { dg-final { scan-rtl-dump "global deletions = (2|3)" "dse1" } } */
+-/* { dg-final { cleanup-rtl-dump "dse1" } } */
+ 
+ /* Here we want to ignore frame-related instructions, marked as insn/f,
+    that do things like store the link register to the stack.  We also want
+    to treat insns the same regardless of whether they have a scheduling
+    :TI marker, so match both "insn " and "insn:".  */
+ /* { dg-final { scan-rtl-dump-not "insn\[: \]\[^\n\]*set \\(mem(?!\[^\n\]*scratch)" "final" } } */
+-/* { dg-final { cleanup-rtl-dump "final" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr44194-2.c
++++ b/src/gcc/testsuite/gcc.dg/pr44194-2.c
+@@ -9,4 +9,3 @@ void func() {
+   bar(s.a, s.b);
+ }
+ /* { dg-final { scan-rtl-dump "global deletions = 0"  "dse1" } } */
+-/* { dg-final { cleanup-rtl-dump "dse1" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr44214-1.c
++++ b/src/gcc/testsuite/gcc.dg/pr44214-1.c
+@@ -15,4 +15,3 @@ void do_div (v2df *a, v2df *b)
+ 
+ /* { dg-final { scan-tree-dump-times " \\\* " 3 "ccp1" } } */
+ /* { dg-final { scan-tree-dump-times " / " 0 "ccp1" } } */
+-/* { dg-final { cleanup-tree-dump "ccp1" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr44214-2.c
++++ b/src/gcc/testsuite/gcc.dg/pr44214-2.c
+@@ -11,4 +11,3 @@ void do_div (_Complex double *a, _Complex double *b)
+ 
+ /* { dg-final { scan-tree-dump-times " \\\* " 1 "original" } } */
+ /* { dg-final { scan-tree-dump-times " / " 0 "original" } } */
+-/* { dg-final { cleanup-tree-dump "original" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr44214-3.c
++++ b/src/gcc/testsuite/gcc.dg/pr44214-3.c
+@@ -16,4 +16,3 @@ void do_div (v2df *a, v2df *b)
+ 
+ /* { dg-final { scan-tree-dump-times " \\\* " 3 "ccp1" } } */
+ /* { dg-final { scan-tree-dump-times " / " 0 "ccp1" } } */
+-/* { dg-final { cleanup-tree-dump "ccp1" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr44290-1.c
++++ b/src/gcc/testsuite/gcc.dg/pr44290-1.c
+@@ -15,4 +15,3 @@ void fum(void *to)
+ }
+ 
+ /* { dg-final { scan-tree-dump "foo \\\(void \\\* from, void \\\* to\\\)" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr44290-2.c
++++ b/src/gcc/testsuite/gcc.dg/pr44290-2.c
+@@ -21,4 +21,3 @@ bar (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump "foo \\\(long unsigned int base\\\)" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr45819.c
++++ b/src/gcc/testsuite/gcc.dg/pr45819.c
+@@ -17,4 +17,3 @@ int ehci_hub_control (struct ehci_hcd *ehci, int wIndex)
+ }
+ 
+ /* { dg-final { scan-tree-dump "={v}" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr46217.c
++++ b/src/gcc/testsuite/gcc.dg/pr46217.c
+@@ -8,4 +8,3 @@ int foo(int a)
+ }
+ 
+ /* { dg-final { scan-tree-dump "={v}" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr46309-2.c
++++ b/src/gcc/testsuite/gcc.dg/pr46309-2.c
+@@ -143,5 +143,3 @@ f10 (int a)
+ /* { dg-final { scan-tree-dump-times "Optimizing range tests a_\[0-9\]*.D. -.128, 159. and -.192, 223.\[\n\r\]* into" 1 "reassoc1" } } */
+ /* { dg-final { scan-tree-dump-times "Optimizing range tests a_\[0-9\]*.D. -.1, 1. and -.2, 2. and -.3, 3. and -.4, 4. and -.5, 5. and -.6, 6. and -.7, 7. and -.8, 8.\[\n\r\]* into" 7 "reassoc1" } } */
+ /* { dg-final { scan-tree-dump-times "Optimizing range tests \[^\r\n\]*_\[0-9\]* -.0, 31. and -.128, 159.\[\n\r\]* into" 1 "reassoc2" } } */
+-/* { dg-final { cleanup-tree-dump "reassoc1" } } */
+-/* { dg-final { cleanup-tree-dump "reassoc2" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr46309.c
++++ b/src/gcc/testsuite/gcc.dg/pr46309.c
+@@ -66,5 +66,3 @@ f6 (unsigned int a)
+ /* { dg-final { scan-tree-dump-times "Optimizing range tests a_\[0-9\]*.D. -.0, 31. and -.64, 95.\[\n\r\]* into" 2 "reassoc1" } } */
+ /* { dg-final { scan-tree-dump-times "Optimizing range tests a_\[0-9\]*.D. -.128, 159. and -.192, 223.\[\n\r\]* into" 1 "reassoc1" } } */
+ /* { dg-final { scan-tree-dump-times "Optimizing range tests \[^\r\n\]*_\[0-9\]* -.0, 31. and -.128, 159.\[\n\r\]* into" 1 "reassoc2" } } */
+-/* { dg-final { cleanup-tree-dump "reassoc1" } } */
+-/* { dg-final { cleanup-tree-dump "reassoc2" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr46647.c
++++ b/src/gcc/testsuite/gcc.dg/pr46647.c
+@@ -27,4 +27,3 @@ func3 (void)
+ 
+ /* The xfail for avr, cris-* and crisv32-* is due to PR53535.  */
+ /* { dg-final { scan-tree-dump-not "memset" "optimized" { xfail avr-*-* cris-*-* crisv32-*-* } } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr46909.c
++++ b/src/gcc/testsuite/gcc.dg/pr46909.c
+@@ -17,4 +17,3 @@ foo (unsigned int x)
+ /* { dg-final { scan-tree-dump-times "x_\[0-9\]+\\(D\\) != 6" 0 "optimized" } } */
+ /* { dg-final { scan-tree-dump-times "x_\[0-9\]+\\(D\\) == 2" 0 "optimized" } } */
+ /* { dg-final { scan-tree-dump-times "x_\[0-9\]+\\(D\\) == 6" 0 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr47391.c
++++ b/src/gcc/testsuite/gcc.dg/pr47391.c
+@@ -19,4 +19,3 @@ main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-not "i = 1;" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr47763.c
++++ b/src/gcc/testsuite/gcc.dg/pr47763.c
+@@ -7,4 +7,3 @@ foo()
+ }
+ 
+ /* { dg-final { scan-rtl-dump-not "Web oldreg" "web" } } */
+-/* { dg-final { cleanup-rtl-dump "web" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr47917.c
++++ b/src/gcc/testsuite/gcc.dg/pr47917.c
+@@ -35,4 +35,3 @@ main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "snprintf" 2 "optimized" } } */
+ /* { dg-final { scan-tree-dump-times "sprintf" 0 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.dg/pr49551.c
+@@ -0,0 +1,7 @@
++/* { dg-do compile } */
++/* { dg-options "-O -fdata-sections" } */
++
++int x = 1;
++int x;
++
++/* { dg-final { scan-assembler-not {comm[\t ]+x} } } */
+--- a/src/gcc/testsuite/gcc.dg/pr50717-1.c
++++ b/src/gcc/testsuite/gcc.dg/pr50717-1.c
+@@ -23,4 +23,3 @@ h (char a, char b, int c)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "WIDEN_MULT_PLUS_EXPR" 0 "widening_mul" } } */
+-/* { dg-final { cleanup-tree-dump "widening_mul" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr50763.c
++++ b/src/gcc/testsuite/gcc.dg/pr50763.c
+@@ -13,4 +13,3 @@ foo (int c, int d)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "== 33" 2 "pre"} } */
+-/* { dg-final { cleanup-tree-dump "pre" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr51491-2.c
++++ b/src/gcc/testsuite/gcc.dg/pr51491-2.c
+@@ -31,4 +31,3 @@ f (int n)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "CLOBBER" 2 "ccp1"} } */
+-/* { dg-final { cleanup-tree-dump "ccp1" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr51491.c
++++ b/src/gcc/testsuite/gcc.dg/pr51491.c
+@@ -22,4 +22,3 @@ int f(void)
+ }
+ 
+ /* { dg-final { scan-rtl-dump-times "Partition" 1 "expand"} } */
+-/* { dg-final { cleanup-rtl-dump "expand" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr51683.c
++++ b/src/gcc/testsuite/gcc.dg/pr51683.c
+@@ -15,4 +15,3 @@ foo (void *p)
+ }
+ 
+ /* { dg-final { scan-tree-dump "memcpy" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr51867.c
++++ b/src/gcc/testsuite/gcc.dg/pr51867.c
+@@ -14,4 +14,3 @@ float b(float x)
+ /* Here the calls to sqrtf should be expanded into CALL_INSNs, rather than
+    fpu sqrtf rtl patterns.  */
+ /* { dg-final { scan-rtl-dump-times "call_insn" 2 "expand" } } */
+-/* { dg-final { cleanup-rtl-dump "expand" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr51879-12.c
++++ b/src/gcc/testsuite/gcc.dg/pr51879-12.c
+@@ -26,4 +26,3 @@ foo (int y)
+ 
+ /* { dg-final { scan-tree-dump-times "bar \\(" 1 "pre" { xfail *-*-* } } } */
+ /* { dg-final { scan-tree-dump-times "bar2 \\(" 1 "pre" { xfail *-*-* } } } */
+-/* { dg-final { cleanup-tree-dump "pre" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr51879-16.c
++++ b/src/gcc/testsuite/gcc.dg/pr51879-16.c
+@@ -29,4 +29,3 @@ int bar (int c) {
+ 
+ /* { dg-final { scan-tree-dump-times "foo \\(" 1 "pre"} } */
+ /* { dg-final { scan-tree-dump-times "foo2 \\(" 1 "pre"} } */
+-/* { dg-final { cleanup-tree-dump "pre" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr51879-17.c
++++ b/src/gcc/testsuite/gcc.dg/pr51879-17.c
+@@ -29,4 +29,3 @@ int bar (int c) {
+ 
+ /* { dg-final { scan-tree-dump-times "foo \\(" 2 "pre"} } */
+ /* { dg-final { scan-tree-dump-times "foo2 \\(" 2 "pre"} } */
+-/* { dg-final { cleanup-tree-dump "pre" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr51879-18.c
++++ b/src/gcc/testsuite/gcc.dg/pr51879-18.c
+@@ -14,4 +14,3 @@ void bar (int c, int *p)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "foo \\(" 1 "pre"} } */
+-/* { dg-final { cleanup-tree-dump "pre" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr51879-2.c
++++ b/src/gcc/testsuite/gcc.dg/pr51879-2.c
+@@ -16,4 +16,3 @@ foo (int y)
+ 
+ /* { dg-final { scan-tree-dump-times "bar \\(" 1 "pre"} } */
+ /* { dg-final { scan-tree-dump-times "baz \\(" 1 "pre"} } */
+-/* { dg-final { cleanup-tree-dump "pre" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr51879-3.c
++++ b/src/gcc/testsuite/gcc.dg/pr51879-3.c
+@@ -16,4 +16,3 @@ foo (int y)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "bar \\(" 1 "pre"} } */
+-/* { dg-final { cleanup-tree-dump "pre" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr51879-4.c
++++ b/src/gcc/testsuite/gcc.dg/pr51879-4.c
+@@ -13,4 +13,3 @@ int foo (int y)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "bar \\(" 2 "pre"} } */
+-/* { dg-final { cleanup-tree-dump "pre" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr51879-6.c
++++ b/src/gcc/testsuite/gcc.dg/pr51879-6.c
+@@ -24,4 +24,3 @@ foo (int y)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "bar \\(" 1 "pre"} } */
+-/* { dg-final { cleanup-tree-dump "pre" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr51879-7.c
++++ b/src/gcc/testsuite/gcc.dg/pr51879-7.c
+@@ -13,4 +13,3 @@ foo (int y)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "z = 5" 1 "pre"} } */
+-/* { dg-final { cleanup-tree-dump "pre" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr51879.c
++++ b/src/gcc/testsuite/gcc.dg/pr51879.c
+@@ -16,4 +16,3 @@ foo (int y)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "bar \\(" 1 "pre"} } */
+-/* { dg-final { cleanup-tree-dump "pre" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr52134.c
++++ b/src/gcc/testsuite/gcc.dg/pr52134.c
+@@ -11,4 +11,3 @@ int f1(int t)
+ }
+ 
+ /* { dg-final { scan-tree-dump-not "\\\&" "original" } } */
+-/* { dg-final { cleanup-tree-dump "original" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr52267.c
++++ b/src/gcc/testsuite/gcc.dg/pr52267.c
+@@ -21,4 +21,3 @@ bar (int a)
+ 
+ /* { dg-final { scan-tree-dump-not "& 3" "optimized" } } */
+ /* { dg-final { scan-tree-dump-not "& -4" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr52445.c
++++ b/src/gcc/testsuite/gcc.dg/pr52445.c
+@@ -12,4 +12,3 @@ foo (char *buf, unsigned long len)
+ }
+ 
+ /* { dg-final { scan-tree-dump-not "cstore\." "cselim" } } */
+-/* { dg-final { cleanup-tree-dump "cselim" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr52448.c
++++ b/src/gcc/testsuite/gcc.dg/pr52448.c
+@@ -27,4 +27,3 @@ void f2 (int *p, int a, int b, int *cond, int *cond2)
+ 
+ /* None of the above conditional stores might be made unconditional.  */
+ /* { dg-final { scan-tree-dump-not "cstore" "cselim" } } */
+-/* { dg-final { cleanup-tree-dump "cselim" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr52578.c
++++ b/src/gcc/testsuite/gcc.dg/pr52578.c
+@@ -11,4 +11,3 @@ long foo (int i)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "return 2;" 2 "original" } } */
+-/* { dg-final { cleanup-tree-dump "original" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr52691.c
++++ b/src/gcc/testsuite/gcc.dg/pr52691.c
+@@ -21,4 +21,3 @@ foo (int a, ...)
+ /* { dg-final { scan-tree-dump "__builtin_next_arg" "optimized" { target { { i?86-*-* x86_64-*-* } && ia32 } } } } */
+ /* { dg-final { scan-tree-dump "__builtin_next_arg" "optimized" { target { powerpc*-*-darwin* powerpc*-*-aix* } } } } */
+ /* { dg-final { scan-tree-dump "__builtin_next_arg" "optimized" { target { powerpc*-*-linux* && lp64 } } } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr54087.c
++++ b/src/gcc/testsuite/gcc.dg/pr54087.c
+@@ -1,7 +1,7 @@
+ /* PR54087.  Verify __atomic_sub (val) uses __atomic_add (-val) if there is no
+              atomic_aub.  */
+-/* { dg-require-effective-target sync_int_long } */
+ /* { dg-do compile { target { i?86-*-* x86_64-*-* } } } */
++/* { dg-require-effective-target sync_int_long } */
+ /* { dg-final { scan-assembler-times "xadd" 2 } } */
+ 
+ 
+--- a/src/gcc/testsuite/gcc.dg/pr55027.c
++++ b/src/gcc/testsuite/gcc.dg/pr55027.c
+@@ -9,4 +9,3 @@ void f (v2df *x)
+ }
+ 
+ /* { dg-final { scan-tree-dump-not "gimple_assign" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr56094.c
++++ b/src/gcc/testsuite/gcc.dg/pr56094.c
+@@ -78,4 +78,3 @@ foo ()
+ 
+ /* Verify no statements get the location of the foo () decl.  */
+ /* { dg-final { scan-tree-dump-not " : 65:1\\\]" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr56098-1.c
++++ b/src/gcc/testsuite/gcc.dg/pr56098-1.c
+@@ -13,4 +13,3 @@ foo (int x)
+ }
+ 
+ /* { dg-final { scan-tree-dump-not "=\[^\n\r]*\\*p" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr56098-2.c
++++ b/src/gcc/testsuite/gcc.dg/pr56098-2.c
+@@ -16,4 +16,3 @@ bar (struct S *x, int y)
+ }
+ 
+ /* { dg-final { scan-tree-dump-not "r_\[0-9]* =.v. \[^\n\r]*;\[\n\r]*  r_\[0-9]* =.v. " "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr56837.c
++++ b/src/gcc/testsuite/gcc.dg/pr56837.c
+@@ -64,4 +64,3 @@ fv (void)
+ /* { dg-final { scan-tree-dump-times "memset ..b, 1, 1024.;" 1 "optimized" } } */
+ /* { dg-final { scan-tree-dump-times "memset ..c, 68, 16384.;" 1 "optimized" } } */
+ /* { dg-final { scan-tree-dump-times "memset ..v, 18, 16384.;" 1 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr56997-4.c
++++ b/src/gcc/testsuite/gcc.dg/pr56997-4.c
+@@ -20,4 +20,3 @@ foo (test_type u)
+ /* The C++ memory model forbids data store race conditions outside the
+    unaligned data member, therefore only QI or HI access is allowed, no SI.  */
+ /* { dg-final { scan-rtl-dump-not "mem/v(/.)*:SI" "final" } } */
+-/* { dg-final { cleanup-rtl-dump "final" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr57518.c
++++ b/src/gcc/testsuite/gcc.dg/pr57518.c
+@@ -14,4 +14,3 @@ void foo() {
+ }
+ 
+ /* { dg-final { scan-rtl-dump-not "REG_EQUIV\[^\n\]*mem\[^\n\]*\"ip\".*subreg" "ira" } } */
+-/* { dg-final { cleanup-rtl-dump "ira" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr58145-1.c
++++ b/src/gcc/testsuite/gcc.dg/pr58145-1.c
+@@ -34,4 +34,3 @@ f4 (int val)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times " ={v} " 4 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr58145-2.c
++++ b/src/gcc/testsuite/gcc.dg/pr58145-2.c
+@@ -48,4 +48,3 @@ f5 (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times " ={v} " 4 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr58463.c
++++ b/src/gcc/testsuite/gcc.dg/pr58463.c
+@@ -12,4 +12,3 @@ fn1 (list_data * p1)
+     p1->data16 = p1->data16 & 1 & p1->data16 >> 1;
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "ealias" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr58742-1.c
++++ b/src/gcc/testsuite/gcc.dg/pr58742-1.c
+@@ -10,4 +10,3 @@ fx (int *b, int *e)
+ }
+ 
+ /* { dg-final { scan-tree-dump "return e" "cddce1" } } */
+-/* { dg-final { cleanup-tree-dump "cddce1" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr58742-2.c
++++ b/src/gcc/testsuite/gcc.dg/pr58742-2.c
+@@ -10,4 +10,3 @@ fx (char *a, __SIZE_TYPE__ sz)
+ }
+ 
+ /* { dg-final { scan-tree-dump "return sz" "cddce1" } } */
+-/* { dg-final { cleanup-tree-dump "cddce1" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr58742-3.c
++++ b/src/gcc/testsuite/gcc.dg/pr58742-3.c
+@@ -11,4 +11,3 @@ fx (int *a, int sz)
+ }
+ 
+ /* { dg-final { scan-tree-dump "return a" "cddce1" } } */
+-/* { dg-final { cleanup-tree-dump "cddce1" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr58805.c
++++ b/src/gcc/testsuite/gcc.dg/pr58805.c
+@@ -21,4 +21,3 @@ foo (int n, TYPE *x, TYPE *y)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "__asm__" 2 "pre"} } */
+-/* { dg-final { cleanup-tree-dump "pre" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr59643.c
++++ b/src/gcc/testsuite/gcc.dg/pr59643.c
+@@ -12,4 +12,3 @@ foo (double *a, double *b, double *c, double d, double e, int n)
+ 
+ /* { dg-final { scan-tree-dump-times "Before commoning:" 1 "pcom" } } */
+ /* { dg-final { scan-tree-dump-times "Unrolling 2 times" 1 "pcom" } } */
+-/* { dg-final { cleanup-tree-dump "pcom" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr60267.c
++++ b/src/gcc/testsuite/gcc.dg/pr60267.c
+@@ -11,4 +11,3 @@ foo (int *a, int *b, int *c)
+     a[i] = b[i] * c[i];
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.dg/pr61158.c
++++ b/src/gcc/testsuite/gcc.dg/pr61158.c
+@@ -9,4 +9,3 @@ foo (unsigned int x)
+ }
+ 
+ /* { dg-final { scan-tree-dump "return 0;" "original" { target { ilp32 || lp64 } } } } */
+-/* { dg-final { cleanup-tree-dump "original" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr61762.c
++++ b/src/gcc/testsuite/gcc.dg/pr61762.c
+@@ -16,4 +16,3 @@ unsigned int f()
+    the unused local static is removed.  */
+ 
+ /* { dg-final { scan-tree-dump-not "Private" "release_ssa" } } */
+-/* { dg-final { cleanup-tree-dump "release_ssa" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr62167.c
++++ b/src/gcc/testsuite/gcc.dg/pr62167.c
+@@ -47,4 +47,3 @@ main ()
+ }
+ 
+ /* { dg-final { scan-tree-dump-not "Removing basic block" "pre"} } */
+-/* { dg-final { cleanup-tree-dump "pre" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr63743.c
++++ b/src/gcc/testsuite/gcc.dg/pr63743.c
+@@ -8,4 +8,3 @@ libcall_dep (double x, double y)
+ }
+ 
+ /* { dg-final { scan-rtl-dump-times "Swap operands" 1 "expand" } } */
+-/* { dg-final { cleanup-rtl-dump "expand" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr64277.c
++++ b/src/gcc/testsuite/gcc.dg/pr64277.c
+@@ -3,7 +3,6 @@
+ /* { dg-options "-O3 -Wall -Werror -fdump-tree-cunroll-details" } */
+ /* { dg-final { scan-tree-dump "loop with 5 iterations completely unrolled" "cunroll" } } */
+ /* { dg-final { scan-tree-dump "loop with 6 iterations completely unrolled" "cunroll" } } */
+-/* { dg-final { cleanup-tree-dump "cunroll" } } */
+ 
+ int f1[10];
+ void test1 (short a[], short m, unsigned short l)
+--- a/src/gcc/testsuite/gcc.dg/pr64309.c
++++ b/src/gcc/testsuite/gcc.dg/pr64309.c
+@@ -63,4 +63,3 @@ main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-not "(<<|>>)" "original" } } */
+-/* { dg-final { cleanup-tree-dump "original" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr64434.c
++++ b/src/gcc/testsuite/gcc.dg/pr64434.c
+@@ -16,6 +16,5 @@ void foo ()
+ }
+ 
+ /* { dg-final { scan-rtl-dump-times "Swap operands" 1 "expand" } } */
+-/* { dg-final { cleanup-rtl-dump "expand" } } */
+ 
+ 
+--- a/src/gcc/testsuite/gcc.dg/pr64454.c
++++ b/src/gcc/testsuite/gcc.dg/pr64454.c
+@@ -40,4 +40,3 @@ f6 (int x)
+ 
+ /* { dg-final { scan-tree-dump-times "% 5" 6 "vrp1" } } */
+ /* { dg-final { scan-tree-dump-times "% 6" 0 "vrp1" } } */
+-/* { dg-final { cleanup-tree-dump "vrp1" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr64715-1.c
++++ b/src/gcc/testsuite/gcc.dg/pr64715-1.c
+@@ -20,4 +20,3 @@ foo ()
+ }
+ 
+ /* { dg-final { scan-tree-dump "__builtin___strcpy_chk\[^;\n\r\]*, 5\\\);" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/pr64715-2.c
++++ b/src/gcc/testsuite/gcc.dg/pr64715-2.c
+@@ -16,4 +16,3 @@ foo (int x)
+ }
+ 
+ /* { dg-final { scan-tree-dump "__builtin_memcpy \\\(\[^;\n\r\]*, \"abcdefghijkl\", 13\\\);" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.dg/pr67043.c
+@@ -0,0 +1,32 @@
++/* { dg-do compile } */
++/* { dg-options "-O3 -fcompare-debug -w" } */
++
++extern void rt_mutex_owner (void);
++extern void rt_mutex_deadlock_account_lock (int);
++extern void signal_pending (void);
++__typeof__ (int *) a;
++int b;
++
++int
++try_to_take_rt_mutex (int p1) {
++  rt_mutex_owner ();
++  if (b)
++    return 0;
++  rt_mutex_deadlock_account_lock (p1);
++  return 1;
++}
++
++void
++__rt_mutex_slowlock (int p1) {
++  int c;
++  for (;;) {
++    c = ({
++      asm ("" : "=r"(a));
++      a;
++    });
++    if (try_to_take_rt_mutex (c))
++      break;
++    if (__builtin_expect (p1 == 0, 0))
++      signal_pending ();
++  }
++}
+--- a/src/gcc/testsuite/gcc.dg/predict-1.c
++++ b/src/gcc/testsuite/gcc.dg/predict-1.c
+@@ -24,4 +24,3 @@ void foo (int bound)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "loop iv compare heuristics: 0.0%" 5 "profile_estimate"} } */
+-/* { dg-final { cleanup-tree-dump "profile_estimate" } } */
+--- a/src/gcc/testsuite/gcc.dg/predict-2.c
++++ b/src/gcc/testsuite/gcc.dg/predict-2.c
+@@ -24,4 +24,3 @@ void foo (int base, int bound)
+ }
+ 
+ /* { dg-final { scan-tree-dump-not "loop iv compare heuristics" "profile_estimate"} } */
+-/* { dg-final { cleanup-tree-dump "profile_estimate" } } */
+--- a/src/gcc/testsuite/gcc.dg/predict-3.c
++++ b/src/gcc/testsuite/gcc.dg/predict-3.c
+@@ -22,4 +22,3 @@ void foo (int bound)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "loop iv compare heuristics: 100.0%" 4 "profile_estimate"} } */
+-/* { dg-final { cleanup-tree-dump "profile_estimate" } } */
+--- a/src/gcc/testsuite/gcc.dg/predict-4.c
++++ b/src/gcc/testsuite/gcc.dg/predict-4.c
+@@ -16,4 +16,3 @@ void foo (int bound)
+ }
+ 
+ /* { dg-final { scan-tree-dump "loop iv compare heuristics: 50.0%" "profile_estimate"} } */
+-/* { dg-final { cleanup-tree-dump "profile_estimate" } } */
+--- a/src/gcc/testsuite/gcc.dg/predict-5.c
++++ b/src/gcc/testsuite/gcc.dg/predict-5.c
+@@ -22,4 +22,3 @@ void foo (int base, int bound)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "loop iv compare heuristics: 100.0%" 4 "profile_estimate"} } */
+-/* { dg-final { cleanup-tree-dump "profile_estimate" } } */
+--- a/src/gcc/testsuite/gcc.dg/predict-6.c
++++ b/src/gcc/testsuite/gcc.dg/predict-6.c
+@@ -22,4 +22,3 @@ void foo (int base, int bound)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "loop iv compare heuristics: 0.0%" 4 "profile_estimate"} } */
+-/* { dg-final { cleanup-tree-dump "profile_estimate" } } */
+--- a/src/gcc/testsuite/gcc.dg/predict-7.c
++++ b/src/gcc/testsuite/gcc.dg/predict-7.c
+@@ -14,4 +14,3 @@ void foo (int base)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "loop branch heuristics" 0 "profile_estimate"} } */
+-/* { dg-final { cleanup-tree-dump "profile_estimate" } } */
+--- a/src/gcc/testsuite/gcc.dg/predict-8.c
++++ b/src/gcc/testsuite/gcc.dg/predict-8.c
+@@ -9,4 +9,3 @@ int foo(float a, float b) {
+ }
+ 
+ /* { dg-final { scan-rtl-dump-times "REG_BR_PROB 100" 1 "expand"} } */
+-/* { dg-final { cleanup-rtl-dump "expand" } } */
+--- a/src/gcc/testsuite/gcc.dg/profile-dir-1.c
++++ b/src/gcc/testsuite/gcc.dg/profile-dir-1.c
+@@ -9,4 +9,3 @@ main(void)
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-ipa-dump "cgraph" } } */
+--- a/src/gcc/testsuite/gcc.dg/profile-dir-2.c
++++ b/src/gcc/testsuite/gcc.dg/profile-dir-2.c
+@@ -9,4 +9,3 @@ main(void)
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-ipa-dump "cgraph" } } */
+--- a/src/gcc/testsuite/gcc.dg/profile-dir-3.c
++++ b/src/gcc/testsuite/gcc.dg/profile-dir-3.c
+@@ -9,4 +9,3 @@ main(void)
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-ipa-dump "cgraph" } } */
+--- a/src/gcc/testsuite/gcc.dg/pure-1.c
++++ b/src/gcc/testsuite/gcc.dg/pure-1.c
+@@ -13,4 +13,3 @@ int func_a(struct test_a *a)
+ }
+ 
+ /* { dg-final { scan-ipa-dump-not "found to be pure: func_a" "pure-const" } } */
+-/* { dg-final { cleanup-ipa-dump "pure-const" } } */
+--- a/src/gcc/testsuite/gcc.dg/shrink-wrap-loop.c
++++ b/src/gcc/testsuite/gcc.dg/shrink-wrap-loop.c
+@@ -17,4 +17,3 @@ test (int *p1, int *p2)
+   return 1;
+ }
+ /* { dg-final { scan-rtl-dump "Performing shrink-wrapping" "pro_and_epilogue"  } } */
+-/* { dg-final { cleanup-rtl-dump "pro_and_epilogue" } } */
+--- a/src/gcc/testsuite/gcc.dg/sms-1.c
++++ b/src/gcc/testsuite/gcc.dg/sms-1.c
+@@ -41,5 +41,4 @@ main ()
+ }
+ 
+ /* { dg-final { scan-rtl-dump-times "SMS succeeded" 1 "sms"  { target powerpc*-*-* spu-*-* } } } */
+-/* { dg-final { cleanup-rtl-dump "sms" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/sms-10.c
++++ b/src/gcc/testsuite/gcc.dg/sms-10.c
+@@ -115,5 +115,4 @@ main ()
+ }
+ 
+ /* { dg-final { scan-rtl-dump-times "SMS succeeded" 1 "sms" { target powerpc*-*-* } } } */
+-/* { dg-final { cleanup-rtl-dump "sms" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/sms-11.c
++++ b/src/gcc/testsuite/gcc.dg/sms-11.c
+@@ -34,4 +34,3 @@ main ()
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-rtl-dump "sms" } } */
+--- a/src/gcc/testsuite/gcc.dg/sms-12.c
++++ b/src/gcc/testsuite/gcc.dg/sms-12.c
+@@ -39,5 +39,4 @@ main ()
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-rtl-dump "sms" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/sms-2.c
++++ b/src/gcc/testsuite/gcc.dg/sms-2.c
+@@ -33,4 +33,3 @@ fun (nb)
+ }
+ 
+ /* { dg-final { scan-rtl-dump-times "SMS loop many exits" 1 "sms" { target spu-*-* powerpc*-*-* } } } */
+-/* { dg-final { cleanup-rtl-dump "sms" } } */
+--- a/src/gcc/testsuite/gcc.dg/sms-3.c
++++ b/src/gcc/testsuite/gcc.dg/sms-3.c
+@@ -39,5 +39,4 @@ main ()
+ }
+ 
+ /* { dg-final { scan-rtl-dump-times "SMS succeeded" 1 "sms" { target spu-*-* powerpc*-*-* } } } */
+-/* { dg-final { cleanup-rtl-dump "sms" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/sms-4.c
++++ b/src/gcc/testsuite/gcc.dg/sms-4.c
+@@ -36,5 +36,4 @@ main ()
+ }
+ 
+ /* { dg-final { scan-rtl-dump-times "SMS succeeded" 1 "sms" { target spu-*-* powerpc*-*-* } } } */
+-/* { dg-final { cleanup-rtl-dump "sms" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/sms-5.c
++++ b/src/gcc/testsuite/gcc.dg/sms-5.c
+@@ -48,5 +48,4 @@ int main ()
+ 
+ /* { dg-final { scan-rtl-dump-times "SMS succeeded" 1 "sms" { target spu-*-* } } } */
+ 
+-/* { dg-final { cleanup-rtl-dump "sms" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/sms-6.c
++++ b/src/gcc/testsuite/gcc.dg/sms-6.c
+@@ -44,4 +44,3 @@ int main()
+ 
+ /* { dg-final { scan-rtl-dump-times "SMS succeeded" 1 "sms" { target spu-*-* } } } */
+ /* { dg-final { scan-rtl-dump-times "SMS succeeded" 3 "sms" { target powerpc*-*-* } } } */
+-/* { dg-final { cleanup-rtl-dump "sms" } } */
+--- a/src/gcc/testsuite/gcc.dg/sms-7.c
++++ b/src/gcc/testsuite/gcc.dg/sms-7.c
+@@ -45,5 +45,4 @@ int main()
+ }
+ 
+ /* { dg-final { scan-rtl-dump-times "SMS succeeded" 1 "sms" { target spu-*-* } } } */
+-/* { dg-final { cleanup-rtl-dump "sms" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/sms-8.c
++++ b/src/gcc/testsuite/gcc.dg/sms-8.c
+@@ -37,6 +37,5 @@ main ()
+ }
+ 
+ /* { dg-final { scan-rtl-dump-times "SMS succeeded" 0 "sms" { target powerpc*-*-* } } } */
+-/* { dg-final { cleanup-rtl-dump "sms" } } */
+ 
+ 
+--- a/src/gcc/testsuite/gcc.dg/stack-layout-1.c
++++ b/src/gcc/testsuite/gcc.dg/stack-layout-1.c
+@@ -22,4 +22,3 @@ void foo ()
+   }
+ 
+ /* { dg-final { scan-rtl-dump-times "Partition" 1 "expand" } } */
+-/* { dg-final { cleanup-rtl-dump "expand" } } */
+--- a/src/gcc/testsuite/gcc.dg/stack-layout-2.c
++++ b/src/gcc/testsuite/gcc.dg/stack-layout-2.c
+@@ -21,4 +21,3 @@ int foo()
+ }
+ /* { dg-final { scan-rtl-dump "size 8192" "expand" } } */
+ /* { dg-final { scan-rtl-dump "size 32" "expand" } } */
+-/* { dg-final { cleanup-rtl-dump "expand" } } */
+--- a/src/gcc/testsuite/gcc.dg/store-motion-fgcse-sm.c
++++ b/src/gcc/testsuite/gcc.dg/store-motion-fgcse-sm.c
+@@ -30,5 +30,4 @@ main ()
+ 
+ /* Check that -fgcse-sm did something for f.  */
+ /* { dg-final { scan-rtl-dump "STORE_MOTION of f, .* basic blocks, 1 insns deleted, 1 insns created" "store_motion" } } */
+-/* { dg-final { cleanup-rtl-dump "store_motion" } } */
+  
+--- a/src/gcc/testsuite/gcc.dg/strict-overflow-1.c
++++ b/src/gcc/testsuite/gcc.dg/strict-overflow-1.c
+@@ -13,4 +13,3 @@ foo (int i)
+ }
+ 
+ /* { dg-final { scan-tree-dump-not "-\[ \]*5" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/strict-overflow-2.c
++++ b/src/gcc/testsuite/gcc.dg/strict-overflow-2.c
+@@ -13,4 +13,3 @@ foo (int i)
+ }
+ 
+ /* { dg-final { scan-tree-dump-not "100" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/strict-overflow-3.c
++++ b/src/gcc/testsuite/gcc.dg/strict-overflow-3.c
+@@ -13,4 +13,3 @@ foo (int i, int j)
+ }
+ 
+ /* { dg-final { scan-tree-dump-not "1000" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/strict-overflow-4.c
++++ b/src/gcc/testsuite/gcc.dg/strict-overflow-4.c
+@@ -13,4 +13,3 @@ foo (int i)
+ }
+ 
+ /* { dg-final { scan-tree-dump "return 1;" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/strict-overflow-5.c
++++ b/src/gcc/testsuite/gcc.dg/strict-overflow-5.c
+@@ -15,5 +15,4 @@ int foo (int i)
+ }
+ 
+ /* { dg-final { scan-tree-dump "return 3" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/strict-overflow-6.c
++++ b/src/gcc/testsuite/gcc.dg/strict-overflow-6.c
+@@ -13,4 +13,3 @@ foo (char* p)
+ }
+ 
+ /* { dg-final { scan-tree-dump-not "\[+\]\[ \]*1000" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/strlenopt-1.c
++++ b/src/gcc/testsuite/gcc.dg/strlenopt-1.c
+@@ -42,4 +42,3 @@ main ()
+ /* { dg-final { scan-tree-dump-times "strcat \\(" 0 "strlen" } } */
+ /* { dg-final { scan-tree-dump-times "strchr \\(" 0 "strlen" } } */
+ /* { dg-final { scan-tree-dump-times "stpcpy \\(" 0 "strlen" } } */
+-/* { dg-final { cleanup-tree-dump "strlen" } } */
+--- a/src/gcc/testsuite/gcc.dg/strlenopt-10.c
++++ b/src/gcc/testsuite/gcc.dg/strlenopt-10.c
+@@ -80,4 +80,3 @@ main ()
+ /* { dg-final { scan-tree-dump-times "stpcpy \\(" 0 "strlen" } } */
+ /* { dg-final { scan-tree-dump-times "\\*q_\[0-9\]* = 32;" 1 "strlen" } } */
+ /* { dg-final { scan-tree-dump-times "memcpy \\(\[^\n\r\]*, 1\\)" 1 "strlen" } } */
+-/* { dg-final { cleanup-tree-dump "strlen" } } */
+--- a/src/gcc/testsuite/gcc.dg/strlenopt-11.c
++++ b/src/gcc/testsuite/gcc.dg/strlenopt-11.c
+@@ -73,4 +73,3 @@ main ()
+ /* { dg-final { scan-tree-dump-times "  _\[0-9\]* = strlen \\(\[^\n\r\]*;\[\n\r\]*  l.6. = " 1 "strlen" { target { ! avr-*-* } } } } */
+ /* { dg-final { scan-tree-dump-times "  _\[0-9\]* = strlen \\(\[^\n\r\]*;\[\n\r\]*  l.9. = " 1 "strlen" { target { ! avr-*-* } } } } */
+ /* { dg-final { scan-tree-dump-times "  _\[0-9\]* = strlen \\(\[^\n\r\]*;" 3 "strlen" { target { avr-*-* } } } } */
+-/* { dg-final { cleanup-tree-dump "strlen" } } */
+--- a/src/gcc/testsuite/gcc.dg/strlenopt-13.c
++++ b/src/gcc/testsuite/gcc.dg/strlenopt-13.c
+@@ -71,4 +71,3 @@ main ()
+ /* { dg-final { scan-tree-dump-times "  _\[0-9\]* = strlen \\(\[^\n\r\]*;\[\n\r\]*  l.5. = " 1 "strlen" { target { ! avr-*-* } } } } */
+ /* { dg-final { scan-tree-dump-times "  _\[0-9\]* = strlen \\(\[^\n\r\]*;\[\n\r\]*  l.6. = " 1 "strlen" { target { ! avr-*-* } } } } */
+ /* { dg-final { scan-tree-dump-times "  _\[0-9\]* = strlen \\(\[^\n\r\]*;" 4 "strlen" { target { avr-*-* } } } } */
+-/* { dg-final { cleanup-tree-dump "strlen" } } */
+--- a/src/gcc/testsuite/gcc.dg/strlenopt-14g.c
++++ b/src/gcc/testsuite/gcc.dg/strlenopt-14g.c
+@@ -114,4 +114,3 @@ main ()
+ /* { dg-final { scan-tree-dump-times "strcat \\(" 0 "strlen" } } */
+ /* { dg-final { scan-tree-dump-times "strchr \\(" 0 "strlen" } } */
+ /* { dg-final { scan-tree-dump-times "stpcpy \\(" 2 "strlen" } } */
+-/* { dg-final { cleanup-tree-dump "strlen" } } */
+--- a/src/gcc/testsuite/gcc.dg/strlenopt-14gf.c
++++ b/src/gcc/testsuite/gcc.dg/strlenopt-14gf.c
+@@ -23,4 +23,3 @@
+ /* { dg-final { scan-tree-dump-times "strcpy \\(" 0 "strlen" } } */
+ /* { dg-final { scan-tree-dump-times "strcat \\(" 0 "strlen" } } */
+ /* { dg-final { scan-tree-dump-times "stpcpy \\(" 2 "strlen" } } */
+-/* { dg-final { cleanup-tree-dump "strlen" } } */
+--- a/src/gcc/testsuite/gcc.dg/strlenopt-15.c
++++ b/src/gcc/testsuite/gcc.dg/strlenopt-15.c
+@@ -57,4 +57,3 @@ main ()
+ /* { dg-final { scan-tree-dump-times "strcat \\(" 0 "strlen" } } */
+ /* { dg-final { scan-tree-dump-times "strchr \\(" 0 "strlen" } } */
+ /* { dg-final { scan-tree-dump-times "stpcpy \\(" 0 "strlen" } } */
+-/* { dg-final { cleanup-tree-dump "strlen" } } */
+--- a/src/gcc/testsuite/gcc.dg/strlenopt-16g.c
++++ b/src/gcc/testsuite/gcc.dg/strlenopt-16g.c
+@@ -31,4 +31,3 @@ main ()
+ /* { dg-final { scan-tree-dump-times "strcat \\(" 0 "strlen" } } */
+ /* { dg-final { scan-tree-dump-times "strchr \\(" 0 "strlen" } } */
+ /* { dg-final { scan-tree-dump-times "stpcpy \\(" 1 "strlen" } } */
+-/* { dg-final { cleanup-tree-dump "strlen" } } */
+--- a/src/gcc/testsuite/gcc.dg/strlenopt-17g.c
++++ b/src/gcc/testsuite/gcc.dg/strlenopt-17g.c
+@@ -54,4 +54,3 @@ main ()
+ /* { dg-final { scan-tree-dump-times "strcat \\(" 0 "strlen" } } */
+ /* { dg-final { scan-tree-dump-times "strchr \\(" 0 "strlen" } } */
+ /* { dg-final { scan-tree-dump-times "stpcpy \\(" 1 "strlen" } } */
+-/* { dg-final { cleanup-tree-dump "strlen" } } */
+--- a/src/gcc/testsuite/gcc.dg/strlenopt-18g.c
++++ b/src/gcc/testsuite/gcc.dg/strlenopt-18g.c
+@@ -79,4 +79,3 @@ main ()
+ /* { dg-final { scan-tree-dump-times "strcat \\(" 0 "strlen" } } */
+ /* { dg-final { scan-tree-dump-times "strchr \\(" 0 "strlen" } } */
+ /* { dg-final { scan-tree-dump-times "stpcpy \\(" 2 "strlen" } } */
+-/* { dg-final { cleanup-tree-dump "strlen" } } */
+--- a/src/gcc/testsuite/gcc.dg/strlenopt-19.c
++++ b/src/gcc/testsuite/gcc.dg/strlenopt-19.c
+@@ -78,4 +78,3 @@ main ()
+ /* { dg-final { scan-tree-dump-times "strcat \\(" 0 "strlen" } } */
+ /* { dg-final { scan-tree-dump-times "strchr \\(" 0 "strlen" } } */
+ /* { dg-final { scan-tree-dump-times "stpcpy \\(" 0 "strlen" } } */
+-/* { dg-final { cleanup-tree-dump "strlen" } } */
+--- a/src/gcc/testsuite/gcc.dg/strlenopt-1f.c
++++ b/src/gcc/testsuite/gcc.dg/strlenopt-1f.c
+@@ -15,4 +15,3 @@
+ /* { dg-final { scan-tree-dump-times "strcpy \\(" 0 "strlen" } } */
+ /* { dg-final { scan-tree-dump-times "strcat \\(" 0 "strlen" } } */
+ /* { dg-final { scan-tree-dump-times "stpcpy \\(" 0 "strlen" } } */
+-/* { dg-final { cleanup-tree-dump "strlen" } } */
+--- a/src/gcc/testsuite/gcc.dg/strlenopt-2.c
++++ b/src/gcc/testsuite/gcc.dg/strlenopt-2.c
+@@ -46,4 +46,3 @@ main ()
+ /* { dg-final { scan-tree-dump-times "strcat \\(" 0 "strlen" } } */
+ /* { dg-final { scan-tree-dump-times "strchr \\(" 0 "strlen" } } */
+ /* { dg-final { scan-tree-dump-times "stpcpy \\(" 0 "strlen" } } */
+-/* { dg-final { cleanup-tree-dump "strlen" } } */
+--- a/src/gcc/testsuite/gcc.dg/strlenopt-20.c
++++ b/src/gcc/testsuite/gcc.dg/strlenopt-20.c
+@@ -92,4 +92,3 @@ main ()
+ /* { dg-final { scan-tree-dump-times "strcat \\(" 0 "strlen" } } */
+ /* { dg-final { scan-tree-dump-times "strchr \\(" 1 "strlen" } } */
+ /* { dg-final { scan-tree-dump-times "stpcpy \\(" 0 "strlen" } } */
+-/* { dg-final { cleanup-tree-dump "strlen" } } */
+--- a/src/gcc/testsuite/gcc.dg/strlenopt-21.c
++++ b/src/gcc/testsuite/gcc.dg/strlenopt-21.c
+@@ -63,4 +63,3 @@ main ()
+ /* { dg-final { scan-tree-dump-times "strcat \\(" 0 "strlen" } } */
+ /* { dg-final { scan-tree-dump-times "strchr \\(" 1 "strlen" } } */
+ /* { dg-final { scan-tree-dump-times "stpcpy \\(" 0 "strlen" } } */
+-/* { dg-final { cleanup-tree-dump "strlen" } } */
+--- a/src/gcc/testsuite/gcc.dg/strlenopt-22.c
++++ b/src/gcc/testsuite/gcc.dg/strlenopt-22.c
+@@ -36,5 +36,4 @@ main ()
+ /* { dg-final { scan-tree-dump-times "strcpy \\(" 1 "strlen" } } */
+ /* { dg-final { scan-tree-dump-times "strcat \\(" 0 "strlen" } } */
+ /* { dg-final { scan-tree-dump-times "strchr \\(" 1 "strlen" } } */
+-/* { dg-final { scan-tree-dump-times "stpcpy \\(" 0 "strlen" } } *
+-/* { dg-final { cleanup-tree-dump "strlen" } } */
++/* { dg-final { scan-tree-dump-times "stpcpy \\(" 0 "strlen" } } */
+--- a/src/gcc/testsuite/gcc.dg/strlenopt-22g.c
++++ b/src/gcc/testsuite/gcc.dg/strlenopt-22g.c
+@@ -11,4 +11,3 @@
+ /* { dg-final { scan-tree-dump-times "strcat \\(" 0 "strlen" } } */
+ /* { dg-final { scan-tree-dump-times "strchr \\(" 1 "strlen" } } */
+ /* { dg-final { scan-tree-dump-times "stpcpy \\(" 1 "strlen" } } */
+-/* { dg-final { cleanup-tree-dump "strlen" } } */
+--- a/src/gcc/testsuite/gcc.dg/strlenopt-24.c
++++ b/src/gcc/testsuite/gcc.dg/strlenopt-24.c
+@@ -13,5 +13,4 @@ main ()
+   return 0;
+ }
+ 
+-/* { dg-final { scan-tree-dump-times "strlen \\(" 0 "strlen" } } *
+-/* { dg-final { cleanup-tree-dump "strlen" } } */
++/* { dg-final { scan-tree-dump-times "strlen \\(" 0 "strlen" } } */
+--- a/src/gcc/testsuite/gcc.dg/strlenopt-25.c
++++ b/src/gcc/testsuite/gcc.dg/strlenopt-25.c
+@@ -15,4 +15,3 @@ main ()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "strlen \\(" 0 "strlen" } } */
+-/* { dg-final { cleanup-tree-dump "strlen" } } */
+--- a/src/gcc/testsuite/gcc.dg/strlenopt-26.c
++++ b/src/gcc/testsuite/gcc.dg/strlenopt-26.c
+@@ -22,4 +22,3 @@ main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "strlen \\(" 1 "strlen" } } */
+-/* { dg-final { cleanup-tree-dump "strlen" } } */
+--- a/src/gcc/testsuite/gcc.dg/strlenopt-27.c
++++ b/src/gcc/testsuite/gcc.dg/strlenopt-27.c
+@@ -20,4 +20,3 @@ main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "strlen \\(" 0 "strlen" } } */
+-/* { dg-final { cleanup-tree-dump "strlen" } } */
+--- a/src/gcc/testsuite/gcc.dg/strlenopt-2f.c
++++ b/src/gcc/testsuite/gcc.dg/strlenopt-2f.c
+@@ -15,4 +15,3 @@
+ /* { dg-final { scan-tree-dump-times "strcpy \\(" 0 "strlen" } } */
+ /* { dg-final { scan-tree-dump-times "strcat \\(" 0 "strlen" } } */
+ /* { dg-final { scan-tree-dump-times "stpcpy \\(" 0 "strlen" } } */
+-/* { dg-final { cleanup-tree-dump "strlen" } } */
+--- a/src/gcc/testsuite/gcc.dg/strlenopt-3.c
++++ b/src/gcc/testsuite/gcc.dg/strlenopt-3.c
+@@ -59,8 +59,6 @@ main ()
+ /* { dg-final { scan-tree-dump-times "strcat \\(" 0 "strlen" } } */
+ /* { dg-final { scan-tree-dump-times "strchr \\(" 0 "strlen" } } */
+ /* { dg-final { scan-tree-dump-times "stpcpy \\(" 0 "strlen" } } */
+-/* { dg-final { cleanup-tree-dump "strlen" } } */
+ /* { dg-final { scan-tree-dump-times "return 0" 3 "optimized" } } */
+ /* { dg-final { scan-tree-dump-times "return 4" 1 "optimized" } } */
+ /* { dg-final { scan-tree-dump-times "return 3" 1 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/strlenopt-4.c
++++ b/src/gcc/testsuite/gcc.dg/strlenopt-4.c
+@@ -72,4 +72,3 @@ main ()
+ /* { dg-final { scan-tree-dump-times "strcat \\(" 3 "strlen" } } */
+ /* { dg-final { scan-tree-dump-times "strchr \\(" 0 "strlen" } } */
+ /* { dg-final { scan-tree-dump-times "stpcpy \\(" 0 "strlen" } } */
+-/* { dg-final { cleanup-tree-dump "strlen" } } */
+--- a/src/gcc/testsuite/gcc.dg/strlenopt-4g.c
++++ b/src/gcc/testsuite/gcc.dg/strlenopt-4g.c
+@@ -11,4 +11,3 @@
+ /* { dg-final { scan-tree-dump-times "strcat \\(" 0 "strlen" } } */
+ /* { dg-final { scan-tree-dump-times "strchr \\(" 0 "strlen" } } */
+ /* { dg-final { scan-tree-dump-times "stpcpy \\(" 5 "strlen" } } */
+-/* { dg-final { cleanup-tree-dump "strlen" } } */
+--- a/src/gcc/testsuite/gcc.dg/strlenopt-4gf.c
++++ b/src/gcc/testsuite/gcc.dg/strlenopt-4gf.c
+@@ -16,4 +16,3 @@
+ /* { dg-final { scan-tree-dump-times "strcpy \\(" 1 "strlen" } } */
+ /* { dg-final { scan-tree-dump-times "strcat \\(" 0 "strlen" } } */
+ /* { dg-final { scan-tree-dump-times "stpcpy \\(" 5 "strlen" } } */
+-/* { dg-final { cleanup-tree-dump "strlen" } } */
+--- a/src/gcc/testsuite/gcc.dg/strlenopt-5.c
++++ b/src/gcc/testsuite/gcc.dg/strlenopt-5.c
+@@ -54,4 +54,3 @@ main ()
+ /* { dg-final { scan-tree-dump-times "strcat \\(" 0 "strlen" } } */
+ /* { dg-final { scan-tree-dump-times "strchr \\(" 2 "strlen" } } */
+ /* { dg-final { scan-tree-dump-times "stpcpy \\(" 0 "strlen" } } */
+-/* { dg-final { cleanup-tree-dump "strlen" } } */
+--- a/src/gcc/testsuite/gcc.dg/strlenopt-6.c
++++ b/src/gcc/testsuite/gcc.dg/strlenopt-6.c
+@@ -83,4 +83,3 @@ main ()
+ /* { dg-final { scan-tree-dump-times "strcat \\(" 0 "strlen" } } */
+ /* { dg-final { scan-tree-dump-times "strchr \\(" 0 "strlen" } } */
+ /* { dg-final { scan-tree-dump-times "stpcpy \\(" 0 "strlen" } } */
+-/* { dg-final { cleanup-tree-dump "strlen" } } */
+--- a/src/gcc/testsuite/gcc.dg/strlenopt-7.c
++++ b/src/gcc/testsuite/gcc.dg/strlenopt-7.c
+@@ -47,7 +47,5 @@ main ()
+ /* { dg-final { scan-tree-dump-times "strchr \\(" 1 "strlen" } } */
+ /* { dg-final { scan-tree-dump-times "stpcpy \\(" 0 "strlen" } } */
+ /* { dg-final { scan-tree-dump-times "\\*r_\[0-9\]* = 0;" 1 "strlen" } } */
+-/* { dg-final { cleanup-tree-dump "strlen" } } */
+ /* { dg-final { scan-tree-dump-times "return 3;" 1 "optimized" } } */
+ /* { dg-final { scan-tree-dump-times "return 0;" 2 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/strlenopt-8.c
++++ b/src/gcc/testsuite/gcc.dg/strlenopt-8.c
+@@ -54,4 +54,3 @@ main ()
+ /* { dg-final { scan-tree-dump-times "strcat \\(" 0 "strlen" } } */
+ /* { dg-final { scan-tree-dump-times "strchr \\(" 0 "strlen" } } */
+ /* { dg-final { scan-tree-dump-times "stpcpy \\(" 0 "strlen" } } */
+-/* { dg-final { cleanup-tree-dump "strlen" } } */
+--- a/src/gcc/testsuite/gcc.dg/strlenopt-9.c
++++ b/src/gcc/testsuite/gcc.dg/strlenopt-9.c
+@@ -104,6 +104,4 @@ main ()
+ /* { dg-final { scan-tree-dump-times "strcat \\(" 0 "strlen" } } */
+ /* { dg-final { scan-tree-dump-times "strchr \\(" 3 "strlen" } } */
+ /* { dg-final { scan-tree-dump-times "stpcpy \\(" 0 "strlen" } } */
+-/* { dg-final { cleanup-tree-dump "strlen" } } */
+ /* { dg-final { scan-tree-dump-times "return 4;" 1 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/superblock.c
++++ b/src/gcc/testsuite/gcc.dg/superblock.c
+@@ -19,6 +19,4 @@ foo (void)
+ 
+ /* { dg-final { scan-rtl-dump-times "0 uses" 0 "bbro"} } */
+ /* { dg-final { scan-rtl-dump-times "ADVANCING TO" 2 "sched2"} } */
+-/* { dg-final { cleanup-rtl-dump "bbro" } } */
+-/* { dg-final { cleanup-rtl-dump "sched2" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/tail-merge-store.c
++++ b/src/gcc/testsuite/gcc.dg/tail-merge-store.c
+@@ -19,4 +19,3 @@ f (int c, int d)
+ 
+ /* { dg-final { scan-tree-dump-times "duplicate of" 1 "pre"} } */
+ /* { dg-final { scan-tree-dump-times "z = 5" 1 "pre"} } */
+-/* { dg-final { cleanup-tree-dump "pre" } } */
+--- a/src/gcc/testsuite/gcc.dg/tls/section-2.c
++++ b/src/gcc/testsuite/gcc.dg/tls/section-2.c
+@@ -1,7 +1,7 @@
+ /* Verify that we get errors for trying to put TLS data in 
+    sections which can't work.  */
+-/* { dg-require-effective-target tls } */
+ /* { dg-do compile { target *-*-vxworks } } */
++/* { dg-require-effective-target tls } */
+ 
+ #define A(X)	__attribute__((section(X)))
+ 
+--- a/src/gcc/testsuite/gcc.dg/tm/20091221.c
++++ b/src/gcc/testsuite/gcc.dg/tm/20091221.c
+@@ -13,4 +13,3 @@ foo()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "readOnly" 1 "tmedge" } } */
+-/* { dg-final { cleanup-tree-dump "tmedge" } } */
+--- a/src/gcc/testsuite/gcc.dg/tm/20100125.c
++++ b/src/gcc/testsuite/gcc.dg/tm/20100125.c
+@@ -15,4 +15,3 @@ void set_remove(int * val)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "getTMCloneOrIrrevocable" 0 "tmmark" } } */
+-/* { dg-final { cleanup-tree-dump "tmmark" } } */
+--- a/src/gcc/testsuite/gcc.dg/tm/20100603.c
++++ b/src/gcc/testsuite/gcc.dg/tm/20100603.c
+@@ -18,4 +18,3 @@ void TMlist_free ()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "Function poof ._ZGTt4poof" 1 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tm/alias-1.c
++++ b/src/gcc/testsuite/gcc.dg/tm/alias-1.c
+@@ -37,4 +37,3 @@ void f(void)
+ /* { dg-final { scan-tree-dump-times "someptr = .*same as mystruct" 1 "ealias" } } */
+ /* { dg-final { scan-tree-dump-times "ui\..* = .*same as mystruct" 1 "ealias" } } */
+ /* { dg-final { scan-tree-dump-times "pp\..* = .*same as mystruct" 1 "ealias" } } */
+-/* { dg-final { cleanup-tree-dump "ealias" } } */
+--- a/src/gcc/testsuite/gcc.dg/tm/alias-2.c
++++ b/src/gcc/testsuite/gcc.dg/tm/alias-2.c
+@@ -39,4 +39,3 @@ void foo()
+ /* { dg-final { scan-tree-dump-times "ui\..* = .*same as mystruct" 1 "ealias" } } */
+ /* { dg-final { scan-tree-dump-times "mystruct.*ESCAPED" 1 "ealias" } } */
+ /* { dg-final { scan-tree-dump-times "pp = .*same as mystruct" 1 "ealias" } } */
+-/* { dg-final { cleanup-tree-dump "ealias" } } */
+--- a/src/gcc/testsuite/gcc.dg/tm/clone-1.c
++++ b/src/gcc/testsuite/gcc.dg/tm/clone-1.c
+@@ -10,4 +10,3 @@ void cloneme()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "ITM_WU.*foo" 1 "tmmark" } } */
+-/* { dg-final { cleanup-tree-dump "tmmark" } } */
+--- a/src/gcc/testsuite/gcc.dg/tm/debug-1.c
++++ b/src/gcc/testsuite/gcc.dg/tm/debug-1.c
+@@ -23,4 +23,3 @@ int main() {
+ /* { dg-final { scan-tree-dump-times ":14:.*_ITM_beginTransaction" 1 "tmmark" } } */
+ /* { dg-final { scan-tree-dump-times ":15:.*ITM_WU. \\(&z" 1 "tmmark" } } */
+ /* { dg-final { scan-tree-dump-times ":16:.*ITM_WU. \\(&a" 1 "tmmark" } } */
+-/* { dg-final { cleanup-tree-dump "tmmark" } } */
+--- a/src/gcc/testsuite/gcc.dg/tm/instrumented-mask.c
++++ b/src/gcc/testsuite/gcc.dg/tm/instrumented-mask.c
+@@ -13,4 +13,3 @@ main()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times " instrumentedCode" 0 "tmmark" } } */
+-/* { dg-final { cleanup-tree-dump "tmmark" } } */
+--- a/src/gcc/testsuite/gcc.dg/tm/ipa-1.c
++++ b/src/gcc/testsuite/gcc.dg/tm/ipa-1.c
+@@ -11,4 +11,3 @@ void bar(void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "_ZGTt3foo" 1 "tmmark" } } */
+-/* { dg-final { cleanup-tree-dump "tmmark" } } */
+--- a/src/gcc/testsuite/gcc.dg/tm/ipa-2.c
++++ b/src/gcc/testsuite/gcc.dg/tm/ipa-2.c
+@@ -11,4 +11,3 @@ void bar(void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "_ZGTt3foo" 0 "tmmark" } } */
+-/* { dg-final { cleanup-tree-dump "tmmark" } } */
+--- a/src/gcc/testsuite/gcc.dg/tm/irrevocable-2.c
++++ b/src/gcc/testsuite/gcc.dg/tm/irrevocable-2.c
+@@ -19,4 +19,3 @@ foo()
+ 
+ /* { dg-final { scan-tree-dump-times "doesGoIrrevocable" 1 "tmedge" } } */
+ /* { dg-final { scan-tree-dump-times "hasNoIrrevocable" 0 "tmedge" } } */
+-/* { dg-final { cleanup-tree-dump "tmedge" } } */
+--- a/src/gcc/testsuite/gcc.dg/tm/irrevocable-3.c
++++ b/src/gcc/testsuite/gcc.dg/tm/irrevocable-3.c
+@@ -12,4 +12,3 @@ foo()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "doesGoIrrevocable" 1 "tmmark" } } */
+-/* { dg-final { cleanup-tree-dump "tmmark" } } */
+--- a/src/gcc/testsuite/gcc.dg/tm/irrevocable-4.c
++++ b/src/gcc/testsuite/gcc.dg/tm/irrevocable-4.c
+@@ -13,4 +13,3 @@ foo()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "hasNoIrrevocable" 0 "tmmark" } } */
+-/* { dg-final { cleanup-tree-dump "tmmark" } } */
+--- a/src/gcc/testsuite/gcc.dg/tm/irrevocable-5.c
++++ b/src/gcc/testsuite/gcc.dg/tm/irrevocable-5.c
+@@ -24,4 +24,3 @@ void wildthing()
+ /* { dg-final { scan-ipa-dump-times "bb 4 goes irr" 1 "tmipa" } } */
+ /* { dg-final { scan-ipa-dump-times "bb 5 goes irr" 1 "tmipa" } } */
+ /* { dg-final { scan-ipa-dump-times "bb 6 goes irr" 1 "tmipa" } } */
+-/* { dg-final { cleanup-ipa-dump "tmipa" } } */
+--- a/src/gcc/testsuite/gcc.dg/tm/irrevocable-6.c
++++ b/src/gcc/testsuite/gcc.dg/tm/irrevocable-6.c
+@@ -31,4 +31,3 @@ void wildthing()
+ /* { dg-final { scan-ipa-dump-times "bb 7 goes irr" 1 "tmipa" } } */
+ /* { dg-final { scan-ipa-dump-times "bb 8 goes irr" 1 "tmipa" } } */
+ /* { dg-final { scan-ipa-dump-times "bb 9 goes irr" 1 "tmipa" } } */
+-/* { dg-final { cleanup-ipa-dump "tmipa" } } */
+--- a/src/gcc/testsuite/gcc.dg/tm/irrevocable-7.c
++++ b/src/gcc/testsuite/gcc.dg/tm/irrevocable-7.c
+@@ -10,4 +10,3 @@ int foo()
+ }
+ 
+ /* { dg-final { scan-ipa-dump-times "changeTransactionMode \\(0\\)" 1 "tmipa" } } */
+-/* { dg-final { cleanup-ipa-dump "tmipa" } } */
+--- a/src/gcc/testsuite/gcc.dg/tm/memopt-1.c
++++ b/src/gcc/testsuite/gcc.dg/tm/memopt-1.c
+@@ -27,4 +27,3 @@ f()
+ /* { dg-final { scan-tree-dump-times "transforming: .*_ITM_WaRU4 \\(&i," 1 "tmmemopt" } } */
+ /* { dg-final { scan-tree-dump-times "transforming: .*_ITM_RaWU4 \\(&i\\);" 1 "tmmemopt" } } */
+ /* { dg-final { scan-tree-dump-times "transforming: .*_ITM_WaWU4 \\(&i," 1 "tmmemopt" } } */
+-/* { dg-final { cleanup-tree-dump "tmmemopt" } } */
+--- a/src/gcc/testsuite/gcc.dg/tm/memopt-10.c
++++ b/src/gcc/testsuite/gcc.dg/tm/memopt-10.c
+@@ -25,4 +25,3 @@ int f()
+ /* { dg-final { scan-tree-dump-times "ITM_LU" 0 "tmmark" } } */
+ /* { dg-final { scan-tree-dump-times "ITM_WU" 0 "tmmark" } } */
+ /* { dg-final { scan-tree-dump-times "int tm_save" 1 "tmmark" } } */
+-/* { dg-final { cleanup-tree-dump "tmmark" } } */
+--- a/src/gcc/testsuite/gcc.dg/tm/memopt-11.c
++++ b/src/gcc/testsuite/gcc.dg/tm/memopt-11.c
+@@ -27,4 +27,3 @@ int f()
+ /* { dg-final { scan-tree-dump-times "ITM_LU" 0 "tmmark" } } */
+ /* { dg-final { scan-tree-dump-times "ITM_WU" 0 "tmmark" } } */
+ /* { dg-final { scan-tree-dump-times "int tm_save" 1 "tmmark" } } */
+-/* { dg-final { cleanup-tree-dump "tmmark" } } */
+--- a/src/gcc/testsuite/gcc.dg/tm/memopt-12.c
++++ b/src/gcc/testsuite/gcc.dg/tm/memopt-12.c
+@@ -32,4 +32,3 @@ int f()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "ITM_WU" 0 "tmmark" } } */
+-/* { dg-final { cleanup-tree-dump "tmmark" } } */
+--- a/src/gcc/testsuite/gcc.dg/tm/memopt-13.c
++++ b/src/gcc/testsuite/gcc.dg/tm/memopt-13.c
+@@ -13,4 +13,3 @@ void f()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "memmoveRtWt \\\(&large_global," 1 "tmmark" } } */
+-/* { dg-final { cleanup-tree-dump "tmmark" } } */
+--- a/src/gcc/testsuite/gcc.dg/tm/memopt-16.c
++++ b/src/gcc/testsuite/gcc.dg/tm/memopt-16.c
+@@ -41,4 +41,3 @@ int f(int j)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "ITM_WU" 0 "tmmark" } } */
+-/* { dg-final { cleanup-tree-dump "tmmark" } } */
+--- a/src/gcc/testsuite/gcc.dg/tm/memopt-2.c
++++ b/src/gcc/testsuite/gcc.dg/tm/memopt-2.c
+@@ -12,4 +12,3 @@ void f(void)
+ 
+ /* { dg-final { scan-tree-dump-times "transforming.*RfWU1 \\(&c" 1 "tmmemopt" } } */
+ /* { dg-final { scan-tree-dump-times "transforming.*WaWU1 \\(&c" 1 "tmmemopt" } } */
+-/* { dg-final { cleanup-tree-dump "tmmemopt" } } */
+--- a/src/gcc/testsuite/gcc.dg/tm/memopt-3.c
++++ b/src/gcc/testsuite/gcc.dg/tm/memopt-3.c
+@@ -18,4 +18,3 @@ int f()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "logging: lala.x\\\[i_4\\\]" 1 "tmmark" } } */
+-/* { dg-final { cleanup-tree-dump "tmmark" } } */
+--- a/src/gcc/testsuite/gcc.dg/tm/memopt-4.c
++++ b/src/gcc/testsuite/gcc.dg/tm/memopt-4.c
+@@ -22,4 +22,3 @@ int f()
+ 
+ /* { dg-final { scan-tree-dump-times "tm_save.\[0-9_\]+ = lala.x\\\[55\\\]" 1 "tmedge" } } */
+ /* { dg-final { scan-tree-dump-times "lala.x\\\[55\\\] = tm_save" 1 "tmedge" } } */
+-/* { dg-final { cleanup-tree-dump "tmedge" } } */
+--- a/src/gcc/testsuite/gcc.dg/tm/memopt-5.c
++++ b/src/gcc/testsuite/gcc.dg/tm/memopt-5.c
+@@ -21,4 +21,3 @@ int f()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "ITM_LU\[0-9\] \\\(&lala.x\\\[55\\\]" 1 "tmedge" } } */
+-/* { dg-final { cleanup-tree-dump "tmedge" } } */
+--- a/src/gcc/testsuite/gcc.dg/tm/memopt-6.c
++++ b/src/gcc/testsuite/gcc.dg/tm/memopt-6.c
+@@ -19,4 +19,3 @@ int f()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "memmoveRtWt \\\(.*, &lacopy" 1 "tmedge" } } */
+-/* { dg-final { cleanup-tree-dump "tmedge" } } */
+--- a/src/gcc/testsuite/gcc.dg/tm/memopt-7.c
++++ b/src/gcc/testsuite/gcc.dg/tm/memopt-7.c
+@@ -19,4 +19,3 @@ int f()
+ 
+ /* { dg-final { scan-tree-dump-times "tm_save.\[0-9_\]+ = lala" 1 "tmedge" } } */
+ /* { dg-final { scan-tree-dump-times "lala = tm_save" 1 "tmedge" } } */
+-/* { dg-final { cleanup-tree-dump "tmedge" } } */
+--- a/src/gcc/testsuite/gcc.dg/tm/memopt-8.c
++++ b/src/gcc/testsuite/gcc.dg/tm/memopt-8.c
+@@ -23,4 +23,3 @@ int f()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "ITM_WU" 1 "tmmark" } } */
+-/* { dg-final { cleanup-tree-dump "tmmark" } } */
+--- a/src/gcc/testsuite/gcc.dg/tm/memopt-9.c
++++ b/src/gcc/testsuite/gcc.dg/tm/memopt-9.c
+@@ -26,4 +26,3 @@ int f()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "ITM_WU" 0 "tmmark" } } */
+-/* { dg-final { cleanup-tree-dump "tmmark" } } */
+--- a/src/gcc/testsuite/gcc.dg/tm/memset-2.c
++++ b/src/gcc/testsuite/gcc.dg/tm/memset-2.c
+@@ -14,4 +14,3 @@ int main()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "GTMA_HAVE_STORE" 1 "tmlower" } } */
+-/* { dg-final { cleanup-tree-dump "tmlower" } } */
+--- a/src/gcc/testsuite/gcc.dg/tm/pr55401.c
++++ b/src/gcc/testsuite/gcc.dg/tm/pr55401.c
+@@ -19,4 +19,3 @@ void foo()
+    FOO.  */
+ /* { dg-final { scan-tree-dump-times "ITM_WU\[0-9\] \\(&george," 2 "optimized" } } */
+ 
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tm/props-1.c
++++ b/src/gcc/testsuite/gcc.dg/tm/props-1.c
+@@ -16,5 +16,3 @@ foo(int local)
+ /* { dg-final { scan-tree-dump-times " instrumentedCode" 1 "tmedge" } } */
+ /* { dg-final { scan-tree-dump-times "hasNoAbort" 0 "tmedge" } } */
+ /* { dg-final { scan-tree-dump-times "GTMA_HAVE_ABORT" 1 "tmlower" } } */
+-/* { dg-final { cleanup-tree-dump "tmedge" } } */
+-/* { dg-final { cleanup-tree-dump "tmlower" } } */
+--- a/src/gcc/testsuite/gcc.dg/tm/props-2.c
++++ b/src/gcc/testsuite/gcc.dg/tm/props-2.c
+@@ -18,4 +18,3 @@ foo(){
+ }
+ 
+ /* { dg-final { scan-ipa-dump-times "GTMA_MAY_ENTER_IRREVOCABLE" 1 "tmipa" } } */
+-/* { dg-final { cleanup-ipa-dump "tmipa" } } */
+--- a/src/gcc/testsuite/gcc.dg/tm/props-3.c
++++ b/src/gcc/testsuite/gcc.dg/tm/props-3.c
+@@ -13,4 +13,3 @@ foo(){
+ }
+ 
+ /* { dg-final { scan-ipa-dump-times "GTMA_MAY_ENTER_IRREVOCABLE" 1 "tmipa" } } */
+-/* { dg-final { cleanup-ipa-dump "tmipa" } } */
+--- a/src/gcc/testsuite/gcc.dg/tm/props-4.c
++++ b/src/gcc/testsuite/gcc.dg/tm/props-4.c
+@@ -22,5 +22,3 @@ foo(void)
+ 
+ /* { dg-final { scan-tree-dump-times " instrumentedCode" 1 "tmedge" } } */
+ /* { dg-final { scan-tree-dump-times "hasNoAbort" 0 "tmedge" } } */
+-/* { dg-final { cleanup-tree-dump "tmedge" } } */
+-/* { dg-final { cleanup-tree-dump "tmmark" } } */
+--- a/src/gcc/testsuite/gcc.dg/tm/pub-safety-1.c
++++ b/src/gcc/testsuite/gcc.dg/tm/pub-safety-1.c
+@@ -21,4 +21,3 @@ void reader()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "Cannot hoist.*DATA_DATA because it is in a transaction" 1 "lim1" } } */
+-/* { dg-final { cleanup-tree-dump "lim1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tm/reg-promotion.c
++++ b/src/gcc/testsuite/gcc.dg/tm/reg-promotion.c
+@@ -21,4 +21,3 @@ void func()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "Cannot hoist conditional load of count because it is in a transaction" 1 "lim1" } } */
+-/* { dg-final { cleanup-tree-dump "lim1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tm/wrap-3.c
++++ b/src/gcc/testsuite/gcc.dg/tm/wrap-3.c
+@@ -14,4 +14,3 @@ void foo()
+    everything is as usual.  */
+ /* { dg-final { scan-tree-dump-times "free" 1 "optimized" } } */
+ 
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tm/wrap-4.c
++++ b/src/gcc/testsuite/gcc.dg/tm/wrap-4.c
+@@ -17,4 +17,3 @@ void foo()
+    everything is as usual.  */
+ /* { dg-final { scan-tree-dump-times "candy \\(\\);" 1 "optimized" } } */
+ 
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/torture/builtin-convert-4.c
++++ b/src/gcc/testsuite/gcc.dg/torture/builtin-convert-4.c
+@@ -33,4 +33,3 @@ int main()
+ /* { dg-final { scan-tree-dump-times "nearbyint " 1 "original" } } */
+ /* { dg-final { scan-tree-dump-times "nearbyintf" 1 "original" } } */
+ /* { dg-final { scan-tree-dump-times "nearbyintl" 1 "original" } } */
+-/* { dg-final { cleanup-tree-dump "original" } } */
+--- a/src/gcc/testsuite/gcc.dg/torture/builtin-math-2.c
++++ b/src/gcc/testsuite/gcc.dg/torture/builtin-math-2.c
+@@ -382,4 +382,3 @@ void bar()
+ /* { dg-final { scan-tree-dump-times "_gamma_r " 6 "original" } } */
+ /* { dg-final { scan-tree-dump-times "_gammaf_r" 6 "original" } } */
+ /* { dg-final { scan-tree-dump-times "_gammal_r" 6 "original" } } */
+-/* { dg-final { cleanup-tree-dump "original" } } */
+--- a/src/gcc/testsuite/gcc.dg/torture/builtin-math-5.c
++++ b/src/gcc/testsuite/gcc.dg/torture/builtin-math-5.c
+@@ -120,4 +120,3 @@ void bar()
+ /* { dg-final { scan-tree-dump-times "cpowf" 12 "original" { target { spu*-*-* } } } } */
+ /* { dg-final { scan-tree-dump-times "cpow " 18 "original" } } */
+ /* { dg-final { scan-tree-dump-times "cpowl" 18 "original" } } */
+-/* { dg-final { cleanup-tree-dump "original" } } */
+--- a/src/gcc/testsuite/gcc.dg/torture/builtin-pow-mpfr-1.c
++++ b/src/gcc/testsuite/gcc.dg/torture/builtin-pow-mpfr-1.c
+@@ -16,4 +16,3 @@ extern double testit()
+ }
+ 
+ /* { dg-final { scan-tree-dump "pow" "original" } } */
+-/* { dg-final { cleanup-tree-dump "original" } } */
+--- a/src/gcc/testsuite/gcc.dg/torture/builtins-1.c
++++ b/src/gcc/testsuite/gcc.dg/torture/builtins-1.c
+@@ -1,6 +1,5 @@
+ /* { dg-do compile } */
+ /* { dg-options "-fdump-rtl-expand-all" */
+-/* { dg-final { cleanup-rtl-dump "expand" } } */
+ int isdigit(int c)
+ {
+         return c >= 0;
+--- a/src/gcc/testsuite/gcc.dg/torture/ipa-pta-1.c
++++ b/src/gcc/testsuite/gcc.dg/torture/ipa-pta-1.c
+@@ -43,4 +43,3 @@ void test4 (int a4, char b, char c, char d, char e, char f, char g, char h)
+ }
+ 
+ /* { dg-final { scan-ipa-dump "bar.arg0 = { test4.arg0 test3.arg0 test2.arg0 test1.arg0 }" "pta" } } */
+-/* { dg-final { cleanup-ipa-dump "pta" } } */
+--- a/src/gcc/testsuite/gcc.dg/torture/ldist-1.c
++++ b/src/gcc/testsuite/gcc.dg/torture/ldist-1.c
+@@ -9,4 +9,3 @@ void foo (volatile int *p, int n)
+ }
+ 
+ /* { dg-final { scan-assembler-not "memset" } } */
+-/* { dg-final { cleanup-tree-dump "ldist" } } */
+--- a/src/gcc/testsuite/gcc.dg/torture/pr23821.c
++++ b/src/gcc/testsuite/gcc.dg/torture/pr23821.c
+@@ -26,4 +26,3 @@ main ()
+    induction variable increment.  */
+ 
+ /* { dg-final { scan-tree-dump "Added canonical iv" "ivcanon" } } */
+-/* { dg-final { cleanup-tree-dump "ivcanon" } } */
+--- a/src/gcc/testsuite/gcc.dg/torture/pr39074-2.c
++++ b/src/gcc/testsuite/gcc.dg/torture/pr39074-2.c
+@@ -32,4 +32,3 @@ int main()
+ 
+ /* { dg-final { scan-tree-dump "y.._. = { i }" "alias" } } */
+ /* { dg-final { scan-tree-dump "y.._., points-to vars: { D..... }" "alias" } } */
+-/* { dg-final { cleanup-tree-dump "alias" } } */
+--- a/src/gcc/testsuite/gcc.dg/torture/pr39074.c
++++ b/src/gcc/testsuite/gcc.dg/torture/pr39074.c
+@@ -31,4 +31,3 @@ int main()
+ 
+ /* { dg-final { scan-tree-dump "y.._. = { i }" "alias" } } */
+ /* { dg-final { scan-tree-dump "y.._., points-to vars: { D..... }" "alias" } } */
+-/* { dg-final { cleanup-tree-dump "alias" } } */
+--- a/src/gcc/testsuite/gcc.dg/torture/pr42898-2.c
++++ b/src/gcc/testsuite/gcc.dg/torture/pr42898-2.c
+@@ -23,4 +23,3 @@ void f1(volatile struct hardware *ptr)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "\\*ptr" 1 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/torture/pr42898.c
++++ b/src/gcc/testsuite/gcc.dg/torture/pr42898.c
+@@ -21,4 +21,3 @@ void f1(volatile struct hardware *ptr)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "\\*ptr" 1 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/torture/pr45704.c
++++ b/src/gcc/testsuite/gcc.dg/torture/pr45704.c
+@@ -13,4 +13,3 @@ int foo(struct st *st)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "={v}" 1 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/torture/pr50472.c
++++ b/src/gcc/testsuite/gcc.dg/torture/pr50472.c
+@@ -10,4 +10,3 @@ unsigned int test( void )
+ }
+ 
+ /* { dg-final { scan-tree-dump-not "return 1" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/torture/pr55018.c
++++ b/src/gcc/testsuite/gcc.dg/torture/pr55018.c
+@@ -20,4 +20,3 @@ lab:
+ }
+ 
+ /* { dg-final { scan-tree-dump "printf" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/torture/pr57147-1.c
++++ b/src/gcc/testsuite/gcc.dg/torture/pr57147-1.c
+@@ -18,4 +18,3 @@ void TestSyscall(void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-not "builtin_unreachable" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/torture/pr57147-2.c
++++ b/src/gcc/testsuite/gcc.dg/torture/pr57147-2.c
+@@ -20,4 +20,3 @@ void TestSyscall(void)
+ }
+ 
+ /* { dg-final { scan-tree-dump "setjmp" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.dg/torture/pr66076.c
+@@ -0,0 +1,11 @@
++/* { dg-do compile } */
++/* { dg-options "" } */
++/* { dg-options "-mno-prefer-avx128 -march=bdver4" { target i?86-*-* x86_64-*-* } } */
++
++void
++f0a (char *result, char *arg1, char *arg4, char temp_6)
++{
++  int idx = 0;
++  for (idx = 0; idx < 416; idx += 1)
++    result[idx] = (arg1[idx] + arg4[idx]) * temp_6;
++}
+--- a/src/gcc/testsuite/gcc.dg/torture/pta-callused-1.c
++++ b/src/gcc/testsuite/gcc.dg/torture/pta-callused-1.c
+@@ -22,4 +22,3 @@ int main()
+ }
+ 
+ /* { dg-final { scan-tree-dump "p.._. = { i j }" "alias" } } */
+-/* { dg-final { cleanup-tree-dump "alias" } } */
+--- a/src/gcc/testsuite/gcc.dg/torture/pta-escape-1.c
++++ b/src/gcc/testsuite/gcc.dg/torture/pta-escape-1.c
+@@ -31,4 +31,3 @@ main()
+ }
+ 
+ /* { dg-final { scan-tree-dump "ESCAPED = {\[^\n\}\]* i \[^\n\}\]*}" "alias" } } */
+-/* { dg-final { cleanup-tree-dump "alias" } } */
+--- a/src/gcc/testsuite/gcc.dg/torture/pta-ptrarith-1.c
++++ b/src/gcc/testsuite/gcc.dg/torture/pta-ptrarith-1.c
+@@ -30,4 +30,3 @@ int main()
+ }
+ 
+ /* { dg-final { scan-tree-dump "ESCAPED = {\[^\n\}\]* i f \[^\n\}\]*}" "alias" } } */
+-/* { dg-final { cleanup-tree-dump "alias" } } */
+--- a/src/gcc/testsuite/gcc.dg/torture/pta-ptrarith-2.c
++++ b/src/gcc/testsuite/gcc.dg/torture/pta-ptrarith-2.c
+@@ -33,4 +33,3 @@ int main()
+ /* In theory = { i } is the correct solution.  But it's not easy to scan
+    for that reliably, so just use what we create now.  */
+ /* { dg-final { scan-tree-dump "= { i j }" "alias" } } */
+-/* { dg-final { cleanup-tree-dump "alias" } } */
+--- a/src/gcc/testsuite/gcc.dg/torture/pta-ptrarith-3.c
++++ b/src/gcc/testsuite/gcc.dg/torture/pta-ptrarith-3.c
+@@ -34,4 +34,3 @@ int main()
+ }
+ 
+ /* { dg-final { scan-tree-dump "q_. = { i j k }" "alias" } } */
+-/* { dg-final { cleanup-tree-dump "alias" } } */
+--- a/src/gcc/testsuite/gcc.dg/torture/pta-structcopy-1.c
++++ b/src/gcc/testsuite/gcc.dg/torture/pta-structcopy-1.c
+@@ -33,4 +33,3 @@ int main()
+ 
+ /* { dg-final { scan-tree-dump "y.* = { i }" "ealias" } } */
+ /* { dg-final { scan-tree-dump "y.*, points-to vars: { D..... }" "ealias" } } */
+-/* { dg-final { cleanup-tree-dump "ealias" } } */
+--- a/src/gcc/testsuite/gcc.dg/torture/ssa-pta-fn-1.c
++++ b/src/gcc/testsuite/gcc.dg/torture/ssa-pta-fn-1.c
+@@ -59,4 +59,3 @@ int main()
+ /* { dg-final { scan-tree-dump "q_const_. = { NONLOCAL i }" "alias" } } */
+ /* { dg-final { scan-tree-dump "q_pure_. = { ESCAPED NONLOCAL i }" "alias" } } */
+ /* { dg-final { scan-tree-dump "q_normal_. = { ESCAPED NONLOCAL }" "alias" } } */
+-/* { dg-final { cleanup-tree-dump "alias" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-prof/20050826-2.c
++++ b/src/gcc/testsuite/gcc.dg/tree-prof/20050826-2.c
+@@ -73,4 +73,3 @@ main (void)
+ }
+ 
+ /* { dg-final-use { scan-tree-dump-not "Invalid sum" "dom1"} } */
+-/* { dg-final-use { cleanup-tree-dump "dom1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-prof/cmpsf-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-prof/cmpsf-1.c
+@@ -182,4 +182,3 @@ main (void)
+ }
+ 
+ /* { dg-final-use { scan-tree-dump-not "Invalid sum" "dom1"} } */
+-/* { dg-final-use { cleanup-tree-dump "dom1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-prof/cold_partition_label.c
++++ b/src/gcc/testsuite/gcc.dg/tree-prof/cold_partition_label.c
+@@ -35,4 +35,3 @@ main (int argc, char *argv[])
+   return 0;
+ }
+ 
+-/* { dg-final-use { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-prof/ic-misattribution-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-prof/ic-misattribution-1.c
+@@ -16,4 +16,3 @@ caller(void (*func) (void))
+ }
+ 
+ /* { dg-final-use { scan-ipa-dump "hist->count 1 hist->all 1" "profile" } } */
+-/* { dg-final-use { cleanup-ipa-dump "profile" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-prof/ic-misattribution-1a.c
++++ b/src/gcc/testsuite/gcc.dg/tree-prof/ic-misattribution-1a.c
+@@ -19,4 +19,3 @@ main ()
+   return 0;
+ }
+ 
+-/* { dg-final-use { cleanup-ipa-dump "profile" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-prof/indir-call-prof.c
++++ b/src/gcc/testsuite/gcc.dg/tree-prof/indir-call-prof.c
+@@ -39,5 +39,3 @@ main (void)
+ 
+ /* { dg-final-use { scan-ipa-dump "Indirect call -> direct call.* a1 transformation on insn" "profile"} } */
+ /* { dg-final-use { scan-tree-dump-not "Invalid sum" "optimized"} } */
+-/* { dg-final-use { cleanup-tree-dump "optimized" } } */
+-/* { dg-final-use { cleanup-ipa-dump "profile" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-prof/inliner-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-prof/inliner-1.c
+@@ -40,4 +40,3 @@ main ()
+    declaration or other appearances of the string in dump.  */
+ /* { dg-final-use { scan-tree-dump "cold_function ..;" "optimized"} } */
+ /* { dg-final-use { scan-tree-dump-not "hot_function ..;" "optimized"} } */
+-/* { dg-final-use { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-prof/merge_block.c
++++ b/src/gcc/testsuite/gcc.dg/tree-prof/merge_block.c
+@@ -19,4 +19,3 @@ main ()
+   return 0;
+ }
+ /* { dg-final-use { scan-tree-dump-not "Invalid sum" "optimized"} } */
+-/* { dg-final-use { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-prof/peel-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-prof/peel-1.c
+@@ -23,4 +23,3 @@ main()
+ /* { dg-final-use { scan-tree-dump "Peeled loop ., 2 times" "cunroll" } } */
+ /* In fact one peeling is enough; we however mispredict number of iterations of the loop
+    at least until loop_ch is schedule ahead of profiling pass.  */
+-/* { dg-final-use { cleanup-tree-dump "cunroll" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-prof/stringop-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-prof/stringop-1.c
+@@ -19,5 +19,3 @@ main()
+ /* a[0] = b[0] is what we fold the resulting memcpy into.  */
+ /* { dg-final-use { scan-tree-dump " = MEM.*&b" "optimized"} } */
+ /* { dg-final-use { scan-tree-dump "MEM.*&a\\\] = " "optimized"} } */
+-/* { dg-final-use { cleanup-tree-dump "optimized" } } */
+-/* { dg-final-use { cleanup-ipa-dump "profile" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-prof/stringop-2.c
++++ b/src/gcc/testsuite/gcc.dg/tree-prof/stringop-2.c
+@@ -21,5 +21,3 @@ main()
+ /* { dg-final-use { scan-ipa-dump "Single value 4 stringop" "profile"} } */
+ /* The versioned memset of size 4 should be optimized to an assignment.  */
+ /* { dg-final-use { scan-tree-dump "MEM\\\[\\(void .\\)&a\\\] = 168430090" "optimized"} } */
+-/* { dg-final-use { cleanup-tree-dump "optimized" } } */
+-/* { dg-final-use { cleanup-ipa-dump "profile" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-prof/switch-case-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-prof/switch-case-1.c
+@@ -37,4 +37,3 @@ int main ()
+ }
+ /* { dg-final-use { scan-rtl-dump-times ";; basic block\[^\\n\]*count 4000" 2 "expand"} } */
+ /* { dg-final-use { scan-rtl-dump-times ";; basic block\[^\\n\]*count 2000" 1 "expand"} } */
+-/* { dg-final-use { cleanup-rtl-dump "expand" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-prof/switch-case-2.c
++++ b/src/gcc/testsuite/gcc.dg/tree-prof/switch-case-2.c
+@@ -37,4 +37,3 @@ int main ()
+ }
+ /* { dg-final-use { scan-rtl-dump-times ";; basic block\[^\\n\]*count 4000" 2 "expand"} } */
+ /* { dg-final-use { scan-rtl-dump-times ";; basic block\[^\\n\]*count 2000" 1 "expand"} } */
+-/* { dg-final-use { cleanup-rtl-dump "expand" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-prof/time-profiler-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-prof/time-profiler-1.c
+@@ -19,4 +19,3 @@ int main ()
+ /* { dg-final-use { scan-ipa-dump-times "Read tp_first_run: 0" 1 "profile"} } */
+ /* { dg-final-use { scan-ipa-dump-times "Read tp_first_run: 1" 1 "profile"} } */
+ /* { dg-final-use { scan-ipa-dump-times "Read tp_first_run: 2" 1 "profile"} } */
+-/* { dg-final-use { cleanup-ipa-dump "profile" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-prof/time-profiler-2.c
++++ b/src/gcc/testsuite/gcc.dg/tree-prof/time-profiler-2.c
+@@ -47,4 +47,3 @@ int main ()
+ /* { dg-final-use { scan-ipa-dump-times "Read tp_first_run: 1" 1 "profile"} } */
+ /* { dg-final-use { scan-ipa-dump-times "Read tp_first_run: 2" 1 "profile"} } */
+ /* { dg-final-use { scan-ipa-dump-times "Read tp_first_run: 3" 1 "profile"} } */
+-/* { dg-final-use { cleanup-ipa-dump "profile" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-prof/tracer-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-prof/tracer-1.c
+@@ -15,4 +15,3 @@ int main ()
+ }
+ /* Superblock formation should produce two copies of the increment of c */
+ /* { dg-final-generate { scan-tree-dump-times "c =" 2 "tracer" } } */
+-/* { dg-final-use { cleanup-tree-dump "tracer" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-prof/unroll-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-prof/unroll-1.c
+@@ -21,4 +21,3 @@ main()
+   return 0;
+ }
+ /* { dg-final-use { scan-rtl-dump "Considering unrolling loop with constant number of iterations" "loop2_unroll" } } */
+-/* { dg-final-use { cleanup-rtl-dump "loop2_unroll" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-prof/update-cunroll-2.c
++++ b/src/gcc/testsuite/gcc.dg/tree-prof/update-cunroll-2.c
+@@ -19,4 +19,3 @@ main ()
+   return 0;
+ }
+ /* { dg-final-use { scan-tree-dump-not "Invalid sum" "optimized"} } */
+-/* { dg-final-use { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-prof/update-loopch.c
++++ b/src/gcc/testsuite/gcc.dg/tree-prof/update-loopch.c
+@@ -19,5 +19,3 @@ main ()
+ /* { dg-final-use { scan-tree-dump-not "loop depth 1, count 33332" "optimized"} } */
+ /* { dg-final-use { scan-tree-dump "Removing basic block" "optimized"} } */
+ /* { dg-final-use { scan-tree-dump-not "Invalid sum" "optimized"} } */
+-/* { dg-final-use { cleanup-ipa-dump "profile" } } */
+-/* { dg-final-use { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-prof/update-tailcall.c
++++ b/src/gcc/testsuite/gcc.dg/tree-prof/update-tailcall.c
+@@ -16,5 +16,3 @@ main()
+ }
+ /* { dg-final-use { scan-tree-dump-not "Invalid sum" "tailc"} } */
+ /* { dg-final-use { scan-tree-dump-not "Invalid sum" "optimized"} } */
+-/* { dg-final-use { cleanup-tree-dump "tailc" } } */
+-/* { dg-final-use { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-prof/val-prof-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-prof/val-prof-1.c
+@@ -19,5 +19,3 @@ main ()
+ /* { dg-final-use { scan-ipa-dump "Div.mod by constant n_\[0-9\]*=257 transformation on insn" "profile"} } */
+ /* { dg-final-use { scan-tree-dump "if \\(n_\[0-9\]* != 257\\)" "optimized"} } */
+ /* { dg-final-use { scan-tree-dump-not "Invalid sum" "optimized"} } */
+-/* { dg-final-use { cleanup-tree-dump "optimized" } } */
+-/* { dg-final-use { cleanup-ipa-dump "profile" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-prof/val-prof-2.c
++++ b/src/gcc/testsuite/gcc.dg/tree-prof/val-prof-2.c
+@@ -29,5 +29,3 @@ main ()
+    didn't get optimized out.  */
+ /* { dg-final-use { scan-tree-dump "n_\[0-9\]* \\+ (4294967295|0x0*ffffffff)" "optimized"} } */
+ /* { dg-final-use { scan-tree-dump-not "Invalid sum" "optimized"} } */
+-/* { dg-final-use { cleanup-tree-dump "optimized" } } */
+-/* { dg-final-use { cleanup-ipa-dump "profile" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-prof/val-prof-3.c
++++ b/src/gcc/testsuite/gcc.dg/tree-prof/val-prof-3.c
+@@ -29,5 +29,3 @@ main ()
+    didn't get optimized out.  */
+ /* { dg-final-use { scan-tree-dump "if \\(n_\[0-9\]* \\>" "optimized"} } */
+ /* { dg-final-use { scan-tree-dump-not "Invalid sum" "optimized"} } */
+-/* { dg-final-use { cleanup-tree-dump "optimized" } } */
+-/* { dg-final-use { cleanup-ipa-dump "profile" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-prof/val-prof-4.c
++++ b/src/gcc/testsuite/gcc.dg/tree-prof/val-prof-4.c
+@@ -29,5 +29,3 @@ main ()
+    didn't get optimized out.  */
+ /* { dg-final-use { scan-tree-dump "if \\(n_\[0-9\]* \\>" "optimized"} } */
+ /* { dg-final-use { scan-tree-dump-not "Invalid sum" "optimized"} } */
+-/* { dg-final-use { cleanup-tree-dump "optimized" } } */
+-/* { dg-final-use { cleanup-ipa-dump "profile" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-prof/val-prof-5.c
++++ b/src/gcc/testsuite/gcc.dg/tree-prof/val-prof-5.c
+@@ -14,5 +14,3 @@ main()
+ }
+ /* { dg-final-use { scan-ipa-dump "Div.mod by constant b.*=997 transformation on insn" "profile" } } */
+ /* { dg-final-use { scan-tree-dump-not "Invalid sum" "optimized"} } */
+-/* { dg-final-use { cleanup-tree-dump "optimized" } } */
+-/* { dg-final-use { cleanup-ipa-dump "profile" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-prof/val-prof-6.c
++++ b/src/gcc/testsuite/gcc.dg/tree-prof/val-prof-6.c
+@@ -17,4 +17,3 @@ main()
+ }
+ /* { dg-final-use { scan-tree-dump "Average value sum:499500" "optimized"} } */
+ /* { dg-final-use { scan-tree-dump "IOR value" "optimized"} } */
+-/* { dg-final-use { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-prof/val-prof-7.c
++++ b/src/gcc/testsuite/gcc.dg/tree-prof/val-prof-7.c
+@@ -23,4 +23,3 @@ int main() {
+ }
+ 
+ /* { dg-final-use { scan-ipa-dump "Single value 8 stringop transformation on bzero" "profile" } } */
+-/* { dg-final-use { cleanup-ipa-dump "profile" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/20030530-2.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/20030530-2.c
+@@ -24,5 +24,4 @@ rs6000_emit_prologue (int i, rs6000_stack_t *info)
+    commutative operands correctly.  */
+ /* { dg-final { scan-tree-dump-times "\\+" 1 "dom2"} } */
+  
+-/* { dg-final { cleanup-tree-dump "dom2" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/20030611-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/20030611-1.c
+@@ -12,4 +12,3 @@ shit(int a)
+ /* There should be precisely one call to square.   If there is more than one,
+    then the dominator optimizations failed to remove the redundant call.  */
+ /* { dg-final { scan-tree-dump-times "square" 1 "dom2"} } */
+-/* { dg-final { cleanup-tree-dump "dom2" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/20030703-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/20030703-1.c
+@@ -20,4 +20,3 @@ foo(int index)
+ /* There should be exactly one IF conditional.  */
+ /* { dg-final { scan-tree-dump-times "if " 1 "dom2"} } */
+ 
+-/* { dg-final { cleanup-tree-dump "dom2" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/20030703-2.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/20030703-2.c
+@@ -41,4 +41,3 @@ get_alias_set (t)
+    if() to disappear.  */
+ /* { dg-final { scan-tree-dump-times "if " 1 "dom2"} } */
+ 
+-/* { dg-final { cleanup-tree-dump "dom2" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/20030708-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/20030708-1.c
+@@ -42,4 +42,3 @@ nonlocal_mentioned_p (x)
+ /* There should be no IF conditionals.  */
+ /* { dg-final { scan-tree-dump-times "if " 0 "dom2"} } */
+                                                                                 
+-/* { dg-final { cleanup-tree-dump "dom2" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/20030709-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/20030709-1.c
+@@ -14,4 +14,3 @@ foo ()
+ 
+ /* There should be no IF conditionals.  */
+ /* { dg-final { scan-tree-dump-times "if " 0 "optimized"} } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/20030709-2.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/20030709-2.c
+@@ -52,4 +52,3 @@ get_alias_set (t)
+    collapse down to a simple return 0 without any conditionals).  */
+ /* { dg-final { scan-tree-dump-times "if " 1 "cddce2"} } */
+ 
+-/* { dg-final { cleanup-tree-dump "cddce2" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/20030709-3.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/20030709-3.c
+@@ -45,4 +45,3 @@ record_component_aliases (type)
+ /* There should be one IF conditional.  */
+ /* { dg-final { scan-tree-dump-times "if " 1 "dom2"} } */
+ 
+-/* { dg-final { cleanup-tree-dump "dom2" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/20030710-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/20030710-1.c
+@@ -53,4 +53,3 @@ record_component_aliases (type)
+ /* There should be two loads of vec.length.  */
+ /* { dg-final { scan-tree-dump-times "vec.length" 2 "dom2"} } */
+ 
+-/* { dg-final { cleanup-tree-dump "dom2" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/20030711-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/20030711-1.c
+@@ -53,4 +53,3 @@ record_component_aliases (type)
+ /* There should be four loads of vec.length.  */
+ /* { dg-final { scan-tree-dump-times "vec.length" 4 "dom2"} } */
+ 
+-/* { dg-final { cleanup-tree-dump "dom2" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/20030711-2.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/20030711-2.c
+@@ -67,4 +67,3 @@ get_alias_set (t,z)
+ /* There should be one load of alias.  */
+ /* { dg-final { scan-tree-dump-times "->alias" 1 "dom2"} } */
+ 
+-/* { dg-final { cleanup-tree-dump "dom2" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/20030711-3.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/20030711-3.c
+@@ -59,4 +59,3 @@ get_alias_set (t)
+ /* There should be one load of alias.  */
+ /* { dg-final { scan-tree-dump-times "->alias" 1 "dom2"} } */
+ 
+-/* { dg-final { cleanup-tree-dump "dom2" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/20030714-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/20030714-1.c
+@@ -43,4 +43,3 @@ find_base_value_wrapper (src)
+ /* There should be no casts to short unsigned int.  */
+ /* { dg-final { scan-tree-dump-times "\\(short unsigned int\\)" 0 "dom2"} } */
+ 
+-/* { dg-final { cleanup-tree-dump "dom2" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/20030714-2.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/20030714-2.c
+@@ -36,4 +36,3 @@ get_alias_set (t)
+    properly.  */
+ /* { dg-final { scan-tree-dump-times "if " 3 "dom2"} } */
+  
+-/* { dg-final { cleanup-tree-dump "dom2" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/20030728-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/20030728-1.c
+@@ -42,4 +42,3 @@ objects_must_conflict_p (t1, t2)
+    second to be propagated into all its uses and eliminated.   */
+ /* { dg-final { scan-rtl-dump-times "PART.. = 0" 1 "expand"} } */
+  
+-/* { dg-final { cleanup-rtl-dump "expand" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/20030729-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/20030729-1.c
+@@ -51,4 +51,3 @@ readonly_fields_p (type)
+    because we load from ->common.code using different types.  */
+ /* { dg-final { scan-tree-dump-times "common\.code" 1 "dom2"} } */
+ 
+-/* { dg-final { cleanup-tree-dump "dom2" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/20030730-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/20030730-1.c
+@@ -22,4 +22,3 @@ foo (int attr_kind, unsigned long offset)
+ /* { dg-final { scan-tree-dump-times "if " 0 "dom2" { target { ! keeps_null_pointer_checks } } } } */
+ /* { dg-final { scan-tree-dump "if " "dom2" { target { keeps_null_pointer_checks } } } } */
+      
+-/* { dg-final { cleanup-tree-dump "dom2" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/20030730-2.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/20030730-2.c
+@@ -22,4 +22,3 @@ foo (int attr_kind, unsigned long offset)
+ /* { dg-final { scan-tree-dump-times "if " 0 "dom2" { target { ! keeps_null_pointer_checks } } } } */
+ /* { dg-final { scan-tree-dump "if " "dom2" { target { keeps_null_pointer_checks } } } } */
+ 
+-/* { dg-final { cleanup-tree-dump "dom2" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/20030731-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/20030731-1.c
+@@ -64,4 +64,3 @@ store_expr (exp, target, want_value)
+    immediately dominates the comparison in question.  We need something
+    stronger.  */
+ /* { dg-final { scan-tree-dump-times "target.*!= 0" 0 "dom2" { xfail *-*-* } } } */
+-/* { dg-final { cleanup-tree-dump "dom2" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/20030731-2.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/20030731-2.c
+@@ -16,4 +16,3 @@ bar (int i, int partial, int args_addr)
+ /* There should be only one IF conditional since the first does nothing
+    useful.  */
+ /* { dg-final { scan-tree-dump-times "if " 1 "dce1"} } */
+-/* { dg-final { cleanup-tree-dump "dce1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/20030807-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/20030807-1.c
+@@ -43,4 +43,3 @@ bar (rtx r)
+    which combines the result of those two tests into a new test
+    must always be true and it is optimized appropriately.  */
+ /* { dg-final { scan-tree-dump-times "if " 2 "dom2"} } */
+-/* { dg-final { cleanup-tree-dump "dom2" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/20030807-10.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/20030807-10.c
+@@ -23,4 +23,3 @@ subreg_highpart_offset (outermode, innermode)
+ /* There should be one right shift by 2 places.  */
+ /* { dg-final { scan-tree-dump-times " >> 2" 1 "vrp1"} } */
+ 
+-/* { dg-final { cleanup-tree-dump "vrp1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/20030807-11.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/20030807-11.c
+@@ -19,4 +19,3 @@ foo (reg)
+                                                                                 
+ /* There should be no IF conditionals.  */
+ /* { dg-final { scan-tree-dump-times "if " 0 "dom2"} } */
+-/* { dg-final { cleanup-tree-dump "dom2" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/20030807-2.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/20030807-2.c
+@@ -29,4 +29,3 @@ foo(int n)
+                                                                                
+ /* There should be no IF conditionals.  */
+ /* { dg-final { scan-tree-dump-times "if " 0 "dom2" } } */
+-/* { dg-final { cleanup-tree-dump "dom2" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/20030807-3.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/20030807-3.c
+@@ -26,4 +26,3 @@ cpp_parse_escape (pstr, limit, wide)
+ /* There should be precisely three IF statements.  If there is
+    more than two, then the dominator optimizations failed.  */
+ /* { dg-final { scan-tree-dump-times "if " 3 "dom2"} } */
+-/* { dg-final { cleanup-tree-dump "dom2" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/20030807-5.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/20030807-5.c
+@@ -36,4 +36,3 @@ foo ()
+    The other one for '(EXPR)->unchanging'.  */
+ /* { dg-final { scan-tree-dump-times "if " 2 "dom2"} } */
+ 
+-/* { dg-final { cleanup-tree-dump "dom2" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/20030807-6.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/20030807-6.c
+@@ -40,4 +40,3 @@ foo4 (distance, i, j)
+ 
+ /* There should be no ABS_EXPR.  */
+ /* { dg-final { scan-tree-dump-times "ABS_EXPR " 0 "vrp1"} } */
+-/* { dg-final { cleanup-tree-dump "vrp1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/20030807-7.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/20030807-7.c
+@@ -35,4 +35,3 @@ simplify_condition (cond_p)
+ 
+ /* There should be exactly one IF conditional.  */
+ /* { dg-final { scan-tree-dump-times "if " 1 "vrp1" } } */
+-/* { dg-final { cleanup-tree-dump "vrp1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/20030807-8.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/20030807-8.c
+@@ -52,4 +52,3 @@ output_location_lists (die)
+ 
+ /* There should be exactly one IF conditional, in output_location_lists.  */
+ /* { dg-final { scan-tree-dump-times "if " 1 "dom2"} } */
+-/* { dg-final { cleanup-tree-dump "dom2" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/20030807-9.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/20030807-9.c
+@@ -20,4 +20,3 @@ ooof ()
+ 
+ /* There should be no IF conditionals.  */
+ /* { dg-final { scan-tree-dump-times "if " 0 "dom2"} } */
+-/* { dg-final { cleanup-tree-dump "dom2" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/20030808-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/20030808-1.c
+@@ -38,4 +38,3 @@ delete_dead_jumptables ()
+ /* There should be no IF statements.  */
+ /* { dg-final { scan-tree-dump-times "if " 0 "cddce2"} } */
+ 
+-/* { dg-final { cleanup-tree-dump "cddce2" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/20030814-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/20030814-1.c
+@@ -20,4 +20,3 @@ com(int *blah)
+    more than one, then the dominator optimizations failed.  */
+ /* { dg-final { scan-tree-dump-times "\\*blah" 1 "dom2"} } */
+   
+-/* { dg-final { cleanup-tree-dump "dom2" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/20030814-2.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/20030814-2.c
+@@ -20,4 +20,3 @@ foo (int value)
+ /* There should be no IF conditionals.  */
+ /* { dg-final { scan-tree-dump-times "if " 0 "dom2"} } */
+  
+-/* { dg-final { cleanup-tree-dump "dom2" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/20030814-3.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/20030814-3.c
+@@ -21,4 +21,3 @@ foo (int value)
+ /* There should be one IF conditional.  */
+ /* { dg-final { scan-tree-dump-times "if " 1 "dom2"} } */
+  
+-/* { dg-final { cleanup-tree-dump "dom2" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/20030814-4.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/20030814-4.c
+@@ -36,9 +36,7 @@ blah (decl, set)
+ /* There should be precisely one reference to pointer_alias_set.  If there is
+    more than one, then the dominator optimizations failed.  */
+ /* { dg-final { scan-tree-dump-times "pointer_alias_set" 1 "dom2"} } */
+-/* { dg-final { cleanup-tree-dump "dom2" } } */
+ 
+ /* The assignment set = -1 in the ELSE clause of the last IF
+    statement should be removed by the final cleanup phase.  */
+ /* { dg-final { scan-tree-dump-times "set = -1" 0 "optimized"} } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/20030814-5.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/20030814-5.c
+@@ -37,9 +37,7 @@ blah (decl, set)
+ /* There should be precisely one reference to pointer_alias_set.  If there is
+    more than one, then the dominator optimizations failed.  */
+ /* { dg-final { scan-tree-dump-times "pointer_alias_set" 1 "dom2"} } */
+-/* { dg-final { cleanup-tree-dump "dom2" } } */
+ 
+ /* The assignment set = -1 in the ELSE clause of the last IF
+    statement should be removed by the final cleanup phase.  */
+ /* { dg-final { scan-tree-dump-times "set = -1" 0 "optimized"} } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/20030814-6.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/20030814-6.c
+@@ -42,4 +42,3 @@ foo (t, set)
+ /* ??? Will fail until we properly distinguish member stores.  At
+    present the write to type.alias_set kills the previous load.  */
+ /* { dg-final { scan-tree-dump-times "common.code" 1 "dom2" { xfail *-*-* } } } */
+-/* { dg-final { cleanup-tree-dump "dom2" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/20030814-7.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/20030814-7.c
+@@ -39,4 +39,3 @@ mark_constant_function (void)
+    This if we find current_function_decl used as an argument, then
+    we have failed.  */
+ /* { dg-final { scan-tree-dump-times "\\(current_function_decl\\)" 0 "dom2"} } */
+-/* { dg-final { cleanup-tree-dump "dom2" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/20030821-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/20030821-1.c
+@@ -26,5 +26,3 @@ y: ;
+ 
+ /* We should have folded away the goto &x  */
+ /* { dg-final { scan-tree-dump-times "goto &x" 0 "optimized"} } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "dom1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/20030824-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/20030824-1.c
+@@ -20,4 +20,3 @@ int foo (int x, int y)
+ 
+ /* The addition should be optimized into 'y+x'.  */
+ /* { dg-final { scan-tree-dump-times "\[xy\]_..D. \\+ \[xy]_..D." 1 "optimized"} } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/20030824-2.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/20030824-2.c
+@@ -20,4 +20,3 @@ int foo (int x, int y)
+ 
+ /* This function should be optimized into 'return y+x'.  */
+ /* { dg-final { scan-tree-dump-times "\[xy\]_..D. \\+ \[xy]_..D." 1 "optimized"} } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/20030825-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/20030825-1.c
+@@ -26,4 +26,3 @@ xxx:;
+ 
+ /* Bla should not be optimized away.  */
+ /* { dg-final { scan-tree-dump-times "bla" 1 "optimized"} } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/20030907-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/20030907-1.c
+@@ -27,4 +27,3 @@ int main()
+ 
+ /* The abort() call clearly is unreachable.  */
+ /* { dg-final { scan-tree-dump-times "abort" 0 "optimized"} } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/20030917-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/20030917-1.c
+@@ -16,4 +16,3 @@ findbestextension (int blah, int blah2)
+ 
+ /* The argument to "foo" should be a variable, not a constant.  */
+ /* { dg-final { scan-tree-dump-times "foo .defval" 1 "optimized"} } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/20030917-3.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/20030917-3.c
+@@ -22,4 +22,3 @@ main ()
+ 
+ /* The argument to "printf" should be a constant, not a variable.  */
+ /* { dg-final { scan-tree-dump-times "printf.*, 0" 1 "ccp1"} } */
+-/* { dg-final { cleanup-tree-dump "ccp1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/20030922-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/20030922-1.c
+@@ -31,4 +31,3 @@ voidify_wrapper_expr (tree wrapper)
+ 
+ /* There should be no IF conditionals.  */
+ /* { dg-final { scan-tree-dump-times "if " 0 "dom2"} } */
+-/* { dg-final { cleanup-tree-dump "dom2" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/20030922-2.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/20030922-2.c
+@@ -21,4 +21,3 @@ rgn_rank (rtx insn1, rtx insn2)
+ 
+ /* There should be two IF conditionals.  */
+ /* { dg-final { scan-tree-dump-times "if " 2 "dom1" } } */
+-/* { dg-final { cleanup-tree-dump "dom1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/20031015-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/20031015-1.c
+@@ -15,4 +15,3 @@ main(void)
+ 
+ /* The VDEF comes from the initial assignment, the asm, and the clobber.  */
+ /* { dg-final { scan-tree-dump-times "DEF" 3 "alias" } } */
+-/* { dg-final { cleanup-tree-dump "alias" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/20031021-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/20031021-1.c
+@@ -18,4 +18,3 @@ int main()
+ 
+ /* We should only store to a.i, not load from it.  */
+ /* { dg-final { scan-tree-dump-not "= a.i" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/20031022-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/20031022-1.c
+@@ -27,4 +27,3 @@ blah (int arf)
+ 
+ /* There should be one load from entry_exit_blocks[1].pred.  */
+ /* { dg-final { scan-tree-dump-times "entry_exit_blocks.1..pred" 1 "dom1"} } */
+-/* { dg-final { cleanup-tree-dump "dom1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/20031106-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/20031106-1.c
+@@ -18,4 +18,3 @@ void foo (int testarray[])
+ 
+ /* There should be no link_error calls.  */
+ /* { dg-final { scan-tree-dump-times "link_error" 0 "optimized"} } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/20031106-2.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/20031106-2.c
+@@ -26,4 +26,3 @@ void foo (struct s* teststruct)
+ /* There should be no link_error calls.  */
+ /* { dg-final { scan-tree-dump-times "link_error" 0 "optimized"} } */
+ 
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/20031106-3.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/20031106-3.c
+@@ -19,4 +19,3 @@ void foo (int testarray[])
+ 
+ /* There should be no link_error calls.  */
+ /* { dg-final { scan-tree-dump-times "link_error" 0 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/20031106-4.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/20031106-4.c
+@@ -27,4 +27,3 @@ void foo (struct s*  r)
+ 
+ /* There should be no link_error calls.  */
+ /* { dg-final { scan-tree-dump-times "link_error" 0 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/20031106-5.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/20031106-5.c
+@@ -26,4 +26,3 @@ void foo2 (struct s*  r, struct s*  p)
+ 
+ /* There should be no link_error calls.  */
+ /* { dg-final { scan-tree-dump-times "link_error" 0 "optimized" { xfail *-*-* } } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/20031106-6.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/20031106-6.c
+@@ -26,4 +26,3 @@ struct s foo (struct s r)
+ /* There should be no references to any of "temp_struct*"
+    temporaries.  */
+ /* { dg-final { scan-tree-dump-times "temp_struct" 0 "optimized" { xfail *-*-* } } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/20031216-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/20031216-1.c
+@@ -17,4 +17,3 @@ foo (int b)
+ /* The comparison should be eliminated, there should be no reference
+    to link_error.  */
+ /* { dg-final { scan-tree-dump-times "link_error" 0 "optimized"} } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/20040204-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/20040204-1.c
+@@ -34,4 +34,3 @@ void test55 (int x, int y)
+    by teaching dom to look through && and register all components
+    as true.  */
+ /* { dg-final { scan-tree-dump-times "link_error" 0 "optimized" { xfail { ! "alpha*-*-* arm*-*-* aarch64*-*-* powerpc*-*-* cris-*-* crisv32-*-* hppa*-*-* i?86-*-* mmix-*-* mips*-*-* m68k*-*-* moxie-*-* nds32*-*-* sh*-*-* sparc*-*-* spu-*-* visium-*-* x86_64-*-*" } } } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/20040210-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/20040210-1.c
+@@ -30,4 +30,3 @@ main(){
+ 
+ /* Should have no more than two ifs left after straightening.  */
+ /* { dg-final { scan-tree-dump-times "if " 2 "phiopt1"} } */
+-/* { dg-final { cleanup-tree-dump "phiopt1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/20040211-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/20040211-1.c
+@@ -36,4 +36,3 @@ com (rtx insn, int blah)
+ /* Cddce cannot remove possibly infinite loops and there is no way how to
+    determine whether the loop in can_move_up ends.  */
+ /* { dg-final { scan-tree-dump "if " "cddce2"} } */
+-/* { dg-final { cleanup-tree-dump "cddce2" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/20040216-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/20040216-1.c
+@@ -16,4 +16,3 @@ foo(int *z, int *y, int xx)
+ 
+ /* We should convert two COND_EXPRs into straightline code.  */
+ /* { dg-final { scan-tree-dump-times "Deleted dead store" 2 "dse1"} } */
+-/* { dg-final { cleanup-tree-dump "dse1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/20040305-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/20040305-1.c
+@@ -24,9 +24,7 @@ void foo(int edx, int eax)
+ 
+ /* Verify that we did a forward propagation.  */
+ /* { dg-final { scan-tree-dump-times "Replaced" 1 "forwprop1"} } */
+-/* { dg-final { cleanup-tree-dump "forwprop1" } } */
+ 
+ /* After cddce we should have two IF statements remaining as the other
+    two tests can be threaded.  */
+ /* { dg-final { scan-tree-dump-times "if " 2 "cddce2"} } */
+-/* { dg-final { cleanup-tree-dump "cddce2" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/20040430-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/20040430-1.c
+@@ -23,4 +23,3 @@ int main()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "if " 0 "optimized"} } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/20040513-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/20040513-1.c
+@@ -14,4 +14,3 @@ foo (unsigned int a)
+ /* There should be no casts to a _Bool since we can use the temporary
+    holding (a>>5)&1 directly.  */
+ /* { dg-final { scan-tree-dump-times "\\(_Bool\\)" 0 "forwprop1"} } */
+-/* { dg-final { cleanup-tree-dump "forwprop1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/20040513-2.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/20040513-2.c
+@@ -22,4 +22,3 @@ int t(int i)
+ /* There should be no link_error calls, if there is any, the
+    optimization has failed */
+ /* { dg-final { scan-tree-dump-times "link_error" 0 "dom2"} } */
+-/* { dg-final { cleanup-tree-dump "dom2" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/20040514-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/20040514-1.c
+@@ -16,4 +16,3 @@ end:
+ 
+ /* Should have no ifs left after straightening.  */
+ /* { dg-final { scan-tree-dump-times "if " 0 "phiopt1"} } */
+-/* { dg-final { cleanup-tree-dump "phiopt1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/20040514-2.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/20040514-2.c
+@@ -14,5 +14,4 @@ foo2 (distance, i, j)
+ /* There should be one ABS_EXPR and no conditionals.  */
+ /* { dg-final { scan-tree-dump-times "ABS_EXPR " 1 "phiopt1"} } */
+ /* { dg-final { scan-tree-dump-times "if " 0 "phiopt1"} } */
+-/* { dg-final { cleanup-tree-dump "phiopt1" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/20040517-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/20040517-1.c
+@@ -19,4 +19,3 @@ void bar (void)
+    Hence, we must have a VDEF for a before and after the call to foo().
+    And one after the call to abort().  */
+ /* { dg-final { scan-tree-dump-times "VDEF" 3 "alias"} } */
+-/* { dg-final { cleanup-tree-dump "alias" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/20040518-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/20040518-1.c
+@@ -10,4 +10,3 @@ int f(int a, int b)
+ 
+ /* Should have no ifs left after straightening.  */
+ /* { dg-final { scan-tree-dump-times "if " 0 "phiopt1"} } */
+-/* { dg-final { cleanup-tree-dump "phiopt1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/20040518-2.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/20040518-2.c
+@@ -14,4 +14,3 @@ int t( int i)
+ /* We should convert one COND_EXPRs into straightline code with ABS.  */
+ /* { dg-final { scan-tree-dump-times "straightline" 1 "phiopt1"} } */
+ /* { dg-final { scan-tree-dump-times "ABS_EXPR" 1 "phiopt1"} } */
+-/* { dg-final { cleanup-tree-dump "phiopt1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/20040615-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/20040615-1.c
+@@ -14,4 +14,3 @@ foo (unsigned int a, unsigned int b)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "bar2" 0 "dom1" } } */
+-/* { dg-final { cleanup-tree-dump "dom1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/20040624-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/20040624-1.c
+@@ -18,4 +18,3 @@ foo (unsigned int a, unsigned int b)
+    conditional.  */
+ 
+ /* { dg-final { scan-tree-dump-times "if " 1 "dom1" } } */
+-/* { dg-final { cleanup-tree-dump "dom1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/20040703-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/20040703-1.c
+@@ -10,4 +10,3 @@ float foo(float x)
+ 
+ /* We should *not* fold the arithmetic.  */
+ /* { dg-final { scan-tree-dump-times "0\\.0" 0 "dom2"} } */
+-/* { dg-final { cleanup-tree-dump "dom2" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/20040729-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/20040729-1.c
+@@ -17,4 +17,3 @@ foo ()
+    operands.  But 'p' itself is not volatile and taking the address of
+    a volatile does not constitute a volatile operand.  */
+ /* { dg-final { scan-tree-dump-times "&x" 0 "dce2"} } */
+-/* { dg-final { cleanup-tree-dump "dce2" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/20040911-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/20040911-1.c
+@@ -19,4 +19,3 @@ int foo (int i)
+ }
+ 
+ /* { dg-final { scan-tree-dump-not "VUSE <c" "alias" } } */
+-/* { dg-final { cleanup-tree-dump "alias" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/20041002-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/20041002-1.c
+@@ -21,4 +21,3 @@ bar (int i)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "if" 0 "ssa" } } */
+-/* { dg-final { cleanup-tree-dump "ssa" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/20041122-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/20041122-1.c
+@@ -35,4 +35,3 @@ find_unreachable_blocks (void)
+    modify e or e->dest if we can assert strict-aliasing rules.
+    The net result is that we only need one load of e->dest.  */
+ /* { dg-final { scan-tree-dump-times "->dest" 1 "cddce1" } } */
+-/* { dg-final { cleanup-tree-dump "cddce1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/20050128-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/20050128-1.c
+@@ -11,4 +11,3 @@ foo (int align)
+ /* We should have optimized away the mod operator before we gimpleized
+    the code.  */
+ /* { dg-final { scan-tree-dump-times "%" 0 "gimple"} } */
+-/* { dg-final { cleanup-tree-dump "gimple" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/20050215-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/20050215-1.c
+@@ -11,4 +11,3 @@ int foo (void)
+ /* Make sure the optimizers don't introduce overflow where one
+    did not exist in the original.  */
+ /* { dg-final { scan-tree-dump-times "-0+4" 0 "optimized"} } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/20050314-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/20050314-1.c
+@@ -18,4 +18,3 @@ void xxx (void)
+    cannot read nor write the memory.  */
+ 
+ /* { dg-final { scan-tree-dump-times "Moving statement" 1 "lim1" } } */
+-/* { dg-final { cleanup-tree-dump "lim1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/20050412-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/20050412-1.c
+@@ -13,4 +13,3 @@ void foo (int a) {
+ /* Make sure we do not have an assignment a = 0 in the resulting
+    optimized dump.  */
+ /* { dg-final { scan-tree-dump-times "a.* = 0;" 0 "optimized"} } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/20080530.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/20080530.c
+@@ -19,4 +19,3 @@ baz (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "Inlining foo into baz" 0 "einline"} } */
+-/* { dg-final { cleanup-tree-dump "einline" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/alias-10.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/alias-10.c
+@@ -16,5 +16,4 @@ int foo(int i)
+ }
+ 
+ /* { dg-final { scan-tree-dump "return 3;" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/alias-11.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/alias-11.c
+@@ -18,4 +18,3 @@ int bar(void)
+    the latter is an ssa temporary.  */
+ /* { dg-final { scan-tree-dump "= a.0.;" "optimized" } } */
+ /* { dg-final { scan-tree-dump "= \\*\[^\r\n\]*_.;" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/alias-12.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/alias-12.c
+@@ -14,5 +14,4 @@ int foo(int i)
+ }
+ 
+ /* { dg-final { scan-tree-dump "VDEF" "alias" } } */
+-/* { dg-final { cleanup-tree-dump "alias" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/alias-17.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/alias-17.c
+@@ -15,4 +15,3 @@ int foo(int x)
+ }
+ 
+ /* { dg-final { scan-tree-dump-not "NOTE: no flow-sensitive alias info for" "ccp2" } } */
+-/* { dg-final { cleanup-tree-dump "ccp2" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/alias-18.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/alias-18.c
+@@ -86,5 +86,3 @@ int test8 (struct A *p, int *q)
+ /* { dg-final { scan-tree-dump-not "return 6;" "optimized" } } */
+ /* { dg-final { scan-tree-dump-not "return 7;" "optimized" } } */
+ /* { dg-final { scan-tree-dump-not "return -1;" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "fre1" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/alias-19.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/alias-19.c
+@@ -26,4 +26,3 @@ int main()
+ }
+ 
+ /* { dg-final { scan-tree-dump "q_. = { a b }" "alias" } } */
+-/* { dg-final { cleanup-tree-dump "alias" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/alias-2.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/alias-2.c
+@@ -25,4 +25,3 @@ int foo()
+ /* We should have removed the link_error on the tree level as GCC can tell that
+    a is not touched by the calling bar at all. */
+ /* { dg-final { scan-tree-dump-times "link_error" 0 "optimized"} } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/alias-20.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/alias-20.c
+@@ -21,4 +21,3 @@ int foo(struct S *s, struct R *r)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "return 0;" 2 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/alias-21.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/alias-21.c
+@@ -11,5 +11,4 @@ int f(int *r)
+ 
+ 
+ /* { dg-final { scan-tree-dump-times "return 0;" 1 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/alias-22.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/alias-22.c
+@@ -11,5 +11,4 @@ int f(int *r)
+ 
+ 
+ /* { dg-final { scan-tree-dump-times "return 0;" 1 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/alias-23.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/alias-23.c
+@@ -14,5 +14,4 @@ void f1 (const char *c)
+ }
+ 
+ /* { dg-final { scan-tree-dump-not "abort" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/alias-24.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/alias-24.c
+@@ -18,5 +18,4 @@ void g (const char *c, int *i)
+ 
+ /* { dg-final { scan-tree-dump-not "abort" "optimized" } } */
+ /* { dg-final { scan-tree-dump "keepit" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/alias-25.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/alias-25.c
+@@ -8,5 +8,4 @@ void f (long *p) {
+ }
+ 
+ /* { dg-final { scan-tree-dump-not "= 42" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/alias-26.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/alias-26.c
+@@ -9,5 +9,4 @@ void f (const char *c, int *i)
+ }
+ 
+ /* { dg-final { scan-tree-dump-not "abort" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/alias-27.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/alias-27.c
+@@ -8,4 +8,3 @@ void f (long *p) {
+ }
+ 
+ /* { dg-final { scan-tree-dump-not "= 42" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/alias-29.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/alias-29.c
+@@ -25,4 +25,3 @@ void foo (union X *x)
+    baz makes sure that ystruct has its address taken.  */
+ 
+ /* { dg-final { scan-tree-dump-not "ystruct" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/alias-3.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/alias-3.c
+@@ -16,5 +16,4 @@ int foo(void)
+ }
+ 
+ /* { dg-final { scan-tree-dump "return 1;" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/alias-30.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/alias-30.c
+@@ -19,4 +19,3 @@ int foo (float *p)
+ /* We should be able to CSE the load from *p in the return stmt.  */
+ 
+ /* { dg-final { scan-tree-dump "Replaced \\\*p" "fre1" } } */
+-/* { dg-final { cleanup-tree-dump "fre1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/alias-31.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/alias-31.c
+@@ -21,4 +21,3 @@ int foo (float *p)
+    other loads should be removed.  */
+ 
+ /* { dg-final { scan-tree-dump-times "\\\*\[^ \]" 1 "cddce1" } } */
+-/* { dg-final { cleanup-tree-dump "cddce1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/alias-32.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/alias-32.c
+@@ -17,4 +17,3 @@ int bar (short *p)
+ 
+ /* { dg-final { scan-tree-dump-times "\\\*\[^ \]" 1 "cddce1" } } */
+ /* { dg-final { scan-tree-dump-not "aligned_alloc" "cddce1" } } */
+-/* { dg-final { cleanup-tree-dump "cddce1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/alias-33.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/alias-33.c
+@@ -17,4 +17,3 @@ int main ()
+ }
+ 
+ /* { dg-final { scan-tree-dump "Replaced j with 0" "fre1" } } */
+-/* { dg-final { cleanup-tree-dump "fre1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/alias-4.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/alias-4.c
+@@ -17,5 +17,4 @@ int foo(void)
+ }
+ 
+ /* { dg-final { scan-tree-dump "return 1;" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/alias-5.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/alias-5.c
+@@ -19,5 +19,4 @@ int foo(void)
+ }
+ 
+ /* { dg-final { scan-tree-dump "return 1;" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/alias-6.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/alias-6.c
+@@ -18,4 +18,3 @@ int bar(void)
+    the latter is an ssa temporary.  */
+ /* { dg-final { scan-tree-dump "= a.0.;" "optimized" } } */
+ /* { dg-final { scan-tree-dump "= \\*\[^\r\n\]*_.;" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/alias_bug.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/alias_bug.c
+@@ -58,4 +58,3 @@ void keyboard_set_repeat(void)
+ 
+ /* { dg-final { scan-tree-dump-times "ireg.*ax" 1 "optimized"} } */
+  
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/andor-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/andor-1.c
+@@ -61,5 +61,4 @@ int test10(int j)
+ /* { dg-final { scan-tree-dump-times "h \\| 1" 1 "original" } } */
+ /* { dg-final { scan-tree-dump-times "i \& 2 \\| 1" 1 "original" } } */
+ /* { dg-final { scan-tree-dump-times "j \& 2 \\| 1" 1 "original" } } */
+-/* { dg-final { cleanup-tree-dump "original" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/andor-2.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/andor-2.c
+@@ -49,4 +49,3 @@ int test8(int o, int p)
+ /* { dg-final { scan-tree-dump-times "return k;" 1 "original" } } */
+ /* { dg-final { scan-tree-dump-times "return m;" 1 "original" } } */
+ /* { dg-final { scan-tree-dump-times "return o;" 1 "original" } } */
+-/* { dg-final { cleanup-tree-dump "original" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/andor-3.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/andor-3.c
+@@ -21,4 +21,3 @@ int f3(int y, int x)
+ 
+ /* { dg-final { scan-tree-dump-times "~x" 0 "optimized" } } */
+ /* { dg-final { scan-tree-dump-times "x_..D. \& y_..D." 4 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/andor-4.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/andor-4.c
+@@ -21,4 +21,3 @@ int f3(int y, int x)
+ 
+ /* { dg-final { scan-tree-dump-times "~x" 0 "optimized" } } */
+ /* { dg-final { scan-tree-dump-times "x_..D. \\\| y_..D." 4 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/andor-5.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/andor-5.c
+@@ -47,4 +47,3 @@ int f7(int y, int x)
+ /* { dg-final { scan-tree-dump-times "\\\|" 0 "optimized" } } */
+ /* { dg-final { scan-tree-dump-times "\&" 0 "optimized" } } */
+ /* { dg-final { scan-tree-dump-times "return x_..D.;" 8 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/asm-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/asm-1.c
+@@ -14,4 +14,3 @@ void f()
+ 
+ /* { dg-final { scan-tree-dump-times "42" 1 "optimized" } } */
+ /* { dg-final { scan-tree-dump-times "63" 1 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/asm-2.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/asm-2.c
+@@ -18,4 +18,3 @@ void baz(void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "asm\[^\\r\\n\]*xyzzy" 1 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/asm-3.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/asm-3.c
+@@ -36,4 +36,3 @@ void test(void)
+ /* In particular, hardreg should *not* appear in the call to bar.  */
+ /* { dg-final { scan-tree-dump-times "bar \[(\]\[^\n\r\]*_.\[)\]" 1 "optimized" } } */
+ 
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/asmgoto-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/asmgoto-1.c
+@@ -92,4 +92,3 @@ bad:
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "XYZZY" 1 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/assign-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/assign-1.c
+@@ -9,4 +9,3 @@ void foo()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "count =" 1 "optimized"} } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/assign-2.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/assign-2.c
+@@ -9,5 +9,4 @@ void foo()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "count =" 1 "optimized"} } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/assign-3.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/assign-3.c
+@@ -21,4 +21,3 @@ int main()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times " = count;" 3 "gimple" } } */
+-/* { dg-final { cleanup-tree-dump "gimple" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/attr-alias-2.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/attr-alias-2.c
+@@ -9,4 +9,3 @@ main()
+    return b+a;
+ }
+ /* { dg-final { scan-tree-dump "return 8" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/attr-alias.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/attr-alias.c
+@@ -25,4 +25,3 @@ main()
+ /* { dg-final { scan-tree-dump-times "  test4 " 1 "optimized" } } */
+ /* { dg-final { scan-tree-dump-not "  test1 " "optimized" } } */
+ /* { dg-final { scan-tree-dump-not "  test2 " "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/attr-hotcold-2.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/attr-hotcold-2.c
+@@ -25,4 +25,3 @@ void f(int x, int y)
+    the testcase around too much.  */
+ /* { dg-final { scan-ipa-dump-times "block 5, loop depth 0, count 0, freq \[6-9\]\[0-9\]\[0-9\]\[0-9\]" 1 "profile_estimate" } } */
+ 
+-/* { dg-final { cleanup-ipa-dump "profile_estimate" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/bitwise-sink.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/bitwise-sink.c
+@@ -8,4 +8,3 @@ foo (_Bool x)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "~x" 1 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/bool-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/bool-1.c
+@@ -16,4 +16,3 @@ int f(_Bool x)
+    away the comparison.  */
+ /* { dg-final { scan-assembler-times "adde" 0 { target powerpc*-*-* } } } */
+ 
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/bool-10.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/bool-10.c
+@@ -11,4 +11,3 @@ int f(_Bool x)
+ /* { dg-final { scan-tree-dump-times "!= 1" 0 "optimized"} } */
+ /* { dg-final { scan-tree-dump-times "~x" 1 "optimized"} } */
+ 
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/bool-11.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/bool-11.c
+@@ -11,4 +11,3 @@ int f(_Bool x)
+ /* { dg-final { scan-tree-dump-times "== 0" 0 "optimized"} } */
+ /* { dg-final { scan-tree-dump-times "~x" 1 "optimized"} } */
+ 
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/bool-2.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/bool-2.c
+@@ -19,4 +19,3 @@ int f(_Bool x)
+    away the comparison.  */
+ /* { dg-final { scan-assembler-times "adde" 0 { target powerpc*-*-* } } } */
+ 
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/bool-3.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/bool-3.c
+@@ -15,4 +15,3 @@ int f(_Bool x)
+    fold its tree forwprop is able to clean up the mess.  */
+ /* { dg-final { scan-tree-dump-times "== 0" 0 "optimized" } } */
+ 
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/bool-4.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/bool-4.c
+@@ -14,4 +14,3 @@ int f(_Bool x)
+    away the comparison.  */
+ /* { dg-final { scan-assembler-times "adde" 0 { target powerpc*-*-* } } } */
+ 
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/bool-5.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/bool-5.c
+@@ -16,4 +16,3 @@ int f(_Bool x)
+    away the comparison.  */
+ /* { dg-final { scan-assembler-times "adde" 0 { target powerpc*-*-* } } } */
+ 
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/bool-6.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/bool-6.c
+@@ -19,4 +19,3 @@ int f(_Bool x)
+    away the comparison.  */
+ /* { dg-final { scan-assembler-times "adde" 0 { target powerpc*-*-* } } } */
+ 
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/bool-7.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/bool-7.c
+@@ -14,4 +14,3 @@ int f(_Bool x)
+ /* There should be no != 1. Fold changes x != 1 to ! x.  */
+ /* { dg-final { scan-tree-dump-times "!= 1" 0 "optimized" } } */
+ 
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/bool-8.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/bool-8.c
+@@ -14,4 +14,3 @@ int f(_Bool x)
+    away the comparison.  */
+ /* { dg-final { scan-assembler-times "adde" 0 { target powerpc*-*-* } } } */
+ 
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/bool-9.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/bool-9.c
+@@ -14,4 +14,3 @@ _Bool f1(_Bool x)
+    away the comparison.  */
+ /* { dg-final { scan-assembler-times "subfe" 0 { target powerpc*-*-* } } } */
+ 
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-expect-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-expect-1.c
+@@ -11,4 +11,3 @@ f (int i, float j, int i2, float j2)
+ } 
+ 
+ /* { dg-final { scan-tree-dump-times {builtin_expect[^\n]*, 0\);\n[^\n]*if} 2 "gimple"} } */
+-/* { dg-final { cleanup-tree-dump "gimple" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-expect-2.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-expect-2.c
+@@ -13,4 +13,3 @@ f (int i, float j, int i2, float j2)
+ } 
+ 
+ /* { dg-final { scan-tree-dump-times {builtin_expect[^\n]*, 0\);\n[^\n]*if} 2 "gimple"} } */
+-/* { dg-final { cleanup-tree-dump "gimple" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-expect-3.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-expect-3.c
+@@ -14,4 +14,3 @@ f (int i, float j, int i2, float j2)
+ } 
+ 
+ /* { dg-final { scan-tree-dump-times {builtin_expect[^\n]*, 0\);\n[^\n]*if} 2 "gimple"} } */
+-/* { dg-final { cleanup-tree-dump "gimple" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-expect-4.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-expect-4.c
+@@ -14,4 +14,3 @@ f (int i, float j, int i2, float j2)
+ } 
+ 
+ /* { dg-final { scan-tree-dump-times {builtin_expect[^\n]*, 0\);\n[^\n]*if} 2 "gimple"} } */
+-/* { dg-final { cleanup-tree-dump "gimple" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-expect-5.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-expect-5.c
+@@ -16,4 +16,3 @@ f (int i, float j, int i2, float j2)
+ /* { dg-final { scan-tree-dump-times { if } 2 "forwprop1"} } */
+ /* { dg-final { scan-tree-dump {builtin_expect[^\n]*, 0\);\n[^\n]*if} "forwprop1"} } */
+ /* { dg-final { scan-tree-dump {builtin_expect[^\n]*, 1\);\n[^\n]*if} "forwprop1"} } */
+-/* { dg-final { cleanup-tree-dump "forwprop?" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-fprintf-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-fprintf-1.c
+@@ -38,4 +38,3 @@ void test (void)
+ /* { dg-final { scan-tree-dump "vi6.*fputc.*fp.*vi7" "fab1"} } */
+ /* { dg-final { scan-tree-dump "vi7.*fputc.*fp.*vi8" "fab1"} } */
+ /* { dg-final { scan-tree-dump "vi8.*fprintf.*fp.*\"%d%d\".*vi9" "fab1"} } */
+-/* { dg-final { cleanup-tree-dump "fab1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-fprintf-chk-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-fprintf-chk-1.c
+@@ -38,4 +38,3 @@ void test (void)
+ /* { dg-final { scan-tree-dump "vi6.*fputc.*fp.*vi7" "fab1"} } */
+ /* { dg-final { scan-tree-dump "vi7.*fputc.*fp.*vi8" "fab1"} } */
+ /* { dg-final { scan-tree-dump "vi8.*__fprintf_chk.*fp.*1.*\"%d%d\".*vi9" "fab1"} } */
+-/* { dg-final { cleanup-tree-dump "fab1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-free.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-free.c
+@@ -17,4 +17,3 @@ void foo(unsigned n)
+ /* We should remove the redundant call to free.  */
+ 
+ /* { dg-final { scan-tree-dump-times "free" 1 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-printf-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-printf-1.c
+@@ -39,4 +39,3 @@ void test (void)
+ /* { dg-final { scan-tree-dump "vi7 ={v} 0\[^\(\)\]*vi8 ={v} 0" "fab1"} } */
+ /* { dg-final { scan-tree-dump "vi8.*putchar.*vi9" "fab1"} } */
+ /* { dg-final { scan-tree-dump "vi9.*puts.*\"hello\\\\n\".*via" "fab1"} } */
+-/* { dg-final { cleanup-tree-dump "fab1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-printf-chk-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-printf-chk-1.c
+@@ -39,4 +39,3 @@ void test (void)
+ /* { dg-final { scan-tree-dump "vi7 ={v} 0\[^\(\)\]*vi8 ={v} 0" "fab1"} } */
+ /* { dg-final { scan-tree-dump "vi8.*putchar.*vi9" "fab1"} } */
+ /* { dg-final { scan-tree-dump "vi9.*puts.*\"hello\\\\n\".*via" "fab1"} } */
+-/* { dg-final { cleanup-tree-dump "fab1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-vfprintf-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-vfprintf-1.c
+@@ -36,4 +36,3 @@ test (va_list ap1, va_list ap2, va_list ap3, va_list ap4, va_list ap5,
+ /* { dg-final { scan-tree-dump "vi4.*vfprintf.*\"%s\".*vi5" "fab1"} } */
+ /* { dg-final { scan-tree-dump "vi5.*vfprintf.*\"%c\".*vi6" "fab1"} } */
+ /* { dg-final { scan-tree-dump "vi6.*vfprintf.*\"%s\\\\n\".*vi7" "fab1"} } */
+-/* { dg-final { cleanup-tree-dump "fab1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-vfprintf-chk-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-vfprintf-chk-1.c
+@@ -36,4 +36,3 @@ test (va_list ap1, va_list ap2, va_list ap3, va_list ap4, va_list ap5,
+ /* { dg-final { scan-tree-dump "vi4.*__vfprintf_chk.*fp.*1.*\"%s\".*vi5" "fab1"} } */
+ /* { dg-final { scan-tree-dump "vi5.*__vfprintf_chk.*fp.*1.*\"%c\".*vi6" "fab1"} } */
+ /* { dg-final { scan-tree-dump "vi6.*__vfprintf_chk.*fp.*1.*\"%s\\\\n\".*vi7" "fab1"} } */
+-/* { dg-final { cleanup-tree-dump "fab1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-vprintf-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-vprintf-1.c
+@@ -34,4 +34,3 @@ test (va_list ap1, va_list ap2, va_list ap3, va_list ap4, va_list ap5,
+ /* { dg-final { scan-tree-dump "vi4.*vprintf.*\"%s\".*vi5" "fab1"} } */
+ /* { dg-final { scan-tree-dump "vi5.*vprintf.*\"%c\".*vi6" "fab1"} } */
+ /* { dg-final { scan-tree-dump "vi6.*vprintf.*\"%s\\\\n\".*vi7" "fab1"} } */
+-/* { dg-final { cleanup-tree-dump "fab1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-vprintf-chk-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-vprintf-chk-1.c
+@@ -34,4 +34,3 @@ test (va_list ap1, va_list ap2, va_list ap3, va_list ap4, va_list ap5,
+ /* { dg-final { scan-tree-dump "vi4.*__vprintf_chk.*1.*\"%s\".*vi5" "fab1"} } */
+ /* { dg-final { scan-tree-dump "vi5.*__vprintf_chk.*1.*\"%c\".*vi6" "fab1"} } */
+ /* { dg-final { scan-tree-dump "vi6.*__vprintf_chk.*1.*\"%s\\\\n\".*vi7" "fab1"} } */
+-/* { dg-final { cleanup-tree-dump "fab1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/calloc-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/calloc-1.c
+@@ -26,4 +26,3 @@ void* g(void)
+ /* { dg-final { scan-tree-dump-times "calloc" 2 "optimized" } } */
+ /* { dg-final { scan-tree-dump-not "malloc" "optimized" } } */
+ /* { dg-final { scan-tree-dump-not "memset" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/calloc-2.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/calloc-2.c
+@@ -24,4 +24,3 @@ void* g(int m1, int m2)
+ /* { dg-final { scan-tree-dump-times "malloc" 1 "optimized" } } */
+ /* { dg-final { scan-tree-dump-times "calloc" 1 "optimized" } } */
+ /* { dg-final { scan-tree-dump-times "memset" 2 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/calloc-3.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/calloc-3.c
+@@ -11,4 +11,3 @@ void*f(){
+ /* { dg-final { scan-tree-dump-not "malloc" "optimized" } } */
+ /* { dg-final { scan-tree-dump-times "calloc" 1 "optimized" } } */
+ /* { dg-final { scan-tree-dump-not "memset" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/cfgcleanup-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/cfgcleanup-1.c
+@@ -16,4 +16,3 @@ cleanup (int a, int b)
+ }
+ /* Dce should get rid of the initializers and cfgcleanup should elliminate ifs  */
+ /* { dg-final { scan-tree-dump-times "if " 0 "dce1"} } */
+-/* { dg-final { cleanup-tree-dump "dce1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/coalesce-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/coalesce-1.c
+@@ -196,5 +196,4 @@ process_switch (gimple swtch)
+    any partition copies inserted.  */
+ 
+ /* { dg-final { scan-rtl-dump-not "partition copy" "expand"} } */
+-/* { dg-final { cleanup-rtl-dump "expand" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/coalesce-2.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/coalesce-2.c
+@@ -13,4 +13,3 @@ void foo(int n)
+    any partition copies inserted.  */
+ 
+ /* { dg-final { scan-rtl-dump-not "partition copy" "expand"} } */
+-/* { dg-final { cleanup-rtl-dump "expand" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/col-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/col-1.c
+@@ -14,4 +14,3 @@ m(int x)
+ /* { dg-final { scan-tree-dump-times "10:9.*c = 5" 1 "gimple" } } */
+ /* { dg-final { scan-tree-dump-times "10:14.*c . 16" 1 "gimple" } } */
+ /* { dg-final { scan-tree-dump-times "10:4.*a =" 1 "gimple" } } */
+-/* { dg-final { cleanup-tree-dump "gimple" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/complex-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/complex-1.c
+@@ -10,4 +10,3 @@ C foo(C x, float y)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "__mul" 0 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/complex-2.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/complex-2.c
+@@ -10,4 +10,3 @@ C foo(C x, float y)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "__div" 0 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/complex-3.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/complex-3.c
+@@ -23,5 +23,4 @@ float imag_part(COMPLEX_FLOAT a)
+ 
+ /* { dg-final { scan-tree-dump-times "REALPART_EXPR" 2 "optimized" } } */
+ /* { dg-final { scan-tree-dump-times "IMAGPART_EXPR" 1 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/complex-4.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/complex-4.c
+@@ -11,4 +11,3 @@ int f(void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "__complex__" 0 "optimized" { xfail *-*-* } } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/complex-5.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/complex-5.c
+@@ -9,4 +9,3 @@ int f(void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "__complex__" 0 "optimized" { xfail *-*-* } } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/complex-6.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/complex-6.c
+@@ -22,4 +22,3 @@ quantum_foo(float _Complex a)
+ 
+ /* { dg-final { scan-tree-dump-times "REALPART_EXPR" 1 "optimized" } } */
+ /* { dg-final { scan-tree-dump-times "IMAGPART_EXPR" 1 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/copy-headers.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/copy-headers.c
+@@ -13,4 +13,3 @@ void bla (void)
+ 
+ /* There should be a header duplicated.  */
+ /* { dg-final { scan-tree-dump-times "Duplicating header" 1 "ch"} } */
+-/* { dg-final { cleanup-tree-dump "ch" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/cswtch-2.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/cswtch-2.c
+@@ -18,4 +18,3 @@ int h1 (X x)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "CSWTCH" 0 "switchconv" } } */
+-/* { dg-final { cleanup-tree-dump "switchconv" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/cswtch.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/cswtch.c
+@@ -78,4 +78,3 @@ int main ()
+ }
+ 
+ /* { dg-final { scan-tree-dump "Switch converted" "switchconv" } } */
+-/* { dg-final { cleanup-tree-dump "switchconv" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/cunroll-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/cunroll-1.c
+@@ -11,4 +11,3 @@ test(int c)
+ /* Array bounds says the loop will not roll much.  */
+ /* { dg-final { scan-tree-dump "loop with 3 iterations completely unrolled" "cunrolli"} } */
+ /* { dg-final { scan-tree-dump "Last iteration exit edge was proved true." "cunrolli"} } */
+-/* { dg-final { cleanup-tree-dump "cunrolli" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/cunroll-10.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/cunroll-10.c
+@@ -11,4 +11,3 @@ foo (int n)
+      a[i]++;
+ }
+ /* { dg-final { scan-tree-dump-times "Forced statement unreachable" 2 "cunroll" } } */
+-/* { dg-final { cleanup-tree-dump "cunroll" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/cunroll-11.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/cunroll-11.c
+@@ -15,4 +15,3 @@ extern void foo (s1 *x1, s1 *x2, int a, int b)
+ }
+ 
+ /* { dg-final { scan-tree-dump "Loop 1 iterates at most 3 times" "cunroll" } } */
+-/* { dg-final { cleanup-tree-dump "cunroll" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/cunroll-2.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/cunroll-2.c
+@@ -15,4 +15,3 @@ test(int c)
+ }
+ /* We are not able to get rid of the final conditional because the loop has two exits.  */
+ /* { dg-final { scan-tree-dump "loop with 2 iterations completely unrolled" "cunroll"} } */
+-/* { dg-final { cleanup-tree-dump "cunroll" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/cunroll-3.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/cunroll-3.c
+@@ -13,4 +13,3 @@ test(int c)
+ /* If we start duplicating headers prior curoll, this loop will have 0 iterations.  */
+ 
+ /* { dg-final { scan-tree-dump "loop with 2 iterations completely unrolled" "cunrolli"} } */
+-/* { dg-final { cleanup-tree-dump "cunrolli" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/cunroll-4.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/cunroll-4.c
+@@ -20,4 +20,3 @@ test(int c)
+    from the last iteration.  */
+ /* { dg-final { scan-tree-dump "loop turned into non-loop; it never loops." "ivcanon"} } */
+ /* { dg-final { scan-tree-dump "Last iteration exit edge was proved true." "ivcanon"} } */
+-/* { dg-final { cleanup-tree-dump "ivcanon" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/cunroll-5.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/cunroll-5.c
+@@ -12,4 +12,3 @@ test(int c)
+ /* { dg-final { scan-tree-dump "loop with 6 iterations completely unrolled" "cunroll"} } */
+ /* { dg-final { scan-tree-dump "Exit condition of peeled iterations was eliminated." "cunroll"} } */
+ /* { dg-final { scan-tree-dump "Last iteration exit edge was proved true." "cunroll"} } */
+-/* { dg-final { cleanup-tree-dump "cunroll" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/cunroll-9.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/cunroll-9.c
+@@ -21,4 +21,3 @@ t (int n)
+   return sum;
+ }
+ /* { dg-final { scan-tree-dump-times "Removed pointless exit:" 1 "cunrolli" } } */
+-/* { dg-final { cleanup-tree-dump "cunrolli" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/dce-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/dce-1.c
+@@ -15,5 +15,4 @@ int foo (int b, int j)
+    the exit condition after the loop.  */
+ /* { dg-final { scan-tree-dump-not "999" "cddce1"} } */
+ /* { dg-final { scan-tree-dump-not "1000" "cddce1"} } */
+-/* { dg-final { cleanup-tree-dump "cddce1" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/divide-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/divide-1.c
+@@ -10,5 +10,4 @@ int f(int a)
+ /* { dg-final { scan-tree-dump-times "-a" 0 "optimized"} } */
+ /* { dg-final { scan-tree-dump-times "a_..D. / -10" 1 "optimized"} } */
+ 
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/divide-2.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/divide-2.c
+@@ -10,5 +10,4 @@ int f(int a)
+ /* { dg-final { scan-tree-dump-times "10 / -a" 0 "optimized"} } */
+ /* { dg-final { scan-tree-dump-times "-10 / a" 1 "optimized"} } */
+ 
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/divide-3.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/divide-3.c
+@@ -9,6 +9,5 @@ int f(int a)
+ /* { dg-final { scan-tree-dump-times "a_\[0-9()D\]* / 10" 0 "optimized"} } */
+ /* { dg-final { scan-tree-dump-times "a_..D. / -10" 1 "optimized"} } */
+ 
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+ 
+ 
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/divide-4.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/divide-4.c
+@@ -9,6 +9,5 @@ int f(int a)
+ /* { dg-final { scan-tree-dump-times "-a" 0 "optimized"} } */
+ /* { dg-final { scan-tree-dump-times "a_..D. / 10" 1 "optimized"} } */
+ 
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+ 
+ 
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/dump-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/dump-1.c
+@@ -6,4 +6,3 @@ int f(void)
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "profile_estimate" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/fnsplit-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/fnsplit-1.c
+@@ -20,4 +20,3 @@ main(void)
+ }
+ /* { dg-final { scan-tree-dump-times "Splitting function at:" 1 "fnsplit"} } */
+ 
+-/* { dg-final { cleanup-tree-dump "fnsplit" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/foldaddr-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/foldaddr-1.c
+@@ -12,5 +12,4 @@ int foo(char *b)
+    not identical and thus collapsed the function into a trivial
+    "return 0".  */
+ /* { dg-final { scan-tree-dump-times "return 0" 1 "original" } } */
+-/* { dg-final { cleanup-tree-dump "original" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/foldcast-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/foldcast-1.c
+@@ -13,4 +13,3 @@ char *bar (char *x)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "return x;" 2 "original" } } */
+-/* { dg-final { cleanup-tree-dump "original" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/foldconst-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/foldconst-1.c
+@@ -23,4 +23,3 @@ foo (void)
+ /* The switch should be switch converted and later constant propagated.  */
+ /* { dg-final { scan-tree-dump-not "CSWTCH" "optimized"} } */
+ /* { dg-final { scan-tree-dump-not "switch" "optimized"} } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/foldconst-2.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/foldconst-2.c
+@@ -57,4 +57,3 @@ emit_support_tinfos (void)
+ /* We should copy loop header to fundamentals[0] and then fold it way into
+    known value.  */
+ /* { dg-final { scan-tree-dump-not "fundamentals.0" "ch"} } */
+-/* { dg-final { cleanup-tree-dump "ch" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/foldconst-3.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/foldconst-3.c
+@@ -75,4 +75,3 @@ int_fits_type_p (const_tree c, const_tree type)
+ }
+ /* The switch should be switch converted and later constant propagated.  */
+ /* { dg-final { scan-tree-dump-not "tree_code_type" "optimized"} } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/foldconst-4.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/foldconst-4.c
+@@ -11,4 +11,3 @@ test()
+   return a.a+b[c];
+ }
+ /* { dg-final { scan-tree-dump "return 0;" "ccp2" } } */
+-/* { dg-final { cleanup-tree-dump "ccp2" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/foldconst-5.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/foldconst-5.c
+@@ -11,5 +11,4 @@ test()
+   return a[2]+b[1]+b[3]+c.b;
+ }
+ /* { dg-final { scan-tree-dump "return 11;" "ccp1" } } */
+-/* { dg-final { cleanup-tree-dump "ccp1" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/foldconst-6.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/foldconst-6.c
+@@ -11,4 +11,3 @@ void f (vec *r)
+ }
+ 
+ /* { dg-final { scan-tree-dump-not "2, 666" "ccp1" } } */
+-/* { dg-final { cleanup-tree-dump "ccp1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/foldstring-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/foldstring-1.c
+@@ -10,4 +10,3 @@ arf ()
+     blah ();
+ }
+ /* { dg-final { scan-tree-dump-times "= 0;" 1 "gimple"} } */
+-/* { dg-final { cleanup-tree-dump "gimple" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/forwprop-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/forwprop-1.c
+@@ -15,4 +15,3 @@ void f(struct a * b, __SIZE_TYPE__ i)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "\\\[\[^\n\r\]*\\\] = 1;" 0 "forwprop1" } } */
+-/* { dg-final { cleanup-tree-dump "forwprop1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/forwprop-10.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/forwprop-10.c
+@@ -19,4 +19,3 @@ void test2(void)
+    the rhs of the store to b by 1.  */
+ 
+ /* { dg-final { scan-tree-dump "Replaced\[^\\n\]*with 1" "fre1" } } */
+-/* { dg-final { cleanup-tree-dump "fre1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/forwprop-11.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/forwprop-11.c
+@@ -17,4 +17,3 @@ int g(int *p, int n)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "= MEM\\\[\\\(int \\\*\\\)\[ap\]_.. \\\+ 4B\\\];" 2 "forwprop1" } } */
+-/* { dg-final { cleanup-tree-dump "forwprop1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/forwprop-12.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/forwprop-12.c
+@@ -19,4 +19,3 @@ int bar(struct X *p, int i)
+    address arithmetic into the memory access as an array access.  */
+ 
+ /* { dg-final { scan-tree-dump-times "->a\\\[D\\\." 2 "forwprop1" { xfail *-*-* } } } */
+-/* { dg-final { cleanup-tree-dump "forwprop1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/forwprop-13.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/forwprop-13.c
+@@ -13,4 +13,3 @@ foo (struct B *b)
+ }
+ 
+ /* { dg-final { scan-tree-dump-not "\\\(unsigned" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/forwprop-14.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/forwprop-14.c
+@@ -15,4 +15,3 @@ foo (unsigned int eax)
+ 
+ /* { dg-final { scan-tree-dump-times " & " 1 "optimized" } } */
+ /* { dg-final { scan-tree-dump-times " \\\| " 1 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/forwprop-15.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/forwprop-15.c
+@@ -11,4 +11,3 @@ foo (_Bool a, _Bool b, _Bool c)
+ 
+ /* { dg-final { scan-tree-dump-times " == " 0 "forwprop1" } } */
+ /* { dg-final { scan-tree-dump-times " != " 0 "forwprop1" } } */
+-/* { dg-final { cleanup-tree-dump "forwprop1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/forwprop-16.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/forwprop-16.c
+@@ -11,4 +11,3 @@ int foo (double xx, double xy)
+ }
+ 
+ /* { dg-final { scan-tree-dump "if \\\(x" "forwprop1" } } */
+-/* { dg-final { cleanup-tree-dump "forwprop1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/forwprop-17.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/forwprop-17.c
+@@ -9,4 +9,3 @@ int foo (int xx, int xy)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times " & 1" 1 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/forwprop-18.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/forwprop-18.c
+@@ -21,4 +21,3 @@ signed char g2(unsigned long long n)
+ 
+ /* { dg-final { scan-tree-dump-times "\\\(float\\\)" 2 "cddce1" } } */
+ /* { dg-final { scan-tree-dump-not "\\\(long double\\\)" "cddce1" } } */
+-/* { dg-final { cleanup-tree-dump "cddce1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/forwprop-19.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/forwprop-19.c
+@@ -12,4 +12,3 @@ void f (vec *x1, vec *x2)
+ }
+ 
+ /* { dg-final { scan-tree-dump-not "VEC_PERM_EXPR" "forwprop1" } } */
+-/* { dg-final { cleanup-tree-dump "forwprop1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/forwprop-2.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/forwprop-2.c
+@@ -17,4 +17,3 @@ void f(__SIZE_TYPE__ i)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "\\\[\[^\n\r\]*\\\] = 1;" 0 "forwprop1" } } */
+-/* { dg-final { cleanup-tree-dump "forwprop?" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/forwprop-20.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/forwprop-20.c
+@@ -67,4 +67,3 @@ void l (double d, vecf* r)
+ }
+ 
+ /* { dg-final { scan-tree-dump-not "VEC_PERM_EXPR" "forwprop1" } } */
+-/* { dg-final { cleanup-tree-dump "forwprop1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/forwprop-21.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/forwprop-21.c
+@@ -13,4 +13,3 @@ test (v4si *x, v4si *y)
+ /* Optimization in forwprop1, cleanup in cddce1.  */
+ 
+ /* { dg-final { scan-tree-dump-not "VEC_PERM_EXPR" "cddce1" } } */
+-/* { dg-final { cleanup-tree-dump "cddce1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/forwprop-23.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/forwprop-23.c
+@@ -12,4 +12,3 @@ long f (long d, long e)
+ 
+ 
+ /* { dg-final { scan-tree-dump-not "BIT_FIELD_REF" "forwprop1" } } */
+-/* { dg-final { cleanup-tree-dump "forwprop1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/forwprop-24.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/forwprop-24.c
+@@ -15,4 +15,3 @@ foo (unsigned char x, unsigned short y)
+    as in (x ^ (char) y) & 1.  */
+ 
+ /* { dg-final { scan-tree-dump-times " & " 1 "cddce1" } } */
+-/* { dg-final { cleanup-tree-dump "cddce1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/forwprop-25.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/forwprop-25.c
+@@ -38,7 +38,6 @@ convert_move (rtx to, rtx from, int unsignedp)
+ }
+ 
+ /* { dg-final { scan-tree-dump "Replaced.*!=.*with.*!=.* " "forwprop1"} } */
+-/* { dg-final { cleanup-tree-dump "forwprop1" } } */
+ 
+ 
+ 
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/forwprop-26.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/forwprop-26.c
+@@ -63,4 +63,3 @@ function_and_variable_visibility (unsigned char whole_program)
+ }
+ 
+ /* { dg-final { scan-tree-dump-not "& 255" "forwprop1"} } */
+-/* { dg-final { cleanup-tree-dump "forwprop1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/forwprop-27.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/forwprop-27.c
+@@ -36,5 +36,4 @@ void i (V *v1, V *v2){
+ /* { dg-final { scan-tree-dump-not "\\\+" "forwprop1"} } */
+ /* { dg-final { scan-tree-dump "{ 0, 4 }" "forwprop1"} } */
+ /* { dg-final { scan-tree-dump "{ 37, -5 }" "forwprop1"} } */
+-/* { dg-final { cleanup-tree-dump "forwprop1" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/forwprop-28.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/forwprop-28.c
+@@ -85,5 +85,4 @@ test_8 (int code)
+    we do that we even generate better code on x86 at least.  */
+ 
+ /* { dg-final { scan-tree-dump-times "simplified to if \\\(\[^ ]* <" 4 "forwprop1"} } */
+-/* { dg-final { cleanup-tree-dump "forwprop1" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/forwprop-3.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/forwprop-3.c
+@@ -15,4 +15,3 @@ int foo(struct bar *x)
+ }
+ 
+ /* { dg-final { scan-tree-dump "Replaced .p_. < q_.. with .1." "forwprop1" } } */
+-/* { dg-final { cleanup-tree-dump "forwprop1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/forwprop-30.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/forwprop-30.c
+@@ -12,4 +12,3 @@ int *foo (int *q, int i, int j)
+    need q + i as well.  */
+ 
+ /* { dg-final { scan-tree-dump-times "\\+" 2 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/forwprop-31.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/forwprop-31.c
+@@ -13,4 +13,3 @@ int foo (int x)
+ /* { dg-final { scan-tree-dump-times "= 0;" 2 "forwprop1" } } */
+ /* { dg-final { scan-tree-dump-times "-" 0 "forwprop1" } } */
+ /* { dg-final { scan-tree-dump-times "\\+" 1 "forwprop1" } } */
+-/* { dg-final { cleanup-tree-dump "forwprop1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/forwprop-32.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/forwprop-32.c
+@@ -14,5 +14,3 @@ int bar (int x)
+ 
+ /* { dg-final { scan-tree-dump "x_.\\(D\\) / 15" "forwprop1" } } */
+ /* { dg-final { scan-tree-dump "return 0;" "ccp1" } } */
+-/* { dg-final { cleanup-tree-dump "forwprop1" } } */
+-/* { dg-final { cleanup-tree-dump "ccp1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/forwprop-4.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/forwprop-4.c
+@@ -15,4 +15,3 @@ void foo()
+ }
+ 
+ /* { dg-final { scan-tree-dump-not "link_error" "forwprop1" } } */
+-/* { dg-final { cleanup-tree-dump "forwprop1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/forwprop-5.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/forwprop-5.c
+@@ -17,4 +17,3 @@ vector float foo( vector float v )
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "disappear" 0 "optimized"} } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/forwprop-6.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/forwprop-6.c
+@@ -25,4 +25,3 @@ void f(void)
+    value-numbering, removing the load altogether.
+    ???  We now do this after CPP re-writes a into SSA form.  */
+ /* { dg-final { scan-tree-dump-times "VIEW_CONVERT_EXPR" 1 "ccp1" } } */
+-/* { dg-final { cleanup-tree-dump "ccp1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/forwprop-7.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/forwprop-7.c
+@@ -13,4 +13,3 @@ int foo(void)
+ 
+ /* { dg-final { scan-tree-dump-times "VIEW_CONVERT_EXPR" 0 "forwprop1"} } */
+ /* { dg-final { scan-tree-dump-times "={v}" 2 "forwprop1"} } */
+-/* { dg-final { cleanup-tree-dump "forwprop1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/forwprop-8.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/forwprop-8.c
+@@ -12,4 +12,3 @@ int foo(struct X *q)
+ 
+ /* We should have propragated &q->a into (*pointer).  */
+ /* { dg-final { scan-tree-dump "q_.\\\(D\\\)\\\]\\\[0\\\];" "forwprop1" } } */
+-/* { dg-final { cleanup-tree-dump "forwprop1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/forwprop-9.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/forwprop-9.c
+@@ -17,5 +17,3 @@ void f(void)
+ 
+ /* { dg-final { scan-tree-dump-times " = 1" 2 "optimized"} } */
+ /* { dg-final { scan-tree-dump-not " = a;" "fre1"} } */
+-/* { dg-final { cleanup-tree-dump "fre1" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/fre-vce-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/fre-vce-1.c
+@@ -34,4 +34,3 @@ void a2 (struct s1 sv, int i)
+ 
+ /* { dg-final { scan-tree-dump-times "sv_\[0-9\]\\\(D\\\)->i" 2 "fre1" } } */
+ /* { dg-final { scan-tree-dump-times "sv.i" 2 "fre1" } } */
+-/* { dg-final { cleanup-tree-dump "fre1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/gen-vect-11.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/gen-vect-11.c
+@@ -31,4 +31,3 @@ int main ()
+ 
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { ! avr-*-* } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/gen-vect-11a.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/gen-vect-11a.c
+@@ -39,4 +39,3 @@ int main ()
+ 
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { ! avr-*-* } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/gen-vect-11b.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/gen-vect-11b.c
+@@ -32,4 +32,3 @@ int main ()
+ 
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/gen-vect-11c.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/gen-vect-11c.c
+@@ -40,4 +40,3 @@ int main ()
+ 
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/gen-vect-2.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/gen-vect-2.c
+@@ -38,4 +38,3 @@ int main ()
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { ! avr-*-* } } } } */
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" { target { ! avr-*-* } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/gen-vect-25.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/gen-vect-25.c
+@@ -56,4 +56,3 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect" { target { ! avr-*-* } } } } */
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" { target { ! avr-*-* } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/gen-vect-26.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/gen-vect-26.c
+@@ -32,4 +32,3 @@ int main ()
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { ! avr-*-* } } } } */
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" { target { ! avr-*-* } } } } */
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { target { ! avr-*-* } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/gen-vect-28.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/gen-vect-28.c
+@@ -40,4 +40,3 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { ! avr-*-* } } } } */
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" { target { ! avr-*-* } } } } */
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { target { ! avr-*-* } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/gen-vect-32.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/gen-vect-32.c
+@@ -31,4 +31,3 @@ int main ()
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { ! avr-*-* } } } } */
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" { target { ! avr-*-* } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ifc-20040816-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ifc-20040816-1.c
+@@ -33,4 +33,3 @@ int main1 ()
+ 
+ 
+ /* { dg-final { scan-tree-dump-times "Applying if-conversion" 1 "ifcvt" } } */
+-/* { dg-final { cleanup-tree-dump "ifcvt" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ifc-20040816-2.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ifc-20040816-2.c
+@@ -37,4 +37,3 @@ void foo(const int * __restrict__ zr_in,
+ 
+ 
+ /* { dg-final { scan-tree-dump-times "Applying if-conversion" 1 "ifcvt" } } */
+-/* { dg-final { cleanup-tree-dump "ifcvt" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ifc-4.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ifc-4.c
+@@ -51,4 +51,3 @@ create_iso_definition (cpp_reader *pfile, cpp_macro *macro)
+ 
+ /* This cannot be if-converted because the stores are to aggregate types.  */
+ /* { dg-final { scan-tree-dump-times "Applying if-conversion" 0 "ifcvt" } } */
+-/* { dg-final { cleanup-tree-dump "ifcvt" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ifc-5.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ifc-5.c
+@@ -21,4 +21,3 @@ dct_unquantize_h263_inter_c (short *block, int n, int qscale, int nCoeffs)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "Applying if-conversion" 1 "ifcvt" } } */
+-/* { dg-final { cleanup-tree-dump "ifcvt" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ifc-cd.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ifc-cd.c
+@@ -26,4 +26,3 @@ void foo (int *x1, int *x2, int *x3, int *x4, int *y)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "Use predicate of bb" 8 "ifcvt" } } */
+-/* { dg-final { cleanup-tree-dump "ifcvt" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/inline-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/inline-1.c
+@@ -21,5 +21,4 @@ interval foo (interval a, interval b, interval c)
+ 
+ 
+ /* { dg-final { scan-tree-dump-times "\\(struct interval\\)" 0 "optimized"} } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/inline-10.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/inline-10.c
+@@ -36,4 +36,3 @@ main()
+ /* { dg-final { scan-tree-dump-times "do_something3" 1 "optimized" } } */
+ /* { dg-final { scan-tree-dump-times "do_something \\(5\\)" 1 "optimized" } } */
+ /* { dg-final { scan-tree-dump-not "do_something \\(70\\)" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/inline-11.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/inline-11.c
+@@ -11,4 +11,3 @@ void foo()
+   bar();
+ }
+ /* { dg-final { scan-tree-dump-times "function body can be overwritten at link time" 1 "einline" } } */
+-/* { dg-final { cleanup-tree-dump "einline" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/inline-3.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/inline-3.c
+@@ -29,4 +29,3 @@ inline_me_too (void)
+ }
+ /* { dg-final { scan-tree-dump-times "Inlining inline_me " 1 "einline"} } */
+ /* { dg-final { scan-tree-dump-times "Inlining inline_me_too " 1 "einline"} } */
+-/* { dg-final { cleanup-tree-dump "einline" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/inline-4.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/inline-4.c
+@@ -24,4 +24,3 @@ int main()
+ }
+ 
+ /* { dg-final { scan-tree-dump "Inlining get_data_for into main" "einline" } } */
+-/* { dg-final { cleanup-tree-dump "einline" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/inline-5.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/inline-5.c
+@@ -36,4 +36,3 @@ test(struct a *a)
+   do_something (a);
+ }
+ /* { dg-final { scan-tree-dump-times "do_inc" 12 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/inline-6.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/inline-6.c
+@@ -40,4 +40,3 @@ test(struct a *a)
+   do_something (a);
+ }
+ /* { dg-final { scan-tree-dump-times "do_inc" 12 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/inline-7.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/inline-7.c
+@@ -6,4 +6,3 @@ inline void bar0() { foo0(); }
+ void foobar() { bar0(); bar0(); bar0(); }
+ 
+ /* { dg-final { scan-tree-dump "Iterations: 1" "einline" } } */
+-/* { dg-final { cleanup-tree-dump "einline" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/inline-8.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/inline-8.c
+@@ -28,4 +28,3 @@ int bar5() { return 0; }
+ int foobar5() { return bar5(); }
+ 
+ /* { dg-final { scan-tree-dump-times "Inlining" 5 "einline" } } */
+-/* { dg-final { cleanup-tree-dump "einline" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/inline-9.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/inline-9.c
+@@ -22,4 +22,3 @@ main()
+ }
+ /* { dg-final { scan-tree-dump-times "q \\(15\\)" 1 "optimized" } } */
+ /* { dg-final { scan-tree-dump-times "t \\(20\\)" 1 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/inline_asm-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/inline_asm-1.c
+@@ -13,8 +13,6 @@ char f(char *a)
+ 
+ /* test_function should be called twice as the inline-asm changes memory. */
+ /* { dg-final { scan-tree-dump-times "test_function" 2 "optimized"} } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+ 
+ /* There should a VDEF for the inline-asm.  */
+ /* { dg-final { scan-tree-dump-times "VDEF" 1 "alias"} } */
+-/* { dg-final { cleanup-tree-dump "alias" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/inline_asm-2.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/inline_asm-2.c
+@@ -15,4 +15,3 @@ void f(char *a)
+ 
+ /* There should a VDEF for the inline-asm and one for the link_error.  */
+ /* { dg-final { scan-tree-dump-times "VDEF" 2 "alias"} } */
+-/* { dg-final { cleanup-tree-dump "alias" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/integer-addr.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/integer-addr.c
+@@ -26,4 +26,3 @@ int foobar(void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "= func" 2 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/interposition.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/interposition.c
+@@ -10,4 +10,3 @@ int q(void)
+   return t();
+ }
+ /* { dg-final { scan-tree-dump-times "return 1" 2 "optimized"} } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ipa-cp-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ipa-cp-1.c
+@@ -18,4 +18,3 @@ blah ()
+ }
+ /* One appearance for dump, one self recursive call and one call from main.  */
+ /* { dg-final { scan-tree-dump-times "very_long_function.constprop \\(\\)" 3 "optimized"} } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ipa-reference-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ipa-reference-1.c
+@@ -12,4 +12,3 @@ int f(void)
+    inlined the 0 as IPA reference should have marked the variable as a const
+    as it is not set in the IR.  */
+ /* { dg-final { scan-tree-dump-times "conststaticvariable" 0 "optimized"} } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ipa-split-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ipa-split-1.c
+@@ -30,4 +30,3 @@ test()
+   test2(20);
+ }
+ /* { dg-final { scan-tree-dump-times "Splitting function" 1 "fnsplit"} } */
+-/* { dg-final { cleanup-tree-dump "fnsplit" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ipa-split-2.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ipa-split-2.c
+@@ -41,4 +41,3 @@ main()
+   split_me (5);
+ }
+ /* { dg-final { scan-tree-dump-times "Splitting function" 1 "fnsplit"} } */
+-/* { dg-final { cleanup-tree-dump "fnsplit" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ipa-split-4.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ipa-split-4.c
+@@ -26,4 +26,3 @@ test(void)
+   return split_me (0)+split_me(1)+split_me(2);
+ }
+ /* { dg-final { scan-tree-dump-times "Splitting function" 1 "fnsplit"} } */
+-/* { dg-final { cleanup-tree-dump "fnsplit" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ipa-split-5.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ipa-split-5.c
+@@ -33,6 +33,4 @@ test()
+   split_me (val);
+ }
+ /* { dg-final { scan-tree-dump-times "Splitting function" 1 "fnsplit"} } */
+-/* { dg-final { cleanup-tree-dump "fnsplit" } } */
+ /* { dg-final { scan-tree-dump "part" "optimized"} } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ipa-split-6.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ipa-split-6.c
+@@ -5,6 +5,4 @@
+ #include "ipa-split-5.c"
+ 
+ /* { dg-final { scan-tree-dump-times "Splitting function" 1 "fnsplit"} } */
+-/* { dg-final { cleanup-tree-dump "fnsplit" } } */
+ /* { dg-final { scan-tree-dump "part" "optimized"} } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/isolate-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/isolate-1.c
+@@ -53,7 +53,6 @@ d_type (struct d_info *di)
+ /* { dg-final { scan-tree-dump-times "->type = 42" 1 "isolate-paths"} } */
+ /* { dg-final { scan-tree-dump-times "->type ={v} 0" 1 "isolate-paths"} } */
+ /* { dg-final { scan-tree-dump-times "->zzz" 1 "isolate-paths"} } */
+-/* { dg-final { cleanup-tree-dump "isolate-paths" } } */
+ 
+ 
+ 
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/isolate-2.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/isolate-2.c
+@@ -38,7 +38,5 @@ bar (void)
+    return statement so that it returns &z directly.
+ /* { dg-final { scan-tree-dump-times "__builtin_trap" 2 "isolate-paths"} } */
+ /* { dg-final { scan-tree-dump-times "return &z;" 1 "phicprop1"} } */
+-/* { dg-final { cleanup-tree-dump "isolate-paths" } } */
+-/* { dg-final { cleanup-tree-dump "phicprop1" } } */
+ 
+ 
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/isolate-3.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/isolate-3.c
+@@ -63,6 +63,5 @@ init_alias_analysis (void)
+    started with a PHI, but by the time the path isolation code runs
+    its explicit in the IL.  */
+ /* { dg-final { scan-tree-dump-times "__builtin_trap" 1 "isolate-paths"} } */
+-/* { dg-final { cleanup-tree-dump "isolate-paths" } } */
+ 
+ 
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/isolate-4.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/isolate-4.c
+@@ -27,7 +27,5 @@ bar (void)
+    return statement so that it returns &z directly.
+ /* { dg-final { scan-tree-dump-times "__builtin_trap" 2 "isolate-paths"} } */
+ /* { dg-final { scan-tree-dump-times "foo .&z.;" 1 "phicprop1"} } */
+-/* { dg-final { cleanup-tree-dump "isolate-paths" } } */
+-/* { dg-final { cleanup-tree-dump "phicprop1" } } */
+ 
+ 
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/isolate-5.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/isolate-5.c
+@@ -52,5 +52,3 @@ d_type (struct d_info *di)
+ /* { dg-final { scan-tree-dump-times "->type" 1 "optimized"} } */
+ /* { dg-final { scan-tree-dump-times "\\.type" 1 "optimized"} } */
+ /* { dg-final { scan-tree-dump-times "->zzz" 1 "isolate-paths"} } */
+-/* { dg-final { cleanup-tree-dump "isolate-paths" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ivopt_1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ivopt_1.c
+@@ -15,4 +15,3 @@ void foo (int i_width, TYPE dst, TYPE src1, TYPE src2)
+ 
+ 
+ /* { dg-final { scan-tree-dump-times "ivtmp.\[0-9_\]* = PHI <" 1 "ivopts"} } */
+-/* { dg-final { cleanup-tree-dump "ivopts" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ivopt_2.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ivopt_2.c
+@@ -14,4 +14,3 @@ void foo (int i_width, TYPE dst, TYPE src1, TYPE src2)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "ivtmp.\[0-9_\]* = PHI <" 1 "ivopts"} } */
+-/* { dg-final { cleanup-tree-dump "ivopts" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ivopt_3.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ivopt_3.c
+@@ -17,4 +17,3 @@ void foo (int i_width, char* dst, char* src1, char* src2)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "ivtmp.\[0-9_\]* = PHI <" 1 "ivopts"} } */
+-/* { dg-final { cleanup-tree-dump "ivopts" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ivopt_4.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ivopt_4.c
+@@ -16,4 +16,3 @@ void foo (int i_width, TYPE dst, TYPE src1, TYPE src2)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "ivtmp.\[0-9_\]* = PHI <" 1 "ivopts"} } */
+-/* { dg-final { cleanup-tree-dump "ivopts" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ivopt_infer_1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ivopt_infer_1.c
+@@ -22,4 +22,3 @@ void foo (int i_width, TYPE dst, TYPE src1, TYPE src2)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "Replacing" 1 "ivopts"} } */
+-/* { dg-final { cleanup-tree-dump "ivopts" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ivopt_infer_2.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ivopt_infer_2.c
+@@ -23,4 +23,3 @@ void foo (unsigned int i_width, TYPE dst)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "\[^:\]*if \\(.*j_\[0-9\]+.*\\)" 1 "ivopts"} } */
+-/* { dg-final { cleanup-tree-dump "ivopts" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ivopt_mult_1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ivopt_mult_1.c
+@@ -21,4 +21,3 @@ long foo(long* p, long* p2, int N1, int N2)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "Replacing" 1 "ivopts"} } */
+-/* { dg-final { cleanup-tree-dump "ivopts" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ivopt_mult_2.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ivopt_mult_2.c
+@@ -22,4 +22,3 @@ long foo(long* p, long* p2, int N1, int N2)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "Replacing" 2 "ivopts"} } */
+-/* { dg-final { cleanup-tree-dump "ivopts" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ivopt_mult_3.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ivopt_mult_3.c
+@@ -19,4 +19,3 @@ long foo(long* p, long* p2, int N1, int N2)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "Replacing exit test: if \\(.*p2.*\\)" 1 "ivopts"} } */
+-/* { dg-final { cleanup-tree-dump "ivopts" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ivopt_mult_4.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ivopt_mult_4.c
+@@ -22,4 +22,3 @@ long foo(long* p, long* p2, int N1, int N2)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "Replacing" 0 "ivopts"} } */
+-/* { dg-final { cleanup-tree-dump "ivopts" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ivopts-2.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ivopts-2.c
+@@ -23,4 +23,3 @@ f ()
+ 
+ /* We should only have two IVs.  */
+ /* { dg-final { scan-tree-dump-not "\\n  candidates \\d+, \\d+,\[^\\n\]*\\n\[^\\n\]*\\nFinal cost" "ivopts" } }  */
+-/* { dg-final { cleanup-tree-dump "ivopts" } }  */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ivopts-3.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ivopts-3.c
+@@ -11,4 +11,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "!= 0" 5 "ivopts" } }  */
+-/* { dg-final { cleanup-tree-dump "ivopts" } }  */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ivopts-lower_base.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ivopts-lower_base.c
+@@ -58,4 +58,3 @@ sort_pointers (size_t n, void **pointers, void **work)
+ }
+ 
+ /* { dg-final { scan-tree-dump-not "base \[^\\n\]*&MEM\\\[" "ivopts" } }  */
+-/* { dg-final { cleanup-tree-dump "ivopts" } }  */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ivopts-lt-2.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ivopts-lt-2.c
+@@ -17,4 +17,3 @@ f1 (int *p, unsigned int i)
+ /* { dg-final { scan-tree-dump-times "PHI" 1 "ivopts" } } */
+ /* { dg-final { scan-tree-dump-times "PHI <p_" 1 "ivopts"} } */
+ /* { dg-final { scan-tree-dump-times "p_\[0-9\]* <" 1 "ivopts" } } */
+-/* { dg-final { cleanup-tree-dump "ivopts" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ivopts-lt.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ivopts-lt.c
+@@ -20,4 +20,3 @@ f1 (char *p, uintptr_t i, uintptr_t n)
+ /* { dg-final { scan-tree-dump-times "PHI" 1 "ivopts" } } */
+ /* { dg-final { scan-tree-dump-times "PHI <p_" 1 "ivopts"} } */
+ /* { dg-final { scan-tree-dump-times "p_\[0-9\]* <" 1 "ivopts" } } */
+-/* { dg-final { cleanup-tree-dump "ivopts" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ldist-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ldist-1.c
+@@ -35,4 +35,3 @@ void foo (int * __restrict__ ia,
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "distributed: split to 2 loops" 0 "ldist" } } */
+-/* { dg-final { cleanup-tree-dump "ldist" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ldist-10.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ldist-10.c
+@@ -21,4 +21,3 @@ int loop1 (int k)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "distributed: split to 2 loops" 0 "ldist" } } */
+-/* { dg-final { cleanup-tree-dump "ldist" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ldist-11.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ldist-11.c
+@@ -30,4 +30,3 @@ void foo (int * __restrict__ ia,
+ 
+ /* { dg-final { scan-tree-dump-times "distributed: split to 1 loops and 1 library calls" 1 "ldist" } } */
+ /* { dg-final { scan-tree-dump-times "generated memset zero" 1 "ldist" } } */
+-/* { dg-final { cleanup-tree-dump "ldist" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ldist-12.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ldist-12.c
+@@ -19,4 +19,3 @@ int foo (int * __restrict__ ia,
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "distributed: split to 2 loops" 1 "ldist" } } */
+-/* { dg-final { cleanup-tree-dump "ldist" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ldist-13.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ldist-13.c
+@@ -19,4 +19,3 @@ float foo (int n)
+ /* We should apply loop distribution.  */
+ 
+ /* { dg-final { scan-tree-dump "Loop 1 distributed: split to 2 loops" "ldist" } } */
+-/* { dg-final { cleanup-tree-dump "ldist" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ldist-14.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ldist-14.c
+@@ -24,4 +24,3 @@ float foo (int n)
+ /* We should apply loop distribution.  */
+ 
+ /* { dg-final { scan-tree-dump "Loop 1 distributed: split to 2 loops" "ldist" } } */
+-/* { dg-final { cleanup-tree-dump "ldist" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ldist-15.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ldist-15.c
+@@ -20,4 +20,3 @@ void foo (int n)
+ 
+ /* { dg-final { scan-tree-dump-not "distributed: split to" "ldist" } } */
+ /* { dg-final { scan-tree-dump-not "__builtin_memset" "ldist" } } */
+-/* { dg-final { cleanup-tree-dump "ldist" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ldist-16.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ldist-16.c
+@@ -18,4 +18,3 @@ void foo (int n)
+ 
+ /* { dg-final { scan-tree-dump "Loop 1 is the same" "ldist" } } */
+ /* { dg-final { scan-tree-dump-times "generated memset zero" 0 "ldist" } } */
+-/* { dg-final { cleanup-tree-dump "ldist" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ldist-17.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ldist-17.c
+@@ -47,4 +47,3 @@ mad_synth_mute (struct mad_synth *synth)
+ 
+ /* { dg-final { scan-tree-dump "distributed: split to 0 loops and 4 library calls" "ldist" } } */
+ /* { dg-final { scan-tree-dump-times "generated memset zero" 4 "ldist" } } */
+-/* { dg-final { cleanup-tree-dump "ldist" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ldist-18.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ldist-18.c
+@@ -9,4 +9,3 @@ void foo (int *p, int n)
+ }
+ 
+ /* { dg-final { scan-tree-dump "generated memset zero" "ldist" } } */
+-/* { dg-final { cleanup-tree-dump "ldist" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ldist-19.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ldist-19.c
+@@ -68,4 +68,3 @@ int main()
+ 
+ /* { dg-final { scan-tree-dump-times "generated memset zero" 1 "ldist" } } */
+ /* { dg-final { scan-tree-dump-times "generated memset" 5 "ldist" } } */
+-/* { dg-final { cleanup-tree-dump "ldist" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ldist-1a.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ldist-1a.c
+@@ -19,4 +19,3 @@ int foo (int * __restrict__ ia,
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "distributed: split to 2 loops" 0 "ldist" } } */
+-/* { dg-final { cleanup-tree-dump "ldist" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ldist-2.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ldist-2.c
+@@ -28,4 +28,3 @@ void foo (int * __restrict__ a,
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "distributed: split to 2 loops" 0 "ldist" } } */
+-/* { dg-final { cleanup-tree-dump "ldist" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ldist-20.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ldist-20.c
+@@ -34,4 +34,3 @@ void my_memmove (unsigned int n)
+ 
+ /* { dg-final { scan-tree-dump-times "generated memcpy" 2 "ldist" } } */
+ /* { dg-final { scan-tree-dump-times "generated memmove" 1 "ldist" } } */
+-/* { dg-final { cleanup-tree-dump "ldist" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ldist-21.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ldist-21.c
+@@ -9,4 +9,3 @@ void bar(char *p, int n)
+ }
+ 
+ /* { dg-final { scan-tree-dump "generated memmove" "ldist" } } */
+-/* { dg-final { cleanup-tree-dump "ldist" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ldist-22.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ldist-22.c
+@@ -29,4 +29,3 @@ int main()
+ }
+ 
+ /* { dg-final { scan-tree-dump "generated memset zero" "ldist" } } */
+-/* { dg-final { cleanup-tree-dump "ldist" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ldist-23.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ldist-23.c
+@@ -31,4 +31,3 @@ int main()
+ 
+ /* { dg-final { scan-tree-dump "split to 1 loops and 1 library call" "ldist" } } */
+ /* { dg-final { scan-tree-dump "generated memcpy" "ldist" } } */
+-/* { dg-final { cleanup-tree-dump "ldist" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ldist-3.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ldist-3.c
+@@ -31,4 +31,3 @@ int loop1 (int k)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "distributed: split to 3 loops" 0 "ldist" } } */
+-/* { dg-final { cleanup-tree-dump "ldist" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ldist-4.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ldist-4.c
+@@ -24,4 +24,3 @@ int loop1 (int k)
+    similar memory accesses.  */
+ /* { dg-final { scan-tree-dump "similar memory accesses" "ldist" } } */
+ /* { dg-final { scan-tree-dump-times "distributed: split to 2 loops" 0 "ldist" } } */
+-/* { dg-final { cleanup-tree-dump "ldist" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ldist-5.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ldist-5.c
+@@ -30,4 +30,3 @@ int loop1 (int k)
+    problem: the dependence test fails with a "don't know" relation.  */
+ 
+ /* { dg-final { scan-tree-dump-times "distributed: split to 2 loops" 1 "ldist" { xfail *-*-* } } } */
+-/* { dg-final { cleanup-tree-dump "ldist" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ldist-6.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ldist-6.c
+@@ -35,4 +35,3 @@ int loop1 (int k)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "distributed: split to 2 loops" 0 "ldist" } } */
+-/* { dg-final { cleanup-tree-dump "ldist" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ldist-7.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ldist-7.c
+@@ -29,4 +29,3 @@ int loop1 (int k)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "distributed" 0 "ldist" } } */
+-/* { dg-final { cleanup-tree-dump "ldist" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ldist-8.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ldist-8.c
+@@ -31,4 +31,3 @@ int loop1 (int k)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "distributed: split to 2 loops" 0 "ldist" } } */
+-/* { dg-final { cleanup-tree-dump "ldist" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ldist-9.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ldist-9.c
+@@ -23,4 +23,3 @@ int loop1 (int k)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "distributed: split to 2 loops" 0 "ldist" } } */
+-/* { dg-final { cleanup-tree-dump "ldist" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ldist-pr45948.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ldist-pr45948.c
+@@ -20,4 +20,3 @@ foo (int i, int n)
+ 
+ /* { dg-final { scan-tree-dump "distributed: split to 0 loops and 2 library calls" "ldist" } } */
+ /* { dg-final { scan-tree-dump-times "generated memset zero" 2 "ldist" } } */
+-/* { dg-final { cleanup-tree-dump "ldist" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/leaf.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/leaf.c
+@@ -17,4 +17,3 @@ test (void)
+ }
+ /* { dg-final { scan-tree-dump-times "return 9" 1 "optimized"} } */
+  
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/loadpre1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/loadpre1.c
+@@ -15,4 +15,3 @@ int foo(int *a, int argc)
+   return d + e;
+ }
+ /* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre" } } */
+-/* { dg-final { cleanup-tree-dump "pre" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/loadpre10.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/loadpre10.c
+@@ -45,5 +45,4 @@ L23:
+   return expr; 
+ } 
+ /* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre"} } */
+-/* { dg-final { cleanup-tree-dump "pre" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/loadpre11.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/loadpre11.c
+@@ -10,5 +10,4 @@ int f(int tt)
+     return g(*t1);
+ } 
+ /* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre"} } */
+-/* { dg-final { cleanup-tree-dump "pre" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/loadpre12.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/loadpre12.c
+@@ -12,4 +12,3 @@ int f(int tt)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre" } } */
+-/* { dg-final { cleanup-tree-dump "pre" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/loadpre13.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/loadpre13.c
+@@ -10,4 +10,3 @@ int f(int tt)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre"} } */
+-/* { dg-final { cleanup-tree-dump "pre" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/loadpre14.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/loadpre14.c
+@@ -16,4 +16,3 @@ int foo(type *a, int argc)
+   return d + e;
+ }
+ /* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre"} } */
+-/* { dg-final { cleanup-tree-dump "pre" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/loadpre15.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/loadpre15.c
+@@ -16,4 +16,3 @@ int foo(type *a, int argc, int t)
+   return d + e;
+ }
+ /* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre"} } */
+-/* { dg-final { cleanup-tree-dump "pre" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/loadpre16.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/loadpre16.c
+@@ -13,4 +13,3 @@ int foo(type *a, int argc)
+   return d + e;
+ }
+ /* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre"} } */
+-/* { dg-final { cleanup-tree-dump "pre" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/loadpre17.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/loadpre17.c
+@@ -13,4 +13,3 @@ int foo(type *a, int argc)
+   return d + e;
+ }
+ /* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre"} } */
+-/* { dg-final { cleanup-tree-dump "pre" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/loadpre18.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/loadpre18.c
+@@ -13,4 +13,3 @@ int main(type *a, int argc)
+   return d + e;
+ }
+ /* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre" { xfail *-*-* } } } */
+-/* { dg-final { cleanup-tree-dump "pre" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/loadpre19.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/loadpre19.c
+@@ -13,4 +13,3 @@ int foo(type *a, int argc)
+   return e;
+ }
+ /* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre"  } } */
+-/* { dg-final { cleanup-tree-dump "pre" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/loadpre2.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/loadpre2.c
+@@ -15,4 +15,3 @@ int main(int *a, int argc)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre"} } */
+-/* { dg-final { cleanup-tree-dump "pre" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/loadpre20.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/loadpre20.c
+@@ -13,4 +13,3 @@ int foo(type *a, int argc)
+   return e;
+ }
+ /* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre"  } } */
+-/* { dg-final { cleanup-tree-dump "pre" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/loadpre21.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/loadpre21.c
+@@ -16,4 +16,3 @@ int main(type *a, int argc)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre"} } */
+-/* { dg-final { cleanup-tree-dump "pre" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/loadpre22.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/loadpre22.c
+@@ -16,4 +16,3 @@ int main(type *a, int argc)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre"} } */
+-/* { dg-final { cleanup-tree-dump "pre" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/loadpre23.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/loadpre23.c
+@@ -22,4 +22,3 @@ int foo(int argc)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre"  } } */
+-/* { dg-final { cleanup-tree-dump "pre" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/loadpre24.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/loadpre24.c
+@@ -21,4 +21,3 @@ int foo(int argc)
+ /* We will move the load of a out of the loop.  */
+ 
+ /* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre" } } */
+-/* { dg-final { cleanup-tree-dump "pre" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/loadpre25.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/loadpre25.c
+@@ -17,4 +17,3 @@ int foo(struct X *a, int argc)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre"  } } */
+-/* { dg-final { cleanup-tree-dump "pre" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/loadpre3.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/loadpre3.c
+@@ -21,4 +21,3 @@ int foo(int **a,int argc)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "Eliminated: 2" 1 "pre"} } */
+-/* { dg-final { cleanup-tree-dump "pre" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/loadpre4.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/loadpre4.c
+@@ -16,4 +16,3 @@ int main(int *a, int argc)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre"  } } */
+-/* { dg-final { cleanup-tree-dump "pre" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/loadpre5.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/loadpre5.c
+@@ -21,4 +21,3 @@ int foo(int argc)
+   return q + a();
+ }
+ /* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre"} } */
+-/* { dg-final { cleanup-tree-dump "pre" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/loadpre6.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/loadpre6.c
+@@ -76,5 +76,3 @@ main (void)
+ /* { dg-final { scan-tree-dump-not "= unexpanded_var_list;" "fre1" } } */
+ /* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre" } } */
+ /* { dg-final { scan-tree-dump-times "Insertions: 2" 1 "pre" } } */
+-/* { dg-final { cleanup-tree-dump "fre1" } } */
+-/* { dg-final { cleanup-tree-dump "pre" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/loadpre7.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/loadpre7.c
+@@ -17,4 +17,3 @@ enormlz (x)
+     }
+ }
+ /* { dg-final { scan-tree-dump-not "Eliminated:" "pre"} } */
+-/* { dg-final { cleanup-tree-dump "pre" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/loadpre8.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/loadpre8.c
+@@ -94,4 +94,3 @@ rewrite_add_phi_arguments (basic_block bb)
+     }
+ }
+ /* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre" } } */
+-/* { dg-final { cleanup-tree-dump "pre" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/local-pure-const.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/local-pure-const.c
+@@ -14,4 +14,3 @@ t(int a, int b, int c)
+ }
+ /* { dg-final { scan-tree-dump-times "local memory is OK" 1 "local-pure-const1"} } */
+ /* { dg-final { scan-tree-dump-times "found to be const" 1 "local-pure-const1"} } */
+-/* { dg-final { cleanup-tree-dump "local-pure-const1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/loop-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/loop-1.c
+@@ -34,11 +34,8 @@ int xxx(void)
+ /* We should be able to find out that the loop iterates four times and unroll it completely.  */
+ 
+ /* { dg-final { scan-tree-dump-times "Added canonical iv to loop 1, 4 iterations" 1 "ivcanon"} } */
+-/* { dg-final { cleanup-tree-dump "ivcanon" } } */
+ /* { dg-final { scan-tree-dump-times "loop with 5 iterations completely unrolled" 1 "cunroll"} } */
+-/* { dg-final { cleanup-tree-dump "cunroll" } } */
+ /* { dg-final { scan-tree-dump-times "foo" 5 "optimized"} } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+ 
+ /* Because hppa, ia64 and Windows targets include an external declaration
+    for foo as well as the calls we need to look for something more specific
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/loop-10.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/loop-10.c
+@@ -30,4 +30,3 @@ void foo (void)
+ /* { dg-final { scan-tree-dump-times "if " 3 "optimized" } } */
+ /* { dg-final { scan-tree-dump-times "bar " 2 "optimized" } } */
+ 
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/loop-11.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/loop-11.c
+@@ -24,5 +24,4 @@ void foo (void)
+ 
+ /* { dg-final { scan-tree-dump-times "if " 0 "optimized" } } */
+ 
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/loop-14.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/loop-14.c
+@@ -16,4 +16,3 @@ int bla(void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "\\+ 100" 1 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/loop-15.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/loop-15.c
+@@ -24,4 +24,3 @@ int bla(void)
+ 
+ /* The if from the loop header copying remains in the code.  */
+ /* { dg-final { scan-tree-dump-times "if " 1 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/loop-16.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/loop-16.c
+@@ -21,4 +21,3 @@ void foo(unsigned n)
+ /* { dg-final { scan-tree-dump-times "MEM" 1 "optimized" } } */
+ /* { dg-final { scan-tree-dump-times "\[^\\n\\r\]*= \\* " 0 "optimized" } } */
+ 
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/loop-17.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/loop-17.c
+@@ -16,4 +16,3 @@ int foo (int *p)
+ }
+ 
+ /* { dg-final { scan-tree-dump "# of iterations 1, bounded by 1" "sccp" } } */
+-/* { dg-final { cleanup-tree-dump "sccp" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/loop-18.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/loop-18.c
+@@ -21,4 +21,3 @@ void foo(unsigned *p, unsigned n)
+ /* { dg-final { scan-tree-dump-times "MEM" 1 "optimized" } } */
+ /* { dg-final { scan-tree-dump-times "\[^\\n\\r\]*= \\* " 0 "optimized" } } */
+ 
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/loop-19.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/loop-19.c
+@@ -25,4 +25,3 @@ void tuned_STREAM_Copy()
+ /* { dg-final { scan-tree-dump-times "MEM.(base: &|symbol: )a," 2 "optimized" } } */
+ /* { dg-final { scan-tree-dump-times "MEM.(base: &|symbol: )c," 2 "optimized" } } */
+ 
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/loop-2.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/loop-2.c
+@@ -41,4 +41,3 @@ void xxx(void)
+ /* { dg-final { scan-tree-dump-times "= 99" 0 "optimized" } } */
+ /* { dg-final { scan-tree-dump-times "< 100" 0 "optimized" } } */
+ 
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/loop-20.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/loop-20.c
+@@ -24,4 +24,3 @@ gfc_conv_array_transpose (gfc_se * se) {
+ /* Ivopts should not produce multiplication by a pointer constant.  */
+ 
+ /* { dg-final { scan-tree-dump-times "\\* \[0-9\]*B;" 0 "ivopts" } } */
+-/* { dg-final { cleanup-tree-dump "ivopts" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/loop-21.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/loop-21.c
+@@ -14,4 +14,3 @@ void foo(int f0, int f1, int e0, int e1)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "~" 0 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/loop-22.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/loop-22.c
+@@ -14,4 +14,3 @@ void test (int n)
+    correct, this transformation is obviously harmful.  */
+ 
+ /* { dg-final { scan-tree-dump-times "/" 0 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/loop-23.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/loop-23.c
+@@ -26,4 +26,3 @@ int foo(void)
+ 
+ /* { dg-final { scan-tree-dump-times "loop with 4 iterations completely unrolled" 1 "cunroll" } } */
+ 
+-/* { dg-final { cleanup-tree-dump "cunroll" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/loop-24.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/loop-24.c
+@@ -14,4 +14,3 @@ void foo4(int*a, int*b)
+ { for(;a!=b;a++); }
+ 
+ /* { dg-final { scan-tree-dump-not "if" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/loop-25.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/loop-25.c
+@@ -126,4 +126,3 @@ void test5 (void)
+ /* { dg-final { scan-tree-dump-times "3 loops found" 2 "profile_estimate" { xfail *-*-* } } } */
+ /* { dg-final { scan-tree-dump-times "2 loops found" 1 "profile_estimate" { xfail *-*-* } } } */
+ 
+-/* { dg-final { cleanup-tree-dump "profile_estimate" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/loop-26.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/loop-26.c
+@@ -26,4 +26,3 @@ int foo0(int i0, int i1)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "if" 2 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/loop-28.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/loop-28.c
+@@ -19,5 +19,3 @@ void foo(int n)
+ /* There should be no i_a = i_b assignments.  */
+ /* { dg-final { scan-tree-dump-times "i_.*= i_\[0-9\]*;" 0 "aprefetch" } } */
+ 
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "aprefetch" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/loop-29.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/loop-29.c
+@@ -18,4 +18,3 @@ foo (struct s *p)
+ }
+ 
+ /* { dg-final { scan-tree-dump-not "if" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/loop-3.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/loop-3.c
+@@ -27,4 +27,3 @@ void xxx(void)
+ 
+ /* { dg-final { scan-tree-dump-times "int iter" 1 "optimized" } } */
+ 
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/loop-31.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/loop-31.c
+@@ -18,4 +18,3 @@ short foo (int len, int v)
+ /* { dg-final { scan-tree-dump-times " \\+ 2;" 1 "optimized" { target arm*-*-* } } } */
+ /* { dg-final { scan-tree-dump-times " \\+ 2;" 1 "optimized" { target { ia64-*-* && ilp32 } } } } */
+ /* { dg-final { scan-tree-dump-times " \\+ 2;" 2 "optimized" { target { ia64-*-* && lp64 } } } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/loop-32.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/loop-32.c
+@@ -43,4 +43,3 @@ void test3(struct a *A)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "Executing store motion of" 3 "lim1" } } */
+-/* { dg-final { cleanup-tree-dump "lim1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/loop-33.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/loop-33.c
+@@ -37,4 +37,3 @@ void test5(struct a *A, unsigned b)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "Executing store motion of" 4 "lim1" { xfail { lp64 || llp64 } } } } */
+-/* { dg-final { cleanup-tree-dump "lim1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/loop-34.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/loop-34.c
+@@ -18,4 +18,3 @@ void f (int n)
+ 
+ 
+ /* { dg-final { scan-tree-dump-times "Executing store motion of r" 6 "lim1" } } */
+-/* { dg-final { cleanup-tree-dump "lim1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/loop-35.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/loop-35.c
+@@ -69,4 +69,3 @@ void test4(struct a *A, unsigned LONG b)
+ /* long index not hoisted for avr target PR 36561 */
+ /* { dg-final { scan-tree-dump-times "Executing store motion of" 8 "lim1" { xfail { "avr-*-*" } } } } */
+ /* { dg-final { scan-tree-dump-times "Executing store motion of" 6 "lim1" { target { "avr-*-*" } } } } */
+-/* { dg-final { cleanup-tree-dump "lim1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/loop-36.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/loop-36.c
+@@ -19,4 +19,3 @@ float foobar () {
+ /* The temporary structure should have been promoted to registers
+    by FRE after the loops have been unrolled by the early unrolling pass.  */
+ /* { dg-final { scan-tree-dump-not "c\.array" "dce2" } } */
+-/* { dg-final { cleanup-tree-dump "dce2" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/loop-37.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/loop-37.c
+@@ -24,4 +24,3 @@ int f1 (int a [])
+ int main() { }
+ 
+ /* { dg-final { scan-tree-dump-not "my_array" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/loop-38.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/loop-38.c
+@@ -16,4 +16,3 @@ t(int n)
+   return sum;
+ }
+ /* { dg-final { scan-tree-dump "Loop 1 iterates at most 11 times" "cunrolli" } } */
+-/* { dg-final { cleanup-tree-dump "cunrolli" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/loop-39.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/loop-39.c
+@@ -23,4 +23,3 @@ foo (unsigned int n)
+ }
+ 
+ /* { dg-final { scan-tree-dump "# of iterations \[^\n\r]*, bounded by 8" "sccp" } } */
+-/* { dg-final { cleanup-tree-dump "sccp" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/loop-4.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/loop-4.c
+@@ -43,4 +43,3 @@ void xxx(void)
+ 
+ /* { dg-final { scan-tree-dump-times "iter" 0 "optimized" } } */
+ 
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/loop-40.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/loop-40.c
+@@ -11,4 +11,3 @@ int mymax2(int *it, int *end)
+ }
+ 
+ /* { dg-final { scan-tree-dump "Duplicating header" "ch" } } */
+-/* { dg-final { cleanup-tree-dump "ch" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/loop-5.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/loop-5.c
+@@ -27,4 +27,3 @@ void xxx(void)
+ 
+ /* { dg-final { scan-tree-dump-times " \\+ 2" 1 "optimized" } } */
+ 
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/loop-6.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/loop-6.c
+@@ -20,9 +20,7 @@ void xxx(void)
+ /* Loop should be unswitched.  */
+ 
+ /* { dg-final { scan-tree-dump-times "Unswitching loop" 1 "unswitch" } } */
+-/* { dg-final { cleanup-tree-dump "unswitch" } } */
+ 
+ /* In effect there should be exactly three conditional jumps in the final program.  */
+ 
+ /* { dg-final { scan-tree-dump-times "else" 3 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/loop-7.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/loop-7.c
+@@ -32,4 +32,3 @@ int xxx (void)
+    with k = 0 may be invalid.  */
+ 
+ /* { dg-final { scan-tree-dump-times "Moving statement" 2 "lim1" } } */
+-/* { dg-final { cleanup-tree-dump "lim1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/loop-8.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/loop-8.c
+@@ -22,4 +22,3 @@ void xxx (void)
+ /* { dg-final { scan-tree-dump-times "step \\* \[^0-9\]" 0 "optimized" } } */
+ /* { dg-final { scan-tree-dump-times "\[^0-9\] \\* step" 0 "optimized" } } */
+ 
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/loop-bound-1.c
+@@ -0,0 +1,22 @@
++/* { dg-do compile } */
++/* { dg-options "-O2 -fdump-tree-ivopts-details" } */
++
++int *a;
++
++int
++foo (unsigned char s, unsigned char l)
++{
++  unsigned char i;
++  int sum = 0;
++
++  for (i = s; i < l; i += 1)
++    {
++      sum += a[i];
++    }
++
++  return sum;
++}
++
++/* Check loop niter bound information.  */
++/* { dg-final { scan-tree-dump "bounded by 254" "ivopts" } } */
++/* { dg-final { scan-tree-dump-not "bounded by 255" "ivopts" } } */
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/loop-bound-3.c
+@@ -0,0 +1,22 @@
++/* { dg-do compile } */
++/* { dg-options "-O2 -fdump-tree-ivopts-details" } */
++
++int *a;
++
++int
++foo (unsigned char s, unsigned char l)
++{
++  unsigned char i;
++  int sum = 0;
++
++  for (i = s; i > l; i -= 1)
++    {
++      sum += a[i];
++    }
++
++  return sum;
++}
++
++/* Check loop niter bound information.  */
++/* { dg-final { scan-tree-dump "bounded by 254" "ivopts" } } */
++/* { dg-final { scan-tree-dump-not "bounded by 255" "ivopts" } } */
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/loop-bound-5.c
+@@ -0,0 +1,22 @@
++/* { dg-do compile } */
++/* { dg-options "-O2 -fdump-tree-ivopts-details" } */
++
++int *a;
++
++int
++foo (unsigned char s)
++{
++  unsigned char i;
++  int sum = 0;
++
++  for (i = s; i > 0; i -= 1)
++    {
++      sum += a[i];
++    }
++
++  return sum;
++}
++
++/* Check loop niter bound information.  */
++/* { dg-final { scan-tree-dump "bounded by 254" "ivopts" } } */
++/* { dg-final { scan-tree-dump-not "bounded by 255" "ivopts" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/negate.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/negate.c
+@@ -24,4 +24,3 @@ int g (int a, int b)
+ 
+ /* There should be an addition now.  */
+ /* { dg-final { scan-tree-dump-times "\\+" 1 "reassoc1"} } */
+-/* { dg-final { cleanup-tree-dump "reassoc1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/phi-opt-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/phi-opt-1.c
+@@ -16,4 +16,3 @@ temp:
+    optimize this before because PHI-OPT did not look at 
+    PHIs which have more than two arguments.  */
+ /* { dg-final { scan-tree-dump-times "if" 0 "optimized"} } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/phi-opt-10.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/phi-opt-10.c
+@@ -8,4 +8,3 @@ int spaceship1 (long a) { return a > 0 ? 1 : a < 0 ? -1 : 0; }
+ int spaceship2 (long a) { return a > 0 ? 1 : a == 0 ? 0 : -1; }
+ 
+ /* { dg-final { scan-tree-dump-times " = -\[^\r\n\]*_.;" 4 "optimized"} } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/phi-opt-11.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/phi-opt-11.c
+@@ -22,4 +22,3 @@ int h(int a, int b, int c, int d)
+  return a;
+ }
+ /* { dg-final { scan-tree-dump-times "if" 0 "optimized"} } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/phi-opt-12.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/phi-opt-12.c
+@@ -20,4 +20,3 @@ unsigned m(unsigned a, unsigned b) {
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "goto" 2 "phiopt1" } } */
+-/* { dg-final { cleanup-tree-dump "phiopt1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/phi-opt-13.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/phi-opt-13.c
+@@ -8,4 +8,3 @@ long f(long a, long b) {
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "goto " 2 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/phi-opt-2.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/phi-opt-2.c
+@@ -22,4 +22,3 @@ _Bool f1(_Bool a, _Bool b)
+    Test this only when known to be !LOGICAL_OP_NON_SHORT_CIRCUIT,
+    otherwise ifcombine may convert this into return a & b;.  */
+ /* { dg-final { scan-tree-dump-times "if" 1 "optimized" { target { i?86-*-* x86_64-*-* mips*-*-* s390*-*-* avr*-*-* } } } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/phi-opt-3.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/phi-opt-3.c
+@@ -14,4 +14,3 @@ int f(int a, int b)
+    optimize this before because PHI-OPT did not look at 
+    PHIs which have more than two arguments.  */
+ /* { dg-final { scan-tree-dump-times "if" 0 "optimized"} } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/phi-opt-4.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/phi-opt-4.c
+@@ -14,4 +14,3 @@ _Bool f1()
+    value of b (except that we don't fold ! (b != 0) into b
+    which means that we miss a sib calling opportunity).  */
+ /* { dg-final { scan-tree-dump-times "if " 1 "optimized"} } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/phi-opt-5.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/phi-opt-5.c
+@@ -56,4 +56,3 @@ float repl3 (float varz, float vara, float varb)
+ 
+ /* { dg-final { scan-tree-dump "if .*varz" "phiopt1"} } */
+ /* { dg-final { scan-tree-dump "vara.*MAX_EXPR" "phiopt1"} } */
+-/* { dg-final { cleanup-tree-dump "phiopt1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/phi-opt-6.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/phi-opt-6.c
+@@ -10,4 +10,3 @@ int *g(struct C *p)
+ }
+ 
+ /* { dg-final { scan-tree-dump-not "if" "phiopt1" } } */
+-/* { dg-final { cleanup-tree-dump "phiopt1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/phi-opt-7.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/phi-opt-7.c
+@@ -19,5 +19,4 @@ int f(int t, int c)
+    a conditional and the other should be there still.  */
+ /* { dg-final { scan-tree-dump-times "if" 1 "optimized" }  }*/
+ /* { dg-final { scan-tree-dump-times "\[^\r\n\]*_. = c_\[0-9\]*.D. != 0" 1 "optimized"  } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/phi-opt-8.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/phi-opt-8.c
+@@ -22,5 +22,3 @@ int f(int t, int c)
+ /* { dg-final { scan-tree-dump-not "if" "phiopt1" } } */
+ /* { dg-final { scan-tree-dump "g .t_\[0-9\]*.D.," "optimized" } } */
+ /* { dg-final { scan-tree-dump-not "PHI" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "phiopt1" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/phi-opt-9.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/phi-opt-9.c
+@@ -19,4 +19,3 @@ int f(int t, int c)
+ /* The value e should have been replaced with t and there should be only one PHI. */
+ /* { dg-final { scan-tree-dump "g .t_\[0-9\]*.D.," "optimized" } } */
+ /* { dg-final { scan-tree-dump-times "PHI" 1 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr13146.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr13146.c
+@@ -19,4 +19,3 @@ int foo (struct A *p, struct B *q)
+ }
+ 
+ /* { dg-final { scan-tree-dump "return 0;" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr14341.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr14341.c
+@@ -14,4 +14,3 @@ void t()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "fn_call \\(1\\)" 1 "vrp1" } } */
+-/* { dg-final { cleanup-tree-dump "vrp1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr14490-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr14490-1.c
+@@ -7,5 +7,4 @@ int g(int x)
+ /* There should be only x <= 9 and no x - 10. */
+ /* { dg-final { scan-tree-dump-times "<= 9" 1 "gimple"} } */
+ /* { dg-final { scan-tree-dump-times "\\+ -10" 0 "gimple"} } */
+-/* { dg-final { cleanup-tree-dump "gimple" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr14490-2.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr14490-2.c
+@@ -7,4 +7,3 @@ int g(int x)
+ /* There should be no x >= 9 and one x - 10. */
+ /* { dg-final { scan-tree-dump-times "<= 9" 0 "gimple"} } */
+ /* { dg-final { scan-tree-dump-times "\\+ -10" 1 "gimple"} } */
+-/* { dg-final { cleanup-tree-dump "gimple" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr14490-3.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr14490-3.c
+@@ -7,4 +7,3 @@ int g(int x)
+ /* There should be only x < -10 and no x + 10. */
+ /* { dg-final { scan-tree-dump-times "< -10" 1 "gimple"} } */
+ /* { dg-final { scan-tree-dump-times "\\+ 10" 0 "gimple"} } */
+-/* { dg-final { cleanup-tree-dump "gimple" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr14490-4.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr14490-4.c
+@@ -7,4 +7,3 @@ int g(int x)
+ /* There should be no x < -10 and one x + 10. */
+ /* { dg-final { scan-tree-dump-times "< -10" 0 "gimple"} } */
+ /* { dg-final { scan-tree-dump-times "\\+ 10" 1 "gimple"} } */
+-/* { dg-final { cleanup-tree-dump "gimple" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr14814.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr14814.c
+@@ -19,4 +19,3 @@ int foo(const struct XX* r) {
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "= &" 0 "forwprop2" } } */
+-/* { dg-final { cleanup-tree-dump "forwprop2" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr15349.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr15349.c
+@@ -23,4 +23,3 @@ foo (int a, int b)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "PHI" 1 "mergephi2"} } */
+-/* { dg-final { cleanup-tree-dump "mergephi2" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr15791-3.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr15791-3.c
+@@ -10,4 +10,3 @@ int f(int i, unsigned j)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "i == j" 0 "gimple" } } */
+-/* { dg-final { cleanup-tree-dump "gimple" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr15791-4.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr15791-4.c
+@@ -10,4 +10,3 @@ int f(int i, int j)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "i == j" 0 "gimple" } } */
+-/* { dg-final { cleanup-tree-dump "gimple" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr15791-5.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr15791-5.c
+@@ -10,4 +10,3 @@ int foo(int i, int j)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "i == j" 1 "gimple" } } */
+-/* { dg-final { cleanup-tree-dump "gimple" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr16721.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr16721.c
+@@ -13,4 +13,3 @@ int test()
+ 
+ /* The load from p->addr should not disappear.  */
+ /* { dg-final { scan-tree-dump-times "\->addr" 1 "optimized"} } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr17141-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr17141-1.c
+@@ -14,4 +14,3 @@ foo(struct A *locp, int str)
+ /* We should have propagated &locp->i into its dereference.  */
+ 
+ /* { dg-final { scan-tree-dump "locp_\[^\\n\]* =" "forwprop1" } } */
+-/* { dg-final { cleanup-tree-dump "forwprop1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr17141-2.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr17141-2.c
+@@ -27,4 +27,3 @@ l2:
+ 
+ /* { dg-final { scan-tree-dump-times "&" 0 "optimized" } } */
+ /* { dg-final { scan-tree-dump-times "abort" 0 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr17598.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr17598.c
+@@ -39,4 +39,3 @@ int foobar2(struct g *x)
+ /* { dg-final { scan-tree-dump-times "x == &y" 2 "gimple" } } */
+ /* { dg-final { scan-tree-dump "x->k" "gimple" } } */
+ /* { dg-final { scan-tree-dump "yy.k" "gimple" } } */
+-/* { dg-final { cleanup-tree-dump "gimple" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr18133-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr18133-1.c
+@@ -25,4 +25,3 @@ return;
+    scan for 3 instances of "FALLTHRU".  */
+ 
+ /* { dg-final { scan-tree-dump-times "FALLTHRU" 3 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr18133-2.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr18133-2.c
+@@ -40,4 +40,3 @@ bar (int a)
+    computed goto.  */
+ 
+ /* { dg-final { scan-tree-dump-times "ab" 0 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr18134.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr18134.c
+@@ -23,4 +23,3 @@ return 0;
+    computed gotos.  */
+ 
+ /* { dg-final { scan-tree-dump-times "ab" 0 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr18589-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr18589-1.c
+@@ -7,4 +7,3 @@ double baz (double x, double y)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times " \\* " 3 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr18589-10.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr18589-10.c
+@@ -8,4 +8,3 @@ double baz (double x, double y, double z)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times " \\* " 5 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr18589-2.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr18589-2.c
+@@ -7,4 +7,3 @@ double baz (double x, double y)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times " \\* " 3 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr18589-3.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr18589-3.c
+@@ -7,4 +7,3 @@ double baz (double x, double y, double z)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times " \\* " 5 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr18589-4.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr18589-4.c
+@@ -7,4 +7,3 @@ double baz (double x, double y, double z, double u)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times " \\* " 6 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr18589-5.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr18589-5.c
+@@ -7,4 +7,3 @@ double baz (double x, double y, double z, double u)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times " \\* " 6 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr18589-6.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr18589-6.c
+@@ -7,4 +7,3 @@ double baz (double x, double y)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times " \\* " 4 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr18589-7.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr18589-7.c
+@@ -7,4 +7,3 @@ float baz (float x, float y)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times " \\* " 3 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr18589-8.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr18589-8.c
+@@ -7,4 +7,3 @@ long double baz (long double x, long double y)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times " \\* " 3 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr18589-9.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr18589-9.c
+@@ -8,4 +8,3 @@ double baz (double x, double y, double z)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times " \\* " 6 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr18908.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr18908.c
+@@ -6,4 +6,3 @@ _Bool f3(_Bool *p) { *p ^= 1; }
+ /* We should be able to canonicalize the above to use bitwise not.  */
+ /* { dg-final { scan-tree-dump "~\[^\n\r\]*_.;" "forwprop1" } } */
+ /* { dg-final { scan-tree-dump-not "\\\^ 1" "forwprop1" } } */
+-/* { dg-final { cleanup-tree-dump "forwprop1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr19055-2.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr19055-2.c
+@@ -24,4 +24,3 @@ int f4(int a,int b,int c,int d)
+ /* { dg-final { scan-tree-dump-times "\\^" 0 "gimple"} } */
+ /* { dg-final { scan-tree-dump-times "~" 4 "gimple"} } */
+ /* { dg-final { scan-tree-dump-times "&" 12 "gimple"} } */
+-/* { dg-final { cleanup-tree-dump "gimple" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr19055.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr19055.c
+@@ -20,4 +20,3 @@ int f4(int a,int b)
+ /* { dg-final { scan-tree-dump-times "\\^" 0 "gimple"} } */
+ /* { dg-final { scan-tree-dump-times "~" 4 "gimple"} } */
+ /* { dg-final { scan-tree-dump-times "&" 4 "gimple"} } */
+-/* { dg-final { cleanup-tree-dump "gimple" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr19431.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr19431.c
+@@ -25,4 +25,3 @@ int f(int k, int i1, int j1)
+ }
+ 
+ /* { dg-final { scan-tree-dump "\[^\r\n\]*_. = PHI <i1_\[^,\]*, j1_\[^>\]*>" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr19590.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr19590.c
+@@ -34,4 +34,3 @@ void vnum_test8(int *data)
+ 
+ /* { dg-final { scan-tree-dump-times "= 0;" 1 "ivopts"} } */
+ /* { dg-final { scan-tree-dump-times "= 2;" 1 "ivopts"} } */
+-/* { dg-final { cleanup-tree-dump "ivopts" } }  */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr19633.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr19633.c
+@@ -23,4 +23,3 @@ foo (int a, struct T b)
+ /* Make sure that .GLOBAL_VAR is not created when there are no
+    clobbering calls.  */
+ /* { dg-final { scan-tree-dump-times "GLOBAL_VAR" 0 "ssa"} } */
+-/* { dg-final { cleanup-tree-dump "ssa" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr19831-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr19831-1.c
+@@ -29,4 +29,3 @@ void test4(int b)
+ 
+ /* { dg-final { scan-tree-dump-times "free" 0 "optimized" } } */
+ /* { dg-final { scan-tree-dump-times "malloc" 0 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr19831-2.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr19831-2.c
+@@ -12,4 +12,3 @@ void test1(void)
+ 
+ /* { dg-final { scan-tree-dump-times "free" 1 "optimized" } } */
+ /* { dg-final { scan-tree-dump-times "malloc" 1 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr19831-3.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr19831-3.c
+@@ -36,4 +36,3 @@ void test6(void)
+ 
+ /* { dg-final { scan-tree-dump-times "free" 3 "optimized" } } */
+ /* { dg-final { scan-tree-dump-times "malloc" 3 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr20139.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr20139.c
+@@ -20,4 +20,3 @@ foo (double x)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "link_error" 0 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr20318.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr20318.c
+@@ -15,5 +15,3 @@ void h () {
+ 
+ /* { dg-final { scan-tree-dump-times "== 0" 1 "original" } } */
+ /* { dg-final { scan-tree-dump-times "Folding predicate\[^\\n\]*to 0" 1 "vrp1" } } */
+-/* { dg-final { cleanup-tree-dump "original" } } */
+-/* { dg-final { cleanup-tree-dump "vrp1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr20470.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr20470.c
+@@ -12,4 +12,3 @@ void f1()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "ABS_EXPR" 1 "gimple" } } */
+-/* { dg-final { cleanup-tree-dump "gimple" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr20657.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr20657.c
+@@ -15,4 +15,3 @@ foo (int a)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "Folding predicate" 1 "vrp1"} } */
+-/* { dg-final { cleanup-tree-dump "vrp1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr20701.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr20701.c
+@@ -38,4 +38,3 @@ can_combine_p (rtx insn, rtx elt)
+ /* Target with fno-delete-null-pointer-checks should not fold checks */
+ /* { dg-final { scan-tree-dump-times "Folding predicate.*to 0" 1 "vrp1" { target { ! keeps_null_pointer_checks } } } } */
+ /* { dg-final { scan-tree-dump-times "Folding predicate.*to 0" 0 "vrp1" { target {   keeps_null_pointer_checks } } } } */
+-/* { dg-final { cleanup-tree-dump "vrp1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr20702.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr20702.c
+@@ -28,4 +28,3 @@ foo (int *p, int b)
+ /* Target with fno-delete-null-pointer-checks should not fold checks */
+ /* { dg-final { scan-tree-dump-times "Folding predicate" 1 "vrp1" { target { ! keeps_null_pointer_checks } } } } */
+ /* { dg-final { scan-tree-dump-times "Folding predicate" 0 "vrp1" { target {   keeps_null_pointer_checks } } } } */
+-/* { dg-final { cleanup-tree-dump "vrp1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr21001.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr21001.c
+@@ -18,4 +18,3 @@ foo (int a)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "Folding predicate" 1 "vrp1"} } */
+-/* { dg-final { cleanup-tree-dump "vrp1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr21031.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr21031.c
+@@ -17,4 +17,3 @@ foo (int a)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "Replaced" 2 "forwprop1" } } */
+-/* { dg-final { cleanup-tree-dump "forwprop1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr21086.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr21086.c
+@@ -20,5 +20,3 @@ foo (int *p)
+ /* { dg-final { scan-tree-dump-times "Folding predicate " 0 "vrp1" { target {   keeps_null_pointer_checks } } } } */
+ /* { dg-final { scan-tree-dump-not "b_. =" "dce1" { target { ! avr-*-* } } } } */
+ /* { dg-final { scan-tree-dump "b_. =" "dce1" { target { avr-*-* } } } } */
+-/* { dg-final { cleanup-tree-dump "vrp1" } } */
+-/* { dg-final { cleanup-tree-dump "dce1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr21090.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr21090.c
+@@ -20,4 +20,3 @@ foo (int a)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "Folding predicate.*to 1" 1 "vrp1" { target { ! keeps_null_pointer_checks } } } } */
+-/* { dg-final { cleanup-tree-dump "vrp1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr21171.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr21171.c
+@@ -26,4 +26,3 @@ int main()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "SVR" 1 "optimized"} } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr21294.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr21294.c
+@@ -20,4 +20,3 @@ foo (struct f *p)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "Folding predicate" 1 "vrp1"} } */
+-/* { dg-final { cleanup-tree-dump "vrp1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr21417.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr21417.c
+@@ -50,5 +50,4 @@ L23:
+    execute the if (expr->common.code != 142) test once per loop
+    iteration.  */
+ /* { dg-final { scan-tree-dump-times "Threaded jump" 1 "dom2" } } */
+-/* { dg-final { cleanup-tree-dump "dom2" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr21458.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr21458.c
+@@ -17,4 +17,3 @@ foo (int a)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "Folding predicate.*to 1" 1 "vrp1" } } */
+-/* { dg-final { cleanup-tree-dump "vrp1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr21463.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr21463.c
+@@ -17,4 +17,3 @@ int g(int i, int c, struct f *ff, int g)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "Inserting PHI for result of load" 1 "phiprop" } } */
+-/* { dg-final { cleanup-tree-dump "phiprop" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr21559.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr21559.c
+@@ -41,5 +41,4 @@ void foo (void)
+    entering while loop and thread over it.  */
+ /* { dg-final { scan-tree-dump-times "Threaded jump" 3 "vrp1" } } */
+ 
+-/* { dg-final { cleanup-tree-dump "vrp1" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr21563.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr21563.c
+@@ -14,4 +14,3 @@ foo (int a)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "Folding predicate" 1 "vrp1"} } */
+-/* { dg-final { cleanup-tree-dump "vrp1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr21574.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr21574.c
+@@ -10,4 +10,3 @@ foo (int *p)
+ 
+ /* The store to *p should be propagated to the load statement.  */
+ /* { dg-final { scan-tree-dump "Replaced \\\*p_.\\\(D\\\) with 0" "fre1" } } */
+-/* { dg-final { cleanup-tree-dump "fre1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr21582.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr21582.c
+@@ -28,4 +28,3 @@ main()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "Folding predicate p_.*" 0 "vrp1" } } */
+-/* { dg-final { cleanup-tree-dump "vrp1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr21658.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr21658.c
+@@ -18,4 +18,3 @@ f (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "Folded into: if " 1 "ccp1"} } */
+-/* { dg-final { cleanup-tree-dump "ccp1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr21829.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr21829.c
+@@ -19,4 +19,3 @@ int test(int v)
+ /* This should be unrolled and optimized into conditional set of return value "v < 0".  */
+ 
+ /* { dg-final { scan-tree-dump-not "if \\(" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr21959.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr21959.c
+@@ -17,4 +17,3 @@ void f(void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "Folding predicate " 0 "vrp1" } } */
+-/* { dg-final { cleanup-tree-dump "vrp1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr21985.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr21985.c
+@@ -31,4 +31,3 @@ main (void)
+ /* Two of the calls to foo should be folded to just foo(constant).  */
+ 
+ /* { dg-final { scan-tree-dump-times "foo \\(\[0-9\]*\\)" 2 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr22026.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr22026.c
+@@ -46,4 +46,3 @@ mult (unsigned x, unsigned y)
+ 
+ /* None of the predicates can be folded in these functions.  */
+ /* { dg-final { scan-tree-dump-times "Folding predicate" 0 "vrp1" } } */
+-/* { dg-final { cleanup-tree-dump "vrp1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr22051-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr22051-1.c
+@@ -18,6 +18,5 @@ foo()
+    are complete so that function pointer canonicalization works on those
+    targets which require it.  */
+ /* { dg-final { scan-tree-dump-times "= \\(void \\(\\*<.*>\\) \\(void\\)\\) p_" 1 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+ 
+ 
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr22051-2.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr22051-2.c
+@@ -21,5 +21,4 @@ foo()
+    so that we do not try to canonicalize a function pointer for the
+    comparison when no such canonicalization is wanted.  */
+ /* { dg-final { scan-tree-dump-times "r_. = \\(int\\) q" 1 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr22117.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr22117.c
+@@ -22,4 +22,3 @@ foo (int *p, int q)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "Folding predicate r_.* != 0B to 0" 1 "vrp1" } } */
+-/* { dg-final { cleanup-tree-dump "vrp1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr22321.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr22321.c
+@@ -16,5 +16,4 @@ int main ()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "return 0" 1 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr23086.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr23086.c
+@@ -32,4 +32,3 @@ int main(void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-not "link_error" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr23109.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr23109.c
+@@ -31,6 +31,4 @@ int main()
+    this is not wrongly optimized.  */
+ /* { dg-final { scan-tree-dump-not "reciptmp" "lim1" } } */
+ /* { dg-final { scan-tree-dump-not "reciptmp" "recip" } } */
+-/* { dg-final { cleanup-tree-dump "recip" } } */
+-/* { dg-final { cleanup-tree-dump "lim1" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr23294.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr23294.c
+@@ -34,4 +34,3 @@ int f6(int a, int b)
+ /* { dg-final { scan-tree-dump-times "a_..D. \\\* 5" 3 "optimized" } } */
+ /* { dg-final { scan-tree-dump-times " \\\* 2" 3 "optimized" } } */
+ /* { dg-final { scan-tree-dump-not "\\\* 6" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr23401.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr23401.c
+@@ -21,4 +21,3 @@ int ffff(int i)
+ 
+ /* { dg-final { scan-tree-dump-times "int" 5 "gimple" } } */
+ /* { dg-final { scan-tree-dump-times "int D\\\." 1 "gimple" } } */
+-/* { dg-final { cleanup-tree-dump "gimple" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr23455.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr23455.c
+@@ -27,4 +27,3 @@ bi_windup(unsigned int *outbuf, unsigned int bi_buf)
+    one add involving outcnt and outbuf.  */
+ /* { dg-final { scan-tree-dump-times "Eliminated: 3" 1 "pre" {target { ! avr-*-* } } } } */
+ /* { dg-final { scan-tree-dump-times "Eliminated: 4" 1 "pre" {target {   avr-*-* } } } } */
+-/* { dg-final { cleanup-tree-dump "pre" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr23744.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr23744.c
+@@ -18,4 +18,3 @@ int g (int i, int j)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "Folding predicate.*to 1" 1 "vrp1" } } */
+-/* { dg-final { cleanup-tree-dump "vrp1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr23777.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr23777.c
+@@ -16,4 +16,3 @@ void g (char **o)
+     multilib_exclusions_raw.  */
+ 
+ /* { dg-final { scan-tree-dump-not "multilib_exclusions_raw" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr23848-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr23848-1.c
+@@ -29,4 +29,3 @@ void foo2 (int size)
+ 
+ /* { dg-final { scan-tree-dump-not "__builtin_stack_save" "optimized"} } */
+ /* { dg-final { scan-tree-dump-not "__builtin_stack_restore" "optimized"} } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr23848-2.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr23848-2.c
+@@ -22,4 +22,3 @@ void foo (int size)
+ 
+ /* { dg-final { scan-tree-dump-times "__builtin_stack_save" 1 "optimized"} } */
+ /* { dg-final { scan-tree-dump-times "__builtin_stack_restore" 1 "optimized"} } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr23848-3.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr23848-3.c
+@@ -25,4 +25,3 @@ void foo (int size)
+ 
+ /* { dg-final { scan-tree-dump-times "__builtin_stack_save" 1 "optimized"} } */
+ /* { dg-final { scan-tree-dump-times "__builtin_stack_restore" 1 "optimized"} } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr23848-4.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr23848-4.c
+@@ -22,4 +22,3 @@ void foo (int size)
+ 
+ /* { dg-final { scan-tree-dump-times "__builtin_stack_save" 1 "optimized"} } */
+ /* { dg-final { scan-tree-dump-times "__builtin_stack_restore" 1 "optimized"} } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr24117.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr24117.c
+@@ -23,4 +23,3 @@ void foo(void)
+     link_error ();
+ }
+ /* { dg-final { scan-tree-dump-times "link_error" 1 "optimized"} } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr24287.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr24287.c
+@@ -26,4 +26,3 @@ int g(void)
+ }
+ /* We are allowed to optimize the first two link_error calls.  */
+ /* { dg-final { scan-tree-dump-times "link_error" 2 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr24689.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr24689.c
+@@ -21,4 +21,3 @@ foo (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump "return 0;" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr24990-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr24990-1.c
+@@ -17,5 +17,4 @@ int f1(int x)
+ /* { dg-final { scan-tree-dump-times "== 0" 0 "optimized"} } */
+ /* { dg-final { scan-tree-dump-times "== -1" 1 "optimized"} } */
+ 
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr25382.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr25382.c
+@@ -16,4 +16,3 @@ foo (int a)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "Folding predicate b_.* > 300 to 0" 1 "vrp1" } } */
+-/* { dg-final { cleanup-tree-dump "vrp1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr25485.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr25485.c
+@@ -14,4 +14,3 @@ foo (int a, int b)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "if" 1 "vrp1"} } */
+-/* { dg-final { cleanup-tree-dump "vrp1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr25501.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr25501.c
+@@ -33,4 +33,3 @@ foo (int a)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "Removing basic block" 0 "mergephi1"} } */
+-/* { dg-final { cleanup-tree-dump "mergephi1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr26421.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr26421.c
+@@ -19,4 +19,3 @@ int foo(void)
+ /* Verify the call clobbers all of a.  */
+ 
+ /* { dg-final { scan-tree-dump-not "return 1;" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr26899.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr26899.c
+@@ -6,5 +6,4 @@ int foo (int i, int j)
+ }
+ 
+ /* { dg-final { scan-tree-dump "j >= i" "gimple" } } */
+-/* { dg-final { cleanup-tree-dump "gimple" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr27236.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr27236.c
+@@ -17,4 +17,3 @@ unsigned int foo(volatile int *mem)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "foo_read" 5 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr27498.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr27498.c
+@@ -14,4 +14,3 @@ void zconfdump(void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-not "goto" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr27781.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr27781.c
+@@ -14,4 +14,3 @@ int main()
+ }
+ 
+ /* { dg-final { scan-tree-dump "func \\(\\);" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr27810.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr27810.c
+@@ -15,4 +15,3 @@ int qqq (int a)
+ 
+ /* { dg-final { scan-tree-dump-times "int" 3 "gimple" } } */
+ /* { dg-final { scan-tree-dump-times "int D\\\." 1 "gimple" } } */
+-/* { dg-final { cleanup-tree-dump "gimple" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr30375.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr30375.c
+@@ -23,4 +23,3 @@ void test_signed_msg_encoding(void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "signInfo = {}" 1 "dse1" } } */
+-/* { dg-final { cleanup-tree-dump "dse*" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr30978.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr30978.c
+@@ -14,4 +14,3 @@ int foo(int a)
+ /* One comparison and one extension to int.  */
+ /* { dg-final { scan-tree-dump " = a_..D. > 0;" "optimized" } } */
+ /* { dg-final { scan-tree-dump "e_. = \\\(int\\\)" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr31261.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr31261.c
+@@ -38,4 +38,3 @@ f5 (int e)
+ /* { dg-final { scan-tree-dump-times "return \\(int\\) \\(12 - \\(unsigned int\\) d\\) \& 7;" 1 "original" { target { ! int16 } } } } */
+ /* { dg-final { scan-tree-dump-times "return \\(int\\) \\(12 - \\(unsigned short\\) d\\) \& 7;" 1 "original" { target { int16 } } } } */
+ /* { dg-final { scan-tree-dump-times "return 12 - \\(e \& 7\\) \& 15;" 1 "original" } } */
+-/* { dg-final { cleanup-tree-dump "original" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr31521.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr31521.c
+@@ -17,4 +17,3 @@ int foo(int x) {
+ }
+ 
+ /* { dg-final { scan-tree-dump-times " = i_.* >> 2" 1 "vrp1" } } */
+-/* { dg-final { cleanup-tree-dump "vrp1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr32044.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr32044.c
+@@ -51,4 +51,3 @@ int baz (int n)
+ /* { dg-final { scan-tree-dump-times "/" 0 "optimized" } } */
+ /* { dg-final { scan-tree-dump-times "%" 0 "optimized" } } */
+ 
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr32821.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr32821.c
+@@ -12,4 +12,3 @@ main1 (int *arr, int n, int a, int b)
+     }
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "ifcvt" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr32901.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr32901.c
+@@ -27,4 +27,3 @@ void setup_foo(void)
+ /* { dg-final { scan-tree-dump-times "thefoo.* = 1" 1 "gimple"} } */
+ /* { dg-final { scan-tree-dump-times "thefoo.* = 5" 1 "gimple"} } */
+ /* { dg-final { scan-tree-dump-times "theotherfoo = volinit" 1 "gimple"} } */
+-/* { dg-final { cleanup-tree-dump "gimple" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr32964.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr32964.c
+@@ -23,4 +23,3 @@ float t(float a)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "union" 0 "optimized"} } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr33172.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr33172.c
+@@ -39,4 +39,3 @@ void func(void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-not "call_func" "optimized"} } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr33723.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr33723.c
+@@ -71,4 +71,3 @@ baz3 (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-not "t = D" "gimple"} } */
+-/* { dg-final { cleanup-tree-dump "gimple" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr34146-2.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr34146-2.c
+@@ -52,4 +52,3 @@ baz (void)
+ /* { dg-final { scan-tree-dump-not "t = D" "gimple"} } */
+ /* { dg-final { scan-tree-dump-not "t\.c\.h\[12\] = D" "gimple"} } */
+ /* { dg-final { scan-tree-dump-not "\.g\[12\] = D" "gimple"} } */
+-/* { dg-final { cleanup-tree-dump "gimple" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr34146.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr34146.c
+@@ -52,4 +52,3 @@ baz (void)
+ /* { dg-final { scan-tree-dump-not "t = D" "gimple"} } */
+ /* { dg-final { scan-tree-dump-not "t\.c\.h\[12\] = D" "gimple"} } */
+ /* { dg-final { scan-tree-dump-not "\.g\[12\] = D" "gimple"} } */
+-/* { dg-final { cleanup-tree-dump "gimple" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr35286.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr35286.c
+@@ -20,4 +20,3 @@ int foo(int a, int b)
+ /* We will eliminate the g1.a from the return statement as fully redundant,
+    and remove one calculation of a + b. */
+ /* { dg-final { scan-tree-dump-times "Eliminated: 2" 1 "pre"} } */
+-/* { dg-final { cleanup-tree-dump "pre" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr35287.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr35287.c
+@@ -12,4 +12,3 @@ int foo(int p)
+ 
+ /* We will eliminate one load of gp and one indirect load of *gp. */
+ /* { dg-final { scan-tree-dump-times "Eliminated: 2" 1 "pre"} } */
+-/* { dg-final { cleanup-tree-dump "pre" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr36326.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr36326.c
+@@ -10,4 +10,3 @@ int foo (union X *p)
+ }
+ 
+ /* { dg-final { scan-tree-dump-not "x.0" "gimple" } } */
+-/* { dg-final { cleanup-tree-dump "gimple" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr36881.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr36881.c
+@@ -23,4 +23,3 @@ const char *foo (int i)
+ 
+ /* { dg-final { scan-assembler-not "CSWTCH" } } */
+ /* { dg-final { scan-tree-dump "need runtime relocations" "switchconv" } } */
+-/* { dg-final { cleanup-tree-dump "switchconv" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr37508.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr37508.c
+@@ -45,4 +45,3 @@ int test4 (struct foo2 *x)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "Folding" 3 "vrp1" } } */
+-/* { dg-final { cleanup-tree-dump "vrp1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr38533.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr38533.c
+@@ -27,4 +27,3 @@ main (void)
+    be exactly 2 (first) __asm__ stmts with no intervening stmts,
+    all others should have some bitwise or in between.  */
+ /* { dg-final { scan-tree-dump-times "__asm__\[^;\n]*;\n *__asm__" 1 "reassoc1"} } */
+-/* { dg-final { cleanup-tree-dump "reassoc1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr38699.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr38699.c
+@@ -78,4 +78,3 @@ void makeUseOfTimerWait( unsigned char val ) {
+ /* We should not inline the delay loops.  */
+ /* { dg-final { scan-tree-dump "delay_wait_us" "optimized"} } */
+ /* { dg-final { scan-tree-dump "delay_wait_us_ms" "optimized"} } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr38895.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr38895.c
+@@ -21,4 +21,3 @@ int foo(struct C *c, struct B *b)
+ }
+ 
+ /* { dg-final { scan-tree-dump "return 1;" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr41469-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr41469-1.c
+@@ -13,4 +13,3 @@ bf (void)
+ 
+ /* { dg-final { scan-tree-dump-not "__builtin_stack_save" "optimized"} } */
+ /* { dg-final { scan-tree-dump-not "__builtin_stack_restore" "optimized"} } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr42585.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr42585.c
+@@ -37,4 +37,3 @@ Cyc_string_ungetc (int ignore, struct _fat_ptr *sptr)
+    not take place when using small values for MOVE_RATIO.  */
+ /* { dg-final { scan-tree-dump-times "struct _fat_ptr _ans" 0 "optimized" { target { ! "aarch64*-*-* alpha*-*-* arm*-*-* avr-*-* nds32*-*-* powerpc*-*-* s390*-*-* sh*-*-*" } } } } */
+ /* { dg-final { scan-tree-dump-times "struct _fat_ptr _T2" 0 "optimized" { target { ! "aarch64*-*-* alpha*-*-* arm*-*-* avr-*-* nds32*-*-* powerpc*-*-* s390*-*-* sh*-*-*" } } } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr42893.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr42893.c
+@@ -26,5 +26,4 @@ tui_registers_changed_hook (void)
+ /* No references to tui_refreshing_registers should remain.  */
+ /* { dg-final { scan-tree-dump-not "tui_refreshing_registers" "optimized"} } */
+ 
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr43378.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr43378.c
+@@ -14,4 +14,3 @@ void foo (int left, int rite, int element)
+ 
+ /* { dg-final { scan-tree-dump-times "rite_\[0-9\]* = rite_\[0-9\]* - element" 1 "ivopts"} } */
+ /* { dg-final { scan-tree-dump-times "left_\[0-9\]* = left_\[0-9\]* \\+ element|left_\[0-9\]* = element_\[0-9\]*\\(D\\) \\+ left" 1 "ivopts"} } */
+-/* { dg-final { cleanup-tree-dump "ivopts" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr43491.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr43491.c
+@@ -39,4 +39,3 @@ long foo(long data, long v)
+    a single assignment.  */
+ /* { dg-final { scan-tree-dump-times "Eliminated: 2" 1 "pre" { target { arm*-*-* i?86-*-* mips*-*-* x86_64-*-* } } } } */
+ /* { dg-final { scan-tree-dump-times "Eliminated: 3" 1 "pre" { target { ! { arm*-*-* i?86-*-* mips*-*-* x86_64-*-* } } } } } */
+-/* { dg-final { cleanup-tree-dump "pre" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr44258.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr44258.c
+@@ -42,4 +42,3 @@ int foo (int b)
+ /* Epiphany has struct alignment/padding that avoids the overlap of
+    str.b1 and val.b2.  */
+ /* { dg-final { scan-tree-dump-times "Created a replacement" 0 "esra" { target { ! "epiphany-*-*" } } } } */
+-/* { dg-final { cleanup-tree-dump "esra" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr44423.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr44423.c
+@@ -44,4 +44,3 @@ int main()
+   }
+ 
+ /* { dg-final { scan-tree-dump-times "Created a replacement" 0 "esra"} } */
+-/* { dg-final { cleanup-tree-dump "esra" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr45144.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr45144.c
+@@ -44,4 +44,3 @@ bar (unsigned orig, unsigned *new)
+ }
+ 
+ /* { dg-final { scan-tree-dump-not "unnamed-unsigned:19" "optimized"} } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr45427.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr45427.c
+@@ -26,4 +26,3 @@ int main()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "bounded by 0x0\[^0-9a-f\]" 0 "cunrolli"} } */
+-/* { dg-final { cleanup-tree-dump "cunrolli" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr47286.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr47286.c
+@@ -17,4 +17,3 @@ void testcase(void)
+    to globals and thus the store not optimized away.  */
+ 
+ /* { dg-final { scan-tree-dump "->preempt_count =" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr47392.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr47392.c
+@@ -39,4 +39,3 @@ main ()
+ }
+ 
+ /* { dg-final { scan-tree-dump "Eliminated: 1" "pre" } } */
+-/* { dg-final { cleanup-tree-dump "pre" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr47477.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr47477.c
+@@ -17,6 +17,5 @@ toto_t add (toto_t a, toto_t b) {
+ /* { dg-final { scan-tree-dump-times "= \\(int\\)" 1 "optimized" } } */
+ /* { dg-final { scan-tree-dump-times "= \\(unsigned int\\)" 2 "optimized" } } */
+ /* { dg-final { scan-tree-dump-times "= \\(struct toto_s \\*\\)" 1 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+ 
+ 
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr49039.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr49039.c
+@@ -28,4 +28,3 @@ foo (unsigned int x, unsigned int y)
+ /* { dg-final { scan-tree-dump "Folding predicate minv_\[0-9\]* == 6 to 0" "vrp1" } } */
+ /* { dg-final { scan-tree-dump "Folding predicate maxv_\[0-9\]* == 5 to 0" "vrp1" } } */
+ /* { dg-final { scan-tree-dump "Folding predicate maxv_\[0-9\]* == 6 to 0" "vrp1" } } */
+-/* { dg-final { cleanup-tree-dump "vrp1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr49642-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr49642-1.c
+@@ -48,4 +48,3 @@ int y(struct ehca_shca *shca)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "____ilog2_NaN" 0 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr49642-2.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr49642-2.c
+@@ -50,4 +50,3 @@ int y(struct ehca_shca *shca)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "____ilog2_NaN" 0 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr49671-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr49671-1.c
+@@ -12,6 +12,5 @@ void f(void)
+ }
+ 
+ /* { dg-final { scan-tree-dump "\{v\}" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+ 
+ 
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr49671-2.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr49671-2.c
+@@ -12,6 +12,5 @@ void f(void)
+ }
+ 
+ /* { dg-final { scan-tree-dump "\{v\}" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+ 
+ 
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr52631.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr52631.c
+@@ -14,5 +14,4 @@ unsigned f(unsigned a)
+ /* We want to verify that we replace the b & 1 with b.  */
+ /* { dg-final { scan-tree-dump-times "Replaced b_\[0-9\]+ & 1 with b_\[0-9\]+ in" 1 "fre1"} } */
+  
+-/* { dg-final { cleanup-tree-dump "fre1" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr54245.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr54245.c
+@@ -46,4 +46,3 @@ int main(void)
+    take place in a smaller type than originally.  This test may be deleted
+    in future when this case is handled more precisely.  */
+ /* { dg-final { scan-tree-dump-times "Inserting initializer" 0 "slsr" { target { ! int16 } } } } */
+-/* { dg-final { cleanup-tree-dump "slsr" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr55579.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr55579.c
+@@ -12,4 +12,3 @@ foo (int x)
+ }
+ 
+ /* { dg-final { scan-tree-dump "Created a debug-only replacement for s" "esra" } } */
+-/* { dg-final { cleanup-tree-dump "esra" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr57361.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr57361.c
+@@ -7,4 +7,3 @@ void f (struct A *a) {
+ }
+ 
+ /* { dg-final { scan-tree-dump "Deleted dead store" "dse1"} } */
+-/* { dg-final { cleanup-tree-dump "dse1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr58480.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr58480.c
+@@ -16,4 +16,3 @@ void g2 (void*p, void*q){
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "Folding predicate\[^\\n\]*to 0" 2 "vrp1" } } */
+-/* { dg-final { cleanup-tree-dump "vrp1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr58958.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr58958.c
+@@ -9,4 +9,3 @@ int f(int n){
+ }
+ 
+ /* { dg-final { scan-tree-dump " == 9" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr59597.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr59597.c
+@@ -55,5 +55,4 @@ main (int argc, char argv[])
+ }
+ 
+ /* { dg-final { scan-tree-dump "Cancelling" "vrp1" } } */
+-/* { dg-final { cleanup-tree-dump "vrp1" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr61144.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr61144.c
+@@ -6,4 +6,3 @@ static int dummy = 0;
+ extern int foo __attribute__((__weak__, __alias__("dummy")));
+ int bar() { if (foo) return 1; return 0; }
+ /* { dg-final { scan-tree-dump-not "return 0" "optimized"} } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr61607.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr61607.c
+@@ -25,5 +25,4 @@ void f2(int dst[3], int R)
+    the second conditional after the loop.  */
+ /* { dg-final { scan-tree-dump-times "if" 2 "dom1"} } */
+ 
+-/* { dg-final { cleanup-tree-dump "dom1" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr61743-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr61743-1.c
+@@ -50,4 +50,3 @@ int foo1 (e_u8 a[4][N], int b1, int b2, e_u8 b[M+1][4][N])
+ 
+ /* { dg-final { scan-tree-dump-times "loop with 4 iterations completely unrolled" 2 "cunroll" } } */
+ /* { dg-final { scan-tree-dump-times "loop with 8 iterations completely unrolled" 2 "cunroll" } } */
+-/* { dg-final { cleanup-tree-dump "cunroll" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr61743-2.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr61743-2.c
+@@ -50,4 +50,3 @@ int foo1 (e_u8 a[4][N], int b1, int b2, e_u8 b[M+1][4][N])
+ 
+ /* { dg-final { scan-tree-dump-times "loop with 4 iterations completely unrolled" 2 "cunroll" } } */
+ /* { dg-final { scan-tree-dump-times "loop with 8 iterations completely unrolled" 2 "cunroll" } } */
+-/* { dg-final { cleanup-tree-dump "cunroll" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr62112-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr62112-1.c
+@@ -20,4 +20,3 @@ char*i(){
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "Deleted dead call" 4 "dse1" } } */
+-/* { dg-final { cleanup-tree-dump "dse1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr62112-2.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr62112-2.c
+@@ -14,4 +14,3 @@ void h(){
+ }
+ 
+ /* { dg-final { scan-tree-dump-not "Deleted dead" "dse1" } } */
+-/* { dg-final { cleanup-tree-dump "dse1" } } */
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr64130.c
+@@ -0,0 +1,18 @@
++
++/* { dg-do compile } */
++/* { dg-options "-O2 -fdump-tree-vrp1" } */
++
++int funsigned (unsigned a)
++{
++  return 0x1ffffffffL / a == 0;
++}
++
++int funsigned2 (unsigned a)
++{
++  if (a < 1) return 1;
++  return (-1 * 0x1ffffffffL) / a == 0;
++}
++
++/* { dg-final { scan-tree-dump ": \\\[2, 8589934591\\\]" "vrp1" } } */
++/* { dg-final { scan-tree-dump ": \\\[-8589934591, -2\\\]" "vrp1" } } */
++
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr64183.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr64183.c
+@@ -18,4 +18,3 @@ test ()
+ }
+ 
+ /* { dg-final { scan-tree-dump "Loop 2 iterates at most 4 times" "cunroll"} } */
+-/* { dg-final { cleanup-tree-dump "cunroll" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr64705.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr64705.c
+@@ -24,4 +24,3 @@ int foo(char *flags, long len, long i, long steps)
+ /* Don't expand iv {base+step, step}_loop into {base+x+y, step}_loop
+    even if "step == x + y".  */
+ /* { dg-final { scan-tree-dump "base step_\[0-9\]* \\+ iter|base iter_\[0-9\]* \\+ step" "ivopts"} } */
+-/* { dg-final { cleanup-tree-dump "ivopts" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr64801.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr64801.c
+@@ -18,4 +18,3 @@ psmouse_extensions (void)
+   a = b ();
+ }
+ /* { dg-final { scan-tree-dump-not "fsp_detect" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pr65136.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr65136.c
+@@ -13,4 +13,3 @@ int foo(unsigned int cc )
+ }
+ 
+ /* { dg-final { scan-rtl-dump-not "_\[0-9\]* = 1;" "expand" } } */
+-/* { dg-final { cleanup-rtl-dump "expand" } } */
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr65447.c
+@@ -0,0 +1,53 @@
++/* { dg-do compile } */
++/* { dg-options "-O2 -fdump-tree-ivopts-details" } */
++
++void foo (double *p)
++{
++  int i;
++  for (i = -20000; i < 200000; i+= 40)
++    {
++      p[i+0] = 1.0;
++      p[i+1] = 1.0;
++      p[i+2] = 1.0;
++      p[i+3] = 1.0;
++      p[i+4] = 1.0;
++      p[i+5] = 1.0;
++      p[i+6] = 1.0;
++      p[i+7] = 1.0;
++      p[i+8] = 1.0;
++      p[i+9] = 1.0;
++      p[i+10] = 1.0;
++      p[i+11] = 1.0;
++      p[i+12] = 1.0;
++      p[i+13] = 1.0;
++      p[i+14] = 1.0;
++      p[i+15] = 1.0;
++      p[i+16] = 1.0;
++      p[i+17] = 1.0;
++      p[i+18] = 1.0;
++      p[i+19] = 1.0;
++      p[i+20] = 1.0;
++      p[i+21] = 1.0;
++      p[i+22] = 1.0;
++      p[i+23] = 1.0;
++      p[i+24] = 1.0;
++      p[i+25] = 1.0;
++      p[i+26] = 1.0;
++      p[i+27] = 1.0;
++      p[i+28] = 1.0;
++      p[i+29] = 1.0;
++      p[i+30] = 1.0;
++      p[i+31] = 1.0;
++      p[i+32] = 1.0;
++      p[i+33] = 1.0;
++      p[i+34] = 1.0;
++      p[i+35] = 1.0;
++      p[i+36] = 1.0;
++      p[i+37] = 1.0;
++      p[i+38] = 1.0;
++      p[i+39] = 1.0;
++    }
++}
++
++/* We should groups address type IV uses.  */
++/* { dg-final { scan-tree-dump-not "\\nuse 5\\n" "ivopts" } }  */
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr66449.c
+@@ -0,0 +1,18 @@
++/* { dg-do compile } */
++/* { dg-options "-O3" } */
++
++void *fn1(void *p1, void *p2, long p3)
++{
++  long a = (long)p1, b = (long)p2, c = p3;
++
++  while (c)
++    {
++      int d = ((int *)b)[0];
++
++      c--;
++      ((char *)a)[0] = d;
++      a++;
++    }
++  return 0;
++}
++
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr66726-2.c
+@@ -0,0 +1,19 @@
++
++/* { dg-do compile } */
++/* { dg-options "-O2 -fdump-tree-phiopt1-details" } */
++
++extern void bar (char, char);
++int
++foo (char b)
++{
++  char a;
++  a = b;
++  b = 'b';
++  bar (a, b);
++  b = a;
++  if (b == 0)
++    a++;
++  return a + b;
++}
++
++/* { dg-final { scan-tree-dump-times "factor conversion out" 0 "phiopt1" } } */
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pr66726.c
+@@ -0,0 +1,15 @@
++
++/* { dg-do compile } */
++/* { dg-options "-O2 -fdump-tree-phiopt1-details" } */
++
++extern unsigned short mode_size[];
++
++int
++oof (int mode)
++{
++  return (64 < mode_size[mode] ? 64 : mode_size[mode]);
++}
++
++/* { dg-final { scan-tree-dump-times "factor conversion out" 1 "phiopt1" } } */
++/* { dg-final { scan-tree-dump-times "MIN_EXPR" 1 "phiopt1" } } */
++
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/predcom-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/predcom-1.c
+@@ -48,4 +48,3 @@ int main(void)
+ /* Also check that we undid the transformation previously made by PRE.  */
+ /* { dg-final { scan-tree-dump-times "looparound ref" 1 "pcom"} } */
+ 
+-/* { dg-final { cleanup-tree-dump "pcom" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/predcom-2.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/predcom-2.c
+@@ -44,4 +44,3 @@ int main(void)
+ 
+ /* Verify that both loops were transformed and unrolled.  */
+ /* { dg-final { scan-tree-dump-times "Unrolling 2 times." 2 "pcom"} } */
+-/* { dg-final { cleanup-tree-dump "pcom" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/predcom-3.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/predcom-3.c
+@@ -13,4 +13,3 @@ void test(void)
+ 
+ /* Verify that we used 3 temporary variables for the loop.  */
+ /* { dg-final { scan-tree-dump-times "Unrolling 3 times." 1 "pcom"} } */
+-/* { dg-final { cleanup-tree-dump "pcom" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/predcom-4.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/predcom-4.c
+@@ -27,4 +27,3 @@ int main(void)
+ 
+ /* { dg-final { scan-tree-dump-times "Combination" 1 "pcom"} } */
+ /* { dg-final { scan-tree-dump-times "Unrolling 3 times." 1 "pcom"} } */
+-/* { dg-final { cleanup-tree-dump "pcom" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/predcom-5.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/predcom-5.c
+@@ -27,4 +27,3 @@ int main(void)
+ 
+ /* { dg-final { scan-tree-dump-times "Combination" 2 "pcom"} } */
+ /* { dg-final { scan-tree-dump-times "Unrolling 3 times." 1 "pcom"} } */
+-/* { dg-final { cleanup-tree-dump "pcom" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/predcom-7.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/predcom-7.c
+@@ -15,4 +15,3 @@ main ()
+ }
+ 
+ /* { dg-final { scan-tree-dump "Executing predictive commoning" "pcom" } } */
+-/* { dg-final { cleanup-tree-dump "pcom" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/prefetch-3.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/prefetch-3.c
+@@ -19,4 +19,3 @@ double test(void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "unroll factor 4" 1 "aprefetch" } } */
+-/* { dg-final { cleanup-tree-dump "aprefetch" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/prefetch-4.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/prefetch-4.c
+@@ -14,4 +14,3 @@ void foo (int n)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "prefetch" 0 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/prefetch-5.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/prefetch-5.c
+@@ -56,4 +56,3 @@ int loop5 (int n, struct tail5 *x)
+ 
+ /* { dg-final { scan-tree-dump-times "Issued prefetch" 2 "aprefetch" } } */
+ /* { dg-final { scan-tree-dump-times "Not prefetching" 1 "aprefetch" } } */
+-/* { dg-final { cleanup-tree-dump "aprefetch" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/prefetch-6.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/prefetch-6.c
+@@ -51,4 +51,3 @@ double test(void)
+ /* { dg-final { scan-assembler-times "prefetcht" 5 } } */
+ /* { dg-final { scan-assembler-times "prefetchnta" 3 } } */
+ 
+-/* { dg-final { cleanup-tree-dump "aprefetch" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/prefetch-7.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/prefetch-7.c
+@@ -44,5 +44,3 @@ void test(int *p)
+ /* { dg-final { scan-assembler-times "prefetcht" 1 } } */
+ /* { dg-final { scan-assembler-times "prefetchnta" 1 } } */
+ 
+-/* { dg-final { cleanup-tree-dump "aprefetch" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/prefetch-8.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/prefetch-8.c
+@@ -23,5 +23,3 @@ void test()
+ /* { dg-final { scan-assembler "movnti" } } */
+ /* { dg-final { scan-assembler-times "mfence" 1 } } */
+ 
+-/* { dg-final { cleanup-tree-dump "aprefetch" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/prefetch-9.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/prefetch-9.c
+@@ -27,5 +27,3 @@ void test()
+ /* { dg-final { scan-assembler "movnti" } } */
+ /* { dg-final { scan-assembler-times "mfence" 1 } } */
+ 
+-/* { dg-final { cleanup-tree-dump "aprefetch" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pta-callused.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pta-callused.c
+@@ -23,5 +23,4 @@ int bar (int b)
+ }
+ 
+ /* { dg-final { scan-tree-dump "CALLUSED = { ESCAPED NONLOCAL f.* i q }" "alias" } } */
+-/* { dg-final { cleanup-tree-dump "alias" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pta-escape-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pta-escape-1.c
+@@ -35,4 +35,3 @@ int main()
+ 
+ /* { dg-final { scan-tree-dump "ESCAPED = { NULL ESCAPED NONLOCAL x }" "alias" { target { ! keeps_null_pointer_checks } } } } */
+ /* { dg-final { scan-tree-dump "ESCAPED = { ESCAPED NONLOCAL x }" "alias" { target { keeps_null_pointer_checks } } } } */
+-/* { dg-final { cleanup-tree-dump "alias" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pta-escape-2.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pta-escape-2.c
+@@ -36,4 +36,3 @@ int main()
+ 
+ /* { dg-final { scan-tree-dump "ESCAPED = { NULL ESCAPED NONLOCAL x }" "alias" { target { ! keeps_null_pointer_checks } } } } */
+ /* { dg-final { scan-tree-dump "ESCAPED = { ESCAPED NONLOCAL x }" "alias" { target { keeps_null_pointer_checks } } } } */
+-/* { dg-final { cleanup-tree-dump "alias" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pta-escape-3.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pta-escape-3.c
+@@ -40,4 +40,3 @@ int main()
+ 
+ /* { dg-final { scan-tree-dump "ESCAPED = { NULL ESCAPED NONLOCAL x }" "alias" { target { ! keeps_null_pointer_checks } } } } */
+ /* { dg-final { scan-tree-dump "ESCAPED = { ESCAPED NONLOCAL x }" "alias" { target { keeps_null_pointer_checks } } } } */
+-/* { dg-final { cleanup-tree-dump "alias" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pta-fp.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pta-fp.c
+@@ -23,4 +23,3 @@ double f(double a)
+ /* The points-to set of the final function pointer should be "sin cos" */
+ 
+ /* { dg-final { scan-tree-dump-times "{ sin cos }" 1 "alias"} } */
+-/* { dg-final { cleanup-tree-dump "alias" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pta-ptrarith-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pta-ptrarith-1.c
+@@ -23,4 +23,3 @@ foo(int i, int j, int k, int off)
+ }
+ 
+ /* { dg-final { scan-tree-dump "q_. = { k }" "ealias" } } */
+-/* { dg-final { cleanup-tree-dump "ealias" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/pta-ptrarith-2.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/pta-ptrarith-2.c
+@@ -23,4 +23,3 @@ foo(int i, int j, int k, int off)
+ }
+ 
+ /* { dg-final { scan-tree-dump "q_. = { i }" "ealias" } } */
+-/* { dg-final { cleanup-tree-dump "ealias" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/reassoc-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/reassoc-1.c
+@@ -21,4 +21,3 @@ int main(void)
+ 
+ /* { dg-final { scan-tree-dump-times "b.._. \\\+ a.._." 1 "optimized" { xfail *-*-* } } } */
+ /* { dg-final { scan-tree-dump-times " \\\+ " 2 "optimized" { xfail *-*-* } } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/reassoc-10.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/reassoc-10.c
+@@ -8,4 +8,3 @@ int main(int a, int b, int c, int d)
+   return e & f;
+ }
+ /* { dg-final { scan-tree-dump-times "\\\& " 3 "optimized"} } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/reassoc-11.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/reassoc-11.c
+@@ -8,4 +8,3 @@ int main(int a, int b, int c, int d)
+   return e ^ f;
+ }
+ /* { dg-final { scan-tree-dump-times "= 0" 1 "reassoc1"} } */
+-/* { dg-final { cleanup-tree-dump "reassoc1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/reassoc-12.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/reassoc-12.c
+@@ -8,4 +8,3 @@ int f(int a, int b)
+   return d;
+ }
+ /* { dg-final { scan-tree-dump-times "Equivalence:" 1 "reassoc1"} } */
+-/* { dg-final { cleanup-tree-dump "reassoc1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/reassoc-13.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/reassoc-13.c
+@@ -11,5 +11,3 @@ double foo(double a)
+ 
+ /* { dg-final { scan-tree-dump-not "\\\+ 0.0" "reassoc1" } } */
+ /* { dg-final { scan-tree-dump "return a_..D.;" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "reassoc1" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/reassoc-14.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/reassoc-14.c
+@@ -22,4 +22,3 @@ unsigned int test2 (unsigned int x, unsigned int y, unsigned int z,
+ /* There should be one multiplication left in test1 and three in test2.  */
+ 
+ /* { dg-final { scan-tree-dump-times "\\\*" 4 "reassoc1" } } */
+-/* { dg-final { cleanup-tree-dump "reassoc1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/reassoc-15.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/reassoc-15.c
+@@ -18,4 +18,3 @@ unsigned int test3 (unsigned int x, unsigned int y, unsigned int z,
+    ???  This pattern is not recognized currently.  */
+ 
+ /* { dg-final { scan-tree-dump-times "\\\*" 4 "reassoc1" } } */
+-/* { dg-final { cleanup-tree-dump "reassoc1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/reassoc-16.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/reassoc-16.c
+@@ -13,4 +13,3 @@ double test1 (double x, double y, double z, double weight)
+    be gone.  */
+ 
+ /* { dg-final { scan-tree-dump-times "/" 1 "reassoc1" } } */
+-/* { dg-final { cleanup-tree-dump "reassoc1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/reassoc-17.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/reassoc-17.c
+@@ -13,4 +13,3 @@ double test2 (double x, double y, double ddj, int b)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "/" 1 "reassoc1" } } */
+-/* { dg-final { cleanup-tree-dump "reassoc1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/reassoc-18.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/reassoc-18.c
+@@ -9,4 +9,3 @@ ETree_nFactorEntriesInFront (unsigned int b, unsigned int m)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "\\\*" 2 "reassoc1" } } */
+-/* { dg-final { cleanup-tree-dump "reassoc1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/reassoc-19.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/reassoc-19.c
+@@ -19,4 +19,3 @@ void foo(char* left, char* rite, int element)
+ /* { dg-final { scan-tree-dump-times "= \\\(sizetype\\\) element" 1 "optimized" } } */
+ /* { dg-final { scan-tree-dump-times "= -" 1 "optimized" } } */
+ /* { dg-final { scan-tree-dump-times " \\\+ " 1 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/reassoc-2.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/reassoc-2.c
+@@ -17,4 +17,3 @@ int b0, b1, b2, b3, b4,e;
+ /* We can't reassociate the expressions due to undefined signed overflow.  */
+ 
+ /* { dg-final { scan-tree-dump-times "return 0" 1 "optimized" { xfail *-*-* } } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/reassoc-20.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/reassoc-20.c
+@@ -17,4 +17,3 @@ int main(void)
+ 
+ /* { dg-final { scan-tree-dump-times "\[ab\].._. \\\+ \[ab\].._." 1 "optimized" } } */
+ /* { dg-final { scan-tree-dump-times " \\\+ " 2 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/reassoc-21.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/reassoc-21.c
+@@ -16,4 +16,3 @@ unsigned int f (unsigned int a0, unsigned int a1, unsigned int a2,
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "return 0" 1 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/reassoc-22.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/reassoc-22.c
+@@ -10,4 +10,3 @@ unsigned int foo(unsigned int a, unsigned int b, unsigned int c, unsigned int d)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "\\\+ 8" 1 "reassoc1"} } */
+-/* { dg-final { cleanup-tree-dump "reassoc1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/reassoc-23.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/reassoc-23.c
+@@ -14,4 +14,3 @@ foo(unsigned int a, unsigned int b, unsigned int c, unsigned int d,
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "= 20" 1 "reassoc1"} } */
+-/* { dg-final { cleanup-tree-dump "reassoc1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/reassoc-24.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/reassoc-24.c
+@@ -22,4 +22,3 @@ foo (void)
+ /* Verify there are two pairs of __asm__ statements with no
+    intervening stmts.  */
+ /* { dg-final { scan-tree-dump-times "__asm__\[^;\n]*;\n *__asm__" 2 "reassoc1"} } */
+-/* { dg-final { cleanup-tree-dump "reassoc1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/reassoc-25.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/reassoc-25.c
+@@ -16,4 +16,3 @@ foo (int a, int b, int c, int d)
+ 
+ /* Verify reassociation width was chosen to be 2.  */
+ /* { dg-final { scan-tree-dump-times "Width = 2" 1 "reassoc1"} } */
+-/* { dg-final { cleanup-tree-dump "reassoc1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/reassoc-27.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/reassoc-27.c
+@@ -8,4 +8,3 @@ double baz (double foo, double bar)
+ 
+ /* We should re-associate this as (foo * bar)**3.  */
+ /* { dg-final { scan-tree-dump-times " \\\* " 3 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/reassoc-32.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/reassoc-32.c
+@@ -26,4 +26,3 @@ int main ()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "Optimizing range tests .* 26" 1 "reassoc1"} }*/
+-/* { dg-final { cleanup-tree-dump "reassoc1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/reassoc-33.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/reassoc-33.c
+@@ -24,4 +24,3 @@ main ()
+   return 0;
+ }
+ /* { dg-final { scan-tree-dump-times "Optimizing range tests" 3 "reassoc1"} }*/
+-/* { dg-final { cleanup-tree-dump "reassoc1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/reassoc-34.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/reassoc-34.c
+@@ -21,4 +21,3 @@ int main ()
+   return 0;
+ }
+ /* { dg-final { scan-tree-dump-times "Optimizing range tests" 1 "reassoc1"} }*/
+-/* { dg-final { cleanup-tree-dump "reassoc1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/reassoc-35.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/reassoc-35.c
+@@ -23,4 +23,3 @@ main ()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "Optimizing range tests" 1 "reassoc1"} }*/
+-/* { dg-final { cleanup-tree-dump "reassoc1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/reassoc-36.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/reassoc-36.c
+@@ -22,4 +22,3 @@ int main ()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "Optimizing range tests" 1 "reassoc1"} }*/
+-/* { dg-final { cleanup-tree-dump "reassoc1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/reassoc-37.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/reassoc-37.c
+@@ -14,4 +14,3 @@ foo (int x)
+ /* Check if the tests have been folded into a bit test.  */
+ /* { dg-final { scan-tree-dump "(8784908|0x0*860c0c)" "optimized" { target i?86-*-* x86_64-*-* } } } */
+ /* { dg-final { scan-tree-dump "(<<|>>)" "optimized" { target i?86-*-* x86_64-*-* } } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/reassoc-38.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/reassoc-38.c
+@@ -15,4 +15,3 @@ foo (int x)
+ /* Check if the tests have been folded into a bit test.  */
+ /* { dg-final { scan-tree-dump "(614180323407|0x0*8f0000004f)" "optimized" { target { { i?86-*-* x86_64-*-* } && { ! { ia32 } } } } } } */
+ /* { dg-final { scan-tree-dump "(<<|>>)" "optimized" { target { { i?86-*-* x86_64-*-* } && { ! { ia32 } } } } } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/reassoc-4.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/reassoc-4.c
+@@ -15,4 +15,3 @@ int main(void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "\\\+" 2 "optimized"} } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/reassoc-5.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/reassoc-5.c
+@@ -14,4 +14,3 @@ int main(int argc, int b)
+     }
+ }
+ /* { dg-final { scan-tree-dump-times "a - i" 0 "optimized"} } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/reassoc-6.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/reassoc-6.c
+@@ -12,4 +12,3 @@ int main(int a, int b, int c, int d)
+ /* We cannot re-associate the additions due to undefined signed overflow.  */
+ 
+ /* { dg-final { scan-tree-dump-times "\\\+ 8" 1 "reassoc1" { xfail *-*-* } } } */
+-/* { dg-final { cleanup-tree-dump "reassoc1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/reassoc-7.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/reassoc-7.c
+@@ -13,4 +13,3 @@ foo(unsigned int a, unsigned int b, unsigned int c, unsigned int d,
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "\\\+ 15" 1 "reassoc1"} } */
+-/* { dg-final { cleanup-tree-dump "reassoc1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/reassoc-8.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/reassoc-8.c
+@@ -10,4 +10,3 @@ int main(int a, int b, int c, int d, int e, int f, int g, int h)
+   return e;
+ }
+ /* { dg-final { scan-tree-dump-times "= 0" 1 "reassoc1"} } */
+-/* { dg-final { cleanup-tree-dump "reassoc1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/reassoc-9.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/reassoc-9.c
+@@ -15,4 +15,3 @@ int main(int a, int b, int c, int d, int e, int f, int g, int h)
+    implementation does not allow easy roll-back without IL changes.  */
+ 
+ /* { dg-final { scan-tree-dump-times "= 20" 1 "reassoc1" { xfail *-*-* } } } */
+-/* { dg-final { cleanup-tree-dump "reassoc1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/recip-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/recip-1.c
+@@ -11,4 +11,3 @@ float e(float *x, float *y, float *z)
+ 
+ /* Look for only one division.  */
+ /* { dg-final { scan-tree-dump-times "= .* /" 1 "recip" } } */
+-/* { dg-final { cleanup-tree-dump "recip" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/recip-2.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/recip-2.c
+@@ -32,4 +32,3 @@ void e(float a, float b, float c, float d, float e, float f)
+ 
+ /* { dg-final { scan-tree-dump-times " / " 2 "recip" } } */
+ /* { dg-final { scan-tree-dump-times " \\* " 5 "recip" } } */
+-/* { dg-final { cleanup-tree-dump "recip" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/recip-3.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/recip-3.c
+@@ -24,4 +24,3 @@ float h ()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times " / " 1 "recip" } } */
+-/* { dg-final { cleanup-tree-dump "recip" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/recip-4.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/recip-4.c
+@@ -42,4 +42,3 @@ float g ()
+ }
+ 
+ /* { dg-final { scan-tree-dump-not "reciptmp" "recip" } } */
+-/* { dg-final { cleanup-tree-dump "recip" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/recip-5.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/recip-5.c
+@@ -27,6 +27,4 @@ double f1(double y, double z, double w, double j, double k)
+ 
+ /* { dg-final { scan-tree-dump-times " / " 3 "recip" } } */
+ /* { dg-final { scan-tree-dump-times " / " 2 "optimized" { xfail *-*-* } } } */
+-/* { dg-final { cleanup-tree-dump "recip" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/recip-6.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/recip-6.c
+@@ -26,5 +26,4 @@ void f1(double y, double z, double w)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times " / " 1 "recip" } } */
+-/* { dg-final { cleanup-tree-dump "recip" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/recip-7.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/recip-7.c
+@@ -27,5 +27,4 @@ void f(int x, double z, double w)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times " / " 1 "recip" } } */
+-/* { dg-final { cleanup-tree-dump "recip" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/restrict-3.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/restrict-3.c
+@@ -15,4 +15,3 @@ void f(int * __restrict__ r,
+ /* We should apply store motion to the store to *r.  */
+ 
+ /* { dg-final { scan-tree-dump "Executing store motion of \\\*r" "lim1" } } */
+-/* { dg-final { cleanup-tree-dump "lim1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/restrict-4.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/restrict-4.c
+@@ -23,4 +23,3 @@ bar (int *x, int y)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "return 1;" 2 "optimized" { xfail *-*-* } } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/restrict-5.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/restrict-5.c
+@@ -21,4 +21,3 @@ void g(int *r, int a[16][16], int b[16][16], int i, int j)
+ /* We should apply store motion to the store to *r.  */
+ 
+ /* { dg-final { scan-tree-dump "Executing store motion of \\\*r" "lim1" } } */
+-/* { dg-final { cleanup-tree-dump "lim1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/sccp-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/sccp-1.c
+@@ -12,4 +12,3 @@ int main(int argc, char* argv[])
+ /* There should be no loop left.  */
+ 
+ /* { dg-final { scan-tree-dump-times "goto" 0 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/scev-10.c
+@@ -0,0 +1,23 @@
++/* { dg-do compile } */
++/* { dg-options "-O2 -fdump-tree-ivopts-details" } */
++
++int *a;
++
++int
++foo (signed char s, signed char l)
++{
++  signed char i;
++  int sum = 0;
++
++  for (i = s; i < l; i++)
++    {
++      sum += a[i];
++    }
++
++  return sum;
++}
++
++/* Address of array reference is scev.  */
++/* { dg-final { scan-tree-dump-times "use \[0-9\]\n  address" 1 "ivopts" } } */
++
++
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/scev-3.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/scev-3.c
+@@ -15,5 +15,4 @@ f(int k)
+         }
+ }
+ 
+-/* { dg-final { scan-tree-dump-times "&a" 1 "optimized" { xfail { lp64 || llp64 } } } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
++/* { dg-final { scan-tree-dump-times "&a" 1 "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/scev-4.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/scev-4.c
+@@ -20,5 +20,4 @@ f(int k)
+         }
+ }
+ 
+-/* { dg-final { scan-tree-dump-times "&a" 1 "optimized" { xfail { lp64 || llp64 } } } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
++/* { dg-final { scan-tree-dump-times "&a" 1 "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/scev-5.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/scev-5.c
+@@ -16,4 +16,3 @@ f(int k)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "&a" 1 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/scev-6.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/scev-6.c
+@@ -20,4 +20,3 @@ int main()
+    of the loop.  */
+ 
+ /* { dg-final { scan-tree-dump-not "abort" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/scev-7.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/scev-7.c
+@@ -15,4 +15,3 @@ void foo (struct struct_t* sp, int start, int end)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "Simplify PEELED_CHREC into POLYNOMIAL_CHREC" 1 "sccp" } } */
+-/* { dg-final { cleanup-tree-dump "sccp" } } */
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/scev-8.c
+@@ -0,0 +1,62 @@
++/* { dg-do compile } */
++/* { dg-options "-O2 -fdump-tree-ivopts-details" } */
++
++int *a;
++
++int
++foo1 (long long s, long long l)
++{
++  long long i;
++
++  for (i = s; i < l; i++)
++    {
++      a[(short)i] = 0;
++    }
++  return 0;
++}
++
++int
++foo2 (unsigned char s, unsigned char l, unsigned char c)
++{
++  unsigned char i, step = 1;
++  int sum = 0;
++
++  for (i = s; i < l; i++)
++    {
++      sum += a[c];
++      c += step;
++    }
++
++  return sum;
++}
++
++int
++foo3 (unsigned char s, unsigned char l, unsigned char c)
++{
++  unsigned char i;
++  int sum = 0;
++
++  for (i = s; i != l; i += c)
++    {
++      sum += a[i];
++    }
++
++  return sum;
++}
++
++int
++foo4 (unsigned char s, unsigned char l)
++{
++  unsigned char i;
++  int sum = 0;
++
++  for (i = s; i != l; i++)
++    {
++      sum += a[i];
++    }
++
++  return sum;
++}
++
++/* Address of array references are not scevs.  */
++/* { dg-final { scan-tree-dump-not "use \[0-9\]\n  address" "ivopts" } } */
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/scev-9.c
+@@ -0,0 +1,22 @@
++/* { dg-do compile } */
++/* { dg-options "-O2 -fdump-tree-ivopts-details" } */
++
++int *a;
++
++int
++foo (unsigned char s, unsigned char l)
++{
++  unsigned char i;
++  int sum = 0;
++
++  for (i = s; i < l; i += 1)
++    {
++      sum += a[i];
++    }
++
++  return sum;
++}
++
++/* Address of array reference is scev.  */
++/* { dg-final { scan-tree-dump-times "use \[0-9\]\n  address" 1 "ivopts" } } */
++
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/scev-cast.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/scev-cast.c
+@@ -25,4 +25,3 @@ void tst(void)
+ /* { dg-final { scan-tree-dump-times "& 255" 1 "optimized" } } */
+ /* { dg-final { scan-tree-dump-times "= \\(signed char\\)" 1 "optimized" } } */
+ 
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/slsr-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/slsr-1.c
+@@ -19,4 +19,3 @@ f (int *p, unsigned int n)
+ /* { dg-final { scan-tree-dump-times "\\+ 32|\\, 32>" 1 "optimized" { target { int16 } } } } */
+ /* { dg-final { scan-tree-dump-times "\\+ 192|\\, 192>" 1 "optimized" { target { int32 } } } } */
+ /* { dg-final { scan-tree-dump-times "\\+ 96|\\, 96>" 1 "optimized" { target { int16 } } } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/slsr-10.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/slsr-10.c
+@@ -20,4 +20,3 @@ f (int s, int c)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times " \\* " 1 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/slsr-11.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/slsr-11.c
+@@ -21,4 +21,3 @@ f (int s, long c)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times " \\* " 1 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/slsr-12.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/slsr-12.c
+@@ -27,4 +27,3 @@ f (int s, int c)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times " \\* " 3 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/slsr-13.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/slsr-13.c
+@@ -22,4 +22,3 @@ f (int s, int c)
+ 
+ /* { dg-final { scan-tree-dump-times " \\* 4" 2 "optimized" } } */
+ /* { dg-final { scan-tree-dump-times " \\* 5" 0 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/slsr-14.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/slsr-14.c
+@@ -29,4 +29,3 @@ f (int n, int c, int s)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times " \\* " 1 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/slsr-15.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/slsr-15.c
+@@ -24,4 +24,3 @@ f (int n, int c, int s)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times " \\* " 1 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/slsr-16.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/slsr-16.c
+@@ -25,4 +25,3 @@ f (int n, int c, int s)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times " \\* " 1 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/slsr-17.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/slsr-17.c
+@@ -28,4 +28,3 @@ f (int n, int c, int s)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times " \\* " 0 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/slsr-18.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/slsr-18.c
+@@ -29,4 +29,3 @@ f (int n, int c, int s)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times " \\* " 1 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/slsr-19.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/slsr-19.c
+@@ -18,5 +18,4 @@ f (int c, int s)
+ 
+ /* { dg-final { scan-tree-dump-times " \\* " 2 "optimized" } } */
+ /* { dg-final { scan-tree-dump-times " \\* 2;" 1 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/slsr-2.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/slsr-2.c
+@@ -15,4 +15,3 @@ f (int *p, int n)
+ /* { dg-final { scan-tree-dump-times "\\+ 72|\\, 72>" 1 "optimized" { target { int16 } } } } */
+ /* { dg-final { scan-tree-dump-times "\\+ 96|\\, 96>" 1 "optimized" { target { int32 } } } } */
+ /* { dg-final { scan-tree-dump-times "\\+ 48|\\, 48>" 1 "optimized" { target { int16 } } } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/slsr-20.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/slsr-20.c
+@@ -18,4 +18,3 @@ f (int c, int s)
+ 
+ /* { dg-final { scan-tree-dump-times " \\* s" 1 "optimized" } } */
+ /* { dg-final { scan-tree-dump-times " \\* 2" 1 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/slsr-21.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/slsr-21.c
+@@ -29,4 +29,3 @@ f (int n, int x, int stride)
+ 
+ /* { dg-final { scan-tree-dump-times " \\* stride" 1 "optimized" } } */
+ /* { dg-final { scan-tree-dump-times " \\* 3" 1 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/slsr-22.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/slsr-22.c
+@@ -26,4 +26,3 @@ f (int n, int x, int stride)
+ 
+ /* { dg-final { scan-tree-dump-times " \\* stride" 1 "optimized" } } */
+ /* { dg-final { scan-tree-dump-times " \\* 3" 1 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/slsr-23.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/slsr-23.c
+@@ -26,4 +26,3 @@ f (int n, int x, int stride)
+ 
+ /* { dg-final { scan-tree-dump-times " \\* stride" 1 "optimized" } } */
+ /* { dg-final { scan-tree-dump-times " \\* 3" 1 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/slsr-24.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/slsr-24.c
+@@ -28,4 +28,3 @@ f (int n, int x, int stride)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times " \\* " 1 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/slsr-25.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/slsr-25.c
+@@ -28,4 +28,3 @@ f (int n, int x, int stride)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times " \\* " 1 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/slsr-26.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/slsr-26.c
+@@ -29,4 +29,3 @@ f (int n, int x, int stride)
+ 
+ /* { dg-final { scan-tree-dump-times " \\* stride" 1 "optimized" } } */
+ /* { dg-final { scan-tree-dump-times " \\* 3" 1 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/slsr-27.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/slsr-27.c
+@@ -20,4 +20,3 @@ f (struct x *p, unsigned int n)
+ /* { dg-final { scan-tree-dump-times "\\* 2;" 1 "dom2" { target { int16 } } } } */
+ /* { dg-final { scan-tree-dump-times "p_\\d\+\\(D\\) \\+ \[^\r\n\]*_\\d\+;" 1 "dom2" } } */
+ /* { dg-final { scan-tree-dump-times "MEM\\\[\\(struct x \\*\\)\[^\r\n\]*_\\d\+" 3 "dom2" } } */
+-/* { dg-final { cleanup-tree-dump "dom2" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/slsr-28.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/slsr-28.c
+@@ -24,4 +24,3 @@ f (struct x *p, unsigned int n)
+ /* { dg-final { scan-tree-dump-times "\\* 2;" 1 "dom2" { target { int16 } } } } */
+ /* { dg-final { scan-tree-dump-times "p_\\d\+\\(D\\) \\+ \[^\r\n\]*_\\d\+" 1 "dom2" } } */
+ /* { dg-final { scan-tree-dump-times "MEM\\\[\\(struct x \\*\\)\[^\r\n\]*_\\d\+" 9 "dom2" } } */
+-/* { dg-final { cleanup-tree-dump "dom2" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/slsr-29.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/slsr-29.c
+@@ -26,4 +26,3 @@ f (struct x *p, unsigned int n)
+ /* { dg-final { scan-tree-dump-times "\\* 2;" 1 "dom2" { target { int16 } } } } */
+ /* { dg-final { scan-tree-dump-times "p_\\d\+\\(D\\) \\+ \[^\r\n\]*_\\d\+" 1 "dom2" } } */
+ /* { dg-final { scan-tree-dump-times "MEM\\\[\\(struct x \\*\\)\[^\r\n\]*_\\d\+" 9 "dom2" } } */
+-/* { dg-final { cleanup-tree-dump "dom2" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/slsr-3.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/slsr-3.c
+@@ -22,4 +22,3 @@ foo (int a[], int b[], int i)
+ /* { dg-final { scan-tree-dump-times "\\+ 8|\\, 8>" 1 "optimized" { target { int32plus } } } } */
+ /* { dg-final { scan-tree-dump-times "\\+ 6|\\, 6>" 1 "optimized" { target { int16 } } } } */
+ /* { dg-final { scan-tree-dump-times "\\+ 12|\\, 12>" 1 "optimized" { target { int32 } } } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/slsr-30.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/slsr-30.c
+@@ -21,4 +21,3 @@ f (int s, long c)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times " \\* " 3 "dom2" } } */
+-/* { dg-final { cleanup-tree-dump "dom2" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/slsr-31.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/slsr-31.c
+@@ -24,4 +24,3 @@ f (int s, int c)
+ 
+ /* { dg-final { scan-tree-dump-times " \\* 2" 1 "optimized" } } */
+ /* { dg-final { scan-tree-dump-times " \\* -2" 0 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/slsr-32.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/slsr-32.c
+@@ -29,4 +29,3 @@ f (int s, int c, int i)
+ 
+ /* { dg-final { scan-tree-dump-times " \\* s" 1 "optimized" } } */
+ /* { dg-final { scan-tree-dump-times " \\* 2" 1 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/slsr-33.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/slsr-33.c
+@@ -28,4 +28,3 @@ f (int c, int i)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times " \\* " 1 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/slsr-34.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/slsr-34.c
+@@ -40,4 +40,3 @@ f (int c, int i)
+ 
+ /* { dg-final { scan-tree-dump-times " \\* " 1 "optimized" } } */
+ /* { dg-final { scan-tree-dump-times "PHI" 2 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/slsr-35.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/slsr-35.c
+@@ -25,4 +25,3 @@ f (int c, int i)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times " \\* " 1 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/slsr-36.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/slsr-36.c
+@@ -26,4 +26,3 @@ f (int s, int c, int i)
+ 
+ /* { dg-final { scan-tree-dump-times " \\* s" 1 "optimized" } } */
+ /* { dg-final { scan-tree-dump-times " \\* 2" 1 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/slsr-37.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/slsr-37.c
+@@ -30,4 +30,3 @@ f (int s, int c, int i)
+ 
+ /* { dg-final { scan-tree-dump-times " \\* s" 1 "optimized" } } */
+ /* { dg-final { scan-tree-dump-times " \\* 2" 1 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/slsr-38.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/slsr-38.c
+@@ -29,4 +29,3 @@ f (int c, int i)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times " \\* " 1 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/slsr-39.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/slsr-39.c
+@@ -23,4 +23,3 @@ void foo (arr_2 a2, int v1)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "Replacing reference: " 4 "slsr" } } */
+-/* { dg-final { cleanup-tree-dump "slsr" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/slsr-4.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/slsr-4.c
+@@ -33,5 +33,3 @@ f (int i)
+ /* { dg-final { scan-tree-dump-times "\\* 10" 1 "optimized" } } */
+ /* { dg-final { scan-tree-dump-times "\\+ 200" 1 "optimized" } } */
+ /* { dg-final { scan-tree-dump-times "\\+ 40" 1 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "slsr" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/slsr-41.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/slsr-41.c
+@@ -21,4 +21,3 @@ void foo (arr_2 a2, int v1)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "Replacing reference: " 5 "slsr" } } */
+-/* { dg-final { cleanup-tree-dump "slsr" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/slsr-5.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/slsr-5.c
+@@ -19,4 +19,3 @@ f (int s, int c)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times " \\* " 1 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/slsr-6.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/slsr-6.c
+@@ -22,4 +22,3 @@ f (int s, char *c, char *x1, char *x2, char *x3)
+ 
+ /* There will be four ' * ' instances for the parms, one in the code.  */
+ /* { dg-final { scan-tree-dump-times " \\* " 5 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/slsr-7.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/slsr-7.c
+@@ -19,4 +19,3 @@ f (int s, int c)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times " \\* " 1 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/slsr-8.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/slsr-8.c
+@@ -21,4 +21,3 @@ f (int s, int *c)
+    added), 1 parm, 2 in the code.  The second one in the code can be
+    a widening mult.  */
+ /* { dg-final { scan-tree-dump-times " w?\\* " 7 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/slsr-9.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/slsr-9.c
+@@ -20,4 +20,3 @@ f (int s, int c)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times " \\* " 1 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/sra-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/sra-1.c
+@@ -72,4 +72,3 @@ copystruct111111 (teststruct param)
+ 
+ /* There should be no referenc to link_error. */
+ /* { dg-final { scan-tree-dump-times "link_error" 0 "optimized"} } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/sra-10.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/sra-10.c
+@@ -16,4 +16,3 @@ void foo (struct S *s, int i)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "disappear" 0 "optimized"} } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/sra-11.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/sra-11.c
+@@ -30,4 +30,3 @@ int foo2 (void)
+ 
+ /* { dg-final { scan-tree-dump-times "Created a replacement for s1" 0 "esra"} } */
+ /* { dg-final { scan-tree-dump-times "Created a replacement for s2" 1 "esra"} } */
+-/* { dg-final { cleanup-tree-dump "esra" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/sra-12.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/sra-12.c
+@@ -22,4 +22,3 @@ int foo (struct S *p)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "l;" 0 "release_ssa" { target { ! "aarch64*-*-* avr*-*-* nds32*-*-* sh*-*-*" } } } } */
+-/* { dg-final { cleanup-tree-dump "release_ssa" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/sra-2.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/sra-2.c
+@@ -25,4 +25,3 @@ copystruct11 (teststruct *param)
+ 
+ /* There should be no reference to link_error. */
+ /* { dg-final { scan-tree-dump-times "link_error" 0 "optimized" { xfail *-*-* } } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/sra-3.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/sra-3.c
+@@ -25,4 +25,3 @@ copystruct1 (void)
+ 
+ /* There should be no reference to link_error. */
+ /* { dg-final { scan-tree-dump-times "link_error" 0 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/sra-4.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/sra-4.c
+@@ -22,4 +22,3 @@ vector int f(vector int t1, vector int t2)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "st" 0 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/sra-5.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/sra-5.c
+@@ -72,4 +72,3 @@ copyunion111111 (testunion param)
+ 
+ /* There should be no reference to link_error. */
+ /* { dg-final { scan-tree-dump-times "link_error" 0 "optimized"} } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/sra-6.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/sra-6.c
+@@ -34,8 +34,6 @@ void cow (int i)
+ /* { dg-final { scan-tree-dump "expr = b.i1"  "esra"} } */
+ /* { dg-final { scan-tree-dump "expr = c.d"  "esra"} } */
+ /* { dg-final { scan-tree-dump "expr = c.i1"  "esra"} } */
+-/* { dg-final { cleanup-tree-dump "esra" } } */
+ 
+ /* There should be no reference to link_error.  */
+ /* { dg-final { scan-tree-dump-times "link_error" 0 "optimized"} } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/sra-7.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/sra-7.c
+@@ -10,4 +10,3 @@ void a(s *s1, s *s2)
+ 
+ /* Struct copies should not be split into members.  */
+ /* { dg-final { scan-tree-dump "\\\*s1_.\\\(D\\\) = \\\*s2"  "optimized"} } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/sra-8.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/sra-8.c
+@@ -32,4 +32,3 @@ void bar2(int i, int j)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "Created a replacement" 0 "esra"} } */
+-/* { dg-final { cleanup-tree-dump "esra" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/sra-9.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/sra-9.c
+@@ -17,4 +17,3 @@ int foo (int d)
+ 
+ /* There should be no reference to s.b.  */
+ /* { dg-final { scan-tree-dump-times "= s\.b" 0 "optimized"} } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-1.c
+@@ -72,4 +72,3 @@ void test11111 (int p, int q, int r)
+ /* There should be not link_error calls, if there is any the
+    optimization has failed */
+ /* { dg-final { scan-tree-dump-times "link_error" 0 "ccp1"} } */
+-/* { dg-final { cleanup-tree-dump "ccp1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-10.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-10.c
+@@ -33,4 +33,3 @@ middle:
+ 
+ /* There should be no calls to strlen.  */
+ /* { dg-final { scan-tree-dump-times "strlen" 0 "fab1"} } */
+-/* { dg-final { cleanup-tree-dump "fab1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-11.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-11.c
+@@ -39,4 +39,3 @@ int test1111 (int param)
+ 
+ /* All ifs should be eliminated. */
+ /* { dg-final { scan-tree-dump-times "if " 0 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-13.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-13.c
+@@ -10,5 +10,4 @@ int foo()
+ }
+ 
+ /* { dg-final { scan-tree-dump "return 0;" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-14.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-14.c
+@@ -18,4 +18,3 @@ void bar (void)
+ 
+ /* Everything except for the "i = 0" assignment should get removed.  */
+ /* { dg-final { scan-tree-dump-times "if" 0 "optimized" { xfail *-*-* } } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-15.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-15.c
+@@ -46,4 +46,3 @@ void test3 (int param1, int param2)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "link_error" 2 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-16.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-16.c
+@@ -19,4 +19,3 @@ int test2 (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "return 0;" 2 "ccp1" } } */
+-/* { dg-final { cleanup-tree-dump "ccp1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-17.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-17.c
+@@ -29,4 +29,3 @@ int foobar(void)
+ /* { dg-final { scan-tree-dump "= i_.;" "ccp1" } } */
+ /* { dg-final { scan-tree-dump "= f.i;" "ccp1" } } */
+ /* { dg-final { scan-tree-dump "= g.i;" "ccp1" } } */
+-/* { dg-final { cleanup-tree-dump "ccp1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-18.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-18.c
+@@ -17,4 +17,3 @@ void func2(int* val)
+ 
+ /* { dg-final { scan-tree-dump-not "a \\\(" "ccp1" } } */
+ /* { dg-final { scan-tree-dump-not "b \\\(" "ccp1" } } */
+-/* { dg-final { cleanup-tree-dump "ccp1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-19.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-19.c
+@@ -13,4 +13,3 @@ int g()
+ }
+ 
+ /* { dg-final { scan-tree-dump "= MEM\\\[\\\(int \\\*\\\)&a\\\];" "ccp1" } } */
+-/* { dg-final { cleanup-tree-dump "ccp1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-2.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-2.c
+@@ -169,4 +169,3 @@ int test99999 (void)
+ /* There should be not link_error calls, if there is any the
+    optimization has failed */
+ /* { dg-final { scan-tree-dump-times "link_error" 0 "optimized"} } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-20.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-20.c
+@@ -12,4 +12,3 @@ int foo (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump "return 10;" "ccp1" } } */
+-/* { dg-final { cleanup-tree-dump "ccp1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-21.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-21.c
+@@ -26,4 +26,3 @@ int bar (void)
+ 
+ /* { dg-final { scan-tree-dump-times "a.b.i" 1 "ccp1" } } */
+ /* { dg-final { scan-tree-dump-times "MEM\\\[\\\(struct B \\\*\\\)&a\\\].i" 1 "ccp1" } } */
+-/* { dg-final { cleanup-tree-dump "ccp1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-22.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-22.c
+@@ -12,4 +12,3 @@ int foo (unsigned b)
+ }
+ 
+ /* { dg-final { scan-tree-dump "return 1;" "ccp1" } } */
+-/* { dg-final { cleanup-tree-dump "ccp1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-23.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-23.c
+@@ -17,4 +17,3 @@ int foo (void)
+ 
+ /* { dg-final { scan-tree-dump "MEM\\\[\\\(int \\\*\\\)&a \\\+ 2B\\\]" "ccp1" { target { int16 } } } } */
+ /* { dg-final { scan-tree-dump "MEM\\\[\\\(int \\\*\\\)&a \\\+ 4B\\\]" "ccp1" { target { int32 } } } } */
+-/* { dg-final { cleanup-tree-dump "ccp1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-24.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-24.c
+@@ -19,5 +19,4 @@ int bar()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "return 1;" 2 "ccp1" } } */
+-/* { dg-final { cleanup-tree-dump "ccp1" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-27.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-27.c
+@@ -21,4 +21,3 @@ f2 ()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "memcpy\[^\n\]*123456" 2 "ccp1" } } */
+-/* { dg-final { cleanup-tree-dump "ccp1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-28.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-28.c
+@@ -23,4 +23,3 @@ int main(void)
+ 
+ /* { dg-final { scan-tree-dump-times "= p;" 0 "ccp1" } } */
+ /* { dg-final { scan-tree-dump-times "= q;" 0 "ccp1" } } */
+-/* { dg-final { cleanup-tree-dump "ccp1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-29.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-29.c
+@@ -8,4 +8,3 @@ int foo (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump "return 0;" "ccp2" } } */
+-/* { dg-final { cleanup-tree-dump "ccp2" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-3.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-3.c
+@@ -134,4 +134,3 @@ int* test666 (int * __restrict__ rp1, int * __restrict__ rp2, int *p1)
+ /* ??? While we indeed don't handle some of these, a couple of the
+    restrict tests are incorrect.  */
+ /* { dg-final { scan-tree-dump-times "link_error" 0 "ccp2" { xfail *-*-* } } } */
+-/* { dg-final { cleanup-tree-dump "ccp2" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-30.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-30.c
+@@ -12,4 +12,3 @@ foo (int a)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "Folding predicate b_.* > 300 to 0" 1 "ccp1" } } */
+-/* { dg-final { cleanup-tree-dump "ccp1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-31.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-31.c
+@@ -18,4 +18,3 @@ int g (int i, int j)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "Folding predicate.*to 1" 1 "ccp1" } } */
+-/* { dg-final { cleanup-tree-dump "ccp1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-34.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-34.c
+@@ -9,4 +9,3 @@ int foo (int x)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "\\+" 1 "ccp1" } } */
+-/* { dg-final { cleanup-tree-dump "ccp1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-7.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-7.c
+@@ -24,4 +24,3 @@ int test7 (int a)
+ /* There should be not link_error calls, if there is any the
+    optimization has failed */
+ /* { dg-final { scan-tree-dump-times "link_error" 0 "optimized"} } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-9.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-9.c
+@@ -52,4 +52,3 @@ test99999 (int *arr, int j)
+ /* There should be no link_error calls, if there is any, the
+    optimization has failed */
+ /* { dg-final { scan-tree-dump-times "link_error" 0 "optimized"} } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-copyprop-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-copyprop-1.c
+@@ -9,4 +9,3 @@ int foo(A *a, int i)
+ }
+ 
+ /* { dg-final { scan-tree-dump "return i" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-copyprop-2.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-copyprop-2.c
+@@ -10,4 +10,3 @@ f(void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-not "PHI" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-dce-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-dce-1.c
+@@ -11,4 +11,3 @@ q()
+ }
+ /* There should be no IF conditionals.  */
+ /* { dg-final { scan-tree-dump-times "if " 0 "dce2"} } */
+-/* { dg-final { cleanup-tree-dump "dce2" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-dce-2.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-dce-2.c
+@@ -14,4 +14,3 @@ void q(void)
+ }
+ /* There should be no IF conditionals.  */
+ /* { dg-final { scan-tree-dump-times "if " 0 "dce2"} } */
+-/* { dg-final { cleanup-tree-dump "dce2" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-dce-3.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-dce-3.c
+@@ -32,4 +32,3 @@ int main(void)
+ /* And one if (for the exit condition of the loop):  */
+ /* { dg-final { scan-tree-dump-times "if " 1 "cddce1" } } */
+ 
+-/* { dg-final { cleanup-tree-dump "cddce1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-dce-4.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-dce-4.c
+@@ -17,4 +17,3 @@ int foo(int b)
+ /* Verify DCE removes all accesses to a but the last store and the
+    read from a[2].  */
+ /* { dg-final { scan-tree-dump-times "a\\\[\[^\n\]\\\]" 2 "cddce1" } } */
+-/* { dg-final { cleanup-tree-dump "cddce1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-dce-5.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-dce-5.c
+@@ -12,4 +12,3 @@ struct X foo(int b)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "x.i =" 1 "cddce1" } } */
+-/* { dg-final { cleanup-tree-dump "cddce1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-dce-6.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-dce-6.c
+@@ -21,4 +21,3 @@ void t(int x)
+ /* The global store should not prevent deleting the store to p->field.  */
+ 
+ /* { dg-final { scan-tree-dump-not "p_.->field" "cddce1" } } */
+-/* { dg-final { cleanup-tree-dump "cddce1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-dce-7.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-dce-7.c
+@@ -30,4 +30,3 @@ int main()
+    to the allocated memory.  */
+ 
+ /* { dg-final { scan-tree-dump-times "\\\*D" 0 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-dce-8.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-dce-8.c
+@@ -9,4 +9,3 @@ int main()
+ }
+ 
+ /* { dg-final { scan-tree-dump-not "malloc" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-ccp-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-ccp-1.c
+@@ -15,4 +15,3 @@ ccp(int b)
+ }
+ /* We should propagate constant 4 into return.  */
+ /* { dg-final { scan-tree-dump-times "return 4" 1 "optimized"} } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-cse-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-cse-1.c
+@@ -13,4 +13,3 @@ threading(int a,int b)
+ }
+ /* We should thread the jump twice and eliminate it.  */
+ /* { dg-final { scan-tree-dump-times "Replaced.* t " 1 "fre1"} } */
+-/* { dg-final { cleanup-tree-dump "fre1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-cse-2.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-cse-2.c
+@@ -21,4 +21,3 @@ foo ()
+    DOM is not able to perform this optimization.  */
+ 
+ /* { dg-final { scan-tree-dump "return 28;" "optimized" { xfail aarch64*-*-* alpha*-*-* hppa*-*-* powerpc*-*-* sparc*-*-* s390*-*-* } } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-cse-3.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-cse-3.c
+@@ -28,4 +28,3 @@ main()
+ }
+ 
+ /* { dg-final { scan-tree-dump "= PHI <\[01\]\\\(.\\\), \[01\]\\\(.\\\)>" "dom1" } } */
+-/* { dg-final { cleanup-tree-dump "dom1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-dse-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-dse-1.c
+@@ -16,4 +16,3 @@ bar (int i)
+ }
+ 
+ /* { dg-final { scan-tree-dump-not "x =" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-1.c
+@@ -15,4 +15,3 @@ threading(int a,int b)
+ }
+ /* We should thread the jump twice and elliminate it.  */
+ /* { dg-final { scan-tree-dump-times "Threaded" 2 "dom1"} } */
+-/* { dg-final { cleanup-tree-dump "dom1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-2.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-2.c
+@@ -115,5 +115,3 @@ void dont_thread_4 (int a, int nfirst)
+ /* { dg-final { scan-tree-dump-times "Jumps threaded: 2" 0 "vrp1"} } */
+ /* { dg-final { scan-tree-dump-times "Jumps threaded: 1" 0 "dom1"} } */
+ /* { dg-final { scan-tree-dump-times "Jumps threaded: 2" 1 "dom1"} } */
+-/* { dg-final { cleanup-tree-dump "dom1" } } */
+-/* { dg-final { cleanup-tree-dump "vrp1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-4.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-4.c
+@@ -76,5 +76,4 @@ bitmap_ior_and_compl (bitmap dst, const_bitmap a, const_bitmap b,
+ 	 skipping the known-true "b_elt && kill_elt" in the second
+ 	 condition.  */
+ /* { dg-final { scan-tree-dump-times "Threaded" 4 "dom1" { target logical_op_short_circuit } } } */
+-/* { dg-final { cleanup-tree-dump "dom1" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-5.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-5.c
+@@ -20,4 +20,3 @@ void f2(int dst[3], int R)
+ }
+ 
+ /* { dg-final { scan-tree-dump "Threaded jump" "dom1" } } */
+-/* { dg-final { cleanup-tree-dump "dom1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-6.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-6.c
+@@ -1,7 +1,6 @@
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -fdump-tree-dom1-details" } */
+ /* { dg-final { scan-tree-dump-times "FSM" 6 "dom1" } } */
+-/* { dg-final { cleanup-tree-dump "dom1" } } */
+ 
+ int sum0, sum1, sum2, sum3;
+ int foo (char *s, char **ret)
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-7.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-7.c
+@@ -1,7 +1,6 @@
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -fdump-tree-dom1-details" } */
+ /* { dg-final { scan-tree-dump-times "FSM" 19 "dom1" } } */
+-/* { dg-final { cleanup-tree-dump "dom1" } } */
+ 
+ enum STATE {
+   S0=0,
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-1.c
+@@ -23,4 +23,3 @@ foo (int a, int b, int c)
+ /* The return *p should be turned into return 4.  */
+ /* { dg-final { scan-tree-dump-times " return 4" 1 "dse1"} } */
+ 
+-/* { dg-final { cleanup-tree-dump "dse1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-10.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-10.c
+@@ -1520,4 +1520,3 @@ void func_encode(void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times " xxxinfo = {}" 1 "dse1"} } */
+-/* { dg-final { cleanup-tree-dump "dse1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-11.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-11.c
+@@ -18,4 +18,3 @@ void bar(int *p)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "Deleted dead store" 2 "dse1" } } */
+-/* { dg-final { cleanup-tree-dump "dse1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-12.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-12.c
+@@ -9,4 +9,3 @@ void foo (int *p, int b)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "\\\*p" 1 "dse1" } } */
+-/* { dg-final { cleanup-tree-dump "dse1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-13.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-13.c
+@@ -18,4 +18,3 @@ f2 (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "Deleted dead store" 2 "dse1" } } */
+-/* { dg-final { cleanup-tree-dump "dse1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-14.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-14.c
+@@ -18,4 +18,3 @@ f2 (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "Deleted dead store" 2 "dse1" } } */
+-/* { dg-final { cleanup-tree-dump "dse1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-15.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-15.c
+@@ -21,4 +21,3 @@ void bar (int *i)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "Deleted dead store" 2 "dse1" } } */
+-/* { dg-final { cleanup-tree-dump "dse1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-16.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-16.c
+@@ -15,4 +15,3 @@ void foo (struct X *x, int i)
+ }
+ 
+ /* { dg-final { scan-tree-dump "Deleted dead store" "dse1" } } */
+-/* { dg-final { cleanup-tree-dump "dse1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-2.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-2.c
+@@ -21,4 +21,3 @@ foo ()
+ /* { dg-final { scan-tree-dump-times " = 3" 0 "dse1"} } */
+ /* { dg-final { scan-tree-dump-times " = 4" 1 "dse1"} } */
+ 
+-/* { dg-final { cleanup-tree-dump "dse1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-3.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-3.c
+@@ -12,5 +12,4 @@ void f(void)
+ /* { dg-final { scan-tree-dump-times "Bool_Glob = 0" 0 "dse1"} } */
+ /* { dg-final { scan-tree-dump-times "Bool_Glob = 1" 1 "dse1"} } */
+ 
+-/* { dg-final { cleanup-tree-dump "dse1" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-4.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-4.c
+@@ -12,4 +12,3 @@ foo( int *a)
+ /* { dg-final { scan-tree-dump-times "= 5" 0 "dse1"} } */
+ /* { dg-final { scan-tree-dump-times "= 3" 1 "dse1"} } */
+ 
+-/* { dg-final { cleanup-tree-dump "dse1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-5.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-5.c
+@@ -29,5 +29,4 @@ f1 (int i, int j, int k)
+ /* { dg-final { scan-tree-dump-times "i = 5" 1 "optimized" { xfail *-*-* }} } */
+ /* { dg-final { scan-tree-dump-times "<L.*>:;\[\n\t \]*\\*p = 5" 1 "optimized" { xfail *-*-*}} } */
+ 
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-6.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-6.c
+@@ -16,4 +16,3 @@ int foo11 (int c)
+ /* { dg-final { scan-tree-dump-times "local1 = " 1 "dse1"} } */
+ /* { dg-final { scan-tree-dump-times "local2 = " 1 "dse1"} } */
+ 
+-/* { dg-final { cleanup-tree-dump "dse1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-7.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-7.c
+@@ -20,4 +20,3 @@ int foo1 (void)
+ /* { dg-final { scan-tree-dump-times "glob2 = " 1 "dse1"} } */
+ /* { dg-final { scan-tree-dump-times "return 5" 1 "dse1"} } */
+ 
+-/* { dg-final { cleanup-tree-dump "dse1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-9.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-9.c
+@@ -12,4 +12,3 @@ foo ()
+ 
+ /* We should eliminate the first assignment.  */
+ /* { dg-final { scan-tree-dump-times "VDEF" 2 "dse1" { xfail *-*-* } } } */
+-/* { dg-final { cleanup-tree-dump "dse1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-1.c
+@@ -12,4 +12,3 @@ int f(int *a)
+ }
+ 
+ /* { dg-final { scan-tree-dump "Replaced \\\*\[ac\]_\[^\n\].*with t_" "fre1" } } */
+-/* { dg-final { cleanup-tree-dump "fre1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-10.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-10.c
+@@ -23,4 +23,3 @@ void __frame_state_for (volatile char *state_in, int x)
+    first store.  Thus, this is XFAILed.  */
+ 
+ /* { dg-final { scan-tree-dump "Insertions: 2" "pre" { xfail *-*-* } } } */
+-/* { dg-final { cleanup-tree-dump "pre" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-11.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-11.c
+@@ -23,4 +23,3 @@ foo (int y)
+ }
+ 
+ /* { dg-final { scan-tree-dump "Replaced S\\\[5\\\].x with 4" "fre1" } } */
+-/* { dg-final { cleanup-tree-dump "fre1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-12.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-12.c
+@@ -23,4 +23,3 @@ foo (int y)
+ }
+ 
+ /* { dg-final { scan-tree-dump "Replaced S\\\[5\\\].x with 4" "fre1" } } */
+-/* { dg-final { cleanup-tree-dump "fre1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-13.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-13.c
+@@ -24,4 +24,3 @@ void foo(double (*q)[4], struct Foo *tmp1)
+ }
+ 
+ /* { dg-final { scan-tree-dump "Replaced tmp1_.\\\(D\\\)->data with &a" "fre1" } } */
+-/* { dg-final { cleanup-tree-dump "fre1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-14.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-14.c
+@@ -28,4 +28,3 @@ void foo(double (*q)[4])
+ }
+ 
+ /* { dg-final { scan-tree-dump "Replaced tmp1.data with &a" "fre1" } } */
+-/* { dg-final { cleanup-tree-dump "fre1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-15.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-15.c
+@@ -27,4 +27,3 @@ void foo(double (*q)[4])
+ }
+ 
+ /* { dg-final { scan-tree-dump "Replaced" "fre1" } } */
+-/* { dg-final { cleanup-tree-dump "fre1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-16.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-16.c
+@@ -15,4 +15,3 @@ int foo(int b, int c)
+ }
+ 
+ /* { dg-final { scan-tree-dump-not "link_error" "fre1" } } */
+-/* { dg-final { cleanup-tree-dump "fre1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-17.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-17.c
+@@ -19,5 +19,4 @@ int foo(int i, int j, int k)
+ }
+ 
+ /* { dg-final { scan-tree-dump "Replaced f.doms\\\[0\\\].dom with i_" "fre1" } } */
+-/* { dg-final { cleanup-tree-dump "fre1" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-18.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-18.c
+@@ -25,4 +25,3 @@ int f(struct a *c)
+ /* We should have CSEd the load from c->a.  */
+ 
+ /* { dg-final { scan-tree-dump-times "c_.*\\\.a" 1 "fre1" } } */
+-/* { dg-final { cleanup-tree-dump "fre1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-19.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-19.c
+@@ -28,4 +28,3 @@ int f(struct a *c)
+ /* We should have CSEd the load from c->a.  */
+ 
+ /* { dg-final { scan-tree-dump-times "c_.*\\\.a" 1 "fre1" } } */
+-/* { dg-final { cleanup-tree-dump "fre1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-2.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-2.c
+@@ -15,4 +15,3 @@ foo (long a)
+ }
+ 
+ /* { dg-final { scan-tree-dump "Replaced \\\(short int\\\) c_.*with b_" "fre1" } } */
+-/* { dg-final { cleanup-tree-dump "fre1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-20.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-20.c
+@@ -17,4 +17,3 @@ L2:
+ }
+ 
+ /* { dg-final { scan-tree-dump "return 0;" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-21.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-21.c
+@@ -23,4 +23,3 @@ void g(void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-not "a\\\.? = " "fre1" } } */
+-/* { dg-final { cleanup-tree-dump "fre1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-22.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-22.c
+@@ -12,4 +12,3 @@ int foo (void)
+ /* We should eliminate the redundant load of i.  */
+ 
+ /* { dg-final { scan-tree-dump-not "= i;" "fre1" } } */
+-/* { dg-final { cleanup-tree-dump "fre1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-23.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-23.c
+@@ -18,4 +18,3 @@ int f(int t, int a, int b)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "PHI" 1 "fre1" } } */
+-/* { dg-final { cleanup-tree-dump "fre1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-24.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-24.c
+@@ -31,4 +31,3 @@ int bazzoo (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "return 0;" 4 "fre1" } } */
+-/* { dg-final { cleanup-tree-dump "fre1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-25.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-25.c
+@@ -15,4 +15,3 @@ int foo (struct X *p)
+ /* We should optimize this to return 0.  */
+ 
+ /* { dg-final { scan-tree-dump "return 0;" "fre1" } } */
+-/* { dg-final { cleanup-tree-dump "fre1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-26.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-26.c
+@@ -16,4 +16,3 @@ int foo (union U *p)
+ 
+ /* avr has 16 bit int and 32 bit float */
+ /* { dg-final { scan-tree-dump "Replaced u.i with 0 in" "fre1" {xfail avr-*-* } } } */
+-/* { dg-final { cleanup-tree-dump "fre1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-27.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-27.c
+@@ -22,4 +22,3 @@ int foo(int which_p)
+ }
+ 
+ /* { dg-final { scan-tree-dump "Replaced x with 0" "fre1" } } */
+-/* { dg-final { cleanup-tree-dump "fre1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-3.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-3.c
+@@ -19,4 +19,3 @@ foo (int a, int b)
+ }
+ 
+ /* { dg-final { scan-tree-dump "Replaced \\\(int\\\) aa_.*with a_" "fre1" } } */
+-/* { dg-final { cleanup-tree-dump "fre1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-30.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-30.c
+@@ -9,4 +9,3 @@ float foo(float x, float y, float z)
+ }
+ 
+ /* { dg-final { scan-tree-dump "return 0" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-31.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-31.c
+@@ -44,4 +44,3 @@ void test4 (unsigned char x)
+ 
+ /* { dg-final { scan-tree-dump-times "Replaced \{" 4 "fre1" } } */
+ /* { dg-final { scan-tree-dump-times "Deleted redundant store" 4 "fre1" } } */
+-/* { dg-final { cleanup-tree-dump "fre1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-32.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-32.c
+@@ -27,4 +27,3 @@ bar (_Complex float x)
+ 
+ /* We should CSE all the way to replace the stored value with x.  */
+ /* { dg-final { scan-tree-dump-times "m = x_\\d\+\\(D\\);" 2 "fre1" } } */
+-/* { dg-final { cleanup-tree-dump "fre1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-33.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-33.c
+@@ -19,4 +19,3 @@ int main(int argc)
+ }
+ 
+ /* { dg-final { scan-tree-dump "Replaced BIT_FIELD_REF.*with 2" "fre1" } } */
+-/* { dg-final { cleanup-tree-dump "fre1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-34.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-34.c
+@@ -16,4 +16,3 @@ float foo(float f)
+ }
+ 
+ /* { dg-final { scan-tree-dump "Replaced BIT_FIELD_REF.*with f" "fre1" } } */
+-/* { dg-final { cleanup-tree-dump "fre1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-35.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-35.c
+@@ -14,4 +14,3 @@ float a1 (float dd)
+ }
+ 
+ /* { dg-final { scan-tree-dump "Replaced REALPART_EXPR.*with dd" "fre1" } } */
+-/* { dg-final { cleanup-tree-dump "fre1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-36.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-36.c
+@@ -23,4 +23,3 @@ void PreEvaluate(int wtm)
+ /* We should be able to CSE the second load of opening.  */
+ 
+ /* { dg-final { scan-tree-dump "Replaced opening" "fre1" } } */
+-/* { dg-final { cleanup-tree-dump "fre1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-37.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-37.c
+@@ -12,4 +12,3 @@ void foo (int i, int j)
+ /* We should remove the redundant address computation.  */
+ 
+ /* { dg-final { scan-tree-dump-times " = &a" 1 "fre1" } } */
+-/* { dg-final { cleanup-tree-dump "fre1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-38.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-38.c
+@@ -18,4 +18,3 @@ int foo (int n, int i, int j)
+ /* We should remove the redundant load.  */
+ 
+ /* { dg-final { scan-tree-dump-not "= u.a\\\[n_2\\(D\\)\\\].i" "fre1" } } */
+-/* { dg-final { cleanup-tree-dump "fre1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-39.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-39.c
+@@ -16,4 +16,3 @@ int foo (int i)
+ /* We should be able to value-number the final assignment to k to 1.  */
+ 
+ /* { dg-final { scan-tree-dump "return 1;" "fre1" } } */
+-/* { dg-final { cleanup-tree-dump "fre1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-4.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-4.c
+@@ -12,4 +12,3 @@ char bar(char f)
+ }
+ 
+ /* { dg-final { scan-tree-dump "Replaced \\\(char\\\) .*with " "fre1" } } */
+-/* { dg-final { cleanup-tree-dump "fre1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-40.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-40.c
+@@ -14,4 +14,3 @@ int foo (int *p)
+    aliasing store via *p is not reachable.  */
+ 
+ /* { dg-final { scan-tree-dump-not "= x;" "fre1" } } */
+-/* { dg-final { cleanup-tree-dump "fre1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-41.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-41.c
+@@ -9,4 +9,3 @@ int foo (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-not "ffs" "fre1" } } */
+-/* { dg-final { cleanup-tree-dump "fre1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-42.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-42.c
+@@ -31,4 +31,3 @@ int main()
+ /* { dg-final { scan-tree-dump "b = A;" "fre1" } } */
+ /* Verify we have propagated the element read all the way to the return.  */
+ /* { dg-final { scan-tree-dump "return 2" "fre1" } } */
+-/* { dg-final { cleanup-tree-dump "fre1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-43.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-43.c
+@@ -26,4 +26,3 @@ L10:
+ 
+ /* { dg-final { scan-tree-dump-times "Removing dead stmt" 15 "fre1" } } */
+ /* { dg-final { scan-tree-dump-not "Not changing value number" "fre1" } } */
+-/* { dg-final { cleanup-tree-dump "fre1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-5.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-5.c
+@@ -11,4 +11,3 @@ bar (unsigned int t)
+ }
+ 
+ /* { dg-final { scan-tree-dump "Replaced \\\(unsigned int\\\) a_.*with t_" "fre1" } } */
+-/* { dg-final { cleanup-tree-dump "fre1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-6.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-6.c
+@@ -3,4 +3,3 @@
+ 
+  int i; int foo(void) { i = 2; int j = i * 2; int k = i + 2; return j == k; }
+ /* { dg-final { scan-tree-dump-times "Replaced " 6 "fre1" } } */
+-/* { dg-final { cleanup-tree-dump "fre1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-7.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-7.c
+@@ -34,5 +34,3 @@ intflt foo(intflt j)
+ /* { dg-final { scan-tree-dump-times "Replaced a.u.k with j" 1 "fre1" } } */
+ /* { dg-final { scan-tree-dump "= VIEW_CONVERT_EXPR<float>\\\(j_" "fre1" } } */
+ /* { dg-final { scan-tree-dump "return j" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "fre1" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-8.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-8.c
+@@ -30,4 +30,3 @@ intflt foo(int i, int b)
+ 
+ /* { dg-final { scan-tree-dump-times "Replaced u.f with pretmp" 2 "fre1" } } */
+ /* { dg-final { scan-tree-dump-times "Inserted pretmp" 2 "fre1" } } */
+-/* { dg-final { cleanup-tree-dump "fre1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-9.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-9.c
+@@ -25,4 +25,3 @@ void __frame_state_for1 (volatile char *state_in)
+ 
+ /* { dg-final { scan-tree-dump-times "Eliminated: 2" 2 "fre1" } } */
+ /* { dg-final { scan-tree-dump-times "Insertions: 1" 2 "fre1" } } */
+-/* { dg-final { cleanup-tree-dump "fre1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-ifcombine-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-ifcombine-1.c
+@@ -14,4 +14,3 @@ int foo (int x, int a, int b)
+ }
+ 
+ /* { dg-final { scan-tree-dump "\\|" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-ifcombine-10.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-ifcombine-10.c
+@@ -17,4 +17,3 @@ int f(int x, int a, int b)
+   return t;
+ }
+ /* { dg-final { scan-tree-dump "& 5" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-ifcombine-11.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-ifcombine-11.c
+@@ -18,4 +18,3 @@ int f(int x, int a, int b)
+ }
+ 
+ /* { dg-final { scan-tree-dump "& 5" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-ifcombine-12.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-ifcombine-12.c
+@@ -17,4 +17,3 @@ int f(int x, int a, int b)
+   return t;
+ }
+ /* { dg-final { scan-tree-dump "& 5" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-ifcombine-13.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-ifcombine-13.c
+@@ -18,4 +18,3 @@ _Bool f1(_Bool a, _Bool b)
+ /* For LOGICAL_OP_NON_SHORT_CIRCUIT, this should be optimized
+    into return a & b;, with no ifs.  */
+ /* { dg-final { scan-tree-dump-not "if" "optimized" { target { i?86-*-* x86_64-*-* s390*-*-* avr*-*-* } } } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-ifcombine-2.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-ifcombine-2.c
+@@ -20,4 +20,3 @@ doit:
+ }
+ 
+ /* { dg-final { scan-tree-dump "\\|" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-ifcombine-3.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-ifcombine-3.c
+@@ -20,4 +20,3 @@ doit:
+ }
+ 
+ /* { dg-final { scan-tree-dump ">=" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-ifcombine-4.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-ifcombine-4.c
+@@ -18,4 +18,3 @@ void foo (int x, int a)
+ }
+ 
+ /* { dg-final { scan-tree-dump "!=" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-ifcombine-5.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-ifcombine-5.c
+@@ -17,4 +17,3 @@ int f(int *i, int *j)
+ }
+ 
+ /* { dg-final { scan-tree-dump ">=" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-ifcombine-6.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-ifcombine-6.c
+@@ -34,4 +34,3 @@ foo2 (unsigned int a)
+ 
+ /* { dg-final { scan-tree-dump "optimizing bits or bits test" "ifcombine" } } */
+ /* { dg-final { scan-tree-dump "optimizing double bit test" "ifcombine" } } */
+-/* { dg-final { cleanup-tree-dump "ifcombine" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-ifcombine-7.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-ifcombine-7.c
+@@ -12,4 +12,3 @@ int test1 (int i, int j)
+ /* The above should be optimized to a i > j test by ifcombine.  */
+ 
+ /* { dg-final { scan-tree-dump " > " "ifcombine" } } */
+-/* { dg-final { cleanup-tree-dump "ifcombine" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-ifcombine-8.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-ifcombine-8.c
+@@ -22,4 +22,3 @@ plouf:
+    Instead we get u<=, which is acceptable with -fno-trapping-math.  */
+ 
+ /* { dg-final { scan-tree-dump " u<= " "ifcombine" } } */
+-/* { dg-final { cleanup-tree-dump "ifcombine" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-ifcombine-9.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-ifcombine-9.c
+@@ -19,4 +19,3 @@ void g (double x)
+    The transformation would also be legal with -ftrapping-math.  */
+ 
+ /* { dg-final { scan-tree-dump "optimizing.* < " "ifcombine" } } */
+-/* { dg-final { cleanup-tree-dump "ifcombine" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-ifcombine-ccmp-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-ifcombine-ccmp-1.c
+@@ -11,4 +11,3 @@ int t (int a, int b)
+   return 1;
+ }
+ /* { dg-final { scan-tree-dump "\&" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-ifcombine-ccmp-2.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-ifcombine-ccmp-2.c
+@@ -14,4 +14,3 @@ L1:
+   return 1;
+ }
+ /* { dg-final { scan-tree-dump "\|" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-ifcombine-ccmp-3.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-ifcombine-ccmp-3.c
+@@ -17,4 +17,3 @@ L2:
+   return 6;
+ }
+ /* { dg-final { scan-tree-dump "\|" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-ifcombine-ccmp-4.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-ifcombine-ccmp-4.c
+@@ -15,4 +15,3 @@ L2:
+   return 1;
+ }
+ /* { dg-final { scan-tree-dump "\&" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-ifcombine-ccmp-5.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-ifcombine-ccmp-5.c
+@@ -10,4 +10,3 @@ int t (int a, int b, int c)
+   return 1;
+ }
+ /* { dg-final { scan-tree-dump-times "\&" 2 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-ifcombine-ccmp-6.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-ifcombine-ccmp-6.c
+@@ -10,4 +10,3 @@ int t (int a, int b, int c)
+   return 1;
+ }
+ /* { dg-final { scan-tree-dump-times "\\|" 2 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-1.c
+@@ -19,4 +19,3 @@ quantum_toffoli (int control1, int control2, int target,
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "1 <<" 3 "lim1" } } */
+-/* { dg-final { cleanup-tree-dump "lim1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-10.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-10.c
+@@ -28,4 +28,3 @@ int test_func(void)
+ }
+ 
+ /* { dg-final { scan-tree-dump "Executing store motion of pos" "lim1" } } */
+-/* { dg-final { cleanup-tree-dump "lim1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-11.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-11.c
+@@ -22,4 +22,3 @@ void access_buf(struct thread_param* p)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "Executing store motion of __gcov0.access_buf\\\[\[01\]\\\] from loop 1" 2 "lim1" } } */
+-/* { dg-final { cleanup-tree-dump "lim1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-12.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-12.c
+@@ -24,4 +24,3 @@ void bar (int x, int z)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "!= 0 ? " 2 "lim1" } } */
+-/* { dg-final { cleanup-tree-dump "lim1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-2.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-2.c
+@@ -19,4 +19,3 @@ int size)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "1 <<" 3 "lim1" } } */
+-/* { dg-final { cleanup-tree-dump "lim1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-3.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-3.c
+@@ -11,4 +11,3 @@ void foo(int n)
+ 
+ /* { dg-final { scan-tree-dump "Executing store motion of global.y" "lim1" } } */
+ /* { dg-final { scan-tree-dump "Moving statement.*global.x.*out of loop 1" "lim1" } } */
+-/* { dg-final { cleanup-tree-dump "lim1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-6.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-6.c
+@@ -11,4 +11,3 @@ void foo(void)
+ }
+ 
+ /* { dg-final { scan-tree-dump "Executing store motion of y" "lim1" } } */
+-/* { dg-final { cleanup-tree-dump "lim1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-7.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-7.c
+@@ -12,4 +12,3 @@ void foo (int *srcdata, int *dstdata)
+ }
+ 
+ /* { dg-final { scan-tree-dump "Moving statement" "lim1" } } */
+-/* { dg-final { cleanup-tree-dump "lim1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-8.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-8.c
+@@ -17,4 +17,3 @@ void foo (int n, int m)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "Moving PHI node" 1 "lim1"  } } */
+-/* { dg-final { cleanup-tree-dump "lim1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-9.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-9.c
+@@ -17,4 +17,3 @@ void foo (int n, int m)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "Moving PHI node" 1 "lim1"  } } */
+-/* { dg-final { cleanup-tree-dump "lim1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-1.c
+@@ -18,4 +18,3 @@ int foo(int argc, char **argv)
+ /* We should eliminate one evaluation of b + c along the main path,
+    causing one reload. */
+ /* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre"} } */
+-/* { dg-final { cleanup-tree-dump "pre" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-10.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-10.c
+@@ -12,4 +12,3 @@ void f(double a)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "fre1"} } */
+-/* { dg-final { cleanup-tree-dump "fre1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-11.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-11.c
+@@ -18,4 +18,3 @@ double f(double a)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre"} } */
+-/* { dg-final { cleanup-tree-dump "pre" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-12.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-12.c
+@@ -24,4 +24,3 @@ double f(double a)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre"} } */
+-/* { dg-final { cleanup-tree-dump "pre" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-13.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-13.c
+@@ -23,4 +23,3 @@ double f(double a)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre"} } */
+-/* { dg-final { cleanup-tree-dump "pre" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-14.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-14.c
+@@ -12,4 +12,3 @@ foo (const char *str)
+     link_error ();
+ }
+ /* { dg-final { scan-tree-dump-times "link_error" 0 "optimized"} } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-15.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-15.c
+@@ -13,4 +13,3 @@ __SIZE_TYPE__ mystrlen (const char *s)
+ }
+ 
+ /* { dg-final { scan-rtl-dump "PART.. = 0" "expand" } } */
+-/* { dg-final { cleanup-rtl-dump "expand" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-16.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-16.c
+@@ -12,4 +12,3 @@ int foo(int k, int *x)
+   return res;
+ }
+ /* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre"} } */
+-/* { dg-final { cleanup-tree-dump "pre" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-17.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-17.c
+@@ -15,4 +15,3 @@ int foo(U *u, int b, int i)
+ }
+ 
+ /* { dg-final { scan-tree-dump "Eliminated: 1" "pre" } } */
+-/* { dg-final { cleanup-tree-dump "pre" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-18.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-18.c
+@@ -18,4 +18,3 @@ int bar (int b)
+ }
+ 
+ /* { dg-final { scan-tree-dump "Replaced foo \\(f.y\\)" "pre" } } */
+-/* { dg-final { cleanup-tree-dump "pre" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-19.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-19.c
+@@ -36,4 +36,3 @@ int foo (int i, int j, int k, int b)
+ 
+ /* All three loads should be eliminated.  */
+ /* { dg-final { scan-tree-dump "Eliminated: 3" "pre" } } */
+-/* { dg-final { cleanup-tree-dump "pre" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-2.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-2.c
+@@ -21,4 +21,3 @@ int motion_test1(int data, int data_0, int data_3, int v)
+    the main path. */
+ /* { dg-final { scan-tree-dump-times "Eliminated: 2" 1 "pre" { xfail *-*-* } } } */
+ /* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre" } } */
+-/* { dg-final { cleanup-tree-dump "pre" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-20.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-20.c
+@@ -32,4 +32,3 @@ bb18:
+ 
+ /* { dg-final { scan-tree-dump "New PHIs: 2" "pre" } } */
+ /* { dg-final { scan-tree-dump "PHI <.*0\\\.0" "pre" } } */
+-/* { dg-final { cleanup-tree-dump "pre" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-21.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-21.c
+@@ -12,4 +12,3 @@ NumSift (long *array, unsigned long k)
+ /* There should be only two loads left.  */
+ 
+ /* { dg-final { scan-tree-dump-times "= \\\*\[^\n;\]*;" 2 "pre" { xfail { ! size32plus } } } } */ /* xfail: PR tree-optimization/58169 */
+-/* { dg-final { cleanup-tree-dump "pre" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-22.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-22.c
+@@ -10,4 +10,3 @@ int foo (int i, int b)
+ }
+ 
+ /* { dg-final { scan-tree-dump "Eliminated: 1" "pre" } } */
+-/* { dg-final { cleanup-tree-dump "pre" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-23.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-23.c
+@@ -10,4 +10,3 @@ void foo(int n)
+ }
+ 
+ /* { dg-final { scan-tree-dump "Eliminated: 3" "pre" } } */
+-/* { dg-final { cleanup-tree-dump "pre" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-24.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-24.c
+@@ -12,4 +12,3 @@ void foo(int *p, double *x, int n)
+    _not_ end up using the phi result for replacement *p.  */
+ 
+ /* { dg-final { scan-tree-dump-not "= prephitmp" "pre" } } */
+-/* { dg-final { cleanup-tree-dump "pre" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-25.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-25.c
+@@ -20,4 +20,3 @@ int foo (int x)
+ /* We should eliminate the load from p for a PHI node with values 1 and 2.  */
+ 
+ /* { dg-final { scan-tree-dump "Eliminated: 1" "pre" } } */
+-/* { dg-final { cleanup-tree-dump "pre" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-26.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-26.c
+@@ -24,4 +24,3 @@ void foo(SA* pResult, SB* method, SC* self)
+ }
+ 
+ /* { dg-final { scan-tree-dump "Deleted redundant store" "fre1" } } */
+-/* { dg-final { cleanup-tree-dump "fre1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-27.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-27.c
+@@ -25,4 +25,3 @@ int foo2 (int i, int j, int b)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "# prephitmp" 2 "pre" } } */
+-/* { dg-final { cleanup-tree-dump "pre" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-28.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-28.c
+@@ -18,4 +18,3 @@ int foo (int i, int b, int result)
+    i + 1 & -2 expression.  And do replacement with two PHI temps.  */
+ 
+ /* { dg-final { scan-tree-dump-times "with prephitmp" 2 "pre" } } */
+-/* { dg-final { cleanup-tree-dump "pre" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-29.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-29.c
+@@ -19,4 +19,3 @@ foo (void)
+    about bark () possibly clobbering hoist.  */
+ 
+ /* { dg-final { scan-tree-dump "Replaced hoist" "pre" } } */
+-/* { dg-final { cleanup-tree-dump "pre" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-3.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-3.c
+@@ -12,4 +12,3 @@ unsigned foo1 (unsigned a, unsigned b)
+ }
+ /* We should eliminate both 4*b and 4*a from the main body of the loop */
+ /* { dg-final { scan-tree-dump-times "Eliminated: 2" 1 "pre"} } */
+-/* { dg-final { cleanup-tree-dump "pre" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-30.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-30.c
+@@ -25,4 +25,3 @@ bar (int b, int x)
+    are using different types (of the same size).  */
+ 
+ /* { dg-final { scan-tree-dump-times "Replaced MEM" 2 "pre" } } */
+-/* { dg-final { cleanup-tree-dump "pre" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-31.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-31.c
+@@ -44,4 +44,3 @@ int foo (S1 *root, int N)
+ } 
+ 
+ /* { dg-final { scan-tree-dump-times "key" 4 "pre" } } */
+-/* { dg-final { cleanup-tree-dump "pre" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-4.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-4.c
+@@ -12,4 +12,3 @@ int foo(void)
+ /* We should eliminate the x+1 computation from this routine, replacing
+    it with a phi of 3, 4 */
+ /* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre"} } */
+-/* { dg-final { cleanup-tree-dump "pre" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-5.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-5.c
+@@ -14,4 +14,3 @@ foo (int i)
+    5  */
+ /* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre"} } */
+ /* { dg-final { scan-tree-dump-times "Insertions" 0 "pre"} } */
+-/* { dg-final { cleanup-tree-dump "pre" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-6.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-6.c
+@@ -11,4 +11,3 @@ int foo(int x)
+ /* We should eliminate one evaluation of x + 1 along the x = 2 path,
+    causing one elimination.  */
+ /* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "pre"} } */
+-/* { dg-final { cleanup-tree-dump "pre" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-7.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-7.c
+@@ -9,4 +9,3 @@ foo (int *array)
+ }
+ /* We should eliminate one load.  */
+ /* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "fre1"} } */
+-/* { dg-final { cleanup-tree-dump "fre1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-8.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-8.c
+@@ -22,4 +22,3 @@ foo (__SIZE_TYPE__ i, struct s *array)
+ /* We used to eliminate a cast but that was before POINTER_PLUS_EXPR
+    was added.  */
+ /* { dg-final { scan-tree-dump-times "Eliminated: 4" 1 "fre1"} } */
+-/* { dg-final { cleanup-tree-dump "fre1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-9.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-9.c
+@@ -10,4 +10,3 @@ foo (unsigned long a)
+   return 0;
+ }
+ /* { dg-final { scan-tree-dump-times "return 0;" 0 "fre1"} } */
+-/* { dg-final { cleanup-tree-dump "fre1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-sccvn-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-sccvn-1.c
+@@ -18,4 +18,3 @@ void vnum_test8(int *data)
+ } 
+ /* We should eliminate m - n, and set n = n + k into n = m. */
+ /* { dg-final { scan-tree-dump-times "Eliminated: 3" 1 "fre1"} } */
+-/* { dg-final { cleanup-tree-dump "fre1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-sccvn-2.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-sccvn-2.c
+@@ -22,4 +22,3 @@ int vnum_test8(int *data)
+ /* We should eliminate m - n, and set n = n + k into n = m, and
+    set p to 0 */
+ /* { dg-final { scan-tree-dump-times "Eliminated: 4" 1 "fre1"} } */
+-/* { dg-final { cleanup-tree-dump "fre1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-sccvn-3.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-sccvn-3.c
+@@ -12,4 +12,3 @@ int main(int argc, char **argv)
+ }
+ /* We should eliminate result = *p by saying it has the value 2.  */
+ /* { dg-final { scan-tree-dump-times "Eliminated: 1" 1 "fre1"} } */
+-/* { dg-final { cleanup-tree-dump "fre1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-sccvn-4.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-sccvn-4.c
+@@ -24,4 +24,3 @@ int vnum_test8(int *data)
+ /* We should eliminate m - n, n + k, set data[5] = 0, eliminate the
+    address arithmetic for data[5], and set p = 0.
+ /* { dg-final { scan-tree-dump-times "Eliminated: 5" 1 "fre1"} } */
+-/* { dg-final { cleanup-tree-dump "fre1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-sink-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-sink-1.c
+@@ -8,4 +8,3 @@ foo (int a, int b, int c)
+ }
+ /* We should sink the x = a * b calculation into the branch that returns x. */
+ /* { dg-final { scan-tree-dump-times "Sunk statements: 1" 1 "sink" } } */
+-/* { dg-final { cleanup-tree-dump "sink" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-sink-10.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-sink-10.c
+@@ -17,4 +17,3 @@ void foo (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "Sinking # VUSE" 4 "sink" } } */
+-/* { dg-final { cleanup-tree-dump "sink" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-sink-11.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-sink-11.c
+@@ -14,4 +14,3 @@ int foo (int v[], int a)
+ }
+ 
+ /* { dg-final { scan-tree-dump "MEM\\\[.* \\+ 252B\\\]" "optimized"} } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-sink-12.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-sink-12.c
+@@ -15,4 +15,3 @@ int foo (int v1[], int v2[])
+ }
+ 
+ /* { dg-final { scan-tree-dump "MEM\\\[.* \\+ 252B\\\]" "optimized"} } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-sink-2.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-sink-2.c
+@@ -10,4 +10,3 @@ bar (int a, int b, int c)
+ }
+ /* We should sink the x = a * b calculation into the else branch  */
+ /* { dg-final { scan-tree-dump-times "Sunk statements: 1" 1 "sink" } } */
+-/* { dg-final { cleanup-tree-dump "sink" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-sink-3.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-sink-3.c
+@@ -13,4 +13,3 @@ main (int argc)
+ }
+ /* We should sink the a = argc + 1 calculation into the if branch  */
+ /* { dg-final { scan-tree-dump-times "Sunk statements: 1" 1 "sink" } } */
+-/* { dg-final { cleanup-tree-dump "sink" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-sink-4.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-sink-4.c
+@@ -18,4 +18,3 @@ main (int argc)
+ }
+ /* We should sink the first a = b + c calculation into the else branch  */
+ /* { dg-final { scan-tree-dump-times "Sunk statements: 1" 1 "sink" } } */
+-/* { dg-final { cleanup-tree-dump "sink" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-sink-5.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-sink-5.c
+@@ -45,4 +45,3 @@ void foo(int16_t runs[], uint8_t alpha[], int x, int count)
+ 
+ /* We should not sink the next_runs = runs + x calculation after the loop.  */
+ /* { dg-final { scan-tree-dump-times "Sunk statements:" 0 "sink" } } */
+-/* { dg-final { cleanup-tree-dump "sink" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-sink-6.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-sink-6.c
+@@ -15,4 +15,3 @@ int foo(int *a, int r)
+ /* *a = 1 should be sunk to the else block.  */
+ 
+ /* { dg-final { scan-tree-dump-times "Sinking" 1 "sink" } } */
+-/* { dg-final { cleanup-tree-dump "sink" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-sink-7.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-sink-7.c
+@@ -16,4 +16,3 @@ int foo(int *a, int r, short *b)
+ /* *a = 1 should be sunk to the else block.  */
+ 
+ /* { dg-final { scan-tree-dump-times "Sinking" 1 "sink" } } */
+-/* { dg-final { cleanup-tree-dump "sink" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-sink-8.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-sink-8.c
+@@ -25,4 +25,3 @@ int foo(int *a, int r, short *b)
+ /* *a = 1 should be sunk into the default case.  */
+ 
+ /* { dg-final { scan-tree-dump-times "Sinking" 1 "sink" } } */
+-/* { dg-final { cleanup-tree-dump "sink" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-sink-9.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-sink-9.c
+@@ -16,4 +16,3 @@ int foo(int *a, int r, int *b)
+ /* *a = 1 should be sunk to the else block.  */
+ 
+ /* { dg-final { scan-tree-dump-times "Sinking" 1 "sink" } } */
+-/* { dg-final { cleanup-tree-dump "sink" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-store-ccp-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-store-ccp-1.c
+@@ -11,4 +11,3 @@ int f(void)
+ /* There should be no reference to conststaticvariable as we should have
+    inlined the 0. */
+ /* { dg-final { scan-tree-dump-times "conststaticvariable" 0 "optimized"} } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-store-ccp-2.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-store-ccp-2.c
+@@ -11,4 +11,3 @@ int f(void)
+ /* There should be a reference to conststaticvariable since it may
+    may be overriden at link time.  */
+ /* { dg-final { scan-tree-dump-times "conststaticvariable" 1 "optimized" { xfail { *-*-mingw* *-*-cygwin* } } } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-store-ccp-3.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-store-ccp-3.c
+@@ -15,4 +15,3 @@ int f(void)
+    conststaticvariable as we should have inlined the 0. */
+ /* { dg-final { scan-tree-dump-times "conststaticvariable" 0 "optimized" { target { pie_enabled || nonpic } } } } */
+ /* { dg-final { scan-tree-dump-times "conststaticvariable" 1 "optimized" { target { { ! pie_enabled } && { ! nonpic } } } } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-store-ccp-4.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-store-ccp-4.c
+@@ -13,4 +13,3 @@ int f(void)
+ /* There should be a reference to conststaticvariable since it may
+    may be overriden at run time.  */
+ /* { dg-final { scan-tree-dump-times "conststaticvariable" 1 "optimized"} } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-vrp-thread-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/ssa-vrp-thread-1.c
+@@ -29,5 +29,4 @@ build_omp_regions_1 (basic_block bb, struct omp_region *parent,
+ /* ARM Cortex-M defined LOGICAL_OP_NON_SHORT_CIRCUIT to false,
+    so skip below test.  */
+ /* { dg-final { scan-tree-dump-times "Threaded" 1 "vrp1" { target { ! arm_cortex_m } } } } */
+-/* { dg-final { cleanup-tree-dump "vrp1" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/stdarg-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/stdarg-1.c
+@@ -10,4 +10,3 @@ f1 (int i, ...)
+ {
+ }
+ /* { dg-final { scan-tree-dump "f1: va_list escapes 0, needs to save 0 GPR units and 0 FPR units" "stdarg" } } */
+-/* { dg-final { cleanup-tree-dump "stdarg" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/stdarg-2.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/stdarg-2.c
+@@ -295,4 +295,3 @@ f15 (int i, ...)
+ /* { dg-final { scan-tree-dump-not "f15: va_list escapes 0, needs to save 0 GPR units" "stdarg" { target { { i?86-*-* x86_64-*-* } && ia32 } } } } */
+ /* { dg-final { scan-tree-dump-not "f15: va_list escapes 0, needs to save 0 GPR units" "stdarg" { target ia64-*-* } } } */
+ /* { dg-final { scan-tree-dump-not "f15: va_list escapes 0, needs to save 0 GPR units" "stdarg" { target { powerpc*-*-* && lp64 } } } } */
+-/* { dg-final { cleanup-tree-dump "stdarg" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/stdarg-3.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/stdarg-3.c
+@@ -190,4 +190,3 @@ f12 (int i, ...)
+ /* { dg-final { scan-tree-dump "f12: va_list escapes 1, needs to save all GPR units" "stdarg" { target { { i?86-*-* x86_64-*-* } && ia32 } } } } */
+ /* { dg-final { scan-tree-dump "f12: va_list escapes 1, needs to save all GPR units" "stdarg" { target ia64-*-* } } } */
+ /* { dg-final { scan-tree-dump "f12: va_list escapes 1, needs to save all GPR units" "stdarg" { target { powerpc*-*-* && lp64 } } } } */
+-/* { dg-final { cleanup-tree-dump "stdarg" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/stdarg-4.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/stdarg-4.c
+@@ -91,4 +91,3 @@ f4 (int i, ...)
+ /* { dg-final { scan-tree-dump "f4: va_list escapes 0, needs to save \[148\] GPR units" "stdarg" { target { { i?86-*-* x86_64-*-* } && ia32 } } } } */
+ /* { dg-final { scan-tree-dump "f4: va_list escapes 0, needs to save \[148\] GPR units" "stdarg" { target ia64-*-* } } } */
+ /* { dg-final { scan-tree-dump "f4: va_list escapes 0, needs to save \[148\] GPR units" "stdarg" { target { powerpc*-*-* && lp64 } } } } */
+-/* { dg-final { cleanup-tree-dump "stdarg" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/stdarg-5.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/stdarg-5.c
+@@ -116,4 +116,3 @@ f7 (int i, ...)
+ /* { dg-final { scan-tree-dump "f7: va_list escapes 0, needs to save 0 GPR units and 64 FPR units" "stdarg" { target { { i?86-*-* x86_64-*-* } && { ! { ia32 || llp64 } } } } } } */
+ /* { dg-final { scan-tree-dump "f7: va_list escapes 0, needs to save 32 GPR units and 2" "stdarg" { target alpha*-*-linux* } } } */
+ /* { dg-final { scan-tree-dump "f7: va_list escapes 0, needs to save 2 GPR units and 0 FPR units" "stdarg" { target s390*-*-linux* } } } */
+-/* { dg-final { cleanup-tree-dump "stdarg" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/stdarg-6.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/stdarg-6.c
+@@ -33,4 +33,3 @@ bar (int x, char const *y, ...)
+ /* { dg-final { scan-tree-dump "bar: va_list escapes 1, needs to save all GPR units" "stdarg" { target { { i?86-*-* x86_64-*-* } && ia32 } } } } */
+ /* { dg-final { scan-tree-dump "bar: va_list escapes 1, needs to save all GPR units" "stdarg" { target ia64-*-* } } } */
+ /* { dg-final { scan-tree-dump "bar: va_list escapes 1, needs to save all GPR units" "stdarg" { target { powerpc*-*-* && lp64 } } } } */
+-/* { dg-final { cleanup-tree-dump "stdarg" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/stdarg-7.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/stdarg-7.c
+@@ -19,4 +19,3 @@ foo (int x, ...)
+ }
+ 
+ /* { dg-final { scan-tree-dump "foo: va_list escapes 1, needs to save all GPR units and all FPR units" "stdarg" } } */
+-/* { dg-final { cleanup-tree-dump "stdarg" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/strlen-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/strlen-1.c
+@@ -14,4 +14,3 @@ void wreg_twice(void)
+ 
+ /* We should not remove the second null character store to (base+42) address. */
+ /* { dg-final { scan-tree-dump-times " ={v} 0;" 2 "optimized" } }  */
+-/* { dg-final { cleanup-tree-dump "optimized" } }  */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/struct-aliasing-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/struct-aliasing-1.c
+@@ -12,4 +12,3 @@ foo (float *r, struct S *p)
+ }
+ 
+ /* { dg-final { scan-tree-dump "Replaced\[^\n\]*with i_." "fre1" } } */
+-/* { dg-final { cleanup-tree-dump "fre1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/struct-aliasing-2.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/struct-aliasing-2.c
+@@ -15,5 +15,4 @@ foo ( struct S *p)
+ /* There should only be one load of p->f because FRE removes the redundancy
+    by realizing it can cast the result of either to the other.  */
+ /* { dg-final { scan-tree-dump-times "= \[^\n\]*p_.\\\(D\\\)" 1 "cddce1" } } */
+-/* { dg-final { cleanup-tree-dump "cddce1" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/structopt-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/structopt-1.c
+@@ -12,4 +12,3 @@ int foo() {
+ 
+ /* { dg-final { scan-tree-dump-times "Executing store motion of global.y" 1 "lim1" } } */
+ /* XXX: We should also check for the load motion of global.x, but there is no easy way to do this.  */
+-/* { dg-final { cleanup-tree-dump "lim1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/structopt-2.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/structopt-2.c
+@@ -43,4 +43,3 @@ int main(void)
+ /* { dg-final { scan-tree-dump-times "a.f" 0 "optimized" } } */
+ /* { dg-final { scan-tree-dump-times "a.g" 0 "optimized" } } */
+ /* { dg-final { scan-tree-dump-times "b.e" 0 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/structopt-3.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/structopt-3.c
+@@ -14,4 +14,3 @@ int main(void)
+ 	return temp.a + temp.b;
+ }
+ /* { dg-final { scan-tree-dump-times "return 11" 1 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/tailcall-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/tailcall-1.c
+@@ -17,4 +17,3 @@ t(int a)
+ 	return r;
+ }
+ /* { dg-final { scan-tree-dump-times "Found tail call" 1 "tailc"} } */
+-/* { dg-final { cleanup-tree-dump "tailc" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/tailcall-2.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/tailcall-2.c
+@@ -21,4 +21,3 @@ foo (int *x)
+    variables, they ought to be ignored.  There should be two tail
+    calls here.  */
+ /* { dg-final { scan-tree-dump-times "Found tail call" 2 "tailc"} } */
+-/* { dg-final { cleanup-tree-dump "tailc" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/tailcall-4.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/tailcall-4.c
+@@ -12,5 +12,4 @@ longValue ()
+ 
+ /* We should not tail call doubleValue in longValue as the mode changes. */
+ /* { dg-final { scan-tree-dump-times "Found tail call" 0 "tailc"} } */
+-/* { dg-final { cleanup-tree-dump "tailc" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/tailcall-5.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/tailcall-5.c
+@@ -9,4 +9,3 @@ set_integer (void *dest, int value, int length)
+ }
+ 
+ /* { dg-final { scan-tree-dump-not "tail call" "tailc" } } */
+-/* { dg-final { cleanup-tree-dump "tailc" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/tailrecursion-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/tailrecursion-1.c
+@@ -9,4 +9,3 @@ t(int a)
+ 		return 0;
+ }
+ /* { dg-final { scan-tree-dump-times "Eliminated tail recursion" 1 "tailr1"} } */
+-/* { dg-final { cleanup-tree-dump "tailr1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/tailrecursion-2.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/tailrecursion-2.c
+@@ -10,4 +10,3 @@ t(char *a)
+ 		return 0;
+ }
+ /* { dg-final { scan-tree-dump-times "Eliminated tail recursion" 1 "tailr1"} } */
+-/* { dg-final { cleanup-tree-dump "tailr1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/tailrecursion-3.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/tailrecursion-3.c
+@@ -13,4 +13,3 @@ t(int a)
+ 	return r;
+ }
+ /* { dg-final { scan-tree-dump-times "Eliminated tail recursion" 1 "tailr1"} } */
+-/* { dg-final { cleanup-tree-dump "tailr1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/tailrecursion-4.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/tailrecursion-4.c
+@@ -15,4 +15,3 @@ t(int a)
+ 	return r;
+ }
+ /* { dg-final { scan-tree-dump-times "Eliminated tail recursion" 2 "tailr1"} } */
+-/* { dg-final { cleanup-tree-dump "tailr1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/tailrecursion-5.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/tailrecursion-5.c
+@@ -74,4 +74,3 @@ int main(void)
+ /* There is one recursive call to fib.  */
+ /* { dg-final { scan-tree-dump-times "\\mfib\\M" 5 "optimized"} } */
+ 
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/tailrecursion-6.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/tailrecursion-6.c
+@@ -9,4 +9,3 @@ foo (int a)
+ 		return 0;
+ }
+ /* { dg-final { scan-tree-dump-times "Eliminated tail recursion" 1 "tailr1"} } */
+-/* { dg-final { cleanup-tree-dump "tailr1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/tailrecursion-7.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/tailrecursion-7.c
+@@ -37,4 +37,3 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "\\mbar\\M" 4 "optimized"} } */
+ /* { dg-final { scan-tree-dump-times "\\mbaz\\M" 4 "optimized"} } */
+ 
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/unreachable.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/unreachable.c
+@@ -12,4 +12,3 @@ main()
+   return 0;
+ }
+ /* { dg-final { scan-tree-dump-not "bad_boy" "optimized" { target { ! keeps_null_pointer_checks } } } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/upcast-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/upcast-1.c
+@@ -9,4 +9,3 @@ Foo *bar(void)
+ }
+ 
+ /* { dg-final { scan-tree-dump "&foo;" "gimple" } } */
+-/* { dg-final { cleanup-tree-dump "gimple" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/update-cunroll.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/update-cunroll.c
+@@ -10,4 +10,3 @@ int t()
+ 	return i;
+ }
+ /* { dg-final { scan-tree-dump-times "Invalid sum" 0 "optimized"} } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/update-threading.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/update-threading.c
+@@ -21,4 +21,3 @@ main (int argc, char **argv)
+   exit (0);
+ }
+ /* { dg-final { scan-tree-dump-times "Invalid sum" 0 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/update-unroll-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/update-unroll-1.c
+@@ -18,4 +18,3 @@ int foo(unsigned n)
+ 
+ /* { dg-final { scan-tree-dump-not "Invalid sum" "aprefetch"} } */
+ /* { dg-final { scan-tree-dump-not "SUCC: 7 .100.0%" "aprefetch"} } */
+-/* { dg-final { cleanup-tree-dump "aprefetch" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/update-unswitch-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/update-unswitch-1.c
+@@ -21,4 +21,3 @@ int bla(int p)
+ 
+ /* { dg-final { scan-tree-dump-not "Invalid sum" "unswitch"} } */
+ /* { dg-final { scan-tree-dump-not "SUCC: 3 .100.0%" "unswitch"} } */
+-/* { dg-final { cleanup-tree-dump "unswitch" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/useless-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/useless-1.c
+@@ -14,4 +14,3 @@ foo (void)
+    GIMPLE lowering, at the cost of an extra statement, label,
+    and basic block.  */
+ /* { dg-final { scan-tree-dump-times "goto" 3 "gimple"} } */ 
+-/* { dg-final { cleanup-tree-dump "gimple" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/vector-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/vector-1.c
+@@ -28,6 +28,5 @@ float f3(vector float t)
+ 
+ /* { dg-final { scan-tree-dump-times "BIT_FIELD_REF" 4 "gimple"} } */
+ 
+-/* { dg-final { cleanup-tree-dump "gimple" } } */
+ 
+ 
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/vector-2.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/vector-2.c
+@@ -20,4 +20,3 @@ float f(vector float a, int b, vector float c)
+ /* { dg-final { scan-tree-dump-not "BIT_FIELD_REF" "optimized"} } */
+ /* { dg-final { scan-tree-dump-times "return 0.0" 1 "optimized"} } */
+ 
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/vector-3.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/vector-3.c
+@@ -16,5 +16,4 @@ float f(float b)
+ /* { dg-final { scan-tree-dump-times "BIT_FIELD_REF" 0 "optimized"} } */
+ /* { dg-final { scan-tree-dump-times "0\\\.0" 1 "optimized"} } */
+ 
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/vector-4.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/vector-4.c
+@@ -13,4 +13,3 @@ v4si vs (v4si a, v4si b)
+ /* Test is xfailed on 32-bit hppa*-*-* because target-callee-copies.  */
+ /* { dg-final { scan-tree-dump-times "VEC_PERM_EXPR <a, b, { 0, 4, 1, 5 }>;" 1 "gimple" { xfail { hppa*-*-* && { ! lp64 } } } } } */
+ 
+-/* { dg-final { cleanup-tree-dump "gimple" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/vrp01.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/vrp01.c
+@@ -26,4 +26,3 @@ foo (int *p, int i)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "Folding predicate p_.*to 1" 1 "vrp1" } } */
+-/* { dg-final { cleanup-tree-dump "vrp1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/vrp02.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/vrp02.c
+@@ -23,4 +23,3 @@ foo (struct A *p, struct A *q)
+ /* Target with fno-delete-null-pointer-checks should not fold check */
+ /* { dg-final { scan-tree-dump-times "Folding predicate p_.*to 1" 1 "vrp1" { target { ! keeps_null_pointer_checks } } } } */
+ /* { dg-final { scan-tree-dump-times "Folding predicate p_.*to 1" 0 "vrp1" { target {   keeps_null_pointer_checks } } } } */
+-/* { dg-final { cleanup-tree-dump "vrp1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/vrp03.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/vrp03.c
+@@ -33,4 +33,3 @@ foo (struct A *p, struct A *q)
+ 
+ /* { dg-final { scan-tree-dump-times "Folding predicate q_.*to 1" 1 "vrp1" } } */
+ /* { dg-final { scan-tree-dump-times "Folding predicate r_.*to 1" 1 "vrp1" } } */
+-/* { dg-final { cleanup-tree-dump "vrp1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/vrp04.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/vrp04.c
+@@ -11,4 +11,3 @@ foo (int a, int b)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "Folding predicate a_.*to 1" 1 "vrp1" } } */
+-/* { dg-final { cleanup-tree-dump "vrp1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/vrp05.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/vrp05.c
+@@ -28,4 +28,3 @@ foo (int k, int j)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "Folding predicate j_.*to 1" 1 "vrp1" } } */
+-/* { dg-final { cleanup-tree-dump "vrp1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/vrp06.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/vrp06.c
+@@ -31,4 +31,3 @@ foo (int i, int j, int a)
+ /* { dg-final { scan-tree-dump-times "Folding predicate i_\[0-9\]+.*0 to 0" 1 "vrp1" } } */
+ /* { dg-final { scan-tree-dump-times "Folding predicate j_\[0-9\]+.*0 to 1" 1 "vrp1" } } */
+ /* { dg-final { scan-tree-dump-times "Folding predicate i_\[0-9]+.*j_\[0-9\]+.* to 0" 1 "vrp1" { xfail *-*-* } } } */
+-/* { dg-final { cleanup-tree-dump "vrp1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/vrp07.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/vrp07.c
+@@ -37,4 +37,3 @@ foo (int i, int *p)
+ 
+ /* { dg-final { scan-tree-dump-times "PREDICATE: p_\[0-9\]" 2 "vrp1" { target { ! keeps_null_pointer_checks } } } } */
+ /* { dg-final { scan-tree-dump-times "PREDICATE: p_\[0-9\]" 1 "vrp1" { target {   keeps_null_pointer_checks } } } } */
+-/* { dg-final { cleanup-tree-dump "vrp1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/vrp08.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/vrp08.c
+@@ -22,4 +22,3 @@ foo (int a, int *p)
+ /* { dg-final { scan-tree-dump-times "Folding predicate p_.*to 1" 1 "vrp1" { target { ! keeps_null_pointer_checks } } } } */
+ /* { dg-final { scan-tree-dump-times "PREDICATE: p_.* ne_expr 0" 1 "vrp1" { target { ! keeps_null_pointer_checks } } } } */
+ /* { dg-final { scan-tree-dump-times "Folding predicate p_.*to 1" 0 "vrp1" { target {   keeps_null_pointer_checks } } } } */
+-/* { dg-final { cleanup-tree-dump "vrp1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/vrp09.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/vrp09.c
+@@ -28,4 +28,3 @@ L78:
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "Folding predicate p_.. != 0B to 1" 2 "vrp1" } } */
+-/* { dg-final { cleanup-tree-dump "vrp1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/vrp11.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/vrp11.c
+@@ -24,4 +24,3 @@ foo (int k, int j, int z)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "Folding predicate.*to 1" 1 "vrp1" } } */
+-/* { dg-final { cleanup-tree-dump "vrp1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/vrp15.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/vrp15.c
+@@ -30,5 +30,4 @@ blah (tree t)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "tree_code_length.42." 1 "vrp1" } } */
+-/* { dg-final { cleanup-tree-dump "vrp1" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/vrp16.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/vrp16.c
+@@ -19,5 +19,4 @@ nonlocal_mentioned_p (rtx x)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "Folding predicate .*to 0" 1 "vrp1" } } */
+-/* { dg-final { cleanup-tree-dump "vrp1" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/vrp17.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/vrp17.c
+@@ -28,5 +28,4 @@ gimplify_for_stmt (tree stmt)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "Simplified relational" 1 "vrp1" } } */
+-/* { dg-final { cleanup-tree-dump "vrp1" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/vrp18.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/vrp18.c
+@@ -31,4 +31,3 @@ void foo (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "Simplified relational" 1 "vrp1" } } */
+-/* { dg-final { cleanup-tree-dump "vrp1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/vrp19.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/vrp19.c
+@@ -24,4 +24,3 @@ int g (int b) {
+ }
+ /* { dg-final { scan-tree-dump "Folding predicate a_. < 0 to 0" "vrp1" } } */
+ /* { dg-final { scan-tree-dump "Folding predicate b_. >= 0 to 1" "vrp1" } } */
+-/* { dg-final { cleanup-tree-dump "vrp1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/vrp20.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/vrp20.c
+@@ -25,4 +25,3 @@ int g (int b) {
+ 
+ /* { dg-final { scan-tree-dump "Folding predicate a_. == 0 to 0" "vrp1" } } */
+ /* { dg-final { scan-tree-dump "Folding predicate b_. != 0 to 1" "vrp1" } } */
+-/* { dg-final { cleanup-tree-dump "vrp1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/vrp21.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/vrp21.c
+@@ -24,4 +24,3 @@ void test02(unsigned int a, unsigned int b)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "link_error" 0 "vrp1" } } */
+-/* { dg-final { cleanup-tree-dump "vrp1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/vrp22.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/vrp22.c
+@@ -14,4 +14,3 @@ void test02(unsigned int a, unsigned int b)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "link_error" 0 "vrp1" } } */
+-/* { dg-final { cleanup-tree-dump "vrp1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/vrp23.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/vrp23.c
+@@ -46,5 +46,4 @@ L8:
+    only way to reach the test is when n_sets <= 1, and the only value
+    which satisfies both conditions is n_sets == 1.  */
+ /* { dg-final { scan-tree-dump-times "Simplified relational" 1 "vrp1" } } */
+-/* { dg-final { cleanup-tree-dump "vrp1" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/vrp24.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/vrp24.c
+@@ -92,5 +92,4 @@ L7:
+    as the only way to reach the tests is when n_sets <= 1 and the only
+    value which satisfies both conditions is n_sets == 1.  */
+ /* { dg-final { scan-tree-dump-times "Simplified relational" 2 "vrp1" } } */
+-/* { dg-final { cleanup-tree-dump "vrp1" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/vrp25.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/vrp25.c
+@@ -50,5 +50,4 @@ L9:
+    both totally subsumed by earlier tests and thus should be folded
+    away using VRP.  */
+ /* { dg-final { scan-tree-dump-times "Folding predicate" 2 "vrp1" } } */
+-/* { dg-final { cleanup-tree-dump "vrp1" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/vrp26.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/vrp26.c
+@@ -9,8 +9,7 @@ foo(int a)
+ }
+ 
+ /* VRP should optimize this to a trivial "return 1".   */
+-/* { dg-final { scan-tree-dump-times "return 1" 1 "vrp1" } } * /
+-/* { dg-final { cleanup-tree-dump "vrp1" } } */
++/* { dg-final { scan-tree-dump-times "return 1" 1 "vrp1" } } */
+ 
+ 
+ 
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/vrp28.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/vrp28.c
+@@ -26,7 +26,6 @@ int f3 (unsigned char c)
+     return 0;
+ }
+ 
+-/* { dg-final { scan-tree-dump-times "if " 0 "vrp1" } } * /
+-/* { dg-final { cleanup-tree-dump "vrp1" } } */
++/* { dg-final { scan-tree-dump-times "if " 0 "vrp1" } } */
+ 
+ 
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/vrp31.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/vrp31.c
+@@ -10,5 +10,4 @@ int f(int i)
+ }
+ 
+ /* { dg-final { scan-tree-dump "return 0;" "vrp1" } } */
+-/* { dg-final { cleanup-tree-dump "vrp1" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/vrp32.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/vrp32.c
+@@ -10,5 +10,4 @@ int f(int i)
+ }
+ 
+ /* { dg-final { scan-tree-dump "return 0;" "vrp1" } } */
+-/* { dg-final { cleanup-tree-dump "vrp1" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/vrp33.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/vrp33.c
+@@ -6,4 +6,3 @@
+ int f2(int x) { return x == 1 || x == 3 || x == 1; }
+ 
+ /* { dg-final { scan-tree-dump "Folding predicate.*== 1 to 0" "vrp1" } } */
+-/* { dg-final { cleanup-tree-dump "vrp1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/vrp34.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/vrp34.c
+@@ -17,4 +17,3 @@ foo (int a)
+ 
+ /* { dg-final { scan-tree-dump "Folding predicate a_. > 2 to 1" "vrp1" } } */
+ /* { dg-final { scan-tree-dump "Folding predicate a_. <= 5 to 1" "vrp1" } } */
+-/* { dg-final { cleanup-tree-dump "vrp1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/vrp35.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/vrp35.c
+@@ -12,4 +12,3 @@ int test1(int i, int k)
+ }
+ 
+ /* { dg-final { scan-tree-dump "Folding predicate j_.* == 10 to 0" "vrp1" } } */
+-/* { dg-final { cleanup-tree-dump "vrp1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/vrp36.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/vrp36.c
+@@ -9,4 +9,3 @@ int foo(int i)
+ }
+ 
+ /* { dg-final { scan-tree-dump "Folding predicate i_.* == 1 to 0" "vrp1" } } */
+-/* { dg-final { cleanup-tree-dump "vrp1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/vrp40.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/vrp40.c
+@@ -15,4 +15,3 @@ int f(int a) {
+ }
+ 
+ /* { dg-final { scan-tree-dump "return 3;" "vrp1" } } */
+-/* { dg-final { cleanup-tree-dump "vrp1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/vrp41.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/vrp41.c
+@@ -24,4 +24,3 @@ foo (int a)
+ }
+ 
+ /* { dg-final { scan-tree-dump-not "case 99:" "vrp1" } } */
+-/* { dg-final { cleanup-tree-dump "vrp1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/vrp46.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/vrp46.c
+@@ -28,4 +28,3 @@ func_18 ( int t )
+ /* There should be a single if left.  */
+ 
+ /* { dg-final { scan-tree-dump-times "if" 1 "vrp1" } } */
+-/* { dg-final { cleanup-tree-dump "vrp1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/vrp47.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/vrp47.c
+@@ -44,6 +44,3 @@ int f(int x)
+    either 0 or 1.  */
+ /* { dg-final { scan-tree-dump-times " & 1;" 0 "vrp2" } } */
+ 
+-/* { dg-final { cleanup-tree-dump "vrp1" } } */
+-/* { dg-final { cleanup-tree-dump "dom1" } } */
+-/* { dg-final { cleanup-tree-dump "vrp2" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/vrp50.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/vrp50.c
+@@ -31,4 +31,3 @@ int baz (int x, int y)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "return 1;" 3 "vrp1" } } */
+-/* { dg-final { cleanup-tree-dump "vrp1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/vrp52.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/vrp52.c
+@@ -13,4 +13,3 @@ foo (unsigned int i, unsigned int j)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "return 1;" 1 "vrp1" } } */
+-/* { dg-final { cleanup-tree-dump "vrp1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/vrp53.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/vrp53.c
+@@ -21,4 +21,3 @@ f2 (int x)
+ 
+ /* { dg-final { scan-tree-dump-not "\& (2047|0x7ff)" "vrp1" } } */
+ /* { dg-final { scan-tree-dump-not "\\| (17408|0x4400)" "vrp1" } } */
+-/* { dg-final { cleanup-tree-dump "vrp1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/vrp54.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/vrp54.c
+@@ -31,4 +31,3 @@ void bar (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-not "link_error" "vrp1" } } */
+-/* { dg-final { cleanup-tree-dump "vrp1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/vrp55.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/vrp55.c
+@@ -14,5 +14,4 @@ fu (char *p, int x)
+ 
+ /* { dg-final { scan-tree-dump-times "Threaded jump" 1 "vrp1" { target { ! keeps_null_pointer_checks } } } } */
+ /* { dg-final { scan-tree-dump-times "Threaded jump" 0 "vrp1" { target {   keeps_null_pointer_checks } } } } */
+-/* { dg-final { cleanup-tree-dump "vrp1" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/vrp56.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/vrp56.c
+@@ -39,5 +39,4 @@ cleanup_empty_eh (basic_block bb)
+     }
+ }
+ /* { dg-final { scan-tree-dump-times "Threaded" 1 "vrp1"} } */
+-/* { dg-final { cleanup-tree-dump "vrp1" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/vrp57.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/vrp57.c
+@@ -14,4 +14,3 @@ int bar(_Bool b)
+ 
+ /* { dg-final { scan-tree-dump "return 0;" "optimized" } } */
+ /* { dg-final { scan-tree-dump "return 1;" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/vrp58.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/vrp58.c
+@@ -10,4 +10,3 @@ foo (long long a, signed char b, signed char c)
+ 
+ /* { dg-final { scan-tree-dump "Folded into" "vrp1" { target int32plus } } } */
+ /* { dg-final { scan-tree-dump "Folding statement: _\[0-9\]\* = \\(long long int\\) bc_\[0-9\]\*;" "vrp1" { target int16 } } } */
+-/* { dg-final { cleanup-tree-dump "vrp1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/vrp59.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/vrp59.c
+@@ -32,4 +32,3 @@ int h(int x)
+ }
+ 
+ /* { dg-final { scan-tree-dump-not " & 3;" "vrp1" } } */
+-/* { dg-final { cleanup-tree-dump "vrp1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/vrp60.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/vrp60.c
+@@ -28,4 +28,3 @@ int bar (int x, int b)
+ }
+ 
+ /* { dg-final { scan-tree-dump-not "12345" "vrp1" } } */
+-/* { dg-final { cleanup-tree-dump "vrp1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/vrp61.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/vrp61.c
+@@ -13,4 +13,3 @@ int f (int x, int y)
+ }
+ 
+ /* { dg-final { scan-tree-dump-not "1234" "vrp1" } } */
+-/* { dg-final { cleanup-tree-dump "vrp1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/vrp67.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/vrp67.c
+@@ -37,4 +37,3 @@ unsigned baz (unsigned i)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "Folding predicate" 3 "vrp1" } } */
+-/* { dg-final { cleanup-tree-dump "vrp1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/vrp68.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/vrp68.c
+@@ -15,4 +15,3 @@ int main() { }
+ /* VRP will arbitrarily choose ~[1, 1] when merging [2, 6] with ~[1, 7].  */
+ 
+ /* { dg-final { scan-tree-dump-times "link_error" 0 "vrp1" } } */
+-/* { dg-final { cleanup-tree-dump "vrp1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/vrp69.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/vrp69.c
+@@ -35,4 +35,3 @@ void test5(unsigned int i)
+ int main() {}
+ 
+ /* { dg-final { scan-tree-dump-times "link_error" 0 "vrp1" } } */
+-/* { dg-final { cleanup-tree-dump "vrp1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/vrp70.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/vrp70.c
+@@ -25,4 +25,3 @@ bar (unsigned int s)
+ }
+ 
+ /* { dg-final { scan-tree-dump-not "link_error" "vrp1" } } */
+-/* { dg-final { cleanup-tree-dump "vrp1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/vrp71.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/vrp71.c
+@@ -19,4 +19,3 @@ int bar(char c)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "return 0;" 2 "vrp1" } } */
+-/* { dg-final { cleanup-tree-dump "vrp1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/vrp77.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/vrp77.c
+@@ -44,4 +44,3 @@ void g(unsigned T x)
+ }
+ 
+ /* { dg-final { scan-tree-dump-not "impossible" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/vrp79.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/vrp79.c
+@@ -20,4 +20,3 @@ void f (NT x, NT y)
+ }
+ 
+ /* { dg-final { scan-tree-dump "do_not_go_away" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/vrp81.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/vrp81.c
+@@ -33,6 +33,5 @@ main ()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vrp_keep \\(" 2 "vrp1"} } */
+-/* { dg-final { cleanup-tree-dump "vrp1" } } */
+ 
+ 
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/vrp83.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/vrp83.c
+@@ -57,4 +57,3 @@ f4 (unsigned int s, unsigned int b)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vrp_keep \\(" 6 "vrp1"} } */
+-/* { dg-final { cleanup-tree-dump "vrp1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/vrp84.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/vrp84.c
+@@ -18,4 +18,3 @@ f2 (int s, int b)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vrp_keep \\(" 1 "vrp1"} } */
+-/* { dg-final { cleanup-tree-dump "vrp1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/vrp85.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/vrp85.c
+@@ -37,4 +37,3 @@ main ()
+ }
+ 
+ /* { dg-final { scan-tree-dump-not "link_error" "vrp1"} } */
+-/* { dg-final { cleanup-tree-dump "vrp1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/vrp86.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/vrp86.c
+@@ -25,4 +25,3 @@ foo (unsigned T x)
+ 
+ /* { dg-final { scan-tree-dump "fn1call" "vrp1"} } */
+ /* { dg-final { scan-tree-dump "fn2call" "vrp1"} } */
+-/* { dg-final { cleanup-tree-dump "vrp1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/vrp87.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/vrp87.c
+@@ -79,6 +79,4 @@ bitmap_ior_into (bitmap a, const_bitmap b)
+ /* Verify that DCE after VRP2 eliminates a dead conversion
+    to a (Bool).  */
+ /* { dg-final { scan-tree-dump "Deleting.*_Bool.*;" "cddce2"} } */
+-/* { dg-final { cleanup-tree-dump "vrp2" } } */
+-/* { dg-final { cleanup-tree-dump "cddce2" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/vrp88.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/vrp88.c
+@@ -34,6 +34,5 @@ bitmap_single_bit_set_p (const_bitmap a)
+ 
+ /* Verify that VRP simplified an "if" statement.  */
+ /* { dg-final { scan-tree-dump "Folded into: if.*" "vrp1"} } */
+-/* { dg-final { cleanup-tree-dump "vrp1" } } */
+ 
+ 
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/vrp89.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/vrp89.c
+@@ -2,7 +2,6 @@
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -fdump-tree-vrp1" } */
+ /* { dg-final { scan-tree-dump-not "link_error" "vrp1"} } */
+-/* { dg-final { cleanup-tree-dump "vrp1" } } */
+ 
+ #define A(fn, arg, min, max) \
+   if (__builtin_##fn (arg) < min || __builtin_##fn (arg) > max) \
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/vrp90.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/vrp90.c
+@@ -1,7 +1,6 @@
+ /* { dg-do link } */
+ /* { dg-options "-O2 -fdump-tree-vrp1" } */
+ /* { dg-final { scan-tree-dump-not "link_error" "vrp1"} } */
+-/* { dg-final { cleanup-tree-dump "vrp1" } } */
+ 
+ extern void link_error (void);
+ 
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/vrp91.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/vrp91.c
+@@ -19,4 +19,3 @@ void foo ()
+ }
+ 
+ /* { dg-final { scan-tree-dump "\\\[0, 7\\\]" "vrp2" } } */
+-/* { dg-final { cleanup-tree-dump "vrp2" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/vrp92.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/vrp92.c
+@@ -20,4 +20,3 @@ int foo (int i, int j)
+ 
+ /* { dg-final { scan-tree-dump "res_.: \\\[1, 1\\\]" "vrp1" } } */
+ /* { dg-final { scan-tree-dump-not "Threaded" "vrp1" } } */
+-/* { dg-final { cleanup-tree-dump "vrp1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/vrp93.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/vrp93.c
+@@ -3,7 +3,6 @@
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -fdump-tree-vrp1" } */
+ /* { dg-final { scan-tree-dump-not "link_error" "vrp1"} } */
+-/* { dg-final { cleanup-tree-dump "vrp1" } } */
+ 
+ #define A(fn, arg, min, max) \
+   if (__builtin_##fn (arg) < min || __builtin_##fn (arg) > max) \
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/vrp94.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/vrp94.c
+@@ -34,4 +34,3 @@ foo2 (unsigned int x, unsigned int y)
+ }
+ 
+ /* { dg-final { scan-tree-dump-not "abort" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/vrp95.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/vrp95.c
+@@ -47,4 +47,3 @@ range (unsigned long long int x, int y)
+ 
+ /* { dg-final { scan-tree-dump-not "link_error" "vrp1" } } */
+ /* { dg-final { scan-tree-dump "required_check" "vrp1" } } */
+-/* { dg-final { cleanup-tree-dump "vrp1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/vrp96.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/vrp96.c
+@@ -50,4 +50,3 @@ baz (T b, T c)
+ 
+ /* { dg-final { scan-tree-dump-not "link_error" "vrp1" } } */
+ /* { dg-final { scan-tree-dump-times "required_check" 2 "vrp1" } } */
+-/* { dg-final { cleanup-tree-dump "vrp1" } } */
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/vrp97.c
+@@ -0,0 +1,18 @@
++/* PR tree-optimization/64454 */
++/* { dg-options "-O2 -fdump-tree-vrp1" } */
++
++int f(int a, int b)
++{
++    if (a < -3 || a > 13) __builtin_unreachable();
++    if (b < -6 || b > 9) __builtin_unreachable();
++    int c = a % b;
++    return c >= -3 && c <= 8;
++}
++
++int g(int a, int b)
++{
++  int c = a % b;
++  return c != -__INT_MAX__ - 1;
++}
++
++/* { dg-final { scan-tree-dump-times "return 1;" 2 "vrp1" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/wholeprogram-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/wholeprogram-1.c
+@@ -20,5 +20,4 @@ main ()
+ /* Function should be inlined as called once.  */
+ /* { dg-final { scan-tree-dump-not "large_function" "optimized"} } */
+ 
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/wholeprogram-2.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/wholeprogram-2.c
+@@ -5,4 +5,3 @@ externally_visible_function ()
+ {
+ }
+ /* { dg-final { scan-tree-dump "externally_visible_function" "optimized"} } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/writeonly.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/writeonly.c
+@@ -18,4 +18,3 @@ t()
+ /* { dg-final { scan-tree-dump "magic2" "optimized"} } */
+ /* { dg-final { scan-tree-dump "foo" "optimized"} } */
+  
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/ucnid-6.c
++++ b/src/gcc/testsuite/gcc.dg/ucnid-6.c
+@@ -26,4 +26,3 @@ int main (void)
+   
+   return 0;
+ }
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.dg/union-4.c
++++ b/src/gcc/testsuite/gcc.dg/union-4.c
+@@ -20,4 +20,3 @@ void foo(void)
+ }
+ 
+ /* { dg-final { scan-rtl-dump-not "abort" "cse1" { target i?86-*-* x86_64-*-* } } } */
+-/* { dg-final { cleanup-rtl-dump "cse1" } } */
+--- a/src/gcc/testsuite/gcc.dg/unroll-3.c
++++ b/src/gcc/testsuite/gcc.dg/unroll-3.c
+@@ -29,4 +29,3 @@ int foo2(void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "loop with 3 iterations completely unrolled" 1 "cunrolli" } } */
+-/* { dg-final { cleanup-tree-dump "cunrolli" } } */
+--- a/src/gcc/testsuite/gcc.dg/unroll-4.c
++++ b/src/gcc/testsuite/gcc.dg/unroll-4.c
+@@ -29,4 +29,3 @@ int foo2(void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "loop with 3 iterations completely unrolled" 1 "cunrolli" } } */
+-/* { dg-final { cleanup-tree-dump "cunrolli" } } */
+--- a/src/gcc/testsuite/gcc.dg/unroll-5.c
++++ b/src/gcc/testsuite/gcc.dg/unroll-5.c
+@@ -29,4 +29,3 @@ int foo2(void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "loop with 3 iterations completely unrolled" 1 "cunrolli" } } */
+-/* { dg-final { cleanup-tree-dump "cunrolli" } } */
+--- a/src/gcc/testsuite/gcc.dg/unroll-6.c
++++ b/src/gcc/testsuite/gcc.dg/unroll-6.c
+@@ -32,4 +32,3 @@ int t2()
+ /* { dg-final { scan-rtl-dump-not "realistic bound: 999999" "loop2_unroll" } } */
+ /* { dg-final { scan-rtl-dump-times "upper bound: 2999999" 1 "loop2_unroll" } } */
+ /* { dg-final { scan-rtl-dump-times "realistic bound: 2999999" 1 "loop2_unroll" } } */
+-/* { dg-final { cleanup-rtl-dump "loop2_unroll" } } */
+--- a/src/gcc/testsuite/gcc.dg/var-expand1.c
++++ b/src/gcc/testsuite/gcc.dg/var-expand1.c
+@@ -26,4 +26,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-rtl-dump "Expanding Accumulator" "loop2_unroll" } } */
+-/* { dg-final { cleanup-rtl-dump "loop2_unroll" } } */
+--- a/src/gcc/testsuite/gcc.dg/var-expand3.c
++++ b/src/gcc/testsuite/gcc.dg/var-expand3.c
+@@ -51,7 +51,6 @@ main (void)
+ }
+ 
+ /* { dg-final { scan-rtl-dump "Expanding Accumulator" "loop2_unroll" } } */
+-/* { dg-final { cleanup-rtl-dump "loop2_unroll" } } */
+ 
+ 
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/O-pr46167.c
++++ b/src/gcc/testsuite/gcc.dg/vect/O-pr46167.c
+@@ -8,4 +8,3 @@ int foo (char c, int i)
+   return s;
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/O1-pr33854.c
++++ b/src/gcc/testsuite/gcc.dg/vect/O1-pr33854.c
+@@ -18,5 +18,4 @@ void uniform_correlation_matrix (VMatrix * v)
+     xbar[i] /= m;
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/O1-pr41008.c
++++ b/src/gcc/testsuite/gcc.dg/vect/O1-pr41008.c
+@@ -19,5 +19,4 @@ void map_do()
+   foo (jsav, ksav);
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/O3-pr36098.c
++++ b/src/gcc/testsuite/gcc.dg/vect/O3-pr36098.c
+@@ -18,4 +18,3 @@ void foo (int ncons, t_sortblock *sb, int *iatom)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 0 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/O3-pr39675-2.c
++++ b/src/gcc/testsuite/gcc.dg/vect/O3-pr39675-2.c
+@@ -28,5 +28,4 @@ foo ()
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target vect_strided4 } } } */
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" { target vect_strided4 } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+   
+--- a/src/gcc/testsuite/gcc.dg/vect/O3-pr41881.c
++++ b/src/gcc/testsuite/gcc.dg/vect/O3-pr41881.c
+@@ -26,5 +26,4 @@ TYPE fun2(TYPE *x, TYPE *y, unsigned int n)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 2 "vect" { target { vect_int_mult && {! vect_no_align } } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/O3-pr45971.c
++++ b/src/gcc/testsuite/gcc.dg/vect/O3-pr45971.c
+@@ -9,5 +9,4 @@ foo (int *x, int *y)
+     y[i] = (x[i] == 1) ? i + 1 : -(i + 1);
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/O3-pr46077.c
++++ b/src/gcc/testsuite/gcc.dg/vect/O3-pr46077.c
+@@ -7,4 +7,3 @@ void intf_pcmPlayEffect(int *src, int *dst, int size) {
+   *dst++ = *src & 0x80 ? (*src++ & 0x7f) : -*src++;
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/O3-pr49087.c
++++ b/src/gcc/testsuite/gcc.dg/vect/O3-pr49087.c
+@@ -34,4 +34,3 @@ foo (int arg)
+     }
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/O3-slp-reduc-10.c
++++ b/src/gcc/testsuite/gcc.dg/vect/O3-slp-reduc-10.c
+@@ -40,4 +40,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 2 "vect" { target { vect_int_mult && {! vect_no_align } } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/O3-vect-pr32243.c
++++ b/src/gcc/testsuite/gcc.dg/vect/O3-vect-pr32243.c
+@@ -24,4 +24,3 @@ put_mono_values_s8 (GLcontext * ctx, struct gl_renderbuffer *s8rb,
+   dsrb->PutValues (ctx, dsrb, count, x, y, temp, mask);
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/O3-vect-pr34223.c
++++ b/src/gcc/testsuite/gcc.dg/vect/O3-vect-pr34223.c
+@@ -30,4 +30,3 @@ int main()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_int_mult } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/O3-vect-pr61917.c
++++ b/src/gcc/testsuite/gcc.dg/vect/O3-vect-pr61917.c
+@@ -11,4 +11,3 @@ fn1 ()
+   return d; 
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/Os-vect-95.c
++++ b/src/gcc/testsuite/gcc.dg/vect/Os-vect-95.c
+@@ -57,4 +57,3 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "vectorized 0 loops" 2 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 0 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/aligned-section-anchors-nest-1.c
++++ b/src/gcc/testsuite/gcc.dg/vect/aligned-section-anchors-nest-1.c
+@@ -31,4 +31,3 @@ int *foo(void)
+ }
+ 
+ /* { dg-final { scan-ipa-dump-times "Increasing alignment of decl" 3 "increase_alignment" } } */
+-/* { dg-final { cleanup-ipa-dump "increase_alignment" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/bb-slp-1.c
++++ b/src/gcc/testsuite/gcc.dg/vect/bb-slp-1.c
+@@ -57,6 +57,4 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp1" } } */
+-/* { dg-final { cleanup-tree-dump "slp1" } } */
+-/* { dg-final { cleanup-tree-dump "slp2" } } */
+   
+--- a/src/gcc/testsuite/gcc.dg/vect/bb-slp-10.c
++++ b/src/gcc/testsuite/gcc.dg/vect/bb-slp-10.c
+@@ -51,5 +51,4 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump "unsupported alignment in basic block." "slp2" { xfail vect_element_align } } } */
+ /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp2" { target vect_element_align } } } */
+-/* { dg-final { cleanup-tree-dump "slp2" } } */
+   
+--- a/src/gcc/testsuite/gcc.dg/vect/bb-slp-11.c
++++ b/src/gcc/testsuite/gcc.dg/vect/bb-slp-11.c
+@@ -50,5 +50,4 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp2" { target vect64 } } } */
+-/* { dg-final { cleanup-tree-dump "slp2" } } */
+   
+--- a/src/gcc/testsuite/gcc.dg/vect/bb-slp-13.c
++++ b/src/gcc/testsuite/gcc.dg/vect/bb-slp-13.c
+@@ -47,5 +47,4 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp2" { target vect_int_mult } } } */
+-/* { dg-final { cleanup-tree-dump "slp2" } } */
+   
+--- a/src/gcc/testsuite/gcc.dg/vect/bb-slp-14.c
++++ b/src/gcc/testsuite/gcc.dg/vect/bb-slp-14.c
+@@ -48,5 +48,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "basic block vectorized" 0 "slp2"  } } */
+-/* { dg-final { cleanup-tree-dump "slp2" } } */
+-  
+--- a/src/gcc/testsuite/gcc.dg/vect/bb-slp-15.c
++++ b/src/gcc/testsuite/gcc.dg/vect/bb-slp-15.c
+@@ -52,5 +52,4 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp2" { target vect_int_mult } } } */
+-/* { dg-final { cleanup-tree-dump "slp2" } } */
+   
+--- a/src/gcc/testsuite/gcc.dg/vect/bb-slp-16.c
++++ b/src/gcc/testsuite/gcc.dg/vect/bb-slp-16.c
+@@ -66,6 +66,4 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp1" } } */
+-/* { dg-final { cleanup-tree-dump "slp1" } } */
+-/* { dg-final { cleanup-tree-dump "slp2" } } */
+   
+--- a/src/gcc/testsuite/gcc.dg/vect/bb-slp-17.c
++++ b/src/gcc/testsuite/gcc.dg/vect/bb-slp-17.c
+@@ -58,5 +58,4 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp2" { target vect_int_mult } } } */
+-/* { dg-final { cleanup-tree-dump "slp2" } } */
+   
+--- a/src/gcc/testsuite/gcc.dg/vect/bb-slp-18.c
++++ b/src/gcc/testsuite/gcc.dg/vect/bb-slp-18.c
+@@ -47,5 +47,4 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp2" { target vect_int_mult } } } */
+-/* { dg-final { cleanup-tree-dump "slp2" } } */
+   
+--- a/src/gcc/testsuite/gcc.dg/vect/bb-slp-19.c
++++ b/src/gcc/testsuite/gcc.dg/vect/bb-slp-19.c
+@@ -54,5 +54,4 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp2"  { xfail *-*-* }  } } */
+-/* { dg-final { cleanup-tree-dump "slp2" } } */
+   
+--- a/src/gcc/testsuite/gcc.dg/vect/bb-slp-2.c
++++ b/src/gcc/testsuite/gcc.dg/vect/bb-slp-2.c
+@@ -54,6 +54,4 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp1" } } */
+-/* { dg-final { cleanup-tree-dump "slp1" } } */
+-/* { dg-final { cleanup-tree-dump "slp2" } } */
+   
+--- a/src/gcc/testsuite/gcc.dg/vect/bb-slp-20.c
++++ b/src/gcc/testsuite/gcc.dg/vect/bb-slp-20.c
+@@ -65,5 +65,4 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp2" { target vect_int_mult } } } */
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 2 "slp2" { target vect_int_mult } } } */
+-/* { dg-final { cleanup-tree-dump "slp2" } } */
+   
+--- a/src/gcc/testsuite/gcc.dg/vect/bb-slp-21.c
++++ b/src/gcc/testsuite/gcc.dg/vect/bb-slp-21.c
+@@ -66,5 +66,4 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp2"  } } */
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "slp2" { target { ! {vect_int_mult } } } } } */
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 2 "slp2" { target vect_int_mult } } } */
+-/* { dg-final { cleanup-tree-dump "slp2" } } */
+   
+--- a/src/gcc/testsuite/gcc.dg/vect/bb-slp-22.c
++++ b/src/gcc/testsuite/gcc.dg/vect/bb-slp-22.c
+@@ -65,5 +65,4 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp2"  { target { ! {vect_int_mult } } } } } */
+ /* { dg-final { scan-tree-dump-times "basic block vectorized" 2 "slp2"  { target vect_int_mult  } } } */
+-/* { dg-final { cleanup-tree-dump "slp2" } } */
+   
+--- a/src/gcc/testsuite/gcc.dg/vect/bb-slp-23.c
++++ b/src/gcc/testsuite/gcc.dg/vect/bb-slp-23.c
+@@ -52,5 +52,4 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp2" { target vect_int_mult } } } */
+-/* { dg-final { cleanup-tree-dump "slp2" } } */
+   
+--- a/src/gcc/testsuite/gcc.dg/vect/bb-slp-24.c
++++ b/src/gcc/testsuite/gcc.dg/vect/bb-slp-24.c
+@@ -57,6 +57,4 @@ int main (void)
+ /* Exclude POWER8 (only POWER cpu for which vect_element_align is true)
+    because loops have vectorized before SLP gets a shot.  */
+ /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp1" { target { vect_element_align && { ! powerpc*-*-* } } } } } */
+-/* { dg-final { cleanup-tree-dump "slp1" } } */
+-/* { dg-final { cleanup-tree-dump "slp2" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/bb-slp-25.c
++++ b/src/gcc/testsuite/gcc.dg/vect/bb-slp-25.c
+@@ -57,6 +57,4 @@ int main (void)
+ /* Exclude POWER8 (only POWER cpu for which vect_element_align is true)
+    because loops have vectorized before SLP gets a shot.  */
+ /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp1" { target { vect_element_align && { ! powerpc*-*-* } } } } } */
+-/* { dg-final { cleanup-tree-dump "slp1" } } */
+-/* { dg-final { cleanup-tree-dump "slp2" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/bb-slp-26.c
++++ b/src/gcc/testsuite/gcc.dg/vect/bb-slp-26.c
+@@ -57,6 +57,4 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp1" { target { vect64 && vect_hw_misalign } } } } */
+-/* { dg-final { cleanup-tree-dump "slp1" } } */
+-/* { dg-final { cleanup-tree-dump "slp2" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/bb-slp-27.c
++++ b/src/gcc/testsuite/gcc.dg/vect/bb-slp-27.c
+@@ -45,6 +45,4 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp2" { target { vect_int_mult && { vect_unpack && vect_pack_trunc } } } } } */
+-/* { dg-final { cleanup-tree-dump "slp1" } } */
+-/* { dg-final { cleanup-tree-dump "slp2" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/bb-slp-28.c
++++ b/src/gcc/testsuite/gcc.dg/vect/bb-slp-28.c
+@@ -67,6 +67,4 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp2" { target { vect_int_mult &&  { vect_pack_trunc && vect_unpack } } } } } */
+-/* { dg-final { cleanup-tree-dump "slp1" } } */
+-/* { dg-final { cleanup-tree-dump "slp2" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/bb-slp-29.c
++++ b/src/gcc/testsuite/gcc.dg/vect/bb-slp-29.c
+@@ -57,6 +57,4 @@ int main (void)
+ /* Exclude POWER8 (only POWER cpu for which vect_element_align is true)
+    because loops have vectorized before SLP gets a shot.  */
+ /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp1"  { target { { vect_int_mult && vect_element_align } && { ! powerpc*-*-* } } } } } */
+-/* { dg-final { cleanup-tree-dump "slp1" } } */
+-/* { dg-final { cleanup-tree-dump "slp2" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/bb-slp-3.c
++++ b/src/gcc/testsuite/gcc.dg/vect/bb-slp-3.c
+@@ -43,5 +43,4 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp2" } } */
+-/* { dg-final { cleanup-tree-dump "slp2" } } */
+   
+--- a/src/gcc/testsuite/gcc.dg/vect/bb-slp-30.c
++++ b/src/gcc/testsuite/gcc.dg/vect/bb-slp-30.c
+@@ -44,4 +44,3 @@ test1(void)
+ int main() { test1(); return a[21]; }
+ 
+ /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp2" } } */
+-/* { dg-final { cleanup-tree-dump "slp2" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/bb-slp-31.c
++++ b/src/gcc/testsuite/gcc.dg/vect/bb-slp-31.c
+@@ -10,4 +10,3 @@ void f(){
+ }
+ 
+ /* { dg-final { scan-tree-dump "basic block vectorized" "slp2" } } */
+-/* { dg-final { cleanup-tree-dump "slp2" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/bb-slp-32.c
++++ b/src/gcc/testsuite/gcc.dg/vect/bb-slp-32.c
+@@ -20,4 +20,3 @@ int foo (int *p)
+ }
+ 
+ /* { dg-final { scan-tree-dump "vectorization is not profitable" "slp2" { xfail  { vect_no_align && { ! vect_hw_misalign } } } } } */
+-/* { dg-final { cleanup-tree-dump "slp2" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/bb-slp-4.c
++++ b/src/gcc/testsuite/gcc.dg/vect/bb-slp-4.c
+@@ -39,5 +39,4 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "basic block vectorized" 0 "slp2" } } */
+-/* { dg-final { cleanup-tree-dump "slp2" } } */
+   
+--- a/src/gcc/testsuite/gcc.dg/vect/bb-slp-5.c
++++ b/src/gcc/testsuite/gcc.dg/vect/bb-slp-5.c
+@@ -48,5 +48,4 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp2" } } */
+-/* { dg-final { cleanup-tree-dump "slp2" } } */
+   
+--- a/src/gcc/testsuite/gcc.dg/vect/bb-slp-6.c
++++ b/src/gcc/testsuite/gcc.dg/vect/bb-slp-6.c
+@@ -46,5 +46,4 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp2" { target vect_int_mult } } } */
+-/* { dg-final { cleanup-tree-dump "slp2" } } */
+   
+--- a/src/gcc/testsuite/gcc.dg/vect/bb-slp-7.c
++++ b/src/gcc/testsuite/gcc.dg/vect/bb-slp-7.c
+@@ -47,5 +47,4 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "basic block vectorized" 0 "slp2" } } */
+-/* { dg-final { cleanup-tree-dump "slp2" } } */
+   
+--- a/src/gcc/testsuite/gcc.dg/vect/bb-slp-8.c
++++ b/src/gcc/testsuite/gcc.dg/vect/bb-slp-8.c
+@@ -49,5 +49,4 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp2"  { target vect_hw_misalign } } } */
+-/* { dg-final { cleanup-tree-dump "slp2" } } */
+   
+--- a/src/gcc/testsuite/gcc.dg/vect/bb-slp-8a.c
++++ b/src/gcc/testsuite/gcc.dg/vect/bb-slp-8a.c
+@@ -48,5 +48,4 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "basic block vectorized" 0 "slp2" } } */
+-/* { dg-final { cleanup-tree-dump "slp2" } } */
+   
+--- a/src/gcc/testsuite/gcc.dg/vect/bb-slp-8b.c
++++ b/src/gcc/testsuite/gcc.dg/vect/bb-slp-8b.c
+@@ -50,5 +50,4 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp2"  { target vect_hw_misalign } } } */
+-/* { dg-final { cleanup-tree-dump "slp2" } } */
+   
+--- a/src/gcc/testsuite/gcc.dg/vect/bb-slp-9.c
++++ b/src/gcc/testsuite/gcc.dg/vect/bb-slp-9.c
+@@ -47,5 +47,4 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp2"  { xfail  { vect_no_align && { ! vect_hw_misalign } } } } } */
+-/* { dg-final { cleanup-tree-dump "slp2" } } */
+   
+--- a/src/gcc/testsuite/gcc.dg/vect/bb-slp-cond-1.c
++++ b/src/gcc/testsuite/gcc.dg/vect/bb-slp-cond-1.c
+@@ -42,6 +42,4 @@ int main ()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp1" { target vect_element_align } } } */
+-/* { dg-final { cleanup-tree-dump "slp1" } } */
+-/* { dg-final { cleanup-tree-dump "slp2" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/bb-slp-pattern-1.c
++++ b/src/gcc/testsuite/gcc.dg/vect/bb-slp-pattern-1.c
+@@ -51,5 +51,3 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "slp2" { target { vect_widen_mult_hi_to_si || vect_unpack } } } } */
+ /* { dg-final { scan-tree-dump-times "vect_recog_widen_mult_pattern: detected" 8 "slp2" { target vect_widen_mult_hi_to_si_pattern } } } */
+ /* { dg-final { scan-tree-dump-times "pattern recognized" 8 "slp2" { target vect_widen_mult_hi_to_si_pattern } } } */
+-/* { dg-final { cleanup-tree-dump "slp1" } } */
+-/* { dg-final { cleanup-tree-dump "slp2" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/bb-slp-pattern-2.c
++++ b/src/gcc/testsuite/gcc.dg/vect/bb-slp-pattern-2.c
+@@ -49,5 +49,3 @@ int main ()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp1" { target { vect_element_align && vect_pack_trunc } } } } */
+-/* { dg-final { cleanup-tree-dump "slp1" } } */
+-/* { dg-final { cleanup-tree-dump "slp2" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/costmodel/i386/costmodel-fast-math-vect-pr29925.c
++++ b/src/gcc/testsuite/gcc.dg/vect/costmodel/i386/costmodel-fast-math-vect-pr29925.c
+@@ -36,5 +36,4 @@ int main()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/costmodel/i386/costmodel-vect-31.c
++++ b/src/gcc/testsuite/gcc.dg/vect/costmodel/i386/costmodel-vect-31.c
+@@ -87,4 +87,3 @@ int main (void)
+ } 
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 4 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/costmodel/i386/costmodel-vect-33.c
++++ b/src/gcc/testsuite/gcc.dg/vect/costmodel/i386/costmodel-vect-33.c
+@@ -37,4 +37,3 @@ int main (void)
+ } 
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/costmodel/i386/costmodel-vect-68.c
++++ b/src/gcc/testsuite/gcc.dg/vect/costmodel/i386/costmodel-vect-68.c
+@@ -85,4 +85,3 @@ int main (void)
+ } 
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 4 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/costmodel/i386/costmodel-vect-reduc-1char.c
++++ b/src/gcc/testsuite/gcc.dg/vect/costmodel/i386/costmodel-vect-reduc-1char.c
+@@ -49,4 +49,3 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect" { xfail vect_no_int_max } } } */
+ /* { dg-final { scan-tree-dump-times "vectorization not profitable" 0 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-bb-slp-9a-pr63175.c
++++ b/src/gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-bb-slp-9a-pr63175.c
+@@ -1,5 +1,5 @@
+-/* { dg-require-effective-target vect_int } */
+ /* { dg-do compile } */
++/* { dg-require-effective-target vect_int } */
+ 
+ #define N 16 
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-bb-slp-9a.c
++++ b/src/gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-bb-slp-9a.c
+@@ -39,4 +39,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp2"  { xfail  { vect_no_align && { ! vect_hw_misalign } } } } } */
+-/* { dg-final { cleanup-tree-dump "slp2" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-fast-math-vect-pr29925.c
++++ b/src/gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-fast-math-vect-pr29925.c
+@@ -36,5 +36,4 @@ int main()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorization not profitable" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-pr37194.c
++++ b/src/gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-pr37194.c
+@@ -1,5 +1,5 @@
+-/* { dg-require-effective-target vect_float } */
+ /* { dg-do compile } */
++/* { dg-require-effective-target vect_float } */
+ 
+ #include <stdlib.h>
+ #include "../../tree-vect.h"
+@@ -24,5 +24,4 @@ ggSpectrum_Set20(float * data, float d)
+ 
+ /* { dg-final { scan-tree-dump-times "vectorization not profitable" 1 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-slp-12.c
++++ b/src/gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-slp-12.c
+@@ -115,5 +115,4 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect"  {target { vect_strided8 && vect_int_mult } } } } */
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 3 "vect" {target { vect_strided8 && vect_int_mult } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+   
+--- a/src/gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-slp-33.c
++++ b/src/gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-slp-33.c
+@@ -41,4 +41,3 @@ int main (void)
+ } 
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 0 "vect" { target { ! vect_hw_misalign } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-slp-34.c
++++ b/src/gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-slp-34.c
+@@ -72,4 +72,3 @@ main (void)
+ /* { dg-final { scan-tree-dump-times "vectorization not profitable" 0 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect"  } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-vect-31a.c
++++ b/src/gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-vect-31a.c
+@@ -48,4 +48,3 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "vectorization not profitable" 1 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 0 "vect" { target { ! vect_hw_misalign } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-vect-31b.c
++++ b/src/gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-vect-31b.c
+@@ -47,4 +47,3 @@ int main (void)
+ } 
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-vect-31c.c
++++ b/src/gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-vect-31c.c
+@@ -47,4 +47,3 @@ int main (void)
+ } 
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-vect-33.c
++++ b/src/gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-vect-33.c
+@@ -40,4 +40,3 @@ int main (void)
+ 
+ /* Versioning to align the store is used. Overhead of versioning is not too high.  */
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target {! vector_alignment_reachable} } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-vect-68a.c
++++ b/src/gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-vect-68a.c
+@@ -46,4 +46,3 @@ int main (void)
+ } 
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-vect-68b.c
++++ b/src/gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-vect-68b.c
+@@ -46,4 +46,3 @@ int main (void)
+ } 
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-vect-68c.c
++++ b/src/gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-vect-68c.c
+@@ -46,4 +46,3 @@ int main (void)
+ } 
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-vect-76a.c
++++ b/src/gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-vect-76a.c
+@@ -44,4 +44,3 @@ int main (void)
+ 
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-vect-76b.c
++++ b/src/gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-vect-76b.c
+@@ -48,4 +48,3 @@ int main (void)
+ 
+ /* Versioning to align the store is used. Overhead of versioning is not too high.  */
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_no_align || {! vector_alignment_reachable} } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-vect-76c.c
++++ b/src/gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-vect-76c.c
+@@ -44,4 +44,3 @@ int main (void)
+ 
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-vect-outer-fir.c
++++ b/src/gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-vect-outer-fir.c
+@@ -68,4 +68,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 2 "vect" { xfail { vect_no_align && { ! vect_hw_misalign } } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-vect-reduc-1char.c
++++ b/src/gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-vect-reduc-1char.c
+@@ -48,4 +48,3 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect" { xfail vect_no_int_max } } } */
+ /* { dg-final { scan-tree-dump-times "vectorization not profitable" 0 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/costmodel/spu/costmodel-fast-math-vect-pr29925.c
++++ b/src/gcc/testsuite/gcc.dg/vect/costmodel/spu/costmodel-fast-math-vect-pr29925.c
+@@ -36,5 +36,4 @@ int main()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorization not profitable" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/costmodel/spu/costmodel-vect-31a.c
++++ b/src/gcc/testsuite/gcc.dg/vect/costmodel/spu/costmodel-vect-31a.c
+@@ -48,4 +48,3 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "vectorization not profitable" 1 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 0 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/costmodel/spu/costmodel-vect-31b.c
++++ b/src/gcc/testsuite/gcc.dg/vect/costmodel/spu/costmodel-vect-31b.c
+@@ -47,4 +47,3 @@ int main (void)
+ } 
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/costmodel/spu/costmodel-vect-31c.c
++++ b/src/gcc/testsuite/gcc.dg/vect/costmodel/spu/costmodel-vect-31c.c
+@@ -47,4 +47,3 @@ int main (void)
+ } 
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/costmodel/spu/costmodel-vect-31d.c
++++ b/src/gcc/testsuite/gcc.dg/vect/costmodel/spu/costmodel-vect-31d.c
+@@ -48,4 +48,3 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "vectorization not profitable" 0 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/costmodel/spu/costmodel-vect-33.c
++++ b/src/gcc/testsuite/gcc.dg/vect/costmodel/spu/costmodel-vect-33.c
+@@ -40,4 +40,3 @@ int main (void)
+ 
+ /* Versioning to align the store is used. Overhead of versioning is not too high.  */
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target {! vector_alignment_reachable} } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/costmodel/spu/costmodel-vect-68a.c
++++ b/src/gcc/testsuite/gcc.dg/vect/costmodel/spu/costmodel-vect-68a.c
+@@ -46,4 +46,3 @@ int main (void)
+ } 
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/costmodel/spu/costmodel-vect-68b.c
++++ b/src/gcc/testsuite/gcc.dg/vect/costmodel/spu/costmodel-vect-68b.c
+@@ -46,4 +46,3 @@ int main (void)
+ } 
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/costmodel/spu/costmodel-vect-68c.c
++++ b/src/gcc/testsuite/gcc.dg/vect/costmodel/spu/costmodel-vect-68c.c
+@@ -46,4 +46,3 @@ int main (void)
+ } 
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/costmodel/spu/costmodel-vect-68d.c
++++ b/src/gcc/testsuite/gcc.dg/vect/costmodel/spu/costmodel-vect-68d.c
+@@ -47,4 +47,3 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "vectorization not profitable" 0 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/costmodel/spu/costmodel-vect-76a.c
++++ b/src/gcc/testsuite/gcc.dg/vect/costmodel/spu/costmodel-vect-76a.c
+@@ -44,4 +44,3 @@ int main (void)
+ 
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/costmodel/spu/costmodel-vect-76b.c
++++ b/src/gcc/testsuite/gcc.dg/vect/costmodel/spu/costmodel-vect-76b.c
+@@ -44,4 +44,3 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "vectorization not profitable" 0 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/costmodel/spu/costmodel-vect-76c.c
++++ b/src/gcc/testsuite/gcc.dg/vect/costmodel/spu/costmodel-vect-76c.c
+@@ -44,4 +44,3 @@ int main (void)
+ 
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/costmodel/spu/costmodel-vect-iv-9.c
++++ b/src/gcc/testsuite/gcc.dg/vect/costmodel/spu/costmodel-vect-iv-9.c
+@@ -35,4 +35,3 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 2 "vect" { target vect_int_mult } } } */
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target {! vect_int_mult } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-fast-math-vect-pr29925.c
++++ b/src/gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-fast-math-vect-pr29925.c
+@@ -36,5 +36,4 @@ int main()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-pr30843.c
++++ b/src/gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-pr30843.c
+@@ -22,5 +22,4 @@ void dacP98FillRGBMap (unsigned char *pBuffer)
+ 
+ /* { dg-final { scan-tree-dump-times "vectorization not profitable" 1 "vect" { target vect_interleave
+ } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-pr64909.c
++++ b/src/gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-pr64909.c
+@@ -12,4 +12,3 @@ void t()
+ }
+ 
+ /* { dg-final { scan-tree-dump "vectorized 1 loops in function" "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-vect-31.c
++++ b/src/gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-vect-31.c
+@@ -87,4 +87,3 @@ int main (void)
+ } 
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 4 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-vect-33.c
++++ b/src/gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-vect-33.c
+@@ -37,4 +37,3 @@ int main (void)
+ } 
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-vect-68.c
++++ b/src/gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-vect-68.c
+@@ -85,4 +85,3 @@ int main (void)
+ } 
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 4 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-vect-reduc-1char.c
++++ b/src/gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-vect-reduc-1char.c
+@@ -49,4 +49,3 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect" { xfail vect_no_int_max } } } */
+ /* { dg-final { scan-tree-dump-times "vectorization not profitable" 0 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/fast-math-bb-slp-call-1.c
++++ b/src/gcc/testsuite/gcc.dg/vect/fast-math-bb-slp-call-1.c
+@@ -46,5 +46,3 @@ main ()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp2" { target { vect_call_copysignf && vect_call_sqrtf } } } } */
+-/* { dg-final { cleanup-tree-dump "slp1" } } */
+-/* { dg-final { cleanup-tree-dump "slp2" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/fast-math-bb-slp-call-2.c
++++ b/src/gcc/testsuite/gcc.dg/vect/fast-math-bb-slp-call-2.c
+@@ -64,5 +64,3 @@ main ()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "basic block vectorized" 2 "slp2" { target vect_call_lrint } } } */
+-/* { dg-final { cleanup-tree-dump "slp1" } } */
+-/* { dg-final { cleanup-tree-dump "slp2" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/fast-math-bb-slp-call-3.c
++++ b/src/gcc/testsuite/gcc.dg/vect/fast-math-bb-slp-call-3.c
+@@ -65,5 +65,3 @@ int main()
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "slp1" } } */
+-/* { dg-final { cleanup-tree-dump "slp2" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/fast-math-ifcvt-1.c
++++ b/src/gcc/testsuite/gcc.dg/vect/fast-math-ifcvt-1.c
+@@ -15,4 +15,3 @@ bestseries9 (float * __restrict__ arr, int len)
+ }
+ 
+ /* { dg-final { scan-tree-dump "vectorized 1 loops" "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/fast-math-pr35982.c
++++ b/src/gcc/testsuite/gcc.dg/vect/fast-math-pr35982.c
+@@ -22,4 +22,3 @@ float method2_int16 (struct mem *mem)
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_extract_even_odd || vect_strided2 } } } } */
+ /* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" { target { ! { vect_extract_even_odd || vect_strided2 } } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/fast-math-pr43074.c
++++ b/src/gcc/testsuite/gcc.dg/vect/fast-math-pr43074.c
+@@ -13,4 +13,3 @@ pvslockprocess(float *fout, float *fin, int framesize)
+   return mag;
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/fast-math-pr44152.c
++++ b/src/gcc/testsuite/gcc.dg/vect/fast-math-pr44152.c
+@@ -34,4 +34,3 @@ foo (int x)
+ }
+ 
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/fast-math-pr55281.c
++++ b/src/gcc/testsuite/gcc.dg/vect/fast-math-pr55281.c
+@@ -27,4 +27,3 @@ foo (int *a, int b, float *d, float *e, int *f)
+       f[i] = e[i] + bar (a[i], d[i]);
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/fast-math-slp-27.c
++++ b/src/gcc/testsuite/gcc.dg/vect/fast-math-slp-27.c
+@@ -14,4 +14,3 @@ void foo(void)
+ }
+ 
+ /* { dg-final { scan-tree-dump "vectorized 1 loops" "vect" { target vect_strided2 } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/fast-math-slp-38.c
++++ b/src/gcc/testsuite/gcc.dg/vect/fast-math-slp-38.c
+@@ -19,4 +19,3 @@ foo (void)
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/fast-math-vect-call-1.c
++++ b/src/gcc/testsuite/gcc.dg/vect/fast-math-vect-call-1.c
+@@ -96,4 +96,3 @@ main ()
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 4 "vect" { target { vect_call_copysignf && vect_call_sqrtf } } } } */
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 3 "vect" { target { vect_call_copysignf && vect_call_sqrtf } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/fast-math-vect-call-2.c
++++ b/src/gcc/testsuite/gcc.dg/vect/fast-math-vect-call-2.c
+@@ -127,4 +127,3 @@ main ()
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 6 "vect" { target vect_call_lrint } } } */
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 4 "vect" { target vect_call_lrint } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/fast-math-vect-complex-3.c
++++ b/src/gcc/testsuite/gcc.dg/vect/fast-math-vect-complex-3.c
+@@ -57,4 +57,3 @@ main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_strided2 } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/fast-math-vect-outer-7.c
++++ b/src/gcc/testsuite/gcc.dg/vect/fast-math-vect-outer-7.c
+@@ -20,4 +20,3 @@ void test2 (float x)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 2 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/fast-math-vect-pow-1.c
++++ b/src/gcc/testsuite/gcc.dg/vect/fast-math-vect-pow-1.c
+@@ -11,4 +11,3 @@ void foo(void)
+ }
+ 
+ /* { dg-final { scan-tree-dump "vectorized 1 loops" "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/fast-math-vect-pow-2.c
++++ b/src/gcc/testsuite/gcc.dg/vect/fast-math-vect-pow-2.c
+@@ -29,5 +29,4 @@ main (void)
+ {
+   d_type tmp = main1 ();
+ }
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/fast-math-vect-pr25911.c
++++ b/src/gcc/testsuite/gcc.dg/vect/fast-math-vect-pr25911.c
+@@ -12,4 +12,3 @@ float bessel_Kn_scaled_small_x(int n)
+   return sum1;
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/fast-math-vect-pr29925.c
++++ b/src/gcc/testsuite/gcc.dg/vect/fast-math-vect-pr29925.c
+@@ -36,5 +36,4 @@ int main()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/fast-math-vect-reduc-5.c
++++ b/src/gcc/testsuite/gcc.dg/vect/fast-math-vect-reduc-5.c
+@@ -52,4 +52,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/fast-math-vect-reduc-7.c
++++ b/src/gcc/testsuite/gcc.dg/vect/fast-math-vect-reduc-7.c
+@@ -52,4 +52,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/fast-math-vect-reduc-8.c
++++ b/src/gcc/testsuite/gcc.dg/vect/fast-math-vect-reduc-8.c
+@@ -20,4 +20,3 @@ float f (unsigned n)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/fast-math-vect-reduc-9.c
++++ b/src/gcc/testsuite/gcc.dg/vect/fast-math-vect-reduc-9.c
+@@ -27,4 +27,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump "vectorized 1 loops" "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/ggc-pr37574.c
++++ b/src/gcc/testsuite/gcc.dg/vect/ggc-pr37574.c
+@@ -19,4 +19,3 @@ int main (void) {
+    return 0;
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/if-cvt-stores-vect-ifcvt-18.c
++++ b/src/gcc/testsuite/gcc.dg/vect/if-cvt-stores-vect-ifcvt-18.c
+@@ -66,4 +66,3 @@ main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { xfail { { vect_no_align && { ! vect_hw_misalign } } || { ! vect_strided2 } } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/no-fast-math-vect16.c
++++ b/src/gcc/testsuite/gcc.dg/vect/no-fast-math-vect16.c
+@@ -35,4 +35,3 @@ int main (void)
+ 
+ /* Requires fast-math.  */
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail *-*-* } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/no-fre-pre-pr50208.c
++++ b/src/gcc/testsuite/gcc.dg/vect/no-fre-pre-pr50208.c
+@@ -14,4 +14,3 @@ void foo (int j)
+     }
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/no-math-errno-slp-32.c
++++ b/src/gcc/testsuite/gcc.dg/vect/no-math-errno-slp-32.c
+@@ -14,4 +14,3 @@ void foo(void)
+ }
+ 
+ /* { dg-final { scan-tree-dump "pattern recognized" "vect" { xfail spu*-*-* } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/no-math-errno-vect-pow-1.c
++++ b/src/gcc/testsuite/gcc.dg/vect/no-math-errno-vect-pow-1.c
+@@ -11,4 +11,3 @@ void foo(void)
+ }
+ 
+ /* { dg-final { scan-tree-dump "pattern recognized" "vect" { xfail spu*-*-* } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/no-scevccp-noreassoc-outer-1.c
++++ b/src/gcc/testsuite/gcc.dg/vect/no-scevccp-noreassoc-outer-1.c
+@@ -47,4 +47,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED." 1 "vect" { xfail *-*-* } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/no-scevccp-noreassoc-outer-2.c
++++ b/src/gcc/testsuite/gcc.dg/vect/no-scevccp-noreassoc-outer-2.c
+@@ -46,4 +46,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED." 1 "vect" { xfail *-*-* } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/no-scevccp-noreassoc-outer-3.c
++++ b/src/gcc/testsuite/gcc.dg/vect/no-scevccp-noreassoc-outer-3.c
+@@ -45,4 +45,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED." 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/no-scevccp-noreassoc-outer-4.c
++++ b/src/gcc/testsuite/gcc.dg/vect/no-scevccp-noreassoc-outer-4.c
+@@ -54,4 +54,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED." 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/no-scevccp-noreassoc-outer-5.c
++++ b/src/gcc/testsuite/gcc.dg/vect/no-scevccp-noreassoc-outer-5.c
+@@ -51,4 +51,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED." 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/no-scevccp-noreassoc-slp-reduc-7.c
++++ b/src/gcc/testsuite/gcc.dg/vect/no-scevccp-noreassoc-slp-reduc-7.c
+@@ -38,5 +38,4 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail vect_no_int_max } } } */
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" { xfail vect_no_int_max } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-1.c
++++ b/src/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-1.c
+@@ -20,4 +20,3 @@ foo (){
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 1 "vect" { xfail *-*-* } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-10.c
++++ b/src/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-10.c
+@@ -51,4 +51,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED." 1 "vect" { xfail *-*-* } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-10a.c
++++ b/src/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-10a.c
+@@ -55,4 +55,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED." 1 "vect" { target vect_strided2 } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-10b.c
++++ b/src/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-10b.c
+@@ -54,4 +54,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED." 1 "vect" { target vect_strided2 } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-11.c
++++ b/src/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-11.c
+@@ -47,4 +47,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED." 1 "vect" { xfail *-*-* } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-12.c
++++ b/src/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-12.c
+@@ -47,4 +47,3 @@ int main (void)
+ 
+ /* Until we support multiple types in the inner loop  */
+ /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED." 1 "vect" { xfail *-*-* } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-13.c
++++ b/src/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-13.c
+@@ -64,4 +64,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED." 1 "vect" { target vect_widen_mult_hi_to_si } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-14.c
++++ b/src/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-14.c
+@@ -58,4 +58,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED." 1 "vect" { target vect_widen_mult_hi_to_si } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-15.c
++++ b/src/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-15.c
+@@ -45,4 +45,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED." 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-16.c
++++ b/src/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-16.c
+@@ -59,4 +59,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED." 1 "vect" { xfail { ! {vect_unpack } } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-17.c
++++ b/src/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-17.c
+@@ -65,4 +65,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED." 1 "vect" { xfail { ! {vect_unpack } } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-18.c
++++ b/src/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-18.c
+@@ -48,4 +48,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED." 1 "vect" { target { vect_interleave || vect_strided2 } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-19.c
++++ b/src/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-19.c
+@@ -49,4 +49,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED." 1 "vect" { xfail { ! {vect_unpack } } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-2.c
++++ b/src/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-2.c
+@@ -17,4 +17,3 @@ foo (){
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 1 "vect"  } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-20.c
++++ b/src/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-20.c
+@@ -51,4 +51,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED." 1 "vect" { target vect_strided2 } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-21.c
++++ b/src/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-21.c
+@@ -59,4 +59,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED." 1 "vect" { xfail { ! { vect_pack_trunc } } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-22.c
++++ b/src/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-22.c
+@@ -51,4 +51,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED." 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-3.c
++++ b/src/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-3.c
+@@ -48,4 +48,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED." 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-4.c
++++ b/src/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-4.c
+@@ -52,4 +52,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED." 1 "vect" { xfail *-*-* } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-5.c
++++ b/src/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-5.c
+@@ -50,4 +50,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED." 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-6-global.c
++++ b/src/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-6-global.c
+@@ -53,4 +53,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED." 1 "vect" { xfail { vect_no_align && { ! vect_hw_misalign } } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-6.c
++++ b/src/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-6.c
+@@ -53,4 +53,3 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED." 1 "vect" { xfail { unaligned_stack || { vect_no_align && { ! vect_hw_misalign } } } } } } */
+ /* { dg-final { scan-tree-dump-times "vect_recog_widen_mult_pattern: detected" 1 "vect" { xfail *-*-* } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-7.c
++++ b/src/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-7.c
+@@ -72,4 +72,3 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED." 1 "vect" { target vect_widen_mult_hi_to_si } } } */
+ /* { dg-final { scan-tree-dump-times "vect_recog_widen_mult_pattern: detected" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-8.c
++++ b/src/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-8.c
+@@ -47,4 +47,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED." 1 "vect" { xfail { ! { vect_element_align } } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-9.c
++++ b/src/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-9.c
+@@ -47,4 +47,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED." 1 "vect" { xfail *-*-* } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-9a.c
++++ b/src/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-9a.c
+@@ -51,4 +51,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED." 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-9b.c
++++ b/src/gcc/testsuite/gcc.dg/vect/no-scevccp-outer-9b.c
+@@ -50,4 +50,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED." 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/no-scevccp-pr49199.c
++++ b/src/gcc/testsuite/gcc.dg/vect/no-scevccp-pr49199.c
+@@ -15,4 +15,3 @@ int foo (void)
+   return x;
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/no-scevccp-slp-30.c
++++ b/src/gcc/testsuite/gcc.dg/vect/no-scevccp-slp-30.c
+@@ -53,5 +53,4 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  } } */
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect"  } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+   
+--- a/src/gcc/testsuite/gcc.dg/vect/no-scevccp-slp-31.c
++++ b/src/gcc/testsuite/gcc.dg/vect/no-scevccp-slp-31.c
+@@ -53,5 +53,4 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  } } */
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 0 "vect"  } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+   
+--- a/src/gcc/testsuite/gcc.dg/vect/no-scevccp-vect-iv-1.c
++++ b/src/gcc/testsuite/gcc.dg/vect/no-scevccp-vect-iv-1.c
+@@ -31,4 +31,3 @@ int main (void)
+ } 
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/no-scevccp-vect-iv-2.c
++++ b/src/gcc/testsuite/gcc.dg/vect/no-scevccp-vect-iv-2.c
+@@ -47,4 +47,3 @@ int main (void)
+ } 
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail *-*-* } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/no-scevccp-vect-iv-3.c
++++ b/src/gcc/testsuite/gcc.dg/vect/no-scevccp-vect-iv-3.c
+@@ -25,4 +25,3 @@ unsigned int main1 ()
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_widen_sum_hi_to_si } } } */
+ /* { dg-final { scan-tree-dump-times "vect_recog_widen_sum_pattern: detected" 1 "vect" { target vect_widen_sum_hi_to_si } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/no-section-anchors-vect-31.c
++++ b/src/gcc/testsuite/gcc.dg/vect/no-section-anchors-vect-31.c
+@@ -90,4 +90,3 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "vectorized 4 loops" 1 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 2 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/no-section-anchors-vect-34.c
++++ b/src/gcc/testsuite/gcc.dg/vect/no-section-anchors-vect-34.c
+@@ -40,4 +40,3 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/no-section-anchors-vect-36.c
++++ b/src/gcc/testsuite/gcc.dg/vect/no-section-anchors-vect-36.c
+@@ -47,4 +47,3 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 0 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/no-section-anchors-vect-64.c
++++ b/src/gcc/testsuite/gcc.dg/vect/no-section-anchors-vect-64.c
+@@ -86,4 +86,3 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 2 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/no-section-anchors-vect-65.c
++++ b/src/gcc/testsuite/gcc.dg/vect/no-section-anchors-vect-65.c
+@@ -83,4 +83,3 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/no-section-anchors-vect-66.c
++++ b/src/gcc/testsuite/gcc.dg/vect/no-section-anchors-vect-66.c
+@@ -81,4 +81,3 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 2 "vect" { target { {! vect_aligned_arrays} && {vect_sizes_32B_16B} } } } } */
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { target { {vect_aligned_arrays} && {! vect_sizes_32B_16B} } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/no-section-anchors-vect-68.c
++++ b/src/gcc/testsuite/gcc.dg/vect/no-section-anchors-vect-68.c
+@@ -92,4 +92,3 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 4 "vect" { target { {! vect_aligned_arrays} && {vect_sizes_32B_16B} } } } } */
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 2 "vect" { target { {vect_aligned_arrays} && {! vect_sizes_32B_16B} } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/no-section-anchors-vect-69.c
++++ b/src/gcc/testsuite/gcc.dg/vect/no-section-anchors-vect-69.c
+@@ -118,4 +118,3 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 2 "vect" { xfail { {! vector_alignment_reachable} || { vect_sizes_32B_16B} } } } } */
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 1 "vect" { target { {! vector_alignment_reachable} && {! vect_hw_misalign} } } } } */
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { target { {! vector_alignment_reachable} && {! vect_hw_misalign} } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/no-section-anchors-vect-outer-4h.c
++++ b/src/gcc/testsuite/gcc.dg/vect/no-section-anchors-vect-outer-4h.c
+@@ -45,4 +45,3 @@ int main (void)
+ 
+ 
+ /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/no-trapping-math-1.c
++++ b/src/gcc/testsuite/gcc.dg/vect/no-trapping-math-1.c
+@@ -9,4 +9,3 @@ foo (float a[32], float b[2][32])
+     a[i] = (b[0][i] > b[1][i]) ? b[0][i] : b[1][i];
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/no-trapping-math-2.c
++++ b/src/gcc/testsuite/gcc.dg/vect/no-trapping-math-2.c
+@@ -36,4 +36,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_condition } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/no-trapping-math-vect-111.c
++++ b/src/gcc/testsuite/gcc.dg/vect/no-trapping-math-vect-111.c
+@@ -36,4 +36,3 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target powerpc*-*-* } } } */
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target i?86-*-* x86_64-*-* ia64-*-* } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/no-trapping-math-vect-ifcvt-11.c
++++ b/src/gcc/testsuite/gcc.dg/vect/no-trapping-math-vect-ifcvt-11.c
+@@ -31,4 +31,3 @@ int main ()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/no-trapping-math-vect-ifcvt-12.c
++++ b/src/gcc/testsuite/gcc.dg/vect/no-trapping-math-vect-ifcvt-12.c
+@@ -30,4 +30,3 @@ int main ()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/no-trapping-math-vect-ifcvt-13.c
++++ b/src/gcc/testsuite/gcc.dg/vect/no-trapping-math-vect-ifcvt-13.c
+@@ -31,4 +31,3 @@ int main ()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/no-trapping-math-vect-ifcvt-14.c
++++ b/src/gcc/testsuite/gcc.dg/vect/no-trapping-math-vect-ifcvt-14.c
+@@ -31,4 +31,3 @@ int main ()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/no-trapping-math-vect-ifcvt-15.c
++++ b/src/gcc/testsuite/gcc.dg/vect/no-trapping-math-vect-ifcvt-15.c
+@@ -31,4 +31,3 @@ int main ()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/no-tree-dom-vect-bug.c
++++ b/src/gcc/testsuite/gcc.dg/vect/no-tree-dom-vect-bug.c
+@@ -27,4 +27,3 @@ int main ()
+ 
+   return 0;
+ }
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/no-tree-fre-pr50039.c
++++ b/src/gcc/testsuite/gcc.dg/vect/no-tree-fre-pr50039.c
+@@ -11,5 +11,4 @@ int main(void) {
+     }
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/no-tree-pre-pr45241.c
++++ b/src/gcc/testsuite/gcc.dg/vect/no-tree-pre-pr45241.c
+@@ -17,4 +17,3 @@ foo (short x)
+   return sum;
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/no-tree-pre-slp-29.c
++++ b/src/gcc/testsuite/gcc.dg/vect/no-tree-pre-slp-29.c
+@@ -74,5 +74,4 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 2 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 2 "vect"  } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+   
+--- a/src/gcc/testsuite/gcc.dg/vect/no-tree-reassoc-bb-slp-12.c
++++ b/src/gcc/testsuite/gcc.dg/vect/no-tree-reassoc-bb-slp-12.c
+@@ -48,6 +48,4 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp2" { target vect_int_mult } } } */
+-/* { dg-final { cleanup-tree-dump "slp1" } } */
+-/* { dg-final { cleanup-tree-dump "slp2" } } */
+   
+--- a/src/gcc/testsuite/gcc.dg/vect/no-tree-sra-bb-slp-pr50730.c
++++ b/src/gcc/testsuite/gcc.dg/vect/no-tree-sra-bb-slp-pr50730.c
+@@ -14,4 +14,3 @@ A sum(A a,A b)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "not vectorized: more than one data ref in stmt" 0 "slp2" } } */
+-/* { dg-final { cleanup-tree-dump "slp2" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/no-vfa-pr29145.c
++++ b/src/gcc/testsuite/gcc.dg/vect/no-vfa-pr29145.c
+@@ -50,4 +50,3 @@ int main(void)
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 0 loops" 2 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/no-vfa-vect-101.c
++++ b/src/gcc/testsuite/gcc.dg/vect/no-vfa-vect-101.c
+@@ -47,5 +47,4 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 0 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "can't determine dependence" 1 "vect" { target { ! vect_multiple_sizes } } } } */
+ /* { dg-final { scan-tree-dump-times "can't determine dependence" 2 "vect" { target vect_multiple_sizes } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/no-vfa-vect-102.c
++++ b/src/gcc/testsuite/gcc.dg/vect/no-vfa-vect-102.c
+@@ -55,5 +55,4 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 0 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "possible dependence between data-refs" 1 "vect" { target { ! vect_multiple_sizes } } } } */
+ /* { dg-final { scan-tree-dump-times "possible dependence between data-refs" 2 "vect" { target vect_multiple_sizes } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/no-vfa-vect-102a.c
++++ b/src/gcc/testsuite/gcc.dg/vect/no-vfa-vect-102a.c
+@@ -55,5 +55,4 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 0 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "possible dependence between data-refs" 1 "vect" { target { ! vect_multiple_sizes } } } } */
+ /* { dg-final { scan-tree-dump-times "possible dependence between data-refs" 2 "vect" { target vect_multiple_sizes } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/no-vfa-vect-37.c
++++ b/src/gcc/testsuite/gcc.dg/vect/no-vfa-vect-37.c
+@@ -60,4 +60,3 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect" { xfail *-*-* } } } */
+ /* { dg-final { scan-tree-dump-times "can't determine dependence" 2 "vect" { target { ! vect_multiple_sizes } } } } */
+ /* { dg-final { scan-tree-dump-times "can't determine dependence" 4 "vect" { target vect_multiple_sizes } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/no-vfa-vect-43.c
++++ b/src/gcc/testsuite/gcc.dg/vect/no-vfa-vect-43.c
+@@ -91,4 +91,3 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 2 loops" 2 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 6 "vect" { target { vect_no_align && { ! vect_hw_misalign } } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/no-vfa-vect-45.c
++++ b/src/gcc/testsuite/gcc.dg/vect/no-vfa-vect-45.c
+@@ -57,4 +57,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail *-*-* } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/no-vfa-vect-49.c
++++ b/src/gcc/testsuite/gcc.dg/vect/no-vfa-vect-49.c
+@@ -59,4 +59,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/no-vfa-vect-51.c
++++ b/src/gcc/testsuite/gcc.dg/vect/no-vfa-vect-51.c
+@@ -57,4 +57,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail *-*-* } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/no-vfa-vect-53.c
++++ b/src/gcc/testsuite/gcc.dg/vect/no-vfa-vect-53.c
+@@ -60,4 +60,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/no-vfa-vect-57.c
++++ b/src/gcc/testsuite/gcc.dg/vect/no-vfa-vect-57.c
+@@ -72,4 +72,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail { vect_no_align && { ! vect_hw_misalign } } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/no-vfa-vect-61.c
++++ b/src/gcc/testsuite/gcc.dg/vect/no-vfa-vect-61.c
+@@ -74,4 +74,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail { vect_no_align && { ! vect_hw_misalign } } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/no-vfa-vect-79.c
++++ b/src/gcc/testsuite/gcc.dg/vect/no-vfa-vect-79.c
+@@ -48,4 +48,3 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { xfail *-*-* } } } */
+ /* { dg-final { scan-tree-dump-times "can't determine dependence" 1 "vect" { target { ! vect_multiple_sizes } } } } */
+ /* { dg-final { scan-tree-dump-times "can't determine dependence" 2 "vect" { target vect_multiple_sizes } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/no-vfa-vect-depend-1.c
++++ b/src/gcc/testsuite/gcc.dg/vect/no-vfa-vect-depend-1.c
+@@ -52,5 +52,4 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" {xfail { vect_no_align && { ! vect_hw_misalign } } } } } */
+ /* { dg-final { scan-tree-dump-times "dependence distance negative" 1 "vect"  } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/no-vfa-vect-depend-2.c
++++ b/src/gcc/testsuite/gcc.dg/vect/no-vfa-vect-depend-2.c
+@@ -52,4 +52,3 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" {xfail { vect_no_align && { ! vect_hw_misalign } } } } } */
+ /* { dg-final { scan-tree-dump-times "dependence distance negative" 1 "vect"  } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/no-vfa-vect-depend-3.c
++++ b/src/gcc/testsuite/gcc.dg/vect/no-vfa-vect-depend-3.c
+@@ -184,4 +184,3 @@ int main ()
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 4 "vect" {xfail { vect_no_align && { ! vect_hw_misalign } } } } } */
+ /* { dg-final { scan-tree-dump-times "dependence distance negative" 4 "vect"  } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/no-vfa-vect-dv-2.c
++++ b/src/gcc/testsuite/gcc.dg/vect/no-vfa-vect-dv-2.c
+@@ -76,4 +76,3 @@ int main ()
+ /* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "accesses have the same alignment." 2 "vect" { target { { vect_aligned_arrays } && {! vect_sizes_32B_16B} } } } } */
+ /* { dg-final { scan-tree-dump-times "accesses have the same alignment." 1 "vect" { target { {! vect_aligned_arrays } && {vect_sizes_32B_16B} } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/nodump-forwprop-22.c
++++ b/src/gcc/testsuite/gcc.dg/vect/nodump-forwprop-22.c
+@@ -17,4 +17,3 @@ void f (vec *px, vec *y, vec *z)
+ 
+ /* { dg-final { scan-tree-dump-times "VEC_PERM_EXPR" 1 "cddce1" } } */
+ /* { dg-final { scan-tree-dump-not "BIT_FIELD_REF" "cddce1" } } */
+-/* { dg-final { cleanup-tree-dump "cddce1" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr16105.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr16105.c
+@@ -19,4 +19,3 @@ void square(const float * __restrict__ a,
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 2 "vect" { target { vect_no_align && { ! vect_hw_misalign } } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr18308.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr18308.c
+@@ -11,4 +11,3 @@ void bar(int j)
+   if (k) foo();
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr18400.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr18400.c
+@@ -36,4 +36,3 @@ int main (void)
+ } 
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr18425.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr18425.c
+@@ -14,4 +14,3 @@ _M_fill_insert(unsigned int __n)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr18536.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr18536.c
+@@ -32,4 +32,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr20122.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr20122.c
+@@ -53,4 +53,3 @@ int main (int argc, char **argv)
+    The loop in main is aligned.  */
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 3 "vect" } } */
+ /*  { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 2 "vect" { target { vect_no_align && { ! vect_hw_misalign } } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr21591.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr21591.c
+@@ -34,5 +34,4 @@ void f(void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/pr22480.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr22480.c
+@@ -29,4 +29,3 @@ test_3 (void)
+    bm[j] <<= am[j];
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr22506.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr22506.c
+@@ -11,4 +11,3 @@ void foo()
+     for (i=0; i<2; ++i) ;
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr23816-1.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr23816-1.c
+@@ -9,4 +9,3 @@ foo (float a[32], float b[2][32])
+     a[i] = (b[0][i] > b[1][i]) ? b[0][i] : b[1][i];
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr23816-2.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr23816-2.c
+@@ -9,4 +9,3 @@ foo (double a[32], double b[2][32])
+     a[i] = (b[0][i] > b[1][i]) ? b[0][i] : b[1][i];
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr23831.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr23831.c
+@@ -9,4 +9,3 @@ void foo (void)
+     bm[j] = bm[j] * 8;
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr24059.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr24059.c
+@@ -13,4 +13,3 @@ void compute_predicate_codes (char *codes, struct pred_data *p)
+     codes[i] = p->codes[i] ? 2 : 0;
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr24300.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr24300.c
+@@ -34,4 +34,3 @@ foo (int Fc)
+   return (tc);
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr25371.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr25371.c
+@@ -10,4 +10,3 @@ void slow_close(int n)
+       *(mm+i*2*n+i) = 0;
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr25413.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr25413.c
+@@ -36,4 +36,3 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 0 "vect" { target { {! vector_alignment_reachable_for_64bit} && {! vect_hw_misalign} } } } } */
+ /* { dg-final { scan-tree-dump-times "vector alignment may not be reachable" 1 "vect" { target { {! vector_alignment_reachable_for_64bit} && {! vect_hw_misalign} } } } } */
+ /* { dg-final { scan-tree-dump-times "not vectorized: unsupported unaligned store" 1 "vect" { target { {! vector_alignment_reachable_for_64bit} && {! vect_hw_misalign} } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr25413a.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr25413a.c
+@@ -126,4 +126,3 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "vector alignment may not be reachable" 1 "vect" { target { ! vector_alignment_reachable  } } } } */
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 1 "vect" { target { ! vector_alignment_reachable } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr26359.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr26359.c
+@@ -14,5 +14,3 @@ foo () {
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "Deleting : vect_" 0 "dce5" } } */
+-/* { dg-final { cleanup-tree-dump "dce5" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr27151.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr27151.c
+@@ -13,4 +13,3 @@ void vis_clear_data ()
+     }
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr28952.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr28952.c
+@@ -30,4 +30,3 @@ send_spaceship_info (void)
+   lsend_packet_spaceship_info (&info);
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr30771.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr30771.c
+@@ -15,4 +15,3 @@ main()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_unpack } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr30784.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr30784.c
+@@ -27,4 +27,3 @@ int main ()
+ 
+   return 0;
+ }
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr30795.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr30795.c
+@@ -16,4 +16,3 @@ main()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr30843.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr30843.c
+@@ -21,5 +21,4 @@ void dacP98FillRGBMap (unsigned char *pBuffer)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_interleave || vect_strided4 } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/pr30858.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr30858.c
+@@ -12,4 +12,3 @@ foo (int ko)
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" } } */
+ /* { dg-final { scan-tree-dump "Unknown def-use cycle pattern." "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr31041.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr31041.c
+@@ -24,4 +24,3 @@ utrie_open_3_4 ()
+       while (i < 5);
+     }
+ }
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr31343.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr31343.c
+@@ -32,4 +32,3 @@ main1 ()
+     }
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr31699.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr31699.c
+@@ -36,4 +36,3 @@ int main()
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 2 "vect" { target vect_intfloat_cvt } } } */
+ /* { dg-final { scan-tree-dump-times "vector alignment may not be reachable" 1 "vect" { target { ! vector_alignment_reachable } } } } */
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 1 "vect" { target { ! vector_alignment_reachable } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr32216.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr32216.c
+@@ -12,4 +12,3 @@ SetSoundVariables (int x)
+   }
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr32224.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr32224.c
+@@ -15,4 +15,3 @@ gmpz_export (void *data)
+     __src++;
+   }
+ }
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr32230.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr32230.c
+@@ -19,6 +19,5 @@ const_f (filter_buffer_t *buf)
+     ((float*) (&((sbuf_header_t *) (__PTRDIFF_TYPE__)((buf) == (filter_buffer_t *)&(buf)->buf[0]))->buf[0]))[i] = val;
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/pr32366.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr32366.c
+@@ -12,4 +12,3 @@ stream_test (void)
+     input[k] = k * 1.0;
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr32421.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr32421.c
+@@ -8,5 +8,4 @@ int f(int **__restrict a, int ** __restrict b)
+     a[i] = b[i] + 1;
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/pr32824.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr32824.c
+@@ -11,5 +11,4 @@ void foo(void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/pr33369.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr33369.c
+@@ -19,4 +19,3 @@ f (POINT * ptBuf)
+     }
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr33373.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr33373.c
+@@ -5,4 +5,3 @@ void DOSMEM_FillIsrTable(int*isr) {
+     for (i=0; i<256; i++)
+         isr[i]=(((short)((i*4) & 0xFFFF)) | (0xf000 & 0xFFFF) << 16);
+ }
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr33373b.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr33373b.c
+@@ -5,4 +5,3 @@ void f (unsigned int *d, unsigned int *s, int w)
+   for (i = 0; i < w; ++i)
+     d [i] = s [i] * (unsigned short) (~d [i] >> 24);
+ }
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr33597.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr33597.c
+@@ -21,4 +21,3 @@ rgb15to24_C (const uint8_t * src, uint8_t * dst, long src_size)
+     }
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr33804.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr33804.c
+@@ -13,4 +13,3 @@ void f(unsigned char *s, unsigned char *d, int n) {
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail { vect_no_align && { ! vect_hw_misalign } } } } } */
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" { xfail { vect_no_align && { ! vect_hw_misalign } } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr33833.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr33833.c
+@@ -32,4 +32,3 @@ void sched_init (uintptr_t __ptr)
+   }
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr33846.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr33846.c
+@@ -21,4 +21,3 @@ void _mix_some_samples (intptr_t buf, int *mix_buffer, int mix_size)
+   }
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr33866.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr33866.c
+@@ -28,5 +28,4 @@ void test_select_fill_hyper_simple (long *offset)
+ 
+ /* Needs interleaving support.  */
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_interleave || vect_strided2 } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/pr33953.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr33953.c
+@@ -30,6 +30,5 @@ void blockmove_NtoN_blend_noremap32 (const UINT32 *srcdata, int srcwidth,
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail { vect_no_align && { ! vect_hw_misalign } } } } } */
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" { xfail { vect_no_align && { ! vect_hw_misalign } } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/pr34005.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr34005.c
+@@ -13,4 +13,3 @@ void XdmcpUnwrap (unsigned char *output, int k)
+     output[i] = blocks[k][i];
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr34407.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr34407.c
+@@ -13,4 +13,3 @@ void ReadRLEImage (unsigned char *p)
+     *p++ = background_color[j];
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr34591.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr34591.c
+@@ -9,4 +9,3 @@ int av_resample(int filter_length, short *src, short *filter)
+     return val;
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr36228.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr36228.c
+@@ -28,4 +28,3 @@ t_run_test()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "versioning for alias required" 0 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr36493.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr36493.c
+@@ -21,5 +21,4 @@ main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/pr36630.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr36630.c
+@@ -14,4 +14,3 @@ foo (unsigned char *x, short y)
+     }
+ }
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr37027.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr37027.c
+@@ -33,5 +33,4 @@ foo (void)
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail vect_no_int_add } } } */
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" { xfail vect_no_int_add } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/pr37385.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr37385.c
+@@ -17,4 +17,3 @@ bar ()
+       fun_tab[i] = foo;
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr37474.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr37474.c
+@@ -34,5 +34,4 @@ void foo (unsigned int *__restrict__ pInput, unsigned int *__restrict__ pOutput)
+     }
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/pr37482.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr37482.c
+@@ -17,5 +17,4 @@ void SexiALI_Convert(void *vdest, void *vsrc, unsigned int frames)
+   *dest++ = tmp;
+  }
+ }
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/pr37539.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr37539.c
+@@ -41,7 +41,6 @@ int main ()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 2 "vect" { target { vect_strided4 && vect_strided2 } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+ 
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/pr37730.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr37730.c
+@@ -15,4 +15,3 @@ add_opush (void)
+   sdp_seq_alloc (dtds);
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr38529.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr38529.c
+@@ -13,6 +13,5 @@ void foo()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 1 "vect"  } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/pr39529.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr39529.c
+@@ -16,6 +16,5 @@ foo (void)
+     } while (p < p2);
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/pr40074.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr40074.c
+@@ -50,5 +50,4 @@ int main (void)
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+   
+--- a/src/gcc/testsuite/gcc.dg/vect/pr40238.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr40238.c
+@@ -31,5 +31,4 @@ int xgp_ahd_interpolate (int tile)
+  return 0;
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/pr40254.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr40254.c
+@@ -35,5 +35,4 @@ main (void)
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/pr40542.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr40542.c
+@@ -10,5 +10,4 @@ volarr_cpy(char *d, volatile char *s)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail *-*-* } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/pr41956.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr41956.c
+@@ -10,4 +10,3 @@ void K (int *gpwgts, int *badminpwgt, int *badmaxpwgt)
+   }
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr42193.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr42193.c
+@@ -24,5 +24,4 @@ void foo ()
+   out[5] = 17 * a + 15 * b + 13  * c + 14 * d + 11 * e + 9 * f;
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/pr42604.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr42604.c
+@@ -32,4 +32,3 @@ test (unsigned short *b)
+     }
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr42709.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr42709.c
+@@ -24,5 +24,4 @@ main1 (int *a, int *b, int *c, int *d, int dummy)
+     } 
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+   
+--- a/src/gcc/testsuite/gcc.dg/vect/pr43430-1.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr43430-1.c
+@@ -36,4 +36,3 @@ main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_condition } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr43430-2.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr43430-2.c
+@@ -14,4 +14,3 @@ vsad16_c (void *c, uint8_t * s1, uint8_t * s2, int stride, int h)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_condition } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr43432.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr43432.c
+@@ -11,4 +11,3 @@ int len){
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_perm && vect_hw_misalign } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr43842.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr43842.c
+@@ -53,5 +53,4 @@ int81 (void)
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/pr44507.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr44507.c
+@@ -51,5 +51,4 @@ int main(int argc, char** argv)
+   return seeIf256ByteArrayIsConstant(&array1[0]);
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/pr45633.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr45633.c
+@@ -12,4 +12,3 @@ foo (void)
+     t[i] -= s[i];
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr45752.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr45752.c
+@@ -104,5 +104,4 @@ int main (int argc, const char* argv[])
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 0 "vect"  } } */
+ /* { dg-final { scan-tree-dump "permutation requires at least three vectors" "vect" { target vect_perm } } } */
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 0 "vect"  } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/pr45847.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr45847.c
+@@ -11,5 +11,4 @@ long long foo (long long *__restrict a,  int *__restrict b, int *__restrict c )
+   return sum;
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/pr45902.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr45902.c
+@@ -40,4 +40,3 @@ main ()
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr46009.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr46009.c
+@@ -71,4 +71,3 @@ main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 2 "vect" { target vect_int_mult } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr46049.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr46049.c
+@@ -18,4 +18,3 @@ void foo (int16_t i, int16_t *p, int16_t x)
+       p++;
+     }
+ }
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr46052.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr46052.c
+@@ -30,4 +30,3 @@ void foo1 (int n)
+     }
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr46126.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr46126.c
+@@ -22,4 +22,3 @@ EvTab[(((uintptr_t)(((TypHandle*)((hdCall)->ptr))[1]) & 1) ? 1 :
+      ptApp[2] = ((TypHandle) (uintptr_t) (((long)(lc) << 2) + 1));
+  }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr46663.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr46663.c
+@@ -11,4 +11,3 @@ int foo (bart bar, int m)
+   return j;
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr47001.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr47001.c
+@@ -24,4 +24,3 @@ int main1 (int res0, int res1)
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr47139.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr47139.c
+@@ -14,5 +14,4 @@ foo ()
+     }
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.dg/vect/pr48052.c
+@@ -0,0 +1,26 @@
++/* { dg-do compile } */
++/* { dg-require-effective-target vect_int_mult } */
++
++int foo(int* A, int* B,  unsigned start, unsigned BS)
++{
++  int s = 0;
++  for (unsigned k = start;  k < start + BS; k++)
++    {
++      s += A[k] * B[k];
++    }
++
++  return s;
++}
++
++int bar(int* A, int* B, unsigned BS)
++{
++  int s = 0;
++  for (unsigned k = 0;  k < BS; k++)
++    {
++      s += A[k] * B[k];
++    }
++
++  return s;
++}
++
++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 2 "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr48172.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr48172.c
+@@ -28,4 +28,3 @@ int main() {
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr48377.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr48377.c
+@@ -22,4 +22,3 @@ main (void)
+   return foo (buf + 1, 26) != 26;
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr48765.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr48765.c
+@@ -82,4 +82,3 @@ stupid_find_reg (call_preserved, class, mode, born_insn, dead_insn,
+     }
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr49038.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr49038.c
+@@ -41,4 +41,3 @@ main (void)
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr49093.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr49093.c
+@@ -19,4 +19,3 @@ lbl_473:
+     }
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr49318.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr49318.c
+@@ -19,4 +19,3 @@ void gl_GetDoublev( GLcontext *ctx, GLenum pname, GLdouble *params ) {
+     params[i] = (GLint) ctx->TextureMatrix[i];
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr49478.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr49478.c
+@@ -20,5 +20,4 @@ foo (int len) {
+   return result;
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/pr49610.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr49610.c
+@@ -9,4 +9,3 @@ void func_13(int p_17) {
+     }
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr49771.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr49771.c
+@@ -23,4 +23,3 @@ main (void)
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr49926.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr49926.c
+@@ -20,4 +20,3 @@ foo (unsigned int x, int y, int z, int *w)
+   while (1);
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr50014.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr50014.c
+@@ -12,5 +12,4 @@ int f(unsigned char *s, int n)
+   return sum;
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/pr50451.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr50451.c
+@@ -14,5 +14,4 @@ foo (int integral, int decimal, int power_ten)
+   return integral+decimal;
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/pr50635.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr50635.c
+@@ -17,5 +17,4 @@ void f0a(int32_t * result, int32_t * arg1, int8_t * arg2, int32_t temp_3)
+     }
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/pr50727.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr50727.c
+@@ -17,5 +17,4 @@ f0a (uint32_t * __restrict__ result, uint32_t * arg2,
+     }
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/pr51000.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr51000.c
+@@ -16,4 +16,3 @@ foo ()
+     }
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr51015.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr51015.c
+@@ -16,4 +16,3 @@ void e2fsck_pass1()
+  }
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr51074.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr51074.c
+@@ -21,4 +21,3 @@ main ()
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr51301.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr51301.c
+@@ -12,4 +12,3 @@ f0a (int8_t * __restrict__ arg1)
+   return result;
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr51581-1.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr51581-1.c
+@@ -15,4 +15,3 @@ main ()
+   return main1 ();
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr51581-2.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr51581-2.c
+@@ -15,4 +15,3 @@ main ()
+   return main1 ();
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr51581-3.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr51581-3.c
+@@ -115,4 +115,3 @@ main ()
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr51581-4.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr51581-4.c
+@@ -163,4 +163,3 @@ main ()
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr51590.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr51590.c
+@@ -32,4 +32,3 @@ foo (const char *x, struct S *y)
+   bar (&d);
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr51799.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr51799.c
+@@ -15,4 +15,3 @@ f0a (uint32_t * __restrict__ result, int8_t * __restrict__ arg1,
+     }
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr52091.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr52091.c
+@@ -27,5 +27,4 @@ main ()
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/pr52252-ld.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr52252-ld.c
+@@ -26,4 +26,3 @@ matrix_mul (byte *in, byte *out, int size)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { i?86-*-* x86_64-*-* } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr52252-st.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr52252-st.c
+@@ -18,4 +18,3 @@ matrix_mul (byte *in, byte *out, int size)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { i?86-*-* x86_64-*-* } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr53185-2.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr53185-2.c
+@@ -24,4 +24,3 @@ int main ()
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr53773.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr53773.c
+@@ -15,6 +15,4 @@ foo (int integral, int decimal, int power_ten)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "\\* 10" 2 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/pr55857-1.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr55857-1.c
+@@ -14,4 +14,3 @@ foo (int *data, unsigned len, const int qlp_coeff[], int lp, int residual[])
+     }    
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr55857-2.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr55857-2.c
+@@ -18,4 +18,3 @@ void foo (int *data, unsigned len, const int qlp_coeff[],
+       residual[i] = data[i] - ((qlp_coeff[0] * data[i-1]) >> lp);
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr56695.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr56695.c
+@@ -11,4 +11,3 @@ f (void)
+     a |= !(i |= b %= 1);
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr56787.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr56787.c
+@@ -32,4 +32,3 @@ foo (unsigned long n, const float *__restrict u0,
+ }
+ 
+ /* { dg-final { scan-tree-dump "vectorized 1 loops" "vect" { xfail { vect_no_align && { ! vect_hw_misalign } } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr56826.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr56826.c
+@@ -38,4 +38,3 @@ int main()
+   return 0;
+ } 
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr56918.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr56918.c
+@@ -28,4 +28,3 @@ main ()
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr56920.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr56920.c
+@@ -18,4 +18,3 @@ main ()
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr56933.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr56933.c
+@@ -42,4 +42,3 @@ int main()
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr57705.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr57705.c
+@@ -63,4 +63,3 @@ main ()
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loop" 3 "vect" { target vect_pack_trunc } } } */
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loop" 2 "vect" { target { ! vect_pack_trunc } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr57741-1.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr57741-1.c
+@@ -18,4 +18,3 @@ foo (float *p, float *q, float x)
+     }
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr57741-2.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr57741-2.c
+@@ -41,4 +41,3 @@ main ()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 2 loop" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr57741-3.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr57741-3.c
+@@ -40,4 +40,3 @@ main ()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loop" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr58508.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr58508.c
+@@ -68,4 +68,3 @@ void test5 (int* a, int* b)
+ 
+ /* { dg-final { scan-tree-dump-times "hoist" 8 "vect" { xfail *-*-* } } } */
+ /* { dg-final { scan-tree-dump-times "hoist" 3 "vect" { xfail { vect_no_align && { ! vect_hw_misalign } } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr59354.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr59354.c
+@@ -1,4 +1,3 @@
+-/* { dg-do run } */
+ /* { dg-additional-options "-O3" } */
+ 
+ #include "tree-vect.h"
+@@ -38,4 +37,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump "vectorized 1 loop" "vect" { target { vect_pack_trunc } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr59519-1.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr59519-1.c
+@@ -16,4 +16,3 @@ foo (void)
+       }
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr59519-2.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr59519-2.c
+@@ -17,4 +17,3 @@ foo (void)
+       }
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr59591-1.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr59591-1.c
+@@ -51,4 +51,3 @@ main ()
+ }
+ #endif
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr59591-2.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr59591-2.c
+@@ -52,4 +52,3 @@ main ()
+ }
+ #endif
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr59594.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr59594.c
+@@ -28,4 +28,3 @@ main ()
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr59651.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr59651.c
+@@ -1,4 +1,3 @@
+ /* PR tree-optimization/59561 */
+ #include "../torture/pr59651.c"
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr59984.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr59984.c
+@@ -62,4 +62,3 @@ main ()
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr60012.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr60012.c
+@@ -19,4 +19,3 @@ libvector_AccSquareNorm_ref (unsigned int *acc,
+ }
+ 
+ /* { dg-final { scan-tree-dump "LOOP VECTORIZED" "vect" { target { vect_extract_even_odd } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr60092-2.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr60092-2.c
+@@ -25,4 +25,3 @@ int *foo (int n)
+ /* { dg-final { scan-tree-dump "LOOP VECTORIZED" "vect" } } */
+ /* { dg-final { scan-tree-dump-not "Peeling for alignment will be applied" "vect" } } */
+ /* { dg-final { scan-tree-dump-not "Vectorizing an unaligned access" "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr60092.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr60092.c
+@@ -17,4 +17,3 @@ int *foo (int n)
+ /* { dg-final { scan-tree-dump "LOOP VECTORIZED" "vect" } } */
+ /* { dg-final { scan-tree-dump-not "Peeling for alignment will be applied" "vect" } } */
+ /* { dg-final { scan-tree-dump-not "Vectorizing an unaligned access" "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr60196-1.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr60196-1.c
+@@ -30,4 +30,3 @@ main ()
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr60196-2.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr60196-2.c
+@@ -29,4 +29,3 @@ main ()
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr60276.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr60276.c
+@@ -48,4 +48,3 @@ int main(void)
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr60382.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr60382.c
+@@ -29,4 +29,3 @@ main ()
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr60482.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr60482.c
+@@ -17,4 +17,3 @@ foo (double *x, int n)
+ }
+ 
+ /* { dg-final { scan-tree-dump-not "epilog loop required" "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr60505.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr60505.c
+@@ -11,4 +11,3 @@ void foo(char *in, char *out, int num)
+   out[num] = ovec[num/2];
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr60656.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr60656.c
+@@ -44,4 +44,3 @@ int main()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_widen_mult_si_to_di_pattern } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr60841.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr60841.c
+@@ -180,4 +180,3 @@ foo (struct T *p, struct T *q, int x, int w)
+     }
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr61194.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr61194.c
+@@ -39,4 +39,3 @@ int main()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail *-*-* } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr61634.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr61634.c
+@@ -21,4 +21,3 @@ void fn1 (int p1[], int p2, int p3[], int p4[], int p5[], int *p6)
+     ;
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr61680.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr61680.c
+@@ -49,4 +49,3 @@ main ()
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr62021.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr62021.c
+@@ -27,4 +27,3 @@ main ()
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr62073.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr62073.c
+@@ -37,4 +37,3 @@ int foo (long long p_56, int * p_57)
+   return *l_77;
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr62075.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr62075.c
+@@ -19,4 +19,3 @@ foo (struct A *x)
+     }
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr63148.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr63148.c
+@@ -89,4 +89,3 @@ int main(int argc, char *argv[])
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr63189.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr63189.c
+@@ -22,4 +22,3 @@ main ()
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr63341-1.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr63341-1.c
+@@ -28,4 +28,3 @@ main ()
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr63341-2.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr63341-2.c
+@@ -31,4 +31,3 @@ main ()
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr63379.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr63379.c
+@@ -39,4 +39,3 @@ int main()
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr63605.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr63605.c
+@@ -19,4 +19,3 @@ main ()
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr64252.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr64252.c
+@@ -1,6 +1,5 @@
+ /* PR target/64252 */
+ /* Test correctness of size 3 store groups permutation.  */
+-/* { dg-do run } */
+ /* { dg-additional-options "-O3" } */
+ /* { dg-additional-options "-mavx" { target avx_runtime } } */
+ 
+@@ -63,4 +62,3 @@ int main()
+       abort ();
+   return 0;
+ }
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr64404.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr64404.c
+@@ -1,4 +1,3 @@
+-/* { dg-do run } */
+ /* { dg-additional-options "--param=sccvn-max-alias-queries-per-access=1" } */
+ 
+ #include "tree-vect.h"
+@@ -56,4 +55,3 @@ main (void)
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr64421.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr64421.c
+@@ -33,4 +33,3 @@ main ()
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr64493.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr64493.c
+@@ -1,5 +1,3 @@
+-/* { dg-do run } */
+-
+ #include "tree-vect.h"
+ 
+ int a, b, c, d, e, f, g, h;
+@@ -28,4 +26,3 @@ main ()
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr64495.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr64495.c
+@@ -1,5 +1,3 @@
+-/* { dg-do run } */
+-
+ #include <assert.h>
+ #include "tree-vect.h"
+ 
+@@ -32,4 +30,3 @@ main ()
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr64829.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr64829.c
+@@ -63,4 +63,3 @@ int fail ( const RMColorData * pInColor,
+   return (0);
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr64844.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr64844.c
+@@ -1,4 +1,3 @@
+-/* { dg-do run } */
+ /* { dg-require-effective-target vect_double } */
+ /* { dg-additional-options "-ffast-math" } */
+ 
+@@ -49,4 +48,3 @@ main()
+    dealing with the known misalignment in loop 2.  */
+ 
+ /* { dg-final { scan-tree-dump-times "loop vectorized" 2 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr65310.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr65310.c
+@@ -20,4 +20,3 @@ int t(b *a)
+ 
+ /* { dg-final { scan-tree-dump "can't force alignment" "vect" } } */
+ /* { dg-final { scan-tree-dump-not "misalign = 0" "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr65494.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr65494.c
+@@ -25,4 +25,3 @@ void foo(int n)
+ }
+ 
+ /* { dg-final { scan-tree-dump "vectorized 1 loops in function" "vect" { target { vect_float && vect_intfloat_cvt } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr65518.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr65518.c
+@@ -1,5 +1,3 @@
+-/* { dg-do run } */
+-
+ extern void abort (void);
+ 
+ typedef struct giga
+@@ -40,4 +38,3 @@ int main ()
+    should reject that in the end).  */
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 0 loops in function" 2 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/pr66251.c
++++ b/src/gcc/testsuite/gcc.dg/vect/pr66251.c
+@@ -75,4 +75,3 @@ int main ()
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/section-anchors-pr27770.c
++++ b/src/gcc/testsuite/gcc.dg/vect/section-anchors-pr27770.c
+@@ -28,4 +28,3 @@ int main (void)
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/section-anchors-vect-69.c
++++ b/src/gcc/testsuite/gcc.dg/vect/section-anchors-vect-69.c
+@@ -117,4 +117,3 @@ int main (void)
+   is extended to handle structs.  */
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 2 "vect" { target {vect_int && vector_alignment_reachable } } } } */
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 4 "vect" { target {vect_int && {! vector_alignment_reachable} } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/slp-1.c
++++ b/src/gcc/testsuite/gcc.dg/vect/slp-1.c
+@@ -119,5 +119,4 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 4 loops" 1 "vect"  } } */
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 4 "vect"  } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+   
+--- a/src/gcc/testsuite/gcc.dg/vect/slp-10.c
++++ b/src/gcc/testsuite/gcc.dg/vect/slp-10.c
+@@ -109,5 +109,4 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 3 "vect" {target {vect_uintfloat_cvt && vect_int_mult} } } } */
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 2 "vect"  {target {{! { vect_uintfloat_cvt}} && vect_int_mult} } } } */
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 0 "vect"  {target {{! { vect_uintfloat_cvt}} && { ! {vect_int_mult}}} } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+   
+--- a/src/gcc/testsuite/gcc.dg/vect/slp-11a.c
++++ b/src/gcc/testsuite/gcc.dg/vect/slp-11a.c
+@@ -72,4 +72,3 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_strided8 && vect_int_mult } } } } */
+ /* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" { target { ! { vect_strided8 && vect_int_mult } } } } } */
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 0 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/slp-11b.c
++++ b/src/gcc/testsuite/gcc.dg/vect/slp-11b.c
+@@ -46,4 +46,3 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_strided4 && vect_int_mult } } } } */
+ /* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" { target { ! { vect_strided4 && vect_int_mult } } } } } */
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 0 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/slp-11c.c
++++ b/src/gcc/testsuite/gcc.dg/vect/slp-11c.c
+@@ -43,4 +43,3 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { { vect_uintfloat_cvt && vect_strided2 } && vect_int_mult } } } } */
+ /* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" { target { ! { { vect_uintfloat_cvt && vect_strided2 } && vect_int_mult } } } } } */
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 0  "vect"  } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/slp-12a.c
++++ b/src/gcc/testsuite/gcc.dg/vect/slp-12a.c
+@@ -77,4 +77,3 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" { target { ! { vect_strided8 && vect_int_mult } } } } } */
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" { target { vect_strided8 && vect_int_mult } } } } */
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 0 "vect" { target { ! { vect_strided8 && vect_int_mult } } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/slp-12b.c
++++ b/src/gcc/testsuite/gcc.dg/vect/slp-12b.c
+@@ -47,5 +47,4 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect"  { target { ! { vect_strided2 && vect_int_mult } } } } } */
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect"  { target { vect_strided2 && vect_int_mult } } } } */
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 0 "vect"  { target { ! { vect_strided2 && vect_int_mult } } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+   
+--- a/src/gcc/testsuite/gcc.dg/vect/slp-12c.c
++++ b/src/gcc/testsuite/gcc.dg/vect/slp-12c.c
+@@ -50,4 +50,3 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect"  { target { ! vect_int_mult } } } } */
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" { target vect_int_mult } } } */
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 0 "vect" { target { ! vect_int_mult } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/slp-13-big-array.c
++++ b/src/gcc/testsuite/gcc.dg/vect/slp-13-big-array.c
+@@ -137,5 +137,4 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect" { target { vect_interleave && vect_extract_even_odd } } } } */
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 3 "vect" { xfail *-*-* }  } } */
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/slp-13.c
++++ b/src/gcc/testsuite/gcc.dg/vect/slp-13.c
+@@ -129,5 +129,4 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect" { target { vect_interleave && vect_extract_even_odd } } } } */
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 3 "vect" { xfail *-*-* }  } } */
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+   
+--- a/src/gcc/testsuite/gcc.dg/vect/slp-14.c
++++ b/src/gcc/testsuite/gcc.dg/vect/slp-14.c
+@@ -112,5 +112,4 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target vect_int_mult } } }  */
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 2 "vect" { target vect_int_mult } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+   
+--- a/src/gcc/testsuite/gcc.dg/vect/slp-15.c
++++ b/src/gcc/testsuite/gcc.dg/vect/slp-15.c
+@@ -114,5 +114,4 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect"  {target  { ! { vect_int_mult } } } } } */
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 2 "vect" {target vect_int_mult } } } */
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 0 "vect" {target { ! { vect_int_mult } } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+   
+--- a/src/gcc/testsuite/gcc.dg/vect/slp-16.c
++++ b/src/gcc/testsuite/gcc.dg/vect/slp-16.c
+@@ -67,5 +67,4 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target vect_int_mult } } } */
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 2 "vect" { target vect_int_mult } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+   
+--- a/src/gcc/testsuite/gcc.dg/vect/slp-17.c
++++ b/src/gcc/testsuite/gcc.dg/vect/slp-17.c
+@@ -52,5 +52,4 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 2 "vect"  } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+   
+--- a/src/gcc/testsuite/gcc.dg/vect/slp-18.c
++++ b/src/gcc/testsuite/gcc.dg/vect/slp-18.c
+@@ -93,5 +93,4 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_strided8 } } } */
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 2 "vect" { target vect_strided8 } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+   
+--- a/src/gcc/testsuite/gcc.dg/vect/slp-19a.c
++++ b/src/gcc/testsuite/gcc.dg/vect/slp-19a.c
+@@ -58,4 +58,3 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" { target { ! vect_strided8 } } } } */
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" { target vect_strided8 } } } */
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 0 "vect" { target { ! vect_strided8} } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/slp-19b.c
++++ b/src/gcc/testsuite/gcc.dg/vect/slp-19b.c
+@@ -55,4 +55,3 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" { target { ! vect_strided4 } } } } */
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" { target vect_strided4 } } } */
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 0 "vect" { target { ! vect_strided4 } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/slp-19c.c
++++ b/src/gcc/testsuite/gcc.dg/vect/slp-19c.c
+@@ -92,4 +92,3 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/slp-2.c
++++ b/src/gcc/testsuite/gcc.dg/vect/slp-2.c
+@@ -141,5 +141,4 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 4 loops" 1 "vect"  } } */
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 4 "vect"  } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+   
+--- a/src/gcc/testsuite/gcc.dg/vect/slp-20.c
++++ b/src/gcc/testsuite/gcc.dg/vect/slp-20.c
+@@ -111,5 +111,4 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect"  } } */
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 4 "vect"  } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+   
+--- a/src/gcc/testsuite/gcc.dg/vect/slp-21.c
++++ b/src/gcc/testsuite/gcc.dg/vect/slp-21.c
+@@ -203,5 +203,4 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target  { ! { vect_strided4 || vect_extract_even_odd } } } } } */
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 2 "vect" { target vect_strided4 }  } } */
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 0 "vect"  { target { ! { vect_strided4 } } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+   
+--- a/src/gcc/testsuite/gcc.dg/vect/slp-22.c
++++ b/src/gcc/testsuite/gcc.dg/vect/slp-22.c
+@@ -130,5 +130,4 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect"  } } */
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 6 "vect"  } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+   
+--- a/src/gcc/testsuite/gcc.dg/vect/slp-23.c
++++ b/src/gcc/testsuite/gcc.dg/vect/slp-23.c
+@@ -109,5 +109,4 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect" { target { vect_strided8 && { ! { vect_no_align} } } } } } */
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { ! { vect_strided8 || vect_no_align } } } } } */
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+   
+--- a/src/gcc/testsuite/gcc.dg/vect/slp-24-big-array.c
++++ b/src/gcc/testsuite/gcc.dg/vect/slp-24-big-array.c
+@@ -96,4 +96,3 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail { vect_no_align && ilp32 } } } } */
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 2 "vect" { xfail { vect_no_align && ilp32 } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/slp-24.c
++++ b/src/gcc/testsuite/gcc.dg/vect/slp-24.c
+@@ -81,4 +81,3 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail { vect_no_align && ilp32 } } } } */
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 2 "vect" { xfail { vect_no_align && ilp32 } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/slp-25.c
++++ b/src/gcc/testsuite/gcc.dg/vect/slp-25.c
+@@ -58,4 +58,3 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect"  } } */
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 2 "vect" { xfail { { vect_no_align && { ! vect_hw_misalign } } || { ! vect_natural_alignment } } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/slp-26.c
++++ b/src/gcc/testsuite/gcc.dg/vect/slp-26.c
+@@ -48,5 +48,4 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect"  } } */
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 0 "vect"  } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+   
+--- a/src/gcc/testsuite/gcc.dg/vect/slp-28.c
++++ b/src/gcc/testsuite/gcc.dg/vect/slp-28.c
+@@ -82,5 +82,4 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  } } */
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect"  } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+   
+--- a/src/gcc/testsuite/gcc.dg/vect/slp-3-big-array.c
++++ b/src/gcc/testsuite/gcc.dg/vect/slp-3-big-array.c
+@@ -151,5 +151,4 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 4 loops" 1 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 4 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/slp-3.c
++++ b/src/gcc/testsuite/gcc.dg/vect/slp-3.c
+@@ -143,5 +143,4 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 3 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+   
+--- a/src/gcc/testsuite/gcc.dg/vect/slp-33.c
++++ b/src/gcc/testsuite/gcc.dg/vect/slp-33.c
+@@ -107,5 +107,4 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 3 "vect" {target {vect_uintfloat_cvt && vect_int_mult} } } } */
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 2 "vect"  {target {{! { vect_uintfloat_cvt}} && vect_int_mult} } } } */
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 0 "vect"  {target {{! { vect_uintfloat_cvt}} && {! {vect_int_mult}}} } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+   
+--- a/src/gcc/testsuite/gcc.dg/vect/slp-34-big-array.c
++++ b/src/gcc/testsuite/gcc.dg/vect/slp-34-big-array.c
+@@ -65,5 +65,4 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 2 "vect"  } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/slp-34.c
++++ b/src/gcc/testsuite/gcc.dg/vect/slp-34.c
+@@ -57,5 +57,4 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 2 "vect"  } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+   
+--- a/src/gcc/testsuite/gcc.dg/vect/slp-35.c
++++ b/src/gcc/testsuite/gcc.dg/vect/slp-35.c
+@@ -69,5 +69,4 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+   
+--- a/src/gcc/testsuite/gcc.dg/vect/slp-36.c
++++ b/src/gcc/testsuite/gcc.dg/vect/slp-36.c
+@@ -73,4 +73,3 @@ test_3 (void)
+ 
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/slp-37.c
++++ b/src/gcc/testsuite/gcc.dg/vect/slp-37.c
+@@ -63,5 +63,4 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 0 "vect"  } } */
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 0 "vect"  } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+   
+--- a/src/gcc/testsuite/gcc.dg/vect/slp-38.c
++++ b/src/gcc/testsuite/gcc.dg/vect/slp-38.c
+@@ -21,4 +21,3 @@ void Compute(void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops in function" 1 "vect" { target { vect_float && vect_perm } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/slp-39.c
++++ b/src/gcc/testsuite/gcc.dg/vect/slp-39.c
+@@ -22,4 +22,3 @@ void bar (double w)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 2 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/slp-4-big-array.c
++++ b/src/gcc/testsuite/gcc.dg/vect/slp-4-big-array.c
+@@ -131,5 +131,4 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect"  } } */
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 3 "vect"  } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/slp-4.c
++++ b/src/gcc/testsuite/gcc.dg/vect/slp-4.c
+@@ -123,5 +123,4 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect"  } } */
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 3 "vect"  } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+   
+--- a/src/gcc/testsuite/gcc.dg/vect/slp-5.c
++++ b/src/gcc/testsuite/gcc.dg/vect/slp-5.c
+@@ -122,5 +122,4 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 3 "vect"  } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+   
+--- a/src/gcc/testsuite/gcc.dg/vect/slp-6.c
++++ b/src/gcc/testsuite/gcc.dg/vect/slp-6.c
+@@ -118,5 +118,4 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect"  {target  { ! { vect_int_mult } } } } } */
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 3 "vect" {target vect_int_mult  } } } */
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 2 "vect" {target  { ! { vect_int_mult } } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+   
+--- a/src/gcc/testsuite/gcc.dg/vect/slp-7.c
++++ b/src/gcc/testsuite/gcc.dg/vect/slp-7.c
+@@ -124,5 +124,4 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect"  { target { ! { vect_short_mult } } } } }*/
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 3 "vect"  { target vect_short_mult } } } */
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 2 "vect"  { target { ! { vect_short_mult } } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+  
+--- a/src/gcc/testsuite/gcc.dg/vect/slp-8.c
++++ b/src/gcc/testsuite/gcc.dg/vect/slp-8.c
+@@ -43,4 +43,3 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target powerpc*-*-* i?86-*-* x86_64-*-* } } } */
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" { target powerpc*-*-* i?86-*-* x86_64-*-* } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/slp-9.c
++++ b/src/gcc/testsuite/gcc.dg/vect/slp-9.c
+@@ -45,5 +45,4 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_widen_mult_hi_to_si } } }*/
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" { target vect_widen_mult_hi_to_si } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/slp-cond-1.c
++++ b/src/gcc/testsuite/gcc.dg/vect/slp-cond-1.c
+@@ -123,4 +123,3 @@ main ()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 3 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/slp-cond-2-big-array.c
++++ b/src/gcc/testsuite/gcc.dg/vect/slp-cond-2-big-array.c
+@@ -124,4 +124,3 @@ main ()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 3 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/slp-cond-2.c
++++ b/src/gcc/testsuite/gcc.dg/vect/slp-cond-2.c
+@@ -124,4 +124,3 @@ main ()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 3 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/slp-cond-3.c
++++ b/src/gcc/testsuite/gcc.dg/vect/slp-cond-3.c
+@@ -80,5 +80,4 @@ int main ()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/slp-cond-4.c
++++ b/src/gcc/testsuite/gcc.dg/vect/slp-cond-4.c
+@@ -83,4 +83,3 @@ int main ()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/slp-multitypes-1.c
++++ b/src/gcc/testsuite/gcc.dg/vect/slp-multitypes-1.c
+@@ -53,5 +53,4 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  } } */
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 2 "vect"  } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+   
+--- a/src/gcc/testsuite/gcc.dg/vect/slp-multitypes-10.c
++++ b/src/gcc/testsuite/gcc.dg/vect/slp-multitypes-10.c
+@@ -47,5 +47,4 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target vect_pack_trunc } } } */
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect"  { target vect_pack_trunc } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+   
+--- a/src/gcc/testsuite/gcc.dg/vect/slp-multitypes-11-big-array.c
++++ b/src/gcc/testsuite/gcc.dg/vect/slp-multitypes-11-big-array.c
+@@ -58,5 +58,4 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target vect_unpack } } } */
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect"  { target vect_unpack } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/slp-multitypes-11.c
++++ b/src/gcc/testsuite/gcc.dg/vect/slp-multitypes-11.c
+@@ -50,5 +50,4 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target vect_unpack } } } */
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect"  { target vect_unpack } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+   
+--- a/src/gcc/testsuite/gcc.dg/vect/slp-multitypes-12.c
++++ b/src/gcc/testsuite/gcc.dg/vect/slp-multitypes-12.c
+@@ -63,5 +63,4 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  } } */
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 3 "vect"  } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+   
+--- a/src/gcc/testsuite/gcc.dg/vect/slp-multitypes-2.c
++++ b/src/gcc/testsuite/gcc.dg/vect/slp-multitypes-2.c
+@@ -78,5 +78,4 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  } } */
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 2 "vect"  } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+   
+--- a/src/gcc/testsuite/gcc.dg/vect/slp-multitypes-3.c
++++ b/src/gcc/testsuite/gcc.dg/vect/slp-multitypes-3.c
+@@ -89,4 +89,3 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail sparc*-*-* } } } */
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 2 "vect" { xfail sparc*-*-* } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/slp-multitypes-4.c
++++ b/src/gcc/testsuite/gcc.dg/vect/slp-multitypes-4.c
+@@ -53,5 +53,4 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target vect_unpack } } } */
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect"  { target vect_unpack } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+   
+--- a/src/gcc/testsuite/gcc.dg/vect/slp-multitypes-5.c
++++ b/src/gcc/testsuite/gcc.dg/vect/slp-multitypes-5.c
+@@ -53,5 +53,4 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_pack_trunc } } } */
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" { target vect_pack_trunc } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+   
+--- a/src/gcc/testsuite/gcc.dg/vect/slp-multitypes-6.c
++++ b/src/gcc/testsuite/gcc.dg/vect/slp-multitypes-6.c
+@@ -53,5 +53,4 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target vect_pack_trunc } } } */
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect"  { target vect_pack_trunc } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+   
+--- a/src/gcc/testsuite/gcc.dg/vect/slp-multitypes-7.c
++++ b/src/gcc/testsuite/gcc.dg/vect/slp-multitypes-7.c
+@@ -53,5 +53,4 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target vect_unpack } } } */
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect"  { target vect_unpack } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+   
+--- a/src/gcc/testsuite/gcc.dg/vect/slp-multitypes-8.c
++++ b/src/gcc/testsuite/gcc.dg/vect/slp-multitypes-8.c
+@@ -41,5 +41,4 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target vect_unpack } } } */
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect"  { target vect_unpack } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+   
+--- a/src/gcc/testsuite/gcc.dg/vect/slp-multitypes-9.c
++++ b/src/gcc/testsuite/gcc.dg/vect/slp-multitypes-9.c
+@@ -41,5 +41,4 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target vect_pack_trunc } } } */
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect"  { target vect_pack_trunc } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+   
+--- a/src/gcc/testsuite/gcc.dg/vect/slp-perm-1.c
++++ b/src/gcc/testsuite/gcc.dg/vect/slp-perm-1.c
+@@ -59,5 +59,4 @@ int main (int argc, const char* argv[])
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target vect_perm } } } */
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" { target vect_perm } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/slp-perm-2.c
++++ b/src/gcc/testsuite/gcc.dg/vect/slp-perm-2.c
+@@ -55,5 +55,4 @@ int main (int argc, const char* argv[])
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target vect_perm } } } */
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" { target vect_perm } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/slp-perm-3.c
++++ b/src/gcc/testsuite/gcc.dg/vect/slp-perm-3.c
+@@ -68,6 +68,5 @@ int main (int argc, const char* argv[])
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target vect_perm } } } */
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" { target vect_perm } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/slp-perm-4.c
++++ b/src/gcc/testsuite/gcc.dg/vect/slp-perm-4.c
+@@ -83,5 +83,4 @@ int main (int argc, const char* argv[])
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 0 "vect"  } } */
+ /* { dg-final { scan-tree-dump "permutation requires at least three vectors" "vect" { target vect_perm} } } */
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 0 "vect"  } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/slp-perm-5.c
++++ b/src/gcc/testsuite/gcc.dg/vect/slp-perm-5.c
+@@ -74,6 +74,5 @@ int main (int argc, const char* argv[])
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target vect_perm } } } */
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 2 "vect" { target vect_perm } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/slp-perm-6.c
++++ b/src/gcc/testsuite/gcc.dg/vect/slp-perm-6.c
+@@ -73,5 +73,4 @@ int main (int argc, const char* argv[])
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target vect_perm } } } */
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 2 "vect" { target vect_perm } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/slp-perm-7.c
++++ b/src/gcc/testsuite/gcc.dg/vect/slp-perm-7.c
+@@ -70,8 +70,7 @@ int main (int argc, const char* argv[])
+   return 0;
+ }
+ 
+-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target vect_perm } } } */
++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 2 "vect"  { target vect_perm } } } */
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" { target vect_perm } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/slp-perm-8.c
++++ b/src/gcc/testsuite/gcc.dg/vect/slp-perm-8.c
+@@ -55,5 +55,4 @@ int main (int argc, const char* argv[])
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 2 "vect" { target { vect_perm_byte && vect_char_mult } } } } */
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_perm_byte && {! vect_char_mult } } } } } */
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" { target vect_perm_byte } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/slp-perm-9.c
++++ b/src/gcc/testsuite/gcc.dg/vect/slp-perm-9.c
+@@ -58,5 +58,4 @@ int main (int argc, const char* argv[])
+ /* { dg-final { scan-tree-dump-times "permutation requires at least three vectors" 1 "vect" { target vect_perm_short } } } */
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 0 "vect" { target { {! vect_perm } || {! vect_sizes_32B_16B } } } } } */
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" { target { { vect_perm } && { vect_sizes_32B_16B } } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/slp-reduc-1.c
++++ b/src/gcc/testsuite/gcc.dg/vect/slp-reduc-1.c
+@@ -44,5 +44,4 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail vect_no_int_add } } } */
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" { xfail vect_no_int_add } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/slp-reduc-2.c
++++ b/src/gcc/testsuite/gcc.dg/vect/slp-reduc-2.c
+@@ -39,5 +39,4 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail vect_no_int_add } } } */
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" { xfail vect_no_int_add } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/slp-reduc-3.c
++++ b/src/gcc/testsuite/gcc.dg/vect/slp-reduc-3.c
+@@ -59,4 +59,3 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "vect_recog_dot_prod_pattern: detected" 1 "vect" { xfail *-*-* } } } */
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 2 "vect" { target { vect_short_mult && { vect_widen_sum_hi_to_si  && vect_unpack } } } } } */ 
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" { xfail { vect_widen_sum_hi_to_si_pattern ||  { ! vect_unpack } } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/slp-reduc-4.c
++++ b/src/gcc/testsuite/gcc.dg/vect/slp-reduc-4.c
+@@ -58,5 +58,4 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail vect_no_int_max } } } */
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" { xfail vect_no_int_max } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/slp-reduc-5.c
++++ b/src/gcc/testsuite/gcc.dg/vect/slp-reduc-5.c
+@@ -44,5 +44,4 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 2 "vect" { xfail vect_no_int_max } } } */
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" { xfail vect_no_int_max } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/slp-reduc-6.c
++++ b/src/gcc/testsuite/gcc.dg/vect/slp-reduc-6.c
+@@ -45,5 +45,4 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 2 "vect" { xfail { vect_no_int_add || { ! { vect_unpack || vect_strided2 } } } } } } */
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 0 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "different interleaving chains in one node" 1 "vect" { target { ! vect_no_int_add } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/slp-widen-mult-half.c
++++ b/src/gcc/testsuite/gcc.dg/vect/slp-widen-mult-half.c
+@@ -48,5 +48,4 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 2 "vect" { target vect_widen_mult_hi_to_si } } } */
+ /* { dg-final { scan-tree-dump-times "vect_recog_widen_mult_pattern: detected" 2 "vect" { target vect_widen_mult_hi_to_si_pattern } } } */
+ /* { dg-final { scan-tree-dump-times "pattern recognized" 2 "vect" { target vect_widen_mult_hi_to_si_pattern } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/slp-widen-mult-s16.c
++++ b/src/gcc/testsuite/gcc.dg/vect/slp-widen-mult-s16.c
+@@ -39,5 +39,4 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_widen_mult_hi_to_si || vect_unpack } } } } */
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" { target { vect_widen_mult_hi_to_si || vect_unpack } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/slp-widen-mult-u8.c
++++ b/src/gcc/testsuite/gcc.dg/vect/slp-widen-mult-u8.c
+@@ -39,5 +39,4 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_widen_mult_qi_to_hi || vect_unpack } } } } */
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" { target { vect_widen_mult_hi_to_si || vect_unpack } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/trapv-vect-reduc-4.c
++++ b/src/gcc/testsuite/gcc.dg/vect/trapv-vect-reduc-4.c
+@@ -1,5 +1,5 @@
+-/* { dg-require-effective-target vect_int } */
+ /* { dg-do compile } */
++/* { dg-require-effective-target vect_int } */
+ 
+ #include <stdarg.h>
+ #include "tree-vect.h"
+@@ -47,4 +47,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/unswitch-loops-pr26969.c
++++ b/src/gcc/testsuite/gcc.dg/vect/unswitch-loops-pr26969.c
+@@ -12,4 +12,3 @@ ruby_re_compile_fastmap (char *fastmap, int options)
+     }
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vec-scal-opt.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vec-scal-opt.c
+@@ -20,4 +20,3 @@ int main (int argc, char *argv[]) {
+ }
+ 
+ /* { dg-final { scan-tree-dump-times ">> k.\[0-9_\]*" 1 "veclower21" } } */
+-/* { dg-final { cleanup-tree-dump "veclower21" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vec-scal-opt1.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vec-scal-opt1.c
+@@ -18,4 +18,3 @@ int main (int argc, char *argv[]) {
+ }
+ 
+ /* { dg-final { scan-tree-dump-times ">> 2" 1 "veclower21" } } */
+-/* { dg-final { cleanup-tree-dump "veclower21" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vec-scal-opt2.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vec-scal-opt2.c
+@@ -17,4 +17,3 @@ int main (int argc, char *argv[]) {
+ }
+ 
+ /* { dg-final { scan-tree-dump-times ">> 2" 1 "veclower21" } } */
+-/* { dg-final { cleanup-tree-dump "veclower21" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-1-big-array.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-1-big-array.c
+@@ -88,4 +88,3 @@ foo (int n)
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 6 loops" 1 "vect" { target vect_strided2 } } } */
+ /* { dg-final { scan-tree-dump-times "vectorized 5 loops" 1 "vect" { xfail vect_strided2 } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-1.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-1.c
+@@ -88,4 +88,3 @@ foo (int n)
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 6 loops" 1 "vect" { target vect_strided2 } } } */
+ /* { dg-final { scan-tree-dump-times "vectorized 5 loops" 1 "vect" { xfail vect_strided2 } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-10-big-array.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-10-big-array.c
+@@ -35,4 +35,3 @@ int foo ()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail { ! vect_strided2 } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-10.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-10.c
+@@ -23,4 +23,3 @@ int foo ()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail { ! vect_strided2 } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-100.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-100.c
+@@ -76,5 +76,4 @@ int main (void)
+ 
+ /* Requires versioning.  */
+ /* { dg-final { scan-tree-dump-times "vectorized 2 loops" 0 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-103.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-103.c
+@@ -56,5 +56,4 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "dependence distance modulo vf == 0" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-104.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-104.c
+@@ -66,5 +66,4 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 0 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "possible dependence between data-refs" 1 "vect" { target { ! vect_multiple_sizes } } } } */
+ /* { dg-final { scan-tree-dump-times "possible dependence between data-refs" 2 "vect" { target vect_multiple_sizes } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-105-big-array.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-105-big-array.c
+@@ -102,5 +102,4 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 2 "vect" { target { vect_no_align && { ! vect_hw_misalign } } } } } */
+ /* { dg-final { scan-tree-dump-times "possible dependence between data-refs" 0 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-105.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-105.c
+@@ -68,5 +68,4 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 2 "vect" { target { vect_no_align && { ! vect_hw_misalign } } } } } */
+ /* { dg-final { scan-tree-dump-times "possible dependence between data-refs" 0 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-106.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-106.c
+@@ -69,5 +69,4 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-107.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-107.c
+@@ -42,4 +42,3 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_strided2 } } } */
+ /* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" { xfail vect_strided2 } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-108.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-108.c
+@@ -37,5 +37,4 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-109.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-109.c
+@@ -77,5 +77,4 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 2 "vect" { target vect_element_align } } } */
+ /* { dg-final { scan-tree-dump-times "not vectorized: unsupported unaligned store" 2 "vect" { xfail vect_element_align } } } */
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 3 "vect" { target vect_element_align } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-11.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-11.c
+@@ -39,4 +39,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-110.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-110.c
+@@ -35,6 +35,5 @@ int main (void)
+ }
+      
+ /* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-112-big-array.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-112-big-array.c
+@@ -45,6 +45,5 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_unpack } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-112.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-112.c
+@@ -34,6 +34,5 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_unpack } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-113.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-113.c
+@@ -33,4 +33,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target powerpc*-*-* i?86-*-* x86_64-*-* } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-114.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-114.c
+@@ -36,5 +36,4 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" { target { ! { vect_perm  } } } } } */
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_perm } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-115.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-115.c
+@@ -72,6 +72,5 @@ int main (void)
+ }
+           
+ /* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+   
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-116.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-116.c
+@@ -30,4 +30,3 @@ int main()
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-117.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-117.c
+@@ -62,5 +62,4 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "possible dependence between data-refs" 0 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-118.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-118.c
+@@ -9,4 +9,3 @@ void f(short * __restrict__ a, short * __restrict__ b, short * __restrict__ x)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-119.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-119.c
+@@ -26,4 +26,3 @@ unsigned int foo (const unsigned int x[OUTER][INNER][2])
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "Detected interleaving of size 2" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-11a.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-11a.c
+@@ -62,4 +62,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 2 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-12.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-12.c
+@@ -41,4 +41,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-120.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-120.c
+@@ -34,4 +34,3 @@ tV()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-121.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-121.c
+@@ -15,4 +15,3 @@ test (int start, int end)
+ }
+ 
+ /* { dg-final { scan-tree-dump "vectorized 1 loops" "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-122.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-122.c
+@@ -56,4 +56,3 @@ main ()
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-123.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-123.c
+@@ -12,4 +12,3 @@ void foo (int s)
+ }
+ 
+ /* { dg-final { scan-tree-dump "vectorized 1 loops" "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-124.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-124.c
+@@ -27,4 +27,3 @@ main ()
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-13.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-13.c
+@@ -40,4 +40,3 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail vect_no_int_max } } } */
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-14.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-14.c
+@@ -34,4 +34,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-15-big-array.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-15-big-array.c
+@@ -45,4 +45,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_perm && vect_hw_misalign } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-15.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-15.c
+@@ -36,4 +36,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_perm && vect_hw_misalign } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-17.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-17.c
+@@ -127,4 +127,3 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect" { xfail vect_no_bitwise } } } */
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-18.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-18.c
+@@ -126,4 +126,3 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect" { xfail vect_no_bitwise } } } */
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-19.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-19.c
+@@ -126,4 +126,3 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect" { xfail vect_no_bitwise } } } */
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-2-big-array.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-2-big-array.c
+@@ -48,4 +48,3 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-2.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-2.c
+@@ -38,4 +38,3 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-20.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-20.c
+@@ -98,4 +98,3 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect" { xfail vect_no_bitwise } } } */
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-21.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-21.c
+@@ -127,4 +127,3 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect" { target vect_condition } } } */
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-22.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-22.c
+@@ -124,4 +124,3 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "vectorized 4 loops" 1 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-23.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-23.c
+@@ -125,4 +125,3 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect" { xfail *-*-* } } } */
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-24.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-24.c
+@@ -125,4 +125,3 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect" { xfail *-*-* } } } */
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-25.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-25.c
+@@ -52,4 +52,3 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-26.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-26.c
+@@ -38,4 +38,3 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-27.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-27.c
+@@ -48,4 +48,3 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_no_align && { ! vect_hw_misalign } } } } } */
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect" { xfail { vect_no_align && { ! vect_hw_misalign } } } } } */
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 0 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-28.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-28.c
+@@ -42,4 +42,3 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { target { vector_alignment_reachable } } } } */
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 1 "vect" { target { {! vector_alignment_reachable} && {! vect_hw_misalign} } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-29.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-29.c
+@@ -54,4 +54,3 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect" { xfail { vect_no_align && { ! vect_hw_misalign } } } } } */
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 0 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning." 1 "vect" {target { vect_no_align && { ! vect_hw_misalign } } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-3.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-3.c
+@@ -49,4 +49,3 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-30.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-30.c
+@@ -62,4 +62,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 2 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-31-big-array.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-31-big-array.c
+@@ -87,4 +87,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 4 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-31.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-31.c
+@@ -87,4 +87,3 @@ int main (void)
+ } 
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 4 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-32-big-array.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-32-big-array.c
+@@ -37,4 +37,3 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-32.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-32.c
+@@ -37,4 +37,3 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-33-big-array.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-33-big-array.c
+@@ -41,4 +41,3 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { target vector_alignment_reachable } } } */
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 1 "vect" { target { {! vector_alignment_reachable} && {! vect_hw_misalign} } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-33.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-33.c
+@@ -40,4 +40,3 @@ int main (void)
+ /* { dg-final { scan-tree-dump "Vectorizing an unaligned access" "vect" { target { { { ! powerpc*-*-* } && vect_hw_misalign } && { { ! vect64 } || vect_multiple_sizes } } } } }  */
+ /* { dg-final { scan-tree-dump "Alignment of access forced using peeling" "vect" { target { vector_alignment_reachable && { vect64 && {! vect_multiple_sizes} } } } } } */
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 1 "vect" { target { { {! vector_alignment_reachable} || {! vect64} } && {! vect_hw_misalign} } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-34-big-array.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-34-big-array.c
+@@ -47,4 +47,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-34.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-34.c
+@@ -38,4 +38,3 @@ int main (void)
+ } 
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-35-big-array.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-35-big-array.c
+@@ -47,4 +47,3 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect"  { xfail { ia64-*-* sparc*-*-* } } } } */
+ /* { dg-final { scan-tree-dump-times "can't determine dependence between" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-35.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-35.c
+@@ -47,4 +47,3 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect"  { xfail { ia64-*-* sparc*-*-* } } } } */
+ /* { dg-final { scan-tree-dump "can't determine dependence between" "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-36-big-array.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-36-big-array.c
+@@ -44,4 +44,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-36.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-36.c
+@@ -44,4 +44,3 @@ int main (void)
+ } 
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-38.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-38.c
+@@ -37,4 +37,3 @@ int main (void)
+ 
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-4.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-4.c
+@@ -39,4 +39,3 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-40.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-40.c
+@@ -60,4 +60,3 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"} } */
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-42.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-42.c
+@@ -69,4 +69,3 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 4 "vect" { xfail { vect_no_align || { { !  vector_alignment_reachable } || vect_element_align  } } } } }  */
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 3 "vect" { target vect_element_align } } } */
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { xfail { vect_no_align || { { ! vector_alignment_reachable } || vect_element_align } } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-44.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-44.c
+@@ -69,4 +69,3 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { xfail { { vect_no_align && { ! vect_hw_misalign } } || {! vector_alignment_reachable} } } } } */
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning." 3 "vect" { target { vect_no_align && { ! vect_hw_misalign } } } } } */
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning." 1 "vect" { target { {! vector_alignment_reachable} && {{! vect_no_align} && {! vect_hw_misalign} } } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-46.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-46.c
+@@ -62,4 +62,3 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-48.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-48.c
+@@ -58,4 +58,3 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 2 "vect" { xfail { vect_no_align && { ! vect_hw_misalign } } } } } */
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 0 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning." 2 "vect" { target { vect_no_align && { ! vect_hw_misalign } } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-5.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-5.c
+@@ -56,4 +56,3 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-50.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-50.c
+@@ -66,4 +66,3 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { xfail { { vect_no_align && { ! vect_hw_misalign } } || {! vector_alignment_reachable} } } } } */
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning." 3 "vect" { target { vect_no_align && { ! vect_hw_misalign } } } } } */
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning." 1 "vect" { target { {! vector_alignment_reachable} && { {! vect_no_align } && {! vect_hw_misalign } } } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-52.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-52.c
+@@ -59,4 +59,3 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 2 "vect" { xfail { vect_no_align && { ! vect_hw_misalign } } } } } */
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 0 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning." 2 "vect" { target { vect_no_align && { ! vect_hw_misalign } } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-54.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-54.c
+@@ -62,4 +62,3 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-56.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-56.c
+@@ -72,4 +72,3 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect" { target { vect_element_align } } } } */
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 0 "vect" { xfail { vect_element_align } } } } */
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { target { vect_element_align } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-58.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-58.c
+@@ -60,4 +60,3 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-6-big-array.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-6-big-array.c
+@@ -77,4 +77,3 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" { target { { vect_aligned_arrays } && {! vect_sizes_32B_16B} } } } } */
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect" { target { {! vect_aligned_arrays } && {vect_sizes_32B_16B} } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-6.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-6.c
+@@ -56,4 +56,3 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" { target { { vect_aligned_arrays } && {! vect_sizes_32B_16B} } } } } */
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect" { target { {! vect_aligned_arrays } && {vect_sizes_32B_16B} } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-60.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-60.c
+@@ -73,4 +73,3 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect" { target { vect_element_align } } } } */
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 0 "vect" { xfail { vect_element_align } } } } */
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { target { vect_element_align } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-62.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-62.c
+@@ -67,4 +67,3 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-63.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-63.c
+@@ -43,4 +43,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail *-*-* } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-64.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-64.c
+@@ -83,4 +83,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-65.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-65.c
+@@ -80,4 +80,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-66.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-66.c
+@@ -93,4 +93,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 3 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-67.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-67.c
+@@ -44,4 +44,3 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  } } */
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-68.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-68.c
+@@ -86,4 +86,3 @@ int main (void)
+ } 
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 4 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-7.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-7.c
+@@ -50,4 +50,3 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-70.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-70.c
+@@ -66,4 +66,3 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" {target { vector_alignment_reachable} } } } */
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 1 "vect" {target {{! vector_alignment_reachable} && {! vect_hw_misalign} } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-71.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-71.c
+@@ -37,4 +37,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { xfail *-*-* } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-72.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-72.c
+@@ -49,4 +49,3 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail { vect_no_align && { ! vect_hw_misalign } } } } } */
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect" { xfail { vect_no_align && { ! vect_hw_misalign } } } } } */
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 0 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-73-big-array.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-73-big-array.c
+@@ -49,4 +49,3 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-73.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-73.c
+@@ -40,4 +40,3 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-74-big-array.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-74-big-array.c
+@@ -65,4 +65,3 @@ int main (void)
+  dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 2 "vect" { xfail vect_no_align } }
+  dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { xfail vect_no_align } }
+ */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-74.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-74.c
+@@ -49,4 +49,3 @@ int main (void)
+  dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 2 "vect" { xfail vect_no_align } } 
+  dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { xfail vect_no_align } }  
+ */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-75-big-array.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-75-big-array.c
+@@ -54,4 +54,3 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+ /*  { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 1 "vect" { target { vect_no_align && { ! vect_hw_misalign } } } } } */
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect" { xfail { vect_no_align && { ! vect_hw_misalign } } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-75.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-75.c
+@@ -46,4 +46,3 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 1 "vect" { target { vect_no_align && { ! vect_hw_misalign } } } } } */
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect" { xfail { vect_no_align && { ! vect_hw_misalign } } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-76-big-array.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-76-big-array.c
+@@ -80,4 +80,3 @@ int main (void)
+ 
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-76.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-76.c
+@@ -71,4 +71,3 @@ int main (void)
+ 
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-77-alignchecks.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-77-alignchecks.c
+@@ -53,4 +53,3 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { target { {! vect_no_align} && { unaligned_stack && vector_alignment_reachable } } } } } */
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning." 1 "vect" { target { { {! unaligned_stack} && { vect_no_align && { ! vect_hw_misalign } } } || {unaligned_stack && { {! vector_alignment_reachable} && {! vect_no_align } } } } } } } */
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning." 2 "vect" { target { { unaligned_stack && { vector_alignment_reachable && vect_no_align } } || {unaligned_stack && { {! vector_alignment_reachable} && vect_no_align } } } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-77-global.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-77-global.c
+@@ -51,4 +51,3 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect" { xfail { vect_no_align && { ! vect_hw_misalign } } } } } */
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 0 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning." 1 "vect" { target { vect_no_align && { ! vect_hw_misalign } } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-77.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-77.c
+@@ -43,4 +43,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-78-alignchecks.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-78-alignchecks.c
+@@ -54,4 +54,3 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { target { {! vect_no_align} && { unaligned_stack && vector_alignment_reachable } } } } } */
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning." 1 "vect" { target { { {! unaligned_stack} && { vect_no_align && { ! vect_hw_misalign } } } || {unaligned_stack && { {! vector_alignment_reachable} && { ! vect_no_align } } } } } } } */
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning." 2 "vect" { target { { unaligned_stack && { vector_alignment_reachable && vect_no_align } } || {unaligned_stack && { {! vector_alignment_reachable} && vect_no_align } } } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-78-global.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-78-global.c
+@@ -51,4 +51,3 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect" { xfail { vect_no_align && { ! vect_hw_misalign } } } } } */
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 0 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning." 1 "vect" { target { vect_no_align && { ! vect_hw_misalign } } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-78.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-78.c
+@@ -43,4 +43,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-8.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-8.c
+@@ -36,4 +36,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-80-big-array.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-80-big-array.c
+@@ -68,4 +68,3 @@ int main (void)
+  dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { xfail vect_no_align } }
+  dg-final { scan-tree-dump-times "Alignment of access forced using versioning." 3 "vect" { target vect_no_align } }
+ */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-80.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-80.c
+@@ -53,4 +53,3 @@ int main (void)
+  dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { xfail vect_no_align } } 
+  dg-final { scan-tree-dump-times "Alignment of access forced using versioning." 3 "vect" { target vect_no_align } } 
+ */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-82.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-82.c
+@@ -34,4 +34,3 @@ int main (void)
+ } 
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-82_64.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-82_64.c
+@@ -37,4 +37,3 @@ int main (void)
+ } 
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-83.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-83.c
+@@ -34,4 +34,3 @@ int main (void)
+ } 
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-83_64.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-83_64.c
+@@ -37,4 +37,3 @@ int main (void)
+ } 
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-85-big-array.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-85-big-array.c
+@@ -46,4 +46,3 @@ int main (void)
+ 
+ /* Fails for targets that don't vectorize PLUS (e.g alpha).  */
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-85.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-85.c
+@@ -46,4 +46,3 @@ int main (void)
+ 
+ /* Fails for targets that don't vectorize PLUS (e.g alpha).  */
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-86.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-86.c
+@@ -53,4 +53,3 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 0 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-87.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-87.c
+@@ -53,4 +53,3 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" {target vector_alignment_reachable} } } */
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 1 "vect" {target { {! vector_alignment_reachable} && {! vect_hw_misalign} } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-88.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-88.c
+@@ -53,4 +53,3 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" {target vector_alignment_reachable } } }  */
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 1 "vect" {target { {! vector_alignment_reachable} && {! vect_hw_misalign} } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-89-big-array.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-89-big-array.c
+@@ -47,4 +47,3 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-89.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-89.c
+@@ -47,4 +47,3 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-9.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-9.c
+@@ -37,4 +37,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_unpack } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-91.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-91.c
+@@ -62,4 +62,3 @@ main3 ()
+ /* { dg-final { scan-tree-dump-times "accesses have the same alignment." 2 "vect" { target { {! vect_aligned_arrays } && {vect_sizes_32B_16B} } } } } */
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 3 "vect" {target { vector_alignment_reachable } } } } */
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 3 "vect" {target { {! vector_alignment_reachable} && {! vect_hw_misalign} } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-92.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-92.c
+@@ -93,4 +93,3 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 3 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 3 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-93.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-93.c
+@@ -82,4 +82,3 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_no_align && { ! vect_hw_misalign } } } } } */
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect" { xfail { vect_no_align && { ! vect_hw_misalign } } } } } */
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-95.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-95.c
+@@ -66,4 +66,3 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 2 "vect" { xfail { vect_no_align || vect_element_align } } } } */
+ /*  { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" { target { vect_no_align && { ! vect_hw_misalign } } } } } */
+ /*  { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 4 "vect" { target { vect_no_align && { ! vect_hw_misalign } } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-96.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-96.c
+@@ -47,4 +47,3 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect" { target { {! vect_no_align} && vector_alignment_reachable } } } } */
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { xfail { { vect_no_align } || { { ! vector_alignment_reachable} || vect_element_align } } } } } */
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning." 1 "vect" { target { { vect_no_align && { ! vect_hw_misalign } } || { {! vector_alignment_reachable} && {! vect_element_align} } } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-97-big-array.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-97-big-array.c
+@@ -70,4 +70,3 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-97.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-97.c
+@@ -62,4 +62,3 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-98-big-array.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-98-big-array.c
+@@ -54,4 +54,3 @@ int main (void)
+ /* Needs interleaving support.  */
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_strided4 } } } */
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 0 "vect" { xfail  vect_strided4 } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-98.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-98.c
+@@ -40,4 +40,3 @@ int main (void)
+ /* Needs interleaving support.  */
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_strided4 } } } */
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 0 "vect" { xfail  vect_strided4 } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-99.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-99.c
+@@ -30,4 +30,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-aggressive-1.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-aggressive-1.c
+@@ -1,4 +1,3 @@
+-/* { dg-do run } */
+ /* { dg-require-effective-target vect_condition } */
+ /* { dg-require-effective-target vect_simd_clones } */
+ /* { dg-additional-options "-fopenmp-simd" } */
+@@ -60,4 +59,3 @@ default:
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-alias-check.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-alias-check.c
+@@ -15,4 +15,3 @@ void foo (int *a, int *b)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-align-1.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-align-1.c
+@@ -50,4 +50,3 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect" { target vect_hw_misalign } } } */
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 1 "vect" { xfail vect_hw_misalign} } } */
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-align-2.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-align-2.c
+@@ -45,4 +45,3 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 0 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 1 "vect" { xfail vect_hw_misalign} } } */
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-align-3.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-align-3.c
+@@ -52,4 +52,3 @@ f4 (int x, int y)
+ 
+ /* { dg-final { scan-tree-dump-not "vect_do_peeling_for_loop_bound" "vect" } } */
+ /* { dg-final { scan-tree-dump-not "loop peeled for vectorization" "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-all-big-array.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-all-big-array.c
+@@ -253,4 +253,3 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" { target { { vect_aligned_arrays } && {! vect_sizes_32B_16B} } } } } */
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect" { target { {! vect_aligned_arrays } && {vect_sizes_32B_16B} } } } } */
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 0 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-all.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-all.c
+@@ -219,4 +219,3 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" { target { { vect_aligned_arrays } && {! vect_sizes_32B_16B} } } } } */
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect" { target { {! vect_aligned_arrays } && {vect_sizes_32B_16B} } } } } */
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 0 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-bool-1.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-bool-1.c
+@@ -12,4 +12,3 @@ void foo (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump "vectorized 1 loops" "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-bswap16.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-bswap16.c
+@@ -41,4 +41,3 @@ main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-bswap32.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-bswap32.c
+@@ -41,4 +41,3 @@ main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-bswap64.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-bswap64.c
+@@ -41,4 +41,3 @@ main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-complex-1.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-complex-1.c
+@@ -52,4 +52,3 @@ main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-complex-2.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-complex-2.c
+@@ -52,4 +52,3 @@ main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-complex-4.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-complex-4.c
+@@ -105,4 +105,3 @@ main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-complex-5.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-complex-5.c
+@@ -41,4 +41,3 @@ main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 0 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-cond-1.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-cond-1.c
+@@ -52,6 +52,5 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 1 "vect" { xfail { vect_no_align && { ! vect_hw_misalign } } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-cond-10.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-cond-10.c
+@@ -163,4 +163,3 @@ main ()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "note: vectorized 1 loops" 8 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-cond-11.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-cond-11.c
+@@ -113,4 +113,3 @@ main ()
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-cond-2.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-cond-2.c
+@@ -43,6 +43,5 @@ int main (void)
+ /* The order of computation should not be changed for cond_expr, therefore, 
+    it cannot be vectorized in reduction.  */
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail *-*-* } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-cond-3.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-cond-3.c
+@@ -60,6 +60,5 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 1 "vect" { xfail { vect_no_align && { ! vect_hw_misalign } } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-cond-4.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-cond-4.c
+@@ -57,6 +57,5 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 1 "vect" { xfail { vect_no_align && { ! vect_hw_misalign } } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-cond-5.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-cond-5.c
+@@ -57,5 +57,4 @@ int main ()
+    of computation is the same, but vector results should be reduced to scalar
+    result, which can'be done for cond_expr.  */
+ /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 1 "vect" { xfail *-*-* } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+       
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-cond-6.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-cond-6.c
+@@ -55,5 +55,4 @@ int main ()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+       
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-cond-7.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-cond-7.c
+@@ -65,4 +65,3 @@ main ()
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-cond-8.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-cond-8.c
+@@ -119,4 +119,3 @@ main ()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "note: vectorized 1 loops" 5 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-cond-9.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-cond-9.c
+@@ -198,4 +198,3 @@ main ()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "note: vectorized 1 loops" 10 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-cond-reduc-1.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-cond-reduc-1.c
+@@ -16,5 +16,4 @@ int foo()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-cond-reduc-2.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-cond-reduc-2.c
+@@ -15,5 +15,4 @@ void foo(int k)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-cselim-1.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-cselim-1.c
+@@ -83,4 +83,3 @@ main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { xfail { { vect_no_align && { ! vect_hw_misalign } } || { ! vect_strided2 } } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-cselim-2.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-cselim-2.c
+@@ -62,4 +62,3 @@ main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 0 "vect"  } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-double-reduc-1.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-double-reduc-1.c
+@@ -51,5 +51,4 @@ int main ()
+ }
+         
+ /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+       
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-double-reduc-2.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-double-reduc-2.c
+@@ -51,5 +51,4 @@ int main ()
+ }
+         
+ /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+       
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-double-reduc-3.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-double-reduc-3.c
+@@ -62,5 +62,4 @@ int main ()
+ }
+         
+ /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 1 "vect" { xfail vect_no_int_max } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+       
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-double-reduc-4.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-double-reduc-4.c
+@@ -51,5 +51,4 @@ int main ()
+ }
+         
+ /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+       
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-double-reduc-5.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-double-reduc-5.c
+@@ -53,5 +53,4 @@ int main ()
+ /* Vectorization of loops with multiple types and double reduction is not 
+    supported yet.  */       
+ /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 1 "vect" { xfail *-*-* } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+       
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-double-reduc-6-big-array.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-double-reduc-6-big-array.c
+@@ -61,5 +61,4 @@ int main ()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-double-reduc-6.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-double-reduc-6.c
+@@ -45,5 +45,4 @@ int main ()
+ }
+         
+ /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+       
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-double-reduc-7.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-double-reduc-7.c
+@@ -60,5 +60,4 @@ int main ()
+ }
+         
+ /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 3 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+       
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-dv-1.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-dv-1.c
+@@ -19,4 +19,3 @@ void foo()
+ 	x[j-63]=x[j-3]-x[j];
+       }
+ }
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-float-extend-1.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-float-extend-1.c
+@@ -38,4 +38,3 @@ main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail spu*-*-* } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-float-truncate-1.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-float-truncate-1.c
+@@ -37,4 +37,3 @@ main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail spu*-*-* } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-floatint-conversion-1.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-floatint-conversion-1.c
+@@ -38,4 +38,3 @@ main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_floatint_cvt } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-floatint-conversion-2.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-floatint-conversion-2.c
+@@ -37,4 +37,3 @@ main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_floatint_cvt } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-fold-1.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-fold-1.c
+@@ -13,4 +13,3 @@ void foo()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "c =.* { 6, 8, 10, 12 }" 1 "ccp1" } } */
+-/* { dg-final { cleanup-tree-dump "ccp1" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-ifcvt-10.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-ifcvt-10.c
+@@ -9,4 +9,3 @@ foo (int j, double *v, double x)
+       x = v[i];
+   return x;
+ }
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-ifcvt-11.c
+@@ -0,0 +1,36 @@
++/* { dg-require-effective-target vect_condition } */
++/* { dg-require-effective-target vect_int } */
++
++#include "tree-vect.h"
++
++#define N 16
++
++extern void abort (void);
++
++int A[N] = {36, 39, 42, 45, 43, 32, 21, 12, 23, 34, 45, 56, 67, 78, 81, 11};
++int B[N] = {144,195,210,225,172,128,105,60, 92, 136,225,280,268,390,324,55};
++
++__attribute__((noinline))
++void foo ()
++{
++  for (int i = 0; i < N; i++)
++    {
++      int m = (A[i] & i) ? 5 : 4;
++      A[i] = A[i] * m;
++    }
++}
++
++int main ()
++{
++
++  check_vect ();
++  foo ();
++  /* check results:  */
++  for (int i = 0; i < N; i++)
++    if (A[i] != B[i])
++      abort ();
++
++  return 0;
++}
++
++/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-ifcvt-16.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-ifcvt-16.c
+@@ -31,4 +31,3 @@ int main ()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-ifcvt-17.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-ifcvt-17.c
+@@ -31,4 +31,3 @@ int main ()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-ifcvt-2.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-ifcvt-2.c
+@@ -33,4 +33,3 @@ int main ()
+ 
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-ifcvt-3.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-ifcvt-3.c
+@@ -33,4 +33,3 @@ int main ()
+ 
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-ifcvt-4.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-ifcvt-4.c
+@@ -33,4 +33,3 @@ int main ()
+ 
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-ifcvt-5.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-ifcvt-5.c
+@@ -33,4 +33,3 @@ int main ()
+ 
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-ifcvt-6.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-ifcvt-6.c
+@@ -33,4 +33,3 @@ int main ()
+ 
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-ifcvt-7.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-ifcvt-7.c
+@@ -33,4 +33,3 @@ int main ()
+ 
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-ifcvt-9.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-ifcvt-9.c
+@@ -36,4 +36,3 @@ int main ()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 2 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-intfloat-conversion-1.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-intfloat-conversion-1.c
+@@ -36,4 +36,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_intfloat_cvt } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-intfloat-conversion-2.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-intfloat-conversion-2.c
+@@ -38,4 +38,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_intfloat_cvt } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-intfloat-conversion-3.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-intfloat-conversion-3.c
+@@ -36,4 +36,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_intfloat_cvt } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-intfloat-conversion-4a.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-intfloat-conversion-4a.c
+@@ -36,4 +36,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_intfloat_cvt } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-intfloat-conversion-4b.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-intfloat-conversion-4b.c
+@@ -36,4 +36,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_intfloat_cvt } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-iv-1.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-iv-1.c
+@@ -39,4 +39,3 @@ int main (void)
+ } 
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-iv-10.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-iv-10.c
+@@ -33,4 +33,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-iv-11.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-iv-11.c
+@@ -29,4 +29,3 @@ int main (void)
+ } 
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-iv-2.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-iv-2.c
+@@ -46,4 +46,3 @@ int main (void)
+ } 
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-iv-3.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-iv-3.c
+@@ -41,4 +41,3 @@ int main (void)
+ } 
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-iv-4.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-iv-4.c
+@@ -41,4 +41,3 @@ int main (void)
+ } 
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_pack_trunc } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-iv-5.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-iv-5.c
+@@ -37,4 +37,3 @@ int main (void)
+ } 
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail {! arm_neon_ok } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-iv-6.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-iv-6.c
+@@ -46,4 +46,3 @@ int main (void)
+ } 
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-iv-7.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-iv-7.c
+@@ -39,4 +39,3 @@ int main (void)
+ } 
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-iv-8-big-array.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-iv-8-big-array.c
+@@ -40,4 +40,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_pack_trunc && vect_unpack } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-iv-8.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-iv-8.c
+@@ -40,4 +40,3 @@ int main (void)
+ } 
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_pack_trunc && vect_unpack } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-iv-8a-big-array.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-iv-8a-big-array.c
+@@ -40,4 +40,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_pack_trunc && vect_unpack } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-iv-8a.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-iv-8a.c
+@@ -40,4 +40,3 @@ int main (void)
+ } 
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_pack_trunc && vect_unpack } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-iv-9.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-iv-9.c
+@@ -35,4 +35,3 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 2 "vect" { target vect_int_mult } } } */
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target {! vect_int_mult } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-ivdep-1.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-ivdep-1.c
+@@ -15,4 +15,3 @@ void foo(int n, int *a, int *b, int *c, int *d, int *e) {
+ 
+ /* { dg-message "loop vectorized" "" { target *-*-* } 0 } */
+ /* { dg-bogus " version\[^\n\r]* alias" "" { target *-*-* } 0 } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-ivdep-2.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-ivdep-2.c
+@@ -31,4 +31,3 @@ void bar(int n, int *a, int *b, int *c) {
+ 
+ /* { dg-message "loop vectorized" "" { target *-*-* } 0 } */
+ /* { dg-bogus " version\[^\n\r]* alias" "" { target *-*-* } 0 } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-mask-load-1.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-mask-load-1.c
+@@ -48,4 +48,3 @@ main ()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "note: vectorized 1 loops" 1 "vect" { target avx_runtime } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-mask-loadstore-1.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-mask-loadstore-1.c
+@@ -46,4 +46,3 @@ main ()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "note: vectorized 1 loops" 1 "vect" { target avx_runtime } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-multitypes-1.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-multitypes-1.c
+@@ -84,5 +84,4 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 2 "vect" { xfail { vect_no_align && { ! vect_hw_misalign } } } } } */
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 2 "vect" { xfail {{ vect_no_align && { ! vect_hw_misalign } } || {vect_sizes_32B_16B }}} } } */
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 4 "vect" { xfail {{ vect_no_align && { ! vect_hw_misalign } } || {vect_sizes_32B_16B }}} } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-multitypes-10.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-multitypes-10.c
+@@ -64,5 +64,4 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 2 "vect" { target vect_unpack } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-multitypes-11.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-multitypes-11.c
+@@ -40,5 +40,4 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 2 "vect" { target vect_unpack } } } */
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { ! vect_unpack } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-multitypes-12.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-multitypes-12.c
+@@ -42,5 +42,4 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 2 "vect" { target vect_unpack } } } */
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target sparc*-*-* xfail ilp32 } } } */
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { { ! sparc*-*-* }  && { ! vect_unpack } } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-multitypes-13.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-multitypes-13.c
+@@ -60,5 +60,4 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 2 "vect" { target vect_unpack } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-multitypes-14.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-multitypes-14.c
+@@ -47,5 +47,4 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_pack_trunc } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-multitypes-15.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-multitypes-15.c
+@@ -46,5 +46,4 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_sdot_hi  || vect_unpack } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-multitypes-16.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-multitypes-16.c
+@@ -36,5 +36,4 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_unpack } } } */
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 0 "vect" { target { ! vect_unpack } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-multitypes-17.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-multitypes-17.c
+@@ -41,5 +41,4 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_pack_trunc } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-multitypes-2.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-multitypes-2.c
+@@ -45,5 +45,4 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-multitypes-3.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-multitypes-3.c
+@@ -56,5 +56,4 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 3 "vect" { target { vect_no_align && { ! vect_hw_misalign } } } } } */
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 3 "vect" {xfail { vect_no_align && { ! vect_hw_misalign } } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-multitypes-4.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-multitypes-4.c
+@@ -97,5 +97,4 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 2 "vect" { xfail { vect_no_align || vect_element_align } } } } */
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 8 "vect" { xfail { vect_no_align || vect_element_align } } } } */
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 4 "vect" { target { vect_element_align  } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-multitypes-5.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-multitypes-5.c
+@@ -49,5 +49,4 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail { sparc*-*-* && ilp32 } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-multitypes-6.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-multitypes-6.c
+@@ -63,5 +63,4 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail { sparc*-*-* && ilp32 } }} } */
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 6 "vect" { target { vect_no_align && { ! vect_hw_misalign } } } } } */
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 6 "vect" {xfail { vect_no_align && { ! vect_hw_misalign } } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-multitypes-7.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-multitypes-7.c
+@@ -47,5 +47,4 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_sdot_hi } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-multitypes-8.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-multitypes-8.c
+@@ -47,5 +47,4 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_pack_trunc } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-multitypes-9.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-multitypes-9.c
+@@ -60,5 +60,4 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 2 "vect" { target vect_unpack } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-neg-store-1.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-neg-store-1.c
+@@ -36,4 +36,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-neg-store-2.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-neg-store-2.c
+@@ -36,4 +36,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-nest-cycle-1.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-nest-cycle-1.c
+@@ -44,5 +44,4 @@ int main ()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 1 "vect" { xfail { vect_no_align && { ! vect_hw_misalign } } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-nest-cycle-2.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-nest-cycle-2.c
+@@ -43,5 +43,4 @@ int main ()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 1 "vect" { xfail { vect_no_align && { ! vect_hw_misalign } } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-nest-cycle-3.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-nest-cycle-3.c
+@@ -53,4 +53,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-nop-move.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-nop-move.c
+@@ -78,5 +78,3 @@ main ()
+ }
+ 
+ /* { dg-final { scan-rtl-dump "deleting noop move" "combine" { target aarch64*-*-* } } } */
+-/* { dg-final { cleanup-rtl-dump "combine" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-outer-1-big-array.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-outer-1-big-array.c
+@@ -24,4 +24,3 @@ foo (){
+ /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 1 "vect" { xfail *-*-* } } } */
+ /* { dg-final { scan-tree-dump-times "grouped access in outer loop" 1 "vect" { target { ! vect_multiple_sizes } } } } */
+ /* { dg-final { scan-tree-dump-times "grouped access in outer loop" 2 "vect" { target vect_multiple_sizes } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-outer-1.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-outer-1.c
+@@ -24,4 +24,3 @@ foo (){
+ /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 1 "vect" { xfail *-*-* } } } */
+ /* { dg-final { scan-tree-dump-times "grouped access in outer loop" 1 "vect" { target { ! vect_multiple_sizes } } } } */
+ /* { dg-final { scan-tree-dump-times "grouped access in outer loop" 2 "vect" { target vect_multiple_sizes } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-outer-1a-big-array.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-outer-1a-big-array.c
+@@ -22,4 +22,3 @@ foo (){
+ /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 1 "vect" { xfail *-*-* } } } */
+ /* { dg-final { scan-tree-dump-times "grouped access in outer loop" 1 "vect" { target { ! vect_multiple_sizes } } } } */
+ /* { dg-final { scan-tree-dump-times "grouped access in outer loop" 2 "vect" { target vect_multiple_sizes } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-outer-1a.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-outer-1a.c
+@@ -22,4 +22,3 @@ foo (){
+ /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 1 "vect" { xfail *-*-* } } } */
+ /* { dg-final { scan-tree-dump-times "grouped access in outer loop" 1 "vect" { target { ! vect_multiple_sizes } } } } */
+ /* { dg-final { scan-tree-dump-times "grouped access in outer loop" 2 "vect" { target vect_multiple_sizes } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-outer-1b-big-array.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-outer-1b-big-array.c
+@@ -24,4 +24,3 @@ foo (){
+ /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 1 "vect" { xfail *-*-* } } } */
+ /* { dg-final { scan-tree-dump-times "grouped access in outer loop" 1 "vect" { target { ! vect_multiple_sizes } } } } */
+ /* { dg-final { scan-tree-dump-times "grouped access in outer loop" 2 "vect" { target vect_multiple_sizes } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-outer-1b.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-outer-1b.c
+@@ -24,4 +24,3 @@ foo (){
+ /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 1 "vect" { xfail *-*-* } } } */
+ /* { dg-final { scan-tree-dump-times "grouped access in outer loop" 1 "vect" { target { ! vect_multiple_sizes } } } } */
+ /* { dg-final { scan-tree-dump-times "grouped access in outer loop" 2 "vect" { target vect_multiple_sizes } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-outer-2-big-array.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-outer-2-big-array.c
+@@ -38,4 +38,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-outer-2.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-outer-2.c
+@@ -38,4 +38,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-outer-2a-big-array.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-outer-2a-big-array.c
+@@ -39,4 +39,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-outer-2a.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-outer-2a.c
+@@ -39,4 +39,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-outer-2b.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-outer-2b.c
+@@ -39,4 +39,3 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "grouped access in outer loop" 1 "vect" { target { ! vect_multiple_sizes } } } } */
+ /* { dg-final { scan-tree-dump-times "grouped access in outer loop" 2 "vect" { target vect_multiple_sizes } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-outer-2c-big-array.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-outer-2c-big-array.c
+@@ -39,4 +39,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-outer-2c.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-outer-2c.c
+@@ -39,4 +39,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-outer-2d.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-outer-2d.c
+@@ -38,4 +38,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 0 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-outer-3-big-array.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-outer-3-big-array.c
+@@ -49,4 +49,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-outer-3.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-outer-3.c
+@@ -49,4 +49,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-outer-3a-big-array.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-outer-3a-big-array.c
+@@ -50,4 +50,3 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 1 "vect" { xfail { vect_no_align && { ! vect_hw_misalign } } } } } */
+ /* { dg-final { scan-tree-dump-times "step doesn't divide the vector-size" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-outer-3a.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-outer-3a.c
+@@ -50,4 +50,3 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 1 "vect" { xfail { vect_no_align && { ! vect_hw_misalign } } } } } */
+ /* { dg-final { scan-tree-dump-times "step doesn't divide the vector-size" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-outer-3b.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-outer-3b.c
+@@ -51,4 +51,3 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 1 "vect" { xfail *-*-* } } } */
+ /* { dg-final { scan-tree-dump-times "grouped access in outer loop" 2 "vect" { target { ! vect_multiple_sizes } } } } */
+ /* { dg-final { scan-tree-dump-times "grouped access in outer loop" 4 "vect" { target vect_multiple_sizes } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-outer-3c.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-outer-3c.c
+@@ -49,4 +49,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-outer-4.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-outer-4.c
+@@ -52,4 +52,3 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 1 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "zero step in outer loop." 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-outer-4a-big-array.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-outer-4a-big-array.c
+@@ -23,4 +23,3 @@ foo (){
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 1 "vect" { target { vect_widen_mult_hi_to_si && vect_pack_trunc } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-outer-4a.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-outer-4a.c
+@@ -23,4 +23,3 @@ foo (){
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 1 "vect" { target { vect_widen_mult_hi_to_si && vect_pack_trunc } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-outer-4b-big-array.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-outer-4b-big-array.c
+@@ -23,4 +23,3 @@ foo (){
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 1 "vect" { target vect_widen_mult_hi_to_si } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-outer-4b.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-outer-4b.c
+@@ -23,4 +23,3 @@ foo (){
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 1 "vect" { target vect_widen_mult_hi_to_si } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-outer-4c-big-array.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-outer-4c-big-array.c
+@@ -25,4 +25,3 @@ foo (){
+ 
+ /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 1 "vect" { target { vect_short_mult && { ! vect_no_align } } } } } */
+ /* { dg-final { scan-tree-dump-times "zero step in outer loop." 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-outer-4c.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-outer-4c.c
+@@ -25,4 +25,3 @@ foo (){
+ 
+ /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 1 "vect" { target { vect_short_mult && { ! vect_no_align } } } } } */
+ /* { dg-final { scan-tree-dump "zero step in outer loop." "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-outer-4d-big-array.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-outer-4d-big-array.c
+@@ -48,4 +48,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 1 "vect"  } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-outer-4d.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-outer-4d.c
+@@ -48,4 +48,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 1 "vect"  } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-outer-4e.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-outer-4e.c
+@@ -24,4 +24,3 @@ foo (){
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 1 "vect" { xfail *-*-* } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-outer-4f.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-outer-4f.c
+@@ -66,4 +66,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 1 "vect" { xfail *-*-* } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-outer-4g.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-outer-4g.c
+@@ -66,4 +66,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 1 "vect" { xfail *-*-* } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-outer-4i.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-outer-4i.c
+@@ -46,4 +46,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 1 "vect" { target vect_unpack } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-outer-4j.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-outer-4j.c
+@@ -22,4 +22,3 @@ foo (){
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 1 "vect" { target vect_unpack } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-outer-4k.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-outer-4k.c
+@@ -66,4 +66,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 1 "vect" { xfail *-*-* } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-outer-4l.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-outer-4l.c
+@@ -66,4 +66,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 1 "vect" { xfail *-*-* } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-outer-4m-big-array.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-outer-4m-big-array.c
+@@ -55,4 +55,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 1 "vect"  { xfail *-*-* } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-outer-4m.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-outer-4m.c
+@@ -55,4 +55,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 1 "vect"  { xfail *-*-* } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-outer-5.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-outer-5.c
+@@ -79,4 +79,3 @@ int main ()
+ /* { dg-final { scan-tree-dump-times "not vectorized: possible dependence between data-refs" 1 "vect" { xfail *-*-* } } } */
+ /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 1 "vect" } } */
+ /* { dg-final { scan-tree-dump "zero step in outer loop." "vect" { xfail { vect_no_align && { ! vect_hw_misalign } } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-outer-6.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-outer-6.c
+@@ -63,4 +63,3 @@ int main ()
+ 
+ /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 1 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "zero step in outer loop." 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-outer-fir-big-array.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-outer-fir-big-array.c
+@@ -71,4 +71,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 2 "vect" { xfail { vect_no_align && { ! vect_hw_misalign } } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-outer-fir-lb-big-array.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-outer-fir-lb-big-array.c
+@@ -75,4 +75,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 2 "vect" { xfail { vect_no_align && { ! vect_hw_misalign } } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-outer-fir-lb.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-outer-fir-lb.c
+@@ -75,4 +75,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 2 "vect" { xfail { vect_no_align && { ! vect_hw_misalign } } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-outer-fir.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-outer-fir.c
+@@ -71,4 +71,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 2 "vect" { xfail { vect_no_align && { ! vect_hw_misalign } } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-over-widen-1-big-array.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-over-widen-1-big-array.c
+@@ -62,5 +62,4 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "vect_recog_over_widening_pattern: detected" 2 "vect" { target vect_widen_shift } } } */
+ /* { dg-final { scan-tree-dump-times "vect_recog_over_widening_pattern: detected" 4 "vect" { target { ! vect_widen_shift } } } } */
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-over-widen-1.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-over-widen-1.c
+@@ -63,5 +63,4 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "vect_recog_over_widening_pattern: detected" 4 "vect" { target { { ! vect_sizes_32B_16B } && { ! vect_widen_shift } } } } } */
+ /* { dg-final { scan-tree-dump-times "vect_recog_over_widening_pattern: detected" 8 "vect" { target vect_sizes_32B_16B } } } */
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-over-widen-2-big-array.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-over-widen-2-big-array.c
+@@ -61,5 +61,4 @@ int main (void)
+ /* Final value stays in int, so no over-widening is detected at the moment.  */
+ /* { dg-final { scan-tree-dump-times "vect_recog_over_widening_pattern: detected" 0 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-over-widen-2.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-over-widen-2.c
+@@ -61,5 +61,4 @@ int main (void)
+ /* Final value stays in int, so no over-widening is detected at the moment.  */
+ /* { dg-final { scan-tree-dump-times "vect_recog_over_widening_pattern: detected" 0 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-over-widen-3-big-array.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-over-widen-3-big-array.c
+@@ -60,5 +60,4 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "vect_recog_over_widening_pattern: detected" 1 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-over-widen-3.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-over-widen-3.c
+@@ -60,5 +60,4 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump "vect_recog_over_widening_pattern: detected" "vect" } } */
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-over-widen-4-big-array.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-over-widen-4-big-array.c
+@@ -66,5 +66,4 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "vect_recog_over_widening_pattern: detected" 2 "vect" { target vect_widen_shift } } } */
+ /* { dg-final { scan-tree-dump-times "vect_recog_over_widening_pattern: detected" 4 "vect" { target { ! vect_widen_shift } } } } */
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-over-widen-4.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-over-widen-4.c
+@@ -67,5 +67,4 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "vect_recog_over_widening_pattern: detected" 4 "vect" { target { { ! vect_sizes_32B_16B } && { ! vect_widen_shift } } } } } */
+ /* { dg-final { scan-tree-dump-times "vect_recog_over_widening_pattern: detected" 8 "vect" { target vect_sizes_32B_16B } } } */
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-peel-1.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-peel-1.c
+@@ -50,4 +50,3 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect" { target { { vect_element_align } && { vect_aligned_arrays } } } } } */
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-peel-2.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-peel-2.c
+@@ -51,4 +51,3 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect" { target { { vect_element_align } && { vect_aligned_arrays } } } } } */
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { target { { vect_element_align } && { vect_aligned_arrays } } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-peel-3.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-peel-3.c
+@@ -51,4 +51,3 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail { vect_no_align && { ! vect_hw_misalign } } } } } */
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect"  { xfail { { vect_no_align && { ! vect_hw_misalign } } || {vect_sizes_32B_16B } } } } } */
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { xfail { { vect_no_align && { ! vect_hw_misalign } } || {vect_sizes_32B_16B } } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-peel-4.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-peel-4.c
+@@ -48,4 +48,3 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail { vect_no_align && { ! vect_hw_misalign } } } } } */
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect"  { xfail { vect_no_align && { ! vect_hw_misalign } } } } } */
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 0 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-pre-interact.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-pre-interact.c
+@@ -13,4 +13,3 @@ void foo (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail { vect_no_align && { ! vect_hw_misalign } } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-recip.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-recip.c
+@@ -17,4 +17,3 @@ void f(float *__restrict__ qa, float *__restrict__ qb,
+   }
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-reduc-1.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-reduc-1.c
+@@ -53,4 +53,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect" { xfail { vect_no_int_add || vect_no_int_max } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-reduc-10.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-reduc-10.c
+@@ -48,4 +48,3 @@ main ()
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-reduc-1char-big-array.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-reduc-1char-big-array.c
+@@ -68,4 +68,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect" { xfail vect_no_int_max } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-reduc-1char.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-reduc-1char.c
+@@ -48,4 +48,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect" { xfail vect_no_int_max } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-reduc-1short.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-reduc-1short.c
+@@ -48,4 +48,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect" { xfail vect_no_int_max } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-reduc-2.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-reduc-2.c
+@@ -50,4 +50,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect" { xfail { vect_no_int_add || vect_no_int_max } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-reduc-2char-big-array.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-reduc-2char-big-array.c
+@@ -66,4 +66,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect" { xfail *-*-* } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-reduc-2char.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-reduc-2char.c
+@@ -47,4 +47,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect" { xfail *-*-* } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-reduc-2short.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-reduc-2short.c
+@@ -46,4 +46,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect" { xfail *-*-* } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-reduc-3.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-reduc-3.c
+@@ -39,4 +39,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail vect_no_int_add } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-reduc-6.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-reduc-6.c
+@@ -51,4 +51,3 @@ int main (void)
+ /* need -ffast-math to vectorizer these loops.  */
+ /* ARM NEON passes -ffast-math to these tests, so expect this to fail.  */
+ /* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" { xfail arm_neon_ok } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-reduc-7.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-reduc-7.c
+@@ -75,4 +75,3 @@ int main (void)
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-reduc-8.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-reduc-8.c
+@@ -75,4 +75,3 @@ int main (void)
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-reduc-9.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-reduc-9.c
+@@ -75,4 +75,3 @@ int main (void)
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s16a.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s16a.c
+@@ -52,5 +52,4 @@ main (void)
+ /* { dg-final { scan-tree-dump-times "vect_recog_dot_prod_pattern: detected" 1 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_sdot_hi } } } */
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_widen_mult_hi_to_si } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s16b.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s16b.c
+@@ -53,5 +53,4 @@ main (void)
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 0 "vect" { target { ! vect_short_mult } } } } */
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 0 "vect" { target { { ! vect_widen_sum_hi_to_si } && { ! vect_unpack } } } } } */
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s16c.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s16c.c
+@@ -69,5 +69,4 @@ main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 2 "vect" { target vect_unpack } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s8a.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s8a.c
+@@ -55,4 +55,3 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_sdot_qi } } } */
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_widen_mult_qi_to_hi && vect_widen_sum_hi_to_si } } } } */
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s8b.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s8b.c
+@@ -63,4 +63,3 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail *-*-* } } } */
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s8c.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s8c.c
+@@ -43,4 +43,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_unpack } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-u16a.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-u16a.c
+@@ -49,4 +49,3 @@ int main (void)
+ /* The initialization loop in main also gets vectorized.  */
+ /* { dg-final { scan-tree-dump-times "vect_recog_dot_prod_pattern: detected" 1 "vect" { xfail *-*-* } } } */
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 2 "vect" { target { vect_short_mult && vect_widen_sum_hi_to_si } } } } */ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-u16b.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-u16b.c
+@@ -56,4 +56,3 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 2 "vect" { xfail *-*-* } } } */ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_pack_trunc } } } */ 
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-u8a.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-u8a.c
+@@ -52,5 +52,4 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_udot_qi } } } */
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_widen_mult_qi_to_hi && vect_widen_sum_qi_to_si } } } } */
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-u8b.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-u8b.c
+@@ -51,5 +51,4 @@ dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_udot
+ */
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" {target { vect_widen_mult_qi_to_hi || vect_unpack } } } } */
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-reduc-mul_1.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-reduc-mul_1.c
+@@ -32,5 +32,4 @@ main (unsigned char argc, char **argv)
+ }
+ 
+ /* { dg-final { scan-tree-dump "Reduce using vector shifts" "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-reduc-mul_2.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-reduc-mul_2.c
+@@ -28,5 +28,4 @@ main (unsigned char argc, char **argv)
+ }
+ 
+ /* { dg-final { scan-tree-dump "Reduce using vector shifts" "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-reduc-or_1.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-reduc-or_1.c
+@@ -31,5 +31,4 @@ main (unsigned char argc, char **argv)
+ }
+ 
+ /* { dg-final { scan-tree-dump "Reduce using vector shifts" "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-reduc-or_2.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-reduc-or_2.c
+@@ -27,5 +27,4 @@ main (unsigned char argc, char **argv)
+ }
+ 
+ /* { dg-final { scan-tree-dump "Reduce using vector shifts" "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-reduc-pattern-1a.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-reduc-pattern-1a.c
+@@ -37,4 +37,3 @@ main (void)
+ /* { dg-final { scan-tree-dump-times "vect_recog_widen_sum_pattern: detected" 1 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_widen_sum_hi_to_si } } } */
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 0 "vect" { target { ! vect_widen_sum_hi_to_si } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-reduc-pattern-1b-big-array.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-reduc-pattern-1b-big-array.c
+@@ -46,4 +46,3 @@ main (void)
+ /* { dg-final { scan-tree-dump-times "vect_recog_widen_sum_pattern: detected" 1 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_widen_sum_qi_to_si || vect_unpack } } } } */
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 0 "vect" { target { { ! vect_widen_sum_qi_to_si } && { ! vect_unpack } } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-reduc-pattern-1b.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-reduc-pattern-1b.c
+@@ -37,4 +37,3 @@ main (void)
+ /* { dg-final { scan-tree-dump "vect_recog_widen_sum_pattern: detected" "vect"} } */
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_widen_sum_qi_to_si || vect_unpack } } } } */
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 0 "vect" { target { { ! vect_widen_sum_qi_to_si } && { ! vect_unpack } } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-reduc-pattern-1c-big-array.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-reduc-pattern-1c-big-array.c
+@@ -46,4 +46,3 @@ main (void)
+ /* { dg-final { scan-tree-dump-times "vect_recog_widen_sum_pattern: detected" 1 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_widen_sum_qi_to_hi } } } */
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 0 "vect" { target { ! vect_widen_sum_qi_to_hi } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-reduc-pattern-1c.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-reduc-pattern-1c.c
+@@ -37,4 +37,3 @@ main (void)
+ /* { dg-final { scan-tree-dump "vect_recog_widen_sum_pattern: detected" "vect" } } */
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_widen_sum_qi_to_hi } } } */
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 0 "vect" { target { ! vect_widen_sum_qi_to_hi } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-reduc-pattern-2a.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-reduc-pattern-2a.c
+@@ -37,4 +37,3 @@ main (void)
+ /* { dg-final { scan-tree-dump-times "vect_recog_widen_sum_pattern: detected" 1 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_widen_sum_hi_to_si } } } */
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 0 "vect" { target { ! vect_widen_sum_hi_to_si } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-reduc-pattern-2b-big-array.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-reduc-pattern-2b-big-array.c
+@@ -47,4 +47,3 @@ main (void)
+ /* { dg-final { scan-tree-dump-times "vect_recog_widen_sum_pattern: detected" 1 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_widen_sum_qi_to_si && vect_unpack } } } } */
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 0 "vect" { target { { ! vect_widen_sum_qi_to_si } && { ! vect_unpack } } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-reduc-pattern-2b.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-reduc-pattern-2b.c
+@@ -37,4 +37,3 @@ main (void)
+ /* { dg-final { scan-tree-dump "vect_recog_widen_sum_pattern: detected" "vect" } } */
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_widen_sum_qi_to_si && vect_unpack } } } } */
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 0 "vect" { target { { ! vect_widen_sum_qi_to_si } && { ! vect_unpack } } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-reduc-pattern-2c.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-reduc-pattern-2c.c
+@@ -45,4 +45,3 @@ main (void)
+ /* { dg-final { scan-tree-dump-times "vect_recog_widen_sum_pattern: detected" 1 "vect" { xfail *-*-* } } } */
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail *-*-* } } } */
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 0 "vect" { target { ! vect_widen_sum_qi_to_hi } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-reduc-pattern-3.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-reduc-pattern-3.c
+@@ -37,5 +37,4 @@ main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-reduc-sad.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-reduc-sad.c
+@@ -51,5 +51,4 @@ main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "vect_recog_sad_pattern: detected" 1 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-rounding-btrunc.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-rounding-btrunc.c
+@@ -14,4 +14,3 @@ foo (double *output, double *input)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_call_btrunc } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-rounding-btruncf.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-rounding-btruncf.c
+@@ -14,4 +14,3 @@ foo (float *output, float *input)
+ }
+ 
+ /* { 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.dg/vect/vect-rounding-ceil.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-rounding-ceil.c
+@@ -14,4 +14,3 @@ foo (double *output, double *input)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_call_ceil } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-rounding-ceilf.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-rounding-ceilf.c
+@@ -14,4 +14,3 @@ foo (float *output, float *input)
+ }
+ 
+ /* { 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.dg/vect/vect-rounding-floor.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-rounding-floor.c
+@@ -14,4 +14,3 @@ foo (double *output, double *input)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_call_floor } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-rounding-floorf.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-rounding-floorf.c
+@@ -14,4 +14,3 @@ foo (float *output, float *input)
+ }
+ 
+ /* { 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.dg/vect/vect-rounding-lceil.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-rounding-lceil.c
+@@ -14,4 +14,3 @@ foo (long *output, double *input)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_call_lceil } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-rounding-lfloor.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-rounding-lfloor.c
+@@ -14,4 +14,3 @@ foo (long *output, double *input)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_call_lfloor } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-rounding-nearbyint.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-rounding-nearbyint.c
+@@ -14,4 +14,3 @@ foo (double *output, double *input)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_call_nearbyint } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-rounding-nearbyintf.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-rounding-nearbyintf.c
+@@ -14,4 +14,3 @@ foo (float *output, float *input)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_call_nearbyintf } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-rounding-round.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-rounding-round.c
+@@ -14,4 +14,3 @@ foo (double *output, double *input)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_call_round } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-rounding-roundf.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-rounding-roundf.c
+@@ -14,4 +14,3 @@ foo (float *output, float *input)
+ }
+ 
+ /* { 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.dg/vect/vect-sdivmod-1.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-sdivmod-1.c
+@@ -95,4 +95,3 @@ main ()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 4 "vect" { target vect_condition } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-shift-1.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-shift-1.c
+@@ -29,4 +29,3 @@ int main ()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-shift-2-big-array.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-shift-2-big-array.c
+@@ -187,4 +187,3 @@ int main ()
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-shift-2.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-shift-2.c
+@@ -187,4 +187,3 @@ int main ()
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-shift-3.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-shift-3.c
+@@ -34,4 +34,3 @@ int main()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-shift-4.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-shift-4.c
+@@ -34,4 +34,3 @@ int main()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-simd-clone-1.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-simd-clone-1.c
+@@ -56,4 +56,3 @@ main ()
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-simd-clone-10.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-simd-clone-10.c
+@@ -81,4 +81,3 @@ main ()
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-simd-clone-10a.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-simd-clone-10a.c
+@@ -16,4 +16,3 @@ bar (int a, int b, long int c)
+   return a + b + c;
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-simd-clone-11.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-simd-clone-11.c
+@@ -64,4 +64,3 @@ main ()
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-simd-clone-12.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-simd-clone-12.c
+@@ -5,4 +5,3 @@
+ 
+ #include "vect-simd-clone-10.c"
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-simd-clone-12a.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-simd-clone-12a.c
+@@ -16,4 +16,3 @@ bar (int a, int b, long int c)
+   return a + b + c;
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-simd-clone-13.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-simd-clone-13.c
+@@ -4,4 +4,3 @@
+ 
+ #include "vect-simd-clone-6.c"
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-simd-clone-14.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-simd-clone-14.c
+@@ -4,4 +4,3 @@
+ 
+ #include "vect-simd-clone-11.c"
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-simd-clone-2.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-simd-clone-2.c
+@@ -50,4 +50,3 @@ main ()
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-simd-clone-3.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-simd-clone-3.c
+@@ -43,4 +43,3 @@ main ()
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-simd-clone-4.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-simd-clone-4.c
+@@ -46,4 +46,3 @@ main ()
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-simd-clone-5.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-simd-clone-5.c
+@@ -41,4 +41,3 @@ main ()
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-simd-clone-6.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-simd-clone-6.c
+@@ -72,4 +72,3 @@ main ()
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-simd-clone-7.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-simd-clone-7.c
+@@ -72,4 +72,3 @@ main ()
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-simd-clone-8.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-simd-clone-8.c
+@@ -92,4 +92,3 @@ main ()
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-simd-clone-9.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-simd-clone-9.c
+@@ -92,4 +92,3 @@ main ()
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-strided-a-mult.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-strided-a-mult.c
+@@ -74,5 +74,4 @@ int main (void)
+ }   
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target vect_strided2 } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-strided-a-u16-i2.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-strided-a-u16-i2.c
+@@ -58,5 +58,4 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target vect_strided2 } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+   
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-strided-a-u16-i4.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-strided-a-u16-i4.c
+@@ -21,7 +21,6 @@ main1 ()
+   s *ptr = arr;
+   s res[N];
+   int i;
+-  unsigned short x, y, z, w;
+ 
+   for (i = 0; i < N; i++)
+     {
+@@ -35,6 +34,7 @@ main1 ()
+ 
+   for (i = 0; i < N; i++)
+     {
++      unsigned short x, y, z, w;
+       x = ptr->b - ptr->a;
+       y = ptr->d - ptr->c;
+       res[i].c = x + y;
+@@ -71,5 +71,4 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target vect_strided4 } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+   
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-strided-a-u16-mult.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-strided-a-u16-mult.c
+@@ -65,5 +65,4 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target vect_strided2 } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-strided-a-u32-mult.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-strided-a-u32-mult.c
+@@ -62,5 +62,4 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target vect_strided2 } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-strided-a-u8-i2-gap.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-strided-a-u8-i2-gap.c
+@@ -72,5 +72,4 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target vect_strided2 } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+   
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-strided-a-u8-i8-gap2-big-array.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-strided-a-u8-i8-gap2-big-array.c
+@@ -90,5 +90,4 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_strided8 } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-strided-a-u8-i8-gap2.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-strided-a-u8-i8-gap2.c
+@@ -79,5 +79,4 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_strided8 } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+   
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-strided-a-u8-i8-gap7-big-array.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-strided-a-u8-i8-gap7-big-array.c
+@@ -99,5 +99,4 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_strided8 } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-strided-a-u8-i8-gap7.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-strided-a-u8-i8-gap7.c
+@@ -84,5 +84,4 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_strided8 } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+   
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-strided-float.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-strided-float.c
+@@ -41,5 +41,4 @@ int main (void)
+ /* Needs interleaving support.  */
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_strided2 } } } */
+ /* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" { xfail vect_strided2 } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+   
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-strided-mult-char-ls.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-strided-mult-char-ls.c
+@@ -74,5 +74,4 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target vect_strided2 } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+   
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-strided-mult.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-strided-mult.c
+@@ -74,5 +74,4 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target vect_strided2 } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-strided-same-dr.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-strided-same-dr.c
+@@ -75,4 +75,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target vect_strided2 } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-strided-store-a-u8-i2.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-strided-store-a-u8-i2.c
+@@ -56,5 +56,4 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target { vect_interleave || vect_strided2 } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-strided-store-u16-i4.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-strided-store-u16-i4.c
+@@ -67,6 +67,5 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 2 "vect"  { target { { vect_interleave || vect_strided4 } && vect_pack_trunc } } } } */
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target { { ! { vect_interleave || vect_strided4 } } && { vect_pack_trunc } } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-strided-store-u32-i2.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-strided-store-u32-i2.c
+@@ -41,5 +41,4 @@ int main (void)
+ /* Needs interleaving support.  */
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_interleave || vect_strided2 } } } } */
+ /* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" { xfail { vect_interleave || vect_strided2 } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-strided-u16-i2.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-strided-u16-i2.c
+@@ -58,5 +58,4 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target vect_strided2 } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+   
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-strided-u16-i3.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-strided-u16-i3.c
+@@ -109,4 +109,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 4 loops" 1 "vect"  { target vect_strided3 } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-strided-u16-i4.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-strided-u16-i4.c
+@@ -71,5 +71,4 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target vect_strided4 } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+   
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-strided-u32-i4.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-strided-u32-i4.c
+@@ -66,5 +66,4 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target vect_strided4 } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+   
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-strided-u32-i8.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-strided-u32-i8.c
+@@ -80,5 +80,4 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_strided8 } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+   
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-strided-u32-mult.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-strided-u32-mult.c
+@@ -61,5 +61,4 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target vect_strided2 } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-strided-u8-i2-gap.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-strided-u8-i2-gap.c
+@@ -74,5 +74,4 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target vect_strided2 } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+   
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-strided-u8-i2.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-strided-u8-i2.c
+@@ -57,5 +57,4 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target vect_strided2 } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+    
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8-gap2-big-array.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8-gap2-big-array.c
+@@ -93,5 +93,4 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_strided8 } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8-gap2.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8-gap2.c
+@@ -81,5 +81,4 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_strided8 } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+   
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8-gap4-big-array.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8-gap4-big-array.c
+@@ -114,5 +114,4 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_strided8 } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8-gap4-unknown.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8-gap4-unknown.c
+@@ -114,5 +114,4 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_strided8 } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+   
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8-gap4.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8-gap4.c
+@@ -101,5 +101,4 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_strided8 } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+   
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8-gap7-big-array.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8-gap7-big-array.c
+@@ -103,5 +103,4 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_strided8 } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8-gap7.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8-gap7.c
+@@ -86,5 +86,4 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_strided8 } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+   
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8.c
+@@ -88,5 +88,4 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_strided8 } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+   
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-vfa-01.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-vfa-01.c
+@@ -36,4 +36,3 @@ main (void)
+ } 
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-vfa-02.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-vfa-02.c
+@@ -44,4 +44,3 @@ main (void)
+ } 
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-vfa-03.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-vfa-03.c
+@@ -55,4 +55,3 @@ main (void)
+ /* Needs interleaving support.  */
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_strided2 } } } */
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 0 "vect" { xfail  vect_strided2 } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-vfa-04.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-vfa-04.c
+@@ -35,4 +35,3 @@ main (void)
+ } 
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-vfa-slp.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-vfa-slp.c
+@@ -53,4 +53,3 @@ main (void)
+ } 
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-widen-mult-const-s16.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-widen-mult-const-s16.c
+@@ -57,5 +57,4 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 2 "vect" { target vect_widen_mult_hi_to_si } } } */
+ /* { dg-final { scan-tree-dump-times "vect_recog_widen_mult_pattern: detected" 2 "vect" { target vect_widen_mult_hi_to_si_pattern } } } */
+ /* { dg-final { scan-tree-dump-times "pattern recognized" 2 "vect" { target vect_widen_mult_hi_to_si_pattern } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-widen-mult-const-u16.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-widen-mult-const-u16.c
+@@ -74,4 +74,3 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 3 "vect" { target vect_widen_mult_hi_to_si } } } */
+ /* { dg-final { scan-tree-dump-times "vect_recog_widen_mult_pattern: detected" 2 "vect" { target vect_widen_mult_hi_to_si_pattern } } } */
+ /* { dg-final { scan-tree-dump-times "pattern recognized" 2 "vect" { target vect_widen_mult_hi_to_si_pattern } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-widen-mult-half-u8.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-widen-mult-half-u8.c
+@@ -56,5 +56,4 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 2 "vect" { target vect_widen_mult_hi_to_si } } } */
+ /* { dg-final { scan-tree-dump-times "vect_recog_widen_mult_pattern: detected" 2 "vect" { target vect_widen_mult_hi_to_si_pattern } } } */
+ /* { dg-final { scan-tree-dump-times "pattern recognized" 2 "vect" { target vect_widen_mult_hi_to_si_pattern } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-widen-mult-half.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-widen-mult-half.c
+@@ -45,5 +45,4 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_widen_mult_hi_to_si } } } */
+ /* { dg-final { scan-tree-dump-times "vect_recog_widen_mult_pattern: detected" 1 "vect" { target vect_widen_mult_hi_to_si_pattern } } } */
+ /* { dg-final { scan-tree-dump-times "pattern recognized" 1 "vect" { target vect_widen_mult_hi_to_si_pattern } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-widen-mult-s16.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-widen-mult-s16.c
+@@ -42,5 +42,4 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_widen_mult_hi_to_si } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-widen-mult-s8.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-widen-mult-s8.c
+@@ -42,5 +42,4 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_widen_mult_qi_to_hi } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-widen-mult-sum.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-widen-mult-sum.c
+@@ -44,4 +44,3 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_widen_mult_hi_to_si } } } */
+ /* { dg-final { scan-tree-dump-times "vect_recog_widen_mult_pattern: detected" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-widen-mult-u16.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-widen-mult-u16.c
+@@ -44,5 +44,4 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_widen_mult_hi_to_si || vect_unpack } } } } */
+ /* { dg-final { scan-tree-dump-times "vect_recog_widen_mult_pattern: detected" 1 "vect" { target vect_widen_mult_hi_to_si_pattern } } } */
+ /* { dg-final { scan-tree-dump-times "pattern recognized" 1 "vect" { target vect_widen_mult_hi_to_si_pattern } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-widen-mult-u8-s16-s32.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-widen-mult-u8-s16-s32.c
+@@ -44,5 +44,4 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_widen_mult_hi_to_si || vect_unpack } } } } */
+ /* { dg-final { scan-tree-dump-times "vect_recog_widen_mult_pattern: detected" 1 "vect" { target vect_widen_mult_hi_to_si_pattern } } } */
+ /* { dg-final { scan-tree-dump-times "pattern recognized" 1 "vect" { target vect_widen_mult_hi_to_si_pattern } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-widen-mult-u8-u32.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-widen-mult-u8-u32.c
+@@ -44,5 +44,4 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_widen_mult_qi_to_hi || vect_unpack } } } } */
+ /* { dg-final { scan-tree-dump-times "vect_recog_widen_mult_pattern: detected" 1 "vect" { target vect_widen_mult_qi_to_hi_pattern } } } */
+ /* { dg-final { scan-tree-dump-times "pattern recognized" 1 "vect" { target vect_widen_mult_qi_to_hi_pattern } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-widen-mult-u8.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-widen-mult-u8.c
+@@ -44,5 +44,4 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_widen_mult_qi_to_hi || vect_unpack } } } } */
+ /* { dg-final { scan-tree-dump-times "vect_recog_widen_mult_pattern: detected" 1 "vect" { target vect_widen_mult_qi_to_hi_pattern } } } */
+ /* { dg-final { scan-tree-dump-times "pattern recognized" 1 "vect" { target vect_widen_mult_qi_to_hi_pattern } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-widen-shift-s16.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-widen-shift-s16.c
+@@ -103,5 +103,4 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "vect_recog_widen_shift_pattern: detected" 8 "vect" { target vect_widen_shift } } } */
+ /* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-widen-shift-s8.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-widen-shift-s8.c
+@@ -54,5 +54,4 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "vect_recog_widen_shift_pattern: detected" 1 "vect" { target vect_widen_shift } } } */
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-widen-shift-u16.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-widen-shift-u16.c
+@@ -54,5 +54,4 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "vect_recog_widen_shift_pattern: detected" 1 "vect" { target vect_widen_shift } } } */
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.dg/vect/vect-widen-shift-u8.c
++++ b/src/gcc/testsuite/gcc.dg/vect/vect-widen-shift-u8.c
+@@ -61,4 +61,3 @@ int main (void)
+ 
+ /* { dg-final { scan-tree-dump-times "vect_recog_widen_shift_pattern: detected" 2 "vect" { target vect_widen_shift } } } */
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/wrapv-vect-7.c
++++ b/src/gcc/testsuite/gcc.dg/vect/wrapv-vect-7.c
+@@ -50,4 +50,3 @@ int main (void)
+ /* Fails for 32-bit targets that don't vectorize PLUS.  */
+ /* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/wrapv-vect-reduc-2char.c
++++ b/src/gcc/testsuite/gcc.dg/vect/wrapv-vect-reduc-2char.c
+@@ -48,4 +48,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect" { xfail vect_no_int_max } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/wrapv-vect-reduc-2short.c
++++ b/src/gcc/testsuite/gcc.dg/vect/wrapv-vect-reduc-2short.c
+@@ -47,4 +47,3 @@ int main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect" { xfail vect_no_int_max } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/wrapv-vect-reduc-dot-s8b.c
++++ b/src/gcc/testsuite/gcc.dg/vect/wrapv-vect-reduc-dot-s8b.c
+@@ -54,4 +54,3 @@ dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_sdot
+ /* In the meantime expect: */
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_widen_mult_qi_to_hi || vect_unpack } } } } */
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vect/wrapv-vect-reduc-pattern-2c.c
++++ b/src/gcc/testsuite/gcc.dg/vect/wrapv-vect-reduc-pattern-2c.c
+@@ -38,4 +38,3 @@ main (void)
+ /* { dg-final { scan-tree-dump "vect_recog_widen_sum_pattern: detected" "vect" } } */
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_widen_sum_qi_to_hi } } } */
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 0 "vect" { target { ! vect_widen_sum_qi_to_hi } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.dg/vector-shift-2.c
++++ b/src/gcc/testsuite/gcc.dg/vector-shift-2.c
+@@ -10,4 +10,3 @@ f (vec *a)
+ }
+ 
+ /* { dg-final { scan-tree-dump "<< 5" "ccp1" } } */
+-/* { dg-final { cleanup-tree-dump "ccp1" } } */
+--- a/src/gcc/testsuite/gcc.dg/vector-shift.c
++++ b/src/gcc/testsuite/gcc.dg/vector-shift.c
+@@ -10,4 +10,3 @@ f (vec *x)
+ }
+ 
+ /* { dg-final { scan-tree-dump "<< 7" "original" } } */
+-/* { dg-final { cleanup-tree-dump "original" } } */
+--- a/src/gcc/testsuite/gcc.dg/volatile2.c
++++ b/src/gcc/testsuite/gcc.dg/volatile2.c
+@@ -19,4 +19,3 @@ void foo(struct GTeth_softc *sc)
+ }
+ 
+ /* { dg-final { scan-tree-dump "{v}" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.dg/volatile3.c
++++ b/src/gcc/testsuite/gcc.dg/volatile3.c
+@@ -10,4 +10,3 @@ void foo(int i)
+ }
+ 
+ /* { dg-final { scan-tree-dump-not "{v}" "ssa" } } */
+-/* { dg-final { cleanup-tree-dump "ssa" } } */
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.dg/wide-shift-128.c
+@@ -0,0 +1,11 @@
++/* { dg-do compile { target aarch64*-*-* mips64*-*-* sparc64*-*-* } } */
++/* { dg-require-effective-target int128 } */
++/* { dg-options "-O2 -fdump-rtl-combine" } */
++
++__int128_t
++load2 (int data)
++{
++    return (__int128_t) data << 50;
++}
++
++/* { dg-final { scan-rtl-dump-not "ior" "combine" } } */
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.dg/wide-shift-64.c
+@@ -0,0 +1,10 @@
++/* { dg-do compile { target mips*-*-* sparc*-*-* } } */
++/* { dg-options "-O2 -fdump-rtl-combine" } */
++
++long long
++load1 (int data)
++{
++    return (long long) data << 12;
++}
++
++/* { dg-final { scan-rtl-dump-not "ior" "combine" } } */
+--- a/src/gcc/testsuite/gcc.dg/wmul-1.c
++++ b/src/gcc/testsuite/gcc.dg/wmul-1.c
+@@ -16,4 +16,3 @@ foo (ArrT Arr, int Idx)
+ }
+ 
+ /* { dg-final { scan-tree-dump-not "WIDEN_MULT_PLUS_EXPR" "widening_mul" } } */
+-/* { dg-final { cleanup-tree-dump "widening_mul" } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/aapcs64/func-ret-1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/aapcs64/func-ret-1.c
+@@ -12,6 +12,8 @@
+ 
+ vf2_t vf2 = (vf2_t){ 17.f, 18.f };
+ vi4_t vi4 = (vi4_t){ 0xdeadbabe, 0xbabecafe, 0xcafebeef, 0xbeefdead };
++vlf1_t vlf1 = (vlf1_t) { 17.0 };
++
+ union int128_t qword;
+ 
+ int *int_ptr = (int *)0xabcdef0123456789ULL;
+@@ -41,4 +43,5 @@ FUNC_VAL_CHECK (11,   long double, 98765432123456789.987654321L, Q0, flat)
+ FUNC_VAL_CHECK (12,         vf2_t,        vf2, D0, f32in64)
+ FUNC_VAL_CHECK (13,         vi4_t,        vi4, Q0, i32in128)
+ FUNC_VAL_CHECK (14,         int *,    int_ptr, X0, flat)
++FUNC_VAL_CHECK (15,         vlf1_t,    vlf1, Q0, flat)
+ #endif
+--- a/src/gcc/testsuite/gcc.target/aarch64/aapcs64/type-def.h
++++ b/src/gcc/testsuite/gcc.target/aarch64/aapcs64/type-def.h
+@@ -10,6 +10,9 @@ typedef float vf4_t __attribute__((vector_size (16)));
+ /* 128-bit vector of 4 ints.  */
+ typedef int vi4_t __attribute__((vector_size (16)));
+ 
++/* 128-bit vector of 1 quad precision float.  */
++typedef long double vlf1_t __attribute__((vector_size (16)));
++
+ /* signed quad-word (in an union for the convenience of initialization).  */
+ union int128_t
+ {
+--- a/src/gcc/testsuite/gcc.target/aarch64/abs_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/abs_1.c
+@@ -7,15 +7,14 @@ extern void abort (void);
+ long long
+ abs64 (long long a)
+ {
+-  /* { dg-final { scan-assembler "eor\t" } } */
+-  /* { dg-final { scan-assembler "sub\t" } } */
++  /* { dg-final { scan-assembler "csneg\t" } } */
+   return llabs (a);
+ }
+ 
+ long long
+ abs64_in_dreg (long long a)
+ {
+-  /* { dg-final { scan-assembler "abs\td\[0-9\]+, d\[0-9\]+" } } */
++  /* { dg-final { scan-assembler "csneg\t" } } */
+   register long long x asm ("d8") = a;
+   register long long y asm ("d9");
+   asm volatile ("" : : "w" (x));
+@@ -50,4 +49,3 @@ main (void)
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/abs_2.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/abs_2.c
+@@ -28,4 +28,3 @@ main (int argc, char **argv)
+ 
+ 
+ /* { dg-final { scan-assembler-not "sabd" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/acle/crc32b.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/acle/crc32b.c
+@@ -12,4 +12,3 @@ test_crc32b (uint32_t arg0, uint8_t arg1)
+ }
+ 
+ /* { dg-final { scan-assembler "crc32b\tw..?, w..?, w..?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/acle/crc32cb.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/acle/crc32cb.c
+@@ -12,4 +12,3 @@ test_crc32cb (uint32_t arg0, uint8_t arg1)
+ }
+ 
+ /* { dg-final { scan-assembler "crc32cb\tw..?, w..?, w..?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/acle/crc32cd.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/acle/crc32cd.c
+@@ -12,4 +12,3 @@ test_crc32cd (uint32_t arg0, uint64_t arg1)
+ }
+ 
+ /* { dg-final { scan-assembler "crc32cx\tw..?, w..?, x..?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/acle/crc32ch.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/acle/crc32ch.c
+@@ -12,4 +12,3 @@ test_crc32ch (uint32_t arg0, uint16_t arg1)
+ }
+ 
+ /* { dg-final { scan-assembler "crc32ch\tw..?, w..?, w..?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/acle/crc32cw.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/acle/crc32cw.c
+@@ -12,4 +12,3 @@ test_crc32cw (uint32_t arg0, uint32_t arg1)
+ }
+ 
+ /* { dg-final { scan-assembler "crc32cw\tw..?, w..?, w..?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/acle/crc32d.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/acle/crc32d.c
+@@ -12,4 +12,3 @@ test_crc32d (uint32_t arg0, uint64_t arg1)
+ }
+ 
+ /* { dg-final { scan-assembler "crc32x\tw..?, w..?, x..?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/acle/crc32h.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/acle/crc32h.c
+@@ -12,4 +12,3 @@ test_crc32h (uint32_t arg0, uint16_t arg1)
+ }
+ 
+ /* { dg-final { scan-assembler "crc32h\tw..?, w..?, w..?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/acle/crc32w.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/acle/crc32w.c
+@@ -12,4 +12,3 @@ test_crc32w (uint32_t arg0, uint32_t arg1)
+ }
+ 
+ /* { dg-final { scan-assembler "crc32w\tw..?, w..?, w..?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/adds1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/adds1.c
+@@ -12,7 +12,7 @@ adds_si_test1 (int a, int b, int c)
+   if (d == 0)
+     return a + c;
+   else
+-    return b + d + c;
++    return d;
+ }
+ 
+ int
+@@ -24,7 +24,7 @@ adds_si_test2 (int a, int b, int c)
+   if (d == 0)
+     return a + c;
+   else
+-    return b + d + c;
++    return d;
+ }
+ 
+ int
+@@ -36,7 +36,7 @@ adds_si_test3 (int a, int b, int c)
+   if (d == 0)
+     return a + c;
+   else
+-    return b + d + c;
++    return d;
+ }
+ 
+ typedef long long s64;
+@@ -50,7 +50,7 @@ adds_di_test1 (s64 a, s64 b, s64 c)
+   if (d == 0)
+     return a + c;
+   else
+-    return b + d + c;
++    return d;
+ }
+ 
+ s64
+@@ -62,7 +62,7 @@ adds_di_test2 (s64 a, s64 b, s64 c)
+   if (d == 0)
+     return a + c;
+   else
+-    return b + d + c;
++    return d;
+ }
+ 
+ s64
+@@ -74,7 +74,7 @@ adds_di_test3 (s64 a, s64 b, s64 c)
+   if (d == 0)
+     return a + c;
+   else
+-    return b + d + c;
++    return d;
+ }
+ 
+ int main ()
+@@ -83,67 +83,66 @@ int main ()
+   s64 y;
+ 
+   x = adds_si_test1 (29, 4, 5);
+-  if (x != 42)
++  if (x != (29 + 4))
+     abort ();
+ 
+-  x = adds_si_test1 (5, 2, 20);
+-  if (x != 29)
++  x = adds_si_test1 (5, 2, -5);
++  if (x != 7)
+     abort ();
+ 
+   x = adds_si_test2 (29, 4, 5);
+-  if (x != 293)
++  if (x != (29 + 0xff))
+     abort ();
+ 
+-  x = adds_si_test2 (1024, 2, 20);
+-  if (x != 1301)
++  x = adds_si_test2 (-255, 2, 20);
++  if (x != -235)
+     abort ();
+ 
+   x = adds_si_test3 (35, 4, 5);
+-  if (x != 76)
++  if (x != (35 + (4 << 3)))
+     abort ();
+ 
+-  x = adds_si_test3 (5, 2, 20);
+-  if (x != 43)
++  x = adds_si_test3 (-(2 << 3), 2, 20);
++  if (x != (20 - (2 << 3)))
+     abort ();
+ 
+   y = adds_di_test1 (0x130000029ll,
+ 		     0x320000004ll,
+ 		     0x505050505ll);
+ 
+-  if (y != 0xc75050536)
++  if (y != (0x130000029ll + 0x320000004ll))
+     abort ();
+ 
+   y = adds_di_test1 (0x5000500050005ll,
+-		     0x2111211121112ll,
++		     -0x5000500050005ll,
+ 		     0x0000000002020ll);
+-  if (y != 0x9222922294249)
++  if (y != (0x5000500050005ll + 0x0000000002020ll))
+     abort ();
+ 
+   y = adds_di_test2 (0x130000029ll,
+ 		     0x320000004ll,
+ 		     0x505050505ll);
+-  if (y != 0x955050631)
++  if (y != (0x130000029ll + 0xff))
+     abort ();
+ 
+-  y = adds_di_test2 (0x130002900ll,
++  y = adds_di_test2 (-0xff,
+ 		     0x320000004ll,
+ 		     0x505050505ll);
+-  if (y != 0x955052f08)
++  if (y != (0x505050505ll - 0xff))
+     abort ();
+ 
+   y = adds_di_test3 (0x130000029ll,
+ 		     0x064000008ll,
+ 		     0x505050505ll);
+-  if (y != 0x9b9050576)
++  if (y != (0x130000029ll + (0x064000008ll << 3)))
+     abort ();
+ 
+   y = adds_di_test3 (0x130002900ll,
+-		     0x088000008ll,
++		     -(0x130002900ll >> 3),
+ 		     0x505050505ll);
+-  if (y != 0xafd052e4d)
++  if (y != (0x130002900ll + 0x505050505ll))
+     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
+@@ -152,4 +152,3 @@ int main ()
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/adds3.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/adds3.c
+@@ -12,7 +12,7 @@ adds_ext (s64 a, int b, int c)
+   if (d == 0)
+     return a + c;
+   else
+-    return b + d + c;
++    return d;
+ }
+ 
+ int
+@@ -23,7 +23,7 @@ adds_shift_ext (s64 a, int b, int c)
+   if (d == 0)
+     return a + c;
+   else
+-    return b + d + c;
++    return d;
+ }
+ 
+ int main ()
+@@ -32,27 +32,27 @@ int main ()
+   s64 y;
+ 
+   x = adds_ext (0x13000002ll, 41, 15);
+-  if (x != 318767203)
++  if (x != (int)(0x13000002ll + 41))
+     abort ();
+ 
+-  x = adds_ext (0x50505050ll, 29, 4);
+-  if (x != 1347440782)
++  x = adds_ext (0x50505050ll, -0x50505050ll, 4);
++  if (x != (int)(0x50505050ll + 4))
+     abort ();
+ 
+   x = adds_ext (0x12121212121ll, 2, 14);
+-  if (x != 555819315)
++  if (x != (int)(0x12121212121ll + 2))
+     abort ();
+ 
+   x = adds_shift_ext (0x123456789ll, 4, 12);
+-  if (x != 591751097)
++  if (x != (int)(0x123456789ll + (4 << 3)))
+     abort ();
+ 
+-  x = adds_shift_ext (0x02020202ll, 9, 8);
+-  if (x != 33686107)
++  x = adds_shift_ext (-(0x02020202ll << 3), 0x02020202ll, 8);
++  if (x != (int)(8 - (0x02020202ll << 3)))
+     abort ();
+ 
+   x = adds_shift_ext (0x987987987987ll, 23, 41);
+-  if (x != -2020050305)
++  if (x != (int)(0x987987987987ll + (23 << 3)))
+     abort ();
+ 
+   return 0;
+--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/advsimd-intrinsics.exp
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/advsimd-intrinsics.exp
+@@ -27,39 +27,43 @@ load_lib gcc-dg.exp
+ 
+ # Initialize `dg'.
+ load_lib c-torture.exp
+-load_lib target-supports.exp
+-load_lib torture-options.exp
+ 
+ dg-init
+ 
+-if {[istarget arm*-*-*]
+-    && ![check_effective_target_arm_neon_ok]} then {
+-  return
++# The default action for a test is 'run'.  Save current default.
++global dg-do-what-default
++set save-dg-do-what-default ${dg-do-what-default}
++
++# For ARM, make sure that we have a target compatible with NEON, and do
++# not attempt to run execution tests if the hardware doesn't support it.
++if {[istarget arm*-*-*]} then {
++    if {![check_effective_target_arm_neon_ok]} then {
++      return
++    }
++    if {![is-effective-target arm_neon_hw]} then {
++        set dg-do-what-default compile
++    } else {
++        set dg-do-what-default run
++    }
++} else {
++    set dg-do-what-default run
+ }
+ 
+ torture-init
+ set-torture-options $C_TORTURE_OPTIONS {{}} $LTO_TORTURE_OPTIONS
+ 
+-# Make sure Neon flags are provided, if necessary.
+-set additional_flags [add_options_for_arm_neon ""]
++# Make sure Neon flags are provided, if necessary.  Use fp16 if we can.
++if {[check_effective_target_arm_neon_fp16_ok]} then {
++  set additional_flags [add_options_for_arm_neon_fp16 ""]
++} else {
++  set additional_flags [add_options_for_arm_neon ""]
++}
+ 
+ # Main loop.
+-foreach src [lsort [glob -nocomplain $srcdir/$subdir/*.c]] {
+-    # If we're only testing specific files and this isn't one of them, skip it.
+-    if ![runtest_file_p $runtests $src] then {
+-	continue
+-    }
+-
+-    # runtest_file_p is already run above, and the code below can run
+-    # runtest_file_p again, make sure everything for this test is
+-    # performed if the above runtest_file_p decided this runtest
+-    # instance should execute the test
+-    gcc_parallel_test_enable 0
+-    c-torture-execute $src $additional_flags
+-    gcc-dg-runtest $src "" $additional_flags
+-    gcc_parallel_test_enable 1
+-}
++gcc-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.c]] \
++	       "" ${additional_flags}
+ 
+ # All done.
++set dg-do-what-default ${save-dg-do-what-default}
+ torture-finish
+ dg-finish
+--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/arm-neon-ref.h
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/arm-neon-ref.h
+@@ -7,6 +7,7 @@
+ #include <inttypes.h>
+ 
+ /* helper type, to help write floating point results in integer form.  */
++typedef uint16_t hfloat16_t;
+ typedef uint32_t hfloat32_t;
+ typedef uint64_t hfloat64_t;
+ 
+@@ -132,6 +133,9 @@ static ARRAY(result, uint, 32, 2);
+ static ARRAY(result, uint, 64, 1);
+ static ARRAY(result, poly, 8, 8);
+ static ARRAY(result, poly, 16, 4);
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++static ARRAY(result, float, 16, 4);
++#endif
+ static ARRAY(result, float, 32, 2);
+ static ARRAY(result, int, 8, 16);
+ static ARRAY(result, int, 16, 8);
+@@ -143,6 +147,9 @@ static ARRAY(result, uint, 32, 4);
+ static ARRAY(result, uint, 64, 2);
+ static ARRAY(result, poly, 8, 16);
+ static ARRAY(result, poly, 16, 8);
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++static ARRAY(result, float, 16, 8);
++#endif
+ static ARRAY(result, float, 32, 4);
+ #ifdef __aarch64__
+ static ARRAY(result, float, 64, 2);
+@@ -160,6 +167,7 @@ extern ARRAY(expected, uint, 32, 2);
+ extern ARRAY(expected, uint, 64, 1);
+ extern ARRAY(expected, poly, 8, 8);
+ extern ARRAY(expected, poly, 16, 4);
++extern ARRAY(expected, hfloat, 16, 4);
+ extern ARRAY(expected, hfloat, 32, 2);
+ extern ARRAY(expected, int, 8, 16);
+ extern ARRAY(expected, int, 16, 8);
+@@ -171,38 +179,11 @@ extern ARRAY(expected, uint, 32, 4);
+ extern ARRAY(expected, uint, 64, 2);
+ extern ARRAY(expected, poly, 8, 16);
+ extern ARRAY(expected, poly, 16, 8);
++extern ARRAY(expected, hfloat, 16, 8);
+ extern ARRAY(expected, hfloat, 32, 4);
+ extern ARRAY(expected, hfloat, 64, 2);
+ 
+-/* Check results. Operates on all possible vector types.  */
+-#define CHECK_RESULTS(test_name,comment)				\
+-  {									\
+-    CHECK(test_name, int, 8, 8, PRIx8, expected, comment);		\
+-    CHECK(test_name, int, 16, 4, PRIx16, expected, comment);		\
+-    CHECK(test_name, int, 32, 2, PRIx32, expected, comment);		\
+-    CHECK(test_name, int, 64, 1, PRIx64, expected, comment);		\
+-    CHECK(test_name, uint, 8, 8, PRIx8, expected, comment);		\
+-    CHECK(test_name, uint, 16, 4, PRIx16, expected, comment);		\
+-    CHECK(test_name, uint, 32, 2, PRIx32, expected, comment);		\
+-    CHECK(test_name, uint, 64, 1, PRIx64, expected, comment);		\
+-    CHECK(test_name, poly, 8, 8, PRIx8, expected, comment);		\
+-    CHECK(test_name, poly, 16, 4, PRIx16, expected, comment);		\
+-    CHECK_FP(test_name, float, 32, 2, PRIx32, expected, comment);	\
+-									\
+-    CHECK(test_name, int, 8, 16, PRIx8, expected, comment);		\
+-    CHECK(test_name, int, 16, 8, PRIx16, expected, comment);		\
+-    CHECK(test_name, int, 32, 4, PRIx32, expected, comment);		\
+-    CHECK(test_name, int, 64, 2, PRIx64, expected, comment);		\
+-    CHECK(test_name, uint, 8, 16, PRIx8, expected, comment);		\
+-    CHECK(test_name, uint, 16, 8, PRIx16, expected, comment);		\
+-    CHECK(test_name, uint, 32, 4, PRIx32, expected, comment);		\
+-    CHECK(test_name, uint, 64, 2, PRIx64, expected, comment);		\
+-    CHECK(test_name, poly, 8, 16, PRIx8, expected, comment);		\
+-    CHECK(test_name, poly, 16, 8, PRIx16, expected, comment);		\
+-    CHECK_FP(test_name, float, 32, 4, PRIx32, expected, comment);	\
+-  }									\
+-
+-#define CHECK_RESULTS_NAMED(test_name,EXPECTED,comment)			\
++#define CHECK_RESULTS_NAMED_NO_FP16(test_name,EXPECTED,comment)		\
+   {									\
+     CHECK(test_name, int, 8, 8, PRIx8, EXPECTED, comment);		\
+     CHECK(test_name, int, 16, 4, PRIx16, EXPECTED, comment);		\
+@@ -229,13 +210,32 @@ extern ARRAY(expected, hfloat, 64, 2);
+     CHECK_FP(test_name, float, 32, 4, PRIx32, EXPECTED, comment);	\
+   }									\
+ 
++/* Check results against EXPECTED.  Operates on all possible vector types.  */
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++#define CHECK_RESULTS_NAMED(test_name,EXPECTED,comment)			\
++  {									\
++    CHECK_RESULTS_NAMED_NO_FP16(test_name, EXPECTED, comment)		\
++    CHECK_FP(test_name, float, 16, 4, PRIx16, EXPECTED, comment);	\
++    CHECK_FP(test_name, float, 16, 8, PRIx16, EXPECTED, comment);	\
++  }
++#else
++#define CHECK_RESULTS_NAMED(test_name,EXPECTED,comment)		\
++  CHECK_RESULTS_NAMED_NO_FP16(test_name, EXPECTED, comment)
++#endif
++
++#define CHECK_RESULTS_NO_FP16(test_name,comment)			\
++  CHECK_RESULTS_NAMED_NO_FP16(test_name, expected, comment)
++
++#define CHECK_RESULTS(test_name,comment)		\
++  CHECK_RESULTS_NAMED(test_name, expected, comment)
+ 
+ 
+ #if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
+ 
+ typedef union {
+   struct {
+-    int _xxx:25;
++    int _xxx:24;
++    unsigned int FZ:1;
+     unsigned int DN:1;
+     unsigned int AHP:1;
+     unsigned int QC:1;
+@@ -258,7 +258,8 @@ typedef union {
+     unsigned int QC:1;
+     unsigned int AHP:1;
+     unsigned int DN:1;
+-    int _dnm:25;
++    unsigned int FZ:1;
++    int _dnm:24;
+   } b;
+   unsigned int word;
+ } _ARM_FPSCR;
+@@ -378,6 +379,9 @@ static void clean_results (void)
+   CLEAN(result, uint, 64, 1);
+   CLEAN(result, poly, 8, 8);
+   CLEAN(result, poly, 16, 4);
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++  CLEAN(result, float, 16, 4);
++#endif
+   CLEAN(result, float, 32, 2);
+ 
+   CLEAN(result, int, 8, 16);
+@@ -390,15 +394,23 @@ static void clean_results (void)
+   CLEAN(result, uint, 64, 2);
+   CLEAN(result, poly, 8, 16);
+   CLEAN(result, poly, 16, 8);
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++  CLEAN(result, float, 16, 8);
++#endif
+   CLEAN(result, float, 32, 4);
+ 
+ #if defined(__aarch64__)
+   /* On AArch64, make sure to return DefaultNaN to have the same
+      results as on AArch32.  */
+-  _ARM_FPSCR _afpscr_for_dn;
+-  asm volatile ("mrs %0,fpcr" : "=r" (_afpscr_for_dn));
+-  _afpscr_for_dn.b.DN = 1;
+-  asm volatile ("msr fpcr,%0" : : "r" (_afpscr_for_dn));
++  _ARM_FPSCR _afpscr;
++  asm volatile ("mrs %0,fpcr" : "=r" (_afpscr));
++  _afpscr.b.DN = 1;
++
++  /* On AArch64, make sure to flush to zero by default, as on
++     AArch32. */
++  _afpscr.b.FZ = 1;
++
++  asm volatile ("msr fpcr,%0" : : "r" (_afpscr));
+ #endif
+ }
+ 
+@@ -436,21 +448,40 @@ static void clean_results (void)
+   DECL_VARIABLE(VAR, uint, 64, 2)
+ 
+ /* Declare all 64 bits variants.  */
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
+ #define DECL_VARIABLE_64BITS_VARIANTS(VAR)	\
+   DECL_VARIABLE_64BITS_SIGNED_VARIANTS(VAR);	\
+   DECL_VARIABLE_64BITS_UNSIGNED_VARIANTS(VAR);	\
+   DECL_VARIABLE(VAR, poly, 8, 8);		\
+   DECL_VARIABLE(VAR, poly, 16, 4);		\
++  DECL_VARIABLE(VAR, float, 16, 4);		\
+   DECL_VARIABLE(VAR, float, 32, 2)
++#else
++#define DECL_VARIABLE_64BITS_VARIANTS(VAR)	\
++  DECL_VARIABLE_64BITS_SIGNED_VARIANTS(VAR);	\
++  DECL_VARIABLE_64BITS_UNSIGNED_VARIANTS(VAR);	\
++  DECL_VARIABLE(VAR, poly, 8, 8);		\
++  DECL_VARIABLE(VAR, poly, 16, 4);		\
++  DECL_VARIABLE(VAR, float, 32, 2)
++#endif
+ 
+ /* Declare all 128 bits variants.  */
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
+ #define DECL_VARIABLE_128BITS_VARIANTS(VAR)	\
+   DECL_VARIABLE_128BITS_SIGNED_VARIANTS(VAR);	\
+   DECL_VARIABLE_128BITS_UNSIGNED_VARIANTS(VAR);	\
+   DECL_VARIABLE(VAR, poly, 8, 16);		\
+   DECL_VARIABLE(VAR, poly, 16, 8);		\
++  DECL_VARIABLE(VAR, float, 16, 8);		\
+   DECL_VARIABLE(VAR, float, 32, 4)
+-
++#else
++#define DECL_VARIABLE_128BITS_VARIANTS(VAR)	\
++  DECL_VARIABLE_128BITS_SIGNED_VARIANTS(VAR);	\
++  DECL_VARIABLE_128BITS_UNSIGNED_VARIANTS(VAR);	\
++  DECL_VARIABLE(VAR, poly, 8, 16);		\
++  DECL_VARIABLE(VAR, poly, 16, 8);		\
++  DECL_VARIABLE(VAR, float, 32, 4)
++#endif
+ /* Declare all variants.  */
+ #define DECL_VARIABLE_ALL_VARIANTS(VAR)		\
+   DECL_VARIABLE_64BITS_VARIANTS(VAR);		\
+@@ -469,6 +500,15 @@ static void clean_results (void)
+ /* Helpers to initialize vectors.  */
+ #define VDUP(VAR, Q, T1, T2, W, N, V)			\
+   VECT_VAR(VAR, T1, W, N) = vdup##Q##_n_##T2##W(V)
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++/* Work around that there is no vdup_n_f16 intrinsic.  */
++#define vdup_n_f16(VAL)		\
++  __extension__			\
++    ({				\
++      float16_t f = VAL;	\
++      vld1_dup_f16(&f);		\
++    })
++#endif
+ 
+ #define VSET_LANE(VAR, Q, T1, T2, W, N, L, V)				\
+   VECT_VAR(VAR, T1, W, N) = vset##Q##_lane_##T2##W(V,			\
+--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/binary_op.inc
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/binary_op.inc
+@@ -55,7 +55,22 @@ void FNNAME (INSN_NAME) (void)
+   /* Apply a binary operator named INSN_NAME.  */
+   TEST_MACRO_ALL_VARIANTS_1_5(TEST_BINARY_OP, INSN_NAME);
+ 
+-  CHECK_RESULTS (TEST_MSG, "");
++  CHECK(TEST_MSG, int, 8, 8, PRIx8, expected, "");
++  CHECK(TEST_MSG, int, 16, 4, PRIx16, expected, "");
++  CHECK(TEST_MSG, int, 32, 2, PRIx32, expected, "");
++  CHECK(TEST_MSG, int, 64, 1, PRIx64, expected, "");
++  CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected, "");
++  CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected, "");
++  CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected, "");
++  CHECK(TEST_MSG, uint, 64, 1, PRIx64, expected, "");
++  CHECK(TEST_MSG, int, 8, 16, PRIx8, expected, "");
++  CHECK(TEST_MSG, int, 16, 8, PRIx16, expected, "");
++  CHECK(TEST_MSG, int, 32, 4, PRIx32, expected, "");
++  CHECK(TEST_MSG, int, 64, 2, PRIx64, expected, "");
++  CHECK(TEST_MSG, uint, 8, 16, PRIx8, expected, "");
++  CHECK(TEST_MSG, uint, 16, 8, PRIx16, expected, "");
++  CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected, "");
++  CHECK(TEST_MSG, uint, 64, 2, PRIx64, expected, "");
+ 
+ #ifdef EXTRA_TESTS
+   EXTRA_TESTS();
+--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/binary_sat_op.inc
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/binary_sat_op.inc
+@@ -76,7 +76,22 @@ void FNNAME (INSN_NAME) (void)
+   TEST_BINARY_SAT_OP(INSN_NAME, q, uint, u, 32, 4, expected_cumulative_sat, "");
+   TEST_BINARY_SAT_OP(INSN_NAME, q, uint, u, 64, 2, expected_cumulative_sat, "");
+ 
+-  CHECK_RESULTS (TEST_MSG, "");
++  CHECK(TEST_MSG, int, 8, 8, PRIx8, expected, "");
++  CHECK(TEST_MSG, int, 16, 4, PRIx16, expected, "");
++  CHECK(TEST_MSG, int, 32, 2, PRIx32, expected, "");
++  CHECK(TEST_MSG, int, 64, 1, PRIx64, expected, "");
++  CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected, "");
++  CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected, "");
++  CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected, "");
++  CHECK(TEST_MSG, uint, 64, 1, PRIx64, expected, "");
++  CHECK(TEST_MSG, int, 8, 16, PRIx8, expected, "");
++  CHECK(TEST_MSG, int, 16, 8, PRIx16, expected, "");
++  CHECK(TEST_MSG, int, 32, 4, PRIx32, expected, "");
++  CHECK(TEST_MSG, int, 64, 2, PRIx64, expected, "");
++  CHECK(TEST_MSG, uint, 8, 16, PRIx8, expected, "");
++  CHECK(TEST_MSG, uint, 16, 8, PRIx16, expected, "");
++  CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected, "");
++  CHECK(TEST_MSG, uint, 64, 2, PRIx64, expected, "");
+ 
+ #ifdef EXTRA_TESTS
+   EXTRA_TESTS();
+--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/compute-ref-data.h
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/compute-ref-data.h
+@@ -118,6 +118,10 @@ VECT_VAR_DECL_INIT(buffer, uint, 32, 2);
+ PAD(buffer_pad, uint, 32, 2);
+ VECT_VAR_DECL_INIT(buffer, uint, 64, 1);
+ PAD(buffer_pad, uint, 64, 1);
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++VECT_VAR_DECL_INIT(buffer, float, 16, 4);
++PAD(buffer_pad, float, 16, 4);
++#endif
+ VECT_VAR_DECL_INIT(buffer, float, 32, 2);
+ PAD(buffer_pad, float, 32, 2);
+ VECT_VAR_DECL_INIT(buffer, int, 8, 16);
+@@ -140,6 +144,10 @@ VECT_VAR_DECL_INIT(buffer, poly, 8, 16);
+ PAD(buffer_pad, poly, 8, 16);
+ VECT_VAR_DECL_INIT(buffer, poly, 16, 8);
+ PAD(buffer_pad, poly, 16, 8);
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++VECT_VAR_DECL_INIT(buffer, float, 16, 8);
++PAD(buffer_pad, float, 16, 8);
++#endif
+ VECT_VAR_DECL_INIT(buffer, float, 32, 4);
+ PAD(buffer_pad, float, 32, 4);
+ #ifdef __aarch64__
+@@ -170,6 +178,10 @@ VECT_VAR_DECL_INIT(buffer_dup, poly, 8, 8);
+ VECT_VAR_DECL(buffer_dup_pad, poly, 8, 8);
+ VECT_VAR_DECL_INIT(buffer_dup, poly, 16, 4);
+ VECT_VAR_DECL(buffer_dup_pad, poly, 16, 4);
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++VECT_VAR_DECL_INIT4(buffer_dup, float, 16, 4);
++VECT_VAR_DECL(buffer_dup_pad, float, 16, 4);
++#endif
+ VECT_VAR_DECL_INIT4(buffer_dup, float, 32, 2);
+ VECT_VAR_DECL(buffer_dup_pad, float, 32, 2);
+ 
+@@ -193,5 +205,9 @@ VECT_VAR_DECL_INIT(buffer_dup, poly, 8, 16);
+ VECT_VAR_DECL(buffer_dup_pad, poly, 8, 16);
+ VECT_VAR_DECL_INIT(buffer_dup, poly, 16, 8);
+ VECT_VAR_DECL(buffer_dup_pad, poly, 16, 8);
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++VECT_VAR_DECL_INIT(buffer_dup, float, 16, 8);
++VECT_VAR_DECL(buffer_dup_pad, float, 16, 8);
++#endif
+ VECT_VAR_DECL_INIT(buffer_dup, float, 32, 4);
+ VECT_VAR_DECL(buffer_dup_pad, float, 32, 4);
+--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/unary_op.inc
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/unary_op.inc
+@@ -57,7 +57,12 @@ void FNNAME (INSN_NAME) (void)
+   TEST_UNARY_OP(INSN_NAME, q, int, s, 16, 8);
+   TEST_UNARY_OP(INSN_NAME, q, int, s, 32, 4);
+ 
+-  CHECK_RESULTS (TEST_MSG, "");
++  CHECK(TEST_MSG, int, 8, 8, PRIx8, expected, "");
++  CHECK(TEST_MSG, int, 16, 4, PRIx16, expected, "");
++  CHECK(TEST_MSG, int, 32, 2, PRIx32, expected, "");
++  CHECK(TEST_MSG, int, 8, 16, PRIx8, expected, "");
++  CHECK(TEST_MSG, int, 16, 8, PRIx16, expected, "");
++  CHECK(TEST_MSG, int, 32, 4, PRIx32, expected, "");
+ 
+ #ifdef EXTRA_TESTS
+   EXTRA_TESTS();
+--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vXXXl.inc
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vXXXl.inc
+@@ -60,7 +60,12 @@ void FNNAME (INSN_NAME) (void)
+   TEST_VADDL(INSN_NAME, uint, u, 16, 32, 4);
+   TEST_VADDL(INSN_NAME, uint, u, 32, 64, 2);
+ 
+-  CHECK_RESULTS (TEST_MSG, "");
++  CHECK(TEST_MSG, int, 16, 8, PRIx16, expected, "");
++  CHECK(TEST_MSG, int, 32, 4, PRIx32, expected, "");
++  CHECK(TEST_MSG, int, 64, 2, PRIx64, expected, "");
++  CHECK(TEST_MSG, uint, 16, 8, PRIx16, expected, "");
++  CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected, "");
++  CHECK(TEST_MSG, uint, 64, 2, PRIx64, expected, "");
+ }
+ 
+ int main (void)
+--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vXXXw.inc
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vXXXw.inc
+@@ -60,7 +60,12 @@ void FNNAME (INSN_NAME) (void)
+   TEST_VADDW(INSN_NAME, uint, u, 16, 32, 4);
+   TEST_VADDW(INSN_NAME, uint, u, 32, 64, 2);
+ 
+-  CHECK_RESULTS (TEST_MSG, "");
++  CHECK(TEST_MSG, int, 16, 8, PRIx16, expected, "");
++  CHECK(TEST_MSG, int, 32, 4, PRIx32, expected, "");
++  CHECK(TEST_MSG, int, 64, 2, PRIx64, expected, "");
++  CHECK(TEST_MSG, uint, 16, 8, PRIx16, expected, "");
++  CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected, "");
++  CHECK(TEST_MSG, uint, 64, 2, PRIx64, expected, "");
+ }
+ 
+ int main (void)
+--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vaba.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vaba.c
+@@ -7,16 +7,10 @@ VECT_VAR_DECL(expected,int,8,8) [] = { 0xf6, 0xf7, 0xf8, 0xf9,
+ 				       0xfa, 0xfb, 0xfc, 0xfd };
+ VECT_VAR_DECL(expected,int,16,4) [] = { 0x16, 0x17, 0x18, 0x19 };
+ VECT_VAR_DECL(expected,int,32,2) [] = { 0x20, 0x21 };
+-VECT_VAR_DECL(expected,int,64,1) [] = { 0x3333333333333333 };
+ VECT_VAR_DECL(expected,uint,8,8) [] = { 0x53, 0x54, 0x55, 0x56,
+ 					0x57, 0x58, 0x59, 0x5a };
+ VECT_VAR_DECL(expected,uint,16,4) [] = { 0x907, 0x908, 0x909, 0x90a };
+ VECT_VAR_DECL(expected,uint,32,2) [] = { 0xffffffe7, 0xffffffe8 };
+-VECT_VAR_DECL(expected,uint,64,1) [] = { 0x3333333333333333 };
+-VECT_VAR_DECL(expected,poly,8,8) [] = { 0x33, 0x33, 0x33, 0x33,
+-					0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,poly,16,4) [] = { 0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,hfloat,32,2) [] = { 0x33333333, 0x33333333 };
+ VECT_VAR_DECL(expected,int,8,16) [] = { 0x5e, 0x5f, 0x60, 0x61,
+ 					0x62, 0x63, 0x64, 0x65,
+ 					0x66, 0x67, 0x68, 0x69,
+@@ -24,8 +18,6 @@ VECT_VAR_DECL(expected,int,8,16) [] = { 0x5e, 0x5f, 0x60, 0x61,
+ VECT_VAR_DECL(expected,int,16,8) [] = { 0xb9c, 0xb9d, 0xb9e, 0xb9f,
+ 					0xba0, 0xba1, 0xba2, 0xba3 };
+ VECT_VAR_DECL(expected,int,32,4) [] = { 0x26e0, 0x26e1, 0x26e2, 0x26e3 };
+-VECT_VAR_DECL(expected,int,64,2) [] = { 0x3333333333333333,
+-					0x3333333333333333 };
+ VECT_VAR_DECL(expected,uint,8,16) [] = { 0xf8, 0xf9, 0xfa, 0xfb,
+ 					 0xfc, 0xfd, 0xfe, 0xff,
+ 					 0x0, 0x1, 0x2, 0x3,
+@@ -33,16 +25,6 @@ VECT_VAR_DECL(expected,uint,8,16) [] = { 0xf8, 0xf9, 0xfa, 0xfb,
+ VECT_VAR_DECL(expected,uint,16,8) [] = { 0xfff9, 0xfffa, 0xfffb, 0xfffc,
+ 					 0xfffd, 0xfffe, 0xffff, 0x0 };
+ VECT_VAR_DECL(expected,uint,32,4) [] = { 0xc, 0xd, 0xe, 0xf };
+-VECT_VAR_DECL(expected,uint,64,2) [] = { 0x3333333333333333,
+-					 0x3333333333333333 };
+-VECT_VAR_DECL(expected,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,poly,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333,
+-					 0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,hfloat,32,4) [] = { 0x33333333, 0x33333333,
+-					   0x33333333, 0x33333333 };
+ 
+ #define TEST_MSG "VABA/VABAQ"
+ void exec_vaba (void)
+@@ -132,7 +114,18 @@ void exec_vaba (void)
+   TEST_VABA(q, uint, u, 16, 8);
+   TEST_VABA(q, uint, u, 32, 4);
+ 
+-  CHECK_RESULTS (TEST_MSG, "");
++  CHECK(TEST_MSG, int, 8, 8, PRIx8, expected, "");
++  CHECK(TEST_MSG, int, 16, 4, PRIx16, expected, "");
++  CHECK(TEST_MSG, int, 32, 2, PRIx32, expected, "");
++  CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected, "");
++  CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected, "");
++  CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected, "");
++  CHECK(TEST_MSG, int, 8, 16, PRIx8, expected, "");
++  CHECK(TEST_MSG, int, 16, 8, PRIx16, expected, "");
++  CHECK(TEST_MSG, int, 32, 4, PRIx32, expected, "");
++  CHECK(TEST_MSG, uint, 8, 16, PRIx8, expected, "");
++  CHECK(TEST_MSG, uint, 16, 8, PRIx16, expected, "");
++  CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected, "");
+ }
+ 
+ int main (void)
+--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vabal.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vabal.c
+@@ -3,45 +3,15 @@
+ #include "compute-ref-data.h"
+ 
+ /* Expected results.  */
+-VECT_VAR_DECL(expected,int,8,8) [] = { 0x33, 0x33, 0x33, 0x33,
+-				       0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,int,16,4) [] = { 0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,int,32,2) [] = { 0x33333333, 0x33333333 };
+-VECT_VAR_DECL(expected,int,64,1) [] = { 0x3333333333333333 };
+-VECT_VAR_DECL(expected,uint,8,8) [] = { 0x33, 0x33, 0x33, 0x33,
+-					0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,uint,16,4) [] = { 0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,uint,32,2) [] = { 0x33333333, 0x33333333 };
+-VECT_VAR_DECL(expected,uint,64,1) [] = { 0x3333333333333333 };
+-VECT_VAR_DECL(expected,poly,8,8) [] = { 0x33, 0x33, 0x33, 0x33,
+-					0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,poly,16,4) [] = { 0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,hfloat,32,2) [] = { 0x33333333, 0x33333333 };
+-VECT_VAR_DECL(expected,int,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-					0x33, 0x33, 0x33, 0x33,
+-					0x33, 0x33, 0x33, 0x33,
+-					0x33, 0x33, 0x33, 0x33 };
+ VECT_VAR_DECL(expected,int,16,8) [] = { 0xfff6, 0xfff7, 0xfff8, 0xfff9,
+ 					0xfffa, 0xfffb, 0xfffc, 0xfffd };
+ VECT_VAR_DECL(expected,int,32,4) [] = { 0x16, 0x17, 0x18, 0x19 };
+ VECT_VAR_DECL(expected,int,64,2) [] = { 0x20, 0x21 };
+-VECT_VAR_DECL(expected,uint,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33 };
+ VECT_VAR_DECL(expected,uint,16,8) [] = { 0x53, 0x54, 0x55, 0x56,
+ 					 0x57, 0x58, 0x59, 0x5a };
+ VECT_VAR_DECL(expected,uint,32,4) [] = { 0x907, 0x908, 0x909, 0x90a };
+ VECT_VAR_DECL(expected,uint,64,2) [] = { 0xffffffe7,
+ 					 0xffffffe8 };
+-VECT_VAR_DECL(expected,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,poly,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333,
+-					 0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,hfloat,32,4) [] = { 0x33333333, 0x33333333,
+-					   0x33333333, 0x33333333 };
+ 
+ /* Expected results for cases with input values chosen to test
+    possible intermediate overflow.  */
+@@ -121,7 +91,12 @@ void exec_vabal (void)
+   TEST_VABAL(uint, u, 16, 32, 4);
+   TEST_VABAL(uint, u, 32, 64, 2);
+ 
+-  CHECK_RESULTS (TEST_MSG, "");
++  CHECK(TEST_MSG, int, 16, 8, PRIx16, expected, "");
++  CHECK(TEST_MSG, int, 32, 4, PRIx32, expected, "");
++  CHECK(TEST_MSG, int, 64, 2, PRIx64, expected, "");
++  CHECK(TEST_MSG, uint, 16, 8, PRIx16, expected, "");
++  CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected, "");
++  CHECK(TEST_MSG, uint, 64, 2, PRIx64, expected, "");
+ 
+   /* Use values that could lead to overflow intermediate
+    * calculations.  */
+--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vabd.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vabd.c
+@@ -8,15 +8,10 @@ VECT_VAR_DECL(expected,int,8,8) [] = { 0x11, 0x10, 0xf, 0xe,
+ 				       0xd, 0xc, 0xb, 0xa };
+ VECT_VAR_DECL(expected,int,16,4) [] = { 0x3, 0x2, 0x1, 0x0 };
+ VECT_VAR_DECL(expected,int,32,2) [] = { 0x18, 0x17 };
+-VECT_VAR_DECL(expected,int,64,1) [] = { 0x3333333333333333 };
+ VECT_VAR_DECL(expected,uint,8,8) [] = { 0xef, 0xf0, 0xf1, 0xf2,
+ 					0xf3, 0xf4, 0xf5, 0xf6 };
+ VECT_VAR_DECL(expected,uint,16,4) [] = { 0xffe3, 0xffe4, 0xffe5, 0xffe6 };
+ VECT_VAR_DECL(expected,uint,32,2) [] = { 0xffffffe8, 0xffffffe9 };
+-VECT_VAR_DECL(expected,uint,64,1) [] = { 0x3333333333333333 };
+-VECT_VAR_DECL(expected,poly,8,8) [] = { 0x33, 0x33, 0x33, 0x33,
+-					0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,poly,16,4) [] = { 0x3333, 0x3333, 0x3333, 0x3333 };
+ VECT_VAR_DECL(expected,hfloat,32,2) [] = { 0x41c26666, 0x41ba6666 };
+ VECT_VAR_DECL(expected,int,8,16) [] = { 0x1a, 0x19, 0x18, 0x17,
+ 					0x16, 0x15, 0x14, 0x13,
+@@ -25,8 +20,6 @@ VECT_VAR_DECL(expected,int,8,16) [] = { 0x1a, 0x19, 0x18, 0x17,
+ VECT_VAR_DECL(expected,int,16,8) [] = { 0x4, 0x3, 0x2, 0x1,
+ 					0x0, 0x1, 0x2, 0x3 };
+ VECT_VAR_DECL(expected,int,32,4) [] = { 0x30, 0x2f, 0x2e, 0x2d };
+-VECT_VAR_DECL(expected,int,64,2) [] = { 0x3333333333333333,
+-					0x3333333333333333 };
+ VECT_VAR_DECL(expected,uint,8,16) [] = { 0xe6, 0xe7, 0xe8, 0xe9,
+ 					 0xea, 0xeb, 0xec, 0xed,
+ 					 0xee, 0xef, 0xf0, 0xf1,
+@@ -35,14 +28,6 @@ VECT_VAR_DECL(expected,uint,16,8) [] = { 0xffe4, 0xffe5, 0xffe6, 0xffe7,
+ 					 0xffe8, 0xffe9, 0xffea, 0xffeb };
+ VECT_VAR_DECL(expected,uint,32,4) [] = { 0xffffffd0, 0xffffffd1,
+ 					 0xffffffd2, 0xffffffd3 };
+-VECT_VAR_DECL(expected,uint,64,2) [] = { 0x3333333333333333,
+-					 0x3333333333333333 };
+-VECT_VAR_DECL(expected,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,poly,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333,
+-					 0x3333, 0x3333, 0x3333, 0x3333 };
+ VECT_VAR_DECL(expected,hfloat,32,4) [] = { 0x42407ae1, 0x423c7ae1,
+ 					   0x42387ae1, 0x42347ae1 };
+ 
+@@ -130,7 +115,20 @@ void exec_vabd (void)
+   TEST_VABD(q, uint, u, 32, 4);
+   TEST_VABD(q, float, f, 32, 4);
+ 
+-  CHECK_RESULTS (TEST_MSG, "");
++  CHECK(TEST_MSG, int, 8, 8, PRIx8, expected, "");
++  CHECK(TEST_MSG, int, 16, 4, PRIx16, expected, "");
++  CHECK(TEST_MSG, int, 32, 2, PRIx32, expected, "");
++  CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected, "");
++  CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected, "");
++  CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected, "");
++  CHECK_FP(TEST_MSG, float, 32, 2, PRIx32, expected, "");
++  CHECK(TEST_MSG, int, 8, 16, PRIx8, expected, "");
++  CHECK(TEST_MSG, int, 16, 8, PRIx16, expected, "");
++  CHECK(TEST_MSG, int, 32, 4, PRIx32, expected, "");
++  CHECK(TEST_MSG, uint, 8, 16, PRIx8, expected, "");
++  CHECK(TEST_MSG, uint, 16, 8, PRIx16, expected, "");
++  CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected, "");
++  CHECK_FP(TEST_MSG, float, 32, 4, PRIx32, expected, "");
+ 
+ 
+   /* Extra FP tests with special values (-0.0, ....) */
+--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vabdl.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vabdl.c
+@@ -3,45 +3,15 @@
+ #include "compute-ref-data.h"
+ 
+ /* Expected results.  */
+-VECT_VAR_DECL(expected,int,8,8) [] = { 0x33, 0x33, 0x33, 0x33,
+-				       0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,int,16,4) [] = { 0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,int,32,2) [] = { 0x33333333, 0x33333333 };
+-VECT_VAR_DECL(expected,int,64,1) [] = { 0x3333333333333333 };
+-VECT_VAR_DECL(expected,uint,8,8) [] = { 0x33, 0x33, 0x33, 0x33,
+-					0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,uint,16,4) [] = { 0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,uint,32,2) [] = { 0x33333333, 0x33333333 };
+-VECT_VAR_DECL(expected,uint,64,1) [] = { 0x3333333333333333 };
+-VECT_VAR_DECL(expected,poly,8,8) [] = { 0x33, 0x33, 0x33, 0x33,
+-					0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,poly,16,4) [] = { 0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,hfloat,32,2) [] = { 0x33333333, 0x33333333 };
+-VECT_VAR_DECL(expected,int,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-					0x33, 0x33, 0x33, 0x33,
+-					0x33, 0x33, 0x33, 0x33,
+-					0x33, 0x33, 0x33, 0x33 };
+ VECT_VAR_DECL(expected,int,16,8) [] = { 0x11, 0x10, 0xf, 0xe,
+ 					0xd, 0xc, 0xb, 0xa };
+ VECT_VAR_DECL(expected,int,32,4) [] = { 0x3, 0x2, 0x1, 0x0 };
+ VECT_VAR_DECL(expected,int,64,2) [] = { 0x18, 0x17 };
+-VECT_VAR_DECL(expected,uint,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33 };
+ VECT_VAR_DECL(expected,uint,16,8) [] = { 0xef, 0xf0, 0xf1, 0xf2,
+ 					 0xf3, 0xf4, 0xf5, 0xf6 };
+ VECT_VAR_DECL(expected,uint,32,4) [] = { 0xffe3, 0xffe4, 0xffe5, 0xffe6 };
+ VECT_VAR_DECL(expected,uint,64,2) [] = { 0xffffffe8,
+ 					 0xffffffe9 };
+-VECT_VAR_DECL(expected,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,poly,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333,
+-					 0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,hfloat,32,4) [] = { 0x33333333, 0x33333333,
+-					   0x33333333, 0x33333333 };
+ 
+ #define TEST_MSG "VABDL"
+ void exec_vabdl (void)
+@@ -99,7 +69,12 @@ void exec_vabdl (void)
+   TEST_VABDL(uint, u, 16, 32, 4);
+   TEST_VABDL(uint, u, 32, 64, 2);
+ 
+-  CHECK_RESULTS (TEST_MSG, "");
++  CHECK(TEST_MSG, int, 16, 8, PRIx16, expected, "");
++  CHECK(TEST_MSG, int, 32, 4, PRIx32, expected, "");
++  CHECK(TEST_MSG, int, 64, 2, PRIx64, expected, "");
++  CHECK(TEST_MSG, uint, 16, 8, PRIx16, expected, "");
++  CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected, "");
++  CHECK(TEST_MSG, uint, 64, 2, PRIx64, expected, "");
+ }
+ 
+ int main (void)
+--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vabs.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vabs.c
+@@ -12,41 +12,11 @@ VECT_VAR_DECL(expected,int,8,8) [] = { 0x10, 0xf, 0xe, 0xd,
+ 				       0xc, 0xb, 0xa, 0x9 };
+ VECT_VAR_DECL(expected,int,16,4) [] = { 0x10, 0xf, 0xe, 0xd };
+ VECT_VAR_DECL(expected,int,32,2) [] = { 0x10, 0xf };
+-VECT_VAR_DECL(expected,int,64,1) [] = { 0x3333333333333333 };
+-VECT_VAR_DECL(expected,uint,8,8) [] = { 0x33, 0x33, 0x33, 0x33,
+-					0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,uint,16,4) [] = { 0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,uint,32,2) [] = { 0x33333333, 0x33333333 };
+-VECT_VAR_DECL(expected,uint,64,1) [] = { 0x3333333333333333 };
+-VECT_VAR_DECL(expected,poly,8,8) [] = { 0x33, 0x33, 0x33, 0x33,
+-					0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,poly,16,4) [] = { 0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,hfloat,32,2) [] = { 0x33333333, 0x33333333 };
+ VECT_VAR_DECL(expected,int,8,16) [] = { 0x10, 0xf, 0xe, 0xd, 0xc, 0xb, 0xa, 0x9,
+ 					0x8, 0x7, 0x6, 0x5, 0x4, 0x3, 0x2, 0x1 };
+ VECT_VAR_DECL(expected,int,16,8) [] = { 0x10, 0xf, 0xe, 0xd,
+ 					0xc, 0xb, 0xa, 0x9 };
+ VECT_VAR_DECL(expected,int,32,4) [] = { 0x10, 0xf, 0xe, 0xd };
+-VECT_VAR_DECL(expected,int,64,2) [] = { 0x3333333333333333,
+-					0x3333333333333333 };
+-VECT_VAR_DECL(expected,uint,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,uint,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333,
+-					 0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,uint,32,4) [] = { 0x33333333, 0x33333333,
+-					 0x33333333, 0x33333333 };
+-VECT_VAR_DECL(expected,uint,64,2) [] = { 0x3333333333333333,
+-					 0x3333333333333333 };
+-VECT_VAR_DECL(expected,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,poly,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333,
+-					 0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,hfloat,32,4) [] = { 0x33333333, 0x33333333,
+-					  0x33333333, 0x33333333 };
+ 
+ /* Expected results for float32 variants. Needs to be separated since
+    the generic test function does not test floating-point
+--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vadd.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vadd.c
+@@ -18,10 +18,6 @@ VECT_VAR_DECL(expected,uint,8,8) [] = { 0x4, 0x5, 0x6, 0x7,
+ VECT_VAR_DECL(expected,uint,16,4) [] = { 0xe, 0xf, 0x10, 0x11 };
+ VECT_VAR_DECL(expected,uint,32,2) [] = { 0x18, 0x19 };
+ VECT_VAR_DECL(expected,uint,64,1) [] = { 0xfffffffffffffff2 };
+-VECT_VAR_DECL(expected,poly,8,8) [] = { 0x33, 0x33, 0x33, 0x33,
+-					0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,poly,16,4) [] = { 0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,hfloat,32,2) [] = { 0x33333333, 0x33333333 };
+ VECT_VAR_DECL(expected,int,8,16) [] = { 0xe6, 0xe7, 0xe8, 0xe9,
+ 					0xea, 0xeb, 0xec, 0xed,
+ 					0xee, 0xef, 0xf0, 0xf1,
+@@ -40,14 +36,6 @@ VECT_VAR_DECL(expected,uint,16,8) [] = { 0xfff3, 0xfff4, 0xfff5, 0xfff6,
+ VECT_VAR_DECL(expected,uint,32,4) [] = { 0x27, 0x28, 0x29, 0x2a };
+ VECT_VAR_DECL(expected,uint,64,2) [] = { 0xfffffffffffffff3,
+ 					 0xfffffffffffffff4 };
+-VECT_VAR_DECL(expected,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,poly,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333,
+-					 0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,hfloat,32,4) [] = { 0x33333333, 0x33333333,
+-					   0x33333333, 0x33333333 };
+ 
+ /* Expected results for float32 variants. Needs to be separated since
+    the generic test function does not test floating-point
+--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vaddl.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vaddl.c
+@@ -6,46 +6,16 @@
+ #define TEST_MSG "VADDL"
+ 
+ /* Expected results.  */
+-VECT_VAR_DECL(expected,int,8,8) [] = { 0x33, 0x33, 0x33, 0x33,
+-				       0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,int,16,4) [] = { 0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,int,32,2) [] = { 0x33333333, 0x33333333 };
+-VECT_VAR_DECL(expected,int,64,1) [] = { 0x3333333333333333 };
+-VECT_VAR_DECL(expected,uint,8,8) [] = { 0x33, 0x33, 0x33, 0x33,
+-					0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,uint,16,4) [] = { 0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,uint,32,2) [] = { 0x33333333, 0x33333333 };
+-VECT_VAR_DECL(expected,uint,64,1) [] = { 0x3333333333333333 };
+-VECT_VAR_DECL(expected,poly,8,8) [] = { 0x33, 0x33, 0x33, 0x33,
+-					0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,poly,16,4) [] = { 0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,hfloat,32,2) [] = { 0x33333333, 0x33333333 };
+-VECT_VAR_DECL(expected,int,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-					0x33, 0x33, 0x33, 0x33,
+-					0x33, 0x33, 0x33, 0x33,
+-					0x33, 0x33, 0x33, 0x33 };
+ VECT_VAR_DECL(expected,int,16,8) [] = {  0xffe3, 0xffe4, 0xffe5, 0xffe6,
+ 					 0xffe7, 0xffe8, 0xffe9, 0xffea };
+ VECT_VAR_DECL(expected,int,32,4) [] = { 0xffffffe2, 0xffffffe3,
+ 					0xffffffe4, 0xffffffe5 };
+ VECT_VAR_DECL(expected,int,64,2) [] = { 0xffffffffffffffe0,
+ 					0xffffffffffffffe1 };
+-VECT_VAR_DECL(expected,uint,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33 };
+ VECT_VAR_DECL(expected,uint,16,8) [] = { 0x1e3, 0x1e4, 0x1e5, 0x1e6,
+ 					 0x1e7, 0x1e8, 0x1e9, 0x1ea };
+ VECT_VAR_DECL(expected,uint,32,4) [] = { 0x1ffe1, 0x1ffe2,
+ 					 0x1ffe3, 0x1ffe4 };
+ VECT_VAR_DECL(expected,uint,64,2) [] = { 0x1ffffffe0, 0x1ffffffe1 };
+-VECT_VAR_DECL(expected,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,poly,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333,
+-					 0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,hfloat,32,4) [] = { 0x33333333, 0x33333333,
+-					   0x33333333, 0x33333333 };
+ 
+ #include "vXXXl.inc"
+--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vaddw.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vaddw.c
+@@ -6,46 +6,16 @@
+ #define TEST_MSG "VADDW"
+ 
+ /* Expected results.  */
+-VECT_VAR_DECL(expected,int,8,8) [] = { 0x33, 0x33, 0x33, 0x33,
+-				       0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,int,16,4) [] = { 0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,int,32,2) [] = { 0x33333333, 0x33333333 };
+-VECT_VAR_DECL(expected,int,64,1) [] = { 0x3333333333333333 };
+-VECT_VAR_DECL(expected,uint,8,8) [] = { 0x33, 0x33, 0x33, 0x33,
+-					0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,uint,16,4) [] = { 0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,uint,32,2) [] = { 0x33333333, 0x33333333 };
+-VECT_VAR_DECL(expected,uint,64,1) [] = { 0x3333333333333333 };
+-VECT_VAR_DECL(expected,poly,8,8) [] = { 0x33, 0x33, 0x33, 0x33,
+-					0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,poly,16,4) [] = { 0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,hfloat,32,2) [] = { 0x33333333, 0x33333333 };
+-VECT_VAR_DECL(expected,int,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-					0x33, 0x33, 0x33, 0x33,
+-					0x33, 0x33, 0x33, 0x33,
+-					0x33, 0x33, 0x33, 0x33 };
+ VECT_VAR_DECL(expected,int,16,8) [] = {  0xffe3, 0xffe4, 0xffe5, 0xffe6,
+ 					 0xffe7, 0xffe8, 0xffe9, 0xffea };
+ VECT_VAR_DECL(expected,int,32,4) [] = { 0xffffffe2, 0xffffffe3,
+ 					0xffffffe4, 0xffffffe5 };
+ VECT_VAR_DECL(expected,int,64,2) [] = { 0xffffffffffffffe0,
+ 					0xffffffffffffffe1 };
+-VECT_VAR_DECL(expected,uint,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33 };
+ VECT_VAR_DECL(expected,uint,16,8) [] = { 0xe3, 0xe4, 0xe5, 0xe6,
+ 					 0xe7, 0xe8, 0xe9, 0xea };
+ VECT_VAR_DECL(expected,uint,32,4) [] = { 0xffe1, 0xffe2,
+ 					 0xffe3, 0xffe4 };
+ VECT_VAR_DECL(expected,uint,64,2) [] = { 0xffffffe0, 0xffffffe1 };
+-VECT_VAR_DECL(expected,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,poly,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333,
+-					 0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,hfloat,32,4) [] = { 0x33333333, 0x33333333,
+-					   0x33333333, 0x33333333 };
+ 
+ #include "vXXXw.inc"
+--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vand.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vand.c
+@@ -14,10 +14,6 @@ VECT_VAR_DECL(expected,uint,8,8) [] = { 0x10, 0x10, 0x10, 0x10,
+ VECT_VAR_DECL(expected,uint,16,4) [] = { 0x10, 0x10, 0x12, 0x12 };
+ VECT_VAR_DECL(expected,uint,32,2) [] = { 0x20, 0x20 };
+ VECT_VAR_DECL(expected,uint,64,1) [] = { 0x0 };
+-VECT_VAR_DECL(expected,poly,8,8) [] = { 0x33, 0x33, 0x33, 0x33,
+-					0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,poly,16,4) [] = { 0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,hfloat,32,2) [] = { 0x33333333, 0x33333333 };
+ VECT_VAR_DECL(expected,int,8,16) [] = { 0xf0, 0xf0, 0xf2, 0xf2,
+ 					0xf4, 0xf4, 0xf6, 0xf6,
+ 					0xf0, 0xf0, 0xf2, 0xf2,
+@@ -35,11 +31,3 @@ VECT_VAR_DECL(expected,uint,16,8) [] = { 0x0, 0x1, 0x2, 0x3,
+ 					 0x0, 0x1, 0x2, 0x3 };
+ VECT_VAR_DECL(expected,uint,32,4) [] = { 0x30, 0x31, 0x32, 0x33 };
+ VECT_VAR_DECL(expected,uint,64,2) [] = { 0x0, 0x1 };
+-VECT_VAR_DECL(expected,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,poly,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333,
+-					 0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,hfloat,32,4) [] = { 0x33333333, 0x33333333,
+-					   0x33333333, 0x33333333 };
+--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vbic.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vbic.c
+@@ -14,10 +14,6 @@ VECT_VAR_DECL(expected,uint,8,8) [] = { 0xe0, 0xe1, 0xe2, 0xe3,
+ VECT_VAR_DECL(expected,uint,16,4) [] = { 0xffe0, 0xffe1, 0xffe0, 0xffe1 };
+ VECT_VAR_DECL(expected,uint,32,2) [] = { 0xffffffd0, 0xffffffd1 };
+ VECT_VAR_DECL(expected,uint,64,1) [] = { 0xfffffffffffffff0 };
+-VECT_VAR_DECL(expected,poly,8,8) [] = { 0x33, 0x33, 0x33, 0x33,
+-					0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,poly,16,4) [] = { 0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,hfloat,32,2) [] = { 0x33333333, 0x33333333 };
+ VECT_VAR_DECL(expected,int,8,16) [] = { 0x0, 0x1, 0x0, 0x1,
+ 					0x0, 0x1, 0x0, 0x1,
+ 					0x8, 0x9, 0x8, 0x9,
+@@ -36,11 +32,3 @@ VECT_VAR_DECL(expected,uint,32,4) [] = { 0xffffffc0, 0xffffffc0,
+ 					 0xffffffc0, 0xffffffc0 };
+ VECT_VAR_DECL(expected,uint,64,2) [] = { 0xfffffffffffffff0,
+ 					 0xfffffffffffffff0 };
+-VECT_VAR_DECL(expected,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,poly,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333,
+-					 0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,hfloat,32,4) [] = { 0x33333333, 0x33333333,
+-					   0x33333333, 0x33333333 };
+--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vbsl.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vbsl.c
+@@ -114,7 +114,7 @@ void exec_vbsl (void)
+   TEST_VBSL(uint, , float, f, 32, 2);
+   TEST_VBSL(uint, q, float, f, 32, 4);
+ 
+-  CHECK_RESULTS (TEST_MSG, "");
++  CHECK_RESULTS_NO_FP16 (TEST_MSG, "");
+ }
+ 
+ int main (void)
+--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcage.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcage.c
+@@ -4,48 +4,9 @@
+ #include "cmp_fp_op.inc"
+ 
+ /* Expected results.  */
+-VECT_VAR_DECL(expected,int,8,8) [] = { 0x33, 0x33, 0x33, 0x33,
+-				       0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,int,16,4) [] = { 0x333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,int,32,2) [] = { 0x33333333, 0x33333333 };
+-VECT_VAR_DECL(expected,int,64,1) [] = { 0x3333333333333333 };
+-VECT_VAR_DECL(expected,uint,8,8) [] = { 0x33, 0x33, 0x33, 0x33,
+-					0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,uint,16,4) [] = { 0x333, 0x3333, 0x3333, 0x3333 };
+ VECT_VAR_DECL(expected,uint,32,2) [] = { 0xffffffff, 0x0 };
+-VECT_VAR_DECL(expected,uint,64,1) [] = { 0x3333333333333333 };
+-VECT_VAR_DECL(expected,poly,8,8) [] = { 0x33, 0x33, 0x33, 0x33,
+-					0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,poly,16,4) [] = { 0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,hfloat,32,2) [] = { 0x33333333, 0x33333333 };
+-VECT_VAR_DECL(expected,int,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-					0x33, 0x33, 0x33, 0x33,
+-					0x33, 0x33, 0x33, 0x33,
+-					0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,int,16,8) [] = { 0x333, 0x3333, 0x3333, 0x3333,
+-					0x333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,int,32,4) [] = { 0x33333333, 0x33333333,
+-					0x33333333, 0x33333333 };
+-VECT_VAR_DECL(expected,int,64,2) [] = { 0x3333333333333333,
+-					0x3333333333333333 };
+-VECT_VAR_DECL(expected,uint,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,uint,16,8) [] = { 0x333, 0x3333, 0x3333, 0x3333,
+-					 0x333, 0x3333, 0x3333, 0x3333 };
+ VECT_VAR_DECL(expected,uint,32,4) [] = { 0xffffffff, 0xffffffff,
+ 					 0xffffffff, 0x0 };
+-VECT_VAR_DECL(expected,uint,64,2) [] = { 0x3333333333333333,
+-					 0x3333333333333333 };
+-VECT_VAR_DECL(expected,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,poly,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333,
+-					 0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,hfloat,32,4) [] = { 0x33333333, 0x33333333,
+-					   0x33333333, 0x33333333 };
+ 
+ VECT_VAR_DECL(expected2,uint,32,2) [] = { 0xffffffff, 0xffffffff };
+ VECT_VAR_DECL(expected2,uint,32,4) [] = { 0xffffffff, 0xffffffff,
+--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcagt.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcagt.c
+@@ -4,47 +4,9 @@
+ #include "cmp_fp_op.inc"
+ 
+ /* Expected results.  */
+-VECT_VAR_DECL(expected,int,8,8) [] = { 0x33, 0x33, 0x33, 0x33,
+-				       0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,int,16,4) [] = { 0x333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,int,32,2) [] = { 0x33333333, 0x33333333 };
+-VECT_VAR_DECL(expected,int,64,1) [] = { 0x3333333333333333 };
+-VECT_VAR_DECL(expected,uint,8,8) [] = { 0x33, 0x33, 0x33, 0x33,
+-					0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,uint,16,4) [] = { 0x333, 0x3333, 0x3333, 0x3333 };
+ VECT_VAR_DECL(expected,uint,32,2) [] = { 0x0, 0x0 };
+-VECT_VAR_DECL(expected,uint,64,1) [] = { 0x3333333333333333 };
+-VECT_VAR_DECL(expected,poly,8,8) [] = { 0x33, 0x33, 0x33, 0x33,
+-					0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,poly,16,4) [] = { 0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,hfloat,32,2) [] = { 0x33333333, 0x33333333 };
+-VECT_VAR_DECL(expected,int,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-					0x33, 0x33, 0x33, 0x33,
+-					0x33, 0x33, 0x33, 0x33,
+-					0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,int,16,8) [] = { 0x333, 0x3333, 0x3333, 0x3333,
+-					0x333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,int,32,4) [] = { 0xffffffff, 0xffffffff, 0x0, 0x0 };
+-VECT_VAR_DECL(expected,int,64,2) [] = { 0x3333333333333333,
+-					0x3333333333333333 };
+-VECT_VAR_DECL(expected,uint,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,uint,16,8) [] = { 0x333, 0x3333, 0x3333, 0x3333,
+-					 0x333, 0x3333, 0x3333, 0x3333 };
+ VECT_VAR_DECL(expected,uint,32,4) [] = { 0xffffffff, 0xffffffff,
+ 					 0x0, 0x0 };
+-VECT_VAR_DECL(expected,uint,64,2) [] = { 0x3333333333333333,
+-					 0x3333333333333333 };
+-VECT_VAR_DECL(expected,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,poly,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333,
+-					 0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,hfloat,32,4) [] = { 0x33333333, 0x33333333,
+-					   0x33333333, 0x33333333 };
+ 
+ VECT_VAR_DECL(expected2,uint,32,2) [] = { 0xffffffff, 0xffffffff };
+ VECT_VAR_DECL(expected2,uint,32,4) [] = { 0xffffffff, 0xffffffff,
+--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcale.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcale.c
+@@ -4,46 +4,8 @@
+ #include "cmp_fp_op.inc"
+ 
+ /* Expected results.  */
+-VECT_VAR_DECL(expected,int,8,8) [] = { 0x33, 0x33, 0x33, 0x33,
+-				       0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,int,16,4) [] = { 0x333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,int,32,2) [] = { 0x33333333, 0x33333333 };
+-VECT_VAR_DECL(expected,int,64,1) [] = { 0x3333333333333333 };
+-VECT_VAR_DECL(expected,uint,8,8) [] = { 0x33, 0x33, 0x33, 0x33,
+-					0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,uint,16,4) [] = { 0x333, 0x3333, 0x3333, 0x3333 };
+ VECT_VAR_DECL(expected,uint,32,2) [] = { 0xffffffff, 0xffffffff };
+-VECT_VAR_DECL(expected,uint,64,1) [] = { 0x3333333333333333 };
+-VECT_VAR_DECL(expected,poly,8,8) [] = { 0x33, 0x33, 0x33, 0x33,
+-					0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,poly,16,4) [] = { 0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,hfloat,32,2) [] = { 0x33333333, 0x33333333 };
+-VECT_VAR_DECL(expected,int,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-					0x33, 0x33, 0x33, 0x33,
+-					0x33, 0x33, 0x33, 0x33,
+-					0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,int,16,8) [] = { 0x333, 0x3333, 0x3333, 0x3333,
+-					0x333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,int,32,4) [] = { 0xffffffff, 0xffffffff, 0x0, 0x0 };
+-VECT_VAR_DECL(expected,int,64,2) [] = { 0x3333333333333333,
+-					0x3333333333333333 };
+-VECT_VAR_DECL(expected,uint,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,uint,16,8) [] = { 0x333, 0x3333, 0x3333, 0x3333,
+-					 0x333, 0x3333, 0x3333, 0x3333 };
+ VECT_VAR_DECL(expected,uint,32,4) [] = { 0x0, 0x0, 0xffffffff, 0xffffffff };
+-VECT_VAR_DECL(expected,uint,64,2) [] = { 0x3333333333333333,
+-					 0x3333333333333333 };
+-VECT_VAR_DECL(expected,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,poly,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333,
+-					 0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,hfloat,32,4) [] = { 0x33333333, 0x33333333,
+-					   0x33333333, 0x33333333 };
+ 
+ VECT_VAR_DECL(expected2,uint,32,2) [] = { 0x0, 0x0 };
+ VECT_VAR_DECL(expected2,uint,32,4) [] = { 0x0, 0x0, 0x0, 0x0 };
+--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcalt.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcalt.c
+@@ -4,46 +4,8 @@
+ #include "cmp_fp_op.inc"
+ 
+ /* Expected results.  */
+-VECT_VAR_DECL(expected,int,8,8) [] = { 0x33, 0x33, 0x33, 0x33,
+-				       0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,int,16,4) [] = { 0x333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,int,32,2) [] = { 0x33333333, 0x33333333 };
+-VECT_VAR_DECL(expected,int,64,1) [] = { 0x3333333333333333 };
+-VECT_VAR_DECL(expected,uint,8,8) [] = { 0x33, 0x33, 0x33, 0x33,
+-					0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,uint,16,4) [] = { 0x333, 0x3333, 0x3333, 0x3333 };
+ VECT_VAR_DECL(expected,uint,32,2) [] = { 0x0, 0xffffffff };
+-VECT_VAR_DECL(expected,uint,64,1) [] = { 0x3333333333333333 };
+-VECT_VAR_DECL(expected,poly,8,8) [] = { 0x33, 0x33, 0x33, 0x33,
+-					0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,poly,16,4) [] = { 0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,hfloat,32,2) [] = { 0x33333333, 0x33333333 };
+-VECT_VAR_DECL(expected,int,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-					0x33, 0x33, 0x33, 0x33,
+-					0x33, 0x33, 0x33, 0x33,
+-					0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,int,16,8) [] = { 0x333, 0x3333, 0x3333, 0x3333,
+-					0x333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,int,32,4) [] = { 0xffffffff, 0xffffffff, 0x0, 0x0 };
+-VECT_VAR_DECL(expected,int,64,2) [] = { 0x3333333333333333,
+-					0x3333333333333333 };
+-VECT_VAR_DECL(expected,uint,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,uint,16,8) [] = { 0x333, 0x3333, 0x3333, 0x3333,
+-					 0x333, 0x3333, 0x3333, 0x3333 };
+ VECT_VAR_DECL(expected,uint,32,4) [] = { 0x0, 0x0, 0x0, 0xffffffff };
+-VECT_VAR_DECL(expected,uint,64,2) [] = { 0x3333333333333333,
+-					 0x3333333333333333 };
+-VECT_VAR_DECL(expected,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,poly,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333,
+-					 0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,hfloat,32,4) [] = { 0x33333333, 0x33333333,
+-					   0x33333333, 0x33333333 };
+ 
+ VECT_VAR_DECL(expected2,uint,32,2) [] = { 0x0, 0x0 };
+ VECT_VAR_DECL(expected2,uint,32,4) [] = { 0x0, 0x0, 0x0, 0x0 };
+--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vceq.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vceq.c
+@@ -8,29 +8,9 @@ void exec_vceq_p8(void);
+ #include "cmp_op.inc"
+ 
+ /* Expected results.  */
+-VECT_VAR_DECL(expected,int,8,8) [] = { 0x33, 0x33, 0x33, 0x33,
+-				       0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,int,16,4) [] = { 0x333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,int,32,2) [] = { 0x33333333, 0x33333333 };
+-VECT_VAR_DECL(expected,int,64,1) [] = { 0x3333333333333333 };
+ VECT_VAR_DECL(expected,uint,8,8) [] = { 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0x0 };
+ VECT_VAR_DECL(expected,uint,16,4) [] = { 0x0, 0x0, 0xffff, 0x0 };
+ VECT_VAR_DECL(expected,uint,32,2) [] = { 0xffffffff, 0x0 };
+-VECT_VAR_DECL(expected,uint,64,1) [] = { 0x3333333333333333 };
+-VECT_VAR_DECL(expected,poly,8,8) [] = { 0x33, 0x33, 0x33, 0x33,
+-					0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,poly,16,4) [] = { 0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,hfloat,32,2) [] = { 0x33333333, 0x33333333 };
+-VECT_VAR_DECL(expected,int,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-					0x33, 0x33, 0x33, 0x33,
+-					0x33, 0x33, 0x33, 0x33,
+-					0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,int,16,8) [] = { 0x333, 0x3333, 0x3333, 0x3333,
+-					0x333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,int,32,4) [] = { 0x33333333, 0x33333333,
+-					0x33333333, 0x33333333 };
+-VECT_VAR_DECL(expected,int,64,2) [] = { 0x3333333333333333,
+-					0x3333333333333333 };
+ VECT_VAR_DECL(expected,uint,8,16) [] = { 0x0, 0x0, 0x0, 0x0,
+ 					 0x0, 0x0, 0x0, 0x0,
+ 					 0x0, 0x0, 0x0, 0x0,
+@@ -38,16 +18,6 @@ VECT_VAR_DECL(expected,uint,8,16) [] = { 0x0, 0x0, 0x0, 0x0,
+ VECT_VAR_DECL(expected,uint,16,8) [] = { 0x0, 0x0, 0x0, 0x0,
+ 					 0x0, 0x0, 0xffff, 0x0 };
+ VECT_VAR_DECL(expected,uint,32,4) [] = { 0x0, 0x0, 0xffffffff, 0x0 };
+-VECT_VAR_DECL(expected,uint,64,2) [] = { 0x3333333333333333,
+-					 0x3333333333333333 };
+-VECT_VAR_DECL(expected,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,poly,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333,
+-					 0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,hfloat,32,4) [] = { 0x33333333, 0x33333333,
+-					   0x33333333, 0x33333333 };
+ 
+ VECT_VAR_DECL(expected_uint,uint,8,8) [] = { 0x0, 0x0, 0x0, 0xff,
+ 					     0x0, 0x0, 0x0, 0x0 };
+--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcge.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcge.c
+@@ -4,29 +4,9 @@
+ #include "cmp_op.inc"
+ 
+ /* Expected results.  */
+-VECT_VAR_DECL(expected,int,8,8) [] = { 0x33, 0x33, 0x33, 0x33,
+-				       0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,int,16,4) [] = { 0x333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,int,32,2) [] = { 0x33333333, 0x33333333 };
+-VECT_VAR_DECL(expected,int,64,1) [] = { 0x3333333333333333 };
+ VECT_VAR_DECL(expected,uint,8,8) [] = { 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xff };
+ VECT_VAR_DECL(expected,uint,16,4) [] = { 0x0, 0x0, 0xffff, 0xffff };
+ VECT_VAR_DECL(expected,uint,32,2) [] = { 0xffffffff, 0xffffffff };
+-VECT_VAR_DECL(expected,uint,64,1) [] = { 0x3333333333333333 };
+-VECT_VAR_DECL(expected,poly,8,8) [] = { 0x33, 0x33, 0x33, 0x33,
+-					0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,poly,16,4) [] = { 0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,hfloat,32,2) [] = { 0x33333333, 0x33333333 };
+-VECT_VAR_DECL(expected,int,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-					0x33, 0x33, 0x33, 0x33,
+-					0x33, 0x33, 0x33, 0x33,
+-					0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,int,16,8) [] = { 0x333, 0x3333, 0x3333, 0x3333,
+-					0x333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,int,32,4) [] = { 0x33333333, 0x33333333,
+-					0x33333333, 0x33333333 };
+-VECT_VAR_DECL(expected,int,64,2) [] = { 0x3333333333333333,
+-					0x3333333333333333 };
+ VECT_VAR_DECL(expected,uint,8,16) [] = { 0x0, 0x0, 0x0, 0x0,
+ 					 0x0, 0x0, 0x0, 0x0,
+ 					 0x0, 0x0, 0x0, 0x0,
+@@ -34,16 +14,6 @@ VECT_VAR_DECL(expected,uint,8,16) [] = { 0x0, 0x0, 0x0, 0x0,
+ VECT_VAR_DECL(expected,uint,16,8) [] = { 0x0, 0x0, 0x0, 0x0,
+ 					 0x0, 0x0, 0xffff, 0xffff };
+ VECT_VAR_DECL(expected,uint,32,4) [] = { 0x0, 0x0, 0xffffffff, 0xffffffff };
+-VECT_VAR_DECL(expected,uint,64,2) [] = { 0x3333333333333333,
+-					 0x3333333333333333 };
+-VECT_VAR_DECL(expected,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,poly,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333,
+-					 0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,hfloat,32,4) [] = { 0x33333333, 0x33333333,
+-					   0x33333333, 0x33333333 };
+ 
+ VECT_VAR_DECL(expected_uint,uint,8,8) [] = { 0x0, 0x0, 0x0, 0xff,
+ 					     0xff, 0xff, 0xff, 0xff };
+--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcgt.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcgt.c
+@@ -4,29 +4,9 @@
+ #include "cmp_op.inc"
+ 
+ /* Expected results.  */
+-VECT_VAR_DECL(expected,int,8,8) [] = { 0x33, 0x33, 0x33, 0x33,
+-				       0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,int,16,4) [] = { 0x333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,int,32,2) [] = { 0x33333333, 0x33333333 };
+-VECT_VAR_DECL(expected,int,64,1) [] = { 0x3333333333333333 };
+ VECT_VAR_DECL(expected,uint,8,8) [] = { 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff };
+ VECT_VAR_DECL(expected,uint,16,4) [] = { 0x0, 0x0, 0x0, 0xffff };
+ VECT_VAR_DECL(expected,uint,32,2) [] = { 0x0, 0xffffffff };
+-VECT_VAR_DECL(expected,uint,64,1) [] = { 0x3333333333333333 };
+-VECT_VAR_DECL(expected,poly,8,8) [] = { 0x33, 0x33, 0x33, 0x33,
+-					0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,poly,16,4) [] = { 0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,hfloat,32,2) [] = { 0x33333333, 0x33333333 };
+-VECT_VAR_DECL(expected,int,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-					0x33, 0x33, 0x33, 0x33,
+-					0x33, 0x33, 0x33, 0x33,
+-					0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,int,16,8) [] = { 0x333, 0x3333, 0x3333, 0x3333,
+-					0x333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,int,32,4) [] = { 0x33333333, 0x33333333,
+-					0x33333333, 0x33333333 };
+-VECT_VAR_DECL(expected,int,64,2) [] = { 0x3333333333333333,
+-					0x3333333333333333 };
+ VECT_VAR_DECL(expected,uint,8,16) [] = { 0x0, 0x0, 0x0, 0x0,
+ 					 0x0, 0x0, 0x0, 0x0,
+ 					 0x0, 0x0, 0x0, 0x0,
+@@ -34,16 +14,6 @@ VECT_VAR_DECL(expected,uint,8,16) [] = { 0x0, 0x0, 0x0, 0x0,
+ VECT_VAR_DECL(expected,uint,16,8) [] = { 0x0, 0x0, 0x0, 0x0,
+ 					 0x0, 0x0, 0x0, 0xffff };
+ VECT_VAR_DECL(expected,uint,32,4) [] = { 0x0, 0x0, 0x0, 0xffffffff };
+-VECT_VAR_DECL(expected,uint,64,2) [] = { 0x3333333333333333,
+-					 0x3333333333333333 };
+-VECT_VAR_DECL(expected,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,poly,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333,
+-					 0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,hfloat,32,4) [] = { 0x33333333, 0x33333333,
+-					   0x33333333, 0x33333333 };
+ 
+ VECT_VAR_DECL(expected_uint,uint,8,8) [] = { 0x0, 0x0, 0x0, 0x0,
+ 					     0xff, 0xff, 0xff, 0xff };
+--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcle.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcle.c
+@@ -4,30 +4,10 @@
+ #include "cmp_op.inc"
+ 
+ /* Expected results.  */
+-VECT_VAR_DECL(expected,int,8,8) [] = { 0x33, 0x33, 0x33, 0x33,
+-				       0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,int,16,4) [] = { 0x333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,int,32,2) [] = { 0x33333333, 0x33333333 };
+-VECT_VAR_DECL(expected,int,64,1) [] = { 0x3333333333333333 };
+ VECT_VAR_DECL(expected,uint,8,8) [] = { 0xff, 0xff, 0xff, 0xff,
+ 					0xff, 0xff, 0xff, 0x0 };
+ VECT_VAR_DECL(expected,uint,16,4) [] = { 0xffff, 0xffff, 0xffff, 0x0 };
+ VECT_VAR_DECL(expected,uint,32,2) [] = { 0xffffffff, 0x0 };
+-VECT_VAR_DECL(expected,uint,64,1) [] = { 0x3333333333333333 };
+-VECT_VAR_DECL(expected,poly,8,8) [] = { 0x33, 0x33, 0x33, 0x33,
+-					0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,poly,16,4) [] = { 0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,hfloat,32,2) [] = { 0x33333333, 0x33333333 };
+-VECT_VAR_DECL(expected,int,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-					0x33, 0x33, 0x33, 0x33,
+-					0x33, 0x33, 0x33, 0x33,
+-					0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,int,16,8) [] = { 0x333, 0x3333, 0x3333, 0x3333,
+-					0x333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,int,32,4) [] = { 0x33333333, 0x33333333,
+-					0x33333333, 0x33333333 };
+-VECT_VAR_DECL(expected,int,64,2) [] = { 0x3333333333333333,
+-					0x3333333333333333 };
+ VECT_VAR_DECL(expected,uint,8,16) [] = { 0xff, 0xff, 0xff, 0xff,
+ 					 0xff, 0xff, 0xff, 0xff,
+ 					 0xff, 0xff, 0xff, 0xff,
+@@ -36,16 +16,6 @@ VECT_VAR_DECL(expected,uint,16,8) [] = { 0xffff, 0xffff, 0xffff, 0xffff,
+ 					 0xffff, 0xffff, 0xffff, 0x0 };
+ VECT_VAR_DECL(expected,uint,32,4) [] = { 0xffffffff, 0xffffffff,
+ 					 0xffffffff, 0x0 };
+-VECT_VAR_DECL(expected,uint,64,2) [] = { 0x3333333333333333,
+-					 0x3333333333333333 };
+-VECT_VAR_DECL(expected,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,poly,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333,
+-					 0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,hfloat,32,4) [] = { 0x33333333, 0x33333333,
+-					   0x33333333, 0x33333333 };
+ 
+ VECT_VAR_DECL(expected_uint,uint,8,8) [] = { 0xff, 0xff, 0xff, 0xff,
+ 					     0x0, 0x0, 0x0, 0x0 };
+--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcls.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcls.c
+@@ -6,16 +6,6 @@
+ VECT_VAR_DECL(expected,int,8,8) [] = { 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6 };
+ VECT_VAR_DECL(expected,int,16,4) [] = { 0x2, 0x2, 0x2, 0x2 };
+ VECT_VAR_DECL(expected,int,32,2) [] = { 0x19, 0x19 };
+-VECT_VAR_DECL(expected,int,64,1) [] = { 0x3333333333333333 };
+-VECT_VAR_DECL(expected,uint,8,8) [] = { 0x33, 0x33, 0x33, 0x33,
+-					0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,uint,16,4) [] = { 0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,uint,32,2) [] = { 0x33333333, 0x33333333 };
+-VECT_VAR_DECL(expected,uint,64,1) [] = { 0x3333333333333333 };
+-VECT_VAR_DECL(expected,poly,8,8) [] = { 0x33, 0x33, 0x33, 0x33,
+-					0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,poly,16,4) [] = { 0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,hfloat,32,2) [] = { 0x33333333, 0x33333333 };
+ VECT_VAR_DECL(expected,int,8,16) [] = { 0x7, 0x7, 0x7, 0x7,
+ 					0x7, 0x7, 0x7, 0x7,
+ 					0x7, 0x7, 0x7, 0x7,
+@@ -23,45 +13,12 @@ VECT_VAR_DECL(expected,int,8,16) [] = { 0x7, 0x7, 0x7, 0x7,
+ VECT_VAR_DECL(expected,int,16,8) [] = { 0x2, 0x2, 0x2, 0x2,
+ 					0x2, 0x2, 0x2, 0x2 };
+ VECT_VAR_DECL(expected,int,32,4) [] = { 0x14, 0x14, 0x14, 0x14 };
+-VECT_VAR_DECL(expected,int,64,2) [] = { 0x3333333333333333,
+-					0x3333333333333333 };
+-VECT_VAR_DECL(expected,uint,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,uint,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333,
+-					 0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,uint,32,4) [] = { 0x33333333, 0x33333333,
+-					 0x33333333, 0x33333333 };
+-VECT_VAR_DECL(expected,uint,64,2) [] = { 0x3333333333333333,
+-					 0x3333333333333333 };
+-VECT_VAR_DECL(expected,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,poly,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333,
+-					 0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,hfloat,32,4) [] = { 0x33333333, 0x33333333,
+-					   0x33333333, 0x33333333 };
+ 
+ /* Expected results with negative input.  */
+ VECT_VAR_DECL(expected_with_negative,int,8,8) [] = { 0x7, 0x7, 0x7, 0x7,
+ 						     0x7, 0x7, 0x7, 0x7 };
+ VECT_VAR_DECL(expected_with_negative,int,16,4) [] = { 0x1, 0x1, 0x1, 0x1 };
+ VECT_VAR_DECL(expected_with_negative,int,32,2) [] = { 0x1, 0x1 };
+-VECT_VAR_DECL(expected_with_negative,int,64,1) [] = { 0x3333333333333333 };
+-VECT_VAR_DECL(expected_with_negative,uint,8,8) [] = { 0x33, 0x33, 0x33, 0x33,
+-						      0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected_with_negative,uint,16,4) [] = { 0x3333, 0x3333,
+-						       0x3333, 0x3333 };
+-VECT_VAR_DECL(expected_with_negative,uint,32,2) [] = { 0x33333333, 0x33333333 };
+-VECT_VAR_DECL(expected_with_negative,uint,64,1) [] = { 0x3333333333333333 };
+-VECT_VAR_DECL(expected_with_negative,poly,8,8) [] = { 0x33, 0x33, 0x33, 0x33,
+-						      0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected_with_negative,poly,16,4) [] = { 0x3333, 0x3333,
+-						       0x3333, 0x3333 };
+-VECT_VAR_DECL(expected_with_negative,hfloat,32,2) [] = { 0x33333333,
+-							 0x33333333 };
+ VECT_VAR_DECL(expected_with_negative,int,8,16) [] = { 0x0, 0x0, 0x0, 0x0,
+ 						      0x0, 0x0, 0x0, 0x0,
+ 						      0x0, 0x0, 0x0, 0x0,
+@@ -69,32 +26,6 @@ VECT_VAR_DECL(expected_with_negative,int,8,16) [] = { 0x0, 0x0, 0x0, 0x0,
+ VECT_VAR_DECL(expected_with_negative,int,16,8) [] = { 0x2, 0x2, 0x2, 0x2,
+ 						      0x2, 0x2, 0x2, 0x2 };
+ VECT_VAR_DECL(expected_with_negative,int,32,4) [] = { 0x0, 0x0, 0x0, 0x0 };
+-VECT_VAR_DECL(expected_with_negative,int,64,2) [] = { 0x3333333333333333,
+-						      0x3333333333333333 };
+-VECT_VAR_DECL(expected_with_negative,uint,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-						       0x33, 0x33, 0x33, 0x33,
+-						       0x33, 0x33, 0x33, 0x33,
+-						       0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected_with_negative,uint,16,8) [] = { 0x3333, 0x3333,
+-						       0x3333, 0x3333,
+-						       0x3333, 0x3333,
+-						       0x3333, 0x3333 };
+-VECT_VAR_DECL(expected_with_negative,uint,32,4) [] = { 0x33333333, 0x33333333,
+-						       0x33333333, 0x33333333 };
+-VECT_VAR_DECL(expected_with_negative,uint,64,2) [] = { 0x3333333333333333,
+-						       0x3333333333333333 };
+-VECT_VAR_DECL(expected_with_negative,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-						       0x33, 0x33, 0x33, 0x33,
+-						       0x33, 0x33, 0x33, 0x33,
+-						       0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected_with_negative,poly,16,8) [] = { 0x3333, 0x3333,
+-						       0x3333, 0x3333,
+-						       0x3333, 0x3333,
+-						       0x3333, 0x3333 };
+-VECT_VAR_DECL(expected_with_negative,hfloat,32,4) [] = { 0x33333333,
+-							 0x33333333,
+-							 0x33333333,
+-							 0x33333333 };
+ 
+ #define INSN_NAME vcls
+ #define TEST_MSG "VCLS/VCLSQ"
+@@ -146,7 +77,13 @@ FNNAME (INSN_NAME)
+   TEST_UNARY_OP(INSN_NAME, q, int, s, 16, 8);
+   TEST_UNARY_OP(INSN_NAME, q, int, s, 32, 4);
+ 
+-  CHECK_RESULTS (TEST_MSG, " (positive input)");
++#define MSG_POSITIVE " (positive input)"
++  CHECK(TEST_MSG, int, 8, 8, PRIx8, expected, MSG_POSITIVE);
++  CHECK(TEST_MSG, int, 16, 4, PRIx16, expected, MSG_POSITIVE);
++  CHECK(TEST_MSG, int, 32, 2, PRIx32, expected, MSG_POSITIVE);
++  CHECK(TEST_MSG, int, 8, 16, PRIx8, expected, MSG_POSITIVE);
++  CHECK(TEST_MSG, int, 16, 8, PRIx16, expected, MSG_POSITIVE);
++  CHECK(TEST_MSG, int, 32, 4, PRIx32, expected, MSG_POSITIVE);
+ 
+   /* Fill input vector with arbitrary values (negative).  */
+   VDUP(vector, , int, s, 8, 8, 0xFF);
+@@ -164,7 +101,13 @@ FNNAME (INSN_NAME)
+   TEST_UNARY_OP(INSN_NAME, q, int, s, 16, 8);
+   TEST_UNARY_OP(INSN_NAME, q, int, s, 32, 4);
+ 
+-  CHECK_RESULTS_NAMED (TEST_MSG, expected_with_negative, " (negative input)");
++#define MSG_NEGATIVE " (negative input)"
++  CHECK(TEST_MSG, int, 8, 8, PRIx8, expected_with_negative, MSG_NEGATIVE);
++  CHECK(TEST_MSG, int, 16, 4, PRIx16, expected_with_negative, MSG_NEGATIVE);
++  CHECK(TEST_MSG, int, 32, 2, PRIx32, expected_with_negative, MSG_NEGATIVE);
++  CHECK(TEST_MSG, int, 8, 16, PRIx8, expected_with_negative, MSG_NEGATIVE);
++  CHECK(TEST_MSG, int, 16, 8, PRIx16, expected_with_negative, MSG_NEGATIVE);
++  CHECK(TEST_MSG, int, 32, 4, PRIx32, expected_with_negative, MSG_NEGATIVE);
+ }
+ 
+ int main (void)
+--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vclt.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vclt.c
+@@ -4,30 +4,10 @@
+ #include "cmp_op.inc"
+ 
+ /* Expected results.  */
+-VECT_VAR_DECL(expected,int,8,8) [] = { 0x33, 0x33, 0x33, 0x33,
+-				       0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,int,16,4) [] = { 0x333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,int,32,2) [] = { 0x33333333, 0x33333333 };
+-VECT_VAR_DECL(expected,int,64,1) [] = { 0x3333333333333333 };
+ VECT_VAR_DECL(expected,uint,8,8) [] = { 0xff, 0xff, 0xff, 0xff,
+ 					0xff, 0xff, 0x0, 0x0 };
+ VECT_VAR_DECL(expected,uint,16,4) [] = { 0xffff, 0xffff, 0x0, 0x0 };
+ VECT_VAR_DECL(expected,uint,32,2) [] = { 0x0, 0x0 };
+-VECT_VAR_DECL(expected,uint,64,1) [] = { 0x3333333333333333 };
+-VECT_VAR_DECL(expected,poly,8,8) [] = { 0x33, 0x33, 0x33, 0x33,
+-					0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,poly,16,4) [] = { 0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,hfloat,32,2) [] = { 0x33333333, 0x33333333 };
+-VECT_VAR_DECL(expected,int,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-					0x33, 0x33, 0x33, 0x33,
+-					0x33, 0x33, 0x33, 0x33,
+-					0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,int,16,8) [] = { 0x333, 0x3333, 0x3333, 0x3333,
+-					0x333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,int,32,4) [] = { 0x33333333, 0x33333333,
+-					0x33333333, 0x33333333 };
+-VECT_VAR_DECL(expected,int,64,2) [] = { 0x3333333333333333,
+-					0x3333333333333333 };
+ VECT_VAR_DECL(expected,uint,8,16) [] = { 0xff, 0xff, 0xff, 0xff,
+ 					 0xff, 0xff, 0xff, 0xff,
+ 					 0xff, 0xff, 0xff, 0xff,
+@@ -35,16 +15,6 @@ VECT_VAR_DECL(expected,uint,8,16) [] = { 0xff, 0xff, 0xff, 0xff,
+ VECT_VAR_DECL(expected,uint,16,8) [] = { 0xffff, 0xffff, 0xffff, 0xffff,
+ 					 0xffff, 0xffff, 0x0, 0x0 };
+ VECT_VAR_DECL(expected,uint,32,4) [] = { 0xffffffff, 0xffffffff, 0x0, 0x0 };
+-VECT_VAR_DECL(expected,uint,64,2) [] = { 0x3333333333333333,
+-					 0x3333333333333333 };
+-VECT_VAR_DECL(expected,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,poly,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333,
+-					 0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,hfloat,32,4) [] = { 0x33333333, 0x33333333,
+-					   0x33333333, 0x33333333 };
+ 
+ VECT_VAR_DECL(expected_uint,uint,8,8) [] = { 0xff, 0xff, 0xff, 0x0,
+ 					     0x0, 0x0, 0x0, 0x0 };
+--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vclz.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vclz.c
+@@ -6,36 +6,18 @@
+ VECT_VAR_DECL(expected,int,8,8) [] = { 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 };
+ VECT_VAR_DECL(expected,int,16,4) [] = { 0x3, 0x3, 0x3, 0x3 };
+ VECT_VAR_DECL(expected,int,32,2) [] = { 0x11, 0x11 };
+-VECT_VAR_DECL(expected,int,64,1) [] = { 0x3333333333333333 };
+ VECT_VAR_DECL(expected,uint,8,8) [] = { 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2 };
+ VECT_VAR_DECL(expected,uint,16,4) [] = { 0x0, 0x0, 0x0, 0x0 };
+ VECT_VAR_DECL(expected,uint,32,2) [] = { 0x5, 0x5 };
+-VECT_VAR_DECL(expected,uint,64,1) [] = { 0x3333333333333333 };
+-VECT_VAR_DECL(expected,poly,8,8) [] = { 0x33, 0x33, 0x33, 0x33,
+-					0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,poly,16,4) [] = { 0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,hfloat,32,2) [] = { 0x33333333, 0x33333333 };
+ VECT_VAR_DECL(expected,int,8,16) [] = { 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2,
+ 					0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2 };
+ VECT_VAR_DECL(expected,int,16,8) [] = { 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3 };
+ VECT_VAR_DECL(expected,int,32,4) [] = { 0x3, 0x3, 0x3, 0x3 };
+-VECT_VAR_DECL(expected,int,64,2) [] = { 0x3333333333333333,
+-					0x3333333333333333 };
+ VECT_VAR_DECL(expected,uint,8,16) [] = { 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3,
+ 					 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3 };
+ VECT_VAR_DECL(expected,uint,16,8) [] = { 0xd, 0xd, 0xd, 0xd,
+ 					 0xd, 0xd, 0xd, 0xd };
+ VECT_VAR_DECL(expected,uint,32,4) [] = { 0x1f, 0x1f, 0x1f, 0x1f };
+-VECT_VAR_DECL(expected,uint,64,2) [] = { 0x3333333333333333,
+-					 0x3333333333333333 };
+-VECT_VAR_DECL(expected,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,poly,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333,
+-					 0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,hfloat,32,4) [] = { 0x33333333, 0x33333333,
+-					   0x33333333, 0x33333333 };
+ 
+ 
+ /* Expected results with input=0.  */
+@@ -43,16 +25,10 @@ VECT_VAR_DECL(expected_with_0,int,8,8) [] = { 0x8, 0x8, 0x8, 0x8,
+ 					      0x8, 0x8, 0x8, 0x8 };
+ VECT_VAR_DECL(expected_with_0,int,16,4) [] = { 0x10, 0x10, 0x10, 0x10 };
+ VECT_VAR_DECL(expected_with_0,int,32,2) [] = { 0x20, 0x20 };
+-VECT_VAR_DECL(expected_with_0,int,64,1) [] = { 0x3333333333333333 };
+ VECT_VAR_DECL(expected_with_0,uint,8,8) [] = { 0x8, 0x8, 0x8, 0x8,
+ 					       0x8, 0x8, 0x8, 0x8 };
+ VECT_VAR_DECL(expected_with_0,uint,16,4) [] = { 0x10, 0x10, 0x10, 0x10 };
+ VECT_VAR_DECL(expected_with_0,uint,32,2) [] = { 0x20, 0x20 };
+-VECT_VAR_DECL(expected_with_0,uint,64,1) [] = { 0x3333333333333333 };
+-VECT_VAR_DECL(expected_with_0,poly,8,8) [] = { 0x33, 0x33, 0x33, 0x33,
+-					       0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected_with_0,poly,16,4) [] = { 0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected_with_0,hfloat,32,2) [] = { 0x33333333, 0x33333333 };
+ VECT_VAR_DECL(expected_with_0,int,8,16) [] = { 0x8, 0x8, 0x8, 0x8,
+ 					       0x8, 0x8, 0x8, 0x8,
+ 					       0x8, 0x8, 0x8, 0x8,
+@@ -60,8 +36,6 @@ VECT_VAR_DECL(expected_with_0,int,8,16) [] = { 0x8, 0x8, 0x8, 0x8,
+ VECT_VAR_DECL(expected_with_0,int,16,8) [] = { 0x10, 0x10, 0x10, 0x10,
+ 					       0x10, 0x10, 0x10, 0x10 };
+ VECT_VAR_DECL(expected_with_0,int,32,4) [] = { 0x20, 0x20, 0x20, 0x20 };
+-VECT_VAR_DECL(expected_with_0,int,64,2) [] = { 0x3333333333333333,
+-					       0x3333333333333333 };
+ VECT_VAR_DECL(expected_with_0,uint,8,16) [] = { 0x8, 0x8, 0x8, 0x8,
+ 						0x8, 0x8, 0x8, 0x8,
+ 						0x8, 0x8, 0x8, 0x8,
+@@ -69,16 +43,6 @@ VECT_VAR_DECL(expected_with_0,uint,8,16) [] = { 0x8, 0x8, 0x8, 0x8,
+ VECT_VAR_DECL(expected_with_0,uint,16,8) [] = { 0x10, 0x10, 0x10, 0x10,
+ 						0x10, 0x10, 0x10, 0x10 };
+ VECT_VAR_DECL(expected_with_0,uint,32,4) [] = { 0x20, 0x20, 0x20, 0x20 };
+-VECT_VAR_DECL(expected_with_0,uint,64,2) [] = { 0x3333333333333333,
+-						0x3333333333333333 };
+-VECT_VAR_DECL(expected_with_0,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-						0x33, 0x33, 0x33, 0x33,
+-						0x33, 0x33, 0x33, 0x33,
+-						0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected_with_0,poly,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333,
+-						0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected_with_0,hfloat,32,4) [] = { 0x33333333, 0x33333333,
+-						  0x33333333, 0x33333333 };
+ 
+ #define INSN_NAME vclz
+ #define TEST_MSG "VCLZ/VCLZQ"
+@@ -154,7 +118,18 @@ FNNAME (INSN_NAME)
+   TEST_UNARY_OP(INSN_NAME, q, uint, u, 16, 8);
+   TEST_UNARY_OP(INSN_NAME, q, uint, u, 32, 4);
+ 
+-  CHECK_RESULTS (TEST_MSG, "");
++  CHECK(TEST_MSG, int, 8, 8, PRIx8, expected, "");
++  CHECK(TEST_MSG, int, 16, 4, PRIx16, expected, "");
++  CHECK(TEST_MSG, int, 32, 2, PRIx32, expected, "");
++  CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected, "");
++  CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected, "");
++  CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected, "");
++  CHECK(TEST_MSG, int, 8, 16, PRIx8, expected, "");
++  CHECK(TEST_MSG, int, 16, 8, PRIx16, expected, "");
++  CHECK(TEST_MSG, int, 32, 4, PRIx32, expected, "");
++  CHECK(TEST_MSG, uint, 8, 16, PRIx8, expected, "");
++  CHECK(TEST_MSG, uint, 16, 8, PRIx16, expected, "");
++  CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected, "");
+ 
+   /* Test with zero as input.  */
+   VDUP(vector, , int, s, 8, 8, 0);
+@@ -184,7 +159,19 @@ FNNAME (INSN_NAME)
+   TEST_UNARY_OP(INSN_NAME, q, uint, u, 16, 8);
+   TEST_UNARY_OP(INSN_NAME, q, uint, u, 32, 4);
+ 
+-  CHECK_RESULTS_NAMED (TEST_MSG, expected_with_0, " (input=0)");
++#define MSG_ZERO " (input=0)"
++  CHECK(TEST_MSG, int, 8, 8, PRIx8, expected_with_0, MSG_ZERO);
++  CHECK(TEST_MSG, int, 16, 4, PRIx16, expected_with_0, MSG_ZERO);
++  CHECK(TEST_MSG, int, 32, 2, PRIx32, expected_with_0, MSG_ZERO);
++  CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected_with_0, MSG_ZERO);
++  CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected_with_0, MSG_ZERO);
++  CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected_with_0, MSG_ZERO);
++  CHECK(TEST_MSG, int, 8, 16, PRIx8, expected_with_0, MSG_ZERO);
++  CHECK(TEST_MSG, int, 16, 8, PRIx16, expected_with_0, MSG_ZERO);
++  CHECK(TEST_MSG, int, 32, 4, PRIx32, expected_with_0, MSG_ZERO);
++  CHECK(TEST_MSG, uint, 8, 16, PRIx8, expected_with_0, MSG_ZERO);
++  CHECK(TEST_MSG, uint, 16, 8, PRIx16, expected_with_0, MSG_ZERO);
++  CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected_with_0, MSG_ZERO);
+ }
+ 
+ int main (void)
+--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcnt.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcnt.c
+@@ -4,37 +4,14 @@
+ 
+ /* Expected results.  */
+ VECT_VAR_DECL(expected,int,8,8) [] = { 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8 };
+-VECT_VAR_DECL(expected,int,16,4) [] = { 0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,int,32,2) [] = { 0x33333333, 0x33333333 };
+-VECT_VAR_DECL(expected,int,64,1) [] = { 0x3333333333333333 };
+ VECT_VAR_DECL(expected,uint,8,8) [] = { 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4 };
+-VECT_VAR_DECL(expected,uint,16,4) [] = { 0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,uint,32,2) [] = { 0x33333333, 0x33333333 };
+-VECT_VAR_DECL(expected,uint,64,1) [] = { 0x3333333333333333 };
+ VECT_VAR_DECL(expected,poly,8,8) [] = { 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4 };
+-VECT_VAR_DECL(expected,poly,16,4) [] = { 0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,hfloat,32,2) [] = { 0x33333333, 0x33333333 };
+ VECT_VAR_DECL(expected,int,8,16) [] = { 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
+ 					0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 };
+-VECT_VAR_DECL(expected,int,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333,
+-					0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,int,32,4) [] = { 0x33333333, 0x33333333,
+-					0x33333333, 0x33333333 };
+-VECT_VAR_DECL(expected,int,64,2) [] = { 0x3333333333333333, 0x3333333333333333 };
+ VECT_VAR_DECL(expected,uint,8,16) [] = { 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
+ 					 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6 };
+-VECT_VAR_DECL(expected,uint,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333,
+-					 0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,uint,32,4) [] = { 0x33333333, 0x33333333,
+-					 0x33333333, 0x33333333 };
+-VECT_VAR_DECL(expected,uint,64,2) [] = { 0x3333333333333333,
+-					 0x3333333333333333 };
+ VECT_VAR_DECL(expected,poly,8,16) [] = { 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6,
+ 					 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6 };
+-VECT_VAR_DECL(expected,poly,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333,
+-					 0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,hfloat,32,4) [] = { 0x33333333, 0x33333333,
+-					   0x33333333, 0x33333333 };
+ 
+ #define INSN_NAME vcnt
+ #define TEST_MSG "VCNT/VCNTQ"
+@@ -86,7 +63,12 @@ FNNAME (INSN_NAME)
+   TEST_UNARY_OP(INSN_NAME, q, uint, u, 8, 16);
+   TEST_UNARY_OP(INSN_NAME, q, poly, p, 8, 16);
+ 
+-  CHECK_RESULTS (TEST_MSG, "");
++  CHECK(TEST_MSG, int, 8, 8, PRIx8, expected, "");
++  CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected, "");
++  CHECK(TEST_MSG, poly, 8, 8, PRIx8, expected, "");
++  CHECK(TEST_MSG, int, 8, 16, PRIx8, expected, "");
++  CHECK(TEST_MSG, uint, 8, 16, PRIx8, expected, "");
++  CHECK(TEST_MSG, poly, 8, 16, PRIx8, expected, "");
+ }
+ 
+ int main (void)
+--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcombine.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcombine.c
+@@ -3,20 +3,6 @@
+ #include "compute-ref-data.h"
+ 
+ /* Expected results.  */
+-VECT_VAR_DECL(expected,int,8,8) [] = { 0x33, 0x33, 0x33, 0x33,
+-				       0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,int,16,4) [] = { 0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,int,32,2) [] = { 0x33333333, 0x33333333 };
+-VECT_VAR_DECL(expected,int,64,1) [] = { 0x3333333333333333 };
+-VECT_VAR_DECL(expected,uint,8,8) [] = { 0x33, 0x33, 0x33, 0x33,
+-					0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,uint,16,4) [] = { 0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,uint,32,2) [] = { 0x33333333, 0x33333333 };
+-VECT_VAR_DECL(expected,uint,64,1) [] = { 0x3333333333333333 };
+-VECT_VAR_DECL(expected,poly,8,8) [] = { 0x33, 0x33, 0x33, 0x33,
+-					0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,poly,16,4) [] = { 0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,hfloat,32,2) [] = { 0x33333333, 0x33333333 };
+ VECT_VAR_DECL(expected,int,8,16) [] = { 0xf0, 0xf1, 0xf2, 0xf3,
+ 					0xf4, 0xf5, 0xf6, 0xf7,
+ 					0x11, 0x11, 0x11, 0x11,
+@@ -41,6 +27,8 @@ VECT_VAR_DECL(expected,poly,16,8) [] = { 0xfff0, 0xfff1, 0xfff2, 0xfff3,
+ 					 0x66, 0x66, 0x66, 0x66 };
+ VECT_VAR_DECL(expected,hfloat,32,4) [] = { 0xc1800000, 0xc1700000,
+ 					   0x40533333, 0x40533333 };
++VECT_VAR_DECL(expected,hfloat,16,8) [] = { 0xcc00, 0xcb80, 0xcb00, 0xca80,
++					   0x4080, 0x4080, 0x4080, 0x4080 };
+ 
+ #define TEST_MSG "VCOMBINE"
+ void exec_vcombine (void)
+@@ -58,6 +46,9 @@ void exec_vcombine (void)
+ 
+   /* Initialize input "vector64_a" from "buffer".  */
+   TEST_MACRO_64BITS_VARIANTS_2_5(VLOAD, vector64_a, buffer);
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++  VLOAD(vector64_a, buffer, , float, f, 16, 4);
++#endif
+   VLOAD(vector64_a, buffer, , float, f, 32, 2);
+ 
+   /* Choose init value arbitrarily.  */
+@@ -71,6 +62,9 @@ void exec_vcombine (void)
+   VDUP(vector64_b, , uint, u, 64, 1, 0x88);
+   VDUP(vector64_b, , poly, p, 8, 8, 0x55);
+   VDUP(vector64_b, , poly, p, 16, 4, 0x66);
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++  VDUP(vector64_b, , float, f, 16, 4, 2.25);
++#endif
+   VDUP(vector64_b, , float, f, 32, 2, 3.3f);
+ 
+   clean_results ();
+@@ -86,9 +80,25 @@ void exec_vcombine (void)
+   TEST_VCOMBINE(uint, u, 64, 1, 2);
+   TEST_VCOMBINE(poly, p, 8, 8, 16);
+   TEST_VCOMBINE(poly, p, 16, 4, 8);
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++  TEST_VCOMBINE(float, f, 16, 4, 8);
++#endif
+   TEST_VCOMBINE(float, f, 32, 2, 4);
+ 
+-  CHECK_RESULTS (TEST_MSG, "");
++  CHECK(TEST_MSG, int, 8, 16, PRIx8, expected, "");
++  CHECK(TEST_MSG, int, 16, 8, PRIx16, expected, "");
++  CHECK(TEST_MSG, int, 32, 4, PRIx32, expected, "");
++  CHECK(TEST_MSG, int, 64, 2, PRIx64, expected, "");
++  CHECK(TEST_MSG, uint, 8, 16, PRIx8, expected, "");
++  CHECK(TEST_MSG, uint, 16, 8, PRIx16, expected, "");
++  CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected, "");
++  CHECK(TEST_MSG, uint, 64, 2, PRIx64, expected, "");
++  CHECK(TEST_MSG, poly, 8, 16, PRIx8, expected, "");
++  CHECK(TEST_MSG, poly, 16, 8, PRIx16, expected, "");
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++  CHECK_FP(TEST_MSG, float, 16, 8, PRIx16, expected, "");
++#endif
++  CHECK_FP(TEST_MSG, float, 32, 4, PRIx32, expected, "");
+ }
+ 
+ int main (void)
+--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcreate.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcreate.c
+@@ -16,35 +16,8 @@ VECT_VAR_DECL(expected,uint,64,1) [] = { 0x123456789abcdef0 };
+ VECT_VAR_DECL(expected,poly,8,8) [] = { 0xf0, 0xde, 0xbc, 0x9a,
+ 					0x78, 0x56, 0x34, 0x12 };
+ VECT_VAR_DECL(expected,poly,16,4) [] = { 0xdef0, 0x9abc, 0x5678, 0x1234 };
++VECT_VAR_DECL(expected,hfloat,16,4) [] = { 0xdef0, 0x9abc, 0x5678, 0x1234 };
+ VECT_VAR_DECL(expected,hfloat,32,2) [] = { 0x9abcdef0, 0x12345678 };
+-VECT_VAR_DECL(expected,int,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-					0x33, 0x33, 0x33, 0x33,
+-					0x33, 0x33, 0x33, 0x33,
+-					0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,int,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333,
+-					0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,int,32,4) [] = { 0x33333333, 0x33333333,
+-					0x33333333, 0x33333333 };
+-VECT_VAR_DECL(expected,int,64,2) [] = { 0x3333333333333333,
+-					0x3333333333333333 };
+-VECT_VAR_DECL(expected,uint,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,uint,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333,
+-					 0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,uint,32,4) [] = { 0x33333333, 0x33333333,
+-					 0x33333333, 0x33333333 };
+-VECT_VAR_DECL(expected,uint,64,2) [] = { 0x3333333333333333,
+-					 0x3333333333333333 };
+-VECT_VAR_DECL(expected,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,poly,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333,
+-					 0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,hfloat,32,4) [] = { 0x33333333, 0x33333333,
+-					   0x33333333, 0x33333333 };
+ 
+ #define INSN_NAME vcreate
+ #define TEST_MSG "VCREATE"
+@@ -66,6 +39,9 @@ FNNAME (INSN_NAME)
+   DECL_VAL(val, int, 16, 4);
+   DECL_VAL(val, int, 32, 2);
+   DECL_VAL(val, int, 64, 1);
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++  DECL_VAL(val, float, 16, 4);
++#endif
+   DECL_VAL(val, float, 32, 2);
+   DECL_VAL(val, uint, 8, 8);
+   DECL_VAL(val, uint, 16, 4);
+@@ -78,6 +54,9 @@ FNNAME (INSN_NAME)
+   DECL_VARIABLE(vector_res, int, 16, 4);
+   DECL_VARIABLE(vector_res, int, 32, 2);
+   DECL_VARIABLE(vector_res, int, 64, 1);
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++  DECL_VARIABLE(vector_res, float, 16, 4);
++#endif
+   DECL_VARIABLE(vector_res, float, 32, 2);
+   DECL_VARIABLE(vector_res, uint, 8, 8);
+   DECL_VARIABLE(vector_res, uint, 16, 4);
+@@ -93,6 +72,9 @@ FNNAME (INSN_NAME)
+   VECT_VAR(val, int, 16, 4) = 0x123456789abcdef0LL;
+   VECT_VAR(val, int, 32, 2) = 0x123456789abcdef0LL;
+   VECT_VAR(val, int, 64, 1) = 0x123456789abcdef0LL;
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++  VECT_VAR(val, float, 16, 4) = 0x123456789abcdef0LL;
++#endif
+   VECT_VAR(val, float, 32, 2) = 0x123456789abcdef0LL;
+   VECT_VAR(val, uint, 8, 8) = 0x123456789abcdef0ULL;
+   VECT_VAR(val, uint, 16, 4) = 0x123456789abcdef0ULL;
+@@ -104,6 +86,9 @@ FNNAME (INSN_NAME)
+   TEST_VCREATE(int, s, 8, 8);
+   TEST_VCREATE(int, s, 16, 4);
+   TEST_VCREATE(int, s, 32, 2);
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++  TEST_VCREATE(float, f, 16, 4);
++#endif
+   TEST_VCREATE(float, f, 32, 2);
+   TEST_VCREATE(int, s, 64, 1);
+   TEST_VCREATE(uint, u, 8, 8);
+@@ -113,7 +98,20 @@ FNNAME (INSN_NAME)
+   TEST_VCREATE(poly, p, 8, 8);
+   TEST_VCREATE(poly, p, 16, 4);
+ 
+-  CHECK_RESULTS (TEST_MSG, "");
++  CHECK(TEST_MSG, int, 8, 8, PRIx8, expected, "");
++  CHECK(TEST_MSG, int, 16, 4, PRIx16, expected, "");
++  CHECK(TEST_MSG, int, 32, 2, PRIx32, expected, "");
++  CHECK(TEST_MSG, int, 64, 1, PRIx64, expected, "");
++  CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected, "");
++  CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected, "");
++  CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected, "");
++  CHECK(TEST_MSG, uint, 64, 1, PRIx64, expected, "");
++  CHECK(TEST_MSG, poly, 8, 8, PRIx8, expected, "");
++  CHECK(TEST_MSG, poly, 16, 4, PRIx16, expected, "");
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++  CHECK_FP(TEST_MSG, float, 16, 4, PRIx16, expected, "");
++#endif
++  CHECK_FP(TEST_MSG, float, 32, 2, PRIx32, expected, "");
+ }
+ 
+ int main (void)
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcvt_f16.c
+@@ -0,0 +1,100 @@
++/* { dg-require-effective-target arm_neon_fp16_hw { target { arm*-*-* } } } */
++#include <arm_neon.h>
++#include "arm-neon-ref.h"
++#include "compute-ref-data.h"
++#include <math.h>
++
++/* Expected results for vcvt.  */
++VECT_VAR_DECL (expected,hfloat,32,4) [] = { 0x41800000, 0x41700000,
++					    0x41600000, 0x41500000 };
++VECT_VAR_DECL (expected,hfloat,16,4) [] = { 0x3e00, 0x4100, 0x4300, 0x4480 };
++
++/* Expected results for vcvt_high_f32_f16.  */
++VECT_VAR_DECL (expected_high,hfloat,32,4) [] = { 0xc1400000, 0xc1300000,
++						 0xc1200000, 0xc1100000 };
++/* Expected results for vcvt_high_f16_f32.  */
++VECT_VAR_DECL (expected_high,hfloat,16,8) [] = { 0x4000, 0x4000, 0x4000, 0x4000,
++						 0xcc00, 0xcb80, 0xcb00, 0xca80 };
++
++void
++exec_vcvt (void)
++{
++  clean_results ();
++
++#define TEST_MSG "vcvt_f32_f16"
++  {
++    VECT_VAR_DECL (buffer_src, float, 16, 4) [] = { 16.0, 15.0, 14.0, 13.0 };
++
++    DECL_VARIABLE (vector_src, float, 16, 4);
++
++    VLOAD (vector_src, buffer_src, , float, f, 16, 4);
++    DECL_VARIABLE (vector_res, float, 32, 4) =
++	vcvt_f32_f16 (VECT_VAR (vector_src, float, 16, 4));
++    vst1q_f32 (VECT_VAR (result, float, 32, 4),
++	       VECT_VAR (vector_res, float, 32, 4));
++
++    CHECK_FP (TEST_MSG, float, 32, 4, PRIx32, expected, "");
++  }
++#undef TEST_MSG
++
++  clean_results ();
++
++#define TEST_MSG "vcvt_f16_f32"
++  {
++    VECT_VAR_DECL (buffer_src, float, 32, 4) [] = { 1.5, 2.5, 3.5, 4.5 };
++    DECL_VARIABLE (vector_src, float, 32, 4);
++
++    VLOAD (vector_src, buffer_src, q, float, f, 32, 4);
++    DECL_VARIABLE (vector_res, float, 16, 4) =
++      vcvt_f16_f32 (VECT_VAR (vector_src, float, 32, 4));
++    vst1_f16 (VECT_VAR (result, float, 16, 4),
++	      VECT_VAR (vector_res, float, 16 ,4));
++
++    CHECK_FP (TEST_MSG, float, 16, 4, PRIx16, expected, "");
++  }
++#undef TEST_MSG
++
++  /* We run more tests for AArch64 as the relevant intrinsics
++     do not exist on AArch32.  */
++#if defined (__aarch64__)
++  clean_results ();
++
++#define TEST_MSG "vcvt_high_f32_f16"
++  {
++    DECL_VARIABLE (vector_src, float, 16, 8);
++    VLOAD (vector_src, buffer, q, float, f, 16, 8);
++    DECL_VARIABLE (vector_res, float, 32, 4);
++    VECT_VAR (vector_res, float, 32, 4) =
++      vcvt_high_f32_f16 (VECT_VAR (vector_src, float, 16, 8));
++    vst1q_f32 (VECT_VAR (result, float, 32, 4),
++	       VECT_VAR (vector_res, float, 32, 4));
++    CHECK_FP (TEST_MSG, float, 32, 4, PRIx32, expected_high, "");
++  }
++#undef TEST_MSG
++  clean_results ();
++
++#define TEST_MSG "vcvt_high_f16_f32"
++  {
++    DECL_VARIABLE (vector_low, float, 16, 4);
++    VDUP (vector_low, , float, f, 16, 4, 2.0);
++
++    DECL_VARIABLE (vector_src, float, 32, 4);
++    VLOAD (vector_src, buffer, q, float, f, 32, 4);
++
++    DECL_VARIABLE (vector_res, float, 16, 8) =
++      vcvt_high_f16_f32 (VECT_VAR (vector_low, float, 16, 4),
++			 VECT_VAR (vector_src, float, 32, 4));
++    vst1q_f16 (VECT_VAR (result, float, 16, 8),
++	       VECT_VAR (vector_res, float, 16, 8));
++
++    CHECK_FP (TEST_MSG, float, 16, 8, PRIx16, expected_high, "");
++  }
++#endif
++}
++
++int
++main (void)
++{
++  exec_vcvt ();
++  return 0;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vcvt_high_1.c
+@@ -0,0 +1,98 @@
++/* { dg-skip-if "" { arm*-*-* } } */
++
++#include "arm_neon.h"
++
++void abort (void);
++
++void
++foo (void)
++{
++  /* Test vcvt_high_f32_f64.  */
++  float32x2_t arg1;
++  float64x2_t arg2;
++  float32x4_t result;
++  arg1 = vcreate_f32 (UINT64_C (0x3f0db5793f6e1892));
++  arg2 = vcombine_f64 (vcreate_f64 (UINT64_C (0x3fe8e49d23fb575d)),
++		       vcreate_f64 (UINT64_C (0x3fd921291b3df73e)));
++  //  Expect: "result" = 3ec909483f4724e93f0db5793f6e1892
++  result = vcvt_high_f32_f64 (arg1, arg2);
++  float32_t got;
++  float32_t exp;
++
++  /* Lane 0.  */
++  got = vgetq_lane_f32 (result, 0);
++  exp = ((float32_t) 0.9300624132156372);
++  if (((((exp / got) < ((float32_t) 0.999))
++	 || ((exp / got) > ((float32_t) 1.001)))
++     && (((exp - got) < ((float32_t) -1.0e-4))
++	 || ((exp - got) > ((float32_t) 1.0e-4)))))
++    abort ();
++
++  /* Lane 1.  */
++  got = vgetq_lane_f32 (result, 1);
++  exp = ((float32_t) 0.5535503029823303);
++  if (((((exp / got) < ((float32_t) 0.999))
++	  || ((exp / got) > ((float32_t) 1.001)))
++     && (((exp - got) < ((float32_t) -1.0e-4))
++	   || ((exp - got) > ((float32_t) 1.0e-4)))))
++    abort ();
++
++  /* Lane 2.  */
++  got = vgetq_lane_f32 (result, 2);
++  exp = ((float32_t) 0.7779069617051665);
++  if (((((exp / got) < ((float32_t) 0.999))
++	  || ((exp / got) > ((float32_t) 1.001)))
++      && (((exp - got) < ((float32_t) -1.0e-4))
++	  || ((exp - got) > ((float32_t) 1.0e-4)))))
++    abort ();
++
++  /* Lane 3.  */
++  got = vgetq_lane_f32 (result, 3);
++  exp = ((float32_t) 0.3926489606891329);
++  if (((((exp / got) < ((float32_t) 0.999))
++	  || ((exp / got) > ((float32_t) 1.001)))
++      && (((exp - got) < ((float32_t) -1.0e-4))
++	  || ((exp - got) > ((float32_t) 1.0e-4)))))
++    abort ();
++}
++
++void
++bar (void)
++{
++  /* Test vcvt_high_f64_f32.  */
++  float32x4_t arg1;
++  float64x2_t result;
++  arg1 = vcombine_f32 (vcreate_f32 (UINT64_C (0x3f7c5cf13f261f74)),
++		       vcreate_f32 (UINT64_C (0x3e3a7bc03f6ccc1d)));
++  //  Expect: "result" = 3fc74f78000000003fed9983a0000000
++  result = vcvt_high_f64_f32 (arg1);
++
++  float64_t got;
++  float64_t exp;
++
++  /* Lane 0.  */
++  got = vgetq_lane_f64 (result, 0);
++  exp = 0.9249895215034485;
++  if (((((exp / got) < 0.999)
++	 || ((exp / got) > 1.001))
++     && (((exp - got) < -1.0e-4)
++	 || ((exp - got) > 1.0e-4))))
++    abort ();
++
++  /* Lane 1.  */
++  got = vgetq_lane_f64 (result, 1);
++  exp = 0.1821126937866211;
++  if (((((exp / got) < 0.999)
++	  || ((exp / got) > 1.001))
++      && (((exp - got) < -1.0e-4)
++	  || ((exp - got) > 1.0e-4))))
++    abort ();
++}
++
++int
++main (int argc, char **argv)
++{
++  foo ();
++  bar ();
++  return 0;
++}
+--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vdup-vmov.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vdup-vmov.c
+@@ -187,13 +187,13 @@ void exec_vdup_vmov (void)
+ 
+     switch (i) {
+     case 0:
+-      CHECK_RESULTS_NAMED (TEST_MSG, expected0, "");
++      CHECK_RESULTS_NAMED_NO_FP16 (TEST_MSG, expected0, "");
+       break;
+     case 1:
+-      CHECK_RESULTS_NAMED (TEST_MSG, expected1, "");
++      CHECK_RESULTS_NAMED_NO_FP16 (TEST_MSG, expected1, "");
+       break;
+     case 2:
+-      CHECK_RESULTS_NAMED (TEST_MSG, expected2, "");
++      CHECK_RESULTS_NAMED_NO_FP16 (TEST_MSG, expected2, "");
+       break;
+     default:
+       abort();
+@@ -232,13 +232,13 @@ void exec_vdup_vmov (void)
+ 
+     switch (i) {
+     case 0:
+-      CHECK_RESULTS_NAMED (TEST_MSG, expected0, "");
++      CHECK_RESULTS_NAMED_NO_FP16 (TEST_MSG, expected0, "");
+       break;
+     case 1:
+-      CHECK_RESULTS_NAMED (TEST_MSG, expected1, "");
++      CHECK_RESULTS_NAMED_NO_FP16 (TEST_MSG, expected1, "");
+       break;
+     case 2:
+-      CHECK_RESULTS_NAMED (TEST_MSG, expected2, "");
++      CHECK_RESULTS_NAMED_NO_FP16 (TEST_MSG, expected2, "");
+       break;
+     default:
+       abort();
+--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vdup_lane.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vdup_lane.c
+@@ -90,7 +90,7 @@ void exec_vdup_lane (void)
+   TEST_VDUP_LANE(q, poly, p, 16, 8, 4, 1);
+   TEST_VDUP_LANE(q, float, f, 32, 4, 2, 1);
+ 
+-  CHECK_RESULTS (TEST_MSG, "");
++  CHECK_RESULTS_NO_FP16 (TEST_MSG, "");
+ }
+ 
+ int main (void)
+--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/veor.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/veor.c
+@@ -14,10 +14,6 @@ VECT_VAR_DECL(expected,uint,8,8) [] = { 0xe4, 0xe5, 0xe6, 0xe7,
+ VECT_VAR_DECL(expected,uint,16,4) [] = { 0xffee, 0xffef, 0xffec, 0xffed };
+ VECT_VAR_DECL(expected,uint,32,2) [] = { 0xffffffd8, 0xffffffd9 };
+ VECT_VAR_DECL(expected,uint,64,1) [] = { 0xfffffffffffffff2 };
+-VECT_VAR_DECL(expected,poly,8,8) [] = { 0x33, 0x33, 0x33, 0x33,
+-					0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,poly,16,4) [] = { 0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,hfloat,32,2) [] = { 0x33333333, 0x33333333 };
+ VECT_VAR_DECL(expected,int,8,16) [] = { 0x6, 0x7, 0x4, 0x5,
+ 					0x2, 0x3, 0x0, 0x1,
+ 					0xe, 0xf, 0xc, 0xd,
+@@ -37,11 +33,3 @@ VECT_VAR_DECL(expected,uint,32,4) [] = { 0xffffffc7, 0xffffffc6,
+ 					 0xffffffc5, 0xffffffc4 };
+ VECT_VAR_DECL(expected,uint,64,2) [] = { 0xfffffffffffffff3,
+ 					 0xfffffffffffffff2 };
+-VECT_VAR_DECL(expected,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,poly,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333,
+-					 0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,hfloat,32,4) [] = { 0x33333333, 0x33333333,
+-					   0x33333333, 0x33333333 };
+--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vext.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vext.c
+@@ -113,7 +113,7 @@ void exec_vext (void)
+   TEST_VEXT(q, poly, p, 16, 8, 6);
+   TEST_VEXT(q, float, f, 32, 4, 3);
+ 
+-  CHECK_RESULTS (TEST_MSG, "");
++  CHECK_RESULTS_NO_FP16 (TEST_MSG, "");
+ }
+ 
+ int main (void)
+--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vget_high.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vget_high.c
+@@ -16,35 +16,8 @@ VECT_VAR_DECL(expected,uint,64,1) [] = { 0xfffffffffffffff1 };
+ VECT_VAR_DECL(expected,poly,8,8) [] = { 0xf8, 0xf9, 0xfa, 0xfb,
+ 					0xfc, 0xfd, 0xfe, 0xff };
+ VECT_VAR_DECL(expected,poly,16,4) [] = { 0xfff4, 0xfff5, 0xfff6, 0xfff7 };
++VECT_VAR_DECL(expected,hfloat,16,4) [] = { 0xca00, 0xc980, 0xc900, 0xc880 };
+ VECT_VAR_DECL(expected,hfloat,32,2) [] = { 0xc1600000, 0xc1500000 };
+-VECT_VAR_DECL(expected,int,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-					0x33, 0x33, 0x33, 0x33,
+-					0x33, 0x33, 0x33, 0x33,
+-					0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,int,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333,
+-					0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,int,32,4) [] = { 0x33333333, 0x33333333,
+-					0x33333333, 0x33333333 };
+-VECT_VAR_DECL(expected,int,64,2) [] = { 0x3333333333333333,
+-					0x3333333333333333 };
+-VECT_VAR_DECL(expected,uint,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,uint,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333,
+-					 0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,uint,32,4) [] = { 0x33333333, 0x33333333,
+-					 0x33333333, 0x33333333 };
+-VECT_VAR_DECL(expected,uint,64,2) [] = { 0x3333333333333333,
+-					 0x3333333333333333 };
+-VECT_VAR_DECL(expected,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,poly,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333,
+-					 0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,hfloat,32,4) [] = { 0x33333333, 0x33333333,
+-					   0x33333333, 0x33333333 };
+ 
+ #define TEST_MSG "VGET_HIGH"
+ void exec_vget_high (void)
+@@ -59,6 +32,9 @@ void exec_vget_high (void)
+   DECL_VARIABLE_128BITS_VARIANTS(vector128);
+ 
+   TEST_MACRO_128BITS_VARIANTS_2_5(VLOAD, vector128, buffer);
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++  VLOAD(vector128, buffer, q, float, f, 16, 8);
++#endif
+   VLOAD(vector128, buffer, q, float, f, 32, 4);
+ 
+   clean_results ();
+@@ -74,9 +50,22 @@ void exec_vget_high (void)
+   TEST_VGET_HIGH(uint, u, 64, 1, 2);
+   TEST_VGET_HIGH(poly, p, 8, 8, 16);
+   TEST_VGET_HIGH(poly, p, 16, 4, 8);
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++  TEST_VGET_HIGH(float, f, 16, 4, 8);
++#endif
+   TEST_VGET_HIGH(float, f, 32, 2, 4);
+ 
+-  CHECK_RESULTS (TEST_MSG, "");
++  CHECK(TEST_MSG, int, 8, 8, PRIx8, expected, "");
++  CHECK(TEST_MSG, int, 16, 4, PRIx16, expected, "");
++  CHECK(TEST_MSG, int, 32, 2, PRIx32, expected, "");
++  CHECK(TEST_MSG, int, 64, 1, PRIx64, expected, "");
++  CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected, "");
++  CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected, "");
++  CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected, "");
++  CHECK(TEST_MSG, uint, 64, 1, PRIx64, expected, "");
++  CHECK(TEST_MSG, poly, 8, 8, PRIx8, expected, "");
++  CHECK(TEST_MSG, poly, 16, 4, PRIx16, expected, "");
++  CHECK_FP(TEST_MSG, float, 32, 2, PRIx32, expected, "");
+ }
+ 
+ int main (void)
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vget_lane.c
+@@ -0,0 +1,125 @@
++#include <arm_neon.h>
++#include "arm-neon-ref.h"
++#include "compute-ref-data.h"
++
++/* Expected results.  */
++int8_t     expected_s8   = 0xf7;
++int16_t    expected_s16  = 0xfff3;
++int32_t    expected_s32  = 0xfffffff1;
++int64_t    expected_s64  = 0xfffffffffffffff0;
++uint8_t    expected_u8   = 0xf6;
++uint16_t   expected_u16  = 0xfff2;
++uint32_t   expected_u32  = 0xfffffff1;
++uint64_t   expected_u64  = 0xfffffffffffffff0;
++poly8_t    expected_p8   = 0xf6;
++poly16_t   expected_p16  = 0xfff2;
++hfloat32_t expected_f32  = 0xc1700000;
++
++int8_t     expectedq_s8  = 0xff;
++int16_t    expectedq_s16 = 0xfff5;
++int32_t    expectedq_s32 = 0xfffffff3;
++int64_t    expectedq_s64 = 0xfffffffffffffff1;
++uint8_t    expectedq_u8  = 0xfe;
++uint16_t   expectedq_u16 = 0xfff6;
++uint32_t   expectedq_u32 = 0xfffffff2;
++uint64_t   expectedq_u64 = 0xfffffffffffffff1;
++poly8_t    expectedq_p8  = 0xfe;
++poly16_t   expectedq_p16 = 0xfff6;
++hfloat32_t expectedq_f32 = 0xc1500000;
++
++int error_found = 0;
++
++#define TEST_MSG "VGET_LANE"
++void exec_vget_lane (void)
++{
++  /* vec=vget_lane(vec, lane), then store the result.  */
++#define TEST_VGET_LANE(Q, T1, T2, W, N, L)				   \
++  VAR(var, T1, W) = vget##Q##_lane_##T2##W(VECT_VAR(vector, T1, W, N), L); \
++  if (VAR(var, T1, W) != expected##Q##_##T2##W) {			   \
++    fprintf(stderr,							   \
++	    "ERROR in %s (%s line %d in result '%s') at type %s "	   \
++	    "got 0x%" PRIx##W " != 0x%" PRIx##W "\n",			   \
++	    TEST_MSG, __FILE__, __LINE__,				   \
++	    STR(expected##Q##_##T2##W),					   \
++	    STR(VECT_NAME(T1, W, N)),					   \
++	    VAR(var, T1, W),						   \
++	    expected##Q##_##T2##W);					   \
++    error_found = 1;							   \
++  }
++
++  /* Special variant for floating-point.  */
++  union {
++    uint32_t var_int32;
++    float32_t var_float32;
++  } var_int32_float32;
++
++#define TEST_VGET_LANE_FP(Q, T1, T2, W, N, L)				   \
++  VAR(var, T1, W) = vget##Q##_lane_##T2##W(VECT_VAR(vector, T1, W, N), L); \
++  var_int##W##_float##W.var_float##W = VAR(var, T1, W);			   \
++  if (var_int##W##_float##W.var_int##W != expected##Q##_##T2##W) {	   \
++    fprintf(stderr,							   \
++	    "ERROR in %s (%s line %d in result '%s') at type %s "	   \
++	    "got 0x%" PRIx##W " != 0x%" PRIx##W "\n",			   \
++	    TEST_MSG, __FILE__, __LINE__,				   \
++	    STR(expected##Q##_##T2##W),					   \
++	    STR(VECT_NAME(T1, W, N)),					   \
++	    var_int##W##_float##W.var_int##W,				   \
++	    expected##Q##_##T2##W);					   \
++    error_found = 1;							   \
++  }
++
++  DECL_VARIABLE_ALL_VARIANTS(vector);
++
++  /* Scalar variables.  */
++  VAR_DECL(var, int, 8);
++  VAR_DECL(var, int, 16);
++  VAR_DECL(var, int, 32);
++  VAR_DECL(var, int, 64);
++  VAR_DECL(var, uint, 8);
++  VAR_DECL(var, uint, 16);
++  VAR_DECL(var, uint, 32);
++  VAR_DECL(var, uint, 64);
++  VAR_DECL(var, poly, 8);
++  VAR_DECL(var, poly, 16);
++  VAR_DECL(var, float, 32);
++
++  /* Initialize input values.  */
++  TEST_MACRO_ALL_VARIANTS_2_5(VLOAD, vector, buffer);
++  VLOAD(vector, buffer, , float, f, 32, 2);
++  VLOAD(vector, buffer, q, float, f, 32, 4);
++
++  /* Choose lane arbitrarily.  */
++  TEST_VGET_LANE(, int, s, 8, 8, 7);
++  TEST_VGET_LANE(, int, s, 16, 4, 3);
++  TEST_VGET_LANE(, int, s, 32, 2, 1);
++  TEST_VGET_LANE(, int, s, 64, 1, 0);
++  TEST_VGET_LANE(, uint, u, 8, 8, 6);
++  TEST_VGET_LANE(, uint, u, 16, 4, 2);
++  TEST_VGET_LANE(, uint, u, 32, 2, 1);
++  TEST_VGET_LANE(, uint, u, 64, 1, 0);
++  TEST_VGET_LANE(, poly, p, 8, 8, 6);
++  TEST_VGET_LANE(, poly, p, 16, 4, 2);
++  TEST_VGET_LANE_FP(, float, f, 32, 2, 1);
++
++  TEST_VGET_LANE(q, int, s, 8, 16, 15);
++  TEST_VGET_LANE(q, int, s, 16, 8, 5);
++  TEST_VGET_LANE(q, int, s, 32, 4, 3);
++  TEST_VGET_LANE(q, int, s, 64, 2, 1);
++  TEST_VGET_LANE(q, uint, u, 8, 16, 14);
++  TEST_VGET_LANE(q, uint, u, 16, 8, 6);
++  TEST_VGET_LANE(q, uint, u, 32, 4, 2);
++  TEST_VGET_LANE(q, uint, u, 64, 2, 1);
++  TEST_VGET_LANE(q, poly, p, 8, 16, 14);
++  TEST_VGET_LANE(q, poly, p, 16, 8, 6);
++  TEST_VGET_LANE_FP(q, float, f, 32, 4, 3);
++}
++
++int main (void)
++{
++  exec_vget_lane ();
++
++  if (error_found)
++    abort();
++
++  return 0;
++}
+--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vget_low.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vget_low.c
+@@ -16,35 +16,8 @@ VECT_VAR_DECL(expected,uint,64,1) [] = { 0xfffffffffffffff0 };
+ VECT_VAR_DECL(expected,poly,8,8) [] = { 0xf0, 0xf1, 0xf2, 0xf3,
+ 					0xf4, 0xf5, 0xf6, 0xf7 };
+ VECT_VAR_DECL(expected,poly,16,4) [] = { 0xfff0, 0xfff1, 0xfff2, 0xfff3 };
++VECT_VAR_DECL(expected,hfloat,16,4) [] = { 0xcc00, 0xcb80, 0xcb00, 0xca80 };
+ VECT_VAR_DECL(expected,hfloat,32,2) [] = { 0xc1800000, 0xc1700000 };
+-VECT_VAR_DECL(expected,int,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-					0x33, 0x33, 0x33, 0x33,
+-					0x33, 0x33, 0x33, 0x33,
+-					0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,int,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333,
+-					0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,int,32,4) [] = { 0x33333333, 0x33333333,
+-					0x33333333, 0x33333333 };
+-VECT_VAR_DECL(expected,int,64,2) [] = { 0x3333333333333333,
+-					0x3333333333333333 };
+-VECT_VAR_DECL(expected,uint,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,uint,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333,
+-					 0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,uint,32,4) [] = { 0x33333333, 0x33333333,
+-					 0x33333333, 0x33333333 };
+-VECT_VAR_DECL(expected,uint,64,2) [] = { 0x3333333333333333,
+-					 0x3333333333333333 };
+-VECT_VAR_DECL(expected,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,poly,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333,
+-					 0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,hfloat,32,4) [] = { 0x33333333, 0x33333333,
+-					   0x33333333, 0x33333333 };
+ 
+ #define TEST_MSG "VGET_LOW"
+ void exec_vget_low (void)
+@@ -59,6 +32,9 @@ void exec_vget_low (void)
+   DECL_VARIABLE_128BITS_VARIANTS(vector128);
+ 
+   TEST_MACRO_128BITS_VARIANTS_2_5(VLOAD, vector128, buffer);
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++  VLOAD(vector128, buffer, q, float, f, 16, 8);
++#endif
+   VLOAD(vector128, buffer, q, float, f, 32, 4);
+ 
+   clean_results ();
+@@ -74,9 +50,25 @@ void exec_vget_low (void)
+   TEST_VGET_LOW(uint, u, 64, 1, 2);
+   TEST_VGET_LOW(poly, p, 8, 8, 16);
+   TEST_VGET_LOW(poly, p, 16, 4, 8);
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++  TEST_VGET_LOW(float, f, 16, 4, 8);
++#endif
+   TEST_VGET_LOW(float, f, 32, 2, 4);
+ 
+-  CHECK_RESULTS (TEST_MSG, "");
++  CHECK(TEST_MSG, int, 8, 8, PRIx8, expected, "");
++  CHECK(TEST_MSG, int, 16, 4, PRIx16, expected, "");
++  CHECK(TEST_MSG, int, 32, 2, PRIx32, expected, "");
++  CHECK(TEST_MSG, int, 64, 1, PRIx64, expected, "");
++  CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected, "");
++  CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected, "");
++  CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected, "");
++  CHECK(TEST_MSG, uint, 64, 1, PRIx64, expected, "");
++  CHECK(TEST_MSG, poly, 8, 8, PRIx8, expected, "");
++  CHECK(TEST_MSG, poly, 16, 4, PRIx16, expected, "");
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++  CHECK_FP(TEST_MSG, float, 16, 4, PRIx16, expected, "");
++#endif
++  CHECK_FP(TEST_MSG, float, 32, 2, PRIx32, expected, "");
+ }
+ 
+ int main (void)
+--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld1.c
+@@ -16,6 +16,7 @@ VECT_VAR_DECL(expected,uint,64,1) [] = { 0xfffffffffffffff0 };
+ VECT_VAR_DECL(expected,poly,8,8) [] = { 0xf0, 0xf1, 0xf2, 0xf3,
+ 					0xf4, 0xf5, 0xf6, 0xf7 };
+ VECT_VAR_DECL(expected,poly,16,4) [] = { 0xfff0, 0xfff1, 0xfff2, 0xfff3 };
++VECT_VAR_DECL(expected,hfloat,16,4) [] = { 0xcc00, 0xcb80, 0xcb00, 0xca80 };
+ VECT_VAR_DECL(expected,hfloat,32,2) [] = { 0xc1800000, 0xc1700000 };
+ VECT_VAR_DECL(expected,int,8,16) [] = { 0xf0, 0xf1, 0xf2, 0xf3,
+ 					0xf4, 0xf5, 0xf6, 0xf7,
+@@ -44,6 +45,8 @@ VECT_VAR_DECL(expected,poly,8,16) [] = { 0xf0, 0xf1, 0xf2, 0xf3,
+ 					 0xfc, 0xfd, 0xfe, 0xff };
+ VECT_VAR_DECL(expected,poly,16,8) [] = { 0xfff0, 0xfff1, 0xfff2, 0xfff3,
+ 					 0xfff4, 0xfff5, 0xfff6, 0xfff7 };
++VECT_VAR_DECL(expected,hfloat,16,8) [] = { 0xcc00, 0xcb80, 0xcb00, 0xca80,
++					   0xca00, 0xc980, 0xc900, 0xc880 };
+ VECT_VAR_DECL(expected,hfloat,32,4) [] = { 0xc1800000, 0xc1700000,
+ 					   0xc1600000, 0xc1500000 };
+ 
+@@ -62,6 +65,10 @@ void exec_vld1 (void)
+ 
+   TEST_MACRO_ALL_VARIANTS_2_5(TEST_VLD1, vector, buffer);
+ 
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++  TEST_VLD1(vector, buffer, , float, f, 16, 4);
++  TEST_VLD1(vector, buffer, q, float, f, 16, 8);
++#endif
+   TEST_VLD1(vector, buffer, , float, f, 32, 2);
+   TEST_VLD1(vector, buffer, q, float, f, 32, 4);
+ 
+--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld1_dup.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld1_dup.c
+@@ -17,6 +17,7 @@ VECT_VAR_DECL(expected0,uint,64,1) [] = { 0xfffffffffffffff0 };
+ VECT_VAR_DECL(expected0,poly,8,8) [] = { 0xf0, 0xf0, 0xf0, 0xf0,
+ 					 0xf0, 0xf0, 0xf0, 0xf0 };
+ VECT_VAR_DECL(expected0,poly,16,4) [] = { 0xfff0, 0xfff0, 0xfff0, 0xfff0 };
++VECT_VAR_DECL(expected0,hfloat,16,4) [] = { 0xcc00, 0xcc00, 0xcc00, 0xcc00 };
+ VECT_VAR_DECL(expected0,hfloat,32,2) [] = { 0xc1800000, 0xc1800000 };
+ VECT_VAR_DECL(expected0,int,8,16) [] = { 0xf0, 0xf0, 0xf0, 0xf0,
+ 					 0xf0, 0xf0, 0xf0, 0xf0,
+@@ -44,6 +45,8 @@ VECT_VAR_DECL(expected0,poly,8,16) [] = { 0xf0, 0xf0, 0xf0, 0xf0,
+ 					  0xf0, 0xf0, 0xf0, 0xf0 };
+ VECT_VAR_DECL(expected0,poly,16,8) [] = { 0xfff0, 0xfff0, 0xfff0, 0xfff0,
+ 					  0xfff0, 0xfff0, 0xfff0, 0xfff0 };
++VECT_VAR_DECL(expected0,hfloat,16,8) [] = { 0xcc00, 0xcc00, 0xcc00, 0xcc00,
++					    0xcc00, 0xcc00, 0xcc00, 0xcc00 };
+ VECT_VAR_DECL(expected0,hfloat,32,4) [] = { 0xc1800000, 0xc1800000,
+ 					    0xc1800000, 0xc1800000 };
+ 
+@@ -61,6 +64,7 @@ VECT_VAR_DECL(expected1,uint,64,1) [] = { 0xfffffffffffffff1 };
+ VECT_VAR_DECL(expected1,poly,8,8) [] = { 0xf1, 0xf1, 0xf1, 0xf1,
+ 					 0xf1, 0xf1, 0xf1, 0xf1 };
+ VECT_VAR_DECL(expected1,poly,16,4) [] = { 0xfff1, 0xfff1, 0xfff1, 0xfff1 };
++VECT_VAR_DECL(expected1,hfloat,16,4) [] = { 0xcb80, 0xcb80, 0xcb80, 0xcb80 };
+ VECT_VAR_DECL(expected1,hfloat,32,2) [] = { 0xc1700000, 0xc1700000 };
+ VECT_VAR_DECL(expected1,int,8,16) [] = { 0xf1, 0xf1, 0xf1, 0xf1,
+ 					 0xf1, 0xf1, 0xf1, 0xf1,
+@@ -88,6 +92,8 @@ VECT_VAR_DECL(expected1,poly,8,16) [] = { 0xf1, 0xf1, 0xf1, 0xf1,
+ 					  0xf1, 0xf1, 0xf1, 0xf1 };
+ VECT_VAR_DECL(expected1,poly,16,8) [] = { 0xfff1, 0xfff1, 0xfff1, 0xfff1,
+ 					  0xfff1, 0xfff1, 0xfff1, 0xfff1 };
++VECT_VAR_DECL(expected1,hfloat,16,8) [] = { 0xcb80, 0xcb80, 0xcb80, 0xcb80,
++					    0xcb80, 0xcb80, 0xcb80, 0xcb80 };
+ VECT_VAR_DECL(expected1,hfloat,32,4) [] = { 0xc1700000, 0xc1700000,
+ 					    0xc1700000, 0xc1700000 };
+ 
+@@ -105,6 +111,7 @@ VECT_VAR_DECL(expected2,uint,64,1) [] = { 0xfffffffffffffff2 };
+ VECT_VAR_DECL(expected2,poly,8,8) [] = { 0xf2, 0xf2, 0xf2, 0xf2,
+ 					 0xf2, 0xf2, 0xf2, 0xf2 };
+ VECT_VAR_DECL(expected2,poly,16,4) [] = { 0xfff2, 0xfff2, 0xfff2, 0xfff2 };
++VECT_VAR_DECL(expected2,hfloat,16,4) [] = { 0xcb00, 0xcb00, 0xcb00, 0xcb00 };
+ VECT_VAR_DECL(expected2,hfloat,32,2) [] = { 0xc1600000, 0xc1600000 };
+ VECT_VAR_DECL(expected2,int,8,16) [] = { 0xf2, 0xf2, 0xf2, 0xf2,
+ 					 0xf2, 0xf2, 0xf2, 0xf2,
+@@ -132,6 +139,8 @@ VECT_VAR_DECL(expected2,poly,8,16) [] = { 0xf2, 0xf2, 0xf2, 0xf2,
+ 					  0xf2, 0xf2, 0xf2, 0xf2 };
+ VECT_VAR_DECL(expected2,poly,16,8) [] = { 0xfff2, 0xfff2, 0xfff2, 0xfff2,
+ 					  0xfff2, 0xfff2, 0xfff2, 0xfff2 };
++VECT_VAR_DECL(expected2,hfloat,16,8) [] = { 0xcb00, 0xcb00, 0xcb00, 0xcb00,
++					    0xcb00, 0xcb00, 0xcb00, 0xcb00 };
+ VECT_VAR_DECL(expected2,hfloat,32,4) [] = { 0xc1600000, 0xc1600000,
+ 					    0xc1600000, 0xc1600000 };
+ 
+@@ -154,6 +163,10 @@ void exec_vld1_dup (void)
+ 
+     TEST_MACRO_ALL_VARIANTS_2_5(TEST_VLD1_DUP, vector, buffer_dup);
+ 
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++    TEST_VLD1_DUP(vector, buffer_dup, , float, f, 16, 4);
++    TEST_VLD1_DUP(vector, buffer_dup, q, float, f, 16, 8);
++#endif
+     TEST_VLD1_DUP(vector, buffer_dup, , float, f, 32, 2);
+     TEST_VLD1_DUP(vector, buffer_dup, q, float, f, 32, 4);
+ 
+--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld1_lane.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld1_lane.c
+@@ -16,6 +16,7 @@ VECT_VAR_DECL(expected,uint,64,1) [] = { 0xfffffffffffffff0 };
+ VECT_VAR_DECL(expected,poly,8,8) [] = { 0xaa, 0xaa, 0xaa, 0xaa,
+ 					0xaa, 0xaa, 0xaa, 0xf0 };
+ VECT_VAR_DECL(expected,poly,16,4) [] = { 0xaaaa, 0xaaaa, 0xaaaa, 0xfff0 };
++VECT_VAR_DECL(expected,hfloat,16,4) [] = { 0xaaaa, 0xaaaa, 0xcc00, 0xaaaa };
+ VECT_VAR_DECL(expected,hfloat,32,2) [] = { 0xaaaaaaaa, 0xc1800000 };
+ VECT_VAR_DECL(expected,int,8,16) [] = { 0xaa, 0xaa, 0xaa, 0xaa,
+ 					0xaa, 0xaa, 0xaa, 0xaa,
+@@ -43,6 +44,8 @@ VECT_VAR_DECL(expected,poly,8,16) [] = { 0xaa, 0xaa, 0xaa, 0xaa,
+ 					 0xf0, 0xaa, 0xaa, 0xaa };
+ VECT_VAR_DECL(expected,poly,16,8) [] = { 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa,
+ 					 0xaaaa, 0xaaaa, 0xfff0, 0xaaaa };
++VECT_VAR_DECL(expected,hfloat,16,8) [] = { 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa,
++					   0xaaaa, 0xcc00, 0xaaaa, 0xaaaa };
+ VECT_VAR_DECL(expected,hfloat,32,4) [] = { 0xaaaaaaaa, 0xaaaaaaaa,
+ 					   0xc1800000, 0xaaaaaaaa };
+ 
+@@ -72,6 +75,9 @@ void exec_vld1_lane (void)
+   ARRAY(buffer_src, uint, 64, 1);
+   ARRAY(buffer_src, poly, 8, 8);
+   ARRAY(buffer_src, poly, 16, 4);
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++  ARRAY(buffer_src, float, 16, 4);
++#endif
+   ARRAY(buffer_src, float, 32, 2);
+ 
+   ARRAY(buffer_src, int, 8, 16);
+@@ -84,6 +90,9 @@ void exec_vld1_lane (void)
+   ARRAY(buffer_src, uint, 64, 2);
+   ARRAY(buffer_src, poly, 8, 16);
+   ARRAY(buffer_src, poly, 16, 8);
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++  ARRAY(buffer_src, float, 16, 8);
++#endif
+   ARRAY(buffer_src, float, 32, 4);
+ 
+   clean_results ();
+@@ -99,6 +108,9 @@ void exec_vld1_lane (void)
+   TEST_VLD1_LANE(, uint, u, 64, 1, 0);
+   TEST_VLD1_LANE(, poly, p, 8, 8, 7);
+   TEST_VLD1_LANE(, poly, p, 16, 4, 3);
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++  TEST_VLD1_LANE(, float, f, 16, 4, 2);
++#endif
+   TEST_VLD1_LANE(, float, f, 32, 2, 1);
+ 
+   TEST_VLD1_LANE(q, int, s, 8, 16, 15);
+@@ -111,6 +123,9 @@ void exec_vld1_lane (void)
+   TEST_VLD1_LANE(q, uint, u, 64, 2, 0);
+   TEST_VLD1_LANE(q, poly, p, 8, 16, 12);
+   TEST_VLD1_LANE(q, poly, p, 16, 8, 6);
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++  TEST_VLD1_LANE(q, float, f, 16, 8, 5);
++#endif
+   TEST_VLD1_LANE(q, float, f, 32, 4, 2);
+ 
+   CHECK_RESULTS (TEST_MSG, "");
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld2_lane_f16_indices_1.c
+@@ -0,0 +1,16 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++
++float16x4x2_t
++f_vld2_lane_f16 (float16_t * p, float16x4x2_t v)
++{
++  float16x4x2_t res;
++  /* { dg-error "lane 4 out of range 0 - 3" "" { xfail arm*-*-* } 0 } */
++  res = vld2_lane_f16 (p, v, 4);
++  /* { dg-error "lane -1 out of range 0 - 3" "" { xfail arm*-*-* } 0 } */
++  res = vld2_lane_f16 (p, v, -1);
++  return res;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld2_lane_f32_indices_1.c
+@@ -0,0 +1,16 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++
++float32x2x2_t
++f_vld2_lane_f32 (float32_t * p, float32x2x2_t v)
++{
++  float32x2x2_t res;
++  /* { dg-error "lane 2 out of range 0 - 1" "" { xfail arm*-*-* } 0 } */
++  res = vld2_lane_f32 (p, v, 2);
++  /* { dg-error "lane -1 out of range 0 - 1" "" { xfail arm*-*-* } 0 } */
++  res = vld2_lane_f32 (p, v, -1);
++  return res;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld2_lane_f64_indices_1.c
+@@ -0,0 +1,17 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++/* { dg-skip-if "" { arm*-*-* } } */
++
++float64x1x2_t
++f_vld2_lane_f64 (float64_t * p, float64x1x2_t v)
++{
++  float64x1x2_t res;
++  /* { dg-error "lane 1 out of range 0 - 0" "" { xfail arm*-*-* } 0 } */
++  res = vld2_lane_f64 (p, v, 1);
++  /* { dg-error "lane -1 out of range 0 - 0" "" { xfail arm*-*-* } 0 } */
++  res = vld2_lane_f64 (p, v, -1);
++  return res;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld2_lane_p8_indices_1.c
+@@ -0,0 +1,16 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++
++poly8x8x2_t
++f_vld2_lane_p8 (poly8_t * p, poly8x8x2_t v)
++{
++  poly8x8x2_t res;
++  /* { dg-error "lane 8 out of range 0 - 7" "" { xfail arm*-*-* } 0 } */
++  res = vld2_lane_p8 (p, v, 8);
++  /* { dg-error "lane -1 out of range 0 - 7" "" { xfail arm*-*-* } 0 } */
++  res = vld2_lane_p8 (p, v, -1);
++  return res;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld2_lane_s16_indices_1.c
+@@ -0,0 +1,16 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++
++int16x4x2_t
++f_vld2_lane_s16 (int16_t * p, int16x4x2_t v)
++{
++  int16x4x2_t res;
++  /* { dg-error "lane 4 out of range 0 - 3" "" { xfail arm*-*-* } 0 } */
++  res = vld2_lane_s16 (p, v, 4);
++  /* { dg-error "lane -1 out of range 0 - 3" "" { xfail arm*-*-* } 0 } */
++  res = vld2_lane_s16 (p, v, -1);
++  return res;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld2_lane_s32_indices_1.c
+@@ -0,0 +1,16 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++
++int32x2x2_t
++f_vld2_lane_s32 (int32_t * p, int32x2x2_t v)
++{
++  int32x2x2_t res;
++  /* { dg-error "lane 2 out of range 0 - 1" "" { xfail arm*-*-* } 0 } */
++  res = vld2_lane_s32 (p, v, 2);
++  /* { dg-error "lane -1 out of range 0 - 1" "" { xfail arm*-*-* } 0 } */
++  res = vld2_lane_s32 (p, v, -1);
++  return res;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld2_lane_s64_indices_1.c
+@@ -0,0 +1,17 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++/* { dg-skip-if "" { arm*-*-* } } */
++
++int64x1x2_t
++f_vld2_lane_s64 (int64_t * p, int64x1x2_t v)
++{
++  int64x1x2_t res;
++  /* { dg-error "lane 1 out of range 0 - 0" "" { xfail arm*-*-* } 0 } */
++  res = vld2_lane_s64 (p, v, 1);
++  /* { dg-error "lane -1 out of range 0 - 0" "" { xfail arm*-*-* } 0 } */
++  res = vld2_lane_s64 (p, v, -1);
++  return res;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld2_lane_s8_indices_1.c
+@@ -0,0 +1,16 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++
++int8x8x2_t
++f_vld2_lane_s8 (int8_t * p, int8x8x2_t v)
++{
++  int8x8x2_t res;
++  /* { dg-error "lane 8 out of range 0 - 7" "" { xfail arm*-*-* } 0 } */
++  res = vld2_lane_s8 (p, v, 8);
++  /* { dg-error "lane -1 out of range 0 - 7" "" { xfail arm*-*-* } 0 } */
++  res = vld2_lane_s8 (p, v, -1);
++  return res;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld2_lane_u16_indices_1.c
+@@ -0,0 +1,16 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++
++uint16x4x2_t
++f_vld2_lane_u16 (uint16_t * p, uint16x4x2_t v)
++{
++  uint16x4x2_t res;
++  /* { dg-error "lane 4 out of range 0 - 3" "" { xfail arm*-*-* } 0 } */
++  res = vld2_lane_u16 (p, v, 4);
++  /* { dg-error "lane -1 out of range 0 - 3" "" { xfail arm*-*-* } 0 } */
++  res = vld2_lane_u16 (p, v, -1);
++  return res;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld2_lane_u32_indices_1.c
+@@ -0,0 +1,16 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++
++uint32x2x2_t
++f_vld2_lane_u32 (uint32_t * p, uint32x2x2_t v)
++{
++  uint32x2x2_t res;
++  /* { dg-error "lane 2 out of range 0 - 1" "" { xfail arm*-*-* } 0 } */
++  res = vld2_lane_u32 (p, v, 2);
++  /* { dg-error "lane -1 out of range 0 - 1" "" { xfail arm*-*-* } 0 } */
++  res = vld2_lane_u32 (p, v, -1);
++  return res;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld2_lane_u64_indices_1.c
+@@ -0,0 +1,17 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++/* { dg-skip-if "" { arm*-*-* } } */
++
++uint64x1x2_t
++f_vld2_lane_u64 (uint64_t * p, uint64x1x2_t v)
++{
++  uint64x1x2_t res;
++  /* { dg-error "lane 1 out of range 0 - 0" "" { xfail arm*-*-* } 0 } */
++  res = vld2_lane_u64 (p, v, 1);
++  /* { dg-error "lane -1 out of range 0 - 0" "" { xfail arm*-*-* } 0 } */
++  res = vld2_lane_u64 (p, v, -1);
++  return res;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld2_lane_u8_indices_1.c
+@@ -0,0 +1,16 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++
++uint8x8x2_t
++f_vld2_lane_u8 (uint8_t * p, uint8x8x2_t v)
++{
++  uint8x8x2_t res;
++  /* { dg-error "lane 8 out of range 0 - 7" "" { xfail arm*-*-* } 0 } */
++  res = vld2_lane_u8 (p, v, 8);
++  /* { dg-error "lane -1 out of range 0 - 7" "" { xfail arm*-*-* } 0 } */
++  res = vld2_lane_u8 (p, v, -1);
++  return res;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld2q_lane_f16_indices_1.c
+@@ -0,0 +1,16 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++
++float16x8x2_t
++f_vld2q_lane_f16 (float16_t * p, float16x8x2_t v)
++{
++  float16x8x2_t res;
++  /* { dg-error "lane 8 out of range 0 - 7" "" { xfail arm*-*-* } 0 } */
++  res = vld2q_lane_f16 (p, v, 8);
++  /* { dg-error "lane -1 out of range 0 - 7" "" { xfail arm*-*-* } 0 } */
++  res = vld2q_lane_f16 (p, v, -1);
++  return res;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld2q_lane_f32_indices_1.c
+@@ -0,0 +1,16 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++
++float32x4x2_t
++f_vld2q_lane_f32 (float32_t * p, float32x4x2_t v)
++{
++  float32x4x2_t res;
++  /* { dg-error "lane 4 out of range 0 - 3" "" { xfail arm*-*-* } 0 } */
++  res = vld2q_lane_f32 (p, v, 4);
++  /* { dg-error "lane -1 out of range 0 - 3" "" { xfail arm*-*-* } 0 } */
++  res = vld2q_lane_f32 (p, v, -1);
++  return res;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld2q_lane_f64_indices_1.c
+@@ -0,0 +1,17 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++/* { dg-skip-if "" { arm*-*-* } } */
++
++float64x2x2_t
++f_vld2q_lane_f64 (float64_t * p, float64x2x2_t v)
++{
++  float64x2x2_t res;
++  /* { dg-error "lane 2 out of range 0 - 1" "" { xfail arm*-*-* } 0 } */
++  res = vld2q_lane_f64 (p, v, 2);
++  /* { dg-error "lane -1 out of range 0 - 1" "" { xfail arm*-*-* } 0 } */
++  res = vld2q_lane_f64 (p, v, -1);
++  return res;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld2q_lane_p8_indices_1.c
+@@ -0,0 +1,17 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++/* { dg-skip-if "" { arm*-*-* } } */
++
++poly8x16x2_t
++f_vld2q_lane_p8 (poly8_t * p, poly8x16x2_t v)
++{
++  poly8x16x2_t res;
++  /* { dg-error "lane 16 out of range 0 - 15" "" { xfail arm*-*-* } 0 } */
++  res = vld2q_lane_p8 (p, v, 16);
++  /* { dg-error "lane -1 out of range 0 - 15" "" { xfail arm*-*-* } 0 } */
++  res = vld2q_lane_p8 (p, v, -1);
++  return res;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld2q_lane_s16_indices_1.c
+@@ -0,0 +1,16 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++
++int16x8x2_t
++f_vld2q_lane_s16 (int16_t * p, int16x8x2_t v)
++{
++  int16x8x2_t res;
++  /* { dg-error "lane 8 out of range 0 - 7" "" { xfail arm*-*-* } 0 } */
++  res = vld2q_lane_s16 (p, v, 8);
++  /* { dg-error "lane -1 out of range 0 - 7" "" { xfail arm*-*-* } 0 } */
++  res = vld2q_lane_s16 (p, v, -1);
++  return res;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld2q_lane_s32_indices_1.c
+@@ -0,0 +1,16 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++
++int32x4x2_t
++f_vld2q_lane_s32 (int32_t * p, int32x4x2_t v)
++{
++  int32x4x2_t res;
++  /* { dg-error "lane 4 out of range 0 - 3" "" { xfail arm*-*-* } 0 } */
++  res = vld2q_lane_s32 (p, v, 4);
++  /* { dg-error "lane -1 out of range 0 - 3" "" { xfail arm*-*-* } 0 } */
++  res = vld2q_lane_s32 (p, v, -1);
++  return res;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld2q_lane_s64_indices_1.c
+@@ -0,0 +1,17 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++/* { dg-skip-if "" { arm*-*-* } } */
++
++int64x2x2_t
++f_vld2q_lane_s64 (int64_t * p, int64x2x2_t v)
++{
++  int64x2x2_t res;
++  /* { dg-error "lane 2 out of range 0 - 1" "" { xfail arm*-*-* } 0 } */
++  res = vld2q_lane_s64 (p, v, 2);
++  /* { dg-error "lane -1 out of range 0 - 1" "" { xfail arm*-*-* } 0 } */
++  res = vld2q_lane_s64 (p, v, -1);
++  return res;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld2q_lane_s8_indices_1.c
+@@ -0,0 +1,17 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++/* { dg-skip-if "" { arm*-*-* } } */
++
++int8x16x2_t
++f_vld2q_lane_s8 (int8_t * p, int8x16x2_t v)
++{
++  int8x16x2_t res;
++  /* { dg-error "lane 16 out of range 0 - 15" "" { xfail arm*-*-* } 0 } */
++  res = vld2q_lane_s8 (p, v, 16);
++  /* { dg-error "lane -1 out of range 0 - 15" "" { xfail arm*-*-* } 0 } */
++  res = vld2q_lane_s8 (p, v, -1);
++  return res;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld2q_lane_u16_indices_1.c
+@@ -0,0 +1,16 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++
++uint16x8x2_t
++f_vld2q_lane_u16 (uint16_t * p, uint16x8x2_t v)
++{
++  uint16x8x2_t res;
++  /* { dg-error "lane 8 out of range 0 - 7" "" { xfail arm*-*-* } 0 } */
++  res = vld2q_lane_u16 (p, v, 8);
++  /* { dg-error "lane -1 out of range 0 - 7" "" { xfail arm*-*-* } 0 } */
++  res = vld2q_lane_u16 (p, v, -1);
++  return res;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld2q_lane_u32_indices_1.c
+@@ -0,0 +1,16 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++
++uint32x4x2_t
++f_vld2q_lane_u32 (uint32_t * p, uint32x4x2_t v)
++{
++  uint32x4x2_t res;
++  /* { dg-error "lane 4 out of range 0 - 3" "" { xfail arm*-*-* } 0 } */
++  res = vld2q_lane_u32 (p, v, 4);
++  /* { dg-error "lane -1 out of range 0 - 3" "" { xfail arm*-*-* } 0 } */
++  res = vld2q_lane_u32 (p, v, -1);
++  return res;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld2q_lane_u64_indices_1.c
+@@ -0,0 +1,17 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++/* { dg-skip-if "" { arm*-*-* } } */
++
++uint64x2x2_t
++f_vld2q_lane_u64 (uint64_t * p, uint64x2x2_t v)
++{
++  uint64x2x2_t res;
++  /* { dg-error "lane 2 out of range 0 - 1" "" { xfail arm*-*-* } 0 } */
++  res = vld2q_lane_u64 (p, v, 2);
++  /* { dg-error "lane -1 out of range 0 - 1" "" { xfail arm*-*-* } 0 } */
++  res = vld2q_lane_u64 (p, v, -1);
++  return res;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld2q_lane_u8_indices_1.c
+@@ -0,0 +1,17 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++/* { dg-skip-if "" { arm*-*-* } } */
++
++uint8x16x2_t
++f_vld2q_lane_u8 (uint8_t * p, uint8x16x2_t v)
++{
++  uint8x16x2_t res;
++  /* { dg-error "lane 16 out of range 0 - 15" "" { xfail arm*-*-* } 0 } */
++  res = vld2q_lane_u8 (p, v, 16);
++  /* { dg-error "lane -1 out of range 0 - 15" "" { xfail arm*-*-* } 0 } */
++  res = vld2q_lane_u8 (p, v, -1);
++  return res;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld3_lane_f16_indices_1.c
+@@ -0,0 +1,16 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++
++float16x4x3_t
++f_vld3_lane_f16 (float16_t * p, float16x4x3_t v)
++{
++  float16x4x3_t res;
++  /* { dg-error "lane 4 out of range 0 - 3" "" { xfail arm*-*-* } 0 } */
++  res = vld3_lane_f16 (p, v, 4);
++  /* { dg-error "lane -1 out of range 0 - 3" "" { xfail arm*-*-* } 0 } */
++  res = vld3_lane_f16 (p, v, -1);
++  return res;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld3_lane_f32_indices_1.c
+@@ -0,0 +1,16 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++
++float32x2x3_t
++f_vld3_lane_f32 (float32_t * p, float32x2x3_t v)
++{
++  float32x2x3_t res;
++  /* { dg-error "lane 2 out of range 0 - 1" "" { xfail arm*-*-* } 0 } */
++  res = vld3_lane_f32 (p, v, 2);
++  /* { dg-error "lane -1 out of range 0 - 1" "" { xfail arm*-*-* } 0 } */
++  res = vld3_lane_f32 (p, v, -1);
++  return res;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld3_lane_f64_indices_1.c
+@@ -0,0 +1,17 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++/* { dg-skip-if "" { arm*-*-* } } */
++
++float64x1x3_t
++f_vld3_lane_f64 (float64_t * p, float64x1x3_t v)
++{
++  float64x1x3_t res;
++  /* { dg-error "lane 1 out of range 0 - 0" "" { xfail arm*-*-* } 0 } */
++  res = vld3_lane_f64 (p, v, 1);
++  /* { dg-error "lane -1 out of range 0 - 0" "" { xfail arm*-*-* } 0 } */
++  res = vld3_lane_f64 (p, v, -1);
++  return res;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld3_lane_p8_indices_1.c
+@@ -0,0 +1,16 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++
++poly8x8x3_t
++f_vld3_lane_p8 (poly8_t * p, poly8x8x3_t v)
++{
++  poly8x8x3_t res;
++  /* { dg-error "lane 8 out of range 0 - 7" "" { xfail arm*-*-* } 0 } */
++  res = vld3_lane_p8 (p, v, 8);
++  /* { dg-error "lane -1 out of range 0 - 7" "" { xfail arm*-*-* } 0 } */
++  res = vld3_lane_p8 (p, v, -1);
++  return res;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld3_lane_s16_indices_1.c
+@@ -0,0 +1,16 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++
++int16x4x3_t
++f_vld3_lane_s16 (int16_t * p, int16x4x3_t v)
++{
++  int16x4x3_t res;
++  /* { dg-error "lane 4 out of range 0 - 3" "" { xfail arm*-*-* } 0 } */
++  res = vld3_lane_s16 (p, v, 4);
++  /* { dg-error "lane -1 out of range 0 - 3" "" { xfail arm*-*-* } 0 } */
++  res = vld3_lane_s16 (p, v, -1);
++  return res;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld3_lane_s32_indices_1.c
+@@ -0,0 +1,16 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++
++int32x2x3_t
++f_vld3_lane_s32 (int32_t * p, int32x2x3_t v)
++{
++  int32x2x3_t res;
++  /* { dg-error "lane 2 out of range 0 - 1" "" { xfail arm*-*-* } 0 } */
++  res = vld3_lane_s32 (p, v, 2);
++  /* { dg-error "lane -1 out of range 0 - 1" "" { xfail arm*-*-* } 0 } */
++  res = vld3_lane_s32 (p, v, -1);
++  return res;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld3_lane_s64_indices_1.c
+@@ -0,0 +1,17 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++/* { dg-skip-if "" { arm*-*-* } } */
++
++int64x1x3_t
++f_vld3_lane_s64 (int64_t * p, int64x1x3_t v)
++{
++  int64x1x3_t res;
++  /* { dg-error "lane 1 out of range 0 - 0" "" { xfail arm*-*-* } 0 } */
++  res = vld3_lane_s64 (p, v, 1);
++  /* { dg-error "lane -1 out of range 0 - 0" "" { xfail arm*-*-* } 0 } */
++  res = vld3_lane_s64 (p, v, -1);
++  return res;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld3_lane_s8_indices_1.c
+@@ -0,0 +1,16 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++
++int8x8x3_t
++f_vld3_lane_s8 (int8_t * p, int8x8x3_t v)
++{
++  int8x8x3_t res;
++  /* { dg-error "lane 8 out of range 0 - 7" "" { xfail arm*-*-* } 0 } */
++  res = vld3_lane_s8 (p, v, 8);
++  /* { dg-error "lane -1 out of range 0 - 7" "" { xfail arm*-*-* } 0 } */
++  res = vld3_lane_s8 (p, v, -1);
++  return res;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld3_lane_u16_indices_1.c
+@@ -0,0 +1,16 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++
++uint16x4x3_t
++f_vld3_lane_u16 (uint16_t * p, uint16x4x3_t v)
++{
++  uint16x4x3_t res;
++  /* { dg-error "lane 4 out of range 0 - 3" "" { xfail arm*-*-* } 0 } */
++  res = vld3_lane_u16 (p, v, 4);
++  /* { dg-error "lane -1 out of range 0 - 3" "" { xfail arm*-*-* } 0 } */
++  res = vld3_lane_u16 (p, v, -1);
++  return res;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld3_lane_u32_indices_1.c
+@@ -0,0 +1,16 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++
++uint32x2x3_t
++f_vld3_lane_u32 (uint32_t * p, uint32x2x3_t v)
++{
++  uint32x2x3_t res;
++  /* { dg-error "lane 2 out of range 0 - 1" "" { xfail arm*-*-* } 0 } */
++  res = vld3_lane_u32 (p, v, 2);
++  /* { dg-error "lane -1 out of range 0 - 1" "" { xfail arm*-*-* } 0 } */
++  res = vld3_lane_u32 (p, v, -1);
++  return res;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld3_lane_u64_indices_1.c
+@@ -0,0 +1,17 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++/* { dg-skip-if "" { arm*-*-* } } */
++
++uint64x1x3_t
++f_vld3_lane_u64 (uint64_t * p, uint64x1x3_t v)
++{
++  uint64x1x3_t res;
++  /* { dg-error "lane 1 out of range 0 - 0" "" { xfail arm*-*-* } 0 } */
++  res = vld3_lane_u64 (p, v, 1);
++  /* { dg-error "lane -1 out of range 0 - 0" "" { xfail arm*-*-* } 0 } */
++  res = vld3_lane_u64 (p, v, -1);
++  return res;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld3_lane_u8_indices_1.c
+@@ -0,0 +1,16 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++
++uint8x8x3_t
++f_vld3_lane_u8 (uint8_t * p, uint8x8x3_t v)
++{
++  uint8x8x3_t res;
++  /* { dg-error "lane 8 out of range 0 - 7" "" { xfail arm*-*-* } 0 } */
++  res = vld3_lane_u8 (p, v, 8);
++  /* { dg-error "lane -1 out of range 0 - 7" "" { xfail arm*-*-* } 0 } */
++  res = vld3_lane_u8 (p, v, -1);
++  return res;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld3q_lane_f16_indices_1.c
+@@ -0,0 +1,16 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++
++float16x8x3_t
++f_vld3q_lane_f16 (float16_t * p, float16x8x3_t v)
++{
++  float16x8x3_t res;
++  /* { dg-error "lane 8 out of range 0 - 7" "" { xfail arm*-*-* } 0 } */
++  res = vld3q_lane_f16 (p, v, 8);
++  /* { dg-error "lane -1 out of range 0 - 7" "" { xfail arm*-*-* } 0 } */
++  res = vld3q_lane_f16 (p, v, -1);
++  return res;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld3q_lane_f32_indices_1.c
+@@ -0,0 +1,16 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++
++float32x4x3_t
++f_vld3q_lane_f32 (float32_t * p, float32x4x3_t v)
++{
++  float32x4x3_t res;
++  /* { dg-error "lane 4 out of range 0 - 3" "" { xfail arm*-*-* } 0 } */
++  res = vld3q_lane_f32 (p, v, 4);
++  /* { dg-error "lane -1 out of range 0 - 3" "" { xfail arm*-*-* } 0 } */
++  res = vld3q_lane_f32 (p, v, -1);
++  return res;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld3q_lane_f64_indices_1.c
+@@ -0,0 +1,17 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++/* { dg-skip-if "" { arm*-*-* } } */
++
++float64x2x3_t
++f_vld3q_lane_f64 (float64_t * p, float64x2x3_t v)
++{
++  float64x2x3_t res;
++  /* { dg-error "lane 2 out of range 0 - 1" "" { xfail arm*-*-* } 0 } */
++  res = vld3q_lane_f64 (p, v, 2);
++  /* { dg-error "lane -1 out of range 0 - 1" "" { xfail arm*-*-* } 0 } */
++  res = vld3q_lane_f64 (p, v, -1);
++  return res;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld3q_lane_p8_indices_1.c
+@@ -0,0 +1,17 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++/* { dg-skip-if "" { arm*-*-* } } */
++
++poly8x16x3_t
++f_vld3q_lane_p8 (poly8_t * p, poly8x16x3_t v)
++{
++  poly8x16x3_t res;
++  /* { dg-error "lane 16 out of range 0 - 15" "" { xfail arm*-*-* } 0 } */
++  res = vld3q_lane_p8 (p, v, 16);
++  /* { dg-error "lane -1 out of range 0 - 15" "" { xfail arm*-*-* } 0 } */
++  res = vld3q_lane_p8 (p, v, -1);
++  return res;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld3q_lane_s16_indices_1.c
+@@ -0,0 +1,16 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++
++int16x8x3_t
++f_vld3q_lane_s16 (int16_t * p, int16x8x3_t v)
++{
++  int16x8x3_t res;
++  /* { dg-error "lane 8 out of range 0 - 7" "" { xfail arm*-*-* } 0 } */
++  res = vld3q_lane_s16 (p, v, 8);
++  /* { dg-error "lane -1 out of range 0 - 7" "" { xfail arm*-*-* } 0 } */
++  res = vld3q_lane_s16 (p, v, -1);
++  return res;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld3q_lane_s32_indices_1.c
+@@ -0,0 +1,16 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++
++int32x4x3_t
++f_vld3q_lane_s32 (int32_t * p, int32x4x3_t v)
++{
++  int32x4x3_t res;
++  /* { dg-error "lane 4 out of range 0 - 3" "" { xfail arm*-*-* } 0 } */
++  res = vld3q_lane_s32 (p, v, 4);
++  /* { dg-error "lane -1 out of range 0 - 3" "" { xfail arm*-*-* } 0 } */
++  res = vld3q_lane_s32 (p, v, -1);
++  return res;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld3q_lane_s64_indices_1.c
+@@ -0,0 +1,17 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++/* { dg-skip-if "" { arm*-*-* } } */
++
++int64x2x3_t
++f_vld3q_lane_s64 (int64_t * p, int64x2x3_t v)
++{
++  int64x2x3_t res;
++  /* { dg-error "lane 2 out of range 0 - 1" "" { xfail arm*-*-* } 0 } */
++  res = vld3q_lane_s64 (p, v, 2);
++  /* { dg-error "lane -1 out of range 0 - 1" "" { xfail arm*-*-* } 0 } */
++  res = vld3q_lane_s64 (p, v, -1);
++  return res;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld3q_lane_s8_indices_1.c
+@@ -0,0 +1,17 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++/* { dg-skip-if "" { arm*-*-* } } */
++
++int8x16x3_t
++f_vld3q_lane_s8 (int8_t * p, int8x16x3_t v)
++{
++  int8x16x3_t res;
++  /* { dg-error "lane 16 out of range 0 - 15" "" { xfail arm*-*-* } 0 } */
++  res = vld3q_lane_s8 (p, v, 16);
++  /* { dg-error "lane -1 out of range 0 - 15" "" { xfail arm*-*-* } 0 } */
++  res = vld3q_lane_s8 (p, v, -1);
++  return res;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld3q_lane_u16_indices_1.c
+@@ -0,0 +1,16 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++
++uint16x8x3_t
++f_vld3q_lane_u16 (uint16_t * p, uint16x8x3_t v)
++{
++  uint16x8x3_t res;
++  /* { dg-error "lane 8 out of range 0 - 7" "" { xfail arm*-*-* } 0 } */
++  res = vld3q_lane_u16 (p, v, 8);
++  /* { dg-error "lane -1 out of range 0 - 7" "" { xfail arm*-*-* } 0 } */
++  res = vld3q_lane_u16 (p, v, -1);
++  return res;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld3q_lane_u32_indices_1.c
+@@ -0,0 +1,16 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++
++uint32x4x3_t
++f_vld3q_lane_u32 (uint32_t * p, uint32x4x3_t v)
++{
++  uint32x4x3_t res;
++  /* { dg-error "lane 4 out of range 0 - 3" "" { xfail arm*-*-* } 0 } */
++  res = vld3q_lane_u32 (p, v, 4);
++  /* { dg-error "lane -1 out of range 0 - 3" "" { xfail arm*-*-* } 0 } */
++  res = vld3q_lane_u32 (p, v, -1);
++  return res;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld3q_lane_u64_indices_1.c
+@@ -0,0 +1,17 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++/* { dg-skip-if "" { arm*-*-* } } */
++
++uint64x2x3_t
++f_vld3q_lane_u64 (uint64_t * p, uint64x2x3_t v)
++{
++  uint64x2x3_t res;
++  /* { dg-error "lane 2 out of range 0 - 1" "" { xfail arm*-*-* } 0 } */
++  res = vld3q_lane_u64 (p, v, 2);
++  /* { dg-error "lane -1 out of range 0 - 1" "" { xfail arm*-*-* } 0 } */
++  res = vld3q_lane_u64 (p, v, -1);
++  return res;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld3q_lane_u8_indices_1.c
+@@ -0,0 +1,17 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++/* { dg-skip-if "" { arm*-*-* } } */
++
++uint8x16x3_t
++f_vld3q_lane_u8 (uint8_t * p, uint8x16x3_t v)
++{
++  uint8x16x3_t res;
++  /* { dg-error "lane 16 out of range 0 - 15" "" { xfail arm*-*-* } 0 } */
++  res = vld3q_lane_u8 (p, v, 16);
++  /* { dg-error "lane -1 out of range 0 - 15" "" { xfail arm*-*-* } 0 } */
++  res = vld3q_lane_u8 (p, v, -1);
++  return res;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld4_lane_f16_indices_1.c
+@@ -0,0 +1,16 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++
++float16x4x4_t
++f_vld4_lane_f16 (float16_t * p, float16x4x4_t v)
++{
++  float16x4x4_t res;
++  /* { dg-error "lane 4 out of range 0 - 3" "" { xfail arm*-*-* } 0 } */
++  res = vld4_lane_f16 (p, v, 4);
++  /* { dg-error "lane -1 out of range 0 - 3" "" { xfail arm*-*-* } 0 } */
++  res = vld4_lane_f16 (p, v, -1);
++  return res;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld4_lane_f32_indices_1.c
+@@ -0,0 +1,16 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++
++float32x2x4_t
++f_vld4_lane_f32 (float32_t * p, float32x2x4_t v)
++{
++  float32x2x4_t res;
++  /* { dg-error "lane 2 out of range 0 - 1" "" { xfail arm*-*-* } 0 } */
++  res = vld4_lane_f32 (p, v, 2);
++  /* { dg-error "lane -1 out of range 0 - 1" "" { xfail arm*-*-* } 0 } */
++  res = vld4_lane_f32 (p, v, -1);
++  return res;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld4_lane_f64_indices_1.c
+@@ -0,0 +1,17 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++/* { dg-skip-if "" { arm*-*-* } } */
++
++float64x1x4_t
++f_vld4_lane_f64 (float64_t * p, float64x1x4_t v)
++{
++  float64x1x4_t res;
++  /* { dg-error "lane 1 out of range 0 - 0" "" { xfail arm*-*-* } 0 } */
++  res = vld4_lane_f64 (p, v, 1);
++  /* { dg-error "lane -1 out of range 0 - 0" "" { xfail arm*-*-* } 0 } */
++  res = vld4_lane_f64 (p, v, -1);
++  return res;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld4_lane_p8_indices_1.c
+@@ -0,0 +1,16 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++
++poly8x8x4_t
++f_vld4_lane_p8 (poly8_t * p, poly8x8x4_t v)
++{
++  poly8x8x4_t res;
++  /* { dg-error "lane 8 out of range 0 - 7" "" { xfail arm*-*-* } 0 } */
++  res = vld4_lane_p8 (p, v, 8);
++  /* { dg-error "lane -1 out of range 0 - 7" "" { xfail arm*-*-* } 0 } */
++  res = vld4_lane_p8 (p, v, -1);
++  return res;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld4_lane_s16_indices_1.c
+@@ -0,0 +1,16 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++
++int16x4x4_t
++f_vld4_lane_s16 (int16_t * p, int16x4x4_t v)
++{
++  int16x4x4_t res;
++  /* { dg-error "lane 4 out of range 0 - 3" "" { xfail arm*-*-* } 0 } */
++  res = vld4_lane_s16 (p, v, 4);
++  /* { dg-error "lane -1 out of range 0 - 3" "" { xfail arm*-*-* } 0 } */
++  res = vld4_lane_s16 (p, v, -1);
++  return res;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld4_lane_s32_indices_1.c
+@@ -0,0 +1,16 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++
++int32x2x4_t
++f_vld4_lane_s32 (int32_t * p, int32x2x4_t v)
++{
++  int32x2x4_t res;
++  /* { dg-error "lane 2 out of range 0 - 1" "" { xfail arm*-*-* } 0 } */
++  res = vld4_lane_s32 (p, v, 2);
++  /* { dg-error "lane -1 out of range 0 - 1" "" { xfail arm*-*-* } 0 } */
++  res = vld4_lane_s32 (p, v, -1);
++  return res;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld4_lane_s64_indices_1.c
+@@ -0,0 +1,17 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++/* { dg-skip-if "" { arm*-*-* } } */
++
++int64x1x4_t
++f_vld4_lane_s64 (int64_t * p, int64x1x4_t v)
++{
++  int64x1x4_t res;
++  /* { dg-error "lane 1 out of range 0 - 0" "" { xfail arm*-*-* } 0 } */
++  res = vld4_lane_s64 (p, v, 1);
++  /* { dg-error "lane -1 out of range 0 - 0" "" { xfail arm*-*-* } 0 } */
++  res = vld4_lane_s64 (p, v, -1);
++  return res;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld4_lane_s8_indices_1.c
+@@ -0,0 +1,16 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++
++int8x8x4_t
++f_vld4_lane_s8 (int8_t * p, int8x8x4_t v)
++{
++  int8x8x4_t res;
++  /* { dg-error "lane 8 out of range 0 - 7" "" { xfail arm*-*-* } 0 } */
++  res = vld4_lane_s8 (p, v, 8);
++  /* { dg-error "lane -1 out of range 0 - 7" "" { xfail arm*-*-* } 0 } */
++  res = vld4_lane_s8 (p, v, -1);
++  return res;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld4_lane_u16_indices_1.c
+@@ -0,0 +1,16 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++
++uint16x4x4_t
++f_vld4_lane_u16 (uint16_t * p, uint16x4x4_t v)
++{
++  uint16x4x4_t res;
++  /* { dg-error "lane 4 out of range 0 - 3" "" { xfail arm*-*-* } 0 } */
++  res = vld4_lane_u16 (p, v, 4);
++  /* { dg-error "lane -1 out of range 0 - 3" "" { xfail arm*-*-* } 0 } */
++  res = vld4_lane_u16 (p, v, -1);
++  return res;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld4_lane_u32_indices_1.c
+@@ -0,0 +1,16 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++
++uint32x2x4_t
++f_vld4_lane_u32 (uint32_t * p, uint32x2x4_t v)
++{
++  uint32x2x4_t res;
++  /* { dg-error "lane 2 out of range 0 - 1" "" { xfail arm*-*-* } 0 } */
++  res = vld4_lane_u32 (p, v, 2);
++  /* { dg-error "lane -1 out of range 0 - 1" "" { xfail arm*-*-* } 0 } */
++  res = vld4_lane_u32 (p, v, -1);
++  return res;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld4_lane_u64_indices_1.c
+@@ -0,0 +1,17 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++/* { dg-skip-if "" { arm*-*-* } } */
++
++uint64x1x4_t
++f_vld4_lane_u64 (uint64_t * p, uint64x1x4_t v)
++{
++  uint64x1x4_t res;
++  /* { dg-error "lane 1 out of range 0 - 0" "" { xfail arm*-*-* } 0 } */
++  res = vld4_lane_u64 (p, v, 1);
++  /* { dg-error "lane -1 out of range 0 - 0" "" { xfail arm*-*-* } 0 } */
++  res = vld4_lane_u64 (p, v, -1);
++  return res;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld4_lane_u8_indices_1.c
+@@ -0,0 +1,16 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++
++uint8x8x4_t
++f_vld4_lane_u8 (uint8_t * p, uint8x8x4_t v)
++{
++  uint8x8x4_t res;
++  /* { dg-error "lane 8 out of range 0 - 7" "" { xfail arm*-*-* } 0 } */
++  res = vld4_lane_u8 (p, v, 8);
++  /* { dg-error "lane -1 out of range 0 - 7" "" { xfail arm*-*-* } 0 } */
++  res = vld4_lane_u8 (p, v, -1);
++  return res;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld4q_lane_f16_indices_1.c
+@@ -0,0 +1,16 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++
++float16x8x4_t
++f_vld4q_lane_f16 (float16_t * p, float16x8x4_t v)
++{
++  float16x8x4_t res;
++  /* { dg-error "lane 8 out of range 0 - 7" "" { xfail arm*-*-* } 0 } */
++  res = vld4q_lane_f16 (p, v, 8);
++  /* { dg-error "lane -1 out of range 0 - 7" "" { xfail arm*-*-* } 0 } */
++  res = vld4q_lane_f16 (p, v, -1);
++  return res;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld4q_lane_f32_indices_1.c
+@@ -0,0 +1,16 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++
++float32x4x4_t
++f_vld4q_lane_f32 (float32_t * p, float32x4x4_t v)
++{
++  float32x4x4_t res;
++  /* { dg-error "lane 4 out of range 0 - 3" "" { xfail arm*-*-* } 0 } */
++  res = vld4q_lane_f32 (p, v, 4);
++  /* { dg-error "lane -1 out of range 0 - 3" "" { xfail arm*-*-* } 0 } */
++  res = vld4q_lane_f32 (p, v, -1);
++  return res;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld4q_lane_f64_indices_1.c
+@@ -0,0 +1,17 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++/* { dg-skip-if "" { arm*-*-* } } */
++
++float64x2x4_t
++f_vld4q_lane_f64 (float64_t * p, float64x2x4_t v)
++{
++  float64x2x4_t res;
++  /* { dg-error "lane 2 out of range 0 - 1" "" { xfail arm*-*-* } 0 } */
++  res = vld4q_lane_f64 (p, v, 2);
++  /* { dg-error "lane -1 out of range 0 - 1" "" { xfail arm*-*-* } 0 } */
++  res = vld4q_lane_f64 (p, v, -1);
++  return res;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld4q_lane_p8_indices_1.c
+@@ -0,0 +1,17 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++/* { dg-skip-if "" { arm*-*-* } } */
++
++poly8x16x4_t
++f_vld4q_lane_p8 (poly8_t * p, poly8x16x4_t v)
++{
++  poly8x16x4_t res;
++  /* { dg-error "lane 16 out of range 0 - 15" "" { xfail arm*-*-* } 0 } */
++  res = vld4q_lane_p8 (p, v, 16);
++  /* { dg-error "lane -1 out of range 0 - 15" "" { xfail arm*-*-* } 0 } */
++  res = vld4q_lane_p8 (p, v, -1);
++  return res;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld4q_lane_s16_indices_1.c
+@@ -0,0 +1,16 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++
++int16x8x4_t
++f_vld4q_lane_s16 (int16_t * p, int16x8x4_t v)
++{
++  int16x8x4_t res;
++  /* { dg-error "lane 8 out of range 0 - 7" "" { xfail arm*-*-* } 0 } */
++  res = vld4q_lane_s16 (p, v, 8);
++  /* { dg-error "lane -1 out of range 0 - 7" "" { xfail arm*-*-* } 0 } */
++  res = vld4q_lane_s16 (p, v, -1);
++  return res;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld4q_lane_s32_indices_1.c
+@@ -0,0 +1,16 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++
++int32x4x4_t
++f_vld4q_lane_s32 (int32_t * p, int32x4x4_t v)
++{
++  int32x4x4_t res;
++  /* { dg-error "lane 4 out of range 0 - 3" "" { xfail arm*-*-* } 0 } */
++  res = vld4q_lane_s32 (p, v, 4);
++  /* { dg-error "lane -1 out of range 0 - 3" "" { xfail arm*-*-* } 0 } */
++  res = vld4q_lane_s32 (p, v, -1);
++  return res;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld4q_lane_s64_indices_1.c
+@@ -0,0 +1,17 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++/* { dg-skip-if "" { arm*-*-* } } */
++
++int64x2x4_t
++f_vld4q_lane_s64 (int64_t * p, int64x2x4_t v)
++{
++  int64x2x4_t res;
++  /* { dg-error "lane 2 out of range 0 - 1" "" { xfail arm*-*-* } 0 } */
++  res = vld4q_lane_s64 (p, v, 2);
++  /* { dg-error "lane -1 out of range 0 - 1" "" { xfail arm*-*-* } 0 } */
++  res = vld4q_lane_s64 (p, v, -1);
++  return res;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld4q_lane_s8_indices_1.c
+@@ -0,0 +1,17 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++/* { dg-skip-if "" { arm*-*-* } } */
++
++int8x16x4_t
++f_vld4q_lane_s8 (int8_t * p, int8x16x4_t v)
++{
++  int8x16x4_t res;
++  /* { dg-error "lane 16 out of range 0 - 15" "" { xfail arm*-*-* } 0 } */
++  res = vld4q_lane_s8 (p, v, 16);
++  /* { dg-error "lane -1 out of range 0 - 15" "" { xfail arm*-*-* } 0 } */
++  res = vld4q_lane_s8 (p, v, -1);
++  return res;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld4q_lane_u16_indices_1.c
+@@ -0,0 +1,16 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++
++uint16x8x4_t
++f_vld4q_lane_u16 (uint16_t * p, uint16x8x4_t v)
++{
++  uint16x8x4_t res;
++  /* { dg-error "lane 8 out of range 0 - 7" "" { xfail arm*-*-* } 0 } */
++  res = vld4q_lane_u16 (p, v, 8);
++  /* { dg-error "lane -1 out of range 0 - 7" "" { xfail arm*-*-* } 0 } */
++  res = vld4q_lane_u16 (p, v, -1);
++  return res;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld4q_lane_u32_indices_1.c
+@@ -0,0 +1,16 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++
++uint32x4x4_t
++f_vld4q_lane_u32 (uint32_t * p, uint32x4x4_t v)
++{
++  uint32x4x4_t res;
++  /* { dg-error "lane 4 out of range 0 - 3" "" { xfail arm*-*-* } 0 } */
++  res = vld4q_lane_u32 (p, v, 4);
++  /* { dg-error "lane -1 out of range 0 - 3" "" { xfail arm*-*-* } 0 } */
++  res = vld4q_lane_u32 (p, v, -1);
++  return res;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld4q_lane_u64_indices_1.c
+@@ -0,0 +1,17 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++/* { dg-skip-if "" { arm*-*-* } } */
++
++uint64x2x4_t
++f_vld4q_lane_u64 (uint64_t * p, uint64x2x4_t v)
++{
++  uint64x2x4_t res;
++  /* { dg-error "lane 2 out of range 0 - 1" "" { xfail arm*-*-* } 0 } */
++  res = vld4q_lane_u64 (p, v, 2);
++  /* { dg-error "lane -1 out of range 0 - 1" "" { xfail arm*-*-* } 0 } */
++  res = vld4q_lane_u64 (p, v, -1);
++  return res;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld4q_lane_u8_indices_1.c
+@@ -0,0 +1,17 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++/* { dg-skip-if "" { arm*-*-* } } */
++
++uint8x16x4_t
++f_vld4q_lane_u8 (uint8_t * p, uint8x16x4_t v)
++{
++  uint8x16x4_t res;
++  /* { dg-error "lane 16 out of range 0 - 15" "" { xfail arm*-*-* } 0 } */
++  res = vld4q_lane_u8 (p, v, 16);
++  /* { dg-error "lane -1 out of range 0 - 15" "" { xfail arm*-*-* } 0 } */
++  res = vld4q_lane_u8 (p, v, -1);
++  return res;
++}
+--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vldX.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vldX.c
+@@ -18,6 +18,7 @@ VECT_VAR_DECL(expected_vld2_0,uint,64,1) [] = { 0xfffffffffffffff0 };
+ VECT_VAR_DECL(expected_vld2_0,poly,8,8) [] = { 0xf0, 0xf1, 0xf2, 0xf3,
+ 					       0xf4, 0xf5, 0xf6, 0xf7 };
+ VECT_VAR_DECL(expected_vld2_0,poly,16,4) [] = { 0xfff0, 0xfff1, 0xfff2, 0xfff3 };
++VECT_VAR_DECL(expected_vld2_0,hfloat,16,4) [] = { 0xcc00, 0xcb80, 0xcb00, 0xca80 };
+ VECT_VAR_DECL(expected_vld2_0,hfloat,32,2) [] = { 0xc1800000, 0xc1700000 };
+ VECT_VAR_DECL(expected_vld2_0,int,8,16) [] = { 0xf0, 0xf1, 0xf2, 0xf3,
+ 					       0xf4, 0xf5, 0xf6, 0xf7,
+@@ -27,8 +28,6 @@ VECT_VAR_DECL(expected_vld2_0,int,16,8) [] = { 0xfff0, 0xfff1, 0xfff2, 0xfff3,
+ 					       0xfff4, 0xfff5, 0xfff6, 0xfff7 };
+ VECT_VAR_DECL(expected_vld2_0,int,32,4) [] = { 0xfffffff0, 0xfffffff1,
+ 					       0xfffffff2, 0xfffffff3 };
+-VECT_VAR_DECL(expected_vld2_0,int,64,2) [] = { 0x3333333333333333,
+-					       0x3333333333333333 };
+ VECT_VAR_DECL(expected_vld2_0,uint,8,16) [] = { 0xf0, 0xf1, 0xf2, 0xf3,
+ 						0xf4, 0xf5, 0xf6, 0xf7,
+ 						0xf8, 0xf9, 0xfa, 0xfb,
+@@ -37,14 +36,14 @@ VECT_VAR_DECL(expected_vld2_0,uint,16,8) [] = { 0xfff0, 0xfff1, 0xfff2, 0xfff3,
+ 						0xfff4, 0xfff5, 0xfff6, 0xfff7 };
+ VECT_VAR_DECL(expected_vld2_0,uint,32,4) [] = { 0xfffffff0, 0xfffffff1,
+ 						0xfffffff2, 0xfffffff3 };
+-VECT_VAR_DECL(expected_vld2_0,uint,64,2) [] = { 0x3333333333333333,
+-						0x3333333333333333 };
+ VECT_VAR_DECL(expected_vld2_0,poly,8,16) [] = { 0xf0, 0xf1, 0xf2, 0xf3,
+ 						0xf4, 0xf5, 0xf6, 0xf7,
+ 						0xf8, 0xf9, 0xfa, 0xfb,
+ 						0xfc, 0xfd, 0xfe, 0xff };
+ VECT_VAR_DECL(expected_vld2_0,poly,16,8) [] = { 0xfff0, 0xfff1, 0xfff2, 0xfff3,
+ 						0xfff4, 0xfff5, 0xfff6, 0xfff7 };
++VECT_VAR_DECL(expected_vld2_0,hfloat,16,8) [] = { 0xcc00, 0xcb80, 0xcb00, 0xca80,
++						  0xca00, 0xc980, 0xc900, 0xc880 };
+ VECT_VAR_DECL(expected_vld2_0,hfloat,32,4) [] = { 0xc1800000, 0xc1700000,
+ 						  0xc1600000, 0xc1500000 };
+ 
+@@ -62,6 +61,7 @@ VECT_VAR_DECL(expected_vld2_1,uint,64,1) [] = { 0xfffffffffffffff1 };
+ VECT_VAR_DECL(expected_vld2_1,poly,8,8) [] = { 0xf8, 0xf9, 0xfa, 0xfb,
+ 					       0xfc, 0xfd, 0xfe, 0xff };
+ VECT_VAR_DECL(expected_vld2_1,poly,16,4) [] = { 0xfff4, 0xfff5, 0xfff6, 0xfff7 };
++VECT_VAR_DECL(expected_vld2_1,hfloat,16,4) [] = { 0xca00, 0xc980, 0xc900, 0xc880 };
+ VECT_VAR_DECL(expected_vld2_1,hfloat,32,2) [] = { 0xc1600000, 0xc1500000 };
+ VECT_VAR_DECL(expected_vld2_1,int,8,16) [] = { 0x0, 0x1, 0x2, 0x3,
+ 					       0x4, 0x5, 0x6, 0x7,
+@@ -71,8 +71,6 @@ VECT_VAR_DECL(expected_vld2_1,int,16,8) [] = { 0xfff8, 0xfff9, 0xfffa, 0xfffb,
+ 					       0xfffc, 0xfffd, 0xfffe, 0xffff };
+ VECT_VAR_DECL(expected_vld2_1,int,32,4) [] = { 0xfffffff4, 0xfffffff5,
+ 					       0xfffffff6, 0xfffffff7 };
+-VECT_VAR_DECL(expected_vld2_1,int,64,2) [] = { 0x3333333333333333,
+-					       0x3333333333333333 };
+ VECT_VAR_DECL(expected_vld2_1,uint,8,16) [] = { 0x0, 0x1, 0x2, 0x3,
+ 						0x4, 0x5, 0x6, 0x7,
+ 						0x8, 0x9, 0xa, 0xb,
+@@ -81,14 +79,14 @@ VECT_VAR_DECL(expected_vld2_1,uint,16,8) [] = { 0xfff8, 0xfff9, 0xfffa, 0xfffb,
+ 						0xfffc, 0xfffd, 0xfffe, 0xffff };
+ VECT_VAR_DECL(expected_vld2_1,uint,32,4) [] = { 0xfffffff4, 0xfffffff5,
+ 						0xfffffff6, 0xfffffff7 };
+-VECT_VAR_DECL(expected_vld2_1,uint,64,2) [] = { 0x3333333333333333,
+-						0x3333333333333333 };
+ VECT_VAR_DECL(expected_vld2_1,poly,8,16) [] = { 0x0, 0x1, 0x2, 0x3,
+ 						0x4, 0x5, 0x6, 0x7,
+ 						0x8, 0x9, 0xa, 0xb,
+ 						0xc, 0xd, 0xe, 0xf };
+ VECT_VAR_DECL(expected_vld2_1,poly,16,8) [] = { 0xfff8, 0xfff9, 0xfffa, 0xfffb,
+ 						0xfffc, 0xfffd, 0xfffe, 0xffff };
++VECT_VAR_DECL(expected_vld2_1,hfloat,16,8) [] = { 0xc800, 0xc700, 0xc600, 0xc500,
++						  0xc400, 0xc200, 0xc000, 0xbc00 };
+ VECT_VAR_DECL(expected_vld2_1,hfloat,32,4) [] = { 0xc1400000, 0xc1300000,
+ 						  0xc1200000, 0xc1100000 };
+ 
+@@ -106,6 +104,7 @@ VECT_VAR_DECL(expected_vld3_0,uint,64,1) [] = { 0xfffffffffffffff0 };
+ VECT_VAR_DECL(expected_vld3_0,poly,8,8) [] = { 0xf0, 0xf1, 0xf2, 0xf3,
+ 					       0xf4, 0xf5, 0xf6, 0xf7 };
+ VECT_VAR_DECL(expected_vld3_0,poly,16,4) [] = { 0xfff0, 0xfff1, 0xfff2, 0xfff3 };
++VECT_VAR_DECL(expected_vld3_0,hfloat,16,4) [] = { 0xcc00, 0xcb80, 0xcb00, 0xca80 };
+ VECT_VAR_DECL(expected_vld3_0,hfloat,32,2) [] = { 0xc1800000, 0xc1700000 };
+ VECT_VAR_DECL(expected_vld3_0,int,8,16) [] = { 0xf0, 0xf1, 0xf2, 0xf3,
+ 					       0xf4, 0xf5, 0xf6, 0xf7,
+@@ -115,8 +114,6 @@ VECT_VAR_DECL(expected_vld3_0,int,16,8) [] = { 0xfff0, 0xfff1, 0xfff2, 0xfff3,
+ 					       0xfff4, 0xfff5, 0xfff6, 0xfff7 };
+ VECT_VAR_DECL(expected_vld3_0,int,32,4) [] = { 0xfffffff0, 0xfffffff1,
+ 					       0xfffffff2, 0xfffffff3 };
+-VECT_VAR_DECL(expected_vld3_0,int,64,2) [] = { 0x3333333333333333,
+-					       0x3333333333333333 };
+ VECT_VAR_DECL(expected_vld3_0,uint,8,16) [] = { 0xf0, 0xf1, 0xf2, 0xf3,
+ 						0xf4, 0xf5, 0xf6, 0xf7,
+ 						0xf8, 0xf9, 0xfa, 0xfb,
+@@ -125,14 +122,14 @@ VECT_VAR_DECL(expected_vld3_0,uint,16,8) [] = { 0xfff0, 0xfff1, 0xfff2, 0xfff3,
+ 						0xfff4, 0xfff5, 0xfff6, 0xfff7 };
+ VECT_VAR_DECL(expected_vld3_0,uint,32,4) [] = { 0xfffffff0, 0xfffffff1,
+ 						0xfffffff2, 0xfffffff3 };
+-VECT_VAR_DECL(expected_vld3_0,uint,64,2) [] = { 0x3333333333333333,
+-						0x3333333333333333 };
+ VECT_VAR_DECL(expected_vld3_0,poly,8,16) [] = { 0xf0, 0xf1, 0xf2, 0xf3,
+ 						0xf4, 0xf5, 0xf6, 0xf7,
+ 						0xf8, 0xf9, 0xfa, 0xfb,
+ 						0xfc, 0xfd, 0xfe, 0xff };
+ VECT_VAR_DECL(expected_vld3_0,poly,16,8) [] = { 0xfff0, 0xfff1, 0xfff2, 0xfff3,
+ 						0xfff4, 0xfff5, 0xfff6, 0xfff7 };
++VECT_VAR_DECL(expected_vld3_0,hfloat,16,8) [] = { 0xcc00, 0xcb80, 0xcb00, 0xca80,
++						  0xca00, 0xc980, 0xc900, 0xc880 };
+ VECT_VAR_DECL(expected_vld3_0,hfloat,32,4) [] = { 0xc1800000, 0xc1700000,
+ 						  0xc1600000, 0xc1500000 };
+ 
+@@ -150,6 +147,7 @@ VECT_VAR_DECL(expected_vld3_1,uint,64,1) [] = { 0xfffffffffffffff1 };
+ VECT_VAR_DECL(expected_vld3_1,poly,8,8) [] = { 0xf8, 0xf9, 0xfa, 0xfb,
+ 					       0xfc, 0xfd, 0xfe, 0xff };
+ VECT_VAR_DECL(expected_vld3_1,poly,16,4) [] = { 0xfff4, 0xfff5, 0xfff6, 0xfff7 };
++VECT_VAR_DECL(expected_vld3_1,hfloat,16,4) [] = { 0xca00, 0xc980, 0xc900, 0xc880 };
+ VECT_VAR_DECL(expected_vld3_1,hfloat,32,2) [] = { 0xc1600000, 0xc1500000 };
+ VECT_VAR_DECL(expected_vld3_1,int,8,16) [] = { 0x0, 0x1, 0x2, 0x3,
+ 					       0x4, 0x5, 0x6, 0x7,
+@@ -159,8 +157,6 @@ VECT_VAR_DECL(expected_vld3_1,int,16,8) [] = { 0xfff8, 0xfff9, 0xfffa, 0xfffb,
+ 					       0xfffc, 0xfffd, 0xfffe, 0xffff };
+ VECT_VAR_DECL(expected_vld3_1,int,32,4) [] = { 0xfffffff4, 0xfffffff5,
+ 					       0xfffffff6, 0xfffffff7 };
+-VECT_VAR_DECL(expected_vld3_1,int,64,2) [] = { 0x3333333333333333,
+-					       0x3333333333333333 };
+ VECT_VAR_DECL(expected_vld3_1,uint,8,16) [] = { 0x0, 0x1, 0x2, 0x3,
+ 						0x4, 0x5, 0x6, 0x7,
+ 						0x8, 0x9, 0xa, 0xb,
+@@ -169,14 +165,14 @@ VECT_VAR_DECL(expected_vld3_1,uint,16,8) [] = { 0xfff8, 0xfff9, 0xfffa, 0xfffb,
+ 						0xfffc, 0xfffd, 0xfffe, 0xffff };
+ VECT_VAR_DECL(expected_vld3_1,uint,32,4) [] = { 0xfffffff4, 0xfffffff5,
+ 						0xfffffff6, 0xfffffff7 };
+-VECT_VAR_DECL(expected_vld3_1,uint,64,2) [] = { 0x3333333333333333,
+-						0x3333333333333333 };
+ VECT_VAR_DECL(expected_vld3_1,poly,8,16) [] = { 0x0, 0x1, 0x2, 0x3,
+ 						0x4, 0x5, 0x6, 0x7,
+ 						0x8, 0x9, 0xa, 0xb,
+ 						0xc, 0xd, 0xe, 0xf };
+ VECT_VAR_DECL(expected_vld3_1,poly,16,8) [] = { 0xfff8, 0xfff9, 0xfffa, 0xfffb,
+ 						0xfffc, 0xfffd, 0xfffe, 0xffff };
++VECT_VAR_DECL(expected_vld3_1,hfloat,16,8) [] = { 0xc800, 0xc700, 0xc600, 0xc500,
++						  0xc400, 0xc200, 0xc000, 0xbc00 };
+ VECT_VAR_DECL(expected_vld3_1,hfloat,32,4) [] = { 0xc1400000, 0xc1300000,
+ 						  0xc1200000, 0xc1100000 };
+ 
+@@ -197,6 +193,7 @@ VECT_VAR_DECL(expected_vld3_2,poly,8,8) [] = { 0x0, 0x1, 0x2, 0x3,
+ 					       0x4, 0x5, 0x6, 0x7 };
+ VECT_VAR_DECL(expected_vld3_2,poly,16,4) [] = { 0xfff8, 0xfff9,
+ 						0xfffa, 0xfffb };
++VECT_VAR_DECL(expected_vld3_2,hfloat,16,4) [] = { 0xc800, 0xc700, 0xc600, 0xc500 };
+ VECT_VAR_DECL(expected_vld3_2,hfloat,32,2) [] = { 0xc1400000, 0xc1300000 };
+ VECT_VAR_DECL(expected_vld3_2,int,8,16) [] = { 0x10, 0x11, 0x12, 0x13,
+ 					       0x14, 0x15, 0x16, 0x17,
+@@ -206,8 +203,6 @@ VECT_VAR_DECL(expected_vld3_2,int,16,8) [] = { 0x0, 0x1, 0x2, 0x3,
+ 					       0x4, 0x5, 0x6, 0x7 };
+ VECT_VAR_DECL(expected_vld3_2,int,32,4) [] = { 0xfffffff8, 0xfffffff9,
+ 					       0xfffffffa, 0xfffffffb };
+-VECT_VAR_DECL(expected_vld3_2,int,64,2) [] = { 0x3333333333333333,
+-					       0x3333333333333333 };
+ VECT_VAR_DECL(expected_vld3_2,uint,8,16) [] = { 0x10, 0x11, 0x12, 0x13,
+ 						0x14, 0x15, 0x16, 0x17,
+ 						0x18, 0x19, 0x1a, 0x1b,
+@@ -216,14 +211,14 @@ VECT_VAR_DECL(expected_vld3_2,uint,16,8) [] = { 0x0, 0x1, 0x2, 0x3,
+ 						0x4, 0x5, 0x6, 0x7 };
+ VECT_VAR_DECL(expected_vld3_2,uint,32,4) [] = { 0xfffffff8, 0xfffffff9,
+ 						0xfffffffa, 0xfffffffb };
+-VECT_VAR_DECL(expected_vld3_2,uint,64,2) [] = { 0x3333333333333333,
+-						0x3333333333333333 };
+ VECT_VAR_DECL(expected_vld3_2,poly,8,16) [] = { 0x10, 0x11, 0x12, 0x13,
+ 						0x14, 0x15, 0x16, 0x17,
+ 						0x18, 0x19, 0x1a, 0x1b,
+ 						0x1c, 0x1d, 0x1e, 0x1f };
+ VECT_VAR_DECL(expected_vld3_2,poly,16,8) [] = { 0x0, 0x1, 0x2, 0x3,
+ 						0x4, 0x5, 0x6, 0x7 };
++VECT_VAR_DECL(expected_vld3_2,hfloat,16,8) [] = { 0x0000, 0x3c00, 0x4000, 0x4200,
++						  0x4400, 0x4500, 0x4600, 0x4700 };
+ VECT_VAR_DECL(expected_vld3_2,hfloat,32,4) [] = { 0xc1000000, 0xc0e00000,
+ 						  0xc0c00000, 0xc0a00000 };
+ 
+@@ -243,6 +238,7 @@ VECT_VAR_DECL(expected_vld4_0,uint,64,1) [] = { 0xfffffffffffffff0 };
+ VECT_VAR_DECL(expected_vld4_0,poly,8,8) [] = { 0xf0, 0xf1, 0xf2, 0xf3,
+ 					       0xf4, 0xf5, 0xf6, 0xf7 };
+ VECT_VAR_DECL(expected_vld4_0,poly,16,4) [] = { 0xfff0, 0xfff1, 0xfff2, 0xfff3 };
++VECT_VAR_DECL(expected_vld4_0,hfloat,16,4) [] = { 0xcc00, 0xcb80, 0xcb00, 0xca80 };
+ VECT_VAR_DECL(expected_vld4_0,hfloat,32,2) [] = { 0xc1800000, 0xc1700000 };
+ VECT_VAR_DECL(expected_vld4_0,int,8,16) [] = { 0xf0, 0xf1, 0xf2, 0xf3,
+ 					       0xf4, 0xf5, 0xf6, 0xf7,
+@@ -252,8 +248,6 @@ VECT_VAR_DECL(expected_vld4_0,int,16,8) [] = { 0xfff0, 0xfff1, 0xfff2, 0xfff3,
+ 					       0xfff4, 0xfff5, 0xfff6, 0xfff7 };
+ VECT_VAR_DECL(expected_vld4_0,int,32,4) [] = { 0xfffffff0, 0xfffffff1,
+ 					       0xfffffff2, 0xfffffff3 };
+-VECT_VAR_DECL(expected_vld4_0,int,64,2) [] = { 0x3333333333333333,
+-					       0x3333333333333333 };
+ VECT_VAR_DECL(expected_vld4_0,uint,8,16) [] = { 0xf0, 0xf1, 0xf2, 0xf3,
+ 						0xf4, 0xf5, 0xf6, 0xf7,
+ 						0xf8, 0xf9, 0xfa, 0xfb,
+@@ -262,14 +256,14 @@ VECT_VAR_DECL(expected_vld4_0,uint,16,8) [] = { 0xfff0, 0xfff1, 0xfff2, 0xfff3,
+ 						0xfff4, 0xfff5, 0xfff6, 0xfff7 };
+ VECT_VAR_DECL(expected_vld4_0,uint,32,4) [] = { 0xfffffff0, 0xfffffff1,
+ 						0xfffffff2, 0xfffffff3 };
+-VECT_VAR_DECL(expected_vld4_0,uint,64,2) [] = { 0x3333333333333333,
+-						0x3333333333333333 };
+ VECT_VAR_DECL(expected_vld4_0,poly,8,16) [] = { 0xf0, 0xf1, 0xf2, 0xf3,
+ 						0xf4, 0xf5, 0xf6, 0xf7,
+ 						0xf8, 0xf9, 0xfa, 0xfb,
+ 						0xfc, 0xfd, 0xfe, 0xff };
+ VECT_VAR_DECL(expected_vld4_0,poly,16,8) [] = { 0xfff0, 0xfff1, 0xfff2, 0xfff3,
+ 						0xfff4, 0xfff5, 0xfff6, 0xfff7 };
++VECT_VAR_DECL(expected_vld4_0,hfloat,16,8) [] = { 0xcc00, 0xcb80, 0xcb00, 0xca80,
++						  0xca00, 0xc980, 0xc900, 0xc880 };
+ VECT_VAR_DECL(expected_vld4_0,hfloat,32,4) [] = { 0xc1800000, 0xc1700000,
+ 						  0xc1600000, 0xc1500000 };
+ 
+@@ -287,6 +281,7 @@ VECT_VAR_DECL(expected_vld4_1,uint,64,1) [] = { 0xfffffffffffffff1 };
+ VECT_VAR_DECL(expected_vld4_1,poly,8,8) [] = { 0xf8, 0xf9, 0xfa, 0xfb,
+ 					       0xfc, 0xfd, 0xfe, 0xff };
+ VECT_VAR_DECL(expected_vld4_1,poly,16,4) [] = { 0xfff4, 0xfff5, 0xfff6, 0xfff7 };
++VECT_VAR_DECL(expected_vld4_1,hfloat,16,4) [] = { 0xca00, 0xc980, 0xc900, 0xc880 };
+ VECT_VAR_DECL(expected_vld4_1,hfloat,32,2) [] = { 0xc1600000, 0xc1500000 };
+ VECT_VAR_DECL(expected_vld4_1,int,8,16) [] = { 0x0, 0x1, 0x2, 0x3,
+ 					       0x4, 0x5, 0x6, 0x7,
+@@ -296,8 +291,6 @@ VECT_VAR_DECL(expected_vld4_1,int,16,8) [] = { 0xfff8, 0xfff9, 0xfffa, 0xfffb,
+ 					       0xfffc, 0xfffd, 0xfffe, 0xffff };
+ VECT_VAR_DECL(expected_vld4_1,int,32,4) [] = { 0xfffffff4, 0xfffffff5,
+ 					       0xfffffff6, 0xfffffff7 };
+-VECT_VAR_DECL(expected_vld4_1,int,64,2) [] = { 0x3333333333333333,
+-					       0x3333333333333333 };
+ VECT_VAR_DECL(expected_vld4_1,uint,8,16) [] = { 0x0, 0x1, 0x2, 0x3,
+ 						0x4, 0x5, 0x6, 0x7,
+ 						0x8, 0x9, 0xa, 0xb,
+@@ -306,14 +299,14 @@ VECT_VAR_DECL(expected_vld4_1,uint,16,8) [] = { 0xfff8, 0xfff9, 0xfffa, 0xfffb,
+ 						0xfffc, 0xfffd, 0xfffe, 0xffff };
+ VECT_VAR_DECL(expected_vld4_1,uint,32,4) [] = { 0xfffffff4, 0xfffffff5,
+ 						0xfffffff6, 0xfffffff7 };
+-VECT_VAR_DECL(expected_vld4_1,uint,64,2) [] = { 0x3333333333333333,
+-						0x3333333333333333 };
+ VECT_VAR_DECL(expected_vld4_1,poly,8,16) [] = { 0x0, 0x1, 0x2, 0x3,
+ 						0x4, 0x5, 0x6, 0x7,
+ 						0x8, 0x9, 0xa, 0xb,
+ 						0xc, 0xd, 0xe, 0xf };
+ VECT_VAR_DECL(expected_vld4_1,poly,16,8) [] = { 0xfff8, 0xfff9, 0xfffa, 0xfffb,
+ 						0xfffc, 0xfffd, 0xfffe, 0xffff };
++VECT_VAR_DECL(expected_vld4_1,hfloat,16,8) [] = { 0xc800, 0xc700, 0xc600, 0xc500,
++						  0xc400, 0xc200, 0xc000, 0xbc00 };
+ VECT_VAR_DECL(expected_vld4_1,hfloat,32,4) [] = { 0xc1400000, 0xc1300000,
+ 						  0xc1200000, 0xc1100000 };
+ 
+@@ -331,6 +324,7 @@ VECT_VAR_DECL(expected_vld4_2,uint,64,1) [] = { 0xfffffffffffffff2 };
+ VECT_VAR_DECL(expected_vld4_2,poly,8,8) [] = { 0x0, 0x1, 0x2, 0x3,
+ 					       0x4, 0x5, 0x6, 0x7 };
+ VECT_VAR_DECL(expected_vld4_2,poly,16,4) [] = { 0xfff8, 0xfff9, 0xfffa, 0xfffb };
++VECT_VAR_DECL(expected_vld4_2,hfloat,16,4) [] = { 0xc800, 0xc700, 0xc600, 0xc500 };
+ VECT_VAR_DECL(expected_vld4_2,hfloat,32,2) [] = { 0xc1400000, 0xc1300000 };
+ VECT_VAR_DECL(expected_vld4_2,int,8,16) [] = { 0x10, 0x11, 0x12, 0x13,
+ 					       0x14, 0x15, 0x16, 0x17,
+@@ -340,8 +334,6 @@ VECT_VAR_DECL(expected_vld4_2,int,16,8) [] = { 0x0, 0x1, 0x2, 0x3,
+ 					       0x4, 0x5, 0x6, 0x7 };
+ VECT_VAR_DECL(expected_vld4_2,int,32,4) [] = { 0xfffffff8, 0xfffffff9,
+ 					       0xfffffffa, 0xfffffffb };
+-VECT_VAR_DECL(expected_vld4_2,int,64,2) [] = { 0x3333333333333333,
+-					       0x3333333333333333 };
+ VECT_VAR_DECL(expected_vld4_2,uint,8,16) [] = { 0x10, 0x11, 0x12, 0x13,
+ 						0x14, 0x15, 0x16, 0x17,
+ 						0x18, 0x19, 0x1a, 0x1b,
+@@ -350,14 +342,14 @@ VECT_VAR_DECL(expected_vld4_2,uint,16,8) [] = { 0x0, 0x1, 0x2, 0x3,
+ 						0x4, 0x5, 0x6, 0x7 };
+ VECT_VAR_DECL(expected_vld4_2,uint,32,4) [] = { 0xfffffff8, 0xfffffff9,
+ 						0xfffffffa, 0xfffffffb };
+-VECT_VAR_DECL(expected_vld4_2,uint,64,2) [] = { 0x3333333333333333,
+-						0x3333333333333333 };
+ VECT_VAR_DECL(expected_vld4_2,poly,8,16) [] = { 0x10, 0x11, 0x12, 0x13,
+ 						0x14, 0x15, 0x16, 0x17,
+ 						0x18, 0x19, 0x1a, 0x1b,
+ 						0x1c, 0x1d, 0x1e, 0x1f };
+ VECT_VAR_DECL(expected_vld4_2,poly,16,8) [] = { 0x0, 0x1, 0x2, 0x3,
+ 						0x4, 0x5, 0x6, 0x7 };
++VECT_VAR_DECL(expected_vld4_2,hfloat,16,8) [] = { 0x0000, 0x3c00, 0x4000, 0x4200,
++						  0x4400, 0x4500, 0x4600, 0x4700 };
+ VECT_VAR_DECL(expected_vld4_2,hfloat,32,4) [] = { 0xc1000000, 0xc0e00000,
+ 						  0xc0c00000, 0xc0a00000 };
+ 
+@@ -375,6 +367,7 @@ VECT_VAR_DECL(expected_vld4_3,uint,64,1) [] = { 0xfffffffffffffff3 };
+ VECT_VAR_DECL(expected_vld4_3,poly,8,8) [] = { 0x8, 0x9, 0xa, 0xb,
+ 					       0xc, 0xd, 0xe, 0xf };
+ VECT_VAR_DECL(expected_vld4_3,poly,16,4) [] = { 0xfffc, 0xfffd, 0xfffe, 0xffff };
++VECT_VAR_DECL(expected_vld4_3,hfloat,16,4) [] = { 0xc400, 0xc200, 0xc000, 0xbc00 };
+ VECT_VAR_DECL(expected_vld4_3,hfloat,32,2) [] = { 0xc1200000, 0xc1100000 };
+ VECT_VAR_DECL(expected_vld4_3,int,8,16) [] = { 0x20, 0x21, 0x22, 0x23,
+ 					       0x24, 0x25, 0x26, 0x27,
+@@ -384,8 +377,6 @@ VECT_VAR_DECL(expected_vld4_3,int,16,8) [] = { 0x8, 0x9, 0xa, 0xb,
+ 					       0xc, 0xd, 0xe, 0xf };
+ VECT_VAR_DECL(expected_vld4_3,int,32,4) [] = { 0xfffffffc, 0xfffffffd,
+ 					       0xfffffffe, 0xffffffff };
+-VECT_VAR_DECL(expected_vld4_3,int,64,2) [] = { 0x3333333333333333,
+-					       0x3333333333333333 };
+ VECT_VAR_DECL(expected_vld4_3,uint,8,16) [] = { 0x20, 0x21, 0x22, 0x23,
+ 						0x24, 0x25, 0x26, 0x27,
+ 						0x28, 0x29, 0x2a, 0x2b,
+@@ -394,14 +385,14 @@ VECT_VAR_DECL(expected_vld4_3,uint,16,8) [] = { 0x8, 0x9, 0xa, 0xb,
+ 						0xc, 0xd, 0xe, 0xf };
+ VECT_VAR_DECL(expected_vld4_3,uint,32,4) [] = { 0xfffffffc, 0xfffffffd,
+ 						0xfffffffe, 0xffffffff };
+-VECT_VAR_DECL(expected_vld4_3,uint,64,2) [] = { 0x3333333333333333,
+-						0x3333333333333333 };
+ VECT_VAR_DECL(expected_vld4_3,poly,8,16) [] = { 0x20, 0x21, 0x22, 0x23,
+ 						0x24, 0x25, 0x26, 0x27,
+ 						0x28, 0x29, 0x2a, 0x2b,
+ 						0x2c, 0x2d, 0x2e, 0x2f };
+ VECT_VAR_DECL(expected_vld4_3,poly,16,8) [] = { 0x8, 0x9, 0xa, 0xb,
+ 						0xc, 0xd, 0xe, 0xf };
++VECT_VAR_DECL(expected_vld4_3,hfloat,16,8) [] = { 0x4800, 0x4880, 0x4900, 0x4980,
++						  0x4a00, 0x4a80, 0x4b00, 0x4b80 };
+ VECT_VAR_DECL(expected_vld4_3,hfloat,32,4) [] = { 0xc0800000, 0xc0400000,
+ 						  0xc0000000, 0xbf800000 };
+ 
+@@ -434,7 +425,7 @@ void exec_vldX (void)
+ 	 sizeof(VECT_VAR(result, T1, W, N)));
+ 
+   /* We need all variants in 64 bits, but there is no 64x2 variant.  */
+-#define DECL_ALL_VLDX(X)			\
++#define DECL_ALL_VLDX_NO_FP16(X)		\
+   DECL_VLDX(int, 8, 8, X);			\
+   DECL_VLDX(int, 16, 4, X);			\
+   DECL_VLDX(int, 32, 2, X);			\
+@@ -456,7 +447,16 @@ void exec_vldX (void)
+   DECL_VLDX(poly, 16, 8, X);			\
+   DECL_VLDX(float, 32, 4, X)
+ 
+-#define TEST_ALL_VLDX(X)			\
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++#define DECL_ALL_VLDX(X)	\
++  DECL_ALL_VLDX_NO_FP16(X);	\
++  DECL_VLDX(float, 16, 4, X);	\
++  DECL_VLDX(float, 16, 8, X)
++#else
++#define DECL_ALL_VLDX(X) DECL_ALL_VLDX_NO_FP16(X)
++#endif
++
++#define TEST_ALL_VLDX_NO_FP16(X)		\
+   TEST_VLDX(, int, s, 8, 8, X);			\
+   TEST_VLDX(, int, s, 16, 4, X);		\
+   TEST_VLDX(, int, s, 32, 2, X);		\
+@@ -478,7 +478,16 @@ void exec_vldX (void)
+   TEST_VLDX(q, poly, p, 16, 8, X);		\
+   TEST_VLDX(q, float, f, 32, 4, X)
+ 
+-#define TEST_ALL_EXTRA_CHUNKS(X, Y)		\
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++#define TEST_ALL_VLDX(X)		\
++  TEST_ALL_VLDX_NO_FP16(X);		\
++  TEST_VLDX(, float, f, 16, 4, X);	\
++  TEST_VLDX(q, float, f, 16, 8, X)
++#else
++#define TEST_ALL_VLDX(X) TEST_ALL_VLDX_NO_FP16(X)
++#endif
++
++#define TEST_ALL_EXTRA_CHUNKS_NO_FP16(X, Y)	\
+   TEST_EXTRA_CHUNK(int, 8, 8, X, Y);		\
+   TEST_EXTRA_CHUNK(int, 16, 4, X, Y);		\
+   TEST_EXTRA_CHUNK(int, 32, 2, X, Y);		\
+@@ -500,6 +509,51 @@ void exec_vldX (void)
+   TEST_EXTRA_CHUNK(poly, 16, 8, X, Y);		\
+   TEST_EXTRA_CHUNK(float, 32, 4, X, Y)
+ 
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++#define TEST_ALL_EXTRA_CHUNKS(X, Y)		\
++  TEST_ALL_EXTRA_CHUNKS_NO_FP16(X, Y)		\
++  TEST_EXTRA_CHUNK(float, 16, 4, X, Y);		\
++  TEST_EXTRA_CHUNK(float, 16, 8, X, Y);
++#else
++#define TEST_ALL_EXTRA_CHUNKS(X, Y) TEST_ALL_EXTRA_CHUNKS_NO_FP16(X, Y)
++#endif
++
++  /* vldX supports all vector types except [u]int64x2.  */
++#define CHECK_RESULTS_VLDX_NO_FP16(test_name,EXPECTED,comment)		\
++    CHECK(test_name, int, 8, 8, PRIx8, EXPECTED, comment);		\
++    CHECK(test_name, int, 16, 4, PRIx16, EXPECTED, comment);		\
++    CHECK(test_name, int, 32, 2, PRIx32, EXPECTED, comment);		\
++    CHECK(test_name, int, 64, 1, PRIx64, EXPECTED, comment);		\
++    CHECK(test_name, uint, 8, 8, PRIx8, EXPECTED, comment);		\
++    CHECK(test_name, uint, 16, 4, PRIx16, EXPECTED, comment);		\
++    CHECK(test_name, uint, 32, 2, PRIx32, EXPECTED, comment);		\
++    CHECK(test_name, uint, 64, 1, PRIx64, EXPECTED, comment);		\
++    CHECK(test_name, poly, 8, 8, PRIx8, EXPECTED, comment);		\
++    CHECK(test_name, poly, 16, 4, PRIx16, EXPECTED, comment);		\
++    CHECK_FP(test_name, float, 32, 2, PRIx32, EXPECTED, comment);	\
++									\
++    CHECK(test_name, int, 8, 16, PRIx8, EXPECTED, comment);		\
++    CHECK(test_name, int, 16, 8, PRIx16, EXPECTED, comment);		\
++    CHECK(test_name, int, 32, 4, PRIx32, EXPECTED, comment);		\
++    CHECK(test_name, uint, 8, 16, PRIx8, EXPECTED, comment);		\
++    CHECK(test_name, uint, 16, 8, PRIx16, EXPECTED, comment);		\
++    CHECK(test_name, uint, 32, 4, PRIx32, EXPECTED, comment);		\
++    CHECK(test_name, poly, 8, 16, PRIx8, EXPECTED, comment);		\
++    CHECK(test_name, poly, 16, 8, PRIx16, EXPECTED, comment);		\
++    CHECK_FP(test_name, float, 32, 4, PRIx32, EXPECTED, comment)
++
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++#define CHECK_RESULTS_VLDX(test_name,EXPECTED,comment)			\
++  {									\
++    CHECK_RESULTS_VLDX_NO_FP16(test_name, EXPECTED, comment);		\
++    CHECK_FP(test_name, float, 16, 4, PRIx16, EXPECTED, comment);	\
++    CHECK_FP(test_name, float, 16, 8, PRIx16, EXPECTED, comment);	\
++  }
++#else
++#define CHECK_RESULTS_VLDX(test_name, EXPECTED, comment)		\
++  { CHECK_RESULTS_VLDX_NO_FP16(test_name, EXPECTED, comment); }
++#endif
++
+   DECL_ALL_VLDX(2);
+   DECL_ALL_VLDX(3);
+   DECL_ALL_VLDX(4);
+@@ -526,6 +580,10 @@ void exec_vldX (void)
+   PAD(buffer_vld2_pad, poly, 8, 8);
+   VECT_ARRAY_INIT2(buffer_vld2, poly, 16, 4);
+   PAD(buffer_vld2_pad, poly, 16, 4);
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++  VECT_ARRAY_INIT2(buffer_vld2, float, 16, 4);
++  PAD(buffer_vld2_pad, float, 16, 4);
++#endif
+   VECT_ARRAY_INIT2(buffer_vld2, float, 32, 2);
+   PAD(buffer_vld2_pad, float, 32, 2);
+ 
+@@ -549,6 +607,10 @@ void exec_vldX (void)
+   PAD(buffer_vld2_pad, poly, 8, 16);
+   VECT_ARRAY_INIT2(buffer_vld2, poly, 16, 8);
+   PAD(buffer_vld2_pad, poly, 16, 8);
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++  VECT_ARRAY_INIT2(buffer_vld2, float, 16, 8);
++  PAD(buffer_vld2_pad, float, 16, 8);
++#endif
+   VECT_ARRAY_INIT2(buffer_vld2, float, 32, 4);
+   PAD(buffer_vld2_pad, float, 32, 4);
+ 
+@@ -573,6 +635,10 @@ void exec_vldX (void)
+   PAD(buffer_vld3_pad, poly, 8, 8);
+   VECT_ARRAY_INIT3(buffer_vld3, poly, 16, 4);
+   PAD(buffer_vld3_pad, poly, 16, 4);
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++  VECT_ARRAY_INIT3(buffer_vld3, float, 16, 4);
++  PAD(buffer_vld3_pad, float, 16, 4);
++#endif
+   VECT_ARRAY_INIT3(buffer_vld3, float, 32, 2);
+   PAD(buffer_vld3_pad, float, 32, 2);
+ 
+@@ -596,6 +662,10 @@ void exec_vldX (void)
+   PAD(buffer_vld3_pad, poly, 8, 16);
+   VECT_ARRAY_INIT3(buffer_vld3, poly, 16, 8);
+   PAD(buffer_vld3_pad, poly, 16, 8);
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++  VECT_ARRAY_INIT3(buffer_vld3, float, 16, 8);
++  PAD(buffer_vld3_pad, float, 16, 8);
++#endif
+   VECT_ARRAY_INIT3(buffer_vld3, float, 32, 4);
+   PAD(buffer_vld3_pad, float, 32, 4);
+ 
+@@ -620,6 +690,10 @@ void exec_vldX (void)
+   PAD(buffer_vld4_pad, poly, 8, 8);
+   VECT_ARRAY_INIT4(buffer_vld4, poly, 16, 4);
+   PAD(buffer_vld4_pad, poly, 16, 4);
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++  VECT_ARRAY_INIT4(buffer_vld4, float, 16, 4);
++  PAD(buffer_vld4_pad, float, 16, 4);
++#endif
+   VECT_ARRAY_INIT4(buffer_vld4, float, 32, 2);
+   PAD(buffer_vld4_pad, float, 32, 2);
+ 
+@@ -643,6 +717,10 @@ void exec_vldX (void)
+   PAD(buffer_vld4_pad, poly, 8, 16);
+   VECT_ARRAY_INIT4(buffer_vld4, poly, 16, 8);
+   PAD(buffer_vld4_pad, poly, 16, 8);
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++  VECT_ARRAY_INIT4(buffer_vld4, float, 16, 8);
++  PAD(buffer_vld4_pad, float, 16, 8);
++#endif
+   VECT_ARRAY_INIT4(buffer_vld4, float, 32, 4);
+   PAD(buffer_vld4_pad, float, 32, 4);
+ 
+@@ -650,39 +728,39 @@ void exec_vldX (void)
+   clean_results ();
+ #define TEST_MSG "VLD2/VLD2Q"
+   TEST_ALL_VLDX(2);
+-  CHECK_RESULTS_NAMED (TEST_MSG, expected_vld2_0, "chunk 0");
++  CHECK_RESULTS_VLDX (TEST_MSG, expected_vld2_0, "chunk 0");
+ 
+   TEST_ALL_EXTRA_CHUNKS(2, 1);
+-  CHECK_RESULTS_NAMED (TEST_MSG, expected_vld2_1, "chunk 1");
++  CHECK_RESULTS_VLDX (TEST_MSG, expected_vld2_1, "chunk 1");
+ 
+   /* Check vld3/vld3q.  */
+   clean_results ();
+ #undef TEST_MSG
+ #define TEST_MSG "VLD3/VLD3Q"
+   TEST_ALL_VLDX(3);
+-  CHECK_RESULTS_NAMED (TEST_MSG, expected_vld3_0, "chunk 0");
++  CHECK_RESULTS_VLDX (TEST_MSG, expected_vld3_0, "chunk 0");
+ 
+   TEST_ALL_EXTRA_CHUNKS(3, 1);
+-  CHECK_RESULTS_NAMED (TEST_MSG, expected_vld3_1, "chunk 1");
++  CHECK_RESULTS_VLDX (TEST_MSG, expected_vld3_1, "chunk 1");
+ 
+   TEST_ALL_EXTRA_CHUNKS(3, 2);
+-  CHECK_RESULTS_NAMED (TEST_MSG, expected_vld3_2, "chunk 2");
++  CHECK_RESULTS_VLDX (TEST_MSG, expected_vld3_2, "chunk 2");
+ 
+   /* Check vld4/vld4q.  */
+   clean_results ();
+ #undef TEST_MSG
+ #define TEST_MSG "VLD4/VLD4Q"
+   TEST_ALL_VLDX(4);
+-  CHECK_RESULTS_NAMED (TEST_MSG, expected_vld4_0, "chunk 0");
++  CHECK_RESULTS_VLDX (TEST_MSG, expected_vld4_0, "chunk 0");
+ 
+   TEST_ALL_EXTRA_CHUNKS(4, 1);
+-  CHECK_RESULTS_NAMED (TEST_MSG, expected_vld4_1, "chunk 1");
++  CHECK_RESULTS_VLDX (TEST_MSG, expected_vld4_1, "chunk 1");
+ 
+   TEST_ALL_EXTRA_CHUNKS(4, 2);
+-  CHECK_RESULTS_NAMED (TEST_MSG, expected_vld4_2, "chunk 2");
++  CHECK_RESULTS_VLDX (TEST_MSG, expected_vld4_2, "chunk 2");
+ 
+   TEST_ALL_EXTRA_CHUNKS(4, 3);
+-  CHECK_RESULTS_NAMED (TEST_MSG, expected_vld4_3, "chunk 3");
++  CHECK_RESULTS_VLDX (TEST_MSG, expected_vld4_3, "chunk 3");
+ }
+ 
+ int main (void)
+--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vldX_dup.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vldX_dup.c
+@@ -18,35 +18,8 @@ VECT_VAR_DECL(expected_vld2_0,uint,64,1) [] = { 0xfffffffffffffff0 };
+ VECT_VAR_DECL(expected_vld2_0,poly,8,8) [] = { 0xf0, 0xf1, 0xf0, 0xf1,
+ 					0xf0, 0xf1, 0xf0, 0xf1 };
+ VECT_VAR_DECL(expected_vld2_0,poly,16,4) [] = { 0xfff0, 0xfff1, 0xfff0, 0xfff1 };
++VECT_VAR_DECL(expected_vld2_0,hfloat,16,4) [] = {0xcc00, 0xcb80, 0xcc00, 0xcb80 };
+ VECT_VAR_DECL(expected_vld2_0,hfloat,32,2) [] = { 0xc1800000, 0xc1700000 };
+-VECT_VAR_DECL(expected_vld2_0,int,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-					0x33, 0x33, 0x33, 0x33,
+-					0x33, 0x33, 0x33, 0x33,
+-					0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected_vld2_0,int,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333,
+-					0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected_vld2_0,int,32,4) [] = { 0x33333333, 0x33333333,
+-					0x33333333, 0x33333333 };
+-VECT_VAR_DECL(expected_vld2_0,int,64,2) [] = { 0x3333333333333333,
+-					0x3333333333333333 };
+-VECT_VAR_DECL(expected_vld2_0,uint,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected_vld2_0,uint,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333,
+-					 0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected_vld2_0,uint,32,4) [] = { 0x33333333, 0x33333333,
+-					 0x33333333, 0x33333333 };
+-VECT_VAR_DECL(expected_vld2_0,uint,64,2) [] = { 0x3333333333333333,
+-					 0x3333333333333333 };
+-VECT_VAR_DECL(expected_vld2_0,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected_vld2_0,poly,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333,
+-					 0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected_vld2_0,hfloat,32,4) [] = { 0x33333333, 0x33333333,
+-					   0x33333333, 0x33333333 };
+ 
+ /* vld2_dup/chunk 1.  */
+ VECT_VAR_DECL(expected_vld2_1,int,8,8) [] = { 0xf0, 0xf1, 0xf0, 0xf1,
+@@ -63,35 +36,8 @@ VECT_VAR_DECL(expected_vld2_1,poly,8,8) [] = { 0xf0, 0xf1, 0xf0, 0xf1,
+ 					       0xf0, 0xf1, 0xf0, 0xf1 };
+ VECT_VAR_DECL(expected_vld2_1,poly,16,4) [] = { 0xfff0, 0xfff1,
+ 						0xfff0, 0xfff1 };
++VECT_VAR_DECL(expected_vld2_1,hfloat,16,4) [] = { 0xcc00, 0xcb80, 0xcc00, 0xcb80 };
+ VECT_VAR_DECL(expected_vld2_1,hfloat,32,2) [] = { 0xc1800000, 0xc1700000 };
+-VECT_VAR_DECL(expected_vld2_1,int,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-					       0x33, 0x33, 0x33, 0x33,
+-					       0x33, 0x33, 0x33, 0x33,
+-					       0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected_vld2_1,int,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333,
+-					       0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected_vld2_1,int,32,4) [] = { 0x33333333, 0x33333333,
+-					       0x33333333, 0x33333333 };
+-VECT_VAR_DECL(expected_vld2_1,int,64,2) [] = { 0x3333333333333333,
+-					       0x3333333333333333 };
+-VECT_VAR_DECL(expected_vld2_1,uint,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-						0x33, 0x33, 0x33, 0x33,
+-						0x33, 0x33, 0x33, 0x33,
+-						0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected_vld2_1,uint,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333,
+-						0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected_vld2_1,uint,32,4) [] = { 0x33333333, 0x33333333,
+-						0x33333333, 0x33333333 };
+-VECT_VAR_DECL(expected_vld2_1,uint,64,2) [] = { 0x3333333333333333,
+-						0x3333333333333333 };
+-VECT_VAR_DECL(expected_vld2_1,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-						0x33, 0x33, 0x33, 0x33,
+-						0x33, 0x33, 0x33, 0x33,
+-						0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected_vld2_1,poly,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333,
+-						0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected_vld2_1,hfloat,32,4) [] = { 0x33333333, 0x33333333,
+-						  0x33333333, 0x33333333 };
+ 
+ /* vld3_dup/chunk 0.  */
+ VECT_VAR_DECL(expected_vld3_0,int,8,8) [] = { 0xf0, 0xf1, 0xf2, 0xf0,
+@@ -110,35 +56,8 @@ VECT_VAR_DECL(expected_vld3_0,poly,8,8) [] = { 0xf0, 0xf1, 0xf2, 0xf0,
+ 					       0xf1, 0xf2, 0xf0, 0xf1 };
+ VECT_VAR_DECL(expected_vld3_0,poly,16,4) [] = { 0xfff0, 0xfff1,
+ 						0xfff2, 0xfff0 };
++VECT_VAR_DECL(expected_vld3_0,hfloat,16,4) [] = { 0xcc00, 0xcb80, 0xcb00, 0xcc00 };
+ VECT_VAR_DECL(expected_vld3_0,hfloat,32,2) [] = { 0xc1800000, 0xc1700000 };
+-VECT_VAR_DECL(expected_vld3_0,int,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-					       0x33, 0x33, 0x33, 0x33,
+-					       0x33, 0x33, 0x33, 0x33,
+-					       0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected_vld3_0,int,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333,
+-					       0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected_vld3_0,int,32,4) [] = { 0x33333333, 0x33333333,
+-					       0x33333333, 0x33333333 };
+-VECT_VAR_DECL(expected_vld3_0,int,64,2) [] = { 0x3333333333333333,
+-					       0x3333333333333333 };
+-VECT_VAR_DECL(expected_vld3_0,uint,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-						0x33, 0x33, 0x33, 0x33,
+-						0x33, 0x33, 0x33, 0x33,
+-						0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected_vld3_0,uint,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333,
+-						0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected_vld3_0,uint,32,4) [] = { 0x33333333, 0x33333333,
+-						0x33333333, 0x33333333 };
+-VECT_VAR_DECL(expected_vld3_0,uint,64,2) [] = { 0x3333333333333333,
+-						0x3333333333333333 };
+-VECT_VAR_DECL(expected_vld3_0,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-						0x33, 0x33, 0x33, 0x33,
+-						0x33, 0x33, 0x33, 0x33,
+-						0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected_vld3_0,poly,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333,
+-						0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected_vld3_0,hfloat,32,4) [] = { 0x33333333, 0x33333333,
+-						  0x33333333, 0x33333333 };
+ 
+ /* vld3_dup/chunk 1.  */
+ VECT_VAR_DECL(expected_vld3_1,int,8,8) [] = { 0xf2, 0xf0, 0xf1, 0xf2,
+@@ -157,35 +76,8 @@ VECT_VAR_DECL(expected_vld3_1,poly,8,8) [] = { 0xf2, 0xf0, 0xf1, 0xf2,
+ 					       0xf0, 0xf1, 0xf2, 0xf0 };
+ VECT_VAR_DECL(expected_vld3_1,poly,16,4) [] = { 0xfff1, 0xfff2,
+ 						0xfff0, 0xfff1 };
++VECT_VAR_DECL(expected_vld3_1,hfloat,16,4) [] = { 0xcb80, 0xcb00, 0xcc00, 0xcb80 };
+ VECT_VAR_DECL(expected_vld3_1,hfloat,32,2) [] = { 0xc1600000, 0xc1800000 };
+-VECT_VAR_DECL(expected_vld3_1,int,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-					       0x33, 0x33, 0x33, 0x33,
+-					       0x33, 0x33, 0x33, 0x33,
+-					       0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected_vld3_1,int,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333,
+-					       0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected_vld3_1,int,32,4) [] = { 0x33333333, 0x33333333,
+-					       0x33333333, 0x33333333 };
+-VECT_VAR_DECL(expected_vld3_1,int,64,2) [] = { 0x3333333333333333,
+-					       0x3333333333333333 };
+-VECT_VAR_DECL(expected_vld3_1,uint,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-						0x33, 0x33, 0x33, 0x33,
+-						0x33, 0x33, 0x33, 0x33,
+-						0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected_vld3_1,uint,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333,
+-						0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected_vld3_1,uint,32,4) [] = { 0x33333333, 0x33333333,
+-						0x33333333, 0x33333333 };
+-VECT_VAR_DECL(expected_vld3_1,uint,64,2) [] = { 0x3333333333333333,
+-						0x3333333333333333 };
+-VECT_VAR_DECL(expected_vld3_1,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-						0x33, 0x33, 0x33, 0x33,
+-						0x33, 0x33, 0x33, 0x33,
+-						0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected_vld3_1,poly,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333,
+-						0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected_vld3_1,hfloat,32,4) [] = { 0x33333333, 0x33333333,
+-						  0x33333333, 0x33333333 };
+ 
+ /* vld3_dup/chunk 2.  */
+ VECT_VAR_DECL(expected_vld3_2,int,8,8) [] = { 0xf1, 0xf2, 0xf0, 0xf1,
+@@ -204,35 +96,8 @@ VECT_VAR_DECL(expected_vld3_2,poly,8,8) [] = { 0xf1, 0xf2, 0xf0, 0xf1,
+ 					       0xf2, 0xf0, 0xf1, 0xf2 };
+ VECT_VAR_DECL(expected_vld3_2,poly,16,4) [] = { 0xfff2, 0xfff0,
+ 						0xfff1, 0xfff2 };
++VECT_VAR_DECL(expected_vld3_2,hfloat,16,4) [] = { 0xcb00, 0xcc00, 0xcb80, 0xcb00 };
+ VECT_VAR_DECL(expected_vld3_2,hfloat,32,2) [] = { 0xc1700000, 0xc1600000 };
+-VECT_VAR_DECL(expected_vld3_2,int,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-					       0x33, 0x33, 0x33, 0x33,
+-					       0x33, 0x33, 0x33, 0x33,
+-					       0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected_vld3_2,int,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333,
+-					       0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected_vld3_2,int,32,4) [] = { 0x33333333, 0x33333333,
+-					       0x33333333, 0x33333333 };
+-VECT_VAR_DECL(expected_vld3_2,int,64,2) [] = { 0x3333333333333333,
+-					       0x3333333333333333 };
+-VECT_VAR_DECL(expected_vld3_2,uint,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-						0x33, 0x33, 0x33, 0x33,
+-						0x33, 0x33, 0x33, 0x33,
+-						0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected_vld3_2,uint,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333,
+-						0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected_vld3_2,uint,32,4) [] = { 0x33333333, 0x33333333,
+-						0x33333333, 0x33333333 };
+-VECT_VAR_DECL(expected_vld3_2,uint,64,2) [] = { 0x3333333333333333,
+-						0x3333333333333333 };
+-VECT_VAR_DECL(expected_vld3_2,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-						0x33, 0x33, 0x33, 0x33,
+-						0x33, 0x33, 0x33, 0x33,
+-						0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected_vld3_2,poly,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333,
+-						0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected_vld3_2,hfloat,32,4) [] = { 0x33333333, 0x33333333,
+-						  0x33333333, 0x33333333 };
+ 
+ /* vld4_dup/chunk 0.  */
+ VECT_VAR_DECL(expected_vld4_0,int,8,8) [] = { 0xf0, 0xf1, 0xf2, 0xf3,
+@@ -249,35 +114,8 @@ VECT_VAR_DECL(expected_vld4_0,uint,64,1) [] = { 0xfffffffffffffff0 };
+ VECT_VAR_DECL(expected_vld4_0,poly,8,8) [] = { 0xf0, 0xf1, 0xf2, 0xf3,
+ 					       0xf0, 0xf1, 0xf2, 0xf3 };
+ VECT_VAR_DECL(expected_vld4_0,poly,16,4) [] = { 0xfff0, 0xfff1, 0xfff2, 0xfff3 };
++VECT_VAR_DECL(expected_vld4_0,hfloat,16,4) [] = { 0xcc00, 0xcb80, 0xcb00, 0xca80 };
+ VECT_VAR_DECL(expected_vld4_0,hfloat,32,2) [] = { 0xc1800000, 0xc1700000 };
+-VECT_VAR_DECL(expected_vld4_0,int,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-					       0x33, 0x33, 0x33, 0x33,
+-					       0x33, 0x33, 0x33, 0x33,
+-					       0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected_vld4_0,int,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333,
+-					       0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected_vld4_0,int,32,4) [] = { 0x33333333, 0x33333333,
+-					       0x33333333, 0x33333333 };
+-VECT_VAR_DECL(expected_vld4_0,int,64,2) [] = { 0x3333333333333333,
+-					       0x3333333333333333 };
+-VECT_VAR_DECL(expected_vld4_0,uint,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-						0x33, 0x33, 0x33, 0x33,
+-						0x33, 0x33, 0x33, 0x33,
+-						0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected_vld4_0,uint,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333,
+-						0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected_vld4_0,uint,32,4) [] = { 0x33333333, 0x33333333,
+-						0x33333333, 0x33333333 };
+-VECT_VAR_DECL(expected_vld4_0,uint,64,2) [] = { 0x3333333333333333,
+-						0x3333333333333333 };
+-VECT_VAR_DECL(expected_vld4_0,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-						0x33, 0x33, 0x33, 0x33,
+-						0x33, 0x33, 0x33, 0x33,
+-						0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected_vld4_0,poly,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333,
+-						0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected_vld4_0,hfloat,32,4) [] = { 0x33333333, 0x33333333,
+-						  0x33333333, 0x33333333 };
+ 
+ /* vld4_dup/chunk 1.  */
+ VECT_VAR_DECL(expected_vld4_1,int,8,8) [] = { 0xf0, 0xf1, 0xf2, 0xf3,
+@@ -293,35 +131,8 @@ VECT_VAR_DECL(expected_vld4_1,uint,64,1) [] = { 0xfffffffffffffff1 };
+ VECT_VAR_DECL(expected_vld4_1,poly,8,8) [] = { 0xf0, 0xf1, 0xf2, 0xf3,
+ 					       0xf0, 0xf1, 0xf2, 0xf3 };
+ VECT_VAR_DECL(expected_vld4_1,poly,16,4) [] = { 0xfff0, 0xfff1, 0xfff2, 0xfff3 };
++VECT_VAR_DECL(expected_vld4_1,hfloat,16,4) [] = { 0xcc00, 0xcb80, 0xcb00, 0xca80 };
+ VECT_VAR_DECL(expected_vld4_1,hfloat,32,2) [] = { 0xc1600000, 0xc1500000 };
+-VECT_VAR_DECL(expected_vld4_1,int,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-					       0x33, 0x33, 0x33, 0x33,
+-					       0x33, 0x33, 0x33, 0x33,
+-					       0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected_vld4_1,int,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333,
+-					       0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected_vld4_1,int,32,4) [] = { 0x33333333, 0x33333333,
+-					       0x33333333, 0x33333333 };
+-VECT_VAR_DECL(expected_vld4_1,int,64,2) [] = { 0x3333333333333333,
+-					       0x3333333333333333 };
+-VECT_VAR_DECL(expected_vld4_1,uint,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-						0x33, 0x33, 0x33, 0x33,
+-						0x33, 0x33, 0x33, 0x33,
+-						0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected_vld4_1,uint,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333,
+-						0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected_vld4_1,uint,32,4) [] = { 0x33333333, 0x33333333,
+-						0x33333333, 0x33333333 };
+-VECT_VAR_DECL(expected_vld4_1,uint,64,2) [] = { 0x3333333333333333,
+-						0x3333333333333333 };
+-VECT_VAR_DECL(expected_vld4_1,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-						0x33, 0x33, 0x33, 0x33,
+-						0x33, 0x33, 0x33, 0x33,
+-						0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected_vld4_1,poly,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333,
+-						0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected_vld4_1,hfloat,32,4) [] = { 0x33333333, 0x33333333,
+-						  0x33333333, 0x33333333 };
+ 
+ /* vld4_dup/chunk 2.  */
+ VECT_VAR_DECL(expected_vld4_2,int,8,8) [] = { 0xf0, 0xf1, 0xf2, 0xf3,
+@@ -337,35 +148,8 @@ VECT_VAR_DECL(expected_vld4_2,uint,64,1) [] = { 0xfffffffffffffff2 };
+ VECT_VAR_DECL(expected_vld4_2,poly,8,8) [] = { 0xf0, 0xf1, 0xf2, 0xf3,
+ 					       0xf0, 0xf1, 0xf2, 0xf3 };
+ VECT_VAR_DECL(expected_vld4_2,poly,16,4) [] = { 0xfff0, 0xfff1, 0xfff2, 0xfff3 };
++VECT_VAR_DECL(expected_vld4_2,hfloat,16,4) [] = { 0xcc00, 0xcb80, 0xcb00, 0xca80 };
+ VECT_VAR_DECL(expected_vld4_2,hfloat,32,2) [] = { 0xc1800000, 0xc1700000 };
+-VECT_VAR_DECL(expected_vld4_2,int,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-					       0x33, 0x33, 0x33, 0x33,
+-					       0x33, 0x33, 0x33, 0x33,
+-					       0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected_vld4_2,int,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333,
+-					       0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected_vld4_2,int,32,4) [] = { 0x33333333, 0x33333333,
+-					       0x33333333, 0x33333333 };
+-VECT_VAR_DECL(expected_vld4_2,int,64,2) [] = { 0x3333333333333333,
+-					       0x3333333333333333 };
+-VECT_VAR_DECL(expected_vld4_2,uint,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-						0x33, 0x33, 0x33, 0x33,
+-						0x33, 0x33, 0x33, 0x33,
+-						0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected_vld4_2,uint,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333,
+-						0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected_vld4_2,uint,32,4) [] = { 0x33333333, 0x33333333,
+-						0x33333333, 0x33333333 };
+-VECT_VAR_DECL(expected_vld4_2,uint,64,2) [] = { 0x3333333333333333,
+-						0x3333333333333333 };
+-VECT_VAR_DECL(expected_vld4_2,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-						0x33, 0x33, 0x33, 0x33,
+-						0x33, 0x33, 0x33, 0x33,
+-						0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected_vld4_2,poly,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333,
+-						0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected_vld4_2,hfloat,32,4) [] = { 0x33333333, 0x33333333,
+-						  0x33333333, 0x33333333 };
+ 
+ /* vld4_dup/chunk3.  */
+ VECT_VAR_DECL(expected_vld4_3,int,8,8) [] = { 0xf0, 0xf1, 0xf2, 0xf3,
+@@ -381,34 +165,8 @@ VECT_VAR_DECL(expected_vld4_3,uint,64,1) [] = { 0xfffffffffffffff3 };
+ VECT_VAR_DECL(expected_vld4_3,poly,8,8) [] = { 0xf0, 0xf1, 0xf2, 0xf3,
+ 					       0xf0, 0xf1, 0xf2, 0xf3 };
+ VECT_VAR_DECL(expected_vld4_3,poly,16,4) [] = { 0xfff0, 0xfff1, 0xfff2, 0xfff3 };
++VECT_VAR_DECL(expected_vld4_3,hfloat,16,4) [] = { 0xcc00, 0xcb80, 0xcb00, 0xca80 };
+ VECT_VAR_DECL(expected_vld4_3,hfloat,32,2) [] = { 0xc1600000, 0xc1500000 };
+-VECT_VAR_DECL(expected_vld4_3,int,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-					       0x33, 0x33, 0x33, 0x33,
+-					       0x33, 0x33, 0x33, 0x33,
+-					       0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected_vld4_3,int,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333,
+-					       0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected_vld4_3,int,32,4) [] = { 0x33333333, 0x33333333,
+-					       0x33333333, 0x33333333 };
+-VECT_VAR_DECL(expected_vld4_3,int,64,2) [] = { 0x3333333333333333, 0x3333333333333333 };
+-VECT_VAR_DECL(expected_vld4_3,uint,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-						0x33, 0x33, 0x33, 0x33,
+-						0x33, 0x33, 0x33, 0x33,
+-						0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected_vld4_3,uint,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333,
+-						0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected_vld4_3,uint,32,4) [] = { 0x33333333, 0x33333333,
+-						0x33333333, 0x33333333 };
+-VECT_VAR_DECL(expected_vld4_3,uint,64,2) [] = { 0x3333333333333333,
+-						0x3333333333333333 };
+-VECT_VAR_DECL(expected_vld4_3,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-						0x33, 0x33, 0x33, 0x33,
+-						0x33, 0x33, 0x33, 0x33,
+-						0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected_vld4_3,poly,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333,
+-						0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected_vld4_3,hfloat,32,4) [] = { 0x33333333, 0x33333333,
+-						  0x33333333, 0x33333333 };
+ 
+ void exec_vldX_dup (void)
+ {
+@@ -439,7 +197,7 @@ void exec_vldX_dup (void)
+ 	 &(VECT_VAR(result_bis_##X, T1, W, N)[Y*N]),	\
+ 	 sizeof(VECT_VAR(result, T1, W, N)));
+ 
+-#define DECL_ALL_VLDX_DUP(X)			\
++#define DECL_ALL_VLDX_DUP_NO_FP16(X)		\
+   DECL_VLDX_DUP(int, 8, 8, X);			\
+   DECL_VLDX_DUP(int, 16, 4, X);			\
+   DECL_VLDX_DUP(int, 32, 2, X);			\
+@@ -452,7 +210,15 @@ void exec_vldX_dup (void)
+   DECL_VLDX_DUP(poly, 16, 4, X);		\
+   DECL_VLDX_DUP(float, 32, 2, X)
+ 
+-#define TEST_ALL_VLDX_DUP(X)			\
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++#define DECL_ALL_VLDX_DUP(X)		\
++  DECL_ALL_VLDX_DUP_NO_FP16(X);		\
++  DECL_VLDX_DUP(float, 16, 4, X)
++#else
++#define DECL_ALL_VLDX_DUP(X) DECL_ALL_VLDX_DUP_NO_FP16(X)
++#endif
++
++#define TEST_ALL_VLDX_DUP_NO_FP16(X)		\
+   TEST_VLDX_DUP(, int, s, 8, 8, X);		\
+   TEST_VLDX_DUP(, int, s, 16, 4, X);		\
+   TEST_VLDX_DUP(, int, s, 32, 2, X);		\
+@@ -465,7 +231,15 @@ void exec_vldX_dup (void)
+   TEST_VLDX_DUP(, poly, p, 16, 4, X);		\
+   TEST_VLDX_DUP(, float, f, 32, 2, X)
+ 
+-#define TEST_ALL_EXTRA_CHUNKS(X, Y)		\
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++#define TEST_ALL_VLDX_DUP(X)		\
++  TEST_ALL_VLDX_DUP_NO_FP16(X);		\
++  TEST_VLDX_DUP(, float, f, 16, 4, X)
++#else
++#define TEST_ALL_VLDX_DUP(X) TEST_ALL_VLDX_DUP_NO_FP16(X)
++#endif
++
++#define TEST_ALL_EXTRA_CHUNKS_NO_FP16(X, Y)	\
+   TEST_EXTRA_CHUNK(int, 8, 8, X, Y);		\
+   TEST_EXTRA_CHUNK(int, 16, 4, X, Y);		\
+   TEST_EXTRA_CHUNK(int, 32, 2, X, Y);		\
+@@ -478,6 +252,40 @@ void exec_vldX_dup (void)
+   TEST_EXTRA_CHUNK(poly, 16, 4, X, Y);		\
+   TEST_EXTRA_CHUNK(float, 32, 2, X, Y)
+ 
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++#define TEST_ALL_EXTRA_CHUNKS(X, Y)	\
++  TEST_ALL_EXTRA_CHUNKS_NO_FP16(X, Y);	\
++  TEST_EXTRA_CHUNK(float, 16, 4, X, Y)
++#else
++#define TEST_ALL_EXTRA_CHUNKS(X, Y) TEST_ALL_EXTRA_CHUNKS_NO_FP16(X, Y)
++#endif
++
++  /* vldX_dup supports only 64-bit inputs.  */
++#define CHECK_RESULTS_VLDX_DUP_NO_FP16(test_name,EXPECTED,comment)	\
++    CHECK(test_name, int, 8, 8, PRIx8, EXPECTED, comment);		\
++    CHECK(test_name, int, 16, 4, PRIx16, EXPECTED, comment);		\
++    CHECK(test_name, int, 32, 2, PRIx32, EXPECTED, comment);		\
++    CHECK(test_name, int, 64, 1, PRIx64, EXPECTED, comment);		\
++    CHECK(test_name, uint, 8, 8, PRIx8, EXPECTED, comment);		\
++    CHECK(test_name, uint, 16, 4, PRIx16, EXPECTED, comment);		\
++    CHECK(test_name, uint, 32, 2, PRIx32, EXPECTED, comment);		\
++    CHECK(test_name, uint, 64, 1, PRIx64, EXPECTED, comment);		\
++    CHECK(test_name, poly, 8, 8, PRIx8, EXPECTED, comment);		\
++    CHECK(test_name, poly, 16, 4, PRIx16, EXPECTED, comment);		\
++    CHECK_FP(test_name, float, 32, 2, PRIx32, EXPECTED, comment)
++
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++#define CHECK_RESULTS_VLDX_DUP(test_name,EXPECTED,comment)		\
++  {									\
++    CHECK_RESULTS_VLDX_DUP_NO_FP16(test_name,EXPECTED,comment);		\
++    CHECK_FP(test_name, float, 16, 4, PRIx16, EXPECTED, comment);	\
++  }
++#else
++#define CHECK_RESULTS_VLDX_DUP(test_name,EXPECTED,comment)		\
++  {									\
++    CHECK_RESULTS_VLDX_DUP_NO_FP16(test_name,EXPECTED,comment);		\
++  }
++#endif
+ 
+   DECL_ALL_VLDX_DUP(2);
+   DECL_ALL_VLDX_DUP(3);
+@@ -505,6 +313,10 @@ void exec_vldX_dup (void)
+   PAD(buffer_vld2_pad, poly, 8, 8);
+   VECT_ARRAY_INIT2(buffer_vld2, poly, 16, 4);
+   PAD(buffer_vld2_pad, poly, 16, 4);
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++  VECT_ARRAY_INIT2(buffer_vld2, float, 16, 4);
++  PAD(buffer_vld2_pad, float, 16, 4);
++#endif
+   VECT_ARRAY_INIT2(buffer_vld2, float, 32, 2);
+   PAD(buffer_vld2_pad, float, 32, 2);
+ 
+@@ -528,6 +340,10 @@ void exec_vldX_dup (void)
+   PAD(buffer_vld2_pad, poly, 8, 16);
+   VECT_ARRAY_INIT2(buffer_vld2, poly, 16, 8);
+   PAD(buffer_vld2_pad, poly, 16, 8);
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++  VECT_ARRAY_INIT2(buffer_vld2, float, 16, 8);
++  PAD(buffer_vld2_pad, float, 16, 8);
++#endif
+   VECT_ARRAY_INIT2(buffer_vld2, float, 32, 4);
+   PAD(buffer_vld2_pad, float, 32, 4);
+ 
+@@ -552,6 +368,10 @@ void exec_vldX_dup (void)
+   PAD(buffer_vld3_pad, poly, 8, 8);
+   VECT_ARRAY_INIT3(buffer_vld3, poly, 16, 4);
+   PAD(buffer_vld3_pad, poly, 16, 4);
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++  VECT_ARRAY_INIT3(buffer_vld3, float, 16, 4);
++  PAD(buffer_vld3_pad, float, 16, 4);
++#endif
+   VECT_ARRAY_INIT3(buffer_vld3, float, 32, 2);
+   PAD(buffer_vld3_pad, float, 32, 2);
+ 
+@@ -575,6 +395,10 @@ void exec_vldX_dup (void)
+   PAD(buffer_vld3_pad, poly, 8, 16);
+   VECT_ARRAY_INIT3(buffer_vld3, poly, 16, 8);
+   PAD(buffer_vld3_pad, poly, 16, 8);
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++  VECT_ARRAY_INIT3(buffer_vld3, float, 16, 8);
++  PAD(buffer_vld3_pad, float, 16, 8);
++#endif
+   VECT_ARRAY_INIT3(buffer_vld3, float, 32, 4);
+   PAD(buffer_vld3_pad, float, 32, 4);
+ 
+@@ -599,6 +423,10 @@ void exec_vldX_dup (void)
+   PAD(buffer_vld4_pad, poly, 8, 8);
+   VECT_ARRAY_INIT4(buffer_vld4, poly, 16, 4);
+   PAD(buffer_vld4_pad, poly, 16, 4);
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++  VECT_ARRAY_INIT4(buffer_vld4, float, 16, 4);
++  PAD(buffer_vld4_pad, float, 16, 4);
++#endif
+   VECT_ARRAY_INIT4(buffer_vld4, float, 32, 2);
+   PAD(buffer_vld4_pad, float, 32, 2);
+ 
+@@ -622,6 +450,10 @@ void exec_vldX_dup (void)
+   PAD(buffer_vld4_pad, poly, 8, 16);
+   VECT_ARRAY_INIT4(buffer_vld4, poly, 16, 8);
+   PAD(buffer_vld4_pad, poly, 16, 8);
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++  VECT_ARRAY_INIT4(buffer_vld4, float, 16, 8);
++  PAD(buffer_vld4_pad, float, 16, 8);
++#endif
+   VECT_ARRAY_INIT4(buffer_vld4, float, 32, 4);
+   PAD(buffer_vld4_pad, float, 32, 4);
+ 
+@@ -629,39 +461,39 @@ void exec_vldX_dup (void)
+   clean_results ();
+ #define TEST_MSG "VLD2_DUP/VLD2Q_DUP"
+   TEST_ALL_VLDX_DUP(2);
+-  CHECK_RESULTS_NAMED (TEST_MSG, expected_vld2_0, "chunk 0");
++  CHECK_RESULTS_VLDX_DUP (TEST_MSG, expected_vld2_0, "chunk 0");
+ 
+   TEST_ALL_EXTRA_CHUNKS(2, 1);
+-  CHECK_RESULTS_NAMED (TEST_MSG, expected_vld2_1, "chunk 1");
++  CHECK_RESULTS_VLDX_DUP (TEST_MSG, expected_vld2_1, "chunk 1");
+ 
+   /* Check vld3_dup/vld3q_dup.  */
+   clean_results ();
+ #undef TEST_MSG
+ #define TEST_MSG "VLD3_DUP/VLD3Q_DUP"
+   TEST_ALL_VLDX_DUP(3);
+-  CHECK_RESULTS_NAMED (TEST_MSG, expected_vld3_0, "chunk 0");
++  CHECK_RESULTS_VLDX_DUP (TEST_MSG, expected_vld3_0, "chunk 0");
+ 
+   TEST_ALL_EXTRA_CHUNKS(3, 1);
+-  CHECK_RESULTS_NAMED (TEST_MSG, expected_vld3_1, "chunk 1");
++  CHECK_RESULTS_VLDX_DUP (TEST_MSG, expected_vld3_1, "chunk 1");
+ 
+   TEST_ALL_EXTRA_CHUNKS(3, 2);
+-  CHECK_RESULTS_NAMED (TEST_MSG, expected_vld3_2, "chunk 2");
++  CHECK_RESULTS_VLDX_DUP (TEST_MSG, expected_vld3_2, "chunk 2");
+ 
+   /* Check vld4_dup/vld4q_dup */
+   clean_results ();
+ #undef TEST_MSG
+ #define TEST_MSG "VLD4_DUP/VLD4Q_DUP"
+   TEST_ALL_VLDX_DUP(4);
+-  CHECK_RESULTS_NAMED (TEST_MSG, expected_vld4_0, "chunk 0");
++  CHECK_RESULTS_VLDX_DUP (TEST_MSG, expected_vld4_0, "chunk 0");
+ 
+   TEST_ALL_EXTRA_CHUNKS(4, 1);
+-  CHECK_RESULTS_NAMED (TEST_MSG, expected_vld4_1, "chunk 1");
++  CHECK_RESULTS_VLDX_DUP (TEST_MSG, expected_vld4_1, "chunk 1");
+ 
+   TEST_ALL_EXTRA_CHUNKS(4, 2);
+-  CHECK_RESULTS_NAMED (TEST_MSG, expected_vld4_2, "chunk 2");
++  CHECK_RESULTS_VLDX_DUP (TEST_MSG, expected_vld4_2, "chunk 2");
+ 
+   TEST_ALL_EXTRA_CHUNKS(4, 3);
+-  CHECK_RESULTS_NAMED (TEST_MSG, expected_vld4_3, "chunk 3");
++  CHECK_RESULTS_VLDX_DUP (TEST_MSG, expected_vld4_3, "chunk 3");
+ }
+ 
+ int main (void)
+--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vldX_lane.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vldX_lane.c
+@@ -9,44 +9,29 @@ VECT_VAR_DECL(expected_vld2_0,int,8,8) [] = { 0xaa, 0xaa, 0xaa, 0xaa,
+ 					      0xaa, 0xaa, 0xaa, 0xaa };
+ VECT_VAR_DECL(expected_vld2_0,int,16,4) [] = { 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa };
+ VECT_VAR_DECL(expected_vld2_0,int,32,2) [] = { 0xfffffff0, 0xfffffff1 };
+-VECT_VAR_DECL(expected_vld2_0,int,64,1) [] = { 0x3333333333333333 };
+ VECT_VAR_DECL(expected_vld2_0,uint,8,8) [] = { 0xaa, 0xaa, 0xaa, 0xaa,
+ 					       0xaa, 0xaa, 0xaa, 0xaa };
+ VECT_VAR_DECL(expected_vld2_0,uint,16,4) [] = { 0xaaaa, 0xaaaa,
+ 						0xaaaa, 0xaaaa };
+ VECT_VAR_DECL(expected_vld2_0,uint,32,2) [] = { 0xaaaaaaaa, 0xaaaaaaaa };
+-VECT_VAR_DECL(expected_vld2_0,uint,64,1) [] = { 0x3333333333333333 };
+ VECT_VAR_DECL(expected_vld2_0,poly,8,8) [] = { 0xaa, 0xaa, 0xaa, 0xaa,
+ 					       0xaa, 0xaa, 0xaa, 0xaa };
+ VECT_VAR_DECL(expected_vld2_0,poly,16,4) [] = { 0xaaaa, 0xaaaa,
+ 						0xaaaa, 0xaaaa };
++VECT_VAR_DECL(expected_vld2_0,hfloat,16,4) [] = { 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa };
+ VECT_VAR_DECL(expected_vld2_0,hfloat,32,2) [] = { 0xc1800000, 0xc1700000 };
+-VECT_VAR_DECL(expected_vld2_0,int,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-					       0x33, 0x33, 0x33, 0x33,
+-					       0x33, 0x33, 0x33, 0x33,
+-					       0x33, 0x33, 0x33, 0x33 };
+ VECT_VAR_DECL(expected_vld2_0,int,16,8) [] = { 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa,
+ 					       0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa };
+ VECT_VAR_DECL(expected_vld2_0,int,32,4) [] = { 0xaaaaaaaa, 0xaaaaaaaa,
+ 					       0xaaaaaaaa, 0xaaaaaaaa };
+-VECT_VAR_DECL(expected_vld2_0,int,64,2) [] = { 0x3333333333333333,
+-					       0x3333333333333333 };
+-VECT_VAR_DECL(expected_vld2_0,uint,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-						0x33, 0x33, 0x33, 0x33,
+-						0x33, 0x33, 0x33, 0x33,
+-						0x33, 0x33, 0x33, 0x33 };
+ VECT_VAR_DECL(expected_vld2_0,uint,16,8) [] = { 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa,
+ 						0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa };
+ VECT_VAR_DECL(expected_vld2_0,uint,32,4) [] = { 0xfffffff0, 0xfffffff1,
+ 						0xaaaaaaaa, 0xaaaaaaaa };
+-VECT_VAR_DECL(expected_vld2_0,uint,64,2) [] = { 0x3333333333333333,
+-						0x3333333333333333 };
+-VECT_VAR_DECL(expected_vld2_0,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-						0x33, 0x33, 0x33, 0x33,
+-						0x33, 0x33, 0x33, 0x33,
+-						0x33, 0x33, 0x33, 0x33 };
+ VECT_VAR_DECL(expected_vld2_0,poly,16,8) [] = { 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa,
+ 						0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa };
++VECT_VAR_DECL(expected_vld2_0,hfloat,16,8) [] = { 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa,
++						  0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa } ;
+ VECT_VAR_DECL(expected_vld2_0,hfloat,32,4) [] = { 0xaaaaaaaa, 0xaaaaaaaa,
+ 						  0xaaaaaaaa, 0xaaaaaaaa };
+ 
+@@ -55,42 +40,27 @@ VECT_VAR_DECL(expected_vld2_1,int,8,8) [] = { 0xaa, 0xaa, 0xaa, 0xaa,
+ 					      0xaa, 0xaa, 0xf0, 0xf1 };
+ VECT_VAR_DECL(expected_vld2_1,int,16,4) [] = { 0xfff0, 0xfff1, 0xaaaa, 0xaaaa };
+ VECT_VAR_DECL(expected_vld2_1,int,32,2) [] = { 0xaaaaaaaa, 0xaaaaaaaa };
+-VECT_VAR_DECL(expected_vld2_1,int,64,1) [] = { 0x3333333333333333 };
+ VECT_VAR_DECL(expected_vld2_1,uint,8,8) [] = { 0xf0, 0xf1, 0xaa, 0xaa,
+ 					       0xaa, 0xaa, 0xaa, 0xaa };
+ VECT_VAR_DECL(expected_vld2_1,uint,16,4) [] = { 0xaaaa, 0xaaaa, 0xfff0, 0xfff1 };
+ VECT_VAR_DECL(expected_vld2_1,uint,32,2) [] = { 0xfffffff0, 0xfffffff1 };
+-VECT_VAR_DECL(expected_vld2_1,uint,64,1) [] = { 0x3333333333333333 };
+ VECT_VAR_DECL(expected_vld2_1,poly,8,8) [] = { 0xf0, 0xf1, 0xaa, 0xaa,
+ 					       0xaa, 0xaa, 0xaa, 0xaa };
+ VECT_VAR_DECL(expected_vld2_1,poly,16,4) [] = { 0xaaaa, 0xaaaa, 0xfff0, 0xfff1 };
++VECT_VAR_DECL(expected_vld2_1,hfloat,16,4) [] = { 0xcc00, 0xcb80, 0xaaaa, 0xaaaa };
+ VECT_VAR_DECL(expected_vld2_1,hfloat,32,2) [] = { 0xaaaaaaaa, 0xaaaaaaaa };
+-VECT_VAR_DECL(expected_vld2_1,int,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-					       0x33, 0x33, 0x33, 0x33,
+-					       0x33, 0x33, 0x33, 0x33,
+-					       0x33, 0x33, 0x33, 0x33 };
+ VECT_VAR_DECL(expected_vld2_1,int,16,8) [] = { 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa,
+ 					       0xfff0, 0xfff1, 0xaaaa, 0xaaaa };
+ VECT_VAR_DECL(expected_vld2_1,int,32,4) [] = { 0xfffffff0, 0xfffffff1,
+ 					       0xaaaaaaaa, 0xaaaaaaaa };
+-VECT_VAR_DECL(expected_vld2_1,int,64,2) [] = { 0x3333333333333333,
+-					       0x3333333333333333 };
+-VECT_VAR_DECL(expected_vld2_1,uint,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-						0x33, 0x33, 0x33, 0x33,
+-						0x33, 0x33, 0x33, 0x33,
+-						0x33, 0x33, 0x33, 0x33 };
+ VECT_VAR_DECL(expected_vld2_1,uint,16,8) [] = { 0xaaaa, 0xaaaa, 0xfff0, 0xfff1,
+ 						0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa };
+ VECT_VAR_DECL(expected_vld2_1,uint,32,4) [] = { 0xaaaaaaaa, 0xaaaaaaaa,
+ 						0xaaaaaaaa, 0xaaaaaaaa };
+-VECT_VAR_DECL(expected_vld2_1,uint,64,2) [] = { 0x3333333333333333,
+-						0x3333333333333333 };
+-VECT_VAR_DECL(expected_vld2_1,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-						0x33, 0x33, 0x33, 0x33,
+-						0x33, 0x33, 0x33, 0x33,
+-						0x33, 0x33, 0x33, 0x33 };
+ VECT_VAR_DECL(expected_vld2_1,poly,16,8) [] = { 0xaaaa, 0xaaaa, 0xfff0, 0xfff1,
+ 						0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa };
++VECT_VAR_DECL(expected_vld2_1,hfloat,16,8) [] = { 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa,
++						  0xcc00, 0xcb80, 0xaaaa, 0xaaaa };
+ VECT_VAR_DECL(expected_vld2_1,hfloat,32,4) [] = { 0xc1800000, 0xc1700000,
+ 						  0xaaaaaaaa, 0xaaaaaaaa };
+ 
+@@ -99,42 +69,27 @@ VECT_VAR_DECL(expected_vld3_0,int,8,8) [] = { 0xaa, 0xaa, 0xaa, 0xaa,
+ 					      0xaa, 0xaa, 0xaa, 0xaa };
+ VECT_VAR_DECL(expected_vld3_0,int,16,4) [] = { 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa };
+ VECT_VAR_DECL(expected_vld3_0,int,32,2) [] = { 0xfffffff0, 0xfffffff1 };
+-VECT_VAR_DECL(expected_vld3_0,int,64,1) [] = { 0x3333333333333333 };
+ VECT_VAR_DECL(expected_vld3_0,uint,8,8) [] = { 0xaa, 0xaa, 0xaa, 0xaa,
+ 					       0xaa, 0xaa, 0xaa, 0xaa };
+ VECT_VAR_DECL(expected_vld3_0,uint,16,4) [] = { 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa };
+ VECT_VAR_DECL(expected_vld3_0,uint,32,2) [] = { 0xaaaaaaaa, 0xaaaaaaaa };
+-VECT_VAR_DECL(expected_vld3_0,uint,64,1) [] = { 0x3333333333333333 };
+ VECT_VAR_DECL(expected_vld3_0,poly,8,8) [] = { 0xaa, 0xaa, 0xaa, 0xaa,
+ 					       0xaa, 0xaa, 0xaa, 0xaa };
+ VECT_VAR_DECL(expected_vld3_0,poly,16,4) [] = { 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa };
++VECT_VAR_DECL(expected_vld3_0,hfloat,16,4) [] = { 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa };
+ VECT_VAR_DECL(expected_vld3_0,hfloat,32,2) [] = { 0xc1800000, 0xc1700000 };
+-VECT_VAR_DECL(expected_vld3_0,int,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-					       0x33, 0x33, 0x33, 0x33,
+-					       0x33, 0x33, 0x33, 0x33,
+-					       0x33, 0x33, 0x33, 0x33 };
+ VECT_VAR_DECL(expected_vld3_0,int,16,8) [] = { 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa,
+ 					       0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa };
+ VECT_VAR_DECL(expected_vld3_0,int,32,4) [] = { 0xaaaaaaaa, 0xaaaaaaaa,
+ 					       0xaaaaaaaa, 0xaaaaaaaa };
+-VECT_VAR_DECL(expected_vld3_0,int,64,2) [] = { 0x3333333333333333,
+-					       0x3333333333333333 };
+-VECT_VAR_DECL(expected_vld3_0,uint,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-						0x33, 0x33, 0x33, 0x33,
+-						0x33, 0x33, 0x33, 0x33,
+-						0x33, 0x33, 0x33, 0x33 };
+ VECT_VAR_DECL(expected_vld3_0,uint,16,8) [] = { 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa,
+ 						0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa };
+ VECT_VAR_DECL(expected_vld3_0,uint,32,4) [] = { 0xfffffff0, 0xfffffff1,
+ 						0xfffffff2, 0xaaaaaaaa };
+-VECT_VAR_DECL(expected_vld3_0,uint,64,2) [] = { 0x3333333333333333,
+-						0x3333333333333333 };
+-VECT_VAR_DECL(expected_vld3_0,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-						0x33, 0x33, 0x33, 0x33,
+-						0x33, 0x33, 0x33, 0x33,
+-						0x33, 0x33, 0x33, 0x33 };
+ VECT_VAR_DECL(expected_vld3_0,poly,16,8) [] = { 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa,
+ 						0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa };
++VECT_VAR_DECL(expected_vld3_0,hfloat,16,8) [] = { 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa,
++						  0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa };
+ VECT_VAR_DECL(expected_vld3_0,hfloat,32,4) [] = { 0xaaaaaaaa, 0xaaaaaaaa,
+ 						  0xaaaaaaaa, 0xaaaaaaaa };
+ 
+@@ -143,42 +98,27 @@ VECT_VAR_DECL(expected_vld3_1,int,8,8) [] = { 0xaa, 0xaa, 0xaa, 0xaa,
+ 					      0xaa, 0xaa, 0xaa, 0xaa };
+ VECT_VAR_DECL(expected_vld3_1,int,16,4) [] = { 0xaaaa, 0xaaaa, 0xfff0, 0xfff1 };
+ VECT_VAR_DECL(expected_vld3_1,int,32,2) [] = { 0xfffffff2, 0xaaaaaaaa };
+-VECT_VAR_DECL(expected_vld3_1,int,64,1) [] = { 0x3333333333333333 };
+ VECT_VAR_DECL(expected_vld3_1,uint,8,8) [] = { 0xaa, 0xaa, 0xaa, 0xaa,
+ 					       0xf0, 0xf1, 0xf2, 0xaa };
+ VECT_VAR_DECL(expected_vld3_1,uint,16,4) [] = { 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa };
+ VECT_VAR_DECL(expected_vld3_1,uint,32,2) [] = { 0xaaaaaaaa, 0xfffffff0 };
+-VECT_VAR_DECL(expected_vld3_1,uint,64,1) [] = { 0x3333333333333333 };
+ VECT_VAR_DECL(expected_vld3_1,poly,8,8) [] = { 0xaa, 0xaa, 0xaa, 0xaa,
+ 					       0xf0, 0xf1, 0xf2, 0xaa };
+ VECT_VAR_DECL(expected_vld3_1,poly,16,4) [] = { 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa };
++VECT_VAR_DECL(expected_vld3_1,hfloat,16,4) [] = { 0xaaaa, 0xaaaa, 0xcc00, 0xcb80 };
+ VECT_VAR_DECL(expected_vld3_1,hfloat,32,2) [] = { 0xc1600000, 0xaaaaaaaa };
+-VECT_VAR_DECL(expected_vld3_1,int,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-					       0x33, 0x33, 0x33, 0x33,
+-					       0x33, 0x33, 0x33, 0x33,
+-					       0x33, 0x33, 0x33, 0x33 };
+ VECT_VAR_DECL(expected_vld3_1,int,16,8) [] = { 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa,
+ 					       0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa };
+ VECT_VAR_DECL(expected_vld3_1,int,32,4) [] = { 0xaaaaaaaa, 0xaaaaaaaa,
+ 					       0xfffffff0, 0xfffffff1 };
+-VECT_VAR_DECL(expected_vld3_1,int,64,2) [] = { 0x3333333333333333,
+-					       0x3333333333333333 };
+-VECT_VAR_DECL(expected_vld3_1,uint,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-						0x33, 0x33, 0x33, 0x33,
+-						0x33, 0x33, 0x33, 0x33,
+-						0x33, 0x33, 0x33, 0x33 };
+ VECT_VAR_DECL(expected_vld3_1,uint,16,8) [] = { 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa,
+ 						0xaaaa, 0xaaaa, 0xaaaa, 0xfff0 };
+ VECT_VAR_DECL(expected_vld3_1,uint,32,4) [] = { 0xaaaaaaaa, 0xaaaaaaaa,
+ 						0xaaaaaaaa, 0xaaaaaaaa };
+-VECT_VAR_DECL(expected_vld3_1,uint,64,2) [] = { 0x3333333333333333,
+-						0x3333333333333333 };
+-VECT_VAR_DECL(expected_vld3_1,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-						0x33, 0x33, 0x33, 0x33,
+-						0x33, 0x33, 0x33, 0x33,
+-						0x33, 0x33, 0x33, 0x33 };
+ VECT_VAR_DECL(expected_vld3_1,poly,16,8) [] = { 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa,
+ 						0xaaaa, 0xaaaa, 0xaaaa, 0xfff0 };
++VECT_VAR_DECL(expected_vld3_1,hfloat,16,8) [] = { 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa,
++						  0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa };
+ VECT_VAR_DECL(expected_vld3_1,hfloat,32,4) [] = { 0xaaaaaaaa, 0xaaaaaaaa,
+ 						  0xc1800000, 0xc1700000 };
+ 
+@@ -187,42 +127,27 @@ VECT_VAR_DECL(expected_vld3_2,int,8,8) [] = { 0xaa, 0xaa, 0xaa, 0xaa,
+ 					      0xaa, 0xf0, 0xf1, 0xf2 };
+ VECT_VAR_DECL(expected_vld3_2,int,16,4) [] = { 0xfff2, 0xaaaa, 0xaaaa, 0xaaaa };
+ VECT_VAR_DECL(expected_vld3_2,int,32,2) [] = { 0xaaaaaaaa, 0xaaaaaaaa };
+-VECT_VAR_DECL(expected_vld3_2,int,64,1) [] = { 0x3333333333333333 };
+ VECT_VAR_DECL(expected_vld3_2,uint,8,8) [] = { 0xaa, 0xaa, 0xaa, 0xaa,
+ 					       0xaa, 0xaa, 0xaa, 0xaa };
+ VECT_VAR_DECL(expected_vld3_2,uint,16,4) [] = { 0xaaaa, 0xfff0, 0xfff1, 0xfff2 };
+ VECT_VAR_DECL(expected_vld3_2,uint,32,2) [] = { 0xfffffff1, 0xfffffff2 };
+-VECT_VAR_DECL(expected_vld3_2,uint,64,1) [] = { 0x3333333333333333 };
+ VECT_VAR_DECL(expected_vld3_2,poly,8,8) [] = { 0xaa, 0xaa, 0xaa, 0xaa,
+ 					       0xaa, 0xaa, 0xaa, 0xaa };
+ VECT_VAR_DECL(expected_vld3_2,poly,16,4) [] = { 0xaaaa, 0xfff0, 0xfff1, 0xfff2 };
++VECT_VAR_DECL(expected_vld3_2,hfloat,16,4) [] = { 0xcb00, 0xaaaa, 0xaaaa, 0xaaaa };
+ VECT_VAR_DECL(expected_vld3_2,hfloat,32,2) [] = { 0xaaaaaaaa, 0xaaaaaaaa };
+-VECT_VAR_DECL(expected_vld3_2,int,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-					       0x33, 0x33, 0x33, 0x33,
+-					       0x33, 0x33, 0x33, 0x33,
+-					       0x33, 0x33, 0x33, 0x33 };
+ VECT_VAR_DECL(expected_vld3_2,int,16,8) [] = { 0xaaaa, 0xaaaa, 0xfff0, 0xfff1,
+ 					       0xfff2, 0xaaaa, 0xaaaa, 0xaaaa };
+ VECT_VAR_DECL(expected_vld3_2,int,32,4) [] = { 0xfffffff2, 0xaaaaaaaa,
+ 					       0xaaaaaaaa, 0xaaaaaaaa };
+-VECT_VAR_DECL(expected_vld3_2,int,64,2) [] = { 0x3333333333333333,
+-					       0x3333333333333333 };
+-VECT_VAR_DECL(expected_vld3_2,uint,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-						0x33, 0x33, 0x33, 0x33,
+-						0x33, 0x33, 0x33, 0x33,
+-						0x33, 0x33, 0x33, 0x33 };
+ VECT_VAR_DECL(expected_vld3_2,uint,16,8) [] = { 0xfff1, 0xfff2, 0xaaaa, 0xaaaa,
+ 						0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa };
+ VECT_VAR_DECL(expected_vld3_2,uint,32,4) [] = { 0xaaaaaaaa, 0xaaaaaaaa,
+ 						0xaaaaaaaa, 0xaaaaaaaa };
+-VECT_VAR_DECL(expected_vld3_2,uint,64,2) [] = { 0x3333333333333333,
+-						0x3333333333333333 };
+-VECT_VAR_DECL(expected_vld3_2,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-						0x33, 0x33, 0x33, 0x33,
+-						0x33, 0x33, 0x33, 0x33,
+-						0x33, 0x33, 0x33, 0x33 };
+ VECT_VAR_DECL(expected_vld3_2,poly,16,8) [] = { 0xfff1, 0xfff2, 0xaaaa, 0xaaaa,
+ 						0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa };
++VECT_VAR_DECL(expected_vld3_2,hfloat,16,8) [] = { 0xaaaa, 0xaaaa, 0xcc00, 0xcb80,
++						  0xcb00, 0xaaaa, 0xaaaa, 0xaaaa };
+ VECT_VAR_DECL(expected_vld3_2,hfloat,32,4) [] = { 0xc1600000, 0xaaaaaaaa,
+ 						  0xaaaaaaaa, 0xaaaaaaaa };
+ 
+@@ -231,42 +156,27 @@ VECT_VAR_DECL(expected_vld4_0,int,8,8) [] = { 0xaa, 0xaa, 0xaa, 0xaa,
+ 					      0xaa, 0xaa, 0xaa, 0xaa };
+ VECT_VAR_DECL(expected_vld4_0,int,16,4) [] = { 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa };
+ VECT_VAR_DECL(expected_vld4_0,int,32,2) [] = { 0xfffffff0, 0xfffffff1 };
+-VECT_VAR_DECL(expected_vld4_0,int,64,1) [] = { 0x3333333333333333 };
+ VECT_VAR_DECL(expected_vld4_0,uint,8,8) [] = { 0xaa, 0xaa, 0xaa, 0xaa,
+ 					       0xaa, 0xaa, 0xaa, 0xaa };
+ VECT_VAR_DECL(expected_vld4_0,uint,16,4) [] = { 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa };
+ VECT_VAR_DECL(expected_vld4_0,uint,32,2) [] = { 0xaaaaaaaa, 0xaaaaaaaa };
+-VECT_VAR_DECL(expected_vld4_0,uint,64,1) [] = { 0x3333333333333333 };
+ VECT_VAR_DECL(expected_vld4_0,poly,8,8) [] = { 0xaa, 0xaa, 0xaa, 0xaa,
+ 					       0xaa, 0xaa, 0xaa, 0xaa };
+ VECT_VAR_DECL(expected_vld4_0,poly,16,4) [] = { 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa };
++VECT_VAR_DECL(expected_vld4_0,hfloat,16,4) [] = { 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa };
+ VECT_VAR_DECL(expected_vld4_0,hfloat,32,2) [] = { 0xc1800000, 0xc1700000 };
+-VECT_VAR_DECL(expected_vld4_0,int,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-					       0x33, 0x33, 0x33, 0x33,
+-					       0x33, 0x33, 0x33, 0x33,
+-					       0x33, 0x33, 0x33, 0x33 };
+ VECT_VAR_DECL(expected_vld4_0,int,16,8) [] = { 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa,
+ 					       0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa };
+ VECT_VAR_DECL(expected_vld4_0,int,32,4) [] = { 0xaaaaaaaa, 0xaaaaaaaa,
+ 					       0xaaaaaaaa, 0xaaaaaaaa };
+-VECT_VAR_DECL(expected_vld4_0,int,64,2) [] = { 0x3333333333333333,
+-					       0x3333333333333333 };
+-VECT_VAR_DECL(expected_vld4_0,uint,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-						0x33, 0x33, 0x33, 0x33,
+-						0x33, 0x33, 0x33, 0x33,
+-						0x33, 0x33, 0x33, 0x33 };
+ VECT_VAR_DECL(expected_vld4_0,uint,16,8) [] = { 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa,
+ 						0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa };
+ VECT_VAR_DECL(expected_vld4_0,uint,32,4) [] = { 0xfffffff0, 0xfffffff1,
+ 						0xfffffff2, 0xfffffff3 };
+-VECT_VAR_DECL(expected_vld4_0,uint,64,2) [] = { 0x3333333333333333,
+-						0x3333333333333333 };
+-VECT_VAR_DECL(expected_vld4_0,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-						0x33, 0x33, 0x33, 0x33,
+-						0x33, 0x33, 0x33, 0x33,
+-						0x33, 0x33, 0x33, 0x33 };
+ VECT_VAR_DECL(expected_vld4_0,poly,16,8) [] = { 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa,
+ 						0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa };
++VECT_VAR_DECL(expected_vld4_0,hfloat,16,8) [] = { 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa,
++						  0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa };
+ VECT_VAR_DECL(expected_vld4_0,hfloat,32,4) [] = { 0xaaaaaaaa, 0xaaaaaaaa,
+ 						  0xaaaaaaaa, 0xaaaaaaaa };
+ 
+@@ -275,42 +185,27 @@ VECT_VAR_DECL(expected_vld4_1,int,8,8) [] = { 0xaa, 0xaa, 0xaa, 0xaa,
+ 					      0xaa, 0xaa, 0xaa, 0xaa };
+ VECT_VAR_DECL(expected_vld4_1,int,16,4) [] = { 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa };
+ VECT_VAR_DECL(expected_vld4_1,int,32,2) [] = { 0xfffffff2, 0xfffffff3 };
+-VECT_VAR_DECL(expected_vld4_1,int,64,1) [] = { 0x3333333333333333 };
+ VECT_VAR_DECL(expected_vld4_1,uint,8,8) [] = { 0xaa, 0xaa, 0xaa, 0xaa,
+ 					       0xaa, 0xaa, 0xaa, 0xaa };
+ VECT_VAR_DECL(expected_vld4_1,uint,16,4) [] = { 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa };
+ VECT_VAR_DECL(expected_vld4_1,uint,32,2) [] = { 0xaaaaaaaa, 0xaaaaaaaa };
+-VECT_VAR_DECL(expected_vld4_1,uint,64,1) [] = { 0x3333333333333333 };
+ VECT_VAR_DECL(expected_vld4_1,poly,8,8) [] = { 0xaa, 0xaa, 0xaa, 0xaa,
+ 					       0xaa, 0xaa, 0xaa, 0xaa };
+ VECT_VAR_DECL(expected_vld4_1,poly,16,4) [] = { 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa };
++VECT_VAR_DECL(expected_vld4_1,hfloat,16,4) [] = { 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa };
+ VECT_VAR_DECL(expected_vld4_1,hfloat,32,2) [] = { 0xc1600000, 0xc1500000 };
+-VECT_VAR_DECL(expected_vld4_1,int,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-					       0x33, 0x33, 0x33, 0x33,
+-					       0x33, 0x33, 0x33, 0x33,
+-					       0x33, 0x33, 0x33, 0x33 };
+ VECT_VAR_DECL(expected_vld4_1,int,16,8) [] = { 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa,
+ 					       0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa };
+ VECT_VAR_DECL(expected_vld4_1,int,32,4) [] = { 0xaaaaaaaa, 0xaaaaaaaa,
+ 					       0xaaaaaaaa, 0xaaaaaaaa };
+-VECT_VAR_DECL(expected_vld4_1,int,64,2) [] = { 0x3333333333333333,
+-					       0x3333333333333333 };
+-VECT_VAR_DECL(expected_vld4_1,uint,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-						0x33, 0x33, 0x33, 0x33,
+-						0x33, 0x33, 0x33, 0x33,
+-						0x33, 0x33, 0x33, 0x33 };
+ VECT_VAR_DECL(expected_vld4_1,uint,16,8) [] = { 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa,
+ 						0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa };
+ VECT_VAR_DECL(expected_vld4_1,uint,32,4) [] = { 0xaaaaaaaa, 0xaaaaaaaa,
+ 						0xaaaaaaaa, 0xaaaaaaaa };
+-VECT_VAR_DECL(expected_vld4_1,uint,64,2) [] = { 0x3333333333333333,
+-						0x3333333333333333 };
+-VECT_VAR_DECL(expected_vld4_1,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-						0x33, 0x33, 0x33, 0x33,
+-						0x33, 0x33, 0x33, 0x33,
+-						0x33, 0x33, 0x33, 0x33 };
+ VECT_VAR_DECL(expected_vld4_1,poly,16,8) [] = { 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa,
+ 						0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa };
++VECT_VAR_DECL(expected_vld4_1,hfloat,16,8) [] = { 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa,
++						  0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa };
+ VECT_VAR_DECL(expected_vld4_1,hfloat,32,4) [] = { 0xaaaaaaaa, 0xaaaaaaaa,
+ 						  0xaaaaaaaa, 0xaaaaaaaa };
+ 
+@@ -319,42 +214,27 @@ VECT_VAR_DECL(expected_vld4_2,int,8,8) [] = { 0xaa, 0xaa, 0xaa, 0xaa,
+ 					      0xaa, 0xaa, 0xaa, 0xaa };
+ VECT_VAR_DECL(expected_vld4_2,int,16,4) [] = { 0xfff0, 0xfff1, 0xfff2, 0xfff3 };
+ VECT_VAR_DECL(expected_vld4_2,int,32,2) [] = { 0xaaaaaaaa, 0xaaaaaaaa };
+-VECT_VAR_DECL(expected_vld4_2,int,64,1) [] = { 0x3333333333333333 };
+ VECT_VAR_DECL(expected_vld4_2,uint,8,8) [] = { 0xf0, 0xf1, 0xf2, 0xf3,
+ 					       0xaa, 0xaa, 0xaa, 0xaa };
+ VECT_VAR_DECL(expected_vld4_2,uint,16,4) [] = { 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa };
+ VECT_VAR_DECL(expected_vld4_2,uint,32,2) [] = { 0xfffffff0, 0xfffffff1 };
+-VECT_VAR_DECL(expected_vld4_2,uint,64,1) [] = { 0x3333333333333333 };
+ VECT_VAR_DECL(expected_vld4_2,poly,8,8) [] = { 0xf0, 0xf1, 0xf2, 0xf3,
+ 					       0xaa, 0xaa, 0xaa, 0xaa };
+ VECT_VAR_DECL(expected_vld4_2,poly,16,4) [] = { 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa };
++VECT_VAR_DECL(expected_vld4_2,hfloat,16,4) [] = { 0xcc00, 0xcb80, 0xcb00, 0xca80 };
+ VECT_VAR_DECL(expected_vld4_2,hfloat,32,2) [] = { 0xaaaaaaaa, 0xaaaaaaaa };
+-VECT_VAR_DECL(expected_vld4_2,int,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-					       0x33, 0x33, 0x33, 0x33,
+-					       0x33, 0x33, 0x33, 0x33,
+-					       0x33, 0x33, 0x33, 0x33 };
+ VECT_VAR_DECL(expected_vld4_2,int,16,8) [] = { 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa,
+ 					       0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa };
+ VECT_VAR_DECL(expected_vld4_2,int,32,4) [] = { 0xfffffff0, 0xfffffff1,
+ 					       0xfffffff2, 0xfffffff3 };
+-VECT_VAR_DECL(expected_vld4_2,int,64,2) [] = { 0x3333333333333333,
+-					       0x3333333333333333 };
+-VECT_VAR_DECL(expected_vld4_2,uint,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-						0x33, 0x33, 0x33, 0x33,
+-						0x33, 0x33, 0x33, 0x33,
+-						0x33, 0x33, 0x33, 0x33 };
+ VECT_VAR_DECL(expected_vld4_2,uint,16,8) [] = { 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa,
+ 						0xfff0, 0xfff1, 0xfff2, 0xfff3 };
+ VECT_VAR_DECL(expected_vld4_2,uint,32,4) [] = { 0xaaaaaaaa, 0xaaaaaaaa,
+ 						0xaaaaaaaa, 0xaaaaaaaa };
+-VECT_VAR_DECL(expected_vld4_2,uint,64,2) [] = { 0x3333333333333333,
+-						0x3333333333333333 };
+-VECT_VAR_DECL(expected_vld4_2,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-						0x33, 0x33, 0x33, 0x33,
+-						0x33, 0x33, 0x33, 0x33,
+-						0x33, 0x33, 0x33, 0x33 };
+ VECT_VAR_DECL(expected_vld4_2,poly,16,8) [] = { 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa,
+ 						0xfff0, 0xfff1, 0xfff2, 0xfff3 };
++VECT_VAR_DECL(expected_vld4_2,hfloat,16,8) [] = { 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa,
++						  0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa };
+ VECT_VAR_DECL(expected_vld4_2,hfloat,32,4) [] = { 0xc1800000, 0xc1700000,
+ 						  0xc1600000, 0xc1500000 };
+ 
+@@ -363,42 +243,27 @@ VECT_VAR_DECL(expected_vld4_3,int,8,8) [] = { 0xaa, 0xaa, 0xaa, 0xaa,
+ 					      0xf0, 0xf1, 0xf2, 0xf3 };
+ VECT_VAR_DECL(expected_vld4_3,int,16,4) [] = { 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa };
+ VECT_VAR_DECL(expected_vld4_3,int,32,2) [] = { 0xaaaaaaaa, 0xaaaaaaaa };
+-VECT_VAR_DECL(expected_vld4_3,int,64,1) [] = { 0x3333333333333333 };
+ VECT_VAR_DECL(expected_vld4_3,uint,8,8) [] = { 0xaa, 0xaa, 0xaa, 0xaa,
+ 					       0xaa, 0xaa, 0xaa, 0xaa };
+ VECT_VAR_DECL(expected_vld4_3,uint,16,4) [] = { 0xfff0, 0xfff1, 0xfff2, 0xfff3 };
+ VECT_VAR_DECL(expected_vld4_3,uint,32,2) [] = { 0xfffffff2, 0xfffffff3 };
+-VECT_VAR_DECL(expected_vld4_3,uint,64,1) [] = { 0x3333333333333333 };
+ VECT_VAR_DECL(expected_vld4_3,poly,8,8) [] = { 0xaa, 0xaa, 0xaa, 0xaa,
+ 					       0xaa, 0xaa, 0xaa, 0xaa };
+ VECT_VAR_DECL(expected_vld4_3,poly,16,4) [] = { 0xfff0, 0xfff1, 0xfff2, 0xfff3 };
++VECT_VAR_DECL(expected_vld4_3,hfloat,16,4) [] = { 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa };
+ VECT_VAR_DECL(expected_vld4_3,hfloat,32,2) [] = { 0xaaaaaaaa, 0xaaaaaaaa };
+-VECT_VAR_DECL(expected_vld4_3,int,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-					       0x33, 0x33, 0x33, 0x33,
+-					       0x33, 0x33, 0x33, 0x33,
+-					       0x33, 0x33, 0x33, 0x33 };
+ VECT_VAR_DECL(expected_vld4_3,int,16,8) [] = { 0xfff0, 0xfff1, 0xfff2, 0xfff3,
+ 					       0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa };
+ VECT_VAR_DECL(expected_vld4_3,int,32,4) [] = { 0xaaaaaaaa, 0xaaaaaaaa,
+ 					       0xaaaaaaaa, 0xaaaaaaaa };
+-VECT_VAR_DECL(expected_vld4_3,int,64,2) [] = { 0x3333333333333333,
+-					       0x3333333333333333 };
+-VECT_VAR_DECL(expected_vld4_3,uint,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-						0x33, 0x33, 0x33, 0x33,
+-						0x33, 0x33, 0x33, 0x33,
+-						0x33, 0x33, 0x33, 0x33 };
+ VECT_VAR_DECL(expected_vld4_3,uint,16,8) [] = { 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa,
+ 						0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa };
+ VECT_VAR_DECL(expected_vld4_3,uint,32,4) [] = { 0xaaaaaaaa, 0xaaaaaaaa,
+ 						0xaaaaaaaa, 0xaaaaaaaa };
+-VECT_VAR_DECL(expected_vld4_3,uint,64,2) [] = { 0x3333333333333333,
+-						0x3333333333333333 };
+-VECT_VAR_DECL(expected_vld4_3,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-						0x33, 0x33, 0x33, 0x33,
+-						0x33, 0x33, 0x33, 0x33,
+-						0x33, 0x33, 0x33, 0x33 };
+ VECT_VAR_DECL(expected_vld4_3,poly,16,8) [] = { 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa,
+ 						0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa };
++VECT_VAR_DECL(expected_vld4_3,hfloat,16,8) [] = { 0xcc00, 0xcb80, 0xcb00, 0xca80,
++						  0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa };
+ VECT_VAR_DECL(expected_vld4_3,hfloat,32,4) [] = { 0xaaaaaaaa, 0xaaaaaaaa,
+ 						  0xaaaaaaaa, 0xaaaaaaaa };
+ 
+@@ -414,6 +279,9 @@ VECT_VAR_DECL_INIT(buffer_vld2_lane, uint, 32, 2);
+ VECT_VAR_DECL_INIT(buffer_vld2_lane, uint, 64, 2);
+ VECT_VAR_DECL_INIT(buffer_vld2_lane, poly, 8, 2);
+ VECT_VAR_DECL_INIT(buffer_vld2_lane, poly, 16, 2);
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++VECT_VAR_DECL_INIT(buffer_vld2_lane, float, 16, 2);
++#endif
+ VECT_VAR_DECL_INIT(buffer_vld2_lane, float, 32, 2);
+ 
+ /* Input buffers for vld3_lane */
+@@ -427,6 +295,9 @@ VECT_VAR_DECL_INIT(buffer_vld3_lane, uint, 32, 3);
+ VECT_VAR_DECL_INIT(buffer_vld3_lane, uint, 64, 3);
+ VECT_VAR_DECL_INIT(buffer_vld3_lane, poly, 8, 3);
+ VECT_VAR_DECL_INIT(buffer_vld3_lane, poly, 16, 3);
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++VECT_VAR_DECL_INIT(buffer_vld3_lane, float, 16, 3);
++#endif
+ VECT_VAR_DECL_INIT(buffer_vld3_lane, float, 32, 3);
+ 
+ /* Input buffers for vld4_lane */
+@@ -440,6 +311,9 @@ VECT_VAR_DECL_INIT(buffer_vld4_lane, uint, 32, 4);
+ VECT_VAR_DECL_INIT(buffer_vld4_lane, uint, 64, 4);
+ VECT_VAR_DECL_INIT(buffer_vld4_lane, poly, 8, 4);
+ VECT_VAR_DECL_INIT(buffer_vld4_lane, poly, 16, 4);
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++VECT_VAR_DECL_INIT(buffer_vld4_lane, float, 16, 4);
++#endif
+ VECT_VAR_DECL_INIT(buffer_vld4_lane, float, 32, 4);
+ 
+ void exec_vldX_lane (void)
+@@ -483,7 +357,7 @@ void exec_vldX_lane (void)
+ 	 sizeof(VECT_VAR(result, T1, W, N)));
+ 
+   /* We need all variants in 64 bits, but there is no 64x2 variant.  */
+-#define DECL_ALL_VLDX_LANE(X)			\
++#define DECL_ALL_VLDX_LANE_NO_FP16(X)		\
+   DECL_VLDX_LANE(int, 8, 8, X);			\
+   DECL_VLDX_LANE(int, 16, 4, X);		\
+   DECL_VLDX_LANE(int, 32, 2, X);		\
+@@ -500,6 +374,15 @@ void exec_vldX_lane (void)
+   DECL_VLDX_LANE(float, 32, 2, X);		\
+   DECL_VLDX_LANE(float, 32, 4, X)
+ 
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++#define DECL_ALL_VLDX_LANE(X)		\
++  DECL_ALL_VLDX_LANE_NO_FP16(X);	\
++  DECL_VLDX_LANE(float, 16, 4, X);	\
++  DECL_VLDX_LANE(float, 16, 8, X)
++#else
++#define DECL_ALL_VLDX_LANE(X) DECL_ALL_VLDX_LANE_NO_FP16(X)
++#endif
++
+   /* Add some padding to try to catch out of bound accesses.  */
+ #define ARRAY1(V, T, W, N) VECT_VAR_DECL(V,T,W,N)[1]={42}
+ #define DUMMY_ARRAY(V, T, W, N, L) \
+@@ -508,7 +391,7 @@ void exec_vldX_lane (void)
+ 
+   /* Use the same lanes regardless of the size of the array (X), for
+      simplicity.  */
+-#define TEST_ALL_VLDX_LANE(X)			\
++#define TEST_ALL_VLDX_LANE_NO_FP16(X)		\
+   TEST_VLDX_LANE(, int, s, 8, 8, X, 7);		\
+   TEST_VLDX_LANE(, int, s, 16, 4, X, 2);	\
+   TEST_VLDX_LANE(, int, s, 32, 2, X, 0);	\
+@@ -525,7 +408,16 @@ void exec_vldX_lane (void)
+   TEST_VLDX_LANE(, float, f, 32, 2, X, 0);	\
+   TEST_VLDX_LANE(q, float, f, 32, 4, X, 2)
+ 
+-#define TEST_ALL_EXTRA_CHUNKS(X, Y)		\
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++#define TEST_ALL_VLDX_LANE(X)			\
++  TEST_ALL_VLDX_LANE_NO_FP16(X);		\
++  TEST_VLDX_LANE(, float, f, 16, 4, X, 2);	\
++  TEST_VLDX_LANE(q, float, f, 16, 8, X, 6)
++#else
++#define TEST_ALL_VLDX_LANE(X) TEST_ALL_VLDX_LANE_NO_FP16(X)
++#endif
++
++#define TEST_ALL_EXTRA_CHUNKS_NO_FP16(X,Y)	\
+   TEST_EXTRA_CHUNK(int, 8, 8, X, Y);		\
+   TEST_EXTRA_CHUNK(int, 16, 4, X, Y);		\
+   TEST_EXTRA_CHUNK(int, 32, 2, X, Y);		\
+@@ -542,6 +434,47 @@ void exec_vldX_lane (void)
+   TEST_EXTRA_CHUNK(float, 32, 2, X, Y);		\
+   TEST_EXTRA_CHUNK(float, 32, 4, X, Y)
+ 
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++#define TEST_ALL_EXTRA_CHUNKS(X,Y)		\
++  TEST_ALL_EXTRA_CHUNKS_NO_FP16(X, Y);		\
++  TEST_EXTRA_CHUNK(float, 16, 4, X, Y);		\
++  TEST_EXTRA_CHUNK(float, 16, 8, X, Y)
++#else
++#define TEST_ALL_EXTRA_CHUNKS(X,Y) TEST_ALL_EXTRA_CHUNKS_NO_FP16(X, Y)
++#endif
++
++  /* vldX_lane supports only a subset of all variants.  */
++#define CHECK_RESULTS_VLDX_LANE_NO_FP16(test_name,EXPECTED,comment)	\
++    CHECK(test_name, int, 8, 8, PRIx8, EXPECTED, comment);		\
++    CHECK(test_name, int, 16, 4, PRIx16, EXPECTED, comment);		\
++    CHECK(test_name, int, 32, 2, PRIx32, EXPECTED, comment);		\
++    CHECK(test_name, uint, 8, 8, PRIx8, EXPECTED, comment);		\
++    CHECK(test_name, uint, 16, 4, PRIx16, EXPECTED, comment);		\
++    CHECK(test_name, uint, 32, 2, PRIx32, EXPECTED, comment);		\
++    CHECK(test_name, poly, 8, 8, PRIx8, EXPECTED, comment);		\
++    CHECK(test_name, poly, 16, 4, PRIx16, EXPECTED, comment);		\
++    CHECK_FP(test_name, float, 32, 2, PRIx32, EXPECTED, comment);	\
++    CHECK(test_name, int, 16, 8, PRIx16, EXPECTED, comment);		\
++    CHECK(test_name, int, 32, 4, PRIx32, EXPECTED, comment);		\
++    CHECK(test_name, uint, 16, 8, PRIx16, EXPECTED, comment);		\
++    CHECK(test_name, uint, 32, 4, PRIx32, EXPECTED, comment);		\
++    CHECK(test_name, poly, 16, 8, PRIx16, EXPECTED, comment);		\
++    CHECK_FP(test_name, float, 32, 4, PRIx32, EXPECTED, comment)
++
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++#define CHECK_RESULTS_VLDX_LANE(test_name,EXPECTED,comment)		\
++  {									\
++    CHECK_RESULTS_VLDX_LANE_NO_FP16(test_name,EXPECTED,comment);	\
++    CHECK_FP(test_name, float, 16, 4, PRIx16, EXPECTED, comment);	\
++    CHECK_FP(test_name, float, 16, 8, PRIx16, EXPECTED, comment);	\
++  }
++#else
++#define CHECK_RESULTS_VLDX_LANE(test_name,EXPECTED,comment)		\
++  {									\
++    CHECK_RESULTS_VLDX_LANE_NO_FP16(test_name,EXPECTED,comment);	\
++  }
++#endif
++
+   /* Declare the temporary buffers / variables.  */
+   DECL_ALL_VLDX_LANE(2);
+   DECL_ALL_VLDX_LANE(3);
+@@ -561,6 +494,10 @@ void exec_vldX_lane (void)
+   DUMMY_ARRAY(buffer_src, uint, 16, 8, 4);
+   DUMMY_ARRAY(buffer_src, uint, 32, 4, 4);
+   DUMMY_ARRAY(buffer_src, poly, 16, 8, 4);
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++  DUMMY_ARRAY(buffer_src, float, 16, 4, 4);
++  DUMMY_ARRAY(buffer_src, float, 16, 8, 4);
++#endif
+   DUMMY_ARRAY(buffer_src, float, 32, 2, 4);
+   DUMMY_ARRAY(buffer_src, float, 32, 4, 4);
+ 
+@@ -568,39 +505,39 @@ void exec_vldX_lane (void)
+   clean_results ();
+ #define TEST_MSG "VLD2_LANE/VLD2Q_LANE"
+   TEST_ALL_VLDX_LANE(2);
+-  CHECK_RESULTS_NAMED (TEST_MSG, expected_vld2_0, " chunk 0");
++  CHECK_RESULTS_VLDX_LANE (TEST_MSG, expected_vld2_0, " chunk 0");
+ 
+   TEST_ALL_EXTRA_CHUNKS(2, 1);
+-  CHECK_RESULTS_NAMED (TEST_MSG, expected_vld2_1, " chunk 1");
++  CHECK_RESULTS_VLDX_LANE (TEST_MSG, expected_vld2_1, " chunk 1");
+ 
+   /* Check vld3_lane/vld3q_lane.  */
+   clean_results ();
+ #undef TEST_MSG
+ #define TEST_MSG "VLD3_LANE/VLD3Q_LANE"
+   TEST_ALL_VLDX_LANE(3);
+-  CHECK_RESULTS_NAMED (TEST_MSG, expected_vld3_0, " chunk 0");
++  CHECK_RESULTS_VLDX_LANE (TEST_MSG, expected_vld3_0, " chunk 0");
+ 
+   TEST_ALL_EXTRA_CHUNKS(3, 1);
+-  CHECK_RESULTS_NAMED (TEST_MSG, expected_vld3_1, " chunk 1");
++  CHECK_RESULTS_VLDX_LANE (TEST_MSG, expected_vld3_1, " chunk 1");
+ 
+   TEST_ALL_EXTRA_CHUNKS(3, 2);
+-  CHECK_RESULTS_NAMED (TEST_MSG, expected_vld3_2, " chunk 2");
++  CHECK_RESULTS_VLDX_LANE (TEST_MSG, expected_vld3_2, " chunk 2");
+ 
+   /* Check vld4_lane/vld4q_lane.  */
+   clean_results ();
+ #undef TEST_MSG
+ #define TEST_MSG "VLD4_LANE/VLD4Q_LANE"
+   TEST_ALL_VLDX_LANE(4);
+-  CHECK_RESULTS_NAMED (TEST_MSG, expected_vld4_0, " chunk 0");
++  CHECK_RESULTS_VLDX_LANE (TEST_MSG, expected_vld4_0, " chunk 0");
+ 
+   TEST_ALL_EXTRA_CHUNKS(4, 1);
+-  CHECK_RESULTS_NAMED (TEST_MSG, expected_vld4_1, " chunk 1");
++  CHECK_RESULTS_VLDX_LANE (TEST_MSG, expected_vld4_1, " chunk 1");
+   TEST_ALL_EXTRA_CHUNKS(4, 2);
+ 
+-  CHECK_RESULTS_NAMED (TEST_MSG, expected_vld4_2, " chunk 2");
++  CHECK_RESULTS_VLDX_LANE (TEST_MSG, expected_vld4_2, " chunk 2");
+ 
+   TEST_ALL_EXTRA_CHUNKS(4, 3);
+-  CHECK_RESULTS_NAMED (TEST_MSG, expected_vld4_3, " chunk 3");
++  CHECK_RESULTS_VLDX_LANE (TEST_MSG, expected_vld4_3, " chunk 3");
+ }
+ 
+ int main (void)
+--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmul.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmul.c
+@@ -7,15 +7,12 @@ VECT_VAR_DECL(expected,int,8,8) [] = { 0xf0, 0x1, 0x12, 0x23,
+ 				       0x34, 0x45, 0x56, 0x67 };
+ VECT_VAR_DECL(expected,int,16,4) [] = { 0xfde0, 0xfe02, 0xfe24, 0xfe46 };
+ VECT_VAR_DECL(expected,int,32,2) [] = { 0xfffffcd0, 0xfffffd03 };
+-VECT_VAR_DECL(expected,int,64,1) [] = { 0x3333333333333333 };
+ VECT_VAR_DECL(expected,uint,8,8) [] = { 0xc0, 0x4, 0x48, 0x8c,
+ 					0xd0, 0x14, 0x58, 0x9c };
+ VECT_VAR_DECL(expected,uint,16,4) [] = { 0xfab0, 0xfb05, 0xfb5a, 0xfbaf };
+ VECT_VAR_DECL(expected,uint,32,2) [] = { 0xfffff9a0, 0xfffffa06 };
+-VECT_VAR_DECL(expected,uint,64,1) [] = { 0x3333333333333333 };
+ VECT_VAR_DECL(expected,poly,8,8) [] = { 0xc0, 0x84, 0x48, 0xc,
+ 					0xd0, 0x94, 0x58, 0x1c };
+-VECT_VAR_DECL(expected,poly,16,4) [] = { 0x3333, 0x3333, 0x3333, 0x3333 };
+ VECT_VAR_DECL(expected,hfloat,32,2) [] = { 0xc4053333, 0xc3f9c000 };
+ VECT_VAR_DECL(expected,int,8,16) [] = { 0x90, 0x7, 0x7e, 0xf5,
+ 					0x6c, 0xe3, 0x5a, 0xd1,
+@@ -25,8 +22,6 @@ VECT_VAR_DECL(expected,int,16,8) [] = { 0xf780, 0xf808, 0xf890, 0xf918,
+ 					0xf9a0, 0xfa28, 0xfab0, 0xfb38 };
+ VECT_VAR_DECL(expected,int,32,4) [] = { 0xfffff670, 0xfffff709,
+ 					0xfffff7a2, 0xfffff83b };
+-VECT_VAR_DECL(expected,int,64,2) [] = { 0x3333333333333333,
+-					0x3333333333333333 };
+ VECT_VAR_DECL(expected,uint,8,16) [] = { 0x60, 0xa, 0xb4, 0x5e,
+ 					 0x8, 0xb2, 0x5c, 0x6,
+ 					 0xb0, 0x5a, 0x4, 0xae,
+@@ -35,14 +30,10 @@ VECT_VAR_DECL(expected,uint,16,8) [] = { 0xf450, 0xf50b, 0xf5c6, 0xf681,
+ 					 0xf73c, 0xf7f7, 0xf8b2, 0xf96d };
+ VECT_VAR_DECL(expected,uint,32,4) [] = { 0xfffff340, 0xfffff40c,
+ 					 0xfffff4d8, 0xfffff5a4 };
+-VECT_VAR_DECL(expected,uint,64,2) [] = { 0x3333333333333333,
+-					 0x3333333333333333 };
+ VECT_VAR_DECL(expected,poly,8,16) [] = { 0x60, 0xca, 0x34, 0x9e,
+ 					 0xc8, 0x62, 0x9c, 0x36,
+ 					 0x30, 0x9a, 0x64, 0xce,
+ 					 0x98, 0x32, 0xcc, 0x66 };
+-VECT_VAR_DECL(expected,poly,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333,
+-					 0x3333, 0x3333, 0x3333, 0x3333 };
+ VECT_VAR_DECL(expected,hfloat,32,4) [] = { 0xc4c73333, 0xc4bac000,
+ 					   0xc4ae4ccd, 0xc4a1d999 };
+ 
+@@ -145,7 +136,22 @@ void FNNAME (INSN_NAME) (void)
+   TEST_VMUL(INSN_NAME, q, poly, p, 8, 16);
+   TEST_VMUL(INSN_NAME, q, float, f, 32, 4);
+ 
+-  CHECK_RESULTS (TEST_MSG, "");
++  CHECK(TEST_MSG, int, 8, 8, PRIx8, expected, "");
++  CHECK(TEST_MSG, int, 16, 4, PRIx16, expected, "");
++  CHECK(TEST_MSG, int, 32, 2, PRIx32, expected, "");
++  CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected, "");
++  CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected, "");
++  CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected, "");
++  CHECK(TEST_MSG, poly, 8, 8, PRIx8, expected, "");
++  CHECK_FP(TEST_MSG, float, 32, 2, PRIx32, expected, "");
++  CHECK(TEST_MSG, int, 8, 16, PRIx8, expected, "");
++  CHECK(TEST_MSG, int, 16, 8, PRIx16, expected, "");
++  CHECK(TEST_MSG, int, 32, 4, PRIx32, expected, "");
++  CHECK(TEST_MSG, uint, 8, 16, PRIx8, expected, "");
++  CHECK(TEST_MSG, uint, 16, 8, PRIx16, expected, "");
++  CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected, "");
++  CHECK(TEST_MSG, poly, 8, 16, PRIx8, expected, "");
++  CHECK_FP(TEST_MSG, float, 32, 4, PRIx32, expected, "");
+ }
+ 
+ int main (void)
+--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vneg.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vneg.c
+@@ -12,41 +12,11 @@ VECT_VAR_DECL(expected,int,8,8) [] = { 0x10, 0xf, 0xe, 0xd,
+ 				       0xc, 0xb, 0xa, 0x9 };
+ VECT_VAR_DECL(expected,int,16,4) [] = { 0x10, 0xf, 0xe, 0xd };
+ VECT_VAR_DECL(expected,int,32,2) [] = { 0x10, 0xf };
+-VECT_VAR_DECL(expected,int,64,1) [] = { 0x3333333333333333 };
+-VECT_VAR_DECL(expected,uint,8,8) [] = { 0x33, 0x33, 0x33, 0x33,
+-					0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,uint,16,4) [] = { 0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,uint,32,2) [] = { 0x33333333, 0x33333333 };
+-VECT_VAR_DECL(expected,uint,64,1) [] = { 0x3333333333333333 };
+-VECT_VAR_DECL(expected,poly,8,8) [] = { 0x33, 0x33, 0x33, 0x33,
+-					0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,poly,16,4) [] = { 0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,hfloat,32,2) [] = { 0x33333333, 0x33333333 };
+ VECT_VAR_DECL(expected,int,8,16) [] = { 0x10, 0xf, 0xe, 0xd, 0xc, 0xb, 0xa, 0x9,
+ 					0x8, 0x7, 0x6, 0x5, 0x4, 0x3, 0x2, 0x1 };
+ VECT_VAR_DECL(expected,int,16,8) [] = { 0x10, 0xf, 0xe, 0xd,
+ 					0xc, 0xb, 0xa, 0x9 };
+ VECT_VAR_DECL(expected,int,32,4) [] = { 0x10, 0xf, 0xe, 0xd };
+-VECT_VAR_DECL(expected,int,64,2) [] = { 0x3333333333333333,
+-					0x3333333333333333 };
+-VECT_VAR_DECL(expected,uint,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,uint,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333,
+-					 0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,uint,32,4) [] = { 0x33333333, 0x33333333,
+-					 0x33333333, 0x33333333 };
+-VECT_VAR_DECL(expected,uint,64,2) [] = { 0x3333333333333333,
+-					 0x3333333333333333 };
+-VECT_VAR_DECL(expected,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,poly,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333,
+-					 0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,hfloat,32,4) [] = { 0x33333333, 0x33333333,
+-					   0x33333333, 0x33333333 };
+ 
+ /* Expected results for float32 variants. Needs to be separated since
+    the generic test function does not test floating-point
+--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vorn.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vorn.c
+@@ -14,10 +14,6 @@ VECT_VAR_DECL(expected,uint,8,8) [] = { 0xfb, 0xfb, 0xfb, 0xfb,
+ VECT_VAR_DECL(expected,uint,16,4) [] = { 0xfff1, 0xfff1, 0xfff3, 0xfff3 };
+ VECT_VAR_DECL(expected,uint,32,2) [] = { 0xfffffff7, 0xfffffff7 };
+ VECT_VAR_DECL(expected,uint,64,1) [] = { 0xfffffffffffffffd };
+-VECT_VAR_DECL(expected,poly,8,8) [] = { 0x33, 0x33, 0x33, 0x33,
+-					0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,poly,16,4) [] = { 0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,hfloat,32,2) [] = { 0x33333333, 0x33333333 };
+ VECT_VAR_DECL(expected,int,8,16) [] = { 0xf9, 0xf9, 0xfb, 0xfb,
+ 					0xfd, 0xfd, 0xff, 0xff,
+ 					0xf9, 0xf9, 0xfb, 0xfb,
+@@ -38,11 +34,3 @@ VECT_VAR_DECL(expected,uint,32,4) [] = { 0xfffffff8, 0xfffffff9,
+ 					 0xfffffffa, 0xfffffffb };
+ VECT_VAR_DECL(expected,uint,64,2) [] = { 0xfffffffffffffffc,
+ 					 0xfffffffffffffffd };
+-VECT_VAR_DECL(expected,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,poly,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333,
+-					 0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,hfloat,32,4) [] = { 0x33333333, 0x33333333,
+-					   0x33333333, 0x33333333 };
+--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vorr.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vorr.c
+@@ -14,10 +14,6 @@ VECT_VAR_DECL(expected,uint,8,8) [] = { 0xf4, 0xf5, 0xf6, 0xf7,
+ VECT_VAR_DECL(expected,uint,16,4) [] = { 0xfffe, 0xffff, 0xfffe, 0xffff };
+ VECT_VAR_DECL(expected,uint,32,2) [] = { 0xfffffff8, 0xfffffff9 };
+ VECT_VAR_DECL(expected,uint,64,1) [] = { 0xfffffffffffffff2 };
+-VECT_VAR_DECL(expected,poly,8,8) [] = { 0x33, 0x33, 0x33, 0x33,
+-					0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,poly,16,4) [] = { 0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,hfloat,32,2) [] = { 0x33333333, 0x33333333 };
+ VECT_VAR_DECL(expected,int,8,16) [] = { 0xf6, 0xf7, 0xf6, 0xf7,
+ 					0xf6, 0xf7, 0xf6, 0xf7,
+ 					0xfe, 0xff, 0xfe, 0xff,
+@@ -38,11 +34,3 @@ VECT_VAR_DECL(expected,uint,32,4) [] = { 0xfffffff7, 0xfffffff7,
+ 					 0xfffffff7, 0xfffffff7 };
+ VECT_VAR_DECL(expected,uint,64,2) [] = { 0xfffffffffffffff3,
+ 					 0xfffffffffffffff3 };
+-VECT_VAR_DECL(expected,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,poly,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333,
+-					 0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,hfloat,32,4) [] = { 0x33333333, 0x33333333,
+-					   0x33333333, 0x33333333 };
+--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqabs.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqabs.c
+@@ -11,16 +11,6 @@ void vqabs_extra(void);
+ VECT_VAR_DECL(expected,int,8,8) [] = { 0x10, 0xf, 0xe, 0xd, 0xc, 0xb, 0xa, 0x9 };
+ VECT_VAR_DECL(expected,int,16,4) [] = { 0x10, 0xf, 0xe, 0xd };
+ VECT_VAR_DECL(expected,int,32,2) [] = { 0x10, 0xf };
+-VECT_VAR_DECL(expected,int,64,1) [] = { 0x3333333333333333 };
+-VECT_VAR_DECL(expected,uint,8,8) [] = { 0x33, 0x33, 0x33, 0x33,
+-					0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,uint,16,4) [] = { 0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,uint,32,2) [] = { 0x33333333, 0x33333333 };
+-VECT_VAR_DECL(expected,uint,64,1) [] = { 0x3333333333333333 };
+-VECT_VAR_DECL(expected,poly,8,8) [] = { 0x33, 0x33, 0x33, 0x33,
+-					0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,poly,16,4) [] = { 0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,hfloat,32,2) [] = { 0x33333333, 0x33333333 };
+ VECT_VAR_DECL(expected,int,8,16) [] = { 0x10, 0xf, 0xe, 0xd,
+ 					0xc, 0xb, 0xa, 0x9,
+ 					0x8, 0x7, 0x6, 0x5,
+@@ -28,25 +18,6 @@ VECT_VAR_DECL(expected,int,8,16) [] = { 0x10, 0xf, 0xe, 0xd,
+ VECT_VAR_DECL(expected,int,16,8) [] = { 0x10, 0xf, 0xe, 0xd,
+ 					0xc, 0xb, 0xa, 0x9 };
+ VECT_VAR_DECL(expected,int,32,4) [] = { 0x10, 0xf, 0xe, 0xd };
+-VECT_VAR_DECL(expected,int,64,2) [] = { 0x3333333333333333, 0x3333333333333333 };
+-VECT_VAR_DECL(expected,uint,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,uint,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333,
+-					 0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,uint,32,4) [] = { 0x33333333, 0x33333333,
+-					 0x33333333, 0x33333333 };
+-VECT_VAR_DECL(expected,uint,64,2) [] = { 0x3333333333333333,
+-					 0x3333333333333333 };
+-VECT_VAR_DECL(expected,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,poly,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333,
+-					 0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,hfloat,32,4) [] = { 0x33333333, 0x33333333,
+-					   0x33333333, 0x33333333 };
+ 
+ /* Expected values of cumulative_saturation flag.  */
+ int VECT_VAR(expected_cumulative_sat,int,8,8) = 0;
+--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqadd.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqadd.c
+@@ -39,10 +39,6 @@ VECT_VAR_DECL(expected,uint,8,8) [] = { 0xff, 0xff, 0xff, 0xff,
+ VECT_VAR_DECL(expected,uint,16,4) [] = { 0xffff, 0xffff, 0xffff, 0xffff };
+ VECT_VAR_DECL(expected,uint,32,2) [] = { 0xffffffff, 0xffffffff };
+ VECT_VAR_DECL(expected,uint,64,1) [] = { 0xffffffffffffffff };
+-VECT_VAR_DECL(expected,poly,8,8) [] = { 0x33, 0x33, 0x33, 0x33,
+-					0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,poly,16,4) [] = { 0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,hfloat,32,2) [] = { 0x33333333, 0x33333333 };
+ VECT_VAR_DECL(expected,int,8,16) [] = { 0x1, 0x2, 0x3, 0x4,
+ 					0x5, 0x6, 0x7, 0x8,
+ 					0x9, 0xa, 0xb, 0xc,
+@@ -61,14 +57,6 @@ VECT_VAR_DECL(expected,uint,32,4) [] = { 0xffffffff, 0xffffffff,
+ 					 0xffffffff, 0xffffffff };
+ VECT_VAR_DECL(expected,uint,64,2) [] = { 0xffffffffffffffff,
+ 					 0xffffffffffffffff };
+-VECT_VAR_DECL(expected,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,poly,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333,
+-					 0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,hfloat,32,4) [] = { 0x33333333, 0x33333333,
+-					   0x33333333, 0x33333333 };
+ 
+ 
+ /* 64-bits types, with 0 as second input.  */
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqmovn.c
+@@ -0,0 +1,134 @@
++#include <arm_neon.h>
++#include "arm-neon-ref.h"
++#include "compute-ref-data.h"
++
++/* Expected values of cumulative_saturation flag.  */
++int VECT_VAR(expected_cumulative_sat,int,8,8) = 0;
++int VECT_VAR(expected_cumulative_sat,int,16,4) = 0;
++int VECT_VAR(expected_cumulative_sat,int,32,2) = 0;
++int VECT_VAR(expected_cumulative_sat,uint,8,8) = 0;
++int VECT_VAR(expected_cumulative_sat,uint,16,4) = 0;
++int VECT_VAR(expected_cumulative_sat,uint,32,2) = 0;
++
++/* Expected results.  */
++VECT_VAR_DECL(expected,int,8,8) [] = { 0x12, 0x12, 0x12, 0x12,
++				       0x12, 0x12, 0x12, 0x12 };
++VECT_VAR_DECL(expected,int,16,4) [] = { 0x1278, 0x1278, 0x1278, 0x1278 };
++VECT_VAR_DECL(expected,int,32,2) [] = { 0x12345678, 0x12345678 };
++VECT_VAR_DECL(expected,uint,8,8) [] = { 0x82, 0x82, 0x82, 0x82,
++					0x82, 0x82, 0x82, 0x82 };
++VECT_VAR_DECL(expected,uint,16,4) [] = { 0x8765, 0x8765, 0x8765, 0x8765 };
++VECT_VAR_DECL(expected,uint,32,2) [] = { 0x87654321, 0x87654321 };
++
++/* Expected values of cumulative_saturation flag when saturation occurs.  */
++int VECT_VAR(expected_cumulative_sat1,int,8,8) = 1;
++int VECT_VAR(expected_cumulative_sat1,int,16,4) = 1;
++int VECT_VAR(expected_cumulative_sat1,int,32,2) = 1;
++int VECT_VAR(expected_cumulative_sat1,uint,8,8) = 1;
++int VECT_VAR(expected_cumulative_sat1,uint,16,4) = 1;
++int VECT_VAR(expected_cumulative_sat1,uint,32,2) = 1;
++
++/* Expected results when saturation occurs.  */
++VECT_VAR_DECL(expected1,int,8,8) [] = { 0x7f, 0x7f, 0x7f, 0x7f,
++					0x7f, 0x7f, 0x7f, 0x7f };
++VECT_VAR_DECL(expected1,int,16,4) [] = { 0x7fff, 0x7fff, 0x7fff, 0x7fff };
++VECT_VAR_DECL(expected1,int,32,2) [] = { 0x7fffffff, 0x7fffffff };
++VECT_VAR_DECL(expected1,uint,8,8) [] = { 0xff, 0xff, 0xff, 0xff,
++					 0xff, 0xff, 0xff, 0xff };
++VECT_VAR_DECL(expected1,uint,16,4) [] = { 0xffff, 0xffff, 0xffff, 0xffff };
++VECT_VAR_DECL(expected1,uint,32,2) [] = { 0xffffffff, 0xffffffff };
++
++#define INSN_NAME vqmovn
++#define TEST_MSG "VQMOVN"
++
++#define FNNAME1(NAME) void exec_ ## NAME (void)
++#define FNNAME(NAME) FNNAME1(NAME)
++
++FNNAME (INSN_NAME)
++{
++  /* Basic test: y=OP(x), then store the result.  */
++#define TEST_UNARY_OP1(INSN, T1, T2, W, W2, N, EXPECTED_CUMULATIVE_SAT, CMT) \
++  Set_Neon_Cumulative_Sat(0, VECT_VAR(vector_res, T1, W, N));		\
++  VECT_VAR(vector_res, T1, W, N) =					\
++    INSN##_##T2##W2(VECT_VAR(vector, T1, W2, N));			\
++  vst1##_##T2##W(VECT_VAR(result, T1, W, N),				\
++		 VECT_VAR(vector_res, T1, W, N));			\
++  CHECK_CUMULATIVE_SAT(TEST_MSG, T1, W, N, EXPECTED_CUMULATIVE_SAT, CMT)
++
++#define TEST_UNARY_OP(INSN, T1, T2, W, W2, N, EXPECTED_CUMULATIVE_SAT, CMT) \
++  TEST_UNARY_OP1(INSN, T1, T2, W, W2, N, EXPECTED_CUMULATIVE_SAT, CMT)
++
++  /* No need for 64 bits variants.  */
++  DECL_VARIABLE(vector, int, 16, 8);
++  DECL_VARIABLE(vector, int, 32, 4);
++  DECL_VARIABLE(vector, int, 64, 2);
++  DECL_VARIABLE(vector, uint, 16, 8);
++  DECL_VARIABLE(vector, uint, 32, 4);
++  DECL_VARIABLE(vector, uint, 64, 2);
++
++  DECL_VARIABLE(vector_res, int, 8, 8);
++  DECL_VARIABLE(vector_res, int, 16, 4);
++  DECL_VARIABLE(vector_res, int, 32, 2);
++  DECL_VARIABLE(vector_res, uint, 8, 8);
++  DECL_VARIABLE(vector_res, uint, 16, 4);
++  DECL_VARIABLE(vector_res, uint, 32, 2);
++
++  clean_results ();
++
++  /* Fill input vector with arbitrary values.  */
++  VDUP(vector, q, int, s, 16, 8, 0x12);
++  VDUP(vector, q, int, s, 32, 4, 0x1278);
++  VDUP(vector, q, int, s, 64, 2, 0x12345678);
++  VDUP(vector, q, uint, u, 16, 8, 0x82);
++  VDUP(vector, q, uint, u, 32, 4, 0x8765);
++  VDUP(vector, q, uint, u, 64, 2, 0x87654321);
++
++  /* Apply a unary operator named INSN_NAME.  */
++#define CMT ""
++  TEST_UNARY_OP(INSN_NAME, int, s, 8, 16, 8, expected_cumulative_sat, CMT);
++  TEST_UNARY_OP(INSN_NAME, int, s, 16, 32, 4, expected_cumulative_sat, CMT);
++  TEST_UNARY_OP(INSN_NAME, int, s, 32, 64, 2, expected_cumulative_sat, CMT);
++  TEST_UNARY_OP(INSN_NAME, uint, u, 8, 16, 8, expected_cumulative_sat, CMT);
++  TEST_UNARY_OP(INSN_NAME, uint, u, 16, 32, 4, expected_cumulative_sat, CMT);
++  TEST_UNARY_OP(INSN_NAME, uint, u, 32, 64, 2, expected_cumulative_sat, CMT);
++
++  CHECK(TEST_MSG, int, 8, 8, PRIx8, expected, CMT);
++  CHECK(TEST_MSG, int, 16, 4, PRIx16, expected, CMT);
++  CHECK(TEST_MSG, int, 32, 2, PRIx32, expected, CMT);
++  CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected, CMT);
++  CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected, CMT);
++  CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected, CMT);
++
++
++  /* Fill input vector with arbitrary values which cause cumulative
++     saturation.  */
++  VDUP(vector, q, int, s, 16, 8, 0x1234);
++  VDUP(vector, q, int, s, 32, 4, 0x12345678);
++  VDUP(vector, q, int, s, 64, 2, 0x1234567890ABLL);
++  VDUP(vector, q, uint, u, 16, 8, 0x8234);
++  VDUP(vector, q, uint, u, 32, 4, 0x87654321);
++  VDUP(vector, q, uint, u, 64, 2, 0x8765432187654321ULL);
++
++  /* Apply a unary operator named INSN_NAME.  */
++#undef CMT
++#define CMT " (with saturation)"
++  TEST_UNARY_OP(INSN_NAME, int, s, 8, 16, 8, expected_cumulative_sat1, CMT);
++  TEST_UNARY_OP(INSN_NAME, int, s, 16, 32, 4, expected_cumulative_sat1, CMT);
++  TEST_UNARY_OP(INSN_NAME, int, s, 32, 64, 2, expected_cumulative_sat1, CMT);
++  TEST_UNARY_OP(INSN_NAME, uint, u, 8, 16, 8, expected_cumulative_sat1, CMT);
++  TEST_UNARY_OP(INSN_NAME, uint, u, 16, 32, 4, expected_cumulative_sat1, CMT);
++  TEST_UNARY_OP(INSN_NAME, uint, u, 32, 64, 2, expected_cumulative_sat1, CMT);
++
++  CHECK(TEST_MSG, int, 8, 8, PRIx8, expected1, CMT);
++  CHECK(TEST_MSG, int, 16, 4, PRIx16, expected1, CMT);
++  CHECK(TEST_MSG, int, 32, 2, PRIx32, expected1, CMT);
++  CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected1, CMT);
++  CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected1, CMT);
++  CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected1, CMT);
++}
++
++int main (void)
++{
++  exec_vqmovn ();
++  return 0;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqmovun.c
+@@ -0,0 +1,93 @@
++#include <arm_neon.h>
++#include "arm-neon-ref.h"
++#include "compute-ref-data.h"
++
++/* Expected values of cumulative_saturation flag.  */
++int VECT_VAR(expected_cumulative_sat,uint,8,8) = 0;
++int VECT_VAR(expected_cumulative_sat,uint,16,4) = 0;
++int VECT_VAR(expected_cumulative_sat,uint,32,2) = 0;
++
++/* Expected results.  */
++VECT_VAR_DECL(expected,uint,8,8) [] = { 0x34, 0x34, 0x34, 0x34,
++					0x34, 0x34, 0x34, 0x34 };
++VECT_VAR_DECL(expected,uint,16,4) [] = { 0x5678, 0x5678, 0x5678, 0x5678 };
++VECT_VAR_DECL(expected,uint,32,2) [] = { 0x12345678, 0x12345678 };
++
++/* Expected values of cumulative_saturation flag with negative input.  */
++int VECT_VAR(expected_cumulative_sat_neg,uint,8,8) = 1;
++int VECT_VAR(expected_cumulative_sat_neg,uint,16,4) = 1;
++int VECT_VAR(expected_cumulative_sat_neg,uint,32,2) = 1;
++
++/* Expected results with negative input.  */
++VECT_VAR_DECL(expected_neg,uint,8,8) [] = { 0x0, 0x0, 0x0, 0x0,
++					    0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_neg,uint,16,4) [] = { 0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_neg,uint,32,2) [] = { 0x0, 0x0 };
++
++#define INSN_NAME vqmovun
++#define TEST_MSG "VQMOVUN"
++
++#define FNNAME1(NAME) void exec_ ## NAME (void)
++#define FNNAME(NAME) FNNAME1(NAME)
++
++FNNAME (INSN_NAME)
++{
++  /* Basic test: y=OP(x), then store the result.  */
++#define TEST_UNARY_OP1(INSN, T1, T2, W, W2, N, EXPECTED_CUMULATIVE_SAT, CMT) \
++  Set_Neon_Cumulative_Sat(0, VECT_VAR(vector_res, T1, W, N));		\
++  VECT_VAR(vector_res, T1, W, N) =					\
++    INSN##_s##W2(VECT_VAR(vector, int, W2, N));				\
++  vst1##_##T2##W(VECT_VAR(result, T1, W, N),				\
++		 VECT_VAR(vector_res, T1, W, N));			\
++  CHECK_CUMULATIVE_SAT(TEST_MSG, T1, W, N, EXPECTED_CUMULATIVE_SAT, CMT)
++
++#define TEST_UNARY_OP(INSN, T1, T2, W, W2, N, EXPECTED_CUMULATIVE_SAT, CMT) \
++  TEST_UNARY_OP1(INSN, T1, T2, W, W2, N, EXPECTED_CUMULATIVE_SAT, CMT)
++
++  DECL_VARIABLE(vector, int, 16, 8);
++  DECL_VARIABLE(vector, int, 32, 4);
++  DECL_VARIABLE(vector, int, 64, 2);
++
++  DECL_VARIABLE(vector_res, uint, 8, 8);
++  DECL_VARIABLE(vector_res, uint, 16, 4);
++  DECL_VARIABLE(vector_res, uint, 32, 2);
++
++  clean_results ();
++
++  /* Fill input vector with arbitrary values.  */
++  VDUP(vector, q, int, s, 16, 8, 0x34);
++  VDUP(vector, q, int, s, 32, 4, 0x5678);
++  VDUP(vector, q, int, s, 64, 2, 0x12345678);
++
++  /* Apply a unary operator named INSN_NAME.  */
++#define CMT ""
++  TEST_UNARY_OP(INSN_NAME, uint, u, 8, 16, 8, expected_cumulative_sat, CMT);
++  TEST_UNARY_OP(INSN_NAME, uint, u, 16, 32, 4, expected_cumulative_sat, CMT);
++  TEST_UNARY_OP(INSN_NAME, uint, u, 32, 64, 2, expected_cumulative_sat, CMT);
++
++  CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected, CMT);
++  CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected, CMT);
++  CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected, CMT);
++
++  /* Fill input vector with negative values.  */
++  VDUP(vector, q, int, s, 16, 8, 0x8234);
++  VDUP(vector, q, int, s, 32, 4, 0x87654321);
++  VDUP(vector, q, int, s, 64, 2, 0x8765432187654321LL);
++
++  /* Apply a unary operator named INSN_NAME.  */
++#undef CMT
++#define CMT " (negative input)"
++  TEST_UNARY_OP(INSN_NAME, uint, u, 8, 16, 8, expected_cumulative_sat_neg, CMT);
++  TEST_UNARY_OP(INSN_NAME, uint, u, 16, 32, 4, expected_cumulative_sat_neg, CMT);
++  TEST_UNARY_OP(INSN_NAME, uint, u, 32, 64, 2, expected_cumulative_sat_neg, CMT);
++
++  CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected_neg, CMT);
++  CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected_neg, CMT);
++  CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected_neg, CMT);
++}
++
++int main (void)
++{
++  exec_vqmovun ();
++  return 0;
++}
+--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqneg.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqneg.c
+@@ -11,16 +11,6 @@ void vqneg_extra(void);
+ VECT_VAR_DECL(expected,int,8,8) [] = { 0x10, 0xf, 0xe, 0xd, 0xc, 0xb, 0xa, 0x9 };
+ VECT_VAR_DECL(expected,int,16,4) [] = { 0x10, 0xf, 0xe, 0xd };
+ VECT_VAR_DECL(expected,int,32,2) [] = { 0x10, 0xf };
+-VECT_VAR_DECL(expected,int,64,1) [] = { 0x3333333333333333 };
+-VECT_VAR_DECL(expected,uint,8,8) [] = { 0x33, 0x33, 0x33, 0x33,
+-					0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,uint,16,4) [] = { 0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,uint,32,2) [] = { 0x33333333, 0x33333333 };
+-VECT_VAR_DECL(expected,uint,64,1) [] = { 0x3333333333333333 };
+-VECT_VAR_DECL(expected,poly,8,8) [] = { 0x33, 0x33, 0x33, 0x33,
+-					0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,poly,16,4) [] = { 0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,hfloat,32,2) [] = { 0x33333333, 0x33333333 };
+ VECT_VAR_DECL(expected,int,8,16) [] = { 0x10, 0xf, 0xe, 0xd,
+ 					0xc, 0xb, 0xa, 0x9,
+ 					0x8, 0x7, 0x6, 0x5,
+@@ -28,25 +18,6 @@ VECT_VAR_DECL(expected,int,8,16) [] = { 0x10, 0xf, 0xe, 0xd,
+ VECT_VAR_DECL(expected,int,16,8) [] = { 0x10, 0xf, 0xe, 0xd,
+ 					0xc, 0xb, 0xa, 0x9 };
+ VECT_VAR_DECL(expected,int,32,4) [] = { 0x10, 0xf, 0xe, 0xd };
+-VECT_VAR_DECL(expected,int,64,2) [] = { 0x3333333333333333, 0x3333333333333333 };
+-VECT_VAR_DECL(expected,uint,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,uint,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333,
+-					 0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,uint,32,4) [] = { 0x33333333, 0x33333333,
+-					 0x33333333, 0x33333333 };
+-VECT_VAR_DECL(expected,uint,64,2) [] = { 0x3333333333333333,
+-					 0x3333333333333333 };
+-VECT_VAR_DECL(expected,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,poly,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333,
+-					 0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,hfloat,32,4) [] = { 0x33333333, 0x33333333,
+-					   0x33333333, 0x33333333 };
+ 
+ /* Expected values of cumulative_saturation flag.  */
+ int VECT_VAR(expected_cumulative_sat,int,8,8) = 0;
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqrdmulh.c
+@@ -0,0 +1,161 @@
++#include <arm_neon.h>
++#include "arm-neon-ref.h"
++#include "compute-ref-data.h"
++
++/* Expected values of cumulative_saturation flag.  */
++int VECT_VAR(expected_cumulative_sat,int,16,4) = 0;
++int VECT_VAR(expected_cumulative_sat,int,32,2) = 0;
++int VECT_VAR(expected_cumulative_sat,int,16,8) = 0;
++int VECT_VAR(expected_cumulative_sat,int,32,4) = 0;
++
++/* Expected results.  */
++VECT_VAR_DECL(expected,int,16,4) [] = { 0xfff5, 0xfff6, 0xfff7, 0xfff7 };
++VECT_VAR_DECL(expected,int,32,2) [] = { 0x0, 0x0 };
++VECT_VAR_DECL(expected,int,16,8) [] = { 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected,int,32,4) [] = { 0x0, 0x0, 0x0, 0x0 };
++
++/* Expected values of cumulative_saturation flag when multiplication
++   saturates.  */
++int VECT_VAR(expected_cumulative_sat_mul,int,16,4) = 1;
++int VECT_VAR(expected_cumulative_sat_mul,int,32,2) = 1;
++int VECT_VAR(expected_cumulative_sat_mul,int,16,8) = 1;
++int VECT_VAR(expected_cumulative_sat_mul,int,32,4) = 1;
++
++/* Expected results when multiplication saturates.  */
++VECT_VAR_DECL(expected_mul,int,16,4) [] = { 0x7fff, 0x7fff, 0x7fff, 0x7fff };
++VECT_VAR_DECL(expected_mul,int,32,2) [] = { 0x7fffffff, 0x7fffffff };
++VECT_VAR_DECL(expected_mul,int,16,8) [] = { 0x7fff, 0x7fff, 0x7fff, 0x7fff,
++					    0x7fff, 0x7fff, 0x7fff, 0x7fff };
++VECT_VAR_DECL(expected_mul,int,32,4) [] = { 0x7fffffff, 0x7fffffff,
++					    0x7fffffff, 0x7fffffff };
++
++/* Expected values of cumulative_saturation flag when rounding
++   should not cause saturation.  */
++int VECT_VAR(expected_cumulative_sat_round,int,16,4) = 0;
++int VECT_VAR(expected_cumulative_sat_round,int,32,2) = 0;
++int VECT_VAR(expected_cumulative_sat_round,int,16,8) = 0;
++int VECT_VAR(expected_cumulative_sat_round,int,32,4) = 0;
++
++/* Expected results when rounding should not cause saturation.  */
++VECT_VAR_DECL(expected_round,int,16,4) [] = { 0x7fff, 0x7fff, 0x7fff, 0x7fff };
++VECT_VAR_DECL(expected_round,int,32,2) [] = { 0x7fffffff, 0x7fffffff };
++VECT_VAR_DECL(expected_round,int,16,8) [] = { 0x7fff, 0x7fff, 0x7fff, 0x7fff,
++					      0x7fff, 0x7fff, 0x7fff, 0x7fff };
++VECT_VAR_DECL(expected_round,int,32,4) [] = { 0x7fffffff, 0x7fffffff,
++					      0x7fffffff, 0x7fffffff };
++
++#define INSN vqrdmulh
++#define TEST_MSG "VQRDMULH"
++
++#define FNNAME1(NAME) void exec_ ## NAME (void)
++#define FNNAME(NAME) FNNAME1(NAME)
++
++FNNAME (INSN)
++{
++  /* vector_res = vqrdmulh(vector,vector2), then store the result.  */
++#define TEST_VQRDMULH2(INSN, Q, T1, T2, W, N, EXPECTED_CUMULATIVE_SAT, CMT) \
++  Set_Neon_Cumulative_Sat(0, VECT_VAR(vector_res, T1, W, N));		\
++  VECT_VAR(vector_res, T1, W, N) =					\
++    INSN##Q##_##T2##W(VECT_VAR(vector, T1, W, N),			\
++		      VECT_VAR(vector2, T1, W, N));			\
++  vst1##Q##_##T2##W(VECT_VAR(result, T1, W, N),				\
++		    VECT_VAR(vector_res, T1, W, N));			\
++  CHECK_CUMULATIVE_SAT(TEST_MSG, T1, W, N, EXPECTED_CUMULATIVE_SAT, CMT)
++
++  /* Two auxliary macros are necessary to expand INSN */
++#define TEST_VQRDMULH1(INSN, Q, T1, T2, W, N, EXPECTED_CUMULATIVE_SAT, CMT) \
++  TEST_VQRDMULH2(INSN, Q, T1, T2, W, N, EXPECTED_CUMULATIVE_SAT, CMT)
++
++#define TEST_VQRDMULH(Q, T1, T2, W, N, EXPECTED_CUMULATIVE_SAT, CMT)	\
++  TEST_VQRDMULH1(INSN, Q, T1, T2, W, N, EXPECTED_CUMULATIVE_SAT, CMT)
++
++
++  DECL_VARIABLE(vector, int, 16, 4);
++  DECL_VARIABLE(vector, int, 32, 2);
++  DECL_VARIABLE(vector, int, 16, 8);
++  DECL_VARIABLE(vector, int, 32, 4);
++
++  DECL_VARIABLE(vector_res, int, 16, 4);
++  DECL_VARIABLE(vector_res, int, 32, 2);
++  DECL_VARIABLE(vector_res, int, 16, 8);
++  DECL_VARIABLE(vector_res, int, 32, 4);
++
++  DECL_VARIABLE(vector2, int, 16, 4);
++  DECL_VARIABLE(vector2, int, 32, 2);
++  DECL_VARIABLE(vector2, int, 16, 8);
++  DECL_VARIABLE(vector2, int, 32, 4);
++
++  clean_results ();
++
++  VLOAD(vector, buffer, , int, s, 16, 4);
++  VLOAD(vector, buffer, , int, s, 32, 2);
++  VLOAD(vector, buffer, q, int, s, 16, 8);
++  VLOAD(vector, buffer, q, int, s, 32, 4);
++
++  /* Initialize vector2.  */
++  VDUP(vector2, , int, s, 16, 4, 0x5555);
++  VDUP(vector2, , int, s, 32, 2, 0xBB);
++  VDUP(vector2, q, int, s, 16, 8, 0x33);
++  VDUP(vector2, q, int, s, 32, 4, 0x22);
++
++#define CMT ""
++  TEST_VQRDMULH(, int, s, 16, 4, expected_cumulative_sat, CMT);
++  TEST_VQRDMULH(, int, s, 32, 2, expected_cumulative_sat, CMT);
++  TEST_VQRDMULH(q, int, s, 16, 8, expected_cumulative_sat, CMT);
++  TEST_VQRDMULH(q, int, s, 32, 4, expected_cumulative_sat, CMT);
++
++  CHECK(TEST_MSG, int, 16, 4, PRIx16, expected, CMT);
++  CHECK(TEST_MSG, int, 32, 2, PRIx32, expected, CMT);
++  CHECK(TEST_MSG, int, 16, 8, PRIx16, expected, CMT);
++  CHECK(TEST_MSG, int, 32, 4, PRIx32, expected, CMT);
++
++  /* Now use input values such that the multiplication causes
++     saturation.  */
++#define TEST_MSG_MUL " (check mul cumulative saturation)"
++  VDUP(vector, , int, s, 16, 4, 0x8000);
++  VDUP(vector, , int, s, 32, 2, 0x80000000);
++  VDUP(vector, q, int, s, 16, 8, 0x8000);
++  VDUP(vector, q, int, s, 32, 4, 0x80000000);
++  VDUP(vector2, , int, s, 16, 4, 0x8000);
++  VDUP(vector2, , int, s, 32, 2, 0x80000000);
++  VDUP(vector2, q, int, s, 16, 8, 0x8000);
++  VDUP(vector2, q, int, s, 32, 4, 0x80000000);
++
++  TEST_VQRDMULH(, int, s, 16, 4, expected_cumulative_sat_mul, TEST_MSG_MUL);
++  TEST_VQRDMULH(, int, s, 32, 2, expected_cumulative_sat_mul, TEST_MSG_MUL);
++  TEST_VQRDMULH(q, int, s, 16, 8, expected_cumulative_sat_mul, TEST_MSG_MUL);
++  TEST_VQRDMULH(q, int, s, 32, 4, expected_cumulative_sat_mul, TEST_MSG_MUL);
++
++  CHECK(TEST_MSG, int, 16, 4, PRIx16, expected_mul, TEST_MSG_MUL);
++  CHECK(TEST_MSG, int, 32, 2, PRIx32, expected_mul, TEST_MSG_MUL);
++  CHECK(TEST_MSG, int, 16, 8, PRIx16, expected_mul, TEST_MSG_MUL);
++  CHECK(TEST_MSG, int, 32, 4, PRIx32, expected_mul, TEST_MSG_MUL);
++
++  /* Use input values where rounding produces a result equal to the
++     saturation value, but does not set the saturation flag.  */
++#define TEST_MSG_ROUND " (check rounding)"
++  VDUP(vector, , int, s, 16, 4, 0x8000);
++  VDUP(vector, , int, s, 32, 2, 0x80000000);
++  VDUP(vector, q, int, s, 16, 8, 0x8000);
++  VDUP(vector, q, int, s, 32, 4, 0x80000000);
++  VDUP(vector2, , int, s, 16, 4, 0x8001);
++  VDUP(vector2, , int, s, 32, 2, 0x80000001);
++  VDUP(vector2, q, int, s, 16, 8, 0x8001);
++  VDUP(vector2, q, int, s, 32, 4, 0x80000001);
++
++  TEST_VQRDMULH(, int, s, 16, 4, expected_cumulative_sat_round, TEST_MSG_ROUND);
++  TEST_VQRDMULH(, int, s, 32, 2, expected_cumulative_sat_round, TEST_MSG_ROUND);
++  TEST_VQRDMULH(q, int, s, 16, 8, expected_cumulative_sat_round, TEST_MSG_ROUND);
++  TEST_VQRDMULH(q, int, s, 32, 4, expected_cumulative_sat_round, TEST_MSG_ROUND);
++
++  CHECK(TEST_MSG, int, 16, 4, PRIx16, expected_round, TEST_MSG_ROUND);
++  CHECK(TEST_MSG, int, 32, 2, PRIx32, expected_round, TEST_MSG_ROUND);
++  CHECK(TEST_MSG, int, 16, 8, PRIx16, expected_round, TEST_MSG_ROUND);
++  CHECK(TEST_MSG, int, 32, 4, PRIx32, expected_round, TEST_MSG_ROUND);
++}
++
++int main (void)
++{
++  exec_vqrdmulh ();
++  return 0;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqrdmulh_lane.c
+@@ -0,0 +1,169 @@
++#include <arm_neon.h>
++#include "arm-neon-ref.h"
++#include "compute-ref-data.h"
++
++/* Expected values of cumulative_saturation flag.  */
++int VECT_VAR(expected_cumulative_sat,int,16,4) = 0;
++int VECT_VAR(expected_cumulative_sat,int,32,2) = 0;
++int VECT_VAR(expected_cumulative_sat,int,16,8) = 0;
++int VECT_VAR(expected_cumulative_sat,int,32,4) = 0;
++
++/* Expected results.  */
++VECT_VAR_DECL(expected,int,16,4) [] = { 0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected,int,32,2) [] = { 0x0, 0x0 };
++VECT_VAR_DECL(expected,int,16,8) [] = { 0x0, 0x0, 0x0, 0x0,
++					0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected,int,32,4) [] = { 0x0, 0x0, 0x0, 0x0 };
++
++/* Expected values of cumulative_saturation flag when multiplication
++   saturates.  */
++int VECT_VAR(expected_cumulative_sat_mul,int,16,4) = 1;
++int VECT_VAR(expected_cumulative_sat_mul,int,32,2) = 1;
++int VECT_VAR(expected_cumulative_sat_mul,int,16,8) = 1;
++int VECT_VAR(expected_cumulative_sat_mul,int,32,4) = 1;
++
++/* Expected results when multiplication saturates.  */
++VECT_VAR_DECL(expected_mul,int,16,4) [] = { 0x7fff, 0x7fff, 0x7fff, 0x7fff };
++VECT_VAR_DECL(expected_mul,int,32,2) [] = { 0x7fffffff, 0x7fffffff };
++VECT_VAR_DECL(expected_mul,int,16,8) [] = { 0x7fff, 0x7fff, 0x7fff, 0x7fff,
++					    0x7fff, 0x7fff, 0x7fff, 0x7fff };
++VECT_VAR_DECL(expected_mul,int,32,4) [] = { 0x7fffffff, 0x7fffffff,
++					    0x7fffffff, 0x7fffffff };
++
++/* Expected values of cumulative_saturation flag when rounding
++   should not cause saturation.  */
++int VECT_VAR(expected_cumulative_sat_round,int,16,4) = 0;
++int VECT_VAR(expected_cumulative_sat_round,int,32,2) = 0;
++int VECT_VAR(expected_cumulative_sat_round,int,16,8) = 0;
++int VECT_VAR(expected_cumulative_sat_round,int,32,4) = 0;
++
++/* Expected results when rounding should not cause saturation.  */
++VECT_VAR_DECL(expected_round,int,16,4) [] = { 0x7fff, 0x7fff, 0x7fff, 0x7fff };
++VECT_VAR_DECL(expected_round,int,32,2) [] = { 0x7fffffff, 0x7fffffff };
++VECT_VAR_DECL(expected_round,int,16,8) [] = { 0x7fff, 0x7fff, 0x7fff, 0x7fff,
++					      0x7fff, 0x7fff, 0x7fff, 0x7fff };
++VECT_VAR_DECL(expected_round,int,32,4) [] = { 0x7fffffff, 0x7fffffff,
++					      0x7fffffff, 0x7fffffff };
++
++#define INSN vqrdmulh
++#define TEST_MSG "VQRDMULH_LANE"
++
++#define FNNAME1(NAME) void exec_ ## NAME ## _lane (void)
++#define FNNAME(NAME) FNNAME1(NAME)
++
++FNNAME (INSN)
++{
++  /* vector_res = vqrdmulh_lane(vector,vector2,lane), then store the result.  */
++#define TEST_VQRDMULH_LANE2(INSN, Q, T1, T2, W, N, N2, L, EXPECTED_CUMULATIVE_SAT, CMT) \
++  Set_Neon_Cumulative_Sat(0, VECT_VAR(vector_res, T1, W, N));		\
++  VECT_VAR(vector_res, T1, W, N) =					\
++    INSN##Q##_lane_##T2##W(VECT_VAR(vector, T1, W, N),			\
++			   VECT_VAR(vector2, T1, W, N2),		\
++			   L);						\
++  vst1##Q##_##T2##W(VECT_VAR(result, T1, W, N),				\
++		    VECT_VAR(vector_res, T1, W, N));			\
++  CHECK_CUMULATIVE_SAT(TEST_MSG, T1, W, N, EXPECTED_CUMULATIVE_SAT, CMT)
++
++  /* Two auxliary macros are necessary to expand INSN */
++#define TEST_VQRDMULH_LANE1(INSN, Q, T1, T2, W, N, N2, L, EXPECTED_CUMULATIVE_SAT, CMT) \
++  TEST_VQRDMULH_LANE2(INSN, Q, T1, T2, W, N, N2, L, EXPECTED_CUMULATIVE_SAT, CMT)
++
++#define TEST_VQRDMULH_LANE(Q, T1, T2, W, N, N2, L, EXPECTED_CUMULATIVE_SAT, CMT) \
++  TEST_VQRDMULH_LANE1(INSN, Q, T1, T2, W, N, N2, L, EXPECTED_CUMULATIVE_SAT, CMT)
++
++
++  DECL_VARIABLE(vector, int, 16, 4);
++  DECL_VARIABLE(vector, int, 32, 2);
++  DECL_VARIABLE(vector, int, 16, 8);
++  DECL_VARIABLE(vector, int, 32, 4);
++
++  DECL_VARIABLE(vector_res, int, 16, 4);
++  DECL_VARIABLE(vector_res, int, 32, 2);
++  DECL_VARIABLE(vector_res, int, 16, 8);
++  DECL_VARIABLE(vector_res, int, 32, 4);
++
++  /* vector2: vqrdmulh_lane and vqrdmulhq_lane have a 2nd argument with
++     the same number of elements, so we need only one variable of each
++     type.  */
++  DECL_VARIABLE(vector2, int, 16, 4);
++  DECL_VARIABLE(vector2, int, 32, 2);
++
++  clean_results ();
++
++  VLOAD(vector, buffer, , int, s, 16, 4);
++  VLOAD(vector, buffer, , int, s, 32, 2);
++
++  VLOAD(vector, buffer, q, int, s, 16, 8);
++  VLOAD(vector, buffer, q, int, s, 32, 4);
++
++  /* Initialize vector2.  */
++  VDUP(vector2, , int, s, 16, 4, 0x55);
++  VDUP(vector2, , int, s, 32, 2, 0xBB);
++
++  /* Choose lane arbitrarily.  */
++#define CMT ""
++  TEST_VQRDMULH_LANE(, int, s, 16, 4, 4, 2, expected_cumulative_sat, CMT);
++  TEST_VQRDMULH_LANE(, int, s, 32, 2, 2, 1, expected_cumulative_sat, CMT);
++  TEST_VQRDMULH_LANE(q, int, s, 16, 8, 4, 3, expected_cumulative_sat, CMT);
++  TEST_VQRDMULH_LANE(q, int, s, 32, 4, 2, 0, expected_cumulative_sat, CMT);
++
++  CHECK(TEST_MSG, int, 16, 4, PRIx16, expected, CMT);
++  CHECK(TEST_MSG, int, 32, 2, PRIx32, expected, CMT);
++  CHECK(TEST_MSG, int, 16, 8, PRIx16, expected, CMT);
++  CHECK(TEST_MSG, int, 32, 4, PRIx32, expected, CMT);
++
++  /* Now use input values such that the multiplication causes
++     saturation.  */
++#define TEST_MSG_MUL " (check mul cumulative saturation)"
++  VDUP(vector, , int, s, 16, 4, 0x8000);
++  VDUP(vector, , int, s, 32, 2, 0x80000000);
++  VDUP(vector, q, int, s, 16, 8, 0x8000);
++  VDUP(vector, q, int, s, 32, 4, 0x80000000);
++  VDUP(vector2, , int, s, 16, 4, 0x8000);
++  VDUP(vector2, , int, s, 32, 2, 0x80000000);
++
++  TEST_VQRDMULH_LANE(, int, s, 16, 4, 4, 2, expected_cumulative_sat_mul,
++		     TEST_MSG_MUL);
++  TEST_VQRDMULH_LANE(, int, s, 32, 2, 2, 1, expected_cumulative_sat_mul,
++		     TEST_MSG_MUL);
++  TEST_VQRDMULH_LANE(q, int, s, 16, 8, 4, 3, expected_cumulative_sat_mul,
++		     TEST_MSG_MUL);
++  TEST_VQRDMULH_LANE(q, int, s, 32, 4, 2, 0, expected_cumulative_sat_mul,
++		     TEST_MSG_MUL);
++
++  CHECK(TEST_MSG, int, 16, 4, PRIx16, expected_mul, TEST_MSG_MUL);
++  CHECK(TEST_MSG, int, 32, 2, PRIx32, expected_mul, TEST_MSG_MUL);
++  CHECK(TEST_MSG, int, 16, 8, PRIx16, expected_mul, TEST_MSG_MUL);
++  CHECK(TEST_MSG, int, 32, 4, PRIx32, expected_mul, TEST_MSG_MUL);
++
++  VDUP(vector, , int, s, 16, 4, 0x8000);
++  VDUP(vector, , int, s, 32, 2, 0x80000000);
++  VDUP(vector, q, int, s, 16, 8, 0x8000);
++  VDUP(vector, q, int, s, 32, 4, 0x80000000);
++  VDUP(vector2, , int, s, 16, 4, 0x8001);
++  VDUP(vector2, , int, s, 32, 2, 0x80000001);
++
++  /* Use input values where rounding produces a result equal to the
++     saturation value, but does not set the saturation flag.  */
++#define TEST_MSG_ROUND " (check rounding)"
++  TEST_VQRDMULH_LANE(, int, s, 16, 4, 4, 2, expected_cumulative_sat_round,
++		     TEST_MSG_ROUND);
++  TEST_VQRDMULH_LANE(, int, s, 32, 2, 2, 1, expected_cumulative_sat_round,
++		     TEST_MSG_ROUND);
++  TEST_VQRDMULH_LANE(q, int, s, 16, 8, 4, 3, expected_cumulative_sat_round,
++		     TEST_MSG_ROUND);
++  TEST_VQRDMULH_LANE(q, int, s, 32, 4, 2, 0, expected_cumulative_sat_round,
++		     TEST_MSG_ROUND);
++
++  CHECK(TEST_MSG, int, 16, 4, PRIx16, expected_round, TEST_MSG_ROUND);
++  CHECK(TEST_MSG, int, 32, 2, PRIx32, expected_round, TEST_MSG_ROUND);
++  CHECK(TEST_MSG, int, 16, 8, PRIx16, expected_round, TEST_MSG_ROUND);
++  CHECK(TEST_MSG, int, 32, 4, PRIx32, expected_round, TEST_MSG_ROUND);
++}
++
++int main (void)
++{
++  exec_vqrdmulh_lane ();
++  return 0;
++}
++
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqrdmulh_n.c
+@@ -0,0 +1,155 @@
++#include <arm_neon.h>
++#include "arm-neon-ref.h"
++#include "compute-ref-data.h"
++
++/* Expected values of cumulative_saturation flag.  */
++int VECT_VAR(expected_cumulative_sat,int,16,4) = 0;
++int VECT_VAR(expected_cumulative_sat,int,32,2) = 0;
++int VECT_VAR(expected_cumulative_sat,int,16,8) = 0;
++int VECT_VAR(expected_cumulative_sat,int,32,4) = 0;
++
++/* Expected results.  */
++VECT_VAR_DECL(expected,int,16,4) [] = { 0xfffc, 0xfffc, 0xfffc, 0xfffd };
++VECT_VAR_DECL(expected,int,32,2) [] = { 0xfffffffe, 0xfffffffe };
++VECT_VAR_DECL(expected,int,16,8) [] = { 0x6, 0x6, 0x6, 0x5,
++					0x5, 0x4, 0x4, 0x4 };
++VECT_VAR_DECL(expected,int,32,4) [] = { 0xfffffffe, 0xfffffffe,
++					0xfffffffe, 0xfffffffe };
++
++/* Expected values of cumulative_saturation flag when multiplication
++   saturates.  */
++int VECT_VAR(expected_cumulative_sat_mul,int,16,4) = 1;
++int VECT_VAR(expected_cumulative_sat_mul,int,32,2) = 1;
++int VECT_VAR(expected_cumulative_sat_mul,int,16,8) = 1;
++int VECT_VAR(expected_cumulative_sat_mul,int,32,4) = 1;
++
++/* Expected results when multiplication saturates.  */
++VECT_VAR_DECL(expected_mul,int,16,4) [] = { 0x7fff, 0x7fff, 0x7fff, 0x7fff };
++VECT_VAR_DECL(expected_mul,int,32,2) [] = { 0x7fffffff, 0x7fffffff };
++VECT_VAR_DECL(expected_mul,int,16,8) [] = { 0x7fff, 0x7fff, 0x7fff, 0x7fff,
++					    0x7fff, 0x7fff, 0x7fff, 0x7fff };
++VECT_VAR_DECL(expected_mul,int,32,4) [] = { 0x7fffffff, 0x7fffffff,
++					    0x7fffffff, 0x7fffffff };
++
++/* Expected values of cumulative_saturation flag when rounding
++   should not cause saturation.  */
++int VECT_VAR(expected_cumulative_sat_round,int,16,4) = 0;
++int VECT_VAR(expected_cumulative_sat_round,int,32,2) = 0;
++int VECT_VAR(expected_cumulative_sat_round,int,16,8) = 0;
++int VECT_VAR(expected_cumulative_sat_round,int,32,4) = 0;
++
++/* Expected results when rounding should not cause saturation.  */
++VECT_VAR_DECL(expected_round,int,16,4) [] = { 0x7fff, 0x7fff, 0x7fff, 0x7fff };
++VECT_VAR_DECL(expected_round,int,32,2) [] = { 0x7fffffff, 0x7fffffff };
++VECT_VAR_DECL(expected_round,int,16,8) [] = { 0x7fff, 0x7fff, 0x7fff, 0x7fff,
++					      0x7fff, 0x7fff, 0x7fff, 0x7fff };
++VECT_VAR_DECL(expected_round,int,32,4) [] = { 0x7fffffff, 0x7fffffff,
++					      0x7fffffff, 0x7fffffff };
++
++#define INSN vqrdmulh
++#define TEST_MSG "VQRDMULH_N"
++
++#define FNNAME1(NAME) void exec_ ## NAME ## _n (void)
++#define FNNAME(NAME) FNNAME1(NAME)
++
++FNNAME (INSN)
++{
++  int i;
++
++  /* vector_res = vqrdmulh_n(vector,val), then store the result.  */
++#define TEST_VQRDMULH_N2(INSN, Q, T1, T2, W, N, L, EXPECTED_CUMULATIVE_SAT, CMT) \
++  Set_Neon_Cumulative_Sat(0, VECT_VAR(vector_res, T1, W, N));		\
++  VECT_VAR(vector_res, T1, W, N) =					\
++    INSN##Q##_n_##T2##W(VECT_VAR(vector, T1, W, N),			\
++			L);						\
++  vst1##Q##_##T2##W(VECT_VAR(result, T1, W, N),				\
++		    VECT_VAR(vector_res, T1, W, N));			\
++  CHECK_CUMULATIVE_SAT(TEST_MSG, T1, W, N, EXPECTED_CUMULATIVE_SAT, CMT)
++
++  /* Two auxliary macros are necessary to expand INSN */
++#define TEST_VQRDMULH_N1(INSN, Q, T1, T2, W, N, L, EXPECTED_CUMULATIVE_SAT, CMT) \
++  TEST_VQRDMULH_N2(INSN, Q, T1, T2, W, N, L, EXPECTED_CUMULATIVE_SAT, CMT)
++
++#define TEST_VQRDMULH_N(Q, T1, T2, W, N, L, EXPECTED_CUMULATIVE_SAT, CMT) \
++  TEST_VQRDMULH_N1(INSN, Q, T1, T2, W, N, L, EXPECTED_CUMULATIVE_SAT, CMT)
++
++
++  DECL_VARIABLE(vector, int, 16, 4);
++  DECL_VARIABLE(vector, int, 32, 2);
++  DECL_VARIABLE(vector, int, 16, 8);
++  DECL_VARIABLE(vector, int, 32, 4);
++
++  DECL_VARIABLE(vector_res, int, 16, 4);
++  DECL_VARIABLE(vector_res, int, 32, 2);
++  DECL_VARIABLE(vector_res, int, 16, 8);
++  DECL_VARIABLE(vector_res, int, 32, 4);
++
++  clean_results ();
++
++  VLOAD(vector, buffer, , int, s, 16, 4);
++  VLOAD(vector, buffer, , int, s, 32, 2);
++  VLOAD(vector, buffer, q, int, s, 16, 8);
++  VLOAD(vector, buffer, q, int, s, 32, 4);
++
++  /* Choose multiplier arbitrarily.  */
++#define CMT ""
++  TEST_VQRDMULH_N(, int, s, 16, 4, 0x2233, expected_cumulative_sat, CMT);
++  TEST_VQRDMULH_N(, int, s, 32, 2, 0x12345678, expected_cumulative_sat, CMT);
++  TEST_VQRDMULH_N(q, int, s, 16, 8, 0xCD12, expected_cumulative_sat, CMT);
++  TEST_VQRDMULH_N(q, int, s, 32, 4, 0xFA23456, expected_cumulative_sat, CMT);
++
++  CHECK(TEST_MSG, int, 16, 4, PRIx16, expected, CMT);
++  CHECK(TEST_MSG, int, 32, 2, PRIx32, expected, CMT);
++  CHECK(TEST_MSG, int, 16, 8, PRIx16, expected, CMT);
++  CHECK(TEST_MSG, int, 32, 4, PRIx32, expected, CMT);
++
++  /* Now use input values such that the multiplication causes
++     saturation.  */
++#define TEST_MSG_MUL " (check mul cumulative saturation)"
++  VDUP(vector, , int, s, 16, 4, 0x8000);
++  VDUP(vector, , int, s, 32, 2, 0x80000000);
++  VDUP(vector, q, int, s, 16, 8, 0x8000);
++  VDUP(vector, q, int, s, 32, 4, 0x80000000);
++
++  TEST_VQRDMULH_N(, int, s, 16, 4, 0x8000, expected_cumulative_sat_mul,
++		  TEST_MSG_MUL);
++  TEST_VQRDMULH_N(, int, s, 32, 2, 0x80000000, expected_cumulative_sat_mul,
++		  TEST_MSG_MUL);
++  TEST_VQRDMULH_N(q, int, s, 16, 8, 0x8000, expected_cumulative_sat_mul,
++		  TEST_MSG_MUL);
++  TEST_VQRDMULH_N(q, int, s, 32, 4, 0x80000000, expected_cumulative_sat_mul,
++		  TEST_MSG_MUL);
++
++  CHECK(TEST_MSG, int, 16, 4, PRIx16, expected_mul, TEST_MSG_MUL);
++  CHECK(TEST_MSG, int, 32, 2, PRIx32, expected_mul, TEST_MSG_MUL);
++  CHECK(TEST_MSG, int, 16, 8, PRIx16, expected_mul, TEST_MSG_MUL);
++  CHECK(TEST_MSG, int, 32, 4, PRIx32, expected_mul, TEST_MSG_MUL);
++
++  /* Use input values where rounding produces a result equal to the
++     saturation value, but does not set the saturation flag.  */
++#define TEST_MSG_ROUND " (check rounding)"
++  VDUP(vector, , int, s, 16, 4, 0x8000);
++  VDUP(vector, , int, s, 32, 2, 0x80000000);
++  VDUP(vector, q, int, s, 16, 8, 0x8000);
++  VDUP(vector, q, int, s, 32, 4, 0x80000000);
++
++  TEST_VQRDMULH_N(, int, s, 16, 4, 0x8001, expected_cumulative_sat_round,
++		  TEST_MSG_ROUND);
++  TEST_VQRDMULH_N(, int, s, 32, 2, 0x80000001, expected_cumulative_sat_round,
++		  TEST_MSG_ROUND);
++  TEST_VQRDMULH_N(q, int, s, 16, 8, 0x8001, expected_cumulative_sat_round,
++		  TEST_MSG_ROUND);
++  TEST_VQRDMULH_N(q, int, s, 32, 4, 0x80000001, expected_cumulative_sat_round,
++		  TEST_MSG_ROUND);
++
++  CHECK(TEST_MSG, int, 16, 4, PRIx16, expected_round, TEST_MSG_ROUND);
++  CHECK(TEST_MSG, int, 32, 2, PRIx32, expected_round, TEST_MSG_ROUND);
++  CHECK(TEST_MSG, int, 16, 8, PRIx16, expected_round, TEST_MSG_ROUND);
++  CHECK(TEST_MSG, int, 32, 4, PRIx32, expected_round, TEST_MSG_ROUND);
++}
++
++int main (void)
++{
++  exec_vqrdmulh_n ();
++  return 0;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqrshl.c
+@@ -0,0 +1,1090 @@
++#include <arm_neon.h>
++#include "arm-neon-ref.h"
++#include "compute-ref-data.h"
++
++/* Expected values of cumulative_saturation flag with input=0.  */
++int VECT_VAR(expected_cumulative_sat_0,int,8,8) = 0;
++int VECT_VAR(expected_cumulative_sat_0,int,16,4) = 0;
++int VECT_VAR(expected_cumulative_sat_0,int,32,2) = 0;
++int VECT_VAR(expected_cumulative_sat_0,int,64,1) = 0;
++int VECT_VAR(expected_cumulative_sat_0,uint,8,8) = 0;
++int VECT_VAR(expected_cumulative_sat_0,uint,16,4) = 0;
++int VECT_VAR(expected_cumulative_sat_0,uint,32,2) = 0;
++int VECT_VAR(expected_cumulative_sat_0,uint,64,1) = 0;
++int VECT_VAR(expected_cumulative_sat_0,int,8,16) = 0;
++int VECT_VAR(expected_cumulative_sat_0,int,16,8) = 0;
++int VECT_VAR(expected_cumulative_sat_0,int,32,4) = 0;
++int VECT_VAR(expected_cumulative_sat_0,int,64,2) = 0;
++int VECT_VAR(expected_cumulative_sat_0,uint,8,16) = 0;
++int VECT_VAR(expected_cumulative_sat_0,uint,16,8) = 0;
++int VECT_VAR(expected_cumulative_sat_0,uint,32,4) = 0;
++int VECT_VAR(expected_cumulative_sat_0,uint,64,2) = 0;
++
++/* Expected results with input=0.  */
++VECT_VAR_DECL(expected_0,int,8,8) [] = { 0x0, 0x0, 0x0, 0x0,
++					 0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_0,int,16,4) [] = { 0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_0,int,32,2) [] = { 0x0, 0x0 };
++VECT_VAR_DECL(expected_0,int,64,1) [] = { 0x0 };
++VECT_VAR_DECL(expected_0,uint,8,8) [] = { 0x0, 0x0, 0x0, 0x0,
++					  0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_0,uint,16,4) [] = { 0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_0,uint,32,2) [] = { 0x0, 0x0 };
++VECT_VAR_DECL(expected_0,uint,64,1) [] = { 0x0 };
++VECT_VAR_DECL(expected_0,int,8,16) [] = { 0x0, 0x0, 0x0, 0x0,
++					  0x0, 0x0, 0x0, 0x0,
++					  0x0, 0x0, 0x0, 0x0,
++					  0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_0,int,16,8) [] = { 0x0, 0x0, 0x0, 0x0,
++					  0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_0,int,32,4) [] = { 0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_0,int,64,2) [] = { 0x0, 0x0 };
++VECT_VAR_DECL(expected_0,uint,8,16) [] = { 0x0, 0x0, 0x0, 0x0,
++					   0x0, 0x0, 0x0, 0x0,
++					   0x0, 0x0, 0x0, 0x0,
++					   0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_0,uint,16,8) [] = { 0x0, 0x0, 0x0, 0x0,
++					   0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_0,uint,32,4) [] = { 0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_0,uint,64,2) [] = { 0x0, 0x0 };
++
++/* Expected values of cumulative_saturation flag with input=0 and
++   negative shift amount.  */
++int VECT_VAR(expected_cumulative_sat_0_neg,int,8,8) = 0;
++int VECT_VAR(expected_cumulative_sat_0_neg,int,16,4) = 0;
++int VECT_VAR(expected_cumulative_sat_0_neg,int,32,2) = 0;
++int VECT_VAR(expected_cumulative_sat_0_neg,int,64,1) = 0;
++int VECT_VAR(expected_cumulative_sat_0_neg,uint,8,8) = 0;
++int VECT_VAR(expected_cumulative_sat_0_neg,uint,16,4) = 0;
++int VECT_VAR(expected_cumulative_sat_0_neg,uint,32,2) = 0;
++int VECT_VAR(expected_cumulative_sat_0_neg,uint,64,1) = 0;
++int VECT_VAR(expected_cumulative_sat_0_neg,int,8,16) = 0;
++int VECT_VAR(expected_cumulative_sat_0_neg,int,16,8) = 0;
++int VECT_VAR(expected_cumulative_sat_0_neg,int,32,4) = 0;
++int VECT_VAR(expected_cumulative_sat_0_neg,int,64,2) = 0;
++int VECT_VAR(expected_cumulative_sat_0_neg,uint,8,16) = 0;
++int VECT_VAR(expected_cumulative_sat_0_neg,uint,16,8) = 0;
++int VECT_VAR(expected_cumulative_sat_0_neg,uint,32,4) = 0;
++int VECT_VAR(expected_cumulative_sat_0_neg,uint,64,2) = 0;
++
++/* Expected results with input=0 and negative shift amount.  */
++VECT_VAR_DECL(expected_0_neg,int,8,8) [] = { 0x0, 0x0, 0x0, 0x0,
++					     0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_0_neg,int,16,4) [] = { 0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_0_neg,int,32,2) [] = { 0x0, 0x0 };
++VECT_VAR_DECL(expected_0_neg,int,64,1) [] = { 0x0 };
++VECT_VAR_DECL(expected_0_neg,uint,8,8) [] = { 0x0, 0x0, 0x0, 0x0,
++					      0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_0_neg,uint,16,4) [] = { 0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_0_neg,uint,32,2) [] = { 0x0, 0x0 };
++VECT_VAR_DECL(expected_0_neg,uint,64,1) [] = { 0x0 };
++VECT_VAR_DECL(expected_0_neg,int,8,16) [] = { 0x0, 0x0, 0x0, 0x0,
++					      0x0, 0x0, 0x0, 0x0,
++					      0x0, 0x0, 0x0, 0x0,
++					      0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_0_neg,int,16,8) [] = { 0x0, 0x0, 0x0, 0x0,
++					      0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_0_neg,int,32,4) [] = { 0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_0_neg,int,64,2) [] = { 0x0, 0x0 };
++VECT_VAR_DECL(expected_0_neg,uint,8,16) [] = { 0x0, 0x0, 0x0, 0x0,
++					       0x0, 0x0, 0x0, 0x0,
++					       0x0, 0x0, 0x0, 0x0,
++					       0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_0_neg,uint,16,8) [] = { 0x0, 0x0, 0x0, 0x0,
++					       0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_0_neg,uint,32,4) [] = { 0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_0_neg,uint,64,2) [] = { 0x0, 0x0 };
++
++/* Expected values of cumulative_saturation flag.  */
++int VECT_VAR(expected_cumulative_sat,int,8,8) = 0;
++int VECT_VAR(expected_cumulative_sat,int,16,4) = 0;
++int VECT_VAR(expected_cumulative_sat,int,32,2) = 0;
++int VECT_VAR(expected_cumulative_sat,int,64,1) = 0;
++int VECT_VAR(expected_cumulative_sat,uint,8,8) = 1;
++int VECT_VAR(expected_cumulative_sat,uint,16,4) = 1;
++int VECT_VAR(expected_cumulative_sat,uint,32,2) = 1;
++int VECT_VAR(expected_cumulative_sat,uint,64,1) = 1;
++int VECT_VAR(expected_cumulative_sat,int,8,16) = 1;
++int VECT_VAR(expected_cumulative_sat,int,16,8) = 1;
++int VECT_VAR(expected_cumulative_sat,int,32,4) = 1;
++int VECT_VAR(expected_cumulative_sat,int,64,2) = 1;
++int VECT_VAR(expected_cumulative_sat,uint,8,16) = 1;
++int VECT_VAR(expected_cumulative_sat,uint,16,8) = 1;
++int VECT_VAR(expected_cumulative_sat,uint,32,4) = 1;
++int VECT_VAR(expected_cumulative_sat,uint,64,2) = 1;
++
++/* Expected results.  */
++VECT_VAR_DECL(expected,int,8,8) [] = { 0xe0, 0xe2, 0xe4, 0xe6,
++				       0xe8, 0xea, 0xec, 0xee };
++VECT_VAR_DECL(expected,int,16,4) [] = { 0xff80, 0xff88, 0xff90, 0xff98 };
++VECT_VAR_DECL(expected,int,32,2) [] = { 0xfffff000, 0xfffff100 };
++VECT_VAR_DECL(expected,int,64,1) [] = { 0xffffffffffffff80 };
++VECT_VAR_DECL(expected,uint,8,8) [] = { 0xff, 0xff, 0xff, 0xff,
++					0xff, 0xff, 0xff, 0xff };
++VECT_VAR_DECL(expected,uint,16,4) [] = { 0xffff, 0xffff, 0xffff, 0xffff };
++VECT_VAR_DECL(expected,uint,32,2) [] = { 0xffffffff, 0xffffffff };
++VECT_VAR_DECL(expected,uint,64,1) [] = { 0xffffffffffffffff };
++VECT_VAR_DECL(expected,int,8,16) [] = { 0x80, 0x80, 0x80, 0x80,
++					0x80, 0x80, 0x80, 0x80,
++					0x80, 0x80, 0x80, 0x80,
++					0x80, 0x80, 0x80, 0x80 };
++VECT_VAR_DECL(expected,int,16,8) [] = { 0x8000, 0x8000, 0x8000, 0x8000,
++					0x8000, 0x8000, 0x8000, 0x8000 };
++VECT_VAR_DECL(expected,int,32,4) [] = { 0x80000000, 0x80000000,
++					0x80000000, 0x80000000 };
++VECT_VAR_DECL(expected,int,64,2) [] = { 0x8000000000000000, 0x8000000000000000 };
++VECT_VAR_DECL(expected,uint,8,16) [] = { 0xff, 0xff, 0xff, 0xff,
++					 0xff, 0xff, 0xff, 0xff,
++					 0xff, 0xff, 0xff, 0xff,
++					 0xff, 0xff, 0xff, 0xff };
++VECT_VAR_DECL(expected,uint,16,8) [] = { 0xffff, 0xffff, 0xffff, 0xffff,
++					 0xffff, 0xffff, 0xffff, 0xffff };
++VECT_VAR_DECL(expected,uint,32,4) [] = { 0xffffffff, 0xffffffff,
++					 0xffffffff, 0xffffffff };
++VECT_VAR_DECL(expected,uint,64,2) [] = { 0xffffffffffffffff,
++					 0xffffffffffffffff };
++
++/* Expected values of cumulative_saturation flag with negative shift
++   amount.  */
++int VECT_VAR(expected_cumulative_sat_neg,int,8,8) = 0;
++int VECT_VAR(expected_cumulative_sat_neg,int,16,4) = 0;
++int VECT_VAR(expected_cumulative_sat_neg,int,32,2) = 0;
++int VECT_VAR(expected_cumulative_sat_neg,int,64,1) = 0;
++int VECT_VAR(expected_cumulative_sat_neg,uint,8,8) = 0;
++int VECT_VAR(expected_cumulative_sat_neg,uint,16,4) = 0;
++int VECT_VAR(expected_cumulative_sat_neg,uint,32,2) = 0;
++int VECT_VAR(expected_cumulative_sat_neg,uint,64,1) = 0;
++int VECT_VAR(expected_cumulative_sat_neg,int,8,16) = 0;
++int VECT_VAR(expected_cumulative_sat_neg,int,16,8) = 0;
++int VECT_VAR(expected_cumulative_sat_neg,int,32,4) = 0;
++int VECT_VAR(expected_cumulative_sat_neg,int,64,2) = 0;
++int VECT_VAR(expected_cumulative_sat_neg,uint,8,16) = 0;
++int VECT_VAR(expected_cumulative_sat_neg,uint,16,8) = 0;
++int VECT_VAR(expected_cumulative_sat_neg,uint,32,4) = 0;
++int VECT_VAR(expected_cumulative_sat_neg,uint,64,2) = 0;
++
++/* Expected results with negative shift amount.  */
++VECT_VAR_DECL(expected_neg,int,8,8) [] = { 0xfc, 0xfc, 0xfd, 0xfd,
++					   0xfd, 0xfd, 0xfe, 0xfe };
++VECT_VAR_DECL(expected_neg,int,16,4) [] = { 0xfffc, 0xfffc, 0xfffd, 0xfffd };
++VECT_VAR_DECL(expected_neg,int,32,2) [] = { 0xfffffffe, 0xfffffffe };
++VECT_VAR_DECL(expected_neg,int,64,1) [] = { 0xffffffffffffffff };
++VECT_VAR_DECL(expected_neg,uint,8,8) [] = { 0x3c, 0x3c, 0x3d, 0x3d,
++					    0x3d, 0x3d, 0x3e, 0x3e };
++VECT_VAR_DECL(expected_neg,uint,16,4) [] = { 0x3ffc, 0x3ffc, 0x3ffd, 0x3ffd };
++VECT_VAR_DECL(expected_neg,uint,32,2) [] = { 0x1ffffffe, 0x1ffffffe };
++VECT_VAR_DECL(expected_neg,uint,64,1) [] = { 0xfffffffffffffff };
++VECT_VAR_DECL(expected_neg,int,8,16) [] = { 0x0, 0x0, 0x0, 0x0,
++					    0x0, 0x0, 0x0, 0x0,
++					    0x0, 0x0, 0x0, 0x0,
++					    0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_neg,int,16,8) [] = { 0x0, 0x0, 0x0, 0x0,
++					    0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_neg,int,32,4) [] = { 0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_neg,int,64,2) [] = { 0x0, 0x0 };
++VECT_VAR_DECL(expected_neg,uint,8,16) [] = { 0x2, 0x2, 0x2, 0x2,
++					     0x2, 0x2, 0x2, 0x2,
++					     0x2, 0x2, 0x2, 0x2,
++					     0x2, 0x2, 0x2, 0x2 };
++VECT_VAR_DECL(expected_neg,uint,16,8) [] = { 0x20, 0x20, 0x20, 0x20,
++					     0x20, 0x20, 0x20, 0x20 };
++VECT_VAR_DECL(expected_neg,uint,32,4) [] = { 0x80000, 0x80000,
++					     0x80000, 0x80000 };
++VECT_VAR_DECL(expected_neg,uint,64,2) [] = { 0x100000000000, 0x100000000000 };
++
++/* Expected values of cumulative_saturation flag with input=max and
++   shift by -1.  */
++int VECT_VAR(expected_cumulative_sat_minus1,int,8,8) = 0;
++int VECT_VAR(expected_cumulative_sat_minus1,int,16,4) = 0;
++int VECT_VAR(expected_cumulative_sat_minus1,int,32,2) = 0;
++int VECT_VAR(expected_cumulative_sat_minus1,int,64,1) = 0;
++int VECT_VAR(expected_cumulative_sat_minus1,uint,8,8) = 0;
++int VECT_VAR(expected_cumulative_sat_minus1,uint,16,4) = 0;
++int VECT_VAR(expected_cumulative_sat_minus1,uint,32,2) = 0;
++int VECT_VAR(expected_cumulative_sat_minus1,uint,64,1) = 0;
++int VECT_VAR(expected_cumulative_sat_minus1,int,8,16) = 0;
++int VECT_VAR(expected_cumulative_sat_minus1,int,16,8) = 0;
++int VECT_VAR(expected_cumulative_sat_minus1,int,32,4) = 0;
++int VECT_VAR(expected_cumulative_sat_minus1,int,64,2) = 0;
++int VECT_VAR(expected_cumulative_sat_minus1,uint,8,16) = 0;
++int VECT_VAR(expected_cumulative_sat_minus1,uint,16,8) = 0;
++int VECT_VAR(expected_cumulative_sat_minus1,uint,32,4) = 0;
++int VECT_VAR(expected_cumulative_sat_minus1,uint,64,2) = 0;
++
++/* Expected results with input=max and shift by -1.  */
++VECT_VAR_DECL(expected_minus1,int,8,8) [] = { 0x40, 0x40, 0x40, 0x40,
++					      0x40, 0x40, 0x40, 0x40 };
++VECT_VAR_DECL(expected_minus1,int,16,4) [] = { 0x4000, 0x4000, 0x4000, 0x4000 };
++VECT_VAR_DECL(expected_minus1,int,32,2) [] = { 0x40000000, 0x40000000 };
++VECT_VAR_DECL(expected_minus1,int,64,1) [] = { 0x4000000000000000 };
++VECT_VAR_DECL(expected_minus1,uint,8,8) [] = { 0x80, 0x80, 0x80, 0x80,
++					       0x80, 0x80, 0x80, 0x80 };
++VECT_VAR_DECL(expected_minus1,uint,16,4) [] = { 0x8000, 0x8000, 0x8000, 0x8000 };
++VECT_VAR_DECL(expected_minus1,uint,32,2) [] = { 0x80000000, 0x80000000 };
++VECT_VAR_DECL(expected_minus1,uint,64,1) [] = { 0x8000000000000000 };
++VECT_VAR_DECL(expected_minus1,int,8,16) [] = { 0x40, 0x40, 0x40, 0x40,
++					       0x40, 0x40, 0x40, 0x40,
++					       0x40, 0x40, 0x40, 0x40,
++					       0x40, 0x40, 0x40, 0x40 };
++VECT_VAR_DECL(expected_minus1,int,16,8) [] = { 0x4000, 0x4000, 0x4000, 0x4000,
++					       0x4000, 0x4000, 0x4000, 0x4000 };
++VECT_VAR_DECL(expected_minus1,int,32,4) [] = { 0x40000000, 0x40000000,
++					       0x40000000, 0x40000000 };
++VECT_VAR_DECL(expected_minus1,int,64,2) [] = { 0x4000000000000000,
++					       0x4000000000000000 };
++VECT_VAR_DECL(expected_minus1,uint,8,16) [] = { 0x80, 0x80, 0x80, 0x80,
++						0x80, 0x80, 0x80, 0x80,
++						0x80, 0x80, 0x80, 0x80,
++						0x80, 0x80, 0x80, 0x80 };
++VECT_VAR_DECL(expected_minus1,uint,16,8) [] = { 0x8000, 0x8000, 0x8000, 0x8000,
++						0x8000, 0x8000, 0x8000, 0x8000 };
++VECT_VAR_DECL(expected_minus1,uint,32,4) [] = { 0x80000000, 0x80000000,
++						0x80000000, 0x80000000 };
++VECT_VAR_DECL(expected_minus1,uint,64,2) [] = { 0x8000000000000000,
++						0x8000000000000000 };
++
++/* Expected values of cumulative_saturation flag with input=max and
++   shift by -3.  */
++int VECT_VAR(expected_cumulative_sat_minus3,int,8,8) = 0;
++int VECT_VAR(expected_cumulative_sat_minus3,int,16,4) = 0;
++int VECT_VAR(expected_cumulative_sat_minus3,int,32,2) = 0;
++int VECT_VAR(expected_cumulative_sat_minus3,int,64,1) = 0;
++int VECT_VAR(expected_cumulative_sat_minus3,uint,8,8) = 0;
++int VECT_VAR(expected_cumulative_sat_minus3,uint,16,4) = 0;
++int VECT_VAR(expected_cumulative_sat_minus3,uint,32,2) = 0;
++int VECT_VAR(expected_cumulative_sat_minus3,uint,64,1) = 0;
++int VECT_VAR(expected_cumulative_sat_minus3,int,8,16) = 0;
++int VECT_VAR(expected_cumulative_sat_minus3,int,16,8) = 0;
++int VECT_VAR(expected_cumulative_sat_minus3,int,32,4) = 0;
++int VECT_VAR(expected_cumulative_sat_minus3,int,64,2) = 0;
++int VECT_VAR(expected_cumulative_sat_minus3,uint,8,16) = 0;
++int VECT_VAR(expected_cumulative_sat_minus3,uint,16,8) = 0;
++int VECT_VAR(expected_cumulative_sat_minus3,uint,32,4) = 0;
++int VECT_VAR(expected_cumulative_sat_minus3,uint,64,2) = 0;
++
++/* Expected results with input=max and shift by -3.  */
++VECT_VAR_DECL(expected_minus3,int,8,8) [] = { 0x10, 0x10, 0x10, 0x10,
++					      0x10, 0x10, 0x10, 0x10 };
++VECT_VAR_DECL(expected_minus3,int,16,4) [] = { 0x1000, 0x1000, 0x1000, 0x1000 };
++VECT_VAR_DECL(expected_minus3,int,32,2) [] = { 0x10000000, 0x10000000 };
++VECT_VAR_DECL(expected_minus3,int,64,1) [] = { 0x1000000000000000 };
++VECT_VAR_DECL(expected_minus3,uint,8,8) [] = { 0x20, 0x20, 0x20, 0x20,
++					       0x20, 0x20, 0x20, 0x20 };
++VECT_VAR_DECL(expected_minus3,uint,16,4) [] = { 0x2000, 0x2000, 0x2000, 0x2000 };
++VECT_VAR_DECL(expected_minus3,uint,32,2) [] = { 0x20000000, 0x20000000 };
++VECT_VAR_DECL(expected_minus3,uint,64,1) [] = { 0x2000000000000000 };
++VECT_VAR_DECL(expected_minus3,int,8,16) [] = { 0x10, 0x10, 0x10, 0x10,
++					       0x10, 0x10, 0x10, 0x10,
++					       0x10, 0x10, 0x10, 0x10,
++					       0x10, 0x10, 0x10, 0x10 };
++VECT_VAR_DECL(expected_minus3,int,16,8) [] = { 0x1000, 0x1000, 0x1000, 0x1000,
++					       0x1000, 0x1000, 0x1000, 0x1000 };
++VECT_VAR_DECL(expected_minus3,int,32,4) [] = { 0x10000000, 0x10000000,
++					       0x10000000, 0x10000000 };
++VECT_VAR_DECL(expected_minus3,int,64,2) [] = { 0x1000000000000000,
++					       0x1000000000000000 };
++VECT_VAR_DECL(expected_minus3,uint,8,16) [] = { 0x20, 0x20, 0x20, 0x20,
++						0x20, 0x20, 0x20, 0x20,
++						0x20, 0x20, 0x20, 0x20,
++						0x20, 0x20, 0x20, 0x20 };
++VECT_VAR_DECL(expected_minus3,uint,16,8) [] = { 0x2000, 0x2000, 0x2000, 0x2000,
++						0x2000, 0x2000, 0x2000, 0x2000 };
++VECT_VAR_DECL(expected_minus3,uint,32,4) [] = { 0x20000000, 0x20000000,
++						0x20000000, 0x20000000 };
++VECT_VAR_DECL(expected_minus3,uint,64,2) [] = { 0x2000000000000000,
++						0x2000000000000000 };
++
++/* Expected values of cumulative_saturation flag with input=max and
++   large shift amount.  */
++int VECT_VAR(expected_cumulative_sat_large_sh,int,8,8) = 1;
++int VECT_VAR(expected_cumulative_sat_large_sh,int,16,4) = 1;
++int VECT_VAR(expected_cumulative_sat_large_sh,int,32,2) = 1;
++int VECT_VAR(expected_cumulative_sat_large_sh,int,64,1) = 1;
++int VECT_VAR(expected_cumulative_sat_large_sh,uint,8,8) = 1;
++int VECT_VAR(expected_cumulative_sat_large_sh,uint,16,4) = 1;
++int VECT_VAR(expected_cumulative_sat_large_sh,uint,32,2) = 1;
++int VECT_VAR(expected_cumulative_sat_large_sh,uint,64,1) = 1;
++int VECT_VAR(expected_cumulative_sat_large_sh,int,8,16) = 1;
++int VECT_VAR(expected_cumulative_sat_large_sh,int,16,8) = 1;
++int VECT_VAR(expected_cumulative_sat_large_sh,int,32,4) = 1;
++int VECT_VAR(expected_cumulative_sat_large_sh,int,64,2) = 1;
++int VECT_VAR(expected_cumulative_sat_large_sh,uint,8,16) = 1;
++int VECT_VAR(expected_cumulative_sat_large_sh,uint,16,8) = 1;
++int VECT_VAR(expected_cumulative_sat_large_sh,uint,32,4) = 1;
++int VECT_VAR(expected_cumulative_sat_large_sh,uint,64,2) = 1;
++
++/* Expected results with input=max and large shift amount.  */
++VECT_VAR_DECL(expected_large_sh,int,8,8) [] = { 0x7f, 0x7f, 0x7f, 0x7f,
++						0x7f, 0x7f, 0x7f, 0x7f };
++VECT_VAR_DECL(expected_large_sh,int,16,4) [] = { 0x7fff, 0x7fff,
++						 0x7fff, 0x7fff };
++VECT_VAR_DECL(expected_large_sh,int,32,2) [] = { 0x7fffffff, 0x7fffffff };
++VECT_VAR_DECL(expected_large_sh,int,64,1) [] = { 0x7fffffffffffffff };
++VECT_VAR_DECL(expected_large_sh,uint,8,8) [] = { 0xff, 0xff, 0xff, 0xff,
++						 0xff, 0xff, 0xff, 0xff };
++VECT_VAR_DECL(expected_large_sh,uint,16,4) [] = { 0xffff, 0xffff,
++						  0xffff, 0xffff };
++VECT_VAR_DECL(expected_large_sh,uint,32,2) [] = { 0xffffffff, 0xffffffff };
++VECT_VAR_DECL(expected_large_sh,uint,64,1) [] = { 0xffffffffffffffff };
++VECT_VAR_DECL(expected_large_sh,int,8,16) [] = { 0x7f, 0x7f, 0x7f, 0x7f,
++						 0x7f, 0x7f, 0x7f, 0x7f,
++						 0x7f, 0x7f, 0x7f, 0x7f,
++						 0x7f, 0x7f, 0x7f, 0x7f };
++VECT_VAR_DECL(expected_large_sh,int,16,8) [] = { 0x7fff, 0x7fff,
++						 0x7fff, 0x7fff,
++						 0x7fff, 0x7fff,
++						 0x7fff, 0x7fff };
++VECT_VAR_DECL(expected_large_sh,int,32,4) [] = { 0x7fffffff, 0x7fffffff,
++						 0x7fffffff, 0x7fffffff };
++VECT_VAR_DECL(expected_large_sh,int,64,2) [] = { 0x7fffffffffffffff,
++						 0x7fffffffffffffff };
++VECT_VAR_DECL(expected_large_sh,uint,8,16) [] = { 0xff, 0xff, 0xff, 0xff,
++						  0xff, 0xff, 0xff, 0xff,
++						  0xff, 0xff, 0xff, 0xff,
++						  0xff, 0xff, 0xff, 0xff };
++VECT_VAR_DECL(expected_large_sh,uint,16,8) [] = { 0xffff, 0xffff,
++						  0xffff, 0xffff,
++						  0xffff, 0xffff,
++						  0xffff, 0xffff };
++VECT_VAR_DECL(expected_large_sh,uint,32,4) [] = { 0xffffffff, 0xffffffff,
++						  0xffffffff, 0xffffffff };
++VECT_VAR_DECL(expected_large_sh,uint,64,2) [] = { 0xffffffffffffffff,
++						  0xffffffffffffffff };
++
++/* Expected values of cumulative_saturation flag with negative input and
++   large shift amount.  */
++int VECT_VAR(expected_cumulative_sat_neg_large_sh,int,8,8) = 1;
++int VECT_VAR(expected_cumulative_sat_neg_large_sh,int,16,4) = 1;
++int VECT_VAR(expected_cumulative_sat_neg_large_sh,int,32,2) = 1;
++int VECT_VAR(expected_cumulative_sat_neg_large_sh,int,64,1) = 1;
++int VECT_VAR(expected_cumulative_sat_neg_large_sh,uint,8,8) = 1;
++int VECT_VAR(expected_cumulative_sat_neg_large_sh,uint,16,4) = 1;
++int VECT_VAR(expected_cumulative_sat_neg_large_sh,uint,32,2) = 1;
++int VECT_VAR(expected_cumulative_sat_neg_large_sh,uint,64,1) = 1;
++int VECT_VAR(expected_cumulative_sat_neg_large_sh,int,8,16) = 1;
++int VECT_VAR(expected_cumulative_sat_neg_large_sh,int,16,8) = 1;
++int VECT_VAR(expected_cumulative_sat_neg_large_sh,int,32,4) = 1;
++int VECT_VAR(expected_cumulative_sat_neg_large_sh,int,64,2) = 1;
++int VECT_VAR(expected_cumulative_sat_neg_large_sh,uint,8,16) = 1;
++int VECT_VAR(expected_cumulative_sat_neg_large_sh,uint,16,8) = 1;
++int VECT_VAR(expected_cumulative_sat_neg_large_sh,uint,32,4) = 1;
++int VECT_VAR(expected_cumulative_sat_neg_large_sh,uint,64,2) = 1;
++
++/* Expected results with negative input and large shift amount.  */
++VECT_VAR_DECL(expected_neg_large_sh,int,8,8) [] = { 0x80, 0x80, 0x80, 0x80,
++						    0x80, 0x80, 0x80, 0x80 };
++VECT_VAR_DECL(expected_neg_large_sh,int,16,4) [] = { 0x8000, 0x8000,
++						     0x8000, 0x8000 };
++VECT_VAR_DECL(expected_neg_large_sh,int,32,2) [] = { 0x80000000, 0x80000000 };
++VECT_VAR_DECL(expected_neg_large_sh,int,64,1) [] = { 0x8000000000000000 };
++VECT_VAR_DECL(expected_neg_large_sh,uint,8,8) [] = { 0xff, 0xff, 0xff, 0xff,
++						     0xff, 0xff, 0xff, 0xff };
++VECT_VAR_DECL(expected_neg_large_sh,uint,16,4) [] = { 0xffff, 0xffff,
++						      0xffff, 0xffff };
++VECT_VAR_DECL(expected_neg_large_sh,uint,32,2) [] = { 0xffffffff,
++						      0xffffffff };
++VECT_VAR_DECL(expected_neg_large_sh,uint,64,1) [] = { 0xffffffffffffffff };
++VECT_VAR_DECL(expected_neg_large_sh,int,8,16) [] = { 0x80, 0x80, 0x80, 0x80,
++						     0x80, 0x80, 0x80, 0x80,
++						     0x80, 0x80, 0x80, 0x80,
++						     0x80, 0x80, 0x80, 0x80 };
++VECT_VAR_DECL(expected_neg_large_sh,int,16,8) [] = { 0x8000, 0x8000,
++						     0x8000, 0x8000,
++						     0x8000, 0x8000,
++						     0x8000, 0x8000 };
++VECT_VAR_DECL(expected_neg_large_sh,int,32,4) [] = { 0x80000000, 0x80000000,
++						     0x80000000, 0x80000000 };
++VECT_VAR_DECL(expected_neg_large_sh,int,64,2) [] = { 0x8000000000000000,
++						     0x8000000000000000 };
++VECT_VAR_DECL(expected_neg_large_sh,uint,8,16) [] = { 0xff, 0xff, 0xff, 0xff,
++						      0xff, 0xff, 0xff, 0xff,
++						      0xff, 0xff, 0xff, 0xff,
++						      0xff, 0xff, 0xff, 0xff };
++VECT_VAR_DECL(expected_neg_large_sh,uint,16,8) [] = { 0xffff, 0xffff,
++						      0xffff, 0xffff,
++						      0xffff, 0xffff,
++						      0xffff, 0xffff };
++VECT_VAR_DECL(expected_neg_large_sh,uint,32,4) [] = { 0xffffffff,
++						      0xffffffff,
++						      0xffffffff,
++						      0xffffffff };
++VECT_VAR_DECL(expected_neg_large_sh,uint,64,2) [] = { 0xffffffffffffffff,
++						      0xffffffffffffffff };
++
++/* Expected values of cumulative_saturation flag with max/min input and
++   large negative shift amount.  */
++int VECT_VAR(expected_cumulative_sat_large_neg_sh,int,8,8) = 0;
++int VECT_VAR(expected_cumulative_sat_large_neg_sh,int,16,4) = 0;
++int VECT_VAR(expected_cumulative_sat_large_neg_sh,int,32,2) = 0;
++int VECT_VAR(expected_cumulative_sat_large_neg_sh,int,64,1) = 0;
++int VECT_VAR(expected_cumulative_sat_large_neg_sh,uint,8,8) = 0;
++int VECT_VAR(expected_cumulative_sat_large_neg_sh,uint,16,4) = 0;
++int VECT_VAR(expected_cumulative_sat_large_neg_sh,uint,32,2) = 0;
++int VECT_VAR(expected_cumulative_sat_large_neg_sh,uint,64,1) = 0;
++int VECT_VAR(expected_cumulative_sat_large_neg_sh,int,8,16) = 0;
++int VECT_VAR(expected_cumulative_sat_large_neg_sh,int,16,8) = 0;
++int VECT_VAR(expected_cumulative_sat_large_neg_sh,int,32,4) = 0;
++int VECT_VAR(expected_cumulative_sat_large_neg_sh,int,64,2) = 0;
++int VECT_VAR(expected_cumulative_sat_large_neg_sh,uint,8,16) = 0;
++int VECT_VAR(expected_cumulative_sat_large_neg_sh,uint,16,8) = 0;
++int VECT_VAR(expected_cumulative_sat_large_neg_sh,uint,32,4) = 0;
++int VECT_VAR(expected_cumulative_sat_large_neg_sh,uint,64,2) = 0;
++
++/* Expected results with max/min input and large negative shift amount.  */
++VECT_VAR_DECL(expected_large_neg_sh,int,8,8) [] = { 0x0, 0x0, 0x0, 0x0,
++						    0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_large_neg_sh,int,16,4) [] = { 0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_large_neg_sh,int,32,2) [] = { 0x0, 0x0 };
++VECT_VAR_DECL(expected_large_neg_sh,int,64,1) [] = { 0x0 };
++VECT_VAR_DECL(expected_large_neg_sh,uint,8,8) [] = { 0x0, 0x0, 0x0, 0x0,
++						     0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_large_neg_sh,uint,16,4) [] = { 0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_large_neg_sh,uint,32,2) [] = { 0x0, 0x0 };
++VECT_VAR_DECL(expected_large_neg_sh,uint,64,1) [] = { 0x0 };
++VECT_VAR_DECL(expected_large_neg_sh,int,8,16) [] = { 0x0, 0x0, 0x0, 0x0,
++						     0x0, 0x0, 0x0, 0x0,
++						     0x0, 0x0, 0x0, 0x0,
++						     0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_large_neg_sh,int,16,8) [] = { 0x0, 0x0, 0x0, 0x0,
++						     0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_large_neg_sh,int,32,4) [] = { 0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_large_neg_sh,int,64,2) [] = { 0x0, 0x0 };
++VECT_VAR_DECL(expected_large_neg_sh,uint,8,16) [] = { 0x0, 0x0, 0x0, 0x0,
++						      0x0, 0x0, 0x0, 0x0,
++						      0x0, 0x0, 0x0, 0x0,
++						      0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_large_neg_sh,uint,16,8) [] = { 0x0, 0x0, 0x0, 0x0,
++						      0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_large_neg_sh,uint,32,4) [] = { 0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_large_neg_sh,uint,64,2) [] = { 0x0, 0x0 };
++
++/* Expected values of cumulative_saturation flag with input=0 and
++   large negative shift amount.  */
++int VECT_VAR(expected_cumulative_sat_0_large_neg_sh,int,8,8) = 0;
++int VECT_VAR(expected_cumulative_sat_0_large_neg_sh,int,16,4) = 0;
++int VECT_VAR(expected_cumulative_sat_0_large_neg_sh,int,32,2) = 0;
++int VECT_VAR(expected_cumulative_sat_0_large_neg_sh,int,64,1) = 0;
++int VECT_VAR(expected_cumulative_sat_0_large_neg_sh,uint,8,8) = 0;
++int VECT_VAR(expected_cumulative_sat_0_large_neg_sh,uint,16,4) = 0;
++int VECT_VAR(expected_cumulative_sat_0_large_neg_sh,uint,32,2) = 0;
++int VECT_VAR(expected_cumulative_sat_0_large_neg_sh,uint,64,1) = 0;
++int VECT_VAR(expected_cumulative_sat_0_large_neg_sh,int,8,16) = 0;
++int VECT_VAR(expected_cumulative_sat_0_large_neg_sh,int,16,8) = 0;
++int VECT_VAR(expected_cumulative_sat_0_large_neg_sh,int,32,4) = 0;
++int VECT_VAR(expected_cumulative_sat_0_large_neg_sh,int,64,2) = 0;
++int VECT_VAR(expected_cumulative_sat_0_large_neg_sh,uint,8,16) = 0;
++int VECT_VAR(expected_cumulative_sat_0_large_neg_sh,uint,16,8) = 0;
++int VECT_VAR(expected_cumulative_sat_0_large_neg_sh,uint,32,4) = 0;
++int VECT_VAR(expected_cumulative_sat_0_large_neg_sh,uint,64,2) = 0;
++
++/* Expected results with input=0 and large negative shift amount.  */
++VECT_VAR_DECL(expected_0_large_neg_sh,int,8,8) [] = { 0x0, 0x0, 0x0, 0x0,
++						      0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_0_large_neg_sh,int,16,4) [] = { 0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_0_large_neg_sh,int,32,2) [] = { 0x0, 0x0 };
++VECT_VAR_DECL(expected_0_large_neg_sh,int,64,1) [] = { 0x0 };
++VECT_VAR_DECL(expected_0_large_neg_sh,uint,8,8) [] = { 0x0, 0x0, 0x0, 0x0,
++						       0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_0_large_neg_sh,uint,16,4) [] = { 0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_0_large_neg_sh,uint,32,2) [] = { 0x0, 0x0 };
++VECT_VAR_DECL(expected_0_large_neg_sh,uint,64,1) [] = { 0x0 };
++VECT_VAR_DECL(expected_0_large_neg_sh,int,8,16) [] = { 0x0, 0x0, 0x0, 0x0,
++						       0x0, 0x0, 0x0, 0x0,
++						       0x0, 0x0, 0x0, 0x0,
++						       0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_0_large_neg_sh,int,16,8) [] = { 0x0, 0x0, 0x0, 0x0,
++						       0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_0_large_neg_sh,int,32,4) [] = { 0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_0_large_neg_sh,int,64,2) [] = { 0x0, 0x0 };
++VECT_VAR_DECL(expected_0_large_neg_sh,uint,8,16) [] = { 0x0, 0x0, 0x0, 0x0,
++							0x0, 0x0, 0x0, 0x0,
++							0x0, 0x0, 0x0, 0x0,
++							0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_0_large_neg_sh,uint,16,8) [] = { 0x0, 0x0, 0x0, 0x0,
++							0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_0_large_neg_sh,uint,32,4) [] = { 0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_0_large_neg_sh,uint,64,2) [] = { 0x0, 0x0 };
++
++#define INSN vqrshl
++#define TEST_MSG "VQRSHL/VQRSHLQ"
++
++#define FNNAME1(NAME) void exec_ ## NAME (void)
++#define FNNAME(NAME) FNNAME1(NAME)
++
++FNNAME (INSN)
++{
++  /* Basic test: v3=vqrshl(v1,v2), then store the result.  */
++#define TEST_VQRSHL2(INSN, T3, Q, T1, T2, W, N, EXPECTED_CUMULATIVE_SAT, CMT) \
++  Set_Neon_Cumulative_Sat(0, VECT_VAR(vector_res, T1, W, N));		\
++  VECT_VAR(vector_res, T1, W, N) =					\
++    INSN##Q##_##T2##W(VECT_VAR(vector, T1, W, N),			\
++		      VECT_VAR(vector_shift, T3, W, N));		\
++  vst1##Q##_##T2##W(VECT_VAR(result, T1, W, N),				\
++		    VECT_VAR(vector_res, T1, W, N));			\
++  CHECK_CUMULATIVE_SAT(TEST_MSG, T1, W, N, EXPECTED_CUMULATIVE_SAT, CMT)
++
++  /* Two auxliary macros are necessary to expand INSN */
++#define TEST_VQRSHL1(INSN, T3, Q, T1, T2, W, N, EXPECTED_CUMULATIVE_SAT, CMT) \
++  TEST_VQRSHL2(INSN, T3, Q, T1, T2, W, N, EXPECTED_CUMULATIVE_SAT, CMT)
++
++#define TEST_VQRSHL(T3, Q, T1, T2, W, N, EXPECTED_CUMULATIVE_SAT, CMT)	\
++  TEST_VQRSHL1(INSN, T3, Q, T1, T2, W, N, EXPECTED_CUMULATIVE_SAT, CMT)
++
++  DECL_VARIABLE_ALL_VARIANTS(vector);
++  DECL_VARIABLE_ALL_VARIANTS(vector_res);
++
++  DECL_VARIABLE_SIGNED_VARIANTS(vector_shift);
++
++  clean_results ();
++
++  /* Fill input vector with 0, to check saturation on limits.  */
++  VDUP(vector, , int, s, 8, 8, 0);
++  VDUP(vector, , int, s, 16, 4, 0);
++  VDUP(vector, , int, s, 32, 2, 0);
++  VDUP(vector, , int, s, 64, 1, 0);
++  VDUP(vector, , uint, u, 8, 8, 0);
++  VDUP(vector, , uint, u, 16, 4, 0);
++  VDUP(vector, , uint, u, 32, 2, 0);
++  VDUP(vector, , uint, u, 64, 1, 0);
++  VDUP(vector, q, int, s, 8, 16, 0);
++  VDUP(vector, q, int, s, 16, 8, 0);
++  VDUP(vector, q, int, s, 32, 4, 0);
++  VDUP(vector, q, int, s, 64, 2, 0);
++  VDUP(vector, q, uint, u, 8, 16, 0);
++  VDUP(vector, q, uint, u, 16, 8, 0);
++  VDUP(vector, q, uint, u, 32, 4, 0);
++  VDUP(vector, q, uint, u, 64, 2, 0);
++
++  /* Choose init value arbitrarily, will be used as shift amount */
++  /* Use values equal to or one-less-than the type width to check
++     behaviour on limits.  */
++  VDUP(vector_shift, , int, s, 8, 8, 7);
++  VDUP(vector_shift, , int, s, 16, 4, 15);
++  VDUP(vector_shift, , int, s, 32, 2, 31);
++  VDUP(vector_shift, , int, s, 64, 1, 63);
++  VDUP(vector_shift, q, int, s, 8, 16, 8);
++  VDUP(vector_shift, q, int, s, 16, 8, 16);
++  VDUP(vector_shift, q, int, s, 32, 4, 32);
++  VDUP(vector_shift, q, int, s, 64, 2, 64);
++
++#define CMT " (with input = 0)"
++  TEST_VQRSHL(int, , int, s, 8, 8, expected_cumulative_sat_0, CMT);
++  TEST_VQRSHL(int, , int, s, 16, 4, expected_cumulative_sat_0, CMT);
++  TEST_VQRSHL(int, , int, s, 32, 2, expected_cumulative_sat_0, CMT);
++  TEST_VQRSHL(int, , int, s, 64, 1, expected_cumulative_sat_0, CMT);
++  TEST_VQRSHL(int, , uint, u, 8, 8, expected_cumulative_sat_0, CMT);
++  TEST_VQRSHL(int, , uint, u, 16, 4, expected_cumulative_sat_0, CMT);
++  TEST_VQRSHL(int, , uint, u, 32, 2, expected_cumulative_sat_0, CMT);
++  TEST_VQRSHL(int, , uint, u, 64, 1, expected_cumulative_sat_0, CMT);
++  TEST_VQRSHL(int, q, int, s, 8, 16, expected_cumulative_sat_0, CMT);
++  TEST_VQRSHL(int, q, int, s, 16, 8, expected_cumulative_sat_0, CMT);
++  TEST_VQRSHL(int, q, int, s, 32, 4, expected_cumulative_sat_0, CMT);
++  TEST_VQRSHL(int, q, int, s, 64, 2, expected_cumulative_sat_0, CMT);
++  TEST_VQRSHL(int, q, uint, u, 8, 16, expected_cumulative_sat_0, CMT);
++  TEST_VQRSHL(int, q, uint, u, 16, 8, expected_cumulative_sat_0, CMT);
++  TEST_VQRSHL(int, q, uint, u, 32, 4, expected_cumulative_sat_0, CMT);
++  TEST_VQRSHL(int, q, uint, u, 64, 2, expected_cumulative_sat_0, CMT);
++
++  CHECK(TEST_MSG, int, 8, 8, PRIx8, expected_0, CMT);
++  CHECK(TEST_MSG, int, 16, 4, PRIx16, expected_0, CMT);
++  CHECK(TEST_MSG, int, 32, 2, PRIx32, expected_0, CMT);
++  CHECK(TEST_MSG, int, 64, 1, PRIx64, expected_0, CMT);
++  CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected_0, CMT);
++  CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected_0, CMT);
++  CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected_0, CMT);
++  CHECK(TEST_MSG, uint, 64, 1, PRIx64, expected_0, CMT);
++  CHECK(TEST_MSG, int, 8, 16, PRIx8, expected_0, CMT);
++  CHECK(TEST_MSG, int, 16, 8, PRIx16, expected_0, CMT);
++  CHECK(TEST_MSG, int, 32, 4, PRIx32, expected_0, CMT);
++  CHECK(TEST_MSG, int, 64, 2, PRIx64, expected_0, CMT);
++  CHECK(TEST_MSG, uint, 8, 16, PRIx8, expected_0, CMT);
++  CHECK(TEST_MSG, uint, 16, 8, PRIx16, expected_0, CMT);
++  CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected_0, CMT);
++  CHECK(TEST_MSG, uint, 64, 2, PRIx64, expected_0, CMT);
++
++
++  /* Use negative shift amounts.  */
++  VDUP(vector_shift, , int, s, 8, 8, -1);
++  VDUP(vector_shift, , int, s, 16, 4, -2);
++  VDUP(vector_shift, , int, s, 32, 2, -3);
++  VDUP(vector_shift, , int, s, 64, 1, -4);
++  VDUP(vector_shift, q, int, s, 8, 16, -7);
++  VDUP(vector_shift, q, int, s, 16, 8, -11);
++  VDUP(vector_shift, q, int, s, 32, 4, -13);
++  VDUP(vector_shift, q, int, s, 64, 2, -20);
++
++#undef CMT
++#define CMT " (input 0 and negative shift amount)"
++  TEST_VQRSHL(int, , int, s, 8, 8, expected_cumulative_sat_0_neg, CMT);
++  TEST_VQRSHL(int, , int, s, 16, 4, expected_cumulative_sat_0_neg, CMT);
++  TEST_VQRSHL(int, , int, s, 32, 2, expected_cumulative_sat_0_neg, CMT);
++  TEST_VQRSHL(int, , int, s, 64, 1, expected_cumulative_sat_0_neg, CMT);
++  TEST_VQRSHL(int, , uint, u, 8, 8, expected_cumulative_sat_0_neg, CMT);
++  TEST_VQRSHL(int, , uint, u, 16, 4, expected_cumulative_sat_0_neg, CMT);
++  TEST_VQRSHL(int, , uint, u, 32, 2, expected_cumulative_sat_0_neg, CMT);
++  TEST_VQRSHL(int, , uint, u, 64, 1, expected_cumulative_sat_0_neg, CMT);
++  TEST_VQRSHL(int, q, int, s, 8, 16, expected_cumulative_sat_0_neg, CMT);
++  TEST_VQRSHL(int, q, int, s, 16, 8, expected_cumulative_sat_0_neg, CMT);
++  TEST_VQRSHL(int, q, int, s, 32, 4, expected_cumulative_sat_0_neg, CMT);
++  TEST_VQRSHL(int, q, int, s, 64, 2, expected_cumulative_sat_0_neg, CMT);
++  TEST_VQRSHL(int, q, uint, u, 8, 16, expected_cumulative_sat_0_neg, CMT);
++  TEST_VQRSHL(int, q, uint, u, 16, 8, expected_cumulative_sat_0_neg, CMT);
++  TEST_VQRSHL(int, q, uint, u, 32, 4, expected_cumulative_sat_0_neg, CMT);
++  TEST_VQRSHL(int, q, uint, u, 64, 2, expected_cumulative_sat_0_neg, CMT);
++
++  CHECK(TEST_MSG, int, 8, 8, PRIx8, expected_0_neg, CMT);
++  CHECK(TEST_MSG, int, 16, 4, PRIx16, expected_0_neg, CMT);
++  CHECK(TEST_MSG, int, 32, 2, PRIx32, expected_0_neg, CMT);
++  CHECK(TEST_MSG, int, 64, 1, PRIx64, expected_0_neg, CMT);
++  CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected_0_neg, CMT);
++  CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected_0_neg, CMT);
++  CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected_0_neg, CMT);
++  CHECK(TEST_MSG, uint, 64, 1, PRIx64, expected_0_neg, CMT);
++  CHECK(TEST_MSG, int, 8, 16, PRIx8, expected_0_neg, CMT);
++  CHECK(TEST_MSG, int, 16, 8, PRIx16, expected_0_neg, CMT);
++  CHECK(TEST_MSG, int, 32, 4, PRIx32, expected_0_neg, CMT);
++  CHECK(TEST_MSG, int, 64, 2, PRIx64, expected_0_neg, CMT);
++  CHECK(TEST_MSG, uint, 8, 16, PRIx8, expected_0_neg, CMT);
++  CHECK(TEST_MSG, uint, 16, 8, PRIx16, expected_0_neg, CMT);
++  CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected_0_neg, CMT);
++  CHECK(TEST_MSG, uint, 64, 2, PRIx64, expected_0_neg, CMT);
++
++
++  /* Test again, with predefined input values.  */
++  TEST_MACRO_ALL_VARIANTS_2_5(VLOAD, vector, buffer);
++
++  /* Choose init value arbitrarily, will be used as shift amount.  */
++  VDUP(vector_shift, , int, s, 8, 8, 1);
++  VDUP(vector_shift, , int, s, 16, 4, 3);
++  VDUP(vector_shift, , int, s, 32, 2, 8);
++  VDUP(vector_shift, , int, s, 64, 1, 3);
++  VDUP(vector_shift, q, int, s, 8, 16, 10);
++  VDUP(vector_shift, q, int, s, 16, 8, 12);
++  VDUP(vector_shift, q, int, s, 32, 4, 31);
++  VDUP(vector_shift, q, int, s, 64, 2, 63);
++
++#undef CMT
++#define CMT ""
++  TEST_VQRSHL(int, , int, s, 8, 8, expected_cumulative_sat, CMT);
++  TEST_VQRSHL(int, , int, s, 16, 4, expected_cumulative_sat, CMT);
++  TEST_VQRSHL(int, , int, s, 32, 2, expected_cumulative_sat, CMT);
++  TEST_VQRSHL(int, , int, s, 64, 1, expected_cumulative_sat, CMT);
++  TEST_VQRSHL(int, , uint, u, 8, 8, expected_cumulative_sat, CMT);
++  TEST_VQRSHL(int, , uint, u, 16, 4, expected_cumulative_sat, CMT);
++  TEST_VQRSHL(int, , uint, u, 32, 2, expected_cumulative_sat, CMT);
++  TEST_VQRSHL(int, , uint, u, 64, 1, expected_cumulative_sat, CMT);
++  TEST_VQRSHL(int, q, int, s, 8, 16, expected_cumulative_sat, CMT);
++  TEST_VQRSHL(int, q, int, s, 16, 8, expected_cumulative_sat, CMT);
++  TEST_VQRSHL(int, q, int, s, 32, 4, expected_cumulative_sat, CMT);
++  TEST_VQRSHL(int, q, int, s, 64, 2, expected_cumulative_sat, CMT);
++  TEST_VQRSHL(int, q, uint, u, 8, 16, expected_cumulative_sat, CMT);
++  TEST_VQRSHL(int, q, uint, u, 16, 8, expected_cumulative_sat, CMT);
++  TEST_VQRSHL(int, q, uint, u, 32, 4, expected_cumulative_sat, CMT);
++  TEST_VQRSHL(int, q, uint, u, 64, 2, expected_cumulative_sat, CMT);
++
++  CHECK(TEST_MSG, int, 8, 8, PRIx8, expected, CMT);
++  CHECK(TEST_MSG, int, 16, 4, PRIx16, expected, CMT);
++  CHECK(TEST_MSG, int, 32, 2, PRIx32, expected, CMT);
++  CHECK(TEST_MSG, int, 64, 1, PRIx64, expected, CMT);
++  CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected, CMT);
++  CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected, CMT);
++  CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected, CMT);
++  CHECK(TEST_MSG, uint, 64, 1, PRIx64, expected, CMT);
++  CHECK(TEST_MSG, int, 8, 16, PRIx8, expected, CMT);
++  CHECK(TEST_MSG, int, 16, 8, PRIx16, expected, CMT);
++  CHECK(TEST_MSG, int, 32, 4, PRIx32, expected, CMT);
++  CHECK(TEST_MSG, int, 64, 2, PRIx64, expected, CMT);
++  CHECK(TEST_MSG, uint, 8, 16, PRIx8, expected, CMT);
++  CHECK(TEST_MSG, uint, 16, 8, PRIx16, expected, CMT);
++  CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected, CMT);
++  CHECK(TEST_MSG, uint, 64, 2, PRIx64, expected, CMT);
++
++
++  /* Use negative shift amounts.  */
++  VDUP(vector_shift, , int, s, 8, 8, -2);
++  VDUP(vector_shift, , int, s, 16, 4, -2);
++  VDUP(vector_shift, , int, s, 32, 2, -3);
++  VDUP(vector_shift, , int, s, 64, 1, -4);
++  VDUP(vector_shift, q, int, s, 8, 16, -7);
++  VDUP(vector_shift, q, int, s, 16, 8, -11);
++  VDUP(vector_shift, q, int, s, 32, 4, -13);
++  VDUP(vector_shift, q, int, s, 64, 2, -20);
++
++#undef CMT
++#define CMT " (negative shift amount)"
++  TEST_VQRSHL(int, , int, s, 8, 8, expected_cumulative_sat_neg, CMT);
++  TEST_VQRSHL(int, , int, s, 16, 4, expected_cumulative_sat_neg, CMT);
++  TEST_VQRSHL(int, , int, s, 32, 2, expected_cumulative_sat_neg, CMT);
++  TEST_VQRSHL(int, , int, s, 64, 1, expected_cumulative_sat_neg, CMT);
++  TEST_VQRSHL(int, , uint, u, 8, 8, expected_cumulative_sat_neg, CMT);
++  TEST_VQRSHL(int, , uint, u, 16, 4, expected_cumulative_sat_neg, CMT);
++  TEST_VQRSHL(int, , uint, u, 32, 2, expected_cumulative_sat_neg, CMT);
++  TEST_VQRSHL(int, , uint, u, 64, 1, expected_cumulative_sat_neg, CMT);
++  TEST_VQRSHL(int, q, int, s, 8, 16, expected_cumulative_sat_neg, CMT);
++  TEST_VQRSHL(int, q, int, s, 16, 8, expected_cumulative_sat_neg, CMT);
++  TEST_VQRSHL(int, q, int, s, 32, 4, expected_cumulative_sat_neg, CMT);
++  TEST_VQRSHL(int, q, int, s, 64, 2, expected_cumulative_sat_neg, CMT);
++  TEST_VQRSHL(int, q, uint, u, 8, 16, expected_cumulative_sat_neg, CMT);
++  TEST_VQRSHL(int, q, uint, u, 16, 8, expected_cumulative_sat_neg, CMT);
++  TEST_VQRSHL(int, q, uint, u, 32, 4, expected_cumulative_sat_neg, CMT);
++  TEST_VQRSHL(int, q, uint, u, 64, 2, expected_cumulative_sat_neg, CMT);
++
++  CHECK(TEST_MSG, int, 8, 8, PRIx8, expected_neg, CMT);
++  CHECK(TEST_MSG, int, 16, 4, PRIx16, expected_neg, CMT);
++  CHECK(TEST_MSG, int, 32, 2, PRIx32, expected_neg, CMT);
++  CHECK(TEST_MSG, int, 64, 1, PRIx64, expected_neg, CMT);
++  CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected_neg, CMT);
++  CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected_neg, CMT);
++  CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected_neg, CMT);
++  CHECK(TEST_MSG, uint, 64, 1, PRIx64, expected_neg, CMT);
++  CHECK(TEST_MSG, int, 8, 16, PRIx8, expected_neg, CMT);
++  CHECK(TEST_MSG, int, 16, 8, PRIx16, expected_neg, CMT);
++  CHECK(TEST_MSG, int, 32, 4, PRIx32, expected_neg, CMT);
++  CHECK(TEST_MSG, int, 64, 2, PRIx64, expected_neg, CMT);
++  CHECK(TEST_MSG, uint, 8, 16, PRIx8, expected_neg, CMT);
++  CHECK(TEST_MSG, uint, 16, 8, PRIx16, expected_neg, CMT);
++  CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected_neg, CMT);
++  CHECK(TEST_MSG, uint, 64, 2, PRIx64, expected_neg, CMT);
++
++
++  /* Fill input vector with max value, to check saturation on
++     limits.  */
++  VDUP(vector, , int, s, 8, 8, 0x7F);
++  VDUP(vector, , int, s, 16, 4, 0x7FFF);
++  VDUP(vector, , int, s, 32, 2, 0x7FFFFFFF);
++  VDUP(vector, , int, s, 64, 1, 0x7FFFFFFFFFFFFFFFLL);
++  VDUP(vector, , uint, u, 8, 8, 0xFF);
++  VDUP(vector, , uint, u, 16, 4, 0xFFFF);
++  VDUP(vector, , uint, u, 32, 2, 0xFFFFFFFF);
++  VDUP(vector, , uint, u, 64, 1, 0xFFFFFFFFFFFFFFFFULL);
++  VDUP(vector, q, int, s, 8, 16, 0x7F);
++  VDUP(vector, q, int, s, 16, 8, 0x7FFF);
++  VDUP(vector, q, int, s, 32, 4, 0x7FFFFFFF);
++  VDUP(vector, q, int, s, 64, 2, 0x7FFFFFFFFFFFFFFFLL);
++  VDUP(vector, q, uint, u, 8, 16, 0xFF);
++  VDUP(vector, q, uint, u, 16, 8, 0xFFFF);
++  VDUP(vector, q, uint, u, 32, 4, 0xFFFFFFFF);
++  VDUP(vector, q, uint, u, 64, 2, 0xFFFFFFFFFFFFFFFFULL);
++
++  /* Use -1 shift amount to check cumulative saturation with
++     round_const.  */
++  VDUP(vector_shift, , int, s, 8, 8, -1);
++  VDUP(vector_shift, , int, s, 16, 4, -1);
++  VDUP(vector_shift, , int, s, 32, 2, -1);
++  VDUP(vector_shift, , int, s, 64, 1, -1);
++  VDUP(vector_shift, q, int, s, 8, 16, -1);
++  VDUP(vector_shift, q, int, s, 16, 8, -1);
++  VDUP(vector_shift, q, int, s, 32, 4, -1);
++  VDUP(vector_shift, q, int, s, 64, 2, -1);
++
++#undef CMT
++#define CMT " (checking cumulative saturation: shift by -1)"
++  TEST_VQRSHL(int, , int, s, 8, 8, expected_cumulative_sat_minus1, CMT);
++  TEST_VQRSHL(int, , int, s, 16, 4, expected_cumulative_sat_minus1, CMT);
++  TEST_VQRSHL(int, , int, s, 32, 2, expected_cumulative_sat_minus1, CMT);
++  TEST_VQRSHL(int, , int, s, 64, 1, expected_cumulative_sat_minus1, CMT);
++  TEST_VQRSHL(int, , uint, u, 8, 8, expected_cumulative_sat_minus1, CMT);
++  TEST_VQRSHL(int, , uint, u, 16, 4, expected_cumulative_sat_minus1, CMT);
++  TEST_VQRSHL(int, , uint, u, 32, 2, expected_cumulative_sat_minus1, CMT);
++  TEST_VQRSHL(int, , uint, u, 64, 1, expected_cumulative_sat_minus1, CMT);
++  TEST_VQRSHL(int, q, int, s, 8, 16, expected_cumulative_sat_minus1, CMT);
++  TEST_VQRSHL(int, q, int, s, 16, 8, expected_cumulative_sat_minus1, CMT);
++  TEST_VQRSHL(int, q, int, s, 32, 4, expected_cumulative_sat_minus1, CMT);
++  TEST_VQRSHL(int, q, int, s, 64, 2, expected_cumulative_sat_minus1, CMT);
++  TEST_VQRSHL(int, q, uint, u, 8, 16, expected_cumulative_sat_minus1, CMT);
++  TEST_VQRSHL(int, q, uint, u, 16, 8, expected_cumulative_sat_minus1, CMT);
++  TEST_VQRSHL(int, q, uint, u, 32, 4, expected_cumulative_sat_minus1, CMT);
++  TEST_VQRSHL(int, q, uint, u, 64, 2, expected_cumulative_sat_minus1, CMT);
++
++  CHECK(TEST_MSG, int, 8, 8, PRIx8, expected_minus1, CMT);
++  CHECK(TEST_MSG, int, 16, 4, PRIx16, expected_minus1, CMT);
++  CHECK(TEST_MSG, int, 32, 2, PRIx32, expected_minus1, CMT);
++  CHECK(TEST_MSG, int, 64, 1, PRIx64, expected_minus1, CMT);
++  CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected_minus1, CMT);
++  CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected_minus1, CMT);
++  CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected_minus1, CMT);
++  CHECK(TEST_MSG, uint, 64, 1, PRIx64, expected_minus1, CMT);
++  CHECK(TEST_MSG, int, 8, 16, PRIx8, expected_minus1, CMT);
++  CHECK(TEST_MSG, int, 16, 8, PRIx16, expected_minus1, CMT);
++  CHECK(TEST_MSG, int, 32, 4, PRIx32, expected_minus1, CMT);
++  CHECK(TEST_MSG, int, 64, 2, PRIx64, expected_minus1, CMT);
++  CHECK(TEST_MSG, uint, 8, 16, PRIx8, expected_minus1, CMT);
++  CHECK(TEST_MSG, uint, 16, 8, PRIx16, expected_minus1, CMT);
++  CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected_minus1, CMT);
++  CHECK(TEST_MSG, uint, 64, 2, PRIx64, expected_minus1, CMT);
++
++
++  /* Use -3 shift amount to check cumulative saturation with
++     round_const. */
++  VDUP(vector_shift, , int, s, 8, 8, -3);
++  VDUP(vector_shift, , int, s, 16, 4, -3);
++  VDUP(vector_shift, , int, s, 32, 2, -3);
++  VDUP(vector_shift, , int, s, 64, 1, -3);
++  VDUP(vector_shift, q, int, s, 8, 16, -3);
++  VDUP(vector_shift, q, int, s, 16, 8, -3);
++  VDUP(vector_shift, q, int, s, 32, 4, -3);
++  VDUP(vector_shift, q, int, s, 64, 2, -3);
++
++#undef CMT
++#define CMT " (checking cumulative saturation: shift by -3)"
++  TEST_VQRSHL(int, , int, s, 8, 8, expected_cumulative_sat_minus3, CMT);
++  TEST_VQRSHL(int, , int, s, 16, 4, expected_cumulative_sat_minus3, CMT);
++  TEST_VQRSHL(int, , int, s, 32, 2, expected_cumulative_sat_minus3, CMT);
++  TEST_VQRSHL(int, , int, s, 64, 1, expected_cumulative_sat_minus3, CMT);
++  TEST_VQRSHL(int, , uint, u, 8, 8, expected_cumulative_sat_minus3, CMT);
++  TEST_VQRSHL(int, , uint, u, 16, 4, expected_cumulative_sat_minus3, CMT);
++  TEST_VQRSHL(int, , uint, u, 32, 2, expected_cumulative_sat_minus3, CMT);
++  TEST_VQRSHL(int, , uint, u, 64, 1, expected_cumulative_sat_minus3, CMT);
++  TEST_VQRSHL(int, q, int, s, 8, 16, expected_cumulative_sat_minus3, CMT);
++  TEST_VQRSHL(int, q, int, s, 16, 8, expected_cumulative_sat_minus3, CMT);
++  TEST_VQRSHL(int, q, int, s, 32, 4, expected_cumulative_sat_minus3, CMT);
++  TEST_VQRSHL(int, q, int, s, 64, 2, expected_cumulative_sat_minus3, CMT);
++  TEST_VQRSHL(int, q, uint, u, 8, 16, expected_cumulative_sat_minus3, CMT);
++  TEST_VQRSHL(int, q, uint, u, 16, 8, expected_cumulative_sat_minus3, CMT);
++  TEST_VQRSHL(int, q, uint, u, 32, 4, expected_cumulative_sat_minus3, CMT);
++  TEST_VQRSHL(int, q, uint, u, 64, 2, expected_cumulative_sat_minus3, CMT);
++
++  CHECK(TEST_MSG, int, 8, 8, PRIx8, expected_minus3, CMT);
++  CHECK(TEST_MSG, int, 16, 4, PRIx16, expected_minus3, CMT);
++  CHECK(TEST_MSG, int, 32, 2, PRIx32, expected_minus3, CMT);
++  CHECK(TEST_MSG, int, 64, 1, PRIx64, expected_minus3, CMT);
++  CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected_minus3, CMT);
++  CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected_minus3, CMT);
++  CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected_minus3, CMT);
++  CHECK(TEST_MSG, uint, 64, 1, PRIx64, expected_minus3, CMT);
++  CHECK(TEST_MSG, int, 8, 16, PRIx8, expected_minus3, CMT);
++  CHECK(TEST_MSG, int, 16, 8, PRIx16, expected_minus3, CMT);
++  CHECK(TEST_MSG, int, 32, 4, PRIx32, expected_minus3, CMT);
++  CHECK(TEST_MSG, int, 64, 2, PRIx64, expected_minus3, CMT);
++  CHECK(TEST_MSG, uint, 8, 16, PRIx8, expected_minus3, CMT);
++  CHECK(TEST_MSG, uint, 16, 8, PRIx16, expected_minus3, CMT);
++  CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected_minus3, CMT);
++  CHECK(TEST_MSG, uint, 64, 2, PRIx64, expected_minus3, CMT);
++
++
++  /* Use large shift amount.  */
++  VDUP(vector_shift, , int, s, 8, 8, 10);
++  VDUP(vector_shift, , int, s, 16, 4, 20);
++  VDUP(vector_shift, , int, s, 32, 2, 40);
++  VDUP(vector_shift, , int, s, 64, 1, 70);
++  VDUP(vector_shift, q, int, s, 8, 16, 10);
++  VDUP(vector_shift, q, int, s, 16, 8, 20);
++  VDUP(vector_shift, q, int, s, 32, 4, 40);
++  VDUP(vector_shift, q, int, s, 64, 2, 70);
++
++#undef CMT
++#define CMT " (checking cumulative saturation: large shift amount)"
++  TEST_VQRSHL(int, , int, s, 8, 8, expected_cumulative_sat_large_sh, CMT);
++  TEST_VQRSHL(int, , int, s, 16, 4, expected_cumulative_sat_large_sh, CMT);
++  TEST_VQRSHL(int, , int, s, 32, 2, expected_cumulative_sat_large_sh, CMT);
++  TEST_VQRSHL(int, , int, s, 64, 1, expected_cumulative_sat_large_sh, CMT);
++  TEST_VQRSHL(int, , uint, u, 8, 8, expected_cumulative_sat_large_sh, CMT);
++  TEST_VQRSHL(int, , uint, u, 16, 4, expected_cumulative_sat_large_sh, CMT);
++  TEST_VQRSHL(int, , uint, u, 32, 2, expected_cumulative_sat_large_sh, CMT);
++  TEST_VQRSHL(int, , uint, u, 64, 1, expected_cumulative_sat_large_sh, CMT);
++  TEST_VQRSHL(int, q, int, s, 8, 16, expected_cumulative_sat_large_sh, CMT);
++  TEST_VQRSHL(int, q, int, s, 16, 8, expected_cumulative_sat_large_sh, CMT);
++  TEST_VQRSHL(int, q, int, s, 32, 4, expected_cumulative_sat_large_sh, CMT);
++  TEST_VQRSHL(int, q, int, s, 64, 2, expected_cumulative_sat_large_sh, CMT);
++  TEST_VQRSHL(int, q, uint, u, 8, 16, expected_cumulative_sat_large_sh, CMT);
++  TEST_VQRSHL(int, q, uint, u, 16, 8, expected_cumulative_sat_large_sh, CMT);
++  TEST_VQRSHL(int, q, uint, u, 32, 4, expected_cumulative_sat_large_sh, CMT);
++  TEST_VQRSHL(int, q, uint, u, 64, 2, expected_cumulative_sat_large_sh, CMT);
++
++  CHECK(TEST_MSG, int, 8, 8, PRIx8, expected_large_sh, CMT);
++  CHECK(TEST_MSG, int, 16, 4, PRIx16, expected_large_sh, CMT);
++  CHECK(TEST_MSG, int, 32, 2, PRIx32, expected_large_sh, CMT);
++  CHECK(TEST_MSG, int, 64, 1, PRIx64, expected_large_sh, CMT);
++  CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected_large_sh, CMT);
++  CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected_large_sh, CMT);
++  CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected_large_sh, CMT);
++  CHECK(TEST_MSG, uint, 64, 1, PRIx64, expected_large_sh, CMT);
++  CHECK(TEST_MSG, int, 8, 16, PRIx8, expected_large_sh, CMT);
++  CHECK(TEST_MSG, int, 16, 8, PRIx16, expected_large_sh, CMT);
++  CHECK(TEST_MSG, int, 32, 4, PRIx32, expected_large_sh, CMT);
++  CHECK(TEST_MSG, int, 64, 2, PRIx64, expected_large_sh, CMT);
++  CHECK(TEST_MSG, uint, 8, 16, PRIx8, expected_large_sh, CMT);
++  CHECK(TEST_MSG, uint, 16, 8, PRIx16, expected_large_sh, CMT);
++  CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected_large_sh, CMT);
++  CHECK(TEST_MSG, uint, 64, 2, PRIx64, expected_large_sh, CMT);
++
++
++  /* Fill input vector with negative values, to check saturation on
++     limits.  */
++  VDUP(vector, , int, s, 8, 8, 0x80);
++  VDUP(vector, , int, s, 16, 4, 0x8000);
++  VDUP(vector, , int, s, 32, 2, 0x80000000);
++  VDUP(vector, , int, s, 64, 1, 0x8000000000000000LL);
++  VDUP(vector, q, int, s, 8, 16, 0x80);
++  VDUP(vector, q, int, s, 16, 8, 0x8000);
++  VDUP(vector, q, int, s, 32, 4, 0x80000000);
++  VDUP(vector, q, int, s, 64, 2, 0x8000000000000000LL);
++
++  /* Use large shift amount.  */
++  VDUP(vector_shift, , int, s, 8, 8, 10);
++  VDUP(vector_shift, , int, s, 16, 4, 20);
++  VDUP(vector_shift, , int, s, 32, 2, 40);
++  VDUP(vector_shift, , int, s, 64, 1, 70);
++  VDUP(vector_shift, q, int, s, 8, 16, 10);
++  VDUP(vector_shift, q, int, s, 16, 8, 20);
++  VDUP(vector_shift, q, int, s, 32, 4, 40);
++  VDUP(vector_shift, q, int, s, 64, 2, 70);
++
++#undef CMT
++#define CMT " (checking cumulative saturation: large shift amount with negative input)"
++  TEST_VQRSHL(int, , int, s, 8, 8, expected_cumulative_sat_neg_large_sh, CMT);
++  TEST_VQRSHL(int, , int, s, 16, 4, expected_cumulative_sat_neg_large_sh, CMT);
++  TEST_VQRSHL(int, , int, s, 32, 2, expected_cumulative_sat_neg_large_sh, CMT);
++  TEST_VQRSHL(int, , int, s, 64, 1, expected_cumulative_sat_neg_large_sh, CMT);
++  TEST_VQRSHL(int, , uint, u, 8, 8, expected_cumulative_sat_neg_large_sh, CMT);
++  TEST_VQRSHL(int, , uint, u, 16, 4, expected_cumulative_sat_neg_large_sh, CMT);
++  TEST_VQRSHL(int, , uint, u, 32, 2, expected_cumulative_sat_neg_large_sh, CMT);
++  TEST_VQRSHL(int, , uint, u, 64, 1, expected_cumulative_sat_neg_large_sh, CMT);
++  TEST_VQRSHL(int, q, int, s, 8, 16, expected_cumulative_sat_neg_large_sh, CMT);
++  TEST_VQRSHL(int, q, int, s, 16, 8, expected_cumulative_sat_neg_large_sh, CMT);
++  TEST_VQRSHL(int, q, int, s, 32, 4, expected_cumulative_sat_neg_large_sh, CMT);
++  TEST_VQRSHL(int, q, int, s, 64, 2, expected_cumulative_sat_neg_large_sh, CMT);
++  TEST_VQRSHL(int, q, uint, u, 8, 16, expected_cumulative_sat_neg_large_sh, CMT);
++  TEST_VQRSHL(int, q, uint, u, 16, 8, expected_cumulative_sat_neg_large_sh, CMT);
++  TEST_VQRSHL(int, q, uint, u, 32, 4, expected_cumulative_sat_neg_large_sh, CMT);
++  TEST_VQRSHL(int, q, uint, u, 64, 2, expected_cumulative_sat_neg_large_sh, CMT);
++
++  CHECK(TEST_MSG, int, 8, 8, PRIx8, expected_neg_large_sh, CMT);
++  CHECK(TEST_MSG, int, 16, 4, PRIx16, expected_neg_large_sh, CMT);
++  CHECK(TEST_MSG, int, 32, 2, PRIx32, expected_neg_large_sh, CMT);
++  CHECK(TEST_MSG, int, 64, 1, PRIx64, expected_neg_large_sh, CMT);
++  CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected_neg_large_sh, CMT);
++  CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected_neg_large_sh, CMT);
++  CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected_neg_large_sh, CMT);
++  CHECK(TEST_MSG, uint, 64, 1, PRIx64, expected_neg_large_sh, CMT);
++  CHECK(TEST_MSG, int, 8, 16, PRIx8, expected_neg_large_sh, CMT);
++  CHECK(TEST_MSG, int, 16, 8, PRIx16, expected_neg_large_sh, CMT);
++  CHECK(TEST_MSG, int, 32, 4, PRIx32, expected_neg_large_sh, CMT);
++  CHECK(TEST_MSG, int, 64, 2, PRIx64, expected_neg_large_sh, CMT);
++  CHECK(TEST_MSG, uint, 8, 16, PRIx8, expected_neg_large_sh, CMT);
++  CHECK(TEST_MSG, uint, 16, 8, PRIx16, expected_neg_large_sh, CMT);
++  CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected_neg_large_sh, CMT);
++  CHECK(TEST_MSG, uint, 64, 2, PRIx64, expected_neg_large_sh, CMT);
++
++
++  /* Fill input vector with negative and positive values, to check
++   * saturation on limits */
++  VDUP(vector, , int, s, 8, 8, 0x7F);
++  VDUP(vector, , int, s, 16, 4, 0x7FFF);
++  VDUP(vector, , int, s, 32, 2, 0x7FFFFFFF);
++  VDUP(vector, , int, s, 64, 1, 0x7FFFFFFFFFFFFFFFLL);
++  VDUP(vector, q, int, s, 8, 16, 0x80);
++  VDUP(vector, q, int, s, 16, 8, 0x8000);
++  VDUP(vector, q, int, s, 32, 4, 0x80000000);
++  VDUP(vector, q, int, s, 64, 2, 0x8000000000000000LL);
++
++  /* Use large negative shift amount  */
++  VDUP(vector_shift, , int, s, 8, 8, -10);
++  VDUP(vector_shift, , int, s, 16, 4, -20);
++  VDUP(vector_shift, , int, s, 32, 2, -40);
++  VDUP(vector_shift, , int, s, 64, 1, -70);
++  VDUP(vector_shift, q, int, s, 8, 16, -10);
++  VDUP(vector_shift, q, int, s, 16, 8, -20);
++  VDUP(vector_shift, q, int, s, 32, 4, -40);
++  VDUP(vector_shift, q, int, s, 64, 2, -70);
++
++#undef CMT
++#define CMT " (checking cumulative saturation: large negative shift amount)"
++  TEST_VQRSHL(int, , int, s, 8, 8, expected_cumulative_sat_large_neg_sh, CMT);
++  TEST_VQRSHL(int, , int, s, 16, 4, expected_cumulative_sat_large_neg_sh, CMT);
++  TEST_VQRSHL(int, , int, s, 32, 2, expected_cumulative_sat_large_neg_sh, CMT);
++  TEST_VQRSHL(int, , int, s, 64, 1, expected_cumulative_sat_large_neg_sh, CMT);
++  TEST_VQRSHL(int, , uint, u, 8, 8, expected_cumulative_sat_large_neg_sh, CMT);
++  TEST_VQRSHL(int, , uint, u, 16, 4, expected_cumulative_sat_large_neg_sh, CMT);
++  TEST_VQRSHL(int, , uint, u, 32, 2, expected_cumulative_sat_large_neg_sh, CMT);
++  TEST_VQRSHL(int, , uint, u, 64, 1, expected_cumulative_sat_large_neg_sh, CMT);
++  TEST_VQRSHL(int, q, int, s, 8, 16, expected_cumulative_sat_large_neg_sh, CMT);
++  TEST_VQRSHL(int, q, int, s, 16, 8, expected_cumulative_sat_large_neg_sh, CMT);
++  TEST_VQRSHL(int, q, int, s, 32, 4, expected_cumulative_sat_large_neg_sh, CMT);
++  TEST_VQRSHL(int, q, int, s, 64, 2, expected_cumulative_sat_large_neg_sh, CMT);
++  TEST_VQRSHL(int, q, uint, u, 8, 16, expected_cumulative_sat_large_neg_sh, CMT);
++  TEST_VQRSHL(int, q, uint, u, 16, 8, expected_cumulative_sat_large_neg_sh, CMT);
++  TEST_VQRSHL(int, q, uint, u, 32, 4, expected_cumulative_sat_large_neg_sh, CMT);
++  TEST_VQRSHL(int, q, uint, u, 64, 2, expected_cumulative_sat_large_neg_sh, CMT);
++
++  CHECK(TEST_MSG, int, 8, 8, PRIx8, expected_large_neg_sh, CMT);
++  CHECK(TEST_MSG, int, 16, 4, PRIx16, expected_large_neg_sh, CMT);
++  CHECK(TEST_MSG, int, 32, 2, PRIx32, expected_large_neg_sh, CMT);
++  CHECK(TEST_MSG, int, 64, 1, PRIx64, expected_large_neg_sh, CMT);
++  CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected_large_neg_sh, CMT);
++  CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected_large_neg_sh, CMT);
++  CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected_large_neg_sh, CMT);
++  CHECK(TEST_MSG, uint, 64, 1, PRIx64, expected_large_neg_sh, CMT);
++  CHECK(TEST_MSG, int, 8, 16, PRIx8, expected_large_neg_sh, CMT);
++  CHECK(TEST_MSG, int, 16, 8, PRIx16, expected_large_neg_sh, CMT);
++  CHECK(TEST_MSG, int, 32, 4, PRIx32, expected_large_neg_sh, CMT);
++  CHECK(TEST_MSG, int, 64, 2, PRIx64, expected_large_neg_sh, CMT);
++  CHECK(TEST_MSG, uint, 8, 16, PRIx8, expected_large_neg_sh, CMT);
++  CHECK(TEST_MSG, uint, 16, 8, PRIx16, expected_large_neg_sh, CMT);
++  CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected_large_neg_sh, CMT);
++  CHECK(TEST_MSG, uint, 64, 2, PRIx64, expected_large_neg_sh, CMT);
++
++
++  /* Fill input vector with 0, to check saturation in case of large
++   * shift amount */
++  VDUP(vector, , int, s, 8, 8, 0);
++  VDUP(vector, , int, s, 16, 4, 0);
++  VDUP(vector, , int, s, 32, 2, 0);
++  VDUP(vector, , int, s, 64, 1, 0);
++  VDUP(vector, q, int, s, 8, 16, 0);
++  VDUP(vector, q, int, s, 16, 8, 0);
++  VDUP(vector, q, int, s, 32, 4, 0);
++  VDUP(vector, q, int, s, 64, 2, 0);
++
++  /* Use large shift amount  */
++  VDUP(vector_shift, , int, s, 8, 8, -10);
++  VDUP(vector_shift, , int, s, 16, 4, -20);
++  VDUP(vector_shift, , int, s, 32, 2, -40);
++  VDUP(vector_shift, , int, s, 64, 1, -70);
++  VDUP(vector_shift, q, int, s, 8, 16, -10);
++  VDUP(vector_shift, q, int, s, 16, 8, -20);
++  VDUP(vector_shift, q, int, s, 32, 4, -40);
++  VDUP(vector_shift, q, int, s, 64, 2, -70);
++
++#undef CMT
++#define CMT " (checking cumulative saturation: large negative shift amount with 0 input)"
++  TEST_VQRSHL(int, , int, s, 8, 8, expected_cumulative_sat_large_neg_sh, CMT);
++  TEST_VQRSHL(int, , int, s, 16, 4, expected_cumulative_sat_large_neg_sh, CMT);
++  TEST_VQRSHL(int, , int, s, 32, 2, expected_cumulative_sat_large_neg_sh, CMT);
++  TEST_VQRSHL(int, , int, s, 64, 1, expected_cumulative_sat_large_neg_sh, CMT);
++  TEST_VQRSHL(int, , uint, u, 8, 8, expected_cumulative_sat_large_neg_sh, CMT);
++  TEST_VQRSHL(int, , uint, u, 16, 4, expected_cumulative_sat_large_neg_sh, CMT);
++  TEST_VQRSHL(int, , uint, u, 32, 2, expected_cumulative_sat_large_neg_sh, CMT);
++  TEST_VQRSHL(int, , uint, u, 64, 1, expected_cumulative_sat_large_neg_sh, CMT);
++  TEST_VQRSHL(int, q, int, s, 8, 16, expected_cumulative_sat_large_neg_sh, CMT);
++  TEST_VQRSHL(int, q, int, s, 16, 8, expected_cumulative_sat_large_neg_sh, CMT);
++  TEST_VQRSHL(int, q, int, s, 32, 4, expected_cumulative_sat_large_neg_sh, CMT);
++  TEST_VQRSHL(int, q, int, s, 64, 2, expected_cumulative_sat_large_neg_sh, CMT);
++  TEST_VQRSHL(int, q, uint, u, 8, 16, expected_cumulative_sat_large_neg_sh, CMT);
++  TEST_VQRSHL(int, q, uint, u, 16, 8, expected_cumulative_sat_large_neg_sh, CMT);
++  TEST_VQRSHL(int, q, uint, u, 32, 4, expected_cumulative_sat_large_neg_sh, CMT);
++  TEST_VQRSHL(int, q, uint, u, 64, 2, expected_cumulative_sat_large_neg_sh, CMT);
++
++  CHECK(TEST_MSG, int, 8, 8, PRIx8, expected_large_neg_sh, CMT);
++  CHECK(TEST_MSG, int, 16, 4, PRIx16, expected_large_neg_sh, CMT);
++  CHECK(TEST_MSG, int, 32, 2, PRIx32, expected_large_neg_sh, CMT);
++  CHECK(TEST_MSG, int, 64, 1, PRIx64, expected_large_neg_sh, CMT);
++  CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected_large_neg_sh, CMT);
++  CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected_large_neg_sh, CMT);
++  CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected_large_neg_sh, CMT);
++  CHECK(TEST_MSG, uint, 64, 1, PRIx64, expected_large_neg_sh, CMT);
++  CHECK(TEST_MSG, int, 8, 16, PRIx8, expected_large_neg_sh, CMT);
++  CHECK(TEST_MSG, int, 16, 8, PRIx16, expected_large_neg_sh, CMT);
++  CHECK(TEST_MSG, int, 32, 4, PRIx32, expected_large_neg_sh, CMT);
++  CHECK(TEST_MSG, int, 64, 2, PRIx64, expected_large_neg_sh, CMT);
++  CHECK(TEST_MSG, uint, 8, 16, PRIx8, expected_large_neg_sh, CMT);
++  CHECK(TEST_MSG, uint, 16, 8, PRIx16, expected_large_neg_sh, CMT);
++  CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected_large_neg_sh, CMT);
++  CHECK(TEST_MSG, uint, 64, 2, PRIx64, expected_large_neg_sh, CMT);
++}
++
++int main (void)
++{
++  exec_vqrshl ();
++  return 0;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqrshrn_n.c
+@@ -0,0 +1,174 @@
++#include <arm_neon.h>
++#include "arm-neon-ref.h"
++#include "compute-ref-data.h"
++
++/* Expected values of cumulative_saturation flag.  */
++int VECT_VAR(expected_cumulative_sat,int,16,8) = 0;
++int VECT_VAR(expected_cumulative_sat,int,32,4) = 0;
++int VECT_VAR(expected_cumulative_sat,int,64,2) = 0;
++int VECT_VAR(expected_cumulative_sat,uint,16,8) = 1;
++int VECT_VAR(expected_cumulative_sat,uint,32,4) = 1;
++int VECT_VAR(expected_cumulative_sat,uint,64,2) = 1;
++
++/* Expected results.  */
++VECT_VAR_DECL(expected,int,8,8) [] = { 0xf8, 0xf9, 0xf9, 0xfa,
++				       0xfa, 0xfb, 0xfb, 0xfc };
++VECT_VAR_DECL(expected,int,16,4) [] = { 0xfff8, 0xfff9, 0xfff9, 0xfffa };
++VECT_VAR_DECL(expected,int,32,2) [] = { 0xfffffffc, 0xfffffffc };
++VECT_VAR_DECL(expected,uint,8,8) [] = { 0xff, 0xff, 0xff, 0xff,
++					0xff, 0xff, 0xff, 0xff };
++VECT_VAR_DECL(expected,uint,16,4) [] = { 0xffff, 0xffff, 0xffff, 0xffff };
++VECT_VAR_DECL(expected,uint,32,2) [] = { 0xffffffff, 0xffffffff };
++
++/* Expected values of cumulative_saturation flag with shift by 3.  */
++int VECT_VAR(expected_cumulative_sat_sh3,int,16,8) = 1;
++int VECT_VAR(expected_cumulative_sat_sh3,int,32,4) = 1;
++int VECT_VAR(expected_cumulative_sat_sh3,int,64,2) = 1;
++int VECT_VAR(expected_cumulative_sat_sh3,uint,16,8) = 1;
++int VECT_VAR(expected_cumulative_sat_sh3,uint,32,4) = 1;
++int VECT_VAR(expected_cumulative_sat_sh3,uint,64,2) = 1;
++
++/* Expected results with shift by 3.  */
++VECT_VAR_DECL(expected_sh3,int,8,8) [] = { 0x7f, 0x7f, 0x7f, 0x7f,
++					   0x7f, 0x7f, 0x7f, 0x7f };
++VECT_VAR_DECL(expected_sh3,int,16,4) [] = { 0x7fff, 0x7fff, 0x7fff, 0x7fff };
++VECT_VAR_DECL(expected_sh3,int,32,2) [] = { 0x7fffffff, 0x7fffffff };
++VECT_VAR_DECL(expected_sh3,uint,8,8) [] = { 0xff, 0xff, 0xff, 0xff,
++					    0xff, 0xff, 0xff, 0xff };
++VECT_VAR_DECL(expected_sh3,uint,16,4) [] = { 0xffff, 0xffff, 0xffff, 0xffff };
++VECT_VAR_DECL(expected_sh3,uint,32,2) [] = { 0xffffffff, 0xffffffff };
++
++/* Expected values of cumulative_saturation flag with shift by max
++   amount.  */
++int VECT_VAR(expected_cumulative_sat_shmax,int,16,8) = 1;
++int VECT_VAR(expected_cumulative_sat_shmax,int,32,4) = 1;
++int VECT_VAR(expected_cumulative_sat_shmax,int,64,2) = 1;
++int VECT_VAR(expected_cumulative_sat_shmax,uint,16,8) = 1;
++int VECT_VAR(expected_cumulative_sat_shmax,uint,32,4) = 1;
++int VECT_VAR(expected_cumulative_sat_shmax,uint,64,2) = 1;
++
++/* Expected results with shift by max amount.  */
++VECT_VAR_DECL(expected_shmax,int,8,8) [] = { 0x7f, 0x7f, 0x7f, 0x7f,
++					     0x7f, 0x7f, 0x7f, 0x7f };
++VECT_VAR_DECL(expected_shmax,int,16,4) [] = { 0x7fff, 0x7fff, 0x7fff, 0x7fff };
++VECT_VAR_DECL(expected_shmax,int,32,2) [] = { 0x7fffffff, 0x7fffffff };
++VECT_VAR_DECL(expected_shmax,uint,8,8) [] = { 0xff, 0xff, 0xff, 0xff,
++					      0xff, 0xff, 0xff, 0xff };
++VECT_VAR_DECL(expected_shmax,uint,16,4) [] = { 0xffff, 0xffff, 0xffff, 0xffff };
++VECT_VAR_DECL(expected_shmax,uint,32,2) [] = { 0xffffffff, 0xffffffff };
++
++#define INSN vqrshrn_n
++#define TEST_MSG "VQRSHRN_N"
++
++#define FNNAME1(NAME) void exec_ ## NAME (void)
++#define FNNAME(NAME) FNNAME1(NAME)
++
++FNNAME (INSN)
++{
++  /* Basic test: y=vqrshrn_n(x,v), then store the result.  */
++#define TEST_VQRSHRN_N2(INSN, T1, T2, W, W2, N, V, EXPECTED_CUMULATIVE_SAT, CMT) \
++  Set_Neon_Cumulative_Sat(0, VECT_VAR(vector_res, T1, W2, N));		\
++  VECT_VAR(vector_res, T1, W2, N) =					\
++    INSN##_##T2##W(VECT_VAR(vector, T1, W, N),				\
++		   V);							\
++  vst1_##T2##W2(VECT_VAR(result, T1, W2, N),				\
++		VECT_VAR(vector_res, T1, W2, N));			\
++  CHECK_CUMULATIVE_SAT(TEST_MSG, T1, W, N, EXPECTED_CUMULATIVE_SAT, CMT)
++
++  /* Two auxliary macros are necessary to expand INSN */
++#define TEST_VQRSHRN_N1(INSN, T1, T2, W, W2, N, V, EXPECTED_CUMULATIVE_SAT, CMT) \
++  TEST_VQRSHRN_N2(INSN, T1, T2, W, W2, N, V, EXPECTED_CUMULATIVE_SAT, CMT)
++
++#define TEST_VQRSHRN_N(T1, T2, W, W2, N, V, EXPECTED_CUMULATIVE_SAT, CMT) \
++  TEST_VQRSHRN_N1(INSN, T1, T2, W, W2, N, V, EXPECTED_CUMULATIVE_SAT, CMT)
++
++
++  /* vector is twice as large as vector_res.  */
++  DECL_VARIABLE(vector, int, 16, 8);
++  DECL_VARIABLE(vector, int, 32, 4);
++  DECL_VARIABLE(vector, int, 64, 2);
++  DECL_VARIABLE(vector, uint, 16, 8);
++  DECL_VARIABLE(vector, uint, 32, 4);
++  DECL_VARIABLE(vector, uint, 64, 2);
++
++  DECL_VARIABLE(vector_res, int, 8, 8);
++  DECL_VARIABLE(vector_res, int, 16, 4);
++  DECL_VARIABLE(vector_res, int, 32, 2);
++  DECL_VARIABLE(vector_res, uint, 8, 8);
++  DECL_VARIABLE(vector_res, uint, 16, 4);
++  DECL_VARIABLE(vector_res, uint, 32, 2);
++
++  clean_results ();
++
++  VLOAD(vector, buffer, q, int, s, 16, 8);
++  VLOAD(vector, buffer, q, int, s, 32, 4);
++  VLOAD(vector, buffer, q, int, s, 64, 2);
++  VLOAD(vector, buffer, q, uint, u, 16, 8);
++  VLOAD(vector, buffer, q, uint, u, 32, 4);
++  VLOAD(vector, buffer, q, uint, u, 64, 2);
++
++  /* Choose shift amount arbitrarily.  */
++#define CMT ""
++  TEST_VQRSHRN_N(int, s, 16, 8, 8, 1, expected_cumulative_sat, CMT);
++  TEST_VQRSHRN_N(int, s, 32, 16, 4, 1, expected_cumulative_sat, CMT);
++  TEST_VQRSHRN_N(int, s, 64, 32, 2, 2, expected_cumulative_sat, CMT);
++  TEST_VQRSHRN_N(uint, u, 16, 8, 8, 2, expected_cumulative_sat, CMT);
++  TEST_VQRSHRN_N(uint, u, 32, 16, 4, 3, expected_cumulative_sat, CMT);
++  TEST_VQRSHRN_N(uint, u, 64, 32, 2, 3, expected_cumulative_sat, CMT);
++
++  CHECK(TEST_MSG, int, 8, 8, PRIx8, expected, CMT);
++  CHECK(TEST_MSG, int, 16, 4, PRIx16, expected, CMT);
++  CHECK(TEST_MSG, int, 32, 2, PRIx32, expected, CMT);
++  CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected, CMT);
++  CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected, CMT);
++  CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected, CMT);
++
++
++  /* Another set of tests, shifting max value by 3.  */
++  VDUP(vector, q, int, s, 16, 8, 0x7FFF);
++  VDUP(vector, q, int, s, 32, 4, 0x7FFFFFFF);
++  VDUP(vector, q, int, s, 64, 2, 0x7FFFFFFFFFFFFFFFLL);
++  VDUP(vector, q, uint, u, 16, 8, 0xFFFF);
++  VDUP(vector, q, uint, u, 32, 4, 0xFFFFFFFF);
++  VDUP(vector, q, uint, u, 64, 2, 0xFFFFFFFFFFFFFFFFULL);
++
++#undef CMT
++#define CMT " (check saturation: shift by 3)"
++  TEST_VQRSHRN_N(int, s, 16, 8, 8, 3, expected_cumulative_sat_sh3, CMT);
++  TEST_VQRSHRN_N(int, s, 32, 16, 4, 3, expected_cumulative_sat_sh3, CMT);
++  TEST_VQRSHRN_N(int, s, 64, 32, 2, 3, expected_cumulative_sat_sh3, CMT);
++  TEST_VQRSHRN_N(uint, u, 16, 8, 8, 3, expected_cumulative_sat_sh3, CMT);
++  TEST_VQRSHRN_N(uint, u, 32, 16, 4, 3, expected_cumulative_sat_sh3, CMT);
++  TEST_VQRSHRN_N(uint, u, 64, 32, 2, 3, expected_cumulative_sat_sh3, CMT);
++
++  CHECK(TEST_MSG, int, 8, 8, PRIx8, expected_sh3, CMT);
++  CHECK(TEST_MSG, int, 16, 4, PRIx16, expected_sh3, CMT);
++  CHECK(TEST_MSG, int, 32, 2, PRIx32, expected_sh3, CMT);
++  CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected_sh3, CMT);
++  CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected_sh3, CMT);
++  CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected_sh3, CMT);
++
++
++  /* Shift by max amount.  */
++#undef CMT
++#define CMT " (check saturation: shift by max)"
++  TEST_VQRSHRN_N(int, s, 16, 8, 8, 8, expected_cumulative_sat_shmax, CMT);
++  TEST_VQRSHRN_N(int, s, 32, 16, 4, 16, expected_cumulative_sat_shmax, CMT);
++  TEST_VQRSHRN_N(int, s, 64, 32, 2, 32, expected_cumulative_sat_shmax, CMT);
++  TEST_VQRSHRN_N(uint, u, 16, 8, 8, 8, expected_cumulative_sat_shmax, CMT);
++  TEST_VQRSHRN_N(uint, u, 32, 16, 4, 16, expected_cumulative_sat_shmax, CMT);
++  TEST_VQRSHRN_N(uint, u, 64, 32, 2, 32, expected_cumulative_sat_shmax, CMT);
++
++  CHECK(TEST_MSG, int, 8, 8, PRIx8, expected_shmax, CMT);
++  CHECK(TEST_MSG, int, 16, 4, PRIx16, expected_shmax, CMT);
++  CHECK(TEST_MSG, int, 32, 2, PRIx32, expected_shmax, CMT);
++  CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected_shmax, CMT);
++  CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected_shmax, CMT);
++  CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected_shmax, CMT);
++}
++
++int main (void)
++{
++  exec_vqrshrn_n ();
++  return 0;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqrshrun_n.c
+@@ -0,0 +1,189 @@
++#include <arm_neon.h>
++#include "arm-neon-ref.h"
++#include "compute-ref-data.h"
++
++/* Expected values of cumulative_saturation flag with negative unput.  */
++int VECT_VAR(expected_cumulative_sat_neg,int,16,8) = 0;
++int VECT_VAR(expected_cumulative_sat_neg,int,32,4) = 0;
++int VECT_VAR(expected_cumulative_sat_neg,int,64,2) = 1;
++
++/* Expected results with negative input.  */
++VECT_VAR_DECL(expected_neg,uint,8,8) [] = { 0x0, 0x0, 0x0, 0x0,
++					    0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_neg,uint,16,4) [] = { 0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_neg,uint,32,2) [] = { 0x0, 0x0 };
++
++/* Expected values of cumulative_saturation flag with max input value
++   shifted by 1.  */
++int VECT_VAR(expected_cumulative_sat_max_sh1,int,16,8) = 1;
++int VECT_VAR(expected_cumulative_sat_max_sh1,int,32,4) = 1;
++int VECT_VAR(expected_cumulative_sat_max_sh1,int,64,2) = 1;
++
++/* Expected results with max input value shifted by 1.  */
++VECT_VAR_DECL(expected_max_sh1,uint,8,8) [] = { 0xff, 0xff, 0xff, 0xff,
++						0xff, 0xff, 0xff, 0xff };
++VECT_VAR_DECL(expected_max_sh1,uint,16,4) [] = { 0xffff, 0xffff,
++						 0xffff, 0xffff };
++VECT_VAR_DECL(expected_max_sh1,uint,32,2) [] = { 0xffffffff, 0xffffffff };
++VECT_VAR_DECL(expected_max_sh1,uint,64,1) [] = { 0x3333333333333333 };
++
++/* Expected values of cumulative_saturation flag with max input value
++   shifted by max amount.  */
++int VECT_VAR(expected_cumulative_sat_max_shmax,int,16,8) = 0;
++int VECT_VAR(expected_cumulative_sat_max_shmax,int,32,4) = 0;
++int VECT_VAR(expected_cumulative_sat_max_shmax,int,64,2) = 0;
++
++/* Expected results with max input value shifted by max amount.  */
++VECT_VAR_DECL(expected_max_shmax,uint,8,8) [] = { 0x80, 0x80, 0x80, 0x80,
++						  0x80, 0x80, 0x80, 0x80 };
++VECT_VAR_DECL(expected_max_shmax,uint,16,4) [] = { 0x8000, 0x8000,
++						   0x8000, 0x8000 };
++VECT_VAR_DECL(expected_max_shmax,uint,32,2) [] = { 0x80000000, 0x80000000 };
++
++/* Expected values of cumulative_saturation flag with min input value
++   shifted by max amount.  */
++int VECT_VAR(expected_cumulative_sat_min_shmax,int,16,8) = 1;
++int VECT_VAR(expected_cumulative_sat_min_shmax,int,32,4) = 1;
++int VECT_VAR(expected_cumulative_sat_min_shmax,int,64,2) = 1;
++
++/* Expected results with min input value shifted by max amount.  */
++VECT_VAR_DECL(expected_min_shmax,uint,8,8) [] = { 0x0, 0x0, 0x0, 0x0,
++						  0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_min_shmax,uint,16,4) [] = { 0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_min_shmax,uint,32,2) [] = { 0x0, 0x0 };
++
++/* Expected values of cumulative_saturation flag with inputs in usual
++   range.  */
++int VECT_VAR(expected_cumulative_sat,int,16,8) = 0;
++int VECT_VAR(expected_cumulative_sat,int,32,4) = 1;
++int VECT_VAR(expected_cumulative_sat,int,64,2) = 0;
++
++/* Expected results with inputs in usual range.  */
++VECT_VAR_DECL(expected,uint,8,8) [] = { 0x49, 0x49, 0x49, 0x49,
++					0x49, 0x49, 0x49, 0x49 };
++VECT_VAR_DECL(expected,uint,16,4) [] = { 0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected,uint,32,2) [] = { 0xdeadbf, 0xdeadbf };
++
++#define INSN vqrshrun_n
++#define TEST_MSG "VQRSHRUN_N"
++
++#define FNNAME1(NAME) void exec_ ## NAME (void)
++#define FNNAME(NAME) FNNAME1(NAME)
++
++FNNAME (INSN)
++{
++  /* Basic test: y=vqrshrun_n(x,v), then store the result.  */
++#define TEST_VQRSHRUN_N2(INSN, T1, T2, W, W2, N, V, EXPECTED_CUMULATIVE_SAT, CMT) \
++  Set_Neon_Cumulative_Sat(0, VECT_VAR(vector_res, uint, W2, N));	\
++  VECT_VAR(vector_res, uint, W2, N) =					\
++    INSN##_##T2##W(VECT_VAR(vector, T1, W, N),				\
++		   V);							\
++  vst1_u##W2(VECT_VAR(result, uint, W2, N),				\
++	     VECT_VAR(vector_res, uint, W2, N));			\
++  CHECK_CUMULATIVE_SAT(TEST_MSG, T1, W, N, EXPECTED_CUMULATIVE_SAT, CMT)
++
++  /* Two auxliary macros are necessary to expand INSN */
++#define TEST_VQRSHRUN_N1(INSN, T1, T2, W, W2, N, V, EXPECTED_CUMULATIVE_SAT, CMT) \
++  TEST_VQRSHRUN_N2(INSN, T1, T2, W, W2, N, V, EXPECTED_CUMULATIVE_SAT, CMT)
++
++#define TEST_VQRSHRUN_N(T1, T2, W, W2, N, V, EXPECTED_CUMULATIVE_SAT, CMT) \
++  TEST_VQRSHRUN_N1(INSN, T1, T2, W, W2, N, V, EXPECTED_CUMULATIVE_SAT, CMT)
++
++
++  /* vector is twice as large as vector_res.  */
++  DECL_VARIABLE(vector, int, 16, 8);
++  DECL_VARIABLE(vector, int, 32, 4);
++  DECL_VARIABLE(vector, int, 64, 2);
++
++  DECL_VARIABLE(vector_res, uint, 8, 8);
++  DECL_VARIABLE(vector_res, uint, 16, 4);
++  DECL_VARIABLE(vector_res, uint, 32, 2);
++
++  clean_results ();
++
++  /* Fill input vector with negative values, to check saturation on
++     limits.  */
++  VDUP(vector, q, int, s, 16, 8, -2);
++  VDUP(vector, q, int, s, 32, 4, -3);
++  VDUP(vector, q, int, s, 64, 2, -4);
++
++  /* Choose shift amount arbitrarily.   */
++#define CMT " (negative input)"
++  TEST_VQRSHRUN_N(int, s, 16, 8, 8, 3, expected_cumulative_sat_neg, CMT);
++  TEST_VQRSHRUN_N(int, s, 32, 16, 4, 4, expected_cumulative_sat_neg, CMT);
++  TEST_VQRSHRUN_N(int, s, 64, 32, 2, 2, expected_cumulative_sat_neg, CMT);
++
++  CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected_neg, CMT);
++  CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected_neg, CMT);
++  CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected_neg, CMT);
++
++
++  /* Fill input vector with max value, to check saturation on
++     limits.  */
++  VDUP(vector, q, int, s, 16, 8, 0x7FFF);
++  VDUP(vector, q, int, s, 32, 4, 0x7FFFFFFF);
++  VDUP(vector, q, int, s, 64, 2, 0x7FFFFFFFFFFFFFFFLL);
++
++  /* shift by 1.  */
++#undef CMT
++#define CMT " (check cumulative saturation: shift by 1)"
++  TEST_VQRSHRUN_N(int, s, 16, 8, 8, 1, expected_cumulative_sat_max_sh1, CMT);
++  TEST_VQRSHRUN_N(int, s, 32, 16, 4, 1, expected_cumulative_sat_max_sh1, CMT);
++  TEST_VQRSHRUN_N(int, s, 64, 32, 2, 1, expected_cumulative_sat_max_sh1, CMT);
++
++  CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected_max_sh1, CMT);
++  CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected_max_sh1, CMT);
++  CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected_max_sh1, CMT);
++
++
++  /* shift by max.  */
++#undef CMT
++#define CMT " (check cumulative saturation: shift by max, positive input)"
++  TEST_VQRSHRUN_N(int, s, 16, 8, 8, 8, expected_cumulative_sat_max_shmax, CMT);
++  TEST_VQRSHRUN_N(int, s, 32, 16, 4, 16, expected_cumulative_sat_max_shmax, CMT);
++  TEST_VQRSHRUN_N(int, s, 64, 32, 2, 32, expected_cumulative_sat_max_shmax, CMT);
++
++  CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected_max_shmax, CMT);
++  CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected_max_shmax, CMT);
++  CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected_max_shmax, CMT);
++
++
++  /* Fill input vector with min value, to check saturation on limits.  */
++  VDUP(vector, q, int, s, 16, 8, 0x8000);
++  VDUP(vector, q, int, s, 32, 4, 0x80000000);
++  VDUP(vector, q, int, s, 64, 2, 0x8000000000000000LL);
++
++  /* shift by max  */
++#undef CMT
++#define CMT " (check cumulative saturation: shift by max, negative input)"
++  TEST_VQRSHRUN_N(int, s, 16, 8, 8, 8, expected_cumulative_sat_min_shmax, CMT);
++  TEST_VQRSHRUN_N(int, s, 32, 16, 4, 16, expected_cumulative_sat_min_shmax, CMT);
++  TEST_VQRSHRUN_N(int, s, 64, 32, 2, 32, expected_cumulative_sat_min_shmax, CMT);
++
++  CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected_min_shmax, CMT);
++  CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected_min_shmax, CMT);
++  CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected_min_shmax, CMT);
++
++
++  /* Fill input vector with positive values, to check normal case.  */
++  VDUP(vector, q, int, s, 16, 8, 0x1234);
++  VDUP(vector, q, int, s, 32, 4, 0x87654321);
++  VDUP(vector, q, int, s, 64, 2, 0xDEADBEEF);
++
++  /* shift arbitrary amount.  */
++#undef CMT
++#define CMT ""
++  TEST_VQRSHRUN_N(int, s, 16, 8, 8, 6, expected_cumulative_sat, CMT);
++  TEST_VQRSHRUN_N(int, s, 32, 16, 4, 7, expected_cumulative_sat, CMT);
++  TEST_VQRSHRUN_N(int, s, 64, 32, 2, 8, expected_cumulative_sat, CMT);
++
++  CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected, CMT);
++  CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected, CMT);
++  CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected, CMT);
++}
++
++int main (void)
++{
++  exec_vqrshrun_n ();
++  return 0;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqshl.c
+@@ -0,0 +1,829 @@
++#include <arm_neon.h>
++#include "arm-neon-ref.h"
++#include "compute-ref-data.h"
++
++/* Expected values of cumulative_saturation flag with input=0.  */
++int VECT_VAR(expected_cumulative_sat_0,int,8,8) = 0;
++int VECT_VAR(expected_cumulative_sat_0,int,16,4) = 0;
++int VECT_VAR(expected_cumulative_sat_0,int,32,2) = 0;
++int VECT_VAR(expected_cumulative_sat_0,int,64,1) = 0;
++int VECT_VAR(expected_cumulative_sat_0,uint,8,8) = 0;
++int VECT_VAR(expected_cumulative_sat_0,uint,16,4) = 0;
++int VECT_VAR(expected_cumulative_sat_0,uint,32,2) = 0;
++int VECT_VAR(expected_cumulative_sat_0,uint,64,1) = 0;
++int VECT_VAR(expected_cumulative_sat_0,int,8,16) = 0;
++int VECT_VAR(expected_cumulative_sat_0,int,16,8) = 0;
++int VECT_VAR(expected_cumulative_sat_0,int,32,4) = 0;
++int VECT_VAR(expected_cumulative_sat_0,int,64,2) = 0;
++int VECT_VAR(expected_cumulative_sat_0,uint,8,16) = 0;
++int VECT_VAR(expected_cumulative_sat_0,uint,16,8) = 0;
++int VECT_VAR(expected_cumulative_sat_0,uint,32,4) = 0;
++int VECT_VAR(expected_cumulative_sat_0,uint,64,2) = 0;
++
++/* Expected results with input=0.  */
++VECT_VAR_DECL(expected_0,int,8,8) [] = { 0x0, 0x0, 0x0, 0x0,
++					 0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_0,int,16,4) [] = { 0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_0,int,32,2) [] = { 0x0, 0x0 };
++VECT_VAR_DECL(expected_0,int,64,1) [] = { 0x0 };
++VECT_VAR_DECL(expected_0,uint,8,8) [] = { 0x0, 0x0, 0x0, 0x0,
++					  0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_0,uint,16,4) [] = { 0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_0,uint,32,2) [] = { 0x0, 0x0 };
++VECT_VAR_DECL(expected_0,uint,64,1) [] = { 0x0 };
++VECT_VAR_DECL(expected_0,int,8,16) [] = { 0x0, 0x0, 0x0, 0x0,
++					  0x0, 0x0, 0x0, 0x0,
++					  0x0, 0x0, 0x0, 0x0,
++					  0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_0,int,16,8) [] = { 0x0, 0x0, 0x0, 0x0,
++					  0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_0,int,32,4) [] = { 0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_0,int,64,2) [] = { 0x0, 0x0 };
++VECT_VAR_DECL(expected_0,uint,8,16) [] = { 0x0, 0x0, 0x0, 0x0,
++					   0x0, 0x0, 0x0, 0x0,
++					   0x0, 0x0, 0x0, 0x0,
++					   0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_0,uint,16,8) [] = { 0x0, 0x0, 0x0, 0x0,
++					   0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_0,uint,32,4) [] = { 0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_0,uint,64,2) [] = { 0x0, 0x0 };
++
++/* Expected values of cumulative_saturation flag with input=0 and
++   negative shift amount.  */
++int VECT_VAR(expected_cumulative_sat_0_neg,int,8,8) = 0;
++int VECT_VAR(expected_cumulative_sat_0_neg,int,16,4) = 0;
++int VECT_VAR(expected_cumulative_sat_0_neg,int,32,2) = 0;
++int VECT_VAR(expected_cumulative_sat_0_neg,int,64,1) = 0;
++int VECT_VAR(expected_cumulative_sat_0_neg,uint,8,8) = 0;
++int VECT_VAR(expected_cumulative_sat_0_neg,uint,16,4) = 0;
++int VECT_VAR(expected_cumulative_sat_0_neg,uint,32,2) = 0;
++int VECT_VAR(expected_cumulative_sat_0_neg,uint,64,1) = 0;
++int VECT_VAR(expected_cumulative_sat_0_neg,int,8,16) = 0;
++int VECT_VAR(expected_cumulative_sat_0_neg,int,16,8) = 0;
++int VECT_VAR(expected_cumulative_sat_0_neg,int,32,4) = 0;
++int VECT_VAR(expected_cumulative_sat_0_neg,int,64,2) = 0;
++int VECT_VAR(expected_cumulative_sat_0_neg,uint,8,16) = 0;
++int VECT_VAR(expected_cumulative_sat_0_neg,uint,16,8) = 0;
++int VECT_VAR(expected_cumulative_sat_0_neg,uint,32,4) = 0;
++int VECT_VAR(expected_cumulative_sat_0_neg,uint,64,2) = 0;
++
++/* Expected results with input=0 and negative shift amount.  */
++VECT_VAR_DECL(expected_0_neg,int,8,8) [] = { 0x0, 0x0, 0x0, 0x0,
++					     0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_0_neg,int,16,4) [] = { 0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_0_neg,int,32,2) [] = { 0x0, 0x0 };
++VECT_VAR_DECL(expected_0_neg,int,64,1) [] = { 0x0 };
++VECT_VAR_DECL(expected_0_neg,uint,8,8) [] = { 0x0, 0x0, 0x0, 0x0,
++					      0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_0_neg,uint,16,4) [] = { 0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_0_neg,uint,32,2) [] = { 0x0, 0x0 };
++VECT_VAR_DECL(expected_0_neg,uint,64,1) [] = { 0x0 };
++VECT_VAR_DECL(expected_0_neg,int,8,16) [] = { 0x0, 0x0, 0x0, 0x0,
++					      0x0, 0x0, 0x0, 0x0,
++					      0x0, 0x0, 0x0, 0x0,
++					      0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_0_neg,int,16,8) [] = { 0x0, 0x0, 0x0, 0x0,
++					      0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_0_neg,int,32,4) [] = { 0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_0_neg,int,64,2) [] = { 0x0, 0x0 };
++VECT_VAR_DECL(expected_0_neg,uint,8,16) [] = { 0x0, 0x0, 0x0, 0x0,
++					       0x0, 0x0, 0x0, 0x0,
++					       0x0, 0x0, 0x0, 0x0,
++					       0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_0_neg,uint,16,8) [] = { 0x0, 0x0, 0x0, 0x0,
++					       0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_0_neg,uint,32,4) [] = { 0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_0_neg,uint,64,2) [] = { 0x0, 0x0 };
++
++/* Expected values of cumulative_saturation flag.  */
++int VECT_VAR(expected_cumulative_sat,int,8,8) = 0;
++int VECT_VAR(expected_cumulative_sat,int,16,4) = 0;
++int VECT_VAR(expected_cumulative_sat,int,32,2) = 0;
++int VECT_VAR(expected_cumulative_sat,int,64,1) = 0;
++int VECT_VAR(expected_cumulative_sat,uint,8,8) = 1;
++int VECT_VAR(expected_cumulative_sat,uint,16,4) = 1;
++int VECT_VAR(expected_cumulative_sat,uint,32,2) = 1;
++int VECT_VAR(expected_cumulative_sat,uint,64,1) = 0;
++int VECT_VAR(expected_cumulative_sat,int,8,16) = 1;
++int VECT_VAR(expected_cumulative_sat,int,16,8) = 1;
++int VECT_VAR(expected_cumulative_sat,int,32,4) = 1;
++int VECT_VAR(expected_cumulative_sat,int,64,2) = 1;
++int VECT_VAR(expected_cumulative_sat,uint,8,16) = 1;
++int VECT_VAR(expected_cumulative_sat,uint,16,8) = 1;
++int VECT_VAR(expected_cumulative_sat,uint,32,4) = 1;
++int VECT_VAR(expected_cumulative_sat,uint,64,2) = 1;
++
++/* Expected results.  */
++VECT_VAR_DECL(expected,int,8,8) [] = { 0xe0, 0xe2, 0xe4, 0xe6,
++				       0xe8, 0xea, 0xec, 0xee };
++VECT_VAR_DECL(expected,int,16,4) [] = { 0xff80, 0xff88, 0xff90, 0xff98 };
++VECT_VAR_DECL(expected,int,32,2) [] = { 0xfffff000, 0xfffff100 };
++VECT_VAR_DECL(expected,int,64,1) [] = { 0xfffffffffffffffe };
++VECT_VAR_DECL(expected,uint,8,8) [] = { 0xff, 0xff, 0xff, 0xff,
++					0xff, 0xff, 0xff, 0xff };
++VECT_VAR_DECL(expected,uint,16,4) [] = { 0xffff, 0xffff, 0xffff, 0xffff };
++VECT_VAR_DECL(expected,uint,32,2) [] = { 0xffffffff, 0xffffffff };
++VECT_VAR_DECL(expected,uint,64,1) [] = { 0x1ffffffffffffffe };
++VECT_VAR_DECL(expected,int,8,16) [] = { 0x80, 0x80, 0x80, 0x80,
++					0x80, 0x80, 0x80, 0x80,
++					0x80, 0x80, 0x80, 0x80,
++					0x80, 0x80, 0x80, 0x80 };
++VECT_VAR_DECL(expected,int,16,8) [] = { 0x8000, 0x8000, 0x8000, 0x8000,
++					0x8000, 0x8000, 0x8000, 0x8000 };
++VECT_VAR_DECL(expected,int,32,4) [] = { 0x80000000, 0x80000000,
++					0x80000000, 0x80000000 };
++VECT_VAR_DECL(expected,int,64,2) [] = { 0x8000000000000000,
++					0x8000000000000000 };
++VECT_VAR_DECL(expected,uint,8,16) [] = { 0xff, 0xff, 0xff, 0xff,
++					 0xff, 0xff, 0xff, 0xff,
++					 0xff, 0xff, 0xff, 0xff,
++					 0xff, 0xff, 0xff, 0xff };
++VECT_VAR_DECL(expected,uint,16,8) [] = { 0xffff, 0xffff, 0xffff, 0xffff,
++					 0xffff, 0xffff, 0xffff, 0xffff };
++VECT_VAR_DECL(expected,uint,32,4) [] = { 0xffffffff, 0xffffffff,
++					 0xffffffff, 0xffffffff };
++VECT_VAR_DECL(expected,uint,64,2) [] = { 0xffffffffffffffff,
++					 0xffffffffffffffff };
++
++/* Expected values of cumulative_sat_saturation flag with negative shift
++   amount.  */
++int VECT_VAR(expected_cumulative_sat_neg,int,8,8) = 0;
++int VECT_VAR(expected_cumulative_sat_neg,int,16,4) = 0;
++int VECT_VAR(expected_cumulative_sat_neg,int,32,2) = 0;
++int VECT_VAR(expected_cumulative_sat_neg,int,64,1) = 0;
++int VECT_VAR(expected_cumulative_sat_neg,uint,8,8) = 0;
++int VECT_VAR(expected_cumulative_sat_neg,uint,16,4) = 0;
++int VECT_VAR(expected_cumulative_sat_neg,uint,32,2) = 0;
++int VECT_VAR(expected_cumulative_sat_neg,uint,64,1) = 0;
++int VECT_VAR(expected_cumulative_sat_neg,int,8,16) = 0;
++int VECT_VAR(expected_cumulative_sat_neg,int,16,8) = 0;
++int VECT_VAR(expected_cumulative_sat_neg,int,32,4) = 0;
++int VECT_VAR(expected_cumulative_sat_neg,int,64,2) = 0;
++int VECT_VAR(expected_cumulative_sat_neg,uint,8,16) = 0;
++int VECT_VAR(expected_cumulative_sat_neg,uint,16,8) = 0;
++int VECT_VAR(expected_cumulative_sat_neg,uint,32,4) = 0;
++int VECT_VAR(expected_cumulative_sat_neg,uint,64,2) = 0;
++
++/* Expected results with negative shift amount.  */
++VECT_VAR_DECL(expected_neg,int,8,8) [] = { 0xf8, 0xf8, 0xf9, 0xf9,
++					   0xfa, 0xfa, 0xfb, 0xfb };
++VECT_VAR_DECL(expected_neg,int,16,4) [] = { 0xfffc, 0xfffc, 0xfffc, 0xfffc };
++VECT_VAR_DECL(expected_neg,int,32,2) [] = { 0xfffffffe, 0xfffffffe };
++VECT_VAR_DECL(expected_neg,int,64,1) [] = { 0xffffffffffffffff };
++VECT_VAR_DECL(expected_neg,uint,8,8) [] = { 0x78, 0x78, 0x79, 0x79,
++					    0x7a, 0x7a, 0x7b, 0x7b };
++VECT_VAR_DECL(expected_neg,uint,16,4) [] = { 0x3ffc, 0x3ffc, 0x3ffc, 0x3ffc };
++VECT_VAR_DECL(expected_neg,uint,32,2) [] = { 0x1ffffffe, 0x1ffffffe };
++VECT_VAR_DECL(expected_neg,uint,64,1) [] = { 0xfffffffffffffff };
++VECT_VAR_DECL(expected_neg,int,8,16) [] = { 0xff, 0xff, 0xff, 0xff,
++					    0xff, 0xff, 0xff, 0xff,
++					    0xff, 0xff, 0xff, 0xff,
++					    0xff, 0xff, 0xff, 0xff };
++VECT_VAR_DECL(expected_neg,int,16,8) [] = { 0xffff, 0xffff, 0xffff, 0xffff,
++					    0xffff, 0xffff, 0xffff, 0xffff };
++VECT_VAR_DECL(expected_neg,int,32,4) [] = { 0xffffffff, 0xffffffff,
++					    0xffffffff, 0xffffffff };
++VECT_VAR_DECL(expected_neg,int,64,2) [] = { 0xffffffffffffffff,
++					    0xffffffffffffffff };
++VECT_VAR_DECL(expected_neg,uint,8,16) [] = { 0x1, 0x1, 0x1, 0x1,
++					     0x1, 0x1, 0x1, 0x1,
++					     0x1, 0x1, 0x1, 0x1,
++					     0x1, 0x1, 0x1, 0x1 };
++VECT_VAR_DECL(expected_neg,uint,16,8) [] = { 0x1f, 0x1f, 0x1f, 0x1f,
++					     0x1f, 0x1f, 0x1f, 0x1f };
++VECT_VAR_DECL(expected_neg,uint,32,4) [] = { 0x7ffff, 0x7ffff,
++					     0x7ffff, 0x7ffff };
++VECT_VAR_DECL(expected_neg,uint,64,2) [] = { 0xfffffffffff, 0xfffffffffff };
++
++/* Expected values of cumulative_sat_saturation flag with negative
++   input and large shift amount.  */
++int VECT_VAR(expected_cumulative_sat_neg_large,int,8,8) = 1;
++int VECT_VAR(expected_cumulative_sat_neg_large,int,16,4) = 1;
++int VECT_VAR(expected_cumulative_sat_neg_large,int,32,2) = 1;
++int VECT_VAR(expected_cumulative_sat_neg_large,int,64,1) = 1;
++int VECT_VAR(expected_cumulative_sat_neg_large,uint,8,8) = 1;
++int VECT_VAR(expected_cumulative_sat_neg_large,uint,16,4) = 1;
++int VECT_VAR(expected_cumulative_sat_neg_large,uint,32,2) = 1;
++int VECT_VAR(expected_cumulative_sat_neg_large,uint,64,1) = 1;
++int VECT_VAR(expected_cumulative_sat_neg_large,int,8,16) = 1;
++int VECT_VAR(expected_cumulative_sat_neg_large,int,16,8) = 1;
++int VECT_VAR(expected_cumulative_sat_neg_large,int,32,4) = 1;
++int VECT_VAR(expected_cumulative_sat_neg_large,int,64,2) = 1;
++int VECT_VAR(expected_cumulative_sat_neg_large,uint,8,16) = 1;
++int VECT_VAR(expected_cumulative_sat_neg_large,uint,16,8) = 1;
++int VECT_VAR(expected_cumulative_sat_neg_large,uint,32,4) = 1;
++int VECT_VAR(expected_cumulative_sat_neg_large,uint,64,2) = 1;
++
++/* Expected results with negative input and large shift amount.  */
++VECT_VAR_DECL(expected_neg_large,int,8,8) [] = { 0x80, 0x80, 0x80, 0x80,
++						 0x80, 0x80, 0x80, 0x80 };
++VECT_VAR_DECL(expected_neg_large,int,16,4) [] = { 0x8000, 0x8000,
++						  0x8000, 0x8000 };
++VECT_VAR_DECL(expected_neg_large,int,32,2) [] = { 0x80000000, 0x80000000 };
++VECT_VAR_DECL(expected_neg_large,int,64,1) [] = { 0x8000000000000000 };
++VECT_VAR_DECL(expected_neg_large,uint,8,8) [] = { 0xff, 0xff, 0xff, 0xff,
++						  0xff, 0xff, 0xff, 0xff };
++VECT_VAR_DECL(expected_neg_large,uint,16,4) [] = { 0xffff, 0xffff,
++						   0xffff, 0xffff };
++VECT_VAR_DECL(expected_neg_large,uint,32,2) [] = { 0xffffffff, 0xffffffff };
++VECT_VAR_DECL(expected_neg_large,uint,64,1) [] = { 0xffffffffffffffff };
++VECT_VAR_DECL(expected_neg_large,int,8,16) [] = { 0x80, 0x80, 0x80, 0x80,
++						  0x80, 0x80, 0x80, 0x80,
++						  0x80, 0x80, 0x80, 0x80,
++						  0x80, 0x80, 0x80, 0x80 };
++VECT_VAR_DECL(expected_neg_large,int,16,8) [] = { 0x8000, 0x8000,
++						  0x8000, 0x8000,
++						  0x8000, 0x8000,
++						  0x8000, 0x8000 };
++VECT_VAR_DECL(expected_neg_large,int,32,4) [] = { 0x80000000, 0x80000000,
++						  0x80000000, 0x80000000 };
++VECT_VAR_DECL(expected_neg_large,int,64,2) [] = { 0x8000000000000000,
++						  0x8000000000000000 };
++VECT_VAR_DECL(expected_neg_large,uint,8,16) [] = { 0xff, 0xff, 0xff, 0xff,
++						   0xff, 0xff, 0xff, 0xff,
++						   0xff, 0xff, 0xff, 0xff,
++						   0xff, 0xff, 0xff, 0xff };
++VECT_VAR_DECL(expected_neg_large,uint,16,8) [] = { 0xffff, 0xffff,
++						   0xffff, 0xffff,
++						   0xffff, 0xffff,
++						   0xffff, 0xffff };
++VECT_VAR_DECL(expected_neg_large,uint,32,4) [] = { 0xffffffff, 0xffffffff,
++						   0xffffffff, 0xffffffff };
++VECT_VAR_DECL(expected_neg_large,uint,64,2) [] = { 0xffffffffffffffff,
++						   0xffffffffffffffff };
++
++/* Expected values of cumulative_sat_saturation flag with max input
++   and shift by -1.  */
++int VECT_VAR(expected_cumulative_sat_max_minus1,int,8,8) = 0;
++int VECT_VAR(expected_cumulative_sat_max_minus1,int,16,4) = 0;
++int VECT_VAR(expected_cumulative_sat_max_minus1,int,32,2) = 0;
++int VECT_VAR(expected_cumulative_sat_max_minus1,int,64,1) = 0;
++int VECT_VAR(expected_cumulative_sat_max_minus1,uint,8,8) = 0;
++int VECT_VAR(expected_cumulative_sat_max_minus1,uint,16,4) = 0;
++int VECT_VAR(expected_cumulative_sat_max_minus1,uint,32,2) = 0;
++int VECT_VAR(expected_cumulative_sat_max_minus1,uint,64,1) = 0;
++int VECT_VAR(expected_cumulative_sat_max_minus1,int,8,16) = 0;
++int VECT_VAR(expected_cumulative_sat_max_minus1,int,16,8) = 0;
++int VECT_VAR(expected_cumulative_sat_max_minus1,int,32,4) = 0;
++int VECT_VAR(expected_cumulative_sat_max_minus1,int,64,2) = 0;
++int VECT_VAR(expected_cumulative_sat_max_minus1,uint,8,16) = 0;
++int VECT_VAR(expected_cumulative_sat_max_minus1,uint,16,8) = 0;
++int VECT_VAR(expected_cumulative_sat_max_minus1,uint,32,4) = 0;
++int VECT_VAR(expected_cumulative_sat_max_minus1,uint,64,2) = 0;
++
++/* Expected results with max input and shift by -1.  */
++VECT_VAR_DECL(expected_max_minus1,int,8,8) [] = { 0x3f, 0x3f, 0x3f, 0x3f,
++						  0x3f, 0x3f, 0x3f, 0x3f };
++VECT_VAR_DECL(expected_max_minus1,int,16,4) [] = { 0x3fff, 0x3fff,
++						   0x3fff, 0x3fff };
++VECT_VAR_DECL(expected_max_minus1,int,32,2) [] = { 0x3fffffff, 0x3fffffff };
++VECT_VAR_DECL(expected_max_minus1,int,64,1) [] = { 0x3fffffffffffffff };
++VECT_VAR_DECL(expected_max_minus1,uint,8,8) [] = { 0x7f, 0x7f, 0x7f, 0x7f,
++						   0x7f, 0x7f, 0x7f, 0x7f };
++VECT_VAR_DECL(expected_max_minus1,uint,16,4) [] = { 0x7fff, 0x7fff,
++						    0x7fff, 0x7fff };
++VECT_VAR_DECL(expected_max_minus1,uint,32,2) [] = { 0x7fffffff, 0x7fffffff };
++VECT_VAR_DECL(expected_max_minus1,uint,64,1) [] = { 0x7fffffffffffffff };
++VECT_VAR_DECL(expected_max_minus1,int,8,16) [] = { 0x3f, 0x3f, 0x3f, 0x3f,
++						   0x3f, 0x3f, 0x3f, 0x3f,
++						   0x3f, 0x3f, 0x3f, 0x3f,
++						   0x3f, 0x3f, 0x3f, 0x3f };
++VECT_VAR_DECL(expected_max_minus1,int,16,8) [] = { 0x3fff, 0x3fff,
++						   0x3fff, 0x3fff,
++						   0x3fff, 0x3fff,
++						   0x3fff, 0x3fff };
++VECT_VAR_DECL(expected_max_minus1,int,32,4) [] = { 0x3fffffff, 0x3fffffff,
++						   0x3fffffff, 0x3fffffff };
++VECT_VAR_DECL(expected_max_minus1,int,64,2) [] = { 0x3fffffffffffffff,
++						   0x3fffffffffffffff };
++VECT_VAR_DECL(expected_max_minus1,uint,8,16) [] = { 0x7f, 0x7f, 0x7f, 0x7f,
++						    0x7f, 0x7f, 0x7f, 0x7f,
++						    0x7f, 0x7f, 0x7f, 0x7f,
++						    0x7f, 0x7f, 0x7f, 0x7f };
++VECT_VAR_DECL(expected_max_minus1,uint,16,8) [] = { 0x7fff, 0x7fff,
++						    0x7fff, 0x7fff,
++						    0x7fff, 0x7fff,
++						    0x7fff, 0x7fff };
++VECT_VAR_DECL(expected_max_minus1,uint,32,4) [] = { 0x7fffffff, 0x7fffffff,
++						    0x7fffffff, 0x7fffffff };
++VECT_VAR_DECL(expected_max_minus1,uint,64,2) [] = { 0x7fffffffffffffff,
++						    0x7fffffffffffffff };
++
++/* Expected values of cumulative_sat_saturation flag with max input
++   and large shift amount.  */
++int VECT_VAR(expected_cumulative_sat_max_large,int,8,8) = 1;
++int VECT_VAR(expected_cumulative_sat_max_large,int,16,4) = 1;
++int VECT_VAR(expected_cumulative_sat_max_large,int,32,2) = 1;
++int VECT_VAR(expected_cumulative_sat_max_large,int,64,1) = 1;
++int VECT_VAR(expected_cumulative_sat_max_large,uint,8,8) = 1;
++int VECT_VAR(expected_cumulative_sat_max_large,uint,16,4) = 1;
++int VECT_VAR(expected_cumulative_sat_max_large,uint,32,2) = 1;
++int VECT_VAR(expected_cumulative_sat_max_large,uint,64,1) = 1;
++int VECT_VAR(expected_cumulative_sat_max_large,int,8,16) = 1;
++int VECT_VAR(expected_cumulative_sat_max_large,int,16,8) = 1;
++int VECT_VAR(expected_cumulative_sat_max_large,int,32,4) = 1;
++int VECT_VAR(expected_cumulative_sat_max_large,int,64,2) = 1;
++int VECT_VAR(expected_cumulative_sat_max_large,uint,8,16) = 1;
++int VECT_VAR(expected_cumulative_sat_max_large,uint,16,8) = 1;
++int VECT_VAR(expected_cumulative_sat_max_large,uint,32,4) = 1;
++int VECT_VAR(expected_cumulative_sat_max_large,uint,64,2) = 1;
++
++/* Expected results with max input and large shift amount.  */
++VECT_VAR_DECL(expected_max_large,int,8,8) [] = { 0x7f, 0x7f, 0x7f, 0x7f,
++					       0x7f, 0x7f, 0x7f, 0x7f };
++VECT_VAR_DECL(expected_max_large,int,16,4) [] = { 0x7fff, 0x7fff,
++						0x7fff, 0x7fff };
++VECT_VAR_DECL(expected_max_large,int,32,2) [] = { 0x7fffffff, 0x7fffffff };
++VECT_VAR_DECL(expected_max_large,int,64,1) [] = { 0x7fffffffffffffff };
++VECT_VAR_DECL(expected_max_large,uint,8,8) [] = { 0xff, 0xff, 0xff, 0xff,
++						0xff, 0xff, 0xff, 0xff };
++VECT_VAR_DECL(expected_max_large,uint,16,4) [] = { 0xffff, 0xffff,
++						 0xffff, 0xffff };
++VECT_VAR_DECL(expected_max_large,uint,32,2) [] = { 0xffffffff, 0xffffffff };
++VECT_VAR_DECL(expected_max_large,uint,64,1) [] = { 0xffffffffffffffff };
++VECT_VAR_DECL(expected_max_large,int,8,16) [] = { 0x7f, 0x7f, 0x7f, 0x7f,
++						0x7f, 0x7f, 0x7f, 0x7f,
++						0x7f, 0x7f, 0x7f, 0x7f,
++						0x7f, 0x7f, 0x7f, 0x7f };
++VECT_VAR_DECL(expected_max_large,int,16,8) [] = { 0x7fff, 0x7fff,
++						0x7fff, 0x7fff,
++						0x7fff, 0x7fff,
++						0x7fff, 0x7fff };
++VECT_VAR_DECL(expected_max_large,int,32,4) [] = { 0x7fffffff, 0x7fffffff,
++						0x7fffffff, 0x7fffffff };
++VECT_VAR_DECL(expected_max_large,int,64,2) [] = { 0x7fffffffffffffff,
++						0x7fffffffffffffff };
++VECT_VAR_DECL(expected_max_large,uint,8,16) [] = { 0xff, 0xff, 0xff, 0xff,
++						 0xff, 0xff, 0xff, 0xff,
++						 0xff, 0xff, 0xff, 0xff,
++						 0xff, 0xff, 0xff, 0xff };
++VECT_VAR_DECL(expected_max_large,uint,16,8) [] = { 0xffff, 0xffff,
++						 0xffff, 0xffff,
++						 0xffff, 0xffff,
++						 0xffff, 0xffff };
++VECT_VAR_DECL(expected_max_large,uint,32,4) [] = { 0xffffffff, 0xffffffff,
++						 0xffffffff, 0xffffffff };
++VECT_VAR_DECL(expected_max_large,uint,64,2) [] = { 0xffffffffffffffff,
++						 0xffffffffffffffff };
++
++/* Expected values of cumulative_sat_saturation flag with saturation
++   on 64-bits values.  */
++int VECT_VAR(expected_cumulative_sat_64,int,64,1) = 1;
++int VECT_VAR(expected_cumulative_sat_64,int,64,2) = 1;
++
++/* Expected results with saturation on 64-bits values..  */
++VECT_VAR_DECL(expected_64,int,64,1) [] = { 0x8000000000000000 };
++VECT_VAR_DECL(expected_64,int,64,2) [] = { 0x7fffffffffffffff,
++					   0x7fffffffffffffff };
++
++#define INSN vqshl
++#define TEST_MSG "VQSHL/VQSHLQ"
++
++#define FNNAME1(NAME) void exec_ ## NAME (void)
++#define FNNAME(NAME) FNNAME1(NAME)
++
++FNNAME (INSN)
++{
++  /* Basic test: v3=vqshl(v1,v2), then store the result.  */
++#define TEST_VQSHL2(INSN, T3, Q, T1, T2, W, N, EXPECTED_CUMULATIVE_SAT, CMT) \
++  Set_Neon_Cumulative_Sat(0, VECT_VAR(vector_res, T1, W, N));		\
++  VECT_VAR(vector_res, T1, W, N) =					\
++    INSN##Q##_##T2##W(VECT_VAR(vector, T1, W, N),			\
++		      VECT_VAR(vector_shift, T3, W, N));		\
++  vst1##Q##_##T2##W(VECT_VAR(result, T1, W, N),				\
++		    VECT_VAR(vector_res, T1, W, N));			\
++  CHECK_CUMULATIVE_SAT(TEST_MSG, T1, W, N, EXPECTED_CUMULATIVE_SAT, CMT)
++
++  /* Two auxliary macros are necessary to expand INSN */
++#define TEST_VQSHL1(INSN, T3, Q, T1, T2, W, N, EXPECTED_CUMULATIVE_SAT, CMT) \
++  TEST_VQSHL2(INSN, T3, Q, T1, T2, W, N, EXPECTED_CUMULATIVE_SAT, CMT)
++
++#define TEST_VQSHL(T3, Q, T1, T2, W, N, EXPECTED_CUMULATIVE_SAT, CMT)	\
++  TEST_VQSHL1(INSN, T3, Q, T1, T2, W, N, EXPECTED_CUMULATIVE_SAT, CMT)
++
++
++  DECL_VARIABLE_ALL_VARIANTS(vector);
++  DECL_VARIABLE_ALL_VARIANTS(vector_res);
++
++  DECL_VARIABLE_SIGNED_VARIANTS(vector_shift);
++
++  clean_results ();
++
++  /* Fill input vector with 0, to check saturation on limits.  */
++  VDUP(vector, , int, s, 8, 8, 0);
++  VDUP(vector, , int, s, 16, 4, 0);
++  VDUP(vector, , int, s, 32, 2, 0);
++  VDUP(vector, , int, s, 64, 1, 0);
++  VDUP(vector, , uint, u, 8, 8, 0);
++  VDUP(vector, , uint, u, 16, 4, 0);
++  VDUP(vector, , uint, u, 32, 2, 0);
++  VDUP(vector, , uint, u, 64, 1, 0);
++  VDUP(vector, q, int, s, 8, 16, 0);
++  VDUP(vector, q, int, s, 16, 8, 0);
++  VDUP(vector, q, int, s, 32, 4, 0);
++  VDUP(vector, q, int, s, 64, 2, 0);
++  VDUP(vector, q, uint, u, 8, 16, 0);
++  VDUP(vector, q, uint, u, 16, 8, 0);
++  VDUP(vector, q, uint, u, 32, 4, 0);
++  VDUP(vector, q, uint, u, 64, 2, 0);
++
++  /* Choose init value arbitrarily, will be used as shift amount */
++  /* Use values equal or one-less-than the type width to check
++     behaviour on limits.  */
++
++  /* 64-bits vectors first.  */
++  /* Shift 8-bits lanes by 7...  */
++  VDUP(vector_shift, , int, s, 8, 8, 7);
++  /* ... except: lane 0 (by 6), lane 1 (by 8) and lane 2 (by 9).  */
++  VSET_LANE(vector_shift, , int, s, 8, 8, 0, 6);
++  VSET_LANE(vector_shift, , int, s, 8, 8, 1, 8);
++  VSET_LANE(vector_shift, , int, s, 8, 8, 2, 9);
++
++  /* Shift 16-bits lanes by 15... */
++  VDUP(vector_shift, , int, s, 16, 4, 15);
++  /* ... except: lane 0 (by 14), lane 1 (by 16), and lane 2 (by 17).  */
++  VSET_LANE(vector_shift, , int, s, 16, 4, 0, 14);
++  VSET_LANE(vector_shift, , int, s, 16, 4, 1, 16);
++  VSET_LANE(vector_shift, , int, s, 16, 4, 2, 17);
++
++  /* Shift 32-bits lanes by 31... */
++  VDUP(vector_shift, , int, s, 32, 2, 31);
++  /* ... except lane 1 (by 30).  */
++  VSET_LANE(vector_shift, , int, s, 32, 2, 1, 30);
++
++  /* Shift 64 bits lane by 63.  */
++  VDUP(vector_shift, , int, s, 64, 1, 63);
++
++  /* 128-bits vectors.  */
++  /* Shift 8-bits lanes by 8.  */
++  VDUP(vector_shift, q, int, s, 8, 16, 8);
++  /* Shift 16-bits lanes by 16.  */
++  VDUP(vector_shift, q, int, s, 16, 8, 16);
++  /* Shift 32-bits lanes by 32...  */
++  VDUP(vector_shift, q, int, s, 32, 4, 32);
++  /* ... except lane 1 (by 33).  */
++  VSET_LANE(vector_shift, q, int, s, 32, 4, 1, 33);
++
++  /* Shift 64-bits lanes by 64... */
++  VDUP(vector_shift, q, int, s, 64, 2, 64);
++  /* ... except lane 1 (by 62).  */
++  VSET_LANE(vector_shift, q, int, s, 64, 2, 1, 62);
++
++#define CMT " (with input = 0)"
++  TEST_VQSHL(int, , int, s, 8, 8, expected_cumulative_sat_0, CMT);
++  TEST_VQSHL(int, , int, s, 16, 4, expected_cumulative_sat_0, CMT);
++  TEST_VQSHL(int, , int, s, 32, 2, expected_cumulative_sat_0, CMT);
++  TEST_VQSHL(int, , int, s, 64, 1, expected_cumulative_sat_0, CMT);
++  TEST_VQSHL(int, , uint, u, 8, 8, expected_cumulative_sat_0, CMT);
++  TEST_VQSHL(int, , uint, u, 16, 4, expected_cumulative_sat_0, CMT);
++  TEST_VQSHL(int, , uint, u, 32, 2, expected_cumulative_sat_0, CMT);
++  TEST_VQSHL(int, , uint, u, 64, 1, expected_cumulative_sat_0, CMT);
++  TEST_VQSHL(int, q, int, s, 8, 16, expected_cumulative_sat_0, CMT);
++  TEST_VQSHL(int, q, int, s, 16, 8, expected_cumulative_sat_0, CMT);
++  TEST_VQSHL(int, q, int, s, 32, 4, expected_cumulative_sat_0, CMT);
++  TEST_VQSHL(int, q, int, s, 64, 2, expected_cumulative_sat_0, CMT);
++  TEST_VQSHL(int, q, uint, u, 8, 16, expected_cumulative_sat_0, CMT);
++  TEST_VQSHL(int, q, uint, u, 16, 8, expected_cumulative_sat_0, CMT);
++  TEST_VQSHL(int, q, uint, u, 32, 4, expected_cumulative_sat_0, CMT);
++  TEST_VQSHL(int, q, uint, u, 64, 2, expected_cumulative_sat_0, CMT);
++
++  CHECK(TEST_MSG, int, 8, 8, PRIx8, expected_0, CMT);
++  CHECK(TEST_MSG, int, 16, 4, PRIx16, expected_0, CMT);
++  CHECK(TEST_MSG, int, 32, 2, PRIx32, expected_0, CMT);
++  CHECK(TEST_MSG, int, 64, 1, PRIx64, expected_0, CMT);
++  CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected_0, CMT);
++  CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected_0, CMT);
++  CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected_0, CMT);
++  CHECK(TEST_MSG, uint, 64, 1, PRIx64, expected_0, CMT);
++  CHECK(TEST_MSG, int, 8, 16, PRIx8, expected_0, CMT);
++  CHECK(TEST_MSG, int, 16, 8, PRIx16, expected_0, CMT);
++  CHECK(TEST_MSG, int, 32, 4, PRIx32, expected_0, CMT);
++  CHECK(TEST_MSG, int, 64, 2, PRIx64, expected_0, CMT);
++  CHECK(TEST_MSG, uint, 8, 16, PRIx8, expected_0, CMT);
++  CHECK(TEST_MSG, uint, 16, 8, PRIx16, expected_0, CMT);
++  CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected_0, CMT);
++  CHECK(TEST_MSG, uint, 64, 2, PRIx64, expected_0, CMT);
++
++
++  /* Use negative shift amounts */
++  VDUP(vector_shift, , int, s, 8, 8, -1);
++  VDUP(vector_shift, , int, s, 16, 4, -2);
++  VDUP(vector_shift, , int, s, 32, 2, -3);
++  VDUP(vector_shift, , int, s, 64, 1, -4);
++  VDUP(vector_shift, q, int, s, 8, 16, -7);
++  VDUP(vector_shift, q, int, s, 16, 8, -11);
++  VDUP(vector_shift, q, int, s, 32, 4, -13);
++  VDUP(vector_shift, q, int, s, 64, 2, -20);
++
++#undef CMT
++#define CMT " (input 0 and negative shift amount)"
++  TEST_VQSHL(int, , int, s, 8, 8, expected_cumulative_sat_0_neg, CMT);
++  TEST_VQSHL(int, , int, s, 16, 4, expected_cumulative_sat_0_neg, CMT);
++  TEST_VQSHL(int, , int, s, 32, 2, expected_cumulative_sat_0_neg, CMT);
++  TEST_VQSHL(int, , int, s, 64, 1, expected_cumulative_sat_0_neg, CMT);
++  TEST_VQSHL(int, , uint, u, 8, 8, expected_cumulative_sat_0_neg, CMT);
++  TEST_VQSHL(int, , uint, u, 16, 4, expected_cumulative_sat_0_neg, CMT);
++  TEST_VQSHL(int, , uint, u, 32, 2, expected_cumulative_sat_0_neg, CMT);
++  TEST_VQSHL(int, , uint, u, 64, 1, expected_cumulative_sat_0_neg, CMT);
++  TEST_VQSHL(int, q, int, s, 8, 16, expected_cumulative_sat_0_neg, CMT);
++  TEST_VQSHL(int, q, int, s, 16, 8, expected_cumulative_sat_0_neg, CMT);
++  TEST_VQSHL(int, q, int, s, 32, 4, expected_cumulative_sat_0_neg, CMT);
++  TEST_VQSHL(int, q, int, s, 64, 2, expected_cumulative_sat_0_neg, CMT);
++  TEST_VQSHL(int, q, uint, u, 8, 16, expected_cumulative_sat_0_neg, CMT);
++  TEST_VQSHL(int, q, uint, u, 16, 8, expected_cumulative_sat_0_neg, CMT);
++  TEST_VQSHL(int, q, uint, u, 32, 4, expected_cumulative_sat_0_neg, CMT);
++  TEST_VQSHL(int, q, uint, u, 64, 2, expected_cumulative_sat_0_neg, CMT);
++
++  CHECK(TEST_MSG, int, 8, 8, PRIx8, expected_0_neg, CMT);
++  CHECK(TEST_MSG, int, 16, 4, PRIx16, expected_0_neg, CMT);
++  CHECK(TEST_MSG, int, 32, 2, PRIx32, expected_0_neg, CMT);
++  CHECK(TEST_MSG, int, 64, 1, PRIx64, expected_0_neg, CMT);
++  CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected_0_neg, CMT);
++  CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected_0_neg, CMT);
++  CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected_0_neg, CMT);
++  CHECK(TEST_MSG, uint, 64, 1, PRIx64, expected_0_neg, CMT);
++  CHECK(TEST_MSG, int, 8, 16, PRIx8, expected_0_neg, CMT);
++  CHECK(TEST_MSG, int, 16, 8, PRIx16, expected_0_neg, CMT);
++  CHECK(TEST_MSG, int, 32, 4, PRIx32, expected_0_neg, CMT);
++  CHECK(TEST_MSG, int, 64, 2, PRIx64, expected_0_neg, CMT);
++  CHECK(TEST_MSG, uint, 8, 16, PRIx8, expected_0_neg, CMT);
++  CHECK(TEST_MSG, uint, 16, 8, PRIx16, expected_0_neg, CMT);
++  CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected_0_neg, CMT);
++  CHECK(TEST_MSG, uint, 64, 2, PRIx64, expected_0_neg, CMT);
++
++  /* Test again, with predefined input values.  */
++  TEST_MACRO_ALL_VARIANTS_2_5(VLOAD, vector, buffer);
++
++  /* Choose init value arbitrarily, will be used as shift amount.  */
++  VDUP(vector_shift, , int, s, 8, 8, 1);
++  VDUP(vector_shift, , int, s, 16, 4, 3);
++  VDUP(vector_shift, , int, s, 32, 2, 8);
++  VDUP(vector_shift, , int, s, 64, 1, -3);
++  VDUP(vector_shift, q, int, s, 8, 16, 10);
++  VDUP(vector_shift, q, int, s, 16, 8, 12);
++  VDUP(vector_shift, q, int, s, 32, 4, 32);
++  VDUP(vector_shift, q, int, s, 64, 2, 63);
++
++#undef CMT
++#define CMT ""
++  TEST_VQSHL(int, , int, s, 8, 8, expected_cumulative_sat, CMT);
++  TEST_VQSHL(int, , int, s, 16, 4, expected_cumulative_sat, CMT);
++  TEST_VQSHL(int, , int, s, 32, 2, expected_cumulative_sat, CMT);
++  TEST_VQSHL(int, , int, s, 64, 1, expected_cumulative_sat, CMT);
++  TEST_VQSHL(int, , uint, u, 8, 8, expected_cumulative_sat, CMT);
++  TEST_VQSHL(int, , uint, u, 16, 4, expected_cumulative_sat, CMT);
++  TEST_VQSHL(int, , uint, u, 32, 2, expected_cumulative_sat, CMT);
++  TEST_VQSHL(int, , uint, u, 64, 1, expected_cumulative_sat, CMT);
++  TEST_VQSHL(int, q, int, s, 8, 16, expected_cumulative_sat, CMT);
++  TEST_VQSHL(int, q, int, s, 16, 8, expected_cumulative_sat, CMT);
++  TEST_VQSHL(int, q, int, s, 32, 4, expected_cumulative_sat, CMT);
++  TEST_VQSHL(int, q, int, s, 64, 2, expected_cumulative_sat, CMT);
++  TEST_VQSHL(int, q, uint, u, 8, 16, expected_cumulative_sat, CMT);
++  TEST_VQSHL(int, q, uint, u, 16, 8, expected_cumulative_sat, CMT);
++  TEST_VQSHL(int, q, uint, u, 32, 4, expected_cumulative_sat, CMT);
++  TEST_VQSHL(int, q, uint, u, 64, 2, expected_cumulative_sat, CMT);
++
++  CHECK(TEST_MSG, int, 8, 8, PRIx8, expected, CMT);
++  CHECK(TEST_MSG, int, 16, 4, PRIx16, expected, CMT);
++  CHECK(TEST_MSG, int, 32, 2, PRIx32, expected, CMT);
++  CHECK(TEST_MSG, int, 64, 1, PRIx64, expected, CMT);
++  CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected, CMT);
++  CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected, CMT);
++  CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected, CMT);
++  CHECK(TEST_MSG, uint, 64, 1, PRIx64, expected, CMT);
++  CHECK(TEST_MSG, int, 8, 16, PRIx8, expected, CMT);
++  CHECK(TEST_MSG, int, 16, 8, PRIx16, expected, CMT);
++  CHECK(TEST_MSG, int, 32, 4, PRIx32, expected, CMT);
++  CHECK(TEST_MSG, int, 64, 2, PRIx64, expected, CMT);
++  CHECK(TEST_MSG, uint, 8, 16, PRIx8, expected, CMT);
++  CHECK(TEST_MSG, uint, 16, 8, PRIx16, expected, CMT);
++  CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected, CMT);
++  CHECK(TEST_MSG, uint, 64, 2, PRIx64, expected, CMT);
++
++
++  /* Use negative shift amounts */
++  VDUP(vector_shift, , int, s, 8, 8, -1);
++  VDUP(vector_shift, , int, s, 16, 4, -2);
++  VDUP(vector_shift, , int, s, 32, 2, -3);
++  VDUP(vector_shift, , int, s, 64, 1, -4);
++  VDUP(vector_shift, q, int, s, 8, 16, -7);
++  VDUP(vector_shift, q, int, s, 16, 8, -11);
++  VDUP(vector_shift, q, int, s, 32, 4, -13);
++  VDUP(vector_shift, q, int, s, 64, 2, -20);
++
++#undef CMT
++#define CMT " (negative shift amount)"
++  TEST_VQSHL(int, , int, s, 8, 8, expected_cumulative_sat_neg, CMT);
++  TEST_VQSHL(int, , int, s, 16, 4, expected_cumulative_sat_neg, CMT);
++  TEST_VQSHL(int, , int, s, 32, 2, expected_cumulative_sat_neg, CMT);
++  TEST_VQSHL(int, , int, s, 64, 1, expected_cumulative_sat_neg, CMT);
++  TEST_VQSHL(int, , uint, u, 8, 8, expected_cumulative_sat_neg, CMT);
++  TEST_VQSHL(int, , uint, u, 16, 4, expected_cumulative_sat_neg, CMT);
++  TEST_VQSHL(int, , uint, u, 32, 2, expected_cumulative_sat_neg, CMT);
++  TEST_VQSHL(int, , uint, u, 64, 1, expected_cumulative_sat_neg, CMT);
++  TEST_VQSHL(int, q, int, s, 8, 16, expected_cumulative_sat_neg, CMT);
++  TEST_VQSHL(int, q, int, s, 16, 8, expected_cumulative_sat_neg, CMT);
++  TEST_VQSHL(int, q, int, s, 32, 4, expected_cumulative_sat_neg, CMT);
++  TEST_VQSHL(int, q, int, s, 64, 2, expected_cumulative_sat_neg, CMT);
++  TEST_VQSHL(int, q, uint, u, 8, 16, expected_cumulative_sat_neg, CMT);
++  TEST_VQSHL(int, q, uint, u, 16, 8, expected_cumulative_sat_neg, CMT);
++  TEST_VQSHL(int, q, uint, u, 32, 4, expected_cumulative_sat_neg, CMT);
++  TEST_VQSHL(int, q, uint, u, 64, 2, expected_cumulative_sat_neg, CMT);
++
++  CHECK(TEST_MSG, int, 8, 8, PRIx8, expected_neg, CMT);
++  CHECK(TEST_MSG, int, 16, 4, PRIx16, expected_neg, CMT);
++  CHECK(TEST_MSG, int, 32, 2, PRIx32, expected_neg, CMT);
++  CHECK(TEST_MSG, int, 64, 1, PRIx64, expected_neg, CMT);
++  CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected_neg, CMT);
++  CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected_neg, CMT);
++  CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected_neg, CMT);
++  CHECK(TEST_MSG, uint, 64, 1, PRIx64, expected_neg, CMT);
++  CHECK(TEST_MSG, int, 8, 16, PRIx8, expected_neg, CMT);
++  CHECK(TEST_MSG, int, 16, 8, PRIx16, expected_neg, CMT);
++  CHECK(TEST_MSG, int, 32, 4, PRIx32, expected_neg, CMT);
++  CHECK(TEST_MSG, int, 64, 2, PRIx64, expected_neg, CMT);
++  CHECK(TEST_MSG, uint, 8, 16, PRIx8, expected_neg, CMT);
++  CHECK(TEST_MSG, uint, 16, 8, PRIx16, expected_neg, CMT);
++  CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected_neg, CMT);
++  CHECK(TEST_MSG, uint, 64, 2, PRIx64, expected_neg, CMT);
++
++
++  /* Use large shift amounts.  */
++  VDUP(vector_shift, , int, s, 8, 8, 8);
++  VDUP(vector_shift, , int, s, 16, 4, 16);
++  VDUP(vector_shift, , int, s, 32, 2, 32);
++  VDUP(vector_shift, , int, s, 64, 1, 64);
++  VDUP(vector_shift, q, int, s, 8, 16, 8);
++  VDUP(vector_shift, q, int, s, 16, 8, 16);
++  VDUP(vector_shift, q, int, s, 32, 4, 32);
++  VDUP(vector_shift, q, int, s, 64, 2, 64);
++
++#undef CMT
++#define CMT " (large shift amount, negative input)"
++  TEST_VQSHL(int, , int, s, 8, 8, expected_cumulative_sat_neg_large, CMT);
++  TEST_VQSHL(int, , int, s, 16, 4, expected_cumulative_sat_neg_large, CMT);
++  TEST_VQSHL(int, , int, s, 32, 2, expected_cumulative_sat_neg_large, CMT);
++  TEST_VQSHL(int, , int, s, 64, 1, expected_cumulative_sat_neg_large, CMT);
++  TEST_VQSHL(int, , uint, u, 8, 8, expected_cumulative_sat_neg_large, CMT);
++  TEST_VQSHL(int, , uint, u, 16, 4, expected_cumulative_sat_neg_large, CMT);
++  TEST_VQSHL(int, , uint, u, 32, 2, expected_cumulative_sat_neg_large, CMT);
++  TEST_VQSHL(int, , uint, u, 64, 1, expected_cumulative_sat_neg_large, CMT);
++  TEST_VQSHL(int, q, int, s, 8, 16, expected_cumulative_sat_neg_large, CMT);
++  TEST_VQSHL(int, q, int, s, 16, 8, expected_cumulative_sat_neg_large, CMT);
++  TEST_VQSHL(int, q, int, s, 32, 4, expected_cumulative_sat_neg_large, CMT);
++  TEST_VQSHL(int, q, int, s, 64, 2, expected_cumulative_sat_neg_large, CMT);
++  TEST_VQSHL(int, q, uint, u, 8, 16, expected_cumulative_sat_neg_large, CMT);
++  TEST_VQSHL(int, q, uint, u, 16, 8, expected_cumulative_sat_neg_large, CMT);
++  TEST_VQSHL(int, q, uint, u, 32, 4, expected_cumulative_sat_neg_large, CMT);
++  TEST_VQSHL(int, q, uint, u, 64, 2, expected_cumulative_sat_neg_large, CMT);
++
++  CHECK(TEST_MSG, int, 8, 8, PRIx8, expected_neg_large, CMT);
++  CHECK(TEST_MSG, int, 16, 4, PRIx16, expected_neg_large, CMT);
++  CHECK(TEST_MSG, int, 32, 2, PRIx32, expected_neg_large, CMT);
++  CHECK(TEST_MSG, int, 64, 1, PRIx64, expected_neg_large, CMT);
++  CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected_neg_large, CMT);
++  CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected_neg_large, CMT);
++  CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected_neg_large, CMT);
++  CHECK(TEST_MSG, uint, 64, 1, PRIx64, expected_neg_large, CMT);
++  CHECK(TEST_MSG, int, 8, 16, PRIx8, expected_neg_large, CMT);
++  CHECK(TEST_MSG, int, 16, 8, PRIx16, expected_neg_large, CMT);
++  CHECK(TEST_MSG, int, 32, 4, PRIx32, expected_neg_large, CMT);
++  CHECK(TEST_MSG, int, 64, 2, PRIx64, expected_neg_large, CMT);
++  CHECK(TEST_MSG, uint, 8, 16, PRIx8, expected_neg_large, CMT);
++  CHECK(TEST_MSG, uint, 16, 8, PRIx16, expected_neg_large, CMT);
++  CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected_neg_large, CMT);
++  CHECK(TEST_MSG, uint, 64, 2, PRIx64, expected_neg_large, CMT);
++
++
++  /* Fill input vector with max value, to check saturation on limits */
++  VDUP(vector, , int, s, 8, 8, 0x7F);
++  VDUP(vector, , int, s, 16, 4, 0x7FFF);
++  VDUP(vector, , int, s, 32, 2, 0x7FFFFFFF);
++  VDUP(vector, , int, s, 64, 1, 0x7FFFFFFFFFFFFFFFLL);
++  VDUP(vector, , uint, u, 8, 8, 0xFF);
++  VDUP(vector, , uint, u, 16, 4, 0xFFFF);
++  VDUP(vector, , uint, u, 32, 2, 0xFFFFFFFF);
++  VDUP(vector, , uint, u, 64, 1, 0xFFFFFFFFFFFFFFFFULL);
++  VDUP(vector, q, int, s, 8, 16, 0x7F);
++  VDUP(vector, q, int, s, 16, 8, 0x7FFF);
++  VDUP(vector, q, int, s, 32, 4, 0x7FFFFFFF);
++  VDUP(vector, q, int, s, 64, 2, 0x7FFFFFFFFFFFFFFFLL);
++  VDUP(vector, q, uint, u, 8, 16, 0xFF);
++  VDUP(vector, q, uint, u, 16, 8, 0xFFFF);
++  VDUP(vector, q, uint, u, 32, 4, 0xFFFFFFFF);
++  VDUP(vector, q, uint, u, 64, 2, 0xFFFFFFFFFFFFFFFFULL);
++
++  /* Shift by -1 */
++  VDUP(vector_shift, , int, s, 8, 8, -1);
++  VDUP(vector_shift, , int, s, 16, 4, -1);
++  VDUP(vector_shift, , int, s, 32, 2, -1);
++  VDUP(vector_shift, , int, s, 64, 1, -1);
++  VDUP(vector_shift, q, int, s, 8, 16, -1);
++  VDUP(vector_shift, q, int, s, 16, 8, -1);
++  VDUP(vector_shift, q, int, s, 32, 4, -1);
++  VDUP(vector_shift, q, int, s, 64, 2, -1);
++
++#undef CMT
++#define CMT " (max input, shift by -1)"
++  TEST_VQSHL(int, , int, s, 8, 8, expected_cumulative_sat_max_minus1, CMT);
++  TEST_VQSHL(int, , int, s, 16, 4, expected_cumulative_sat_max_minus1, CMT);
++  TEST_VQSHL(int, , int, s, 32, 2, expected_cumulative_sat_max_minus1, CMT);
++  TEST_VQSHL(int, , int, s, 64, 1, expected_cumulative_sat_max_minus1, CMT);
++  TEST_VQSHL(int, , uint, u, 8, 8, expected_cumulative_sat_max_minus1, CMT);
++  TEST_VQSHL(int, , uint, u, 16, 4, expected_cumulative_sat_max_minus1, CMT);
++  TEST_VQSHL(int, , uint, u, 32, 2, expected_cumulative_sat_max_minus1, CMT);
++  TEST_VQSHL(int, , uint, u, 64, 1, expected_cumulative_sat_max_minus1, CMT);
++  TEST_VQSHL(int, q, int, s, 8, 16, expected_cumulative_sat_max_minus1, CMT);
++  TEST_VQSHL(int, q, int, s, 16, 8, expected_cumulative_sat_max_minus1, CMT);
++  TEST_VQSHL(int, q, int, s, 32, 4, expected_cumulative_sat_max_minus1, CMT);
++  TEST_VQSHL(int, q, int, s, 64, 2, expected_cumulative_sat_max_minus1, CMT);
++  TEST_VQSHL(int, q, uint, u, 8, 16, expected_cumulative_sat_max_minus1, CMT);
++  TEST_VQSHL(int, q, uint, u, 16, 8, expected_cumulative_sat_max_minus1, CMT);
++  TEST_VQSHL(int, q, uint, u, 32, 4, expected_cumulative_sat_max_minus1, CMT);
++  TEST_VQSHL(int, q, uint, u, 64, 2, expected_cumulative_sat_max_minus1, CMT);
++
++  CHECK(TEST_MSG, int, 8, 8, PRIx8, expected_max_minus1, CMT);
++  CHECK(TEST_MSG, int, 16, 4, PRIx16, expected_max_minus1, CMT);
++  CHECK(TEST_MSG, int, 32, 2, PRIx32, expected_max_minus1, CMT);
++  CHECK(TEST_MSG, int, 64, 1, PRIx64, expected_max_minus1, CMT);
++  CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected_max_minus1, CMT);
++  CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected_max_minus1, CMT);
++  CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected_max_minus1, CMT);
++  CHECK(TEST_MSG, uint, 64, 1, PRIx64, expected_max_minus1, CMT);
++  CHECK(TEST_MSG, int, 8, 16, PRIx8, expected_max_minus1, CMT);
++  CHECK(TEST_MSG, int, 16, 8, PRIx16, expected_max_minus1, CMT);
++  CHECK(TEST_MSG, int, 32, 4, PRIx32, expected_max_minus1, CMT);
++  CHECK(TEST_MSG, int, 64, 2, PRIx64, expected_max_minus1, CMT);
++  CHECK(TEST_MSG, uint, 8, 16, PRIx8, expected_max_minus1, CMT);
++  CHECK(TEST_MSG, uint, 16, 8, PRIx16, expected_max_minus1, CMT);
++  CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected_max_minus1, CMT);
++  CHECK(TEST_MSG, uint, 64, 2, PRIx64, expected_max_minus1, CMT);
++
++
++  /* Use large shift amounts */
++  VDUP(vector_shift, , int, s, 8, 8, 8);
++  VDUP(vector_shift, , int, s, 16, 4, 16);
++  VDUP(vector_shift, , int, s, 32, 2, 32);
++  VDUP(vector_shift, , int, s, 64, 1, 64);
++  VDUP(vector_shift, q, int, s, 8, 16, 8);
++  VDUP(vector_shift, q, int, s, 16, 8, 16);
++  VDUP(vector_shift, q, int, s, 32, 4, 32);
++  VDUP(vector_shift, q, int, s, 64, 2, 64);
++
++#undef CMT
++#define CMT " (max input, large shift amount)"
++  TEST_VQSHL(int, , int, s, 8, 8, expected_cumulative_sat_max_large, CMT);
++  TEST_VQSHL(int, , int, s, 16, 4, expected_cumulative_sat_max_large, CMT);
++  TEST_VQSHL(int, , int, s, 32, 2, expected_cumulative_sat_max_large, CMT);
++  TEST_VQSHL(int, , int, s, 64, 1, expected_cumulative_sat_max_large, CMT);
++  TEST_VQSHL(int, , uint, u, 8, 8, expected_cumulative_sat_max_large, CMT);
++  TEST_VQSHL(int, , uint, u, 16, 4, expected_cumulative_sat_max_large, CMT);
++  TEST_VQSHL(int, , uint, u, 32, 2, expected_cumulative_sat_max_large, CMT);
++  TEST_VQSHL(int, , uint, u, 64, 1, expected_cumulative_sat_max_large, CMT);
++  TEST_VQSHL(int, q, int, s, 8, 16, expected_cumulative_sat_max_large, CMT);
++  TEST_VQSHL(int, q, int, s, 16, 8, expected_cumulative_sat_max_large, CMT);
++  TEST_VQSHL(int, q, int, s, 32, 4, expected_cumulative_sat_max_large, CMT);
++  TEST_VQSHL(int, q, int, s, 64, 2, expected_cumulative_sat_max_large, CMT);
++  TEST_VQSHL(int, q, uint, u, 8, 16, expected_cumulative_sat_max_large, CMT);
++  TEST_VQSHL(int, q, uint, u, 16, 8, expected_cumulative_sat_max_large, CMT);
++  TEST_VQSHL(int, q, uint, u, 32, 4, expected_cumulative_sat_max_large, CMT);
++  TEST_VQSHL(int, q, uint, u, 64, 2, expected_cumulative_sat_max_large, CMT);
++
++  CHECK(TEST_MSG, int, 8, 8, PRIx8, expected_max_large, CMT);
++  CHECK(TEST_MSG, int, 16, 4, PRIx16, expected_max_large, CMT);
++  CHECK(TEST_MSG, int, 32, 2, PRIx32, expected_max_large, CMT);
++  CHECK(TEST_MSG, int, 64, 1, PRIx64, expected_max_large, CMT);
++  CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected_max_large, CMT);
++  CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected_max_large, CMT);
++  CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected_max_large, CMT);
++  CHECK(TEST_MSG, uint, 64, 1, PRIx64, expected_max_large, CMT);
++  CHECK(TEST_MSG, int, 8, 16, PRIx8, expected_max_large, CMT);
++  CHECK(TEST_MSG, int, 16, 8, PRIx16, expected_max_large, CMT);
++  CHECK(TEST_MSG, int, 32, 4, PRIx32, expected_max_large, CMT);
++  CHECK(TEST_MSG, int, 64, 2, PRIx64, expected_max_large, CMT);
++  CHECK(TEST_MSG, uint, 8, 16, PRIx8, expected_max_large, CMT);
++  CHECK(TEST_MSG, uint, 16, 8, PRIx16, expected_max_large, CMT);
++  CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected_max_large, CMT);
++  CHECK(TEST_MSG, uint, 64, 2, PRIx64, expected_max_large, CMT);
++
++
++  /* Check 64 bits saturation.  */
++  VDUP(vector, , int, s, 64, 1, -10);
++  VDUP(vector_shift, , int, s, 64, 1, 64);
++  VDUP(vector, q, int, s, 64, 2, 10);
++  VDUP(vector_shift, q, int, s, 64, 2, 64);
++
++#undef CMT
++#define CMT " (check saturation on 64 bits)"
++  TEST_VQSHL(int, , int, s, 64, 1, expected_cumulative_sat_64, CMT);
++  TEST_VQSHL(int, q, int, s, 64, 2, expected_cumulative_sat_64, CMT);
++
++  CHECK(TEST_MSG, int, 64, 1, PRIx64, expected_64, CMT);
++  CHECK(TEST_MSG, int, 64, 2, PRIx64, expected_64, CMT);
++}
++
++int main (void)
++{
++  exec_vqshl ();
++  return 0;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqshl_n.c
+@@ -0,0 +1,234 @@
++#include <arm_neon.h>
++#include "arm-neon-ref.h"
++#include "compute-ref-data.h"
++
++/* Expected values of cumulative_saturation flag.  */
++int VECT_VAR(expected_cumulative_sat,int,8,8) = 0;
++int VECT_VAR(expected_cumulative_sat,int,16,4) = 0;
++int VECT_VAR(expected_cumulative_sat,int,32,2) = 0;
++int VECT_VAR(expected_cumulative_sat,int,64,1) = 0;
++int VECT_VAR(expected_cumulative_sat,uint,8,8) = 1;
++int VECT_VAR(expected_cumulative_sat,uint,16,4) = 1;
++int VECT_VAR(expected_cumulative_sat,uint,32,2) = 1;
++int VECT_VAR(expected_cumulative_sat,uint,64,1) = 1;
++int VECT_VAR(expected_cumulative_sat,int,8,16) = 0;
++int VECT_VAR(expected_cumulative_sat,int,16,8) = 0;
++int VECT_VAR(expected_cumulative_sat,int,32,4) = 0;
++int VECT_VAR(expected_cumulative_sat,int,64,2) = 0;
++int VECT_VAR(expected_cumulative_sat,uint,8,16) = 1;
++int VECT_VAR(expected_cumulative_sat,uint,16,8) = 1;
++int VECT_VAR(expected_cumulative_sat,uint,32,4) = 1;
++int VECT_VAR(expected_cumulative_sat,uint,64,2) = 1;
++
++/* Expected results.  */
++VECT_VAR_DECL(expected,int,8,8) [] = { 0xc0, 0xc4, 0xc8, 0xcc,
++				       0xd0, 0xd4, 0xd8, 0xdc };
++VECT_VAR_DECL(expected,int,16,4) [] = { 0xffe0, 0xffe2, 0xffe4, 0xffe6 };
++VECT_VAR_DECL(expected,int,32,2) [] = { 0xffffffe0, 0xffffffe2 };
++VECT_VAR_DECL(expected,int,64,1) [] = { 0xffffffffffffffc0 };
++VECT_VAR_DECL(expected,uint,8,8) [] = { 0xff, 0xff, 0xff, 0xff,
++					0xff, 0xff, 0xff, 0xff };
++VECT_VAR_DECL(expected,uint,16,4) [] = { 0xffff, 0xffff, 0xffff, 0xffff };
++VECT_VAR_DECL(expected,uint,32,2) [] = { 0xffffffff, 0xffffffff };
++VECT_VAR_DECL(expected,uint,64,1) [] = { 0xffffffffffffffff };
++VECT_VAR_DECL(expected,int,8,16) [] = { 0xc0, 0xc4, 0xc8, 0xcc,
++					0xd0, 0xd4, 0xd8, 0xdc,
++					0xe0, 0xe4, 0xe8, 0xec,
++					0xf0, 0xf4, 0xf8, 0xfc };
++VECT_VAR_DECL(expected,int,16,8) [] = { 0xffe0, 0xffe2, 0xffe4, 0xffe6,
++					0xffe8, 0xffea, 0xffec, 0xffee };
++VECT_VAR_DECL(expected,int,32,4) [] = { 0xffffffe0, 0xffffffe2,
++					0xffffffe4, 0xffffffe6 };
++VECT_VAR_DECL(expected,int,64,2) [] = { 0xffffffffffffffc0, 0xffffffffffffffc4 };
++VECT_VAR_DECL(expected,uint,8,16) [] = { 0xff, 0xff, 0xff, 0xff,
++					 0xff, 0xff, 0xff, 0xff,
++					 0xff, 0xff, 0xff, 0xff,
++					 0xff, 0xff, 0xff, 0xff };
++VECT_VAR_DECL(expected,uint,16,8) [] = { 0xffff, 0xffff, 0xffff, 0xffff,
++					 0xffff, 0xffff, 0xffff, 0xffff };
++VECT_VAR_DECL(expected,uint,32,4) [] = { 0xffffffff, 0xffffffff,
++					 0xffffffff, 0xffffffff };
++VECT_VAR_DECL(expected,uint,64,2) [] = { 0xffffffffffffffff,
++					 0xffffffffffffffff };
++
++/* Expected values of cumulative_saturation flag with max positive input.  */
++int VECT_VAR(expected_cumulative_sat_max,int,8,8) = 1;
++int VECT_VAR(expected_cumulative_sat_max,int,16,4) = 1;
++int VECT_VAR(expected_cumulative_sat_max,int,32,2) = 1;
++int VECT_VAR(expected_cumulative_sat_max,int,64,1) = 1;
++int VECT_VAR(expected_cumulative_sat_max,uint,8,8) = 1;
++int VECT_VAR(expected_cumulative_sat_max,uint,16,4) = 1;
++int VECT_VAR(expected_cumulative_sat_max,uint,32,2) = 1;
++int VECT_VAR(expected_cumulative_sat_max,uint,64,1) = 1;
++int VECT_VAR(expected_cumulative_sat_max,int,8,16) = 1;
++int VECT_VAR(expected_cumulative_sat_max,int,16,8) = 1;
++int VECT_VAR(expected_cumulative_sat_max,int,32,4) = 1;
++int VECT_VAR(expected_cumulative_sat_max,int,64,2) = 1;
++int VECT_VAR(expected_cumulative_sat_max,uint,8,16) = 1;
++int VECT_VAR(expected_cumulative_sat_max,uint,16,8) = 1;
++int VECT_VAR(expected_cumulative_sat_max,uint,32,4) = 1;
++int VECT_VAR(expected_cumulative_sat_max,uint,64,2) = 1;
++
++/* Expected results with max positive input.  */
++VECT_VAR_DECL(expected_max,int,8,8) [] = { 0x7f, 0x7f, 0x7f, 0x7f,
++					   0x7f, 0x7f, 0x7f, 0x7f };
++VECT_VAR_DECL(expected_max,int,16,4) [] = { 0x7fff, 0x7fff, 0x7fff, 0x7fff };
++VECT_VAR_DECL(expected_max,int,32,2) [] = { 0x7fffffff, 0x7fffffff };
++VECT_VAR_DECL(expected_max,int,64,1) [] = { 0x7fffffffffffffff };
++VECT_VAR_DECL(expected_max,uint,8,8) [] = { 0xff, 0xff, 0xff, 0xff,
++					    0xff, 0xff, 0xff, 0xff };
++VECT_VAR_DECL(expected_max,uint,16,4) [] = { 0xffff, 0xffff, 0xffff, 0xffff };
++VECT_VAR_DECL(expected_max,uint,32,2) [] = { 0xffffffff, 0xffffffff };
++VECT_VAR_DECL(expected_max,uint,64,1) [] = { 0xffffffffffffffff };
++VECT_VAR_DECL(expected_max,int,8,16) [] = { 0x7f, 0x7f, 0x7f, 0x7f,
++					    0x7f, 0x7f, 0x7f, 0x7f,
++					    0x7f, 0x7f, 0x7f, 0x7f,
++					    0x7f, 0x7f, 0x7f, 0x7f };
++VECT_VAR_DECL(expected_max,int,16,8) [] = { 0x7fff, 0x7fff, 0x7fff, 0x7fff,
++					    0x7fff, 0x7fff, 0x7fff, 0x7fff };
++VECT_VAR_DECL(expected_max,int,32,4) [] = { 0x7fffffff, 0x7fffffff,
++					    0x7fffffff, 0x7fffffff };
++VECT_VAR_DECL(expected_max,int,64,2) [] = { 0x7fffffffffffffff,
++					    0x7fffffffffffffff };
++VECT_VAR_DECL(expected_max,uint,8,16) [] = { 0xff, 0xff, 0xff, 0xff,
++					     0xff, 0xff, 0xff, 0xff,
++					     0xff, 0xff, 0xff, 0xff,
++					     0xff, 0xff, 0xff, 0xff };
++VECT_VAR_DECL(expected_max,uint,16,8) [] = { 0xffff, 0xffff, 0xffff, 0xffff,
++					     0xffff, 0xffff, 0xffff, 0xffff };
++VECT_VAR_DECL(expected_max,uint,32,4) [] = { 0xffffffff, 0xffffffff,
++					     0xffffffff, 0xffffffff };
++VECT_VAR_DECL(expected_max,uint,64,2) [] = { 0xffffffffffffffff,
++					     0xffffffffffffffff };
++
++#define INSN vqshl
++#define TEST_MSG "VQSHL_N/VQSHLQ_N"
++
++#define FNNAME1(NAME) void exec_ ## NAME ##_n (void)
++#define FNNAME(NAME) FNNAME1(NAME)
++
++FNNAME (INSN)
++{
++  /* Basic test: v2=vqshl_n(v1,v), then store the result.  */
++#define TEST_VQSHL_N2(INSN, Q, T1, T2, W, N, V, EXPECTED_CUMULATIVE_SAT, CMT) \
++  Set_Neon_Cumulative_Sat(0, VECT_VAR(vector_res, T1, W, N));		\
++  VECT_VAR(vector_res, T1, W, N) =					\
++    INSN##Q##_n_##T2##W(VECT_VAR(vector, T1, W, N),			\
++			V);						\
++  vst1##Q##_##T2##W(VECT_VAR(result, T1, W, N),				\
++		    VECT_VAR(vector_res, T1, W, N));			\
++  CHECK_CUMULATIVE_SAT(TEST_MSG, T1, W, N, EXPECTED_CUMULATIVE_SAT, CMT)
++
++  /* Two auxliary macros are necessary to expand INSN */
++#define TEST_VQSHL_N1(INSN, T3, Q, T1, T2, W, N, EXPECTED_CUMULATIVE_SAT, CMT) \
++  TEST_VQSHL_N2(INSN, T3, Q, T1, T2, W, N, EXPECTED_CUMULATIVE_SAT, CMT)
++
++#define TEST_VQSHL_N(T3, Q, T1, T2, W, N, EXPECTED_CUMULATIVE_SAT, CMT)	\
++  TEST_VQSHL_N1(INSN, T3, Q, T1, T2, W, N, EXPECTED_CUMULATIVE_SAT, CMT)
++
++  DECL_VARIABLE_ALL_VARIANTS(vector);
++  DECL_VARIABLE_ALL_VARIANTS(vector_res);
++
++  clean_results ();
++
++  TEST_MACRO_ALL_VARIANTS_2_5(VLOAD, vector, buffer);
++
++  /* Choose shift amount arbitrarily.  */
++#define CMT ""
++  TEST_VQSHL_N(, int, s, 8, 8, 2, expected_cumulative_sat, CMT);
++  TEST_VQSHL_N(, int, s, 16, 4, 1, expected_cumulative_sat, CMT);
++  TEST_VQSHL_N(, int, s, 32, 2, 1, expected_cumulative_sat, CMT);
++  TEST_VQSHL_N(, int, s, 64, 1, 2, expected_cumulative_sat, CMT);
++  TEST_VQSHL_N(, uint, u, 8, 8, 3, expected_cumulative_sat, CMT);
++  TEST_VQSHL_N(, uint, u, 16, 4, 2, expected_cumulative_sat, CMT);
++  TEST_VQSHL_N(, uint, u, 32, 2, 3, expected_cumulative_sat, CMT);
++  TEST_VQSHL_N(, uint, u, 64, 1, 3, expected_cumulative_sat, CMT);
++
++  TEST_VQSHL_N(q, int, s, 8, 16, 2, expected_cumulative_sat, CMT);
++  TEST_VQSHL_N(q, int, s, 16, 8, 1, expected_cumulative_sat, CMT);
++  TEST_VQSHL_N(q, int, s, 32, 4, 1, expected_cumulative_sat, CMT);
++  TEST_VQSHL_N(q, int, s, 64, 2, 2, expected_cumulative_sat, CMT);
++  TEST_VQSHL_N(q, uint, u, 8, 16, 3, expected_cumulative_sat, CMT);
++  TEST_VQSHL_N(q, uint, u, 16, 8, 2, expected_cumulative_sat, CMT);
++  TEST_VQSHL_N(q, uint, u, 32, 4, 3, expected_cumulative_sat, CMT);
++  TEST_VQSHL_N(q, uint, u, 64, 2, 3, expected_cumulative_sat, CMT);
++
++  CHECK(TEST_MSG, int, 8, 8, PRIx8, expected, CMT);
++  CHECK(TEST_MSG, int, 16, 4, PRIx16, expected, CMT);
++  CHECK(TEST_MSG, int, 32, 2, PRIx32, expected, CMT);
++  CHECK(TEST_MSG, int, 64, 1, PRIx64, expected, CMT);
++  CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected, CMT);
++  CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected, CMT);
++  CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected, CMT);
++  CHECK(TEST_MSG, uint, 64, 1, PRIx64, expected, CMT);
++  CHECK(TEST_MSG, int, 8, 16, PRIx8, expected, CMT);
++  CHECK(TEST_MSG, int, 16, 8, PRIx16, expected, CMT);
++  CHECK(TEST_MSG, int, 32, 4, PRIx32, expected, CMT);
++  CHECK(TEST_MSG, int, 64, 2, PRIx64, expected, CMT);
++  CHECK(TEST_MSG, uint, 8, 16, PRIx8, expected, CMT);
++  CHECK(TEST_MSG, uint, 16, 8, PRIx16, expected, CMT);
++  CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected, CMT);
++  CHECK(TEST_MSG, uint, 64, 2, PRIx64, expected, CMT);
++
++
++  /* Fill input vector with max value, to check saturation on limits.  */
++  VDUP(vector, , int, s, 8, 8, 0x7F);
++  VDUP(vector, , int, s, 16, 4, 0x7FFF);
++  VDUP(vector, , int, s, 32, 2, 0x7FFFFFFF);
++  VDUP(vector, , int, s, 64, 1, 0x7FFFFFFFFFFFFFFFLL);
++  VDUP(vector, , uint, u, 8, 8, 0xFF);
++  VDUP(vector, , uint, u, 16, 4, 0xFFFF);
++  VDUP(vector, , uint, u, 32, 2, 0xFFFFFFFF);
++  VDUP(vector, , uint, u, 64, 1, 0xFFFFFFFFFFFFFFFFULL);
++  VDUP(vector, q, int, s, 8, 16, 0x7F);
++  VDUP(vector, q, int, s, 16, 8, 0x7FFF);
++  VDUP(vector, q, int, s, 32, 4, 0x7FFFFFFF);
++  VDUP(vector, q, int, s, 64, 2, 0x7FFFFFFFFFFFFFFFLL);
++  VDUP(vector, q, uint, u, 8, 16, 0xFF);
++  VDUP(vector, q, uint, u, 16, 8, 0xFFFF);
++  VDUP(vector, q, uint, u, 32, 4, 0xFFFFFFFF);
++  VDUP(vector, q, uint, u, 64, 2, 0xFFFFFFFFFFFFFFFFULL);
++
++#undef CMT
++#define CMT " (with max input)"
++  TEST_VQSHL_N(, int, s, 8, 8, 2, expected_cumulative_sat_max, CMT);
++  TEST_VQSHL_N(, int, s, 16, 4, 1, expected_cumulative_sat_max, CMT);
++  TEST_VQSHL_N(, int, s, 32, 2, 1, expected_cumulative_sat_max, CMT);
++  TEST_VQSHL_N(, int, s, 64, 1, 2, expected_cumulative_sat_max, CMT);
++  TEST_VQSHL_N(, uint, u, 8, 8, 3, expected_cumulative_sat_max, CMT);
++  TEST_VQSHL_N(, uint, u, 16, 4, 2, expected_cumulative_sat_max, CMT);
++  TEST_VQSHL_N(, uint, u, 32, 2, 3, expected_cumulative_sat_max, CMT);
++  TEST_VQSHL_N(, uint, u, 64, 1, 3, expected_cumulative_sat_max, CMT);
++
++  TEST_VQSHL_N(q, int, s, 8, 16, 2, expected_cumulative_sat_max, CMT);
++  TEST_VQSHL_N(q, int, s, 16, 8, 1, expected_cumulative_sat_max, CMT);
++  TEST_VQSHL_N(q, int, s, 32, 4, 1, expected_cumulative_sat_max, CMT);
++  TEST_VQSHL_N(q, int, s, 64, 2, 2, expected_cumulative_sat_max, CMT);
++  TEST_VQSHL_N(q, uint, u, 8, 16, 3, expected_cumulative_sat_max, CMT);
++  TEST_VQSHL_N(q, uint, u, 16, 8, 2, expected_cumulative_sat_max, CMT);
++  TEST_VQSHL_N(q, uint, u, 32, 4, 3, expected_cumulative_sat_max, CMT);
++  TEST_VQSHL_N(q, uint, u, 64, 2, 3, expected_cumulative_sat_max, CMT);
++
++  CHECK(TEST_MSG, int, 8, 8, PRIx8, expected_max, CMT);
++  CHECK(TEST_MSG, int, 16, 4, PRIx16, expected_max, CMT);
++  CHECK(TEST_MSG, int, 32, 2, PRIx32, expected_max, CMT);
++  CHECK(TEST_MSG, int, 64, 1, PRIx64, expected_max, CMT);
++  CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected_max, CMT);
++  CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected_max, CMT);
++  CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected_max, CMT);
++  CHECK(TEST_MSG, uint, 64, 1, PRIx64, expected_max, CMT);
++  CHECK(TEST_MSG, int, 8, 16, PRIx8, expected_max, CMT);
++  CHECK(TEST_MSG, int, 16, 8, PRIx16, expected_max, CMT);
++  CHECK(TEST_MSG, int, 32, 4, PRIx32, expected_max, CMT);
++  CHECK(TEST_MSG, int, 64, 2, PRIx64, expected_max, CMT);
++  CHECK(TEST_MSG, uint, 8, 16, PRIx8, expected_max, CMT);
++  CHECK(TEST_MSG, uint, 16, 8, PRIx16, expected_max, CMT);
++  CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected_max, CMT);
++  CHECK(TEST_MSG, uint, 64, 2, PRIx64, expected_max, CMT);
++}
++
++int main (void)
++{
++  exec_vqshl_n ();
++  return 0;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqshlu_n.c
+@@ -0,0 +1,263 @@
++#include <arm_neon.h>
++#include "arm-neon-ref.h"
++#include "compute-ref-data.h"
++
++/* Expected values of cumulative_saturation flag with negative
++   input.  */
++int VECT_VAR(expected_cumulative_sat_neg,int,8,8) = 1;
++int VECT_VAR(expected_cumulative_sat_neg,int,16,4) = 1;
++int VECT_VAR(expected_cumulative_sat_neg,int,32,2) = 1;
++int VECT_VAR(expected_cumulative_sat_neg,int,64,1) = 1;
++int VECT_VAR(expected_cumulative_sat_neg,int,8,16) = 1;
++int VECT_VAR(expected_cumulative_sat_neg,int,16,8) = 1;
++int VECT_VAR(expected_cumulative_sat_neg,int,32,4) = 1;
++int VECT_VAR(expected_cumulative_sat_neg,int,64,2) = 1;
++
++/* Expected results with negative input.  */
++VECT_VAR_DECL(expected_neg,uint,8,8) [] = { 0x0, 0x0, 0x0, 0x0,
++					    0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_neg,uint,16,4) [] = { 0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_neg,uint,32,2) [] = { 0x0, 0x0 };
++VECT_VAR_DECL(expected_neg,uint,64,1) [] = { 0x0 };
++VECT_VAR_DECL(expected_neg,uint,8,16) [] = { 0x0, 0x0, 0x0, 0x0,
++					     0x0, 0x0, 0x0, 0x0,
++					     0x0, 0x0, 0x0, 0x0,
++					     0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_neg,uint,16,8) [] = { 0x0, 0x0, 0x0, 0x0,
++					     0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_neg,uint,32,4) [] = { 0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_neg,uint,64,2) [] = { 0x0, 0x0 };
++
++/* Expected values of cumulative_saturation flag with shift by 1.  */
++int VECT_VAR(expected_cumulative_sat_sh1,int,8,8) = 0;
++int VECT_VAR(expected_cumulative_sat_sh1,int,16,4) = 0;
++int VECT_VAR(expected_cumulative_sat_sh1,int,32,2) = 0;
++int VECT_VAR(expected_cumulative_sat_sh1,int,64,1) = 0;
++int VECT_VAR(expected_cumulative_sat_sh1,int,8,16) = 0;
++int VECT_VAR(expected_cumulative_sat_sh1,int,16,8) = 0;
++int VECT_VAR(expected_cumulative_sat_sh1,int,32,4) = 0;
++int VECT_VAR(expected_cumulative_sat_sh1,int,64,2) = 0;
++
++/* Expected results with shift by 1.  */
++VECT_VAR_DECL(expected_sh1,uint,8,8) [] = { 0xfe, 0xfe, 0xfe, 0xfe,
++					    0xfe, 0xfe, 0xfe, 0xfe };
++VECT_VAR_DECL(expected_sh1,uint,16,4) [] = { 0xfffe, 0xfffe, 0xfffe, 0xfffe };
++VECT_VAR_DECL(expected_sh1,uint,32,2) [] = { 0xfffffffe, 0xfffffffe };
++VECT_VAR_DECL(expected_sh1,uint,64,1) [] = { 0xfffffffffffffffe };
++VECT_VAR_DECL(expected_sh1,uint,8,16) [] = { 0xfe, 0xfe, 0xfe, 0xfe,
++					     0xfe, 0xfe, 0xfe, 0xfe,
++					     0xfe, 0xfe, 0xfe, 0xfe,
++					     0xfe, 0xfe, 0xfe, 0xfe };
++VECT_VAR_DECL(expected_sh1,uint,16,8) [] = { 0xfffe, 0xfffe, 0xfffe, 0xfffe,
++					     0xfffe, 0xfffe, 0xfffe, 0xfffe };
++VECT_VAR_DECL(expected_sh1,uint,32,4) [] = { 0xfffffffe, 0xfffffffe,
++					     0xfffffffe, 0xfffffffe };
++VECT_VAR_DECL(expected_sh1,uint,64,2) [] = { 0xfffffffffffffffe,
++					     0xfffffffffffffffe };
++
++/* Expected values of cumulative_saturation flag with shift by 2.  */
++int VECT_VAR(expected_cumulative_sat_sh2,int,8,8) = 1;
++int VECT_VAR(expected_cumulative_sat_sh2,int,16,4) = 1;
++int VECT_VAR(expected_cumulative_sat_sh2,int,32,2) = 1;
++int VECT_VAR(expected_cumulative_sat_sh2,int,64,1) = 1;
++int VECT_VAR(expected_cumulative_sat_sh2,int,8,16) = 1;
++int VECT_VAR(expected_cumulative_sat_sh2,int,16,8) = 1;
++int VECT_VAR(expected_cumulative_sat_sh2,int,32,4) = 1;
++int VECT_VAR(expected_cumulative_sat_sh2,int,64,2) = 1;
++
++/* Expected results with shift by 2.  */
++VECT_VAR_DECL(expected_sh2,uint,8,8) [] = { 0xff, 0xff, 0xff, 0xff,
++					    0xff, 0xff, 0xff, 0xff };
++VECT_VAR_DECL(expected_sh2,uint,16,4) [] = { 0xffff, 0xffff, 0xffff, 0xffff };
++VECT_VAR_DECL(expected_sh2,uint,32,2) [] = { 0xffffffff, 0xffffffff };
++VECT_VAR_DECL(expected_sh2,uint,64,1) [] = { 0xffffffffffffffff };
++VECT_VAR_DECL(expected_sh2,uint,8,16) [] = { 0xff, 0xff, 0xff, 0xff,
++					     0xff, 0xff, 0xff, 0xff,
++					     0xff, 0xff, 0xff, 0xff,
++					     0xff, 0xff, 0xff, 0xff };
++VECT_VAR_DECL(expected_sh2,uint,16,8) [] = { 0xffff, 0xffff, 0xffff, 0xffff,
++					     0xffff, 0xffff, 0xffff, 0xffff };
++VECT_VAR_DECL(expected_sh2,uint,32,4) [] = { 0xffffffff, 0xffffffff,
++					     0xffffffff, 0xffffffff };
++VECT_VAR_DECL(expected_sh2,uint,64,2) [] = { 0xffffffffffffffff,
++					     0xffffffffffffffff };
++
++/* Expected values of cumulative_saturation flag.  */
++int VECT_VAR(expected_cumulative_sat,int,8,8) = 0;
++int VECT_VAR(expected_cumulative_sat,int,16,4) = 0;
++int VECT_VAR(expected_cumulative_sat,int,32,2) = 0;
++int VECT_VAR(expected_cumulative_sat,int,64,1) = 0;
++int VECT_VAR(expected_cumulative_sat,int,8,16) = 0;
++int VECT_VAR(expected_cumulative_sat,int,16,8) = 0;
++int VECT_VAR(expected_cumulative_sat,int,32,4) = 0;
++int VECT_VAR(expected_cumulative_sat,int,64,2) = 0;
++
++/* Expected results.  */
++VECT_VAR_DECL(expected,uint,8,8) [] = { 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2 };
++VECT_VAR_DECL(expected,uint,16,4) [] = { 0x8, 0x8, 0x8, 0x8 };
++VECT_VAR_DECL(expected,uint,32,2) [] = { 0x18, 0x18 };
++VECT_VAR_DECL(expected,uint,64,1) [] = { 0x40 };
++VECT_VAR_DECL(expected,uint,8,16) [] = { 0xa0, 0xa0, 0xa0, 0xa0,
++					 0xa0, 0xa0, 0xa0, 0xa0,
++					 0xa0, 0xa0, 0xa0, 0xa0,
++					 0xa0, 0xa0, 0xa0, 0xa0 };
++VECT_VAR_DECL(expected,uint,16,8) [] = { 0x180, 0x180, 0x180, 0x180,
++					 0x180, 0x180, 0x180, 0x180 };
++VECT_VAR_DECL(expected,uint,32,4) [] = { 0x380, 0x380, 0x380, 0x380 };
++VECT_VAR_DECL(expected,uint,64,2) [] = { 0x800, 0x800 };
++
++
++#define INSN vqshlu
++#define TEST_MSG "VQSHLU_N/VQSHLUQ_N"
++
++#define FNNAME1(NAME) void exec_ ## NAME ## _n(void)
++#define FNNAME(NAME) FNNAME1(NAME)
++
++FNNAME (INSN)
++{
++  /* Basic test: v2=vqshlu_n(v1,v), then store the result.  */
++#define TEST_VQSHLU_N2(INSN, Q, T1, T2, T3, T4, W, N, V, EXPECTED_CUMULATIVE_SAT, CMT) \
++  Set_Neon_Cumulative_Sat(0, VECT_VAR(vector_res, T3, W, N));		\
++  VECT_VAR(vector_res, T3, W, N) =					\
++    INSN##Q##_n_##T2##W(VECT_VAR(vector, T1, W, N),			\
++			V);						\
++  vst1##Q##_##T4##W(VECT_VAR(result, T3, W, N),				\
++		    VECT_VAR(vector_res, T3, W, N));			\
++  CHECK_CUMULATIVE_SAT(TEST_MSG, T1, W, N, EXPECTED_CUMULATIVE_SAT, CMT)
++
++  /* Two auxliary macros are necessary to expand INSN */
++#define TEST_VQSHLU_N1(INSN, Q, T1, T2, T3, T4, W, N, V, EXPECTED_CUMULATIVE_SAT, CMT) \
++  TEST_VQSHLU_N2(INSN, Q, T1, T2, T3, T4, W, N, V, EXPECTED_CUMULATIVE_SAT, CMT)
++
++#define TEST_VQSHLU_N(Q, T1, T2, T3, T4, W, N, V, EXPECTED_CUMULATIVE_SAT, CMT) \
++  TEST_VQSHLU_N1(INSN, Q, T1, T2, T3, T4, W, N, V, EXPECTED_CUMULATIVE_SAT, CMT)
++
++
++  DECL_VARIABLE_ALL_VARIANTS(vector);
++  DECL_VARIABLE_ALL_VARIANTS(vector_res);
++
++  clean_results ();
++
++  /* Fill input vector with negative values, to check saturation on
++     limits.  */
++  VDUP(vector, , int, s, 8, 8, -1);
++  VDUP(vector, , int, s, 16, 4, -2);
++  VDUP(vector, , int, s, 32, 2, -3);
++  VDUP(vector, , int, s, 64, 1, -4);
++  VDUP(vector, q, int, s, 8, 16, -1);
++  VDUP(vector, q, int, s, 16, 8, -2);
++  VDUP(vector, q, int, s, 32, 4, -3);
++  VDUP(vector, q, int, s, 64, 2, -4);
++
++  /* Choose shift amount arbitrarily.  */
++#define CMT " (negative input)"
++  TEST_VQSHLU_N(, int, s, uint, u, 8, 8, 2, expected_cumulative_sat_neg, CMT);
++  TEST_VQSHLU_N(, int, s, uint, u, 16, 4, 1, expected_cumulative_sat_neg, CMT);
++  TEST_VQSHLU_N(, int, s, uint, u, 32, 2, 1, expected_cumulative_sat_neg, CMT);
++  TEST_VQSHLU_N(, int, s, uint, u, 64, 1, 2, expected_cumulative_sat_neg, CMT);
++  TEST_VQSHLU_N(q, int, s, uint, u, 8, 16, 2, expected_cumulative_sat_neg, CMT);
++  TEST_VQSHLU_N(q, int, s, uint, u, 16, 8, 1, expected_cumulative_sat_neg, CMT);
++  TEST_VQSHLU_N(q, int, s, uint, u, 32, 4, 1, expected_cumulative_sat_neg, CMT);
++  TEST_VQSHLU_N(q, int, s, uint, u, 64, 2, 2, expected_cumulative_sat_neg, CMT);
++
++  CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected_neg, CMT);
++  CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected_neg, CMT);
++  CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected_neg, CMT);
++  CHECK(TEST_MSG, uint, 64, 1, PRIx64, expected_neg, CMT);
++  CHECK(TEST_MSG, uint, 8, 16, PRIx8, expected_neg, CMT);
++  CHECK(TEST_MSG, uint, 16, 8, PRIx16, expected_neg, CMT);
++  CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected_neg, CMT);
++  CHECK(TEST_MSG, uint, 64, 2, PRIx64, expected_neg, CMT);
++
++  
++  /* Fill input vector with max value, to check saturation on
++     limits.  */
++  VDUP(vector, , int, s, 8, 8, 0x7F);
++  VDUP(vector, , int, s, 16, 4, 0x7FFF);
++  VDUP(vector, , int, s, 32, 2, 0x7FFFFFFF);
++  VDUP(vector, , int, s, 64, 1, 0x7FFFFFFFFFFFFFFFLL);
++  VDUP(vector, q, int, s, 8, 16, 0x7F);
++  VDUP(vector, q, int, s, 16, 8, 0x7FFF);
++  VDUP(vector, q, int, s, 32, 4, 0x7FFFFFFF);
++  VDUP(vector, q, int, s, 64, 2, 0x7FFFFFFFFFFFFFFFULL);
++
++  /* shift by 1.  */
++#undef CMT
++#define CMT " (shift by 1)"
++  TEST_VQSHLU_N(, int, s, uint, u, 8, 8, 1, expected_cumulative_sat_sh1, CMT);
++  TEST_VQSHLU_N(, int, s, uint, u, 16, 4, 1, expected_cumulative_sat_sh1, CMT);
++  TEST_VQSHLU_N(, int, s, uint, u, 32, 2, 1, expected_cumulative_sat_sh1, CMT);
++  TEST_VQSHLU_N(, int, s, uint, u, 64, 1, 1, expected_cumulative_sat_sh1, CMT);
++  TEST_VQSHLU_N(q, int, s, uint, u, 8, 16, 1, expected_cumulative_sat_sh1, CMT);
++  TEST_VQSHLU_N(q, int, s, uint, u, 16, 8, 1, expected_cumulative_sat_sh1, CMT);
++  TEST_VQSHLU_N(q, int, s, uint, u, 32, 4, 1, expected_cumulative_sat_sh1, CMT);
++  TEST_VQSHLU_N(q, int, s, uint, u, 64, 2, 1, expected_cumulative_sat_sh1, CMT);
++
++  CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected_sh1, CMT);
++  CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected_sh1, CMT);
++  CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected_sh1, CMT);
++  CHECK(TEST_MSG, uint, 64, 1, PRIx64, expected_sh1, CMT);
++  CHECK(TEST_MSG, uint, 8, 16, PRIx8, expected_sh1, CMT);
++  CHECK(TEST_MSG, uint, 16, 8, PRIx16, expected_sh1, CMT);
++  CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected_sh1, CMT);
++  CHECK(TEST_MSG, uint, 64, 2, PRIx64, expected_sh1, CMT);
++
++  /* shift by 2 to force saturation.  */
++#undef CMT
++#define CMT " (shift by 2)"
++  TEST_VQSHLU_N(, int, s, uint, u, 8, 8, 2, expected_cumulative_sat_sh2, CMT);
++  TEST_VQSHLU_N(, int, s, uint, u, 16, 4, 2, expected_cumulative_sat_sh2, CMT);
++  TEST_VQSHLU_N(, int, s, uint, u, 32, 2, 2, expected_cumulative_sat_sh2, CMT);
++  TEST_VQSHLU_N(, int, s, uint, u, 64, 1, 2, expected_cumulative_sat_sh2, CMT);
++  TEST_VQSHLU_N(q, int, s, uint, u, 8, 16, 2, expected_cumulative_sat_sh2, CMT);
++  TEST_VQSHLU_N(q, int, s, uint, u, 16, 8, 2, expected_cumulative_sat_sh2, CMT);
++  TEST_VQSHLU_N(q, int, s, uint, u, 32, 4, 2, expected_cumulative_sat_sh2, CMT);
++  TEST_VQSHLU_N(q, int, s, uint, u, 64, 2, 2, expected_cumulative_sat_sh2, CMT);
++
++  CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected_sh2, CMT);
++  CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected_sh2, CMT);
++  CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected_sh2, CMT);
++  CHECK(TEST_MSG, uint, 64, 1, PRIx64, expected_sh2, CMT);
++  CHECK(TEST_MSG, uint, 8, 16, PRIx8, expected_sh2, CMT);
++  CHECK(TEST_MSG, uint, 16, 8, PRIx16, expected_sh2, CMT);
++  CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected_sh2, CMT);
++  CHECK(TEST_MSG, uint, 64, 2, PRIx64, expected_sh2, CMT);
++
++  
++  /* Fill input vector with positive values, to check normal case.  */
++  VDUP(vector, , int, s, 8, 8, 1);
++  VDUP(vector, , int, s, 16, 4, 2);
++  VDUP(vector, , int, s, 32, 2, 3);
++  VDUP(vector, , int, s, 64, 1, 4);
++  VDUP(vector, q, int, s, 8, 16, 5);
++  VDUP(vector, q, int, s, 16, 8, 6);
++  VDUP(vector, q, int, s, 32, 4, 7);
++  VDUP(vector, q, int, s, 64, 2, 8);
++
++  /* Arbitrary shift amount.  */
++#undef CMT
++#define CMT ""
++  TEST_VQSHLU_N(, int, s, uint, u, 8, 8, 1, expected_cumulative_sat, CMT);
++  TEST_VQSHLU_N(, int, s, uint, u, 16, 4, 2, expected_cumulative_sat, CMT);
++  TEST_VQSHLU_N(, int, s, uint, u, 32, 2, 3, expected_cumulative_sat, CMT);
++  TEST_VQSHLU_N(, int, s, uint, u, 64, 1, 4, expected_cumulative_sat, CMT);
++  TEST_VQSHLU_N(q, int, s, uint, u, 8, 16, 5, expected_cumulative_sat, CMT);
++  TEST_VQSHLU_N(q, int, s, uint, u, 16, 8, 6, expected_cumulative_sat, CMT);
++  TEST_VQSHLU_N(q, int, s, uint, u, 32, 4, 7, expected_cumulative_sat, CMT);
++  TEST_VQSHLU_N(q, int, s, uint, u, 64, 2, 8, expected_cumulative_sat, CMT);
++
++  CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected, CMT);
++  CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected, CMT);
++  CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected, CMT);
++  CHECK(TEST_MSG, uint, 64, 1, PRIx64, expected, CMT);
++  CHECK(TEST_MSG, uint, 8, 16, PRIx8, expected, CMT);
++  CHECK(TEST_MSG, uint, 16, 8, PRIx16, expected, CMT);
++  CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected, CMT);
++  CHECK(TEST_MSG, uint, 64, 2, PRIx64, expected, CMT);
++}
++
++int main (void)
++{
++  exec_vqshlu_n ();
++  return 0;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqshrn_n.c
+@@ -0,0 +1,177 @@
++#include <arm_neon.h>
++#include "arm-neon-ref.h"
++#include "compute-ref-data.h"
++
++/* Expected values of cumulative_saturation flag.  */
++int VECT_VAR(expected_cumulative_sat,int,16,8) = 0;
++int VECT_VAR(expected_cumulative_sat,int,32,4) = 0;
++int VECT_VAR(expected_cumulative_sat,int,64,2) = 0;
++int VECT_VAR(expected_cumulative_sat,uint,16,8) = 1;
++int VECT_VAR(expected_cumulative_sat,uint,32,4) = 1;
++int VECT_VAR(expected_cumulative_sat,uint,64,2) = 1;
++
++/* Expected results.  */
++VECT_VAR_DECL(expected,int,8,8) [] = { 0xf8, 0xf8, 0xf9, 0xf9,
++				       0xfa, 0xfa, 0xfb, 0xfb };
++VECT_VAR_DECL(expected,int,16,4) [] = { 0xfff8, 0xfff8, 0xfff9, 0xfff9 };
++VECT_VAR_DECL(expected,int,32,2) [] = { 0xfffffffc, 0xfffffffc };
++VECT_VAR_DECL(expected,uint,8,8) [] = { 0xff, 0xff, 0xff, 0xff,
++					0xff, 0xff, 0xff, 0xff };
++VECT_VAR_DECL(expected,uint,16,4) [] = { 0xffff, 0xffff, 0xffff, 0xffff };
++VECT_VAR_DECL(expected,uint,32,2) [] = { 0xffffffff, 0xffffffff };
++
++/* Expected values of cumulative_saturation flag with max input value
++   shifted by 3.  */
++int VECT_VAR(expected_cumulative_sat_max_sh3,int,16,8) = 1;
++int VECT_VAR(expected_cumulative_sat_max_sh3,int,32,4) = 1;
++int VECT_VAR(expected_cumulative_sat_max_sh3,int,64,2) = 1;
++int VECT_VAR(expected_cumulative_sat_max_sh3,uint,16,8) = 1;
++int VECT_VAR(expected_cumulative_sat_max_sh3,uint,32,4) = 1;
++int VECT_VAR(expected_cumulative_sat_max_sh3,uint,64,2) = 1;
++
++/* Expected results with max input value shifted by 3.  */
++VECT_VAR_DECL(expected_max_sh3,int,8,8) [] = { 0x7f, 0x7f, 0x7f, 0x7f,
++					       0x7f, 0x7f, 0x7f, 0x7f };
++VECT_VAR_DECL(expected_max_sh3,int,16,4) [] = { 0x7fff, 0x7fff, 0x7fff, 0x7fff };
++VECT_VAR_DECL(expected_max_sh3,int,32,2) [] = { 0x7fffffff, 0x7fffffff };
++VECT_VAR_DECL(expected_max_sh3,uint,8,8) [] = { 0xff, 0xff, 0xff, 0xff,
++						0xff, 0xff, 0xff, 0xff };
++VECT_VAR_DECL(expected_max_sh3,uint,16,4) [] = { 0xffff, 0xffff,
++						 0xffff, 0xffff };
++VECT_VAR_DECL(expected_max_sh3,uint,32,2) [] = { 0xffffffff, 0xffffffff };
++
++/* Expected values of cumulative_saturation flag with max input value
++   shifted by type size.  */
++int VECT_VAR(expected_cumulative_sat_max_shmax,int,16,8) = 0;
++int VECT_VAR(expected_cumulative_sat_max_shmax,int,32,4) = 0;
++int VECT_VAR(expected_cumulative_sat_max_shmax,int,64,2) = 0;
++int VECT_VAR(expected_cumulative_sat_max_shmax,uint,16,8) = 0;
++int VECT_VAR(expected_cumulative_sat_max_shmax,uint,32,4) = 0;
++int VECT_VAR(expected_cumulative_sat_max_shmax,uint,64,2) = 0;
++
++/* Expected results with max input value shifted by type size.  */
++VECT_VAR_DECL(expected_max_shmax,int,8,8) [] = { 0x7f, 0x7f, 0x7f, 0x7f,
++						 0x7f, 0x7f, 0x7f, 0x7f };
++VECT_VAR_DECL(expected_max_shmax,int,16,4) [] = { 0x7fff, 0x7fff,
++						  0x7fff, 0x7fff };
++VECT_VAR_DECL(expected_max_shmax,int,32,2) [] = { 0x7fffffff, 0x7fffffff };
++VECT_VAR_DECL(expected_max_shmax,uint,8,8) [] = { 0xff, 0xff, 0xff, 0xff,
++						  0xff, 0xff, 0xff, 0xff };
++VECT_VAR_DECL(expected_max_shmax,uint,16,4) [] = { 0xffff, 0xffff,
++						   0xffff, 0xffff };
++VECT_VAR_DECL(expected_max_shmax,uint,32,2) [] = { 0xffffffff, 0xffffffff };
++
++#define INSN vqshrn_n
++#define TEST_MSG "VQSHRN_N"
++
++#define FNNAME1(NAME) void exec_ ## NAME (void)
++#define FNNAME(NAME) FNNAME1(NAME)
++
++FNNAME (INSN)
++{
++  /* Basic test: y=vqshrn_n(x,v), then store the result.  */
++#define TEST_VQSHRN_N2(INSN, T1, T2, W, W2, N, V, EXPECTED_CUMULATIVE_SAT, CMT) \
++  Set_Neon_Cumulative_Sat(0, VECT_VAR(vector_res, T1, W2, N));		\
++  VECT_VAR(vector_res, T1, W2, N) =					\
++    INSN##_##T2##W(VECT_VAR(vector, T1, W, N),				\
++		   V);							\
++  vst1_##T2##W2(VECT_VAR(result, T1, W2, N),				\
++		VECT_VAR(vector_res, T1, W2, N));			\
++  CHECK_CUMULATIVE_SAT(TEST_MSG, T1, W, N, EXPECTED_CUMULATIVE_SAT, CMT)
++
++  /* Two auxliary macros are necessary to expand INSN */
++#define TEST_VQSHRN_N1(INSN, T1, T2, W, W2, N, V, EXPECTED_CUMULATIVE_SAT, CMT) \
++  TEST_VQSHRN_N2(INSN, T1, T2, W, W2, N, V, EXPECTED_CUMULATIVE_SAT, CMT)
++
++#define TEST_VQSHRN_N(T1, T2, W, W2, N, V, EXPECTED_CUMULATIVE_SAT, CMT) \
++  TEST_VQSHRN_N1(INSN, T1, T2, W, W2, N, V, EXPECTED_CUMULATIVE_SAT, CMT)
++
++
++  /* vector is twice as large as vector_res.  */
++  DECL_VARIABLE(vector, int, 16, 8);
++  DECL_VARIABLE(vector, int, 32, 4);
++  DECL_VARIABLE(vector, int, 64, 2);
++  DECL_VARIABLE(vector, uint, 16, 8);
++  DECL_VARIABLE(vector, uint, 32, 4);
++  DECL_VARIABLE(vector, uint, 64, 2);
++
++  DECL_VARIABLE(vector_res, int, 8, 8);
++  DECL_VARIABLE(vector_res, int, 16, 4);
++  DECL_VARIABLE(vector_res, int, 32, 2);
++  DECL_VARIABLE(vector_res, uint, 8, 8);
++  DECL_VARIABLE(vector_res, uint, 16, 4);
++  DECL_VARIABLE(vector_res, uint, 32, 2);
++
++  clean_results ();
++
++  VLOAD(vector, buffer, q, int, s, 16, 8);
++  VLOAD(vector, buffer, q, int, s, 32, 4);
++  VLOAD(vector, buffer, q, int, s, 64, 2);
++  VLOAD(vector, buffer, q, uint, u, 16, 8);
++  VLOAD(vector, buffer, q, uint, u, 32, 4);
++  VLOAD(vector, buffer, q, uint, u, 64, 2);
++
++  /* Choose shift amount arbitrarily.  */
++#define CMT ""
++  TEST_VQSHRN_N(int, s, 16, 8, 8, 1, expected_cumulative_sat, CMT);
++  TEST_VQSHRN_N(int, s, 32, 16, 4, 1, expected_cumulative_sat, CMT);
++  TEST_VQSHRN_N(int, s, 64, 32, 2, 2, expected_cumulative_sat, CMT);
++  TEST_VQSHRN_N(uint, u, 16, 8, 8, 2, expected_cumulative_sat, CMT);
++  TEST_VQSHRN_N(uint, u, 32, 16, 4, 3, expected_cumulative_sat, CMT);
++  TEST_VQSHRN_N(uint, u, 64, 32, 2, 3, expected_cumulative_sat, CMT);
++
++  CHECK(TEST_MSG, int, 8, 8, PRIx8, expected, CMT);
++  CHECK(TEST_MSG, int, 16, 4, PRIx16, expected, CMT);
++  CHECK(TEST_MSG, int, 32, 2, PRIx32, expected, CMT);
++  CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected, CMT);
++  CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected, CMT);
++  CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected, CMT);
++
++
++  /* Use max possible value as input.  */
++  VDUP(vector, q, int, s, 16, 8, 0x7FFF);
++  VDUP(vector, q, int, s, 32, 4, 0x7FFFFFFF);
++  VDUP(vector, q, int, s, 64, 2, 0x7FFFFFFFFFFFFFFFLL);
++  VDUP(vector, q, uint, u, 16, 8, 0xFFFF);
++  VDUP(vector, q, uint, u, 32, 4, 0xFFFFFFFF);
++  VDUP(vector, q, uint, u, 64, 2, 0xFFFFFFFFFFFFFFFFULL);
++
++#undef CMT
++#define CMT " (check saturation: shift by 3)"
++  TEST_VQSHRN_N(int, s, 16, 8, 8, 3, expected_cumulative_sat_max_sh3, CMT);
++  TEST_VQSHRN_N(int, s, 32, 16, 4, 3, expected_cumulative_sat_max_sh3, CMT);
++  TEST_VQSHRN_N(int, s, 64, 32, 2, 3, expected_cumulative_sat_max_sh3, CMT);
++  TEST_VQSHRN_N(uint, u, 16, 8, 8, 3, expected_cumulative_sat_max_sh3, CMT);
++  TEST_VQSHRN_N(uint, u, 32, 16, 4, 3, expected_cumulative_sat_max_sh3, CMT);
++  TEST_VQSHRN_N(uint, u, 64, 32, 2, 3, expected_cumulative_sat_max_sh3, CMT);
++
++  CHECK(TEST_MSG, int, 8, 8, PRIx8, expected_max_sh3, CMT);
++  CHECK(TEST_MSG, int, 16, 4, PRIx16, expected_max_sh3, CMT);
++  CHECK(TEST_MSG, int, 32, 2, PRIx32, expected_max_sh3, CMT);
++  CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected_max_sh3, CMT);
++  CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected_max_sh3, CMT);
++  CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected_max_sh3, CMT);
++
++
++#undef CMT
++#define CMT " (check saturation: shift by max)"
++  TEST_VQSHRN_N(int, s, 16, 8, 8, 8, expected_cumulative_sat_max_shmax, CMT);
++  TEST_VQSHRN_N(int, s, 32, 16, 4, 16, expected_cumulative_sat_max_shmax, CMT);
++  TEST_VQSHRN_N(int, s, 64, 32, 2, 32, expected_cumulative_sat_max_shmax, CMT);
++  TEST_VQSHRN_N(uint, u, 16, 8, 8, 8, expected_cumulative_sat_max_shmax, CMT);
++  TEST_VQSHRN_N(uint, u, 32, 16, 4, 16, expected_cumulative_sat_max_shmax, CMT);
++  TEST_VQSHRN_N(uint, u, 64, 32, 2, 32, expected_cumulative_sat_max_shmax, CMT);
++
++  CHECK(TEST_MSG, int, 8, 8, PRIx8, expected_max_shmax, CMT);
++  CHECK(TEST_MSG, int, 16, 4, PRIx16, expected_max_shmax, CMT);
++  CHECK(TEST_MSG, int, 32, 2, PRIx32, expected_max_shmax, CMT);
++  CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected_max_shmax, CMT);
++  CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected_max_shmax, CMT);
++  CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected_max_shmax, CMT);
++}
++
++int main (void)
++{
++  exec_vqshrn_n ();
++  return 0;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqshrun_n.c
+@@ -0,0 +1,133 @@
++#include <arm_neon.h>
++#include "arm-neon-ref.h"
++#include "compute-ref-data.h"
++
++/* Expected values of cumulative_saturation flag with negative input.  */
++int VECT_VAR(expected_cumulative_sat_neg,int,16,8) = 1;
++int VECT_VAR(expected_cumulative_sat_neg,int,32,4) = 1;
++int VECT_VAR(expected_cumulative_sat_neg,int,64,2) = 1;
++
++/* Expected results with negative input.  */
++VECT_VAR_DECL(expected_neg,uint,8,8) [] = { 0x0, 0x0, 0x0, 0x0,
++					    0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_neg,uint,16,4) [] = { 0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_neg,uint,32,2) [] = { 0x0, 0x0 };
++
++/* Expected values of cumulative_saturation flag with max input value
++   shifted by 1.  */
++int VECT_VAR(expected_cumulative_sat_max_sh1,int,16,8) = 1;
++int VECT_VAR(expected_cumulative_sat_max_sh1,int,32,4) = 1;
++int VECT_VAR(expected_cumulative_sat_max_sh1,int,64,2) = 1;
++
++/* Expected results with max input value shifted by 1.  */
++VECT_VAR_DECL(expected_max_sh1,uint,8,8) [] = { 0xff, 0xff, 0xff, 0xff,
++						0xff, 0xff, 0xff, 0xff };
++VECT_VAR_DECL(expected_max_sh1,uint,16,4) [] = { 0xffff, 0xffff,
++						 0xffff, 0xffff };
++VECT_VAR_DECL(expected_max_sh1,uint,32,2) [] = { 0xffffffff, 0xffffffff };
++VECT_VAR_DECL(expected_max_sh1,uint,64,1) [] = { 0x3333333333333333 };
++
++/* Expected values of cumulative_saturation flag.  */
++int VECT_VAR(expected_cumulative_sat,int,16,8) = 0;
++int VECT_VAR(expected_cumulative_sat,int,32,4) = 1;
++int VECT_VAR(expected_cumulative_sat,int,64,2) = 0;
++
++/* Expected results.  */
++VECT_VAR_DECL(expected,uint,8,8) [] = { 0x48, 0x48, 0x48, 0x48,
++					0x48, 0x48, 0x48, 0x48 };
++VECT_VAR_DECL(expected,uint,16,4) [] = { 0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected,uint,32,2) [] = { 0xdeadbe, 0xdeadbe };
++
++
++#define INSN vqshrun_n
++#define TEST_MSG "VQSHRUN_N"
++
++#define FNNAME1(NAME) void exec_ ## NAME (void)
++#define FNNAME(NAME) FNNAME1(NAME)
++
++FNNAME (INSN)
++{
++  /* Basic test: y=vqshrun_n(x,v), then store the result.  */
++#define TEST_VQSHRUN_N2(INSN, T1, T2, W, W2, N, V, EXPECTED_CUMULATIVE_SAT, CMT) \
++  Set_Neon_Cumulative_Sat(0, VECT_VAR(vector_res, uint, W2, N));	\
++  VECT_VAR(vector_res, uint, W2, N) =					\
++    INSN##_##T2##W(VECT_VAR(vector, T1, W, N),				\
++		   V);							\
++  vst1_u##W2(VECT_VAR(result, uint, W2, N),				\
++	     VECT_VAR(vector_res, uint, W2, N));			\
++  CHECK_CUMULATIVE_SAT(TEST_MSG, T1, W, N, EXPECTED_CUMULATIVE_SAT, CMT)
++
++  /* Two auxliary macros are necessary to expand INSN */
++#define TEST_VQSHRUN_N1(INSN, T1, T2, W, W2, N, V, EXPECTED_CUMULATIVE_SAT, CMT) \
++  TEST_VQSHRUN_N2(INSN, T1, T2, W, W2, N, V, EXPECTED_CUMULATIVE_SAT, CMT)
++
++#define TEST_VQSHRUN_N(T1, T2, W, W2, N, V, EXPECTED_CUMULATIVE_SAT, CMT) \
++  TEST_VQSHRUN_N1(INSN, T1, T2, W, W2, N, V, EXPECTED_CUMULATIVE_SAT, CMT)
++
++
++  /* vector is twice as large as vector_res.  */
++  DECL_VARIABLE(vector, int, 16, 8);
++  DECL_VARIABLE(vector, int, 32, 4);
++  DECL_VARIABLE(vector, int, 64, 2);
++
++  DECL_VARIABLE(vector_res, uint, 8, 8);
++  DECL_VARIABLE(vector_res, uint, 16, 4);
++  DECL_VARIABLE(vector_res, uint, 32, 2);
++
++  clean_results ();
++
++  /* Fill input vector with negative values, to check saturation on
++     limits.  */
++  VDUP(vector, q, int, s, 16, 8, -2);
++  VDUP(vector, q, int, s, 32, 4, -3);
++  VDUP(vector, q, int, s, 64, 2, -4);
++
++  /* Choose shift amount arbitrarily.  */
++#define CMT " (negative input)"
++  TEST_VQSHRUN_N(int, s, 16, 8, 8, 3, expected_cumulative_sat_neg, CMT);
++  TEST_VQSHRUN_N(int, s, 32, 16, 4, 4, expected_cumulative_sat_neg, CMT);
++  TEST_VQSHRUN_N(int, s, 64, 32, 2, 2, expected_cumulative_sat_neg, CMT);
++
++  CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected_neg, CMT);
++  CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected_neg, CMT);
++  CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected_neg, CMT);
++
++  
++  /* Fill input vector with max value, to check saturation on
++     limits.  */
++  VDUP(vector, q, int, s, 16, 8, 0x7FFF);
++  VDUP(vector, q, int, s, 32, 4, 0x7FFFFFFF);
++  VDUP(vector, q, int, s, 64, 2, 0x7FFFFFFFFFFFFFFFLL);
++
++#undef CMT
++#define CMT " (check cumulative saturation)"
++  TEST_VQSHRUN_N(int, s, 16, 8, 8, 1, expected_cumulative_sat_max_sh1, CMT);
++  TEST_VQSHRUN_N(int, s, 32, 16, 4, 1, expected_cumulative_sat_max_sh1, CMT);
++  TEST_VQSHRUN_N(int, s, 64, 32, 2, 1, expected_cumulative_sat_max_sh1, CMT);
++
++  CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected_max_sh1, CMT);
++  CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected_max_sh1, CMT);
++  CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected_max_sh1, CMT);
++
++  
++  /* Fill input vector with positive values, to check normal case.  */
++  VDUP(vector, q, int, s, 16, 8, 0x1234);
++  VDUP(vector, q, int, s, 32, 4, 0x87654321);
++  VDUP(vector, q, int, s, 64, 2, 0xDEADBEEF);
++
++#undef CMT
++#define CMT ""
++  TEST_VQSHRUN_N(int, s, 16, 8, 8, 6, expected_cumulative_sat, CMT);
++  TEST_VQSHRUN_N(int, s, 32, 16, 4, 7, expected_cumulative_sat, CMT);
++  TEST_VQSHRUN_N(int, s, 64, 32, 2, 8, expected_cumulative_sat, CMT);
++
++  CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected, CMT);
++  CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected, CMT);
++  CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected, CMT);
++}
++
++int main (void)
++{
++  exec_vqshrun_n ();
++  return 0;
++}
+--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqsub.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vqsub.c
+@@ -25,10 +25,6 @@ VECT_VAR_DECL(expected,uint,16,4) [] = { 0xff8a, 0xff8b,
+ 					 0xff8c, 0xff8d };
+ VECT_VAR_DECL(expected,uint,32,2) [] = { 0xffffff79, 0xffffff7a };
+ VECT_VAR_DECL(expected,uint,64,1) [] = { 0xffffffffffffff68 };
+-VECT_VAR_DECL(expected,poly,8,8) [] = { 0x33, 0x33, 0x33, 0x33,
+-					0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,poly,16,4) [] = { 0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,hfloat,32,2) [] = { 0x33333333, 0x33333333 };
+ VECT_VAR_DECL(expected,int,8,16) [] = { 0xdf, 0xe0, 0xe1, 0xe2,
+ 					0xe3, 0xe4, 0xe5, 0xe6,
+ 					0xe7, 0xe8, 0xe9, 0xea,
+@@ -49,14 +45,6 @@ VECT_VAR_DECL(expected,uint,32,4) [] = { 0xffffff79, 0xffffff7a,
+ 					 0xffffff7b, 0xffffff7c };
+ VECT_VAR_DECL(expected,uint,64,2) [] = { 0xffffffffffffff68,
+ 					 0xffffffffffffff69 };
+-VECT_VAR_DECL(expected,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,poly,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333,
+-					 0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,hfloat,32,4) [] = { 0x33333333, 0x33333333,
+-					   0x33333333, 0x33333333 };
+ 
+ /* Expected values of cumulative saturation flag.  */
+ int VECT_VAR(expected_cumulative_sat,int,8,8) = 0;
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vrecpe.c
+@@ -0,0 +1,154 @@
++#include <arm_neon.h>
++#include "arm-neon-ref.h"
++#include "compute-ref-data.h"
++#include <math.h>
++
++/* Expected results with positive input.  */
++VECT_VAR_DECL(expected_positive,uint,32,2) [] = { 0xffffffff, 0xffffffff };
++VECT_VAR_DECL(expected_positive,uint,32,4) [] = { 0xbf000000, 0xbf000000,
++						  0xbf000000, 0xbf000000 };
++VECT_VAR_DECL(expected_positive,hfloat,32,2) [] = { 0x3f068000, 0x3f068000 };
++VECT_VAR_DECL(expected_positive,hfloat,32,4) [] = { 0x3c030000, 0x3c030000,
++						    0x3c030000, 0x3c030000 };
++
++/* Expected results with negative input.  */
++VECT_VAR_DECL(expected_negative,uint,32,2) [] = { 0x80000000, 0x80000000 };
++VECT_VAR_DECL(expected_negative,uint,32,4) [] = { 0xee800000, 0xee800000,
++						  0xee800000, 0xee800000 };
++VECT_VAR_DECL(expected_negative,hfloat,32,2) [] = { 0xbdcc8000, 0xbdcc8000 };
++VECT_VAR_DECL(expected_negative,hfloat,32,4) [] = { 0xbc030000, 0xbc030000,
++						    0xbc030000, 0xbc030000 };
++
++/* Expected results with FP special values (NaN, infinity).  */
++VECT_VAR_DECL(expected_fp1,hfloat,32,2) [] = { 0x7fc00000, 0x7fc00000 };
++VECT_VAR_DECL(expected_fp1,hfloat,32,4) [] = { 0x0, 0x0, 0x0, 0x0 };
++
++/* Expected results with FP special values (zero, large value).  */
++VECT_VAR_DECL(expected_fp2,hfloat,32,2) [] = { 0x7f800000, 0x7f800000 };
++VECT_VAR_DECL(expected_fp2,hfloat,32,4) [] = { 0x0, 0x0, 0x0, 0x0 };
++
++/* Expected results with FP special values (-0, -infinity).  */
++VECT_VAR_DECL(expected_fp3,hfloat,32,2) [] = { 0xff800000, 0xff800000 };
++VECT_VAR_DECL(expected_fp3,hfloat,32,4) [] = { 0x80000000, 0x80000000,
++					       0x80000000, 0x80000000 };
++
++/* Expected results with FP special large negative value.  */
++VECT_VAR_DECL(expected_fp4,hfloat,32,2) [] = { 0x80000000, 0x80000000 };
++
++#define TEST_MSG "VRECPE/VRECPEQ"
++void exec_vrecpe(void)
++{
++  int i;
++
++  /* Basic test: y=vrecpe(x), then store the result.  */
++#define TEST_VRECPE(Q, T1, T2, W, N)			\
++  VECT_VAR(vector_res, T1, W, N) =			\
++    vrecpe##Q##_##T2##W(VECT_VAR(vector, T1, W, N));	\
++  vst1##Q##_##T2##W(VECT_VAR(result, T1, W, N),		\
++		    VECT_VAR(vector_res, T1, W, N))
++
++  /* No need for 64 bits variants.  */
++  DECL_VARIABLE(vector, uint, 32, 2);
++  DECL_VARIABLE(vector, uint, 32, 4);
++  DECL_VARIABLE(vector, float, 32, 2);
++  DECL_VARIABLE(vector, float, 32, 4);
++
++  DECL_VARIABLE(vector_res, uint, 32, 2);
++  DECL_VARIABLE(vector_res, uint, 32, 4);
++  DECL_VARIABLE(vector_res, float, 32, 2);
++  DECL_VARIABLE(vector_res, float, 32, 4);
++
++  clean_results ();
++
++  /* Choose init value arbitrarily, positive.  */
++  VDUP(vector, , uint, u, 32, 2, 0x12345678);
++  VDUP(vector, , float, f, 32, 2, 1.9f);
++  VDUP(vector, q, uint, u, 32, 4, 0xABCDEF10);
++  VDUP(vector, q, float, f, 32, 4, 125.0f);
++
++  /* Apply the operator.  */
++  TEST_VRECPE(, uint, u, 32, 2);
++  TEST_VRECPE(, float, f, 32, 2);
++  TEST_VRECPE(q, uint, u, 32, 4);
++  TEST_VRECPE(q, float, f, 32, 4);
++
++#define CMT " (positive input)"
++  CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected_positive, CMT);
++  CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected_positive, CMT);
++  CHECK_FP(TEST_MSG, float, 32, 2, PRIx32, expected_positive, CMT);
++  CHECK_FP(TEST_MSG, float, 32, 4, PRIx32, expected_positive, CMT);
++
++  /* Choose init value arbitrarily,negative.  */
++  VDUP(vector, , uint, u, 32, 2, 0xFFFFFFFF);
++  VDUP(vector, , float, f, 32, 2, -10.0f);
++  VDUP(vector, q, uint, u, 32, 4, 0x89081234);
++  VDUP(vector, q, float, f, 32, 4, -125.0f);
++
++  /* Apply the operator.  */
++  TEST_VRECPE(, uint, u, 32, 2);
++  TEST_VRECPE(, float, f, 32, 2);
++  TEST_VRECPE(q, uint, u, 32, 4);
++  TEST_VRECPE(q, float, f, 32, 4);
++
++#undef CMT
++#define CMT " (negative input)"
++  CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected_negative, CMT);
++  CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected_negative, CMT);
++  CHECK_FP(TEST_MSG, float, 32, 2, PRIx32, expected_negative, CMT);
++  CHECK_FP(TEST_MSG, float, 32, 4, PRIx32, expected_negative, CMT);
++
++  /* Test FP variants with special input values (NaN, infinity).  */
++  VDUP(vector, , float, f, 32, 2, NAN);
++  VDUP(vector, q, float, f, 32, 4, HUGE_VALF);
++
++  /* Apply the operator.  */
++  TEST_VRECPE(, float, f, 32, 2);
++  TEST_VRECPE(q, float, f, 32, 4);
++
++#undef CMT
++#define CMT " FP special (NaN, infinity)"
++  CHECK_FP(TEST_MSG, float, 32, 2, PRIx32, expected_fp1, CMT);
++  CHECK_FP(TEST_MSG, float, 32, 4, PRIx32, expected_fp1, CMT);
++
++  /* Test FP variants with special input values (zero, large value).  */
++  VDUP(vector, , float, f, 32, 2, 0.0f);
++  VDUP(vector, q, float, f, 32, 4, 8.97229e37f /*9.0e37f*/);
++
++  /* Apply the operator.  */
++  TEST_VRECPE(, float, f, 32, 2);
++  TEST_VRECPE(q, float, f, 32, 4);
++
++#undef CMT
++#define CMT " FP special (zero, large value)"
++  CHECK_FP(TEST_MSG, float, 32, 2, PRIx32, expected_fp2, CMT);
++  CHECK_FP(TEST_MSG, float, 32, 4, PRIx32, expected_fp2, CMT);
++
++  /* Test FP variants with special input values (-0, -infinity).  */
++  VDUP(vector, , float, f, 32, 2, -0.0f);
++  VDUP(vector, q, float, f, 32, 4, -HUGE_VALF);
++
++  /* Apply the operator.  */
++  TEST_VRECPE(, float, f, 32, 2);
++  TEST_VRECPE(q, float, f, 32, 4);
++
++#undef CMT
++#define CMT " FP special (-0, -infinity)"
++  CHECK_FP(TEST_MSG, float, 32, 2, PRIx32, expected_fp3, CMT);
++  CHECK_FP(TEST_MSG, float, 32, 4, PRIx32, expected_fp3, CMT);
++
++  /* Test FP variants with special input values (large negative value).  */
++  VDUP(vector, , float, f, 32, 2, -9.0e37f);
++
++  /* Apply the operator.  */
++  TEST_VRECPE(, float, f, 32, 2);
++
++#undef CMT
++#define CMT " FP special (large negative value)"
++  CHECK_FP(TEST_MSG, float, 32, 2, PRIx32, expected_fp4, CMT);
++}
++
++int main (void)
++{
++  exec_vrecpe ();
++  return 0;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vrecps.c
+@@ -0,0 +1,117 @@
++#include <arm_neon.h>
++#include "arm-neon-ref.h"
++#include "compute-ref-data.h"
++#include <math.h>
++
++/* Expected results with positive input.  */
++VECT_VAR_DECL(expected,hfloat,32,2) [] = { 0xc2e19eb7, 0xc2e19eb7 };
++VECT_VAR_DECL(expected,hfloat,32,4) [] = { 0xc1db851f, 0xc1db851f,
++					   0xc1db851f, 0xc1db851f };
++
++/* Expected results with FP special values (NaN).  */
++VECT_VAR_DECL(expected_fp1,hfloat,32,2) [] = { 0x7fc00000, 0x7fc00000 };
++VECT_VAR_DECL(expected_fp1,hfloat,32,4) [] = { 0x7fc00000, 0x7fc00000,
++					       0x7fc00000, 0x7fc00000 };
++
++/* Expected results with FP special values (infinity, 0) and normal
++   values.  */
++VECT_VAR_DECL(expected_fp2,hfloat,32,2) [] = { 0xff800000, 0xff800000 };
++VECT_VAR_DECL(expected_fp2,hfloat,32,4) [] = { 0x40000000, 0x40000000,
++					       0x40000000, 0x40000000 };
++
++/* Expected results with FP special values (infinity, 0).  */
++VECT_VAR_DECL(expected_fp3,hfloat,32,2) [] = { 0x40000000, 0x40000000 };
++VECT_VAR_DECL(expected_fp3,hfloat,32,4) [] = { 0x40000000, 0x40000000,
++					       0x40000000, 0x40000000 };
++
++#define TEST_MSG "VRECPS/VRECPSQ"
++void exec_vrecps(void)
++{
++  int i;
++
++  /* Basic test: y=vrecps(x), then store the result.  */
++#define TEST_VRECPS(Q, T1, T2, W, N)			\
++  VECT_VAR(vector_res, T1, W, N) =			\
++    vrecps##Q##_##T2##W(VECT_VAR(vector, T1, W, N),	\
++			VECT_VAR(vector2, T1, W, N));	\
++  vst1##Q##_##T2##W(VECT_VAR(result, T1, W, N),		\
++		    VECT_VAR(vector_res, T1, W, N))
++
++  /* No need for integer variants.  */
++  DECL_VARIABLE(vector, float, 32, 2);
++  DECL_VARIABLE(vector, float, 32, 4);
++
++  DECL_VARIABLE(vector2, float, 32, 2);
++  DECL_VARIABLE(vector2, float, 32, 4);
++
++  DECL_VARIABLE(vector_res, float, 32, 2);
++  DECL_VARIABLE(vector_res, float, 32, 4);
++
++  clean_results ();
++
++  /* Choose init value arbitrarily.  */
++  VDUP(vector, , float, f, 32, 2, 12.9f);
++  VDUP(vector, q, float, f, 32, 4, 9.2f);
++
++  VDUP(vector2, , float, f, 32, 2, 8.9f);
++  VDUP(vector2, q, float, f, 32, 4, 3.2f);
++
++  /* Apply the operator.  */
++  TEST_VRECPS(, float, f, 32, 2);
++  TEST_VRECPS(q, float, f, 32, 4);
++
++#define CMT " (positive input)"
++  CHECK_FP(TEST_MSG, float, 32, 2, PRIx32, expected, CMT);
++  CHECK_FP(TEST_MSG, float, 32, 4, PRIx32, expected, CMT);
++
++
++  /* Test FP variants with special input values (NaN).  */
++  VDUP(vector, , float, f, 32, 2, NAN);
++  VDUP(vector2, q, float, f, 32, 4, NAN);
++
++  /* Apply the operator.  */
++  TEST_VRECPS(, float, f, 32, 2);
++  TEST_VRECPS(q, float, f, 32, 4);
++
++#undef CMT
++#define CMT " FP special (NaN)"
++  CHECK_FP(TEST_MSG, float, 32, 2, PRIx32, expected_fp1, CMT);
++  CHECK_FP(TEST_MSG, float, 32, 4, PRIx32, expected_fp1, CMT);
++
++
++  /* Test FP variants with special input values (infinity, 0).  */
++  VDUP(vector, , float, f, 32, 2, HUGE_VALF);
++  VDUP(vector, q, float, f, 32, 4, 0.0f);
++  VDUP(vector2, q, float, f, 32, 4, 3.2f); /* Restore a normal value.  */
++
++  /* Apply the operator.  */
++  TEST_VRECPS(, float, f, 32, 2);
++  TEST_VRECPS(q, float, f, 32, 4);
++
++#undef CMT
++#define CMT " FP special (infinity, 0) and normal value"
++  CHECK_FP(TEST_MSG, float, 32, 2, PRIx32, expected_fp2, CMT);
++  CHECK_FP(TEST_MSG, float, 32, 4, PRIx32, expected_fp2, CMT);
++
++
++  /* Test FP variants with only special input values (infinity, 0).  */
++  VDUP(vector, , float, f, 32, 2, HUGE_VALF);
++  VDUP(vector, q, float, f, 32, 4, 0.0f);
++  VDUP(vector2, , float, f, 32, 2, 0.0f);
++  VDUP(vector2, q, float, f, 32, 4, HUGE_VALF);
++
++  /* Apply the operator */
++  TEST_VRECPS(, float, f, 32, 2);
++  TEST_VRECPS(q, float, f, 32, 4);
++
++#undef CMT
++#define CMT " FP special (infinity, 0)"
++  CHECK_FP(TEST_MSG, float, 32, 2, PRIx32, expected_fp3, CMT);
++  CHECK_FP(TEST_MSG, float, 32, 4, PRIx32, expected_fp3, CMT);
++}
++
++int main (void)
++{
++  exec_vrecps ();
++  return 0;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vreinterpret.c
+@@ -0,0 +1,741 @@
++#include <arm_neon.h>
++#include "arm-neon-ref.h"
++#include "compute-ref-data.h"
++
++/* Expected results for vreinterpret_s8_xx.  */
++VECT_VAR_DECL(expected_s8_1,int,8,8) [] = { 0xf0, 0xff, 0xf1, 0xff,
++					    0xf2, 0xff, 0xf3, 0xff };
++VECT_VAR_DECL(expected_s8_2,int,8,8) [] = { 0xf0, 0xff, 0xff, 0xff,
++					    0xf1, 0xff, 0xff, 0xff };
++VECT_VAR_DECL(expected_s8_3,int,8,8) [] = { 0xf0, 0xff, 0xff, 0xff,
++					    0xff, 0xff, 0xff, 0xff };
++VECT_VAR_DECL(expected_s8_4,int,8,8) [] = { 0xf0, 0xf1, 0xf2, 0xf3,
++					    0xf4, 0xf5, 0xf6, 0xf7 };
++VECT_VAR_DECL(expected_s8_5,int,8,8) [] = { 0xf0, 0xff, 0xf1, 0xff,
++					    0xf2, 0xff, 0xf3, 0xff };
++VECT_VAR_DECL(expected_s8_6,int,8,8) [] = { 0xf0, 0xff, 0xff, 0xff,
++					    0xf1, 0xff, 0xff, 0xff };
++VECT_VAR_DECL(expected_s8_7,int,8,8) [] = { 0xf0, 0xff, 0xff, 0xff,
++					    0xff, 0xff, 0xff, 0xff };
++VECT_VAR_DECL(expected_s8_8,int,8,8) [] = { 0xf0, 0xf1, 0xf2, 0xf3,
++					    0xf4, 0xf5, 0xf6, 0xf7 };
++VECT_VAR_DECL(expected_s8_9,int,8,8) [] = { 0xf0, 0xff, 0xf1, 0xff,
++					    0xf2, 0xff, 0xf3, 0xff };
++
++/* Expected results for vreinterpret_s16_xx.  */
++VECT_VAR_DECL(expected_s16_1,int,16,4) [] = { 0xf1f0, 0xf3f2, 0xf5f4, 0xf7f6 };
++VECT_VAR_DECL(expected_s16_2,int,16,4) [] = { 0xfff0, 0xffff, 0xfff1, 0xffff };
++VECT_VAR_DECL(expected_s16_3,int,16,4) [] = { 0xfff0, 0xffff, 0xffff, 0xffff };
++VECT_VAR_DECL(expected_s16_4,int,16,4) [] = { 0xf1f0, 0xf3f2, 0xf5f4, 0xf7f6 };
++VECT_VAR_DECL(expected_s16_5,int,16,4) [] = { 0xfff0, 0xfff1, 0xfff2, 0xfff3 };
++VECT_VAR_DECL(expected_s16_6,int,16,4) [] = { 0xfff0, 0xffff, 0xfff1, 0xffff };
++VECT_VAR_DECL(expected_s16_7,int,16,4) [] = { 0xfff0, 0xffff, 0xffff, 0xffff };
++VECT_VAR_DECL(expected_s16_8,int,16,4) [] = { 0xf1f0, 0xf3f2, 0xf5f4, 0xf7f6 };
++VECT_VAR_DECL(expected_s16_9,int,16,4) [] = { 0xfff0, 0xfff1, 0xfff2, 0xfff3 };
++
++/* Expected results for vreinterpret_s32_xx.  */
++VECT_VAR_DECL(expected_s32_1,int,32,2) [] = { 0xf3f2f1f0, 0xf7f6f5f4 };
++VECT_VAR_DECL(expected_s32_2,int,32,2) [] = { 0xfff1fff0, 0xfff3fff2 };
++VECT_VAR_DECL(expected_s32_3,int,32,2) [] = { 0xfffffff0, 0xffffffff };
++VECT_VAR_DECL(expected_s32_4,int,32,2) [] = { 0xf3f2f1f0, 0xf7f6f5f4 };
++VECT_VAR_DECL(expected_s32_5,int,32,2) [] = { 0xfff1fff0, 0xfff3fff2 };
++VECT_VAR_DECL(expected_s32_6,int,32,2) [] = { 0xfffffff0, 0xfffffff1 };
++VECT_VAR_DECL(expected_s32_7,int,32,2) [] = { 0xfffffff0, 0xffffffff };
++VECT_VAR_DECL(expected_s32_8,int,32,2) [] = { 0xf3f2f1f0, 0xf7f6f5f4 };
++VECT_VAR_DECL(expected_s32_9,int,32,2) [] = { 0xfff1fff0, 0xfff3fff2 };
++
++/* Expected results for vreinterpret_s64_xx.  */
++VECT_VAR_DECL(expected_s64_1,int,64,1) [] = { 0xf7f6f5f4f3f2f1f0 };
++VECT_VAR_DECL(expected_s64_2,int,64,1) [] = { 0xfff3fff2fff1fff0 };
++VECT_VAR_DECL(expected_s64_3,int,64,1) [] = { 0xfffffff1fffffff0 };
++VECT_VAR_DECL(expected_s64_4,int,64,1) [] = { 0xf7f6f5f4f3f2f1f0 };
++VECT_VAR_DECL(expected_s64_5,int,64,1) [] = { 0xfff3fff2fff1fff0 };
++VECT_VAR_DECL(expected_s64_6,int,64,1) [] = { 0xfffffff1fffffff0 };
++VECT_VAR_DECL(expected_s64_7,int,64,1) [] = { 0xfffffffffffffff0 };
++VECT_VAR_DECL(expected_s64_8,int,64,1) [] = { 0xf7f6f5f4f3f2f1f0 };
++VECT_VAR_DECL(expected_s64_9,int,64,1) [] = { 0xfff3fff2fff1fff0 };
++
++/* Expected results for vreinterpret_u8_xx.  */
++VECT_VAR_DECL(expected_u8_1,uint,8,8) [] = { 0xf0, 0xf1, 0xf2, 0xf3,
++					     0xf4, 0xf5, 0xf6, 0xf7 };
++VECT_VAR_DECL(expected_u8_2,uint,8,8) [] = { 0xf0, 0xff, 0xf1, 0xff,
++					     0xf2, 0xff, 0xf3, 0xff };
++VECT_VAR_DECL(expected_u8_3,uint,8,8) [] = { 0xf0, 0xff, 0xff, 0xff,
++					     0xf1, 0xff, 0xff, 0xff };
++VECT_VAR_DECL(expected_u8_4,uint,8,8) [] = { 0xf0, 0xff, 0xff, 0xff,
++					     0xff, 0xff, 0xff, 0xff };
++VECT_VAR_DECL(expected_u8_5,uint,8,8) [] = { 0xf0, 0xff, 0xf1, 0xff,
++					     0xf2, 0xff, 0xf3, 0xff };
++VECT_VAR_DECL(expected_u8_6,uint,8,8) [] = { 0xf0, 0xff, 0xff, 0xff,
++					     0xf1, 0xff, 0xff, 0xff };
++VECT_VAR_DECL(expected_u8_7,uint,8,8) [] = { 0xf0, 0xff, 0xff, 0xff,
++					     0xff, 0xff, 0xff, 0xff };
++VECT_VAR_DECL(expected_u8_8,uint,8,8) [] = { 0xf0, 0xf1, 0xf2, 0xf3,
++					     0xf4, 0xf5, 0xf6, 0xf7 };
++VECT_VAR_DECL(expected_u8_9,uint,8,8) [] = { 0xf0, 0xff, 0xf1, 0xff,
++					     0xf2, 0xff, 0xf3, 0xff };
++
++/* Expected results for vreinterpret_u16_xx.  */
++VECT_VAR_DECL(expected_u16_1,uint,16,4) [] = { 0xf1f0, 0xf3f2, 0xf5f4, 0xf7f6 };
++VECT_VAR_DECL(expected_u16_2,uint,16,4) [] = { 0xfff0, 0xfff1, 0xfff2, 0xfff3 };
++VECT_VAR_DECL(expected_u16_3,uint,16,4) [] = { 0xfff0, 0xffff, 0xfff1, 0xffff };
++VECT_VAR_DECL(expected_u16_4,uint,16,4) [] = { 0xfff0, 0xffff, 0xffff, 0xffff };
++VECT_VAR_DECL(expected_u16_5,uint,16,4) [] = { 0xf1f0, 0xf3f2, 0xf5f4, 0xf7f6 };
++VECT_VAR_DECL(expected_u16_6,uint,16,4) [] = { 0xfff0, 0xffff, 0xfff1, 0xffff };
++VECT_VAR_DECL(expected_u16_7,uint,16,4) [] = { 0xfff0, 0xffff, 0xffff, 0xffff };
++VECT_VAR_DECL(expected_u16_8,uint,16,4) [] = { 0xf1f0, 0xf3f2, 0xf5f4, 0xf7f6 };
++VECT_VAR_DECL(expected_u16_9,uint,16,4) [] = { 0xfff0, 0xfff1, 0xfff2, 0xfff3 };
++
++/* Expected results for vreinterpret_u32_xx.  */
++VECT_VAR_DECL(expected_u32_1,uint,32,2) [] = { 0xf3f2f1f0, 0xf7f6f5f4 };
++VECT_VAR_DECL(expected_u32_2,uint,32,2) [] = { 0xfff1fff0, 0xfff3fff2 };
++VECT_VAR_DECL(expected_u32_3,uint,32,2) [] = { 0xfffffff0, 0xfffffff1 };
++VECT_VAR_DECL(expected_u32_4,uint,32,2) [] = { 0xfffffff0, 0xffffffff };
++VECT_VAR_DECL(expected_u32_5,uint,32,2) [] = { 0xf3f2f1f0, 0xf7f6f5f4 };
++VECT_VAR_DECL(expected_u32_6,uint,32,2) [] = { 0xfff1fff0, 0xfff3fff2 };
++VECT_VAR_DECL(expected_u32_7,uint,32,2) [] = { 0xfffffff0, 0xffffffff };
++VECT_VAR_DECL(expected_u32_8,uint,32,2) [] = { 0xf3f2f1f0, 0xf7f6f5f4 };
++VECT_VAR_DECL(expected_u32_9,uint,32,2) [] = { 0xfff1fff0, 0xfff3fff2 };
++
++/* Expected results for vreinterpret_u64_xx.  */
++VECT_VAR_DECL(expected_u64_1,uint,64,1) [] = { 0xf7f6f5f4f3f2f1f0 };
++VECT_VAR_DECL(expected_u64_2,uint,64,1) [] = { 0xfff3fff2fff1fff0 };
++VECT_VAR_DECL(expected_u64_3,uint,64,1) [] = { 0xfffffff1fffffff0 };
++VECT_VAR_DECL(expected_u64_4,uint,64,1) [] = { 0xfffffffffffffff0 };
++VECT_VAR_DECL(expected_u64_5,uint,64,1) [] = { 0xf7f6f5f4f3f2f1f0 };
++VECT_VAR_DECL(expected_u64_6,uint,64,1) [] = { 0xfff3fff2fff1fff0 };
++VECT_VAR_DECL(expected_u64_7,uint,64,1) [] = { 0xfffffff1fffffff0 };
++VECT_VAR_DECL(expected_u64_8,uint,64,1) [] = { 0xf7f6f5f4f3f2f1f0 };
++VECT_VAR_DECL(expected_u64_9,uint,64,1) [] = { 0xfff3fff2fff1fff0 };
++
++/* Expected results for vreinterpret_p8_xx.  */
++VECT_VAR_DECL(expected_p8_1,poly,8,8) [] = { 0xf0, 0xf1, 0xf2, 0xf3,
++					     0xf4, 0xf5, 0xf6, 0xf7 };
++VECT_VAR_DECL(expected_p8_2,poly,8,8) [] = { 0xf0, 0xff, 0xf1, 0xff,
++					     0xf2, 0xff, 0xf3, 0xff };
++VECT_VAR_DECL(expected_p8_3,poly,8,8) [] = { 0xf0, 0xff, 0xff, 0xff,
++					     0xf1, 0xff, 0xff, 0xff };
++VECT_VAR_DECL(expected_p8_4,poly,8,8) [] = { 0xf0, 0xff, 0xff, 0xff,
++					     0xff, 0xff, 0xff, 0xff };
++VECT_VAR_DECL(expected_p8_5,poly,8,8) [] = { 0xf0, 0xf1, 0xf2, 0xf3,
++					     0xf4, 0xf5, 0xf6, 0xf7 };
++VECT_VAR_DECL(expected_p8_6,poly,8,8) [] = { 0xf0, 0xff, 0xf1, 0xff,
++					     0xf2, 0xff, 0xf3, 0xff };
++VECT_VAR_DECL(expected_p8_7,poly,8,8) [] = { 0xf0, 0xff, 0xff, 0xff,
++					     0xf1, 0xff, 0xff, 0xff };
++VECT_VAR_DECL(expected_p8_8,poly,8,8) [] = { 0xf0, 0xff, 0xff, 0xff,
++					     0xff, 0xff, 0xff, 0xff };
++VECT_VAR_DECL(expected_p8_9,poly,8,8) [] = { 0xf0, 0xff, 0xf1, 0xff,
++					     0xf2, 0xff, 0xf3, 0xff };
++
++/* Expected results for vreinterpret_p16_xx.  */
++VECT_VAR_DECL(expected_p16_1,poly,16,4) [] = { 0xf1f0, 0xf3f2, 0xf5f4, 0xf7f6 };
++VECT_VAR_DECL(expected_p16_2,poly,16,4) [] = { 0xfff0, 0xfff1, 0xfff2, 0xfff3 };
++VECT_VAR_DECL(expected_p16_3,poly,16,4) [] = { 0xfff0, 0xffff, 0xfff1, 0xffff };
++VECT_VAR_DECL(expected_p16_4,poly,16,4) [] = { 0xfff0, 0xffff, 0xffff, 0xffff };
++VECT_VAR_DECL(expected_p16_5,poly,16,4) [] = { 0xf1f0, 0xf3f2, 0xf5f4, 0xf7f6 };
++VECT_VAR_DECL(expected_p16_6,poly,16,4) [] = { 0xfff0, 0xfff1, 0xfff2, 0xfff3 };
++VECT_VAR_DECL(expected_p16_7,poly,16,4) [] = { 0xfff0, 0xffff, 0xfff1, 0xffff };
++VECT_VAR_DECL(expected_p16_8,poly,16,4) [] = { 0xfff0, 0xffff, 0xffff, 0xffff };
++VECT_VAR_DECL(expected_p16_9,poly,16,4) [] = { 0xf1f0, 0xf3f2, 0xf5f4, 0xf7f6 };
++
++/* Expected results for vreinterpretq_s8_xx.  */
++VECT_VAR_DECL(expected_q_s8_1,int,8,16) [] = { 0xf0, 0xff, 0xf1, 0xff,
++					       0xf2, 0xff, 0xf3, 0xff,
++					       0xf4, 0xff, 0xf5, 0xff,
++					       0xf6, 0xff, 0xf7, 0xff };
++VECT_VAR_DECL(expected_q_s8_2,int,8,16) [] = { 0xf0, 0xff, 0xff, 0xff,
++					       0xf1, 0xff, 0xff, 0xff,
++					       0xf2, 0xff, 0xff, 0xff,
++					       0xf3, 0xff, 0xff, 0xff };
++VECT_VAR_DECL(expected_q_s8_3,int,8,16) [] = { 0xf0, 0xff, 0xff, 0xff,
++					       0xff, 0xff, 0xff, 0xff,
++					       0xf1, 0xff, 0xff, 0xff,
++					       0xff, 0xff, 0xff, 0xff };
++VECT_VAR_DECL(expected_q_s8_4,int,8,16) [] = { 0xf0, 0xf1, 0xf2, 0xf3,
++					       0xf4, 0xf5, 0xf6, 0xf7,
++					       0xf8, 0xf9, 0xfa, 0xfb,
++					       0xfc, 0xfd, 0xfe, 0xff };
++VECT_VAR_DECL(expected_q_s8_5,int,8,16) [] = { 0xf0, 0xff, 0xf1, 0xff,
++					       0xf2, 0xff, 0xf3, 0xff,
++					       0xf4, 0xff, 0xf5, 0xff,
++					       0xf6, 0xff, 0xf7, 0xff };
++VECT_VAR_DECL(expected_q_s8_6,int,8,16) [] = { 0xf0, 0xff, 0xff, 0xff,
++					       0xf1, 0xff, 0xff, 0xff,
++					       0xf2, 0xff, 0xff, 0xff,
++					       0xf3, 0xff, 0xff, 0xff };
++VECT_VAR_DECL(expected_q_s8_7,int,8,16) [] = { 0xf0, 0xff, 0xff, 0xff,
++					       0xff, 0xff, 0xff, 0xff,
++					       0xf1, 0xff, 0xff, 0xff,
++					       0xff, 0xff, 0xff, 0xff };
++VECT_VAR_DECL(expected_q_s8_8,int,8,16) [] = { 0xf0, 0xf1, 0xf2, 0xf3,
++					       0xf4, 0xf5, 0xf6, 0xf7,
++					       0xf8, 0xf9, 0xfa, 0xfb,
++					       0xfc, 0xfd, 0xfe, 0xff };
++VECT_VAR_DECL(expected_q_s8_9,int,8,16) [] = { 0xf0, 0xff, 0xf1, 0xff,
++					       0xf2, 0xff, 0xf3, 0xff,
++					       0xf4, 0xff, 0xf5, 0xff,
++					       0xf6, 0xff, 0xf7, 0xff };
++
++/* Expected results for vreinterpretq_s16_xx.  */
++VECT_VAR_DECL(expected_q_s16_1,int,16,8) [] = { 0xf1f0, 0xf3f2,
++						0xf5f4, 0xf7f6,
++						0xf9f8, 0xfbfa,
++						0xfdfc, 0xfffe };
++VECT_VAR_DECL(expected_q_s16_2,int,16,8) [] = { 0xfff0, 0xffff,
++						0xfff1, 0xffff,
++						0xfff2, 0xffff,
++						0xfff3, 0xffff };
++VECT_VAR_DECL(expected_q_s16_3,int,16,8) [] = { 0xfff0, 0xffff,
++						0xffff, 0xffff,
++						0xfff1, 0xffff,
++						0xffff, 0xffff };
++VECT_VAR_DECL(expected_q_s16_4,int,16,8) [] = { 0xf1f0, 0xf3f2,
++						0xf5f4, 0xf7f6,
++						0xf9f8, 0xfbfa,
++						0xfdfc, 0xfffe };
++VECT_VAR_DECL(expected_q_s16_5,int,16,8) [] = { 0xfff0, 0xfff1,
++						0xfff2, 0xfff3,
++						0xfff4, 0xfff5,
++						0xfff6, 0xfff7 };
++VECT_VAR_DECL(expected_q_s16_6,int,16,8) [] = { 0xfff0, 0xffff,
++						0xfff1, 0xffff,
++						0xfff2, 0xffff,
++						0xfff3, 0xffff };
++VECT_VAR_DECL(expected_q_s16_7,int,16,8) [] = { 0xfff0, 0xffff,
++						0xffff, 0xffff,
++						0xfff1, 0xffff,
++						0xffff, 0xffff };
++VECT_VAR_DECL(expected_q_s16_8,int,16,8) [] = { 0xf1f0, 0xf3f2,
++						0xf5f4, 0xf7f6,
++						0xf9f8, 0xfbfa,
++						0xfdfc, 0xfffe };
++VECT_VAR_DECL(expected_q_s16_9,int,16,8) [] = { 0xfff0, 0xfff1,
++						0xfff2, 0xfff3,
++						0xfff4, 0xfff5,
++						0xfff6, 0xfff7 };
++
++/* Expected results for vreinterpretq_s32_xx.  */
++VECT_VAR_DECL(expected_q_s32_1,int,32,4) [] = { 0xf3f2f1f0, 0xf7f6f5f4,
++						0xfbfaf9f8, 0xfffefdfc };
++VECT_VAR_DECL(expected_q_s32_2,int,32,4) [] = { 0xfff1fff0, 0xfff3fff2,
++						0xfff5fff4, 0xfff7fff6 };
++VECT_VAR_DECL(expected_q_s32_3,int,32,4) [] = { 0xfffffff0, 0xffffffff,
++						0xfffffff1, 0xffffffff };
++VECT_VAR_DECL(expected_q_s32_4,int,32,4) [] = { 0xf3f2f1f0, 0xf7f6f5f4,
++						0xfbfaf9f8, 0xfffefdfc };
++VECT_VAR_DECL(expected_q_s32_5,int,32,4) [] = { 0xfff1fff0, 0xfff3fff2,
++						0xfff5fff4, 0xfff7fff6 };
++VECT_VAR_DECL(expected_q_s32_6,int,32,4) [] = { 0xfffffff0, 0xfffffff1,
++						0xfffffff2, 0xfffffff3 };
++VECT_VAR_DECL(expected_q_s32_7,int,32,4) [] = { 0xfffffff0, 0xffffffff,
++						0xfffffff1, 0xffffffff };
++VECT_VAR_DECL(expected_q_s32_8,int,32,4) [] = { 0xf3f2f1f0, 0xf7f6f5f4,
++						0xfbfaf9f8, 0xfffefdfc };
++VECT_VAR_DECL(expected_q_s32_9,int,32,4) [] = { 0xfff1fff0, 0xfff3fff2,
++						0xfff5fff4, 0xfff7fff6 };
++
++/* Expected results for vreinterpretq_s64_xx.  */
++VECT_VAR_DECL(expected_q_s64_1,int,64,2) [] = { 0xf7f6f5f4f3f2f1f0,
++						0xfffefdfcfbfaf9f8 };
++VECT_VAR_DECL(expected_q_s64_2,int,64,2) [] = { 0xfff3fff2fff1fff0,
++						0xfff7fff6fff5fff4 };
++VECT_VAR_DECL(expected_q_s64_3,int,64,2) [] = { 0xfffffff1fffffff0,
++						0xfffffff3fffffff2 };
++VECT_VAR_DECL(expected_q_s64_4,int,64,2) [] = { 0xf7f6f5f4f3f2f1f0,
++						0xfffefdfcfbfaf9f8 };
++VECT_VAR_DECL(expected_q_s64_5,int,64,2) [] = { 0xfff3fff2fff1fff0,
++						0xfff7fff6fff5fff4 };
++VECT_VAR_DECL(expected_q_s64_6,int,64,2) [] = { 0xfffffff1fffffff0,
++						0xfffffff3fffffff2 };
++VECT_VAR_DECL(expected_q_s64_7,int,64,2) [] = { 0xfffffffffffffff0,
++						0xfffffffffffffff1 };
++VECT_VAR_DECL(expected_q_s64_8,int,64,2) [] = { 0xf7f6f5f4f3f2f1f0,
++						0xfffefdfcfbfaf9f8 };
++VECT_VAR_DECL(expected_q_s64_9,int,64,2) [] = { 0xfff3fff2fff1fff0,
++						0xfff7fff6fff5fff4 };
++
++/* Expected results for vreinterpretq_u8_xx.  */
++VECT_VAR_DECL(expected_q_u8_1,uint,8,16) [] = { 0xf0, 0xf1, 0xf2, 0xf3,
++						0xf4, 0xf5, 0xf6, 0xf7,
++						0xf8, 0xf9, 0xfa, 0xfb,
++						0xfc, 0xfd, 0xfe, 0xff };
++VECT_VAR_DECL(expected_q_u8_2,uint,8,16) [] = { 0xf0, 0xff, 0xf1, 0xff,
++						0xf2, 0xff, 0xf3, 0xff,
++						0xf4, 0xff, 0xf5, 0xff,
++						0xf6, 0xff, 0xf7, 0xff };
++VECT_VAR_DECL(expected_q_u8_3,uint,8,16) [] = { 0xf0, 0xff, 0xff, 0xff,
++						0xf1, 0xff, 0xff, 0xff,
++						0xf2, 0xff, 0xff, 0xff,
++						0xf3, 0xff, 0xff, 0xff };
++VECT_VAR_DECL(expected_q_u8_4,uint,8,16) [] = { 0xf0, 0xff, 0xff, 0xff,
++						0xff, 0xff, 0xff, 0xff,
++						0xf1, 0xff, 0xff, 0xff,
++						0xff, 0xff, 0xff, 0xff };
++VECT_VAR_DECL(expected_q_u8_5,uint,8,16) [] = { 0xf0, 0xff, 0xf1, 0xff,
++						0xf2, 0xff, 0xf3, 0xff,
++						0xf4, 0xff, 0xf5, 0xff,
++						0xf6, 0xff, 0xf7, 0xff };
++VECT_VAR_DECL(expected_q_u8_6,uint,8,16) [] = { 0xf0, 0xff, 0xff, 0xff,
++						0xf1, 0xff, 0xff, 0xff,
++						0xf2, 0xff, 0xff, 0xff,
++						0xf3, 0xff, 0xff, 0xff };
++VECT_VAR_DECL(expected_q_u8_7,uint,8,16) [] = { 0xf0, 0xff, 0xff, 0xff,
++						0xff, 0xff, 0xff, 0xff,
++						0xf1, 0xff, 0xff, 0xff,
++						0xff, 0xff, 0xff, 0xff };
++VECT_VAR_DECL(expected_q_u8_8,uint,8,16) [] = { 0xf0, 0xf1, 0xf2, 0xf3,
++						0xf4, 0xf5, 0xf6, 0xf7,
++						0xf8, 0xf9, 0xfa, 0xfb,
++						0xfc, 0xfd, 0xfe, 0xff };
++VECT_VAR_DECL(expected_q_u8_9,uint,8,16) [] = { 0xf0, 0xff, 0xf1, 0xff,
++						0xf2, 0xff, 0xf3, 0xff,
++						0xf4, 0xff, 0xf5, 0xff,
++						0xf6, 0xff, 0xf7, 0xff };
++
++/* Expected results for vreinterpretq_u16_xx.  */
++VECT_VAR_DECL(expected_q_u16_1,uint,16,8) [] = { 0xf1f0, 0xf3f2,
++						 0xf5f4, 0xf7f6,
++						 0xf9f8, 0xfbfa,
++						 0xfdfc, 0xfffe };
++VECT_VAR_DECL(expected_q_u16_2,uint,16,8) [] = { 0xfff0, 0xfff1,
++						 0xfff2, 0xfff3,
++						 0xfff4, 0xfff5,
++						 0xfff6, 0xfff7 };
++VECT_VAR_DECL(expected_q_u16_3,uint,16,8) [] = { 0xfff0, 0xffff,
++						 0xfff1, 0xffff,
++						 0xfff2, 0xffff,
++						 0xfff3, 0xffff };
++VECT_VAR_DECL(expected_q_u16_4,uint,16,8) [] = { 0xfff0, 0xffff,
++						 0xffff, 0xffff,
++						 0xfff1, 0xffff,
++						 0xffff, 0xffff };
++VECT_VAR_DECL(expected_q_u16_5,uint,16,8) [] = { 0xf1f0, 0xf3f2,
++						 0xf5f4, 0xf7f6,
++						 0xf9f8, 0xfbfa,
++						 0xfdfc, 0xfffe };
++VECT_VAR_DECL(expected_q_u16_6,uint,16,8) [] = { 0xfff0, 0xffff,
++						 0xfff1, 0xffff,
++						 0xfff2, 0xffff,
++						 0xfff3, 0xffff };
++VECT_VAR_DECL(expected_q_u16_7,uint,16,8) [] = { 0xfff0, 0xffff,
++						 0xffff, 0xffff,
++						 0xfff1, 0xffff,
++						 0xffff, 0xffff };
++VECT_VAR_DECL(expected_q_u16_8,uint,16,8) [] = { 0xf1f0, 0xf3f2,
++						 0xf5f4, 0xf7f6,
++						 0xf9f8, 0xfbfa,
++						 0xfdfc, 0xfffe };
++VECT_VAR_DECL(expected_q_u16_9,uint,16,8) [] = { 0xfff0, 0xfff1,
++						 0xfff2, 0xfff3,
++						 0xfff4, 0xfff5,
++						 0xfff6, 0xfff7 };
++
++/* Expected results for vreinterpretq_u32_xx.  */
++VECT_VAR_DECL(expected_q_u32_1,uint,32,4) [] = { 0xf3f2f1f0, 0xf7f6f5f4,
++						 0xfbfaf9f8, 0xfffefdfc };
++VECT_VAR_DECL(expected_q_u32_2,uint,32,4) [] = { 0xfff1fff0, 0xfff3fff2,
++						 0xfff5fff4, 0xfff7fff6 };
++VECT_VAR_DECL(expected_q_u32_3,uint,32,4) [] = { 0xfffffff0, 0xfffffff1,
++						 0xfffffff2, 0xfffffff3 };
++VECT_VAR_DECL(expected_q_u32_4,uint,32,4) [] = { 0xfffffff0, 0xffffffff,
++						 0xfffffff1, 0xffffffff };
++VECT_VAR_DECL(expected_q_u32_5,uint,32,4) [] = { 0xf3f2f1f0, 0xf7f6f5f4,
++						 0xfbfaf9f8, 0xfffefdfc };
++VECT_VAR_DECL(expected_q_u32_6,uint,32,4) [] = { 0xfff1fff0, 0xfff3fff2,
++						 0xfff5fff4, 0xfff7fff6 };
++VECT_VAR_DECL(expected_q_u32_7,uint,32,4) [] = { 0xfffffff0, 0xffffffff,
++						 0xfffffff1, 0xffffffff };
++VECT_VAR_DECL(expected_q_u32_8,uint,32,4) [] = { 0xf3f2f1f0, 0xf7f6f5f4,
++						 0xfbfaf9f8, 0xfffefdfc };
++VECT_VAR_DECL(expected_q_u32_9,uint,32,4) [] = { 0xfff1fff0, 0xfff3fff2,
++						 0xfff5fff4, 0xfff7fff6 };
++
++/* Expected results for vreinterpretq_u64_xx.  */
++VECT_VAR_DECL(expected_q_u64_1,uint,64,2) [] = { 0xf7f6f5f4f3f2f1f0,
++						0xfffefdfcfbfaf9f8 };
++VECT_VAR_DECL(expected_q_u64_2,uint,64,2) [] = { 0xfff3fff2fff1fff0,
++						0xfff7fff6fff5fff4 };
++VECT_VAR_DECL(expected_q_u64_3,uint,64,2) [] = { 0xfffffff1fffffff0,
++						0xfffffff3fffffff2 };
++VECT_VAR_DECL(expected_q_u64_4,uint,64,2) [] = { 0xfffffffffffffff0,
++						0xfffffffffffffff1 };
++VECT_VAR_DECL(expected_q_u64_5,uint,64,2) [] = { 0xf7f6f5f4f3f2f1f0,
++						0xfffefdfcfbfaf9f8 };
++VECT_VAR_DECL(expected_q_u64_6,uint,64,2) [] = { 0xfff3fff2fff1fff0,
++						0xfff7fff6fff5fff4 };
++VECT_VAR_DECL(expected_q_u64_7,uint,64,2) [] = { 0xfffffff1fffffff0,
++						0xfffffff3fffffff2 };
++VECT_VAR_DECL(expected_q_u64_8,uint,64,2) [] = { 0xf7f6f5f4f3f2f1f0,
++						0xfffefdfcfbfaf9f8 };
++VECT_VAR_DECL(expected_q_u64_9,uint,64,2) [] = { 0xfff3fff2fff1fff0,
++						 0xfff7fff6fff5fff4 };
++
++/* Expected results for vreinterpret_f32_xx.  */
++VECT_VAR_DECL(expected_f32_1,hfloat,32,2) [] = { 0xf3f2f1f0, 0xf7f6f5f4 };
++VECT_VAR_DECL(expected_f32_2,hfloat,32,2) [] = { 0xfff1fff0, 0xfff3fff2 };
++VECT_VAR_DECL(expected_f32_3,hfloat,32,2) [] = { 0xfffffff0, 0xfffffff1 };
++VECT_VAR_DECL(expected_f32_4,hfloat,32,2) [] = { 0xfffffff0, 0xffffffff };
++VECT_VAR_DECL(expected_f32_5,hfloat,32,2) [] = { 0xf3f2f1f0, 0xf7f6f5f4 };
++VECT_VAR_DECL(expected_f32_6,hfloat,32,2) [] = { 0xfff1fff0, 0xfff3fff2 };
++VECT_VAR_DECL(expected_f32_7,hfloat,32,2) [] = { 0xfffffff0, 0xfffffff1 };
++VECT_VAR_DECL(expected_f32_8,hfloat,32,2) [] = { 0xfffffff0, 0xffffffff };
++VECT_VAR_DECL(expected_f32_9,hfloat,32,2) [] = { 0xf3f2f1f0, 0xf7f6f5f4 };
++VECT_VAR_DECL(expected_f32_10,hfloat,32,2) [] = { 0xfff1fff0, 0xfff3fff2 };
++
++/* Expected results for vreinterpretq_f32_xx.  */
++VECT_VAR_DECL(expected_q_f32_1,hfloat,32,4) [] = { 0xf3f2f1f0, 0xf7f6f5f4,
++						   0xfbfaf9f8, 0xfffefdfc };
++VECT_VAR_DECL(expected_q_f32_2,hfloat,32,4) [] = { 0xfff1fff0, 0xfff3fff2,
++						   0xfff5fff4, 0xfff7fff6 };
++VECT_VAR_DECL(expected_q_f32_3,hfloat,32,4) [] = { 0xfffffff0, 0xfffffff1,
++						   0xfffffff2, 0xfffffff3 };
++VECT_VAR_DECL(expected_q_f32_4,hfloat,32,4) [] = { 0xfffffff0, 0xffffffff,
++						   0xfffffff1, 0xffffffff };
++VECT_VAR_DECL(expected_q_f32_5,hfloat,32,4) [] = { 0xf3f2f1f0, 0xf7f6f5f4,
++						   0xfbfaf9f8, 0xfffefdfc };
++VECT_VAR_DECL(expected_q_f32_6,hfloat,32,4) [] = { 0xfff1fff0, 0xfff3fff2,
++						   0xfff5fff4, 0xfff7fff6 };
++VECT_VAR_DECL(expected_q_f32_7,hfloat,32,4) [] = { 0xfffffff0, 0xfffffff1,
++						   0xfffffff2, 0xfffffff3 };
++VECT_VAR_DECL(expected_q_f32_8,hfloat,32,4) [] = { 0xfffffff0, 0xffffffff,
++						   0xfffffff1, 0xffffffff };
++VECT_VAR_DECL(expected_q_f32_9,hfloat,32,4) [] = { 0xf3f2f1f0, 0xf7f6f5f4,
++						   0xfbfaf9f8, 0xfffefdfc };
++VECT_VAR_DECL(expected_q_f32_10,hfloat,32,4) [] = { 0xfff1fff0, 0xfff3fff2,
++						    0xfff5fff4, 0xfff7fff6 };
++
++/* Expected results for vreinterpretq_xx_f32.  */
++VECT_VAR_DECL(expected_xx_f32_1,int,8,8) [] = { 0x0, 0x0, 0x80, 0xc1,
++						0x0, 0x0, 0x70, 0xc1 };
++VECT_VAR_DECL(expected_xx_f32_2,int,16,4) [] = { 0x0, 0xc180, 0x0, 0xc170 };
++VECT_VAR_DECL(expected_xx_f32_3,int,32,2) [] = { 0xc1800000, 0xc1700000 };
++VECT_VAR_DECL(expected_xx_f32_4,int,64,1) [] = { 0xc1700000c1800000 };
++VECT_VAR_DECL(expected_xx_f32_5,uint,8,8) [] = { 0x0, 0x0, 0x80, 0xc1,
++						 0x0, 0x0, 0x70, 0xc1 };
++VECT_VAR_DECL(expected_xx_f32_6,uint,16,4) [] = { 0x0, 0xc180, 0x0, 0xc170 };
++VECT_VAR_DECL(expected_xx_f32_7,uint,32,2) [] = { 0xc1800000, 0xc1700000 };
++VECT_VAR_DECL(expected_xx_f32_8,uint,64,1) [] = { 0xc1700000c1800000 };
++VECT_VAR_DECL(expected_xx_f32_9,poly,8,8) [] = { 0x0, 0x0, 0x80, 0xc1,
++						 0x0, 0x0, 0x70, 0xc1 };
++VECT_VAR_DECL(expected_xx_f32_10,poly,16,4) [] = { 0x0, 0xc180, 0x0, 0xc170 };
++
++/* Expected results for vreinterpretq_xx_f32.  */
++VECT_VAR_DECL(expected_q_xx_f32_1,int,8,16) [] = { 0x0, 0x0, 0x80, 0xc1,
++						   0x0, 0x0, 0x70, 0xc1,
++						   0x0, 0x0, 0x60, 0xc1,
++						   0x0, 0x0, 0x50, 0xc1 };
++VECT_VAR_DECL(expected_q_xx_f32_2,int,16,8) [] = { 0x0, 0xc180, 0x0, 0xc170,
++						   0x0, 0xc160, 0x0, 0xc150 };
++VECT_VAR_DECL(expected_q_xx_f32_3,int,32,4) [] = { 0xc1800000, 0xc1700000,
++						   0xc1600000, 0xc1500000 };
++VECT_VAR_DECL(expected_q_xx_f32_4,int,64,2) [] = { 0xc1700000c1800000,
++						   0xc1500000c1600000 };
++VECT_VAR_DECL(expected_q_xx_f32_5,uint,8,16) [] = { 0x0, 0x0, 0x80, 0xc1,
++						    0x0, 0x0, 0x70, 0xc1,
++						    0x0, 0x0, 0x60, 0xc1,
++						    0x0, 0x0, 0x50, 0xc1 };
++VECT_VAR_DECL(expected_q_xx_f32_6,uint,16,8) [] = { 0x0, 0xc180, 0x0, 0xc170,
++						    0x0, 0xc160, 0x0, 0xc150 };
++VECT_VAR_DECL(expected_q_xx_f32_7,uint,32,4) [] = { 0xc1800000, 0xc1700000,
++						    0xc1600000, 0xc1500000 };
++VECT_VAR_DECL(expected_q_xx_f32_8,uint,64,2) [] = { 0xc1700000c1800000,
++						    0xc1500000c1600000 };
++VECT_VAR_DECL(expected_q_xx_f32_9,poly,8,16) [] = { 0x0, 0x0, 0x80, 0xc1,
++						    0x0, 0x0, 0x70, 0xc1,
++						    0x0, 0x0, 0x60, 0xc1,
++						    0x0, 0x0, 0x50, 0xc1 };
++VECT_VAR_DECL(expected_q_xx_f32_10,poly,16,8) [] = { 0x0, 0xc180, 0x0, 0xc170,
++						     0x0, 0xc160, 0x0, 0xc150 };
++
++#define TEST_MSG "VREINTERPRET/VREINTERPRETQ"
++
++void exec_vreinterpret (void)
++{
++  int i;
++
++  /* Basic test: y=vreinterpret(x), then store the result.  */
++#define TEST_VREINTERPRET(Q, T1, T2, W, N, TS1, TS2, WS, NS, EXPECTED)	\
++  VECT_VAR(vector_res, T1, W, N) =					\
++    vreinterpret##Q##_##T2##W##_##TS2##WS(VECT_VAR(vector, TS1, WS, NS)); \
++  vst1##Q##_##T2##W(VECT_VAR(result, T1, W, N),				\
++		    VECT_VAR(vector_res, T1, W, N));			\
++  CHECK(TEST_MSG, T1, W, N, PRIx##W, EXPECTED, "");
++
++#define TEST_VREINTERPRET_POLY(Q, T1, T2, W, N, TS1, TS2, WS, NS, EXPECTED) \
++  VECT_VAR(vector_res, T1, W, N) =					\
++    vreinterpret##Q##_##T2##W##_##TS2##WS(VECT_VAR(vector, TS1, WS, NS)); \
++  vst1##Q##_##T2##W(VECT_VAR(result, T1, W, N),				\
++		    VECT_VAR(vector_res, T1, W, N));			\
++  CHECK(TEST_MSG, T1, W, N, PRIx##W, EXPECTED, "");
++
++#define TEST_VREINTERPRET_FP(Q, T1, T2, W, N, TS1, TS2, WS, NS, EXPECTED) \
++  VECT_VAR(vector_res, T1, W, N) =					\
++    vreinterpret##Q##_##T2##W##_##TS2##WS(VECT_VAR(vector, TS1, WS, NS)); \
++  vst1##Q##_##T2##W(VECT_VAR(result, T1, W, N),				\
++		    VECT_VAR(vector_res, T1, W, N));			\
++  CHECK_FP(TEST_MSG, T1, W, N, PRIx##W, EXPECTED, "");
++
++  DECL_VARIABLE_ALL_VARIANTS(vector);
++  DECL_VARIABLE_ALL_VARIANTS(vector_res);
++
++  clean_results ();
++
++
++  /* Initialize input "vector" from "buffer".  */
++  TEST_MACRO_ALL_VARIANTS_2_5(VLOAD, vector, buffer);
++  VLOAD(vector, buffer, , float, f, 32, 2);
++  VLOAD(vector, buffer, q, float, f, 32, 4);
++
++  /* vreinterpret_s8_xx.  */
++  TEST_VREINTERPRET(, int, s, 8, 8, int, s, 16, 4, expected_s8_1);
++  TEST_VREINTERPRET(, int, s, 8, 8, int, s, 32, 2, expected_s8_2);
++  TEST_VREINTERPRET(, int, s, 8, 8, int, s, 64, 1, expected_s8_3);
++  TEST_VREINTERPRET(, int, s, 8, 8, uint, u, 8, 8, expected_s8_4);
++  TEST_VREINTERPRET(, int, s, 8, 8, uint, u, 16, 4, expected_s8_5);
++  TEST_VREINTERPRET(, int, s, 8, 8, uint, u, 32, 2, expected_s8_6);
++  TEST_VREINTERPRET(, int, s, 8, 8, uint, u, 64, 1, expected_s8_7);
++  TEST_VREINTERPRET(, int, s, 8, 8, poly, p, 8, 8, expected_s8_8);
++  TEST_VREINTERPRET(, int, s, 8, 8, poly, p, 16, 4, expected_s8_9);
++
++  /* vreinterpret_s16_xx.  */
++  TEST_VREINTERPRET(, int, s, 16, 4, int, s, 8, 8, expected_s16_1);
++  TEST_VREINTERPRET(, int, s, 16, 4, int, s, 32, 2, expected_s16_2);
++  TEST_VREINTERPRET(, int, s, 16, 4, int, s, 64, 1, expected_s16_3);
++  TEST_VREINTERPRET(, int, s, 16, 4, uint, u, 8, 8, expected_s16_4);
++  TEST_VREINTERPRET(, int, s, 16, 4, uint, u, 16, 4, expected_s16_5);
++  TEST_VREINTERPRET(, int, s, 16, 4, uint, u, 32, 2, expected_s16_6);
++  TEST_VREINTERPRET(, int, s, 16, 4, uint, u, 64, 1, expected_s16_7);
++  TEST_VREINTERPRET(, int, s, 16, 4, poly, p, 8, 8, expected_s16_8);
++  TEST_VREINTERPRET(, int, s, 16, 4, poly, p, 16, 4, expected_s16_9);
++
++  /* vreinterpret_s32_xx.  */
++  TEST_VREINTERPRET(, int, s, 32, 2, int, s, 8, 8, expected_s32_1);
++  TEST_VREINTERPRET(, int, s, 32, 2, int, s, 16, 4, expected_s32_2);
++  TEST_VREINTERPRET(, int, s, 32, 2, int, s, 64, 1, expected_s32_3);
++  TEST_VREINTERPRET(, int, s, 32, 2, uint, u, 8, 8, expected_s32_4);
++  TEST_VREINTERPRET(, int, s, 32, 2, uint, u, 16, 4, expected_s32_5);
++  TEST_VREINTERPRET(, int, s, 32, 2, uint, u, 32, 2, expected_s32_6);
++  TEST_VREINTERPRET(, int, s, 32, 2, uint, u, 64, 1, expected_s32_7);
++  TEST_VREINTERPRET(, int, s, 32, 2, poly, p, 8, 8, expected_s32_8);
++  TEST_VREINTERPRET(, int, s, 32, 2, poly, p, 16, 4, expected_s32_9);
++
++  /* vreinterpret_s64_xx.  */
++  TEST_VREINTERPRET(, int, s, 64, 1, int, s, 8, 8, expected_s64_1);
++  TEST_VREINTERPRET(, int, s, 64, 1, int, s, 16, 4, expected_s64_2);
++  TEST_VREINTERPRET(, int, s, 64, 1, int, s, 32, 2, expected_s64_3);
++  TEST_VREINTERPRET(, int, s, 64, 1, uint, u, 8, 8, expected_s64_4);
++  TEST_VREINTERPRET(, int, s, 64, 1, uint, u, 16, 4, expected_s64_5);
++  TEST_VREINTERPRET(, int, s, 64, 1, uint, u, 32, 2, expected_s64_6);
++  TEST_VREINTERPRET(, int, s, 64, 1, uint, u, 64, 1, expected_s64_7);
++  TEST_VREINTERPRET(, int, s, 64, 1, poly, p, 8, 8, expected_s64_8);
++  TEST_VREINTERPRET(, int, s, 64, 1, poly, p, 16, 4, expected_s64_9);
++
++  /* vreinterpret_u8_xx.  */
++  TEST_VREINTERPRET(, uint, u, 8, 8, int, s, 8, 8, expected_u8_1);
++  TEST_VREINTERPRET(, uint, u, 8, 8, int, s, 16, 4, expected_u8_2);
++  TEST_VREINTERPRET(, uint, u, 8, 8, int, s, 32, 2, expected_u8_3);
++  TEST_VREINTERPRET(, uint, u, 8, 8, int, s, 64, 1, expected_u8_4);
++  TEST_VREINTERPRET(, uint, u, 8, 8, uint, u, 16, 4, expected_u8_5);
++  TEST_VREINTERPRET(, uint, u, 8, 8, uint, u, 32, 2, expected_u8_6);
++  TEST_VREINTERPRET(, uint, u, 8, 8, uint, u, 64, 1, expected_u8_7);
++  TEST_VREINTERPRET(, uint, u, 8, 8, poly, p, 8, 8, expected_u8_8);
++  TEST_VREINTERPRET(, uint, u, 8, 8, poly, p, 16, 4, expected_u8_9);
++
++  /* vreinterpret_u16_xx.  */
++  TEST_VREINTERPRET(, uint, u, 16, 4, int, s, 8, 8, expected_u16_1);
++  TEST_VREINTERPRET(, uint, u, 16, 4, int, s, 16, 4, expected_u16_2);
++  TEST_VREINTERPRET(, uint, u, 16, 4, int, s, 32, 2, expected_u16_3);
++  TEST_VREINTERPRET(, uint, u, 16, 4, int, s, 64, 1, expected_u16_4);
++  TEST_VREINTERPRET(, uint, u, 16, 4, uint, u, 8, 8, expected_u16_5);
++  TEST_VREINTERPRET(, uint, u, 16, 4, uint, u, 32, 2, expected_u16_6);
++  TEST_VREINTERPRET(, uint, u, 16, 4, uint, u, 64, 1, expected_u16_7);
++  TEST_VREINTERPRET(, uint, u, 16, 4, poly, p, 8, 8, expected_u16_8);
++  TEST_VREINTERPRET(, uint, u, 16, 4, poly, p, 16, 4, expected_u16_9);
++
++  /* vreinterpret_u32_xx.  */
++  TEST_VREINTERPRET(, uint, u, 32, 2, int, s, 8, 8, expected_u32_1);
++  TEST_VREINTERPRET(, uint, u, 32, 2, int, s, 16, 4, expected_u32_2);
++  TEST_VREINTERPRET(, uint, u, 32, 2, int, s, 32, 2, expected_u32_3);
++  TEST_VREINTERPRET(, uint, u, 32, 2, int, s, 64, 1, expected_u32_4);
++  TEST_VREINTERPRET(, uint, u, 32, 2, uint, u, 8, 8, expected_u32_5);
++  TEST_VREINTERPRET(, uint, u, 32, 2, uint, u, 16, 4, expected_u32_6);
++  TEST_VREINTERPRET(, uint, u, 32, 2, uint, u, 64, 1, expected_u32_7);
++  TEST_VREINTERPRET(, uint, u, 32, 2, poly, p, 8, 8, expected_u32_8);
++  TEST_VREINTERPRET(, uint, u, 32, 2, poly, p, 16, 4, expected_u32_9);
++
++  /* vreinterpret_u64_xx.  */
++  TEST_VREINTERPRET(, uint, u, 64, 1, int, s, 8, 8, expected_u64_1);
++  TEST_VREINTERPRET(, uint, u, 64, 1, int, s, 16, 4, expected_u64_2);
++  TEST_VREINTERPRET(, uint, u, 64, 1, int, s, 32, 2, expected_u64_3);
++  TEST_VREINTERPRET(, uint, u, 64, 1, int, s, 64, 1, expected_u64_4);
++  TEST_VREINTERPRET(, uint, u, 64, 1, uint, u, 8, 8, expected_u64_5);
++  TEST_VREINTERPRET(, uint, u, 64, 1, uint, u, 16, 4, expected_u64_6);
++  TEST_VREINTERPRET(, uint, u, 64, 1, uint, u, 32, 2, expected_u64_7);
++  TEST_VREINTERPRET(, uint, u, 64, 1, poly, p, 8, 8, expected_u64_8);
++  TEST_VREINTERPRET(, uint, u, 64, 1, poly, p, 16, 4, expected_u64_9);
++
++  /* vreinterpret_p8_xx.  */
++  TEST_VREINTERPRET_POLY(, poly, p, 8, 8, int, s, 8, 8, expected_p8_1);
++  TEST_VREINTERPRET_POLY(, poly, p, 8, 8, int, s, 16, 4, expected_p8_2);
++  TEST_VREINTERPRET_POLY(, poly, p, 8, 8, int, s, 32, 2, expected_p8_3);
++  TEST_VREINTERPRET_POLY(, poly, p, 8, 8, int, s, 64, 1, expected_p8_4);
++  TEST_VREINTERPRET_POLY(, poly, p, 8, 8, uint, u, 8, 8, expected_p8_5);
++  TEST_VREINTERPRET_POLY(, poly, p, 8, 8, uint, u, 16, 4, expected_p8_6);
++  TEST_VREINTERPRET_POLY(, poly, p, 8, 8, uint, u, 32, 2, expected_p8_7);
++  TEST_VREINTERPRET_POLY(, poly, p, 8, 8, uint, u, 64, 1, expected_p8_8);
++  TEST_VREINTERPRET_POLY(, poly, p, 8, 8, poly, p, 16, 4, expected_p8_9);
++
++  /* vreinterpret_p16_xx.  */
++  TEST_VREINTERPRET_POLY(, poly, p, 16, 4, int, s, 8, 8, expected_p16_1);
++  TEST_VREINTERPRET_POLY(, poly, p, 16, 4, int, s, 16, 4, expected_p16_2);
++  TEST_VREINTERPRET_POLY(, poly, p, 16, 4, int, s, 32, 2, expected_p16_3);
++  TEST_VREINTERPRET_POLY(, poly, p, 16, 4, int, s, 64, 1, expected_p16_4);
++  TEST_VREINTERPRET_POLY(, poly, p, 16, 4, uint, u, 8, 8, expected_p16_5);
++  TEST_VREINTERPRET_POLY(, poly, p, 16, 4, uint, u, 16, 4, expected_p16_6);
++  TEST_VREINTERPRET_POLY(, poly, p, 16, 4, uint, u, 32, 2, expected_p16_7);
++  TEST_VREINTERPRET_POLY(, poly, p, 16, 4, uint, u, 64, 1, expected_p16_8);
++  TEST_VREINTERPRET_POLY(, poly, p, 16, 4, poly, p, 8, 8, expected_p16_9);
++
++  /* vreinterpretq_s8_xx.  */
++  TEST_VREINTERPRET(q, int, s, 8, 16, int, s, 16, 8, expected_q_s8_1);
++  TEST_VREINTERPRET(q, int, s, 8, 16, int, s, 32, 4, expected_q_s8_2);
++  TEST_VREINTERPRET(q, int, s, 8, 16, int, s, 64, 2, expected_q_s8_3);
++  TEST_VREINTERPRET(q, int, s, 8, 16, uint, u, 8, 16, expected_q_s8_4);
++  TEST_VREINTERPRET(q, int, s, 8, 16, uint, u, 16, 8, expected_q_s8_5);
++  TEST_VREINTERPRET(q, int, s, 8, 16, uint, u, 32, 4, expected_q_s8_6);
++  TEST_VREINTERPRET(q, int, s, 8, 16, uint, u, 64, 2, expected_q_s8_7);
++  TEST_VREINTERPRET(q, int, s, 8, 16, poly, p, 8, 16, expected_q_s8_8);
++  TEST_VREINTERPRET(q, int, s, 8, 16, poly, p, 16, 8, expected_q_s8_9);
++
++  /* vreinterpretq_s16_xx.  */
++  TEST_VREINTERPRET(q, int, s, 16, 8, int, s, 8, 16, expected_q_s16_1);
++  TEST_VREINTERPRET(q, int, s, 16, 8, int, s, 32, 4, expected_q_s16_2);
++  TEST_VREINTERPRET(q, int, s, 16, 8, int, s, 64, 2, expected_q_s16_3);
++  TEST_VREINTERPRET(q, int, s, 16, 8, uint, u, 8, 16, expected_q_s16_4);
++  TEST_VREINTERPRET(q, int, s, 16, 8, uint, u, 16, 8, expected_q_s16_5);
++  TEST_VREINTERPRET(q, int, s, 16, 8, uint, u, 32, 4, expected_q_s16_6);
++  TEST_VREINTERPRET(q, int, s, 16, 8, uint, u, 64, 2, expected_q_s16_7);
++  TEST_VREINTERPRET(q, int, s, 16, 8, poly, p, 8, 16, expected_q_s16_8);
++  TEST_VREINTERPRET(q, int, s, 16, 8, poly, p, 16, 8, expected_q_s16_9);
++
++  /* vreinterpretq_s32_xx.  */
++  TEST_VREINTERPRET(q, int, s, 32, 4, int, s, 8, 16, expected_q_s32_1);
++  TEST_VREINTERPRET(q, int, s, 32, 4, int, s, 16, 8, expected_q_s32_2);
++  TEST_VREINTERPRET(q, int, s, 32, 4, int, s, 64, 2, expected_q_s32_3);
++  TEST_VREINTERPRET(q, int, s, 32, 4, uint, u, 8, 16, expected_q_s32_4);
++  TEST_VREINTERPRET(q, int, s, 32, 4, uint, u, 16, 8, expected_q_s32_5);
++  TEST_VREINTERPRET(q, int, s, 32, 4, uint, u, 32, 4, expected_q_s32_6);
++  TEST_VREINTERPRET(q, int, s, 32, 4, uint, u, 64, 2, expected_q_s32_7);
++  TEST_VREINTERPRET(q, int, s, 32, 4, poly, p, 8, 16, expected_q_s32_8);
++  TEST_VREINTERPRET(q, int, s, 32, 4, poly, p, 16, 8, expected_q_s32_9);
++
++  /* vreinterpretq_s64_xx.  */
++  TEST_VREINTERPRET(q, int, s, 64, 2, int, s, 8, 16, expected_q_s64_1);
++  TEST_VREINTERPRET(q, int, s, 64, 2, int, s, 16, 8, expected_q_s64_2);
++  TEST_VREINTERPRET(q, int, s, 64, 2, int, s, 32, 4, expected_q_s64_3);
++  TEST_VREINTERPRET(q, int, s, 64, 2, uint, u, 8, 16, expected_q_s64_4);
++  TEST_VREINTERPRET(q, int, s, 64, 2, uint, u, 16, 8, expected_q_s64_5);
++  TEST_VREINTERPRET(q, int, s, 64, 2, uint, u, 32, 4, expected_q_s64_6);
++  TEST_VREINTERPRET(q, int, s, 64, 2, uint, u, 64, 2, expected_q_s64_7);
++  TEST_VREINTERPRET(q, int, s, 64, 2, poly, p, 8, 16, expected_q_s64_8);
++  TEST_VREINTERPRET(q, int, s, 64, 2, poly, p, 16, 8, expected_q_s64_9);
++
++  /* vreinterpretq_u8_xx.  */
++  TEST_VREINTERPRET(q, uint, u, 8, 16, int, s, 8, 16, expected_q_u8_1);
++  TEST_VREINTERPRET(q, uint, u, 8, 16, int, s, 16, 8, expected_q_u8_2);
++  TEST_VREINTERPRET(q, uint, u, 8, 16, int, s, 32, 4, expected_q_u8_3);
++  TEST_VREINTERPRET(q, uint, u, 8, 16, int, s, 64, 2, expected_q_u8_4);
++  TEST_VREINTERPRET(q, uint, u, 8, 16, uint, u, 16, 8, expected_q_u8_5);
++  TEST_VREINTERPRET(q, uint, u, 8, 16, uint, u, 32, 4, expected_q_u8_6);
++  TEST_VREINTERPRET(q, uint, u, 8, 16, uint, u, 64, 2, expected_q_u8_7);
++  TEST_VREINTERPRET(q, uint, u, 8, 16, poly, p, 8, 16, expected_q_u8_8);
++  TEST_VREINTERPRET(q, uint, u, 8, 16, poly, p, 16, 8, expected_q_u8_9);
++
++  /* vreinterpretq_u16_xx.  */
++  TEST_VREINTERPRET(q, uint, u, 16, 8, int, s, 8, 16, expected_q_u16_1);
++  TEST_VREINTERPRET(q, uint, u, 16, 8, int, s, 16, 8, expected_q_u16_2);
++  TEST_VREINTERPRET(q, uint, u, 16, 8, int, s, 32, 4, expected_q_u16_3);
++  TEST_VREINTERPRET(q, uint, u, 16, 8, int, s, 64, 2, expected_q_u16_4);
++  TEST_VREINTERPRET(q, uint, u, 16, 8, uint, u, 8, 16, expected_q_u16_5);
++  TEST_VREINTERPRET(q, uint, u, 16, 8, uint, u, 32, 4, expected_q_u16_6);
++  TEST_VREINTERPRET(q, uint, u, 16, 8, uint, u, 64, 2, expected_q_u16_7);
++  TEST_VREINTERPRET(q, uint, u, 16, 8, poly, p, 8, 16, expected_q_u16_8);
++  TEST_VREINTERPRET(q, uint, u, 16, 8, poly, p, 16, 8, expected_q_u16_9);
++
++  /* vreinterpretq_u32_xx.  */
++  TEST_VREINTERPRET(q, uint, u, 32, 4, int, s, 8, 16, expected_q_u32_1);
++  TEST_VREINTERPRET(q, uint, u, 32, 4, int, s, 16, 8, expected_q_u32_2);
++  TEST_VREINTERPRET(q, uint, u, 32, 4, int, s, 32, 4, expected_q_u32_3);
++  TEST_VREINTERPRET(q, uint, u, 32, 4, int, s, 64, 2, expected_q_u32_4);
++  TEST_VREINTERPRET(q, uint, u, 32, 4, uint, u, 8, 16, expected_q_u32_5);
++  TEST_VREINTERPRET(q, uint, u, 32, 4, uint, u, 16, 8, expected_q_u32_6);
++  TEST_VREINTERPRET(q, uint, u, 32, 4, uint, u, 64, 2, expected_q_u32_7);
++  TEST_VREINTERPRET(q, uint, u, 32, 4, poly, p, 8, 16, expected_q_u32_8);
++  TEST_VREINTERPRET(q, uint, u, 32, 4, poly, p, 16, 8, expected_q_u32_9);
++
++  /* vreinterpretq_u64_xx.  */
++  TEST_VREINTERPRET(q, uint, u, 64, 2, int, s, 8, 16, expected_q_u64_1);
++  TEST_VREINTERPRET(q, uint, u, 64, 2, int, s, 16, 8, expected_q_u64_2);
++  TEST_VREINTERPRET(q, uint, u, 64, 2, int, s, 32, 4, expected_q_u64_3);
++  TEST_VREINTERPRET(q, uint, u, 64, 2, int, s, 64, 2, expected_q_u64_4);
++  TEST_VREINTERPRET(q, uint, u, 64, 2, uint, u, 8, 16, expected_q_u64_5);
++  TEST_VREINTERPRET(q, uint, u, 64, 2, uint, u, 16, 8, expected_q_u64_6);
++  TEST_VREINTERPRET(q, uint, u, 64, 2, uint, u, 32, 4, expected_q_u64_7);
++  TEST_VREINTERPRET(q, uint, u, 64, 2, poly, p, 8, 16, expected_q_u64_8);
++  TEST_VREINTERPRET(q, uint, u, 64, 2, poly, p, 16, 8, expected_q_u64_9);
++
++  /* vreinterpret_f32_xx.  */
++  TEST_VREINTERPRET_FP(, float, f, 32, 2, int, s, 8, 8, expected_f32_1);
++  TEST_VREINTERPRET_FP(, float, f, 32, 2, int, s, 16, 4, expected_f32_2);
++  TEST_VREINTERPRET_FP(, float, f, 32, 2, int, s, 32, 2, expected_f32_3);
++  TEST_VREINTERPRET_FP(, float, f, 32, 2, int, s, 64, 1, expected_f32_4);
++  TEST_VREINTERPRET_FP(, float, f, 32, 2, uint, u, 8, 8, expected_f32_5);
++  TEST_VREINTERPRET_FP(, float, f, 32, 2, uint, u, 16, 4, expected_f32_6);
++  TEST_VREINTERPRET_FP(, float, f, 32, 2, uint, u, 32, 2, expected_f32_7);
++  TEST_VREINTERPRET_FP(, float, f, 32, 2, uint, u, 64, 1, expected_f32_8);
++  TEST_VREINTERPRET_FP(, float, f, 32, 2, poly, p, 8, 8, expected_f32_9);
++  TEST_VREINTERPRET_FP(, float, f, 32, 2, poly, p, 16, 4, expected_f32_10);
++
++  /* vreinterpretq_f32_xx.  */
++  TEST_VREINTERPRET_FP(q, float, f, 32, 4, int, s, 8, 16, expected_q_f32_1);
++  TEST_VREINTERPRET_FP(q, float, f, 32, 4, int, s, 16, 8, expected_q_f32_2);
++  TEST_VREINTERPRET_FP(q, float, f, 32, 4, int, s, 32, 4, expected_q_f32_3);
++  TEST_VREINTERPRET_FP(q, float, f, 32, 4, int, s, 64, 2, expected_q_f32_4);
++  TEST_VREINTERPRET_FP(q, float, f, 32, 4, uint, u, 8, 16, expected_q_f32_5);
++  TEST_VREINTERPRET_FP(q, float, f, 32, 4, uint, u, 16, 8, expected_q_f32_6);
++  TEST_VREINTERPRET_FP(q, float, f, 32, 4, uint, u, 32, 4, expected_q_f32_7);
++  TEST_VREINTERPRET_FP(q, float, f, 32, 4, uint, u, 64, 2, expected_q_f32_8);
++  TEST_VREINTERPRET_FP(q, float, f, 32, 4, poly, p, 8, 16, expected_q_f32_9);
++  TEST_VREINTERPRET_FP(q, float, f, 32, 4, poly, p, 16, 8, expected_q_f32_10);
++
++  /* vreinterpret_xx_f32.  */
++  TEST_VREINTERPRET(, int, s, 8, 8, float, f, 32, 2, expected_xx_f32_1);
++  TEST_VREINTERPRET(, int, s, 16, 4, float, f, 32, 2, expected_xx_f32_2);
++  TEST_VREINTERPRET(, int, s, 32, 2, float, f, 32, 2, expected_xx_f32_3);
++  TEST_VREINTERPRET(, int, s, 64, 1, float, f, 32, 2, expected_xx_f32_4);
++  TEST_VREINTERPRET(, uint, u, 8, 8, float, f, 32, 2, expected_xx_f32_5);
++  TEST_VREINTERPRET(, uint, u, 16, 4, float, f, 32, 2, expected_xx_f32_6);
++  TEST_VREINTERPRET(, uint, u, 32, 2, float, f, 32, 2, expected_xx_f32_7);
++  TEST_VREINTERPRET(, uint, u, 64, 1, float, f, 32, 2, expected_xx_f32_8);
++  TEST_VREINTERPRET_POLY(, poly, p, 8, 8, float, f, 32, 2, expected_xx_f32_9);
++  TEST_VREINTERPRET_POLY(, poly, p, 16, 4, float, f, 32, 2, expected_xx_f32_10);
++
++  /* vreinterpretq_xx_f32.  */
++  TEST_VREINTERPRET(q, int, s, 8, 16, float, f, 32, 4, expected_q_xx_f32_1);
++  TEST_VREINTERPRET(q, int, s, 16, 8, float, f, 32, 4, expected_q_xx_f32_2);
++  TEST_VREINTERPRET(q, int, s, 32, 4, float, f, 32, 4, expected_q_xx_f32_3);
++  TEST_VREINTERPRET(q, int, s, 64, 2, float, f, 32, 4, expected_q_xx_f32_4);
++  TEST_VREINTERPRET(q, uint, u, 8, 16, float, f, 32, 4, expected_q_xx_f32_5);
++  TEST_VREINTERPRET(q, uint, u, 16, 8, float, f, 32, 4, expected_q_xx_f32_6);
++  TEST_VREINTERPRET(q, uint, u, 32, 4, float, f, 32, 4, expected_q_xx_f32_7);
++  TEST_VREINTERPRET(q, uint, u, 64, 2, float, f, 32, 4, expected_q_xx_f32_8);
++  TEST_VREINTERPRET_POLY(q, poly, p, 8, 16, float, f, 32, 4, expected_q_xx_f32_9);
++  TEST_VREINTERPRET_POLY(q, poly, p, 16, 8, float, f, 32, 4, expected_q_xx_f32_10);
++}
++
++int main (void)
++{
++  exec_vreinterpret ();
++  return 0;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vrev.c
+@@ -0,0 +1,200 @@
++#include <arm_neon.h>
++#include "arm-neon-ref.h"
++#include "compute-ref-data.h"
++
++/* Expected results for vrev16.  */
++VECT_VAR_DECL(expected_vrev16,int,8,8) [] = { 0xf1, 0xf0, 0xf3, 0xf2,
++					      0xf5, 0xf4, 0xf7, 0xf6 };
++VECT_VAR_DECL(expected_vrev16,uint,8,8) [] = { 0xf1, 0xf0, 0xf3, 0xf2,
++					       0xf5, 0xf4, 0xf7, 0xf6 };
++VECT_VAR_DECL(expected_vrev16,poly,8,8) [] = { 0xf1, 0xf0, 0xf3, 0xf2,
++					       0xf5, 0xf4, 0xf7, 0xf6 };
++VECT_VAR_DECL(expected_vrev16,int,8,16) [] = { 0xf1, 0xf0, 0xf3, 0xf2,
++					       0xf5, 0xf4, 0xf7, 0xf6,
++					       0xf9, 0xf8, 0xfb, 0xfa,
++					       0xfd, 0xfc, 0xff, 0xfe };
++VECT_VAR_DECL(expected_vrev16,uint,8,16) [] = { 0xf1, 0xf0, 0xf3, 0xf2,
++						0xf5, 0xf4, 0xf7, 0xf6,
++						0xf9, 0xf8, 0xfb, 0xfa,
++						0xfd, 0xfc, 0xff, 0xfe };
++VECT_VAR_DECL(expected_vrev16,poly,8,16) [] = { 0xf1, 0xf0, 0xf3, 0xf2,
++						0xf5, 0xf4, 0xf7, 0xf6,
++						0xf9, 0xf8, 0xfb, 0xfa,
++						0xfd, 0xfc, 0xff, 0xfe };
++
++/* Expected results for vrev32.  */
++VECT_VAR_DECL(expected_vrev32,int,8,8) [] = { 0xf3, 0xf2, 0xf1, 0xf0,
++					      0xf7, 0xf6, 0xf5, 0xf4 };
++VECT_VAR_DECL(expected_vrev32,int,16,4) [] = { 0xfff1, 0xfff0, 0xfff3, 0xfff2 };
++VECT_VAR_DECL(expected_vrev32,uint,8,8) [] = { 0xf3, 0xf2, 0xf1, 0xf0,
++					       0xf7, 0xf6, 0xf5, 0xf4 };
++VECT_VAR_DECL(expected_vrev32,uint,16,4) [] = { 0xfff1, 0xfff0, 0xfff3, 0xfff2 };
++VECT_VAR_DECL(expected_vrev32,poly,8,8) [] = { 0xf3, 0xf2, 0xf1, 0xf0,
++					       0xf7, 0xf6, 0xf5, 0xf4 };
++VECT_VAR_DECL(expected_vrev32,poly,16,4) [] = { 0xfff1, 0xfff0, 0xfff3, 0xfff2 };
++VECT_VAR_DECL(expected_vrev32,int,8,16) [] = { 0xf3, 0xf2, 0xf1, 0xf0,
++					       0xf7, 0xf6, 0xf5, 0xf4,
++					       0xfb, 0xfa, 0xf9, 0xf8,
++					       0xff, 0xfe, 0xfd, 0xfc };
++VECT_VAR_DECL(expected_vrev32,int,16,8) [] = { 0xfff1, 0xfff0, 0xfff3, 0xfff2,
++					       0xfff5, 0xfff4, 0xfff7, 0xfff6 };
++VECT_VAR_DECL(expected_vrev32,uint,8,16) [] = { 0xf3, 0xf2, 0xf1, 0xf0,
++						0xf7, 0xf6, 0xf5, 0xf4,
++						0xfb, 0xfa, 0xf9, 0xf8,
++						0xff, 0xfe, 0xfd, 0xfc };
++VECT_VAR_DECL(expected_vrev32,uint,16,8) [] = { 0xfff1, 0xfff0, 0xfff3, 0xfff2,
++						0xfff5, 0xfff4, 0xfff7, 0xfff6 };
++VECT_VAR_DECL(expected_vrev32,poly,8,16) [] = { 0xf3, 0xf2, 0xf1, 0xf0,
++						0xf7, 0xf6, 0xf5, 0xf4,
++						0xfb, 0xfa, 0xf9, 0xf8,
++						0xff, 0xfe, 0xfd, 0xfc };
++VECT_VAR_DECL(expected_vrev32,poly,16,8) [] = { 0xfff1, 0xfff0, 0xfff3, 0xfff2,
++						0xfff5, 0xfff4, 0xfff7, 0xfff6 };
++
++/* Expected results for vrev64.  */
++VECT_VAR_DECL(expected_vrev64,int,8,8) [] = { 0xf7, 0xf6, 0xf5, 0xf4,
++					      0xf3, 0xf2, 0xf1, 0xf0 };
++VECT_VAR_DECL(expected_vrev64,int,16,4) [] = { 0xfff3, 0xfff2, 0xfff1, 0xfff0 };
++VECT_VAR_DECL(expected_vrev64,int,32,2) [] = { 0xfffffff1, 0xfffffff0 };
++VECT_VAR_DECL(expected_vrev64,uint,8,8) [] = { 0xf7, 0xf6, 0xf5, 0xf4, 0xf3,
++					       0xf2, 0xf1, 0xf0 };
++VECT_VAR_DECL(expected_vrev64,uint,16,4) [] = { 0xfff3, 0xfff2, 0xfff1, 0xfff0 };
++VECT_VAR_DECL(expected_vrev64,uint,32,2) [] = { 0xfffffff1, 0xfffffff0 };
++VECT_VAR_DECL(expected_vrev64,poly,8,8) [] = { 0xf7, 0xf6, 0xf5, 0xf4,
++					       0xf3, 0xf2, 0xf1, 0xf0 };
++VECT_VAR_DECL(expected_vrev64,poly,16,4) [] = { 0xfff3, 0xfff2, 0xfff1, 0xfff0 };
++VECT_VAR_DECL(expected_vrev64,hfloat,32,2) [] = { 0xc1700000, 0xc1800000 };
++VECT_VAR_DECL(expected_vrev64,int,8,16) [] = { 0xf7, 0xf6, 0xf5, 0xf4,
++					       0xf3, 0xf2, 0xf1, 0xf0,
++					       0xff, 0xfe, 0xfd, 0xfc,
++					       0xfb, 0xfa, 0xf9, 0xf8 };
++VECT_VAR_DECL(expected_vrev64,int,16,8) [] = { 0xfff3, 0xfff2, 0xfff1, 0xfff0,
++					       0xfff7, 0xfff6, 0xfff5, 0xfff4 };
++VECT_VAR_DECL(expected_vrev64,int,32,4) [] = { 0xfffffff1, 0xfffffff0,
++					       0xfffffff3, 0xfffffff2 };
++VECT_VAR_DECL(expected_vrev64,uint,8,16) [] = { 0xf7, 0xf6, 0xf5, 0xf4,
++						0xf3, 0xf2, 0xf1, 0xf0,
++						0xff, 0xfe, 0xfd, 0xfc,
++						0xfb, 0xfa, 0xf9, 0xf8 };
++VECT_VAR_DECL(expected_vrev64,uint,16,8) [] = { 0xfff3, 0xfff2, 0xfff1, 0xfff0,
++						0xfff7, 0xfff6, 0xfff5, 0xfff4 };
++VECT_VAR_DECL(expected_vrev64,uint,32,4) [] = { 0xfffffff1, 0xfffffff0,
++						0xfffffff3, 0xfffffff2 };
++VECT_VAR_DECL(expected_vrev64,poly,8,16) [] = { 0xf7, 0xf6, 0xf5, 0xf4,
++						0xf3, 0xf2, 0xf1, 0xf0,
++						0xff, 0xfe, 0xfd, 0xfc,
++						0xfb, 0xfa, 0xf9, 0xf8 };
++VECT_VAR_DECL(expected_vrev64,poly,16,8) [] = { 0xfff3, 0xfff2, 0xfff1, 0xfff0,
++						0xfff7, 0xfff6, 0xfff5, 0xfff4 };
++VECT_VAR_DECL(expected_vrev64,hfloat,32,4) [] = { 0xc1700000, 0xc1800000,
++						  0xc1500000, 0xc1600000 };
++
++void exec_vrev (void)
++{
++  /* Basic test: y=vrev(x), then store the result.  */
++#define TEST_VREV(Q, T1, T2, W, N, W2)					\
++  VECT_VAR(vector_res, T1, W, N) =					\
++    vrev##W2##Q##_##T2##W(VECT_VAR(vector, T1, W, N));			\
++  vst1##Q##_##T2##W(VECT_VAR(result, T1, W, N), VECT_VAR(vector_res, T1, W, N))
++
++  DECL_VARIABLE_ALL_VARIANTS(vector);
++  DECL_VARIABLE_ALL_VARIANTS(vector_res);
++
++  clean_results ();
++
++  /* Initialize input "vector" from "buffer".  */
++  TEST_MACRO_ALL_VARIANTS_2_5(VLOAD, vector, buffer);
++  VLOAD(vector, buffer, , float, f, 32, 2);
++  VLOAD(vector, buffer, q, float, f, 32, 4);
++
++  /* Check vrev in each of the existing combinations.  */
++#define TEST_MSG "VREV16"
++  TEST_VREV(, int, s, 8, 8, 16);
++  TEST_VREV(, uint, u, 8, 8, 16);
++  TEST_VREV(, poly, p, 8, 8, 16);
++  TEST_VREV(q, int, s, 8, 16, 16);
++  TEST_VREV(q, uint, u, 8, 16, 16);
++  TEST_VREV(q, poly, p, 8, 16, 16);
++
++  CHECK(TEST_MSG, int, 8, 8, PRIx8, expected_vrev16, "");
++  CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected_vrev16, "");
++  CHECK(TEST_MSG, poly, 8, 8, PRIx8, expected_vrev16, "");
++  CHECK(TEST_MSG, int, 8, 16, PRIx8, expected_vrev16, "");
++  CHECK(TEST_MSG, uint, 8, 16, PRIx8, expected_vrev16, "");
++  CHECK(TEST_MSG, poly, 8, 16, PRIx8, expected_vrev16, "");
++
++#undef TEST_MSG
++#define TEST_MSG "VREV32"
++  TEST_VREV(, int, s, 8, 8, 32);
++  TEST_VREV(, int, s, 16, 4, 32);
++  TEST_VREV(, uint, u, 8, 8, 32);
++  TEST_VREV(, uint, u, 16, 4, 32);
++  TEST_VREV(, poly, p, 8, 8, 32);
++  TEST_VREV(, poly, p, 16, 4, 32);
++  TEST_VREV(q, int, s, 8, 16, 32);
++  TEST_VREV(q, int, s, 16, 8, 32);
++  TEST_VREV(q, uint, u, 8, 16, 32);
++  TEST_VREV(q, uint, u, 16, 8, 32);
++  TEST_VREV(q, poly, p, 8, 16, 32);
++  TEST_VREV(q, poly, p, 16, 8, 32);
++
++  CHECK(TEST_MSG, int, 8, 8, PRIx8, expected_vrev32, "");
++  CHECK(TEST_MSG, int, 16, 4, PRIx16, expected_vrev32, "");
++  CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected_vrev32, "");
++  CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected_vrev32, "");
++  CHECK(TEST_MSG, poly, 8, 8, PRIx8, expected_vrev32, "");
++  CHECK(TEST_MSG, poly, 16, 4, PRIx16, expected_vrev32, "");
++  CHECK(TEST_MSG, int, 8, 16, PRIx8, expected_vrev32, "");
++  CHECK(TEST_MSG, int, 16, 8, PRIx16, expected_vrev32, "");
++  CHECK(TEST_MSG, uint, 8, 16, PRIx8, expected_vrev32, "");
++  CHECK(TEST_MSG, uint, 16, 8, PRIx16, expected_vrev32, "");
++  CHECK(TEST_MSG, poly, 8, 16, PRIx8, expected_vrev32, "");
++  CHECK(TEST_MSG, poly, 16, 8, PRIx16, expected_vrev32, "");
++
++#undef TEST_MSG
++#define TEST_MSG "VREV64"
++  TEST_VREV(, int, s, 8, 8, 64);
++  TEST_VREV(, int, s, 16, 4, 64);
++  TEST_VREV(, int, s, 32, 2, 64);
++  TEST_VREV(, uint, u, 8, 8, 64);
++  TEST_VREV(, uint, u, 16, 4, 64);
++  TEST_VREV(, uint, u, 32, 2, 64);
++  TEST_VREV(, poly, p, 8, 8, 64);
++  TEST_VREV(, poly, p, 16, 4, 64);
++  TEST_VREV(q, int, s, 8, 16, 64);
++  TEST_VREV(q, int, s, 16, 8, 64);
++  TEST_VREV(q, int, s, 32, 4, 64);
++  TEST_VREV(q, uint, u, 8, 16, 64);
++  TEST_VREV(q, uint, u, 16, 8, 64);
++  TEST_VREV(q, uint, u, 32, 4, 64);
++  TEST_VREV(q, poly, p, 8, 16, 64);
++  TEST_VREV(q, poly, p, 16, 8, 64);
++
++  CHECK(TEST_MSG, int, 8, 8, PRIx8, expected_vrev64, "");
++  CHECK(TEST_MSG, int, 16, 4, PRIx16, expected_vrev64, "");
++  CHECK(TEST_MSG, int, 32, 2, PRIx32, expected_vrev64, "");
++  CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected_vrev64, "");
++  CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected_vrev64, "");
++  CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected_vrev64, "");
++  CHECK(TEST_MSG, poly, 8, 8, PRIx8, expected_vrev64, "");
++  CHECK(TEST_MSG, poly, 16, 4, PRIx16, expected_vrev64, "");
++  CHECK(TEST_MSG, int, 8, 16, PRIx8, expected_vrev64, "");
++  CHECK(TEST_MSG, int, 16, 8, PRIx16, expected_vrev64, "");
++  CHECK(TEST_MSG, int, 32, 4, PRIx32, expected_vrev64, "");
++  CHECK(TEST_MSG, uint, 8, 16, PRIx8, expected_vrev64, "");
++  CHECK(TEST_MSG, uint, 16, 8, PRIx16, expected_vrev64, "");
++  CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected_vrev64, "");
++  CHECK(TEST_MSG, poly, 8, 16, PRIx8, expected_vrev64, "");
++  CHECK(TEST_MSG, poly, 16, 8, PRIx16, expected_vrev64, "");
++
++  TEST_VREV(, float, f, 32, 2, 64);
++  TEST_VREV(q, float, f, 32, 4, 64);
++  CHECK_FP(TEST_MSG, float, 32, 2, PRIx32, expected_vrev64, "");
++  CHECK_FP(TEST_MSG, float, 32, 4, PRIx32, expected_vrev64, "");
++}
++
++int main (void)
++{
++  exec_vrev ();
++  return 0;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vrshl.c
+@@ -0,0 +1,627 @@
++#include <arm_neon.h>
++#include "arm-neon-ref.h"
++#include "compute-ref-data.h"
++
++/* Expected results with input=0.  */
++VECT_VAR_DECL(expected_0,int,8,8) [] = { 0x0, 0x0, 0x0, 0x0,
++					 0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_0,int,16,4) [] = { 0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_0,int,32,2) [] = { 0x0, 0x0 };
++VECT_VAR_DECL(expected_0,int,64,1) [] = { 0x0 };
++VECT_VAR_DECL(expected_0,uint,8,8) [] = { 0x0, 0x0, 0x0, 0x0,
++					  0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_0,uint,16,4) [] = { 0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_0,uint,32,2) [] = { 0x0, 0x0 };
++VECT_VAR_DECL(expected_0,uint,64,1) [] = { 0x0 };
++VECT_VAR_DECL(expected_0,int,8,16) [] = { 0x0, 0x0, 0x0, 0x0,
++					  0x0, 0x0, 0x0, 0x0,
++					  0x0, 0x0, 0x0, 0x0,
++					  0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_0,int,16,8) [] = { 0x0, 0x0, 0x0, 0x0,
++					  0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_0,int,32,4) [] = { 0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_0,int,64,2) [] = { 0x0, 0x0 };
++VECT_VAR_DECL(expected_0,uint,8,16) [] = { 0x0, 0x0, 0x0, 0x0,
++					   0x0, 0x0, 0x0, 0x0,
++					   0x0, 0x0, 0x0, 0x0,
++					   0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_0,uint,16,8) [] = { 0x0, 0x0, 0x0, 0x0,
++					   0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_0,uint,32,4) [] = { 0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_0,uint,64,2) [] = { 0x0, 0x0 };
++
++/* Expected results with input=0 and negative shift amount.  */
++VECT_VAR_DECL(expected_0_sh_neg,int,8,8) [] = { 0x0, 0x0, 0x0, 0x0,
++						0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_0_sh_neg,int,16,4) [] = { 0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_0_sh_neg,int,32,2) [] = { 0x0, 0x0 };
++VECT_VAR_DECL(expected_0_sh_neg,int,64,1) [] = { 0x0 };
++VECT_VAR_DECL(expected_0_sh_neg,uint,8,8) [] = { 0x0, 0x0, 0x0, 0x0,
++						 0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_0_sh_neg,uint,16,4) [] = { 0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_0_sh_neg,uint,32,2) [] = { 0x0, 0x0 };
++VECT_VAR_DECL(expected_0_sh_neg,uint,64,1) [] = { 0x0 };
++VECT_VAR_DECL(expected_0_sh_neg,int,8,16) [] = { 0x0, 0x0, 0x0, 0x0,
++						 0x0, 0x0, 0x0, 0x0,
++						 0x0, 0x0, 0x0, 0x0,
++						 0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_0_sh_neg,int,16,8) [] = { 0x0, 0x0, 0x0, 0x0,
++						 0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_0_sh_neg,int,32,4) [] = { 0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_0_sh_neg,int,64,2) [] = { 0x0, 0x0 };
++VECT_VAR_DECL(expected_0_sh_neg,uint,8,16) [] = { 0x0, 0x0, 0x0, 0x0,
++						  0x0, 0x0, 0x0, 0x0,
++						  0x0, 0x0, 0x0, 0x0,
++						  0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_0_sh_neg,uint,16,8) [] = { 0x0, 0x0, 0x0, 0x0,
++						  0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_0_sh_neg,uint,32,4) [] = { 0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_0_sh_neg,uint,64,2) [] = { 0x0, 0x0 };
++
++/* Expected results.  */
++VECT_VAR_DECL(expected,int,8,8) [] = { 0xe0, 0xe2, 0xe4, 0xe6,
++				       0xe8, 0xea, 0xec, 0xee };
++VECT_VAR_DECL(expected,int,16,4) [] = { 0xff80, 0xff88, 0xff90, 0xff98 };
++VECT_VAR_DECL(expected,int,32,2) [] = { 0xfffff000, 0xfffff100 };
++VECT_VAR_DECL(expected,int,64,1) [] = { 0xfffffffffffffffe };
++VECT_VAR_DECL(expected,uint,8,8) [] = { 0xe0, 0xe2, 0xe4, 0xe6,
++					0xe8, 0xea, 0xec, 0xee };
++VECT_VAR_DECL(expected,uint,16,4) [] = { 0xff80, 0xff88, 0xff90, 0xff98 };
++VECT_VAR_DECL(expected,uint,32,2) [] = { 0xfffff000, 0xfffff100 };
++VECT_VAR_DECL(expected,uint,64,1) [] = { 0x1ffffffffffffffe };
++VECT_VAR_DECL(expected,int,8,16) [] = { 0x0, 0x0, 0x0, 0x0,
++					0x0, 0x0, 0x0, 0x0,
++					0x0, 0x0, 0x0, 0x0,
++					0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected,int,16,8) [] = { 0x0, 0x1000, 0x2000, 0x3000,
++					0x4000, 0x5000, 0x6000, 0x7000 };
++VECT_VAR_DECL(expected,int,32,4) [] = { 0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected,int,64,2) [] = { 0x0, 0x8000000000000000 };
++VECT_VAR_DECL(expected,uint,8,16) [] = { 0x0, 0x0, 0x0, 0x0,
++					 0x0, 0x0, 0x0, 0x0,
++					 0x0, 0x0, 0x0, 0x0,
++					 0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected,uint,16,8) [] = { 0x0, 0x1000, 0x2000, 0x3000,
++					 0x4000, 0x5000, 0x6000, 0x7000 };
++VECT_VAR_DECL(expected,uint,32,4) [] = { 0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected,uint,64,2) [] = { 0x0, 0x8000000000000000 };
++
++/* Expected results with negative shift amount.  */
++VECT_VAR_DECL(expected_sh_neg,int,8,8) [] = { 0xf8, 0xf9, 0xf9, 0xfa,
++					      0xfa, 0xfb, 0xfb, 0xfc };
++VECT_VAR_DECL(expected_sh_neg,int,16,4) [] = { 0xfffc, 0xfffc, 0xfffd, 0xfffd };
++VECT_VAR_DECL(expected_sh_neg,int,32,2) [] = { 0xfffffffe, 0xfffffffe };
++VECT_VAR_DECL(expected_sh_neg,int,64,1) [] = { 0xffffffffffffffff };
++VECT_VAR_DECL(expected_sh_neg,uint,8,8) [] = { 0x78, 0x79, 0x79, 0x7a,
++					       0x7a, 0x7b, 0x7b, 0x7c };
++VECT_VAR_DECL(expected_sh_neg,uint,16,4) [] = { 0x3ffc, 0x3ffc, 0x3ffd, 0x3ffd };
++VECT_VAR_DECL(expected_sh_neg,uint,32,2) [] = { 0x1ffffffe, 0x1ffffffe };
++VECT_VAR_DECL(expected_sh_neg,uint,64,1) [] = { 0xfffffffffffffff };
++VECT_VAR_DECL(expected_sh_neg,int,8,16) [] = { 0x0, 0x0, 0x0, 0x0,
++					       0x0, 0x0, 0x0, 0x0,
++					       0x0, 0x0, 0x0, 0x0,
++					       0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_sh_neg,int,16,8) [] = { 0x0, 0x0, 0x0, 0x0,
++					       0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_sh_neg,int,32,4) [] = { 0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_sh_neg,int,64,2) [] = { 0x0, 0x0 };
++VECT_VAR_DECL(expected_sh_neg,uint,8,16) [] = { 0x2, 0x2, 0x2, 0x2,
++						0x2, 0x2, 0x2, 0x2,
++						0x2, 0x2, 0x2, 0x2,
++						0x2, 0x2, 0x2, 0x2 };
++VECT_VAR_DECL(expected_sh_neg,uint,16,8) [] = { 0x20, 0x20, 0x20, 0x20,
++						0x20, 0x20, 0x20, 0x20 };
++VECT_VAR_DECL(expected_sh_neg,uint,32,4) [] = { 0x80000, 0x80000,
++						0x80000, 0x80000 };
++VECT_VAR_DECL(expected_sh_neg,uint,64,2) [] = { 0x100000000000, 0x100000000000 };
++
++/* Expected results with max input value shifted by -1 to test
++   round_const.  */
++VECT_VAR_DECL(expected_max_sh_minus1,int,8,8) [] = { 0x40, 0x40, 0x40, 0x40,
++						     0x40, 0x40, 0x40, 0x40 };
++VECT_VAR_DECL(expected_max_sh_minus1,int,16,4) [] = { 0x4000, 0x4000,
++						      0x4000, 0x4000 };
++VECT_VAR_DECL(expected_max_sh_minus1,int,32,2) [] = { 0x40000000, 0x40000000 };
++VECT_VAR_DECL(expected_max_sh_minus1,int,64,1) [] = { 0x4000000000000000 };
++VECT_VAR_DECL(expected_max_sh_minus1,uint,8,8) [] = { 0x80, 0x80, 0x80, 0x80,
++						      0x80, 0x80, 0x80, 0x80 };
++VECT_VAR_DECL(expected_max_sh_minus1,uint,16,4) [] = { 0x8000, 0x8000,
++						       0x8000, 0x8000 };
++VECT_VAR_DECL(expected_max_sh_minus1,uint,32,2) [] = { 0x80000000, 0x80000000 };
++VECT_VAR_DECL(expected_max_sh_minus1,uint,64,1) [] = { 0x8000000000000000 };
++VECT_VAR_DECL(expected_max_sh_minus1,int,8,16) [] = { 0x40, 0x40, 0x40, 0x40,
++						      0x40, 0x40, 0x40, 0x40,
++						      0x40, 0x40, 0x40, 0x40,
++						      0x40, 0x40, 0x40, 0x40 };
++VECT_VAR_DECL(expected_max_sh_minus1,int,16,8) [] = { 0x4000, 0x4000,
++						      0x4000, 0x4000,
++						      0x4000, 0x4000,
++						      0x4000, 0x4000 };
++VECT_VAR_DECL(expected_max_sh_minus1,int,32,4) [] = { 0x40000000, 0x40000000,
++						      0x40000000, 0x40000000 };
++VECT_VAR_DECL(expected_max_sh_minus1,int,64,2) [] = { 0x4000000000000000,
++						      0x4000000000000000 };
++VECT_VAR_DECL(expected_max_sh_minus1,uint,8,16) [] = { 0x80, 0x80, 0x80, 0x80,
++						       0x80, 0x80, 0x80, 0x80,
++						       0x80, 0x80, 0x80, 0x80,
++						       0x80, 0x80, 0x80, 0x80 };
++VECT_VAR_DECL(expected_max_sh_minus1,uint,16,8) [] = { 0x8000, 0x8000,
++						       0x8000, 0x8000,
++						       0x8000, 0x8000,
++						       0x8000, 0x8000 };
++VECT_VAR_DECL(expected_max_sh_minus1,uint,32,4) [] = { 0x80000000, 0x80000000,
++						       0x80000000, 0x80000000 };
++VECT_VAR_DECL(expected_max_sh_minus1,uint,64,2) [] = { 0x8000000000000000,
++						       0x8000000000000000 };
++
++/* Expected results with max input value shifted by -3 to test
++   round_const.  */
++VECT_VAR_DECL(expected_max_sh_minus3,int,8,8) [] = { 0x10, 0x10, 0x10, 0x10,
++						     0x10, 0x10, 0x10, 0x10 };
++VECT_VAR_DECL(expected_max_sh_minus3,int,16,4) [] = { 0x1000, 0x1000,
++						      0x1000, 0x1000 };
++VECT_VAR_DECL(expected_max_sh_minus3,int,32,2) [] = { 0x10000000, 0x10000000 };
++VECT_VAR_DECL(expected_max_sh_minus3,int,64,1) [] = { 0x1000000000000000 };
++VECT_VAR_DECL(expected_max_sh_minus3,uint,8,8) [] = { 0x20, 0x20, 0x20, 0x20,
++						      0x20, 0x20, 0x20, 0x20 };
++VECT_VAR_DECL(expected_max_sh_minus3,uint,16,4) [] = { 0x2000, 0x2000,
++						       0x2000, 0x2000 };
++VECT_VAR_DECL(expected_max_sh_minus3,uint,32,2) [] = { 0x20000000, 0x20000000 };
++VECT_VAR_DECL(expected_max_sh_minus3,uint,64,1) [] = { 0x2000000000000000 };
++VECT_VAR_DECL(expected_max_sh_minus3,int,8,16) [] = { 0x10, 0x10, 0x10, 0x10,
++						      0x10, 0x10, 0x10, 0x10,
++						      0x10, 0x10, 0x10, 0x10,
++						      0x10, 0x10, 0x10, 0x10 };
++VECT_VAR_DECL(expected_max_sh_minus3,int,16,8) [] = { 0x1000, 0x1000,
++						      0x1000, 0x1000,
++						      0x1000, 0x1000,
++						      0x1000, 0x1000 };
++VECT_VAR_DECL(expected_max_sh_minus3,int,32,4) [] = { 0x10000000, 0x10000000,
++						      0x10000000, 0x10000000 };
++VECT_VAR_DECL(expected_max_sh_minus3,int,64,2) [] = { 0x1000000000000000,
++						      0x1000000000000000 };
++VECT_VAR_DECL(expected_max_sh_minus3,uint,8,16) [] = { 0x20, 0x20, 0x20, 0x20,
++						       0x20, 0x20, 0x20, 0x20,
++						       0x20, 0x20, 0x20, 0x20,
++						       0x20, 0x20, 0x20, 0x20 };
++VECT_VAR_DECL(expected_max_sh_minus3,uint,16,8) [] = { 0x2000, 0x2000,
++						       0x2000, 0x2000,
++						       0x2000, 0x2000,
++						       0x2000, 0x2000 };
++VECT_VAR_DECL(expected_max_sh_minus3,uint,32,4) [] = { 0x20000000, 0x20000000,
++						       0x20000000, 0x20000000 };
++VECT_VAR_DECL(expected_max_sh_minus3,uint,64,2) [] = { 0x2000000000000000,
++						       0x2000000000000000 };
++
++/* Expected results with negative shift by vector width.  */
++VECT_VAR_DECL(expected_max_sh_minus_width,int,8,8) [] = { 0x0, 0x0, 0x0, 0x0,
++							  0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_max_sh_minus_width,int,16,4) [] = { 0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_max_sh_minus_width,int,32,2) [] = { 0x0, 0x0 };
++VECT_VAR_DECL(expected_max_sh_minus_width,int,64,1) [] = { 0x0 };
++VECT_VAR_DECL(expected_max_sh_minus_width,uint,8,8) [] = { 0x1, 0x1, 0x1, 0x1,
++							   0x1, 0x1, 0x1, 0x1 };
++VECT_VAR_DECL(expected_max_sh_minus_width,uint,16,4) [] = { 0x1, 0x1, 0x1, 0x1 };
++VECT_VAR_DECL(expected_max_sh_minus_width,uint,32,2) [] = { 0x1, 0x1 };
++VECT_VAR_DECL(expected_max_sh_minus_width,uint,64,1) [] = { 0x1 };
++VECT_VAR_DECL(expected_max_sh_minus_width,int,8,16) [] = { 0x0, 0x0, 0x0, 0x0,
++							   0x0, 0x0, 0x0, 0x0,
++							   0x0, 0x0, 0x0, 0x0,
++							   0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_max_sh_minus_width,int,16,8) [] = { 0x0, 0x0, 0x0, 0x0,
++							   0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_max_sh_minus_width,int,32,4) [] = { 0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_max_sh_minus_width,int,64,2) [] = { 0x0, 0x0 };
++VECT_VAR_DECL(expected_max_sh_minus_width,uint,8,16) [] = { 0x1, 0x1, 0x1, 0x1,
++							    0x1, 0x1, 0x1, 0x1,
++							    0x1, 0x1, 0x1, 0x1,
++							    0x1, 0x1, 0x1, 0x1 };
++VECT_VAR_DECL(expected_max_sh_minus_width,uint,16,8) [] = { 0x1, 0x1, 0x1, 0x1,
++							    0x1, 0x1, 0x1, 0x1 };
++VECT_VAR_DECL(expected_max_sh_minus_width,uint,32,4) [] = { 0x1, 0x1, 0x1, 0x1 };
++VECT_VAR_DECL(expected_max_sh_minus_width,uint,64,2) [] = { 0x1, 0x1 };
++
++/* Expected results with large shift amount.  */
++VECT_VAR_DECL(expected_max_sh_large,int,8,8) [] = { 0x0, 0x0, 0x0, 0x0,
++						    0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_max_sh_large,int,16,4) [] = { 0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_max_sh_large,int,32,2) [] = { 0x0, 0x0 };
++VECT_VAR_DECL(expected_max_sh_large,int,64,1) [] = { 0x0 };
++VECT_VAR_DECL(expected_max_sh_large,uint,8,8) [] = { 0x0, 0x0, 0x0, 0x0,
++						     0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_max_sh_large,uint,16,4) [] = { 0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_max_sh_large,uint,32,2) [] = { 0x0, 0x0 };
++VECT_VAR_DECL(expected_max_sh_large,uint,64,1) [] = { 0x0 };
++VECT_VAR_DECL(expected_max_sh_large,int,8,16) [] = { 0x0, 0x0, 0x0, 0x0,
++						     0x0, 0x0, 0x0, 0x0,
++						     0x0, 0x0, 0x0, 0x0,
++						     0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_max_sh_large,int,16,8) [] = { 0x0, 0x0, 0x0, 0x0,
++						     0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_max_sh_large,int,32,4) [] = { 0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_max_sh_large,int,64,2) [] = { 0x0, 0x0 };
++VECT_VAR_DECL(expected_max_sh_large,uint,8,16) [] = { 0x0, 0x0, 0x0, 0x0,
++						      0x0, 0x0, 0x0, 0x0,
++						      0x0, 0x0, 0x0, 0x0,
++						      0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_max_sh_large,uint,16,8) [] = { 0x0, 0x0, 0x0, 0x0,
++						      0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_max_sh_large,uint,32,4) [] = { 0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_max_sh_large,uint,64,2) [] = { 0x0, 0x0 };
++
++/* Expected results with large negative shift amount.  */
++VECT_VAR_DECL(expected_max_sh_large_neg,int,8,8) [] = { 0x0, 0x0, 0x0, 0x0,
++							0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_max_sh_large_neg,int,16,4) [] = { 0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_max_sh_large_neg,int,32,2) [] = { 0x0, 0x0 };
++VECT_VAR_DECL(expected_max_sh_large_neg,int,64,1) [] = { 0x0 };
++VECT_VAR_DECL(expected_max_sh_large_neg,uint,8,8) [] = { 0x0, 0x0, 0x0, 0x0,
++							 0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_max_sh_large_neg,uint,16,4) [] = { 0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_max_sh_large_neg,uint,32,2) [] = { 0x0, 0x0 };
++VECT_VAR_DECL(expected_max_sh_large_neg,uint,64,1) [] = { 0x0 };
++VECT_VAR_DECL(expected_max_sh_large_neg,int,8,16) [] = { 0x0, 0x0, 0x0, 0x0,
++							 0x0, 0x0, 0x0, 0x0,
++							 0x0, 0x0, 0x0, 0x0,
++							 0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_max_sh_large_neg,int,16,8) [] = { 0x0, 0x0, 0x0, 0x0,
++							 0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_max_sh_large_neg,int,32,4) [] = { 0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_max_sh_large_neg,int,64,2) [] = { 0x0, 0x0 };
++VECT_VAR_DECL(expected_max_sh_large_neg,uint,8,16) [] = { 0x0, 0x0, 0x0, 0x0,
++							  0x0, 0x0, 0x0, 0x0,
++							  0x0, 0x0, 0x0, 0x0,
++							  0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_max_sh_large_neg,uint,16,8) [] = { 0x1, 0x1, 0x1, 0x1,
++							  0x1, 0x1, 0x1, 0x1 };
++VECT_VAR_DECL(expected_max_sh_large_neg,uint,32,4) [] = { 0x1, 0x1, 0x1, 0x1 };
++VECT_VAR_DECL(expected_max_sh_large_neg,uint,64,2) [] = { 0x1, 0x1 };
++
++#define TEST_MSG "VRSHL/VRSHLQ"
++void exec_vrshl (void)
++{
++  /* Basic test: v3=vrshl(v1,v2), then store the result.  */
++#define TEST_VRSHL(T3, Q, T1, T2, W, N)					\
++  VECT_VAR(vector_res, T1, W, N) =					\
++    vrshl##Q##_##T2##W(VECT_VAR(vector, T1, W, N),			\
++		       VECT_VAR(vector_shift, T3, W, N));		\
++  vst1##Q##_##T2##W(VECT_VAR(result, T1, W, N), VECT_VAR(vector_res, T1, W, N))
++
++  DECL_VARIABLE_ALL_VARIANTS(vector);
++  DECL_VARIABLE_ALL_VARIANTS(vector_res);
++
++  DECL_VARIABLE_SIGNED_VARIANTS(vector_shift);
++
++  clean_results ();
++
++  /* Fill input vector with 0, to check behavior on limits.  */
++  VDUP(vector, , int, s, 8, 8, 0);
++  VDUP(vector, , int, s, 16, 4, 0);
++  VDUP(vector, , int, s, 32, 2, 0);
++  VDUP(vector, , int, s, 64, 1, 0);
++  VDUP(vector, , uint, u, 8, 8, 0);
++  VDUP(vector, , uint, u, 16, 4, 0);
++  VDUP(vector, , uint, u, 32, 2, 0);
++  VDUP(vector, , uint, u, 64, 1, 0);
++  VDUP(vector, q, int, s, 8, 16, 0);
++  VDUP(vector, q, int, s, 16, 8, 0);
++  VDUP(vector, q, int, s, 32, 4, 0);
++  VDUP(vector, q, int, s, 64, 2, 0);
++  VDUP(vector, q, uint, u, 8, 16, 0);
++  VDUP(vector, q, uint, u, 16, 8, 0);
++  VDUP(vector, q, uint, u, 32, 4, 0);
++  VDUP(vector, q, uint, u, 64, 2, 0);
++
++  /* Choose init value arbitrarily, will be used as shift amount.  */
++  /* Use values equal to one-less-than the type width to check
++     behaviour on limits.  */
++  VDUP(vector_shift, , int, s, 8, 8, 7);
++  VDUP(vector_shift, , int, s, 16, 4, 15);
++  VDUP(vector_shift, , int, s, 32, 2, 31);
++  VDUP(vector_shift, , int, s, 64, 1, 63);
++  VDUP(vector_shift, q, int, s, 8, 16, 7);
++  VDUP(vector_shift, q, int, s, 16, 8, 15);
++  VDUP(vector_shift, q, int, s, 32, 4, 31);
++  VDUP(vector_shift, q, int, s, 64, 2, 63);
++
++  TEST_MACRO_ALL_VARIANTS_1_5(TEST_VRSHL, int);
++
++#define CMT " (with input = 0)"
++  CHECK(TEST_MSG, int, 8, 8, PRIx8, expected_0, CMT);
++  CHECK(TEST_MSG, int, 16, 4, PRIx16, expected_0, CMT);
++  CHECK(TEST_MSG, int, 32, 2, PRIx32, expected_0, CMT);
++  CHECK(TEST_MSG, int, 64, 1, PRIx64, expected_0, CMT);
++  CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected_0, CMT);
++  CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected_0, CMT);
++  CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected_0, CMT);
++  CHECK(TEST_MSG, uint, 64, 1, PRIx64, expected_0, CMT);
++  CHECK(TEST_MSG, int, 8, 16, PRIx8, expected_0, CMT);
++  CHECK(TEST_MSG, int, 16, 8, PRIx16, expected_0, CMT);
++  CHECK(TEST_MSG, int, 32, 4, PRIx32, expected_0, CMT);
++  CHECK(TEST_MSG, int, 64, 2, PRIx64, expected_0, CMT);
++  CHECK(TEST_MSG, uint, 8, 16, PRIx8, expected_0, CMT);
++  CHECK(TEST_MSG, uint, 16, 8, PRIx16, expected_0, CMT);
++  CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected_0, CMT);
++  CHECK(TEST_MSG, uint, 64, 2, PRIx64, expected_0, CMT);
++
++
++  /* Use negative shift amounts.  */
++  VDUP(vector_shift, , int, s, 8, 8, -1);
++  VDUP(vector_shift, , int, s, 16, 4, -2);
++  VDUP(vector_shift, , int, s, 32, 2, -3);
++  VDUP(vector_shift, , int, s, 64, 1, -4);
++  VDUP(vector_shift, q, int, s, 8, 16, -7);
++  VDUP(vector_shift, q, int, s, 16, 8, -11);
++  VDUP(vector_shift, q, int, s, 32, 4, -13);
++  VDUP(vector_shift, q, int, s, 64, 2, -20);
++
++  TEST_MACRO_ALL_VARIANTS_1_5(TEST_VRSHL, int);
++
++#undef CMT
++#define CMT " (input 0 and negative shift amount)"
++  CHECK(TEST_MSG, int, 8, 8, PRIx8, expected_0_sh_neg, CMT);
++  CHECK(TEST_MSG, int, 16, 4, PRIx16, expected_0_sh_neg, CMT);
++  CHECK(TEST_MSG, int, 32, 2, PRIx32, expected_0_sh_neg, CMT);
++  CHECK(TEST_MSG, int, 64, 1, PRIx64, expected_0_sh_neg, CMT);
++  CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected_0_sh_neg, CMT);
++  CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected_0_sh_neg, CMT);
++  CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected_0_sh_neg, CMT);
++  CHECK(TEST_MSG, uint, 64, 1, PRIx64, expected_0_sh_neg, CMT);
++  CHECK(TEST_MSG, int, 8, 16, PRIx8, expected_0_sh_neg, CMT);
++  CHECK(TEST_MSG, int, 16, 8, PRIx16, expected_0_sh_neg, CMT);
++  CHECK(TEST_MSG, int, 32, 4, PRIx32, expected_0_sh_neg, CMT);
++  CHECK(TEST_MSG, int, 64, 2, PRIx64, expected_0_sh_neg, CMT);
++  CHECK(TEST_MSG, uint, 8, 16, PRIx8, expected_0_sh_neg, CMT);
++  CHECK(TEST_MSG, uint, 16, 8, PRIx16, expected_0_sh_neg, CMT);
++  CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected_0_sh_neg, CMT);
++  CHECK(TEST_MSG, uint, 64, 2, PRIx64, expected_0_sh_neg, CMT);
++
++
++  /* Test again, with predefined input values.  */
++  TEST_MACRO_ALL_VARIANTS_2_5(VLOAD, vector, buffer);
++
++  /* Choose init value arbitrarily, will be used as shift amount.  */
++  VDUP(vector_shift, , int, s, 8, 8, 1);
++  VDUP(vector_shift, , int, s, 16, 4, 3);
++  VDUP(vector_shift, , int, s, 32, 2, 8);
++  VDUP(vector_shift, , int, s, 64, 1, -3);
++  VDUP(vector_shift, q, int, s, 8, 16, 10);
++  VDUP(vector_shift, q, int, s, 16, 8, 12);
++  VDUP(vector_shift, q, int, s, 32, 4, 32);
++  VDUP(vector_shift, q, int, s, 64, 2, 63);
++
++  TEST_MACRO_ALL_VARIANTS_1_5(TEST_VRSHL, int);
++
++#undef CMT
++#define CMT ""
++  CHECK(TEST_MSG, int, 8, 8, PRIx8, expected, CMT);
++  CHECK(TEST_MSG, int, 16, 4, PRIx16, expected, CMT);
++  CHECK(TEST_MSG, int, 32, 2, PRIx32, expected, CMT);
++  CHECK(TEST_MSG, int, 64, 1, PRIx64, expected, CMT);
++  CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected, CMT);
++  CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected, CMT);
++  CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected, CMT);
++  CHECK(TEST_MSG, uint, 64, 1, PRIx64, expected, CMT);
++  CHECK(TEST_MSG, int, 8, 16, PRIx8, expected, CMT);
++  CHECK(TEST_MSG, int, 16, 8, PRIx16, expected, CMT);
++  CHECK(TEST_MSG, int, 32, 4, PRIx32, expected, CMT);
++  CHECK(TEST_MSG, int, 64, 2, PRIx64, expected, CMT);
++  CHECK(TEST_MSG, uint, 8, 16, PRIx8, expected, CMT);
++  CHECK(TEST_MSG, uint, 16, 8, PRIx16, expected, CMT);
++  CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected, CMT);
++  CHECK(TEST_MSG, uint, 64, 2, PRIx64, expected, CMT);
++
++
++  /* Use negative shift amounts.  */
++  VDUP(vector_shift, , int, s, 8, 8, -1);
++  VDUP(vector_shift, , int, s, 16, 4, -2);
++  VDUP(vector_shift, , int, s, 32, 2, -3);
++  VDUP(vector_shift, , int, s, 64, 1, -4);
++  VDUP(vector_shift, q, int, s, 8, 16, -7);
++  VDUP(vector_shift, q, int, s, 16, 8, -11);
++  VDUP(vector_shift, q, int, s, 32, 4, -13);
++  VDUP(vector_shift, q, int, s, 64, 2, -20);
++
++  TEST_MACRO_ALL_VARIANTS_1_5(TEST_VRSHL, int);
++
++#undef CMT
++#define CMT " (negative shift amount)"
++  CHECK(TEST_MSG, int, 8, 8, PRIx8, expected_sh_neg, CMT);
++  CHECK(TEST_MSG, int, 16, 4, PRIx16, expected_sh_neg, CMT);
++  CHECK(TEST_MSG, int, 32, 2, PRIx32, expected_sh_neg, CMT);
++  CHECK(TEST_MSG, int, 64, 1, PRIx64, expected_sh_neg, CMT);
++  CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected_sh_neg, CMT);
++  CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected_sh_neg, CMT);
++  CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected_sh_neg, CMT);
++  CHECK(TEST_MSG, uint, 64, 1, PRIx64, expected_sh_neg, CMT);
++  CHECK(TEST_MSG, int, 8, 16, PRIx8, expected_sh_neg, CMT);
++  CHECK(TEST_MSG, int, 16, 8, PRIx16, expected_sh_neg, CMT);
++  CHECK(TEST_MSG, int, 32, 4, PRIx32, expected_sh_neg, CMT);
++  CHECK(TEST_MSG, int, 64, 2, PRIx64, expected_sh_neg, CMT);
++  CHECK(TEST_MSG, uint, 8, 16, PRIx8, expected_sh_neg, CMT);
++  CHECK(TEST_MSG, uint, 16, 8, PRIx16, expected_sh_neg, CMT);
++  CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected_sh_neg, CMT);
++  CHECK(TEST_MSG, uint, 64, 2, PRIx64, expected_sh_neg, CMT);
++
++  /* Fill input vector with max value, to check behavior on limits.  */
++  VDUP(vector, , int, s, 8, 8, 0x7F);
++  VDUP(vector, , int, s, 16, 4, 0x7FFF);
++  VDUP(vector, , int, s, 32, 2, 0x7FFFFFFF);
++  VDUP(vector, , int, s, 64, 1, 0x7FFFFFFFFFFFFFFFLL);
++  VDUP(vector, , uint, u, 8, 8, 0xFF);
++  VDUP(vector, , uint, u, 16, 4, 0xFFFF);
++  VDUP(vector, , uint, u, 32, 2, 0xFFFFFFFF);
++  VDUP(vector, , uint, u, 64, 1, 0xFFFFFFFFFFFFFFFFULL);
++  VDUP(vector, q, int, s, 8, 16, 0x7F);
++  VDUP(vector, q, int, s, 16, 8, 0x7FFF);
++  VDUP(vector, q, int, s, 32, 4, 0x7FFFFFFF);
++  VDUP(vector, q, int, s, 64, 2, 0x7FFFFFFFFFFFFFFFLL);
++  VDUP(vector, q, uint, u, 8, 16, 0xFF);
++  VDUP(vector, q, uint, u, 16, 8, 0xFFFF);
++  VDUP(vector, q, uint, u, 32, 4, 0xFFFFFFFF);
++  VDUP(vector, q, uint, u, 64, 2, 0xFFFFFFFFFFFFFFFFULL);
++
++  /* Use -1 shift amount to check overflow with round_const.  */
++  VDUP(vector_shift, , int, s, 8, 8, -1);
++  VDUP(vector_shift, , int, s, 16, 4, -1);
++  VDUP(vector_shift, , int, s, 32, 2, -1);
++  VDUP(vector_shift, , int, s, 64, 1, -1);
++  VDUP(vector_shift, q, int, s, 8, 16, -1);
++  VDUP(vector_shift, q, int, s, 16, 8, -1);
++  VDUP(vector_shift, q, int, s, 32, 4, -1);
++  VDUP(vector_shift, q, int, s, 64, 2, -1);
++
++  TEST_MACRO_ALL_VARIANTS_1_5(TEST_VRSHL, int);
++
++#undef CMT
++#define CMT " (max input, shift by -1)"
++  CHECK(TEST_MSG, int, 8, 8, PRIx8, expected_max_sh_minus1, CMT);
++  CHECK(TEST_MSG, int, 16, 4, PRIx16, expected_max_sh_minus1, CMT);
++  CHECK(TEST_MSG, int, 32, 2, PRIx32, expected_max_sh_minus1, CMT);
++  CHECK(TEST_MSG, int, 64, 1, PRIx64, expected_max_sh_minus1, CMT);
++  CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected_max_sh_minus1, CMT);
++  CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected_max_sh_minus1, CMT);
++  CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected_max_sh_minus1, CMT);
++  CHECK(TEST_MSG, uint, 64, 1, PRIx64, expected_max_sh_minus1, CMT);
++  CHECK(TEST_MSG, int, 8, 16, PRIx8, expected_max_sh_minus1, CMT);
++  CHECK(TEST_MSG, int, 16, 8, PRIx16, expected_max_sh_minus1, CMT);
++  CHECK(TEST_MSG, int, 32, 4, PRIx32, expected_max_sh_minus1, CMT);
++  CHECK(TEST_MSG, int, 64, 2, PRIx64, expected_max_sh_minus1, CMT);
++  CHECK(TEST_MSG, uint, 8, 16, PRIx8, expected_max_sh_minus1, CMT);
++  CHECK(TEST_MSG, uint, 16, 8, PRIx16, expected_max_sh_minus1, CMT);
++  CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected_max_sh_minus1, CMT);
++  CHECK(TEST_MSG, uint, 64, 2, PRIx64, expected_max_sh_minus1, CMT);
++
++  /* Use -3 shift amount to check overflow with round_const.  */
++  VDUP(vector_shift, , int, s, 8, 8, -3);
++  VDUP(vector_shift, , int, s, 16, 4, -3);
++  VDUP(vector_shift, , int, s, 32, 2, -3);
++  VDUP(vector_shift, , int, s, 64, 1, -3);
++  VDUP(vector_shift, q, int, s, 8, 16, -3);
++  VDUP(vector_shift, q, int, s, 16, 8, -3);
++  VDUP(vector_shift, q, int, s, 32, 4, -3);
++  VDUP(vector_shift, q, int, s, 64, 2, -3);
++
++  TEST_MACRO_ALL_VARIANTS_1_5(TEST_VRSHL, int);
++
++#undef CMT
++#define CMT " (check rounding constant: max input, shift by -3)"
++  CHECK(TEST_MSG, int, 8, 8, PRIx8, expected_max_sh_minus3, CMT);
++  CHECK(TEST_MSG, int, 16, 4, PRIx16, expected_max_sh_minus3, CMT);
++  CHECK(TEST_MSG, int, 32, 2, PRIx32, expected_max_sh_minus3, CMT);
++  CHECK(TEST_MSG, int, 64, 1, PRIx64, expected_max_sh_minus3, CMT);
++  CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected_max_sh_minus3, CMT);
++  CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected_max_sh_minus3, CMT);
++  CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected_max_sh_minus3, CMT);
++  CHECK(TEST_MSG, uint, 64, 1, PRIx64, expected_max_sh_minus3, CMT);
++  CHECK(TEST_MSG, int, 8, 16, PRIx8, expected_max_sh_minus3, CMT);
++  CHECK(TEST_MSG, int, 16, 8, PRIx16, expected_max_sh_minus3, CMT);
++  CHECK(TEST_MSG, int, 32, 4, PRIx32, expected_max_sh_minus3, CMT);
++  CHECK(TEST_MSG, int, 64, 2, PRIx64, expected_max_sh_minus3, CMT);
++  CHECK(TEST_MSG, uint, 8, 16, PRIx8, expected_max_sh_minus3, CMT);
++  CHECK(TEST_MSG, uint, 16, 8, PRIx16, expected_max_sh_minus3, CMT);
++  CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected_max_sh_minus3, CMT);
++  CHECK(TEST_MSG, uint, 64, 2, PRIx64, expected_max_sh_minus3, CMT);
++
++
++  /* Use negative shift amount as large as input vector width.  */
++  VDUP(vector_shift, , int, s, 8, 8, -8);
++  VDUP(vector_shift, , int, s, 16, 4, -16);
++  VDUP(vector_shift, , int, s, 32, 2, -32);
++  VDUP(vector_shift, , int, s, 64, 1, -64);
++  VDUP(vector_shift, q, int, s, 8, 16, -8);
++  VDUP(vector_shift, q, int, s, 16, 8, -16);
++  VDUP(vector_shift, q, int, s, 32, 4, -32);
++  VDUP(vector_shift, q, int, s, 64, 2, -64);
++
++  TEST_MACRO_ALL_VARIANTS_1_5(TEST_VRSHL, int);
++
++#undef CMT
++#define CMT " (max input, right shift by vector width)"
++  CHECK(TEST_MSG, int, 8, 8, PRIx8, expected_max_sh_minus_width, CMT);
++  CHECK(TEST_MSG, int, 16, 4, PRIx16, expected_max_sh_minus_width, CMT);
++  CHECK(TEST_MSG, int, 32, 2, PRIx32, expected_max_sh_minus_width, CMT);
++  CHECK(TEST_MSG, int, 64, 1, PRIx64, expected_max_sh_minus_width, CMT);
++  CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected_max_sh_minus_width, CMT);
++  CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected_max_sh_minus_width, CMT);
++  CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected_max_sh_minus_width, CMT);
++  CHECK(TEST_MSG, uint, 64, 1, PRIx64, expected_max_sh_minus_width, CMT);
++  CHECK(TEST_MSG, int, 8, 16, PRIx8, expected_max_sh_minus_width, CMT);
++  CHECK(TEST_MSG, int, 16, 8, PRIx16, expected_max_sh_minus_width, CMT);
++  CHECK(TEST_MSG, int, 32, 4, PRIx32, expected_max_sh_minus_width, CMT);
++  CHECK(TEST_MSG, int, 64, 2, PRIx64, expected_max_sh_minus_width, CMT);
++  CHECK(TEST_MSG, uint, 8, 16, PRIx8, expected_max_sh_minus_width, CMT);
++  CHECK(TEST_MSG, uint, 16, 8, PRIx16, expected_max_sh_minus_width, CMT);
++  CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected_max_sh_minus_width, CMT);
++  CHECK(TEST_MSG, uint, 64, 2, PRIx64, expected_max_sh_minus_width, CMT);
++
++
++  /* Test large shift amount.  */
++  VDUP(vector_shift, , int, s, 8, 8, 10);
++  VDUP(vector_shift, , int, s, 16, 4, 20);
++  VDUP(vector_shift, , int, s, 32, 2, 33);
++  VDUP(vector_shift, , int, s, 64, 1, 65);
++  VDUP(vector_shift, q, int, s, 8, 16, 9);
++  VDUP(vector_shift, q, int, s, 16, 8, 16);
++  VDUP(vector_shift, q, int, s, 32, 4, 32);
++  VDUP(vector_shift, q, int, s, 64, 2, 64);
++
++  TEST_MACRO_ALL_VARIANTS_1_5(TEST_VRSHL, int);
++
++#undef CMT
++#define CMT " (max input, large shift amount)"
++  CHECK(TEST_MSG, int, 8, 8, PRIx8, expected_max_sh_large, CMT);
++  CHECK(TEST_MSG, int, 16, 4, PRIx16, expected_max_sh_large, CMT);
++  CHECK(TEST_MSG, int, 32, 2, PRIx32, expected_max_sh_large, CMT);
++  CHECK(TEST_MSG, int, 64, 1, PRIx64, expected_max_sh_large, CMT);
++  CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected_max_sh_large, CMT);
++  CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected_max_sh_large, CMT);
++  CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected_max_sh_large, CMT);
++  CHECK(TEST_MSG, uint, 64, 1, PRIx64, expected_max_sh_large, CMT);
++  CHECK(TEST_MSG, int, 8, 16, PRIx8, expected_max_sh_large, CMT);
++  CHECK(TEST_MSG, int, 16, 8, PRIx16, expected_max_sh_large, CMT);
++  CHECK(TEST_MSG, int, 32, 4, PRIx32, expected_max_sh_large, CMT);
++  CHECK(TEST_MSG, int, 64, 2, PRIx64, expected_max_sh_large, CMT);
++  CHECK(TEST_MSG, uint, 8, 16, PRIx8, expected_max_sh_large, CMT);
++  CHECK(TEST_MSG, uint, 16, 8, PRIx16, expected_max_sh_large, CMT);
++  CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected_max_sh_large, CMT);
++  CHECK(TEST_MSG, uint, 64, 2, PRIx64, expected_max_sh_large, CMT);
++
++  
++  /* Test large negative shift amount.  */
++  VDUP(vector_shift, , int, s, 8, 8, -10);
++  VDUP(vector_shift, , int, s, 16, 4, -20);
++  VDUP(vector_shift, , int, s, 32, 2, -33);
++  VDUP(vector_shift, , int, s, 64, 1, -65);
++  VDUP(vector_shift, q, int, s, 8, 16, -9);
++  VDUP(vector_shift, q, int, s, 16, 8, -16);
++  VDUP(vector_shift, q, int, s, 32, 4, -32);
++  VDUP(vector_shift, q, int, s, 64, 2, -64);
++
++  TEST_MACRO_ALL_VARIANTS_1_5(TEST_VRSHL, int);
++
++#undef CMT
++#define CMT " (max input, large negative shift amount)"
++  CHECK(TEST_MSG, int, 8, 8, PRIx8, expected_max_sh_large_neg, CMT);
++  CHECK(TEST_MSG, int, 16, 4, PRIx16, expected_max_sh_large_neg, CMT);
++  CHECK(TEST_MSG, int, 32, 2, PRIx32, expected_max_sh_large_neg, CMT);
++  CHECK(TEST_MSG, int, 64, 1, PRIx64, expected_max_sh_large_neg, CMT);
++  CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected_max_sh_large_neg, CMT);
++  CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected_max_sh_large_neg, CMT);
++  CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected_max_sh_large_neg, CMT);
++  CHECK(TEST_MSG, uint, 64, 1, PRIx64, expected_max_sh_large_neg, CMT);
++  CHECK(TEST_MSG, int, 8, 16, PRIx8, expected_max_sh_large_neg, CMT);
++  CHECK(TEST_MSG, int, 16, 8, PRIx16, expected_max_sh_large_neg, CMT);
++  CHECK(TEST_MSG, int, 32, 4, PRIx32, expected_max_sh_large_neg, CMT);
++  CHECK(TEST_MSG, int, 64, 2, PRIx64, expected_max_sh_large_neg, CMT);
++  CHECK(TEST_MSG, uint, 8, 16, PRIx8, expected_max_sh_large_neg, CMT);
++  CHECK(TEST_MSG, uint, 16, 8, PRIx16, expected_max_sh_large_neg, CMT);
++  CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected_max_sh_large_neg, CMT);
++  CHECK(TEST_MSG, uint, 64, 2, PRIx64, expected_max_sh_large_neg, CMT);
++}
++
++int main (void)
++{
++  exec_vrshl ();
++  return 0;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vrshr_n.c
+@@ -0,0 +1,504 @@
++#include <arm_neon.h>
++#include "arm-neon-ref.h"
++#include "compute-ref-data.h"
++
++/* Expected results.  */
++VECT_VAR_DECL(expected,int,8,8) [] = { 0xf8, 0xf9, 0xf9, 0xfa,
++				       0xfa, 0xfb, 0xfb, 0xfc };
++VECT_VAR_DECL(expected,int,16,4) [] = { 0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected,int,32,2) [] = { 0xfffffffc, 0xfffffffc };
++VECT_VAR_DECL(expected,int,64,1) [] = { 0x0 };
++VECT_VAR_DECL(expected,uint,8,8) [] = { 0x3c, 0x3c, 0x3d, 0x3d,
++					0x3d, 0x3d, 0x3e, 0x3e };
++VECT_VAR_DECL(expected,uint,16,4) [] = { 0x1ffe, 0x1ffe, 0x1ffe, 0x1ffe };
++VECT_VAR_DECL(expected,uint,32,2) [] = { 0x8000000, 0x8000000 };
++VECT_VAR_DECL(expected,uint,64,1) [] = { 0x80000000 };
++VECT_VAR_DECL(expected,int,8,16) [] = { 0xf8, 0xf9, 0xf9, 0xfa,
++					0xfa, 0xfb, 0xfb, 0xfc,
++					0xfc, 0xfd, 0xfd, 0xfe,
++					0xfe, 0xff, 0xff, 0x0 };
++VECT_VAR_DECL(expected,int,16,8) [] = { 0x0, 0x0, 0x0, 0x0,
++					0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected,int,32,4) [] = { 0xfffffffc, 0xfffffffc,
++					0xfffffffd, 0xfffffffd };
++VECT_VAR_DECL(expected,int,64,2) [] = { 0x0, 0x0 };
++VECT_VAR_DECL(expected,uint,8,16) [] = { 0x3c, 0x3c, 0x3d, 0x3d,
++					 0x3d, 0x3d, 0x3e, 0x3e,
++					 0x3e, 0x3e, 0x3f, 0x3f,
++					 0x3f, 0x3f, 0x40, 0x40 };
++VECT_VAR_DECL(expected,uint,16,8) [] = { 0x1ffe, 0x1ffe, 0x1ffe, 0x1ffe,
++					 0x1fff, 0x1fff, 0x1fff, 0x1fff };
++VECT_VAR_DECL(expected,uint,32,4) [] = { 0x8000000, 0x8000000,
++					 0x8000000, 0x8000000 };
++VECT_VAR_DECL(expected,uint,64,2) [] = { 0x80000000, 0x80000000 };
++
++/* Expected results with maximum input and max shift amount.  */
++VECT_VAR_DECL(expected_max_sh_max,int,8,8) [] = { 0x0, 0x0, 0x0, 0x0,
++						  0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_max_sh_max,int,16,4) [] = { 0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_max_sh_max,int,32,2) [] = { 0x0, 0x0 };
++VECT_VAR_DECL(expected_max_sh_max,int,64,1) [] = { 0x0 };
++VECT_VAR_DECL(expected_max_sh_max,uint,8,8) [] = { 0x1, 0x1, 0x1, 0x1,
++						   0x1, 0x1, 0x1, 0x1 };
++VECT_VAR_DECL(expected_max_sh_max,uint,16,4) [] = { 0x1, 0x1, 0x1, 0x1 };
++VECT_VAR_DECL(expected_max_sh_max,uint,32,2) [] = { 0x1, 0x1 };
++VECT_VAR_DECL(expected_max_sh_max,uint,64,1) [] = { 0x1 };
++VECT_VAR_DECL(expected_max_sh_max,int,8,16) [] = { 0x0, 0x0, 0x0, 0x0,
++						   0x0, 0x0, 0x0, 0x0,
++						   0x0, 0x0, 0x0, 0x0,
++						   0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_max_sh_max,int,16,8) [] = { 0x0, 0x0, 0x0, 0x0,
++						   0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_max_sh_max,int,32,4) [] = { 0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_max_sh_max,int,64,2) [] = { 0x0, 0x0 };
++VECT_VAR_DECL(expected_max_sh_max,uint,8,16) [] = { 0x1, 0x1, 0x1, 0x1,
++						    0x1, 0x1, 0x1, 0x1,
++						    0x1, 0x1, 0x1, 0x1,
++						    0x1, 0x1, 0x1, 0x1 };
++VECT_VAR_DECL(expected_max_sh_max,uint,16,8) [] = { 0x1, 0x1, 0x1, 0x1,
++						    0x1, 0x1, 0x1, 0x1 };
++VECT_VAR_DECL(expected_max_sh_max,uint,32,4) [] = { 0x1, 0x1, 0x1, 0x1 };
++VECT_VAR_DECL(expected_max_sh_max,uint,64,2) [] = { 0x1, 0x1 };
++
++/* Expected results with maximum input and shift by 1.  */
++VECT_VAR_DECL(expected_max_sh_1,int,8,8) [] = { 0x40, 0x40, 0x40, 0x40,
++						0x40, 0x40, 0x40, 0x40 };
++VECT_VAR_DECL(expected_max_sh_1,int,16,4) [] = { 0x4000, 0x4000,
++						 0x4000, 0x4000 };
++VECT_VAR_DECL(expected_max_sh_1,int,32,2) [] = { 0x40000000, 0x40000000 };
++VECT_VAR_DECL(expected_max_sh_1,int,64,1) [] = { 0x4000000000000000 };
++VECT_VAR_DECL(expected_max_sh_1,uint,8,8) [] = { 0x80, 0x80, 0x80, 0x80,
++						 0x80, 0x80, 0x80, 0x80 };
++VECT_VAR_DECL(expected_max_sh_1,uint,16,4) [] = { 0x8000, 0x8000,
++						  0x8000, 0x8000 };
++VECT_VAR_DECL(expected_max_sh_1,uint,32,2) [] = { 0x80000000, 0x80000000 };
++VECT_VAR_DECL(expected_max_sh_1,uint,64,1) [] = { 0x8000000000000000 };
++VECT_VAR_DECL(expected_max_sh_1,int,8,16) [] = { 0x40, 0x40, 0x40, 0x40,
++						 0x40, 0x40, 0x40, 0x40,
++						 0x40, 0x40, 0x40, 0x40,
++						 0x40, 0x40, 0x40, 0x40 };
++VECT_VAR_DECL(expected_max_sh_1,int,16,8) [] = { 0x4000, 0x4000,
++						 0x4000, 0x4000,
++						 0x4000, 0x4000,
++						 0x4000, 0x4000 };
++VECT_VAR_DECL(expected_max_sh_1,int,32,4) [] = { 0x40000000, 0x40000000,
++						 0x40000000, 0x40000000 };
++VECT_VAR_DECL(expected_max_sh_1,int,64,2) [] = { 0x4000000000000000,
++						 0x4000000000000000 };
++VECT_VAR_DECL(expected_max_sh_1,uint,8,16) [] = { 0x80, 0x80, 0x80, 0x80,
++						  0x80, 0x80, 0x80, 0x80,
++						  0x80, 0x80, 0x80, 0x80,
++						  0x80, 0x80, 0x80, 0x80 };
++VECT_VAR_DECL(expected_max_sh_1,uint,16,8) [] = { 0x8000, 0x8000,
++						  0x8000, 0x8000,
++						  0x8000, 0x8000,
++						  0x8000, 0x8000 };
++VECT_VAR_DECL(expected_max_sh_1,uint,32,4) [] = { 0x80000000, 0x80000000,
++						  0x80000000, 0x80000000 };
++VECT_VAR_DECL(expected_max_sh_1,uint,64,2) [] = { 0x8000000000000000,
++						  0x8000000000000000 };
++
++/* Expected results with maximum input and shift by 3.  */
++VECT_VAR_DECL(expected_max_sh_3,int,8,8) [] = { 0x10, 0x10, 0x10, 0x10,
++						0x10, 0x10, 0x10, 0x10 };
++VECT_VAR_DECL(expected_max_sh_3,int,16,4) [] = { 0x1000, 0x1000,
++						 0x1000, 0x1000 };
++VECT_VAR_DECL(expected_max_sh_3,int,32,2) [] = { 0x10000000, 0x10000000 };
++VECT_VAR_DECL(expected_max_sh_3,int,64,1) [] = { 0x1000000000000000 };
++VECT_VAR_DECL(expected_max_sh_3,uint,8,8) [] = { 0x20, 0x20, 0x20, 0x20,
++						 0x20, 0x20, 0x20, 0x20 };
++VECT_VAR_DECL(expected_max_sh_3,uint,16,4) [] = { 0x2000, 0x2000,
++						  0x2000, 0x2000 };
++VECT_VAR_DECL(expected_max_sh_3,uint,32,2) [] = { 0x20000000, 0x20000000 };
++VECT_VAR_DECL(expected_max_sh_3,uint,64,1) [] = { 0x2000000000000000 };
++VECT_VAR_DECL(expected_max_sh_3,int,8,16) [] = { 0x10, 0x10, 0x10, 0x10,
++						 0x10, 0x10, 0x10, 0x10,
++						 0x10, 0x10, 0x10, 0x10,
++						 0x10, 0x10, 0x10, 0x10 };
++VECT_VAR_DECL(expected_max_sh_3,int,16,8) [] = { 0x1000, 0x1000,
++						 0x1000, 0x1000,
++						 0x1000, 0x1000,
++						 0x1000, 0x1000 };
++VECT_VAR_DECL(expected_max_sh_3,int,32,4) [] = { 0x10000000, 0x10000000,
++						 0x10000000, 0x10000000 };
++VECT_VAR_DECL(expected_max_sh_3,int,64,2) [] = { 0x1000000000000000,
++						 0x1000000000000000 };
++VECT_VAR_DECL(expected_max_sh_3,uint,8,16) [] = { 0x20, 0x20, 0x20, 0x20,
++						  0x20, 0x20, 0x20, 0x20,
++						  0x20, 0x20, 0x20, 0x20,
++						  0x20, 0x20, 0x20, 0x20 };
++VECT_VAR_DECL(expected_max_sh_3,uint,16,8) [] = { 0x2000, 0x2000,
++						  0x2000, 0x2000,
++						  0x2000, 0x2000,
++						  0x2000, 0x2000 };
++VECT_VAR_DECL(expected_max_sh_3,uint,32,4) [] = { 0x20000000, 0x20000000,
++						  0x20000000, 0x20000000 };
++VECT_VAR_DECL(expected_max_sh_3,uint,64,2) [] = { 0x2000000000000000,
++						  0x2000000000000000 };
++
++/* Expected results with max negative input (for signed types, shift
++   by 1.  */
++VECT_VAR_DECL(expected_max_neg_sh_1,int,8,8) [] = { 0xc0, 0xc0, 0xc0, 0xc0,
++						    0xc0, 0xc0, 0xc0, 0xc0 };
++VECT_VAR_DECL(expected_max_neg_sh_1,int,16,4) [] = { 0xc000, 0xc000,
++						     0xc000, 0xc000 };
++VECT_VAR_DECL(expected_max_neg_sh_1,int,32,2) [] = { 0xc0000000, 0xc0000000 };
++VECT_VAR_DECL(expected_max_neg_sh_1,int,64,1) [] = { 0xc000000000000000 };
++VECT_VAR_DECL(expected_max_neg_sh_1,uint,8,8) [] = { 0x80, 0x80, 0x80, 0x80,
++						     0x80, 0x80, 0x80, 0x80 };
++VECT_VAR_DECL(expected_max_neg_sh_1,uint,16,4) [] = { 0x8000, 0x8000,
++						      0x8000, 0x8000 };
++VECT_VAR_DECL(expected_max_neg_sh_1,uint,32,2) [] = { 0x80000000, 0x80000000 };
++VECT_VAR_DECL(expected_max_neg_sh_1,uint,64,1) [] = { 0x8000000000000000 };
++VECT_VAR_DECL(expected_max_neg_sh_1,int,8,16) [] = { 0xc0, 0xc0, 0xc0, 0xc0,
++						     0xc0, 0xc0, 0xc0, 0xc0,
++						     0xc0, 0xc0, 0xc0, 0xc0,
++						     0xc0, 0xc0, 0xc0, 0xc0 };
++VECT_VAR_DECL(expected_max_neg_sh_1,int,16,8) [] = { 0xc000, 0xc000,
++						     0xc000, 0xc000,
++						     0xc000, 0xc000,
++						     0xc000, 0xc000 };
++VECT_VAR_DECL(expected_max_neg_sh_1,int,32,4) [] = { 0xc0000000, 0xc0000000,
++						     0xc0000000, 0xc0000000 };
++VECT_VAR_DECL(expected_max_neg_sh_1,int,64,2) [] = { 0xc000000000000000,
++						     0xc000000000000000 };
++VECT_VAR_DECL(expected_max_neg_sh_1,uint,8,16) [] = { 0x80, 0x80, 0x80, 0x80,
++						      0x80, 0x80, 0x80, 0x80,
++						      0x80, 0x80, 0x80, 0x80,
++						      0x80, 0x80, 0x80, 0x80 };
++VECT_VAR_DECL(expected_max_neg_sh_1,uint,16,8) [] = { 0x8000, 0x8000,
++						      0x8000, 0x8000,
++						      0x8000, 0x8000,
++						      0x8000, 0x8000 };
++VECT_VAR_DECL(expected_max_neg_sh_1,uint,32,4) [] = { 0x80000000, 0x80000000,
++						      0x80000000, 0x80000000 };
++VECT_VAR_DECL(expected_max_neg_sh_1,uint,64,2) [] = { 0x8000000000000000,
++						      0x8000000000000000 };
++
++/* Expected results with max negative input (for signed types, shift
++   by 3.  */
++VECT_VAR_DECL(expected_max_neg_sh_3,int,8,8) [] = { 0xf0, 0xf0, 0xf0, 0xf0,
++						    0xf0, 0xf0, 0xf0, 0xf0 };
++VECT_VAR_DECL(expected_max_neg_sh_3,int,16,4) [] = { 0xf000, 0xf000,
++						     0xf000, 0xf000 };
++VECT_VAR_DECL(expected_max_neg_sh_3,int,32,2) [] = { 0xf0000000, 0xf0000000 };
++VECT_VAR_DECL(expected_max_neg_sh_3,int,64,1) [] = { 0xf000000000000000 };
++VECT_VAR_DECL(expected_max_neg_sh_3,uint,8,8) [] = { 0x20, 0x20, 0x20, 0x20,
++						     0x20, 0x20, 0x20, 0x20 };
++VECT_VAR_DECL(expected_max_neg_sh_3,uint,16,4) [] = { 0x2000, 0x2000,
++						      0x2000, 0x2000 };
++VECT_VAR_DECL(expected_max_neg_sh_3,uint,32,2) [] = { 0x20000000, 0x20000000 };
++VECT_VAR_DECL(expected_max_neg_sh_3,uint,64,1) [] = { 0x2000000000000000 };
++VECT_VAR_DECL(expected_max_neg_sh_3,int,8,16) [] = { 0xf0, 0xf0, 0xf0, 0xf0,
++						     0xf0, 0xf0, 0xf0, 0xf0,
++						     0xf0, 0xf0, 0xf0, 0xf0,
++						     0xf0, 0xf0, 0xf0, 0xf0 };
++VECT_VAR_DECL(expected_max_neg_sh_3,int,16,8) [] = { 0xf000, 0xf000,
++						     0xf000, 0xf000,
++						     0xf000, 0xf000,
++						     0xf000, 0xf000 };
++VECT_VAR_DECL(expected_max_neg_sh_3,int,32,4) [] = { 0xf0000000, 0xf0000000,
++						     0xf0000000, 0xf0000000 };
++VECT_VAR_DECL(expected_max_neg_sh_3,int,64,2) [] = { 0xf000000000000000,
++						     0xf000000000000000 };
++VECT_VAR_DECL(expected_max_neg_sh_3,uint,8,16) [] = { 0x20, 0x20, 0x20, 0x20,
++						      0x20, 0x20, 0x20, 0x20,
++						      0x20, 0x20, 0x20, 0x20,
++						      0x20, 0x20, 0x20, 0x20 };
++VECT_VAR_DECL(expected_max_neg_sh_3,uint,16,8) [] = { 0x2000, 0x2000,
++						      0x2000, 0x2000,
++						      0x2000, 0x2000,
++						      0x2000, 0x2000 };
++VECT_VAR_DECL(expected_max_neg_sh_3,uint,32,4) [] = { 0x20000000, 0x20000000,
++						      0x20000000, 0x20000000 };
++VECT_VAR_DECL(expected_max_neg_sh_3,uint,64,2) [] = { 0x2000000000000000,
++						      0x2000000000000000 };
++
++#define TEST_MSG "VRSHR_N"
++void exec_vrshr_n (void)
++{
++  /* Basic test: y=vrshr_n(x,v), then store the result.  */
++#define TEST_VRSHR_N(Q, T1, T2, W, N, V)				\
++  VECT_VAR(vector_res, T1, W, N) =					\
++    vrshr##Q##_n_##T2##W(VECT_VAR(vector, T1, W, N),			\
++			 V);						\
++  vst1##Q##_##T2##W(VECT_VAR(result, T1, W, N), VECT_VAR(vector_res, T1, W, N))
++
++  DECL_VARIABLE_ALL_VARIANTS(vector);
++  DECL_VARIABLE_ALL_VARIANTS(vector_res);
++
++  clean_results ();
++
++  /* Initialize input "vector" from "buffer".  */
++  TEST_MACRO_ALL_VARIANTS_2_5(VLOAD, vector, buffer);
++
++  /* Choose shift amount arbitrarily.  */
++  TEST_VRSHR_N(, int, s, 8, 8, 1);
++  TEST_VRSHR_N(, int, s, 16, 4, 12);
++  TEST_VRSHR_N(, int, s, 32, 2, 2);
++  TEST_VRSHR_N(, int, s, 64, 1, 32);
++  TEST_VRSHR_N(, uint, u, 8, 8, 2);
++  TEST_VRSHR_N(, uint, u, 16, 4, 3);
++  TEST_VRSHR_N(, uint, u, 32, 2, 5);
++  TEST_VRSHR_N(, uint, u, 64, 1, 33);
++
++  TEST_VRSHR_N(q, int, s, 8, 16, 1);
++  TEST_VRSHR_N(q, int, s, 16, 8, 12);
++  TEST_VRSHR_N(q, int, s, 32, 4, 2);
++  TEST_VRSHR_N(q, int, s, 64, 2, 32);
++  TEST_VRSHR_N(q, uint, u, 8, 16, 2);
++  TEST_VRSHR_N(q, uint, u, 16, 8, 3);
++  TEST_VRSHR_N(q, uint, u, 32, 4, 5);
++  TEST_VRSHR_N(q, uint, u, 64, 2, 33);
++
++#define CMT ""
++  CHECK(TEST_MSG, int, 8, 8, PRIx8, expected, CMT);
++  CHECK(TEST_MSG, int, 16, 4, PRIx16, expected, CMT);
++  CHECK(TEST_MSG, int, 32, 2, PRIx32, expected, CMT);
++  CHECK(TEST_MSG, int, 64, 1, PRIx64, expected, CMT);
++  CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected, CMT);
++  CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected, CMT);
++  CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected, CMT);
++  CHECK(TEST_MSG, uint, 64, 1, PRIx64, expected, CMT);
++  CHECK(TEST_MSG, int, 8, 16, PRIx8, expected, CMT);
++  CHECK(TEST_MSG, int, 16, 8, PRIx16, expected, CMT);
++  CHECK(TEST_MSG, int, 32, 4, PRIx32, expected, CMT);
++  CHECK(TEST_MSG, int, 64, 2, PRIx64, expected, CMT);
++  CHECK(TEST_MSG, uint, 8, 16, PRIx8, expected, CMT);
++  CHECK(TEST_MSG, uint, 16, 8, PRIx16, expected, CMT);
++  CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected, CMT);
++  CHECK(TEST_MSG, uint, 64, 2, PRIx64, expected, CMT);
++
++
++  /* Use maximum positive input value.  */
++  VDUP(vector, , int, s, 8, 8, 0x7F);
++  VDUP(vector, , int, s, 16, 4, 0x7FFF);
++  VDUP(vector, , int, s, 32, 2, 0x7FFFFFFF);
++  VDUP(vector, , int, s, 64, 1, 0x7FFFFFFFFFFFFFFFLL);
++  VDUP(vector, , uint, u, 8, 8, 0xFF);
++  VDUP(vector, , uint, u, 16, 4, 0xFFFF);
++  VDUP(vector, , uint, u, 32, 2, 0xFFFFFFFF);
++  VDUP(vector, , uint, u, 64, 1, 0xFFFFFFFFFFFFFFFFULL);
++  VDUP(vector, q, int, s, 8, 16, 0x7F);
++  VDUP(vector, q, int, s, 16, 8, 0x7FFF);
++  VDUP(vector, q, int, s, 32, 4, 0x7FFFFFFF);
++  VDUP(vector, q, int, s, 64, 2, 0x7FFFFFFFFFFFFFFFLL);
++  VDUP(vector, q, uint, u, 8, 16, 0xFF);
++  VDUP(vector, q, uint, u, 16, 8, 0xFFFF);
++  VDUP(vector, q, uint, u, 32, 4, 0xFFFFFFFF);
++  VDUP(vector, q, uint, u, 64, 2, 0xFFFFFFFFFFFFFFFFULL);
++
++  /* Use max shift amount, to exercise saturation.  */
++  TEST_VRSHR_N(, int, s, 8, 8, 8);
++  TEST_VRSHR_N(, int, s, 16, 4, 16);
++  TEST_VRSHR_N(, int, s, 32, 2, 32);
++  TEST_VRSHR_N(, int, s, 64, 1, 64);
++  TEST_VRSHR_N(, uint, u, 8, 8, 8);
++  TEST_VRSHR_N(, uint, u, 16, 4, 16);
++  TEST_VRSHR_N(, uint, u, 32, 2, 32);
++  TEST_VRSHR_N(, uint, u, 64, 1, 64);
++  TEST_VRSHR_N(q, int, s, 8, 16, 8);
++  TEST_VRSHR_N(q, int, s, 16, 8, 16);
++  TEST_VRSHR_N(q, int, s, 32, 4, 32);
++  TEST_VRSHR_N(q, int, s, 64, 2, 64);
++  TEST_VRSHR_N(q, uint, u, 8, 16, 8);
++  TEST_VRSHR_N(q, uint, u, 16, 8, 16);
++  TEST_VRSHR_N(q, uint, u, 32, 4, 32);
++  TEST_VRSHR_N(q, uint, u, 64, 2, 64);
++
++#undef CMT
++#define CMT " (overflow test: max shift amount, max positive input)"
++  CHECK(TEST_MSG, int, 8, 8, PRIx8, expected_max_sh_max, CMT);
++  CHECK(TEST_MSG, int, 16, 4, PRIx16, expected_max_sh_max, CMT);
++  CHECK(TEST_MSG, int, 32, 2, PRIx32, expected_max_sh_max, CMT);
++  CHECK(TEST_MSG, int, 64, 1, PRIx64, expected_max_sh_max, CMT);
++  CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected_max_sh_max, CMT);
++  CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected_max_sh_max, CMT);
++  CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected_max_sh_max, CMT);
++  CHECK(TEST_MSG, uint, 64, 1, PRIx64, expected_max_sh_max, CMT);
++  CHECK(TEST_MSG, int, 8, 16, PRIx8, expected_max_sh_max, CMT);
++  CHECK(TEST_MSG, int, 16, 8, PRIx16, expected_max_sh_max, CMT);
++  CHECK(TEST_MSG, int, 32, 4, PRIx32, expected_max_sh_max, CMT);
++  CHECK(TEST_MSG, int, 64, 2, PRIx64, expected_max_sh_max, CMT);
++  CHECK(TEST_MSG, uint, 8, 16, PRIx8, expected_max_sh_max, CMT);
++  CHECK(TEST_MSG, uint, 16, 8, PRIx16, expected_max_sh_max, CMT);
++  CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected_max_sh_max, CMT);
++  CHECK(TEST_MSG, uint, 64, 2, PRIx64, expected_max_sh_max, CMT);
++
++
++  /* Use 1 as shift amount, to exercise saturation.  */
++  TEST_VRSHR_N(, int, s, 8, 8, 1);
++  TEST_VRSHR_N(, int, s, 16, 4, 1);
++  TEST_VRSHR_N(, int, s, 32, 2, 1);
++  TEST_VRSHR_N(, int, s, 64, 1, 1);
++  TEST_VRSHR_N(, uint, u, 8, 8, 1);
++  TEST_VRSHR_N(, uint, u, 16, 4, 1);
++  TEST_VRSHR_N(, uint, u, 32, 2, 1);
++  TEST_VRSHR_N(, uint, u, 64, 1, 1);
++  TEST_VRSHR_N(q, int, s, 8, 16, 1);
++  TEST_VRSHR_N(q, int, s, 16, 8, 1);
++  TEST_VRSHR_N(q, int, s, 32, 4, 1);
++  TEST_VRSHR_N(q, int, s, 64, 2, 1);
++  TEST_VRSHR_N(q, uint, u, 8, 16, 1);
++  TEST_VRSHR_N(q, uint, u, 16, 8, 1);
++  TEST_VRSHR_N(q, uint, u, 32, 4, 1);
++  TEST_VRSHR_N(q, uint, u, 64, 2, 1);
++
++#undef CMT
++#define CMT " (overflow test: shift by 1, with max input)"
++  CHECK(TEST_MSG, int, 8, 8, PRIx8, expected_max_sh_1, CMT);
++  CHECK(TEST_MSG, int, 16, 4, PRIx16, expected_max_sh_1, CMT);
++  CHECK(TEST_MSG, int, 32, 2, PRIx32, expected_max_sh_1, CMT);
++  CHECK(TEST_MSG, int, 64, 1, PRIx64, expected_max_sh_1, CMT);
++  CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected_max_sh_1, CMT);
++  CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected_max_sh_1, CMT);
++  CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected_max_sh_1, CMT);
++  CHECK(TEST_MSG, uint, 64, 1, PRIx64, expected_max_sh_1, CMT);
++  CHECK(TEST_MSG, int, 8, 16, PRIx8, expected_max_sh_1, CMT);
++  CHECK(TEST_MSG, int, 16, 8, PRIx16, expected_max_sh_1, CMT);
++  CHECK(TEST_MSG, int, 32, 4, PRIx32, expected_max_sh_1, CMT);
++  CHECK(TEST_MSG, int, 64, 2, PRIx64, expected_max_sh_1, CMT);
++  CHECK(TEST_MSG, uint, 8, 16, PRIx8, expected_max_sh_1, CMT);
++  CHECK(TEST_MSG, uint, 16, 8, PRIx16, expected_max_sh_1, CMT);
++  CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected_max_sh_1, CMT);
++  CHECK(TEST_MSG, uint, 64, 2, PRIx64, expected_max_sh_1, CMT);
++
++
++  /* Use 3 as shift amount, to exercise saturation.  */
++  TEST_VRSHR_N(, int, s, 8, 8, 3);
++  TEST_VRSHR_N(, int, s, 16, 4, 3);
++  TEST_VRSHR_N(, int, s, 32, 2, 3);
++  TEST_VRSHR_N(, int, s, 64, 1, 3);
++  TEST_VRSHR_N(, uint, u, 8, 8, 3);
++  TEST_VRSHR_N(, uint, u, 16, 4, 3);
++  TEST_VRSHR_N(, uint, u, 32, 2, 3);
++  TEST_VRSHR_N(, uint, u, 64, 1, 3);
++  TEST_VRSHR_N(q, int, s, 8, 16, 3);
++  TEST_VRSHR_N(q, int, s, 16, 8, 3);
++  TEST_VRSHR_N(q, int, s, 32, 4, 3);
++  TEST_VRSHR_N(q, int, s, 64, 2, 3);
++  TEST_VRSHR_N(q, uint, u, 8, 16, 3);
++  TEST_VRSHR_N(q, uint, u, 16, 8, 3);
++  TEST_VRSHR_N(q, uint, u, 32, 4, 3);
++  TEST_VRSHR_N(q, uint, u, 64, 2, 3);
++
++#undef CMT
++#define CMT " (overflow test: shift by 3, with max input)"
++  CHECK(TEST_MSG, int, 8, 8, PRIx8, expected_max_sh_3, CMT);
++  CHECK(TEST_MSG, int, 16, 4, PRIx16, expected_max_sh_3, CMT);
++  CHECK(TEST_MSG, int, 32, 2, PRIx32, expected_max_sh_3, CMT);
++  CHECK(TEST_MSG, int, 64, 1, PRIx64, expected_max_sh_3, CMT);
++  CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected_max_sh_3, CMT);
++  CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected_max_sh_3, CMT);
++  CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected_max_sh_3, CMT);
++  CHECK(TEST_MSG, uint, 64, 1, PRIx64, expected_max_sh_3, CMT);
++  CHECK(TEST_MSG, int, 8, 16, PRIx8, expected_max_sh_3, CMT);
++  CHECK(TEST_MSG, int, 16, 8, PRIx16, expected_max_sh_3, CMT);
++  CHECK(TEST_MSG, int, 32, 4, PRIx32, expected_max_sh_3, CMT);
++  CHECK(TEST_MSG, int, 64, 2, PRIx64, expected_max_sh_3, CMT);
++  CHECK(TEST_MSG, uint, 8, 16, PRIx8, expected_max_sh_3, CMT);
++  CHECK(TEST_MSG, uint, 16, 8, PRIx16, expected_max_sh_3, CMT);
++  CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected_max_sh_3, CMT);
++  CHECK(TEST_MSG, uint, 64, 2, PRIx64, expected_max_sh_3, CMT);
++
++
++  /* Use minimum negative input for signed types.  */
++  VDUP(vector, , int, s, 8, 8, 0x80);
++  VDUP(vector, , int, s, 16, 4, 0x8000);
++  VDUP(vector, , int, s, 32, 2, 0x80000000);
++  VDUP(vector, , int, s, 64, 1, 0x8000000000000000LL);
++  VDUP(vector, , uint, u, 8, 8, 0xFF);
++  VDUP(vector, , uint, u, 16, 4, 0xFFFF);
++  VDUP(vector, , uint, u, 32, 2, 0xFFFFFFFF);
++  VDUP(vector, , uint, u, 64, 1, 0xFFFFFFFFFFFFFFFFULL);
++  VDUP(vector, q, int, s, 8, 16, 0x80);
++  VDUP(vector, q, int, s, 16, 8, 0x8000);
++  VDUP(vector, q, int, s, 32, 4, 0x80000000);
++  VDUP(vector, q, int, s, 64, 2, 0x8000000000000000LL);
++  VDUP(vector, q, uint, u, 8, 16, 0xFF);
++  VDUP(vector, q, uint, u, 16, 8, 0xFFFF);
++  VDUP(vector, q, uint, u, 32, 4, 0xFFFFFFFF);
++  VDUP(vector, q, uint, u, 64, 2, 0xFFFFFFFFFFFFFFFFULL);
++
++
++  /* Use 1 as shift amount, to exercise saturation code.  */
++  TEST_VRSHR_N(, int, s, 8, 8, 1);
++  TEST_VRSHR_N(, int, s, 16, 4, 1);
++  TEST_VRSHR_N(, int, s, 32, 2, 1);
++  TEST_VRSHR_N(, int, s, 64, 1, 1);
++  TEST_VRSHR_N(, uint, u, 8, 8, 1);
++  TEST_VRSHR_N(, uint, u, 16, 4, 1);
++  TEST_VRSHR_N(, uint, u, 32, 2, 1);
++  TEST_VRSHR_N(, uint, u, 64, 1, 1);
++  TEST_VRSHR_N(q, int, s, 8, 16, 1);
++  TEST_VRSHR_N(q, int, s, 16, 8, 1);
++  TEST_VRSHR_N(q, int, s, 32, 4, 1);
++  TEST_VRSHR_N(q, int, s, 64, 2, 1);
++  TEST_VRSHR_N(q, uint, u, 8, 16, 1);
++  TEST_VRSHR_N(q, uint, u, 16, 8, 1);
++  TEST_VRSHR_N(q, uint, u, 32, 4, 1);
++  TEST_VRSHR_N(q, uint, u, 64, 2, 1);
++
++#undef CMT
++#define CMT " (overflow test: shift by 1, with negative input)"
++  CHECK(TEST_MSG, int, 8, 8, PRIx8, expected_max_neg_sh_1, CMT);
++  CHECK(TEST_MSG, int, 16, 4, PRIx16, expected_max_neg_sh_1, CMT);
++  CHECK(TEST_MSG, int, 32, 2, PRIx32, expected_max_neg_sh_1, CMT);
++  CHECK(TEST_MSG, int, 64, 1, PRIx64, expected_max_neg_sh_1, CMT);
++  CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected_max_neg_sh_1, CMT);
++  CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected_max_neg_sh_1, CMT);
++  CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected_max_neg_sh_1, CMT);
++  CHECK(TEST_MSG, uint, 64, 1, PRIx64, expected_max_neg_sh_1, CMT);
++  CHECK(TEST_MSG, int, 8, 16, PRIx8, expected_max_neg_sh_1, CMT);
++  CHECK(TEST_MSG, int, 16, 8, PRIx16, expected_max_neg_sh_1, CMT);
++  CHECK(TEST_MSG, int, 32, 4, PRIx32, expected_max_neg_sh_1, CMT);
++  CHECK(TEST_MSG, int, 64, 2, PRIx64, expected_max_neg_sh_1, CMT);
++  CHECK(TEST_MSG, uint, 8, 16, PRIx8, expected_max_neg_sh_1, CMT);
++  CHECK(TEST_MSG, uint, 16, 8, PRIx16, expected_max_neg_sh_1, CMT);
++  CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected_max_neg_sh_1, CMT);
++  CHECK(TEST_MSG, uint, 64, 2, PRIx64, expected_max_neg_sh_1, CMT);
++
++
++  /* Use 3 as shift amount, to exercise saturation code.  */
++  TEST_VRSHR_N(, int, s, 8, 8, 3);
++  TEST_VRSHR_N(, int, s, 16, 4, 3);
++  TEST_VRSHR_N(, int, s, 32, 2, 3);
++  TEST_VRSHR_N(, int, s, 64, 1, 3);
++  TEST_VRSHR_N(, uint, u, 8, 8, 3);
++  TEST_VRSHR_N(, uint, u, 16, 4, 3);
++  TEST_VRSHR_N(, uint, u, 32, 2, 3);
++  TEST_VRSHR_N(, uint, u, 64, 1, 3);
++  TEST_VRSHR_N(q, int, s, 8, 16, 3);
++  TEST_VRSHR_N(q, int, s, 16, 8, 3);
++  TEST_VRSHR_N(q, int, s, 32, 4, 3);
++  TEST_VRSHR_N(q, int, s, 64, 2, 3);
++  TEST_VRSHR_N(q, uint, u, 8, 16, 3);
++  TEST_VRSHR_N(q, uint, u, 16, 8, 3);
++  TEST_VRSHR_N(q, uint, u, 32, 4, 3);
++  TEST_VRSHR_N(q, uint, u, 64, 2, 3);
++
++#undef CMT
++#define CMT " (overflow test: shift by 3, with negative input)"
++  CHECK(TEST_MSG, int, 8, 8, PRIx8, expected_max_neg_sh_3, CMT);
++  CHECK(TEST_MSG, int, 16, 4, PRIx16, expected_max_neg_sh_3, CMT);
++  CHECK(TEST_MSG, int, 32, 2, PRIx32, expected_max_neg_sh_3, CMT);
++  CHECK(TEST_MSG, int, 64, 1, PRIx64, expected_max_neg_sh_3, CMT);
++  CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected_max_neg_sh_3, CMT);
++  CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected_max_neg_sh_3, CMT);
++  CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected_max_neg_sh_3, CMT);
++  CHECK(TEST_MSG, uint, 64, 1, PRIx64, expected_max_neg_sh_3, CMT);
++  CHECK(TEST_MSG, int, 8, 16, PRIx8, expected_max_neg_sh_3, CMT);
++  CHECK(TEST_MSG, int, 16, 8, PRIx16, expected_max_neg_sh_3, CMT);
++  CHECK(TEST_MSG, int, 32, 4, PRIx32, expected_max_neg_sh_3, CMT);
++  CHECK(TEST_MSG, int, 64, 2, PRIx64, expected_max_neg_sh_3, CMT);
++  CHECK(TEST_MSG, uint, 8, 16, PRIx8, expected_max_neg_sh_3, CMT);
++  CHECK(TEST_MSG, uint, 16, 8, PRIx16, expected_max_neg_sh_3, CMT);
++  CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected_max_neg_sh_3, CMT);
++  CHECK(TEST_MSG, uint, 64, 2, PRIx64, expected_max_neg_sh_3, CMT);
++}
++
++int main (void)
++{
++  exec_vrshr_n ();
++  return 0;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vrshrn_n.c
+@@ -0,0 +1,143 @@
++#include <arm_neon.h>
++#include "arm-neon-ref.h"
++#include "compute-ref-data.h"
++
++/* Expected results with input=0.  */
++VECT_VAR_DECL(expected_0,int,8,8) [] = { 0x0, 0x0, 0x0, 0x0,
++					 0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_0,int,16,4) [] = { 0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_0,int,32,2) [] = { 0x0, 0x0 };
++VECT_VAR_DECL(expected_0,uint,8,8) [] = { 0x0, 0x0, 0x0, 0x0,
++					  0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_0,uint,16,4) [] = { 0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_0,uint,32,2) [] = { 0x0, 0x0 };
++
++/* Expected results.  */
++VECT_VAR_DECL(expected,int,8,8) [] = { 0xf8, 0xf9, 0xf9, 0xfa,
++				       0xfa, 0xfb, 0xfb, 0xfc };
++VECT_VAR_DECL(expected,int,16,4) [] = { 0xfff8, 0xfff9, 0xfff9, 0xfffa };
++VECT_VAR_DECL(expected,int,32,2) [] = { 0xfffffffc, 0xfffffffc };
++VECT_VAR_DECL(expected,uint,8,8) [] = { 0xfc, 0xfc, 0xfd, 0xfd,
++					0xfd, 0xfd, 0xfe, 0xfe };
++VECT_VAR_DECL(expected,uint,16,4) [] = { 0xfffe, 0xfffe, 0xfffe, 0xfffe };
++VECT_VAR_DECL(expected,uint,32,2) [] = { 0xfffffffe, 0xfffffffe };
++
++/* Expected results with large shift amount.  */
++VECT_VAR_DECL(expected_sh_large,int,8,8) [] = { 0x0, 0x0, 0x0, 0x0,
++						0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_sh_large,int,16,4) [] = { 0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_sh_large,int,32,2) [] = { 0x0, 0x0 };
++VECT_VAR_DECL(expected_sh_large,uint,8,8) [] = { 0x0, 0x0, 0x0, 0x0,
++						 0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_sh_large,uint,16,4) [] = { 0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_sh_large,uint,32,2) [] = { 0x0, 0x0 };
++
++#define TEST_MSG "VRSHRN_N"
++void exec_vrshrn_n (void)
++{
++  /* Basic test: v2=vrshrn_n(v1,v), then store the result.  */
++#define TEST_VRSHRN_N(T1, T2, W, N, W2, V)				\
++  VECT_VAR(vector_res, T1, W2, N) =					\
++    vrshrn_n_##T2##W(VECT_VAR(vector, T1, W, N),			\
++		     V);						\
++  vst1_##T2##W2(VECT_VAR(result, T1, W2, N), VECT_VAR(vector_res, T1, W2, N))
++
++  /* vector is twice as large as vector_res.  */
++  DECL_VARIABLE(vector, int, 16, 8);
++  DECL_VARIABLE(vector, int, 32, 4);
++  DECL_VARIABLE(vector, int, 64, 2);
++  DECL_VARIABLE(vector, uint, 16, 8);
++  DECL_VARIABLE(vector, uint, 32, 4);
++  DECL_VARIABLE(vector, uint, 64, 2);
++
++  DECL_VARIABLE(vector_res, int, 8, 8);
++  DECL_VARIABLE(vector_res, int, 16, 4);
++  DECL_VARIABLE(vector_res, int, 32, 2);
++  DECL_VARIABLE(vector_res, uint, 8, 8);
++  DECL_VARIABLE(vector_res, uint, 16, 4);
++  DECL_VARIABLE(vector_res, uint, 32, 2);
++
++  clean_results ();
++
++  /* Fill input vector with 0, to check behavior on limits.  */
++  VDUP(vector, q, int, s, 16, 8, 0);
++  VDUP(vector, q, int, s, 32, 4, 0);
++  VDUP(vector, q, int, s, 64, 2, 0);
++  VDUP(vector, q, uint, u, 16, 8, 0);
++  VDUP(vector, q, uint, u, 32, 4, 0);
++  VDUP(vector, q, uint, u, 64, 2, 0);
++
++  /* Choose shift amount arbitrarily.  */
++  TEST_VRSHRN_N(int, s, 16, 8, 8, 1);
++  TEST_VRSHRN_N(int, s, 32, 4, 16, 1);
++  TEST_VRSHRN_N(int, s, 64, 2, 32, 2);
++  TEST_VRSHRN_N(uint, u, 16, 8, 8, 2);
++  TEST_VRSHRN_N(uint, u, 32, 4, 16, 3);
++  TEST_VRSHRN_N(uint, u, 64, 2, 32, 3);
++
++#define CMT " (with input = 0)"
++  CHECK(TEST_MSG, int, 8, 8, PRIx8, expected_0, CMT);
++  CHECK(TEST_MSG, int, 16, 4, PRIx16, expected_0, CMT);
++  CHECK(TEST_MSG, int, 32, 2, PRIx32, expected_0, CMT);
++  CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected_0, CMT);
++  CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected_0, CMT);
++  CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected_0, CMT);
++
++
++  /* Test again, with predefined input values.  */
++  VLOAD(vector, buffer, q, int, s, 16, 8);
++  VLOAD(vector, buffer, q, int, s, 32, 4);
++  VLOAD(vector, buffer, q, int, s, 64, 2);
++  VLOAD(vector, buffer, q, uint, u, 16, 8);
++  VLOAD(vector, buffer, q, uint, u, 32, 4);
++  VLOAD(vector, buffer, q, uint, u, 64, 2);
++
++  /* Choose shift amount arbitrarily.  */
++  TEST_VRSHRN_N(int, s, 16, 8, 8, 1);
++  TEST_VRSHRN_N(int, s, 32, 4, 16, 1);
++  TEST_VRSHRN_N(int, s, 64, 2, 32, 2);
++  TEST_VRSHRN_N(uint, u, 16, 8, 8, 2);
++  TEST_VRSHRN_N(uint, u, 32, 4, 16, 3);
++  TEST_VRSHRN_N(uint, u, 64, 2, 32, 3);
++
++#undef CMT
++#define CMT ""
++  CHECK(TEST_MSG, int, 8, 8, PRIx8, expected, CMT);
++  CHECK(TEST_MSG, int, 16, 4, PRIx16, expected, CMT);
++  CHECK(TEST_MSG, int, 32, 2, PRIx32, expected, CMT);
++  CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected, CMT);
++  CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected, CMT);
++  CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected, CMT);
++
++
++  /* Fill input arbitrary values.  */
++  VDUP(vector, q, int, s, 16, 8, 30);
++  VDUP(vector, q, int, s, 32, 4, 0);
++  VDUP(vector, q, int, s, 64, 2, 0);
++  VDUP(vector, q, uint, u, 16, 8, 0xFFF0);
++  VDUP(vector, q, uint, u, 32, 4, 0xFFFFFFF0);
++  VDUP(vector, q, uint, u, 64, 2, 0);
++
++  /* Choose large shift amount arbitrarily.  */
++  TEST_VRSHRN_N(int, s, 16, 8, 8, 7);
++  TEST_VRSHRN_N(int, s, 32, 4, 16, 14);
++  TEST_VRSHRN_N(int, s, 64, 2, 32, 31);
++  TEST_VRSHRN_N(uint, u, 16, 8, 8, 7);
++  TEST_VRSHRN_N(uint, u, 32, 4, 16, 16);
++  TEST_VRSHRN_N(uint, u, 64, 2, 32, 3);
++
++#undef CMT
++#define CMT " (with large shift amount)"
++  CHECK(TEST_MSG, int, 8, 8, PRIx8, expected_sh_large, CMT);
++  CHECK(TEST_MSG, int, 16, 4, PRIx16, expected_sh_large, CMT);
++  CHECK(TEST_MSG, int, 32, 2, PRIx32, expected_sh_large, CMT);
++  CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected_sh_large, CMT);
++  CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected_sh_large, CMT);
++  CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected_sh_large, CMT);
++}
++
++int main (void)
++{
++  exec_vrshrn_n ();
++  return 0;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vrsqrte.c
+@@ -0,0 +1,157 @@
++#include <arm_neon.h>
++#include "arm-neon-ref.h"
++#include "compute-ref-data.h"
++#include <math.h>
++
++/* Expected results.  */
++VECT_VAR_DECL(expected,uint,32,2) [] = { 0xffffffff, 0xffffffff };
++VECT_VAR_DECL(expected,uint,32,4) [] = { 0x9c800000, 0x9c800000,
++					 0x9c800000, 0x9c800000 };
++VECT_VAR_DECL(expected,hfloat,32,2) [] = { 0x3e498000, 0x3e498000 };
++VECT_VAR_DECL(expected,hfloat,32,4) [] = { 0x3e700000, 0x3e700000,
++					   0x3e700000, 0x3e700000 };
++
++/* Expected results with large uint #1.  */
++VECT_VAR_DECL(expected_1,uint,32,2) [] = { 0x80000000, 0x80000000 };
++VECT_VAR_DECL(expected_1,uint,32,4) [] = { 0xae800000, 0xae800000,
++					   0xae800000, 0xae800000 };
++
++/* Expected results with large uint #2.  */
++VECT_VAR_DECL(expected_2,uint,32,2) [] = { 0xb4800000, 0xb4800000 };
++VECT_VAR_DECL(expected_2,uint,32,4) [] = { 0xed000000, 0xed000000,
++					   0xed000000, 0xed000000 };
++
++/* Expected results with FP special inputs values (NaNs, ...).  */
++VECT_VAR_DECL(expected_fp1,hfloat,32,2) [] = { 0x7fc00000, 0x7fc00000 };
++VECT_VAR_DECL(expected_fp1,hfloat,32,4) [] = { 0x7f800000, 0x7f800000,
++					       0x7f800000, 0x7f800000 };
++
++/* Expected results with FP special inputs values
++   (negative, infinity).  */
++VECT_VAR_DECL(expected_fp2,hfloat,32,2) [] = { 0x7fc00000, 0x7fc00000 };
++VECT_VAR_DECL(expected_fp2,hfloat,32,4) [] = { 0x0, 0x0, 0x0, 0x0 };
++
++/* Expected results with FP special inputs values
++   (-0, -infinity).  */
++VECT_VAR_DECL(expected_fp3,hfloat,32,2) [] = { 0xff800000, 0xff800000 };
++VECT_VAR_DECL(expected_fp3,hfloat,32,4) [] = { 0x7fc00000, 0x7fc00000,
++					       0x7fc00000, 0x7fc00000 };
++
++#define TEST_MSG "VRSQRTE/VRSQRTEQ"
++void exec_vrsqrte(void)
++{
++  int i;
++
++  /* Basic test: y=vrsqrte(x), then store the result.  */
++#define TEST_VRSQRTE(Q, T1, T2, W, N)			\
++  VECT_VAR(vector_res, T1, W, N) =			\
++    vrsqrte##Q##_##T2##W(VECT_VAR(vector, T1, W, N));	\
++  vst1##Q##_##T2##W(VECT_VAR(result, T1, W, N),		\
++		    VECT_VAR(vector_res, T1, W, N))
++
++  DECL_VARIABLE(vector, uint, 32, 2);
++  DECL_VARIABLE(vector, float, 32, 2);
++  DECL_VARIABLE(vector, uint, 32, 4);
++  DECL_VARIABLE(vector, float, 32, 4);
++
++  DECL_VARIABLE(vector_res, uint, 32, 2);
++  DECL_VARIABLE(vector_res, float, 32, 2);
++  DECL_VARIABLE(vector_res, uint, 32, 4);
++  DECL_VARIABLE(vector_res, float, 32, 4);
++
++  clean_results ();
++
++  /* Choose init value arbitrarily.  */
++  VDUP(vector, , uint, u, 32, 2, 0x12345678);
++  VDUP(vector, , float, f, 32, 2, 25.799999f);
++  VDUP(vector, q, uint, u, 32, 4, 0xABCDEF10);
++  VDUP(vector, q, float, f, 32, 4, 18.2f);
++
++  /* Apply the operator.  */
++  TEST_VRSQRTE(, uint, u, 32, 2);
++  TEST_VRSQRTE(, float, f, 32, 2);
++  TEST_VRSQRTE(q, uint, u, 32, 4);
++  TEST_VRSQRTE(q, float, f, 32, 4);
++
++#define CMT ""
++  CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected, CMT);
++  CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected, CMT);
++  CHECK_FP(TEST_MSG, float, 32, 2, PRIx32, expected, CMT);
++  CHECK_FP(TEST_MSG, float, 32, 4, PRIx32, expected, CMT);
++
++
++  /* Don't test FP variants with negative inputs.  */
++  /* Use input with various values of bits 30 and 31.  */
++  VDUP(vector, , uint, u, 32, 2, 0xFFFFFFFF);
++  VDUP(vector, q, uint, u, 32, 4, 0x89081234);
++
++  /* Apply the operator.  */
++  TEST_VRSQRTE(, uint, u, 32, 2);
++  TEST_VRSQRTE(q, uint, u, 32, 4);
++
++#undef CMT
++#define CMT " (large uint #1)"
++  CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected_1, CMT);
++  CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected_1, CMT);
++
++
++  /* Choose init value arbitrarily.  */
++  VDUP(vector, , uint, u, 32, 2, 0x80000000);
++  VDUP(vector, q, uint, u, 32, 4, 0x4ABCDEF0);
++
++  /* Apply the operator.  */
++  TEST_VRSQRTE(, uint, u, 32, 2);
++  TEST_VRSQRTE(q, uint, u, 32, 4);
++
++#undef CMT
++#define CMT " (large uint #2)"
++  CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected_2, CMT);
++  CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected_2, CMT);
++
++
++  /* Test FP variants with special input values (NaNs, ...).  */
++  VDUP(vector, , float, f, 32, 2, NAN);
++  VDUP(vector, q, float, f, 32, 4, 0.0f);
++
++  /* Apply the operator.  */
++  TEST_VRSQRTE(, float, f, 32, 2);
++  TEST_VRSQRTE(q, float, f, 32, 4);
++
++#undef CMT
++#define CMT " FP special (NaN, 0)"
++  CHECK_FP(TEST_MSG, float, 32, 2, PRIx32, expected_fp1, CMT);
++  CHECK_FP(TEST_MSG, float, 32, 4, PRIx32, expected_fp1, CMT);
++
++
++  /* Test FP variants with special input values (negative, infinity).  */
++  VDUP(vector, , float, f, 32, 2, -1.0f);
++  VDUP(vector, q, float, f, 32, 4, HUGE_VALF);
++
++  /* Apply the operator.  */
++  TEST_VRSQRTE(, float, f, 32, 2);
++  TEST_VRSQRTE(q, float, f, 32, 4);
++
++#undef CMT
++#define CMT " FP special (negative, infinity)"
++  CHECK_FP(TEST_MSG, float, 32, 2, PRIx32, expected_fp2, CMT);
++  CHECK_FP(TEST_MSG, float, 32, 4, PRIx32, expected_fp2, CMT);
++
++  /* Test FP variants with special input values (-0, -infinity).  */
++  VDUP(vector, , float, f, 32, 2, -0.0f);
++  VDUP(vector, q, float, f, 32, 4, -HUGE_VALF);
++
++  /* Apply the operator.  */
++  TEST_VRSQRTE(, float, f, 32, 2);
++  TEST_VRSQRTE(q, float, f, 32, 4);
++
++#undef CMT
++#define CMT " FP special (-0, -infinity)"
++  CHECK_FP(TEST_MSG, float, 32, 2, PRIx32, expected_fp3, CMT);
++  CHECK_FP(TEST_MSG, float, 32, 4, PRIx32, expected_fp3, CMT);
++}
++
++int main (void)
++{
++  exec_vrsqrte ();
++  return 0;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vrsqrts.c
+@@ -0,0 +1,118 @@
++#include <arm_neon.h>
++#include "arm-neon-ref.h"
++#include "compute-ref-data.h"
++#include <math.h>
++
++/* Expected results.  */
++VECT_VAR_DECL(expected,hfloat,32,2) [] = { 0xc2796b84, 0xc2796b84 };
++VECT_VAR_DECL(expected,hfloat,32,4) [] = { 0xc0e4a3d8, 0xc0e4a3d8,
++					   0xc0e4a3d8, 0xc0e4a3d8 };
++
++/* Expected results with input=NaN.  */
++VECT_VAR_DECL(expected_nan,hfloat,32,2) [] = { 0x7fc00000, 0x7fc00000 };
++VECT_VAR_DECL(expected_nan,hfloat,32,4) [] = { 0x7fc00000, 0x7fc00000,
++					       0x7fc00000, 0x7fc00000 };
++
++/* Expected results with FP special inputs values (infinity, 0).  */
++VECT_VAR_DECL(expected_fp1,hfloat,32,2) [] = { 0xff800000, 0xff800000 };
++VECT_VAR_DECL(expected_fp1,hfloat,32,4) [] = { 0x3fc00000, 0x3fc00000,
++					       0x3fc00000, 0x3fc00000 };
++
++/* Expected results with only FP special inputs values (infinity,
++   0).  */
++VECT_VAR_DECL(expected_fp2,hfloat,32,2) [] = { 0x3fc00000, 0x3fc00000 };
++VECT_VAR_DECL(expected_fp2,hfloat,32,4) [] = { 0x3fc00000, 0x3fc00000,
++					       0x3fc00000, 0x3fc00000 };
++
++#define TEST_MSG "VRSQRTS/VRSQRTSQ"
++void exec_vrsqrts(void)
++{
++  int i;
++
++  /* Basic test: y=vrsqrts(x), then store the result.  */
++#define TEST_VRSQRTS(Q, T1, T2, W, N)			\
++  VECT_VAR(vector_res, T1, W, N) =			\
++    vrsqrts##Q##_##T2##W(VECT_VAR(vector, T1, W, N),	\
++			 VECT_VAR(vector2, T1, W, N));	\
++  vst1##Q##_##T2##W(VECT_VAR(result, T1, W, N),		\
++		    VECT_VAR(vector_res, T1, W, N))
++
++  /* No need for integer variants.  */
++  DECL_VARIABLE(vector, float, 32, 2);
++  DECL_VARIABLE(vector, float, 32, 4);
++
++  DECL_VARIABLE(vector2, float, 32, 2);
++  DECL_VARIABLE(vector2, float, 32, 4);
++
++  DECL_VARIABLE(vector_res, float, 32, 2);
++  DECL_VARIABLE(vector_res, float, 32, 4);
++
++  clean_results ();
++
++  /* Choose init value arbitrarily.  */
++  VDUP(vector, , float, f, 32, 2, 12.9f);
++  VDUP(vector, q, float, f, 32, 4, 9.1f);
++
++  VDUP(vector2, , float, f, 32, 2, 9.9f);
++  VDUP(vector2, q, float, f, 32, 4, 1.9f);
++
++  /* Apply the operator.  */
++  TEST_VRSQRTS(, float, f, 32, 2);
++  TEST_VRSQRTS(q, float, f, 32, 4);
++
++#define CMT ""
++  CHECK_FP(TEST_MSG, float, 32, 2, PRIx32, expected, CMT);
++  CHECK_FP(TEST_MSG, float, 32, 4, PRIx32, expected, CMT);
++
++
++  /* Test FP variants with special input values (NaN).  */
++  VDUP(vector, , float, f, 32, 2, NAN);
++  VDUP(vector2, q, float, f, 32, 4, NAN);
++
++  /* Apply the operator.  */
++  TEST_VRSQRTS(, float, f, 32, 2);
++  TEST_VRSQRTS(q, float, f, 32, 4);
++
++#undef CMT
++#define CMT " FP special (NAN) and normal values"
++  CHECK_FP(TEST_MSG, float, 32, 2, PRIx32, expected_nan, CMT);
++  CHECK_FP(TEST_MSG, float, 32, 4, PRIx32, expected_nan, CMT);
++
++
++  /* Test FP variants with special input values (infinity, 0).  */
++  VDUP(vector, , float, f, 32, 2, HUGE_VALF);
++  VDUP(vector, q, float, f, 32, 4, 0.0f);
++  /* Restore a normal value in vector2.  */
++  VDUP(vector2, q, float, f, 32, 4, 3.2f);
++
++  /* Apply the operator.  */
++  TEST_VRSQRTS(, float, f, 32, 2);
++  TEST_VRSQRTS(q, float, f, 32, 4);
++
++#undef CMT
++#define CMT " FP special (infinity, 0) and normal values"
++  CHECK_FP(TEST_MSG, float, 32, 2, PRIx32, expected_fp1, CMT);
++  CHECK_FP(TEST_MSG, float, 32, 4, PRIx32, expected_fp1, CMT);
++
++
++  /* Test FP variants with only special input values (infinity, 0).  */
++  VDUP(vector, , float, f, 32, 2, HUGE_VALF);
++  VDUP(vector, q, float, f, 32, 4, 0.0f);
++  VDUP(vector2, , float, f, 32, 2, -0.0f);
++  VDUP(vector2, q, float, f, 32, 4, HUGE_VALF);
++
++  /* Apply the operator.  */
++  TEST_VRSQRTS(, float, f, 32, 2);
++  TEST_VRSQRTS(q, float, f, 32, 4);
++
++#undef CMT
++#define CMT " only FP special (infinity, 0)"
++  CHECK_FP(TEST_MSG, float, 32, 2, PRIx32, expected_fp2, CMT);
++  CHECK_FP(TEST_MSG, float, 32, 4, PRIx32, expected_fp2, CMT);
++}
++
++int main (void)
++{
++  exec_vrsqrts ();
++  return 0;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vrsra_n.c
+@@ -0,0 +1,553 @@
++#include <arm_neon.h>
++#include "arm-neon-ref.h"
++#include "compute-ref-data.h"
++
++/* Expected results.  */
++VECT_VAR_DECL(expected,int,8,8) [] = { 0xf9, 0xfa, 0xfb, 0xfc,
++				       0xfd, 0xfe, 0xff, 0x0 };
++VECT_VAR_DECL(expected,int,16,4) [] = { 0xfff0, 0xfff1, 0xfff2, 0xfff3 };
++VECT_VAR_DECL(expected,int,32,2) [] = { 0xfffffffd, 0xfffffffe };
++VECT_VAR_DECL(expected,int,64,1) [] = { 0xfffffffffffffff0 };
++VECT_VAR_DECL(expected,uint,8,8) [] = { 0x5, 0x6, 0x7, 0x8,
++					0x9, 0xa, 0xb, 0xc };
++VECT_VAR_DECL(expected,uint,16,4) [] = { 0xfffd, 0xfffe, 0xffff, 0x0 };
++VECT_VAR_DECL(expected,uint,32,2) [] = { 0xfffffff4, 0xfffffff5 };
++VECT_VAR_DECL(expected,uint,64,1) [] = { 0xfffffffffffffff0 };
++VECT_VAR_DECL(expected,int,8,16) [] = { 0xf9, 0xfa, 0xfb, 0xfc,
++					0xfd, 0xfe, 0xff, 0x0,
++					0x1, 0x2, 0x3, 0x4,
++					0x5, 0x6, 0x7, 0x8 };
++VECT_VAR_DECL(expected,int,16,8) [] = { 0xfff0, 0xfff1, 0xfff2, 0xfff3,
++					0xfff4, 0xfff5, 0xfff6, 0xfff7 };
++VECT_VAR_DECL(expected,int,32,4) [] = { 0xfffffffd, 0xfffffffe,
++					0xffffffff, 0x0 };
++VECT_VAR_DECL(expected,int,64,2) [] = { 0xfffffffffffffff0, 0xfffffffffffffff1 };
++VECT_VAR_DECL(expected,uint,8,16) [] = { 0x5, 0x6, 0x7, 0x8,
++					 0x9, 0xa, 0xb, 0xc,
++					 0xd, 0xe, 0xf, 0x10,
++					 0x11, 0x12, 0x13, 0x14 };
++VECT_VAR_DECL(expected,uint,16,8) [] = { 0xfffd, 0xfffe, 0xffff, 0x0,
++					 0x1, 0x2, 0x3, 0x4 };
++VECT_VAR_DECL(expected,uint,32,4) [] = { 0xfffffff4, 0xfffffff5,
++					 0xfffffff6, 0xfffffff7 };
++VECT_VAR_DECL(expected,uint,64,2) [] = { 0xfffffffffffffff0,
++					 0xfffffffffffffff1 };
++
++/* Expected results with max input and shift by 1.  */
++VECT_VAR_DECL(expected_max_sh1,int,8,8) [] = { 0x40, 0x40, 0x40, 0x40,
++					       0x40, 0x40, 0x40, 0x40 };
++VECT_VAR_DECL(expected_max_sh1,int,16,4) [] = { 0x4000, 0x4000, 0x4000, 0x4000 };
++VECT_VAR_DECL(expected_max_sh1,int,32,2) [] = { 0x40000000, 0x40000000 };
++VECT_VAR_DECL(expected_max_sh1,int,64,1) [] = { 0x4000000000000000 };
++VECT_VAR_DECL(expected_max_sh1,uint,8,8) [] = { 0x80, 0x80, 0x80, 0x80,
++						0x80, 0x80, 0x80, 0x80 };
++VECT_VAR_DECL(expected_max_sh1,uint,16,4) [] = { 0x8000, 0x8000,
++						 0x8000, 0x8000 };
++VECT_VAR_DECL(expected_max_sh1,uint,32,2) [] = { 0x80000000, 0x80000000 };
++VECT_VAR_DECL(expected_max_sh1,uint,64,1) [] = { 0x8000000000000000 };
++VECT_VAR_DECL(expected_max_sh1,int,8,16) [] = { 0x40, 0x40, 0x40, 0x40,
++						0x40, 0x40, 0x40, 0x40,
++						0x40, 0x40, 0x40, 0x40,
++						0x40, 0x40, 0x40, 0x40 };
++VECT_VAR_DECL(expected_max_sh1,int,16,8) [] = { 0x4000, 0x4000, 0x4000, 0x4000,
++						0x4000, 0x4000, 0x4000, 0x4000 };
++VECT_VAR_DECL(expected_max_sh1,int,32,4) [] = { 0x40000000, 0x40000000,
++						0x40000000, 0x40000000 };
++VECT_VAR_DECL(expected_max_sh1,int,64,2) [] = { 0x4000000000000000,
++						0x4000000000000000 };
++VECT_VAR_DECL(expected_max_sh1,uint,8,16) [] = { 0x80, 0x80, 0x80, 0x80,
++						 0x80, 0x80, 0x80, 0x80,
++						 0x80, 0x80, 0x80, 0x80,
++						 0x80, 0x80, 0x80, 0x80 };
++VECT_VAR_DECL(expected_max_sh1,uint,16,8) [] = { 0x8000, 0x8000,
++						 0x8000, 0x8000,
++						 0x8000, 0x8000,
++						 0x8000, 0x8000 };
++VECT_VAR_DECL(expected_max_sh1,uint,32,4) [] = { 0x80000000, 0x80000000,
++						 0x80000000, 0x80000000 };
++VECT_VAR_DECL(expected_max_sh1,uint,64,2) [] = { 0x8000000000000000,
++						 0x8000000000000000 };
++
++/* Expected results with max input and shift by 3.  */
++VECT_VAR_DECL(expected_max_sh3,int,8,8) [] = { 0x10, 0x10, 0x10, 0x10,
++					       0x10, 0x10, 0x10, 0x10 };
++VECT_VAR_DECL(expected_max_sh3,int,16,4) [] = { 0x1000, 0x1000, 0x1000, 0x1000 };
++VECT_VAR_DECL(expected_max_sh3,int,32,2) [] = { 0x10000000, 0x10000000 };
++VECT_VAR_DECL(expected_max_sh3,int,64,1) [] = { 0x1000000000000000 };
++VECT_VAR_DECL(expected_max_sh3,uint,8,8) [] = { 0x20, 0x20, 0x20, 0x20,
++						0x20, 0x20, 0x20, 0x20 };
++VECT_VAR_DECL(expected_max_sh3,uint,16,4) [] = { 0x2000, 0x2000,
++						 0x2000, 0x2000 };
++VECT_VAR_DECL(expected_max_sh3,uint,32,2) [] = { 0x20000000, 0x20000000 };
++VECT_VAR_DECL(expected_max_sh3,uint,64,1) [] = { 0x2000000000000000 };
++VECT_VAR_DECL(expected_max_sh3,int,8,16) [] = { 0x10, 0x10, 0x10, 0x10,
++						0x10, 0x10, 0x10, 0x10,
++						0x10, 0x10, 0x10, 0x10,
++						0x10, 0x10, 0x10, 0x10 };
++VECT_VAR_DECL(expected_max_sh3,int,16,8) [] = { 0x1000, 0x1000, 0x1000, 0x1000,
++						0x1000, 0x1000, 0x1000, 0x1000 };
++VECT_VAR_DECL(expected_max_sh3,int,32,4) [] = { 0x10000000, 0x10000000,
++						0x10000000, 0x10000000 };
++VECT_VAR_DECL(expected_max_sh3,int,64,2) [] = { 0x1000000000000000,
++						0x1000000000000000 };
++VECT_VAR_DECL(expected_max_sh3,uint,8,16) [] = { 0x20, 0x20, 0x20, 0x20,
++						 0x20, 0x20, 0x20, 0x20,
++						 0x20, 0x20, 0x20, 0x20,
++						 0x20, 0x20, 0x20, 0x20 };
++VECT_VAR_DECL(expected_max_sh3,uint,16,8) [] = { 0x2000, 0x2000,
++						 0x2000, 0x2000,
++						 0x2000, 0x2000,
++						 0x2000, 0x2000 };
++VECT_VAR_DECL(expected_max_sh3,uint,32,4) [] = { 0x20000000, 0x20000000,
++						 0x20000000, 0x20000000 };
++VECT_VAR_DECL(expected_max_sh3,uint,64,2) [] = { 0x2000000000000000,
++						 0x2000000000000000 };
++
++/* Expected results with max input and shift by type width.  */
++VECT_VAR_DECL(expected_max_shmax,int,8,8) [] = { 0x0, 0x0, 0x0, 0x0,
++						 0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_max_shmax,int,16,4) [] = { 0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_max_shmax,int,32,2) [] = { 0x0, 0x0 };
++VECT_VAR_DECL(expected_max_shmax,int,64,1) [] = { 0x0 };
++VECT_VAR_DECL(expected_max_shmax,uint,8,8) [] = { 0x1, 0x1, 0x1, 0x1,
++						  0x1, 0x1, 0x1, 0x1 };
++VECT_VAR_DECL(expected_max_shmax,uint,16,4) [] = { 0x1, 0x1, 0x1, 0x1 };
++VECT_VAR_DECL(expected_max_shmax,uint,32,2) [] = { 0x1, 0x1 };
++VECT_VAR_DECL(expected_max_shmax,uint,64,1) [] = { 0x1 };
++VECT_VAR_DECL(expected_max_shmax,int,8,16) [] = { 0x0, 0x0, 0x0, 0x0,
++						  0x0, 0x0, 0x0, 0x0,
++						  0x0, 0x0, 0x0, 0x0,
++						  0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_max_shmax,int,16,8) [] = { 0x0, 0x0, 0x0, 0x0,
++						  0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_max_shmax,int,32,4) [] = { 0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_max_shmax,int,64,2) [] = { 0x0, 0x0 };
++VECT_VAR_DECL(expected_max_shmax,uint,8,16) [] = { 0x1, 0x1, 0x1, 0x1,
++						   0x1, 0x1, 0x1, 0x1,
++						   0x1, 0x1, 0x1, 0x1,
++						   0x1, 0x1, 0x1, 0x1 };
++VECT_VAR_DECL(expected_max_shmax,uint,16,8) [] = { 0x1, 0x1, 0x1, 0x1,
++						   0x1, 0x1, 0x1, 0x1 };
++VECT_VAR_DECL(expected_max_shmax,uint,32,4) [] = { 0x1, 0x1, 0x1, 0x1 };
++VECT_VAR_DECL(expected_max_shmax,uint,64,2) [] = { 0x1, 0x1 };
++
++/* Expected results with min negative input and shift by 1.  */
++VECT_VAR_DECL(expected_min_sh1,int,8,8) [] = { 0xc0, 0xc0, 0xc0, 0xc0,
++					       0xc0, 0xc0, 0xc0, 0xc0 };
++VECT_VAR_DECL(expected_min_sh1,int,16,4) [] = { 0xc000, 0xc000, 0xc000, 0xc000 };
++VECT_VAR_DECL(expected_min_sh1,int,32,2) [] = { 0xc0000000, 0xc0000000 };
++VECT_VAR_DECL(expected_min_sh1,int,64,1) [] = { 0xc000000000000000 };
++VECT_VAR_DECL(expected_min_sh1,uint,8,8) [] = { 0x1, 0x1, 0x1, 0x1,
++						0x1, 0x1, 0x1, 0x1 };
++VECT_VAR_DECL(expected_min_sh1,uint,16,4) [] = { 0x1, 0x1, 0x1, 0x1 };
++VECT_VAR_DECL(expected_min_sh1,uint,32,2) [] = { 0x1, 0x1 };
++VECT_VAR_DECL(expected_min_sh1,uint,64,1) [] = { 0x1 };
++VECT_VAR_DECL(expected_min_sh1,int,8,16) [] = { 0xc0, 0xc0, 0xc0, 0xc0,
++						0xc0, 0xc0, 0xc0, 0xc0,
++						0xc0, 0xc0, 0xc0, 0xc0,
++						0xc0, 0xc0, 0xc0, 0xc0 };
++VECT_VAR_DECL(expected_min_sh1,int,16,8) [] = { 0xc000, 0xc000, 0xc000, 0xc000,
++						0xc000, 0xc000, 0xc000, 0xc000 };
++VECT_VAR_DECL(expected_min_sh1,int,32,4) [] = { 0xc0000000, 0xc0000000,
++						0xc0000000, 0xc0000000 };
++VECT_VAR_DECL(expected_min_sh1,int,64,2) [] = { 0xc000000000000000,
++						0xc000000000000000 };
++VECT_VAR_DECL(expected_min_sh1,uint,8,16) [] = { 0x1, 0x1, 0x1, 0x1,
++						 0x1, 0x1, 0x1, 0x1,
++						 0x1, 0x1, 0x1, 0x1,
++						 0x1, 0x1, 0x1, 0x1 };
++VECT_VAR_DECL(expected_min_sh1,uint,16,8) [] = { 0x1, 0x1, 0x1, 0x1,
++						 0x1, 0x1, 0x1, 0x1 };
++VECT_VAR_DECL(expected_min_sh1,uint,32,4) [] = { 0x1, 0x1, 0x1, 0x1 };
++VECT_VAR_DECL(expected_min_sh1,uint,64,2) [] = { 0x1, 0x1 };
++
++/* Expected results with min negative input and shift by 3.  */
++VECT_VAR_DECL(expected_min_sh3,int,8,8) [] = { 0xf0, 0xf0, 0xf0, 0xf0,
++					       0xf0, 0xf0, 0xf0, 0xf0 };
++VECT_VAR_DECL(expected_min_sh3,int,16,4) [] = { 0xf000, 0xf000, 0xf000, 0xf000 };
++VECT_VAR_DECL(expected_min_sh3,int,32,2) [] = { 0xf0000000, 0xf0000000 };
++VECT_VAR_DECL(expected_min_sh3,int,64,1) [] = { 0xf000000000000000 };
++VECT_VAR_DECL(expected_min_sh3,uint,8,8) [] = { 0x1, 0x1, 0x1, 0x1,
++						0x1, 0x1, 0x1, 0x1 };
++VECT_VAR_DECL(expected_min_sh3,uint,16,4) [] = { 0x1, 0x1, 0x1, 0x1 };
++VECT_VAR_DECL(expected_min_sh3,uint,32,2) [] = { 0x1, 0x1 };
++VECT_VAR_DECL(expected_min_sh3,uint,64,1) [] = { 0x1 };
++VECT_VAR_DECL(expected_min_sh3,int,8,16) [] = { 0xf0, 0xf0, 0xf0, 0xf0,
++						0xf0, 0xf0, 0xf0, 0xf0,
++						0xf0, 0xf0, 0xf0, 0xf0,
++						0xf0, 0xf0, 0xf0, 0xf0 };
++VECT_VAR_DECL(expected_min_sh3,int,16,8) [] = { 0xf000, 0xf000, 0xf000, 0xf000,
++						0xf000, 0xf000, 0xf000, 0xf000 };
++VECT_VAR_DECL(expected_min_sh3,int,32,4) [] = { 0xf0000000, 0xf0000000,
++						0xf0000000, 0xf0000000 };
++VECT_VAR_DECL(expected_min_sh3,int,64,2) [] = { 0xf000000000000000,
++						0xf000000000000000 };
++VECT_VAR_DECL(expected_min_sh3,uint,8,16) [] = { 0x1, 0x1, 0x1, 0x1,
++						 0x1, 0x1, 0x1, 0x1,
++						 0x1, 0x1, 0x1, 0x1,
++						 0x1, 0x1, 0x1, 0x1 };
++VECT_VAR_DECL(expected_min_sh3,uint,16,8) [] = { 0x1, 0x1, 0x1, 0x1,
++						 0x1, 0x1, 0x1, 0x1 };
++VECT_VAR_DECL(expected_min_sh3,uint,32,4) [] = { 0x1, 0x1, 0x1, 0x1 };
++VECT_VAR_DECL(expected_min_sh3,uint,64,2) [] = { 0x1, 0x1 };
++
++/* Expected results with min negative input and shift by type width.  */
++VECT_VAR_DECL(expected_min_shmax,int,8,8) [] = { 0x0, 0x0, 0x0, 0x0,
++						 0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_min_shmax,int,16,4) [] = { 0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_min_shmax,int,32,2) [] = { 0x0, 0x0 };
++VECT_VAR_DECL(expected_min_shmax,int,64,1) [] = { 0x0 };
++VECT_VAR_DECL(expected_min_shmax,uint,8,8) [] = { 0x1, 0x1, 0x1, 0x1,
++						  0x1, 0x1, 0x1, 0x1 };
++VECT_VAR_DECL(expected_min_shmax,uint,16,4) [] = { 0x1, 0x1, 0x1, 0x1 };
++VECT_VAR_DECL(expected_min_shmax,uint,32,2) [] = { 0x1, 0x1 };
++VECT_VAR_DECL(expected_min_shmax,uint,64,1) [] = { 0x1 };
++VECT_VAR_DECL(expected_min_shmax,int,8,16) [] = { 0x0, 0x0, 0x0, 0x0,
++						  0x0, 0x0, 0x0, 0x0,
++						  0x0, 0x0, 0x0, 0x0,
++						  0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_min_shmax,int,16,8) [] = { 0x0, 0x0, 0x0, 0x0,
++						  0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_min_shmax,int,32,4) [] = { 0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_min_shmax,int,64,2) [] = { 0x0, 0x0 };
++VECT_VAR_DECL(expected_min_shmax,uint,8,16) [] = { 0x1, 0x1, 0x1, 0x1,
++						   0x1, 0x1, 0x1, 0x1,
++						   0x1, 0x1, 0x1, 0x1,
++						   0x1, 0x1, 0x1, 0x1 };
++VECT_VAR_DECL(expected_min_shmax,uint,16,8) [] = { 0x1, 0x1, 0x1, 0x1,
++						   0x1, 0x1, 0x1, 0x1 };
++VECT_VAR_DECL(expected_min_shmax,uint,32,4) [] = { 0x1, 0x1, 0x1, 0x1 };
++VECT_VAR_DECL(expected_min_shmax,uint,64,2) [] = { 0x1, 0x1 };
++
++#define TEST_MSG "VRSRA_N"
++void exec_vrsra_n (void)
++{
++  /* Basic test: y=vrsra_n(x,v), then store the result.  */
++#define TEST_VRSRA_N(Q, T1, T2, W, N, V)				\
++  VECT_VAR(vector_res, T1, W, N) =					\
++    vrsra##Q##_n_##T2##W(VECT_VAR(vector, T1, W, N),			\
++			 VECT_VAR(vector2, T1, W, N),			\
++			 V);						\
++  vst1##Q##_##T2##W(VECT_VAR(result, T1, W, N), VECT_VAR(vector_res, T1, W, N))
++
++  DECL_VARIABLE_ALL_VARIANTS(vector);
++  DECL_VARIABLE_ALL_VARIANTS(vector2);
++  DECL_VARIABLE_ALL_VARIANTS(vector_res);
++
++  clean_results ();
++
++  /* Initialize input "vector" from "buffer".  */
++  TEST_MACRO_ALL_VARIANTS_2_5(VLOAD, vector, buffer);
++
++  /* Choose arbitrary initialization values.  */
++  VDUP(vector2, , int, s, 8, 8, 0x11);
++  VDUP(vector2, , int, s, 16, 4, 0x22);
++  VDUP(vector2, , int, s, 32, 2, 0x33);
++  VDUP(vector2, , int, s, 64, 1, 0x44);
++  VDUP(vector2, , uint, u, 8, 8, 0x55);
++  VDUP(vector2, , uint, u, 16, 4, 0x66);
++  VDUP(vector2, , uint, u, 32, 2, 0x77);
++  VDUP(vector2, , uint, u, 64, 1, 0x88);
++
++  VDUP(vector2, q, int, s, 8, 16, 0x11);
++  VDUP(vector2, q, int, s, 16, 8, 0x22);
++  VDUP(vector2, q, int, s, 32, 4, 0x33);
++  VDUP(vector2, q, int, s, 64, 2, 0x44);
++  VDUP(vector2, q, uint, u, 8, 16, 0x55);
++  VDUP(vector2, q, uint, u, 16, 8, 0x66);
++  VDUP(vector2, q, uint, u, 32, 4, 0x77);
++  VDUP(vector2, q, uint, u, 64, 2, 0x88);
++
++  /* Choose shift amount arbitrarily.  */
++  TEST_VRSRA_N(, int, s, 8, 8, 1);
++  TEST_VRSRA_N(, int, s, 16, 4, 12);
++  TEST_VRSRA_N(, int, s, 32, 2, 2);
++  TEST_VRSRA_N(, int, s, 64, 1, 32);
++  TEST_VRSRA_N(, uint, u, 8, 8, 2);
++  TEST_VRSRA_N(, uint, u, 16, 4, 3);
++  TEST_VRSRA_N(, uint, u, 32, 2, 5);
++  TEST_VRSRA_N(, uint, u, 64, 1, 33);
++
++  TEST_VRSRA_N(q, int, s, 8, 16, 1);
++  TEST_VRSRA_N(q, int, s, 16, 8, 12);
++  TEST_VRSRA_N(q, int, s, 32, 4, 2);
++  TEST_VRSRA_N(q, int, s, 64, 2, 32);
++  TEST_VRSRA_N(q, uint, u, 8, 16, 2);
++  TEST_VRSRA_N(q, uint, u, 16, 8, 3);
++  TEST_VRSRA_N(q, uint, u, 32, 4, 5);
++  TEST_VRSRA_N(q, uint, u, 64, 2, 33);
++
++#define CMT ""
++  CHECK(TEST_MSG, int, 8, 8, PRIx8, expected, CMT);
++  CHECK(TEST_MSG, int, 16, 4, PRIx16, expected, CMT);
++  CHECK(TEST_MSG, int, 32, 2, PRIx32, expected, CMT);
++  CHECK(TEST_MSG, int, 64, 1, PRIx64, expected, CMT);
++  CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected, CMT);
++  CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected, CMT);
++  CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected, CMT);
++  CHECK(TEST_MSG, uint, 64, 1, PRIx64, expected, CMT);
++  CHECK(TEST_MSG, int, 8, 16, PRIx8, expected, CMT);
++  CHECK(TEST_MSG, int, 16, 8, PRIx16, expected, CMT);
++  CHECK(TEST_MSG, int, 32, 4, PRIx32, expected, CMT);
++  CHECK(TEST_MSG, int, 64, 2, PRIx64, expected, CMT);
++  CHECK(TEST_MSG, uint, 8, 16, PRIx8, expected, CMT);
++  CHECK(TEST_MSG, uint, 16, 8, PRIx16, expected, CMT);
++  CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected, CMT);
++  CHECK(TEST_MSG, uint, 64, 2, PRIx64, expected, CMT);
++
++
++  /* Initialize the accumulator with 0.  */
++  VDUP(vector, , int, s, 8, 8, 0);
++  VDUP(vector, , int, s, 16, 4, 0);
++  VDUP(vector, , int, s, 32, 2, 0);
++  VDUP(vector, , int, s, 64, 1, 0);
++  VDUP(vector, , uint, u, 8, 8, 0);
++  VDUP(vector, , uint, u, 16, 4, 0);
++  VDUP(vector, , uint, u, 32, 2, 0);
++  VDUP(vector, , uint, u, 64, 1, 0);
++  VDUP(vector, q, int, s, 8, 16, 0);
++  VDUP(vector, q, int, s, 16, 8, 0);
++  VDUP(vector, q, int, s, 32, 4, 0);
++  VDUP(vector, q, int, s, 64, 2, 0);
++  VDUP(vector, q, uint, u, 8, 16, 0);
++  VDUP(vector, q, uint, u, 16, 8, 0);
++  VDUP(vector, q, uint, u, 32, 4, 0);
++  VDUP(vector, q, uint, u, 64, 2, 0);
++
++  /* Initialize with max values to check overflow.  */
++  VDUP(vector2, , int, s, 8, 8, 0x7F);
++  VDUP(vector2, , int, s, 16, 4, 0x7FFF);
++  VDUP(vector2, , int, s, 32, 2, 0x7FFFFFFF);
++  VDUP(vector2, , int, s, 64, 1, 0x7FFFFFFFFFFFFFFFLL);
++  VDUP(vector2, , uint, u, 8, 8, 0xFF);
++  VDUP(vector2, , uint, u, 16, 4, 0xFFFF);
++  VDUP(vector2, , uint, u, 32, 2, 0xFFFFFFFF);
++  VDUP(vector2, , uint, u, 64, 1, 0xFFFFFFFFFFFFFFFFULL);
++  VDUP(vector2, q, int, s, 8, 16, 0x7F);
++  VDUP(vector2, q, int, s, 16, 8, 0x7FFF);
++  VDUP(vector2, q, int, s, 32, 4, 0x7FFFFFFF);
++  VDUP(vector2, q, int, s, 64, 2, 0x7FFFFFFFFFFFFFFFLL);
++  VDUP(vector2, q, uint, u, 8, 16, 0xFF);
++  VDUP(vector2, q, uint, u, 16, 8, 0xFFFF);
++  VDUP(vector2, q, uint, u, 32, 4, 0xFFFFFFFF);
++  VDUP(vector2, q, uint, u, 64, 2, 0xFFFFFFFFFFFFFFFFULL);
++
++  /* Shift by 1 to check overflow with rounding constant.  */
++  TEST_VRSRA_N(, int, s, 8, 8, 1);
++  TEST_VRSRA_N(, int, s, 16, 4, 1);
++  TEST_VRSRA_N(, int, s, 32, 2, 1);
++  TEST_VRSRA_N(, int, s, 64, 1, 1);
++  TEST_VRSRA_N(, uint, u, 8, 8, 1);
++  TEST_VRSRA_N(, uint, u, 16, 4, 1);
++  TEST_VRSRA_N(, uint, u, 32, 2, 1);
++  TEST_VRSRA_N(, uint, u, 64, 1, 1);
++  TEST_VRSRA_N(q, int, s, 8, 16, 1);
++  TEST_VRSRA_N(q, int, s, 16, 8, 1);
++  TEST_VRSRA_N(q, int, s, 32, 4, 1);
++  TEST_VRSRA_N(q, int, s, 64, 2, 1);
++  TEST_VRSRA_N(q, uint, u, 8, 16, 1);
++  TEST_VRSRA_N(q, uint, u, 16, 8, 1);
++  TEST_VRSRA_N(q, uint, u, 32, 4, 1);
++  TEST_VRSRA_N(q, uint, u, 64, 2, 1);
++
++#undef CMT
++#define CMT " (checking overflow: shift by 1, max input)"
++  CHECK(TEST_MSG, int, 8, 8, PRIx8, expected_max_sh1, CMT);
++  CHECK(TEST_MSG, int, 16, 4, PRIx16, expected_max_sh1, CMT);
++  CHECK(TEST_MSG, int, 32, 2, PRIx32, expected_max_sh1, CMT);
++  CHECK(TEST_MSG, int, 64, 1, PRIx64, expected_max_sh1, CMT);
++  CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected_max_sh1, CMT);
++  CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected_max_sh1, CMT);
++  CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected_max_sh1, CMT);
++  CHECK(TEST_MSG, uint, 64, 1, PRIx64, expected_max_sh1, CMT);
++  CHECK(TEST_MSG, int, 8, 16, PRIx8, expected_max_sh1, CMT);
++  CHECK(TEST_MSG, int, 16, 8, PRIx16, expected_max_sh1, CMT);
++  CHECK(TEST_MSG, int, 32, 4, PRIx32, expected_max_sh1, CMT);
++  CHECK(TEST_MSG, int, 64, 2, PRIx64, expected_max_sh1, CMT);
++  CHECK(TEST_MSG, uint, 8, 16, PRIx8, expected_max_sh1, CMT);
++  CHECK(TEST_MSG, uint, 16, 8, PRIx16, expected_max_sh1, CMT);
++  CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected_max_sh1, CMT);
++  CHECK(TEST_MSG, uint, 64, 2, PRIx64, expected_max_sh1, CMT);
++
++
++  /* Shift by 3 to check overflow with rounding constant.  */
++  TEST_VRSRA_N(, int, s, 8, 8, 3);
++  TEST_VRSRA_N(, int, s, 16, 4, 3);
++  TEST_VRSRA_N(, int, s, 32, 2, 3);
++  TEST_VRSRA_N(, int, s, 64, 1, 3);
++  TEST_VRSRA_N(, uint, u, 8, 8, 3);
++  TEST_VRSRA_N(, uint, u, 16, 4, 3);
++  TEST_VRSRA_N(, uint, u, 32, 2, 3);
++  TEST_VRSRA_N(, uint, u, 64, 1, 3);
++  TEST_VRSRA_N(q, int, s, 8, 16, 3);
++  TEST_VRSRA_N(q, int, s, 16, 8, 3);
++  TEST_VRSRA_N(q, int, s, 32, 4, 3);
++  TEST_VRSRA_N(q, int, s, 64, 2, 3);
++  TEST_VRSRA_N(q, uint, u, 8, 16, 3);
++  TEST_VRSRA_N(q, uint, u, 16, 8, 3);
++  TEST_VRSRA_N(q, uint, u, 32, 4, 3);
++  TEST_VRSRA_N(q, uint, u, 64, 2, 3);
++
++#undef CMT
++#define CMT " (checking overflow: shift by 3, max input)"
++  CHECK(TEST_MSG, int, 8, 8, PRIx8, expected_max_sh3, CMT);
++  CHECK(TEST_MSG, int, 16, 4, PRIx16, expected_max_sh3, CMT);
++  CHECK(TEST_MSG, int, 32, 2, PRIx32, expected_max_sh3, CMT);
++  CHECK(TEST_MSG, int, 64, 1, PRIx64, expected_max_sh3, CMT);
++  CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected_max_sh3, CMT);
++  CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected_max_sh3, CMT);
++  CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected_max_sh3, CMT);
++  CHECK(TEST_MSG, uint, 64, 1, PRIx64, expected_max_sh3, CMT);
++  CHECK(TEST_MSG, int, 8, 16, PRIx8, expected_max_sh3, CMT);
++  CHECK(TEST_MSG, int, 16, 8, PRIx16, expected_max_sh3, CMT);
++  CHECK(TEST_MSG, int, 32, 4, PRIx32, expected_max_sh3, CMT);
++  CHECK(TEST_MSG, int, 64, 2, PRIx64, expected_max_sh3, CMT);
++  CHECK(TEST_MSG, uint, 8, 16, PRIx8, expected_max_sh3, CMT);
++  CHECK(TEST_MSG, uint, 16, 8, PRIx16, expected_max_sh3, CMT);
++  CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected_max_sh3, CMT);
++  CHECK(TEST_MSG, uint, 64, 2, PRIx64, expected_max_sh3, CMT);
++
++
++  /* Shift by max to check overflow with rounding constant.  */
++  TEST_VRSRA_N(, int, s, 8, 8, 8);
++  TEST_VRSRA_N(, int, s, 16, 4, 16);
++  TEST_VRSRA_N(, int, s, 32, 2, 32);
++  TEST_VRSRA_N(, int, s, 64, 1, 64);
++  TEST_VRSRA_N(, uint, u, 8, 8, 8);
++  TEST_VRSRA_N(, uint, u, 16, 4, 16);
++  TEST_VRSRA_N(, uint, u, 32, 2, 32);
++  TEST_VRSRA_N(, uint, u, 64, 1, 64);
++  TEST_VRSRA_N(q, int, s, 8, 16, 8);
++  TEST_VRSRA_N(q, int, s, 16, 8, 16);
++  TEST_VRSRA_N(q, int, s, 32, 4, 32);
++  TEST_VRSRA_N(q, int, s, 64, 2, 64);
++  TEST_VRSRA_N(q, uint, u, 8, 16, 8);
++  TEST_VRSRA_N(q, uint, u, 16, 8, 16);
++  TEST_VRSRA_N(q, uint, u, 32, 4, 32);
++  TEST_VRSRA_N(q, uint, u, 64, 2, 64);
++
++#undef CMT
++#define CMT " (checking overflow: shift by max, max input)"
++  CHECK(TEST_MSG, int, 8, 8, PRIx8, expected_max_shmax, CMT);
++  CHECK(TEST_MSG, int, 16, 4, PRIx16, expected_max_shmax, CMT);
++  CHECK(TEST_MSG, int, 32, 2, PRIx32, expected_max_shmax, CMT);
++  CHECK(TEST_MSG, int, 64, 1, PRIx64, expected_max_shmax, CMT);
++  CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected_max_shmax, CMT);
++  CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected_max_shmax, CMT);
++  CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected_max_shmax, CMT);
++  CHECK(TEST_MSG, uint, 64, 1, PRIx64, expected_max_shmax, CMT);
++  CHECK(TEST_MSG, int, 8, 16, PRIx8, expected_max_shmax, CMT);
++  CHECK(TEST_MSG, int, 16, 8, PRIx16, expected_max_shmax, CMT);
++  CHECK(TEST_MSG, int, 32, 4, PRIx32, expected_max_shmax, CMT);
++  CHECK(TEST_MSG, int, 64, 2, PRIx64, expected_max_shmax, CMT);
++  CHECK(TEST_MSG, uint, 8, 16, PRIx8, expected_max_shmax, CMT);
++  CHECK(TEST_MSG, uint, 16, 8, PRIx16, expected_max_shmax, CMT);
++  CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected_max_shmax, CMT);
++  CHECK(TEST_MSG, uint, 64, 2, PRIx64, expected_max_shmax, CMT);
++
++
++  /* Initialize with min values to check overflow.  */
++  VDUP(vector2, , int, s, 8, 8, 0x80);
++  VDUP(vector2, , int, s, 16, 4, 0x8000);
++  VDUP(vector2, , int, s, 32, 2, 0x80000000);
++  VDUP(vector2, , int, s, 64, 1, 0x8000000000000000LL);
++  VDUP(vector2, q, int, s, 8, 16, 0x80);
++  VDUP(vector2, q, int, s, 16, 8, 0x8000);
++  VDUP(vector2, q, int, s, 32, 4, 0x80000000);
++  VDUP(vector2, q, int, s, 64, 2, 0x8000000000000000ULL);
++
++  /* Shift by 1 to check overflow with rounding constant.  */
++  TEST_VRSRA_N(, int, s, 8, 8, 1);
++  TEST_VRSRA_N(, int, s, 16, 4, 1);
++  TEST_VRSRA_N(, int, s, 32, 2, 1);
++  TEST_VRSRA_N(, int, s, 64, 1, 1);
++  TEST_VRSRA_N(q, int, s, 8, 16, 1);
++  TEST_VRSRA_N(q, int, s, 16, 8, 1);
++  TEST_VRSRA_N(q, int, s, 32, 4, 1);
++  TEST_VRSRA_N(q, int, s, 64, 2, 1);
++
++#undef CMT
++#define CMT " (checking overflow: shift by 1, min negative input)"
++  CHECK(TEST_MSG, int, 8, 8, PRIx8, expected_min_sh1, CMT);
++  CHECK(TEST_MSG, int, 16, 4, PRIx16, expected_min_sh1, CMT);
++  CHECK(TEST_MSG, int, 32, 2, PRIx32, expected_min_sh1, CMT);
++  CHECK(TEST_MSG, int, 64, 1, PRIx64, expected_min_sh1, CMT);
++  CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected_min_sh1, CMT);
++  CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected_min_sh1, CMT);
++  CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected_min_sh1, CMT);
++  CHECK(TEST_MSG, uint, 64, 1, PRIx64, expected_min_sh1, CMT);
++  CHECK(TEST_MSG, int, 8, 16, PRIx8, expected_min_sh1, CMT);
++  CHECK(TEST_MSG, int, 16, 8, PRIx16, expected_min_sh1, CMT);
++  CHECK(TEST_MSG, int, 32, 4, PRIx32, expected_min_sh1, CMT);
++  CHECK(TEST_MSG, int, 64, 2, PRIx64, expected_min_sh1, CMT);
++  CHECK(TEST_MSG, uint, 8, 16, PRIx8, expected_min_sh1, CMT);
++  CHECK(TEST_MSG, uint, 16, 8, PRIx16, expected_min_sh1, CMT);
++  CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected_min_sh1, CMT);
++  CHECK(TEST_MSG, uint, 64, 2, PRIx64, expected_min_sh1, CMT);
++
++
++  /* Shift by 3 to check overflow with rounding constant.  */
++  TEST_VRSRA_N(, int, s, 8, 8, 3);
++  TEST_VRSRA_N(, int, s, 16, 4, 3);
++  TEST_VRSRA_N(, int, s, 32, 2, 3);
++  TEST_VRSRA_N(, int, s, 64, 1, 3);
++  TEST_VRSRA_N(q, int, s, 8, 16, 3);
++  TEST_VRSRA_N(q, int, s, 16, 8, 3);
++  TEST_VRSRA_N(q, int, s, 32, 4, 3);
++  TEST_VRSRA_N(q, int, s, 64, 2, 3);
++
++#undef CMT
++#define CMT " (checking overflow: shift by 3, min negative input)"
++  CHECK(TEST_MSG, int, 8, 8, PRIx8, expected_min_sh3, CMT);
++  CHECK(TEST_MSG, int, 16, 4, PRIx16, expected_min_sh3, CMT);
++  CHECK(TEST_MSG, int, 32, 2, PRIx32, expected_min_sh3, CMT);
++  CHECK(TEST_MSG, int, 64, 1, PRIx64, expected_min_sh3, CMT);
++  CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected_min_sh3, CMT);
++  CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected_min_sh3, CMT);
++  CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected_min_sh3, CMT);
++  CHECK(TEST_MSG, uint, 64, 1, PRIx64, expected_min_sh3, CMT);
++  CHECK(TEST_MSG, int, 8, 16, PRIx8, expected_min_sh3, CMT);
++  CHECK(TEST_MSG, int, 16, 8, PRIx16, expected_min_sh3, CMT);
++  CHECK(TEST_MSG, int, 32, 4, PRIx32, expected_min_sh3, CMT);
++  CHECK(TEST_MSG, int, 64, 2, PRIx64, expected_min_sh3, CMT);
++  CHECK(TEST_MSG, uint, 8, 16, PRIx8, expected_min_sh3, CMT);
++  CHECK(TEST_MSG, uint, 16, 8, PRIx16, expected_min_sh3, CMT);
++  CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected_min_sh3, CMT);
++  CHECK(TEST_MSG, uint, 64, 2, PRIx64, expected_min_sh3, CMT);
++
++
++  /* Shift by max to check overflow with rounding constant.  */
++  TEST_VRSRA_N(, int, s, 8, 8, 8);
++  TEST_VRSRA_N(, int, s, 16, 4, 16);
++  TEST_VRSRA_N(, int, s, 32, 2, 32);
++  TEST_VRSRA_N(, int, s, 64, 1, 64);
++  TEST_VRSRA_N(q, int, s, 8, 16, 8);
++  TEST_VRSRA_N(q, int, s, 16, 8, 16);
++  TEST_VRSRA_N(q, int, s, 32, 4, 32);
++  TEST_VRSRA_N(q, int, s, 64, 2, 64);
++
++#undef CMT
++#define CMT " (checking overflow: shift by max, min negative input)"
++  CHECK(TEST_MSG, int, 8, 8, PRIx8, expected_min_shmax, CMT);
++  CHECK(TEST_MSG, int, 16, 4, PRIx16, expected_min_shmax, CMT);
++  CHECK(TEST_MSG, int, 32, 2, PRIx32, expected_min_shmax, CMT);
++  CHECK(TEST_MSG, int, 64, 1, PRIx64, expected_min_shmax, CMT);
++  CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected_min_shmax, CMT);
++  CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected_min_shmax, CMT);
++  CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected_min_shmax, CMT);
++  CHECK(TEST_MSG, uint, 64, 1, PRIx64, expected_min_shmax, CMT);
++  CHECK(TEST_MSG, int, 8, 16, PRIx8, expected_min_shmax, CMT);
++  CHECK(TEST_MSG, int, 16, 8, PRIx16, expected_min_shmax, CMT);
++  CHECK(TEST_MSG, int, 32, 4, PRIx32, expected_min_shmax, CMT);
++  CHECK(TEST_MSG, int, 64, 2, PRIx64, expected_min_shmax, CMT);
++  CHECK(TEST_MSG, uint, 8, 16, PRIx8, expected_min_shmax, CMT);
++  CHECK(TEST_MSG, uint, 16, 8, PRIx16, expected_min_shmax, CMT);
++  CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected_min_shmax, CMT);
++  CHECK(TEST_MSG, uint, 64, 2, PRIx64, expected_min_shmax, CMT);
++}
++
++int main (void)
++{
++  exec_vrsra_n ();
++  return 0;
++}
+--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vsXi_n.inc
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vsXi_n.inc
+@@ -68,7 +68,24 @@ void FNNAME (INSN_NAME) (void)
+   TEST_VSXI_N(INSN_NAME, q, poly, p, 8, 16, 3);
+   TEST_VSXI_N(INSN_NAME, q, poly, p, 16, 8, 12);
+ 
+-  CHECK_RESULTS (TEST_MSG, "");
++  CHECK(TEST_MSG, int, 8, 8, PRIx8, expected, "");
++  CHECK(TEST_MSG, int, 16, 4, PRIx16, expected, "");
++  CHECK(TEST_MSG, int, 32, 2, PRIx32, expected, "");
++  CHECK(TEST_MSG, int, 64, 1, PRIx64, expected, "");
++  CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected, "");
++  CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected, "");
++  CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected, "");
++  CHECK(TEST_MSG, uint, 64, 1, PRIx64, expected, "");
++  CHECK(TEST_MSG, poly, 8, 8, PRIx8, expected, "");
++  CHECK(TEST_MSG, poly, 16, 4, PRIx16, expected, "");
++  CHECK(TEST_MSG, int, 8, 16, PRIx8, expected, "");
++  CHECK(TEST_MSG, int, 16, 8, PRIx16, expected, "");
++  CHECK(TEST_MSG, int, 32, 4, PRIx32, expected, "");
++  CHECK(TEST_MSG, uint, 8, 16, PRIx8, expected, "");
++  CHECK(TEST_MSG, uint, 16, 8, PRIx16, expected, "");
++  CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected, "");
++  CHECK(TEST_MSG, poly, 8, 16, PRIx8, expected, "");
++  CHECK(TEST_MSG, poly, 16, 8, PRIx16, expected, "");
+ 
+ #ifdef EXTRA_TESTS
+   EXTRA_TESTS();
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vset_lane.c
+@@ -0,0 +1,112 @@
++#include <arm_neon.h>
++#include "arm-neon-ref.h"
++#include "compute-ref-data.h"
++
++/* Expected results.  */
++VECT_VAR_DECL(expected,int,8,8) [] = { 0xf0, 0xf1, 0xf2, 0xf3,
++				       0xf4, 0xf5, 0xf6, 0x11 };
++VECT_VAR_DECL(expected,int,16,4) [] = { 0xfff0, 0xfff1, 0xfff2, 0x22 };
++VECT_VAR_DECL(expected,int,32,2) [] = { 0xfffffff0, 0x33 };
++VECT_VAR_DECL(expected,int,64,1) [] = { 0x44 };
++VECT_VAR_DECL(expected,uint,8,8) [] = { 0xf0, 0xf1, 0xf2, 0xf3,
++					0xf4, 0xf5, 0x55, 0xf7 };
++VECT_VAR_DECL(expected,uint,16,4) [] = { 0xfff0, 0xfff1, 0x66, 0xfff3 };
++VECT_VAR_DECL(expected,uint,32,2) [] = { 0xfffffff0, 0x77 };
++VECT_VAR_DECL(expected,uint,64,1) [] = { 0x88 };
++VECT_VAR_DECL(expected,poly,8,8) [] = { 0xf0, 0xf1, 0xf2, 0xf3,
++					0xf4, 0xf5, 0x55, 0xf7 };
++VECT_VAR_DECL(expected,poly,16,4) [] = { 0xfff0, 0xfff1, 0x66, 0xfff3 };
++VECT_VAR_DECL(expected,hfloat,16,4) [] = { 0xcc00, 0xcb80, 0x4840, 0xca80 };
++VECT_VAR_DECL(expected,hfloat,32,2) [] = { 0xc1800000, 0x4204cccd };
++VECT_VAR_DECL(expected,int,8,16) [] = { 0xf0, 0xf1, 0xf2, 0xf3,
++					0xf4, 0xf5, 0xf6, 0xf7,
++					0xf8, 0xf9, 0xfa, 0xfb,
++					0xfc, 0xfd, 0xfe, 0x99 };
++VECT_VAR_DECL(expected,int,16,8) [] = { 0xfff0, 0xfff1, 0xfff2, 0xfff3,
++					0xfff4, 0xaa, 0xfff6, 0xfff7 };
++VECT_VAR_DECL(expected,int,32,4) [] = { 0xfffffff0, 0xfffffff1,
++					0xfffffff2, 0xbb };
++VECT_VAR_DECL(expected,int,64,2) [] = { 0xfffffffffffffff0, 0xcc };
++VECT_VAR_DECL(expected,uint,8,16) [] = { 0xf0, 0xf1, 0xf2, 0xf3,
++					 0xf4, 0xf5, 0xf6, 0xf7,
++					 0xf8, 0xf9, 0xfa, 0xfb,
++					 0xfc, 0xfd, 0xdd, 0xff };
++VECT_VAR_DECL(expected,uint,16,8) [] = { 0xfff0, 0xfff1, 0xfff2, 0xfff3,
++					 0xfff4, 0xfff5, 0xee, 0xfff7 };
++VECT_VAR_DECL(expected,uint,32,4) [] = { 0xfffffff0, 0xfffffff1,
++					 0xff, 0xfffffff3 };
++VECT_VAR_DECL(expected,uint,64,2) [] = { 0xfffffffffffffff0, 0x11 };
++VECT_VAR_DECL(expected,poly,8,16) [] = { 0xf0, 0xf1, 0xf2, 0xf3,
++					 0xf4, 0xf5, 0xf6, 0xf7,
++					 0xf8, 0xf9, 0xfa, 0xfb,
++					 0xfc, 0xfd, 0xdd, 0xff };
++VECT_VAR_DECL(expected,poly,16,8) [] = { 0xfff0, 0xfff1, 0xfff2, 0xfff3,
++					 0xfff4, 0xfff5, 0xee, 0xfff7 };
++VECT_VAR_DECL(expected,hfloat,16,8) [] = { 0xcc00, 0xcb80, 0xcb00, 0xca80,
++					   0xca00, 0x4480, 0xc900, 0xc880 };
++VECT_VAR_DECL(expected,hfloat,32,4) [] = { 0xc1800000, 0xc1700000,
++					   0xc1600000, 0x41333333 };
++
++#define TEST_MSG "VSET_LANE/VSET_LANEQ"
++void exec_vset_lane (void)
++{
++  /* vec=vset_lane(val, vec, lane), then store the result.  */
++#define TEST_VSET_LANE(Q, T1, T2, W, N, V, L)				\
++  VECT_VAR(vector, T1, W, N) =						\
++    vset##Q##_lane_##T2##W(V,						\
++			   VECT_VAR(vector, T1, W, N),			\
++			   L);						\
++  vst1##Q##_##T2##W(VECT_VAR(result, T1, W, N), VECT_VAR(vector, T1, W, N))
++
++  DECL_VARIABLE_ALL_VARIANTS(vector);
++
++  clean_results ();
++
++  /* Initialize input "vector" from "buffer".  */
++  TEST_MACRO_ALL_VARIANTS_2_5(VLOAD, vector, buffer);
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++  VLOAD(vector, buffer, , float, f, 16, 4);
++  VLOAD(vector, buffer, q, float, f, 16, 8);
++#endif
++  VLOAD(vector, buffer, , float, f, 32, 2);
++  VLOAD(vector, buffer, q, float, f, 32, 4);
++
++  /* Choose value and lane arbitrarily.  */
++  TEST_VSET_LANE(, int, s, 8, 8, 0x11, 7);
++  TEST_VSET_LANE(, int, s, 16, 4, 0x22, 3);
++  TEST_VSET_LANE(, int, s, 32, 2, 0x33, 1);
++  TEST_VSET_LANE(, int, s, 64, 1, 0x44, 0);
++  TEST_VSET_LANE(, uint, u, 8, 8, 0x55, 6);
++  TEST_VSET_LANE(, uint, u, 16, 4, 0x66, 2);
++  TEST_VSET_LANE(, uint, u, 32, 2, 0x77, 1);
++  TEST_VSET_LANE(, uint, u, 64, 1, 0x88, 0);
++  TEST_VSET_LANE(, poly, p, 8, 8, 0x55, 6);
++  TEST_VSET_LANE(, poly, p, 16, 4, 0x66, 2);
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++  TEST_VSET_LANE(, float, f, 16, 4, 8.5f, 2);
++#endif
++  TEST_VSET_LANE(, float, f, 32, 2, 33.2f, 1);
++
++  TEST_VSET_LANE(q, int, s, 8, 16, 0x99, 15);
++  TEST_VSET_LANE(q, int, s, 16, 8, 0xAA, 5);
++  TEST_VSET_LANE(q, int, s, 32, 4, 0xBB, 3);
++  TEST_VSET_LANE(q, int, s, 64, 2, 0xCC, 1);
++  TEST_VSET_LANE(q, uint, u, 8, 16, 0xDD, 14);
++  TEST_VSET_LANE(q, uint, u, 16, 8, 0xEE, 6);
++  TEST_VSET_LANE(q, uint, u, 32, 4, 0xFF, 2);
++  TEST_VSET_LANE(q, uint, u, 64, 2, 0x11, 1);
++  TEST_VSET_LANE(q, poly, p, 8, 16, 0xDD, 14);
++  TEST_VSET_LANE(q, poly, p, 16, 8, 0xEE, 6);
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++  TEST_VSET_LANE(q, float, f, 16, 8, 4.5f, 5);
++#endif
++  TEST_VSET_LANE(q, float, f, 32, 4, 11.2f, 3);
++
++  CHECK_RESULTS(TEST_MSG, "");
++}
++
++int main (void)
++{
++  exec_vset_lane ();
++  return 0;
++}
+--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vshl.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vshl.c
+@@ -13,11 +13,6 @@ VECT_VAR_DECL(expected,uint,8,8) [] = { 0xe0, 0xe2, 0xe4, 0xe6,
+ VECT_VAR_DECL(expected,uint,16,4) [] = { 0xff80, 0xff88, 0xff90, 0xff98 };
+ VECT_VAR_DECL(expected,uint,32,2) [] = { 0xfffff000, 0xfffff100 };
+ VECT_VAR_DECL(expected,uint,64,1) [] = { 0xffffffffffffff80 };
+-VECT_VAR_DECL(expected,poly,8,8) [] = { 0x33, 0x33, 0x33, 0x33,
+-					0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,poly,16,4) [] = { 0x3333, 0x3333,
+-					 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,hfloat,32,2) [] = { 0x33333333, 0x33333333 };
+ VECT_VAR_DECL(expected,int,8,16) [] = { 0x0, 0x20, 0x40, 0x60,
+ 					0x80, 0xa0, 0xc0, 0xe0,
+ 					0x0, 0x20, 0x40, 0x60,
+@@ -36,14 +31,6 @@ VECT_VAR_DECL(expected,uint,16,8) [] = { 0x0, 0x1000, 0x2000, 0x3000,
+ VECT_VAR_DECL(expected,uint,32,4) [] = { 0x0, 0x40000000,
+ 					 0x80000000, 0xc0000000 };
+ VECT_VAR_DECL(expected,uint,64,2) [] = { 0x0, 0x8000000000000000 };
+-VECT_VAR_DECL(expected,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,poly,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333,
+-					 0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,hfloat,32,4) [] = { 0x33333333, 0x33333333,
+-					   0x33333333, 0x33333333 };
+ 
+ /* Expected results with large shift amount.  */
+ VECT_VAR_DECL(expected_large_shift,int,8,8) [] = { 0x0, 0x0, 0x0, 0x0,
+@@ -56,11 +43,6 @@ VECT_VAR_DECL(expected_large_shift,uint,8,8) [] = { 0x0, 0x0, 0x0, 0x0,
+ VECT_VAR_DECL(expected_large_shift,uint,16,4) [] = { 0x0, 0x0, 0x0, 0x0 };
+ VECT_VAR_DECL(expected_large_shift,uint,32,2) [] = { 0x0, 0x0 };
+ VECT_VAR_DECL(expected_large_shift,uint,64,1) [] = { 0x0 };
+-VECT_VAR_DECL(expected_large_shift,poly,8,8) [] = { 0x33, 0x33, 0x33, 0x33,
+-						    0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected_large_shift,poly,16,4) [] = { 0x3333, 0x3333,
+-						     0x3333, 0x3333 };
+-VECT_VAR_DECL(expected_large_shift,hfloat,32,2) [] = { 0x33333333, 0x33333333 };
+ VECT_VAR_DECL(expected_large_shift,int,8,16) [] = { 0x0, 0x0, 0x0, 0x0,
+ 						    0x0, 0x0, 0x0, 0x0,
+ 						    0x0, 0x0, 0x0, 0x0,
+@@ -77,16 +59,6 @@ VECT_VAR_DECL(expected_large_shift,uint,16,8) [] = { 0x0, 0x0, 0x0, 0x0,
+ 						     0x0, 0x0, 0x0, 0x0 };
+ VECT_VAR_DECL(expected_large_shift,uint,32,4) [] = { 0x0, 0x0, 0x0, 0x0 };
+ VECT_VAR_DECL(expected_large_shift,uint,64,2) [] = { 0x0, 0x0 };
+-VECT_VAR_DECL(expected_large_shift,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-						     0x33, 0x33, 0x33, 0x33,
+-						     0x33, 0x33, 0x33, 0x33,
+-						     0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected_large_shift,poly,16,8) [] = { 0x3333, 0x3333,
+-						     0x3333, 0x3333,
+-						     0x3333, 0x3333,
+-						     0x3333, 0x3333 };
+-VECT_VAR_DECL(expected_large_shift,hfloat,32,4) [] = { 0x33333333, 0x33333333,
+-						       0x33333333, 0x33333333 };
+ 
+ 
+ /* Expected results with negative shift amount.  */
+@@ -103,12 +75,6 @@ VECT_VAR_DECL(expected_negative_shift,uint,16,4) [] = { 0x7ff8, 0x7ff8,
+ VECT_VAR_DECL(expected_negative_shift,uint,32,2) [] = { 0x3ffffffc,
+ 							0x3ffffffc };
+ VECT_VAR_DECL(expected_negative_shift,uint,64,1) [] = { 0xfffffffffffffff };
+-VECT_VAR_DECL(expected_negative_shift,poly,8,8) [] = { 0x33, 0x33, 0x33, 0x33,
+-						       0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected_negative_shift,poly,16,4) [] = { 0x3333, 0x3333,
+-							0x3333, 0x3333 };
+-VECT_VAR_DECL(expected_negative_shift,hfloat,32,2) [] = { 0x33333333,
+-							  0x33333333 };
+ VECT_VAR_DECL(expected_negative_shift,int,8,16) [] = { 0xfc, 0xfc, 0xfc, 0xfc,
+ 						       0xfd, 0xfd, 0xfd, 0xfd,
+ 						       0xfe, 0xfe, 0xfe, 0xfe,
+@@ -133,18 +99,6 @@ VECT_VAR_DECL(expected_negative_shift,uint,32,4) [] = { 0x1ffffffe, 0x1ffffffe,
+ 							0x1ffffffe, 0x1ffffffe };
+ VECT_VAR_DECL(expected_negative_shift,uint,64,2) [] = { 0x7ffffffffffffff,
+ 							0x7ffffffffffffff };
+-VECT_VAR_DECL(expected_negative_shift,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-							0x33, 0x33, 0x33, 0x33,
+-							0x33, 0x33, 0x33, 0x33,
+-							0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected_negative_shift,poly,16,8) [] = { 0x3333, 0x3333,
+-							0x3333, 0x3333,
+-							0x3333, 0x3333,
+-							0x3333, 0x3333 };
+-VECT_VAR_DECL(expected_negative_shift,hfloat,32,4) [] = { 0x33333333,
+-							  0x33333333,
+-							  0x33333333,
+-							  0x33333333 };
+ 
+ 
+ #ifndef INSN_NAME
+@@ -187,7 +141,22 @@ void FNNAME (INSN_NAME) (void)
+   /* Execute the tests.  */
+   TEST_MACRO_ALL_VARIANTS_1_5(TEST_VSHL, int);
+ 
+-  CHECK_RESULTS (TEST_MSG, "");
++  CHECK(TEST_MSG, int, 8, 8, PRIx8, expected, "");
++  CHECK(TEST_MSG, int, 16, 4, PRIx16, expected, "");
++  CHECK(TEST_MSG, int, 32, 2, PRIx32, expected, "");
++  CHECK(TEST_MSG, int, 64, 1, PRIx64, expected, "");
++  CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected, "");
++  CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected, "");
++  CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected, "");
++  CHECK(TEST_MSG, uint, 64, 1, PRIx64, expected, "");
++  CHECK(TEST_MSG, int, 8, 16, PRIx8, expected, "");
++  CHECK(TEST_MSG, int, 16, 8, PRIx16, expected, "");
++  CHECK(TEST_MSG, int, 32, 4, PRIx32, expected, "");
++  CHECK(TEST_MSG, int, 64, 2, PRIx64, expected, "");
++  CHECK(TEST_MSG, uint, 8, 16, PRIx8, expected, "");
++  CHECK(TEST_MSG, uint, 16, 8, PRIx16, expected, "");
++  CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected, "");
++  CHECK(TEST_MSG, uint, 64, 2, PRIx64, expected, "");
+ 
+ 
+   /* Test large shift amount (larger or equal to the type width.  */
+@@ -203,7 +172,23 @@ void FNNAME (INSN_NAME) (void)
+   /* Execute the tests.  */
+   TEST_MACRO_ALL_VARIANTS_1_5(TEST_VSHL, int);
+ 
+-  CHECK_RESULTS_NAMED (TEST_MSG, expected_large_shift, "(large shift amount)");
++#define COMMENT1 "(large shift amount)"
++  CHECK(TEST_MSG, int, 8, 8, PRIx8, expected_large_shift, COMMENT1);
++  CHECK(TEST_MSG, int, 16, 4, PRIx16, expected_large_shift, COMMENT1);
++  CHECK(TEST_MSG, int, 32, 2, PRIx32, expected_large_shift, COMMENT1);
++  CHECK(TEST_MSG, int, 64, 1, PRIx64, expected_large_shift, COMMENT1);
++  CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected_large_shift, COMMENT1);
++  CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected_large_shift, COMMENT1);
++  CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected_large_shift, COMMENT1);
++  CHECK(TEST_MSG, uint, 64, 1, PRIx64, expected_large_shift, COMMENT1);
++  CHECK(TEST_MSG, int, 8, 16, PRIx8, expected_large_shift, COMMENT1);
++  CHECK(TEST_MSG, int, 16, 8, PRIx16, expected_large_shift, COMMENT1);
++  CHECK(TEST_MSG, int, 32, 4, PRIx32, expected_large_shift, COMMENT1);
++  CHECK(TEST_MSG, int, 64, 2, PRIx64, expected_large_shift, COMMENT1);
++  CHECK(TEST_MSG, uint, 8, 16, PRIx8, expected_large_shift, COMMENT1);
++  CHECK(TEST_MSG, uint, 16, 8, PRIx16, expected_large_shift, COMMENT1);
++  CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected_large_shift, COMMENT1);
++  CHECK(TEST_MSG, uint, 64, 2, PRIx64, expected_large_shift, COMMENT1);
+ 
+ 
+   /* Test negative shift amount. */
+@@ -219,7 +204,23 @@ void FNNAME (INSN_NAME) (void)
+   /* Execute the tests.  */
+   TEST_MACRO_ALL_VARIANTS_1_5(TEST_VSHL, int);
+ 
+-  CHECK_RESULTS_NAMED (TEST_MSG, expected_negative_shift, "(negative shift amount)");
++#define COMMENT2 "(negative shift amount)"
++  CHECK(TEST_MSG, int, 8, 8, PRIx8, expected_negative_shift, COMMENT2);
++  CHECK(TEST_MSG, int, 16, 4, PRIx16, expected_negative_shift, COMMENT2);
++  CHECK(TEST_MSG, int, 32, 2, PRIx32, expected_negative_shift, COMMENT2);
++  CHECK(TEST_MSG, int, 64, 1, PRIx64, expected_negative_shift, COMMENT2);
++  CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected_negative_shift, COMMENT2);
++  CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected_negative_shift, COMMENT2);
++  CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected_negative_shift, COMMENT2);
++  CHECK(TEST_MSG, uint, 64, 1, PRIx64, expected_negative_shift, COMMENT2);
++  CHECK(TEST_MSG, int, 8, 16, PRIx8, expected_negative_shift, COMMENT2);
++  CHECK(TEST_MSG, int, 16, 8, PRIx16, expected_negative_shift, COMMENT2);
++  CHECK(TEST_MSG, int, 32, 4, PRIx32, expected_negative_shift, COMMENT2);
++  CHECK(TEST_MSG, int, 64, 2, PRIx64, expected_negative_shift, COMMENT2);
++  CHECK(TEST_MSG, uint, 8, 16, PRIx8, expected_negative_shift, COMMENT2);
++  CHECK(TEST_MSG, uint, 16, 8, PRIx16, expected_negative_shift, COMMENT2);
++  CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected_negative_shift, COMMENT2);
++  CHECK(TEST_MSG, uint, 64, 2, PRIx64, expected_negative_shift, COMMENT2);
+ }
+ 
+ int main (void)
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vshl_n.c
+@@ -0,0 +1,96 @@
++#include <arm_neon.h>
++#include "arm-neon-ref.h"
++#include "compute-ref-data.h"
++
++/* Expected results.  */
++VECT_VAR_DECL(expected,int,8,8) [] = { 0xe0, 0xe2, 0xe4, 0xe6,
++				       0xe8, 0xea, 0xec, 0xee };
++VECT_VAR_DECL(expected,int,16,4) [] = { 0xffe0, 0xffe2, 0xffe4, 0xffe6 };
++VECT_VAR_DECL(expected,int,32,2) [] = { 0xffffff80, 0xffffff88 };
++VECT_VAR_DECL(expected,int,64,1) [] = { 0xffffffffffffffc0 };
++VECT_VAR_DECL(expected,uint,8,8) [] = { 0xc0, 0xc4, 0xc8, 0xcc,
++					0xd0, 0xd4, 0xd8, 0xdc };
++VECT_VAR_DECL(expected,uint,16,4) [] = { 0xff00, 0xff10, 0xff20, 0xff30 };
++VECT_VAR_DECL(expected,uint,32,2) [] = { 0xffffff80, 0xffffff88 };
++VECT_VAR_DECL(expected,uint,64,1) [] = { 0xffffffffffffffe0 };
++VECT_VAR_DECL(expected,int,8,16) [] = { 0x0, 0x20, 0x40, 0x60,
++					0x80, 0xa0, 0xc0, 0xe0,
++					0x0, 0x20, 0x40, 0x60,
++					0x80, 0xa0, 0xc0, 0xe0 };
++VECT_VAR_DECL(expected,int,16,8) [] = { 0xffe0, 0xffe2, 0xffe4, 0xffe6,
++					0xffe8, 0xffea, 0xffec, 0xffee };
++VECT_VAR_DECL(expected,int,32,4) [] = { 0xffffffc0, 0xffffffc4,
++					0xffffffc8, 0xffffffcc };
++VECT_VAR_DECL(expected,int,64,2) [] = { 0xffffffffffffffc0, 0xffffffffffffffc4 };
++VECT_VAR_DECL(expected,uint,8,16) [] = { 0xc0, 0xc4, 0xc8, 0xcc,
++					 0xd0, 0xd4, 0xd8, 0xdc,
++					 0xe0, 0xe4, 0xe8, 0xec,
++					 0xf0, 0xf4, 0xf8, 0xfc };
++VECT_VAR_DECL(expected,uint,16,8) [] = { 0xff80, 0xff88, 0xff90, 0xff98,
++					 0xffa0, 0xffa8, 0xffb0, 0xffb8 };
++VECT_VAR_DECL(expected,uint,32,4) [] = { 0xffffffc0, 0xffffffc4,
++					 0xffffffc8, 0xffffffcc };
++VECT_VAR_DECL(expected,uint,64,2) [] = { 0xffffffffffffffe0,
++					 0xffffffffffffffe2 };
++
++#define TEST_MSG "VSHL_N"
++void exec_vshl_n (void)
++{
++  /* Basic test: v2=vshl_n(v1,v), then store the result.  */
++#define TEST_VSHL_N(Q, T1, T2, W, N, V)					\
++  VECT_VAR(vector_res, T1, W, N) =					\
++    vshl##Q##_n_##T2##W(VECT_VAR(vector, T1, W, N),			\
++			V);						\
++  vst1##Q##_##T2##W(VECT_VAR(result, T1, W, N), VECT_VAR(vector_res, T1, W, N))
++
++  DECL_VARIABLE_ALL_VARIANTS(vector);
++  DECL_VARIABLE_ALL_VARIANTS(vector_res);
++
++  clean_results ();
++
++  /* Initialize input "vector" from "buffer".  */
++  TEST_MACRO_ALL_VARIANTS_2_5(VLOAD, vector, buffer);
++
++  /* Choose shift amount arbitrarily.  */
++  TEST_VSHL_N(, int, s, 8, 8, 1);
++  TEST_VSHL_N(, int, s, 16, 4, 1);
++  TEST_VSHL_N(, int, s, 32, 2, 3);
++  TEST_VSHL_N(, int, s, 64, 1, 2);
++  TEST_VSHL_N(, uint, u, 8, 8, 2);
++  TEST_VSHL_N(, uint, u, 16, 4, 4);
++  TEST_VSHL_N(, uint, u, 32, 2, 3);
++  TEST_VSHL_N(, uint, u, 64, 1, 1);
++
++  TEST_VSHL_N(q, int, s, 8, 16, 5);
++  TEST_VSHL_N(q, int, s, 16, 8, 1);
++  TEST_VSHL_N(q, int, s, 32, 4, 2);
++  TEST_VSHL_N(q, int, s, 64, 2, 2);
++  TEST_VSHL_N(q, uint, u, 8, 16, 2);
++  TEST_VSHL_N(q, uint, u, 16, 8, 3);
++  TEST_VSHL_N(q, uint, u, 32, 4, 2);
++  TEST_VSHL_N(q, uint, u, 64, 2, 1);
++
++#define CMT ""
++  CHECK(TEST_MSG, int, 8, 8, PRIx8, expected, CMT);
++  CHECK(TEST_MSG, int, 16, 4, PRIx16, expected, CMT);
++  CHECK(TEST_MSG, int, 32, 2, PRIx32, expected, CMT);
++  CHECK(TEST_MSG, int, 64, 1, PRIx64, expected, CMT);
++  CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected, CMT);
++  CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected, CMT);
++  CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected, CMT);
++  CHECK(TEST_MSG, uint, 64, 1, PRIx64, expected, CMT);
++  CHECK(TEST_MSG, int, 8, 16, PRIx8, expected, CMT);
++  CHECK(TEST_MSG, int, 16, 8, PRIx16, expected, CMT);
++  CHECK(TEST_MSG, int, 32, 4, PRIx32, expected, CMT);
++  CHECK(TEST_MSG, int, 64, 2, PRIx64, expected, CMT);
++  CHECK(TEST_MSG, uint, 8, 16, PRIx8, expected, CMT);
++  CHECK(TEST_MSG, uint, 16, 8, PRIx16, expected, CMT);
++  CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected, CMT);
++  CHECK(TEST_MSG, uint, 64, 2, PRIx64, expected, CMT);
++}
++
++int main (void)
++{
++  exec_vshl_n ();
++  return 0;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vshll_n.c
+@@ -0,0 +1,56 @@
++#include <arm_neon.h>
++#include "arm-neon-ref.h"
++#include "compute-ref-data.h"
++
++/* Expected results.  */
++VECT_VAR_DECL(expected,int,16,8) [] = { 0xffe0, 0xffe2, 0xffe4, 0xffe6,
++					0xffe8, 0xffea, 0xffec, 0xffee };
++VECT_VAR_DECL(expected,int,32,4) [] = { 0xffffffe0, 0xffffffe2,
++					0xffffffe4, 0xffffffe6 };
++VECT_VAR_DECL(expected,int,64,2) [] = { 0xffffffffffffff80, 0xffffffffffffff88 };
++VECT_VAR_DECL(expected,uint,16,8) [] = { 0x3c0, 0x3c4, 0x3c8, 0x3cc,
++					 0x3d0, 0x3d4, 0x3d8, 0x3dc };
++VECT_VAR_DECL(expected,uint,32,4) [] = { 0xfff00, 0xfff10, 0xfff20, 0xfff30 };
++VECT_VAR_DECL(expected,uint,64,2) [] = { 0x7ffffff80, 0x7ffffff88 };
++
++#define TEST_MSG "VSHLL_N"
++void exec_vshll_n (void)
++{
++  /* Basic test: v2=vshll_n(v1,v), then store the result.  */
++#define TEST_VSHLL_N(T1, T2, W, W2, N, V)				\
++  VECT_VAR(vector_res, T1, W2, N) =					\
++    vshll##_n_##T2##W(VECT_VAR(vector, T1, W, N),			\
++		      V);						\
++  vst1q##_##T2##W2(VECT_VAR(result, T1, W2, N), VECT_VAR(vector_res, T1, W2, N))
++
++  DECL_VARIABLE_ALL_VARIANTS(vector);
++  DECL_VARIABLE_ALL_VARIANTS(vector_res);
++
++  clean_results ();
++
++  /* Initialize input "vector" from "buffer".  */
++  TEST_MACRO_ALL_VARIANTS_2_5(VLOAD, vector, buffer);
++
++  /* Choose shift amount arbitrarily.  */
++  TEST_VSHLL_N(int, s, 8, 16, 8, 1);
++  TEST_VSHLL_N(int, s, 16, 32, 4, 1);
++  TEST_VSHLL_N(int, s, 32, 64, 2, 3);
++  TEST_VSHLL_N(uint, u, 8, 16, 8, 2);
++  TEST_VSHLL_N(uint, u, 16, 32, 4, 4);
++  TEST_VSHLL_N(uint, u, 32, 64, 2, 3);
++
++#undef CMT
++#define CMT ""
++  CHECK(TEST_MSG, int, 16, 8, PRIx16, expected, CMT);
++  CHECK(TEST_MSG, int, 32, 4, PRIx32, expected, CMT);
++  CHECK(TEST_MSG, int, 64, 2, PRIx64, expected, CMT);
++  CHECK(TEST_MSG, uint, 16, 8, PRIx16, expected, CMT);
++  CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected, CMT);
++  CHECK(TEST_MSG, uint, 64, 2, PRIx64, expected, CMT);
++}
++
++int main (void)
++{
++  exec_vshll_n ();
++  return 0;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vshr_n.c
+@@ -0,0 +1,95 @@
++#include <arm_neon.h>
++#include "arm-neon-ref.h"
++#include "compute-ref-data.h"
++
++/* Expected results.  */
++VECT_VAR_DECL(expected,int,8,8) [] = { 0xf8, 0xf8, 0xf9, 0xf9,
++				       0xfa, 0xfa, 0xfb, 0xfb };
++VECT_VAR_DECL(expected,int,16,4) [] = { 0xffff, 0xffff, 0xffff, 0xffff };
++VECT_VAR_DECL(expected,int,32,2) [] = { 0xfffffffc, 0xfffffffc };
++VECT_VAR_DECL(expected,int,64,1) [] = { 0xffffffffffffffff };
++VECT_VAR_DECL(expected,uint,8,8) [] = { 0x3c, 0x3c, 0x3c, 0x3c,
++					0x3d, 0x3d, 0x3d, 0x3d };
++VECT_VAR_DECL(expected,uint,16,4) [] = { 0x1ffe, 0x1ffe, 0x1ffe, 0x1ffe };
++VECT_VAR_DECL(expected,uint,32,2) [] = { 0x7ffffff, 0x7ffffff };
++VECT_VAR_DECL(expected,uint,64,1) [] = { 0x7fffffff };
++VECT_VAR_DECL(expected,int,8,16) [] = { 0xf8, 0xf8, 0xf9, 0xf9,
++					0xfa, 0xfa, 0xfb, 0xfb,
++					0xfc, 0xfc, 0xfd, 0xfd,
++					0xfe, 0xfe, 0xff, 0xff };
++VECT_VAR_DECL(expected,int,16,8) [] = { 0xffff, 0xffff, 0xffff, 0xffff,
++					0xffff, 0xffff, 0xffff, 0xffff };
++VECT_VAR_DECL(expected,int,32,4) [] = { 0xfffffffc, 0xfffffffc,
++					0xfffffffc, 0xfffffffc };
++VECT_VAR_DECL(expected,int,64,2) [] = { 0xffffffffffffffff, 0xffffffffffffffff };
++VECT_VAR_DECL(expected,uint,8,16) [] = { 0x3c, 0x3c, 0x3c, 0x3c,
++					 0x3d, 0x3d, 0x3d, 0x3d,
++					 0x3e, 0x3e, 0x3e, 0x3e,
++					 0x3f, 0x3f, 0x3f, 0x3f };
++VECT_VAR_DECL(expected,uint,16,8) [] = { 0x1ffe, 0x1ffe, 0x1ffe, 0x1ffe,
++					 0x1ffe, 0x1ffe, 0x1ffe, 0x1ffe };
++VECT_VAR_DECL(expected,uint,32,4) [] = { 0x7ffffff, 0x7ffffff,
++					 0x7ffffff, 0x7ffffff };
++VECT_VAR_DECL(expected,uint,64,2) [] = { 0x7fffffff, 0x7fffffff };
++
++#define TEST_MSG "VSHR_N"
++void exec_vshr_n (void)
++{
++  /* Basic test: y=vshr_n(x,v), then store the result.  */
++#define TEST_VSHR_N(Q, T1, T2, W, N, V)					\
++  VECT_VAR(vector_res, T1, W, N) =					\
++    vshr##Q##_n_##T2##W(VECT_VAR(vector, T1, W, N),			\
++			V);						\
++  vst1##Q##_##T2##W(VECT_VAR(result, T1, W, N), VECT_VAR(vector_res, T1, W, N))
++
++  DECL_VARIABLE_ALL_VARIANTS(vector);
++  DECL_VARIABLE_ALL_VARIANTS(vector_res);
++
++  clean_results ();
++
++  /* Initialize input "vector" from "buffer".  */
++  TEST_MACRO_ALL_VARIANTS_2_5(VLOAD, vector, buffer);
++
++  /* Choose shift amount arbitrarily.  */
++  TEST_VSHR_N(, int, s, 8, 8, 1);
++  TEST_VSHR_N(, int, s, 16, 4, 12);
++  TEST_VSHR_N(, int, s, 32, 2, 2);
++  TEST_VSHR_N(, int, s, 64, 1, 32);
++  TEST_VSHR_N(, uint, u, 8, 8, 2);
++  TEST_VSHR_N(, uint, u, 16, 4, 3);
++  TEST_VSHR_N(, uint, u, 32, 2, 5);
++  TEST_VSHR_N(, uint, u, 64, 1, 33);
++
++  TEST_VSHR_N(q, int, s, 8, 16, 1);
++  TEST_VSHR_N(q, int, s, 16, 8, 12);
++  TEST_VSHR_N(q, int, s, 32, 4, 2);
++  TEST_VSHR_N(q, int, s, 64, 2, 32);
++  TEST_VSHR_N(q, uint, u, 8, 16, 2);
++  TEST_VSHR_N(q, uint, u, 16, 8, 3);
++  TEST_VSHR_N(q, uint, u, 32, 4, 5);
++  TEST_VSHR_N(q, uint, u, 64, 2, 33);
++
++#define CMT ""
++  CHECK(TEST_MSG, int, 8, 8, PRIx8, expected, CMT);
++  CHECK(TEST_MSG, int, 16, 4, PRIx16, expected, CMT);
++  CHECK(TEST_MSG, int, 32, 2, PRIx32, expected, CMT);
++  CHECK(TEST_MSG, int, 64, 1, PRIx64, expected, CMT);
++  CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected, CMT);
++  CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected, CMT);
++  CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected, CMT);
++  CHECK(TEST_MSG, uint, 64, 1, PRIx64, expected, CMT);
++  CHECK(TEST_MSG, int, 8, 16, PRIx8, expected, CMT);
++  CHECK(TEST_MSG, int, 16, 8, PRIx16, expected, CMT);
++  CHECK(TEST_MSG, int, 32, 4, PRIx32, expected, CMT);
++  CHECK(TEST_MSG, int, 64, 2, PRIx64, expected, CMT);
++  CHECK(TEST_MSG, uint, 8, 16, PRIx8, expected, CMT);
++  CHECK(TEST_MSG, uint, 16, 8, PRIx16, expected, CMT);
++  CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected, CMT);
++  CHECK(TEST_MSG, uint, 64, 2, PRIx64, expected, CMT);
++}
++
++int main (void)
++{
++  exec_vshr_n ();
++  return 0;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vshrn_n.c
+@@ -0,0 +1,70 @@
++#include <arm_neon.h>
++#include "arm-neon-ref.h"
++#include "compute-ref-data.h"
++
++/* Expected results.  */
++VECT_VAR_DECL(expected,int,8,8) [] = { 0xf8, 0xf8, 0xf9, 0xf9,
++				       0xfa, 0xfa, 0xfb, 0xfb };
++VECT_VAR_DECL(expected,int,16,4) [] = { 0xfff8, 0xfff8, 0xfff9, 0xfff9 };
++VECT_VAR_DECL(expected,int,32,2) [] = { 0xfffffffc, 0xfffffffc };
++VECT_VAR_DECL(expected,uint,8,8) [] = { 0xfc, 0xfc, 0xfc, 0xfc,
++					0xfd, 0xfd, 0xfd, 0xfd };
++VECT_VAR_DECL(expected,uint,16,4) [] = { 0xfffe, 0xfffe, 0xfffe, 0xfffe };
++VECT_VAR_DECL(expected,uint,32,2) [] = { 0xfffffffe, 0xfffffffe };
++
++#define TEST_MSG "VSHRN_N"
++void exec_vshrn_n (void)
++{
++  /* Basic test: y=vshrn_n(x,v), then store the result.  */
++#define TEST_VSHRN_N(T1, T2, W, W2, N, V)				\
++  VECT_VAR(vector_res, T1, W2, N) =					\
++    vshrn_n_##T2##W(VECT_VAR(vector, T1, W, N),				\
++		    V);							\
++  vst1_##T2##W2(VECT_VAR(result, T1, W2, N), VECT_VAR(vector_res, T1, W2, N))
++
++  /* vector is twice as large as vector_res.  */
++  DECL_VARIABLE(vector, int, 16, 8);
++  DECL_VARIABLE(vector, int, 32, 4);
++  DECL_VARIABLE(vector, int, 64, 2);
++  DECL_VARIABLE(vector, uint, 16, 8);
++  DECL_VARIABLE(vector, uint, 32, 4);
++  DECL_VARIABLE(vector, uint, 64, 2);
++
++  DECL_VARIABLE(vector_res, int, 8, 8);
++  DECL_VARIABLE(vector_res, int, 16, 4);
++  DECL_VARIABLE(vector_res, int, 32, 2);
++  DECL_VARIABLE(vector_res, uint, 8, 8);
++  DECL_VARIABLE(vector_res, uint, 16, 4);
++  DECL_VARIABLE(vector_res, uint, 32, 2);
++
++  clean_results ();
++
++  VLOAD(vector, buffer, q, int, s, 16, 8);
++  VLOAD(vector, buffer, q, int, s, 32, 4);
++  VLOAD(vector, buffer, q, int, s, 64, 2);
++  VLOAD(vector, buffer, q, uint, u, 16, 8);
++  VLOAD(vector, buffer, q, uint, u, 32, 4);
++  VLOAD(vector, buffer, q, uint, u, 64, 2);
++
++  /* Choose shift amount arbitrarily.  */
++  TEST_VSHRN_N(int, s, 16, 8, 8, 1);
++  TEST_VSHRN_N(int, s, 32, 16, 4, 1);
++  TEST_VSHRN_N(int, s, 64, 32, 2, 2);
++  TEST_VSHRN_N(uint, u, 16, 8, 8, 2);
++  TEST_VSHRN_N(uint, u, 32, 16, 4, 3);
++  TEST_VSHRN_N(uint, u, 64, 32, 2, 3);
++
++#define CMT ""
++  CHECK(TEST_MSG, int, 8, 8, PRIx8, expected, CMT);
++  CHECK(TEST_MSG, int, 16, 4, PRIx16, expected, CMT);
++  CHECK(TEST_MSG, int, 32, 2, PRIx32, expected, CMT);
++  CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected, CMT);
++  CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected, CMT);
++  CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected, CMT);
++}
++
++int main (void)
++{
++  exec_vshrn_n ();
++  return 0;
++}
+--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vshuffle.inc
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vshuffle.inc
+@@ -120,15 +120,40 @@ void FNNAME (INSN_NAME) (void)
+   TEST_EXTRA_CHUNK(poly, 16, 8, 1);		\
+   TEST_EXTRA_CHUNK(float, 32, 4, 1)
+ 
++  /* vshuffle support all vector types except [u]int64x1 and
++     [u]int64x2.  */
++#define CHECK_RESULTS_VSHUFFLE(test_name,EXPECTED,comment)		\
++  {									\
++    CHECK(test_name, int, 8, 8, PRIx8, EXPECTED, comment);		\
++    CHECK(test_name, int, 16, 4, PRIx16, EXPECTED, comment);		\
++    CHECK(test_name, int, 32, 2, PRIx32, EXPECTED, comment);		\
++    CHECK(test_name, uint, 8, 8, PRIx8, EXPECTED, comment);		\
++    CHECK(test_name, uint, 16, 4, PRIx16, EXPECTED, comment);		\
++    CHECK(test_name, uint, 32, 2, PRIx32, EXPECTED, comment);		\
++    CHECK(test_name, poly, 8, 8, PRIx8, EXPECTED, comment);		\
++    CHECK(test_name, poly, 16, 4, PRIx16, EXPECTED, comment);		\
++    CHECK_FP(test_name, float, 32, 2, PRIx32, EXPECTED, comment);	\
++									\
++    CHECK(test_name, int, 8, 16, PRIx8, EXPECTED, comment);		\
++    CHECK(test_name, int, 16, 8, PRIx16, EXPECTED, comment);		\
++    CHECK(test_name, int, 32, 4, PRIx32, EXPECTED, comment);		\
++    CHECK(test_name, uint, 8, 16, PRIx8, EXPECTED, comment);		\
++    CHECK(test_name, uint, 16, 8, PRIx16, EXPECTED, comment);		\
++    CHECK(test_name, uint, 32, 4, PRIx32, EXPECTED, comment);		\
++    CHECK(test_name, poly, 8, 16, PRIx8, EXPECTED, comment);		\
++    CHECK(test_name, poly, 16, 8, PRIx16, EXPECTED, comment);		\
++    CHECK_FP(test_name, float, 32, 4, PRIx32, EXPECTED, comment);	\
++  }									\
++
+   clean_results ();
+ 
+   /* Execute the tests.  */
+   TEST_ALL_VSHUFFLE(INSN_NAME);
+ 
+-  CHECK_RESULTS_NAMED (TEST_MSG, expected0, "(chunk 0)");
++  CHECK_RESULTS_VSHUFFLE (TEST_MSG, expected0, "(chunk 0)");
+ 
+   TEST_ALL_EXTRA_CHUNKS();
+-  CHECK_RESULTS_NAMED (TEST_MSG, expected1, "(chunk 1)");
++  CHECK_RESULTS_VSHUFFLE (TEST_MSG, expected1, "(chunk 1)");
+ }
+ 
+ int main (void)
+--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vsli_n.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vsli_n.c
+@@ -23,7 +23,6 @@ VECT_VAR_DECL(expected,uint,64,1) [] = { 0x10 };
+ VECT_VAR_DECL(expected,poly,8,8) [] = { 0x50, 0x51, 0x52, 0x53,
+ 					0x50, 0x51, 0x52, 0x53 };
+ VECT_VAR_DECL(expected,poly,16,4) [] = { 0x7bf0, 0x7bf1, 0x7bf2, 0x7bf3 };
+-VECT_VAR_DECL(expected,hfloat,32,2) [] = { 0x33333333, 0x33333333 };
+ VECT_VAR_DECL(expected,int,8,16) [] = { 0xd0, 0xd1, 0xd2, 0xd3,
+ 					0xd4, 0xd5, 0xd6, 0xd7,
+ 					0xd8, 0xd9, 0xda, 0xdb,
+@@ -48,8 +47,6 @@ VECT_VAR_DECL(expected,poly,8,16) [] = { 0x60, 0x61, 0x62, 0x63,
+ 					 0x64, 0x65, 0x66, 0x67 };
+ VECT_VAR_DECL(expected,poly,16,8) [] = { 0x3ff0, 0x3ff1, 0x3ff2, 0x3ff3,
+ 					 0x3ff4, 0x3ff5, 0x3ff6, 0x3ff7 };
+-VECT_VAR_DECL(expected,hfloat,32,4) [] = { 0x33333333, 0x33333333,
+-					   0x33333333, 0x33333333 };
+ 
+ /* Expected results with max shift amount.  */
+ VECT_VAR_DECL(expected_max_shift,int,8,8) [] = { 0x70, 0x71, 0x72, 0x73,
+@@ -68,7 +65,6 @@ VECT_VAR_DECL(expected_max_shift,poly,8,8) [] = { 0x70, 0x71, 0x72, 0x73,
+ 						  0x74, 0x75, 0x76, 0x77 };
+ VECT_VAR_DECL(expected_max_shift,poly,16,4) [] = { 0x7ff0, 0x7ff1,
+ 						   0x7ff2, 0x7ff3 };
+-VECT_VAR_DECL(expected_max_shift,hfloat,32,2) [] = { 0x33333333, 0x33333333 };
+ VECT_VAR_DECL(expected_max_shift,int,8,16) [] = { 0x70, 0x71, 0x72, 0x73,
+ 						  0x74, 0x75, 0x76, 0x77,
+ 						  0x78, 0x79, 0x7a, 0x7b,
+@@ -95,8 +91,6 @@ VECT_VAR_DECL(expected_max_shift,poly,8,16) [] = { 0x70, 0x71, 0x72, 0x73,
+ 						   0x7c, 0x7d, 0x7e, 0x7f };
+ VECT_VAR_DECL(expected_max_shift,poly,16,8) [] = { 0xfff0, 0xfff1, 0xfff2, 0xfff3,
+ 						   0xfff4, 0xfff5, 0xfff6, 0xfff7 };
+-VECT_VAR_DECL(expected_max_shift,hfloat,32,4) [] = { 0x33333333, 0x33333333,
+-						     0x33333333, 0x33333333 };
+ 
+ #include "vsXi_n.inc"
+ 
+@@ -158,5 +152,23 @@ void vsli_extra(void)
+   TEST_VSXI_N(INSN_NAME, q, poly, p, 8, 16, 7);
+   TEST_VSXI_N(INSN_NAME, q, poly, p, 16, 8, 15);
+ 
+-  CHECK_RESULTS_NAMED (TEST_MSG, expected_max_shift, "(max shift amount)");
++#define COMMENT "(max shift amount)"
++  CHECK(TEST_MSG, int, 8, 8, PRIx8, expected_max_shift, COMMENT);
++  CHECK(TEST_MSG, int, 16, 4, PRIx16, expected_max_shift, COMMENT);
++  CHECK(TEST_MSG, int, 32, 2, PRIx32, expected_max_shift, COMMENT);
++  CHECK(TEST_MSG, int, 64, 1, PRIx64, expected_max_shift, COMMENT);
++  CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected_max_shift, COMMENT);
++  CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected_max_shift, COMMENT);
++  CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected_max_shift, COMMENT);
++  CHECK(TEST_MSG, uint, 64, 1, PRIx64, expected_max_shift, COMMENT);
++  CHECK(TEST_MSG, poly, 8, 8, PRIx8, expected_max_shift, COMMENT);
++  CHECK(TEST_MSG, poly, 16, 4, PRIx16, expected_max_shift, COMMENT);
++  CHECK(TEST_MSG, int, 8, 16, PRIx8, expected_max_shift, COMMENT);
++  CHECK(TEST_MSG, int, 16, 8, PRIx16, expected_max_shift, COMMENT);
++  CHECK(TEST_MSG, int, 32, 4, PRIx32, expected_max_shift, COMMENT);
++  CHECK(TEST_MSG, uint, 8, 16, PRIx8, expected_max_shift, COMMENT);
++  CHECK(TEST_MSG, uint, 16, 8, PRIx16, expected_max_shift, COMMENT);
++  CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected_max_shift, COMMENT);
++  CHECK(TEST_MSG, poly, 8, 16, PRIx8, expected_max_shift, COMMENT);
++  CHECK(TEST_MSG, poly, 16, 8, PRIx16, expected_max_shift, COMMENT);
+ }
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vsra_n.c
+@@ -0,0 +1,117 @@
++#include <arm_neon.h>
++#include "arm-neon-ref.h"
++#include "compute-ref-data.h"
++
++/* Expected results.  */
++VECT_VAR_DECL(expected,int,8,8) [] = { 0xf8, 0xf9, 0xfa, 0xfb,
++				       0xfc, 0xfd, 0xfe, 0xff };
++VECT_VAR_DECL(expected,int,16,4) [] = { 0xfff0, 0xfff1, 0xfff2, 0xfff3 };
++VECT_VAR_DECL(expected,int,32,2) [] = { 0xfffffffc, 0xfffffffd };
++VECT_VAR_DECL(expected,int,64,1) [] = { 0xfffffffffffffff0 };
++VECT_VAR_DECL(expected,uint,8,8) [] = { 0x5, 0x6, 0x7, 0x8,
++					0x9, 0xa, 0xb, 0xc };
++VECT_VAR_DECL(expected,uint,16,4) [] = { 0xfffc, 0xfffd, 0xfffe, 0xffff };
++VECT_VAR_DECL(expected,uint,32,2) [] = { 0xfffffff3, 0xfffffff4 };
++VECT_VAR_DECL(expected,uint,64,1) [] = { 0xfffffffffffffff0 };
++VECT_VAR_DECL(expected,int,8,16) [] = { 0xf8, 0xf9, 0xfa, 0xfb,
++					0xfc, 0xfd, 0xfe, 0xff,
++					0x0, 0x1, 0x2, 0x3,
++					0x4, 0x5, 0x6, 0x7 };
++VECT_VAR_DECL(expected,int,16,8) [] = { 0xfff0, 0xfff1, 0xfff2, 0xfff3,
++					0xfff4, 0xfff5, 0xfff6, 0xfff7 };
++VECT_VAR_DECL(expected,int,32,4) [] = { 0xfffffffc, 0xfffffffd,
++					0xfffffffe, 0xffffffff };
++VECT_VAR_DECL(expected,int,64,2) [] = { 0xfffffffffffffff0,
++					0xfffffffffffffff1 };
++VECT_VAR_DECL(expected,uint,8,16) [] = { 0x5, 0x6, 0x7, 0x8,
++					 0x9, 0xa, 0xb, 0xc,
++					 0xd, 0xe, 0xf, 0x10,
++					 0x11, 0x12, 0x13, 0x14 };
++VECT_VAR_DECL(expected,uint,16,8) [] = { 0xfffc, 0xfffd, 0xfffe, 0xffff,
++					 0x0, 0x1, 0x2, 0x3 };
++VECT_VAR_DECL(expected,uint,32,4) [] = { 0xfffffff3, 0xfffffff4,
++					 0xfffffff5, 0xfffffff6 };
++VECT_VAR_DECL(expected,uint,64,2) [] = { 0xfffffffffffffff0,
++					 0xfffffffffffffff1 };
++
++#define TEST_MSG "VSRA_N"
++void exec_vsra_n (void)
++{
++  /* Basic test: y=vsra_n(x,v), then store the result.  */
++#define TEST_VSRA_N(Q, T1, T2, W, N, V)					\
++  VECT_VAR(vector_res, T1, W, N) =					\
++    vsra##Q##_n_##T2##W(VECT_VAR(vector, T1, W, N),			\
++			VECT_VAR(vector2, T1, W, N),			\
++			V);						\
++  vst1##Q##_##T2##W(VECT_VAR(result, T1, W, N), VECT_VAR(vector_res, T1, W, N))
++
++  DECL_VARIABLE_ALL_VARIANTS(vector);
++  DECL_VARIABLE_ALL_VARIANTS(vector2);
++  DECL_VARIABLE_ALL_VARIANTS(vector_res);
++
++  clean_results ();
++
++  /* Initialize input "vector" from "buffer".  */
++  TEST_MACRO_ALL_VARIANTS_2_5(VLOAD, vector, buffer);
++
++  /* Choose arbitrary initialization values.  */
++  VDUP(vector2, , int, s, 8, 8, 0x11);
++  VDUP(vector2, , int, s, 16, 4, 0x22);
++  VDUP(vector2, , int, s, 32, 2, 0x33);
++  VDUP(vector2, , int, s, 64, 1, 0x44);
++  VDUP(vector2, , uint, u, 8, 8, 0x55);
++  VDUP(vector2, , uint, u, 16, 4, 0x66);
++  VDUP(vector2, , uint, u, 32, 2, 0x77);
++  VDUP(vector2, , uint, u, 64, 1, 0x88);
++
++  VDUP(vector2, q, int, s, 8, 16, 0x11);
++  VDUP(vector2, q, int, s, 16, 8, 0x22);
++  VDUP(vector2, q, int, s, 32, 4, 0x33);
++  VDUP(vector2, q, int, s, 64, 2, 0x44);
++  VDUP(vector2, q, uint, u, 8, 16, 0x55);
++  VDUP(vector2, q, uint, u, 16, 8, 0x66);
++  VDUP(vector2, q, uint, u, 32, 4, 0x77);
++  VDUP(vector2, q, uint, u, 64, 2, 0x88);
++
++  /* Choose shift amount arbitrarily.  */
++  TEST_VSRA_N(, int, s, 8, 8, 1);
++  TEST_VSRA_N(, int, s, 16, 4, 12);
++  TEST_VSRA_N(, int, s, 32, 2, 2);
++  TEST_VSRA_N(, int, s, 64, 1, 32);
++  TEST_VSRA_N(, uint, u, 8, 8, 2);
++  TEST_VSRA_N(, uint, u, 16, 4, 3);
++  TEST_VSRA_N(, uint, u, 32, 2, 5);
++  TEST_VSRA_N(, uint, u, 64, 1, 33);
++
++  TEST_VSRA_N(q, int, s, 8, 16, 1);
++  TEST_VSRA_N(q, int, s, 16, 8, 12);
++  TEST_VSRA_N(q, int, s, 32, 4, 2);
++  TEST_VSRA_N(q, int, s, 64, 2, 32);
++  TEST_VSRA_N(q, uint, u, 8, 16, 2);
++  TEST_VSRA_N(q, uint, u, 16, 8, 3);
++  TEST_VSRA_N(q, uint, u, 32, 4, 5);
++  TEST_VSRA_N(q, uint, u, 64, 2, 33);
++
++  CHECK(TEST_MSG, int, 8, 8, PRIx8, expected, "");
++  CHECK(TEST_MSG, int, 16, 4, PRIx16, expected, "");
++  CHECK(TEST_MSG, int, 32, 2, PRIx32, expected, "");
++  CHECK(TEST_MSG, int, 64, 1, PRIx64, expected, "");
++  CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected, "");
++  CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected, "");
++  CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected, "");
++  CHECK(TEST_MSG, uint, 64, 1, PRIx64, expected, "");
++  CHECK(TEST_MSG, int, 8, 16, PRIx8, expected, "");
++  CHECK(TEST_MSG, int, 16, 8, PRIx16, expected, "");
++  CHECK(TEST_MSG, int, 32, 4, PRIx32, expected, "");
++  CHECK(TEST_MSG, int, 64, 2, PRIx64, expected, "");
++  CHECK(TEST_MSG, uint, 8, 16, PRIx8, expected, "");
++  CHECK(TEST_MSG, uint, 16, 8, PRIx16, expected, "");
++  CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected, "");
++  CHECK(TEST_MSG, uint, 64, 2, PRIx64, expected, "");
++}
++
++int main (void)
++{
++  exec_vsra_n ();
++  return 0;
++}
+--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vsri_n.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vsri_n.c
+@@ -23,7 +23,6 @@ VECT_VAR_DECL(expected,uint,64,1) [] = { 0xe000000000000000 };
+ VECT_VAR_DECL(expected,poly,8,8) [] = { 0xc5, 0xc5, 0xc5, 0xc5,
+ 					0xc5, 0xc5, 0xc5, 0xc5 };
+ VECT_VAR_DECL(expected,poly,16,4) [] = { 0xffc0, 0xffc0, 0xffc0, 0xffc0 };
+-VECT_VAR_DECL(expected,hfloat,32,2) [] = { 0x33333333, 0x33333333 };
+ VECT_VAR_DECL(expected,int,8,16) [] = { 0xf7, 0xf7, 0xf7, 0xf7,
+ 					0xf7, 0xf7, 0xf7, 0xf7,
+ 					0xff, 0xff, 0xff, 0xff,
+@@ -50,8 +49,6 @@ VECT_VAR_DECL(expected,poly,8,16) [] = { 0xe1, 0xe1, 0xe1, 0xe1,
+ 					 0xe1, 0xe1, 0xe1, 0xe1 };
+ VECT_VAR_DECL(expected,poly,16,8) [] = { 0xfff0, 0xfff0, 0xfff0, 0xfff0,
+ 					 0xfff0, 0xfff0, 0xfff0, 0xfff0 };
+-VECT_VAR_DECL(expected,hfloat,32,4) [] = { 0x33333333, 0x33333333,
+-					   0x33333333, 0x33333333 };
+ 
+ /* Expected results with max shift amount.  */
+ VECT_VAR_DECL(expected_max_shift,int,8,8) [] = { 0xf0, 0xf1, 0xf2, 0xf3,
+@@ -70,7 +67,6 @@ VECT_VAR_DECL(expected_max_shift,poly,8,8) [] = { 0xf0, 0xf1, 0xf2, 0xf3,
+ 						  0xf4, 0xf5, 0xf6, 0xf7 };
+ VECT_VAR_DECL(expected_max_shift,poly,16,4) [] = { 0xfff0, 0xfff1,
+ 						   0xfff2, 0xfff3 };
+-VECT_VAR_DECL(expected_max_shift,hfloat,32,2) [] = { 0x33333333, 0x33333333 };
+ VECT_VAR_DECL(expected_max_shift,int,8,16) [] = { 0xf0, 0xf1, 0xf2, 0xf3,
+ 						  0xf4, 0xf5, 0xf6, 0xf7,
+ 						  0xf8, 0xf9, 0xfa, 0xfb,
+@@ -97,8 +93,6 @@ VECT_VAR_DECL(expected_max_shift,poly,8,16) [] = { 0xf0, 0xf1, 0xf2, 0xf3,
+ 						   0xfc, 0xfd, 0xfe, 0xff };
+ VECT_VAR_DECL(expected_max_shift,poly,16,8) [] = { 0xfff0, 0xfff1, 0xfff2, 0xfff3,
+ 						   0xfff4, 0xfff5, 0xfff6, 0xfff7 };
+-VECT_VAR_DECL(expected_max_shift,hfloat,32,4) [] = { 0x33333333, 0x33333333,
+-						     0x33333333, 0x33333333 };
+ 
+ #include "vsXi_n.inc"
+ 
+@@ -160,5 +154,23 @@ void vsri_extra(void)
+   TEST_VSXI_N(INSN_NAME, q, poly, p, 8, 16, 8);
+   TEST_VSXI_N(INSN_NAME, q, poly, p, 16, 8, 16);
+ 
+-  CHECK_RESULTS_NAMED (TEST_MSG, expected_max_shift, "(max shift amount)");
++#define COMMENT "(max shift amount)"
++  CHECK(TEST_MSG, int, 8, 8, PRIx8, expected_max_shift, COMMENT);
++  CHECK(TEST_MSG, int, 16, 4, PRIx16, expected_max_shift, COMMENT);
++  CHECK(TEST_MSG, int, 32, 2, PRIx32, expected_max_shift, COMMENT);
++  CHECK(TEST_MSG, int, 64, 1, PRIx64, expected_max_shift, COMMENT);
++  CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected_max_shift, COMMENT);
++  CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected_max_shift, COMMENT);
++  CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected_max_shift, COMMENT);
++  CHECK(TEST_MSG, uint, 64, 1, PRIx64, expected_max_shift, COMMENT);
++  CHECK(TEST_MSG, poly, 8, 8, PRIx8, expected_max_shift, COMMENT);
++  CHECK(TEST_MSG, poly, 16, 4, PRIx16, expected_max_shift, COMMENT);
++  CHECK(TEST_MSG, int, 8, 16, PRIx8, expected_max_shift, COMMENT);
++  CHECK(TEST_MSG, int, 16, 8, PRIx16, expected_max_shift, COMMENT);
++  CHECK(TEST_MSG, int, 32, 4, PRIx32, expected_max_shift, COMMENT);
++  CHECK(TEST_MSG, uint, 8, 16, PRIx8, expected_max_shift, COMMENT);
++  CHECK(TEST_MSG, uint, 16, 8, PRIx16, expected_max_shift, COMMENT);
++  CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected_max_shift, COMMENT);
++  CHECK(TEST_MSG, poly, 8, 16, PRIx8, expected_max_shift, COMMENT);
++  CHECK(TEST_MSG, poly, 16, 8, PRIx16, expected_max_shift, COMMENT);
+ }
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vst1_lane.c
+@@ -0,0 +1,102 @@
++#include <arm_neon.h>
++#include "arm-neon-ref.h"
++#include "compute-ref-data.h"
++
++/* Expected results.  */
++VECT_VAR_DECL(expected,int,8,8) [] = { 0xf7, 0x33, 0x33, 0x33,
++				       0x33, 0x33, 0x33, 0x33 };
++VECT_VAR_DECL(expected,int,16,4) [] = { 0xfff3, 0x3333, 0x3333, 0x3333 };
++VECT_VAR_DECL(expected,int,32,2) [] = { 0xfffffff1, 0x33333333 };
++VECT_VAR_DECL(expected,int,64,1) [] = { 0xfffffffffffffff0 };
++VECT_VAR_DECL(expected,uint,8,8) [] = { 0xf6, 0x33, 0x33, 0x33,
++					0x33, 0x33, 0x33, 0x33 };
++VECT_VAR_DECL(expected,uint,16,4) [] = { 0xfff2, 0x3333, 0x3333, 0x3333 };
++VECT_VAR_DECL(expected,uint,32,2) [] = { 0xfffffff0, 0x33333333 };
++VECT_VAR_DECL(expected,uint,64,1) [] = { 0xfffffffffffffff0 };
++VECT_VAR_DECL(expected,poly,8,8) [] = { 0xf6, 0x33, 0x33, 0x33,
++					0x33, 0x33, 0x33, 0x33 };
++VECT_VAR_DECL(expected,poly,16,4) [] = { 0xfff2, 0x3333, 0x3333, 0x3333 };
++VECT_VAR_DECL(expected,hfloat,16,4) [] = { 0xcb80, 0x3333, 0x3333, 0x3333 };
++VECT_VAR_DECL(expected,hfloat,32,2) [] = { 0xc1700000, 0x33333333 };
++VECT_VAR_DECL(expected,int,8,16) [] = { 0xff, 0x33, 0x33, 0x33,
++					0x33, 0x33, 0x33, 0x33,
++					0x33, 0x33, 0x33, 0x33,
++					0x33, 0x33, 0x33, 0x33 };
++VECT_VAR_DECL(expected,int,16,8) [] = { 0xfff5, 0x3333, 0x3333, 0x3333,
++					0x3333, 0x3333, 0x3333, 0x3333 };
++VECT_VAR_DECL(expected,int,32,4) [] = { 0xfffffff1, 0x33333333,
++					0x33333333, 0x33333333 };
++VECT_VAR_DECL(expected,int,64,2) [] = { 0xfffffffffffffff1, 0x3333333333333333 };
++VECT_VAR_DECL(expected,uint,8,16) [] = { 0xfa, 0x33, 0x33, 0x33,
++					 0x33, 0x33, 0x33, 0x33,
++					 0x33, 0x33, 0x33, 0x33,
++					 0x33, 0x33, 0x33, 0x33 };
++VECT_VAR_DECL(expected,uint,16,8) [] = { 0xfff4, 0x3333, 0x3333, 0x3333,
++					 0x3333, 0x3333, 0x3333, 0x3333 };
++VECT_VAR_DECL(expected,uint,32,4) [] = { 0xfffffff3, 0x33333333,
++					 0x33333333, 0x33333333 };
++VECT_VAR_DECL(expected,uint,64,2) [] = { 0xfffffffffffffff0,
++					 0x3333333333333333 };
++VECT_VAR_DECL(expected,poly,8,16) [] = { 0xfa, 0x33, 0x33, 0x33,
++					 0x33, 0x33, 0x33, 0x33,
++					 0x33, 0x33, 0x33, 0x33,
++					 0x33, 0x33, 0x33, 0x33 };
++VECT_VAR_DECL(expected,poly,16,8) [] = { 0xfff4, 0x3333, 0x3333, 0x3333,
++					 0x3333, 0x3333, 0x3333, 0x3333 };
++VECT_VAR_DECL(expected,hfloat,16,8) [] = { 0xc900, 0x3333, 0x3333, 0x3333,
++					   0x3333, 0x3333, 0x3333, 0x3333 };
++VECT_VAR_DECL(expected,hfloat,32,4) [] = { 0xc1700000, 0x33333333,
++					   0x33333333, 0x33333333 };
++
++#define TEST_MSG "VST1_LANE/VST1_LANEQ"
++void exec_vst1_lane (void)
++{
++#define TEST_VST1_LANE(Q, T1, T2, W, N, L)		\
++  VECT_VAR(vector, T1, W, N) =				\
++    vld1##Q##_##T2##W(VECT_VAR(buffer, T1, W, N));	\
++  vst1##Q##_lane_##T2##W(VECT_VAR(result, T1, W, N),	\
++			 VECT_VAR(vector, T1, W, N), L)
++
++  DECL_VARIABLE_ALL_VARIANTS(vector);
++
++  clean_results ();
++
++  /* Choose lane arbitrarily.  */
++  TEST_VST1_LANE(, int, s, 8, 8, 7);
++  TEST_VST1_LANE(, int, s, 16, 4, 3);
++  TEST_VST1_LANE(, int, s, 32, 2, 1);
++  TEST_VST1_LANE(, int, s, 64, 1, 0);
++  TEST_VST1_LANE(, uint, u, 8, 8, 6);
++  TEST_VST1_LANE(, uint, u, 16, 4, 2);
++  TEST_VST1_LANE(, uint, u, 32, 2, 0);
++  TEST_VST1_LANE(, uint, u, 64, 1, 0);
++  TEST_VST1_LANE(, poly, p, 8, 8, 6);
++  TEST_VST1_LANE(, poly, p, 16, 4, 2);
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++  TEST_VST1_LANE(, float, f, 16, 4, 1);
++#endif
++  TEST_VST1_LANE(, float, f, 32, 2, 1);
++
++  TEST_VST1_LANE(q, int, s, 8, 16, 15);
++  TEST_VST1_LANE(q, int, s, 16, 8, 5);
++  TEST_VST1_LANE(q, int, s, 32, 4, 1);
++  TEST_VST1_LANE(q, int, s, 64, 2, 1);
++  TEST_VST1_LANE(q, uint, u, 8, 16, 10);
++  TEST_VST1_LANE(q, uint, u, 16, 8, 4);
++  TEST_VST1_LANE(q, uint, u, 32, 4, 3);
++  TEST_VST1_LANE(q, uint, u, 64, 2, 0);
++  TEST_VST1_LANE(q, poly, p, 8, 16, 10);
++  TEST_VST1_LANE(q, poly, p, 16, 8, 4);
++#if defined (__ARM_FP16_FORMAT_IEEE) || defined (__ARM_FP16_FORMAT_ALTERNATIVE)
++  TEST_VST1_LANE(q, float, f, 16, 8, 6);
++#endif
++  TEST_VST1_LANE(q, float, f, 32, 4, 1);
++
++  CHECK_RESULTS(TEST_MSG, "");
++}
++
++int main (void)
++{
++  exec_vst1_lane ();
++  return 0;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vst2_lane_f16_indices_1.c
+@@ -0,0 +1,15 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++
++void
++f_vst2_lane_f16 (float16_t * p, float16x4x2_t v)
++{
++  /* { dg-error "lane 4 out of range 0 - 3" "" { xfail arm*-*-* } 0 } */
++  vst2_lane_f16 (p, v, 4);
++  /* { dg-error "lane -1 out of range 0 - 3" "" { xfail arm*-*-* } 0 } */
++  vst2_lane_f16 (p, v, -1);
++  return;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vst2_lane_f32_indices_1.c
+@@ -0,0 +1,15 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++
++void
++f_vst2_lane_f32 (float32_t * p, float32x2x2_t v)
++{
++  /* { dg-error "lane 2 out of range 0 - 1" "" { xfail arm*-*-* } 0 } */
++  vst2_lane_f32 (p, v, 2);
++  /* { dg-error "lane -1 out of range 0 - 1" "" { xfail arm*-*-* } 0 } */
++  vst2_lane_f32 (p, v, -1);
++  return;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vst2_lane_f64_indices_1.c
+@@ -0,0 +1,16 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++/* { dg-skip-if "" { arm*-*-* } } */
++
++void
++f_vst2_lane_f64 (float64_t * p, float64x1x2_t v)
++{
++  /* { dg-error "lane 1 out of range 0 - 0" "" { xfail arm*-*-* } 0 } */
++  vst2_lane_f64 (p, v, 1);
++  /* { dg-error "lane -1 out of range 0 - 0" "" { xfail arm*-*-* } 0 } */
++  vst2_lane_f64 (p, v, -1);
++  return;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vst2_lane_p8_indices_1.c
+@@ -0,0 +1,15 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++
++void
++f_vst2_lane_p8 (poly8_t * p, poly8x8x2_t v)
++{
++  /* { dg-error "lane 8 out of range 0 - 7" "" { xfail arm*-*-* } 0 } */
++  vst2_lane_p8 (p, v, 8);
++  /* { dg-error "lane -1 out of range 0 - 7" "" { xfail arm*-*-* } 0 } */
++  vst2_lane_p8 (p, v, -1);
++  return;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vst2_lane_s16_indices_1.c
+@@ -0,0 +1,15 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++
++void
++f_vst2_lane_s16 (int16_t * p, int16x4x2_t v)
++{
++  /* { dg-error "lane 4 out of range 0 - 3" "" { xfail arm*-*-* } 0 } */
++  vst2_lane_s16 (p, v, 4);
++  /* { dg-error "lane -1 out of range 0 - 3" "" { xfail arm*-*-* } 0 } */
++  vst2_lane_s16 (p, v, -1);
++  return;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vst2_lane_s32_indices_1.c
+@@ -0,0 +1,15 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++
++void
++f_vst2_lane_s32 (int32_t * p, int32x2x2_t v)
++{
++  /* { dg-error "lane 2 out of range 0 - 1" "" { xfail arm*-*-* } 0 } */
++  vst2_lane_s32 (p, v, 2);
++  /* { dg-error "lane -1 out of range 0 - 1" "" { xfail arm*-*-* } 0 } */
++  vst2_lane_s32 (p, v, -1);
++  return;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vst2_lane_s64_indices_1.c
+@@ -0,0 +1,16 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++/* { dg-skip-if "" { arm*-*-* } } */
++
++void
++f_vst2_lane_s64 (int64_t * p, int64x1x2_t v)
++{
++  /* { dg-error "lane 1 out of range 0 - 0" "" { xfail arm*-*-* } 0 } */
++  vst2_lane_s64 (p, v, 1);
++  /* { dg-error "lane -1 out of range 0 - 0" "" { xfail arm*-*-* } 0 } */
++  vst2_lane_s64 (p, v, -1);
++  return;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vst2_lane_s8_indices_1.c
+@@ -0,0 +1,15 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++
++void
++f_vst2_lane_s8 (int8_t * p, int8x8x2_t v)
++{
++  /* { dg-error "lane 8 out of range 0 - 7" "" { xfail arm*-*-* } 0 } */
++  vst2_lane_s8 (p, v, 8);
++  /* { dg-error "lane -1 out of range 0 - 7" "" { xfail arm*-*-* } 0 } */
++  vst2_lane_s8 (p, v, -1);
++  return;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vst2_lane_u16_indices_1.c
+@@ -0,0 +1,15 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++
++void
++f_vst2_lane_u16 (uint16_t * p, uint16x4x2_t v)
++{
++  /* { dg-error "lane 4 out of range 0 - 3" "" { xfail arm*-*-* } 0 } */
++  vst2_lane_u16 (p, v, 4);
++  /* { dg-error "lane -1 out of range 0 - 3" "" { xfail arm*-*-* } 0 } */
++  vst2_lane_u16 (p, v, -1);
++  return;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vst2_lane_u32_indices_1.c
+@@ -0,0 +1,15 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++
++void
++f_vst2_lane_u32 (uint32_t * p, uint32x2x2_t v)
++{
++  /* { dg-error "lane 2 out of range 0 - 1" "" { xfail arm*-*-* } 0 } */
++  vst2_lane_u32 (p, v, 2);
++  /* { dg-error "lane -1 out of range 0 - 1" "" { xfail arm*-*-* } 0 } */
++  vst2_lane_u32 (p, v, -1);
++  return;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vst2_lane_u64_indices_1.c
+@@ -0,0 +1,16 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++/* { dg-skip-if "" { arm*-*-* } } */
++
++void
++f_vst2_lane_u64 (uint64_t * p, uint64x1x2_t v)
++{
++  /* { dg-error "lane 1 out of range 0 - 0" "" { xfail arm*-*-* } 0 } */
++  vst2_lane_u64 (p, v, 1);
++  /* { dg-error "lane -1 out of range 0 - 0" "" { xfail arm*-*-* } 0 } */
++  vst2_lane_u64 (p, v, -1);
++  return;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vst2_lane_u8_indices_1.c
+@@ -0,0 +1,15 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++
++void
++f_vst2_lane_u8 (uint8_t * p, uint8x8x2_t v)
++{
++  /* { dg-error "lane 8 out of range 0 - 7" "" { xfail arm*-*-* } 0 } */
++  vst2_lane_u8 (p, v, 8);
++  /* { dg-error "lane -1 out of range 0 - 7" "" { xfail arm*-*-* } 0 } */
++  vst2_lane_u8 (p, v, -1);
++  return;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vst2q_lane_f16_indices_1.c
+@@ -0,0 +1,15 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++
++void
++f_vst2q_lane_f16 (float16_t * p, float16x8x2_t v)
++{
++  /* { dg-error "lane 8 out of range 0 - 7" "" { xfail arm*-*-* } 0 } */
++  vst2q_lane_f16 (p, v, 8);
++  /* { dg-error "lane -1 out of range 0 - 7" "" { xfail arm*-*-* } 0 } */
++  vst2q_lane_f16 (p, v, -1);
++  return;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vst2q_lane_f32_indices_1.c
+@@ -0,0 +1,15 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++
++void
++f_vst2q_lane_f32 (float32_t * p, float32x4x2_t v)
++{
++  /* { dg-error "lane 4 out of range 0 - 3" "" { xfail arm*-*-* } 0 } */
++  vst2q_lane_f32 (p, v, 4);
++  /* { dg-error "lane -1 out of range 0 - 3" "" { xfail arm*-*-* } 0 } */
++  vst2q_lane_f32 (p, v, -1);
++  return;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vst2q_lane_f64_indices_1.c
+@@ -0,0 +1,16 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++/* { dg-skip-if "" { arm*-*-* } } */
++
++void
++f_vst2q_lane_f64 (float64_t * p, float64x2x2_t v)
++{
++  /* { dg-error "lane 2 out of range 0 - 1" "" { xfail arm*-*-* } 0 } */
++  vst2q_lane_f64 (p, v, 2);
++  /* { dg-error "lane -1 out of range 0 - 1" "" { xfail arm*-*-* } 0 } */
++  vst2q_lane_f64 (p, v, -1);
++  return;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vst2q_lane_p8_indices_1.c
+@@ -0,0 +1,16 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++/* { dg-skip-if "" { arm*-*-* } } */
++
++void
++f_vst2q_lane_p8 (poly8_t * p, poly8x16x2_t v)
++{
++  /* { dg-error "lane 16 out of range 0 - 15" "" { xfail arm*-*-* } 0 } */
++  vst2q_lane_p8 (p, v, 16);
++  /* { dg-error "lane -1 out of range 0 - 15" "" { xfail arm*-*-* } 0 } */
++  vst2q_lane_p8 (p, v, -1);
++  return;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vst2q_lane_s16_indices_1.c
+@@ -0,0 +1,15 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++
++void
++f_vst2q_lane_s16 (int16_t * p, int16x8x2_t v)
++{
++  /* { dg-error "lane 8 out of range 0 - 7" "" { xfail arm*-*-* } 0 } */
++  vst2q_lane_s16 (p, v, 8);
++  /* { dg-error "lane -1 out of range 0 - 7" "" { xfail arm*-*-* } 0 } */
++  vst2q_lane_s16 (p, v, -1);
++  return;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vst2q_lane_s32_indices_1.c
+@@ -0,0 +1,15 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++
++void
++f_vst2q_lane_s32 (int32_t * p, int32x4x2_t v)
++{
++  /* { dg-error "lane 4 out of range 0 - 3" "" { xfail arm*-*-* } 0 } */
++  vst2q_lane_s32 (p, v, 4);
++  /* { dg-error "lane -1 out of range 0 - 3" "" { xfail arm*-*-* } 0 } */
++  vst2q_lane_s32 (p, v, -1);
++  return;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vst2q_lane_s64_indices_1.c
+@@ -0,0 +1,16 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++/* { dg-skip-if "" { arm*-*-* } } */
++
++void
++f_vst2q_lane_s64 (int64_t * p, int64x2x2_t v)
++{
++  /* { dg-error "lane 2 out of range 0 - 1" "" { xfail arm*-*-* } 0 } */
++  vst2q_lane_s64 (p, v, 2);
++  /* { dg-error "lane -1 out of range 0 - 1" "" { xfail arm*-*-* } 0 } */
++  vst2q_lane_s64 (p, v, -1);
++  return;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vst2q_lane_s8_indices_1.c
+@@ -0,0 +1,16 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++/* { dg-skip-if "" { arm*-*-* } } */
++
++void
++f_vst2q_lane_s8 (int8_t * p, int8x16x2_t v)
++{
++  /* { dg-error "lane 16 out of range 0 - 15" "" { xfail arm*-*-* } 0 } */
++  vst2q_lane_s8 (p, v, 16);
++  /* { dg-error "lane -1 out of range 0 - 15" "" { xfail arm*-*-* } 0 } */
++  vst2q_lane_s8 (p, v, -1);
++  return;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vst2q_lane_u16_indices_1.c
+@@ -0,0 +1,15 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++
++void
++f_vst2q_lane_u16 (uint16_t * p, uint16x8x2_t v)
++{
++  /* { dg-error "lane 8 out of range 0 - 7" "" { xfail arm*-*-* } 0 } */
++  vst2q_lane_u16 (p, v, 8);
++  /* { dg-error "lane -1 out of range 0 - 7" "" { xfail arm*-*-* } 0 } */
++  vst2q_lane_u16 (p, v, -1);
++  return;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vst2q_lane_u32_indices_1.c
+@@ -0,0 +1,15 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++
++void
++f_vst2q_lane_u32 (uint32_t * p, uint32x4x2_t v)
++{
++  /* { dg-error "lane 4 out of range 0 - 3" "" { xfail arm*-*-* } 0 } */
++  vst2q_lane_u32 (p, v, 4);
++  /* { dg-error "lane -1 out of range 0 - 3" "" { xfail arm*-*-* } 0 } */
++  vst2q_lane_u32 (p, v, -1);
++  return;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vst2q_lane_u64_indices_1.c
+@@ -0,0 +1,16 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++/* { dg-skip-if "" { arm*-*-* } } */
++
++void
++f_vst2q_lane_u64 (uint64_t * p, uint64x2x2_t v)
++{
++  /* { dg-error "lane 2 out of range 0 - 1" "" { xfail arm*-*-* } 0 } */
++  vst2q_lane_u64 (p, v, 2);
++  /* { dg-error "lane -1 out of range 0 - 1" "" { xfail arm*-*-* } 0 } */
++  vst2q_lane_u64 (p, v, -1);
++  return;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vst2q_lane_u8_indices_1.c
+@@ -0,0 +1,16 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++/* { dg-skip-if "" { arm*-*-* } } */
++
++void
++f_vst2q_lane_u8 (uint8_t * p, uint8x16x2_t v)
++{
++  /* { dg-error "lane 16 out of range 0 - 15" "" { xfail arm*-*-* } 0 } */
++  vst2q_lane_u8 (p, v, 16);
++  /* { dg-error "lane -1 out of range 0 - 15" "" { xfail arm*-*-* } 0 } */
++  vst2q_lane_u8 (p, v, -1);
++  return;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vst3_lane_f16_indices_1.c
+@@ -0,0 +1,15 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++
++void
++f_vst3_lane_f16 (float16_t * p, float16x4x3_t v)
++{
++  /* { dg-error "lane 4 out of range 0 - 3" "" { xfail arm*-*-* } 0 } */
++  vst3_lane_f16 (p, v, 4);
++  /* { dg-error "lane -1 out of range 0 - 3" "" { xfail arm*-*-* } 0 } */
++  vst3_lane_f16 (p, v, -1);
++  return;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vst3_lane_f32_indices_1.c
+@@ -0,0 +1,15 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++
++void
++f_vst3_lane_f32 (float32_t * p, float32x2x3_t v)
++{
++  /* { dg-error "lane 2 out of range 0 - 1" "" { xfail arm*-*-* } 0 } */
++  vst3_lane_f32 (p, v, 2);
++  /* { dg-error "lane -1 out of range 0 - 1" "" { xfail arm*-*-* } 0 } */
++  vst3_lane_f32 (p, v, -1);
++  return;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vst3_lane_f64_indices_1.c
+@@ -0,0 +1,16 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++/* { dg-skip-if "" { arm*-*-* } } */
++
++void
++f_vst3_lane_f64 (float64_t * p, float64x1x3_t v)
++{
++  /* { dg-error "lane 1 out of range 0 - 0" "" { xfail arm*-*-* } 0 } */
++  vst3_lane_f64 (p, v, 1);
++  /* { dg-error "lane -1 out of range 0 - 0" "" { xfail arm*-*-* } 0 } */
++  vst3_lane_f64 (p, v, -1);
++  return;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vst3_lane_p8_indices_1.c
+@@ -0,0 +1,15 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++
++void
++f_vst3_lane_p8 (poly8_t * p, poly8x8x3_t v)
++{
++  /* { dg-error "lane 8 out of range 0 - 7" "" { xfail arm*-*-* } 0 } */
++  vst3_lane_p8 (p, v, 8);
++  /* { dg-error "lane -1 out of range 0 - 7" "" { xfail arm*-*-* } 0 } */
++  vst3_lane_p8 (p, v, -1);
++  return;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vst3_lane_s16_indices_1.c
+@@ -0,0 +1,15 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++
++void
++f_vst3_lane_s16 (int16_t * p, int16x4x3_t v)
++{
++  /* { dg-error "lane 4 out of range 0 - 3" "" { xfail arm*-*-* } 0 } */
++  vst3_lane_s16 (p, v, 4);
++  /* { dg-error "lane -1 out of range 0 - 3" "" { xfail arm*-*-* } 0 } */
++  vst3_lane_s16 (p, v, -1);
++  return;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vst3_lane_s32_indices_1.c
+@@ -0,0 +1,15 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++
++void
++f_vst3_lane_s32 (int32_t * p, int32x2x3_t v)
++{
++  /* { dg-error "lane 2 out of range 0 - 1" "" { xfail arm*-*-* } 0 } */
++  vst3_lane_s32 (p, v, 2);
++  /* { dg-error "lane -1 out of range 0 - 1" "" { xfail arm*-*-* } 0 } */
++  vst3_lane_s32 (p, v, -1);
++  return;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vst3_lane_s64_indices_1.c
+@@ -0,0 +1,16 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++/* { dg-skip-if "" { arm*-*-* } } */
++
++void
++f_vst3_lane_s64 (int64_t * p, int64x1x3_t v)
++{
++  /* { dg-error "lane 1 out of range 0 - 0" "" { xfail arm*-*-* } 0 } */
++  vst3_lane_s64 (p, v, 1);
++  /* { dg-error "lane -1 out of range 0 - 0" "" { xfail arm*-*-* } 0 } */
++  vst3_lane_s64 (p, v, -1);
++  return;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vst3_lane_s8_indices_1.c
+@@ -0,0 +1,15 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++
++void
++f_vst3_lane_s8 (int8_t * p, int8x8x3_t v)
++{
++  /* { dg-error "lane 8 out of range 0 - 7" "" { xfail arm*-*-* } 0 } */
++  vst3_lane_s8 (p, v, 8);
++  /* { dg-error "lane -1 out of range 0 - 7" "" { xfail arm*-*-* } 0 } */
++  vst3_lane_s8 (p, v, -1);
++  return;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vst3_lane_u16_indices_1.c
+@@ -0,0 +1,15 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++
++void
++f_vst3_lane_u16 (uint16_t * p, uint16x4x3_t v)
++{
++  /* { dg-error "lane 4 out of range 0 - 3" "" { xfail arm*-*-* } 0 } */
++  vst3_lane_u16 (p, v, 4);
++  /* { dg-error "lane -1 out of range 0 - 3" "" { xfail arm*-*-* } 0 } */
++  vst3_lane_u16 (p, v, -1);
++  return;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vst3_lane_u32_indices_1.c
+@@ -0,0 +1,15 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++
++void
++f_vst3_lane_u32 (uint32_t * p, uint32x2x3_t v)
++{
++  /* { dg-error "lane 2 out of range 0 - 1" "" { xfail arm*-*-* } 0 } */
++  vst3_lane_u32 (p, v, 2);
++  /* { dg-error "lane -1 out of range 0 - 1" "" { xfail arm*-*-* } 0 } */
++  vst3_lane_u32 (p, v, -1);
++  return;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vst3_lane_u64_indices_1.c
+@@ -0,0 +1,16 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++/* { dg-skip-if "" { arm*-*-* } } */
++
++void
++f_vst3_lane_u64 (uint64_t * p, uint64x1x3_t v)
++{
++  /* { dg-error "lane 1 out of range 0 - 0" "" { xfail arm*-*-* } 0 } */
++  vst3_lane_u64 (p, v, 1);
++  /* { dg-error "lane -1 out of range 0 - 0" "" { xfail arm*-*-* } 0 } */
++  vst3_lane_u64 (p, v, -1);
++  return;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vst3_lane_u8_indices_1.c
+@@ -0,0 +1,15 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++
++void
++f_vst3_lane_u8 (uint8_t * p, uint8x8x3_t v)
++{
++  /* { dg-error "lane 8 out of range 0 - 7" "" { xfail arm*-*-* } 0 } */
++  vst3_lane_u8 (p, v, 8);
++  /* { dg-error "lane -1 out of range 0 - 7" "" { xfail arm*-*-* } 0 } */
++  vst3_lane_u8 (p, v, -1);
++  return;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vst3q_lane_f16_indices_1.c
+@@ -0,0 +1,15 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++
++void
++f_vst3q_lane_f16 (float16_t * p, float16x8x3_t v)
++{
++  /* { dg-error "lane 8 out of range 0 - 7" "" { xfail arm*-*-* } 0 } */
++  vst3q_lane_f16 (p, v, 8);
++  /* { dg-error "lane -1 out of range 0 - 7" "" { xfail arm*-*-* } 0 } */
++  vst3q_lane_f16 (p, v, -1);
++  return;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vst3q_lane_f32_indices_1.c
+@@ -0,0 +1,15 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++
++void
++f_vst3q_lane_f32 (float32_t * p, float32x4x3_t v)
++{
++  /* { dg-error "lane 4 out of range 0 - 3" "" { xfail arm*-*-* } 0 } */
++  vst3q_lane_f32 (p, v, 4);
++  /* { dg-error "lane -1 out of range 0 - 3" "" { xfail arm*-*-* } 0 } */
++  vst3q_lane_f32 (p, v, -1);
++  return;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vst3q_lane_f64_indices_1.c
+@@ -0,0 +1,16 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++/* { dg-skip-if "" { arm*-*-* } } */
++
++void
++f_vst3q_lane_f64 (float64_t * p, float64x2x3_t v)
++{
++  /* { dg-error "lane 2 out of range 0 - 1" "" { xfail arm*-*-* } 0 } */
++  vst3q_lane_f64 (p, v, 2);
++  /* { dg-error "lane -1 out of range 0 - 1" "" { xfail arm*-*-* } 0 } */
++  vst3q_lane_f64 (p, v, -1);
++  return;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vst3q_lane_p8_indices_1.c
+@@ -0,0 +1,16 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++/* { dg-skip-if "" { arm*-*-* } } */
++
++void
++f_vst3q_lane_p8 (poly8_t * p, poly8x16x3_t v)
++{
++  /* { dg-error "lane 16 out of range 0 - 15" "" { xfail arm*-*-* } 0 } */
++  vst3q_lane_p8 (p, v, 16);
++  /* { dg-error "lane -1 out of range 0 - 15" "" { xfail arm*-*-* } 0 } */
++  vst3q_lane_p8 (p, v, -1);
++  return;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vst3q_lane_s16_indices_1.c
+@@ -0,0 +1,15 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++
++void
++f_vst3q_lane_s16 (int16_t * p, int16x8x3_t v)
++{
++  /* { dg-error "lane 8 out of range 0 - 7" "" { xfail arm*-*-* } 0 } */
++  vst3q_lane_s16 (p, v, 8);
++  /* { dg-error "lane -1 out of range 0 - 7" "" { xfail arm*-*-* } 0 } */
++  vst3q_lane_s16 (p, v, -1);
++  return;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vst3q_lane_s32_indices_1.c
+@@ -0,0 +1,15 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++
++void
++f_vst3q_lane_s32 (int32_t * p, int32x4x3_t v)
++{
++  /* { dg-error "lane 4 out of range 0 - 3" "" { xfail arm*-*-* } 0 } */
++  vst3q_lane_s32 (p, v, 4);
++  /* { dg-error "lane -1 out of range 0 - 3" "" { xfail arm*-*-* } 0 } */
++  vst3q_lane_s32 (p, v, -1);
++  return;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vst3q_lane_s64_indices_1.c
+@@ -0,0 +1,16 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++/* { dg-skip-if "" { arm*-*-* } } */
++
++void
++f_vst3q_lane_s64 (int64_t * p, int64x2x3_t v)
++{
++  /* { dg-error "lane 2 out of range 0 - 1" "" { xfail arm*-*-* } 0 } */
++  vst3q_lane_s64 (p, v, 2);
++  /* { dg-error "lane -1 out of range 0 - 1" "" { xfail arm*-*-* } 0 } */
++  vst3q_lane_s64 (p, v, -1);
++  return;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vst3q_lane_s8_indices_1.c
+@@ -0,0 +1,16 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++/* { dg-skip-if "" { arm*-*-* } } */
++
++void
++f_vst3q_lane_s8 (int8_t * p, int8x16x3_t v)
++{
++  /* { dg-error "lane 16 out of range 0 - 15" "" { xfail arm*-*-* } 0 } */
++  vst3q_lane_s8 (p, v, 16);
++  /* { dg-error "lane -1 out of range 0 - 15" "" { xfail arm*-*-* } 0 } */
++  vst3q_lane_s8 (p, v, -1);
++  return;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vst3q_lane_u16_indices_1.c
+@@ -0,0 +1,15 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++
++void
++f_vst3q_lane_u16 (uint16_t * p, uint16x8x3_t v)
++{
++  /* { dg-error "lane 8 out of range 0 - 7" "" { xfail arm*-*-* } 0 } */
++  vst3q_lane_u16 (p, v, 8);
++  /* { dg-error "lane -1 out of range 0 - 7" "" { xfail arm*-*-* } 0 } */
++  vst3q_lane_u16 (p, v, -1);
++  return;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vst3q_lane_u32_indices_1.c
+@@ -0,0 +1,15 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++
++void
++f_vst3q_lane_u32 (uint32_t * p, uint32x4x3_t v)
++{
++  /* { dg-error "lane 4 out of range 0 - 3" "" { xfail arm*-*-* } 0 } */
++  vst3q_lane_u32 (p, v, 4);
++  /* { dg-error "lane -1 out of range 0 - 3" "" { xfail arm*-*-* } 0 } */
++  vst3q_lane_u32 (p, v, -1);
++  return;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vst3q_lane_u64_indices_1.c
+@@ -0,0 +1,16 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++/* { dg-skip-if "" { arm*-*-* } } */
++
++void
++f_vst3q_lane_u64 (uint64_t * p, uint64x2x3_t v)
++{
++  /* { dg-error "lane 2 out of range 0 - 1" "" { xfail arm*-*-* } 0 } */
++  vst3q_lane_u64 (p, v, 2);
++  /* { dg-error "lane -1 out of range 0 - 1" "" { xfail arm*-*-* } 0 } */
++  vst3q_lane_u64 (p, v, -1);
++  return;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vst3q_lane_u8_indices_1.c
+@@ -0,0 +1,16 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++/* { dg-skip-if "" { arm*-*-* } } */
++
++void
++f_vst3q_lane_u8 (uint8_t * p, uint8x16x3_t v)
++{
++  /* { dg-error "lane 16 out of range 0 - 15" "" { xfail arm*-*-* } 0 } */
++  vst3q_lane_u8 (p, v, 16);
++  /* { dg-error "lane -1 out of range 0 - 15" "" { xfail arm*-*-* } 0 } */
++  vst3q_lane_u8 (p, v, -1);
++  return;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vst4_lane_f16_indices_1.c
+@@ -0,0 +1,15 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++
++void
++f_vst4_lane_f16 (float16_t * p, float16x4x4_t v)
++{
++  /* { dg-error "lane 4 out of range 0 - 3" "" { xfail arm*-*-* } 0 } */
++  vst4_lane_f16 (p, v, 4);
++  /* { dg-error "lane -1 out of range 0 - 3" "" { xfail arm*-*-* } 0 } */
++  vst4_lane_f16 (p, v, -1);
++  return;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vst4_lane_f32_indices_1.c
+@@ -0,0 +1,15 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++
++void
++f_vst4_lane_f32 (float32_t * p, float32x2x4_t v)
++{
++  /* { dg-error "lane 2 out of range 0 - 1" "" { xfail arm*-*-* } 0 } */
++  vst4_lane_f32 (p, v, 2);
++  /* { dg-error "lane -1 out of range 0 - 1" "" { xfail arm*-*-* } 0 } */
++  vst4_lane_f32 (p, v, -1);
++  return;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vst4_lane_f64_indices_1.c
+@@ -0,0 +1,16 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++/* { dg-skip-if "" { arm*-*-* } } */
++
++void
++f_vst4_lane_f64 (float64_t * p, float64x1x4_t v)
++{
++  /* { dg-error "lane 1 out of range 0 - 0" "" { xfail arm*-*-* } 0 } */
++  vst4_lane_f64 (p, v, 1);
++  /* { dg-error "lane -1 out of range 0 - 0" "" { xfail arm*-*-* } 0 } */
++  vst4_lane_f64 (p, v, -1);
++  return;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vst4_lane_p8_indices_1.c
+@@ -0,0 +1,15 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++
++void
++f_vst4_lane_p8 (poly8_t * p, poly8x8x4_t v)
++{
++  /* { dg-error "lane 8 out of range 0 - 7" "" { xfail arm*-*-* } 0 } */
++  vst4_lane_p8 (p, v, 8);
++  /* { dg-error "lane -1 out of range 0 - 7" "" { xfail arm*-*-* } 0 } */
++  vst4_lane_p8 (p, v, -1);
++  return;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vst4_lane_s16_indices_1.c
+@@ -0,0 +1,15 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++
++void
++f_vst4_lane_s16 (int16_t * p, int16x4x4_t v)
++{
++  /* { dg-error "lane 4 out of range 0 - 3" "" { xfail arm*-*-* } 0 } */
++  vst4_lane_s16 (p, v, 4);
++  /* { dg-error "lane -1 out of range 0 - 3" "" { xfail arm*-*-* } 0 } */
++  vst4_lane_s16 (p, v, -1);
++  return;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vst4_lane_s32_indices_1.c
+@@ -0,0 +1,15 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++
++void
++f_vst4_lane_s32 (int32_t * p, int32x2x4_t v)
++{
++  /* { dg-error "lane 2 out of range 0 - 1" "" { xfail arm*-*-* } 0 } */
++  vst4_lane_s32 (p, v, 2);
++  /* { dg-error "lane -1 out of range 0 - 1" "" { xfail arm*-*-* } 0 } */
++  vst4_lane_s32 (p, v, -1);
++  return;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vst4_lane_s64_indices_1.c
+@@ -0,0 +1,16 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++/* { dg-skip-if "" { arm*-*-* } } */
++
++void
++f_vst4_lane_s64 (int64_t * p, int64x1x4_t v)
++{
++  /* { dg-error "lane 1 out of range 0 - 0" "" { xfail arm*-*-* } 0 } */
++  vst4_lane_s64 (p, v, 1);
++  /* { dg-error "lane -1 out of range 0 - 0" "" { xfail arm*-*-* } 0 } */
++  vst4_lane_s64 (p, v, -1);
++  return;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vst4_lane_s8_indices_1.c
+@@ -0,0 +1,15 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++
++void
++f_vst4_lane_s8 (int8_t * p, int8x8x4_t v)
++{
++  /* { dg-error "lane 8 out of range 0 - 7" "" { xfail arm*-*-* } 0 } */
++  vst4_lane_s8 (p, v, 8);
++  /* { dg-error "lane -1 out of range 0 - 7" "" { xfail arm*-*-* } 0 } */
++  vst4_lane_s8 (p, v, -1);
++  return;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vst4_lane_u16_indices_1.c
+@@ -0,0 +1,15 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++
++void
++f_vst4_lane_u16 (uint16_t * p, uint16x4x4_t v)
++{
++  /* { dg-error "lane 4 out of range 0 - 3" "" { xfail arm*-*-* } 0 } */
++  vst4_lane_u16 (p, v, 4);
++  /* { dg-error "lane -1 out of range 0 - 3" "" { xfail arm*-*-* } 0 } */
++  vst4_lane_u16 (p, v, -1);
++  return;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vst4_lane_u32_indices_1.c
+@@ -0,0 +1,15 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++
++void
++f_vst4_lane_u32 (uint32_t * p, uint32x2x4_t v)
++{
++  /* { dg-error "lane 2 out of range 0 - 1" "" { xfail arm*-*-* } 0 } */
++  vst4_lane_u32 (p, v, 2);
++  /* { dg-error "lane -1 out of range 0 - 1" "" { xfail arm*-*-* } 0 } */
++  vst4_lane_u32 (p, v, -1);
++  return;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vst4_lane_u64_indices_1.c
+@@ -0,0 +1,16 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++/* { dg-skip-if "" { arm*-*-* } } */
++
++void
++f_vst4_lane_u64 (uint64_t * p, uint64x1x4_t v)
++{
++  /* { dg-error "lane 1 out of range 0 - 0" "" { xfail arm*-*-* } 0 } */
++  vst4_lane_u64 (p, v, 1);
++  /* { dg-error "lane -1 out of range 0 - 0" "" { xfail arm*-*-* } 0 } */
++  vst4_lane_u64 (p, v, -1);
++  return;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vst4_lane_u8_indices_1.c
+@@ -0,0 +1,15 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++
++void
++f_vst4_lane_u8 (uint8_t * p, uint8x8x4_t v)
++{
++  /* { dg-error "lane 8 out of range 0 - 7" "" { xfail arm*-*-* } 0 } */
++  vst4_lane_u8 (p, v, 8);
++  /* { dg-error "lane -1 out of range 0 - 7" "" { xfail arm*-*-* } 0 } */
++  vst4_lane_u8 (p, v, -1);
++  return;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vst4q_lane_f16_indices_1.c
+@@ -0,0 +1,15 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++
++void
++f_vst4q_lane_f16 (float16_t * p, float16x8x4_t v)
++{
++  /* { dg-error "lane 8 out of range 0 - 7" "" { xfail arm*-*-* } 0 } */
++  vst4q_lane_f16 (p, v, 8);
++  /* { dg-error "lane -1 out of range 0 - 7" "" { xfail arm*-*-* } 0 } */
++  vst4q_lane_f16 (p, v, -1);
++  return;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vst4q_lane_f32_indices_1.c
+@@ -0,0 +1,15 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++
++void
++f_vst4q_lane_f32 (float32_t * p, float32x4x4_t v)
++{
++  /* { dg-error "lane 4 out of range 0 - 3" "" { xfail arm*-*-* } 0 } */
++  vst4q_lane_f32 (p, v, 4);
++  /* { dg-error "lane -1 out of range 0 - 3" "" { xfail arm*-*-* } 0 } */
++  vst4q_lane_f32 (p, v, -1);
++  return;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vst4q_lane_f64_indices_1.c
+@@ -0,0 +1,16 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++/* { dg-skip-if "" { arm*-*-* } } */
++
++void
++f_vst4q_lane_f64 (float64_t * p, float64x2x4_t v)
++{
++  /* { dg-error "lane 2 out of range 0 - 1" "" { xfail arm*-*-* } 0 } */
++  vst4q_lane_f64 (p, v, 2);
++  /* { dg-error "lane -1 out of range 0 - 1" "" { xfail arm*-*-* } 0 } */
++  vst4q_lane_f64 (p, v, -1);
++  return;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vst4q_lane_p8_indices_1.c
+@@ -0,0 +1,16 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++/* { dg-skip-if "" { arm*-*-* } } */
++
++void
++f_vst4q_lane_p8 (poly8_t * p, poly8x16x4_t v)
++{
++  /* { dg-error "lane 16 out of range 0 - 15" "" { xfail arm*-*-* } 0 } */
++  vst4q_lane_p8 (p, v, 16);
++  /* { dg-error "lane -1 out of range 0 - 15" "" { xfail arm*-*-* } 0 } */
++  vst4q_lane_p8 (p, v, -1);
++  return;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vst4q_lane_s16_indices_1.c
+@@ -0,0 +1,15 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++
++void
++f_vst4q_lane_s16 (int16_t * p, int16x8x4_t v)
++{
++  /* { dg-error "lane 8 out of range 0 - 7" "" { xfail arm*-*-* } 0 } */
++  vst4q_lane_s16 (p, v, 8);
++  /* { dg-error "lane -1 out of range 0 - 7" "" { xfail arm*-*-* } 0 } */
++  vst4q_lane_s16 (p, v, -1);
++  return;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vst4q_lane_s32_indices_1.c
+@@ -0,0 +1,15 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++
++void
++f_vst4q_lane_s32 (int32_t * p, int32x4x4_t v)
++{
++  /* { dg-error "lane 4 out of range 0 - 3" "" { xfail arm*-*-* } 0 } */
++  vst4q_lane_s32 (p, v, 4);
++  /* { dg-error "lane -1 out of range 0 - 3" "" { xfail arm*-*-* } 0 } */
++  vst4q_lane_s32 (p, v, -1);
++  return;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vst4q_lane_s64_indices_1.c
+@@ -0,0 +1,16 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++/* { dg-skip-if "" { arm*-*-* } } */
++
++void
++f_vst4q_lane_s64 (int64_t * p, int64x2x4_t v)
++{
++  /* { dg-error "lane 2 out of range 0 - 1" "" { xfail arm*-*-* } 0 } */
++  vst4q_lane_s64 (p, v, 2);
++  /* { dg-error "lane -1 out of range 0 - 1" "" { xfail arm*-*-* } 0 } */
++  vst4q_lane_s64 (p, v, -1);
++  return;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vst4q_lane_s8_indices_1.c
+@@ -0,0 +1,16 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++/* { dg-skip-if "" { arm*-*-* } } */
++
++void
++f_vst4q_lane_s8 (int8_t * p, int8x16x4_t v)
++{
++  /* { dg-error "lane 16 out of range 0 - 15" "" { xfail arm*-*-* } 0 } */
++  vst4q_lane_s8 (p, v, 16);
++  /* { dg-error "lane -1 out of range 0 - 15" "" { xfail arm*-*-* } 0 } */
++  vst4q_lane_s8 (p, v, -1);
++  return;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vst4q_lane_u16_indices_1.c
+@@ -0,0 +1,15 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++
++void
++f_vst4q_lane_u16 (uint16_t * p, uint16x8x4_t v)
++{
++  /* { dg-error "lane 8 out of range 0 - 7" "" { xfail arm*-*-* } 0 } */
++  vst4q_lane_u16 (p, v, 8);
++  /* { dg-error "lane -1 out of range 0 - 7" "" { xfail arm*-*-* } 0 } */
++  vst4q_lane_u16 (p, v, -1);
++  return;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vst4q_lane_u32_indices_1.c
+@@ -0,0 +1,15 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++
++void
++f_vst4q_lane_u32 (uint32_t * p, uint32x4x4_t v)
++{
++  /* { dg-error "lane 4 out of range 0 - 3" "" { xfail arm*-*-* } 0 } */
++  vst4q_lane_u32 (p, v, 4);
++  /* { dg-error "lane -1 out of range 0 - 3" "" { xfail arm*-*-* } 0 } */
++  vst4q_lane_u32 (p, v, -1);
++  return;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vst4q_lane_u64_indices_1.c
+@@ -0,0 +1,16 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++/* { dg-skip-if "" { arm*-*-* } } */
++
++void
++f_vst4q_lane_u64 (uint64_t * p, uint64x2x4_t v)
++{
++  /* { dg-error "lane 2 out of range 0 - 1" "" { xfail arm*-*-* } 0 } */
++  vst4q_lane_u64 (p, v, 2);
++  /* { dg-error "lane -1 out of range 0 - 1" "" { xfail arm*-*-* } 0 } */
++  vst4q_lane_u64 (p, v, -1);
++  return;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vst4q_lane_u8_indices_1.c
+@@ -0,0 +1,16 @@
++#include <arm_neon.h>
++
++/* { dg-do compile } */
++/* { dg-skip-if "" { *-*-* } { "-fno-fat-lto-objects" } } */
++/* { dg-excess-errors "" { xfail arm*-*-* } } */
++/* { dg-skip-if "" { arm*-*-* } } */
++
++void
++f_vst4q_lane_u8 (uint8_t * p, uint8x16x4_t v)
++{
++  /* { dg-error "lane 16 out of range 0 - 15" "" { xfail arm*-*-* } 0 } */
++  vst4q_lane_u8 (p, v, 16);
++  /* { dg-error "lane -1 out of range 0 - 15" "" { xfail arm*-*-* } 0 } */
++  vst4q_lane_u8 (p, v, -1);
++  return;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vstX_lane.c
+@@ -0,0 +1,578 @@
++#include <arm_neon.h>
++#include "arm-neon-ref.h"
++#include "compute-ref-data.h"
++
++/* Expected results for vst2, chunk 0.  */
++VECT_VAR_DECL(expected_st2_0,int,8,8) [] = { 0xf0, 0xf1, 0x0, 0x0,
++					     0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_st2_0,int,16,4) [] = { 0xfff0, 0xfff1, 0x0, 0x0 };
++VECT_VAR_DECL(expected_st2_0,int,32,2) [] = { 0xfffffff0, 0xfffffff1 };
++VECT_VAR_DECL(expected_st2_0,uint,8,8) [] = { 0xf0, 0xf1, 0x0, 0x0,
++					      0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_st2_0,uint,16,4) [] = { 0xfff0, 0xfff1, 0x0, 0x0 };
++VECT_VAR_DECL(expected_st2_0,uint,32,2) [] = { 0xfffffff0, 0xfffffff1 };
++VECT_VAR_DECL(expected_st2_0,poly,8,8) [] = { 0xf0, 0xf1, 0x0, 0x0,
++					      0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_st2_0,poly,16,4) [] = { 0xfff0, 0xfff1, 0x0, 0x0 };
++VECT_VAR_DECL(expected_st2_0,hfloat,32,2) [] = { 0xc1800000, 0xc1700000 };
++VECT_VAR_DECL(expected_st2_0,int,16,8) [] = { 0xfff0, 0xfff1, 0x0, 0x0,
++					      0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_st2_0,int,32,4) [] = { 0xfffffff0, 0xfffffff1, 0x0, 0x0 };
++VECT_VAR_DECL(expected_st2_0,uint,16,8) [] = { 0xfff0, 0xfff1, 0x0, 0x0,
++					       0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_st2_0,uint,32,4) [] = { 0xfffffff0, 0xfffffff1,
++					       0x0, 0x0 };
++VECT_VAR_DECL(expected_st2_0,poly,16,8) [] = { 0xfff0, 0xfff1, 0x0, 0x0,
++					       0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_st2_0,hfloat,32,4) [] = { 0xc1800000, 0xc1700000,
++						 0x0, 0x0 };
++
++/* Expected results for vst2, chunk 1.  */
++VECT_VAR_DECL(expected_st2_1,int,8,8) [] = { 0x0, 0x0, 0x0, 0x0,
++					     0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_st2_1,int,16,4) [] = { 0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_st2_1,int,32,2) [] = { 0x0, 0x0 };
++VECT_VAR_DECL(expected_st2_1,uint,8,8) [] = { 0x0, 0x0, 0x0, 0x0,
++					      0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_st2_1,uint,16,4) [] = { 0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_st2_1,uint,32,2) [] = { 0x0, 0x0 };
++VECT_VAR_DECL(expected_st2_1,poly,8,8) [] = { 0x0, 0x0, 0x0, 0x0,
++					      0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_st2_1,poly,16,4) [] = { 0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_st2_1,hfloat,32,2) [] = { 0x0, 0x0 };
++VECT_VAR_DECL(expected_st2_1,int,16,8) [] = { 0x0, 0x0, 0x0, 0x0,
++					      0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_st2_1,int,32,4) [] = { 0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_st2_1,uint,16,8) [] = { 0x0, 0x0, 0x0, 0x0,
++					       0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_st2_1,uint,32,4) [] = { 0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_st2_1,poly,16,8) [] = { 0x0, 0x0, 0x0, 0x0,
++					       0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_st2_1,hfloat,32,4) [] = { 0x0, 0x0, 0x0, 0x0 };
++
++/* Expected results for vst3, chunk 0.  */
++VECT_VAR_DECL(expected_st3_0,int,8,8) [] = { 0xf0, 0xf1, 0xf2, 0x0,
++					     0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_st3_0,int,16,4) [] = { 0xfff0, 0xfff1, 0xfff2, 0x0 };
++VECT_VAR_DECL(expected_st3_0,int,32,2) [] = { 0xfffffff0, 0xfffffff1 };
++VECT_VAR_DECL(expected_st3_0,uint,8,8) [] = { 0xf0, 0xf1, 0xf2, 0x0,
++					      0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_st3_0,uint,16,4) [] = { 0xfff0, 0xfff1, 0xfff2, 0x0 };
++VECT_VAR_DECL(expected_st3_0,uint,32,2) [] = { 0xfffffff0, 0xfffffff1 };
++VECT_VAR_DECL(expected_st3_0,poly,8,8) [] = { 0xf0, 0xf1, 0xf2, 0x0,
++					      0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_st3_0,poly,16,4) [] = { 0xfff0, 0xfff1, 0xfff2, 0x0 };
++VECT_VAR_DECL(expected_st3_0,hfloat,32,2) [] = { 0xc1800000, 0xc1700000 };
++VECT_VAR_DECL(expected_st3_0,int,16,8) [] = { 0xfff0, 0xfff1, 0xfff2, 0x0,
++					      0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_st3_0,int,32,4) [] = { 0xfffffff0, 0xfffffff1,
++					      0xfffffff2, 0x0 };
++VECT_VAR_DECL(expected_st3_0,uint,16,8) [] = { 0xfff0, 0xfff1, 0xfff2, 0x0,
++					       0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_st3_0,uint,32,4) [] = { 0xfffffff0, 0xfffffff1,
++					       0xfffffff2, 0x0 };
++VECT_VAR_DECL(expected_st3_0,poly,16,8) [] = { 0xfff0, 0xfff1, 0xfff2, 0x0,
++					       0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_st3_0,hfloat,32,4) [] = { 0xc1800000, 0xc1700000,
++						 0xc1600000, 0x0 };
++
++/* Expected results for vst3, chunk 1.  */
++VECT_VAR_DECL(expected_st3_1,int,8,8) [] = { 0x0, 0x0, 0x0, 0x0,
++					     0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_st3_1,int,16,4) [] = { 0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_st3_1,int,32,2) [] = { 0xfffffff2, 0x0 };
++VECT_VAR_DECL(expected_st3_1,uint,8,8) [] = { 0x0, 0x0, 0x0, 0x0,
++					      0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_st3_1,uint,16,4) [] = { 0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_st3_1,uint,32,2) [] = { 0xfffffff2, 0x0 };
++VECT_VAR_DECL(expected_st3_1,poly,8,8) [] = { 0x0, 0x0, 0x0, 0x0,
++					      0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_st3_1,poly,16,4) [] = { 0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_st3_1,hfloat,32,2) [] = { 0xc1600000, 0x0 };
++VECT_VAR_DECL(expected_st3_1,int,16,8) [] = { 0x0, 0x0, 0x0, 0x0,
++					      0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_st3_1,int,32,4) [] = { 0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_st3_1,uint,16,8) [] = { 0x0, 0x0, 0x0, 0x0,
++					       0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_st3_1,uint,32,4) [] = { 0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_st3_1,poly,16,8) [] = { 0x0, 0x0, 0x0, 0x0,
++					       0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_st3_1,hfloat,32,4) [] = { 0x0, 0x0, 0x0, 0x0 };
++
++/* Expected results for vst3, chunk 2.  */
++VECT_VAR_DECL(expected_st3_2,int,8,8) [] = { 0x0, 0x0, 0x0, 0x0,
++					     0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_st3_2,int,16,4) [] = { 0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_st3_2,int,32,2) [] = { 0x0, 0x0 };
++VECT_VAR_DECL(expected_st3_2,uint,8,8) [] = { 0x0, 0x0, 0x0, 0x0,
++					      0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_st3_2,uint,16,4) [] = { 0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_st3_2,uint,32,2) [] = { 0x0, 0x0 };
++VECT_VAR_DECL(expected_st3_2,poly,8,8) [] = { 0x0, 0x0, 0x0, 0x0,
++					      0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_st3_2,poly,16,4) [] = { 0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_st3_2,hfloat,32,2) [] = { 0x0, 0x0 };
++VECT_VAR_DECL(expected_st3_2,int,16,8) [] = { 0x0, 0x0, 0x0, 0x0,
++					      0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_st3_2,int,32,4) [] = { 0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_st3_2,uint,16,8) [] = { 0x0, 0x0, 0x0, 0x0,
++					       0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_st3_2,uint,32,4) [] = { 0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_st3_2,poly,16,8) [] = { 0x0, 0x0, 0x0, 0x0,
++					       0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_st3_2,hfloat,32,4) [] = { 0x0, 0x0, 0x0, 0x0 };
++
++/* Expected results for vst4, chunk 0.  */
++VECT_VAR_DECL(expected_st4_0,int,8,8) [] = { 0xf0, 0xf1, 0xf2, 0xf3,
++					     0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_st4_0,int,16,4) [] = { 0xfff0, 0xfff1, 0xfff2, 0xfff3 };
++VECT_VAR_DECL(expected_st4_0,int,32,2) [] = { 0xfffffff0, 0xfffffff1 };
++VECT_VAR_DECL(expected_st4_0,uint,8,8) [] = { 0xf0, 0xf1, 0xf2, 0xf3,
++					      0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_st4_0,uint,16,4) [] = { 0xfff0, 0xfff1, 0xfff2, 0xfff3 };
++VECT_VAR_DECL(expected_st4_0,uint,32,2) [] = { 0xfffffff0, 0xfffffff1 };
++VECT_VAR_DECL(expected_st4_0,poly,8,8) [] = { 0xf0, 0xf1, 0xf2, 0xf3,
++					      0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_st4_0,poly,16,4) [] = { 0xfff0, 0xfff1, 0xfff2, 0xfff3 };
++VECT_VAR_DECL(expected_st4_0,hfloat,32,2) [] = { 0xc1800000, 0xc1700000 };
++VECT_VAR_DECL(expected_st4_0,int,16,8) [] = { 0xfff0, 0xfff1, 0xfff2, 0xfff3,
++					      0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_st4_0,int,32,4) [] = { 0xfffffff0, 0xfffffff1,
++					      0xfffffff2, 0xfffffff3 };
++VECT_VAR_DECL(expected_st4_0,uint,16,8) [] = { 0xfff0, 0xfff1, 0xfff2, 0xfff3,
++					       0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_st4_0,uint,32,4) [] = { 0xfffffff0, 0xfffffff1,
++					       0xfffffff2, 0xfffffff3 };
++VECT_VAR_DECL(expected_st4_0,poly,16,8) [] = { 0xfff0, 0xfff1, 0xfff2, 0xfff3,
++					       0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_st4_0,hfloat,32,4) [] = { 0xc1800000, 0xc1700000,
++						 0xc1600000, 0xc1500000 };
++
++/* Expected results for vst4, chunk 1.  */
++VECT_VAR_DECL(expected_st4_1,int,8,8) [] = { 0x0, 0x0, 0x0, 0x0,
++					     0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_st4_1,int,16,4) [] = { 0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_st4_1,int,32,2) [] = { 0xfffffff2, 0xfffffff3 };
++VECT_VAR_DECL(expected_st4_1,uint,8,8) [] = { 0x0, 0x0, 0x0, 0x0,
++					      0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_st4_1,uint,16,4) [] = { 0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_st4_1,uint,32,2) [] = { 0xfffffff2, 0xfffffff3 };
++VECT_VAR_DECL(expected_st4_1,poly,8,8) [] = { 0x0, 0x0, 0x0, 0x0,
++					      0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_st4_1,poly,16,4) [] = { 0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_st4_1,hfloat,32,2) [] = { 0xc1600000, 0xc1500000 };
++VECT_VAR_DECL(expected_st4_1,int,16,8) [] = { 0x0, 0x0, 0x0, 0x0,
++					      0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_st4_1,int,32,4) [] = { 0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_st4_1,uint,16,8) [] = { 0x0, 0x0, 0x0, 0x0,
++					       0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_st4_1,uint,32,4) [] = { 0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_st4_1,poly,16,8) [] = { 0x0, 0x0, 0x0, 0x0,
++					       0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_st4_1,hfloat,32,4) [] = { 0x0, 0x0, 0x0, 0x0 };
++
++/* Expected results for vst4, chunk 2.  */
++VECT_VAR_DECL(expected_st4_2,int,8,8) [] = { 0x0, 0x0, 0x0, 0x0,
++					     0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_st4_2,int,16,4) [] = { 0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_st4_2,int,32,2) [] = { 0x0, 0x0 };
++VECT_VAR_DECL(expected_st4_2,uint,8,8) [] = { 0x0, 0x0, 0x0, 0x0,
++					      0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_st4_2,uint,16,4) [] = { 0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_st4_2,uint,32,2) [] = { 0x0, 0x0 };
++VECT_VAR_DECL(expected_st4_2,poly,8,8) [] = { 0x0, 0x0, 0x0, 0x0,
++					      0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_st4_2,poly,16,4) [] = { 0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_st4_2,hfloat,32,2) [] = { 0x0, 0x0 };
++VECT_VAR_DECL(expected_st4_2,int,16,8) [] = { 0x0, 0x0, 0x0, 0x0,
++					      0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_st4_2,int,32,4) [] = { 0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_st4_2,uint,16,8) [] = { 0x0, 0x0, 0x0, 0x0,
++					       0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_st4_2,uint,32,4) [] = { 0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_st4_2,poly,16,8) [] = { 0x0, 0x0, 0x0, 0x0,
++					       0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_st4_2,hfloat,32,4) [] = { 0x0, 0x0, 0x0, 0x0 };
++
++/* Expected results for vst4, chunk 3.  */
++VECT_VAR_DECL(expected_st4_3,int,8,8) [] = { 0x0, 0x0, 0x0, 0x0,
++					     0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_st4_3,int,16,4) [] = { 0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_st4_3,int,32,2) [] = { 0x0, 0x0 };
++VECT_VAR_DECL(expected_st4_3,uint,8,8) [] = { 0x0, 0x0, 0x0, 0x0,
++					      0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_st4_3,uint,16,4) [] = { 0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_st4_3,uint,32,2) [] = { 0x0, 0x0 };
++VECT_VAR_DECL(expected_st4_3,poly,8,8) [] = { 0x0, 0x0, 0x0, 0x0,
++					      0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_st4_3,poly,16,4) [] = { 0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_st4_3,hfloat,32,2) [] = { 0x0, 0x0 };
++VECT_VAR_DECL(expected_st4_3,int,16,8) [] = { 0x0, 0x0, 0x0, 0x0,
++					      0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_st4_3,int,32,4) [] = { 0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_st4_3,uint,16,8) [] = { 0x0, 0x0, 0x0, 0x0,
++					       0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_st4_3,uint,32,4) [] = { 0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_st4_3,poly,16,8) [] = { 0x0, 0x0, 0x0, 0x0,
++					       0x0, 0x0, 0x0, 0x0 };
++VECT_VAR_DECL(expected_st4_3,hfloat,32,4) [] = { 0x0, 0x0, 0x0, 0x0 };
++
++/* Declare additional input buffers as needed.  */
++/* Input buffers for vld2_lane.  */
++VECT_VAR_DECL_INIT(buffer_vld2_lane, int, 8, 2);
++VECT_VAR_DECL_INIT(buffer_vld2_lane, int, 16, 2);
++VECT_VAR_DECL_INIT(buffer_vld2_lane, int, 32, 2);
++VECT_VAR_DECL_INIT(buffer_vld2_lane, int, 64, 2);
++VECT_VAR_DECL_INIT(buffer_vld2_lane, uint, 8, 2);
++VECT_VAR_DECL_INIT(buffer_vld2_lane, uint, 16, 2);
++VECT_VAR_DECL_INIT(buffer_vld2_lane, uint, 32, 2);
++VECT_VAR_DECL_INIT(buffer_vld2_lane, uint, 64, 2);
++VECT_VAR_DECL_INIT(buffer_vld2_lane, poly, 8, 2);
++VECT_VAR_DECL_INIT(buffer_vld2_lane, poly, 16, 2);
++VECT_VAR_DECL_INIT(buffer_vld2_lane, float, 32, 2);
++
++/* Input buffers for vld3_lane.  */
++VECT_VAR_DECL_INIT(buffer_vld3_lane, int, 8, 3);
++VECT_VAR_DECL_INIT(buffer_vld3_lane, int, 16, 3);
++VECT_VAR_DECL_INIT(buffer_vld3_lane, int, 32, 3);
++VECT_VAR_DECL_INIT(buffer_vld3_lane, int, 64, 3);
++VECT_VAR_DECL_INIT(buffer_vld3_lane, uint, 8, 3);
++VECT_VAR_DECL_INIT(buffer_vld3_lane, uint, 16, 3);
++VECT_VAR_DECL_INIT(buffer_vld3_lane, uint, 32, 3);
++VECT_VAR_DECL_INIT(buffer_vld3_lane, uint, 64, 3);
++VECT_VAR_DECL_INIT(buffer_vld3_lane, poly, 8, 3);
++VECT_VAR_DECL_INIT(buffer_vld3_lane, poly, 16, 3);
++VECT_VAR_DECL_INIT(buffer_vld3_lane, float, 32, 3);
++
++/* Input buffers for vld4_lane.  */
++VECT_VAR_DECL_INIT(buffer_vld4_lane, int, 8, 4);
++VECT_VAR_DECL_INIT(buffer_vld4_lane, int, 16, 4);
++VECT_VAR_DECL_INIT(buffer_vld4_lane, int, 32, 4);
++VECT_VAR_DECL_INIT(buffer_vld4_lane, int, 64, 4);
++VECT_VAR_DECL_INIT(buffer_vld4_lane, uint, 8, 4);
++VECT_VAR_DECL_INIT(buffer_vld4_lane, uint, 16, 4);
++VECT_VAR_DECL_INIT(buffer_vld4_lane, uint, 32, 4);
++VECT_VAR_DECL_INIT(buffer_vld4_lane, uint, 64, 4);
++VECT_VAR_DECL_INIT(buffer_vld4_lane, poly, 8, 4);
++VECT_VAR_DECL_INIT(buffer_vld4_lane, poly, 16, 4);
++VECT_VAR_DECL_INIT(buffer_vld4_lane, float, 32, 4);
++
++void exec_vstX_lane (void)
++{
++  /* In this case, input variables are arrays of vectors.  */
++#define DECL_VSTX_LANE(T1, W, N, X)					\
++  VECT_ARRAY_TYPE(T1, W, N, X) VECT_ARRAY_VAR(vector, T1, W, N, X);	\
++  VECT_ARRAY_TYPE(T1, W, N, X) VECT_ARRAY_VAR(vector_src, T1, W, N, X);	\
++  VECT_VAR_DECL(result_bis_##X, T1, W, N)[X * N]
++
++  /* We need to use a temporary result buffer (result_bis), because
++     the one used for other tests is not large enough. A subset of the
++     result data is moved from result_bis to result, and it is this
++     subset which is used to check the actual behaviour. The next
++     macro enables to move another chunk of data from result_bis to
++     result.  */
++  /* We also use another extra input buffer (buffer_src), which we
++     fill with 0xAA, and which it used to load a vector from which we
++     read a given lane.  */
++#define TEST_VSTX_LANE(Q, T1, T2, W, N, X, L)				 \
++  memset (VECT_VAR(buffer_src, T1, W, N), 0xAA,				 \
++	  sizeof(VECT_VAR(buffer_src, T1, W, N)));			 \
++  memset (VECT_VAR(result_bis_##X, T1, W, N), 0,			 \
++	  sizeof(VECT_VAR(result_bis_##X, T1, W, N)));			 \
++									 \
++  VECT_ARRAY_VAR(vector_src, T1, W, N, X) =				 \
++    vld##X##Q##_##T2##W(VECT_VAR(buffer_src, T1, W, N));		 \
++									 \
++  VECT_ARRAY_VAR(vector, T1, W, N, X) =					 \
++    /* Use dedicated init buffer, of size X.  */			 \
++    vld##X##Q##_lane_##T2##W(VECT_VAR(buffer_vld##X##_lane, T1, W, X),	 \
++			     VECT_ARRAY_VAR(vector_src, T1, W, N, X),	 \
++			     L);					 \
++  vst##X##Q##_lane_##T2##W(VECT_VAR(result_bis_##X, T1, W, N),		 \
++			   VECT_ARRAY_VAR(vector, T1, W, N, X),		 \
++			   L);						 \
++  memcpy(VECT_VAR(result, T1, W, N), VECT_VAR(result_bis_##X, T1, W, N), \
++	 sizeof(VECT_VAR(result, T1, W, N)));
++
++  /* Overwrite "result" with the contents of "result_bis"[Y].  */
++#define TEST_EXTRA_CHUNK(T1, W, N, X, Y)		\
++  memcpy(VECT_VAR(result, T1, W, N),			\
++	 &(VECT_VAR(result_bis_##X, T1, W, N)[Y*N]),	\
++	 sizeof(VECT_VAR(result, T1, W, N)));
++
++  /* We need all variants in 64 bits, but there is no 64x2 variant,
++     nor 128 bits vectors of int8/uint8/poly8.  */
++#define DECL_ALL_VSTX_LANE(X)			\
++  DECL_VSTX_LANE(int, 8, 8, X);			\
++  DECL_VSTX_LANE(int, 16, 4, X);		\
++  DECL_VSTX_LANE(int, 32, 2, X);		\
++  DECL_VSTX_LANE(uint, 8, 8, X);		\
++  DECL_VSTX_LANE(uint, 16, 4, X);		\
++  DECL_VSTX_LANE(uint, 32, 2, X);		\
++  DECL_VSTX_LANE(poly, 8, 8, X);		\
++  DECL_VSTX_LANE(poly, 16, 4, X);		\
++  DECL_VSTX_LANE(float, 32, 2, X);		\
++  DECL_VSTX_LANE(int, 16, 8, X);		\
++  DECL_VSTX_LANE(int, 32, 4, X);		\
++  DECL_VSTX_LANE(uint, 16, 8, X);		\
++  DECL_VSTX_LANE(uint, 32, 4, X);		\
++  DECL_VSTX_LANE(poly, 16, 8, X);		\
++  DECL_VSTX_LANE(float, 32, 4, X)
++
++#define DUMMY_ARRAY(V, T, W, N, L) VECT_VAR_DECL(V,T,W,N)[N*L]
++
++  /* Use the same lanes regardless of the size of the array (X), for
++     simplicity.  */
++#define TEST_ALL_VSTX_LANE(X)			\
++  TEST_VSTX_LANE(, int, s, 8, 8, X, 7);		\
++  TEST_VSTX_LANE(, int, s, 16, 4, X, 2);	\
++  TEST_VSTX_LANE(, int, s, 32, 2, X, 0);	\
++  TEST_VSTX_LANE(, float, f, 32, 2, X, 0);	\
++  TEST_VSTX_LANE(, uint, u, 8, 8, X, 4);	\
++  TEST_VSTX_LANE(, uint, u, 16, 4, X, 3);	\
++  TEST_VSTX_LANE(, uint, u, 32, 2, X, 1);	\
++  TEST_VSTX_LANE(, poly, p, 8, 8, X, 4);	\
++  TEST_VSTX_LANE(, poly, p, 16, 4, X, 3);	\
++  TEST_VSTX_LANE(q, int, s, 16, 8, X, 6);	\
++  TEST_VSTX_LANE(q, int, s, 32, 4, X, 2);	\
++  TEST_VSTX_LANE(q, uint, u, 16, 8, X, 5);	\
++  TEST_VSTX_LANE(q, uint, u, 32, 4, X, 0);	\
++  TEST_VSTX_LANE(q, poly, p, 16, 8, X, 5);	\
++  TEST_VSTX_LANE(q, float, f, 32, 4, X, 2)
++
++#define TEST_ALL_EXTRA_CHUNKS(X, Y)		\
++  TEST_EXTRA_CHUNK(int, 8, 8, X, Y);		\
++  TEST_EXTRA_CHUNK(int, 16, 4, X, Y);		\
++  TEST_EXTRA_CHUNK(int, 32, 2, X, Y);		\
++  TEST_EXTRA_CHUNK(uint, 8, 8, X, Y);		\
++  TEST_EXTRA_CHUNK(uint, 16, 4, X, Y);		\
++  TEST_EXTRA_CHUNK(uint, 32, 2, X, Y);		\
++  TEST_EXTRA_CHUNK(poly, 8, 8, X, Y);		\
++  TEST_EXTRA_CHUNK(poly, 16, 4, X, Y);		\
++  TEST_EXTRA_CHUNK(float, 32, 2, X, Y);		\
++  TEST_EXTRA_CHUNK(int, 16, 8, X, Y);		\
++  TEST_EXTRA_CHUNK(int, 32, 4, X, Y);		\
++  TEST_EXTRA_CHUNK(uint, 16, 8, X, Y);		\
++  TEST_EXTRA_CHUNK(uint, 32, 4, X, Y);		\
++  TEST_EXTRA_CHUNK(poly, 16, 8, X, Y);		\
++  TEST_EXTRA_CHUNK(float, 32, 4, X, Y)
++
++  /* Declare the temporary buffers / variables.  */
++  DECL_ALL_VSTX_LANE(2);
++  DECL_ALL_VSTX_LANE(3);
++  DECL_ALL_VSTX_LANE(4);
++
++  /* Define dummy input arrays, large enough for x4 vectors.  */
++  DUMMY_ARRAY(buffer_src, int, 8, 8, 4);
++  DUMMY_ARRAY(buffer_src, int, 16, 4, 4);
++  DUMMY_ARRAY(buffer_src, int, 32, 2, 4);
++  DUMMY_ARRAY(buffer_src, uint, 8, 8, 4);
++  DUMMY_ARRAY(buffer_src, uint, 16, 4, 4);
++  DUMMY_ARRAY(buffer_src, uint, 32, 2, 4);
++  DUMMY_ARRAY(buffer_src, poly, 8, 8, 4);
++  DUMMY_ARRAY(buffer_src, poly, 16, 4, 4);
++  DUMMY_ARRAY(buffer_src, float, 32, 2, 4);
++  DUMMY_ARRAY(buffer_src, int, 16, 8, 4);
++  DUMMY_ARRAY(buffer_src, int, 32, 4, 4);
++  DUMMY_ARRAY(buffer_src, uint, 16, 8, 4);
++  DUMMY_ARRAY(buffer_src, uint, 32, 4, 4);
++  DUMMY_ARRAY(buffer_src, poly, 16, 8, 4);
++  DUMMY_ARRAY(buffer_src, float, 32, 4, 4);
++
++  /* Check vst2_lane/vst2q_lane.  */
++  clean_results ();
++#define TEST_MSG "VST2_LANE/VST2Q_LANE"
++  TEST_ALL_VSTX_LANE(2);
++
++#define CMT " (chunk 0)"
++  CHECK(TEST_MSG, int, 8, 8, PRIx8, expected_st2_0, CMT);
++  CHECK(TEST_MSG, int, 16, 4, PRIx16, expected_st2_0, CMT);
++  CHECK(TEST_MSG, int, 32, 2, PRIx32, expected_st2_0, CMT);
++  CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected_st2_0, CMT);
++  CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected_st2_0, CMT);
++  CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected_st2_0, CMT);
++  CHECK(TEST_MSG, poly, 8, 8, PRIx8, expected_st2_0, CMT);
++  CHECK(TEST_MSG, poly, 16, 4, PRIx16, expected_st2_0, CMT);
++  CHECK_FP(TEST_MSG, float, 32, 2, PRIx32, expected_st2_0, CMT);
++  CHECK(TEST_MSG, int, 16, 8, PRIx16, expected_st2_0, CMT);
++  CHECK(TEST_MSG, int, 32, 4, PRIx32, expected_st2_0, CMT);
++  CHECK(TEST_MSG, uint, 16, 8, PRIx16, expected_st2_0, CMT);
++  CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected_st2_0, CMT);
++  CHECK(TEST_MSG, poly, 16, 8, PRIx16, expected_st2_0, CMT);
++  CHECK_FP(TEST_MSG, float, 32, 4, PRIx32, expected_st2_0, CMT);
++
++  TEST_ALL_EXTRA_CHUNKS(2, 1);
++#undef CMT
++#define CMT " chunk 1"
++  CHECK(TEST_MSG, int, 8, 8, PRIx8, expected_st2_1, CMT);
++  CHECK(TEST_MSG, int, 16, 4, PRIx16, expected_st2_1, CMT);
++  CHECK(TEST_MSG, int, 32, 2, PRIx32, expected_st2_1, CMT);
++  CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected_st2_1, CMT);
++  CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected_st2_1, CMT);
++  CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected_st2_1, CMT);
++  CHECK(TEST_MSG, poly, 8, 8, PRIx8, expected_st2_1, CMT);
++  CHECK(TEST_MSG, poly, 16, 4, PRIx16, expected_st2_1, CMT);
++  CHECK_FP(TEST_MSG, float, 32, 2, PRIx32, expected_st2_1, CMT);
++  CHECK(TEST_MSG, int, 16, 8, PRIx16, expected_st2_1, CMT);
++  CHECK(TEST_MSG, int, 32, 4, PRIx32, expected_st2_1, CMT);
++  CHECK(TEST_MSG, uint, 16, 8, PRIx16, expected_st2_1, CMT);
++  CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected_st2_1, CMT);
++  CHECK(TEST_MSG, poly, 16, 8, PRIx16, expected_st2_1, CMT);
++  CHECK_FP(TEST_MSG, float, 32, 4, PRIx32, expected_st2_1, CMT);
++
++
++  /* Check vst3_lane/vst3q_lane.  */
++  clean_results ();
++#undef TEST_MSG
++#define TEST_MSG "VST3_LANE/VST3Q_LANE"
++  TEST_ALL_VSTX_LANE(3);
++
++#undef CMT
++#define CMT " (chunk 0)"
++  CHECK(TEST_MSG, int, 8, 8, PRIx8, expected_st3_0, CMT);
++  CHECK(TEST_MSG, int, 16, 4, PRIx16, expected_st3_0, CMT);
++  CHECK(TEST_MSG, int, 32, 2, PRIx32, expected_st3_0, CMT);
++  CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected_st3_0, CMT);
++  CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected_st3_0, CMT);
++  CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected_st3_0, CMT);
++  CHECK(TEST_MSG, poly, 8, 8, PRIx8, expected_st3_0, CMT);
++  CHECK(TEST_MSG, poly, 16, 4, PRIx16, expected_st3_0, CMT);
++  CHECK_FP(TEST_MSG, float, 32, 2, PRIx32, expected_st3_0, CMT);
++  CHECK(TEST_MSG, int, 16, 8, PRIx16, expected_st3_0, CMT);
++  CHECK(TEST_MSG, int, 32, 4, PRIx32, expected_st3_0, CMT);
++  CHECK(TEST_MSG, uint, 16, 8, PRIx16, expected_st3_0, CMT);
++  CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected_st3_0, CMT);
++  CHECK(TEST_MSG, poly, 16, 8, PRIx16, expected_st3_0, CMT);
++  CHECK_FP(TEST_MSG, float, 32, 4, PRIx32, expected_st3_0, CMT);
++
++  TEST_ALL_EXTRA_CHUNKS(3, 1);
++
++#undef CMT
++#define CMT " (chunk 1)"
++  CHECK(TEST_MSG, int, 8, 8, PRIx8, expected_st3_1, CMT);
++  CHECK(TEST_MSG, int, 16, 4, PRIx16, expected_st3_1, CMT);
++  CHECK(TEST_MSG, int, 32, 2, PRIx32, expected_st3_1, CMT);
++  CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected_st3_1, CMT);
++  CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected_st3_1, CMT);
++  CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected_st3_1, CMT);
++  CHECK(TEST_MSG, poly, 8, 8, PRIx8, expected_st3_1, CMT);
++  CHECK(TEST_MSG, poly, 16, 4, PRIx16, expected_st3_1, CMT);
++  CHECK_FP(TEST_MSG, float, 32, 2, PRIx32, expected_st3_1, CMT);
++  CHECK(TEST_MSG, int, 16, 8, PRIx16, expected_st3_1, CMT);
++  CHECK(TEST_MSG, int, 32, 4, PRIx32, expected_st3_1, CMT);
++  CHECK(TEST_MSG, uint, 16, 8, PRIx16, expected_st3_1, CMT);
++  CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected_st3_1, CMT);
++  CHECK(TEST_MSG, poly, 16, 8, PRIx16, expected_st3_1, CMT);
++  CHECK_FP(TEST_MSG, float, 32, 4, PRIx32, expected_st3_1, CMT);
++
++  TEST_ALL_EXTRA_CHUNKS(3, 2);
++
++#undef CMT
++#define CMT " (chunk 2)"
++  CHECK(TEST_MSG, int, 8, 8, PRIx8, expected_st3_2, CMT);
++  CHECK(TEST_MSG, int, 16, 4, PRIx16, expected_st3_2, CMT);
++  CHECK(TEST_MSG, int, 32, 2, PRIx32, expected_st3_2, CMT);
++  CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected_st3_2, CMT);
++  CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected_st3_2, CMT);
++  CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected_st3_2, CMT);
++  CHECK(TEST_MSG, poly, 8, 8, PRIx8, expected_st3_2, CMT);
++  CHECK(TEST_MSG, poly, 16, 4, PRIx16, expected_st3_2, CMT);
++  CHECK_FP(TEST_MSG, float, 32, 2, PRIx32, expected_st3_2, CMT);
++  CHECK(TEST_MSG, int, 16, 8, PRIx16, expected_st3_2, CMT);
++  CHECK(TEST_MSG, int, 32, 4, PRIx32, expected_st3_2, CMT);
++  CHECK(TEST_MSG, uint, 16, 8, PRIx16, expected_st3_2, CMT);
++  CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected_st3_2, CMT);
++  CHECK(TEST_MSG, poly, 16, 8, PRIx16, expected_st3_2, CMT);
++  CHECK_FP(TEST_MSG, float, 32, 4, PRIx32, expected_st3_2, CMT);
++
++
++  /* Check vst4_lane/vst4q_lane.  */
++  clean_results ();
++#undef TEST_MSG
++#define TEST_MSG "VST4_LANE/VST4Q_LANE"
++  TEST_ALL_VSTX_LANE(4);
++
++#undef CMT
++#define CMT " (chunk 0)"
++  CHECK(TEST_MSG, int, 8, 8, PRIx8, expected_st4_0, CMT);
++  CHECK(TEST_MSG, int, 16, 4, PRIx16, expected_st4_0, CMT);
++  CHECK(TEST_MSG, int, 32, 2, PRIx32, expected_st4_0, CMT);
++  CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected_st4_0, CMT);
++  CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected_st4_0, CMT);
++  CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected_st4_0, CMT);
++  CHECK(TEST_MSG, poly, 8, 8, PRIx8, expected_st4_0, CMT);
++  CHECK(TEST_MSG, poly, 16, 4, PRIx16, expected_st4_0, CMT);
++  CHECK_FP(TEST_MSG, float, 32, 2, PRIx32, expected_st4_0, CMT);
++  CHECK(TEST_MSG, int, 16, 8, PRIx16, expected_st4_0, CMT);
++  CHECK(TEST_MSG, int, 32, 4, PRIx32, expected_st4_0, CMT);
++  CHECK(TEST_MSG, uint, 16, 8, PRIx16, expected_st4_0, CMT);
++  CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected_st4_0, CMT);
++  CHECK(TEST_MSG, poly, 16, 8, PRIx16, expected_st4_0, CMT);
++  CHECK_FP(TEST_MSG, float, 32, 4, PRIx32, expected_st4_0, CMT);
++
++  TEST_ALL_EXTRA_CHUNKS(4, 1);
++
++#undef CMT
++#define CMT " (chunk 1)"
++  CHECK(TEST_MSG, int, 8, 8, PRIx8, expected_st4_1, CMT);
++  CHECK(TEST_MSG, int, 16, 4, PRIx16, expected_st4_1, CMT);
++  CHECK(TEST_MSG, int, 32, 2, PRIx32, expected_st4_1, CMT);
++  CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected_st4_1, CMT);
++  CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected_st4_1, CMT);
++  CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected_st4_1, CMT);
++  CHECK(TEST_MSG, poly, 8, 8, PRIx8, expected_st4_1, CMT);
++  CHECK(TEST_MSG, poly, 16, 4, PRIx16, expected_st4_1, CMT);
++  CHECK_FP(TEST_MSG, float, 32, 2, PRIx32, expected_st4_1, CMT);
++  CHECK(TEST_MSG, int, 16, 8, PRIx16, expected_st4_1, CMT);
++  CHECK(TEST_MSG, int, 32, 4, PRIx32, expected_st4_1, CMT);
++  CHECK(TEST_MSG, uint, 16, 8, PRIx16, expected_st4_1, CMT);
++  CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected_st4_1, CMT);
++  CHECK(TEST_MSG, poly, 16, 8, PRIx16, expected_st4_1, CMT);
++  CHECK_FP(TEST_MSG, float, 32, 4, PRIx32, expected_st4_1, CMT);
++
++  TEST_ALL_EXTRA_CHUNKS(4, 2);
++
++#undef CMT
++#define CMT " (chunk 2)"
++  CHECK(TEST_MSG, int, 8, 8, PRIx8, expected_st4_2, CMT);
++  CHECK(TEST_MSG, int, 16, 4, PRIx16, expected_st4_2, CMT);
++  CHECK(TEST_MSG, int, 32, 2, PRIx32, expected_st4_2, CMT);
++  CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected_st4_2, CMT);
++  CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected_st4_2, CMT);
++  CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected_st4_2, CMT);
++  CHECK(TEST_MSG, poly, 8, 8, PRIx8, expected_st4_2, CMT);
++  CHECK(TEST_MSG, poly, 16, 4, PRIx16, expected_st4_2, CMT);
++  CHECK_FP(TEST_MSG, float, 32, 2, PRIx32, expected_st4_2, CMT);
++  CHECK(TEST_MSG, int, 16, 8, PRIx16, expected_st4_2, CMT);
++  CHECK(TEST_MSG, int, 32, 4, PRIx32, expected_st4_2, CMT);
++  CHECK(TEST_MSG, uint, 16, 8, PRIx16, expected_st4_2, CMT);
++  CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected_st4_2, CMT);
++  CHECK(TEST_MSG, poly, 16, 8, PRIx16, expected_st4_2, CMT);
++  CHECK_FP(TEST_MSG, float, 32, 4, PRIx32, expected_st4_2, CMT);
++
++  TEST_ALL_EXTRA_CHUNKS(4, 3);
++
++#undef CMT
++#define CMT " (chunk 3)"
++  CHECK(TEST_MSG, int, 8, 8, PRIx8, expected_st4_3, CMT);
++  CHECK(TEST_MSG, int, 16, 4, PRIx16, expected_st4_3, CMT);
++  CHECK(TEST_MSG, int, 32, 2, PRIx32, expected_st4_3, CMT);
++  CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected_st4_3, CMT);
++  CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected_st4_3, CMT);
++  CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected_st4_3, CMT);
++  CHECK(TEST_MSG, poly, 8, 8, PRIx8, expected_st4_3, CMT);
++  CHECK(TEST_MSG, poly, 16, 4, PRIx16, expected_st4_3, CMT);
++  CHECK_FP(TEST_MSG, float, 32, 2, PRIx32, expected_st4_3, CMT);
++  CHECK(TEST_MSG, int, 16, 8, PRIx16, expected_st4_3, CMT);
++  CHECK(TEST_MSG, int, 32, 4, PRIx32, expected_st4_3, CMT);
++  CHECK(TEST_MSG, uint, 16, 8, PRIx16, expected_st4_3, CMT);
++  CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected_st4_3, CMT);
++  CHECK(TEST_MSG, poly, 16, 8, PRIx16, expected_st4_3, CMT);
++  CHECK_FP(TEST_MSG, float, 32, 4, PRIx32, expected_st4_3, CMT);
++}
++
++int main (void)
++{
++  exec_vstX_lane ();
++  return 0;
++}
+--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vsub.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vsub.c
+@@ -18,10 +18,6 @@ VECT_VAR_DECL(expected,uint,8,8) [] = { 0xdc, 0xdd, 0xde, 0xdf,
+ VECT_VAR_DECL(expected,uint,16,4) [] = { 0xffd2, 0xffd3, 0xffd4, 0xffd5 };
+ VECT_VAR_DECL(expected,uint,32,2) [] = { 0xffffffc8, 0xffffffc9 };
+ VECT_VAR_DECL(expected,uint,64,1) [] = { 0xffffffffffffffee };
+-VECT_VAR_DECL(expected,poly,8,8) [] = { 0x33, 0x33, 0x33, 0x33,
+-					0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,poly,16,4) [] = { 0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,hfloat,32,2) [] = { 0x33333333, 0x33333333 };
+ VECT_VAR_DECL(expected,int,8,16) [] = { 0xfa, 0xfb, 0xfc, 0xfd,
+ 					0xfe, 0xff, 0x0, 0x1,
+ 					0x2, 0x3, 0x4, 0x5,
+@@ -41,14 +37,6 @@ VECT_VAR_DECL(expected,uint,32,4) [] = { 0xffffffb9, 0xffffffba,
+ 					 0xffffffbb, 0xffffffbc };
+ VECT_VAR_DECL(expected,uint,64,2) [] = { 0xffffffffffffffed,
+ 					 0xffffffffffffffee };
+-VECT_VAR_DECL(expected,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,poly,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333,
+-					 0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,hfloat,32,4) [] = { 0x33333333, 0x33333333,
+-					  0x33333333, 0x33333333 };
+ 
+ /* Expected results for float32 variants. Needs to be separated since
+    the generic test function does not test floating-point
+--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vsubl.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vsubl.c
+@@ -6,43 +6,13 @@
+ #define TEST_MSG "VSUBL"
+ 
+ /* Expected results.  */
+-VECT_VAR_DECL(expected,int,8,8) [] = { 0x33, 0x33, 0x33, 0x33,
+-				       0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,int,16,4) [] = { 0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,int,32,2) [] = { 0x33333333, 0x33333333 };
+-VECT_VAR_DECL(expected,int,64,1) [] = { 0x3333333333333333 };
+-VECT_VAR_DECL(expected,uint,8,8) [] = { 0x33, 0x33, 0x33, 0x33,
+-					0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,uint,16,4) [] = { 0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,uint,32,2) [] = { 0x33333333, 0x33333333 };
+-VECT_VAR_DECL(expected,uint,64,1) [] = { 0x3333333333333333 };
+-VECT_VAR_DECL(expected,poly,8,8) [] = { 0x33, 0x33, 0x33, 0x33,
+-					0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,poly,16,4) [] = { 0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,hfloat,32,2) [] = { 0x33333333, 0x33333333 };
+-VECT_VAR_DECL(expected,int,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-					0x33, 0x33, 0x33, 0x33,
+-					0x33, 0x33, 0x33, 0x33,
+-					0x33, 0x33, 0x33, 0x33 };
+ VECT_VAR_DECL(expected,int,16,8) [] = { 0xfffd, 0xfffe, 0xffff, 0x0,
+ 					0x1, 0x2, 0x3, 0x4 };
+ VECT_VAR_DECL(expected,int,32,4) [] = { 0xfffffffe, 0xffffffff, 0x0, 0x1 };
+ VECT_VAR_DECL(expected,int,64,2) [] = { 0x0, 0x1 };
+-VECT_VAR_DECL(expected,uint,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33 };
+ VECT_VAR_DECL(expected,uint,16,8) [] = { 0xfffd, 0xfffe, 0xffff, 0x0,
+ 					 0x1, 0x2, 0x3, 0x4 };
+ VECT_VAR_DECL(expected,uint,32,4) [] = { 0xffffffff, 0x0, 0x1, 0x2 };
+ VECT_VAR_DECL(expected,uint,64,2) [] = { 0x0, 0x1 };
+-VECT_VAR_DECL(expected,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,poly,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333,
+-					 0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,hfloat,32,4) [] = { 0x33333333, 0x33333333,
+-					   0x33333333, 0x33333333 };
+ 
+ #include "vXXXl.inc"
+--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vsubw.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vsubw.c
+@@ -6,45 +6,15 @@
+ #define TEST_MSG "VSUBW"
+ 
+ /* Expected results.  */
+-VECT_VAR_DECL(expected,int,8,8) [] = { 0x33, 0x33, 0x33, 0x33,
+-				       0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,int,16,4) [] = { 0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,int,32,2) [] = { 0x33333333, 0x33333333 };
+-VECT_VAR_DECL(expected,int,64,1) [] = { 0x3333333333333333 };
+-VECT_VAR_DECL(expected,uint,8,8) [] = { 0x33, 0x33, 0x33, 0x33,
+-					0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,uint,16,4) [] = { 0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,uint,32,2) [] = { 0x33333333, 0x33333333 };
+-VECT_VAR_DECL(expected,uint,64,1) [] = { 0x3333333333333333 };
+-VECT_VAR_DECL(expected,poly,8,8) [] = { 0x33, 0x33, 0x33, 0x33,
+-					0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,poly,16,4) [] = { 0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,hfloat,32,2) [] = { 0x33333333, 0x33333333 };
+-VECT_VAR_DECL(expected,int,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-					0x33, 0x33, 0x33, 0x33,
+-					0x33, 0x33, 0x33, 0x33,
+-					0x33, 0x33, 0x33, 0x33 };
+ VECT_VAR_DECL(expected,int,16,8) [] = { 0xfffd, 0xfffe, 0xffff, 0x0,
+ 					0x1, 0x2, 0x3, 0x4 };
+ VECT_VAR_DECL(expected,int,32,4) [] = { 0xfffffffe, 0xffffffff, 0x0, 0x1 };
+ VECT_VAR_DECL(expected,int,64,2) [] = { 0x0, 0x1 };
+-VECT_VAR_DECL(expected,uint,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33 };
+ VECT_VAR_DECL(expected,uint,16,8) [] = { 0xfefd, 0xfefe, 0xfeff, 0xff00,
+ 					 0xff01, 0xff02, 0xff03, 0xff04 };
+ VECT_VAR_DECL(expected,uint,32,4) [] = { 0xfffeffff, 0xffff0000,
+ 					 0xffff0001, 0xffff0002 };
+ VECT_VAR_DECL(expected,uint,64,2) [] = { 0xffffffff00000000,
+ 					 0xffffffff00000001 };
+-VECT_VAR_DECL(expected,poly,8,16) [] = { 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33,
+-					 0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected,poly,16,8) [] = { 0x3333, 0x3333, 0x3333, 0x3333,
+-					 0x3333, 0x3333, 0x3333, 0x3333 };
+-VECT_VAR_DECL(expected,hfloat,32,4) [] = { 0x33333333, 0x33333333,
+-					   0x33333333, 0x33333333 };
+ 
+ #include "vXXXw.inc"
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vtbX.c
+@@ -0,0 +1,289 @@
++#include <arm_neon.h>
++#include "arm-neon-ref.h"
++#include "compute-ref-data.h"
++
++/* Expected results for vtbl1.  */
++VECT_VAR_DECL(expected_vtbl1,int,8,8) [] = { 0x0, 0xf2, 0xf2, 0xf2,
++					     0x0, 0x0, 0xf2, 0xf2 };
++VECT_VAR_DECL(expected_vtbl1,uint,8,8) [] = { 0x0, 0xf3, 0xf3, 0xf3,
++					      0x0, 0x0, 0xf3, 0xf3 };
++VECT_VAR_DECL(expected_vtbl1,poly,8,8) [] = { 0x0, 0xf3, 0xf3, 0xf3,
++					      0x0, 0x0, 0xf3, 0xf3 };
++
++/* Expected results for vtbl2.  */
++VECT_VAR_DECL(expected_vtbl2,int,8,8) [] = { 0xf6, 0xf3, 0xf3, 0xf3,
++					     0x0, 0x0, 0xf3, 0xf3 };
++VECT_VAR_DECL(expected_vtbl2,uint,8,8) [] = { 0xf6, 0xf5, 0xf5, 0xf5,
++					      0x0, 0x0, 0xf5, 0xf5 };
++VECT_VAR_DECL(expected_vtbl2,poly,8,8) [] = { 0xf6, 0xf5, 0xf5, 0xf5,
++					      0x0, 0x0, 0xf5, 0xf5 };
++
++/* Expected results for vtbl3.  */
++VECT_VAR_DECL(expected_vtbl3,int,8,8) [] = { 0xf8, 0xf4, 0xf4, 0xf4,
++					     0xff, 0x0, 0xf4, 0xf4 };
++VECT_VAR_DECL(expected_vtbl3,uint,8,8) [] = { 0xf8, 0xf7, 0xf7, 0xf7,
++					      0xff, 0x0, 0xf7, 0xf7 };
++VECT_VAR_DECL(expected_vtbl3,poly,8,8) [] = { 0xf8, 0xf7, 0xf7, 0xf7,
++					      0xff, 0x0, 0xf7, 0xf7 };
++
++/* Expected results for vtbl4.  */
++VECT_VAR_DECL(expected_vtbl4,int,8,8) [] = { 0xfa, 0xf5, 0xf5, 0xf5,
++					    0x3, 0x0, 0xf5, 0xf5 };
++VECT_VAR_DECL(expected_vtbl4,uint,8,8) [] = { 0xfa, 0xf9, 0xf9, 0xf9,
++					     0x3, 0x0, 0xf9, 0xf9 };
++VECT_VAR_DECL(expected_vtbl4,poly,8,8) [] = { 0xfa, 0xf9, 0xf9, 0xf9,
++					     0x3, 0x0, 0xf9, 0xf9 };
++
++/* Expected results for vtbx1.  */
++VECT_VAR_DECL(expected_vtbx1,int,8,8) [] = { 0x33, 0xf2, 0xf2, 0xf2,
++					    0x33, 0x33, 0xf2, 0xf2 };
++VECT_VAR_DECL(expected_vtbx1,uint,8,8) [] = { 0xcc, 0xf3, 0xf3, 0xf3,
++					     0xcc, 0xcc, 0xf3, 0xf3 };
++VECT_VAR_DECL(expected_vtbx1,poly,8,8) [] = { 0xcc, 0xf3, 0xf3, 0xf3,
++					     0xcc, 0xcc, 0xf3, 0xf3 };
++
++/* Expected results for vtbx2.  */
++VECT_VAR_DECL(expected_vtbx2,int,8,8) [] = { 0xf6, 0xf3, 0xf3, 0xf3,
++					    0x33, 0x33, 0xf3, 0xf3 };
++VECT_VAR_DECL(expected_vtbx2,uint,8,8) [] = { 0xf6, 0xf5, 0xf5, 0xf5,
++					     0xcc, 0xcc, 0xf5, 0xf5 };
++VECT_VAR_DECL(expected_vtbx2,poly,8,8) [] = { 0xf6, 0xf5, 0xf5, 0xf5,
++					     0xcc, 0xcc, 0xf5, 0xf5 };
++
++/* Expected results for vtbx3.  */
++VECT_VAR_DECL(expected_vtbx3,int,8,8) [] = { 0xf8, 0xf4, 0xf4, 0xf4,
++					    0xff, 0x33, 0xf4, 0xf4 };
++VECT_VAR_DECL(expected_vtbx3,uint,8,8) [] = { 0xf8, 0xf7, 0xf7, 0xf7,
++					     0xff, 0xcc, 0xf7, 0xf7 };
++VECT_VAR_DECL(expected_vtbx3,poly,8,8) [] = { 0xf8, 0xf7, 0xf7, 0xf7,
++					     0xff, 0xcc, 0xf7, 0xf7 };
++
++/* Expected results for vtbx4.  */
++VECT_VAR_DECL(expected_vtbx4,int,8,8) [] = { 0xfa, 0xf5, 0xf5, 0xf5,
++					     0x3, 0x33, 0xf5, 0xf5 };
++VECT_VAR_DECL(expected_vtbx4,uint,8,8) [] = { 0xfa, 0xf9, 0xf9, 0xf9,
++					      0x3, 0xcc, 0xf9, 0xf9 };
++VECT_VAR_DECL(expected_vtbx4,poly,8,8) [] = { 0xfa, 0xf9, 0xf9, 0xf9,
++					      0x3, 0xcc, 0xf9, 0xf9 };
++
++void exec_vtbX (void)
++{
++  int i;
++
++  /* In this case, input variables are arrays of vectors.  */
++#define DECL_VTBX(T1, W, N, X)						\
++  VECT_ARRAY_TYPE(T1, W, N, X) VECT_ARRAY_VAR(table_vector, T1, W, N, X)
++
++  /* The vtbl1 variant is different from vtbl{2,3,4} because it takes a
++     vector as 1st param, instead of an array of vectors.  */
++#define TEST_VTBL1(T1, T2, T3, W, N)			\
++  VECT_VAR(table_vector, T1, W, N) =			\
++    vld1##_##T2##W((T1##W##_t *)lookup_table);		\
++							\
++  VECT_VAR(vector_res, T1, W, N) =			\
++    vtbl1_##T2##W(VECT_VAR(table_vector, T1, W, N),	\
++		  VECT_VAR(vector, T3, W, N));		\
++  vst1_##T2##W(VECT_VAR(result, T1, W, N),		\
++	       VECT_VAR(vector_res, T1, W, N));
++
++#define TEST_VTBLX(T1, T2, T3, W, N, X)					\
++  VECT_ARRAY_VAR(table_vector, T1, W, N, X) =				\
++    vld##X##_##T2##W((T1##W##_t *)lookup_table);			\
++									\
++  VECT_VAR(vector_res, T1, W, N) =					\
++    vtbl##X##_##T2##W(VECT_ARRAY_VAR(table_vector, T1, W, N, X),	\
++		      VECT_VAR(vector, T3, W, N));			\
++  vst1_##T2##W(VECT_VAR(result, T1, W, N),				\
++	       VECT_VAR(vector_res, T1, W, N));
++
++  /* We need to define a lookup table.  */
++  uint8_t lookup_table[32];
++
++  DECL_VARIABLE(vector, int, 8, 8);
++  DECL_VARIABLE(vector, uint, 8, 8);
++  DECL_VARIABLE(vector, poly, 8, 8);
++  DECL_VARIABLE(vector_res, int, 8, 8);
++  DECL_VARIABLE(vector_res, uint, 8, 8);
++  DECL_VARIABLE(vector_res, poly, 8, 8);
++
++  /* For vtbl1.  */
++  DECL_VARIABLE(table_vector, int, 8, 8);
++  DECL_VARIABLE(table_vector, uint, 8, 8);
++  DECL_VARIABLE(table_vector, poly, 8, 8);
++
++  /* For vtbx*.  */
++  DECL_VARIABLE(default_vector, int, 8, 8);
++  DECL_VARIABLE(default_vector, uint, 8, 8);
++  DECL_VARIABLE(default_vector, poly, 8, 8);
++
++  /* We need only 8 bits variants.  */
++#define DECL_ALL_VTBLX(X)			\
++  DECL_VTBX(int, 8, 8, X);			\
++  DECL_VTBX(uint, 8, 8, X);			\
++  DECL_VTBX(poly, 8, 8, X)
++
++#define TEST_ALL_VTBL1()			\
++  TEST_VTBL1(int, s, int, 8, 8);		\
++  TEST_VTBL1(uint, u, uint, 8, 8);		\
++  TEST_VTBL1(poly, p, uint, 8, 8)
++
++#define TEST_ALL_VTBLX(X)			\
++  TEST_VTBLX(int, s, int, 8, 8, X);		\
++  TEST_VTBLX(uint, u, uint, 8, 8, X);		\
++  TEST_VTBLX(poly, p, uint, 8, 8, X)
++
++  /* Declare the temporary buffers / variables.  */
++  DECL_ALL_VTBLX(2);
++  DECL_ALL_VTBLX(3);
++  DECL_ALL_VTBLX(4);
++
++  /* Fill the lookup table.  */
++  for (i=0; i<32; i++) {
++    lookup_table[i] = i-15;
++  }
++
++  /* Choose init value arbitrarily, will be used as table index.  */
++  VDUP(vector, , int, s, 8, 8, 1);
++  VDUP(vector, , uint, u, 8, 8, 2);
++  VDUP(vector, , poly, p, 8, 8, 2);
++
++  /* To ensure coverage, add some indexes larger than 8,16 and 32
++     except: lane 0 (by 6), lane 1 (by 8) and lane 2 (by 9).  */
++  VSET_LANE(vector, , int, s, 8, 8, 0, 10);
++  VSET_LANE(vector, , int, s, 8, 8, 4, 20);
++  VSET_LANE(vector, , int, s, 8, 8, 5, 40);
++  VSET_LANE(vector, , uint, u, 8, 8, 0, 10);
++  VSET_LANE(vector, , uint, u, 8, 8, 4, 20);
++  VSET_LANE(vector, , uint, u, 8, 8, 5, 40);
++  VSET_LANE(vector, , poly, p, 8, 8, 0, 10);
++  VSET_LANE(vector, , poly, p, 8, 8, 4, 20);
++  VSET_LANE(vector, , poly, p, 8, 8, 5, 40);
++
++
++  /* Check vtbl1.  */
++  clean_results ();
++#define TEST_MSG "VTBL1"
++  TEST_ALL_VTBL1();
++
++  CHECK(TEST_MSG, int, 8, 8, PRIx8, expected_vtbl1, "");
++  CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected_vtbl1, "");
++  CHECK(TEST_MSG, poly, 8, 8, PRIx8, expected_vtbl1, "");
++
++  /* Check vtbl2.  */
++  clean_results ();
++#undef TEST_MSG
++#define TEST_MSG "VTBL2"
++  TEST_ALL_VTBLX(2);
++
++  CHECK(TEST_MSG, int, 8, 8, PRIx8, expected_vtbl2, "");
++  CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected_vtbl2, "");
++  CHECK(TEST_MSG, poly, 8, 8, PRIx8, expected_vtbl2, "");
++
++  /* Check vtbl3.  */
++  clean_results ();
++#undef TEST_MSG
++#define TEST_MSG "VTBL3"
++  TEST_ALL_VTBLX(3);
++
++  CHECK(TEST_MSG, int, 8, 8, PRIx8, expected_vtbl3, "");
++  CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected_vtbl3, "");
++  CHECK(TEST_MSG, poly, 8, 8, PRIx8, expected_vtbl3, "");
++
++  /* Check vtbl4.  */
++  clean_results ();
++#undef TEST_MSG
++#define TEST_MSG "VTBL4"
++  TEST_ALL_VTBLX(4);
++
++  CHECK(TEST_MSG, int, 8, 8, PRIx8, expected_vtbl4, "");
++  CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected_vtbl4, "");
++  CHECK(TEST_MSG, poly, 8, 8, PRIx8, expected_vtbl4, "");
++
++
++  /* Now test VTBX.  */
++
++  /* The vtbx1 variant is different from vtbx{2,3,4} because it takes a
++     vector as 1st param, instead of an array of vectors.  */
++#define TEST_VTBX1(T1, T2, T3, W, N)			\
++  VECT_VAR(table_vector, T1, W, N) =			\
++    vld1##_##T2##W((T1##W##_t *)lookup_table);		\
++							\
++  VECT_VAR(vector_res, T1, W, N) =			\
++    vtbx1_##T2##W(VECT_VAR(default_vector, T1, W, N),	\
++		  VECT_VAR(table_vector, T1, W, N),	\
++		  VECT_VAR(vector, T3, W, N));		\
++  vst1_##T2##W(VECT_VAR(result, T1, W, N),		\
++	       VECT_VAR(vector_res, T1, W, N));
++
++#define TEST_VTBXX(T1, T2, T3, W, N, X)					\
++  VECT_ARRAY_VAR(table_vector, T1, W, N, X) =				\
++    vld##X##_##T2##W((T1##W##_t *)lookup_table);			\
++									\
++  VECT_VAR(vector_res, T1, W, N) =					\
++    vtbx##X##_##T2##W(VECT_VAR(default_vector, T1, W, N),		\
++		      VECT_ARRAY_VAR(table_vector, T1, W, N, X),	\
++		      VECT_VAR(vector, T3, W, N));			\
++  vst1_##T2##W(VECT_VAR(result, T1, W, N),				\
++	       VECT_VAR(vector_res, T1, W, N));
++
++#define TEST_ALL_VTBX1()			\
++  TEST_VTBX1(int, s, int, 8, 8);		\
++  TEST_VTBX1(uint, u, uint, 8, 8);		\
++  TEST_VTBX1(poly, p, uint, 8, 8)
++
++#define TEST_ALL_VTBXX(X)			\
++  TEST_VTBXX(int, s, int, 8, 8, X);		\
++  TEST_VTBXX(uint, u, uint, 8, 8, X);		\
++  TEST_VTBXX(poly, p, uint, 8, 8, X)
++
++  /* Choose init value arbitrarily, will be used as default value.  */
++  VDUP(default_vector, , int, s, 8, 8, 0x33);
++  VDUP(default_vector, , uint, u, 8, 8, 0xCC);
++  VDUP(default_vector, , poly, p, 8, 8, 0xCC);
++
++  /* Check vtbx1.  */
++  clean_results ();
++#undef TEST_MSG
++#define TEST_MSG "VTBX1"
++  TEST_ALL_VTBX1();
++
++  CHECK(TEST_MSG, int, 8, 8, PRIx8, expected_vtbx1, "");
++  CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected_vtbx1, "");
++  CHECK(TEST_MSG, poly, 8, 8, PRIx8, expected_vtbx1, "");
++
++  /* Check vtbx2.  */
++  clean_results ();
++#undef TEST_MSG
++#define TEST_MSG "VTBX2"
++  TEST_ALL_VTBXX(2);
++
++  CHECK(TEST_MSG, int, 8, 8, PRIx8, expected_vtbx2, "");
++  CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected_vtbx2, "");
++  CHECK(TEST_MSG, poly, 8, 8, PRIx8, expected_vtbx2, "");
++
++  /* Check vtbx3.  */
++  clean_results ();
++#undef TEST_MSG
++#define TEST_MSG "VTBX3"
++  TEST_ALL_VTBXX(3);
++
++  CHECK(TEST_MSG, int, 8, 8, PRIx8, expected_vtbx3, "");
++  CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected_vtbx3, "");
++  CHECK(TEST_MSG, poly, 8, 8, PRIx8, expected_vtbx3, "");
++
++  /* Check vtbx4.  */
++  clean_results ();
++#undef TEST_MSG
++#define TEST_MSG "VTBX4"
++  TEST_ALL_VTBXX(4);
++
++  CHECK(TEST_MSG, int, 8, 8, PRIx8, expected_vtbx4, "");
++  CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected_vtbx4, "");
++  CHECK(TEST_MSG, poly, 8, 8, PRIx8, expected_vtbx4, "");
++}
++
++int main (void)
++{
++  exec_vtbX ();
++  return 0;
++}
+--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vtrn.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vtrn.c
+@@ -8,12 +8,10 @@ VECT_VAR_DECL(expected0,int,8,8) [] = { 0xf0, 0xf1, 0x11, 0x11,
+ 					0xf2, 0xf3, 0x11, 0x11 };
+ VECT_VAR_DECL(expected0,int,16,4) [] = { 0xfff0, 0xfff1, 0x22, 0x22 };
+ VECT_VAR_DECL(expected0,int,32,2) [] = { 0xfffffff0, 0xfffffff1 };
+-VECT_VAR_DECL(expected0,int,64,1) [] = { 0x3333333333333333 };
+ VECT_VAR_DECL(expected0,uint,8,8) [] = { 0xf0, 0xf1, 0x55, 0x55,
+ 					 0xf2, 0xf3, 0x55, 0x55 };
+ VECT_VAR_DECL(expected0,uint,16,4) [] = { 0xfff0, 0xfff1, 0x66, 0x66 };
+ VECT_VAR_DECL(expected0,uint,32,2) [] = { 0xfffffff0, 0xfffffff1 };
+-VECT_VAR_DECL(expected0,uint,64,1) [] = { 0x3333333333333333 };
+ VECT_VAR_DECL(expected0,poly,8,8) [] = { 0xf0, 0xf1, 0x55, 0x55,
+ 					 0xf2, 0xf3, 0x55, 0x55 };
+ VECT_VAR_DECL(expected0,poly,16,4) [] = { 0xfff0, 0xfff1, 0x66, 0x66 };
+@@ -25,8 +23,6 @@ VECT_VAR_DECL(expected0,int,8,16) [] = { 0xf0, 0xf1, 0x11, 0x11,
+ VECT_VAR_DECL(expected0,int,16,8) [] = { 0xfff0, 0xfff1, 0x22, 0x22,
+ 					 0xfff2, 0xfff3, 0x22, 0x22 };
+ VECT_VAR_DECL(expected0,int,32,4) [] = { 0xfffffff0, 0xfffffff1, 0x33, 0x33 };
+-VECT_VAR_DECL(expected0,int,64,2) [] = { 0x3333333333333333,
+-					 0x3333333333333333 };
+ VECT_VAR_DECL(expected0,uint,8,16) [] = { 0xf0, 0xf1, 0x55, 0x55,
+ 					  0xf2, 0xf3, 0x55, 0x55,
+ 					  0xf4, 0xf5, 0x55, 0x55,
+@@ -34,8 +30,6 @@ VECT_VAR_DECL(expected0,uint,8,16) [] = { 0xf0, 0xf1, 0x55, 0x55,
+ VECT_VAR_DECL(expected0,uint,16,8) [] = { 0xfff0, 0xfff1, 0x66, 0x66,
+ 					  0xfff2, 0xfff3, 0x66, 0x66 };
+ VECT_VAR_DECL(expected0,uint,32,4) [] = { 0xfffffff0, 0xfffffff1, 0x77, 0x77 };
+-VECT_VAR_DECL(expected0,uint,64,2) [] = { 0x3333333333333333,
+-					  0x3333333333333333 };
+ VECT_VAR_DECL(expected0,poly,8,16) [] = { 0xf0, 0xf1, 0x55, 0x55,
+ 					  0xf2, 0xf3, 0x55, 0x55,
+ 					  0xf4, 0xf5, 0x55, 0x55,
+@@ -50,12 +44,10 @@ VECT_VAR_DECL(expected1,int,8,8) [] = { 0xf4, 0xf5, 0x11, 0x11,
+ 					0xf6, 0xf7, 0x11, 0x11 };
+ VECT_VAR_DECL(expected1,int,16,4) [] = { 0xfff2, 0xfff3, 0x22, 0x22 };
+ VECT_VAR_DECL(expected1,int,32,2) [] = { 0x33, 0x33 };
+-VECT_VAR_DECL(expected1,int,64,1) [] = { 0x3333333333333333 };
+ VECT_VAR_DECL(expected1,uint,8,8) [] = { 0xf4, 0xf5, 0x55, 0x55,
+ 					 0xf6, 0xf7, 0x55, 0x55 };
+ VECT_VAR_DECL(expected1,uint,16,4) [] = { 0xfff2, 0xfff3, 0x66, 0x66 };
+ VECT_VAR_DECL(expected1,uint,32,2) [] = { 0x77, 0x77 };
+-VECT_VAR_DECL(expected1,uint,64,1) [] = { 0x3333333333333333 };
+ VECT_VAR_DECL(expected1,poly,8,8) [] = { 0xf4, 0xf5, 0x55, 0x55,
+ 					 0xf6, 0xf7, 0x55, 0x55 };
+ VECT_VAR_DECL(expected1,poly,16,4) [] = { 0xfff2, 0xfff3, 0x66, 0x66 };
+@@ -67,8 +59,6 @@ VECT_VAR_DECL(expected1,int,8,16) [] = { 0xf8, 0xf9, 0x11, 0x11,
+ VECT_VAR_DECL(expected1,int,16,8) [] = { 0xfff4, 0xfff5, 0x22, 0x22,
+ 					 0xfff6, 0xfff7, 0x22, 0x22 };
+ VECT_VAR_DECL(expected1,int,32,4) [] = { 0xfffffff2, 0xfffffff3, 0x33, 0x33 };
+-VECT_VAR_DECL(expected1,int,64,2) [] = { 0x3333333333333333,
+-					 0x3333333333333333 };
+ VECT_VAR_DECL(expected1,uint,8,16) [] = { 0xf8, 0xf9, 0x55, 0x55,
+ 					  0xfa, 0xfb, 0x55, 0x55,
+ 					  0xfc, 0xfd, 0x55, 0x55,
+@@ -76,8 +66,6 @@ VECT_VAR_DECL(expected1,uint,8,16) [] = { 0xf8, 0xf9, 0x55, 0x55,
+ VECT_VAR_DECL(expected1,uint,16,8) [] = { 0xfff4, 0xfff5, 0x66, 0x66,
+ 					  0xfff6, 0xfff7, 0x66, 0x66 };
+ VECT_VAR_DECL(expected1,uint,32,4) [] = { 0xfffffff2, 0xfffffff3, 0x77, 0x77 };
+-VECT_VAR_DECL(expected1,uint,64,2) [] = { 0x3333333333333333,
+-					  0x3333333333333333 };
+ VECT_VAR_DECL(expected1,poly,8,16) [] = { 0xf8, 0xf9, 0x55, 0x55,
+ 					  0xfa, 0xfb, 0x55, 0x55,
+ 					  0xfc, 0xfd, 0x55, 0x55,
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vtst.c
+@@ -0,0 +1,120 @@
++#include <arm_neon.h>
++#include "arm-neon-ref.h"
++#include "compute-ref-data.h"
++
++/* Expected results with signed input.  */
++VECT_VAR_DECL(expected_signed,uint,8,8) [] = { 0x0, 0xff, 0xff, 0xff,
++					       0xff, 0xff, 0xff, 0xff };
++VECT_VAR_DECL(expected_signed,uint,16,4) [] = { 0x0, 0xffff, 0x0, 0xffff };
++VECT_VAR_DECL(expected_signed,uint,32,2) [] = { 0x0, 0xffffffff };
++VECT_VAR_DECL(expected_signed,uint,8,16) [] = { 0x0, 0xff, 0xff, 0xff,
++						0xff, 0xff, 0xff, 0xff,
++						0xff, 0xff, 0xff, 0xff,
++						0xff, 0xff, 0xff, 0xff };
++VECT_VAR_DECL(expected_signed,uint,16,8) [] = { 0x0, 0xffff, 0x0, 0xffff,
++						0xffff, 0xffff, 0xffff, 0xffff };
++VECT_VAR_DECL(expected_signed,uint,32,4) [] = { 0x0, 0xffffffff,
++						0x0, 0xffffffff };
++
++/* Expected results with unsigned input.  */
++VECT_VAR_DECL(expected_unsigned,uint,8,8) [] = { 0x0, 0xff, 0xff, 0xff,
++						 0xff, 0xff, 0xff, 0xff };
++VECT_VAR_DECL(expected_unsigned,uint,16,4) [] = { 0x0, 0xffff, 0x0, 0xffff };
++VECT_VAR_DECL(expected_unsigned,uint,32,2) [] = { 0x0, 0xffffffff };
++VECT_VAR_DECL(expected_unsigned,uint,8,16) [] = { 0x0, 0xff, 0xff, 0xff,
++						  0xff, 0xff, 0xff, 0xff,
++						  0xff, 0xff, 0xff, 0xff,
++						  0xff, 0xff, 0xff, 0xff };
++VECT_VAR_DECL(expected_unsigned,uint,16,8) [] = { 0x0, 0xffff,
++						  0x0, 0xffff,
++						  0xffff, 0xffff,
++						  0xffff, 0xffff };
++VECT_VAR_DECL(expected_unsigned,uint,32,4) [] = { 0x0, 0xffffffff,
++						  0x0, 0xffffffff };
++
++#ifndef INSN_NAME
++#define INSN_NAME vtst
++#define TEST_MSG "VTST/VTSTQ"
++#endif
++
++/* We can't use the standard ref_v_binary_op.c template because vtst
++   has no 64 bits variant, and outputs are always of uint type.  */
++#define FNNAME1(NAME) void exec_ ## NAME (void)
++#define FNNAME(NAME) FNNAME1(NAME)
++
++FNNAME (INSN_NAME)
++{
++  /* Basic test: y=OP(x,x), then store the result.  */
++#define TEST_BINARY_OP1(INSN, Q, T1, T2, W, N)		\
++  VECT_VAR(vector_res, uint, W, N) =			\
++    INSN##Q##_##T2##W(VECT_VAR(vector, T1, W, N),	\
++		      VECT_VAR(vector2, T1, W, N));	\
++  vst1##Q##_u##W(VECT_VAR(result, uint, W, N),		\
++		 VECT_VAR(vector_res, uint, W, N))
++
++#define TEST_BINARY_OP(INSN, Q, T1, T2, W, N)	\
++  TEST_BINARY_OP1(INSN, Q, T1, T2, W, N)	\
++
++  DECL_VARIABLE_ALL_VARIANTS(vector);
++  DECL_VARIABLE_ALL_VARIANTS(vector2);
++  DECL_VARIABLE_UNSIGNED_VARIANTS(vector_res);
++
++
++  clean_results ();
++
++  /* Initialize input "vector" from "buffer".  */
++  TEST_MACRO_ALL_VARIANTS_2_5(VLOAD, vector, buffer);
++
++  /* Choose init value arbitrarily, will be used as comparison
++     value.  */
++  VDUP(vector2, , int, s, 8, 8, 15);
++  VDUP(vector2, , int, s, 16, 4, 5);
++  VDUP(vector2, , int, s, 32, 2, 1);
++  VDUP(vector2, , uint, u, 8, 8, 15);
++  VDUP(vector2, , uint, u, 16, 4, 5);
++  VDUP(vector2, , uint, u, 32, 2, 1);
++  VDUP(vector2, q, int, s, 8, 16, 15);
++  VDUP(vector2, q, int, s, 16, 8, 5);
++  VDUP(vector2, q, int, s, 32, 4, 1);
++  VDUP(vector2, q, uint, u, 8, 16, 15);
++  VDUP(vector2, q, uint, u, 16, 8, 5);
++  VDUP(vector2, q, uint, u, 32, 4, 1);
++
++#define TEST_MACRO_NO64BIT_VARIANT_1_5(MACRO, VAR, T1, T2)	\
++  MACRO(VAR, , T1, T2, 8, 8);					\
++  MACRO(VAR, , T1, T2, 16, 4);					\
++  MACRO(VAR, , T1, T2, 32, 2);					\
++  MACRO(VAR, q, T1, T2, 8, 16);					\
++  MACRO(VAR, q, T1, T2, 16, 8);					\
++  MACRO(VAR, q, T1, T2, 32, 4)
++
++  /* Split the test, as both signed and unsigned variants output their
++     result in an unsigned form (thus the same output variable is used
++     in these tests).  */
++  TEST_MACRO_NO64BIT_VARIANT_1_5(TEST_BINARY_OP, INSN_NAME, int, s);
++
++#define CMT " (signed input)"
++  CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected_signed, CMT);
++  CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected_signed, CMT);
++  CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected_signed, CMT);
++  CHECK(TEST_MSG, uint, 8, 16, PRIx8, expected_signed, CMT);
++  CHECK(TEST_MSG, uint, 16, 8, PRIx16, expected_signed, CMT);
++  CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected_signed, CMT);
++
++  TEST_MACRO_NO64BIT_VARIANT_1_5(TEST_BINARY_OP, INSN_NAME, uint, u);
++
++#undef CMT
++#define CMT " (unsigned input)"
++  CHECK(TEST_MSG, uint, 8, 8, PRIx8, expected_unsigned, CMT);
++  CHECK(TEST_MSG, uint, 16, 4, PRIx16, expected_unsigned, CMT);
++  CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected_unsigned, CMT);
++  CHECK(TEST_MSG, uint, 8, 16, PRIx8, expected_unsigned, CMT);
++  CHECK(TEST_MSG, uint, 16, 8, PRIx16, expected_unsigned, CMT);
++  CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected_unsigned, CMT);
++}
++
++int main (void)
++{
++  exec_vtst ();
++  return 0;
++}
+--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vuzp.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vuzp.c
+@@ -9,14 +9,12 @@ VECT_VAR_DECL(expected0,int,8,8) [] = { 0xf0, 0xf1, 0xf2, 0xf3,
+ VECT_VAR_DECL(expected0,int,16,4) [] = { 0xfff0, 0xfff1,
+ 					 0xfff2, 0xfff3 };
+ VECT_VAR_DECL(expected0,int,32,2) [] = { 0xfffffff0, 0xfffffff1 };
+-VECT_VAR_DECL(expected0,int,64,1) [] = { 0x3333333333333333 };
+ VECT_VAR_DECL(expected0,uint,8,8) [] = { 0xf0, 0xf1, 0xf2, 0xf3,
+ 					 0xf4, 0xf5, 0xf6, 0xf7 };
+ VECT_VAR_DECL(expected0,uint,16,4) [] = { 0xfff0, 0xfff1,
+ 					  0xfff2, 0xfff3 };
+ VECT_VAR_DECL(expected0,uint,32,2) [] = { 0xfffffff0,
+ 					  0xfffffff1 };
+-VECT_VAR_DECL(expected0,uint,64,1) [] = { 0x3333333333333333 };
+ VECT_VAR_DECL(expected0,poly,8,8) [] = { 0xf0, 0xf1, 0xf2, 0xf3,
+ 					 0xf4, 0xf5, 0xf6, 0xf7 };
+ VECT_VAR_DECL(expected0,poly,16,4) [] = { 0xfff0, 0xfff1,
+@@ -32,8 +30,6 @@ VECT_VAR_DECL(expected0,int,16,8) [] = { 0xfff0, 0xfff1,
+ 					 0xfff6, 0xfff7 };
+ VECT_VAR_DECL(expected0,int,32,4) [] = { 0xfffffff0, 0xfffffff1,
+ 					 0xfffffff2, 0xfffffff3 };
+-VECT_VAR_DECL(expected0,int,64,2) [] = { 0x3333333333333333,
+-					 0x3333333333333333 };
+ VECT_VAR_DECL(expected0,uint,8,16) [] = { 0xf0, 0xf1, 0xf2, 0xf3,
+ 					  0xf4, 0xf5, 0xf6, 0xf7,
+ 					  0xf8, 0xf9, 0xfa, 0xfb,
+@@ -44,8 +40,6 @@ VECT_VAR_DECL(expected0,uint,16,8) [] = { 0xfff0, 0xfff1,
+ 					  0xfff6, 0xfff7 };
+ VECT_VAR_DECL(expected0,uint,32,4) [] = { 0xfffffff0, 0xfffffff1,
+ 					  0xfffffff2, 0xfffffff3 };
+-VECT_VAR_DECL(expected0,uint,64,2) [] = { 0x3333333333333333,
+-					  0x3333333333333333 };
+ VECT_VAR_DECL(expected0,poly,8,16) [] = { 0xf0, 0xf1, 0xf2, 0xf3,
+ 					  0xf4, 0xf5, 0xf6, 0xf7,
+ 					  0xf8, 0xf9, 0xfa, 0xfb,
+@@ -62,12 +56,10 @@ VECT_VAR_DECL(expected1,int,8,8) [] = { 0x11, 0x11, 0x11, 0x11,
+ 					0x11, 0x11, 0x11, 0x11 };
+ VECT_VAR_DECL(expected1,int,16,4) [] = { 0x22, 0x22, 0x22, 0x22 };
+ VECT_VAR_DECL(expected1,int,32,2) [] = { 0x33, 0x33 };
+-VECT_VAR_DECL(expected1,int,64,1) [] = { 0x3333333333333333 };
+ VECT_VAR_DECL(expected1,uint,8,8) [] = { 0x55, 0x55, 0x55, 0x55,
+ 					 0x55, 0x55, 0x55, 0x55 };
+ VECT_VAR_DECL(expected1,uint,16,4) [] = { 0x66, 0x66, 0x66, 0x66 };
+ VECT_VAR_DECL(expected1,uint,32,2) [] = { 0x77, 0x77 };
+-VECT_VAR_DECL(expected1,uint,64,1) [] = { 0x3333333333333333 };
+ VECT_VAR_DECL(expected1,poly,8,8) [] = { 0x55, 0x55, 0x55, 0x55,
+ 					 0x55, 0x55, 0x55, 0x55 };
+ VECT_VAR_DECL(expected1,poly,16,4) [] = { 0x66, 0x66, 0x66, 0x66 };
+@@ -79,8 +71,6 @@ VECT_VAR_DECL(expected1,int,8,16) [] = { 0x11, 0x11, 0x11, 0x11,
+ VECT_VAR_DECL(expected1,int,16,8) [] = { 0x22, 0x22, 0x22, 0x22,
+ 					 0x22, 0x22, 0x22, 0x22 };
+ VECT_VAR_DECL(expected1,int,32,4) [] = { 0x33, 0x33, 0x33, 0x33 };
+-VECT_VAR_DECL(expected1,int,64,2) [] = { 0x3333333333333333,
+-					 0x3333333333333333 };
+ VECT_VAR_DECL(expected1,uint,8,16) [] = { 0x55, 0x55, 0x55, 0x55,
+ 					  0x55, 0x55, 0x55, 0x55,
+ 					  0x55, 0x55, 0x55, 0x55,
+@@ -88,8 +78,6 @@ VECT_VAR_DECL(expected1,uint,8,16) [] = { 0x55, 0x55, 0x55, 0x55,
+ VECT_VAR_DECL(expected1,uint,16,8) [] = { 0x66, 0x66, 0x66, 0x66,
+ 					  0x66, 0x66, 0x66, 0x66 };
+ VECT_VAR_DECL(expected1,uint,32,4) [] = { 0x77, 0x77, 0x77, 0x77 };
+-VECT_VAR_DECL(expected1,uint,64,2) [] = { 0x3333333333333333,
+-					  0x3333333333333333 };
+ VECT_VAR_DECL(expected1,poly,8,16) [] = { 0x55, 0x55, 0x55, 0x55,
+ 					  0x55, 0x55, 0x55, 0x55,
+ 					  0x55, 0x55, 0x55, 0x55,
+--- a/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vzip.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vzip.c
+@@ -9,13 +9,11 @@ VECT_VAR_DECL(expected0,int,8,8) [] = { 0xf0, 0xf4, 0x11, 0x11,
+ VECT_VAR_DECL(expected0,int,16,4) [] = { 0xfff0, 0xfff2,
+ 					 0x22, 0x22 };
+ VECT_VAR_DECL(expected0,int,32,2) [] = { 0xfffffff0, 0xfffffff1 };
+-VECT_VAR_DECL(expected0,int,64,1) [] = { 0x3333333333333333 };
+ VECT_VAR_DECL(expected0,uint,8,8) [] = { 0xf0, 0xf4, 0x55, 0x55,
+ 					 0xf1, 0xf5, 0x55, 0x55 };
+ VECT_VAR_DECL(expected0,uint,16,4) [] = { 0xfff0, 0xfff2,
+ 					  0x66, 0x66 };
+ VECT_VAR_DECL(expected0,uint,32,2) [] = { 0xfffffff0, 0xfffffff1 };
+-VECT_VAR_DECL(expected0,uint,64,1) [] = { 0x3333333333333333 };
+ VECT_VAR_DECL(expected0,poly,8,8) [] = { 0xf0, 0xf4, 0x55, 0x55,
+ 					 0xf1, 0xf5, 0x55, 0x55 };
+ VECT_VAR_DECL(expected0,poly,16,4) [] = { 0xfff0, 0xfff2,
+@@ -29,8 +27,6 @@ VECT_VAR_DECL(expected0,int,16,8) [] = { 0xfff0, 0xfff4, 0x22, 0x22,
+ 					 0xfff1, 0xfff5, 0x22, 0x22 };
+ VECT_VAR_DECL(expected0,int,32,4) [] = { 0xfffffff0, 0xfffffff2,
+ 					 0x33, 0x33 };
+-VECT_VAR_DECL(expected0,int,64,2) [] = { 0x3333333333333333,
+-					 0x3333333333333333 };
+ VECT_VAR_DECL(expected0,uint,8,16) [] = { 0xf0, 0xf8, 0x55, 0x55,
+ 					  0xf1, 0xf9, 0x55, 0x55,
+ 					  0xf2, 0xfa, 0x55, 0x55,
+@@ -39,8 +35,6 @@ VECT_VAR_DECL(expected0,uint,16,8) [] = { 0xfff0, 0xfff4, 0x66, 0x66,
+ 					  0xfff1, 0xfff5, 0x66, 0x66 };
+ VECT_VAR_DECL(expected0,uint,32,4) [] = { 0xfffffff0, 0xfffffff2,
+ 					  0x77, 0x77 };
+-VECT_VAR_DECL(expected0,uint,64,2) [] = { 0x3333333333333333,
+-					  0x3333333333333333 };
+ VECT_VAR_DECL(expected0,poly,8,16) [] = { 0xf0, 0xf8, 0x55, 0x55,
+ 					  0xf1, 0xf9, 0x55, 0x55,
+ 					  0xf2, 0xfa, 0x55, 0x55,
+@@ -56,13 +50,11 @@ VECT_VAR_DECL(expected1,int,8,8) [] = { 0xf2, 0xf6, 0x11, 0x11,
+ VECT_VAR_DECL(expected1,int,16,4) [] = { 0xfff1, 0xfff3,
+ 					 0x22, 0x22 };
+ VECT_VAR_DECL(expected1,int,32,2) [] = { 0x33, 0x33 };
+-VECT_VAR_DECL(expected1,int,64,1) [] = { 0x3333333333333333 };
+ VECT_VAR_DECL(expected1,uint,8,8) [] = { 0xf2, 0xf6, 0x55, 0x55,
+ 					 0xf3, 0xf7, 0x55, 0x55 };
+ VECT_VAR_DECL(expected1,uint,16,4) [] = { 0xfff1, 0xfff3,
+ 					  0x66, 0x66 };
+ VECT_VAR_DECL(expected1,uint,32,2) [] = { 0x77, 0x77 };
+-VECT_VAR_DECL(expected1,uint,64,1) [] = { 0x3333333333333333 };
+ VECT_VAR_DECL(expected1,poly,8,8) [] = { 0xf2, 0xf6, 0x55, 0x55,
+ 					 0xf3, 0xf7, 0x55, 0x55 };
+ VECT_VAR_DECL(expected1,poly,16,4) [] = { 0xfff1, 0xfff3,
+@@ -76,8 +68,6 @@ VECT_VAR_DECL(expected1,int,16,8) [] = { 0xfff2, 0xfff6, 0x22, 0x22,
+ 					 0xfff3, 0xfff7, 0x22, 0x22 };
+ VECT_VAR_DECL(expected1,int,32,4) [] = { 0xfffffff1, 0xfffffff3,
+ 					 0x33, 0x33 };
+-VECT_VAR_DECL(expected1,int,64,2) [] = { 0x3333333333333333,
+-					 0x3333333333333333 };
+ VECT_VAR_DECL(expected1,uint,8,16) [] = { 0xf4, 0xfc, 0x55, 0x55,
+ 					  0xf5, 0xfd, 0x55, 0x55,
+ 					  0xf6, 0xfe, 0x55, 0x55,
+@@ -86,8 +76,6 @@ VECT_VAR_DECL(expected1,uint,16,8) [] = { 0xfff2, 0xfff6, 0x66, 0x66,
+ 					  0xfff3, 0xfff7, 0x66, 0x66 };
+ VECT_VAR_DECL(expected1,uint,32,4) [] = { 0xfffffff1, 0xfffffff3,
+ 					  0x77, 0x77 };
+-VECT_VAR_DECL(expected1,uint,64,2) [] = { 0x3333333333333333,
+-					  0x3333333333333333 };
+ VECT_VAR_DECL(expected1,poly,8,16) [] = { 0xf4, 0xfc, 0x55, 0x55,
+ 					  0xf5, 0xfd, 0x55, 0x55,
+ 					  0xf6, 0xfe, 0x55, 0x55,
+--- a/src/gcc/testsuite/gcc.target/aarch64/aes_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/aes_1.c
+@@ -37,4 +37,3 @@ test_vaesimcq_u8 (uint8x16_t data)
+ /* { dg-final { scan-assembler-times "aesimc\\tv\[0-9\]+\.16b, v\[0-9\]+\.16b" 1 } } */
+ 
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/ands_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/ands_1.c
+@@ -12,7 +12,7 @@ ands_si_test1 (int a, int b, int c)
+   if (d == 0)
+     return a + c;
+   else
+-    return b + d + c;
++    return d;
+ }
+ 
+ int
+@@ -24,7 +24,7 @@ ands_si_test2 (int a, int b, int c)
+   if (d == 0)
+     return a + c;
+   else
+-    return b + d + c;
++    return d;
+ }
+ 
+ int
+@@ -36,7 +36,7 @@ ands_si_test3 (int a, int b, int c)
+   if (d == 0)
+     return a + c;
+   else
+-    return b + d + c;
++    return d;
+ }
+ 
+ typedef long long s64;
+@@ -50,7 +50,7 @@ ands_di_test1 (s64 a, s64 b, s64 c)
+   if (d == 0)
+     return a + c;
+   else
+-    return b + d + c;
++    return d;
+ }
+ 
+ s64
+@@ -62,7 +62,7 @@ ands_di_test2 (s64 a, s64 b, s64 c)
+   if (d == 0)
+     return a + c;
+   else
+-    return b + d + c;
++    return d;
+ }
+ 
+ s64
+@@ -74,7 +74,7 @@ ands_di_test3 (s64 a, s64 b, s64 c)
+   if (d == 0)
+     return a + c;
+   else
+-    return b + d + c;
++    return d;
+ }
+ 
+ int
+@@ -84,7 +84,7 @@ main ()
+   s64 y;
+ 
+   x = ands_si_test1 (29, 4, 5);
+-  if (x != 13)
++  if (x != (29 & 4))
+     abort ();
+ 
+   x = ands_si_test1 (5, 2, 20);
+@@ -92,7 +92,7 @@ main ()
+     abort ();
+ 
+   x = ands_si_test2 (29, 4, 5);
+-  if (x != 38)
++  if (x != (29 & 0xff))
+     abort ();
+ 
+   x = ands_si_test2 (1024, 2, 20);
+@@ -100,7 +100,7 @@ main ()
+     abort ();
+ 
+   x = ands_si_test3 (35, 4, 5);
+-  if (x != 41)
++  if (x != (35 & (4 << 3)))
+     abort ();
+ 
+   x = ands_si_test3 (5, 2, 20);
+@@ -111,7 +111,7 @@ main ()
+                      0x320000004ll,
+                      0x505050505ll);
+ 
+-  if (y != ((0x130000029ll & 0x320000004ll) + 0x320000004ll + 0x505050505ll))
++  if (y != ((0x130000029ll & 0x320000004ll)))
+     abort ();
+ 
+   y = ands_di_test1 (0x5000500050005ll,
+@@ -123,7 +123,7 @@ main ()
+   y = ands_di_test2 (0x130000029ll,
+                      0x320000004ll,
+                      0x505050505ll);
+-  if (y != ((0x130000029ll & 0xff) + 0x320000004ll + 0x505050505ll))
++  if (y != ((0x130000029ll & 0xff)))
+     abort ();
+ 
+   y = ands_di_test2 (0x130002900ll,
+@@ -135,8 +135,7 @@ main ()
+   y = ands_di_test3 (0x130000029ll,
+                      0x064000008ll,
+                      0x505050505ll);
+-  if (y != ((0x130000029ll & (0x064000008ll << 3))
+-	    + 0x064000008ll + 0x505050505ll))
++  if (y != ((0x130000029ll & (0x064000008ll << 3))))
+     abort ();
+ 
+   y = ands_di_test3 (0x130002900ll,
+@@ -148,4 +147,3 @@ main ()
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/ands_2.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/ands_2.c
+@@ -154,4 +154,3 @@ main ()
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/arm_align_max_pwr.c
+@@ -0,0 +1,23 @@
++/* { dg-do compile } */
++/* { dg-options "-O1" } */
++
++#define align (1ul << __ARM_ALIGN_MAX_PWR)
++static int x __attribute__ ((aligned (align)));
++static int y __attribute__ ((aligned (align)));
++
++extern void foo (int *x, int *y);
++extern int bar (int x, int y);
++
++int
++dummy ()
++{
++  int result;
++
++  foo (&x, &y);
++  result = bar (x, y);
++
++  return result;
++}
++
++/* { dg-final { scan-assembler-times "zero\t4" 2 } } */
++/* { dg-final { scan-assembler "zero\t268435452" } } */
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/arm_align_max_stack_pwr.c
+@@ -0,0 +1,20 @@
++/* { dg-do compile } */
++/* { dg-options "-O1" } */
++
++#define align (1ul << __ARM_ALIGN_MAX_STACK_PWR)
++extern void foo (int *x);
++extern int bar (int x);
++
++int
++dummy ()
++{
++  int x __attribute__ ((aligned (align)));
++  int result;
++
++  foo (&x);
++  result = bar (x);
++
++  return result;
++}
++
++/* { dg-final { scan-assembler "and\tx\[0-9\]+, x\[0-9\]+, -65536" } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/arm_neon-nosimd-error.c
++++ b/src//dev/null
+@@ -1,11 +0,0 @@
+-/* { dg-do compile } */
+-/* { dg-options "-mgeneral-regs-only" } */
+-/* { dg-excess-errors "You must enable" } */
+-
+-#include "arm_neon.h"
+-
+-int
+-foo ()
+-{
+-  return 0;
+-}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/ashltidisi.c
+@@ -0,0 +1,49 @@
++/* { dg-do run } */
++/* { dg-options "-O2 -save-temps" } */
++
++extern void abort (void);
++
++#define GEN_TEST_CASE(x, y, z)\
++__uint128_t __attribute__ ((noinline))\
++ushift_##x##_##z (unsigned y data)\
++{\
++  return (__uint128_t) data << x;\
++}\
++__int128_t __attribute__ ((noinline)) \
++shift_##x##_##z (y data) \
++{\
++  return (__int128_t) data << x;\
++}
++
++GEN_TEST_CASE (53, int, i)
++GEN_TEST_CASE (3, long long, ll)
++GEN_TEST_CASE (13, long long, ll)
++GEN_TEST_CASE (53, long long, ll)
++
++int
++main (int argc, char **argv)
++{
++
++#define SHIFT_CHECK(x, y, z, p) \
++	if (ushift_##y##_##p (x)\
++	    != ((__uint128_t) (unsigned z) x << y)) \
++	  abort ();\
++	if (shift_##y##_##p (x)\
++	    != ((__uint128_t) (signed z) x << y)) \
++	  abort ();
++
++  SHIFT_CHECK (0x12345678, 53, int, i)
++  SHIFT_CHECK (0xcafecafe, 53, int, i)
++
++  SHIFT_CHECK (0x1234567890abcdefLL, 3, long long, ll)
++  SHIFT_CHECK (0x1234567890abcdefLL, 13, long long, ll)
++  SHIFT_CHECK (0x1234567890abcdefLL, 53, long long, ll)
++  SHIFT_CHECK (0xcafecafedeaddeadLL, 3, long long, ll)
++  SHIFT_CHECK (0xcafecafedeaddeadLL, 13, long long, ll)
++  SHIFT_CHECK (0xcafecafedeaddeadLL, 53, long long, ll)
++
++  return 0;
++}
++
++/* { dg-final { scan-assembler-times "asr" 4 } } */
++/* { dg-final { scan-assembler-not "extr\t" } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/atomic-comp-swap-release-acquire.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/atomic-comp-swap-release-acquire.c
+@@ -1,5 +1,5 @@
+ /* { dg-do compile } */
+-/* { dg-options "-O2 -fno-ipa-icf" } */
++/* { dg-options "-march=armv8-a+nolse -O2 -fno-ipa-icf" } */
+ 
+ #include "atomic-comp-swap-release-acquire.x"
+ 
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/atomic-inst-cas.c
+@@ -0,0 +1,61 @@
++/* { dg-do compile } */
++/* { dg-options "-O2 -march=armv8-a+lse -fno-ipa-icf" } */
++
++/* Test ARMv8.1-A CAS instruction.  */
++
++#include "atomic-inst-ops.inc"
++
++#define TEST TEST_TWO
++
++#define CAS_ATOMIC(FN, TY, MODEL1, MODEL2)				\
++  int FNNAME (FN, TY) (TY* val, TY* foo, TY* bar)			\
++  {									\
++    int model_s = MODEL1;						\
++    int model_f = MODEL2;						\
++    /* The success memory ordering must be at least as strong as	\
++       the failure memory ordering.  */					\
++    if (model_s < model_f)						\
++      return 0;								\
++    /* Ignore invalid memory orderings.  */				\
++    if (model_f == __ATOMIC_RELEASE || model_f == __ATOMIC_ACQ_REL)	\
++      return 0;								\
++    return __atomic_compare_exchange_n (val, foo, bar, 0, model_s, model_f); \
++  }
++
++#define CAS_ATOMIC_NORETURN(FN, TY, MODEL1, MODEL2)			\
++  void FNNAME (FN, TY) (TY* val, TY* foo, TY* bar)			\
++  {									\
++    int model_s = MODEL1;						\
++    int model_f = MODEL2;						\
++    /* The success memory ordering must be at least as strong as	\
++       the failure memory ordering.  */					\
++    if (model_s < model_f)						\
++      return;								\
++    /* Ignore invalid memory orderings.  */				\
++    if (model_f == __ATOMIC_RELEASE || model_f == __ATOMIC_ACQ_REL)	\
++      return;								\
++    __atomic_compare_exchange_n (val, foo, bar, 0, model_s, model_f);	\
++  }
++
++TEST (cas_atomic, CAS_ATOMIC)
++TEST (cas_atomic_noreturn, CAS_ATOMIC_NORETURN)
++
++
++/* { dg-final { scan-assembler-times "casb\t" 4} } */
++/* { dg-final { scan-assembler-times "casab\t" 20} } */
++/* { dg-final { scan-assembler-times "caslb\t" 4} } */
++/* { dg-final { scan-assembler-times "casalb\t" 36} } */
++
++/* { dg-final { scan-assembler-times "cash\t" 4} } */
++/* { dg-final { scan-assembler-times "casah\t" 20} } */
++/* { dg-final { scan-assembler-times "caslh\t" 4} } */
++/* { dg-final { scan-assembler-times "casalh\t" 36} } */
++
++/* { dg-final { scan-assembler-times "cas\t" 8} } */
++/* { dg-final { scan-assembler-times "casa\t" 40} } */
++/* { dg-final { scan-assembler-times "casl\t" 8} } */
++/* { dg-final { scan-assembler-times "casal\t" 72} } */
++
++/* { dg-final { scan-assembler-not "ldaxr\t" } } */
++/* { dg-final { scan-assembler-not "stlxr\t" } } */
++/* { dg-final { scan-assembler-not "dmb" } } */
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/atomic-inst-ldadd.c
+@@ -0,0 +1,87 @@
++/* { dg-do compile } */
++/* { dg-options "-O2 -march=armv8-a+lse -fno-ipa-icf" } */
++
++/* Test ARMv8.1-A Load-ADD instruction.  */
++
++#include "atomic-inst-ops.inc"
++
++#define TEST TEST_ONE
++
++#define LOAD_ADD(FN, TY, MODEL)						\
++  TY FNNAME (FN, TY) (TY* val, TY* foo)					\
++  {									\
++    return __atomic_fetch_add (val, foo, MODEL);			\
++  }
++
++#define LOAD_ADD_NORETURN(FN, TY, MODEL)				\
++  void FNNAME (FN, TY) (TY* val, TY* foo)				\
++  {									\
++    __atomic_fetch_add (val, foo, MODEL);				\
++  }
++
++#define LOAD_SUB(FN, TY, MODEL)						\
++  TY FNNAME (FN, TY) (TY* val, TY* foo)					\
++  {									\
++    return __atomic_fetch_sub (val, foo, MODEL);			\
++  }
++
++#define LOAD_SUB_NORETURN(FN, TY, MODEL)				\
++  void FNNAME (FN, TY) (TY* val, TY* foo)				\
++  {									\
++    __atomic_fetch_sub (val, foo, MODEL);				\
++  }
++
++#define ADD_LOAD(FN, TY, MODEL)						\
++  TY FNNAME (FN, TY) (TY* val, TY* foo)					\
++  {									\
++    return __atomic_add_fetch (val, foo, MODEL);			\
++  }
++
++#define ADD_LOAD_NORETURN(FN, TY, MODEL)				\
++  void FNNAME (FN, TY) (TY* val, TY* foo)				\
++  {									\
++    __atomic_add_fetch (val, foo, MODEL);				\
++  }
++
++#define SUB_LOAD(FN, TY, MODEL)						\
++  TY FNNAME (FN, TY) (TY* val, TY* foo)					\
++  {									\
++    return __atomic_sub_fetch (val, foo, MODEL);			\
++  }
++
++#define SUB_LOAD_NORETURN(FN, TY, MODEL)				\
++  void FNNAME (FN, TY) (TY* val, TY* foo)				\
++  {									\
++    __atomic_sub_fetch (val, foo, MODEL);				\
++  }
++
++TEST (load_add, LOAD_ADD)
++TEST (load_add_notreturn, LOAD_ADD_NORETURN)
++
++TEST (load_sub, LOAD_SUB)
++TEST (load_sub_notreturn, LOAD_SUB_NORETURN)
++
++TEST (add_load, ADD_LOAD)
++TEST (add_load_notreturn, ADD_LOAD_NORETURN)
++
++TEST (sub_load, SUB_LOAD)
++TEST (sub_load_notreturn, SUB_LOAD_NORETURN)
++
++/* { dg-final { scan-assembler-times "ldaddb\t" 16} } */
++/* { dg-final { scan-assembler-times "ldaddab\t" 32} } */
++/* { dg-final { scan-assembler-times "ldaddlb\t" 16} } */
++/* { dg-final { scan-assembler-times "ldaddalb\t" 32} } */
++
++/* { dg-final { scan-assembler-times "ldaddh\t" 16} } */
++/* { dg-final { scan-assembler-times "ldaddah\t" 32} } */
++/* { dg-final { scan-assembler-times "ldaddlh\t" 16} } */
++/* { dg-final { scan-assembler-times "ldaddalh\t" 32} } */
++
++/* { dg-final { scan-assembler-times "ldadd\t" 32} } */
++/* { dg-final { scan-assembler-times "ldadda\t" 64} } */
++/* { dg-final { scan-assembler-times "ldaddl\t" 32} } */
++/* { dg-final { scan-assembler-times "ldaddal\t" 64} } */
++
++/* { dg-final { scan-assembler-not "ldaxr\t" } } */
++/* { dg-final { scan-assembler-not "stlxr\t" } } */
++/* { dg-final { scan-assembler-not "dmb" } } */
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/atomic-inst-ldlogic.c
+@@ -0,0 +1,155 @@
++/* { dg-do compile } */
++/* { dg-options "-O2 -march=armv8-a+lse -fno-ipa-icf" } */
++
++/* Test ARMv8.1-A LD<logic-op> instruction.  */
++
++#include "atomic-inst-ops.inc"
++
++#define TEST TEST_ONE
++
++#define LOAD_OR(FN, TY, MODEL)						\
++  TY FNNAME (FN, TY) (TY* val, TY* foo)					\
++  {									\
++    return __atomic_fetch_or (val, foo, MODEL);				\
++  }
++
++#define LOAD_OR_NORETURN(FN, TY, MODEL)					\
++  void FNNAME (FN, TY) (TY* val, TY* foo)				\
++  {									\
++    __atomic_fetch_or (val, foo, MODEL);				\
++  }
++
++#define LOAD_AND(FN, TY, MODEL)						\
++  TY FNNAME (FN, TY) (TY* val, TY* foo)					\
++  {									\
++    return __atomic_fetch_and (val, foo, MODEL);			\
++  }
++
++#define LOAD_AND_NORETURN(FN, TY, MODEL)				\
++  void FNNAME (FN, TY) (TY* val, TY* foo)				\
++  {									\
++    __atomic_fetch_and (val, foo, MODEL);				\
++  }
++
++#define LOAD_XOR(FN, TY, MODEL)						\
++  TY FNNAME (FN, TY) (TY* val, TY* foo)					\
++  {									\
++    return __atomic_fetch_xor (val, foo, MODEL);			\
++  }
++
++#define LOAD_XOR_NORETURN(FN, TY, MODEL)				\
++  void FNNAME (FN, TY) (TY* val, TY* foo)				\
++  {									\
++    __atomic_fetch_xor (val, foo, MODEL);				\
++  }
++
++#define OR_LOAD(FN, TY, MODEL)						\
++  TY FNNAME (FN, TY) (TY* val, TY* foo)					\
++  {									\
++    return __atomic_or_fetch (val, foo, MODEL);				\
++  }
++
++#define OR_LOAD_NORETURN(FN, TY, MODEL)					\
++  void FNNAME (FN, TY) (TY* val, TY* foo)				\
++  {									\
++    __atomic_or_fetch (val, foo, MODEL);				\
++  }
++
++#define AND_LOAD(FN, TY, MODEL)						\
++  TY FNNAME (FN, TY) (TY* val, TY* foo)					\
++  {									\
++    return __atomic_and_fetch (val, foo, MODEL);			\
++  }
++
++#define AND_LOAD_NORETURN(FN, TY, MODEL)				\
++  void FNNAME (FN, TY) (TY* val, TY* foo)				\
++  {									\
++    __atomic_and_fetch (val, foo, MODEL);				\
++  }
++
++#define XOR_LOAD(FN, TY, MODEL)						\
++  TY FNNAME (FN, TY) (TY* val, TY* foo)					\
++  {									\
++    return __atomic_xor_fetch (val, foo, MODEL);			\
++  }
++
++#define XOR_LOAD_NORETURN(FN, TY, MODEL)				\
++  void FNNAME (FN, TY) (TY* val, TY* foo)				\
++  {									\
++    __atomic_xor_fetch (val, foo, MODEL);				\
++  }
++
++
++TEST (load_or, LOAD_OR)
++TEST (load_or_notreturn, LOAD_OR_NORETURN)
++
++TEST (load_and, LOAD_AND)
++TEST (load_and_notreturn, LOAD_AND_NORETURN)
++
++TEST (load_xor, LOAD_XOR)
++TEST (load_xor_notreturn, LOAD_XOR_NORETURN)
++
++TEST (or_load, OR_LOAD)
++TEST (or_load_notreturn, OR_LOAD_NORETURN)
++
++TEST (and_load, AND_LOAD)
++TEST (and_load_notreturn, AND_LOAD_NORETURN)
++
++TEST (xor_load, XOR_LOAD)
++TEST (xor_load_notreturn, XOR_LOAD_NORETURN)
++
++
++/* Load-OR.  */
++
++/* { dg-final { scan-assembler-times "ldsetb\t" 8} } */
++/* { dg-final { scan-assembler-times "ldsetab\t" 16} } */
++/* { dg-final { scan-assembler-times "ldsetlb\t" 8} } */
++/* { dg-final { scan-assembler-times "ldsetalb\t" 16} } */
++
++/* { dg-final { scan-assembler-times "ldseth\t" 8} } */
++/* { dg-final { scan-assembler-times "ldsetah\t" 16} } */
++/* { dg-final { scan-assembler-times "ldsetlh\t" 8} } */
++/* { dg-final { scan-assembler-times "ldsetalh\t" 16} } */
++
++/* { dg-final { scan-assembler-times "ldset\t" 16} } */
++/* { dg-final { scan-assembler-times "ldseta\t" 32} } */
++/* { dg-final { scan-assembler-times "ldsetl\t" 16} } */
++/* { dg-final { scan-assembler-times "ldsetal\t" 32} } */
++
++/* Load-AND.  */
++
++/* { dg-final { scan-assembler-times "ldclrb\t" 8} } */
++/* { dg-final { scan-assembler-times "ldclrab\t" 16} } */
++/* { dg-final { scan-assembler-times "ldclrlb\t" 8} } */
++/* { dg-final { scan-assembler-times "ldclralb\t" 16} } */
++
++/* { dg-final { scan-assembler-times "ldclrh\t" 8} } */
++/* { dg-final { scan-assembler-times "ldclrah\t" 16} } */
++/* { dg-final { scan-assembler-times "ldclrlh\t" 8} } */
++/* { dg-final { scan-assembler-times "ldclralh\t" 16} } */
++
++/* { dg-final { scan-assembler-times "ldclr\t" 16} */
++/* { dg-final { scan-assembler-times "ldclra\t" 32} } */
++/* { dg-final { scan-assembler-times "ldclrl\t" 16} } */
++/* { dg-final { scan-assembler-times "ldclral\t" 32} } */
++
++/* Load-XOR.  */
++
++/* { dg-final { scan-assembler-times "ldeorb\t" 8} } */
++/* { dg-final { scan-assembler-times "ldeorab\t" 16} } */
++/* { dg-final { scan-assembler-times "ldeorlb\t" 8} } */
++/* { dg-final { scan-assembler-times "ldeoralb\t" 16} } */
++
++/* { dg-final { scan-assembler-times "ldeorh\t" 8} } */
++/* { dg-final { scan-assembler-times "ldeorah\t" 16} } */
++/* { dg-final { scan-assembler-times "ldeorlh\t" 8} } */
++/* { dg-final { scan-assembler-times "ldeoralh\t" 16} } */
++
++/* { dg-final { scan-assembler-times "ldeor\t" 16} */
++/* { dg-final { scan-assembler-times "ldeora\t" 32} } */
++/* { dg-final { scan-assembler-times "ldeorl\t" 16} } */
++/* { dg-final { scan-assembler-times "ldeoral\t" 32} } */
++
++/* { dg-final { scan-assembler-not "ldaxr\t" } } */
++/* { dg-final { scan-assembler-not "stlxr\t" } } */
++/* { dg-final { scan-assembler-not "dmb" } } */
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/atomic-inst-ops.inc
+@@ -0,0 +1,66 @@
++/* Support code for atomic instruction tests.  */
++
++/* Define types names without spaces.  */
++typedef unsigned char uchar;
++typedef unsigned short ushort;
++typedef unsigned int uint;
++typedef long long longlong;
++typedef unsigned long long ulonglong;
++typedef __int128_t int128;
++typedef __uint128_t uint128;
++
++#define FNNAME(NAME,TY) NAME
++
++/* Expand one-model functions.  */
++#define TEST_M1(NAME, FN, TY, MODEL, DUMMY)	\
++  FN (test_##NAME##_##TY, TY, MODEL)
++
++/* Expand two-model functions.  */
++#define TEST_M2(NAME, FN, TY, MODEL1, MODEL2)	\
++  FN (test_##NAME##_##TY, TY, MODEL1, MODEL2)
++
++/* Typest to test.  */
++#define TEST_TY(NAME, FN, N, MODEL1, MODEL2)		\
++  TEST_M##N (NAME, FN, char, MODEL1, MODEL2)		\
++  TEST_M##N (NAME, FN, uchar, MODEL1, MODEL2)		\
++  TEST_M##N (NAME, FN, short, MODEL1, MODEL2)		\
++  TEST_M##N (NAME, FN, ushort, MODEL1, MODEL2)		\
++  TEST_M##N (NAME, FN, int, MODEL1, MODEL2)		\
++  TEST_M##N (NAME, FN, uint, MODEL1, MODEL2)		\
++  TEST_M##N (NAME, FN, longlong, MODEL1, MODEL2)	\
++  TEST_M##N (NAME, FN, ulonglong, MODEL1, MODEL2)	\
++  TEST_M##N (NAME, FN, int128, MODEL1, MODEL2)		\
++  TEST_M##N (NAME, FN, uint128, MODEL1, MODEL2)
++
++/* Models to test.  */
++#define TEST_MODEL(NAME, FN, N)					\
++  TEST_TY (NAME##_relaxed, FN, N, __ATOMIC_RELAXED, DUMMY)	\
++  TEST_TY (NAME##_consume, FN, N, __ATOMIC_CONSUME, DUMMY)	\
++  TEST_TY (NAME##_acquire, FN, N, __ATOMIC_ACQUIRE, DUMMY)	\
++  TEST_TY (NAME##_release, FN, N, __ATOMIC_RELEASE, DUMMY)	\
++  TEST_TY (NAME##_acq_rel, FN, N, __ATOMIC_ACQ_REL, DUMMY)	\
++  TEST_TY (NAME##_seq_cst, FN, N, __ATOMIC_SEQ_CST, DUMMY)	\
++
++/* Cross-product of models to test.  */
++#define TEST_MODEL_M1(NAME, FN, N, M)			\
++  TEST_TY (NAME##_relaxed, FN, N, M, __ATOMIC_RELAXED)	\
++  TEST_TY (NAME##_consume, FN, N, M, __ATOMIC_CONSUME)	\
++  TEST_TY (NAME##_acquire, FN, N, M, __ATOMIC_ACQUIRE)	\
++  TEST_TY (NAME##_release, FN, N, M, __ATOMIC_RELEASE)	\
++  TEST_TY (NAME##_acq_rel, FN, N, M, __ATOMIC_ACQ_REL)	\
++  TEST_TY (NAME##_seq_cst, FN, N, M, __ATOMIC_SEQ_CST)	\
++
++#define TEST_MODEL_M2(NAME, FN)					\
++  TEST_MODEL_M1 (NAME##_relaxed, FN, 2, __ATOMIC_RELAXED)	\
++  TEST_MODEL_M1 (NAME##_consume, FN, 2, __ATOMIC_CONSUME)	\
++  TEST_MODEL_M1 (NAME##_acquire, FN, 2, __ATOMIC_ACQUIRE)	\
++  TEST_MODEL_M1 (NAME##_release, FN, 2, __ATOMIC_RELEASE)	\
++  TEST_MODEL_M1 (NAME##_acq_rel, FN, 2, __ATOMIC_ACQ_REL)	\
++  TEST_MODEL_M1 (NAME##_seq_cst, FN, 2, __ATOMIC_SEQ_CST)	\
++
++/* Expand functions for a cross-product of memory models and types.  */
++#define TEST_TWO(NAME, FN) TEST_MODEL_M2 (NAME, FN)
++
++/* Expand functions for a set of memory models and types.  */
++#define TEST_ONE(NAME, FN) TEST_MODEL (NAME, FN, 1)
++
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/atomic-inst-swp.c
+@@ -0,0 +1,44 @@
++/* { dg-do compile } */
++/* { dg-options "-O2 -march=armv8-a+lse -fno-ipa-icf" } */
++
++/* Test ARMv8.1-A SWP instruction.  */
++
++#include "atomic-inst-ops.inc"
++
++#define TEST TEST_ONE
++
++#define SWAP_ATOMIC(FN, TY, MODEL)					\
++  TY FNNAME (FN, TY) (TY* val, TY foo)					\
++  {									\
++    return __atomic_exchange_n (val, foo, MODEL);			\
++  }
++
++#define SWAP_ATOMIC_NORETURN(FN, TY, MODEL)				\
++  void FNNAME (FN, TY) (TY* val, TY* foo, TY* bar)			\
++  {									\
++    __atomic_exchange (val, foo, bar, MODEL);				\
++  }
++
++
++TEST (swap_atomic, SWAP_ATOMIC)
++TEST (swap_atomic_noreturn, SWAP_ATOMIC_NORETURN)
++
++
++/* { dg-final { scan-assembler-times "swpb\t" 4} } */
++/* { dg-final { scan-assembler-times "swpab\t" 8} } */
++/* { dg-final { scan-assembler-times "swplb\t" 4} } */
++/* { dg-final { scan-assembler-times "swpalb\t" 8} } */
++
++/* { dg-final { scan-assembler-times "swph\t" 4} } */
++/* { dg-final { scan-assembler-times "swpah\t" 8} } */
++/* { dg-final { scan-assembler-times "swplh\t" 4} } */
++/* { dg-final { scan-assembler-times "swpalh\t" 8} } */
++
++/* { dg-final { scan-assembler-times "swp\t" 8} } */
++/* { dg-final { scan-assembler-times "swpa\t" 16} } */
++/* { dg-final { scan-assembler-times "swpl\t" 8} } */
++/* { dg-final { scan-assembler-times "swpal\t" 16} } */
++
++/* { dg-final { scan-assembler-not "ldaxr\t" } } */
++/* { dg-final { scan-assembler-not "stlxr\t" } } */
++/* { dg-final { scan-assembler-not "dmb" } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/atomic-op-acq_rel.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/atomic-op-acq_rel.c
+@@ -1,5 +1,5 @@
+ /* { dg-do compile } */
+-/* { dg-options "-O2" } */
++/* { dg-options "-march=armv8-a+nolse -O2" } */
+ 
+ #include "atomic-op-acq_rel.x"
+ 
+--- a/src/gcc/testsuite/gcc.target/aarch64/atomic-op-acquire.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/atomic-op-acquire.c
+@@ -1,5 +1,5 @@
+ /* { dg-do compile } */
+-/* { dg-options "-O2" } */
++/* { dg-options "-march=armv8-a+nolse -O2" } */
+ 
+ #include "atomic-op-acquire.x"
+ 
+--- a/src/gcc/testsuite/gcc.target/aarch64/atomic-op-char.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/atomic-op-char.c
+@@ -1,5 +1,5 @@
+ /* { dg-do compile } */
+-/* { dg-options "-O2" } */
++/* { dg-options "-march=armv8-a+nolse -O2" } */
+ 
+ #include "atomic-op-char.x"
+ 
+--- a/src/gcc/testsuite/gcc.target/aarch64/atomic-op-consume.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/atomic-op-consume.c
+@@ -1,5 +1,5 @@
+ /* { dg-do compile } */
+-/* { dg-options "-O2" } */
++/* { dg-options "-march=armv8-a+nolse -O2" } */
+ 
+ #include "atomic-op-consume.x"
+ 
+--- a/src/gcc/testsuite/gcc.target/aarch64/atomic-op-imm.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/atomic-op-imm.c
+@@ -1,5 +1,5 @@
+ /* { dg-do compile } */
+-/* { dg-options "-O2" } */
++/* { dg-options "-march=armv8-a+nolse -O2" } */
+ 
+ int v = 0;
+ 
+--- a/src/gcc/testsuite/gcc.target/aarch64/atomic-op-int.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/atomic-op-int.c
+@@ -1,5 +1,5 @@
+ /* { dg-do compile } */
+-/* { dg-options "-O2" } */
++/* { dg-options "-march=armv8-a+nolse -O2" } */
+ 
+ #include "atomic-op-int.x"
+ 
+--- a/src/gcc/testsuite/gcc.target/aarch64/atomic-op-long.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/atomic-op-long.c
+@@ -1,5 +1,5 @@
+ /* { dg-do compile } */
+-/* { dg-options "-O2" } */
++/* { dg-options "-march=armv8-a+nolse -O2" } */
+ 
+ long v = 0;
+ 
+--- a/src/gcc/testsuite/gcc.target/aarch64/atomic-op-relaxed.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/atomic-op-relaxed.c
+@@ -1,5 +1,5 @@
+ /* { dg-do compile } */
+-/* { dg-options "-O2" } */
++/* { dg-options "-march=armv8-a+nolse -O2" } */
+ 
+ #include "atomic-op-relaxed.x"
+ 
+--- a/src/gcc/testsuite/gcc.target/aarch64/atomic-op-release.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/atomic-op-release.c
+@@ -1,5 +1,5 @@
+ /* { dg-do compile } */
+-/* { dg-options "-O2" } */
++/* { dg-options "-march=armv8-a+nolse -O2" } */
+ 
+ #include "atomic-op-release.x"
+ 
+--- a/src/gcc/testsuite/gcc.target/aarch64/atomic-op-seq_cst.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/atomic-op-seq_cst.c
+@@ -1,5 +1,5 @@
+ /* { dg-do compile } */
+-/* { dg-options "-O2" } */
++/* { dg-options "-march=armv8-a+nolse -O2" } */
+ 
+ #include "atomic-op-seq_cst.x"
+ 
+--- a/src/gcc/testsuite/gcc.target/aarch64/atomic-op-short.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/atomic-op-short.c
+@@ -1,5 +1,5 @@
+ /* { dg-do compile } */
+-/* { dg-options "-O2" } */
++/* { dg-options "-march=armv8-a+nolse -O2" } */
+ 
+ #include "atomic-op-short.x"
+ 
+--- a/src/gcc/testsuite/gcc.target/aarch64/bfxil_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/bfxil_1.c
+@@ -37,4 +37,3 @@ main (void)
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/bfxil_2.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/bfxil_2.c
+@@ -39,4 +39,3 @@ main (void)
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/bics_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/bics_1.c
+@@ -12,7 +12,7 @@ bics_si_test1 (int a, int b, int c)
+   if (d == 0)
+     return a + c;
+   else
+-    return b + d + c;
++    return d;
+ }
+ 
+ int
+@@ -24,7 +24,7 @@ bics_si_test2 (int a, int b, int c)
+   if (d == 0)
+     return a + c;
+   else
+-    return b + d + c;
++    return d;
+ }
+ 
+ typedef long long s64;
+@@ -38,7 +38,7 @@ bics_di_test1 (s64 a, s64 b, s64 c)
+   if (d == 0)
+     return a + c;
+   else
+-    return b + d + c;
++    return d;
+ }
+ 
+ s64
+@@ -50,7 +50,7 @@ bics_di_test2 (s64 a, s64 b, s64 c)
+   if (d == 0)
+     return a + c;
+   else
+-    return b + d + c;
++    return d;
+ }
+ 
+ int
+@@ -60,7 +60,7 @@ main ()
+   s64 y;
+ 
+   x = bics_si_test1 (29, ~4, 5);
+-  if (x != ((29 & 4) + ~4 + 5))
++  if (x != (29 & 4))
+     abort ();
+ 
+   x = bics_si_test1 (5, ~2, 20);
+@@ -68,7 +68,7 @@ main ()
+     abort ();
+ 
+   x = bics_si_test2 (35, ~4, 5);
+-  if (x != ((35 & ~(~4 << 3)) + ~4 + 5))
++  if (x != (35 & ~(~4 << 3)))
+     abort ();
+ 
+   x = bics_si_test2 (96, ~2, 20);
+@@ -79,7 +79,7 @@ main ()
+                      ~0x320000004ll,
+                      0x505050505ll);
+ 
+-  if (y != ((0x130000029ll & 0x320000004ll) + ~0x320000004ll + 0x505050505ll))
++  if (y != (0x130000029ll & 0x320000004ll))
+     abort ();
+ 
+   y = bics_di_test1 (0x5000500050005ll,
+@@ -91,8 +91,7 @@ main ()
+   y = bics_di_test2 (0x130000029ll,
+                      ~0x064000008ll,
+                      0x505050505ll);
+-  if (y != ((0x130000029ll & ~(~0x064000008ll << 3))
+-	    + ~0x064000008ll + 0x505050505ll))
++  if (y != (0x130000029ll & ~(~0x064000008ll << 3)))
+     abort ();
+ 
+   y = bics_di_test2 (0x130002900ll,
+@@ -103,5 +102,3 @@ main ()
+ 
+   return 0;
+ }
+-
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/bics_2.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/bics_2.c
+@@ -108,4 +108,3 @@ main ()
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/bics_3.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/bics_3.c
+@@ -66,4 +66,3 @@ main (void)
+ /* { dg-final { scan-assembler-times "bics\txzr, x\[0-9\]+, x\[0-9\]+" 2 } } */
+ /* { dg-final { scan-assembler-times "bics\txzr, x\[0-9\]+, x\[0-9\]+, lsl 2" 1 } } */
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/bics_4.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/bics_4.c
+@@ -84,4 +84,3 @@ main ()
+ 
+ /* { dg-final { scan-assembler-times "bics\twzr, w\[0-9\]+, w\[0-9\]+" 2 } } */
+ /* { dg-final { scan-assembler-times "bics\txzr, x\[0-9\]+, x\[0-9\]+" 2 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/c-output-template-4.c
+@@ -0,0 +1,10 @@
++/* { dg-do compile } */
++/* { dg-options "-O0" } */
++
++void
++test (void)
++{
++    __asm__ ("@ %c0" : : "S" (&test + 4));
++}
++
++/* { dg-final { scan-assembler "@ test\\+4" } } */
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/cinc_common_1.c
+@@ -0,0 +1,64 @@
++/* { dg-do run } */
++/* { dg-options "-save-temps -O2 -fno-inline" } */
++
++extern void abort (void);
++
++int
++foosi (int x)
++{
++  return x > 100 ? x - 2 : x - 1;
++}
++
++int
++barsi (int x)
++{
++  return x > 100 ? x + 4 : x + 3;
++}
++
++long
++foodi (long x)
++{
++  return x > 100 ? x - 2 : x - 1;
++}
++
++long
++bardi (long x)
++{
++  return x > 100 ? x + 4 : x + 3;
++}
++
++/* { dg-final { scan-assembler-times "cs?inc\tw\[0-9\]*" 2 } } */
++/* { dg-final { scan-assembler-times "cs?inc\tx\[0-9\]*" 2 } } */
++
++int
++main (void)
++{
++  if (foosi (105) != 103)
++    abort ();
++
++  if (foosi (95) != 94)
++    abort ();
++
++  if (barsi (105) != 109)
++    abort ();
++
++  if (barsi (95) != 98)
++    abort ();
++
++  if (foodi (105) != 103)
++    abort ();
++
++  if (foodi (95) != 94)
++    abort ();
++
++  if (bardi (105) != 109)
++    abort ();
++
++  if (bardi (95) != 98)
++    abort ();
++
++  return 0;
++}
++
++/* { dg-final { scan-assembler-not "csel\tx\[0-9\]*.*" } } */
++/* { dg-final { scan-assembler-not "csel\tw\[0-9\]*.*" } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/cmn-neg.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/cmn-neg.c
+@@ -30,4 +30,3 @@ main (void)
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/cmn-neg2.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/cmn-neg2.c
+@@ -31,4 +31,3 @@ main (void)
+ }
+ /* { dg-final { scan-assembler-not "cmn\t" } } */
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/combine_bfi_1.c
+@@ -0,0 +1,34 @@
++/* { dg-do compile } */
++/* { dg-options "-O2 -fdump-rtl-combine" } */
++
++int
++f1 (int x, int y)
++{
++  return (x & ~0x0ffff00) | ((y << 8) & 0x0ffff00);
++}
++
++int
++f2 (int x, int y)
++{
++  return (x & ~0x0ff000) | ((y & 0x0ff) << 12);
++}
++
++int
++f3 (int x, int y)
++{
++  return (x & ~0xffff) | (y & 0xffff);
++}
++
++int
++f4 (int x, int y)
++{
++  return (x & ~0xff) | (y & 0xff);
++}
++
++long
++f5 (long x, long y)
++{
++  return (x & ~0xffffffffull) | (y & 0xffffffff);
++}
++
++/* { dg-final { scan-rtl-dump-times "\\*aarch64_bfi" 5 "combine" } } */
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/copysign_1.c
+@@ -0,0 +1,81 @@
++/* { dg-do run } */
++/* { dg-options "-O2 --save-temps" } */
++
++double fabs (double);
++
++double
++check (double x, double y)
++{
++  return __builtin_copysign (x, y);
++}
++
++double
++check1 (double x)
++{
++  return __builtin_copysign (x, 1.0);
++}
++
++double
++check2 (double x)
++{
++  return __builtin_copysign (1.0, x);
++}
++
++double
++check3 (double x)
++{
++  return -__builtin_copysign (x, 1.0);
++}
++
++double
++check4 (double x, double y)
++{
++  return x * __builtin_copysign (x, y);
++}
++
++double
++check5 (double x, double y)
++{
++  return __builtin_copysign (-x, -y);
++}
++
++int
++main (int argc, char** argv)
++{
++  double x = 2.0;
++  double y = -5.0;
++  double epsilon = 0.00001;
++
++  double expected = -2.0;
++
++  if (fabs (check (x, y) - expected) >= epsilon)
++    __builtin_abort ();
++
++  expected = 2.0;
++
++  if (fabs (check1 (x) - expected) >= epsilon)
++    __builtin_abort ();
++
++  expected = 1.0;
++
++  if (fabs (check2 (x) - expected) >= epsilon)
++    __builtin_abort ();
++
++  expected = -2.0;
++
++  if (fabs (check3 (x) - expected) >= epsilon)
++    __builtin_abort ();
++
++  expected = -4.0;
++
++  if (fabs (check4 (x, y) - expected) >= epsilon)
++    __builtin_abort ();
++
++  expected = 2.0;
++
++  if (fabs (check5 (x, y) - expected) >= epsilon)
++    __builtin_abort ();
++}
++
++/* { dg-final { scan-assembler-not "copysign\tw" } } */
++
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/copysign_2.c
+@@ -0,0 +1,81 @@
++/* { dg-do run } */
++/* { dg-options "-O2 --save-temps" } */
++
++float fabsf (float);
++
++float
++check (float x, float y)
++{
++  return __builtin_copysignf (x, y);
++}
++
++float
++check1 (float x)
++{
++  return __builtin_copysignf (x, 1.0);
++}
++
++float
++check2 (float x)
++{
++  return __builtin_copysignf (1.0, x);
++}
++
++float
++check3 (float x)
++{
++  return -__builtin_copysignf (x, 1.0);
++}
++
++float
++check4 (float x, float y)
++{
++  return x * __builtin_copysignf (x, y);
++}
++
++float
++check5 (float x, float y)
++{
++  return __builtin_copysignf (-x, -y);
++}
++
++int
++main (int argc, char** argv)
++{
++  float x = 2.0f;
++  float y = -5.0f;
++  float epsilon = 0.00001f;
++
++  float expected = -2.0f;
++
++  if (fabsf (check (x, y) - expected) >= epsilon)
++    __builtin_abort ();
++
++  expected = 2.0f;
++
++  if (fabsf (check1 (x) - expected) >= epsilon)
++    __builtin_abort ();
++
++  expected = 1.0f;
++
++  if (fabsf (check2 (x) - expected) >= epsilon)
++    __builtin_abort ();
++
++  expected = -2.0f;
++
++  if (fabsf (check3 (x) - expected) >= epsilon)
++    __builtin_abort ();
++
++  expected = -4.0f;
++
++  if (fabsf (check4 (x, y) - expected) >= epsilon)
++    __builtin_abort ();
++
++  expected = 2.0f;
++
++  if (fabsf (check5 (x, y) - expected) >= epsilon)
++    __builtin_abort ();
++}
++
++/* { dg-final { scan-assembler-not "copysign\tw" } } */
++
+--- a/src/gcc/testsuite/gcc.target/aarch64/cpu-diagnostics-3.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/cpu-diagnostics-3.c
+@@ -1,4 +1,4 @@
+-/* { dg-error "unknown" "" {target "aarch64*-*-*" } } */
++/* { dg-error "invalid feature" "" {target "aarch64*-*-*" } } */
+ /* { dg-options "-O2 -mcpu=cortex-a53+dummy" } */
+ 
+ void f ()
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/csel_bfx_1.c
+@@ -0,0 +1,11 @@
++/* { dg-do compile } */
++/* { dg-options "-save-temps -O2" } */
++
++int
++foo (int a, int b)
++{
++  return ((a & (1 << 25)) ? 5 : 4);
++}
++
++/* { dg-final { scan-assembler "ubfx\t\[xw\]\[0-9\]*.*" } } */
++/* { dg-final { scan-assembler-not "csel\tw\[0-9\]*.*" } } */
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/csel_imms_inc_1.c
+@@ -0,0 +1,42 @@
++/* { dg-do run } */
++/* { dg-options "-save-temps -O2 -fno-inline" } */
++
++extern void abort (void);
++
++int
++fooinc (int x)
++{
++  if (x)
++    return 1025;
++  else
++    return 1026;
++}
++
++int
++fooinc2 (int x)
++{
++  if (x)
++    return 1026;
++  else
++    return 1025;
++}
++
++int
++main (void)
++{
++  if (fooinc (0) != 1026)
++    abort ();
++
++  if (fooinc (1) != 1025)
++    abort ();
++
++  if (fooinc2 (0) != 1025)
++    abort ();
++
++  if (fooinc2 (1) != 1026)
++    abort ();
++
++  return 0;
++}
++
++/* { dg-final { scan-assembler-not "csel\tw\[0-9\]*.*" } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/csneg-1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/csneg-1.c
+@@ -56,3 +56,15 @@ int test_csneg_cmp(int x)
+     x = -x;
+   return x;
+ }
++
++unsigned long long
++test_csneg_uxtw (unsigned int a,
++		 unsigned int b,
++		 unsigned int c)
++{
++  /* { dg-final { scan-assembler "csneg\tw\[0-9\]*.*ne" } } */
++  /* { dg-final { scan-assembler-not "uxtw\tw\[0-9\]*.*" } } */
++  unsigned int val;
++  val = a ? b: -c;
++  return val;
++}
+--- a/src/gcc/testsuite/gcc.target/aarch64/cvtf_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/cvtf_1.c
+@@ -92,4 +92,3 @@ int main ()
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/extr.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/extr.c
+@@ -31,4 +31,3 @@ main ()
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/f16_movs_1.c
+@@ -0,0 +1,26 @@
++/* { dg-do run } */
++/* { dg-options "-fno-inline -O2" } */
++
++#include <arm_neon.h>
++
++__fp16
++func2 (__fp16 a, __fp16 b)
++{
++  return b;
++}
++
++int
++main (int argc, char **argv)
++{
++  __fp16 array[16];
++  int i;
++
++  for (i = 0; i < sizeof (array) / sizeof (array[0]); i++)
++    array[i] = i;
++
++  array[0] = func2 (array[1], array[2]);
++
++  __builtin_printf ("%f\n", array[0]); /* { dg-output "2.0" } */
++
++  return 0;
++}
+--- a/src/gcc/testsuite/gcc.target/aarch64/fabd.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/fabd.c
+@@ -35,4 +35,3 @@ main ()
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/fmla_intrinsic_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/fmla_intrinsic_1.c
+@@ -112,5 +112,4 @@ main (int argc, char **argv)
+    vfmaq_laneq_f64.  */
+ /* { dg-final { scan-assembler-times "fmla\\tv\[0-9\]+\.2d, v\[0-9\]+\.2d, v\[0-9\]+\.2d\\\[\[0-9\]+\\\]" 3 } } */
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+ 
+--- a/src/gcc/testsuite/gcc.target/aarch64/fmls_intrinsic_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/fmls_intrinsic_1.c
+@@ -113,5 +113,4 @@ main (int argc, char **argv)
+    vfmsq_laneq_f64.  */
+ /* { dg-final { scan-assembler-times "fmls\\tv\[0-9\]+\.2d, v\[0-9\]+\.2d, v\[0-9\]+\.2d\\\[\[0-9\]+\\\]" 3 } } */
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+ 
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/fmovd-zero-mem.c
+@@ -0,0 +1,10 @@
++/* { dg-do compile } */
++/* { dg-options "-O2" } */
++
++void
++foo (double *output)
++{
++  *output = 0.0;
++}
++
++/* { dg-final { scan-assembler "str\\txzr, \\\[x0\\\]" } } */
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/fmovd-zero-reg.c
+@@ -0,0 +1,11 @@
++/* { dg-do compile } */
++/* { dg-options "-O2" } */
++
++void bar (double);
++void
++foo (void)
++{
++  bar (0.0);
++}
++
++/* { dg-final { scan-assembler "fmov\\td0, xzr" } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/fmovd-zero.c
++++ b/src//dev/null
+@@ -1,10 +0,0 @@
+-/* { dg-do compile } */
+-/* { dg-options "-O2" } */
+-
+-void
+-foo (double *output)
+-{
+-  *output = 0.0;
+-}
+-
+-/* { dg-final { scan-assembler "fmov\\td\[0-9\]+, xzr" } } */
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/fmovf-zero-mem.c
+@@ -0,0 +1,10 @@
++/* { dg-do compile } */
++/* { dg-options "-O2" } */
++
++void
++foo (float *output)
++{
++  *output = 0.0;
++}
++
++/* { dg-final { scan-assembler "str\\twzr, \\\[x0\\\]" } } */
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/fmovf-zero-reg.c
+@@ -0,0 +1,11 @@
++/* { dg-do compile } */
++/* { dg-options "-O2" } */
++
++void bar (float);
++void
++foo (void)
++{
++  bar (0.0);
++}
++
++/* { dg-final { scan-assembler "fmov\\ts0, wzr" } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/fmovf-zero.c
++++ b/src//dev/null
+@@ -1,10 +0,0 @@
+-/* { dg-do compile } */
+-/* { dg-options "-O2" } */
+-
+-void
+-foo (float *output)
+-{
+-  *output = 0.0;
+-}
+-
+-/* { dg-final { scan-assembler "fmov\\ts\[0-9\]+, wzr" } } */
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/fmovld-zero-mem.c
+@@ -0,0 +1,10 @@
++/* { dg-do compile } */
++/* { dg-options "-O2" } */
++
++void
++foo (long double *output)
++{
++  *output = 0.0;
++}
++
++/* { dg-final { scan-assembler "stp\\txzr, xzr, \\\[x0\\\]" } } */
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/fmovld-zero-reg.c
+@@ -0,0 +1,11 @@
++/* { dg-do compile } */
++/* { dg-options "-O2" } */
++
++void bar (long double);
++void
++foo (void)
++{
++  bar (0.0);
++}
++
++/* { dg-final { scan-assembler "movi\\tv0\.2d, #0" } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/fmul_intrinsic_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/fmul_intrinsic_1.c
+@@ -112,5 +112,4 @@ main (int argc, char **argv)
+    vmulq_laneq_f64.  */
+ /* { dg-final { scan-assembler-times "fmul\\tv\[0-9\]+\.2d, v\[0-9\]+\.2d, v\[0-9\]+\.d\\\[\[0-9\]+\\\]" 3 } } */
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+ 
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/fp16/f16_convs_1.c
+@@ -0,0 +1,34 @@
++/* { dg-do run } */
++/* { dg-options "-O2" } */
++/* { dg-additional-options "-mfp16-format=ieee" {target "arm*-*-*"} } */
++
++extern void abort (void);
++
++#define EPSILON 0.0001
++
++int
++main (int argc, char **argv)
++{
++  float f1 = 3.14159f;
++  float f2 = 2.718f;
++  /* This 'assembler' statement should be portable between ARM and AArch64.  */
++  asm volatile ("" : : : "memory");
++  __fp16 in1 = f1;
++  __fp16 in2 = f2;
++
++  /* Do the addition on __fp16's (implicitly converts both operands to
++     float32, adds, converts back to f16, then we convert back to f32).  */
++  __fp16 res1 = in1 + in2;
++  asm volatile ("" : : : "memory");
++  float f_res_1 = res1;
++
++  /* Do the addition on float32's (we convert both operands to f32, and add,
++     as above, but skip the final conversion f32 -> f16 -> f32).  */
++  float f1a = in1;
++  float f2a = in2;
++  float f_res_2 = f1a + f2a;
++
++  if (__builtin_fabs (f_res_2 - f_res_1) > EPSILON)
++    abort ();
++  return 0;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/fp16/f16_convs_2.c
+@@ -0,0 +1,33 @@
++/* { dg-do run } */
++/* { dg-options "-O2" } */
++/* { dg-additional-options "-mfp16-format=ieee" {target "arm*-*-*"} } */
++
++extern void abort (void);
++
++#define EPSILON 0.0001
++
++int
++main (int argc, char **argv)
++{
++  int i1 = 3;
++  int i2 = 2;
++  /*  This 'assembler' should be portable across ARM and AArch64.  */
++  asm volatile ("" : : : "memory");
++
++  __fp16 in1 = i1;
++  __fp16 in2 = i2;
++
++  /* Do the addition on __fp16's (implicitly converts both operands to
++     float32, adds, converts back to f16, then we convert to int).  */
++  __fp16 res1 = in1 + in2;
++  asm volatile ("" : : : "memory");
++  int result1 = res1;
++
++  /* Do the addition on int's (we convert both operands directly to int, add,
++     and we're done).  */
++  int result2 = ((int) in1) + ((int) in2);
++
++  if (__builtin_abs (result2 - result1) > EPSILON)
++    abort ();
++  return 0;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/fp16/fp16.exp
+@@ -0,0 +1,43 @@
++# Tests of 16-bit floating point (__fp16), for both ARM and AArch64.
++# Copyright (C) 2015 Free Software Foundation, Inc.
++
++# This program is free software; you can redistribute it and/or modify
++# it under the terms of the GNU General Public License as published by
++# the Free Software Foundation; either version 3 of the License, or
++# (at your option) any later version.
++#
++# This program is distributed in the hope that it will be useful,
++# but WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++# GNU General Public License for more details.
++#
++# You should have received a copy of the GNU General Public License
++# along with GCC; see the file COPYING3.  If not see
++# <http://www.gnu.org/licenses/>.
++
++# GCC testsuite that uses the `dg.exp' driver.
++
++# Exit immediately if this isn't an ARM or AArch64 target.
++if {![istarget arm*-*-*]
++    && ![istarget aarch64*-*-*]} then {
++  return
++}
++
++# Load support procs.
++load_lib gcc-dg.exp
++
++# If a testcase doesn't have special options, use these.
++global DEFAULT_CFLAGS
++if ![info exists DEFAULT_CFLAGS] then {
++    set DEFAULT_CFLAGS " -ansi -pedantic-errors"
++}
++
++# Initialize `dg'.
++dg-init
++
++# Main loop.
++dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.\[cC\]]] \
++	"" $DEFAULT_CFLAGS
++
++# All done.
++dg-finish
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/fpcr_fpsr_1.c
+@@ -0,0 +1,26 @@
++/* { dg-do compile } */
++/* { dg-options "-O2" } */
++
++void
++f1 (int *x)
++{
++  __builtin_aarch64_set_fpsr (*x);
++}
++
++void
++f2 (int *x)
++{
++  __builtin_aarch64_set_fpcr (*x);
++}
++
++void
++f3 (int *x)
++{
++  *x = __builtin_aarch64_get_fpsr ();
++}
++
++void
++f4 (int *x)
++{
++  *x = __builtin_aarch64_get_fpcr ();
++}
+--- a/src/gcc/testsuite/gcc.target/aarch64/insv_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/insv_1.c
+@@ -82,4 +82,3 @@ main (int argc, char** argv)
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/insv_2.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/insv_2.c
+@@ -82,4 +82,3 @@ main (int argc, char** argv)
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/ldp_vec_64_1.c
+@@ -0,0 +1,16 @@
++/* { dg-do compile } */
++/* { dg-options "-Ofast" } */
++
++typedef int int32x2_t __attribute__ ((__vector_size__ ((8))));
++
++void
++foo (int32x2_t *foo, int32x2_t *bar)
++{
++  int i = 0;
++  int32x2_t val = { 3, 2 };
++
++  for (i = 0; i < 1024; i+=2)
++    foo[i] = bar[i] + bar[i + 1];
++}
++
++/* { dg-final { scan-assembler "ldp\td\[0-9\]+, d\[0-9\]" } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/legitimize_stack_var_before_reload_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/legitimize_stack_var_before_reload_1.c
+@@ -18,4 +18,3 @@ test15 (void)
+ 
+ /* { dg-final { scan-rtl-dump "\\(mem\[^\\n\]*\\(plus\[^\\n\]*virtual-stack-vars" "expand" } } */
+ 
+-/* { dg-final { cleanup-rtl-dump "expand" } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/lr_free_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/lr_free_1.c
+@@ -35,4 +35,3 @@ main (int argc, char **argv)
+ /* { dg-final { scan-assembler "ldr\tw30, \\\[sp, \[0-9\]+\\\]" } } */
+ /* { dg-final { scan-assembler-times "ldr\tx30, \\\[sp\\\], \[0-9\]+" 2 } } */
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/lr_free_2.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/lr_free_2.c
+@@ -25,5 +25,3 @@ main (int argc, char **argv)
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+-/* { dg-final { cleanup-rtl-dump "ira" } } */
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/mgeneral-regs_1.c
+@@ -0,0 +1,10 @@
++/* { dg-options "-mgeneral-regs-only" } */
++
++typedef int int32x2_t __attribute__ ((__vector_size__ ((8))));
++
++/* { dg-error "'-mgeneral-regs-only' is incompatible with vector return type" "" {target "aarch64*-*-*"} 7 } */
++/* { dg-error "'-mgeneral-regs-only' is incompatible with vector argument" "" {target "aarch64*-*-*"} 7 } */
++int32x2_t test (int32x2_t a, int32x2_t b)
++{
++  return a + b;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/mgeneral-regs_2.c
+@@ -0,0 +1,15 @@
++/* { dg-options "-mgeneral-regs-only" } */
++
++#include <stdarg.h>
++
++typedef int int32x2_t __attribute__ ((__vector_size__ ((8))));
++
++int
++test (int i, ...)
++{
++  va_list argp;
++  va_start (argp, i);
++  int32x2_t x = (int32x2_t) {0, 1};
++  x += va_arg (argp, int32x2_t); /* { dg-error "'-mgeneral-regs-only' is incompatible with vector varargs" } */
++  return x[0] + x[1];
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/mgeneral-regs_3.c
+@@ -0,0 +1,11 @@
++/* { dg-options "-mgeneral-regs-only -O2" } */
++
++extern void abort (void);
++
++int
++test (int i, ...)
++{
++  float f = (float) i; /* { dg-error "'-mgeneral-regs-only' is incompatible with floating-point code" } */
++  if (f != f) abort ();
++  return 2;
++}
+--- a/src/gcc/testsuite/gcc.target/aarch64/mla_intrinsic_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/mla_intrinsic_1.c
+@@ -80,5 +80,4 @@ main (int argc, char **argv)
+ 
+ /* { dg-final { scan-assembler-times "mla\\tv\[0-9\]+\.4s, v\[0-9\]+\.4s, v\[0-9\]+\.4s\\\[\[0-9\]+\\\]" 4 } } */
+ /* { dg-final { scan-assembler-times "mla\\tv\[0-9\]+\.8h, v\[0-9\]+\.8h, v\[0-9\]+\.8h\\\[\[0-9\]+\\\]" 4 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+ 
+--- a/src/gcc/testsuite/gcc.target/aarch64/mls_intrinsic_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/mls_intrinsic_1.c
+@@ -85,5 +85,4 @@ main (int argc, char **argv)
+ 
+ /* { dg-final { scan-assembler-times "mls\\tv\[0-9\]+\.4s, v\[0-9\]+\.4s, v\[0-9\]+\.4s\\\[\[0-9\]+\\\]" 4 } } */
+ /* { dg-final { scan-assembler-times "mls\\tv\[0-9\]+\.8h, v\[0-9\]+\.8h, v\[0-9\]+\.8h\\\[\[0-9\]+\\\]" 4 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+ 
+--- a/src/gcc/testsuite/gcc.target/aarch64/movk.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/movk.c
+@@ -28,4 +28,3 @@ main (void)
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/mul_intrinsic_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/mul_intrinsic_1.c
+@@ -79,5 +79,4 @@ main (int argc, char **argv)
+ 
+ /* { dg-final { scan-assembler-times "mul\\tv\[0-9\]+\.4s, v\[0-9\]+\.4s, v\[0-9\]+\.s\\\[\[0-9\]+\\\]" 4 } } */
+ /* { dg-final { scan-assembler-times "mul\\tv\[0-9\]+\.8h, v\[0-9\]+\.8h, v\[0-9\]+\.h\\\[\[0-9\]+\\\]" 4 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+ 
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/mult-synth_1.c
+@@ -0,0 +1,10 @@
++/* { dg-do compile } */
++/* { dg-options "-O2 -mcpu=cortex-a57 -save-temps" } */
++
++int
++foo (int x)
++{
++  return x * 100;
++}
++
++/* { dg-final { scan-assembler-times "mul\tw\[0-9\]+, w\[0-9\]+, w\[0-9\]+" 1 } } */
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/mult-synth_2.c
+@@ -0,0 +1,10 @@
++/* { dg-do compile } */
++/* { dg-options "-O2 -mcpu=cortex-a57 -save-temps" } */
++
++int
++foo (int x)
++{
++  return x * 25;
++}
++
++/* { dg-final { scan-assembler-times "mul\tw\[0-9\]+, w\[0-9\]+, w\[0-9\]+" 1 } } */
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/mult-synth_3.c
+@@ -0,0 +1,10 @@
++/* { dg-do compile } */
++/* { dg-options "-O2 -mcpu=cortex-a57 -save-temps" } */
++
++int
++foo (int x)
++{
++  return x * 11;
++}
++
++/* { dg-final { scan-assembler-times "mul\tw\[0-9\]+, w\[0-9\]+, w\[0-9\]+" 1 } } */
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/mult-synth_4.c
+@@ -0,0 +1,10 @@
++/* { dg-do compile } */
++/* { dg-options "-O2 -mcpu=cortex-a57 -save-temps" } */
++
++long
++foo (int x, int y)
++{
++   return (long)x * 6L;
++}
++
++/* { dg-final { scan-assembler-times "smull\tx\[0-9\]+, w\[0-9\]+, w\[0-9\]+" 1 } } */
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/mult-synth_5.c
+@@ -0,0 +1,10 @@
++/* { dg-do compile } */
++/* { dg-options "-O2 -mcpu=cortex-a57 -save-temps" } */
++
++int
++foo (int x)
++{
++  return x * 10;
++}
++
++/* { dg-final { scan-assembler-not "\tw1" } } */
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/mult-synth_6.c
+@@ -0,0 +1,10 @@
++/* { dg-do compile } */
++/* { dg-options "-O2 -mcpu=cortex-a57 -save-temps" } */
++
++int
++foo (int x)
++{
++  return x * 20;
++}
++
++/* { dg-final { scan-assembler-not "\tw1" } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/neg_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/neg_1.c
+@@ -64,4 +64,3 @@ main (void)
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/neg_abs_1.c
+@@ -0,0 +1,17 @@
++/* { dg-do compile } */
++/* { dg-options "-save-temps -O2" } */
++
++int
++f1 (int x)
++{
++  return x < 0 ? x : -x;
++}
++
++long long
++f2 (long long x)
++{
++  return x < 0 ? x : -x;
++}
++
++/* { dg-final { scan-assembler-not "\tneg\tw\[0-9\]*.*" } } */
++/* { dg-final { scan-assembler-not "\tneg\tx\[0-9\]*.*" } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/ngc.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/ngc.c
+@@ -63,4 +63,3 @@ main ()
+ 
+ /* { 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 } } */
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/nofp_1.c
+@@ -0,0 +1,19 @@
++/* { dg-skip-if "conflicting -march" { *-*-* } { "-march=*" } { "-march=*+nofp" } } */
++/* If there are multiple -march's, the latest wins; skip the test either way.
++   -march overrides -mcpu, so there is no possibility of conflict.  */
++
++/* { dg-options "-march=armv8-a+nofp" } */
++
++#include <stdarg.h>
++
++typedef int int32x2_t __attribute__ ((__vector_size__ ((8))));
++
++int test (int i, ...);
++
++int
++main (int argc, char **argv)
++{
++  int32x2_t a = (int32x2_t) {0, 1};
++  int32x2_t b = (int32x2_t) {2, 3};
++  return test (2, a, b); /* { dg-error "'\\+nofp' feature modifier is incompatible with vector argument" } */
++}
+--- a/src/gcc/testsuite/gcc.target/aarch64/pmull_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/pmull_1.c
+@@ -20,4 +20,3 @@ test_vmull_high_p64 (poly64x2_t a, poly64x2_t b)
+ 
+ /* { dg-final { scan-assembler-times "pmull2\\tv" 1 } } */
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/pr60580_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/pr60580_1.c
+@@ -42,4 +42,3 @@ func3 (void)
+ 
+ /* { dg-final { scan-assembler-times "stp\tx29, x30, \\\[sp, -\[0-9\]+\\\]!" 1 } } */
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/pr64304.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/pr64304.c
+@@ -15,4 +15,3 @@ set_bit (unsigned int bit, unsigned char value)
+   /* { dg-final { scan-assembler "and\tw\[0-9\]+, w\[0-9\]+, 7" } } */
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/pr65491_1.c
+@@ -0,0 +1,11 @@
++/* { dg-do compile } */
++/* { dg-options "-O2" } */
++
++typedef long double a __attribute__((vector_size (16)));
++
++a
++sum (a first, a second)
++{
++  return first + second;
++}
++
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/pr66776.c
+@@ -0,0 +1,10 @@
++/* { dg-do compile } */
++/* { dg-options "-O2 --save-temps" } */
++
++unsigned long long
++foo (unsigned int a, unsigned int b, unsigned int c)
++{
++  return a ? b : c;
++}
++
++/* { dg-final { scan-assembler-not "uxtw" } } */
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/pragma_cpp_predefs_1.c
+@@ -0,0 +1,255 @@
++/* { dg-do compile } */
++/* { dg-options "-O2 -march=armv8-a+crypto" } */
++
++/* Test that pragma option pushing and popping works.
++   Also that CPP predefines redefinitions on #pragma works.  */
++
++#pragma GCC push_options
++#pragma GCC target ("arch=armv8-a+nofp+nosimd")
++#ifdef __ARM_FEATURE_FMA
++#error "__ARM_FEATURE_FMA is defined but should not be!"
++#endif
++
++#ifdef __ARM_FP
++#error "__ARM_FP is defined but should not be!"
++#endif
++
++#pragma GCC push_options
++#pragma GCC target ("arch=armv8-a+fp+nosimd")
++#ifndef __ARM_FP
++#error "__ARM_FP is not defined but should be!"
++#endif
++
++#ifdef __ARM_NEON
++#error "__ARM_NEON is defined but should not be!"
++#endif
++
++#pragma GCC push_options
++#pragma GCC target ("arch=armv8-a+fp+simd")
++
++#ifndef __ARM_NEON
++#error "__ARM_NEON is not defined but should be!"
++#endif
++
++#ifdef __ARM_FEATURE_CRYPTO
++#error "__ARM_FEATURE_CRYPTO is defined but should not be!"
++#endif
++
++#pragma GCC push_options
++#pragma GCC target ("arch=armv8-a+fp+simd+crypto")
++
++#ifndef __ARM_FEATURE_CRYPTO
++#error "__ARM_FEATURE_CRYPTO is not defined but should be!"
++#endif
++
++#pragma GCC pop_options
++
++#ifndef __ARM_NEON
++#error "__ARM_NEON is not defined but should be!"
++#endif
++
++#ifdef __ARM_FEATURE_CRYPTO
++#error "__ARM_FEATURE_CRYPTO is defined but should not be!"
++#endif
++
++
++#pragma GCC pop_options
++
++#ifndef __ARM_FP
++#error "__ARM_FP is not defined but should be!"
++#endif
++
++#ifdef __ARM_NEON
++#error "__ARM_NEON is defined but should not be!"
++#endif
++
++#pragma GCC pop_options
++
++#ifdef __ARM_FP
++#error "__ARM_FP is defined but should not be!"
++#endif
++
++#ifdef __ARM_NEON
++#error "__ARM_NEON is defined but should not be!"
++#endif
++
++/* And again, but using cpu=.  */
++
++#pragma GCC push_options
++#pragma GCC target ("cpu=cortex-a53+nofp+nosimd")
++#ifdef __ARM_FEATURE_FMA
++#error "__ARM_FEATURE_FMA is defined but should not be!"
++#endif
++
++#ifdef __ARM_FP
++#error "__ARM_FP is defined but should not be!"
++#endif
++
++#pragma GCC push_options
++#pragma GCC target ("cpu=cortex-a53+fp+nosimd")
++#ifndef __ARM_FP
++#error "__ARM_FP is not defined but should be!"
++#endif
++
++#ifdef __ARM_NEON
++#error "__ARM_NEON is defined but should not be!"
++#endif
++
++#pragma GCC push_options
++#pragma GCC target ("cpu=cortex-a53+fp+simd+nocrypto")
++
++#ifndef __ARM_NEON
++#error "__ARM_NEON is not defined but should be!"
++#endif
++
++#ifdef __ARM_FEATURE_CRYPTO
++#error "__ARM_FEATURE_CRYPTO is defined but should not be!"
++#endif
++
++#pragma GCC push_options
++#pragma GCC target ("cpu=cortex-a53+fp+simd+crypto")
++
++#ifndef __ARM_FEATURE_CRYPTO
++#error "__ARM_FEATURE_CRYPTO is not defined but should be!"
++#endif
++
++
++#pragma GCC pop_options
++
++#ifndef __ARM_NEON
++#error "__ARM_NEON is not defined but should be!"
++#endif
++
++#ifdef __ARM_FEATURE_CRYPTO
++#error "__ARM_FEATURE_CRYPTO is defined but should not be!"
++#endif
++
++
++#pragma GCC pop_options
++
++#ifndef __ARM_FP
++#error "__ARM_FP is not defined but should be!"
++#endif
++
++#ifdef __ARM_NEON
++#error "__ARM_NEON is defined but should not be!"
++#endif
++
++#pragma GCC pop_options
++
++#ifdef __ARM_FP
++#error "__ARM_FP is defined but should not be!"
++#endif
++
++#ifdef __ARM_NEON
++#error "__ARM_NEON is defined but should not be!"
++#endif
++
++/* And again, but using just the ISA extensions.  */
++
++#pragma GCC push_options
++#pragma GCC target ("+nofp")
++#ifdef __ARM_FEATURE_FMA
++#error "__ARM_FEATURE_FMA is defined but should not be!"
++#endif
++
++#ifdef __ARM_FP
++#error "__ARM_FP is defined but should not be!"
++#endif
++
++#pragma GCC push_options
++#pragma GCC target ("+fp+nosimd")
++#ifndef __ARM_FP
++#error "__ARM_FP is not defined but should be!"
++#endif
++
++#ifdef __ARM_NEON
++#error "__ARM_NEON is defined but should not be!"
++#endif
++
++#pragma GCC push_options
++#pragma GCC target ("+fp+simd+nocrypto")
++
++#ifndef __ARM_NEON
++#error "__ARM_NEON is not defined but should be!"
++#endif
++
++#ifdef __ARM_FEATURE_CRYPTO
++#error "__ARM_FEATURE_CRYPTO is defined but should not be!"
++#endif
++
++#pragma GCC push_options
++#pragma GCC target ("+fp+simd+crypto")
++
++#ifndef __ARM_FEATURE_CRYPTO
++#error "__ARM_FEATURE_CRYPTO is not defined but should be!"
++#endif
++
++#pragma GCC pop_options
++
++#ifndef __ARM_NEON
++#error "__ARM_NEON is not defined but should be!"
++#endif
++
++#ifdef __ARM_FEATURE_CRYPTO
++#error "__ARM_FEATURE_CRYPTO is defined but should not be!"
++#endif
++
++
++#pragma GCC pop_options
++
++#ifndef __ARM_FP
++#error "__ARM_FP is not defined but should be!"
++#endif
++
++#ifdef __ARM_NEON
++#error "__ARM_NEON is defined but should not be!"
++#endif
++
++#pragma GCC pop_options
++
++#ifdef __ARM_FP
++#error "__ARM_FP is defined but should not be!"
++#endif
++
++#ifdef __ARM_NEON
++#error "__ARM_NEON is defined but should not be!"
++#endif
++
++/* Make sure that general-regs-only works too.  */
++#pragma GCC push_options
++#pragma GCC target ("general-regs-only")
++#ifdef __ARM_FEATURE_FMA
++#error "__ARM_FEATURE_FMA is defined but should not be!"
++#endif
++
++#ifdef __ARM_FP
++#error "__ARM_FP is defined but should not be!"
++#endif
++
++#ifdef __ARM_NEON
++#error "__ARM_NEON is defined but should not be!"
++#endif
++
++#ifdef __ARM_FEATURE_CRYPTO
++#error "__ARM_FEATURE_CRYPTO is defined but should not be!"
++#endif
++
++#pragma GCC pop_options
++
++/* Also check that crc re-defines work.  */
++#pragma GCC target ("+nocrc")
++#ifdef __ARM_FEATURE_CRC32
++#error "__ARM_FEATURE_CRC32 is defined but should not be!"
++#endif
++
++#pragma GCC target ("+crc")
++#ifndef __ARM_FEATURE_CRC32
++#error "__ARM_FEATURE_CRC32 is not defined but should be!"
++#endif
++
++int
++foo (int a)
++{
++  return a;
++}
+--- a/src/gcc/testsuite/gcc.target/aarch64/ror.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/ror.c
+@@ -31,4 +31,3 @@ main ()
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/sbc.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/sbc.c
+@@ -38,4 +38,3 @@ main ()
+   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
+@@ -69,4 +69,3 @@ main (int argc, char **argv)
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/scalar_shift_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/scalar_shift_1.c
+@@ -258,4 +258,3 @@ main ()
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/sha1_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/sha1_1.c
+@@ -52,4 +52,3 @@ test_vsha1su1q_u32 (uint32x4_t tw0_3, uint32x4_t w12_15)
+ 
+ /* { dg-final { scan-assembler-times "sha1su1\\tv" 1 } } */
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/sha256_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/sha256_1.c
+@@ -37,4 +37,3 @@ test_vsha256su1q_u32 (uint32x4_t tw0_3, uint32x4_t w8_11, uint32x4_t w12_15)
+ /* { dg-final { scan-assembler-times "sha256su1\\tv" 1 } } */
+ 
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/shrink_wrap_symbol_ref_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/shrink_wrap_symbol_ref_1.c
+@@ -25,4 +25,3 @@ assemble_string (const char *p, int size)
+ }
+ 
+ /* { dg-final { scan-rtl-dump "Performing shrink-wrapping" "pro_and_epilogue"  } } */
+-/* { dg-final { cleanup-rtl-dump "pro_and_epilogue" } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/ext_f32_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/ext_f32_1.c
+@@ -7,4 +7,3 @@
+ #include "ext_f32.x"
+ 
+ /* { dg-final { scan-assembler-times "ext\[ \t\]+\[vV\]\[0-9\]+\.8\[bB\], ?\[vV\]\[0-9\]+\.8\[bB\], ?\[vV\]\[0-9\]+\.8\[bB\], ?#\[0-9\]+\(?:.4)?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/ext_f64_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/ext_f64_1.c
+@@ -22,4 +22,3 @@ main (int argc, char **argv)
+ 
+ /* Do not scan-assembler.  An EXT instruction could be emitted, but would merely
+    return its first argument, so it is legitimate to optimize it out.  */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/ext_p16_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/ext_p16_1.c
+@@ -7,4 +7,3 @@
+ #include "ext_p16.x"
+ 
+ /* { dg-final { scan-assembler-times "ext\[ \t\]+\[vV\]\[0-9\]+\.8\[bB\], ?\[vV\]\[0-9\]+\.8\[bB\], ?\[vV\]\[0-9\]+\.8\[bB\], ?#\[0-9\]+\(?:.2\)?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 3 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/ext_p8_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/ext_p8_1.c
+@@ -7,4 +7,3 @@
+ #include "ext_p8.x"
+ 
+ /* { dg-final { scan-assembler-times "ext\[ \t\]+\[vV\]\[0-9\]+\.8\[bB\], ?\[vV\]\[0-9\]+\.8\[bB\], ?\[vV\]\[0-9\]+\.8\[bB\], ?#?\[0-9\]+\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 7 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/ext_s16_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/ext_s16_1.c
+@@ -7,4 +7,3 @@
+ #include "ext_s16.x"
+ 
+ /* { dg-final { scan-assembler-times "ext\[ \t\]+\[vV\]\[0-9\]+\.8\[bB\], ?\[vV\]\[0-9\]+\.8\[bB\], ?\[vV\]\[0-9\]+\.8\[bB\], ?#\[0-9\]+\(?:.2\)?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 3 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/ext_s32_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/ext_s32_1.c
+@@ -7,4 +7,3 @@
+ #include "ext_s32.x"
+ 
+ /* { dg-final { scan-assembler-times "ext\[ \t\]+\[vV\]\[0-9\]+\.8\[bB\], ?\[vV\]\[0-9\]+\.8\[bB\], ?\[vV\]\[0-9\]+\.8\[bB\], ?#\[0-9\]+\(?:.4)?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/ext_s64_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/ext_s64_1.c
+@@ -23,4 +23,3 @@ main (int argc, char **argv)
+ 
+ /* Do not scan-assembler.  An EXT instruction could be emitted, but would merely
+    return its first argument, so it is legitimate to optimize it out.  */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/ext_s8_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/ext_s8_1.c
+@@ -7,4 +7,3 @@
+ #include "ext_s8.x"
+ 
+ /* { dg-final { scan-assembler-times "ext\[ \t\]+\[vV\]\[0-9\]+\.8\[bB\], ?\[vV\]\[0-9\]+\.8\[bB\], ?\[vV\]\[0-9\]+\.8\[bB\], ?#?\[0-9\]+\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 7 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/ext_u16_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/ext_u16_1.c
+@@ -7,4 +7,3 @@
+ #include "ext_u16.x"
+ 
+ /* { dg-final { scan-assembler-times "ext\[ \t\]+\[vV\]\[0-9\]+\.8\[bB\], ?\[vV\]\[0-9\]+\.8\[bB\], ?\[vV\]\[0-9\]+\.8\[bB\], ?#\[0-9\]+\(?:.2\)?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 3 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/ext_u32_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/ext_u32_1.c
+@@ -7,4 +7,3 @@
+ #include "ext_u32.x"
+ 
+ /* { dg-final { scan-assembler-times "ext\[ \t\]+\[vV\]\[0-9\]+\.8\[bB\], ?\[vV\]\[0-9\]+\.8\[bB\], ?\[vV\]\[0-9\]+\.8\[bB\], ?#\[0-9\]+\(?:.4)?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/ext_u64_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/ext_u64_1.c
+@@ -23,4 +23,3 @@ main (int argc, char **argv)
+ 
+ /* Do not scan-assembler.  An EXT instruction could be emitted, but would merely
+    return its first argument, so it is legitimate to optimize it out.  */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/ext_u8_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/ext_u8_1.c
+@@ -7,4 +7,3 @@
+ #include "ext_u8.x"
+ 
+ /* { dg-final { scan-assembler-times "ext\[ \t\]+\[vV\]\[0-9\]+\.8\[bB\], ?\[vV\]\[0-9\]+\.8\[bB\], ?\[vV\]\[0-9\]+\.8\[bB\], ?#?\[0-9\]+\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 7 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/extq_f32_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/extq_f32_1.c
+@@ -7,4 +7,3 @@
+ #include "extq_f32.x"
+ 
+ /* { dg-final { scan-assembler-times "ext\[ \t\]+\[vV\]\[0-9\]+\.16\[bB\], ?\[vV\]\[0-9\]+\.16\[bB\], ?\[vV\]\[0-9\]+\.16\[bB\], ?#\[0-9\]+\(?:.4)?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 3 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/extq_f64_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/extq_f64_1.c
+@@ -33,4 +33,3 @@ main (int argc, char **argv)
+ }
+ 
+ /* { dg-final { scan-assembler-times "ext\[ \t\]+\[vV\]\[0-9\]+\.16\[bB\], ?\[vV\]\[0-9\]+\.16\[bB\], ?\[vV\]\[0-9\]+\.16\[bB\], ?#\[0-9\]+\(?:.8\)?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/extq_p16_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/extq_p16_1.c
+@@ -7,4 +7,3 @@
+ #include "extq_p16.x"
+ 
+ /* { dg-final { scan-assembler-times "ext\[ \t\]+\[vV\]\[0-9\]+\.16\[bB\], ?\[vV\]\[0-9\]+\.16\[bB\], ?\[vV\]\[0-9\]+\.16\[bB\], ?#\[0-9\]+\(?:.2\)?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 7 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/extq_p8_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/extq_p8_1.c
+@@ -7,4 +7,3 @@
+ #include "extq_p8.x"
+ 
+ /* { dg-final { scan-assembler-times "ext\[ \t\]+\[vV\]\[0-9\]+\.16\[bB\], ?\[vV\]\[0-9\]+\.16\[bB\], ?\[vV\]\[0-9\]+\.16\[bB\], ?#?\[0-9\]+\(?:.2\)?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 15 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/extq_s16_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/extq_s16_1.c
+@@ -7,4 +7,3 @@
+ #include "extq_s16.x"
+ 
+ /* { dg-final { scan-assembler-times "ext\[ \t\]+\[vV\]\[0-9\]+\.16\[bB\], ?\[vV\]\[0-9\]+\.16\[bB\], ?\[vV\]\[0-9\]+\.16\[bB\], ?#\[0-9\]+\(?:.2\)?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 7 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/extq_s32_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/extq_s32_1.c
+@@ -7,4 +7,3 @@
+ #include "extq_s32.x"
+ 
+ /* { dg-final { scan-assembler-times "ext\[ \t\]+\[vV\]\[0-9\]+\.16\[bB\], ?\[vV\]\[0-9\]+\.16\[bB\], ?\[vV\]\[0-9\]+\.16\[bB\], ?#\[0-9\]+\(?:.4)?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 3 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/extq_s64_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/extq_s64_1.c
+@@ -7,4 +7,3 @@
+ #include "extq_s64.x"
+ 
+ /* { dg-final { scan-assembler-times "ext\[ \t\]+\[vV\]\[0-9\]+\.16\[bB\], ?\[vV\]\[0-9\]+\.16\[bB\], ?\[vV\]\[0-9\]+\.16\[bB\], ?#\[0-9\]+\(?:.8\)?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/extq_s8_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/extq_s8_1.c
+@@ -7,4 +7,3 @@
+ #include "extq_s8.x"
+ 
+ /* { dg-final { scan-assembler-times "ext\[ \t\]+\[vV\]\[0-9\]+\.16\[bB\], ?\[vV\]\[0-9\]+\.16\[bB\], ?\[vV\]\[0-9\]+\.16\[bB\], ?#?\[0-9\]+\(?:.2\)?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 15 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/extq_u16_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/extq_u16_1.c
+@@ -7,4 +7,3 @@
+ #include "extq_u16.x"
+ 
+ /* { dg-final { scan-assembler-times "ext\[ \t\]+\[vV\]\[0-9\]+\.16\[bB\], ?\[vV\]\[0-9\]+\.16\[bB\], ?\[vV\]\[0-9\]+\.16\[bB\], ?#\[0-9\]+\(?:.2\)?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 7 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/extq_u32_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/extq_u32_1.c
+@@ -7,4 +7,3 @@
+ #include "extq_u32.x"
+ 
+ /* { dg-final { scan-assembler-times "ext\[ \t\]+\[vV\]\[0-9\]+\.16\[bB\], ?\[vV\]\[0-9\]+\.16\[bB\], ?\[vV\]\[0-9\]+\.16\[bB\], ?#\[0-9\]+\(?:.4)?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 3 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/extq_u64_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/extq_u64_1.c
+@@ -7,4 +7,3 @@
+ #include "extq_u64.x"
+ 
+ /* { dg-final { scan-assembler-times "ext\[ \t\]+\[vV\]\[0-9\]+\.16\[bB\], ?\[vV\]\[0-9\]+\.16\[bB\], ?\[vV\]\[0-9\]+\.16\[bB\], ?#\[0-9\]+\(?:.8\)?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/extq_u8_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/extq_u8_1.c
+@@ -7,4 +7,3 @@
+ #include "extq_u8.x"
+ 
+ /* { dg-final { scan-assembler-times "ext\[ \t\]+\[vV\]\[0-9\]+\.16\[bB\], ?\[vV\]\[0-9\]+\.16\[bB\], ?\[vV\]\[0-9\]+\.16\[bB\], ?#?\[0-9\]+\(?:.2\)?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 15 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vcage_f64.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vcage_f64.c
+@@ -35,4 +35,3 @@ main (void)
+ }
+ 
+ /* { dg-final { scan-assembler "facge\[ \t\]+\[dD\]\[0-9\]+, ?\[dD\]\[0-9\]+, ?\[dD\]\[0-9\]+\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vcagt_f64.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vcagt_f64.c
+@@ -35,4 +35,3 @@ main (void)
+ }
+ 
+ /* { dg-final { scan-assembler "facgt\[ \t\]+\[dD\]\[0-9\]+, ?\[dD\]\[0-9\]+, ?\[dD\]\[0-9\]+\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vcale_f64.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vcale_f64.c
+@@ -35,4 +35,3 @@ main (void)
+ }
+ 
+ /* { dg-final { scan-assembler "facge\[ \t\]+\[dD\]\[0-9\]+, ?\[dD\]\[0-9\]+, ?\[dD\]\[0-9\]+\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vcaled_f64.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vcaled_f64.c
+@@ -33,4 +33,3 @@ main (void)
+ }
+ 
+ /* { dg-final { scan-assembler "facge\[ \t\]+\[dD\]\[0-9\]+, ?\[dD\]\[0-9\]+, ?\[dD\]\[0-9\]+\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vcales_f32.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vcales_f32.c
+@@ -33,4 +33,3 @@ main (void)
+ }
+ 
+ /* { dg-final { scan-assembler "facge\[ \t\]+\[sS\]\[0-9\]+, ?\[sS\]\[0-9\]+, ?\[sS\]\[0-9\]+\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vcalt_f64.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vcalt_f64.c
+@@ -35,4 +35,3 @@ main (void)
+ }
+ 
+ /* { dg-final { scan-assembler "facgt\[ \t\]+\[dD\]\[0-9\]+, ?\[dD\]\[0-9\]+, ?\[dD\]\[0-9\]+\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vcaltd_f64.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vcaltd_f64.c
+@@ -33,4 +33,3 @@ main (void)
+ }
+ 
+ /* { dg-final { scan-assembler "facgt\[ \t\]+\[dD\]\[0-9\]+, ?\[dD\]\[0-9\]+, ?\[dD\]\[0-9\]+\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vcalts_f32.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vcalts_f32.c
+@@ -33,4 +33,3 @@ main (void)
+ }
+ 
+ /* { dg-final { scan-assembler "facgt\[ \t\]+\[sS\]\[0-9\]+, ?\[sS\]\[0-9\]+, ?\[sS\]\[0-9\]+\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vfma_f64.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vfma_f64.c
+@@ -42,4 +42,3 @@ main (void)
+ }
+ 
+ /* { dg-final { scan-assembler-times "fmadd\[ \t\]+\[dD\]\[0-9\]+, ?\[dD\]\[0-9\]+, ?\[dD\]\[0-9\]+, ?\[dD\]\[0-9\]+\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vfms_f64.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vfms_f64.c
+@@ -42,4 +42,3 @@ main (void)
+ }
+ 
+ /* { dg-final { scan-assembler-times "fmsub\[ \t\]+\[dD\]\[0-9\]+, ?\[dD\]\[0-9\]+, ?\[dD\]\[0-9\]+, ?\[dD\]\[0-9\]+\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vmul_f64_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vmul_f64_1.c
+@@ -27,4 +27,3 @@ main (void)
+ }
+ 
+ /* { dg-final { scan-assembler "fmul\[ \t\]+\[dD\]\[0-9\]+, ?\[dD\]\[0-9\]+, ?\[dD\]\[0-9\]+\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vpaddd_f64.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vpaddd_f64.c
+@@ -24,4 +24,3 @@ main (void)
+ }
+ 
+ /* { dg-final { scan-assembler "faddp\[ \t\]+\[dD\]\[0-9\]+, v\[0-9\].2d+\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vpaddd_s64.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vpaddd_s64.c
+@@ -24,4 +24,3 @@ main (void)
+ }
+ 
+ /* { dg-final { scan-assembler "addp\[ \t\]+\[dD\]\[0-9\]+, v\[0-9\].2d+\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vpaddd_u64.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vpaddd_u64.c
+@@ -24,4 +24,3 @@ main (void)
+ }
+ 
+ /* { dg-final { scan-assembler "addp\[ \t\]+\[dD\]\[0-9\]+, v\[0-9\].2d+\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vqdmlal_high_lane_s16.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vqdmlal_high_lane_s16.c
+@@ -12,4 +12,3 @@ t_vqdmlal_high_lane_s16 (int32x4_t a, int16x8_t b, int16x4_t c)
+ }
+ 
+ /* { dg-final { scan-assembler-times "sqdmlal2\[ \t\]+\[vV\]\[0-9\]+\.4\[sS\], ?\[vV\]\[0-9\]+\.8\[hH\], ?\[vV\]\[0-9\]+\.\[hH\]\\\[0\\\]\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vqdmlal_high_lane_s32.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vqdmlal_high_lane_s32.c
+@@ -12,4 +12,3 @@ t_vqdmlal_high_lane_s32 (int64x2_t a, int32x4_t b, int32x2_t c)
+ }
+ 
+ /* { dg-final { scan-assembler-times "sqdmlal2\[ \t\]+\[vV\]\[0-9\]+\.2\[dD\], ?\[vV\]\[0-9\]+\.4\[sS\], ?\[vV\]\[0-9\]+\.\[sS\]\\\[0\\\]\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vqdmlal_high_laneq_s16.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vqdmlal_high_laneq_s16.c
+@@ -12,4 +12,3 @@ t_vqdmlal_high_laneq_s16 (int32x4_t a, int16x8_t b, int16x8_t c)
+ }
+ 
+ /* { dg-final { scan-assembler-times "sqdmlal2\[ \t\]+\[vV\]\[0-9\]+\.4\[sS\], ?\[vV\]\[0-9\]+\.8\[hH\], ?\[vV\]\[0-9\]+\.\[hH\]\\\[0\\\]\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vqdmlal_high_laneq_s32.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vqdmlal_high_laneq_s32.c
+@@ -12,4 +12,3 @@ t_vqdmlal_high_laneq_s32 (int64x2_t a, int32x4_t b, int32x4_t c)
+ }
+ 
+ /* { dg-final { scan-assembler-times "sqdmlal2\[ \t\]+\[vV\]\[0-9\]+\.2\[dD\], ?\[vV\]\[0-9\]+\.4\[sS\], ?\[vV\]\[0-9\]+\.\[sS\]\\\[0\\\]\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vqdmlal_lane_s16.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vqdmlal_lane_s16.c
+@@ -12,4 +12,3 @@ t_vqdmlal_lane_s16 (int32x4_t a, int16x4_t b, int16x4_t c)
+ }
+ 
+ /* { dg-final { scan-assembler-times "sqdmlal\[ \t\]+\[vV\]\[0-9\]+\.4\[sS\], ?\[vV\]\[0-9\]+\.4\[hH\], ?\[vV\]\[0-9\]+\.\[hH\]\\\[0\\\]\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vqdmlal_lane_s32.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vqdmlal_lane_s32.c
+@@ -12,4 +12,3 @@ t_vqdmlal_lane_s32 (int64x2_t a, int32x2_t b, int32x2_t c)
+ }
+ 
+ /* { dg-final { scan-assembler-times "sqdmlal\[ \t\]+\[vV\]\[0-9\]+\.2\[dD\], ?\[vV\]\[0-9\]+\.2\[sS\], ?\[vV\]\[0-9\]+\.\[sS\]\\\[0\\\]\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vqdmlal_laneq_s16.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vqdmlal_laneq_s16.c
+@@ -12,4 +12,3 @@ t_vqdmlal_laneq_s16 (int32x4_t a, int16x4_t b, int16x8_t c)
+ }
+ 
+ /* { dg-final { scan-assembler-times "sqdmlal\[ \t\]+\[vV\]\[0-9\]+\.4\[sS\], ?\[vV\]\[0-9\]+\.4\[hH\], ?\[vV\]\[0-9\]+\.\[hH\]\\\[0\\\]\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vqdmlal_laneq_s32.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vqdmlal_laneq_s32.c
+@@ -12,4 +12,3 @@ t_vqdmlal_laneq_s32 (int64x2_t a, int32x2_t b, int32x4_t c)
+ }
+ 
+ /* { dg-final { scan-assembler-times "sqdmlal\[ \t\]+\[vV\]\[0-9\]+\.2\[dD\], ?\[vV\]\[0-9\]+\.2\[sS\], ?\[vV\]\[0-9\]+\.\[sS\]\\\[0\\\]\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vqdmlalh_lane_s16.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vqdmlalh_lane_s16.c
+@@ -12,4 +12,3 @@ t_vqdmlalh_lane_s16 (int32_t a, int16_t b, int16x4_t c)
+ }
+ 
+ /* { dg-final { scan-assembler-times "sqdmlal\[ \t\]+\[sS\]\[0-9\]+, ?\[hH\]\[0-9\]+, ?\[vV\]\[0-9\]+\.\[hH\]\\\[0\\\]\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vqdmlalh_laneq_s16_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vqdmlalh_laneq_s16_1.c
+@@ -32,4 +32,3 @@ main (void)
+ 
+ 
+ /* { dg-final { scan-assembler-times "sqdmlal\[ \t\]+\[sS\]\[0-9\]+, ?\[hH\]\[0-9\]+, ?\[vV\]\[0-9\]+\.\[hH\]\\\[7\\\]\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vqdmlals_lane_s32.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vqdmlals_lane_s32.c
+@@ -12,4 +12,3 @@ t_vqdmlals_lane_s32 (int64_t a, int32_t b, int32x2_t c)
+ }
+ 
+ /* { dg-final { scan-assembler-times "sqdmlal\[ \t\]+\[dD\]\[0-9\]+, ?\[sS\]\[0-9\]+, ?\[vV\]\[0-9\]+\.\[sS\]\\\[0\\\]\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vqdmlals_laneq_s32_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vqdmlals_laneq_s32_1.c
+@@ -32,4 +32,3 @@ main (void)
+ 
+ 
+ /* { dg-final { scan-assembler-times "sqdmlal\[ \t\]+\[dD\]\[0-9\]+, ?\[sS\]\[0-9\]+, ?\[vV\]\[0-9\]+\.\[sS\]\\\[3\\\]\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vqdmlsl_high_lane_s16.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vqdmlsl_high_lane_s16.c
+@@ -12,4 +12,3 @@ t_vqdmlsl_high_lane_s16 (int32x4_t a, int16x8_t b, int16x4_t c)
+ }
+ 
+ /* { dg-final { scan-assembler-times "sqdmlsl2\[ \t\]+\[vV\]\[0-9\]+\.4\[sS\], ?\[vV\]\[0-9\]+\.8\[hH\], ?\[vV\]\[0-9\]+\.\[hH\]\\\[0\\\]\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vqdmlsl_high_lane_s32.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vqdmlsl_high_lane_s32.c
+@@ -12,4 +12,3 @@ t_vqdmlsl_high_lane_s32 (int64x2_t a, int32x4_t b, int32x2_t c)
+ }
+ 
+ /* { dg-final { scan-assembler-times "sqdmlsl2\[ \t\]+\[vV\]\[0-9\]+\.2\[dD\], ?\[vV\]\[0-9\]+\.4\[sS\], ?\[vV\]\[0-9\]+\.\[sS\]\\\[0\\\]\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vqdmlsl_high_laneq_s16.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vqdmlsl_high_laneq_s16.c
+@@ -12,4 +12,3 @@ t_vqdmlsl_high_laneq_s16 (int32x4_t a, int16x8_t b, int16x8_t c)
+ }
+ 
+ /* { dg-final { scan-assembler-times "sqdmlsl2\[ \t\]+\[vV\]\[0-9\]+\.4\[sS\], ?\[vV\]\[0-9\]+\.8\[hH\], ?\[vV\]\[0-9\]+\.\[hH\]\\\[0\\\]\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vqdmlsl_high_laneq_s32.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vqdmlsl_high_laneq_s32.c
+@@ -12,4 +12,3 @@ t_vqdmlsl_high_laneq_s32 (int64x2_t a, int32x4_t b, int32x4_t c)
+ }
+ 
+ /* { dg-final { scan-assembler-times "sqdmlsl2\[ \t\]+\[vV\]\[0-9\]+\.2\[dD\], ?\[vV\]\[0-9\]+\.4\[sS\], ?\[vV\]\[0-9\]+\.\[sS\]\\\[0\\\]\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vqdmlsl_lane_s16.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vqdmlsl_lane_s16.c
+@@ -12,4 +12,3 @@ t_vqdmlsl_lane_s16 (int32x4_t a, int16x4_t b, int16x4_t c)
+ }
+ 
+ /* { dg-final { scan-assembler-times "sqdmlsl\[ \t\]+\[vV\]\[0-9\]+\.4\[sS\], ?\[vV\]\[0-9\]+\.4\[hH\], ?\[vV\]\[0-9\]+\.\[hH\]\\\[0\\\]\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vqdmlsl_lane_s32.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vqdmlsl_lane_s32.c
+@@ -12,4 +12,3 @@ t_vqdmlsl_lane_s32 (int64x2_t a, int32x2_t b, int32x2_t c)
+ }
+ 
+ /* { dg-final { scan-assembler-times "sqdmlsl\[ \t\]+\[vV\]\[0-9\]+\.2\[dD\], ?\[vV\]\[0-9\]+\.2\[sS\], ?\[vV\]\[0-9\]+\.\[sS\]\\\[0\\\]\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vqdmlsl_laneq_s32.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vqdmlsl_laneq_s32.c
+@@ -12,4 +12,3 @@ t_vqdmlsl_lane_s32 (int64x2_t a, int32x2_t b, int32x4_t c)
+ }
+ 
+ /* { dg-final { scan-assembler-times "sqdmlsl\[ \t\]+\[vV\]\[0-9\]+\.2\[dD\], ?\[vV\]\[0-9\]+\.2\[sS\], ?\[vV\]\[0-9\]+\.\[sS\]\\\[0\\\]\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vqdmlslh_lane_s16.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vqdmlslh_lane_s16.c
+@@ -12,4 +12,3 @@ t_vqdmlslh_lane_s16 (int32_t a, int16_t b, int16x4_t c)
+ }
+ 
+ /* { dg-final { scan-assembler-times "sqdmlsl\[ \t\]+\[sS\]\[0-9\]+, ?\[hH\]\[0-9\]+, ?\[vV\]\[0-9\]+\.\[hH\]\\\[0\\\]\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vqdmlslh_laneq_s16_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vqdmlslh_laneq_s16_1.c
+@@ -32,4 +32,3 @@ main (void)
+ 
+ 
+ /* { dg-final { scan-assembler-times "sqdmlsl\[ \t\]+\[sS\]\[0-9\]+, ?\[hH\]\[0-9\]+, ?\[vV\]\[0-9\]+\.\[hH\]\\\[4\\\]\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vqdmlsls_lane_s32.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vqdmlsls_lane_s32.c
+@@ -12,4 +12,3 @@ t_vqdmlsls_lane_s32 (int64_t a, int32_t b, int32x2_t c)
+ }
+ 
+ /* { dg-final { scan-assembler-times "sqdmlsl\[ \t\]+\[dD\]\[0-9\]+, ?\[sS\]\[0-9\]+, ?\[vV\]\[0-9\]+\.\[sS\]\\\[0\\\]\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vqdmlsls_laneq_s32_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vqdmlsls_laneq_s32_1.c
+@@ -32,4 +32,3 @@ main (void)
+ }
+ 
+ /* { dg-final { scan-assembler-times "sqdmlsl\[ \t\]+\[dD\]\[0-9\]+, ?\[sS\]\[0-9\]+, ?\[vV\]\[0-9\]+\.\[sS\]\\\[3\\\]\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vqdmulh_laneq_s16.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vqdmulh_laneq_s16.c
+@@ -12,4 +12,3 @@ t_vqdmulh_laneq_s16 (int16x4_t a, int16x8_t b)
+ }
+ 
+ /* { dg-final { scan-assembler-times "sqdmulh\[ \t\]+\[vV\]\[0-9\]+\.4\[hH\], ?\[vV\]\[0-9\]+\.4\[hH\], ?\[vV\]\[0-9\]+\.\[hH\]\\\[0\\\]\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vqdmulh_laneq_s32.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vqdmulh_laneq_s32.c
+@@ -12,4 +12,3 @@ t_vqdmulh_laneq_s32 (int32x2_t a, int32x4_t b)
+ }
+ 
+ /* { dg-final { scan-assembler-times "sqdmulh\[ \t\]+\[vV\]\[0-9\]+\.2\[sS\], ?\[vV\]\[0-9\]+\.2\[sS\], ?\[vV\]\[0-9\]+\.\[sS\]\\\[0\\\]\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vqdmulhh_lane_s16.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vqdmulhh_lane_s16.c
+@@ -33,4 +33,3 @@ main (void)
+ 
+ 
+ /* { dg-final { scan-assembler-times "sqdmulh\[ \t\]+\[hH\]\[0-9\]+, ?\[hH\]\[0-9\]+, ?\[vV\]\[0-9\]+\.\[hH\]\\\[2\\\]\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vqdmulhh_laneq_s16_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vqdmulhh_laneq_s16_1.c
+@@ -30,4 +30,3 @@ main (void)
+ 
+ 
+ /* { dg-final { scan-assembler-times "sqdmulh\[ \t\]+\[hH\]\[0-9\]+, ?\[hH\]\[0-9\]+, ?\[vV\]\[0-9\]+\.\[hH\]\\\[7\\\]\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vqdmulhq_laneq_s16.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vqdmulhq_laneq_s16.c
+@@ -12,4 +12,3 @@ t_vqdmulhq_laneq_s16 (int16x8_t a, int16x8_t b)
+ }
+ 
+ /* { dg-final { scan-assembler-times "sqdmulh\[ \t\]+\[vV\]\[0-9\]+\.8\[hH\], ?\[vV\]\[0-9\]+\.8\[hH\], ?\[vV\]\[0-9\]+\.\[hH\]\\\[0\\\]\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vqdmulhq_laneq_s32.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vqdmulhq_laneq_s32.c
+@@ -12,4 +12,3 @@ t_vqdmulhq_laneq_s32 (int32x4_t a, int32x4_t b)
+ }
+ 
+ /* { dg-final { scan-assembler-times "sqdmulh\[ \t\]+\[vV\]\[0-9\]+\.4\[sS\], ?\[vV\]\[0-9\]+\.4\[sS\], ?\[vV\]\[0-9\]+\.\[sS\]\\\[0\\\]\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vqdmulhs_lane_s32.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vqdmulhs_lane_s32.c
+@@ -31,4 +31,3 @@ main (void)
+   return 0;
+ }
+ /* { dg-final { scan-assembler-times "sqdmulh\[ \t\]+\[sS\]\[0-9\]+, ?\[sS\]\[0-9\]+, ?\[vV\]\[0-9\]+\.\[sS\]\\\[0\\\]\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vqdmulhs_laneq_s32_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vqdmulhs_laneq_s32_1.c
+@@ -30,4 +30,3 @@ main (void)
+ 
+ 
+ /* { dg-final { scan-assembler-times "sqdmulh\[ \t\]+\[sS\]\[0-9\]+, ?\[sS\]\[0-9\]+, ?\[vV\]\[0-9\]+\.\[sS\]\\\[3\\\]\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vqdmull_high_lane_s16.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vqdmull_high_lane_s16.c
+@@ -12,4 +12,3 @@ t_vqdmull_high_lane_s16 (int16x8_t a, int16x4_t b)
+ }
+ 
+ /* { dg-final { scan-assembler-times "sqdmull2\[ \t\]+\[vV\]\[0-9\]+\.4\[sS\], ?\[vV\]\[0-9\]+\.8\[hH\], ?\[vV\]\[0-9\]+\.\[hH\]\\\[0\\\]\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vqdmull_high_lane_s32.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vqdmull_high_lane_s32.c
+@@ -12,4 +12,3 @@ t_vqdmull_high_lane_s32 (int32x4_t a, int32x2_t b)
+ }
+ 
+ /* { dg-final { scan-assembler-times "sqdmull2\[ \t\]+\[vV\]\[0-9\]+\.2\[dD\], ?\[vV\]\[0-9\]+\.4\[sS\], ?\[vV\]\[0-9\]+\.\[sS\]\\\[0\\\]\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vqdmull_high_laneq_s16.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vqdmull_high_laneq_s16.c
+@@ -12,4 +12,3 @@ t_vqdmull_high_laneq_s16 (int16x8_t a, int16x8_t b)
+ }
+ 
+ /* { dg-final { scan-assembler-times "sqdmull2\[ \t\]+\[vV\]\[0-9\]+\.4\[sS\], ?\[vV\]\[0-9\]+\.8\[hH\], ?\[vV\]\[0-9\]+\.\[hH\]\\\[0\\\]\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vqdmull_high_laneq_s32.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vqdmull_high_laneq_s32.c
+@@ -12,4 +12,3 @@ t_vqdmull_high_laneq_s32 (int32x4_t a, int32x4_t b)
+ }
+ 
+ /* { dg-final { scan-assembler-times "sqdmull2\[ \t\]+\[vV\]\[0-9\]+\.2\[dD\], ?\[vV\]\[0-9\]+\.4\[sS\], ?\[vV\]\[0-9\]+\.\[sS\]\\\[0\\\]\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vqdmull_lane_s16.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vqdmull_lane_s16.c
+@@ -12,4 +12,3 @@ t_vqdmull_lane_s16 (int16x4_t a, int16x4_t b)
+ }
+ 
+ /* { dg-final { scan-assembler-times "sqdmull\[ \t\]+\[vV\]\[0-9\]+\.4\[sS\], ?\[vV\]\[0-9\]+\.4\[hH\], ?\[vV\]\[0-9\]+\.\[hH\]\\\[0\\\]\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vqdmull_lane_s32.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vqdmull_lane_s32.c
+@@ -12,4 +12,3 @@ t_vqdmull_lane_s32 (int32x2_t a, int32x2_t b)
+ }
+ 
+ /* { dg-final { scan-assembler-times "sqdmull\[ \t\]+\[vV\]\[0-9\]+\.2\[dD\], ?\[vV\]\[0-9\]+\.2\[sS\], ?\[vV\]\[0-9\]+\.\[sS\]\\\[0\\\]\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vqdmull_laneq_s16.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vqdmull_laneq_s16.c
+@@ -12,4 +12,3 @@ t_vqdmull_laneq_s16 (int16x4_t a, int16x8_t b)
+ }
+ 
+ /* { dg-final { scan-assembler-times "sqdmull\[ \t\]+\[vV\]\[0-9\]+\.4\[sS\], ?\[vV\]\[0-9\]+\.4\[hH\], ?\[vV\]\[0-9\]+\.\[hH\]\\\[0\\\]\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vqdmull_laneq_s32.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vqdmull_laneq_s32.c
+@@ -12,4 +12,3 @@ t_vqdmull_laneq_s32 (int32x2_t a, int32x4_t b)
+ }
+ 
+ /* { dg-final { scan-assembler-times "sqdmull\[ \t\]+\[vV\]\[0-9\]+\.2\[dD\], ?\[vV\]\[0-9\]+\.2\[sS\], ?\[vV\]\[0-9\]+\.\[sS\]\\\[0\\\]\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vqdmullh_lane_s16.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vqdmullh_lane_s16.c
+@@ -12,4 +12,3 @@ t_vqdmullh_lane_s16 (int16_t a, int16x4_t b)
+ }
+ 
+ /* { dg-final { scan-assembler-times "sqdmull\[ \t\]+\[sS\]\[0-9\]+, ?\[hH\]\[0-9\]+, ?\[vV\]\[0-9\]+\.\[hH\]\\\[0\\\]\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vqdmullh_laneq_s16.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vqdmullh_laneq_s16.c
+@@ -12,4 +12,3 @@ t_vqdmullh_laneq_s16 (int16_t a, int16x8_t b)
+ }
+ 
+ /* { dg-final { scan-assembler-times "sqdmull\[ \t\]+\[sS\]\[0-9\]+, ?\[hH\]\[0-9\]+, ?\[vV\]\[0-9\]+\.\[hH\]\\\[0\\\]\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vqdmulls_lane_s32.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vqdmulls_lane_s32.c
+@@ -12,4 +12,3 @@ t_vqdmulls_lane_s32 (int32_t a, int32x2_t b)
+ }
+ 
+ /* { dg-final { scan-assembler-times "sqdmull\[ \t\]+\[dD\]\[0-9\]+, ?\[sS\]\[0-9\]+, ?\[vV\]\[0-9\]+\.\[sS\]\\\[0\\\]\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vqdmulls_laneq_s32.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vqdmulls_laneq_s32.c
+@@ -12,4 +12,3 @@ t_vqdmulls_laneq_s32 (int32_t a, int32x4_t b)
+ }
+ 
+ /* { dg-final { scan-assembler-times "sqdmull\[ \t\]+\[dD\]\[0-9\]+, ?\[sS\]\[0-9\]+, ?\[vV\]\[0-9\]+\.\[sS\]\\\[0\\\]\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vqrdmulh_laneq_s16.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vqrdmulh_laneq_s16.c
+@@ -12,4 +12,3 @@ t_vqrdmulh_laneq_s16 (int16x4_t a, int16x8_t b)
+ }
+ 
+ /* { dg-final { scan-assembler-times "sqrdmulh\[ \t\]+\[vV\]\[0-9\]+\.4\[hH\], ?\[vV\]\[0-9\]+\.4\[hH\], ?\[vV\]\[0-9\]+\.\[hH\]\\\[0\\\]\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vqrdmulh_laneq_s32.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vqrdmulh_laneq_s32.c
+@@ -12,4 +12,3 @@ t_vqrdmulh_laneq_s32 (int32x2_t a, int32x4_t b)
+ }
+ 
+ /* { dg-final { scan-assembler-times "sqrdmulh\[ \t\]+\[vV\]\[0-9\]+\.2\[sS\], ?\[vV\]\[0-9\]+\.2\[sS\], ?\[vV\]\[0-9\]+\.\[sS\]\\\[0\\\]\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vqrdmulhh_lane_s16.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vqrdmulhh_lane_s16.c
+@@ -32,4 +32,3 @@ main (void)
+ }
+ 
+ /* { dg-final { scan-assembler-times "sqrdmulh\[ \t\]+\[hH\]\[0-9\]+, ?\[hH\]\[0-9\]+, ?\[vV\]\[0-9\]+\.\[hH\]\\\[3\\\]\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vqrdmulhh_laneq_s16_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vqrdmulhh_laneq_s16_1.c
+@@ -30,4 +30,3 @@ main (void)
+ 
+ 
+ /* { dg-final { scan-assembler-times "sqrdmulh\[ \t\]+\[hH\]\[0-9\]+, ?\[hH\]\[0-9\]+, ?\[vV\]\[0-9\]+\.\[hH\]\\\[7\\\]\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vqrdmulhq_laneq_s16.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vqrdmulhq_laneq_s16.c
+@@ -12,4 +12,3 @@ t_vqrdmulhq_laneq_s16 (int16x8_t a, int16x8_t b)
+ }
+ 
+ /* { dg-final { scan-assembler-times "sqrdmulh\[ \t\]+\[vV\]\[0-9\]+\.8\[hH\], ?\[vV\]\[0-9\]+\.8\[hH\], ?\[vV\]\[0-9\]+\.\[hH\]\\\[0\\\]\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vqrdmulhq_laneq_s32.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vqrdmulhq_laneq_s32.c
+@@ -12,4 +12,3 @@ t_vqrdmulhq_laneq_s32 (int32x4_t a, int32x4_t b)
+ }
+ 
+ /* { dg-final { scan-assembler-times "sqrdmulh\[ \t\]+\[vV\]\[0-9\]+\.4\[sS\], ?\[vV\]\[0-9\]+\.4\[sS\], ?\[vV\]\[0-9\]+\.\[sS\]\\\[0\\\]\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vqrdmulhs_lane_s32.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vqrdmulhs_lane_s32.c
+@@ -32,4 +32,3 @@ main (void)
+ }
+ 
+ /* { dg-final { scan-assembler-times "sqrdmulh\[ \t\]+\[sS\]\[0-9\]+, ?\[sS\]\[0-9\]+, ?\[vV\]\[0-9\]+\.\[sS\]\\\[1\\\]\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vqrdmulhs_laneq_s32_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vqrdmulhs_laneq_s32_1.c
+@@ -29,4 +29,3 @@ main (void)
+ }
+ 
+ /* { dg-final { scan-assembler-times "sqrdmulh\[ \t\]+\[sS\]\[0-9\]+, ?\[sS\]\[0-9\]+, ?\[vV\]\[0-9\]+\.\[sS\]\\\[3\\\]\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vrbit_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vrbit_1.c
+@@ -53,4 +53,3 @@ main (int argc, char **argv)
+ /* { dg-final { scan-assembler-times "rbit\[ \t\]+\[vV\]\[0-9\]+\.8\[bB\], ?\[vV\]\[0-9\]+\.8\[bB\]" 3 } } */
+ /* { dg-final { scan-assembler-times "rbit\[ \t\]+\[vV\]\[0-9\]+\.16\[bB\], ?\[vV\]\[0-9\]+\.16\[bB\]" 3 } } */
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vrev16p8_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vrev16p8_1.c
+@@ -7,4 +7,3 @@
+ #include "vrev16p8.x"
+ 
+ /* { dg-final { scan-assembler-times "rev16\[ \t\]+v\[0-9\]+.8b, ?v\[0-9\]+.8b!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vrev16qp8_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vrev16qp8_1.c
+@@ -7,4 +7,3 @@
+ #include "vrev16qp8.x"
+ 
+ /* { dg-final { scan-assembler-times "rev16\[ \t\]+v\[0-9\]+.16b, ?v\[0-9\]+.16b!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vrev16qs8_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vrev16qs8_1.c
+@@ -7,4 +7,3 @@
+ #include "vrev16qs8.x"
+ 
+ /* { dg-final { scan-assembler-times "rev16\[ \t\]+v\[0-9\]+.16b, ?v\[0-9\]+.16b!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vrev16qu8_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vrev16qu8_1.c
+@@ -7,4 +7,3 @@
+ #include "vrev16qu8.x"
+ 
+ /* { dg-final { scan-assembler-times "rev16\[ \t\]+v\[0-9\]+.16b, ?v\[0-9\]+.16b!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vrev16s8_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vrev16s8_1.c
+@@ -7,4 +7,3 @@
+ #include "vrev16s8.x"
+ 
+ /* { dg-final { scan-assembler-times "rev16\[ \t\]+v\[0-9\]+.8b, ?v\[0-9\]+.8b!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vrev16u8_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vrev16u8_1.c
+@@ -7,4 +7,3 @@
+ #include "vrev16u8.x"
+ 
+ /* { dg-final { scan-assembler-times "rev16\[ \t\]+v\[0-9\]+.8b, ?v\[0-9\]+.8b!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vrev32p16_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vrev32p16_1.c
+@@ -7,4 +7,3 @@
+ #include "vrev32p16.x"
+ 
+ /* { dg-final { scan-assembler-times "rev32\[ \t\]+v\[0-9\]+.4h, ?v\[0-9\]+.4h!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vrev32p8_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vrev32p8_1.c
+@@ -7,4 +7,3 @@
+ #include "vrev32p8.x"
+ 
+ /* { dg-final { scan-assembler-times "rev32\[ \t\]+v\[0-9\]+.8b, ?v\[0-9\]+.8b!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vrev32qp16_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vrev32qp16_1.c
+@@ -7,4 +7,3 @@
+ #include "vrev32qp16.x"
+ 
+ /* { dg-final { scan-assembler-times "rev32\[ \t\]+v\[0-9\]+.8h, ?v\[0-9\]+.8h!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vrev32qp8_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vrev32qp8_1.c
+@@ -7,4 +7,3 @@
+ #include "vrev32qp8.x"
+ 
+ /* { dg-final { scan-assembler-times "rev32\[ \t\]+v\[0-9\]+.16b, ?v\[0-9\]+.16b!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vrev32qs16_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vrev32qs16_1.c
+@@ -7,4 +7,3 @@
+ #include "vrev32qs16.x"
+ 
+ /* { dg-final { scan-assembler-times "rev32\[ \t\]+v\[0-9\]+.8h, ?v\[0-9\]+.8h!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vrev32qs8_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vrev32qs8_1.c
+@@ -7,4 +7,3 @@
+ #include "vrev32qs8.x"
+ 
+ /* { dg-final { scan-assembler-times "rev32\[ \t\]+v\[0-9\]+.16b, ?v\[0-9\]+.16b!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vrev32qu16_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vrev32qu16_1.c
+@@ -7,4 +7,3 @@
+ #include "vrev32qu16.x"
+ 
+ /* { dg-final { scan-assembler-times "rev32\[ \t\]+v\[0-9\]+.8h, ?v\[0-9\]+.8h!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vrev32qu8_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vrev32qu8_1.c
+@@ -7,4 +7,3 @@
+ #include "vrev32qu8.x"
+ 
+ /* { dg-final { scan-assembler-times "rev32\[ \t\]+v\[0-9\]+.16b, ?v\[0-9\]+.16b!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vrev32s16_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vrev32s16_1.c
+@@ -7,4 +7,3 @@
+ #include "vrev32s16.x"
+ 
+ /* { dg-final { scan-assembler-times "rev32\[ \t\]+v\[0-9\]+.4h, ?v\[0-9\]+.4h!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vrev32s8_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vrev32s8_1.c
+@@ -7,4 +7,3 @@
+ #include "vrev32s8.x"
+ 
+ /* { dg-final { scan-assembler-times "rev32\[ \t\]+v\[0-9\]+.8b, ?v\[0-9\]+.8b!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vrev32u16_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vrev32u16_1.c
+@@ -7,4 +7,3 @@
+ #include "vrev32u16.x"
+ 
+ /* { dg-final { scan-assembler-times "rev32\[ \t\]+v\[0-9\]+.4h, ?v\[0-9\]+.4h!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vrev32u8_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vrev32u8_1.c
+@@ -7,4 +7,3 @@
+ #include "vrev32u8.x"
+ 
+ /* { dg-final { scan-assembler-times "rev32\[ \t\]+v\[0-9\]+.8b, ?v\[0-9\]+.8b!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vrev64f32_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vrev64f32_1.c
+@@ -7,4 +7,3 @@
+ #include "vrev64f32.x"
+ 
+ /* { dg-final { scan-assembler-times "rev64\[ \t\]+v\[0-9\]+.2s, ?v\[0-9\]+.2s!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vrev64p16_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vrev64p16_1.c
+@@ -7,4 +7,3 @@
+ #include "vrev64p16.x"
+ 
+ /* { dg-final { scan-assembler-times "rev64\[ \t\]+v\[0-9\]+.4h, ?v\[0-9\]+.4h!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vrev64p8_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vrev64p8_1.c
+@@ -7,4 +7,3 @@
+ #include "vrev64p8.x"
+ 
+ /* { dg-final { scan-assembler-times "rev64\[ \t\]+v\[0-9\]+.8b, ?v\[0-9\]+.8b!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vrev64qf32_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vrev64qf32_1.c
+@@ -7,4 +7,3 @@
+ #include "vrev64qf32.x"
+ 
+ /* { dg-final { scan-assembler-times "rev64\[ \t\]+v\[0-9\]+.4s, ?v\[0-9\]+.4s!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vrev64qp16_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vrev64qp16_1.c
+@@ -7,4 +7,3 @@
+ #include "vrev64qp16.x"
+ 
+ /* { dg-final { scan-assembler-times "rev64\[ \t\]+v\[0-9\]+.8h, ?v\[0-9\]+.8h!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vrev64qp8_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vrev64qp8_1.c
+@@ -7,4 +7,3 @@
+ #include "vrev64qp8.x"
+ 
+ /* { dg-final { scan-assembler-times "rev64\[ \t\]+v\[0-9\]+.16b, ?v\[0-9\]+.16b!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vrev64qs16_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vrev64qs16_1.c
+@@ -7,4 +7,3 @@
+ #include "vrev64qs16.x"
+ 
+ /* { dg-final { scan-assembler-times "rev64\[ \t\]+v\[0-9\]+.8h, ?v\[0-9\]+.8h!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vrev64qs32_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vrev64qs32_1.c
+@@ -7,4 +7,3 @@
+ #include "vrev64qs32.x"
+ 
+ /* { dg-final { scan-assembler-times "rev64\[ \t\]+v\[0-9\]+.4s, ?v\[0-9\]+.4s!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vrev64qs8_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vrev64qs8_1.c
+@@ -7,4 +7,3 @@
+ #include "vrev64qs8.x"
+ 
+ /* { dg-final { scan-assembler-times "rev64\[ \t\]+v\[0-9\]+.16b, ?v\[0-9\]+.16b!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vrev64qu16_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vrev64qu16_1.c
+@@ -7,4 +7,3 @@
+ #include "vrev64qu16.x"
+ 
+ /* { dg-final { scan-assembler-times "rev64\[ \t\]+v\[0-9\]+.8h, ?v\[0-9\]+.8h!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vrev64qu32_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vrev64qu32_1.c
+@@ -7,4 +7,3 @@
+ #include "vrev64qu32.x"
+ 
+ /* { dg-final { scan-assembler-times "rev64\[ \t\]+v\[0-9\]+.4s, ?v\[0-9\]+.4s!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vrev64qu8_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vrev64qu8_1.c
+@@ -7,4 +7,3 @@
+ #include "vrev64qu8.x"
+ 
+ /* { dg-final { scan-assembler-times "rev64\[ \t\]+v\[0-9\]+.16b, ?v\[0-9\]+.16b!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vrev64s16_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vrev64s16_1.c
+@@ -7,4 +7,3 @@
+ #include "vrev64s16.x"
+ 
+ /* { dg-final { scan-assembler-times "rev64\[ \t\]+v\[0-9\]+.4h, ?v\[0-9\]+.4h!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vrev64s32_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vrev64s32_1.c
+@@ -7,4 +7,3 @@
+ #include "vrev64s32.x"
+ 
+ /* { dg-final { scan-assembler-times "rev64\[ \t\]+v\[0-9\]+.2s, ?v\[0-9\]+.2s!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vrev64s8_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vrev64s8_1.c
+@@ -7,4 +7,3 @@
+ #include "vrev64s8.x"
+ 
+ /* { dg-final { scan-assembler-times "rev64\[ \t\]+v\[0-9\]+.8b, ?v\[0-9\]+.8b!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vrev64u16_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vrev64u16_1.c
+@@ -7,4 +7,3 @@
+ #include "vrev64u16.x"
+ 
+ /* { dg-final { scan-assembler-times "rev64\[ \t\]+v\[0-9\]+.4h, ?v\[0-9\]+.4h!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vrev64u32_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vrev64u32_1.c
+@@ -7,4 +7,3 @@
+ #include "vrev64u32.x"
+ 
+ /* { dg-final { scan-assembler-times "rev64\[ \t\]+v\[0-9\]+.2s, ?v\[0-9\]+.2s!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vrev64u8_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vrev64u8_1.c
+@@ -7,4 +7,3 @@
+ #include "vrev64u8.x"
+ 
+ /* { dg-final { scan-assembler-times "rev64\[ \t\]+v\[0-9\]+.8b, ?v\[0-9\]+.8b!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vsqrt_f64_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vsqrt_f64_1.c
+@@ -22,4 +22,3 @@ main (void)
+ }
+ 
+ /* { dg-final { scan-assembler "fsqrt\[ \t\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vtrnf32_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vtrnf32_1.c
+@@ -8,4 +8,3 @@
+ 
+ /* { dg-final { scan-assembler-times "zip1\[ \t\]+v\[0-9\]+\.2s, ?v\[0-9\]+\.2s, ?v\[0-9\]+\.2s!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+ /* { dg-final { scan-assembler-times "zip2\[ \t\]+v\[0-9\]+\.2s, ?v\[0-9\]+\.2s, ?v\[0-9\]+\.2s!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vtrnp16_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vtrnp16_1.c
+@@ -8,4 +8,3 @@
+ 
+ /* { dg-final { scan-assembler-times "trn1\[ \t\]+v\[0-9\]+\.4h, ?v\[0-9\]+\.4h, ?v\[0-9\]+\.4h!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+ /* { dg-final { scan-assembler-times "trn2\[ \t\]+v\[0-9\]+\.4h, ?v\[0-9\]+\.4h, ?v\[0-9\]+\.4h!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vtrnp8_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vtrnp8_1.c
+@@ -8,4 +8,3 @@
+ 
+ /* { dg-final { scan-assembler-times "trn1\[ \t\]+v\[0-9\]+\.8b, ?v\[0-9\]+\.8b, ?v\[0-9\]+\.8b!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+ /* { dg-final { scan-assembler-times "trn2\[ \t\]+v\[0-9\]+\.8b, ?v\[0-9\]+\.8b, ?v\[0-9\]+\.8b!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vtrnqf32_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vtrnqf32_1.c
+@@ -8,4 +8,3 @@
+ 
+ /* { dg-final { scan-assembler-times "trn1\[ \t\]+v\[0-9\]+\.4s, ?v\[0-9\]+\.4s, ?v\[0-9\]+\.4s!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+ /* { dg-final { scan-assembler-times "trn2\[ \t\]+v\[0-9\]+\.4s, ?v\[0-9\]+\.4s, ?v\[0-9\]+\.4s!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vtrnqp16_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vtrnqp16_1.c
+@@ -8,4 +8,3 @@
+ 
+ /* { dg-final { scan-assembler-times "trn1\[ \t\]+v\[0-9\]+\.8h, ?v\[0-9\]+\.8h, ?v\[0-9\]+\.8h!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+ /* { dg-final { scan-assembler-times "trn2\[ \t\]+v\[0-9\]+\.8h, ?v\[0-9\]+\.8h, ?v\[0-9\]+\.8h!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vtrnqp8_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vtrnqp8_1.c
+@@ -8,4 +8,3 @@
+ 
+ /* { dg-final { scan-assembler-times "trn1\[ \t\]+v\[0-9\]+\.16b, ?v\[0-9\]+\.16b, ?v\[0-9\]+\.16b!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+ /* { dg-final { scan-assembler-times "trn2\[ \t\]+v\[0-9\]+\.16b, ?v\[0-9\]+\.16b, ?v\[0-9\]+\.16b!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vtrnqs16_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vtrnqs16_1.c
+@@ -8,4 +8,3 @@
+ 
+ /* { dg-final { scan-assembler-times "trn1\[ \t\]+v\[0-9\]+\.8h, ?v\[0-9\]+\.8h, ?v\[0-9\]+\.8h!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+ /* { dg-final { scan-assembler-times "trn2\[ \t\]+v\[0-9\]+\.8h, ?v\[0-9\]+\.8h, ?v\[0-9\]+\.8h!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vtrnqs32_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vtrnqs32_1.c
+@@ -8,4 +8,3 @@
+ 
+ /* { dg-final { scan-assembler-times "trn1\[ \t\]+v\[0-9\]+\.4s, ?v\[0-9\]+\.4s, ?v\[0-9\]+\.4s!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+ /* { dg-final { scan-assembler-times "trn2\[ \t\]+v\[0-9\]+\.4s, ?v\[0-9\]+\.4s, ?v\[0-9\]+\.4s!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vtrnqs8_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vtrnqs8_1.c
+@@ -8,4 +8,3 @@
+ 
+ /* { dg-final { scan-assembler-times "trn1\[ \t\]+v\[0-9\]+\.16b, ?v\[0-9\]+\.16b, ?v\[0-9\]+\.16b!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+ /* { dg-final { scan-assembler-times "trn2\[ \t\]+v\[0-9\]+\.16b, ?v\[0-9\]+\.16b, ?v\[0-9\]+\.16b!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vtrnqu16_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vtrnqu16_1.c
+@@ -8,4 +8,3 @@
+ 
+ /* { dg-final { scan-assembler-times "trn1\[ \t\]+v\[0-9\]+\.8h, ?v\[0-9\]+\.8h, ?v\[0-9\]+\.8h!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+ /* { dg-final { scan-assembler-times "trn2\[ \t\]+v\[0-9\]+\.8h, ?v\[0-9\]+\.8h, ?v\[0-9\]+\.8h!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vtrnqu32_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vtrnqu32_1.c
+@@ -8,4 +8,3 @@
+ 
+ /* { dg-final { scan-assembler-times "trn1\[ \t\]+v\[0-9\]+\.4s, ?v\[0-9\]+\.4s, ?v\[0-9\]+\.4s!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+ /* { dg-final { scan-assembler-times "trn2\[ \t\]+v\[0-9\]+\.4s, ?v\[0-9\]+\.4s, ?v\[0-9\]+\.4s!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vtrnqu8_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vtrnqu8_1.c
+@@ -8,4 +8,3 @@
+ 
+ /* { dg-final { scan-assembler-times "trn1\[ \t\]+v\[0-9\]+\.16b, ?v\[0-9\]+\.16b, ?v\[0-9\]+\.16b!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+ /* { dg-final { scan-assembler-times "trn2\[ \t\]+v\[0-9\]+\.16b, ?v\[0-9\]+\.16b, ?v\[0-9\]+\.16b!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vtrns16_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vtrns16_1.c
+@@ -8,4 +8,3 @@
+ 
+ /* { dg-final { scan-assembler-times "trn1\[ \t\]+v\[0-9\]+\.4h, ?v\[0-9\]+\.4h, ?v\[0-9\]+\.4h!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+ /* { dg-final { scan-assembler-times "trn2\[ \t\]+v\[0-9\]+\.4h, ?v\[0-9\]+\.4h, ?v\[0-9\]+\.4h!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vtrns32_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vtrns32_1.c
+@@ -8,4 +8,3 @@
+ 
+ /* { dg-final { scan-assembler-times "zip1\[ \t\]+v\[0-9\]+\.2s, ?v\[0-9\]+\.2s, ?v\[0-9\]+\.2s!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+ /* { dg-final { scan-assembler-times "zip2\[ \t\]+v\[0-9\]+\.2s, ?v\[0-9\]+\.2s, ?v\[0-9\]+\.2s!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vtrns8_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vtrns8_1.c
+@@ -8,4 +8,3 @@
+ 
+ /* { dg-final { scan-assembler-times "trn1\[ \t\]+v\[0-9\]+\.8b, ?v\[0-9\]+\.8b, ?v\[0-9\]+\.8b!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+ /* { dg-final { scan-assembler-times "trn2\[ \t\]+v\[0-9\]+\.8b, ?v\[0-9\]+\.8b, ?v\[0-9\]+\.8b!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vtrnu16_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vtrnu16_1.c
+@@ -8,4 +8,3 @@
+ 
+ /* { dg-final { scan-assembler-times "trn1\[ \t\]+v\[0-9\]+\.4h, ?v\[0-9\]+\.4h, ?v\[0-9\]+\.4h!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+ /* { dg-final { scan-assembler-times "trn2\[ \t\]+v\[0-9\]+\.4h, ?v\[0-9\]+\.4h, ?v\[0-9\]+\.4h!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vtrnu32_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vtrnu32_1.c
+@@ -8,4 +8,3 @@
+ 
+ /* { dg-final { scan-assembler-times "zip1\[ \t\]+v\[0-9\]+\.2s, ?v\[0-9\]+\.2s, ?v\[0-9\]+\.2s!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+ /* { dg-final { scan-assembler-times "zip2\[ \t\]+v\[0-9\]+\.2s, ?v\[0-9\]+\.2s, ?v\[0-9\]+\.2s!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vtrnu8_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vtrnu8_1.c
+@@ -8,4 +8,3 @@
+ 
+ /* { dg-final { scan-assembler-times "trn1\[ \t\]+v\[0-9\]+\.8b, ?v\[0-9\]+\.8b, ?v\[0-9\]+\.8b!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+ /* { dg-final { scan-assembler-times "trn2\[ \t\]+v\[0-9\]+\.8b, ?v\[0-9\]+\.8b, ?v\[0-9\]+\.8b!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vuzpf32_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vuzpf32_1.c
+@@ -8,4 +8,3 @@
+ 
+ /* { dg-final { scan-assembler-times "zip1\[ \t\]+v\[0-9\]+\.2s, ?v\[0-9\]+\.2s, ?v\[0-9\]+\.2s!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+ /* { dg-final { scan-assembler-times "zip2\[ \t\]+v\[0-9\]+\.2s, ?v\[0-9\]+\.2s, ?v\[0-9\]+\.2s!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vuzpp16_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vuzpp16_1.c
+@@ -8,4 +8,3 @@
+ 
+ /* { dg-final { scan-assembler-times "uzp1\[ \t\]+v\[0-9\]+\.4h, ?v\[0-9\]+\.4h, ?v\[0-9\]+\.4h!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+ /* { dg-final { scan-assembler-times "uzp2\[ \t\]+v\[0-9\]+\.4h, ?v\[0-9\]+\.4h, ?v\[0-9\]+\.4h!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vuzpp8_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vuzpp8_1.c
+@@ -8,4 +8,3 @@
+ 
+ /* { dg-final { scan-assembler-times "uzp1\[ \t\]+v\[0-9\]+\.8b, ?v\[0-9\]+\.8b, ?v\[0-9\]+\.8b!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+ /* { dg-final { scan-assembler-times "uzp2\[ \t\]+v\[0-9\]+\.8b, ?v\[0-9\]+\.8b, ?v\[0-9\]+\.8b!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vuzpqf32_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vuzpqf32_1.c
+@@ -8,4 +8,3 @@
+ 
+ /* { dg-final { scan-assembler-times "uzp1\[ \t\]+v\[0-9\]+\.4s, ?v\[0-9\]+\.4s, ?v\[0-9\]+\.4s!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+ /* { dg-final { scan-assembler-times "uzp2\[ \t\]+v\[0-9\]+\.4s, ?v\[0-9\]+\.4s, ?v\[0-9\]+\.4s!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vuzpqp16_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vuzpqp16_1.c
+@@ -8,4 +8,3 @@
+ 
+ /* { dg-final { scan-assembler-times "uzp1\[ \t\]+v\[0-9\]+\.8h, ?v\[0-9\]+\.8h, ?v\[0-9\]+\.8h!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+ /* { dg-final { scan-assembler-times "uzp2\[ \t\]+v\[0-9\]+\.8h, ?v\[0-9\]+\.8h, ?v\[0-9\]+\.8h!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vuzpqp8_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vuzpqp8_1.c
+@@ -8,4 +8,3 @@
+ 
+ /* { dg-final { scan-assembler-times "uzp1\[ \t\]+v\[0-9\]+\.16b, ?v\[0-9\]+\.16b, ?v\[0-9\]+\.16b!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+ /* { dg-final { scan-assembler-times "uzp2\[ \t\]+v\[0-9\]+\.16b, ?v\[0-9\]+\.16b, ?v\[0-9\]+\.16b!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vuzpqs16_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vuzpqs16_1.c
+@@ -8,4 +8,3 @@
+ 
+ /* { dg-final { scan-assembler-times "uzp1\[ \t\]+v\[0-9\]+\.8h, ?v\[0-9\]+\.8h, ?v\[0-9\]+\.8h!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+ /* { dg-final { scan-assembler-times "uzp2\[ \t\]+v\[0-9\]+\.8h, ?v\[0-9\]+\.8h, ?v\[0-9\]+\.8h!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vuzpqs32_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vuzpqs32_1.c
+@@ -8,4 +8,3 @@
+ 
+ /* { dg-final { scan-assembler-times "uzp1\[ \t\]+v\[0-9\]+\.4s, ?v\[0-9\]+\.4s, ?v\[0-9\]+\.4s!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+ /* { dg-final { scan-assembler-times "uzp2\[ \t\]+v\[0-9\]+\.4s, ?v\[0-9\]+\.4s, ?v\[0-9\]+\.4s!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vuzpqs8_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vuzpqs8_1.c
+@@ -8,4 +8,3 @@
+ 
+ /* { dg-final { scan-assembler-times "uzp1\[ \t\]+v\[0-9\]+\.16b, ?v\[0-9\]+\.16b, ?v\[0-9\]+\.16b!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+ /* { dg-final { scan-assembler-times "uzp2\[ \t\]+v\[0-9\]+\.16b, ?v\[0-9\]+\.16b, ?v\[0-9\]+\.16b!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vuzpqu16_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vuzpqu16_1.c
+@@ -8,4 +8,3 @@
+ 
+ /* { dg-final { scan-assembler-times "uzp1\[ \t\]+v\[0-9\]+\.8h, ?v\[0-9\]+\.8h, ?v\[0-9\]+\.8h!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+ /* { dg-final { scan-assembler-times "uzp2\[ \t\]+v\[0-9\]+\.8h, ?v\[0-9\]+\.8h, ?v\[0-9\]+\.8h!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vuzpqu32_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vuzpqu32_1.c
+@@ -8,4 +8,3 @@
+ 
+ /* { dg-final { scan-assembler-times "uzp1\[ \t\]+v\[0-9\]+\.4s, ?v\[0-9\]+\.4s, ?v\[0-9\]+\.4s!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+ /* { dg-final { scan-assembler-times "uzp2\[ \t\]+v\[0-9\]+\.4s, ?v\[0-9\]+\.4s, ?v\[0-9\]+\.4s!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vuzpqu8_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vuzpqu8_1.c
+@@ -8,4 +8,3 @@
+ 
+ /* { dg-final { scan-assembler-times "uzp1\[ \t\]+v\[0-9\]+\.16b, ?v\[0-9\]+\.16b, ?v\[0-9\]+\.16b!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+ /* { dg-final { scan-assembler-times "uzp2\[ \t\]+v\[0-9\]+\.16b, ?v\[0-9\]+\.16b, ?v\[0-9\]+\.16b!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vuzps16_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vuzps16_1.c
+@@ -8,4 +8,3 @@
+ 
+ /* { dg-final { scan-assembler-times "uzp1\[ \t\]+v\[0-9\]+\.4h, ?v\[0-9\]+\.4h, ?v\[0-9\]+\.4h!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+ /* { dg-final { scan-assembler-times "uzp2\[ \t\]+v\[0-9\]+\.4h, ?v\[0-9\]+\.4h, ?v\[0-9\]+\.4h!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vuzps32_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vuzps32_1.c
+@@ -8,4 +8,3 @@
+ 
+ /* { dg-final { scan-assembler-times "zip1\[ \t\]+v\[0-9\]+\.2s, ?v\[0-9\]+\.2s, ?v\[0-9\]+\.2s!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+ /* { dg-final { scan-assembler-times "zip2\[ \t\]+v\[0-9\]+\.2s, ?v\[0-9\]+\.2s, ?v\[0-9\]+\.2s!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vuzps8_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vuzps8_1.c
+@@ -8,4 +8,3 @@
+ 
+ /* { dg-final { scan-assembler-times "uzp1\[ \t\]+v\[0-9\]+\.8b, ?v\[0-9\]+\.8b, ?v\[0-9\]+\.8b!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+ /* { dg-final { scan-assembler-times "uzp2\[ \t\]+v\[0-9\]+\.8b, ?v\[0-9\]+\.8b, ?v\[0-9\]+\.8b!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vuzpu16_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vuzpu16_1.c
+@@ -8,4 +8,3 @@
+ 
+ /* { dg-final { scan-assembler-times "uzp1\[ \t\]+v\[0-9\]+\.4h, ?v\[0-9\]+\.4h, ?v\[0-9\]+\.4h!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+ /* { dg-final { scan-assembler-times "uzp2\[ \t\]+v\[0-9\]+\.4h, ?v\[0-9\]+\.4h, ?v\[0-9\]+\.4h!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vuzpu32_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vuzpu32_1.c
+@@ -8,4 +8,3 @@
+ 
+ /* { dg-final { scan-assembler-times "zip1\[ \t\]+v\[0-9\]+\.2s, ?v\[0-9\]+\.2s, ?v\[0-9\]+\.2s!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+ /* { dg-final { scan-assembler-times "zip2\[ \t\]+v\[0-9\]+\.2s, ?v\[0-9\]+\.2s, ?v\[0-9\]+\.2s!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vuzpu8_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vuzpu8_1.c
+@@ -8,4 +8,3 @@
+ 
+ /* { dg-final { scan-assembler-times "uzp1\[ \t\]+v\[0-9\]+\.8b, ?v\[0-9\]+\.8b, ?v\[0-9\]+\.8b!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+ /* { dg-final { scan-assembler-times "uzp2\[ \t\]+v\[0-9\]+\.8b, ?v\[0-9\]+\.8b, ?v\[0-9\]+\.8b!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vzipf32_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vzipf32_1.c
+@@ -8,4 +8,3 @@
+ 
+ /* { dg-final { scan-assembler-times "zip1\[ \t\]+v\[0-9\]+\.2s, ?v\[0-9\]+\.2s, ?v\[0-9\]+\.2s!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+ /* { dg-final { scan-assembler-times "zip2\[ \t\]+v\[0-9\]+\.2s, ?v\[0-9\]+\.2s, ?v\[0-9\]+\.2s!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vzipp16_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vzipp16_1.c
+@@ -8,4 +8,3 @@
+ 
+ /* { dg-final { scan-assembler-times "zip1\[ \t\]+v\[0-9\]+\.4h, ?v\[0-9\]+\.4h, ?v\[0-9\]+\.4h!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+ /* { dg-final { scan-assembler-times "zip2\[ \t\]+v\[0-9\]+\.4h, ?v\[0-9\]+\.4h, ?v\[0-9\]+\.4h!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vzipp8_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vzipp8_1.c
+@@ -8,4 +8,3 @@
+ 
+ /* { dg-final { scan-assembler-times "zip1\[ \t\]+v\[0-9\]+\.8b, ?v\[0-9\]+\.8b, ?v\[0-9\]+\.8b!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+ /* { dg-final { scan-assembler-times "zip2\[ \t\]+v\[0-9\]+\.8b, ?v\[0-9\]+\.8b, ?v\[0-9\]+\.8b!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vzipqf32_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vzipqf32_1.c
+@@ -8,4 +8,3 @@
+ 
+ /* { dg-final { scan-assembler-times "zip1\[ \t\]+v\[0-9\]+\.4s, ?v\[0-9\]+\.4s, ?v\[0-9\]+\.4s!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+ /* { dg-final { scan-assembler-times "zip2\[ \t\]+v\[0-9\]+\.4s, ?v\[0-9\]+\.4s, ?v\[0-9\]+\.4s!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vzipqp16_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vzipqp16_1.c
+@@ -8,4 +8,3 @@
+ 
+ /* { dg-final { scan-assembler-times "zip1\[ \t\]+v\[0-9\]+\.8h, ?v\[0-9\]+\.8h, ?v\[0-9\]+\.8h!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+ /* { dg-final { scan-assembler-times "zip2\[ \t\]+v\[0-9\]+\.8h, ?v\[0-9\]+\.8h, ?v\[0-9\]+\.8h!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vzipqp8_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vzipqp8_1.c
+@@ -8,4 +8,3 @@
+ 
+ /* { dg-final { scan-assembler-times "zip1\[ \t\]+v\[0-9\]+\.16b, ?v\[0-9\]+\.16b, ?v\[0-9\]+\.16b!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+ /* { dg-final { scan-assembler-times "zip2\[ \t\]+v\[0-9\]+\.16b, ?v\[0-9\]+\.16b, ?v\[0-9\]+\.16b!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vzipqs16_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vzipqs16_1.c
+@@ -8,4 +8,3 @@
+ 
+ /* { dg-final { scan-assembler-times "zip1\[ \t\]+v\[0-9\]+\.8h, ?v\[0-9\]+\.8h, ?v\[0-9\]+\.8h!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+ /* { dg-final { scan-assembler-times "zip2\[ \t\]+v\[0-9\]+\.8h, ?v\[0-9\]+\.8h, ?v\[0-9\]+\.8h!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vzipqs32_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vzipqs32_1.c
+@@ -8,4 +8,3 @@
+ 
+ /* { dg-final { scan-assembler-times "zip1\[ \t\]+v\[0-9\]+\.4s, ?v\[0-9\]+\.4s, ?v\[0-9\]+\.4s!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+ /* { dg-final { scan-assembler-times "zip2\[ \t\]+v\[0-9\]+\.4s, ?v\[0-9\]+\.4s, ?v\[0-9\]+\.4s!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vzipqs8_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vzipqs8_1.c
+@@ -8,4 +8,3 @@
+ 
+ /* { dg-final { scan-assembler-times "zip1\[ \t\]+v\[0-9\]+\.16b, ?v\[0-9\]+\.16b, ?v\[0-9\]+\.16b!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+ /* { dg-final { scan-assembler-times "zip2\[ \t\]+v\[0-9\]+\.16b, ?v\[0-9\]+\.16b, ?v\[0-9\]+\.16b!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vzipqu16_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vzipqu16_1.c
+@@ -8,4 +8,3 @@
+ 
+ /* { dg-final { scan-assembler-times "zip1\[ \t\]+v\[0-9\]+\.8h, ?v\[0-9\]+\.8h, ?v\[0-9\]+\.8h!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+ /* { dg-final { scan-assembler-times "zip2\[ \t\]+v\[0-9\]+\.8h, ?v\[0-9\]+\.8h, ?v\[0-9\]+\.8h!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vzipqu32_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vzipqu32_1.c
+@@ -8,4 +8,3 @@
+ 
+ /* { dg-final { scan-assembler-times "zip1\[ \t\]+v\[0-9\]+\.4s, ?v\[0-9\]+\.4s, ?v\[0-9\]+\.4s!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+ /* { dg-final { scan-assembler-times "zip2\[ \t\]+v\[0-9\]+\.4s, ?v\[0-9\]+\.4s, ?v\[0-9\]+\.4s!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vzipqu8_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vzipqu8_1.c
+@@ -8,4 +8,3 @@
+ 
+ /* { dg-final { scan-assembler-times "zip1\[ \t\]+v\[0-9\]+\.16b, ?v\[0-9\]+\.16b, ?v\[0-9\]+\.16b!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+ /* { dg-final { scan-assembler-times "zip2\[ \t\]+v\[0-9\]+\.16b, ?v\[0-9\]+\.16b, ?v\[0-9\]+\.16b!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vzips16_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vzips16_1.c
+@@ -8,4 +8,3 @@
+ 
+ /* { dg-final { scan-assembler-times "zip1\[ \t\]+v\[0-9\]+\.4h, ?v\[0-9\]+\.4h, ?v\[0-9\]+\.4h!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+ /* { dg-final { scan-assembler-times "zip2\[ \t\]+v\[0-9\]+\.4h, ?v\[0-9\]+\.4h, ?v\[0-9\]+\.4h!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vzips32_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vzips32_1.c
+@@ -8,4 +8,3 @@
+ 
+ /* { dg-final { scan-assembler-times "zip1\[ \t\]+v\[0-9\]+\.2s, ?v\[0-9\]+\.2s, ?v\[0-9\]+\.2s!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+ /* { dg-final { scan-assembler-times "zip2\[ \t\]+v\[0-9\]+\.2s, ?v\[0-9\]+\.2s, ?v\[0-9\]+\.2s!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vzips8_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vzips8_1.c
+@@ -8,4 +8,3 @@
+ 
+ /* { dg-final { scan-assembler-times "zip1\[ \t\]+v\[0-9\]+\.8b, ?v\[0-9\]+\.8b, ?v\[0-9\]+\.8b!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+ /* { dg-final { scan-assembler-times "zip2\[ \t\]+v\[0-9\]+\.8b, ?v\[0-9\]+\.8b, ?v\[0-9\]+\.8b!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vzipu16_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vzipu16_1.c
+@@ -8,4 +8,3 @@
+ 
+ /* { dg-final { scan-assembler-times "zip1\[ \t\]+v\[0-9\]+\.4h, ?v\[0-9\]+\.4h, ?v\[0-9\]+\.4h!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+ /* { dg-final { scan-assembler-times "zip2\[ \t\]+v\[0-9\]+\.4h, ?v\[0-9\]+\.4h, ?v\[0-9\]+\.4h!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vzipu32_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vzipu32_1.c
+@@ -8,4 +8,3 @@
+ 
+ /* { dg-final { scan-assembler-times "zip1\[ \t\]+v\[0-9\]+\.2s, ?v\[0-9\]+\.2s, ?v\[0-9\]+\.2s!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+ /* { dg-final { scan-assembler-times "zip2\[ \t\]+v\[0-9\]+\.2s, ?v\[0-9\]+\.2s, ?v\[0-9\]+\.2s!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/simd/vzipu8_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/simd/vzipu8_1.c
+@@ -8,4 +8,3 @@
+ 
+ /* { dg-final { scan-assembler-times "zip1\[ \t\]+v\[0-9\]+\.8b, ?v\[0-9\]+\.8b, ?v\[0-9\]+\.8b!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+ /* { dg-final { scan-assembler-times "zip2\[ \t\]+v\[0-9\]+\.8b, ?v\[0-9\]+\.8b, ?v\[0-9\]+\.8b!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/singleton_intrinsics_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/singleton_intrinsics_1.c
+@@ -235,8 +235,8 @@ test_vrshl_u64 (uint64x1_t a, int64x1_t b)
+   return vrshl_u64 (a, b);
+ }
+ 
+-/* For int64x1_t, sshr...#63 is output instead of the equivalent cmlt...#0.  */
+-/* { dg-final { scan-assembler-times "\\tsshr\\td\[0-9\]+" 2 } } */
++/* For int64x1_t, sshr...#63 is equivalent to cmlt...#0.  */
++/* { dg-final { scan-assembler-times "\\t(?:sshr|cmlt)\\td\[0-9\]+" 2 } } */
+ 
+ int64x1_t
+ test_vshr_n_s64 (int64x1_t a)
+@@ -400,5 +400,4 @@ test_vsri_n_u64 (uint64x1_t a, uint64x1_t b)
+   return vsri_n_u64 (a, b, 9);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+ 
+--- a/src/gcc/testsuite/gcc.target/aarch64/sshr64_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/sshr64_1.c
+@@ -112,4 +112,3 @@ main ()
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/stp_vec_64_1.c
+@@ -0,0 +1,20 @@
++/* { dg-do compile } */
++/* { dg-options "-Ofast" } */
++
++
++typedef int int32x2_t __attribute__ ((__vector_size__ ((8))));
++
++void
++bar (int32x2_t *foo)
++{
++  int i = 0;
++  int32x2_t val = { 3, 2 };
++
++  for (i = 0; i < 256; i+=2)
++    {
++      foo[i] = val;
++      foo[i+1] = val;
++    }
++}
++
++/* { dg-final { scan-assembler "stp\td\[0-9\]+, d\[0-9\]" } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/subs1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/subs1.c
+@@ -12,7 +12,7 @@ subs_si_test1 (int a, int b, int c)
+   if (d == 0)
+     return a + c;
+   else
+-    return b + d + c;
++    return d;
+ }
+ 
+ int
+@@ -24,7 +24,7 @@ subs_si_test2 (int a, int b, int c)
+   if (d == 0)
+     return a + c;
+   else
+-    return b + d + c;
++    return d;
+ }
+ 
+ int
+@@ -36,7 +36,7 @@ subs_si_test3 (int a, int b, int c)
+   if (d == 0)
+     return a + c;
+   else
+-    return b + d + c;
++    return d;
+ }
+ 
+ typedef long long s64;
+@@ -50,7 +50,7 @@ subs_di_test1 (s64 a, s64 b, s64 c)
+   if (d == 0)
+     return a + c;
+   else
+-    return b + d + c;
++    return d;
+ }
+ 
+ s64
+@@ -62,7 +62,7 @@ subs_di_test2 (s64 a, s64 b, s64 c)
+   if (d == 0)
+     return a + c;
+   else
+-    return b + d + c;
++    return d;
+ }
+ 
+ s64
+@@ -74,7 +74,7 @@ subs_di_test3 (s64 a, s64 b, s64 c)
+   if (d == 0)
+     return a + c;
+   else
+-    return b + d + c;
++    return d;
+ }
+ 
+ int main ()
+@@ -83,67 +83,66 @@ int main ()
+   s64 y;
+ 
+   x = subs_si_test1 (29, 4, 5);
+-  if (x != 33)
++  if (x != 24)
+     abort ();
+ 
+-  x = subs_si_test1 (5, 2, 20);
+-  if (x != 7)
++  x = subs_si_test1 (20, 2, 20);
++  if (x != 40)
+     abort ();
+ 
+-  x = subs_si_test2 (29, 4, 5);
+-  if (x != -217)
+-    abort ();
++   x = subs_si_test2 (0xff, 4, 5);
++   if (x != (0xff + 5))
++     abort ();
+ 
+-  x = subs_si_test2 (1024, 2, 20);
+-  if (x != 791)
+-    abort ();
++   x = subs_si_test2 (1024, 2, 20);
++   if (x != (1024 - 0xff))
++     abort ();
+ 
+   x = subs_si_test3 (35, 4, 5);
+-  if (x != 12)
++  if (x != 35 - (4 << 3))
+     abort ();
+ 
+-  x = subs_si_test3 (5, 2, 20);
+-  if (x != 11)
++  x = subs_si_test3 (5 << 3, 5, 20);
++  if (x != (20 + (5 << 3)))
+     abort ();
+ 
+   y = subs_di_test1 (0x130000029ll,
+ 		     0x320000004ll,
+ 		     0x505050505ll);
+ 
+-  if (y != 0x45000002d)
++  if (y != (0x130000029ll - 0x505050505ll))
+     abort ();
+ 
+   y = subs_di_test1 (0x5000500050005ll,
+ 		     0x2111211121112ll,
+-		     0x0000000002020ll);
+-  if (y != 0x7111711171117)
++		     0x5000500050005ll);
++  if (y != (0x5000500050005ll + 0x5000500050005ll))
+     abort ();
+ 
+   y = subs_di_test2 (0x130000029ll,
+ 		     0x320000004ll,
+ 		     0x505050505ll);
+-  if (y != 0x955050433)
++  if (y != (0x130000029ll - 0xff))
+     abort ();
+ 
+-  y = subs_di_test2 (0x130002900ll,
++  y = subs_di_test2 (0xff,
+ 		     0x320000004ll,
+ 		     0x505050505ll);
+-  if (y != 0x955052d0a)
++  if (y != (0xff + 0x505050505ll))
+     abort ();
+ 
+   y = subs_di_test3 (0x130000029ll,
+ 		     0x064000008ll,
+ 		     0x505050505ll);
+-  if (y != 0x3790504f6)
++  if (y != (0x130000029ll - (0x064000008ll << 3)))
+     abort ();
+ 
+-  y = subs_di_test3 (0x130002900ll,
+-		     0x088000008ll,
++  y = subs_di_test3 (0x130002900ll << 3,
++		     0x130002900ll,
+ 		     0x505050505ll);
+-  if (y != 0x27d052dcd)
++  if (y != (0x505050505ll + (0x130002900ll << 3)))
+     abort ();
+ 
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/subs2.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/subs2.c
+@@ -152,4 +152,3 @@ int main ()
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/subs3.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/subs3.c
+@@ -12,7 +12,7 @@ subs_ext (s64 a, int b, int c)
+   if (d == 0)
+     return a + c;
+   else
+-    return b + d + c;
++    return d;
+ }
+ 
+ int
+@@ -23,7 +23,7 @@ subs_shift_ext (s64 a, int b, int c)
+   if (d == 0)
+     return a + c;
+   else
+-    return b + d + c;
++    return d;
+ }
+ 
+ int main ()
+@@ -32,27 +32,27 @@ int main ()
+   s64 y;
+ 
+   x = subs_ext (0x13000002ll, 41, 15);
+-  if (x != 318767121)
++  if (x != (int)(0x13000002ll - 41))
+     abort ();
+ 
+-  x = subs_ext (0x50505050ll, 29, 4);
+-  if (x != 1347440724)
++  x = subs_ext (0x50505050ll, 0x50505050ll, 4);
++  if (x != (int)(0x50505050ll + 4))
+     abort ();
+ 
+   x = subs_ext (0x12121212121ll, 2, 14);
+-  if (x != 555819311)
++  if (x != (int)(0x12121212121ll - 2))
+     abort ();
+ 
+   x = subs_shift_ext (0x123456789ll, 4, 12);
+-  if (x != 591751033)
++  if (x != (int)(0x123456789ll - (4 << 3)))
+     abort ();
+ 
+-  x = subs_shift_ext (0x02020202ll, 9, 8);
+-  if (x != 33685963)
++  x = subs_shift_ext (0x02020202ll << 3, 0x02020202ll, 8);
++  if (x != (int)(8 + (0x02020202ll << 3)))
+     abort ();
+ 
+   x = subs_shift_ext (0x987987987987ll, 23, 41);
+-  if (x != -2020050673)
++  if (x != (int)(0x987987987987ll - (23 << 3)))
+     abort ();
+ 
+   return 0;
+--- a/src/gcc/testsuite/gcc.target/aarch64/symbol-range-tiny.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/symbol-range-tiny.c
+@@ -10,4 +10,3 @@ foo()
+ }
+ 
+ /* { dg-final { scan-assembler-not "adr\tx\[0-9\]+, fixed_regs\\\+" } } */
+-/* { dg-final {cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/symbol-range.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/symbol-range.c
+@@ -10,4 +10,3 @@ foo()
+ }
+ 
+ /* { dg-final { scan-assembler-not "adrp\tx\[0-9\]+, fixed_regs\\\+" } } */
+-/* { dg-final {cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/sync-comp-swap.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/sync-comp-swap.c
+@@ -1,5 +1,5 @@
+ /* { dg-do compile } */
+-/* { dg-options "-O2 -fno-ipa-icf" } */
++/* { dg-options "-march=armv8-a+nolse -O2 -fno-ipa-icf" } */
+ 
+ #include "sync-comp-swap.x"
+ 
+--- a/src/gcc/testsuite/gcc.target/aarch64/sync-op-acquire.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/sync-op-acquire.c
+@@ -1,5 +1,5 @@
+ /* { dg-do compile } */
+-/* { dg-options "-O2" } */
++/* { dg-options "-march=armv8-a+nolse -O2" } */
+ 
+ #include "sync-op-acquire.x"
+ 
+--- a/src/gcc/testsuite/gcc.target/aarch64/sync-op-full.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/sync-op-full.c
+@@ -1,5 +1,5 @@
+ /* { dg-do compile } */
+-/* { dg-options "-O2" } */
++/* { dg-options "-march=armv8-a+nolse -O2" } */
+ 
+ #include "sync-op-full.x"
+ 
+--- a/src/gcc/testsuite/gcc.target/aarch64/sync-op-release.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/sync-op-release.c
+@@ -1,5 +1,5 @@
+ /* { dg-do compile } */
+-/* { dg-options "-O2" } */
++/* { dg-options "-march=armv8-a+nolse -O2" } */
+ 
+ #include "sync-op-release.x"
+ 
+--- a/src/gcc/testsuite/gcc.target/aarch64/table-intrinsics.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/table-intrinsics.c
+@@ -435,5 +435,5 @@ qtbxq_testp8_4 (poly8x16_t r, poly8x16x4_t tab, uint8x16_t idx)
+   return vqtbx4q_p8 (r, tab, idx);
+ }
+ 
+-/* { dg-final { scan-assembler-times "tbl v" 42} }  */
+-/* { dg-final { scan-assembler-times "tbx v" 30} }  */
++/* { dg-final { scan-assembler-times "tbl\[ |\t\]*v" 42} }  */
++/* { dg-final { scan-assembler-times "tbx\[ |\t\]*v" 30} }  */
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/target_attr_1.c
+@@ -0,0 +1,14 @@
++/* { dg-do compile } */
++/* { dg-options "-O2 -mcpu=thunderx -save-temps" } */
++
++/* Test that cpu attribute overrides the command-line -mcpu.  */
++
++__attribute__ ((target ("cpu=cortex-a72.cortex-a53")))
++int
++foo (int a)
++{
++  return a + 1;
++}
++
++/* { dg-final { scan-assembler "//.tune cortex-a72.cortex-a53" } } */
++/* { dg-final { scan-assembler-not "thunderx" } } */
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/target_attr_10.c
+@@ -0,0 +1,16 @@
++/* { dg-do compile } */
++/* { dg-options "-O2 -march=armv8-a+simd" } */
++
++/* Using a SIMD intrinsic from a function tagged with nosimd should fail
++   due to inlining rules.  */
++
++#include "arm_neon.h"
++
++__attribute__ ((target ("+nosimd")))
++uint8x16_t
++foo (uint8x16_t a, uint8x16_t b, uint8x16_t c)
++{
++  return vbslq_u8 (a, b, c); /* { dg-error "called from here" } */
++}
++
++/* { dg-error "inlining failed in call to always_inline" "" { target *-*-* } 0 } */
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/target_attr_11.c
+@@ -0,0 +1,13 @@
++/* { dg-do compile } */
++
++/* Reject the negated form of non-negatable attributes.  */
++
++__attribute__ ((target ("no-general-regs-only")))
++int
++foo (int a)
++{
++  return a + 1;
++}
++
++/* { dg-error "does not allow a negated form" "" { target *-*-* } 0 } */
++/* { dg-error "is invalid" "" { target *-*-* } 0 } */
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/target_attr_12.c
+@@ -0,0 +1,13 @@
++/* { dg-do compile } */
++
++/* Reject arguments to attributes that do not accept any.  */
++
++__attribute__ ((target ("general-regs-only=+crc")))
++int
++foo (int a)
++{
++  return a + 1;
++}
++
++/* { dg-error "does not accept an argument" "" { target *-*-* } 0 } */
++/* { dg-error "is invalid" "" { target *-*-* } 0 } */
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/target_attr_13.c
+@@ -0,0 +1,16 @@
++/* { dg-do assemble } */
++/* { dg-options "-O2 -march=armv8-a+crc+crypto" } */
++
++#include "arm_acle.h"
++
++/* Make sure that 'crypto' is not required to compile an intrinsic
++   from arm_acle.h in a non-crypto function.  Tests that arm_acle.h
++   properly clears the architectural features in its initial target
++   pragma.  */
++
++__attribute__ ((target ("+crc+nocrypto")))
++int
++foo (uint32_t a, uint8_t b)
++{
++  return __crc32b (a, b);
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/target_attr_14.c
+@@ -0,0 +1,20 @@
++/* { dg-do compile } */
++/* { dg-options "-O2 -save-temps" } */
++
++/* Inlining non-strict-align functions into strict-align
++   functions is allowed.  */
++
++int
++bar (int a)
++{
++  return a - 6;
++}
++
++__attribute__ ((target ("strict-align")))
++int
++bam (int a)
++{
++  return a - bar (a);
++}
++
++/* { dg-final { scan-assembler-not "bl.*bar" } } */
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/target_attr_15.c
+@@ -0,0 +1,15 @@
++/* { dg-do assemble } */
++/* { dg-options "-march=armv8-a+crypto -save-temps" } */
++
++/* Check that "+nothing" clears the ISA flags.  */
++
++__attribute__ ((target ("+nothing")))
++int
++foo (int a)
++{
++  return a + 1;
++}
++
++/* { dg-final { scan-assembler-not "\\+fp" } } */
++/* { dg-final { scan-assembler-not "\\+crypto" } } */
++/* { dg-final { scan-assembler-not "\\+simd" } } */
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/target_attr_2.c
+@@ -0,0 +1,39 @@
++/* { dg-do assemble } */
++/* { dg-options "-O2 -mcpu=cortex-a57 -ftree-vectorize -fdump-tree-vect-all" } */
++
++/* The various ways to turn off simd availability should
++   turn off vectorization.  */
++
++__attribute__ ((target ("+nosimd")))
++int
++baz (int *a)
++{
++  for (int i = 0; i < 1024; i++)
++    a[i] += 5;
++}
++
++__attribute__ ((target ("arch=armv8-a+nosimd")))
++int
++baz2 (int *a)
++{
++  for (int i = 0; i < 1024; i++)
++    a[i] += 5;
++}
++
++__attribute__ ((target ("cpu=cortex-a53+nosimd")))
++int
++baz3 (int *a)
++{
++  for (int i = 0; i < 1024; i++)
++    a[i] += 5;
++}
++
++__attribute__ ((target ("general-regs-only")))
++int
++baz4 (int *a)
++{
++  for (int i = 0; i < 1024; i++)
++    a[i] += 5;
++}
++
++/* { dg-final { scan-tree-dump-not "vectorized 1 loops" "vect" } } */
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/target_attr_3.c
+@@ -0,0 +1,34 @@
++/* { dg-do compile } */
++/* { dg-options "-O2 -mno-fix-cortex-a53-835769 -save-temps" } */
++
++/* Check that the attribute overrides the command line option
++   and the fix is applied once.  */
++
++__attribute__ ((target ("fix-cortex-a53-835769")))
++unsigned long
++test (unsigned long a, double b, unsigned long c,
++      unsigned long d, unsigned long *e)
++{
++  double result;
++  volatile unsigned long tmp = *e;
++  __asm__ __volatile ("// %0, %1"
++			: "=w" (result)
++			: "0" (b)
++			:    /* No clobbers.  */);
++  return c * d + d;
++}
++
++unsigned long
++test2 (unsigned long a, double b, unsigned long c,
++       unsigned long d, unsigned long *e)
++{
++  double result;
++  volatile unsigned long tmp = *e;
++  __asm__ __volatile ("// %0, %1"
++			: "=w" (result)
++			: "0" (b)
++			:   /* No clobbers.  */);
++  return c * d + d;
++}
++
++/* { dg-final { scan-assembler-times "between mem op and" 1 } } */
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/target_attr_4.c
+@@ -0,0 +1,30 @@
++/* { dg-do assemble } */
++/* { dg-options "-O2 -march=armv8-a+nocrc -save-temps" } */
++
++#include "arm_acle.h"
++
++/* Check that enabling an ISA feature using an attribute in a file
++   compiled without that attribute works.  */
++
++__attribute__ ((target ("+crc")))
++uint32_t
++foo (uint32_t a, uint8_t b)
++{
++  return __crc32b (a, b);
++}
++
++__attribute__ ((target ("arch=armv8-a+crc")))
++uint32_t
++fooarch (uint32_t a, uint8_t b)
++{
++  return __crc32b (a, b);
++}
++
++__attribute__ ((target ("cpu=cortex-a53+crc")))
++uint32_t
++foocpu (uint32_t a, uint8_t b)
++{
++  return __crc32b (a, b);
++}
++
++/* { dg-final { scan-assembler-times "crc32b\tw..?, w..?, w..?\n" 3 } } */
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/target_attr_5.c
+@@ -0,0 +1,20 @@
++/* { dg-do compile } */
++/* { dg-options "-O2 -save-temps" } */
++
++/* Make sure that bar is inlined into bam.  */
++
++__attribute__ ((target ("arch=armv8-a+nocrc")))
++int
++bar (int a)
++{
++  return a - 6;
++}
++
++__attribute__ ((target ("cpu=cortex-a53+nocrc")))
++int
++bam (int a)
++{
++  return a - bar (a);
++}
++
++/* { dg-final { scan-assembler-not "bl.*bar" } } */
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/target_attr_6.c
+@@ -0,0 +1,20 @@
++/* { dg-do compile } */
++/* { dg-options "-O2 -save-temps" } */
++
++/* Inlining strict-align functions into non-strict align
++   functions is not allowed.  */
++
++__attribute__ ((target ("strict-align")))
++int
++bar (int a)
++{
++  return a - 6;
++}
++
++int
++bam (int a)
++{
++  return a - bar (a);
++}
++
++/* { dg-final { scan-assembler "bl.*bar" } } */
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/target_attr_7.c
+@@ -0,0 +1,24 @@
++/* { dg-do compile } */
++/* { dg-options "-O2 -mcpu=thunderx -save-temps" } */
++
++/* Make sure that #pragma overrides command line option and
++   target attribute overrides the pragma.  */
++
++#pragma GCC target ("cpu=xgene1")
++
++int
++bar (int a)
++{
++  return a - 6;
++}
++
++__attribute__ ((target ("tune=cortex-a53")))
++int
++bam (int a)
++{
++  return a - bar (a);
++}
++
++/* { dg-final { scan-assembler-times "//.tune xgene1" 1 } } */
++/* { dg-final { scan-assembler-times "//.tune cortex-a53" 1 } } */
++/* { dg-final { scan-assembler-not "thunderx" } } */
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/target_attr_8.c
+@@ -0,0 +1,22 @@
++/* { dg-do compile } */
++/* { dg-options "-O2 -save-temps" } */
++
++/* bar has a subset set of the architectural flags of bam.
++   Inlining should be allowed.  */
++
++__attribute__ ((target ("arch=armv8-a+nocrc")))
++int
++bar (int a)
++{
++  return a - 6;
++}
++
++__attribute__ ((target ("arch=armv8-a+crc")))
++int
++bam (int a)
++{
++  return a - bar (a);
++}
++
++
++/* { dg-final { scan-assembler-not "bl.*bar" } } */
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/target_attr_9.c
+@@ -0,0 +1,22 @@
++/* { dg-do compile } */
++/* { dg-options "-O2 -save-temps" } */
++
++/* bar does not have a subset of architectural flags of bam.
++   Inlining should be rejected.  */
++
++__attribute__ ((target ("arch=armv8-a+crc")))
++int
++bar (int a)
++{
++  return a - 6;
++}
++
++__attribute__ ((target ("arch=armv8-a+nocrc")))
++int
++bam (int a)
++{
++  return a - bar (a);
++}
++
++
++/* { dg-final { scan-assembler "bl.*bar" } } */
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/target_attr_crypto_ice_1.c
+@@ -0,0 +1,21 @@
++/* { dg-do compile } */
++/* { dg-options "-O2 -mcpu=thunderx+nofp" } */
++
++#include "arm_neon.h"
++
++/* Unless we do something about re-laying out the SIMD builtin types
++   this testcase ICEs during expansion of the crypto builtin.  */
++
++__attribute__ ((target ("cpu=cortex-a57+crypto")))
++uint32x4_t
++test_vsha1cq_u32 (uint32x4_t hash_abcd, uint32_t hash_e, uint32x4_t wk)
++{
++  return vsha1cq_u32 (hash_abcd, hash_e, wk);
++}
++
++/* This one should be compiled for thunderx with no fp.  */
++int
++foo (int a)
++{
++  return a + 5;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/target_attr_crypto_ice_2.c
+@@ -0,0 +1,20 @@
++/* { dg-do compile } */
++/* { dg-options "-O2 -mcpu=thunderx+nofp" } */
++
++/* Make sure that we don't ICE when dealing with vector parameters
++   in a simd-tagged function within a non-simd translation unit.  */
++
++#pragma GCC push_options
++#pragma GCC target ("+nothing+simd")
++typedef unsigned int __uint32_t;
++typedef __uint32_t uint32_t ;
++typedef __Uint32x4_t uint32x4_t;
++#pragma GCC pop_options
++
++
++__attribute__ ((target ("cpu=cortex-a57")))
++uint32x4_t
++foo (uint32x4_t a, uint32_t b, uint32x4_t c)
++{
++  return c;
++}
+--- a/src/gcc/testsuite/gcc.target/aarch64/test-framepointer-1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/test-framepointer-1.c
+@@ -12,4 +12,3 @@
+ 
+ /* { dg-final { scan-assembler-times "stp\tx29, x30, \\\[sp, -\[0-9\]+\\\]!" 2 } } */
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/test-framepointer-2.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/test-framepointer-2.c
+@@ -12,4 +12,3 @@
+ 
+ /* { dg-final { scan-assembler-not "stp\tx29, x30, \\\[sp, -\[0-9\]+\\\]!" } } */
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/test-framepointer-3.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/test-framepointer-3.c
+@@ -12,4 +12,3 @@
+ 
+ /* { dg-final { scan-assembler-not "stp\tx29, x30, \\\[sp, -\[0-9\]+\\\]!" } } */
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/test-framepointer-4.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/test-framepointer-4.c
+@@ -13,4 +13,3 @@
+ 
+ /* { dg-final { scan-assembler-times "stp\tx29, x30, \\\[sp, -\[0-9\]+\\\]!" 1 } } */
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/test-framepointer-5.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/test-framepointer-5.c
+@@ -12,4 +12,3 @@
+ 
+ /* { dg-final { scan-assembler-times "stp\tx29, x30, \\\[sp, -\[0-9\]+\\\]!" 2 } } */
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/test-framepointer-6.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/test-framepointer-6.c
+@@ -12,4 +12,3 @@
+ 
+ /* { dg-final { scan-assembler-not "stp\tx29, x30, \\\[sp, -\[0-9\]+\\\]!" } } */
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/test-framepointer-7.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/test-framepointer-7.c
+@@ -12,4 +12,3 @@
+ 
+ /* { dg-final { scan-assembler-not "stp\tx29, x30, \\\[sp, -\[0-9\]+\\\]!" } } */
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/test-framepointer-8.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/test-framepointer-8.c
+@@ -13,4 +13,3 @@
+ 
+ /* { dg-final { scan-assembler-times "stp\tx29, x30, \\\[sp, -\[0-9\]+\\\]!" 2 } } */
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/test_fp_attribute_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/test_fp_attribute_1.c
+@@ -23,4 +23,3 @@ non_leaf_2 (void)
+ 
+ /* { dg-final { scan-assembler-times "str\tx30, \\\[sp, -\[0-9\]+\\\]!" 2 } } */
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/test_fp_attribute_2.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/test_fp_attribute_2.c
+@@ -23,4 +23,3 @@ non_leaf_2 (void)
+ 
+ /* { dg-final { scan-assembler-times "stp\tx29, x30, \\\[sp, -\[0-9\]+\\\]!" 2 } } */
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/test_frame_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/test_frame_1.c
+@@ -16,4 +16,3 @@ t_frame_run (test1)
+ /* { dg-final { scan-assembler-times "str\tx30, \\\[sp, -\[0-9\]+\\\]!" 2 } } */
+ /* { dg-final { scan-assembler-times "ldr\tx30, \\\[sp\\\], \[0-9\]+" 2 } } */
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/test_frame_10.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/test_frame_10.c
+@@ -18,4 +18,3 @@ t_frame_run (test10)
+ /* { dg-final { scan-assembler-times "stp\tx19, x30, \\\[sp, -\[0-9\]+\\\]!" 1 } } */
+ /* { dg-final { scan-assembler-times "ldp\tx19, x30, \\\[sp\\\], \[0-9\]+" 1 } } */
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/test_frame_11.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/test_frame_11.c
+@@ -13,4 +13,3 @@ t_frame_pattern (test11, 400, )
+ t_frame_run (test11)
+ 
+ /* { dg-final { scan-assembler-times "stp\tx29, x30, \\\[sp, -\[0-9\]+\\\]!" 2 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/test_frame_12.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/test_frame_12.c
+@@ -16,4 +16,3 @@ t_frame_run (test12)
+ /* Check epilogue using write-back.  */
+ /* { dg-final { scan-assembler-times "ldp\tx29, x30, \\\[sp\\\], \[0-9\]+" 3 } } */
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/test_frame_13.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/test_frame_13.c
+@@ -15,4 +15,3 @@ t_frame_run (test13)
+ 
+ /* { dg-final { scan-assembler-times "sub\tsp, sp, #\[0-9\]+" 1 } } */
+ /* { dg-final { scan-assembler-times "stp\tx29, x30, \\\[sp, -\[0-9\]+\\\]!" 2 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/test_frame_15.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/test_frame_15.c
+@@ -16,4 +16,3 @@ t_frame_run (test15)
+ 
+ /* { dg-final { scan-assembler-times "sub\tsp, sp, #\[0-9\]+" 1 } } */
+ /* { dg-final { scan-assembler-times "stp\tx29, x30, \\\[sp, -\[0-9\]+\\\]!" 3 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/test_frame_2.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/test_frame_2.c
+@@ -17,4 +17,3 @@ t_frame_run (test2)
+ /* { dg-final { scan-assembler-times "stp\tx19, x30, \\\[sp, -\[0-9\]+\\\]!" 1 } } */
+ /* { dg-final { scan-assembler-times "ldp\tx19, x30, \\\[sp\\\], \[0-9\]+" 1 } } */
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/test_frame_4.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/test_frame_4.c
+@@ -16,4 +16,3 @@ t_frame_run (test4)
+ /* { dg-final { scan-assembler-times "stp\tx19, x30, \\\[sp, -\[0-9\]+\\\]!" 1 } } */
+ /* { dg-final { scan-assembler-times "ldp\tx19, x30, \\\[sp\\\], \[0-9\]+" 1 } } */
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/test_frame_6.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/test_frame_6.c
+@@ -17,4 +17,3 @@ t_frame_run (test6)
+ /* { dg-final { scan-assembler-times "str\tx30, \\\[sp, -\[0-9\]+\\\]!" 2 } } */
+ /* { dg-final { scan-assembler-times "ldr\tx30, \\\[sp\\\], \[0-9\]+" 2 } } */
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/test_frame_7.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/test_frame_7.c
+@@ -17,4 +17,3 @@ t_frame_run (test7)
+ /* { dg-final { scan-assembler-times "stp\tx19, x30, \\\[sp, -\[0-9\]+\\\]!" 1 } } */
+ /* { dg-final { scan-assembler-times "ldp\tx19, x30, \\\[sp\\\], \[0-9\]+" 1 } } */
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/test_frame_8.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/test_frame_8.c
+@@ -15,4 +15,3 @@ t_frame_run (test8)
+ /* { dg-final { scan-assembler-times "str\tx30, \\\[sp, -\[0-9\]+\\\]!" 3 } } */
+ /* { dg-final { scan-assembler-times "ldr\tx30, \\\[sp\\\], \[0-9\]+" 3 } } */
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/tst_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/tst_1.c
+@@ -147,4 +147,3 @@ main ()
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/tst_2.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/tst_2.c
+@@ -153,4 +153,3 @@ main ()
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/unsigned-float.c
+@@ -0,0 +1,18 @@
++/* { dg-do compile } */
++/* { dg-options "-O1" } */
++
++#include <stdint.h>
++
++double
++f1 (uint16_t x)
++{
++  return (double)(float)x;
++}
++
++float
++f2 (uint16_t x)
++{
++  return (float)(double)x;
++}
++
++/* { dg-final { scan-assembler-not "fcvt" } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/ushr64_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/ushr64_1.c
+@@ -80,4 +80,3 @@ main (int argc, char *argv[])
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/vabs_intrinsic_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/vabs_intrinsic_1.c
+@@ -98,4 +98,3 @@ main (int argc, char **argv)
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/vadd_f64.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/vadd_f64.c
+@@ -79,4 +79,3 @@ main (int argc, char **argv)
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/vbslq_f64_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/vbslq_f64_1.c
+@@ -17,5 +17,4 @@ fold_me (float32x4_t a, float32x4_t b)
+ /* { dg-final { scan-assembler-not "bit\\tv" } } */
+ /* { dg-final { scan-assembler-not "bif\\tv" } } */
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+ 
+--- a/src/gcc/testsuite/gcc.target/aarch64/vbslq_f64_2.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/vbslq_f64_2.c
+@@ -20,5 +20,4 @@ half_fold_me (uint32x4_t mask)
+ /* { dg-final { scan-assembler-not "bif\\tv" } } */
+ /* { dg-final { scan-assembler "bic\\tv" } } */
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+ 
+--- a/src/gcc/testsuite/gcc.target/aarch64/vbslq_u64_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/vbslq_u64_1.c
+@@ -13,5 +13,4 @@ vbslq_dummy_u32 (uint32x4_t a, uint32x4_t b, uint32x4_t mask)
+ }
+ 
+ /* { dg-final { scan-assembler-times "bif\\tv" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+ 
+--- a/src/gcc/testsuite/gcc.target/aarch64/vbslq_u64_2.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/vbslq_u64_2.c
+@@ -18,5 +18,4 @@ half_fold_int (uint32x4_t mask)
+ /* { dg-final { scan-assembler-not "bif\\tv" } } */
+ /* { dg-final { scan-assembler "bic\\tv" } } */
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+ 
+--- a/src/gcc/testsuite/gcc.target/aarch64/vclz.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/vclz.c
+@@ -571,4 +571,3 @@ main (int argc, char **argv)
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/vdiv_f.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/vdiv_f.c
+@@ -7,7 +7,7 @@
+ #define FLT_INFINITY (__builtin_inff ())
+ #define DBL_INFINITY (__builtin_inf ())
+ 
+-#define NAN (0.0 / 0.0)
++#define NAN (__builtin_nan (""))
+ 
+ #define PI 3.141592653589793
+ #define PI_4 0.7853981633974483
+@@ -228,9 +228,7 @@ test_vdiv_f64 ()
+   return 0;
+ }
+ 
+-/* The following assembly should match 2 more times,
+-   in 64bit NAN generation.  */
+-/* { dg-final { scan-assembler-times "fdiv\\td\[0-9\]+, d\[0-9\]+, d\[0-9\]+" 3 } } */
++/* { dg-final { scan-assembler-times "fdiv\\td\[0-9\]+, d\[0-9\]+, d\[0-9\]+" 1 } } */
+ 
+ #undef TESTA8
+ #undef ANSW8
+@@ -349,4 +347,3 @@ main (int argc, char **argv)
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/vdup_lane_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/vdup_lane_1.c
+@@ -401,4 +401,3 @@ main ()
+ /* { dg-final { scan-assembler-times "dup\\tv\[0-9\]+\.4s, v\[0-9\]+\.s\\\[0\\\]" 2 } } */
+ /* { dg-final { scan-assembler-times "dup\\tv\[0-9\]+\.4s, v\[0-9\]+\.s\\\[1\\\]" 2 } } */
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/vdup_lane_2.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/vdup_lane_2.c
+@@ -338,6 +338,5 @@ main ()
+ 
+ /* Asm check for vdupd_lane_f64, vdupd_lane_s64, vdupd_lane_u64.  */
+ /* Attempts to make the compiler generate vdupd are not practical.  */
+-/* { dg-final { scan-assembler-not "dup\\td\[0-9\]+, v\[0-9\]+\.d\\\[0\\\]" } }
++/* { dg-final { scan-assembler-not "dup\\td\[0-9\]+, v\[0-9\]+\.d\\\[0\\\]" } } */
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/vdup_n_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/vdup_n_1.c
+@@ -616,4 +616,3 @@ main ()
+ /* Asm check for test_vdupq_n_s64, test_vdupq_n_u64.  */
+ /* { dg-final { scan-assembler-times "dup\\tv\[0-9\]+\.2d, x\[0-9\]+" 2 } } */
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/vdup_n_2.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/vdup_n_2.c
+@@ -24,5 +24,4 @@ main (int argc, char **argv)
+ 
+ /* { dg-final { scan-assembler-times "\[ \t\]*dup\[ \t\]+v\[0-9\]+\.2s, ?v\[0-9\]+\.s\\\[\[01\]\\\]" 1 } } */
+ /* { dg-final { scan-assembler-not "zip" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+ 
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/vec_init_1.c
+@@ -0,0 +1,33 @@
++/* { dg-do run } */
++/* { dg-options "-O2 -fomit-frame-pointer --save-temps -fno-inline" } */
++
++extern void abort (void);
++
++typedef float float16x4_t __attribute__ ((vector_size ((16))));
++
++float a;
++float b;
++
++float16x4_t
++make_vector ()
++{
++  return (float16x4_t) { 0, 0, a, b };
++}
++
++int
++main (int argc, char **argv)
++{
++  a = 4.0;
++  b = 3.0;
++  float16x4_t vec = make_vector ();
++  if (vec[0] != 0 || vec[1] != 0 || vec[2] != a || vec[3] != b)
++    abort ();
++  return 0;
++}
++
++/* { dg-final { scan-assembler-times "ins\\t" 2 } } */
++/* What we want to check, is that make_vector does not stp the whole vector
++   to the stack.  Unfortunately here we scan the body of main() too, which may
++   be a bit fragile - the test is currently passing only because of the option
++   -fomit-frame-pointer which avoids use of stp in the prologue to main().  */
++/* { dg-final { scan-assembler-not "stp\\t" } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/vect-clz.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/vect-clz.c
+@@ -32,4 +32,3 @@ main ()
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/vect-fcm-eq-d.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/vect-fcm-eq-d.c
+@@ -11,5 +11,3 @@
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 8 "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" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/vect-fcm-eq-f.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/vect-fcm-eq-f.c
+@@ -11,5 +11,3 @@
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 8 "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" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/vect-fcm-ge-d.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/vect-fcm-ge-d.c
+@@ -12,5 +12,3 @@
+ /* { 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 } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/vect-fcm-ge-f.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/vect-fcm-ge-f.c
+@@ -12,5 +12,3 @@
+ /* { 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 } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/vect-fcm-gt-d.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/vect-fcm-gt-d.c
+@@ -12,5 +12,3 @@
+ /* { 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 } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/vect-fcm-gt-f.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/vect-fcm-gt-f.c
+@@ -12,5 +12,3 @@
+ /* { 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 } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/vect-fmovd-zero.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/vect-fmovd-zero.c
+@@ -14,4 +14,3 @@ foo (double *output)
+ 
+ /* { dg-final { scan-assembler "movi\\tv\[0-9\]+\\.2d, 0" } } */
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/vect-fmovd.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/vect-fmovd.c
+@@ -14,4 +14,3 @@ foo (double *output)
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+ /* { dg-final { scan-assembler "fmov\\tv\[0-9\]+\\.2d, 4\\.25" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/vect-fmovf-zero.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/vect-fmovf-zero.c
+@@ -14,4 +14,3 @@ foo (float *output)
+ 
+ /* { dg-final { scan-assembler "movi\\tv\[0-9\]+\\.\[24\]s, 0" } } */
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/vect-fmovf.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/vect-fmovf.c
+@@ -14,4 +14,3 @@ foo (float *output)
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+ /* { dg-final { scan-assembler "fmov\\tv\[0-9\]+\\.\[24\]s, 4\\.25" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/vect-movi.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/vect-movi.c
+@@ -71,4 +71,3 @@ main (void)
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/vect-reduc-or_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/vect-reduc-or_1.c
+@@ -31,4 +31,3 @@ main (unsigned char argc, char **argv)
+ }
+ 
+ /* { dg-final { scan-tree-dump "Reduce using vector shifts" "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/vect-vaddv.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/vect-vaddv.c
+@@ -125,4 +125,3 @@ TEST (f64, q, float64, 2, D)
+   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
+@@ -86,4 +86,3 @@ BUILD_VARIANTS (lt, <)
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/vect-vcvt.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/vect-vcvt.c
+@@ -129,4 +129,3 @@ main (int argc, char **argv)
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/vect-vfmaxv.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/vect-vfmaxv.c
+@@ -166,4 +166,3 @@ main (int argc, char **argv)
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/vect-vmaxv.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/vect-vmaxv.c
+@@ -114,4 +114,3 @@ main (int argc, char **argv)
+   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
+@@ -114,4 +114,3 @@ main (int argc, char **argv)
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/vect_combine_zeroes_1.c
+@@ -0,0 +1,24 @@
++/* { dg-options "-O2 --save-temps" } */
++
++#include "arm_neon.h"
++
++int32x4_t
++foo (int32x2_t *x)
++{
++  int32x2_t i = *x;
++  int32x2_t zeroes = vcreate_s32 (0l);
++  int32x4_t ret = vcombine_s32 (i, zeroes);
++  return ret;
++}
++
++int32x4_t
++bar (int64_t x)
++{
++  int32x2_t i = vcreate_s32 (x);
++  int32x2_t zeroes = vcreate_s32 (0l);
++  int32x4_t ret = vcombine_s32 (i, zeroes);
++  return ret;
++}
++
++/* { dg-final { scan-assembler-not "mov\tv\[0-9\]+.8b, v\[0-9\]+.8b" } } */
++
+--- a/src/gcc/testsuite/gcc.target/aarch64/vect_ctz_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/vect_ctz_1.c
+@@ -38,4 +38,3 @@ main ()
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/vect_int32x2x4_1.c
+@@ -0,0 +1,22 @@
++/* { dg-do compile } */
++/* { dg-options "-O3 -fdump-rtl-expand" } */
++
++#include <arm_neon.h>
++
++uint32x2x4_t
++test_1 (uint32x2x4_t a, uint32x2x4_t b)
++{
++   uint32x2x4_t result;
++
++   for (unsigned index = 0; index < 4; ++index)
++     result.val[index] = a.val[index] + b.val[index];
++
++   return result;
++}
++
++/* Should not use the stack in expand.  */
++/* { dg-final { scan-rtl-dump-not "virtual-stack-vars" "expand" } } */
++/* Should not have to modify the stack pointer.  */
++/* { dg-final { scan-assembler-not "\t(add|sub).*sp" } } */
++/* Should not have to store or load anything.  */
++/* { dg-final { scan-assembler-not "\t(ld|st)\[rp\]" } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/vect_saddl_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/vect_saddl_1.c
+@@ -311,5 +311,4 @@ main ()
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+ 
+--- a/src/gcc/testsuite/gcc.target/aarch64/vect_smlal_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/vect_smlal_1.c
+@@ -322,4 +322,3 @@ main ()
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/vget_high_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/vget_high_1.c
+@@ -14,6 +14,7 @@ VARIANT (int8_t, 8, int8x8_t, int8x16_t, s8)		\
+ VARIANT (int16_t, 4, int16x4_t, int16x8_t, s16)		\
+ VARIANT (int32_t, 2, int32x2_t, int32x4_t, s32)		\
+ VARIANT (int64_t, 1, int64x1_t, int64x2_t, s64)		\
++VARIANT (float16_t, 4, float16x4_t, float16x8_t, f16)	\
+ VARIANT (float32_t, 2, float32x2_t, float32x4_t, f32)	\
+ VARIANT (float64_t, 1, float64x1_t, float64x2_t, f64)
+ 
+@@ -51,6 +52,8 @@ main (int argc, char **argv)
+   int16_t int16_t_data[8] = { -17, 19, 3, -999, 44048, 505, 9999, 1000};
+   int32_t int32_t_data[4] = { 123456789, -987654321, -135792468, 975318642 };
+   int64_t int64_t_data[2] = {0xfedcba9876543210LL, 0xdeadbabecafebeefLL };
++  float16_t float16_t_data[8] = { 1.25, 4.5, 7.875, 2.3125, 5.675, 8.875,
++      3.6875, 6.75};
+   float32_t float32_t_data[4] = { 3.14159, 2.718, 1.414, 100.0 };
+   float64_t float64_t_data[2] = { 1.01001000100001, 12345.6789 };
+ 
+--- a/src/gcc/testsuite/gcc.target/aarch64/vget_low_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/vget_low_1.c
+@@ -14,6 +14,7 @@ VARIANT (int8_t, 8, int8x8_t, int8x16_t, s8)		\
+ VARIANT (int16_t, 4, int16x4_t, int16x8_t, s16)		\
+ VARIANT (int32_t, 2, int32x2_t, int32x4_t, s32)		\
+ VARIANT (int64_t, 1, int64x1_t, int64x2_t, s64)		\
++VARIANT (float16_t, 4, float16x4_t, float16x8_t, f16)	\
+ VARIANT (float32_t, 2, float32x2_t, float32x4_t, f32)	\
+ VARIANT (float64_t, 1, float64x1_t, float64x2_t, f64)
+ 
+@@ -51,6 +52,8 @@ main (int argc, char **argv)
+   int16_t int16_t_data[8] = { -17, 19, 3, -999, 44048, 505, 9999, 1000};
+   int32_t int32_t_data[4] = { 123456789, -987654321, -135792468, 975318642 };
+   int64_t int64_t_data[2] = {0xfedcba9876543210LL, 0xdeadbabecafebeefLL };
++  float16_t float16_t_data[8] = { 1.25, 4.5, 7.875, 2.3125, 5.675, 8.875,
++      3.6875, 6.75};
+   float32_t float32_t_data[4] = { 3.14159, 2.718, 1.414, 100.0 };
+   float64_t float64_t_data[2] = { 1.01001000100001, 12345.6789 };
+ 
+--- a/src/gcc/testsuite/gcc.target/aarch64/vld1-vst1_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/vld1-vst1_1.c
+@@ -31,6 +31,7 @@ THING (int8x8_t, 8, int8_t, _s8)	\
+ THING (uint8x8_t, 8, uint8_t, _u8)	\
+ THING (int16x4_t, 4, int16_t, _s16)	\
+ THING (uint16x4_t, 4, uint16_t, _u16)	\
++THING (float16x4_t, 4, float16_t, _f16)	\
+ THING (int32x2_t, 2, int32_t, _s32)	\
+ THING (uint32x2_t, 2, uint32_t, _u32)	\
+ THING (float32x2_t, 2, float32_t, _f32) \
+@@ -38,8 +39,10 @@ THING (int8x16_t, 16, int8_t, q_s8)	\
+ THING (uint8x16_t, 16, uint8_t, q_u8)	\
+ THING (int16x8_t, 8, int16_t, q_s16)	\
+ THING (uint16x8_t, 8, uint16_t, q_u16)	\
++THING (float16x8_t, 8, float16_t, q_f16)\
+ THING (int32x4_t, 4, int32_t, q_s32)	\
+ THING (uint32x4_t, 4, uint32_t, q_u32)	\
++THING (float32x4_t, 4, float32_t, q_f32)\
+ THING (int64x2_t, 2, int64_t, q_s64)	\
+ THING (uint64x2_t, 2, uint64_t, q_u64)	\
+ THING (float64x2_t, 2, float64_t, q_f64)
+--- a/src/gcc/testsuite/gcc.target/aarch64/vld1_lane.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/vld1_lane.c
+@@ -16,6 +16,7 @@ VARIANT (int32, , 2, _s32, 0)	\
+ VARIANT (int64, , 1, _s64, 0)	\
+ VARIANT (poly8, , 8, _p8, 7)	\
+ VARIANT (poly16, , 4, _p16, 2)	\
++VARIANT (float16, , 4, _f16, 3)	\
+ VARIANT (float32, , 2, _f32, 1)	\
+ VARIANT (float64, , 1, _f64, 0)	\
+ VARIANT (uint8, q, 16, _u8, 13)	\
+@@ -28,6 +29,7 @@ VARIANT (int32, q, 4, _s32, 1)	\
+ VARIANT (int64, q, 2, _s64, 1)	\
+ VARIANT (poly8, q, 16, _p8, 7)	\
+ VARIANT (poly16, q, 8, _p16, 4)	\
++VARIANT (float16, q, 8, _f16, 3)\
+ VARIANT (float32, q, 4, _f32, 2)\
+ VARIANT (float64, q, 2, _f64, 1)
+ 
+@@ -56,7 +58,7 @@ VARIANTS (TESTMETH)
+ 
+ #define CHECK(BASE, Q, ELTS, SUFFIX, LANE)			\
+   if (test_vld1##Q##_lane##SUFFIX ((const BASE##_t *)orig_data,	\
+-				   BASE##_data) != 0)	\
++				   & BASE##_data) != 0)	\
+     abort ();
+ 
+ int
+@@ -65,20 +67,20 @@ main (int argc, char **argv)
+   /* Original data for all vector formats.  */
+   uint64_t orig_data[2] = {0x1234567890abcdefULL, 0x13579bdf02468aceULL};
+ 
+-  /* Data with which vldN_lane will overwrite some of previous.  */
+-  uint8_t uint8_data[4] = { 7, 11, 13, 17 };
+-  uint16_t uint16_data[4] = { 257, 263, 269, 271 };
+-  uint32_t uint32_data[4] = { 65537, 65539, 65543, 65551 };
+-  uint64_t uint64_data[4] = { 0xdeadbeefcafebabeULL, 0x0123456789abcdefULL,
+-			      0xfedcba9876543210LL, 0xdeadbabecafebeefLL };
+-  int8_t int8_data[4] = { -1, 3, -5, 7 };
+-  int16_t int16_data[4] = { 257, -259, 261, -263 };
+-  int32_t int32_data[4] = { 123456789, -987654321, -135792468, 975318642 };
+-  int64_t *int64_data = (int64_t *)uint64_data;
+-  poly8_t poly8_data[4] = { 0, 7, 13, 18, };
+-  poly16_t poly16_data[4] = { 11111, 2222, 333, 44 };
+-  float32_t float32_data[4] = { 3.14159, 2.718, 1.414, 100.0 };
+-  float64_t float64_data[4] = { 1.010010001, 12345.6789, -9876.54321, 1.618 };
++  /* Data with which vld1_lane will overwrite one element of previous.  */
++  uint8_t uint8_data = 7;
++  uint16_t uint16_data = 257;
++  uint32_t uint32_data = 65537;
++  uint64_t uint64_data = 0xdeadbeefcafebabeULL;
++  int8_t int8_data = -1;
++  int16_t int16_data = -259;
++  int32_t int32_data = -987654321;
++  int64_t int64_data = 0x1234567890abcdefLL;
++  poly8_t poly8_data = 13;
++  poly16_t poly16_data = 11111;
++  float16_t float16_data = 8.75;
++  float32_t float32_data = 3.14159;
++  float64_t float64_data = 1.010010001;
+ 
+   VARIANTS (CHECK);
+   return 0;
+--- a/src/gcc/testsuite/gcc.target/aarch64/vldN_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/vldN_1.c
+@@ -39,6 +39,7 @@ VARIANT (int32, 2, STRUCT, _s32)	\
+ VARIANT (int64, 1, STRUCT, _s64)	\
+ VARIANT (poly8, 8, STRUCT, _p8)		\
+ VARIANT (poly16, 4, STRUCT, _p16)	\
++VARIANT (float16, 4, STRUCT, _f16)	\
+ VARIANT (float32, 2, STRUCT, _f32)	\
+ VARIANT (float64, 1, STRUCT, _f64)	\
+ VARIANT (uint8, 16, STRUCT, q_u8)	\
+@@ -51,6 +52,7 @@ VARIANT (int32, 4, STRUCT, q_s32)	\
+ VARIANT (int64, 2, STRUCT, q_s64)	\
+ VARIANT (poly8, 16, STRUCT, q_p8)	\
+ VARIANT (poly16, 8, STRUCT, q_p16)	\
++VARIANT (float16, 8, STRUCT, q_f16)	\
+ VARIANT (float32, 4, STRUCT, q_f32)	\
+ VARIANT (float64, 2, STRUCT, q_f64)
+ 
+--- a/src/gcc/testsuite/gcc.target/aarch64/vldN_dup_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/vldN_dup_1.c
+@@ -16,6 +16,7 @@ VARIANT (int32, , 2, _s32, STRUCT)	\
+ VARIANT (int64, , 1, _s64, STRUCT)	\
+ VARIANT (poly8, , 8, _p8, STRUCT)	\
+ VARIANT (poly16, , 4, _p16, STRUCT)	\
++VARIANT (float16, , 4, _f16, STRUCT)	\
+ VARIANT (float32, , 2, _f32, STRUCT)	\
+ VARIANT (float64, , 1, _f64, STRUCT)	\
+ VARIANT (uint8, q, 16, _u8, STRUCT)	\
+@@ -28,6 +29,7 @@ VARIANT (int32, q, 4, _s32, STRUCT)	\
+ VARIANT (int64, q, 2, _s64, STRUCT)	\
+ VARIANT (poly8, q, 16, _p8, STRUCT)	\
+ VARIANT (poly16, q, 8, _p16, STRUCT)	\
++VARIANT (float16, q, 8, _f16, STRUCT)	\
+ VARIANT (float32, q, 4, _f32, STRUCT)	\
+ VARIANT (float64, q, 2, _f64, STRUCT)
+ 
+@@ -74,6 +76,7 @@ main (int argc, char **argv)
+   int64_t *int64_data = (int64_t *)uint64_data;
+   poly8_t poly8_data[4] = { 0, 7, 13, 18, };
+   poly16_t poly16_data[4] = { 11111, 2222, 333, 44 };
++  float16_t float16_data[4] = { 1.0625, 3.125, 0.03125, 7.75 };
+   float32_t float32_data[4] = { 3.14159, 2.718, 1.414, 100.0 };
+   float64_t float64_data[4] = { 1.010010001, 12345.6789, -9876.54321, 1.618 };
+ 
+--- a/src/gcc/testsuite/gcc.target/aarch64/vldN_lane_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/vldN_lane_1.c
+@@ -16,6 +16,7 @@ VARIANT (int32, , 2, _s32, 0, STRUCT)	\
+ VARIANT (int64, , 1, _s64, 0, STRUCT)	\
+ VARIANT (poly8, , 8, _p8, 7, STRUCT)	\
+ VARIANT (poly16, , 4, _p16, 1, STRUCT)	\
++VARIANT (float16, , 4, _f16, 3, STRUCT)	\
+ VARIANT (float32, , 2, _f32, 1, STRUCT)	\
+ VARIANT (float64, , 1, _f64, 0, STRUCT)	\
+ VARIANT (uint8, q, 16, _u8, 14, STRUCT)	\
+@@ -28,6 +29,7 @@ VARIANT (int32, q, 4, _s32, 2, STRUCT)	\
+ VARIANT (int64, q, 2, _s64, 1, STRUCT)	\
+ VARIANT (poly8, q, 16, _p8, 12, STRUCT)	\
+ VARIANT (poly16, q, 8, _p16, 5, STRUCT)	\
++VARIANT (float16, q, 8, _f16, 7, STRUCT)\
+ VARIANT (float32, q, 4, _f32, 1, STRUCT)\
+ VARIANT (float64, q, 2, _f64, 0, STRUCT)
+ 
+@@ -54,11 +56,11 @@ test_vld##STRUCT##Q##_lane##SUFFIX (const BASE##_t *data,		\
+ }
+ 
+ 
+-/* Tests of vld2_dup and vld2q_dup.  */
++/* Tests of vld2_lane and vld2q_lane.  */
+ VARIANTS (TESTMETH, 2)
+-/* Tests of vld3_dup and vld3q_dup.  */
++/* Tests of vld3_lane and vld3q_lane.  */
+ VARIANTS (TESTMETH, 3)
+-/* Tests of vld4_dup and vld4q_dup.  */
++/* Tests of vld4_lane and vld4q_lane.  */
+ VARIANTS (TESTMETH, 4)
+ 
+ #define CHECK(BASE, Q, ELTS, SUFFIX, LANE, STRUCT)			\
+@@ -71,7 +73,7 @@ main (int argc, char **argv)
+ {
+   /* Original data for all vector formats.  */
+   uint64_t orig_data[8] = {0x1234567890abcdefULL, 0x13579bdf02468aceULL,
+-			   0x012389ab4567cdefULL, 0xfeeddadacafe0431ULL,
++			   0x012389ab4567cdefULL, 0xdeeddadacafe0431ULL,
+ 			   0x1032547698badcfeULL, 0xbadbadbadbad0badULL,
+ 			   0x0102030405060708ULL, 0x0f0e0d0c0b0a0908ULL};
+ 
+@@ -87,6 +89,7 @@ main (int argc, char **argv)
+   int64_t *int64_data = (int64_t *)uint64_data;
+   poly8_t poly8_data[4] = { 0, 7, 13, 18, };
+   poly16_t poly16_data[4] = { 11111, 2222, 333, 44 };
++  float16_t float16_data[4] = { 0.8125, 7.5, 19, 0.046875 };
+   float32_t float32_data[4] = { 3.14159, 2.718, 1.414, 100.0 };
+   float64_t float64_data[4] = { 1.010010001, 12345.6789, -9876.54321, 1.618 };
+ 
+--- a/src/gcc/testsuite/gcc.target/aarch64/vmov_n_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/vmov_n_1.c
+@@ -346,4 +346,3 @@ main (int argc, char **argv)
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/vneg_f.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/vneg_f.c
+@@ -267,4 +267,3 @@ main (int argc, char **argv)
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/vneg_s.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/vneg_s.c
+@@ -298,4 +298,3 @@ main (int argc, char **argv)
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/vqabs_s64_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/vqabs_s64_1.c
+@@ -51,4 +51,3 @@ main (int argc, char **argv)
+ 
+   return 0;
+ }
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/vqneg_s64_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/vqneg_s64_1.c
+@@ -44,4 +44,3 @@ main (int argc, char **argv)
+ 
+   return 0;
+ }
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/vrecps.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/vrecps.c
+@@ -141,4 +141,3 @@ main (int argc, char **argv)
+   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
+@@ -51,4 +51,3 @@ main (int argc, char **argv)
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/vrnd_f64_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/vrnd_f64_1.c
+@@ -102,4 +102,3 @@ main (int argc, char **argv)
+ /* { dg-final { scan-assembler-times "frintm\\td\[0-9\]+, d\[0-9\]+" 1 } } */
+ /* { dg-final { scan-assembler-times "frinti\\td\[0-9\]+, d\[0-9\]+" 1 } } */
+ /* { dg-final { scan-assembler-times "frinta\\td\[0-9\]+, d\[0-9\]+" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/aarch64/vset_lane_1.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/vset_lane_1.c
+@@ -16,6 +16,7 @@ VARIANT (int32_t, , 2, int32x2_t, _s32, 0)	\
+ VARIANT (int64_t, , 1, int64x1_t, _s64, 0)	\
+ VARIANT (poly8_t, , 8, poly8x8_t, _p8, 6)	\
+ VARIANT (poly16_t, , 4, poly16x4_t, _p16, 2)	\
++VARIANT (float16_t, , 4, float16x4_t, _f16, 3)	\
+ VARIANT (float32_t, , 2, float32x2_t, _f32, 1)	\
+ VARIANT (float64_t, , 1, float64x1_t, _f64, 0)	\
+ VARIANT (uint8_t, q, 16, uint8x16_t, _u8, 11)	\
+@@ -28,6 +29,7 @@ VARIANT (int32_t, q, 4, int32x4_t, _s32, 3)	\
+ VARIANT (int64_t, q, 2, int64x2_t, _s64, 0)	\
+ VARIANT (poly8_t, q, 16, poly8x16_t, _p8, 14)	\
+ VARIANT (poly16_t, q, 8, poly16x8_t, _p16, 6)	\
++VARIANT (float16_t, q, 8, float16x8_t, _f16, 6)	\
+ VARIANT (float32_t, q, 4, float32x4_t, _f32, 2) \
+ VARIANT (float64_t, q, 2, float64x2_t, _f64, 1)
+ 
+@@ -76,6 +78,9 @@ main (int argc, char **argv)
+   poly8_t poly8_t_data[16] =
+       { 0, 7, 13, 18, 22, 25, 27, 28, 29, 31, 34, 38, 43, 49, 56, 64 };
+   poly16_t poly16_t_data[8] = { 11111, 2222, 333, 44, 5, 65432, 54321, 43210 };
++  float16_t float16_t_data[8] = { 1.25, 4.5, 7.875, 2.3125, 5.675, 8.875,
++      3.6875, 6.75};
++
+   float32_t float32_t_data[4] = { 3.14159, 2.718, 1.414, 100.0 };
+   float64_t float64_t_data[2] = { 1.01001000100001, 12345.6789 };
+ 
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/aarch64/vstN_lane_1.c
+@@ -0,0 +1,75 @@
++/* { dg-do run } */
++/* { dg-options "-O3 -fno-inline" } */
++
++#include <arm_neon.h>
++
++extern void abort (void);
++
++#define VARIANTS(VARIANT, STRUCT)	\
++VARIANT (uint8, , 8, _u8, 6, STRUCT)	\
++VARIANT (uint16, , 4, _u16, 3, STRUCT)	\
++VARIANT (uint32, , 2, _u32, 1, STRUCT)	\
++VARIANT (uint64, , 1, _u64, 0, STRUCT)	\
++VARIANT (int8, , 8, _s8, 5, STRUCT)	\
++VARIANT (int16, , 4, _s16, 2, STRUCT)	\
++VARIANT (int32, , 2, _s32, 0, STRUCT)	\
++VARIANT (int64, , 1, _s64, 0, STRUCT)	\
++VARIANT (poly8, , 8, _p8, 7, STRUCT)	\
++VARIANT (poly16, , 4, _p16, 1, STRUCT)	\
++VARIANT (float32, , 2, _f32, 1, STRUCT)	\
++VARIANT (float64, , 1, _f64, 0, STRUCT)	\
++VARIANT (uint8, q, 16, _u8, 14, STRUCT)	\
++VARIANT (uint16, q, 8, _u16, 4, STRUCT)	\
++VARIANT (uint32, q, 4, _u32, 3, STRUCT)	\
++VARIANT (uint64, q, 2, _u64, 0, STRUCT)	\
++VARIANT (int8, q, 16, _s8, 13, STRUCT)	\
++VARIANT (int16, q, 8, _s16, 6, STRUCT)	\
++VARIANT (int32, q, 4, _s32, 2, STRUCT)	\
++VARIANT (int64, q, 2, _s64, 1, STRUCT)	\
++VARIANT (poly8, q, 16, _p8, 12, STRUCT)	\
++VARIANT (poly16, q, 8, _p16, 5, STRUCT)	\
++VARIANT (float32, q, 4, _f32, 1, STRUCT)\
++VARIANT (float64, q, 2, _f64, 0, STRUCT)
++
++#define TESTMETH(BASE, Q, ELTS, SUFFIX, LANE, STRUCT)			\
++int									\
++test_vst##STRUCT##Q##_lane##SUFFIX (const BASE##_t *data)		\
++{									\
++  BASE##x##ELTS##x##STRUCT##_t vectors;					\
++  for (int i = 0; i < STRUCT; i++, data += ELTS)			\
++    vectors.val[i] = vld1##Q##SUFFIX (data);				\
++  BASE##_t temp[STRUCT];						\
++  vst##STRUCT##Q##_lane##SUFFIX (temp, vectors, LANE);			\
++  for (int i = 0; i < STRUCT; i++)					\
++    {									\
++      if (temp[i] != vget##Q##_lane##SUFFIX (vectors.val[i], LANE))	\
++	return 1;							\
++    }									\
++  return 0;								\
++}
++
++/* Tests of vst2_lane and vst2q_lane.  */
++VARIANTS (TESTMETH, 2)
++/* Tests of vst3_lane and vst3q_lane.  */
++VARIANTS (TESTMETH, 3)
++/* Tests of vst4_lane and vst4q_lane.  */
++VARIANTS (TESTMETH, 4)
++
++#define CHECK(BASE, Q, ELTS, SUFFIX, LANE, STRUCT)			\
++  if (test_vst##STRUCT##Q##_lane##SUFFIX ((const BASE##_t *)orig_data))	\
++    abort ();
++
++int
++main (int argc, char **argv)
++{
++  /* Original data for all vector formats.  */
++  uint64_t orig_data[8] = {0x1234567890abcdefULL, 0x13579bdf02468aceULL,
++			   0x012389ab4567cdefULL, 0xfeeddadacafe0431ULL,
++			   0x1032547698badcfeULL, 0xbadbadbadbad0badULL,
++			   0x0102030405060708ULL, 0x0f0e0d0c0b0a0908ULL};
++
++  VARIANTS (CHECK, 2);
++  VARIANTS (CHECK, 3);
++  VARIANTS (CHECK, 4);
++  return 0;
++}
+--- a/src/gcc/testsuite/gcc.target/aarch64/vsub_f64.c
++++ b/src/gcc/testsuite/gcc.target/aarch64/vsub_f64.c
+@@ -81,4 +81,3 @@ main (int argc, char **argv)
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/20131120.c
++++ b/src/gcc/testsuite/gcc.target/arm/20131120.c
+@@ -11,4 +11,3 @@ foo (Arr2 a2, int i)
+ }
+ 
+ /* { dg-final { scan-rtl-dump-not "\\\(set \\\(reg:SI \[0-9\]*\\\)\[\n\r\]+\[ \t]*\\\(const_int 4000" "expand" } } */
+-/* { dg-final { cleanup-rtl-dump "expand" } } */
+--- a/src/gcc/testsuite/gcc.target/arm/acle/crc32b.c
++++ b/src/gcc/testsuite/gcc.target/arm/acle/crc32b.c
+@@ -17,4 +17,3 @@ void test_crc32b (void)
+ }
+ 
+ /* { dg-final { scan-assembler "crc32b\t...?, ...?, ...?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/acle/crc32cb.c
++++ b/src/gcc/testsuite/gcc.target/arm/acle/crc32cb.c
+@@ -17,4 +17,3 @@ void test_crc32cb (void)
+ }
+ 
+ /* { dg-final { scan-assembler "crc32cb\t...?, ...?, ...?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/acle/crc32cd.c
++++ b/src/gcc/testsuite/gcc.target/arm/acle/crc32cd.c
+@@ -17,4 +17,3 @@ void test_crc32cd (void)
+ }
+ 
+ /* { dg-final { scan-assembler-times "crc32cw\t...?, ...?, ...?\n" 2 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/acle/crc32ch.c
++++ b/src/gcc/testsuite/gcc.target/arm/acle/crc32ch.c
+@@ -17,4 +17,3 @@ void test_crc32ch (void)
+ }
+ 
+ /* { dg-final { scan-assembler "crc32ch\t...?, ...?, ...?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/acle/crc32cw.c
++++ b/src/gcc/testsuite/gcc.target/arm/acle/crc32cw.c
+@@ -17,4 +17,3 @@ void test_crc32cw (void)
+ }
+ 
+ /* { dg-final { scan-assembler "crc32cw\t...?, ...?, ...?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/acle/crc32d.c
++++ b/src/gcc/testsuite/gcc.target/arm/acle/crc32d.c
+@@ -17,4 +17,3 @@ void test_crc32d (void)
+ }
+ 
+ /* { dg-final { scan-assembler-times "crc32w\t...?, ...?, ...?\n" 2 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/acle/crc32h.c
++++ b/src/gcc/testsuite/gcc.target/arm/acle/crc32h.c
+@@ -17,4 +17,3 @@ void test_crc32h (void)
+ }
+ 
+ /* { dg-final { scan-assembler "crc32h\t...?, ...?, ...?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/acle/crc32w.c
++++ b/src/gcc/testsuite/gcc.target/arm/acle/crc32w.c
+@@ -17,4 +17,3 @@ void test_crc32w (void)
+ }
+ 
+ /* { dg-final { scan-assembler "crc32w\t...?, ...?, ...?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/anddi_notdi-1.c
++++ b/src/gcc/testsuite/gcc.target/arm/anddi_notdi-1.c
+@@ -63,4 +63,3 @@ int main ()
+ /* { dg-final { scan-assembler-times "bics\t" 6 { target arm_thumb1 } } } */
+ /* { dg-final { scan-assembler-times "bic\t" 6 { target { ! arm_thumb1 } } } } */
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/arm/attr_arm-err.c
+@@ -0,0 +1,13 @@
++/* Check that attribute target arm is rejected for M profile.  */
++/* { dg-do compile } */
++/* { dg-require-effective-target arm_arm_ok } */
++/* { dg-skip-if "avoid conflicting multilib options" { *-*-* } { "-march=*" } { "-march=armv6-m" } } */
++/* { dg-add-options arm_arch_v6m } */
++
++int __attribute__((target("arm")))
++foo(int a)
++{  /* { dg-error "does not support" } */
++  return a ? 1 : 5;
++}
++
++
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/arm/attr_arm.c
+@@ -0,0 +1,11 @@
++/* Check that attribute target arm is recognized.  */
++/* { dg-do compile } */
++/* { dg-final { scan-assembler "\\.arm" } } */
++/* { dg-final { scan-assembler-not "\\.thumb_func" } } */
++
++int __attribute__((target("arm")))
++foo(int a)
++{
++  return a ? 1 : 5;
++}
++
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/arm/attr_thumb-static.c
+@@ -0,0 +1,25 @@
++/* Check that a change mode to a static function is correctly handled. */
++/* { dg-do run } */
++
++static void
++ __attribute__((__noinline__)) 
++foo (void)
++{
++  __asm__ ("");
++}
++
++static void
++__attribute__((__noinline__)) 
++__attribute__((target("thumb")))
++bar (void)
++{
++  __asm__ ("");
++}
++
++int
++main (void)
++{
++  foo();
++  bar();
++  return 0;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/arm/attr_thumb-static2.c
+@@ -0,0 +1,40 @@
++/* Check interwork between static functions for thumb2. */
++
++/* { dg-do compile } */
++/* { dg-require-effective-target arm_arch_v7a_ok } */
++/* { dg-options "-O0 -march=armv7-a" } */
++
++struct _NSPoint
++{
++  float x;
++  float y;
++};
++
++typedef struct _NSPoint NSPoint;
++
++static NSPoint
++__attribute__ ((target("arm")))
++NSMakePoint (float x, float y)
++{
++  NSPoint point;
++  point.x = x;
++  point.y = y;
++  return point;
++}
++
++static NSPoint
++__attribute__ ((target("thumb")))
++RelativePoint (NSPoint point, NSPoint refPoint)
++{
++  return NSMakePoint (refPoint.x + point.x, refPoint.y + point.y);
++}
++
++NSPoint
++__attribute__ ((target("arm")))
++g(NSPoint refPoint)
++{
++  float pointA, pointB;
++  return RelativePoint (NSMakePoint (0, pointA), refPoint);
++}
++
++/* { dg-final { scan-assembler-times "blx" 2 } } */
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/arm/attr_thumb.c
+@@ -0,0 +1,15 @@
++/* Check that attribute target thumb is recognized. */
++/* { dg-do compile } */
++/* Make sure the current multilib supports thumb.  */
++/* { dg-skip-if "" { ! { arm_thumb1_ok || arm_thumb2_ok } } } */
++/* { dg-options "-O2 -mno-restrict-it" } */
++/* { dg-final { scan-assembler-not "\\.arm"  } } */
++/* { dg-final { scan-assembler "\\.thumb_func" } } */
++
++int __attribute__((target("thumb")))
++foo(int a)
++{
++  /* { dg-final { scan-assembler "ite" { target { arm_thumb2_ok } } } } */
++  return a ? 1 : 5;
++}
++
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/arm/bics_1.c
+@@ -0,0 +1,53 @@
++/* { dg-do run } */
++/* { dg-options "-O2 --save-temps -fno-inline" } */
++/* { dg-require-effective-target arm32 } */
++
++extern void abort (void);
++
++int
++bics_si_test1 (int a, int b, int c)
++{
++  int d = a & ~b;
++
++  /* { dg-final { scan-assembler-times "bics\tr\[0-9\]+, r\[0-9\]+, r\[0-9\]+" 2 } } */
++  if (d == 0)
++    return a + c;
++  else
++    return b + d + c;
++}
++
++int
++bics_si_test2 (int a, int b, int c)
++{
++  int d = a & ~(b << 3);
++
++  /* { dg-final { scan-assembler-times "bics\tr\[0-9\]+, r\[0-9\]+, r\[0-9\]+, .sl \#3" 1 } } */
++  if (d == 0)
++    return a + c;
++  else
++    return b + d + c;
++}
++
++int
++main ()
++{
++  int x;
++
++  x = bics_si_test1 (29, ~4, 5);
++  if (x != ((29 & 4) + ~4 + 5))
++    abort ();
++
++  x = bics_si_test1 (5, ~2, 20);
++  if (x != 25)
++    abort ();
++
++    x = bics_si_test2 (35, ~4, 5);
++  if (x != ((35 & ~(~4 << 3)) + ~4 + 5))
++    abort ();
++
++  x = bics_si_test2 (96, ~2, 20);
++  if (x != 116)
++  abort ();
++
++  return 0;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/arm/bics_2.c
+@@ -0,0 +1,56 @@
++/* { dg-do run } */
++/* { dg-options "-O2 --save-temps -fno-inline" } */
++/* { dg-require-effective-target arm32 } */
++
++extern void abort (void);
++
++int
++bics_si_test1 (int a, int b, int c)
++{
++  int d = a & ~b;
++
++  /* { dg-final { scan-assembler-not "bics\tr\[0-9\]+, r\[0-9\]+, r\[0-9\]+" } } */
++  /* { dg-final { scan-assembler-times "bic\tr\[0-9\]+, r\[0-9\]+, r\[0-9\]+" 2 } } */
++  if (d <= 0)
++    return a + c;
++  else
++    return b + d + c;
++}
++
++int
++bics_si_test2 (int a, int b, int c)
++{
++  int d = a & ~(b << 3);
++
++  /* { dg-final { scan-assembler-not "bics\tr\[0-9\]+, r\[0-9\]+, r\[0-9\]+, .sl \#3" } } */
++  /* { dg-final { scan-assembler "bic\tr\[0-9\]+, r\[0-9\]+, r\[0-9\]+, .sl \#3" } } */
++  if (d <= 0)
++    return a + c;
++  else
++    return b + d + c;
++}
++
++int
++main ()
++{
++  int x;
++
++  x = bics_si_test1 (29, ~4, 5);
++  if (x != ((29 & 4) + ~4 + 5))
++    abort ();
++
++  x = bics_si_test1 (5, ~2, 20);
++  if (x != 25)
++    abort ();
++
++  x = bics_si_test2 (35, ~4, 5);
++  if (x != ((35 & ~(~4 << 3)) + ~4 + 5))
++    abort ();
++
++  x = bics_si_test2 (96, ~2, 20);
++  if (x != 116)
++    abort ();
++
++  return 0;
++}
++
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/arm/bics_3.c
+@@ -0,0 +1,40 @@
++/* { dg-do run } */
++/* { dg-options "-O2 --save-temps -fno-inline" } */
++/* { dg-require-effective-target arm32 } */
++
++extern void abort (void);
++
++int
++bics_si_test (int a, int b)
++{
++  if (a & ~b)
++    return 1;
++  else
++    return 0;
++}
++
++int
++bics_si_test2 (int a, int b)
++{
++  if (a & ~ (b << 2))
++    return 1;
++  else
++    return 0;
++}
++
++int
++main (void)
++{
++  int a = 5;
++  int b = 5;
++  int c = 20;
++  if (bics_si_test (a, b))
++    abort ();
++  if (bics_si_test2 (c, b))
++    abort ();
++  return 0;
++}
++
++/* { dg-final { scan-assembler-times "bics\tr\[0-9\]+, r\[0-9\]+, r\[0-9\]+" 2 } } */
++/* { dg-final { scan-assembler-times "bics\tr\[0-9\]+, r\[0-9\]+, r\[0-9\]+, .sl #2" 1 } } */
++
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/arm/bics_4.c
+@@ -0,0 +1,48 @@
++/* { dg-do run } */
++/* { dg-options "-O2 --save-temps -fno-inline" } */
++/* { dg-require-effective-target arm32 } */
++
++extern void abort (void);
++
++int
++bics_si_test1 (int a, int b, int c)
++{
++  if ((a & b) == a)
++    return a;
++  else
++    return c;
++}
++
++int
++bics_si_test2 (int a, int b, int c)
++{
++  if ((a & b) == b)
++    return b;
++  else
++    return c;
++}
++
++int
++main ()
++{
++  int x;
++  x = bics_si_test1 (0xf00d, 0xf11f, 0);
++  if (x != 0xf00d)
++    abort ();
++
++  x = bics_si_test1 (0xf11f, 0xf00d, 0);
++  if (x != 0)
++    abort ();
++
++  x = bics_si_test2 (0xf00d, 0xf11f, 0);
++  if (x != 0)
++    abort ();
++
++  x = bics_si_test2 (0xf11f, 0xf00d, 0);
++  if (x != 0xf00d)
++    abort ();
++
++  return 0;
++}
++
++/* { dg-final { scan-assembler-times "bics\tr\[0-9\]+, r\[0-9\]+, r\[0-9\]+" 2 } } */
+--- a/src/gcc/testsuite/gcc.target/arm/copysign_softfloat_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/copysign_softfloat_1.c
+@@ -58,4 +58,3 @@ main (int argc, char **argv)
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/divzero.c
++++ b/src/gcc/testsuite/gcc.target/arm/divzero.c
+@@ -1,6 +1,6 @@
++/* { dg-do run } */
+ /* { dg-require-effective-target arm_eabi } */
+ /* { dg-options "" } */
+-/* { dg-do run } */
+ 
+ /* Check that long long divmod functions pass the right argument to
+    __aeabi_ldiv0 on divide by zero.  */
+--- a/src/gcc/testsuite/gcc.target/arm/fixed_float_conversion.c
++++ b/src/gcc/testsuite/gcc.target/arm/fixed_float_conversion.c
+@@ -3,6 +3,7 @@
+ /* { dg-require-effective-target arm_vfp3_ok } */
+ /* { dg-options "-O1" } */
+ /* { dg-add-options arm_vfp3 } */
++/* { dg-skip-if "need fp instructions" { *-*-* } { "-mfloat-abi=soft" } { "" } } */
+ 
+ float
+ fixed_to_float (int i)
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/arm/flip-thumb.c
+@@ -0,0 +1,26 @@
++/* Check -mflip-thumb. */
++/* { dg-do compile } */
++/* Make sure the current multilib supports thumb.  */
++/* { dg-skip-if "" { ! { arm_thumb1_ok || arm_thumb2_ok } } } */
++/* { dg-options "-O2 -mflip-thumb -mno-restrict-it" } */
++/* { dg-final { scan-assembler "\\.arm" } } */
++/* { dg-final { scan-assembler-times "\\.thumb_func" 1} } */
++
++int 
++foo(int a)
++{
++  return a ? 1 : 5;
++}
++
++int 
++bar(int a)
++{
++  return a ? 1 : 5;
++}
++
++/* { dg-final { scan-assembler-times "ite" 1 { target { arm_thumb2_ok } } } } */
++
++
++
++
++
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/arm/fp16-inf.c
+@@ -0,0 +1,14 @@
++/* { dg-do run } */
++/* { dg-options "-O -mfp16-format=ieee" } */
++
++/* Conversion of infinity to __fp16 and back again should preserve the
++   value.  */
++volatile float f = __builtin_inf ();
++
++int main ()
++{
++  __fp16 h = f;
++  if (h != __builtin_inf ())
++    __builtin_abort ();
++  return 0;
++}
+--- a/src/gcc/testsuite/gcc.target/arm/identical-invariants.c
++++ b/src/gcc/testsuite/gcc.target/arm/identical-invariants.c
+@@ -25,5 +25,4 @@ int foo (int a, int b, int c, int d)
+ }
+ 
+ /* { dg-final { scan-rtl-dump "Decided to move invariant 0" "loop2_invariant" } } */
+-/* { dg-final { cleanup-rtl-dump "loop2_invariant" } } */
+ 
+--- a/src/gcc/testsuite/gcc.target/arm/iordi_notdi-1.c
++++ b/src/gcc/testsuite/gcc.target/arm/iordi_notdi-1.c
+@@ -62,4 +62,3 @@ int main ()
+ 
+ /* { dg-final { scan-assembler-times "orn\t" 6 { target arm_thumb2 } } } */
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/ivopts-2.c
++++ b/src/gcc/testsuite/gcc.target/arm/ivopts-2.c
+@@ -15,5 +15,3 @@ tr4 (short array[], int n)
+ /* { dg-final { scan-tree-dump-times "PHI <ivtmp" 1 "ivopts"} } */
+ /* { dg-final { scan-tree-dump-times "PHI <" 1 "ivopts"} } */
+ /* { dg-final { object-size text <= 26 { target arm_thumb2 } } } */
+-/* { dg-final { cleanup-tree-dump "ivopts" } } */
+-/* { dg-final { cleanup-saved-temps "ivopts" } } */
+--- a/src/gcc/testsuite/gcc.target/arm/ivopts-3.c
++++ b/src/gcc/testsuite/gcc.target/arm/ivopts-3.c
+@@ -17,5 +17,3 @@ tr3 (short array[], unsigned int n)
+ /* { dg-final { scan-tree-dump-times "PHI <x" 0 "ivopts"} } */
+ /* { dg-final { scan-tree-dump-times ", x" 0 "ivopts"} } */
+ /* { dg-final { object-size text <= 30 { target arm_thumb2 } } } */
+-/* { dg-final { cleanup-tree-dump "ivopts" } } */
+-/* { dg-final { cleanup-saved-temps "ivopts" } } */
+--- a/src/gcc/testsuite/gcc.target/arm/ivopts-4.c
++++ b/src/gcc/testsuite/gcc.target/arm/ivopts-4.c
+@@ -18,5 +18,3 @@ tr2 (int array[], int n)
+ /* { dg-final { scan-tree-dump-times "PHI <x" 0 "ivopts"} } */
+ /* { dg-final { scan-tree-dump-times ", x" 0 "ivopts"} } */
+ /* { dg-final { object-size text <= 36 { target arm_thumb2 } } } */
+-/* { dg-final { cleanup-tree-dump "ivopts" } } */
+-/* { dg-final { cleanup-saved-temps "ivopts" } } */
+--- a/src/gcc/testsuite/gcc.target/arm/ivopts-5.c
++++ b/src/gcc/testsuite/gcc.target/arm/ivopts-5.c
+@@ -17,5 +17,3 @@ tr1 (int array[], unsigned int n)
+ /* { dg-final { scan-tree-dump-times "PHI <x" 0 "ivopts"} } */
+ /* { dg-final { scan-tree-dump-times ", x" 0 "ivopts"} } */
+ /* { dg-final { object-size text <= 30 { target arm_thumb2 } } } */
+-/* { dg-final { cleanup-tree-dump "ivopts" } } */
+-/* { dg-final { cleanup-saved-temps "ivopts" } } */
+--- a/src/gcc/testsuite/gcc.target/arm/ivopts-orig_biv-inc.c
++++ b/src/gcc/testsuite/gcc.target/arm/ivopts-orig_biv-inc.c
+@@ -16,4 +16,3 @@ unsigned char * foo(unsigned char *ReadPtr)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "original biv" 2 "ivopts"} } */
+-/* { dg-final { cleanup-tree-dump "ivopts" } } */
+--- a/src/gcc/testsuite/gcc.target/arm/ivopts.c
++++ b/src/gcc/testsuite/gcc.target/arm/ivopts.c
+@@ -14,5 +14,3 @@ tr5 (short array[], int n)
+ /* { dg-final { object-size text <= 20 { target arm_thumb2 } } } */
+ /* { dg-final { object-size text <= 32 { target { arm_nothumb && { ! arm_iwmmxt_ok } } } } } */
+ /* { dg-final { object-size text <= 36 { target { arm_nothumb && arm_iwmmxt_ok }  } } } */
+-/* { dg-final { cleanup-tree-dump "ivopts" } } */
+-/* { dg-final { cleanup-saved-temps "ivopts" } } */
+--- a/src/gcc/testsuite/gcc.target/arm/lp1243022.c
++++ b/src/gcc/testsuite/gcc.target/arm/lp1243022.c
+@@ -2,7 +2,6 @@
+ /* { dg-options "-O2 -fdump-rtl-subreg2" } */
+ 
+ /* { dg-final { scan-rtl-dump "REG_INC" "subreg2" { target { ! arm_neon } } } } */
+-/* { dg-final { cleanup-rtl-dump "subreg2" } } */
+ struct device;
+ typedef unsigned int __u32;
+ typedef unsigned long long u64;
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/arm/maskdata.c
+@@ -0,0 +1,15 @@
++/* { dg-do compile } */
++/* { dg-options " -O2" }  */
++/* { dg-require-effective-target arm_thumb2_ok } */
++
++#define MASK 0xff00ff
++void maskdata (int * data, int len)
++{
++   int i = len;
++   for (; i > 0; i -= 2)
++    {
++      data[i] &= MASK;
++      data[i + 1] &= MASK;
++    }
++}
++/* { dg-final { scan-assembler-not "65280" } } */
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/arm/memcpy-aligned-1.c
+@@ -0,0 +1,12 @@
++/* { dg-do compile } */
++/* { dg-options "-O2 -save-temps" } */
++
++void *memcpy (void *dest, const void *src, unsigned int n);
++
++void foo (char *dst, int i)
++{
++  memcpy (dst, &i, sizeof (i));
++}
++
++/* { dg-final { scan-assembler-times "str\t" 1 } } */
++/* { dg-final { scan-assembler-not "ldr\t" } } */
+--- a/src/gcc/testsuite/gcc.target/arm/memset-inline-1.c
++++ b/src/gcc/testsuite/gcc.target/arm/memset-inline-1.c
+@@ -36,4 +36,3 @@ main(void)
+ }
+ 
+ /* { dg-final { scan-assembler-not "bl?\[ \t\]*memset" { target { arm_thumb2_ok } } } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/memset-inline-10.c
++++ b/src/gcc/testsuite/gcc.target/arm/memset-inline-10.c
+@@ -1,5 +1,7 @@
+ /* { dg-do compile } */
+ /* { dg-options "-march=armv7-a -mfloat-abi=hard -mfpu=neon -O2" } */
++/* { dg-skip-if "need SIMD instructions" { *-*-* } { "-mfloat-abi=soft" } { "" } } */
++/* { dg-skip-if "need SIMD instructions" { *-*-* } { "-mfpu=vfp*" } { "" } } */
+ 
+ #define BUF 100
+ long a[BUF];
+--- a/src/gcc/testsuite/gcc.target/arm/memset-inline-2.c
++++ b/src/gcc/testsuite/gcc.target/arm/memset-inline-2.c
+@@ -35,4 +35,3 @@ main(void)
+   return 0;
+ }
+ /* { dg-final { scan-assembler "bl?\[ \t\]*memset" { target { ! arm_neon } } } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/memset-inline-4.c
++++ b/src/gcc/testsuite/gcc.target/arm/memset-inline-4.c
+@@ -64,4 +64,3 @@ main(void)
+ /* { dg-final { scan-assembler-not "bl?\[ \t\]+memset" { target { ! arm_thumb1_ok } } } } */
+ /* { dg-final { scan-assembler-times "vst1\.8" 1 { target { arm_little_endian && arm_neon } } } } */
+ /* { dg-final { scan-assembler "vstr" { target { arm_little_endian && arm_neon } } } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/memset-inline-5.c
++++ b/src/gcc/testsuite/gcc.target/arm/memset-inline-5.c
+@@ -73,5 +73,4 @@ main(void)
+ /* { dg-final { scan-assembler-not "bl?\[ \t\]+memset" { target { arm_little_endian && arm_neon } } } } */
+ /* { dg-final { scan-assembler "vst1" { target { arm_little_endian && arm_neon } } } } */
+ /* { dg-final { scan-assembler-not "vstr"  { target { arm_little_endian && arm_neon } } } } */
+-/* { dg-final { cleanup-saved-temps } } */
+ 
+--- a/src/gcc/testsuite/gcc.target/arm/memset-inline-6.c
++++ b/src/gcc/testsuite/gcc.target/arm/memset-inline-6.c
+@@ -62,6 +62,5 @@ main(void)
+ /* { dg-final { scan-assembler-not "bl?\[ \t\]+memset" { target { arm_little_endian && arm_neon } } } } */
+ /* { dg-final { scan-assembler-times "vst1" 3 { target { arm_little_endian && arm_neon } } } } */
+ /* { dg-final { scan-assembler-times "vstr" 4 { target { arm_little_endian && arm_neon } } } } */
+-/* { dg-final { cleanup-saved-temps } } */
+ 
+ 
+--- a/src/gcc/testsuite/gcc.target/arm/memset-inline-8.c
++++ b/src/gcc/testsuite/gcc.target/arm/memset-inline-8.c
+@@ -40,4 +40,3 @@ main(void)
+ /* { dg-final { scan-assembler-not "bl?\[ \t\]*memset" { target { arm_thumb2_ok } } } } */
+ /* { dg-final { scan-assembler "vst1" { target { arm_little_endian && arm_neon } } } } */
+ /* { dg-final { scan-assembler-not "vstr" { target { arm_little_endian && arm_neon } } } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/memset-inline-9.c
++++ b/src/gcc/testsuite/gcc.target/arm/memset-inline-9.c
+@@ -38,4 +38,3 @@ main(void)
+ }
+ /* { dg-final { scan-assembler-not "bl?\[ \t\]*memset" { target { arm_little_endian && arm_neon } } } } */
+ /* { dg-final { scan-assembler "vst1" { target { arm_little_endian && arm_neon } } } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon-reload-class.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon-reload-class.c
+@@ -15,4 +15,4 @@ _op_blend_p_caa_dp(unsigned *s, unsigned* e, unsigned *d, unsigned c) {
+ 
+ /* These constants should be emitted as immediates rather than loaded from memory.  */
+ 
+-/* { dg-final { scan-assembler-not "(\\.d?word|mov(w|t))" } } */
++/* { dg-final { scan-assembler-not "(\\.d?word)" } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon-vdup-1.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon-vdup-1.c
+@@ -14,4 +14,3 @@ void test_vdupq_nf32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmov\.f32\[ 	\]+\[qQ\]\[0-9\]+, #0\.0\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon-vdup-10.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon-vdup-10.c
+@@ -14,4 +14,3 @@ void test_vdupq_nu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmov\.i32\[ 	\]+\[qQ\]\[0-9\]+, #3992977407\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon-vdup-11.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon-vdup-11.c
+@@ -14,4 +14,3 @@ void test_vdupq_nu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmov\.i16\[ 	\]+\[qQ\]\[0-9\]+, #18\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon-vdup-12.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon-vdup-12.c
+@@ -14,4 +14,3 @@ void test_vdupq_nu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmov\.i16\[ 	\]+\[qQ\]\[0-9\]+, #4608\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon-vdup-13.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon-vdup-13.c
+@@ -14,4 +14,3 @@ void test_vdupq_nu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmov\.i16\[ 	\]+\[qQ\]\[0-9\]+, #65517\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon-vdup-14.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon-vdup-14.c
+@@ -14,4 +14,3 @@ void test_vdupq_nu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmov\.i16\[ 	\]+\[qQ\]\[0-9\]+, #60927\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon-vdup-15.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon-vdup-15.c
+@@ -14,4 +14,3 @@ void test_vdupq_nu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmov\.i8\[ 	\]+\[qQ\]\[0-9\]+, #18\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon-vdup-16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon-vdup-16.c
+@@ -14,4 +14,3 @@ void test_vdupq_nu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmov\.i32\[ 	\]+\[qQ\]\[0-9\]+, #4863\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon-vdup-17.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon-vdup-17.c
+@@ -14,4 +14,3 @@ void test_vdupq_nu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmov\.i32\[ 	\]+\[qQ\]\[0-9\]+, #1245183\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon-vdup-18.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon-vdup-18.c
+@@ -14,4 +14,3 @@ void test_vdupq_nu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmov\.i32\[ 	\]+\[qQ\]\[0-9\]+, #4294962432\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon-vdup-19.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon-vdup-19.c
+@@ -14,4 +14,3 @@ void test_vdupq_nu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmov\.i32\[ 	\]+\[qQ\]\[0-9\]+, #4293722112\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon-vdup-2.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon-vdup-2.c
+@@ -14,4 +14,3 @@ void test_vdupq_nf32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmov\.f32\[ 	\]+\[qQ\]\[0-9\]+, #1\.25e-1\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon-vdup-3.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon-vdup-3.c
+@@ -14,4 +14,3 @@ void test_vdupq_nu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmov\.i32\[ 	\]+\[qQ\]\[0-9\]+, #18\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon-vdup-4.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon-vdup-4.c
+@@ -14,4 +14,3 @@ void test_vdupq_nu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmov\.i32\[ 	\]+\[qQ\]\[0-9\]+, #4608\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon-vdup-5.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon-vdup-5.c
+@@ -14,4 +14,3 @@ void test_vdupq_nu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmov\.i32\[ 	\]+\[qQ\]\[0-9\]+, #1179648\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon-vdup-6.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon-vdup-6.c
+@@ -14,4 +14,3 @@ void test_vdupq_nu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmov\.i32\[ 	\]+\[qQ\]\[0-9\]+, #301989888\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon-vdup-7.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon-vdup-7.c
+@@ -14,4 +14,3 @@ void test_vdupq_nu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmov\.i32\[ 	\]+\[qQ\]\[0-9\]+, #4294967277\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon-vdup-8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon-vdup-8.c
+@@ -14,4 +14,3 @@ void test_vdupq_nu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmov\.i32\[ 	\]+\[qQ\]\[0-9\]+, #4294962687\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon-vdup-9.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon-vdup-9.c
+@@ -14,4 +14,3 @@ void test_vdupq_nu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmov\.i32\[ 	\]+\[qQ\]\[0-9\]+, #4293787647\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/pr51534.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/pr51534.c
+@@ -58,18 +58,18 @@ GEN_COND_TESTS(vceq)
+ /* { dg-final { scan-assembler-times "vcge\.u16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+" 2 } } */
+ /* { dg-final { scan-assembler "vcge\.s32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #0" } } */
+ /* { dg-final { scan-assembler-times "vcge\.u32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+" 2 } } */
+-/* { dg-final { scan-assembler "vcgt\.s8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+" } } */
+-/* { dg-final { scan-assembler "vcgt\.s16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+" } } */
+-/* { dg-final { scan-assembler "vcgt\.s32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+" } } */
+-/* { dg-final { scan-assembler "vcgt\.s8\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+" } } */
+-/* { dg-final { scan-assembler "vcgt\.s16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+" } } */
+-/* { dg-final { scan-assembler "vcgt\.s32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+" } } */
+-/* { dg-final { scan-assembler "vcge\.s8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+" } } */
+-/* { dg-final { scan-assembler "vcge\.s16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+" } } */
+-/* { dg-final { scan-assembler "vcge\.s32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+" } } */
+-/* { dg-final { scan-assembler "vcge\.s8\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+" } } */
+-/* { dg-final { scan-assembler "vcge\.s16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+" } } */
+-/* { dg-final { scan-assembler "vcge\.s32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+" } } */
++/* { dg-final { scan-assembler "vclt\.s8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #0" } } */
++/* { dg-final { scan-assembler "vclt\.s16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #0" } } */
++/* { dg-final { scan-assembler "vclt\.s32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #0" } } */
++/* { dg-final { scan-assembler "vclt\.s8\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #0" } } */
++/* { dg-final { scan-assembler "vclt\.s16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #0" } } */
++/* { dg-final { scan-assembler "vclt\.s32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #0" } } */
++/* { dg-final { scan-assembler "vcle\.s8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #0" } } */
++/* { dg-final { scan-assembler "vcle\.s16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #0" } } */
++/* { dg-final { scan-assembler "vcle\.s32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #0" } } */
++/* { dg-final { scan-assembler "vcle\.s8\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #0" } } */
++/* { dg-final { scan-assembler "vcle\.s16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #0" } } */
++/* { dg-final { scan-assembler "vcle\.s32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #0" } } */
+ /* { dg-final { scan-assembler-times "vceq\.i8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #0" 2 } } */
+ /* { dg-final { scan-assembler-times "vceq\.i16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #0" 2 } } */
+ /* { dg-final { scan-assembler-times "vceq\.i32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #0" 2 } } */
+@@ -81,4 +81,3 @@ GEN_COND_TESTS(vceq)
+ /* { dg-final { scan-assembler-not "vc\[gl\]\[te\]\.u\[0-9\]+\[ 	\]+\[qQdD\]\[0-9\]+, \[qQdD\]\[0-9\]+, #0" } } */
+ 
+ /* Tidy up.  */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vRaddhns16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vRaddhns16.c
+@@ -18,4 +18,3 @@ void test_vRaddhns16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vraddhn\.i16\[ 	\]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vRaddhns32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vRaddhns32.c
+@@ -18,4 +18,3 @@ void test_vRaddhns32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vraddhn\.i32\[ 	\]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vRaddhns64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vRaddhns64.c
+@@ -18,4 +18,3 @@ void test_vRaddhns64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vraddhn\.i64\[ 	\]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vRaddhnu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vRaddhnu16.c
+@@ -18,4 +18,3 @@ void test_vRaddhnu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vraddhn\.i16\[ 	\]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vRaddhnu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vRaddhnu32.c
+@@ -18,4 +18,3 @@ void test_vRaddhnu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vraddhn\.i32\[ 	\]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vRaddhnu64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vRaddhnu64.c
+@@ -18,4 +18,3 @@ void test_vRaddhnu64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vraddhn\.i64\[ 	\]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vRhaddQs16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vRhaddQs16.c
+@@ -18,4 +18,3 @@ void test_vRhaddQs16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrhadd\.s16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vRhaddQs32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vRhaddQs32.c
+@@ -18,4 +18,3 @@ void test_vRhaddQs32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrhadd\.s32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vRhaddQs8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vRhaddQs8.c
+@@ -18,4 +18,3 @@ void test_vRhaddQs8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrhadd\.s8\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vRhaddQu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vRhaddQu16.c
+@@ -18,4 +18,3 @@ void test_vRhaddQu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrhadd\.u16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vRhaddQu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vRhaddQu32.c
+@@ -18,4 +18,3 @@ void test_vRhaddQu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrhadd\.u32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vRhaddQu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vRhaddQu8.c
+@@ -18,4 +18,3 @@ void test_vRhaddQu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrhadd\.u8\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vRhadds16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vRhadds16.c
+@@ -18,4 +18,3 @@ void test_vRhadds16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrhadd\.s16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vRhadds32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vRhadds32.c
+@@ -18,4 +18,3 @@ void test_vRhadds32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrhadd\.s32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vRhadds8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vRhadds8.c
+@@ -18,4 +18,3 @@ void test_vRhadds8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrhadd\.s8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vRhaddu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vRhaddu16.c
+@@ -18,4 +18,3 @@ void test_vRhaddu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrhadd\.u16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vRhaddu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vRhaddu32.c
+@@ -18,4 +18,3 @@ void test_vRhaddu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrhadd\.u32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vRhaddu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vRhaddu8.c
+@@ -18,4 +18,3 @@ void test_vRhaddu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrhadd\.u8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vRshlQs16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vRshlQs16.c
+@@ -18,4 +18,3 @@ void test_vRshlQs16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrshl\.s16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vRshlQs32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vRshlQs32.c
+@@ -18,4 +18,3 @@ void test_vRshlQs32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrshl\.s32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vRshlQs64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vRshlQs64.c
+@@ -18,4 +18,3 @@ void test_vRshlQs64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrshl\.s64\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vRshlQs8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vRshlQs8.c
+@@ -18,4 +18,3 @@ void test_vRshlQs8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrshl\.s8\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vRshlQu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vRshlQu16.c
+@@ -18,4 +18,3 @@ void test_vRshlQu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrshl\.u16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vRshlQu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vRshlQu32.c
+@@ -18,4 +18,3 @@ void test_vRshlQu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrshl\.u32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vRshlQu64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vRshlQu64.c
+@@ -18,4 +18,3 @@ void test_vRshlQu64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrshl\.u64\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vRshlQu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vRshlQu8.c
+@@ -18,4 +18,3 @@ void test_vRshlQu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrshl\.u8\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vRshls16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vRshls16.c
+@@ -18,4 +18,3 @@ void test_vRshls16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrshl\.s16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vRshls32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vRshls32.c
+@@ -18,4 +18,3 @@ void test_vRshls32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrshl\.s32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vRshls64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vRshls64.c
+@@ -18,4 +18,3 @@ void test_vRshls64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrshl\.s64\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vRshls8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vRshls8.c
+@@ -18,4 +18,3 @@ void test_vRshls8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrshl\.s8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vRshlu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vRshlu16.c
+@@ -18,4 +18,3 @@ void test_vRshlu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrshl\.u16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vRshlu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vRshlu32.c
+@@ -18,4 +18,3 @@ void test_vRshlu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrshl\.u32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vRshlu64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vRshlu64.c
+@@ -18,4 +18,3 @@ void test_vRshlu64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrshl\.u64\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vRshlu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vRshlu8.c
+@@ -18,4 +18,3 @@ void test_vRshlu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrshl\.u8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vRshrQ_ns16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vRshrQ_ns16.c
+@@ -17,4 +17,3 @@ void test_vRshrQ_ns16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrshr\.s16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vRshrQ_ns32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vRshrQ_ns32.c
+@@ -17,4 +17,3 @@ void test_vRshrQ_ns32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrshr\.s32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vRshrQ_ns64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vRshrQ_ns64.c
+@@ -17,4 +17,3 @@ void test_vRshrQ_ns64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrshr\.s64\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vRshrQ_ns8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vRshrQ_ns8.c
+@@ -17,4 +17,3 @@ void test_vRshrQ_ns8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrshr\.s8\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vRshrQ_nu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vRshrQ_nu16.c
+@@ -17,4 +17,3 @@ void test_vRshrQ_nu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrshr\.u16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vRshrQ_nu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vRshrQ_nu32.c
+@@ -17,4 +17,3 @@ void test_vRshrQ_nu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrshr\.u32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vRshrQ_nu64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vRshrQ_nu64.c
+@@ -17,4 +17,3 @@ void test_vRshrQ_nu64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrshr\.u64\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vRshrQ_nu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vRshrQ_nu8.c
+@@ -17,4 +17,3 @@ void test_vRshrQ_nu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrshr\.u8\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vRshr_ns16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vRshr_ns16.c
+@@ -17,4 +17,3 @@ void test_vRshr_ns16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrshr\.s16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vRshr_ns32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vRshr_ns32.c
+@@ -17,4 +17,3 @@ void test_vRshr_ns32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrshr\.s32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vRshr_ns64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vRshr_ns64.c
+@@ -17,4 +17,3 @@ void test_vRshr_ns64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrshr\.s64\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vRshr_ns8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vRshr_ns8.c
+@@ -17,4 +17,3 @@ void test_vRshr_ns8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrshr\.s8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vRshr_nu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vRshr_nu16.c
+@@ -17,4 +17,3 @@ void test_vRshr_nu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrshr\.u16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vRshr_nu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vRshr_nu32.c
+@@ -17,4 +17,3 @@ void test_vRshr_nu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrshr\.u32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vRshr_nu64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vRshr_nu64.c
+@@ -17,4 +17,3 @@ void test_vRshr_nu64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrshr\.u64\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vRshr_nu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vRshr_nu8.c
+@@ -17,4 +17,3 @@ void test_vRshr_nu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrshr\.u8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vRshrn_ns16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vRshrn_ns16.c
+@@ -17,4 +17,3 @@ void test_vRshrn_ns16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrshrn\.i16\[ 	\]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vRshrn_ns32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vRshrn_ns32.c
+@@ -17,4 +17,3 @@ void test_vRshrn_ns32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrshrn\.i32\[ 	\]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vRshrn_ns64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vRshrn_ns64.c
+@@ -17,4 +17,3 @@ void test_vRshrn_ns64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrshrn\.i64\[ 	\]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vRshrn_nu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vRshrn_nu16.c
+@@ -17,4 +17,3 @@ void test_vRshrn_nu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrshrn\.i16\[ 	\]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vRshrn_nu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vRshrn_nu32.c
+@@ -17,4 +17,3 @@ void test_vRshrn_nu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrshrn\.i32\[ 	\]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vRshrn_nu64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vRshrn_nu64.c
+@@ -17,4 +17,3 @@ void test_vRshrn_nu64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrshrn\.i64\[ 	\]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vRsraQ_ns16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vRsraQ_ns16.c
+@@ -18,4 +18,3 @@ void test_vRsraQ_ns16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrsra\.s16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vRsraQ_ns32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vRsraQ_ns32.c
+@@ -18,4 +18,3 @@ void test_vRsraQ_ns32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrsra\.s32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vRsraQ_ns64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vRsraQ_ns64.c
+@@ -18,4 +18,3 @@ void test_vRsraQ_ns64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrsra\.s64\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vRsraQ_ns8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vRsraQ_ns8.c
+@@ -18,4 +18,3 @@ void test_vRsraQ_ns8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrsra\.s8\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vRsraQ_nu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vRsraQ_nu16.c
+@@ -18,4 +18,3 @@ void test_vRsraQ_nu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrsra\.u16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vRsraQ_nu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vRsraQ_nu32.c
+@@ -18,4 +18,3 @@ void test_vRsraQ_nu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrsra\.u32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vRsraQ_nu64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vRsraQ_nu64.c
+@@ -18,4 +18,3 @@ void test_vRsraQ_nu64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrsra\.u64\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vRsraQ_nu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vRsraQ_nu8.c
+@@ -18,4 +18,3 @@ void test_vRsraQ_nu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrsra\.u8\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vRsra_ns16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vRsra_ns16.c
+@@ -18,4 +18,3 @@ void test_vRsra_ns16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrsra\.s16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vRsra_ns32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vRsra_ns32.c
+@@ -18,4 +18,3 @@ void test_vRsra_ns32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrsra\.s32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vRsra_ns64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vRsra_ns64.c
+@@ -18,4 +18,3 @@ void test_vRsra_ns64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrsra\.s64\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vRsra_ns8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vRsra_ns8.c
+@@ -18,4 +18,3 @@ void test_vRsra_ns8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrsra\.s8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vRsra_nu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vRsra_nu16.c
+@@ -18,4 +18,3 @@ void test_vRsra_nu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrsra\.u16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vRsra_nu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vRsra_nu32.c
+@@ -18,4 +18,3 @@ void test_vRsra_nu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrsra\.u32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vRsra_nu64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vRsra_nu64.c
+@@ -18,4 +18,3 @@ void test_vRsra_nu64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrsra\.u64\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vRsra_nu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vRsra_nu8.c
+@@ -18,4 +18,3 @@ void test_vRsra_nu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrsra\.u8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vRsubhns16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vRsubhns16.c
+@@ -18,4 +18,3 @@ void test_vRsubhns16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrsubhn\.i16\[ 	\]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vRsubhns32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vRsubhns32.c
+@@ -18,4 +18,3 @@ void test_vRsubhns32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrsubhn\.i32\[ 	\]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vRsubhns64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vRsubhns64.c
+@@ -18,4 +18,3 @@ void test_vRsubhns64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrsubhn\.i64\[ 	\]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vRsubhnu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vRsubhnu16.c
+@@ -18,4 +18,3 @@ void test_vRsubhnu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrsubhn\.i16\[ 	\]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vRsubhnu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vRsubhnu32.c
+@@ -18,4 +18,3 @@ void test_vRsubhnu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrsubhn\.i32\[ 	\]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vRsubhnu64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vRsubhnu64.c
+@@ -18,4 +18,3 @@ void test_vRsubhnu64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrsubhn\.i64\[ 	\]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vabaQs16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vabaQs16.c
+@@ -19,4 +19,3 @@ void test_vabaQs16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vaba\.s16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vabaQs32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vabaQs32.c
+@@ -19,4 +19,3 @@ void test_vabaQs32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vaba\.s32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vabaQs8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vabaQs8.c
+@@ -19,4 +19,3 @@ void test_vabaQs8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vaba\.s8\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vabaQu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vabaQu16.c
+@@ -19,4 +19,3 @@ void test_vabaQu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vaba\.u16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vabaQu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vabaQu32.c
+@@ -19,4 +19,3 @@ void test_vabaQu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vaba\.u32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vabaQu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vabaQu8.c
+@@ -19,4 +19,3 @@ void test_vabaQu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vaba\.u8\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vabals16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vabals16.c
+@@ -19,4 +19,3 @@ void test_vabals16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vabal\.s16\[ 	\]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vabals32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vabals32.c
+@@ -19,4 +19,3 @@ void test_vabals32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vabal\.s32\[ 	\]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vabals8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vabals8.c
+@@ -19,4 +19,3 @@ void test_vabals8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vabal\.s8\[ 	\]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vabalu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vabalu16.c
+@@ -19,4 +19,3 @@ void test_vabalu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vabal\.u16\[ 	\]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vabalu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vabalu32.c
+@@ -19,4 +19,3 @@ void test_vabalu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vabal\.u32\[ 	\]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vabalu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vabalu8.c
+@@ -19,4 +19,3 @@ void test_vabalu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vabal\.u8\[ 	\]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vabas16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vabas16.c
+@@ -19,4 +19,3 @@ void test_vabas16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vaba\.s16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vabas32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vabas32.c
+@@ -19,4 +19,3 @@ void test_vabas32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vaba\.s32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vabas8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vabas8.c
+@@ -19,4 +19,3 @@ void test_vabas8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vaba\.s8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vabau16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vabau16.c
+@@ -19,4 +19,3 @@ void test_vabau16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vaba\.u16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vabau32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vabau32.c
+@@ -19,4 +19,3 @@ void test_vabau32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vaba\.u32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vabau8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vabau8.c
+@@ -19,4 +19,3 @@ void test_vabau8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vaba\.u8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vabdQf32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vabdQf32.c
+@@ -18,4 +18,3 @@ void test_vabdQf32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vabd\.f32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vabdQs16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vabdQs16.c
+@@ -18,4 +18,3 @@ void test_vabdQs16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vabd\.s16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vabdQs32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vabdQs32.c
+@@ -18,4 +18,3 @@ void test_vabdQs32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vabd\.s32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vabdQs8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vabdQs8.c
+@@ -18,4 +18,3 @@ void test_vabdQs8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vabd\.s8\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vabdQu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vabdQu16.c
+@@ -18,4 +18,3 @@ void test_vabdQu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vabd\.u16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vabdQu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vabdQu32.c
+@@ -18,4 +18,3 @@ void test_vabdQu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vabd\.u32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vabdQu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vabdQu8.c
+@@ -18,4 +18,3 @@ void test_vabdQu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vabd\.u8\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vabdf32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vabdf32.c
+@@ -18,4 +18,3 @@ void test_vabdf32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vabd\.f32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vabdls16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vabdls16.c
+@@ -18,4 +18,3 @@ void test_vabdls16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vabdl\.s16\[ 	\]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vabdls32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vabdls32.c
+@@ -18,4 +18,3 @@ void test_vabdls32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vabdl\.s32\[ 	\]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vabdls8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vabdls8.c
+@@ -18,4 +18,3 @@ void test_vabdls8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vabdl\.s8\[ 	\]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vabdlu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vabdlu16.c
+@@ -18,4 +18,3 @@ void test_vabdlu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vabdl\.u16\[ 	\]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vabdlu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vabdlu32.c
+@@ -18,4 +18,3 @@ void test_vabdlu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vabdl\.u32\[ 	\]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vabdlu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vabdlu8.c
+@@ -18,4 +18,3 @@ void test_vabdlu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vabdl\.u8\[ 	\]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vabds16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vabds16.c
+@@ -18,4 +18,3 @@ void test_vabds16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vabd\.s16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vabds32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vabds32.c
+@@ -18,4 +18,3 @@ void test_vabds32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vabd\.s32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vabds8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vabds8.c
+@@ -18,4 +18,3 @@ void test_vabds8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vabd\.s8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vabdu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vabdu16.c
+@@ -18,4 +18,3 @@ void test_vabdu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vabd\.u16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vabdu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vabdu32.c
+@@ -18,4 +18,3 @@ void test_vabdu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vabd\.u32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vabdu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vabdu8.c
+@@ -18,4 +18,3 @@ void test_vabdu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vabd\.u8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vabsQf32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vabsQf32.c
+@@ -17,4 +17,3 @@ void test_vabsQf32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vabs\.f32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vabsQs16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vabsQs16.c
+@@ -17,4 +17,3 @@ void test_vabsQs16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vabs\.s16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vabsQs32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vabsQs32.c
+@@ -17,4 +17,3 @@ void test_vabsQs32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vabs\.s32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vabsQs8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vabsQs8.c
+@@ -17,4 +17,3 @@ void test_vabsQs8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vabs\.s8\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vabsf32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vabsf32.c
+@@ -17,4 +17,3 @@ void test_vabsf32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vabs\.f32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vabss16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vabss16.c
+@@ -17,4 +17,3 @@ void test_vabss16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vabs\.s16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vabss32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vabss32.c
+@@ -17,4 +17,3 @@ void test_vabss32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vabs\.s32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vabss8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vabss8.c
+@@ -17,4 +17,3 @@ void test_vabss8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vabs\.s8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vaddQf32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vaddQf32.c
+@@ -18,4 +18,3 @@ void test_vaddQf32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vadd\.f32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vaddQs16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vaddQs16.c
+@@ -18,4 +18,3 @@ void test_vaddQs16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vadd\.i16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vaddQs32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vaddQs32.c
+@@ -18,4 +18,3 @@ void test_vaddQs32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vadd\.i32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vaddQs64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vaddQs64.c
+@@ -18,4 +18,3 @@ void test_vaddQs64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vadd\.i64\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vaddQs8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vaddQs8.c
+@@ -18,4 +18,3 @@ void test_vaddQs8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vadd\.i8\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vaddQu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vaddQu16.c
+@@ -18,4 +18,3 @@ void test_vaddQu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vadd\.i16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vaddQu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vaddQu32.c
+@@ -18,4 +18,3 @@ void test_vaddQu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vadd\.i32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vaddQu64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vaddQu64.c
+@@ -18,4 +18,3 @@ void test_vaddQu64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vadd\.i64\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vaddQu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vaddQu8.c
+@@ -18,4 +18,3 @@ void test_vaddQu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vadd\.i8\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vaddf32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vaddf32.c
+@@ -18,4 +18,3 @@ void test_vaddf32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vadd\.f32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vaddhns16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vaddhns16.c
+@@ -18,4 +18,3 @@ void test_vaddhns16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vaddhn\.i16\[ 	\]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vaddhns32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vaddhns32.c
+@@ -18,4 +18,3 @@ void test_vaddhns32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vaddhn\.i32\[ 	\]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vaddhns64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vaddhns64.c
+@@ -18,4 +18,3 @@ void test_vaddhns64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vaddhn\.i64\[ 	\]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vaddhnu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vaddhnu16.c
+@@ -18,4 +18,3 @@ void test_vaddhnu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vaddhn\.i16\[ 	\]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vaddhnu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vaddhnu32.c
+@@ -18,4 +18,3 @@ void test_vaddhnu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vaddhn\.i32\[ 	\]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vaddhnu64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vaddhnu64.c
+@@ -18,4 +18,3 @@ void test_vaddhnu64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vaddhn\.i64\[ 	\]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vaddls16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vaddls16.c
+@@ -18,4 +18,3 @@ void test_vaddls16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vaddl\.s16\[ 	\]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vaddls32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vaddls32.c
+@@ -18,4 +18,3 @@ void test_vaddls32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vaddl\.s32\[ 	\]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vaddls8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vaddls8.c
+@@ -18,4 +18,3 @@ void test_vaddls8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vaddl\.s8\[ 	\]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vaddlu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vaddlu16.c
+@@ -18,4 +18,3 @@ void test_vaddlu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vaddl\.u16\[ 	\]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vaddlu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vaddlu32.c
+@@ -18,4 +18,3 @@ void test_vaddlu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vaddl\.u32\[ 	\]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vaddlu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vaddlu8.c
+@@ -18,4 +18,3 @@ void test_vaddlu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vaddl\.u8\[ 	\]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vadds16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vadds16.c
+@@ -18,4 +18,3 @@ void test_vadds16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vadd\.i16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vadds32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vadds32.c
+@@ -18,4 +18,3 @@ void test_vadds32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vadd\.i32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vadds64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vadds64.c
+@@ -17,4 +17,3 @@ void test_vadds64 (void)
+   out_int64x1_t = vadd_s64 (arg0_int64x1_t, arg1_int64x1_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vadds8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vadds8.c
+@@ -18,4 +18,3 @@ void test_vadds8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vadd\.i8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vaddu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vaddu16.c
+@@ -18,4 +18,3 @@ void test_vaddu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vadd\.i16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vaddu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vaddu32.c
+@@ -18,4 +18,3 @@ void test_vaddu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vadd\.i32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vaddu64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vaddu64.c
+@@ -17,4 +17,3 @@ void test_vaddu64 (void)
+   out_uint64x1_t = vadd_u64 (arg0_uint64x1_t, arg1_uint64x1_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vaddu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vaddu8.c
+@@ -18,4 +18,3 @@ void test_vaddu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vadd\.i8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vaddws16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vaddws16.c
+@@ -18,4 +18,3 @@ void test_vaddws16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vaddw\.s16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vaddws32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vaddws32.c
+@@ -18,4 +18,3 @@ void test_vaddws32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vaddw\.s32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vaddws8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vaddws8.c
+@@ -18,4 +18,3 @@ void test_vaddws8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vaddw\.s8\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vaddwu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vaddwu16.c
+@@ -18,4 +18,3 @@ void test_vaddwu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vaddw\.u16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vaddwu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vaddwu32.c
+@@ -18,4 +18,3 @@ void test_vaddwu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vaddw\.u32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vaddwu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vaddwu8.c
+@@ -18,4 +18,3 @@ void test_vaddwu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vaddw\.u8\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vandQs16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vandQs16.c
+@@ -18,4 +18,3 @@ void test_vandQs16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vand\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vandQs32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vandQs32.c
+@@ -18,4 +18,3 @@ void test_vandQs32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vand\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vandQs64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vandQs64.c
+@@ -18,4 +18,3 @@ void test_vandQs64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vand\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vandQs8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vandQs8.c
+@@ -18,4 +18,3 @@ void test_vandQs8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vand\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vandQu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vandQu16.c
+@@ -18,4 +18,3 @@ void test_vandQu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vand\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vandQu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vandQu32.c
+@@ -18,4 +18,3 @@ void test_vandQu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vand\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vandQu64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vandQu64.c
+@@ -18,4 +18,3 @@ void test_vandQu64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vand\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vandQu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vandQu8.c
+@@ -18,4 +18,3 @@ void test_vandQu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vand\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vands16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vands16.c
+@@ -18,4 +18,3 @@ void test_vands16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vand\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vands32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vands32.c
+@@ -18,4 +18,3 @@ void test_vands32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vand\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vands64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vands64.c
+@@ -17,4 +17,3 @@ void test_vands64 (void)
+   out_int64x1_t = vand_s64 (arg0_int64x1_t, arg1_int64x1_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vands8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vands8.c
+@@ -18,4 +18,3 @@ void test_vands8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vand\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vandu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vandu16.c
+@@ -18,4 +18,3 @@ void test_vandu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vand\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vandu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vandu32.c
+@@ -18,4 +18,3 @@ void test_vandu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vand\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vandu64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vandu64.c
+@@ -17,4 +17,3 @@ void test_vandu64 (void)
+   out_uint64x1_t = vand_u64 (arg0_uint64x1_t, arg1_uint64x1_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vandu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vandu8.c
+@@ -18,4 +18,3 @@ void test_vandu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vand\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vbicQs16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vbicQs16.c
+@@ -18,4 +18,3 @@ void test_vbicQs16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vbic\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vbicQs32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vbicQs32.c
+@@ -18,4 +18,3 @@ void test_vbicQs32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vbic\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vbicQs64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vbicQs64.c
+@@ -18,4 +18,3 @@ void test_vbicQs64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vbic\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vbicQs8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vbicQs8.c
+@@ -18,4 +18,3 @@ void test_vbicQs8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vbic\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vbicQu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vbicQu16.c
+@@ -18,4 +18,3 @@ void test_vbicQu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vbic\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vbicQu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vbicQu32.c
+@@ -18,4 +18,3 @@ void test_vbicQu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vbic\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vbicQu64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vbicQu64.c
+@@ -18,4 +18,3 @@ void test_vbicQu64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vbic\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vbicQu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vbicQu8.c
+@@ -18,4 +18,3 @@ void test_vbicQu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vbic\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vbics16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vbics16.c
+@@ -18,4 +18,3 @@ void test_vbics16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vbic\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vbics32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vbics32.c
+@@ -18,4 +18,3 @@ void test_vbics32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vbic\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vbics64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vbics64.c
+@@ -17,4 +17,3 @@ void test_vbics64 (void)
+   out_int64x1_t = vbic_s64 (arg0_int64x1_t, arg1_int64x1_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vbics8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vbics8.c
+@@ -18,4 +18,3 @@ void test_vbics8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vbic\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vbicu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vbicu16.c
+@@ -18,4 +18,3 @@ void test_vbicu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vbic\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vbicu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vbicu32.c
+@@ -18,4 +18,3 @@ void test_vbicu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vbic\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vbicu64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vbicu64.c
+@@ -17,4 +17,3 @@ void test_vbicu64 (void)
+   out_uint64x1_t = vbic_u64 (arg0_uint64x1_t, arg1_uint64x1_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vbicu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vbicu8.c
+@@ -18,4 +18,3 @@ void test_vbicu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vbic\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vbslQf32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vbslQf32.c
+@@ -19,4 +19,3 @@ void test_vbslQf32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "((vbsl)|(vbit)|(vbif))\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vbslQp16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vbslQp16.c
+@@ -19,4 +19,3 @@ void test_vbslQp16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "((vbsl)|(vbit)|(vbif))\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vbslQp64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vbslQp64.c
+@@ -19,4 +19,3 @@ void test_vbslQp64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "((vbsl)|(vbit)|(vbif))\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vbslQp8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vbslQp8.c
+@@ -19,4 +19,3 @@ void test_vbslQp8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "((vbsl)|(vbit)|(vbif))\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vbslQs16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vbslQs16.c
+@@ -19,4 +19,3 @@ void test_vbslQs16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "((vbsl)|(vbit)|(vbif))\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vbslQs32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vbslQs32.c
+@@ -19,4 +19,3 @@ void test_vbslQs32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "((vbsl)|(vbit)|(vbif))\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vbslQs64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vbslQs64.c
+@@ -19,4 +19,3 @@ void test_vbslQs64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "((vbsl)|(vbit)|(vbif))\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vbslQs8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vbslQs8.c
+@@ -19,4 +19,3 @@ void test_vbslQs8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "((vbsl)|(vbit)|(vbif))\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vbslQu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vbslQu16.c
+@@ -19,4 +19,3 @@ void test_vbslQu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "((vbsl)|(vbit)|(vbif))\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vbslQu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vbslQu32.c
+@@ -19,4 +19,3 @@ void test_vbslQu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "((vbsl)|(vbit)|(vbif))\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vbslQu64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vbslQu64.c
+@@ -19,4 +19,3 @@ void test_vbslQu64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "((vbsl)|(vbit)|(vbif))\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vbslQu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vbslQu8.c
+@@ -19,4 +19,3 @@ void test_vbslQu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "((vbsl)|(vbit)|(vbif))\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vbslf32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vbslf32.c
+@@ -19,4 +19,3 @@ void test_vbslf32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "((vbsl)|(vbit)|(vbif))\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vbslp16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vbslp16.c
+@@ -19,4 +19,3 @@ void test_vbslp16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "((vbsl)|(vbit)|(vbif))\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vbslp64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vbslp64.c
+@@ -19,4 +19,3 @@ void test_vbslp64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "((vbsl)|(vbit)|(vbif))\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vbslp8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vbslp8.c
+@@ -19,4 +19,3 @@ void test_vbslp8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "((vbsl)|(vbit)|(vbif))\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vbsls16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vbsls16.c
+@@ -19,4 +19,3 @@ void test_vbsls16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "((vbsl)|(vbit)|(vbif))\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vbsls32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vbsls32.c
+@@ -19,4 +19,3 @@ void test_vbsls32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "((vbsl)|(vbit)|(vbif))\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vbsls64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vbsls64.c
+@@ -19,4 +19,3 @@ void test_vbsls64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "((vbsl)|(vbit)|(vbif))\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vbsls8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vbsls8.c
+@@ -19,4 +19,3 @@ void test_vbsls8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "((vbsl)|(vbit)|(vbif))\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vbslu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vbslu16.c
+@@ -19,4 +19,3 @@ void test_vbslu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "((vbsl)|(vbit)|(vbif))\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vbslu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vbslu32.c
+@@ -19,4 +19,3 @@ void test_vbslu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "((vbsl)|(vbit)|(vbif))\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vbslu64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vbslu64.c
+@@ -19,4 +19,3 @@ void test_vbslu64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "((vbsl)|(vbit)|(vbif))\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vbslu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vbslu8.c
+@@ -19,4 +19,3 @@ void test_vbslu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "((vbsl)|(vbit)|(vbif))\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vcageQf32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vcageQf32.c
+@@ -18,4 +18,3 @@ void test_vcageQf32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vacge\.f32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vcagef32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vcagef32.c
+@@ -18,4 +18,3 @@ void test_vcagef32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vacge\.f32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vcagtQf32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vcagtQf32.c
+@@ -18,4 +18,3 @@ void test_vcagtQf32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vacgt\.f32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vcagtf32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vcagtf32.c
+@@ -18,4 +18,3 @@ void test_vcagtf32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vacgt\.f32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vcaleQf32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vcaleQf32.c
+@@ -18,4 +18,3 @@ void test_vcaleQf32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vacge\.f32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vcalef32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vcalef32.c
+@@ -18,4 +18,3 @@ void test_vcalef32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vacge\.f32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vcaltQf32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vcaltQf32.c
+@@ -18,4 +18,3 @@ void test_vcaltQf32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vacgt\.f32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vcaltf32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vcaltf32.c
+@@ -18,4 +18,3 @@ void test_vcaltf32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vacgt\.f32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vceqQf32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vceqQf32.c
+@@ -18,4 +18,3 @@ void test_vceqQf32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vceq\.f32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vceqQp8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vceqQp8.c
+@@ -18,4 +18,3 @@ void test_vceqQp8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vceq\.i8\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vceqQs16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vceqQs16.c
+@@ -18,4 +18,3 @@ void test_vceqQs16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vceq\.i16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vceqQs32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vceqQs32.c
+@@ -18,4 +18,3 @@ void test_vceqQs32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vceq\.i32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vceqQs8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vceqQs8.c
+@@ -18,4 +18,3 @@ void test_vceqQs8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vceq\.i8\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vceqQu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vceqQu16.c
+@@ -18,4 +18,3 @@ void test_vceqQu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vceq\.i16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vceqQu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vceqQu32.c
+@@ -18,4 +18,3 @@ void test_vceqQu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vceq\.i32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vceqQu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vceqQu8.c
+@@ -18,4 +18,3 @@ void test_vceqQu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vceq\.i8\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vceqf32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vceqf32.c
+@@ -18,4 +18,3 @@ void test_vceqf32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vceq\.f32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vceqp8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vceqp8.c
+@@ -18,4 +18,3 @@ void test_vceqp8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vceq\.i8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vceqs16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vceqs16.c
+@@ -18,4 +18,3 @@ void test_vceqs16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vceq\.i16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vceqs32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vceqs32.c
+@@ -18,4 +18,3 @@ void test_vceqs32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vceq\.i32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vceqs8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vceqs8.c
+@@ -18,4 +18,3 @@ void test_vceqs8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vceq\.i8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vcequ16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vcequ16.c
+@@ -18,4 +18,3 @@ void test_vcequ16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vceq\.i16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vcequ32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vcequ32.c
+@@ -18,4 +18,3 @@ void test_vcequ32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vceq\.i32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vcequ8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vcequ8.c
+@@ -18,4 +18,3 @@ void test_vcequ8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vceq\.i8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vcgeQf32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vcgeQf32.c
+@@ -18,4 +18,3 @@ void test_vcgeQf32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vcge\.f32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vcgeQs16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vcgeQs16.c
+@@ -18,4 +18,3 @@ void test_vcgeQs16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vcge\.s16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vcgeQs32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vcgeQs32.c
+@@ -18,4 +18,3 @@ void test_vcgeQs32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vcge\.s32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vcgeQs8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vcgeQs8.c
+@@ -18,4 +18,3 @@ void test_vcgeQs8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vcge\.s8\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vcgeQu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vcgeQu16.c
+@@ -18,4 +18,3 @@ void test_vcgeQu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vcge\.u16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vcgeQu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vcgeQu32.c
+@@ -18,4 +18,3 @@ void test_vcgeQu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vcge\.u32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vcgeQu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vcgeQu8.c
+@@ -18,4 +18,3 @@ void test_vcgeQu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vcge\.u8\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vcgef32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vcgef32.c
+@@ -18,4 +18,3 @@ void test_vcgef32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vcge\.f32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vcges16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vcges16.c
+@@ -18,4 +18,3 @@ void test_vcges16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vcge\.s16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vcges32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vcges32.c
+@@ -18,4 +18,3 @@ void test_vcges32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vcge\.s32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vcges8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vcges8.c
+@@ -18,4 +18,3 @@ void test_vcges8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vcge\.s8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vcgeu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vcgeu16.c
+@@ -18,4 +18,3 @@ void test_vcgeu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vcge\.u16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vcgeu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vcgeu32.c
+@@ -18,4 +18,3 @@ void test_vcgeu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vcge\.u32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vcgeu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vcgeu8.c
+@@ -18,4 +18,3 @@ void test_vcgeu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vcge\.u8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vcgtQf32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vcgtQf32.c
+@@ -18,4 +18,3 @@ void test_vcgtQf32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vcgt\.f32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vcgtQs16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vcgtQs16.c
+@@ -18,4 +18,3 @@ void test_vcgtQs16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vcgt\.s16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vcgtQs32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vcgtQs32.c
+@@ -18,4 +18,3 @@ void test_vcgtQs32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vcgt\.s32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vcgtQs8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vcgtQs8.c
+@@ -18,4 +18,3 @@ void test_vcgtQs8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vcgt\.s8\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vcgtQu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vcgtQu16.c
+@@ -18,4 +18,3 @@ void test_vcgtQu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vcgt\.u16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vcgtQu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vcgtQu32.c
+@@ -18,4 +18,3 @@ void test_vcgtQu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vcgt\.u32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vcgtQu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vcgtQu8.c
+@@ -18,4 +18,3 @@ void test_vcgtQu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vcgt\.u8\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vcgtf32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vcgtf32.c
+@@ -18,4 +18,3 @@ void test_vcgtf32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vcgt\.f32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vcgts16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vcgts16.c
+@@ -18,4 +18,3 @@ void test_vcgts16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vcgt\.s16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vcgts32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vcgts32.c
+@@ -18,4 +18,3 @@ void test_vcgts32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vcgt\.s32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vcgts8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vcgts8.c
+@@ -18,4 +18,3 @@ void test_vcgts8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vcgt\.s8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vcgtu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vcgtu16.c
+@@ -18,4 +18,3 @@ void test_vcgtu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vcgt\.u16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vcgtu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vcgtu32.c
+@@ -18,4 +18,3 @@ void test_vcgtu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vcgt\.u32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vcgtu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vcgtu8.c
+@@ -18,4 +18,3 @@ void test_vcgtu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vcgt\.u8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vcleQf32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vcleQf32.c
+@@ -18,4 +18,3 @@ void test_vcleQf32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vcge\.f32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vcleQs16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vcleQs16.c
+@@ -18,4 +18,3 @@ void test_vcleQs16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vcge\.s16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vcleQs32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vcleQs32.c
+@@ -18,4 +18,3 @@ void test_vcleQs32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vcge\.s32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vcleQs8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vcleQs8.c
+@@ -18,4 +18,3 @@ void test_vcleQs8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vcge\.s8\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vcleQu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vcleQu16.c
+@@ -18,4 +18,3 @@ void test_vcleQu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vcge\.u16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vcleQu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vcleQu32.c
+@@ -18,4 +18,3 @@ void test_vcleQu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vcge\.u32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vcleQu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vcleQu8.c
+@@ -18,4 +18,3 @@ void test_vcleQu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vcge\.u8\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vclef32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vclef32.c
+@@ -18,4 +18,3 @@ void test_vclef32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vcge\.f32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vcles16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vcles16.c
+@@ -18,4 +18,3 @@ void test_vcles16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vcge\.s16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vcles32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vcles32.c
+@@ -18,4 +18,3 @@ void test_vcles32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vcge\.s32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vcles8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vcles8.c
+@@ -18,4 +18,3 @@ void test_vcles8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vcge\.s8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vcleu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vcleu16.c
+@@ -18,4 +18,3 @@ void test_vcleu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vcge\.u16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vcleu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vcleu32.c
+@@ -18,4 +18,3 @@ void test_vcleu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vcge\.u32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vcleu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vcleu8.c
+@@ -18,4 +18,3 @@ void test_vcleu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vcge\.u8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vclsQs16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vclsQs16.c
+@@ -17,4 +17,3 @@ void test_vclsQs16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vcls\.s16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vclsQs32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vclsQs32.c
+@@ -17,4 +17,3 @@ void test_vclsQs32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vcls\.s32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vclsQs8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vclsQs8.c
+@@ -17,4 +17,3 @@ void test_vclsQs8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vcls\.s8\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vclss16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vclss16.c
+@@ -17,4 +17,3 @@ void test_vclss16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vcls\.s16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vclss32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vclss32.c
+@@ -17,4 +17,3 @@ void test_vclss32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vcls\.s32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vclss8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vclss8.c
+@@ -17,4 +17,3 @@ void test_vclss8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vcls\.s8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vcltQf32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vcltQf32.c
+@@ -18,4 +18,3 @@ void test_vcltQf32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vcgt\.f32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vcltQs16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vcltQs16.c
+@@ -18,4 +18,3 @@ void test_vcltQs16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vcgt\.s16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vcltQs32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vcltQs32.c
+@@ -18,4 +18,3 @@ void test_vcltQs32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vcgt\.s32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vcltQs8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vcltQs8.c
+@@ -18,4 +18,3 @@ void test_vcltQs8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vcgt\.s8\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vcltQu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vcltQu16.c
+@@ -18,4 +18,3 @@ void test_vcltQu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vcgt\.u16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vcltQu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vcltQu32.c
+@@ -18,4 +18,3 @@ void test_vcltQu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vcgt\.u32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vcltQu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vcltQu8.c
+@@ -18,4 +18,3 @@ void test_vcltQu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vcgt\.u8\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vcltf32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vcltf32.c
+@@ -18,4 +18,3 @@ void test_vcltf32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vcgt\.f32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vclts16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vclts16.c
+@@ -18,4 +18,3 @@ void test_vclts16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vcgt\.s16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vclts32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vclts32.c
+@@ -18,4 +18,3 @@ void test_vclts32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vcgt\.s32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vclts8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vclts8.c
+@@ -18,4 +18,3 @@ void test_vclts8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vcgt\.s8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vcltu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vcltu16.c
+@@ -18,4 +18,3 @@ void test_vcltu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vcgt\.u16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vcltu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vcltu32.c
+@@ -18,4 +18,3 @@ void test_vcltu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vcgt\.u32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vcltu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vcltu8.c
+@@ -18,4 +18,3 @@ void test_vcltu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vcgt\.u8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vclzQs16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vclzQs16.c
+@@ -17,4 +17,3 @@ void test_vclzQs16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vclz\.i16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vclzQs32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vclzQs32.c
+@@ -17,4 +17,3 @@ void test_vclzQs32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vclz\.i32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vclzQs8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vclzQs8.c
+@@ -17,4 +17,3 @@ void test_vclzQs8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vclz\.i8\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vclzQu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vclzQu16.c
+@@ -17,4 +17,3 @@ void test_vclzQu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vclz\.i16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vclzQu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vclzQu32.c
+@@ -17,4 +17,3 @@ void test_vclzQu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vclz\.i32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vclzQu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vclzQu8.c
+@@ -17,4 +17,3 @@ void test_vclzQu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vclz\.i8\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vclzs16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vclzs16.c
+@@ -17,4 +17,3 @@ void test_vclzs16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vclz\.i16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vclzs32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vclzs32.c
+@@ -17,4 +17,3 @@ void test_vclzs32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vclz\.i32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vclzs8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vclzs8.c
+@@ -17,4 +17,3 @@ void test_vclzs8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vclz\.i8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vclzu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vclzu16.c
+@@ -17,4 +17,3 @@ void test_vclzu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vclz\.i16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vclzu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vclzu32.c
+@@ -17,4 +17,3 @@ void test_vclzu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vclz\.i32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vclzu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vclzu8.c
+@@ -17,4 +17,3 @@ void test_vclzu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vclz\.i8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vcntQp8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vcntQp8.c
+@@ -17,4 +17,3 @@ void test_vcntQp8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vcnt\.8\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vcntQs8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vcntQs8.c
+@@ -17,4 +17,3 @@ void test_vcntQs8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vcnt\.8\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vcntQu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vcntQu8.c
+@@ -17,4 +17,3 @@ void test_vcntQu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vcnt\.8\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vcntp8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vcntp8.c
+@@ -17,4 +17,3 @@ void test_vcntp8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vcnt\.8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vcnts8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vcnts8.c
+@@ -17,4 +17,3 @@ void test_vcnts8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vcnt\.8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vcntu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vcntu8.c
+@@ -17,4 +17,3 @@ void test_vcntu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vcnt\.8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vcombinef32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vcombinef32.c
+@@ -17,4 +17,3 @@ void test_vcombinef32 (void)
+   out_float32x4_t = vcombine_f32 (arg0_float32x2_t, arg1_float32x2_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vcombinep16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vcombinep16.c
+@@ -17,4 +17,3 @@ void test_vcombinep16 (void)
+   out_poly16x8_t = vcombine_p16 (arg0_poly16x4_t, arg1_poly16x4_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vcombinep64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vcombinep64.c
+@@ -17,4 +17,3 @@ void test_vcombinep64 (void)
+   out_poly64x2_t = vcombine_p64 (arg0_poly64x1_t, arg1_poly64x1_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vcombinep8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vcombinep8.c
+@@ -17,4 +17,3 @@ void test_vcombinep8 (void)
+   out_poly8x16_t = vcombine_p8 (arg0_poly8x8_t, arg1_poly8x8_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vcombines16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vcombines16.c
+@@ -17,4 +17,3 @@ void test_vcombines16 (void)
+   out_int16x8_t = vcombine_s16 (arg0_int16x4_t, arg1_int16x4_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vcombines32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vcombines32.c
+@@ -17,4 +17,3 @@ void test_vcombines32 (void)
+   out_int32x4_t = vcombine_s32 (arg0_int32x2_t, arg1_int32x2_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vcombines64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vcombines64.c
+@@ -17,4 +17,3 @@ void test_vcombines64 (void)
+   out_int64x2_t = vcombine_s64 (arg0_int64x1_t, arg1_int64x1_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vcombines8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vcombines8.c
+@@ -17,4 +17,3 @@ void test_vcombines8 (void)
+   out_int8x16_t = vcombine_s8 (arg0_int8x8_t, arg1_int8x8_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vcombineu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vcombineu16.c
+@@ -17,4 +17,3 @@ void test_vcombineu16 (void)
+   out_uint16x8_t = vcombine_u16 (arg0_uint16x4_t, arg1_uint16x4_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vcombineu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vcombineu32.c
+@@ -17,4 +17,3 @@ void test_vcombineu32 (void)
+   out_uint32x4_t = vcombine_u32 (arg0_uint32x2_t, arg1_uint32x2_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vcombineu64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vcombineu64.c
+@@ -17,4 +17,3 @@ void test_vcombineu64 (void)
+   out_uint64x2_t = vcombine_u64 (arg0_uint64x1_t, arg1_uint64x1_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vcombineu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vcombineu8.c
+@@ -17,4 +17,3 @@ void test_vcombineu8 (void)
+   out_uint8x16_t = vcombine_u8 (arg0_uint8x8_t, arg1_uint8x8_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vcreatef32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vcreatef32.c
+@@ -16,4 +16,3 @@ void test_vcreatef32 (void)
+   out_float32x2_t = vcreate_f32 (arg0_uint64_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vcreatep16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vcreatep16.c
+@@ -16,4 +16,3 @@ void test_vcreatep16 (void)
+   out_poly16x4_t = vcreate_p16 (arg0_uint64_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vcreatep64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vcreatep64.c
+@@ -16,4 +16,3 @@ void test_vcreatep64 (void)
+   out_poly64x1_t = vcreate_p64 (arg0_uint64_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vcreatep8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vcreatep8.c
+@@ -16,4 +16,3 @@ void test_vcreatep8 (void)
+   out_poly8x8_t = vcreate_p8 (arg0_uint64_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vcreates16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vcreates16.c
+@@ -16,4 +16,3 @@ void test_vcreates16 (void)
+   out_int16x4_t = vcreate_s16 (arg0_uint64_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vcreates32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vcreates32.c
+@@ -16,4 +16,3 @@ void test_vcreates32 (void)
+   out_int32x2_t = vcreate_s32 (arg0_uint64_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vcreates64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vcreates64.c
+@@ -16,4 +16,3 @@ void test_vcreates64 (void)
+   out_int64x1_t = vcreate_s64 (arg0_uint64_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vcreates8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vcreates8.c
+@@ -16,4 +16,3 @@ void test_vcreates8 (void)
+   out_int8x8_t = vcreate_s8 (arg0_uint64_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vcreateu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vcreateu16.c
+@@ -16,4 +16,3 @@ void test_vcreateu16 (void)
+   out_uint16x4_t = vcreate_u16 (arg0_uint64_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vcreateu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vcreateu32.c
+@@ -16,4 +16,3 @@ void test_vcreateu32 (void)
+   out_uint32x2_t = vcreate_u32 (arg0_uint64_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vcreateu64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vcreateu64.c
+@@ -16,4 +16,3 @@ void test_vcreateu64 (void)
+   out_uint64x1_t = vcreate_u64 (arg0_uint64_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vcreateu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vcreateu8.c
+@@ -16,4 +16,3 @@ void test_vcreateu8 (void)
+   out_uint8x8_t = vcreate_u8 (arg0_uint64_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vcvtQ_nf32_s32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vcvtQ_nf32_s32.c
+@@ -17,4 +17,3 @@ void test_vcvtQ_nf32_s32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vcvt\.f32.s32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vcvtQ_nf32_u32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vcvtQ_nf32_u32.c
+@@ -17,4 +17,3 @@ void test_vcvtQ_nf32_u32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vcvt\.f32.u32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vcvtQ_ns32_f32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vcvtQ_ns32_f32.c
+@@ -17,4 +17,3 @@ void test_vcvtQ_ns32_f32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vcvt\.s32.f32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vcvtQ_nu32_f32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vcvtQ_nu32_f32.c
+@@ -17,4 +17,3 @@ void test_vcvtQ_nu32_f32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vcvt\.u32.f32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vcvtQf32_s32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vcvtQf32_s32.c
+@@ -17,4 +17,3 @@ void test_vcvtQf32_s32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vcvt\.f32.s32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vcvtQf32_u32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vcvtQf32_u32.c
+@@ -17,4 +17,3 @@ void test_vcvtQf32_u32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vcvt\.f32.u32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vcvtQs32_f32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vcvtQs32_f32.c
+@@ -17,4 +17,3 @@ void test_vcvtQs32_f32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vcvt\.s32.f32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vcvtQu32_f32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vcvtQu32_f32.c
+@@ -17,4 +17,3 @@ void test_vcvtQu32_f32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vcvt\.u32.f32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vcvt_nf32_s32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vcvt_nf32_s32.c
+@@ -17,4 +17,3 @@ void test_vcvt_nf32_s32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vcvt\.f32.s32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vcvt_nf32_u32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vcvt_nf32_u32.c
+@@ -17,4 +17,3 @@ void test_vcvt_nf32_u32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vcvt\.f32.u32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vcvt_ns32_f32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vcvt_ns32_f32.c
+@@ -17,4 +17,3 @@ void test_vcvt_ns32_f32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vcvt\.s32.f32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vcvt_nu32_f32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vcvt_nu32_f32.c
+@@ -17,4 +17,3 @@ void test_vcvt_nu32_f32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vcvt\.u32.f32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[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
+@@ -17,4 +17,3 @@ void test_vcvtf16_f32 (void)
+ }
+ 
+ /* { 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/neon/vcvtf32_f16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vcvtf32_f16.c
+@@ -17,4 +17,3 @@ void test_vcvtf32_f16 (void)
+ }
+ 
+ /* { 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/vcvtf32_s32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vcvtf32_s32.c
+@@ -17,4 +17,3 @@ void test_vcvtf32_s32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vcvt\.f32.s32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vcvtf32_u32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vcvtf32_u32.c
+@@ -17,4 +17,3 @@ void test_vcvtf32_u32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vcvt\.f32.u32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vcvts32_f32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vcvts32_f32.c
+@@ -17,4 +17,3 @@ void test_vcvts32_f32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vcvt\.s32.f32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vcvtu32_f32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vcvtu32_f32.c
+@@ -17,4 +17,3 @@ void test_vcvtu32_f32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vcvt\.u32.f32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vdupQ_lanef32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vdupQ_lanef32.c
+@@ -17,4 +17,3 @@ void test_vdupQ_lanef32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vdup\.32\[ 	\]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vdupQ_lanep16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vdupQ_lanep16.c
+@@ -17,4 +17,3 @@ void test_vdupQ_lanep16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vdup\.16\[ 	\]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vdupQ_lanep64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vdupQ_lanep64.c
+@@ -16,4 +16,3 @@ void test_vdupQ_lanep64 (void)
+   out_poly64x2_t = vdupq_lane_p64 (arg0_poly64x1_t, 0);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vdupQ_lanep8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vdupQ_lanep8.c
+@@ -17,4 +17,3 @@ void test_vdupQ_lanep8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vdup\.8\[ 	\]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vdupQ_lanes16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vdupQ_lanes16.c
+@@ -17,4 +17,3 @@ void test_vdupQ_lanes16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vdup\.16\[ 	\]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vdupQ_lanes32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vdupQ_lanes32.c
+@@ -17,4 +17,3 @@ void test_vdupQ_lanes32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vdup\.32\[ 	\]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vdupQ_lanes64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vdupQ_lanes64.c
+@@ -16,4 +16,3 @@ void test_vdupQ_lanes64 (void)
+   out_int64x2_t = vdupq_lane_s64 (arg0_int64x1_t, 0);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vdupQ_lanes8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vdupQ_lanes8.c
+@@ -17,4 +17,3 @@ void test_vdupQ_lanes8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vdup\.8\[ 	\]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vdupQ_laneu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vdupQ_laneu16.c
+@@ -17,4 +17,3 @@ void test_vdupQ_laneu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vdup\.16\[ 	\]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vdupQ_laneu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vdupQ_laneu32.c
+@@ -17,4 +17,3 @@ void test_vdupQ_laneu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vdup\.32\[ 	\]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vdupQ_laneu64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vdupQ_laneu64.c
+@@ -16,4 +16,3 @@ void test_vdupQ_laneu64 (void)
+   out_uint64x2_t = vdupq_lane_u64 (arg0_uint64x1_t, 0);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vdupQ_laneu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vdupQ_laneu8.c
+@@ -17,4 +17,3 @@ void test_vdupQ_laneu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vdup\.8\[ 	\]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vdupQ_nf32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vdupQ_nf32.c
+@@ -17,4 +17,3 @@ void test_vdupQ_nf32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vdup\.32\[ 	\]+\[qQ\]\[0-9\]+, (\[rR\]\[0-9\]+|\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vdupQ_np16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vdupQ_np16.c
+@@ -17,4 +17,3 @@ void test_vdupQ_np16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vdup\.16\[ 	\]+\[qQ\]\[0-9\]+, (\[rR\]\[0-9\]+|\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vdupQ_np64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vdupQ_np64.c
+@@ -16,4 +16,3 @@ void test_vdupQ_np64 (void)
+   out_poly64x2_t = vdupq_n_p64 (arg0_poly64_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vdupQ_np8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vdupQ_np8.c
+@@ -17,4 +17,3 @@ void test_vdupQ_np8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vdup\.8\[ 	\]+\[qQ\]\[0-9\]+, (\[rR\]\[0-9\]+|\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vdupQ_ns16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vdupQ_ns16.c
+@@ -17,4 +17,3 @@ void test_vdupQ_ns16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vdup\.16\[ 	\]+\[qQ\]\[0-9\]+, (\[rR\]\[0-9\]+|\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vdupQ_ns32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vdupQ_ns32.c
+@@ -17,4 +17,3 @@ void test_vdupQ_ns32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vdup\.32\[ 	\]+\[qQ\]\[0-9\]+, (\[rR\]\[0-9\]+|\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vdupQ_ns64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vdupQ_ns64.c
+@@ -16,4 +16,3 @@ void test_vdupQ_ns64 (void)
+   out_int64x2_t = vdupq_n_s64 (arg0_int64_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vdupQ_ns8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vdupQ_ns8.c
+@@ -17,4 +17,3 @@ void test_vdupQ_ns8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vdup\.8\[ 	\]+\[qQ\]\[0-9\]+, (\[rR\]\[0-9\]+|\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vdupQ_nu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vdupQ_nu16.c
+@@ -17,4 +17,3 @@ void test_vdupQ_nu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vdup\.16\[ 	\]+\[qQ\]\[0-9\]+, (\[rR\]\[0-9\]+|\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vdupQ_nu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vdupQ_nu32.c
+@@ -17,4 +17,3 @@ void test_vdupQ_nu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vdup\.32\[ 	\]+\[qQ\]\[0-9\]+, (\[rR\]\[0-9\]+|\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vdupQ_nu64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vdupQ_nu64.c
+@@ -16,4 +16,3 @@ void test_vdupQ_nu64 (void)
+   out_uint64x2_t = vdupq_n_u64 (arg0_uint64_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vdupQ_nu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vdupQ_nu8.c
+@@ -17,4 +17,3 @@ void test_vdupQ_nu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vdup\.8\[ 	\]+\[qQ\]\[0-9\]+, (\[rR\]\[0-9\]+|\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vdup_lanef32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vdup_lanef32.c
+@@ -17,4 +17,3 @@ void test_vdup_lanef32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vdup\.32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vdup_lanep16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vdup_lanep16.c
+@@ -17,4 +17,3 @@ void test_vdup_lanep16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vdup\.16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vdup_lanep64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vdup_lanep64.c
+@@ -16,4 +16,3 @@ void test_vdup_lanep64 (void)
+   out_poly64x1_t = vdup_lane_p64 (arg0_poly64x1_t, 0);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vdup_lanep8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vdup_lanep8.c
+@@ -17,4 +17,3 @@ void test_vdup_lanep8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vdup\.8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vdup_lanes16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vdup_lanes16.c
+@@ -17,4 +17,3 @@ void test_vdup_lanes16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vdup\.16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vdup_lanes32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vdup_lanes32.c
+@@ -17,4 +17,3 @@ void test_vdup_lanes32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vdup\.32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vdup_lanes64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vdup_lanes64.c
+@@ -16,4 +16,3 @@ void test_vdup_lanes64 (void)
+   out_int64x1_t = vdup_lane_s64 (arg0_int64x1_t, 0);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vdup_lanes8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vdup_lanes8.c
+@@ -17,4 +17,3 @@ void test_vdup_lanes8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vdup\.8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vdup_laneu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vdup_laneu16.c
+@@ -17,4 +17,3 @@ void test_vdup_laneu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vdup\.16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vdup_laneu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vdup_laneu32.c
+@@ -17,4 +17,3 @@ void test_vdup_laneu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vdup\.32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vdup_laneu64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vdup_laneu64.c
+@@ -16,4 +16,3 @@ void test_vdup_laneu64 (void)
+   out_uint64x1_t = vdup_lane_u64 (arg0_uint64x1_t, 0);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vdup_laneu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vdup_laneu8.c
+@@ -17,4 +17,3 @@ void test_vdup_laneu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vdup\.8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vdup_nf32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vdup_nf32.c
+@@ -17,4 +17,3 @@ void test_vdup_nf32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vdup\.32\[ 	\]+\[dD\]\[0-9\]+, (\[rR\]\[0-9\]+|\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vdup_np16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vdup_np16.c
+@@ -17,4 +17,3 @@ void test_vdup_np16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vdup\.16\[ 	\]+\[dD\]\[0-9\]+, (\[rR\]\[0-9\]+|\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vdup_np64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vdup_np64.c
+@@ -16,4 +16,3 @@ void test_vdup_np64 (void)
+   out_poly64x1_t = vdup_n_p64 (arg0_poly64_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vdup_np8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vdup_np8.c
+@@ -17,4 +17,3 @@ void test_vdup_np8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vdup\.8\[ 	\]+\[dD\]\[0-9\]+, (\[rR\]\[0-9\]+|\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vdup_ns16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vdup_ns16.c
+@@ -17,4 +17,3 @@ void test_vdup_ns16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vdup\.16\[ 	\]+\[dD\]\[0-9\]+, (\[rR\]\[0-9\]+|\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vdup_ns32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vdup_ns32.c
+@@ -17,4 +17,3 @@ void test_vdup_ns32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vdup\.32\[ 	\]+\[dD\]\[0-9\]+, (\[rR\]\[0-9\]+|\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vdup_ns64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vdup_ns64.c
+@@ -16,4 +16,3 @@ void test_vdup_ns64 (void)
+   out_int64x1_t = vdup_n_s64 (arg0_int64_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vdup_ns8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vdup_ns8.c
+@@ -17,4 +17,3 @@ void test_vdup_ns8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vdup\.8\[ 	\]+\[dD\]\[0-9\]+, (\[rR\]\[0-9\]+|\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vdup_nu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vdup_nu16.c
+@@ -17,4 +17,3 @@ void test_vdup_nu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vdup\.16\[ 	\]+\[dD\]\[0-9\]+, (\[rR\]\[0-9\]+|\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vdup_nu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vdup_nu32.c
+@@ -17,4 +17,3 @@ void test_vdup_nu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vdup\.32\[ 	\]+\[dD\]\[0-9\]+, (\[rR\]\[0-9\]+|\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vdup_nu64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vdup_nu64.c
+@@ -16,4 +16,3 @@ void test_vdup_nu64 (void)
+   out_uint64x1_t = vdup_n_u64 (arg0_uint64_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vdup_nu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vdup_nu8.c
+@@ -17,4 +17,3 @@ void test_vdup_nu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vdup\.8\[ 	\]+\[dD\]\[0-9\]+, (\[rR\]\[0-9\]+|\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vect-vcvt.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vect-vcvt.c
+@@ -25,4 +25,3 @@ int convert()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vect-vcvtq.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vect-vcvtq.c
+@@ -25,4 +25,3 @@ int convert()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/veorQs16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/veorQs16.c
+@@ -18,4 +18,3 @@ void test_veorQs16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "veor\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/veorQs32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/veorQs32.c
+@@ -18,4 +18,3 @@ void test_veorQs32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "veor\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/veorQs64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/veorQs64.c
+@@ -18,4 +18,3 @@ void test_veorQs64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "veor\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/veorQs8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/veorQs8.c
+@@ -18,4 +18,3 @@ void test_veorQs8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "veor\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/veorQu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/veorQu16.c
+@@ -18,4 +18,3 @@ void test_veorQu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "veor\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/veorQu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/veorQu32.c
+@@ -18,4 +18,3 @@ void test_veorQu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "veor\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/veorQu64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/veorQu64.c
+@@ -18,4 +18,3 @@ void test_veorQu64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "veor\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/veorQu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/veorQu8.c
+@@ -18,4 +18,3 @@ void test_veorQu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "veor\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/veors16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/veors16.c
+@@ -18,4 +18,3 @@ void test_veors16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "veor\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/veors32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/veors32.c
+@@ -18,4 +18,3 @@ void test_veors32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "veor\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/veors64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/veors64.c
+@@ -17,4 +17,3 @@ void test_veors64 (void)
+   out_int64x1_t = veor_s64 (arg0_int64x1_t, arg1_int64x1_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/veors8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/veors8.c
+@@ -18,4 +18,3 @@ void test_veors8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "veor\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/veoru16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/veoru16.c
+@@ -18,4 +18,3 @@ void test_veoru16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "veor\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/veoru32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/veoru32.c
+@@ -18,4 +18,3 @@ void test_veoru32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "veor\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/veoru64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/veoru64.c
+@@ -17,4 +17,3 @@ void test_veoru64 (void)
+   out_uint64x1_t = veor_u64 (arg0_uint64x1_t, arg1_uint64x1_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/veoru8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/veoru8.c
+@@ -18,4 +18,3 @@ void test_veoru8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "veor\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vextQf32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vextQf32.c
+@@ -18,4 +18,3 @@ void test_vextQf32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vext\.32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vextQp16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vextQp16.c
+@@ -18,4 +18,3 @@ void test_vextQp16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vext\.16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vextQp64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vextQp64.c
+@@ -18,4 +18,3 @@ void test_vextQp64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vext\.64\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vextQp8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vextQp8.c
+@@ -18,4 +18,3 @@ void test_vextQp8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vext\.8\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vextQs16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vextQs16.c
+@@ -18,4 +18,3 @@ void test_vextQs16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vext\.16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vextQs32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vextQs32.c
+@@ -18,4 +18,3 @@ void test_vextQs32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vext\.32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vextQs64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vextQs64.c
+@@ -18,4 +18,3 @@ void test_vextQs64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vext\.64\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vextQs8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vextQs8.c
+@@ -18,4 +18,3 @@ void test_vextQs8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vext\.8\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vextQu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vextQu16.c
+@@ -18,4 +18,3 @@ void test_vextQu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vext\.16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vextQu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vextQu32.c
+@@ -18,4 +18,3 @@ void test_vextQu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vext\.32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vextQu64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vextQu64.c
+@@ -18,4 +18,3 @@ void test_vextQu64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vext\.64\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vextQu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vextQu8.c
+@@ -18,4 +18,3 @@ void test_vextQu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vext\.8\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vextf32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vextf32.c
+@@ -18,4 +18,3 @@ void test_vextf32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vext\.32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vextp16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vextp16.c
+@@ -18,4 +18,3 @@ void test_vextp16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vext\.16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vextp64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vextp64.c
+@@ -18,4 +18,3 @@ void test_vextp64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vext\.64\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vextp8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vextp8.c
+@@ -18,4 +18,3 @@ void test_vextp8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vext\.8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vexts16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vexts16.c
+@@ -18,4 +18,3 @@ void test_vexts16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vext\.16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vexts32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vexts32.c
+@@ -18,4 +18,3 @@ void test_vexts32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vext\.32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vexts64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vexts64.c
+@@ -18,4 +18,3 @@ void test_vexts64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vext\.64\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vexts8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vexts8.c
+@@ -18,4 +18,3 @@ void test_vexts8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vext\.8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vextu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vextu16.c
+@@ -18,4 +18,3 @@ void test_vextu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vext\.16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vextu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vextu32.c
+@@ -18,4 +18,3 @@ void test_vextu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vext\.32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vextu64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vextu64.c
+@@ -18,4 +18,3 @@ void test_vextu64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vext\.64\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vextu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vextu8.c
+@@ -18,4 +18,3 @@ void test_vextu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vext\.8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vfmaQf32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vfmaQf32.c
+@@ -19,4 +19,3 @@ void test_vfmaQf32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vfma\.f32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vfmaf32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vfmaf32.c
+@@ -19,4 +19,3 @@ void test_vfmaf32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vfma\.f32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vfmsQf32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vfmsQf32.c
+@@ -19,4 +19,3 @@ void test_vfmsQf32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vfms\.f32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vfmsf32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vfmsf32.c
+@@ -19,4 +19,3 @@ void test_vfmsf32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vfms\.f32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vfp-shift-a2t2.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vfp-shift-a2t2.c
+@@ -25,4 +25,3 @@ uint64x2_t test_vshll_n_u32 (uint32x2_t a)
+ /* { dg-final { scan-assembler "vshll\.u16\[ 	\]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { scan-assembler "vshll\.u32\[ 	\]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { scan-assembler "vshll\.u8\[ 	\]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vgetQ_lanef32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vgetQ_lanef32.c
+@@ -17,4 +17,3 @@ void test_vgetQ_lanef32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmov\.32\[ 	\]+\[rR\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vgetQ_lanep16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vgetQ_lanep16.c
+@@ -17,4 +17,3 @@ void test_vgetQ_lanep16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmov\.u16\[ 	\]+\[rR\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vgetQ_lanep8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vgetQ_lanep8.c
+@@ -17,4 +17,3 @@ void test_vgetQ_lanep8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmov\.u8\[ 	\]+\[rR\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vgetQ_lanes16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vgetQ_lanes16.c
+@@ -17,4 +17,3 @@ void test_vgetQ_lanes16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmov\.s16\[ 	\]+\[rR\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vgetQ_lanes32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vgetQ_lanes32.c
+@@ -17,4 +17,3 @@ void test_vgetQ_lanes32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmov\.32\[ 	\]+\[rR\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vgetQ_lanes64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vgetQ_lanes64.c
+@@ -17,4 +17,3 @@ void test_vgetQ_lanes64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "((vmov)|(fmrrd))\[ 	\]+\[rR\]\[0-9\]+, \[rR\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vgetQ_lanes8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vgetQ_lanes8.c
+@@ -17,4 +17,3 @@ void test_vgetQ_lanes8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmov\.s8\[ 	\]+\[rR\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vgetQ_laneu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vgetQ_laneu16.c
+@@ -17,4 +17,3 @@ void test_vgetQ_laneu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmov\.u16\[ 	\]+\[rR\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vgetQ_laneu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vgetQ_laneu32.c
+@@ -17,4 +17,3 @@ void test_vgetQ_laneu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmov\.32\[ 	\]+\[rR\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vgetQ_laneu64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vgetQ_laneu64.c
+@@ -17,4 +17,3 @@ void test_vgetQ_laneu64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "((vmov)|(fmrrd))\[ 	\]+\[rR\]\[0-9\]+, \[rR\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vgetQ_laneu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vgetQ_laneu8.c
+@@ -17,4 +17,3 @@ void test_vgetQ_laneu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmov\.u8\[ 	\]+\[rR\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vget_highf32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vget_highf32.c
+@@ -16,4 +16,3 @@ void test_vget_highf32 (void)
+   out_float32x2_t = vget_high_f32 (arg0_float32x4_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vget_highp16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vget_highp16.c
+@@ -16,4 +16,3 @@ void test_vget_highp16 (void)
+   out_poly16x4_t = vget_high_p16 (arg0_poly16x8_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vget_highp64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vget_highp64.c
+@@ -16,4 +16,3 @@ void test_vget_highp64 (void)
+   out_poly64x1_t = vget_high_p64 (arg0_poly64x2_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vget_highp8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vget_highp8.c
+@@ -16,4 +16,3 @@ void test_vget_highp8 (void)
+   out_poly8x8_t = vget_high_p8 (arg0_poly8x16_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vget_highs16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vget_highs16.c
+@@ -16,4 +16,3 @@ void test_vget_highs16 (void)
+   out_int16x4_t = vget_high_s16 (arg0_int16x8_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vget_highs32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vget_highs32.c
+@@ -16,4 +16,3 @@ void test_vget_highs32 (void)
+   out_int32x2_t = vget_high_s32 (arg0_int32x4_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vget_highs64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vget_highs64.c
+@@ -16,4 +16,3 @@ void test_vget_highs64 (void)
+   out_int64x1_t = vget_high_s64 (arg0_int64x2_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vget_highs8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vget_highs8.c
+@@ -16,4 +16,3 @@ void test_vget_highs8 (void)
+   out_int8x8_t = vget_high_s8 (arg0_int8x16_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vget_highu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vget_highu16.c
+@@ -16,4 +16,3 @@ void test_vget_highu16 (void)
+   out_uint16x4_t = vget_high_u16 (arg0_uint16x8_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vget_highu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vget_highu32.c
+@@ -16,4 +16,3 @@ void test_vget_highu32 (void)
+   out_uint32x2_t = vget_high_u32 (arg0_uint32x4_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vget_highu64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vget_highu64.c
+@@ -16,4 +16,3 @@ void test_vget_highu64 (void)
+   out_uint64x1_t = vget_high_u64 (arg0_uint64x2_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vget_highu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vget_highu8.c
+@@ -16,4 +16,3 @@ void test_vget_highu8 (void)
+   out_uint8x8_t = vget_high_u8 (arg0_uint8x16_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vget_lanef32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vget_lanef32.c
+@@ -17,4 +17,3 @@ void test_vget_lanef32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmov\.32\[ 	\]+\[rR\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vget_lanep16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vget_lanep16.c
+@@ -17,4 +17,3 @@ void test_vget_lanep16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmov\.u16\[ 	\]+\[rR\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vget_lanep8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vget_lanep8.c
+@@ -17,4 +17,3 @@ void test_vget_lanep8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmov\.u8\[ 	\]+\[rR\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vget_lanes16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vget_lanes16.c
+@@ -17,4 +17,3 @@ void test_vget_lanes16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmov\.s16\[ 	\]+\[rR\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vget_lanes32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vget_lanes32.c
+@@ -17,4 +17,3 @@ void test_vget_lanes32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmov\.32\[ 	\]+\[rR\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vget_lanes64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vget_lanes64.c
+@@ -16,4 +16,3 @@ void test_vget_lanes64 (void)
+   out_int64_t = vget_lane_s64 (arg0_int64x1_t, 0);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vget_lanes8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vget_lanes8.c
+@@ -17,4 +17,3 @@ void test_vget_lanes8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmov\.s8\[ 	\]+\[rR\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vget_laneu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vget_laneu16.c
+@@ -17,4 +17,3 @@ void test_vget_laneu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmov\.u16\[ 	\]+\[rR\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vget_laneu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vget_laneu32.c
+@@ -17,4 +17,3 @@ void test_vget_laneu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmov\.32\[ 	\]+\[rR\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vget_laneu64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vget_laneu64.c
+@@ -16,4 +16,3 @@ void test_vget_laneu64 (void)
+   out_uint64_t = vget_lane_u64 (arg0_uint64x1_t, 0);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vget_laneu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vget_laneu8.c
+@@ -17,4 +17,3 @@ void test_vget_laneu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmov\.u8\[ 	\]+\[rR\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vget_lowf32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vget_lowf32.c
+@@ -17,4 +17,3 @@ void test_vget_lowf32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmov\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vget_lowp16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vget_lowp16.c
+@@ -17,4 +17,3 @@ void test_vget_lowp16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmov\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vget_lowp64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vget_lowp64.c
+@@ -16,4 +16,3 @@ void test_vget_lowp64 (void)
+   out_poly64x1_t = vget_low_p64 (arg0_poly64x2_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vget_lowp8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vget_lowp8.c
+@@ -17,4 +17,3 @@ void test_vget_lowp8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmov\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vget_lows16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vget_lows16.c
+@@ -17,4 +17,3 @@ void test_vget_lows16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmov\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vget_lows32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vget_lows32.c
+@@ -17,4 +17,3 @@ void test_vget_lows32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmov\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vget_lows64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vget_lows64.c
+@@ -16,4 +16,3 @@ void test_vget_lows64 (void)
+   out_int64x1_t = vget_low_s64 (arg0_int64x2_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vget_lows8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vget_lows8.c
+@@ -17,4 +17,3 @@ void test_vget_lows8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmov\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vget_lowu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vget_lowu16.c
+@@ -17,4 +17,3 @@ void test_vget_lowu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmov\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vget_lowu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vget_lowu32.c
+@@ -17,4 +17,3 @@ void test_vget_lowu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmov\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vget_lowu64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vget_lowu64.c
+@@ -16,4 +16,3 @@ void test_vget_lowu64 (void)
+   out_uint64x1_t = vget_low_u64 (arg0_uint64x2_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vget_lowu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vget_lowu8.c
+@@ -17,4 +17,3 @@ void test_vget_lowu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmov\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vhaddQs16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vhaddQs16.c
+@@ -18,4 +18,3 @@ void test_vhaddQs16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vhadd\.s16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vhaddQs32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vhaddQs32.c
+@@ -18,4 +18,3 @@ void test_vhaddQs32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vhadd\.s32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vhaddQs8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vhaddQs8.c
+@@ -18,4 +18,3 @@ void test_vhaddQs8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vhadd\.s8\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vhaddQu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vhaddQu16.c
+@@ -18,4 +18,3 @@ void test_vhaddQu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vhadd\.u16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vhaddQu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vhaddQu32.c
+@@ -18,4 +18,3 @@ void test_vhaddQu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vhadd\.u32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vhaddQu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vhaddQu8.c
+@@ -18,4 +18,3 @@ void test_vhaddQu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vhadd\.u8\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vhadds16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vhadds16.c
+@@ -18,4 +18,3 @@ void test_vhadds16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vhadd\.s16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vhadds32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vhadds32.c
+@@ -18,4 +18,3 @@ void test_vhadds32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vhadd\.s32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vhadds8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vhadds8.c
+@@ -18,4 +18,3 @@ void test_vhadds8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vhadd\.s8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vhaddu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vhaddu16.c
+@@ -18,4 +18,3 @@ void test_vhaddu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vhadd\.u16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vhaddu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vhaddu32.c
+@@ -18,4 +18,3 @@ void test_vhaddu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vhadd\.u32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vhaddu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vhaddu8.c
+@@ -18,4 +18,3 @@ void test_vhaddu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vhadd\.u8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vhsubQs16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vhsubQs16.c
+@@ -18,4 +18,3 @@ void test_vhsubQs16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vhsub\.s16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vhsubQs32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vhsubQs32.c
+@@ -18,4 +18,3 @@ void test_vhsubQs32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vhsub\.s32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vhsubQs8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vhsubQs8.c
+@@ -18,4 +18,3 @@ void test_vhsubQs8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vhsub\.s8\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vhsubQu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vhsubQu16.c
+@@ -18,4 +18,3 @@ void test_vhsubQu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vhsub\.u16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vhsubQu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vhsubQu32.c
+@@ -18,4 +18,3 @@ void test_vhsubQu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vhsub\.u32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vhsubQu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vhsubQu8.c
+@@ -18,4 +18,3 @@ void test_vhsubQu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vhsub\.u8\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vhsubs16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vhsubs16.c
+@@ -18,4 +18,3 @@ void test_vhsubs16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vhsub\.s16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vhsubs32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vhsubs32.c
+@@ -18,4 +18,3 @@ void test_vhsubs32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vhsub\.s32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vhsubs8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vhsubs8.c
+@@ -18,4 +18,3 @@ void test_vhsubs8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vhsub\.s8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vhsubu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vhsubu16.c
+@@ -18,4 +18,3 @@ void test_vhsubu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vhsub\.u16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vhsubu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vhsubu32.c
+@@ -18,4 +18,3 @@ void test_vhsubu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vhsub\.u32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vhsubu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vhsubu8.c
+@@ -18,4 +18,3 @@ void test_vhsubu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vhsub\.u8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupf32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupf32.c
+@@ -16,4 +16,3 @@ void test_vld1Q_dupf32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld1\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupp16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupp16.c
+@@ -16,4 +16,3 @@ void test_vld1Q_dupp16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld1\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupp64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupp64.c
+@@ -16,4 +16,3 @@ void test_vld1Q_dupp64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld1\.64\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupp8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupp8.c
+@@ -16,4 +16,3 @@ void test_vld1Q_dupp8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld1\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1Q_dups16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1Q_dups16.c
+@@ -16,4 +16,3 @@ void test_vld1Q_dups16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld1\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1Q_dups32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1Q_dups32.c
+@@ -16,4 +16,3 @@ void test_vld1Q_dups32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld1\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1Q_dups64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1Q_dups64.c
+@@ -16,4 +16,3 @@ void test_vld1Q_dups64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld1\.64\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1Q_dups8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1Q_dups8.c
+@@ -16,4 +16,3 @@ void test_vld1Q_dups8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld1\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupu16.c
+@@ -16,4 +16,3 @@ void test_vld1Q_dupu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld1\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupu32.c
+@@ -16,4 +16,3 @@ void test_vld1Q_dupu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld1\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupu64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupu64.c
+@@ -16,4 +16,3 @@ void test_vld1Q_dupu64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld1\.64\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1Q_dupu8.c
+@@ -16,4 +16,3 @@ void test_vld1Q_dupu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld1\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanef32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanef32.c
+@@ -17,4 +17,3 @@ void test_vld1Q_lanef32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld1\.32\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanep16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanep16.c
+@@ -17,4 +17,3 @@ void test_vld1Q_lanep16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld1\.16\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanep64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanep64.c
+@@ -17,4 +17,3 @@ void test_vld1Q_lanep64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld1\.64\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanep8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanep8.c
+@@ -17,4 +17,3 @@ void test_vld1Q_lanep8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld1\.8\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanes16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanes16.c
+@@ -17,4 +17,3 @@ void test_vld1Q_lanes16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld1\.16\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanes32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanes32.c
+@@ -17,4 +17,3 @@ void test_vld1Q_lanes32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld1\.32\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanes64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanes64.c
+@@ -17,4 +17,3 @@ void test_vld1Q_lanes64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld1\.64\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanes8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1Q_lanes8.c
+@@ -17,4 +17,3 @@ void test_vld1Q_lanes8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld1\.8\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1Q_laneu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1Q_laneu16.c
+@@ -17,4 +17,3 @@ void test_vld1Q_laneu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld1\.16\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1Q_laneu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1Q_laneu32.c
+@@ -17,4 +17,3 @@ void test_vld1Q_laneu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld1\.32\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1Q_laneu64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1Q_laneu64.c
+@@ -17,4 +17,3 @@ void test_vld1Q_laneu64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld1\.64\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1Q_laneu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1Q_laneu8.c
+@@ -17,4 +17,3 @@ void test_vld1Q_laneu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld1\.8\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1Qf32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1Qf32.c
+@@ -16,4 +16,3 @@ void test_vld1Qf32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld1\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1Qp16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1Qp16.c
+@@ -16,4 +16,3 @@ void test_vld1Qp16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld1\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1Qp64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1Qp64.c
+@@ -16,4 +16,3 @@ void test_vld1Qp64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld1\.64\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1Qp8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1Qp8.c
+@@ -16,4 +16,3 @@ void test_vld1Qp8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld1\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1Qs16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1Qs16.c
+@@ -16,4 +16,3 @@ void test_vld1Qs16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld1\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1Qs32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1Qs32.c
+@@ -16,4 +16,3 @@ void test_vld1Qs32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld1\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1Qs64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1Qs64.c
+@@ -16,4 +16,3 @@ void test_vld1Qs64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld1\.64\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1Qs8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1Qs8.c
+@@ -16,4 +16,3 @@ void test_vld1Qs8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld1\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1Qu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1Qu16.c
+@@ -16,4 +16,3 @@ void test_vld1Qu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld1\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1Qu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1Qu32.c
+@@ -16,4 +16,3 @@ void test_vld1Qu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld1\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1Qu64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1Qu64.c
+@@ -16,4 +16,3 @@ void test_vld1Qu64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld1\.64\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1Qu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1Qu8.c
+@@ -16,4 +16,3 @@ void test_vld1Qu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld1\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1_dupf32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1_dupf32.c
+@@ -16,4 +16,3 @@ void test_vld1_dupf32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld1\.32\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\\\]\\\})|(\[dD\]\[0-9\]+\\\[\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1_dupp16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1_dupp16.c
+@@ -16,4 +16,3 @@ void test_vld1_dupp16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld1\.16\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\\\]\\\})|(\[dD\]\[0-9\]+\\\[\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1_dupp64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1_dupp64.c
+@@ -16,4 +16,3 @@ void test_vld1_dupp64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld1\.64\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1_dupp8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1_dupp8.c
+@@ -16,4 +16,3 @@ void test_vld1_dupp8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld1\.8\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\\\]\\\})|(\[dD\]\[0-9\]+\\\[\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1_dups16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1_dups16.c
+@@ -16,4 +16,3 @@ void test_vld1_dups16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld1\.16\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\\\]\\\})|(\[dD\]\[0-9\]+\\\[\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1_dups32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1_dups32.c
+@@ -16,4 +16,3 @@ void test_vld1_dups32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld1\.32\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\\\]\\\})|(\[dD\]\[0-9\]+\\\[\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1_dups64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1_dups64.c
+@@ -16,4 +16,3 @@ void test_vld1_dups64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld1\.64\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1_dups8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1_dups8.c
+@@ -16,4 +16,3 @@ void test_vld1_dups8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld1\.8\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\\\]\\\})|(\[dD\]\[0-9\]+\\\[\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1_dupu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1_dupu16.c
+@@ -16,4 +16,3 @@ void test_vld1_dupu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld1\.16\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\\\]\\\})|(\[dD\]\[0-9\]+\\\[\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1_dupu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1_dupu32.c
+@@ -16,4 +16,3 @@ void test_vld1_dupu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld1\.32\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\\\]\\\})|(\[dD\]\[0-9\]+\\\[\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1_dupu64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1_dupu64.c
+@@ -16,4 +16,3 @@ void test_vld1_dupu64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld1\.64\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1_dupu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1_dupu8.c
+@@ -16,4 +16,3 @@ void test_vld1_dupu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld1\.8\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\\\]\\\})|(\[dD\]\[0-9\]+\\\[\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1_lanef32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1_lanef32.c
+@@ -17,4 +17,3 @@ void test_vld1_lanef32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld1\.32\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1_lanep16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1_lanep16.c
+@@ -17,4 +17,3 @@ void test_vld1_lanep16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld1\.16\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1_lanep64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1_lanep64.c
+@@ -17,4 +17,3 @@ void test_vld1_lanep64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld1\.64\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1_lanep8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1_lanep8.c
+@@ -17,4 +17,3 @@ void test_vld1_lanep8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld1\.8\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1_lanes16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1_lanes16.c
+@@ -17,4 +17,3 @@ void test_vld1_lanes16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld1\.16\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1_lanes32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1_lanes32.c
+@@ -17,4 +17,3 @@ void test_vld1_lanes32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld1\.32\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1_lanes64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1_lanes64.c
+@@ -17,4 +17,3 @@ void test_vld1_lanes64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld1\.64\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1_lanes8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1_lanes8.c
+@@ -17,4 +17,3 @@ void test_vld1_lanes8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld1\.8\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1_laneu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1_laneu16.c
+@@ -17,4 +17,3 @@ void test_vld1_laneu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld1\.16\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1_laneu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1_laneu32.c
+@@ -17,4 +17,3 @@ void test_vld1_laneu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld1\.32\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1_laneu64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1_laneu64.c
+@@ -17,4 +17,3 @@ void test_vld1_laneu64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld1\.64\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1_laneu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1_laneu8.c
+@@ -17,4 +17,3 @@ void test_vld1_laneu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld1\.8\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1f32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1f32.c
+@@ -16,4 +16,3 @@ void test_vld1f32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld1\.32\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1p16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1p16.c
+@@ -16,4 +16,3 @@ void test_vld1p16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld1\.16\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1p64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1p64.c
+@@ -16,4 +16,3 @@ void test_vld1p64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld1\.64\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1p8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1p8.c
+@@ -16,4 +16,3 @@ void test_vld1p8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld1\.8\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1s16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1s16.c
+@@ -16,4 +16,3 @@ void test_vld1s16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld1\.16\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1s32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1s32.c
+@@ -16,4 +16,3 @@ void test_vld1s32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld1\.32\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1s64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1s64.c
+@@ -16,4 +16,3 @@ void test_vld1s64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld1\.64\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1s8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1s8.c
+@@ -16,4 +16,3 @@ void test_vld1s8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld1\.8\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1u16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1u16.c
+@@ -16,4 +16,3 @@ void test_vld1u16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld1\.16\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1u32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1u32.c
+@@ -16,4 +16,3 @@ void test_vld1u32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld1\.32\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1u64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1u64.c
+@@ -16,4 +16,3 @@ void test_vld1u64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld1\.64\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld1u8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld1u8.c
+@@ -16,4 +16,3 @@ void test_vld1u8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld1\.8\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld2Q_lanef32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld2Q_lanef32.c
+@@ -17,4 +17,3 @@ void test_vld2Q_lanef32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld2\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld2Q_lanep16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld2Q_lanep16.c
+@@ -17,4 +17,3 @@ void test_vld2Q_lanep16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld2\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld2Q_lanes16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld2Q_lanes16.c
+@@ -17,4 +17,3 @@ void test_vld2Q_lanes16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld2\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld2Q_lanes32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld2Q_lanes32.c
+@@ -17,4 +17,3 @@ void test_vld2Q_lanes32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld2\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld2Q_laneu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld2Q_laneu16.c
+@@ -17,4 +17,3 @@ void test_vld2Q_laneu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld2\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld2Q_laneu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld2Q_laneu32.c
+@@ -17,4 +17,3 @@ void test_vld2Q_laneu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld2\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld2Qf32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld2Qf32.c
+@@ -17,4 +17,3 @@ void test_vld2Qf32 (void)
+ 
+ /* { dg-final { scan-assembler "vld2\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { scan-assembler "vld2\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld2Qp16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld2Qp16.c
+@@ -17,4 +17,3 @@ void test_vld2Qp16 (void)
+ 
+ /* { dg-final { scan-assembler "vld2\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { scan-assembler "vld2\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld2Qp8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld2Qp8.c
+@@ -17,4 +17,3 @@ void test_vld2Qp8 (void)
+ 
+ /* { dg-final { scan-assembler "vld2\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { scan-assembler "vld2\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld2Qs16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld2Qs16.c
+@@ -17,4 +17,3 @@ void test_vld2Qs16 (void)
+ 
+ /* { dg-final { scan-assembler "vld2\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { scan-assembler "vld2\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld2Qs32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld2Qs32.c
+@@ -17,4 +17,3 @@ void test_vld2Qs32 (void)
+ 
+ /* { dg-final { scan-assembler "vld2\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { scan-assembler "vld2\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld2Qs8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld2Qs8.c
+@@ -17,4 +17,3 @@ void test_vld2Qs8 (void)
+ 
+ /* { dg-final { scan-assembler "vld2\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { scan-assembler "vld2\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld2Qu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld2Qu16.c
+@@ -17,4 +17,3 @@ void test_vld2Qu16 (void)
+ 
+ /* { dg-final { scan-assembler "vld2\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { scan-assembler "vld2\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld2Qu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld2Qu32.c
+@@ -17,4 +17,3 @@ void test_vld2Qu32 (void)
+ 
+ /* { dg-final { scan-assembler "vld2\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { scan-assembler "vld2\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld2Qu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld2Qu8.c
+@@ -17,4 +17,3 @@ void test_vld2Qu8 (void)
+ 
+ /* { dg-final { scan-assembler "vld2\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { scan-assembler "vld2\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld2_dupf32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld2_dupf32.c
+@@ -16,4 +16,3 @@ void test_vld2_dupf32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld2\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld2_dupp16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld2_dupp16.c
+@@ -16,4 +16,3 @@ void test_vld2_dupp16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld2\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld2_dupp64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld2_dupp64.c
+@@ -16,4 +16,3 @@ void test_vld2_dupp64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld1\.64\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld2_dupp8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld2_dupp8.c
+@@ -16,4 +16,3 @@ void test_vld2_dupp8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld2\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld2_dups16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld2_dups16.c
+@@ -16,4 +16,3 @@ void test_vld2_dups16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld2\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld2_dups32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld2_dups32.c
+@@ -16,4 +16,3 @@ void test_vld2_dups32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld2\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld2_dups64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld2_dups64.c
+@@ -16,4 +16,3 @@ void test_vld2_dups64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld1\.64\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld2_dups8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld2_dups8.c
+@@ -16,4 +16,3 @@ void test_vld2_dups8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld2\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld2_dupu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld2_dupu16.c
+@@ -16,4 +16,3 @@ void test_vld2_dupu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld2\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld2_dupu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld2_dupu32.c
+@@ -16,4 +16,3 @@ void test_vld2_dupu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld2\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld2_dupu64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld2_dupu64.c
+@@ -16,4 +16,3 @@ void test_vld2_dupu64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld1\.64\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld2_dupu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld2_dupu8.c
+@@ -16,4 +16,3 @@ void test_vld2_dupu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld2\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld2_lanef32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld2_lanef32.c
+@@ -17,4 +17,3 @@ void test_vld2_lanef32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld2\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld2_lanep16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld2_lanep16.c
+@@ -17,4 +17,3 @@ void test_vld2_lanep16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld2\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld2_lanep8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld2_lanep8.c
+@@ -17,4 +17,3 @@ void test_vld2_lanep8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld2\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld2_lanes16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld2_lanes16.c
+@@ -17,4 +17,3 @@ void test_vld2_lanes16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld2\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld2_lanes32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld2_lanes32.c
+@@ -17,4 +17,3 @@ void test_vld2_lanes32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld2\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld2_lanes8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld2_lanes8.c
+@@ -17,4 +17,3 @@ void test_vld2_lanes8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld2\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld2_laneu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld2_laneu16.c
+@@ -17,4 +17,3 @@ void test_vld2_laneu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld2\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld2_laneu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld2_laneu32.c
+@@ -17,4 +17,3 @@ void test_vld2_laneu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld2\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld2_laneu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld2_laneu8.c
+@@ -17,4 +17,3 @@ void test_vld2_laneu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld2\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld2f32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld2f32.c
+@@ -16,4 +16,3 @@ void test_vld2f32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld2\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld2p16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld2p16.c
+@@ -16,4 +16,3 @@ void test_vld2p16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld2\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld2p64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld2p64.c
+@@ -16,4 +16,3 @@ void test_vld2p64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld1\.64\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld2p8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld2p8.c
+@@ -16,4 +16,3 @@ void test_vld2p8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld2\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld2s16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld2s16.c
+@@ -16,4 +16,3 @@ void test_vld2s16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld2\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld2s32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld2s32.c
+@@ -16,4 +16,3 @@ void test_vld2s32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld2\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld2s64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld2s64.c
+@@ -16,4 +16,3 @@ void test_vld2s64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld1\.64\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld2s8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld2s8.c
+@@ -16,4 +16,3 @@ void test_vld2s8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld2\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld2u16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld2u16.c
+@@ -16,4 +16,3 @@ void test_vld2u16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld2\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld2u32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld2u32.c
+@@ -16,4 +16,3 @@ void test_vld2u32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld2\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld2u64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld2u64.c
+@@ -16,4 +16,3 @@ void test_vld2u64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld1\.64\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld2u8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld2u8.c
+@@ -16,4 +16,3 @@ void test_vld2u8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld2\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld3Q_lanef32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld3Q_lanef32.c
+@@ -17,4 +17,3 @@ void test_vld3Q_lanef32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld3\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld3Q_lanep16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld3Q_lanep16.c
+@@ -17,4 +17,3 @@ void test_vld3Q_lanep16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld3\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld3Q_lanes16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld3Q_lanes16.c
+@@ -17,4 +17,3 @@ void test_vld3Q_lanes16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld3\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld3Q_lanes32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld3Q_lanes32.c
+@@ -17,4 +17,3 @@ void test_vld3Q_lanes32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld3\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld3Q_laneu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld3Q_laneu16.c
+@@ -17,4 +17,3 @@ void test_vld3Q_laneu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld3\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld3Q_laneu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld3Q_laneu32.c
+@@ -17,4 +17,3 @@ void test_vld3Q_laneu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld3\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld3Qf32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld3Qf32.c
+@@ -17,4 +17,3 @@ void test_vld3Qf32 (void)
+ 
+ /* { dg-final { scan-assembler "vld3\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { scan-assembler "vld3\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld3Qp16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld3Qp16.c
+@@ -17,4 +17,3 @@ void test_vld3Qp16 (void)
+ 
+ /* { dg-final { scan-assembler "vld3\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { scan-assembler "vld3\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld3Qp8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld3Qp8.c
+@@ -17,4 +17,3 @@ void test_vld3Qp8 (void)
+ 
+ /* { dg-final { scan-assembler "vld3\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { scan-assembler "vld3\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld3Qs16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld3Qs16.c
+@@ -17,4 +17,3 @@ void test_vld3Qs16 (void)
+ 
+ /* { dg-final { scan-assembler "vld3\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { scan-assembler "vld3\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld3Qs32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld3Qs32.c
+@@ -17,4 +17,3 @@ void test_vld3Qs32 (void)
+ 
+ /* { dg-final { scan-assembler "vld3\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { scan-assembler "vld3\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld3Qs8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld3Qs8.c
+@@ -17,4 +17,3 @@ void test_vld3Qs8 (void)
+ 
+ /* { dg-final { scan-assembler "vld3\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { scan-assembler "vld3\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld3Qu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld3Qu16.c
+@@ -17,4 +17,3 @@ void test_vld3Qu16 (void)
+ 
+ /* { dg-final { scan-assembler "vld3\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { scan-assembler "vld3\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld3Qu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld3Qu32.c
+@@ -17,4 +17,3 @@ void test_vld3Qu32 (void)
+ 
+ /* { dg-final { scan-assembler "vld3\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { scan-assembler "vld3\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld3Qu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld3Qu8.c
+@@ -17,4 +17,3 @@ void test_vld3Qu8 (void)
+ 
+ /* { dg-final { scan-assembler "vld3\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { scan-assembler "vld3\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld3_dupf32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld3_dupf32.c
+@@ -16,4 +16,3 @@ void test_vld3_dupf32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld3\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld3_dupp16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld3_dupp16.c
+@@ -16,4 +16,3 @@ void test_vld3_dupp16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld3\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld3_dupp64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld3_dupp64.c
+@@ -16,4 +16,3 @@ void test_vld3_dupp64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld1\.64\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld3_dupp8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld3_dupp8.c
+@@ -16,4 +16,3 @@ void test_vld3_dupp8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld3\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld3_dups16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld3_dups16.c
+@@ -16,4 +16,3 @@ void test_vld3_dups16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld3\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld3_dups32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld3_dups32.c
+@@ -16,4 +16,3 @@ void test_vld3_dups32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld3\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld3_dups64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld3_dups64.c
+@@ -16,4 +16,3 @@ void test_vld3_dups64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld1\.64\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld3_dups8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld3_dups8.c
+@@ -16,4 +16,3 @@ void test_vld3_dups8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld3\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld3_dupu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld3_dupu16.c
+@@ -16,4 +16,3 @@ void test_vld3_dupu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld3\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld3_dupu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld3_dupu32.c
+@@ -16,4 +16,3 @@ void test_vld3_dupu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld3\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld3_dupu64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld3_dupu64.c
+@@ -16,4 +16,3 @@ void test_vld3_dupu64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld1\.64\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld3_dupu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld3_dupu8.c
+@@ -16,4 +16,3 @@ void test_vld3_dupu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld3\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld3_lanef32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld3_lanef32.c
+@@ -17,4 +17,3 @@ void test_vld3_lanef32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld3\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld3_lanep16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld3_lanep16.c
+@@ -17,4 +17,3 @@ void test_vld3_lanep16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld3\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld3_lanep8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld3_lanep8.c
+@@ -17,4 +17,3 @@ void test_vld3_lanep8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld3\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld3_lanes16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld3_lanes16.c
+@@ -17,4 +17,3 @@ void test_vld3_lanes16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld3\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld3_lanes32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld3_lanes32.c
+@@ -17,4 +17,3 @@ void test_vld3_lanes32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld3\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld3_lanes8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld3_lanes8.c
+@@ -17,4 +17,3 @@ void test_vld3_lanes8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld3\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld3_laneu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld3_laneu16.c
+@@ -17,4 +17,3 @@ void test_vld3_laneu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld3\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld3_laneu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld3_laneu32.c
+@@ -17,4 +17,3 @@ void test_vld3_laneu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld3\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld3_laneu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld3_laneu8.c
+@@ -17,4 +17,3 @@ void test_vld3_laneu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld3\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld3f32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld3f32.c
+@@ -16,4 +16,3 @@ void test_vld3f32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld3\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld3p16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld3p16.c
+@@ -16,4 +16,3 @@ void test_vld3p16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld3\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld3p64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld3p64.c
+@@ -16,4 +16,3 @@ void test_vld3p64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld1\.64\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld3p8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld3p8.c
+@@ -16,4 +16,3 @@ void test_vld3p8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld3\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld3s16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld3s16.c
+@@ -16,4 +16,3 @@ void test_vld3s16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld3\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld3s32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld3s32.c
+@@ -16,4 +16,3 @@ void test_vld3s32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld3\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld3s64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld3s64.c
+@@ -16,4 +16,3 @@ void test_vld3s64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld1\.64\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld3s8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld3s8.c
+@@ -16,4 +16,3 @@ void test_vld3s8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld3\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld3u16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld3u16.c
+@@ -16,4 +16,3 @@ void test_vld3u16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld3\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld3u32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld3u32.c
+@@ -16,4 +16,3 @@ void test_vld3u32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld3\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld3u64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld3u64.c
+@@ -16,4 +16,3 @@ void test_vld3u64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld1\.64\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld3u8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld3u8.c
+@@ -16,4 +16,3 @@ void test_vld3u8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld3\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld4Q_lanef32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld4Q_lanef32.c
+@@ -17,4 +17,3 @@ void test_vld4Q_lanef32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld4\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld4Q_lanep16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld4Q_lanep16.c
+@@ -17,4 +17,3 @@ void test_vld4Q_lanep16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld4\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld4Q_lanes16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld4Q_lanes16.c
+@@ -17,4 +17,3 @@ void test_vld4Q_lanes16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld4\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld4Q_lanes32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld4Q_lanes32.c
+@@ -17,4 +17,3 @@ void test_vld4Q_lanes32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld4\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld4Q_laneu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld4Q_laneu16.c
+@@ -17,4 +17,3 @@ void test_vld4Q_laneu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld4\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld4Q_laneu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld4Q_laneu32.c
+@@ -17,4 +17,3 @@ void test_vld4Q_laneu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld4\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld4Qf32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld4Qf32.c
+@@ -17,4 +17,3 @@ void test_vld4Qf32 (void)
+ 
+ /* { dg-final { scan-assembler "vld4\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { scan-assembler "vld4\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld4Qp16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld4Qp16.c
+@@ -17,4 +17,3 @@ void test_vld4Qp16 (void)
+ 
+ /* { dg-final { scan-assembler "vld4\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { scan-assembler "vld4\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld4Qp8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld4Qp8.c
+@@ -17,4 +17,3 @@ void test_vld4Qp8 (void)
+ 
+ /* { dg-final { scan-assembler "vld4\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { scan-assembler "vld4\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld4Qs16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld4Qs16.c
+@@ -17,4 +17,3 @@ void test_vld4Qs16 (void)
+ 
+ /* { dg-final { scan-assembler "vld4\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { scan-assembler "vld4\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld4Qs32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld4Qs32.c
+@@ -17,4 +17,3 @@ void test_vld4Qs32 (void)
+ 
+ /* { dg-final { scan-assembler "vld4\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { scan-assembler "vld4\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld4Qs8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld4Qs8.c
+@@ -17,4 +17,3 @@ void test_vld4Qs8 (void)
+ 
+ /* { dg-final { scan-assembler "vld4\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { scan-assembler "vld4\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld4Qu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld4Qu16.c
+@@ -17,4 +17,3 @@ void test_vld4Qu16 (void)
+ 
+ /* { dg-final { scan-assembler "vld4\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { scan-assembler "vld4\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld4Qu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld4Qu32.c
+@@ -17,4 +17,3 @@ void test_vld4Qu32 (void)
+ 
+ /* { dg-final { scan-assembler "vld4\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { scan-assembler "vld4\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld4Qu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld4Qu8.c
+@@ -17,4 +17,3 @@ void test_vld4Qu8 (void)
+ 
+ /* { dg-final { scan-assembler "vld4\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { scan-assembler "vld4\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld4_dupf32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld4_dupf32.c
+@@ -16,4 +16,3 @@ void test_vld4_dupf32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld4\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld4_dupp16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld4_dupp16.c
+@@ -16,4 +16,3 @@ void test_vld4_dupp16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld4\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld4_dupp64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld4_dupp64.c
+@@ -16,4 +16,3 @@ void test_vld4_dupp64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld1\.64\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld4_dupp8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld4_dupp8.c
+@@ -16,4 +16,3 @@ void test_vld4_dupp8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld4\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld4_dups16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld4_dups16.c
+@@ -16,4 +16,3 @@ void test_vld4_dups16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld4\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld4_dups32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld4_dups32.c
+@@ -16,4 +16,3 @@ void test_vld4_dups32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld4\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld4_dups64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld4_dups64.c
+@@ -16,4 +16,3 @@ void test_vld4_dups64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld1\.64\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld4_dups8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld4_dups8.c
+@@ -16,4 +16,3 @@ void test_vld4_dups8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld4\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld4_dupu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld4_dupu16.c
+@@ -16,4 +16,3 @@ void test_vld4_dupu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld4\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld4_dupu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld4_dupu32.c
+@@ -16,4 +16,3 @@ void test_vld4_dupu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld4\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld4_dupu64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld4_dupu64.c
+@@ -16,4 +16,3 @@ void test_vld4_dupu64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld1\.64\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld4_dupu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld4_dupu8.c
+@@ -16,4 +16,3 @@ void test_vld4_dupu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld4\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\\\]-\[dD\]\[0-9\]+\\\[\\\])|(\[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\], \[dD\]\[0-9\]+\\\[\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld4_lanef32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld4_lanef32.c
+@@ -17,4 +17,3 @@ void test_vld4_lanef32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld4\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld4_lanep16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld4_lanep16.c
+@@ -17,4 +17,3 @@ void test_vld4_lanep16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld4\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld4_lanep8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld4_lanep8.c
+@@ -17,4 +17,3 @@ void test_vld4_lanep8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld4\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld4_lanes16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld4_lanes16.c
+@@ -17,4 +17,3 @@ void test_vld4_lanes16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld4\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld4_lanes32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld4_lanes32.c
+@@ -17,4 +17,3 @@ void test_vld4_lanes32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld4\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld4_lanes8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld4_lanes8.c
+@@ -17,4 +17,3 @@ void test_vld4_lanes8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld4\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld4_laneu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld4_laneu16.c
+@@ -17,4 +17,3 @@ void test_vld4_laneu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld4\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld4_laneu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld4_laneu32.c
+@@ -17,4 +17,3 @@ void test_vld4_laneu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld4\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld4_laneu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld4_laneu8.c
+@@ -17,4 +17,3 @@ void test_vld4_laneu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld4\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld4f32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld4f32.c
+@@ -16,4 +16,3 @@ void test_vld4f32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld4\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld4p16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld4p16.c
+@@ -16,4 +16,3 @@ void test_vld4p16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld4\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld4p64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld4p64.c
+@@ -16,4 +16,3 @@ void test_vld4p64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld1\.64\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld4p8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld4p8.c
+@@ -16,4 +16,3 @@ void test_vld4p8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld4\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld4s16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld4s16.c
+@@ -16,4 +16,3 @@ void test_vld4s16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld4\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld4s32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld4s32.c
+@@ -16,4 +16,3 @@ void test_vld4s32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld4\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld4s64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld4s64.c
+@@ -16,4 +16,3 @@ void test_vld4s64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld1\.64\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld4s8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld4s8.c
+@@ -16,4 +16,3 @@ void test_vld4s8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld4\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld4u16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld4u16.c
+@@ -16,4 +16,3 @@ void test_vld4u16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld4\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld4u32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld4u32.c
+@@ -16,4 +16,3 @@ void test_vld4u32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld4\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld4u64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld4u64.c
+@@ -16,4 +16,3 @@ void test_vld4u64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld1\.64\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vld4u8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vld4u8.c
+@@ -16,4 +16,3 @@ void test_vld4u8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vld4\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmaxQf32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmaxQf32.c
+@@ -18,4 +18,3 @@ void test_vmaxQf32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmax\.f32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmaxQs16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmaxQs16.c
+@@ -18,4 +18,3 @@ void test_vmaxQs16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmax\.s16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmaxQs32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmaxQs32.c
+@@ -18,4 +18,3 @@ void test_vmaxQs32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmax\.s32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmaxQs8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmaxQs8.c
+@@ -18,4 +18,3 @@ void test_vmaxQs8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmax\.s8\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmaxQu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmaxQu16.c
+@@ -18,4 +18,3 @@ void test_vmaxQu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmax\.u16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmaxQu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmaxQu32.c
+@@ -18,4 +18,3 @@ void test_vmaxQu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmax\.u32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmaxQu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmaxQu8.c
+@@ -18,4 +18,3 @@ void test_vmaxQu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmax\.u8\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmaxf32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmaxf32.c
+@@ -18,4 +18,3 @@ void test_vmaxf32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmax\.f32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmaxs16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmaxs16.c
+@@ -18,4 +18,3 @@ void test_vmaxs16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmax\.s16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmaxs32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmaxs32.c
+@@ -18,4 +18,3 @@ void test_vmaxs32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmax\.s32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmaxs8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmaxs8.c
+@@ -18,4 +18,3 @@ void test_vmaxs8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmax\.s8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmaxu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmaxu16.c
+@@ -18,4 +18,3 @@ void test_vmaxu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmax\.u16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmaxu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmaxu32.c
+@@ -18,4 +18,3 @@ void test_vmaxu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmax\.u32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmaxu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmaxu8.c
+@@ -18,4 +18,3 @@ void test_vmaxu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmax\.u8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vminQf32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vminQf32.c
+@@ -18,4 +18,3 @@ void test_vminQf32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmin\.f32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vminQs16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vminQs16.c
+@@ -18,4 +18,3 @@ void test_vminQs16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmin\.s16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vminQs32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vminQs32.c
+@@ -18,4 +18,3 @@ void test_vminQs32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmin\.s32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vminQs8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vminQs8.c
+@@ -18,4 +18,3 @@ void test_vminQs8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmin\.s8\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vminQu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vminQu16.c
+@@ -18,4 +18,3 @@ void test_vminQu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmin\.u16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vminQu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vminQu32.c
+@@ -18,4 +18,3 @@ void test_vminQu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmin\.u32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vminQu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vminQu8.c
+@@ -18,4 +18,3 @@ void test_vminQu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmin\.u8\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vminf32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vminf32.c
+@@ -18,4 +18,3 @@ void test_vminf32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmin\.f32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmins16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmins16.c
+@@ -18,4 +18,3 @@ void test_vmins16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmin\.s16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmins32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmins32.c
+@@ -18,4 +18,3 @@ void test_vmins32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmin\.s32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmins8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmins8.c
+@@ -18,4 +18,3 @@ void test_vmins8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmin\.s8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vminu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vminu16.c
+@@ -18,4 +18,3 @@ void test_vminu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmin\.u16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vminu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vminu32.c
+@@ -18,4 +18,3 @@ void test_vminu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmin\.u32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vminu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vminu8.c
+@@ -18,4 +18,3 @@ void test_vminu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmin\.u8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmlaQ_lanef32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmlaQ_lanef32.c
+@@ -19,4 +19,3 @@ void test_vmlaQ_lanef32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmla\.f32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmlaQ_lanes16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmlaQ_lanes16.c
+@@ -19,4 +19,3 @@ void test_vmlaQ_lanes16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmla\.i16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmlaQ_lanes32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmlaQ_lanes32.c
+@@ -19,4 +19,3 @@ void test_vmlaQ_lanes32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmla\.i32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmlaQ_laneu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmlaQ_laneu16.c
+@@ -19,4 +19,3 @@ void test_vmlaQ_laneu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmla\.i16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmlaQ_laneu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmlaQ_laneu32.c
+@@ -19,4 +19,3 @@ void test_vmlaQ_laneu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmla\.i32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmlaQ_nf32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmlaQ_nf32.c
+@@ -19,4 +19,3 @@ void test_vmlaQ_nf32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmla\.f32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmlaQ_ns16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmlaQ_ns16.c
+@@ -19,4 +19,3 @@ void test_vmlaQ_ns16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmla\.i16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmlaQ_ns32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmlaQ_ns32.c
+@@ -19,4 +19,3 @@ void test_vmlaQ_ns32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmla\.i32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmlaQ_nu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmlaQ_nu16.c
+@@ -19,4 +19,3 @@ void test_vmlaQ_nu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmla\.i16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmlaQ_nu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmlaQ_nu32.c
+@@ -19,4 +19,3 @@ void test_vmlaQ_nu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmla\.i32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmlaQf32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmlaQf32.c
+@@ -19,4 +19,3 @@ void test_vmlaQf32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmla\.f32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmlaQs16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmlaQs16.c
+@@ -19,4 +19,3 @@ void test_vmlaQs16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmla\.i16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmlaQs32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmlaQs32.c
+@@ -19,4 +19,3 @@ void test_vmlaQs32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmla\.i32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmlaQs8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmlaQs8.c
+@@ -19,4 +19,3 @@ void test_vmlaQs8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmla\.i8\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmlaQu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmlaQu16.c
+@@ -19,4 +19,3 @@ void test_vmlaQu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmla\.i16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmlaQu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmlaQu32.c
+@@ -19,4 +19,3 @@ void test_vmlaQu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmla\.i32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmlaQu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmlaQu8.c
+@@ -19,4 +19,3 @@ void test_vmlaQu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmla\.i8\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmla_lanef32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmla_lanef32.c
+@@ -19,4 +19,3 @@ void test_vmla_lanef32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmla\.f32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmla_lanes16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmla_lanes16.c
+@@ -19,4 +19,3 @@ void test_vmla_lanes16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmla\.i16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmla_lanes32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmla_lanes32.c
+@@ -19,4 +19,3 @@ void test_vmla_lanes32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmla\.i32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmla_laneu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmla_laneu16.c
+@@ -19,4 +19,3 @@ void test_vmla_laneu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmla\.i16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmla_laneu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmla_laneu32.c
+@@ -19,4 +19,3 @@ void test_vmla_laneu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmla\.i32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmla_nf32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmla_nf32.c
+@@ -19,4 +19,3 @@ void test_vmla_nf32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmla\.f32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmla_ns16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmla_ns16.c
+@@ -19,4 +19,3 @@ void test_vmla_ns16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmla\.i16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmla_ns32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmla_ns32.c
+@@ -19,4 +19,3 @@ void test_vmla_ns32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmla\.i32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmla_nu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmla_nu16.c
+@@ -19,4 +19,3 @@ void test_vmla_nu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmla\.i16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmla_nu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmla_nu32.c
+@@ -19,4 +19,3 @@ void test_vmla_nu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmla\.i32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmlaf32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmlaf32.c
+@@ -19,4 +19,3 @@ void test_vmlaf32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmla\.f32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmlal_lanes16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmlal_lanes16.c
+@@ -19,4 +19,3 @@ void test_vmlal_lanes16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmlal\.s16\[ 	\]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmlal_lanes32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmlal_lanes32.c
+@@ -19,4 +19,3 @@ void test_vmlal_lanes32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmlal\.s32\[ 	\]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmlal_laneu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmlal_laneu16.c
+@@ -19,4 +19,3 @@ void test_vmlal_laneu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmlal\.u16\[ 	\]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmlal_laneu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmlal_laneu32.c
+@@ -19,4 +19,3 @@ void test_vmlal_laneu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmlal\.u32\[ 	\]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmlal_ns16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmlal_ns16.c
+@@ -19,4 +19,3 @@ void test_vmlal_ns16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmlal\.s16\[ 	\]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmlal_ns32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmlal_ns32.c
+@@ -19,4 +19,3 @@ void test_vmlal_ns32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmlal\.s32\[ 	\]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmlal_nu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmlal_nu16.c
+@@ -19,4 +19,3 @@ void test_vmlal_nu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmlal\.u16\[ 	\]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmlal_nu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmlal_nu32.c
+@@ -19,4 +19,3 @@ void test_vmlal_nu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmlal\.u32\[ 	\]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmlals16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmlals16.c
+@@ -19,4 +19,3 @@ void test_vmlals16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmlal\.s16\[ 	\]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmlals32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmlals32.c
+@@ -19,4 +19,3 @@ void test_vmlals32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmlal\.s32\[ 	\]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmlals8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmlals8.c
+@@ -19,4 +19,3 @@ void test_vmlals8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmlal\.s8\[ 	\]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmlalu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmlalu16.c
+@@ -19,4 +19,3 @@ void test_vmlalu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmlal\.u16\[ 	\]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmlalu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmlalu32.c
+@@ -19,4 +19,3 @@ void test_vmlalu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmlal\.u32\[ 	\]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmlalu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmlalu8.c
+@@ -19,4 +19,3 @@ void test_vmlalu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmlal\.u8\[ 	\]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmlas16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmlas16.c
+@@ -19,4 +19,3 @@ void test_vmlas16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmla\.i16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmlas32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmlas32.c
+@@ -19,4 +19,3 @@ void test_vmlas32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmla\.i32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmlas8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmlas8.c
+@@ -19,4 +19,3 @@ void test_vmlas8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmla\.i8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmlau16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmlau16.c
+@@ -19,4 +19,3 @@ void test_vmlau16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmla\.i16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmlau32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmlau32.c
+@@ -19,4 +19,3 @@ void test_vmlau32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmla\.i32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmlau8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmlau8.c
+@@ -19,4 +19,3 @@ void test_vmlau8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmla\.i8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmlsQ_lanef32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmlsQ_lanef32.c
+@@ -19,4 +19,3 @@ void test_vmlsQ_lanef32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmls\.f32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmlsQ_lanes16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmlsQ_lanes16.c
+@@ -19,4 +19,3 @@ void test_vmlsQ_lanes16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmls\.i16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmlsQ_lanes32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmlsQ_lanes32.c
+@@ -19,4 +19,3 @@ void test_vmlsQ_lanes32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmls\.i32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmlsQ_laneu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmlsQ_laneu16.c
+@@ -19,4 +19,3 @@ void test_vmlsQ_laneu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmls\.i16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmlsQ_laneu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmlsQ_laneu32.c
+@@ -19,4 +19,3 @@ void test_vmlsQ_laneu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmls\.i32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmlsQ_nf32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmlsQ_nf32.c
+@@ -19,4 +19,3 @@ void test_vmlsQ_nf32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmls\.f32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmlsQ_ns16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmlsQ_ns16.c
+@@ -19,4 +19,3 @@ void test_vmlsQ_ns16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmls\.i16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmlsQ_ns32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmlsQ_ns32.c
+@@ -19,4 +19,3 @@ void test_vmlsQ_ns32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmls\.i32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmlsQ_nu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmlsQ_nu16.c
+@@ -19,4 +19,3 @@ void test_vmlsQ_nu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmls\.i16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmlsQ_nu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmlsQ_nu32.c
+@@ -19,4 +19,3 @@ void test_vmlsQ_nu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmls\.i32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmlsQf32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmlsQf32.c
+@@ -19,4 +19,3 @@ void test_vmlsQf32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmls\.f32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmlsQs16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmlsQs16.c
+@@ -19,4 +19,3 @@ void test_vmlsQs16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmls\.i16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmlsQs32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmlsQs32.c
+@@ -19,4 +19,3 @@ void test_vmlsQs32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmls\.i32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmlsQs8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmlsQs8.c
+@@ -19,4 +19,3 @@ void test_vmlsQs8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmls\.i8\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmlsQu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmlsQu16.c
+@@ -19,4 +19,3 @@ void test_vmlsQu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmls\.i16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmlsQu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmlsQu32.c
+@@ -19,4 +19,3 @@ void test_vmlsQu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmls\.i32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmlsQu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmlsQu8.c
+@@ -19,4 +19,3 @@ void test_vmlsQu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmls\.i8\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmls_lanef32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmls_lanef32.c
+@@ -19,4 +19,3 @@ void test_vmls_lanef32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmls\.f32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmls_lanes16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmls_lanes16.c
+@@ -19,4 +19,3 @@ void test_vmls_lanes16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmls\.i16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmls_lanes32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmls_lanes32.c
+@@ -19,4 +19,3 @@ void test_vmls_lanes32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmls\.i32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmls_laneu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmls_laneu16.c
+@@ -19,4 +19,3 @@ void test_vmls_laneu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmls\.i16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmls_laneu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmls_laneu32.c
+@@ -19,4 +19,3 @@ void test_vmls_laneu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmls\.i32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmls_nf32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmls_nf32.c
+@@ -19,4 +19,3 @@ void test_vmls_nf32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmls\.f32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmls_ns16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmls_ns16.c
+@@ -19,4 +19,3 @@ void test_vmls_ns16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmls\.i16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmls_ns32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmls_ns32.c
+@@ -19,4 +19,3 @@ void test_vmls_ns32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmls\.i32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmls_nu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmls_nu16.c
+@@ -19,4 +19,3 @@ void test_vmls_nu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmls\.i16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmls_nu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmls_nu32.c
+@@ -19,4 +19,3 @@ void test_vmls_nu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmls\.i32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmlsf32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmlsf32.c
+@@ -19,4 +19,3 @@ void test_vmlsf32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmls\.f32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmlsl_lanes16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmlsl_lanes16.c
+@@ -19,4 +19,3 @@ void test_vmlsl_lanes16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmlsl\.s16\[ 	\]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmlsl_lanes32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmlsl_lanes32.c
+@@ -19,4 +19,3 @@ void test_vmlsl_lanes32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmlsl\.s32\[ 	\]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmlsl_laneu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmlsl_laneu16.c
+@@ -19,4 +19,3 @@ void test_vmlsl_laneu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmlsl\.u16\[ 	\]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmlsl_laneu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmlsl_laneu32.c
+@@ -19,4 +19,3 @@ void test_vmlsl_laneu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmlsl\.u32\[ 	\]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmlsl_ns16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmlsl_ns16.c
+@@ -19,4 +19,3 @@ void test_vmlsl_ns16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmlsl\.s16\[ 	\]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmlsl_ns32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmlsl_ns32.c
+@@ -19,4 +19,3 @@ void test_vmlsl_ns32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmlsl\.s32\[ 	\]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmlsl_nu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmlsl_nu16.c
+@@ -19,4 +19,3 @@ void test_vmlsl_nu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmlsl\.u16\[ 	\]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmlsl_nu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmlsl_nu32.c
+@@ -19,4 +19,3 @@ void test_vmlsl_nu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmlsl\.u32\[ 	\]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmlsls16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmlsls16.c
+@@ -19,4 +19,3 @@ void test_vmlsls16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmlsl\.s16\[ 	\]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmlsls32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmlsls32.c
+@@ -19,4 +19,3 @@ void test_vmlsls32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmlsl\.s32\[ 	\]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmlsls8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmlsls8.c
+@@ -19,4 +19,3 @@ void test_vmlsls8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmlsl\.s8\[ 	\]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmlslu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmlslu16.c
+@@ -19,4 +19,3 @@ void test_vmlslu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmlsl\.u16\[ 	\]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmlslu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmlslu32.c
+@@ -19,4 +19,3 @@ void test_vmlslu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmlsl\.u32\[ 	\]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmlslu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmlslu8.c
+@@ -19,4 +19,3 @@ void test_vmlslu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmlsl\.u8\[ 	\]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmlss16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmlss16.c
+@@ -19,4 +19,3 @@ void test_vmlss16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmls\.i16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmlss32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmlss32.c
+@@ -19,4 +19,3 @@ void test_vmlss32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmls\.i32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmlss8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmlss8.c
+@@ -19,4 +19,3 @@ void test_vmlss8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmls\.i8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmlsu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmlsu16.c
+@@ -19,4 +19,3 @@ void test_vmlsu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmls\.i16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmlsu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmlsu32.c
+@@ -19,4 +19,3 @@ void test_vmlsu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmls\.i32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmlsu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmlsu8.c
+@@ -19,4 +19,3 @@ void test_vmlsu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmls\.i8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmovQ_nf32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmovQ_nf32.c
+@@ -17,4 +17,3 @@ void test_vmovQ_nf32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vdup\.32\[ 	\]+\[qQ\]\[0-9\]+, (\[rR\]\[0-9\]+|\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmovQ_np16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmovQ_np16.c
+@@ -17,4 +17,3 @@ void test_vmovQ_np16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vdup\.16\[ 	\]+\[qQ\]\[0-9\]+, (\[rR\]\[0-9\]+|\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmovQ_np8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmovQ_np8.c
+@@ -17,4 +17,3 @@ void test_vmovQ_np8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vdup\.8\[ 	\]+\[qQ\]\[0-9\]+, (\[rR\]\[0-9\]+|\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmovQ_ns16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmovQ_ns16.c
+@@ -17,4 +17,3 @@ void test_vmovQ_ns16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vdup\.16\[ 	\]+\[qQ\]\[0-9\]+, (\[rR\]\[0-9\]+|\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmovQ_ns32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmovQ_ns32.c
+@@ -17,4 +17,3 @@ void test_vmovQ_ns32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vdup\.32\[ 	\]+\[qQ\]\[0-9\]+, (\[rR\]\[0-9\]+|\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmovQ_ns64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmovQ_ns64.c
+@@ -16,4 +16,3 @@ void test_vmovQ_ns64 (void)
+   out_int64x2_t = vmovq_n_s64 (arg0_int64_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmovQ_ns8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmovQ_ns8.c
+@@ -17,4 +17,3 @@ void test_vmovQ_ns8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vdup\.8\[ 	\]+\[qQ\]\[0-9\]+, (\[rR\]\[0-9\]+|\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmovQ_nu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmovQ_nu16.c
+@@ -17,4 +17,3 @@ void test_vmovQ_nu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vdup\.16\[ 	\]+\[qQ\]\[0-9\]+, (\[rR\]\[0-9\]+|\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmovQ_nu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmovQ_nu32.c
+@@ -17,4 +17,3 @@ void test_vmovQ_nu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vdup\.32\[ 	\]+\[qQ\]\[0-9\]+, (\[rR\]\[0-9\]+|\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmovQ_nu64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmovQ_nu64.c
+@@ -16,4 +16,3 @@ void test_vmovQ_nu64 (void)
+   out_uint64x2_t = vmovq_n_u64 (arg0_uint64_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmovQ_nu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmovQ_nu8.c
+@@ -17,4 +17,3 @@ void test_vmovQ_nu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vdup\.8\[ 	\]+\[qQ\]\[0-9\]+, (\[rR\]\[0-9\]+|\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmov_nf32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmov_nf32.c
+@@ -17,4 +17,3 @@ void test_vmov_nf32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vdup\.32\[ 	\]+\[dD\]\[0-9\]+, (\[rR\]\[0-9\]+|\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmov_np16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmov_np16.c
+@@ -17,4 +17,3 @@ void test_vmov_np16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vdup\.16\[ 	\]+\[dD\]\[0-9\]+, (\[rR\]\[0-9\]+|\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmov_np8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmov_np8.c
+@@ -17,4 +17,3 @@ void test_vmov_np8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vdup\.8\[ 	\]+\[dD\]\[0-9\]+, (\[rR\]\[0-9\]+|\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmov_ns16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmov_ns16.c
+@@ -17,4 +17,3 @@ void test_vmov_ns16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vdup\.16\[ 	\]+\[dD\]\[0-9\]+, (\[rR\]\[0-9\]+|\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmov_ns32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmov_ns32.c
+@@ -17,4 +17,3 @@ void test_vmov_ns32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vdup\.32\[ 	\]+\[dD\]\[0-9\]+, (\[rR\]\[0-9\]+|\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmov_ns64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmov_ns64.c
+@@ -16,4 +16,3 @@ void test_vmov_ns64 (void)
+   out_int64x1_t = vmov_n_s64 (arg0_int64_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmov_ns8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmov_ns8.c
+@@ -17,4 +17,3 @@ void test_vmov_ns8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vdup\.8\[ 	\]+\[dD\]\[0-9\]+, (\[rR\]\[0-9\]+|\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmov_nu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmov_nu16.c
+@@ -17,4 +17,3 @@ void test_vmov_nu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vdup\.16\[ 	\]+\[dD\]\[0-9\]+, (\[rR\]\[0-9\]+|\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmov_nu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmov_nu32.c
+@@ -17,4 +17,3 @@ void test_vmov_nu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vdup\.32\[ 	\]+\[dD\]\[0-9\]+, (\[rR\]\[0-9\]+|\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmov_nu64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmov_nu64.c
+@@ -16,4 +16,3 @@ void test_vmov_nu64 (void)
+   out_uint64x1_t = vmov_n_u64 (arg0_uint64_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmov_nu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmov_nu8.c
+@@ -17,4 +17,3 @@ void test_vmov_nu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vdup\.8\[ 	\]+\[dD\]\[0-9\]+, (\[rR\]\[0-9\]+|\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmovls16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmovls16.c
+@@ -17,4 +17,3 @@ void test_vmovls16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmovl\.s16\[ 	\]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmovls32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmovls32.c
+@@ -17,4 +17,3 @@ void test_vmovls32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmovl\.s32\[ 	\]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmovls8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmovls8.c
+@@ -17,4 +17,3 @@ void test_vmovls8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmovl\.s8\[ 	\]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmovlu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmovlu16.c
+@@ -17,4 +17,3 @@ void test_vmovlu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmovl\.u16\[ 	\]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmovlu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmovlu32.c
+@@ -17,4 +17,3 @@ void test_vmovlu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmovl\.u32\[ 	\]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmovlu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmovlu8.c
+@@ -17,4 +17,3 @@ void test_vmovlu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmovl\.u8\[ 	\]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmovns16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmovns16.c
+@@ -17,4 +17,3 @@ void test_vmovns16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmovn\.i16\[ 	\]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmovns32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmovns32.c
+@@ -17,4 +17,3 @@ void test_vmovns32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmovn\.i32\[ 	\]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmovns64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmovns64.c
+@@ -17,4 +17,3 @@ void test_vmovns64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmovn\.i64\[ 	\]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmovnu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmovnu16.c
+@@ -17,4 +17,3 @@ void test_vmovnu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmovn\.i16\[ 	\]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmovnu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmovnu32.c
+@@ -17,4 +17,3 @@ void test_vmovnu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmovn\.i32\[ 	\]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmovnu64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmovnu64.c
+@@ -17,4 +17,3 @@ void test_vmovnu64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmovn\.i64\[ 	\]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmulQ_lanef32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmulQ_lanef32.c
+@@ -18,4 +18,3 @@ void test_vmulQ_lanef32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmul\.f32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmulQ_lanes16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmulQ_lanes16.c
+@@ -18,4 +18,3 @@ void test_vmulQ_lanes16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmul\.i16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmulQ_lanes32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmulQ_lanes32.c
+@@ -18,4 +18,3 @@ void test_vmulQ_lanes32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmul\.i32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmulQ_laneu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmulQ_laneu16.c
+@@ -18,4 +18,3 @@ void test_vmulQ_laneu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmul\.i16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmulQ_laneu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmulQ_laneu32.c
+@@ -18,4 +18,3 @@ void test_vmulQ_laneu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmul\.i32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmulQ_nf32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmulQ_nf32.c
+@@ -18,4 +18,3 @@ void test_vmulQ_nf32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmul\.f32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmulQ_ns16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmulQ_ns16.c
+@@ -18,4 +18,3 @@ void test_vmulQ_ns16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmul\.i16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmulQ_ns32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmulQ_ns32.c
+@@ -18,4 +18,3 @@ void test_vmulQ_ns32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmul\.i32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmulQ_nu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmulQ_nu16.c
+@@ -18,4 +18,3 @@ void test_vmulQ_nu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmul\.i16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmulQ_nu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmulQ_nu32.c
+@@ -18,4 +18,3 @@ void test_vmulQ_nu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmul\.i32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmulQf32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmulQf32.c
+@@ -18,4 +18,3 @@ void test_vmulQf32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmul\.f32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmulQp8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmulQp8.c
+@@ -18,4 +18,3 @@ void test_vmulQp8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmul\.p8\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmulQs16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmulQs16.c
+@@ -18,4 +18,3 @@ void test_vmulQs16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmul\.i16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmulQs32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmulQs32.c
+@@ -18,4 +18,3 @@ void test_vmulQs32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmul\.i32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmulQs8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmulQs8.c
+@@ -18,4 +18,3 @@ void test_vmulQs8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmul\.i8\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmulQu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmulQu16.c
+@@ -18,4 +18,3 @@ void test_vmulQu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmul\.i16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmulQu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmulQu32.c
+@@ -18,4 +18,3 @@ void test_vmulQu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmul\.i32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmulQu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmulQu8.c
+@@ -18,4 +18,3 @@ void test_vmulQu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmul\.i8\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmul_lanef32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmul_lanef32.c
+@@ -18,4 +18,3 @@ void test_vmul_lanef32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmul\.f32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmul_lanes16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmul_lanes16.c
+@@ -18,4 +18,3 @@ void test_vmul_lanes16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmul\.i16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmul_lanes32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmul_lanes32.c
+@@ -18,4 +18,3 @@ void test_vmul_lanes32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmul\.i32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmul_laneu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmul_laneu16.c
+@@ -18,4 +18,3 @@ void test_vmul_laneu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmul\.i16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmul_laneu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmul_laneu32.c
+@@ -18,4 +18,3 @@ void test_vmul_laneu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmul\.i32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmul_nf32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmul_nf32.c
+@@ -18,4 +18,3 @@ void test_vmul_nf32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmul\.f32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmul_ns16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmul_ns16.c
+@@ -18,4 +18,3 @@ void test_vmul_ns16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmul\.i16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmul_ns32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmul_ns32.c
+@@ -18,4 +18,3 @@ void test_vmul_ns32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmul\.i32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmul_nu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmul_nu16.c
+@@ -18,4 +18,3 @@ void test_vmul_nu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmul\.i16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmul_nu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmul_nu32.c
+@@ -18,4 +18,3 @@ void test_vmul_nu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmul\.i32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmulf32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmulf32.c
+@@ -18,4 +18,3 @@ void test_vmulf32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmul\.f32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmull_lanes16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmull_lanes16.c
+@@ -18,4 +18,3 @@ void test_vmull_lanes16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmull\.s16\[ 	\]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmull_lanes32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmull_lanes32.c
+@@ -18,4 +18,3 @@ void test_vmull_lanes32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmull\.s32\[ 	\]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmull_laneu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmull_laneu16.c
+@@ -18,4 +18,3 @@ void test_vmull_laneu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmull\.u16\[ 	\]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmull_laneu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmull_laneu32.c
+@@ -18,4 +18,3 @@ void test_vmull_laneu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmull\.u32\[ 	\]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmull_ns16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmull_ns16.c
+@@ -18,4 +18,3 @@ void test_vmull_ns16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmull\.s16\[ 	\]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmull_ns32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmull_ns32.c
+@@ -18,4 +18,3 @@ void test_vmull_ns32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmull\.s32\[ 	\]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmull_nu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmull_nu16.c
+@@ -18,4 +18,3 @@ void test_vmull_nu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmull\.u16\[ 	\]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmull_nu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmull_nu32.c
+@@ -18,4 +18,3 @@ void test_vmull_nu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmull\.u32\[ 	\]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmullp8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmullp8.c
+@@ -18,4 +18,3 @@ void test_vmullp8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmull\.p8\[ 	\]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmulls16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmulls16.c
+@@ -18,4 +18,3 @@ void test_vmulls16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmull\.s16\[ 	\]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmulls32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmulls32.c
+@@ -18,4 +18,3 @@ void test_vmulls32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmull\.s32\[ 	\]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmulls8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmulls8.c
+@@ -18,4 +18,3 @@ void test_vmulls8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmull\.s8\[ 	\]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmullu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmullu16.c
+@@ -18,4 +18,3 @@ void test_vmullu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmull\.u16\[ 	\]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmullu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmullu32.c
+@@ -18,4 +18,3 @@ void test_vmullu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmull\.u32\[ 	\]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmullu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmullu8.c
+@@ -18,4 +18,3 @@ void test_vmullu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmull\.u8\[ 	\]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmulp8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmulp8.c
+@@ -18,4 +18,3 @@ void test_vmulp8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmul\.p8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmuls16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmuls16.c
+@@ -18,4 +18,3 @@ void test_vmuls16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmul\.i16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmuls32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmuls32.c
+@@ -18,4 +18,3 @@ void test_vmuls32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmul\.i32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmuls8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmuls8.c
+@@ -18,4 +18,3 @@ void test_vmuls8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmul\.i8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmulu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmulu16.c
+@@ -18,4 +18,3 @@ void test_vmulu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmul\.i16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmulu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmulu32.c
+@@ -18,4 +18,3 @@ void test_vmulu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmul\.i32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmulu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmulu8.c
+@@ -18,4 +18,3 @@ void test_vmulu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmul\.i8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmvnQp8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmvnQp8.c
+@@ -17,4 +17,3 @@ void test_vmvnQp8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmvn\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmvnQs16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmvnQs16.c
+@@ -17,4 +17,3 @@ void test_vmvnQs16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmvn\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmvnQs32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmvnQs32.c
+@@ -17,4 +17,3 @@ void test_vmvnQs32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmvn\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmvnQs8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmvnQs8.c
+@@ -17,4 +17,3 @@ void test_vmvnQs8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmvn\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmvnQu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmvnQu16.c
+@@ -17,4 +17,3 @@ void test_vmvnQu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmvn\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmvnQu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmvnQu32.c
+@@ -17,4 +17,3 @@ void test_vmvnQu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmvn\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmvnQu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmvnQu8.c
+@@ -17,4 +17,3 @@ void test_vmvnQu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmvn\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmvnp8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmvnp8.c
+@@ -17,4 +17,3 @@ void test_vmvnp8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmvn\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmvns16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmvns16.c
+@@ -17,4 +17,3 @@ void test_vmvns16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmvn\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmvns32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmvns32.c
+@@ -17,4 +17,3 @@ void test_vmvns32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmvn\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmvns8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmvns8.c
+@@ -17,4 +17,3 @@ void test_vmvns8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmvn\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmvnu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmvnu16.c
+@@ -17,4 +17,3 @@ void test_vmvnu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmvn\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmvnu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmvnu32.c
+@@ -17,4 +17,3 @@ void test_vmvnu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmvn\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vmvnu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vmvnu8.c
+@@ -17,4 +17,3 @@ void test_vmvnu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmvn\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vnegQf32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vnegQf32.c
+@@ -17,4 +17,3 @@ void test_vnegQf32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vneg\.f32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vnegQs16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vnegQs16.c
+@@ -17,4 +17,3 @@ void test_vnegQs16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vneg\.s16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vnegQs32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vnegQs32.c
+@@ -17,4 +17,3 @@ void test_vnegQs32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vneg\.s32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vnegQs8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vnegQs8.c
+@@ -17,4 +17,3 @@ void test_vnegQs8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vneg\.s8\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vnegf32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vnegf32.c
+@@ -17,4 +17,3 @@ void test_vnegf32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vneg\.f32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vnegs16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vnegs16.c
+@@ -17,4 +17,3 @@ void test_vnegs16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vneg\.s16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vnegs32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vnegs32.c
+@@ -17,4 +17,3 @@ void test_vnegs32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vneg\.s32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vnegs8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vnegs8.c
+@@ -17,4 +17,3 @@ void test_vnegs8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vneg\.s8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vornQs16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vornQs16.c
+@@ -18,4 +18,3 @@ void test_vornQs16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vorn\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vornQs32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vornQs32.c
+@@ -18,4 +18,3 @@ void test_vornQs32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vorn\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vornQs64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vornQs64.c
+@@ -18,4 +18,3 @@ void test_vornQs64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vorn\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vornQs8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vornQs8.c
+@@ -18,4 +18,3 @@ void test_vornQs8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vorn\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vornQu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vornQu16.c
+@@ -18,4 +18,3 @@ void test_vornQu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vorn\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vornQu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vornQu32.c
+@@ -18,4 +18,3 @@ void test_vornQu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vorn\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vornQu64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vornQu64.c
+@@ -18,4 +18,3 @@ void test_vornQu64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vorn\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vornQu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vornQu8.c
+@@ -18,4 +18,3 @@ void test_vornQu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vorn\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vorns16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vorns16.c
+@@ -18,4 +18,3 @@ void test_vorns16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vorn\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vorns32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vorns32.c
+@@ -18,4 +18,3 @@ void test_vorns32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vorn\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vorns64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vorns64.c
+@@ -17,4 +17,3 @@ void test_vorns64 (void)
+   out_int64x1_t = vorn_s64 (arg0_int64x1_t, arg1_int64x1_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vorns8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vorns8.c
+@@ -18,4 +18,3 @@ void test_vorns8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vorn\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vornu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vornu16.c
+@@ -18,4 +18,3 @@ void test_vornu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vorn\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vornu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vornu32.c
+@@ -18,4 +18,3 @@ void test_vornu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vorn\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vornu64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vornu64.c
+@@ -17,4 +17,3 @@ void test_vornu64 (void)
+   out_uint64x1_t = vorn_u64 (arg0_uint64x1_t, arg1_uint64x1_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vornu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vornu8.c
+@@ -18,4 +18,3 @@ void test_vornu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vorn\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vorrQs16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vorrQs16.c
+@@ -18,4 +18,3 @@ void test_vorrQs16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vorr\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vorrQs32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vorrQs32.c
+@@ -18,4 +18,3 @@ void test_vorrQs32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vorr\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vorrQs64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vorrQs64.c
+@@ -18,4 +18,3 @@ void test_vorrQs64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vorr\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vorrQs8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vorrQs8.c
+@@ -18,4 +18,3 @@ void test_vorrQs8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vorr\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vorrQu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vorrQu16.c
+@@ -18,4 +18,3 @@ void test_vorrQu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vorr\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vorrQu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vorrQu32.c
+@@ -18,4 +18,3 @@ void test_vorrQu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vorr\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vorrQu64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vorrQu64.c
+@@ -18,4 +18,3 @@ void test_vorrQu64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vorr\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vorrQu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vorrQu8.c
+@@ -18,4 +18,3 @@ void test_vorrQu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vorr\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vorrs16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vorrs16.c
+@@ -18,4 +18,3 @@ void test_vorrs16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vorr\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vorrs32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vorrs32.c
+@@ -18,4 +18,3 @@ void test_vorrs32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vorr\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vorrs64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vorrs64.c
+@@ -17,4 +17,3 @@ void test_vorrs64 (void)
+   out_int64x1_t = vorr_s64 (arg0_int64x1_t, arg1_int64x1_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vorrs8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vorrs8.c
+@@ -18,4 +18,3 @@ void test_vorrs8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vorr\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vorru16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vorru16.c
+@@ -18,4 +18,3 @@ void test_vorru16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vorr\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vorru32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vorru32.c
+@@ -18,4 +18,3 @@ void test_vorru32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vorr\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vorru64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vorru64.c
+@@ -17,4 +17,3 @@ void test_vorru64 (void)
+   out_uint64x1_t = vorr_u64 (arg0_uint64x1_t, arg1_uint64x1_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vorru8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vorru8.c
+@@ -18,4 +18,3 @@ void test_vorru8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vorr\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vpadalQs16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vpadalQs16.c
+@@ -18,4 +18,3 @@ void test_vpadalQs16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vpadal\.s16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vpadalQs32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vpadalQs32.c
+@@ -18,4 +18,3 @@ void test_vpadalQs32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vpadal\.s32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vpadalQs8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vpadalQs8.c
+@@ -18,4 +18,3 @@ void test_vpadalQs8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vpadal\.s8\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vpadalQu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vpadalQu16.c
+@@ -18,4 +18,3 @@ void test_vpadalQu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vpadal\.u16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vpadalQu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vpadalQu32.c
+@@ -18,4 +18,3 @@ void test_vpadalQu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vpadal\.u32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vpadalQu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vpadalQu8.c
+@@ -18,4 +18,3 @@ void test_vpadalQu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vpadal\.u8\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vpadals16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vpadals16.c
+@@ -18,4 +18,3 @@ void test_vpadals16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vpadal\.s16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vpadals32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vpadals32.c
+@@ -18,4 +18,3 @@ void test_vpadals32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vpadal\.s32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vpadals8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vpadals8.c
+@@ -18,4 +18,3 @@ void test_vpadals8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vpadal\.s8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vpadalu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vpadalu16.c
+@@ -18,4 +18,3 @@ void test_vpadalu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vpadal\.u16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vpadalu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vpadalu32.c
+@@ -18,4 +18,3 @@ void test_vpadalu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vpadal\.u32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vpadalu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vpadalu8.c
+@@ -18,4 +18,3 @@ void test_vpadalu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vpadal\.u8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vpaddf32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vpaddf32.c
+@@ -18,4 +18,3 @@ void test_vpaddf32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vpadd\.f32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vpaddlQs16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vpaddlQs16.c
+@@ -17,4 +17,3 @@ void test_vpaddlQs16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vpaddl\.s16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vpaddlQs32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vpaddlQs32.c
+@@ -17,4 +17,3 @@ void test_vpaddlQs32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vpaddl\.s32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vpaddlQs8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vpaddlQs8.c
+@@ -17,4 +17,3 @@ void test_vpaddlQs8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vpaddl\.s8\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vpaddlQu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vpaddlQu16.c
+@@ -17,4 +17,3 @@ void test_vpaddlQu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vpaddl\.u16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vpaddlQu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vpaddlQu32.c
+@@ -17,4 +17,3 @@ void test_vpaddlQu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vpaddl\.u32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vpaddlQu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vpaddlQu8.c
+@@ -17,4 +17,3 @@ void test_vpaddlQu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vpaddl\.u8\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vpaddls16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vpaddls16.c
+@@ -17,4 +17,3 @@ void test_vpaddls16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vpaddl\.s16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vpaddls32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vpaddls32.c
+@@ -17,4 +17,3 @@ void test_vpaddls32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vpaddl\.s32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vpaddls8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vpaddls8.c
+@@ -17,4 +17,3 @@ void test_vpaddls8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vpaddl\.s8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vpaddlu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vpaddlu16.c
+@@ -17,4 +17,3 @@ void test_vpaddlu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vpaddl\.u16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vpaddlu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vpaddlu32.c
+@@ -17,4 +17,3 @@ void test_vpaddlu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vpaddl\.u32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vpaddlu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vpaddlu8.c
+@@ -17,4 +17,3 @@ void test_vpaddlu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vpaddl\.u8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vpadds16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vpadds16.c
+@@ -18,4 +18,3 @@ void test_vpadds16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vpadd\.i16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vpadds32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vpadds32.c
+@@ -18,4 +18,3 @@ void test_vpadds32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vpadd\.i32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vpadds8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vpadds8.c
+@@ -18,4 +18,3 @@ void test_vpadds8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vpadd\.i8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vpaddu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vpaddu16.c
+@@ -18,4 +18,3 @@ void test_vpaddu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vpadd\.i16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vpaddu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vpaddu32.c
+@@ -18,4 +18,3 @@ void test_vpaddu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vpadd\.i32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vpaddu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vpaddu8.c
+@@ -18,4 +18,3 @@ void test_vpaddu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vpadd\.i8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vpmaxf32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vpmaxf32.c
+@@ -18,4 +18,3 @@ void test_vpmaxf32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vpmax\.f32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vpmaxs16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vpmaxs16.c
+@@ -18,4 +18,3 @@ void test_vpmaxs16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vpmax\.s16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vpmaxs32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vpmaxs32.c
+@@ -18,4 +18,3 @@ void test_vpmaxs32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vpmax\.s32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vpmaxs8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vpmaxs8.c
+@@ -18,4 +18,3 @@ void test_vpmaxs8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vpmax\.s8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vpmaxu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vpmaxu16.c
+@@ -18,4 +18,3 @@ void test_vpmaxu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vpmax\.u16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vpmaxu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vpmaxu32.c
+@@ -18,4 +18,3 @@ void test_vpmaxu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vpmax\.u32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vpmaxu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vpmaxu8.c
+@@ -18,4 +18,3 @@ void test_vpmaxu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vpmax\.u8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vpminf32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vpminf32.c
+@@ -18,4 +18,3 @@ void test_vpminf32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vpmin\.f32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vpmins16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vpmins16.c
+@@ -18,4 +18,3 @@ void test_vpmins16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vpmin\.s16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vpmins32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vpmins32.c
+@@ -18,4 +18,3 @@ void test_vpmins32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vpmin\.s32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vpmins8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vpmins8.c
+@@ -18,4 +18,3 @@ void test_vpmins8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vpmin\.s8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vpminu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vpminu16.c
+@@ -18,4 +18,3 @@ void test_vpminu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vpmin\.u16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vpminu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vpminu32.c
+@@ -18,4 +18,3 @@ void test_vpminu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vpmin\.u32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vpminu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vpminu8.c
+@@ -18,4 +18,3 @@ void test_vpminu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vpmin\.u8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqRdmulhQ_lanes16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqRdmulhQ_lanes16.c
+@@ -18,4 +18,3 @@ void test_vqRdmulhQ_lanes16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqrdmulh\.s16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqRdmulhQ_lanes32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqRdmulhQ_lanes32.c
+@@ -18,4 +18,3 @@ void test_vqRdmulhQ_lanes32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqrdmulh\.s32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqRdmulhQ_ns16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqRdmulhQ_ns16.c
+@@ -18,4 +18,3 @@ void test_vqRdmulhQ_ns16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqrdmulh\.s16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqRdmulhQ_ns32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqRdmulhQ_ns32.c
+@@ -18,4 +18,3 @@ void test_vqRdmulhQ_ns32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqrdmulh\.s32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqRdmulhQs16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqRdmulhQs16.c
+@@ -18,4 +18,3 @@ void test_vqRdmulhQs16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqrdmulh\.s16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqRdmulhQs32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqRdmulhQs32.c
+@@ -18,4 +18,3 @@ void test_vqRdmulhQs32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqrdmulh\.s32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqRdmulh_lanes16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqRdmulh_lanes16.c
+@@ -18,4 +18,3 @@ void test_vqRdmulh_lanes16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqrdmulh\.s16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqRdmulh_lanes32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqRdmulh_lanes32.c
+@@ -18,4 +18,3 @@ void test_vqRdmulh_lanes32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqrdmulh\.s32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqRdmulh_ns16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqRdmulh_ns16.c
+@@ -18,4 +18,3 @@ void test_vqRdmulh_ns16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqrdmulh\.s16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqRdmulh_ns32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqRdmulh_ns32.c
+@@ -18,4 +18,3 @@ void test_vqRdmulh_ns32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqrdmulh\.s32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqRdmulhs16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqRdmulhs16.c
+@@ -18,4 +18,3 @@ void test_vqRdmulhs16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqrdmulh\.s16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqRdmulhs32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqRdmulhs32.c
+@@ -18,4 +18,3 @@ void test_vqRdmulhs32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqrdmulh\.s32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqRshlQs16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqRshlQs16.c
+@@ -18,4 +18,3 @@ void test_vqRshlQs16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqrshl\.s16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqRshlQs32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqRshlQs32.c
+@@ -18,4 +18,3 @@ void test_vqRshlQs32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqrshl\.s32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqRshlQs64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqRshlQs64.c
+@@ -18,4 +18,3 @@ void test_vqRshlQs64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqrshl\.s64\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqRshlQs8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqRshlQs8.c
+@@ -18,4 +18,3 @@ void test_vqRshlQs8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqrshl\.s8\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqRshlQu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqRshlQu16.c
+@@ -18,4 +18,3 @@ void test_vqRshlQu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqrshl\.u16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqRshlQu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqRshlQu32.c
+@@ -18,4 +18,3 @@ void test_vqRshlQu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqrshl\.u32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqRshlQu64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqRshlQu64.c
+@@ -18,4 +18,3 @@ void test_vqRshlQu64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqrshl\.u64\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqRshlQu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqRshlQu8.c
+@@ -18,4 +18,3 @@ void test_vqRshlQu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqrshl\.u8\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqRshls16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqRshls16.c
+@@ -18,4 +18,3 @@ void test_vqRshls16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqrshl\.s16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqRshls32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqRshls32.c
+@@ -18,4 +18,3 @@ void test_vqRshls32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqrshl\.s32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqRshls64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqRshls64.c
+@@ -18,4 +18,3 @@ void test_vqRshls64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqrshl\.s64\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqRshls8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqRshls8.c
+@@ -18,4 +18,3 @@ void test_vqRshls8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqrshl\.s8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqRshlu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqRshlu16.c
+@@ -18,4 +18,3 @@ void test_vqRshlu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqrshl\.u16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqRshlu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqRshlu32.c
+@@ -18,4 +18,3 @@ void test_vqRshlu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqrshl\.u32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqRshlu64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqRshlu64.c
+@@ -18,4 +18,3 @@ void test_vqRshlu64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqrshl\.u64\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqRshlu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqRshlu8.c
+@@ -18,4 +18,3 @@ void test_vqRshlu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqrshl\.u8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqRshrn_ns16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqRshrn_ns16.c
+@@ -17,4 +17,3 @@ void test_vqRshrn_ns16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqrshrn\.s16\[ 	\]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqRshrn_ns32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqRshrn_ns32.c
+@@ -17,4 +17,3 @@ void test_vqRshrn_ns32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqrshrn\.s32\[ 	\]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqRshrn_ns64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqRshrn_ns64.c
+@@ -17,4 +17,3 @@ void test_vqRshrn_ns64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqrshrn\.s64\[ 	\]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqRshrn_nu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqRshrn_nu16.c
+@@ -17,4 +17,3 @@ void test_vqRshrn_nu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqrshrn\.u16\[ 	\]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqRshrn_nu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqRshrn_nu32.c
+@@ -17,4 +17,3 @@ void test_vqRshrn_nu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqrshrn\.u32\[ 	\]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqRshrn_nu64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqRshrn_nu64.c
+@@ -17,4 +17,3 @@ void test_vqRshrn_nu64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqrshrn\.u64\[ 	\]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqRshrun_ns16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqRshrun_ns16.c
+@@ -17,4 +17,3 @@ void test_vqRshrun_ns16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqrshrun\.s16\[ 	\]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqRshrun_ns32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqRshrun_ns32.c
+@@ -17,4 +17,3 @@ void test_vqRshrun_ns32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqrshrun\.s32\[ 	\]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqRshrun_ns64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqRshrun_ns64.c
+@@ -17,4 +17,3 @@ void test_vqRshrun_ns64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqrshrun\.s64\[ 	\]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqabsQs16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqabsQs16.c
+@@ -17,4 +17,3 @@ void test_vqabsQs16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqabs\.s16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqabsQs32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqabsQs32.c
+@@ -17,4 +17,3 @@ void test_vqabsQs32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqabs\.s32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqabsQs8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqabsQs8.c
+@@ -17,4 +17,3 @@ void test_vqabsQs8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqabs\.s8\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqabss16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqabss16.c
+@@ -17,4 +17,3 @@ void test_vqabss16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqabs\.s16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqabss32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqabss32.c
+@@ -17,4 +17,3 @@ void test_vqabss32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqabs\.s32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqabss8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqabss8.c
+@@ -17,4 +17,3 @@ void test_vqabss8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqabs\.s8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqaddQs16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqaddQs16.c
+@@ -18,4 +18,3 @@ void test_vqaddQs16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqadd\.s16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqaddQs32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqaddQs32.c
+@@ -18,4 +18,3 @@ void test_vqaddQs32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqadd\.s32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqaddQs64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqaddQs64.c
+@@ -18,4 +18,3 @@ void test_vqaddQs64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqadd\.s64\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqaddQs8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqaddQs8.c
+@@ -18,4 +18,3 @@ void test_vqaddQs8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqadd\.s8\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqaddQu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqaddQu16.c
+@@ -18,4 +18,3 @@ void test_vqaddQu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqadd\.u16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqaddQu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqaddQu32.c
+@@ -18,4 +18,3 @@ void test_vqaddQu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqadd\.u32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqaddQu64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqaddQu64.c
+@@ -18,4 +18,3 @@ void test_vqaddQu64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqadd\.u64\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqaddQu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqaddQu8.c
+@@ -18,4 +18,3 @@ void test_vqaddQu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqadd\.u8\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqadds16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqadds16.c
+@@ -18,4 +18,3 @@ void test_vqadds16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqadd\.s16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqadds32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqadds32.c
+@@ -18,4 +18,3 @@ void test_vqadds32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqadd\.s32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqadds64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqadds64.c
+@@ -18,4 +18,3 @@ void test_vqadds64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqadd\.s64\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqadds8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqadds8.c
+@@ -18,4 +18,3 @@ void test_vqadds8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqadd\.s8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqaddu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqaddu16.c
+@@ -18,4 +18,3 @@ void test_vqaddu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqadd\.u16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqaddu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqaddu32.c
+@@ -18,4 +18,3 @@ void test_vqaddu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqadd\.u32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqaddu64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqaddu64.c
+@@ -18,4 +18,3 @@ void test_vqaddu64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqadd\.u64\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqaddu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqaddu8.c
+@@ -18,4 +18,3 @@ void test_vqaddu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqadd\.u8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqdmlal_lanes16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqdmlal_lanes16.c
+@@ -19,4 +19,3 @@ void test_vqdmlal_lanes16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqdmlal\.s16\[ 	\]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqdmlal_lanes32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqdmlal_lanes32.c
+@@ -19,4 +19,3 @@ void test_vqdmlal_lanes32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqdmlal\.s32\[ 	\]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqdmlal_ns16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqdmlal_ns16.c
+@@ -19,4 +19,3 @@ void test_vqdmlal_ns16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqdmlal\.s16\[ 	\]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqdmlal_ns32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqdmlal_ns32.c
+@@ -19,4 +19,3 @@ void test_vqdmlal_ns32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqdmlal\.s32\[ 	\]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqdmlals16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqdmlals16.c
+@@ -19,4 +19,3 @@ void test_vqdmlals16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqdmlal\.s16\[ 	\]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqdmlals32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqdmlals32.c
+@@ -19,4 +19,3 @@ void test_vqdmlals32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqdmlal\.s32\[ 	\]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqdmlsl_lanes16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqdmlsl_lanes16.c
+@@ -19,4 +19,3 @@ void test_vqdmlsl_lanes16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqdmlsl\.s16\[ 	\]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqdmlsl_lanes32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqdmlsl_lanes32.c
+@@ -19,4 +19,3 @@ void test_vqdmlsl_lanes32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqdmlsl\.s32\[ 	\]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqdmlsl_ns16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqdmlsl_ns16.c
+@@ -19,4 +19,3 @@ void test_vqdmlsl_ns16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqdmlsl\.s16\[ 	\]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqdmlsl_ns32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqdmlsl_ns32.c
+@@ -19,4 +19,3 @@ void test_vqdmlsl_ns32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqdmlsl\.s32\[ 	\]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqdmlsls16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqdmlsls16.c
+@@ -19,4 +19,3 @@ void test_vqdmlsls16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqdmlsl\.s16\[ 	\]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqdmlsls32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqdmlsls32.c
+@@ -19,4 +19,3 @@ void test_vqdmlsls32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqdmlsl\.s32\[ 	\]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqdmulhQ_lanes16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqdmulhQ_lanes16.c
+@@ -18,4 +18,3 @@ void test_vqdmulhQ_lanes16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqdmulh\.s16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqdmulhQ_lanes32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqdmulhQ_lanes32.c
+@@ -18,4 +18,3 @@ void test_vqdmulhQ_lanes32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqdmulh\.s32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqdmulhQ_ns16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqdmulhQ_ns16.c
+@@ -18,4 +18,3 @@ void test_vqdmulhQ_ns16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqdmulh\.s16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqdmulhQ_ns32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqdmulhQ_ns32.c
+@@ -18,4 +18,3 @@ void test_vqdmulhQ_ns32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqdmulh\.s32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqdmulhQs16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqdmulhQs16.c
+@@ -18,4 +18,3 @@ void test_vqdmulhQs16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqdmulh\.s16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqdmulhQs32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqdmulhQs32.c
+@@ -18,4 +18,3 @@ void test_vqdmulhQs32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqdmulh\.s32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqdmulh_lanes16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqdmulh_lanes16.c
+@@ -18,4 +18,3 @@ void test_vqdmulh_lanes16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqdmulh\.s16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqdmulh_lanes32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqdmulh_lanes32.c
+@@ -18,4 +18,3 @@ void test_vqdmulh_lanes32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqdmulh\.s32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqdmulh_ns16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqdmulh_ns16.c
+@@ -18,4 +18,3 @@ void test_vqdmulh_ns16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqdmulh\.s16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqdmulh_ns32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqdmulh_ns32.c
+@@ -18,4 +18,3 @@ void test_vqdmulh_ns32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqdmulh\.s32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqdmulhs16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqdmulhs16.c
+@@ -18,4 +18,3 @@ void test_vqdmulhs16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqdmulh\.s16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqdmulhs32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqdmulhs32.c
+@@ -18,4 +18,3 @@ void test_vqdmulhs32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqdmulh\.s32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqdmull_lanes16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqdmull_lanes16.c
+@@ -18,4 +18,3 @@ void test_vqdmull_lanes16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqdmull\.s16\[ 	\]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqdmull_lanes32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqdmull_lanes32.c
+@@ -18,4 +18,3 @@ void test_vqdmull_lanes32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqdmull\.s32\[ 	\]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqdmull_ns16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqdmull_ns16.c
+@@ -18,4 +18,3 @@ void test_vqdmull_ns16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqdmull\.s16\[ 	\]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqdmull_ns32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqdmull_ns32.c
+@@ -18,4 +18,3 @@ void test_vqdmull_ns32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqdmull\.s32\[ 	\]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqdmulls16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqdmulls16.c
+@@ -18,4 +18,3 @@ void test_vqdmulls16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqdmull\.s16\[ 	\]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqdmulls32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqdmulls32.c
+@@ -18,4 +18,3 @@ void test_vqdmulls32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqdmull\.s32\[ 	\]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqmovns16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqmovns16.c
+@@ -17,4 +17,3 @@ void test_vqmovns16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqmovn\.s16\[ 	\]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqmovns32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqmovns32.c
+@@ -17,4 +17,3 @@ void test_vqmovns32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqmovn\.s32\[ 	\]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqmovns64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqmovns64.c
+@@ -17,4 +17,3 @@ void test_vqmovns64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqmovn\.s64\[ 	\]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqmovnu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqmovnu16.c
+@@ -17,4 +17,3 @@ void test_vqmovnu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqmovn\.u16\[ 	\]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqmovnu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqmovnu32.c
+@@ -17,4 +17,3 @@ void test_vqmovnu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqmovn\.u32\[ 	\]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqmovnu64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqmovnu64.c
+@@ -17,4 +17,3 @@ void test_vqmovnu64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqmovn\.u64\[ 	\]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqmovuns16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqmovuns16.c
+@@ -17,4 +17,3 @@ void test_vqmovuns16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqmovun\.s16\[ 	\]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqmovuns32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqmovuns32.c
+@@ -17,4 +17,3 @@ void test_vqmovuns32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqmovun\.s32\[ 	\]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqmovuns64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqmovuns64.c
+@@ -17,4 +17,3 @@ void test_vqmovuns64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqmovun\.s64\[ 	\]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqnegQs16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqnegQs16.c
+@@ -17,4 +17,3 @@ void test_vqnegQs16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqneg\.s16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqnegQs32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqnegQs32.c
+@@ -17,4 +17,3 @@ void test_vqnegQs32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqneg\.s32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqnegQs8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqnegQs8.c
+@@ -17,4 +17,3 @@ void test_vqnegQs8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqneg\.s8\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqnegs16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqnegs16.c
+@@ -17,4 +17,3 @@ void test_vqnegs16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqneg\.s16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqnegs32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqnegs32.c
+@@ -17,4 +17,3 @@ void test_vqnegs32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqneg\.s32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqnegs8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqnegs8.c
+@@ -17,4 +17,3 @@ void test_vqnegs8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqneg\.s8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqshlQ_ns16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqshlQ_ns16.c
+@@ -17,4 +17,3 @@ void test_vqshlQ_ns16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqshl\.s16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqshlQ_ns32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqshlQ_ns32.c
+@@ -17,4 +17,3 @@ void test_vqshlQ_ns32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqshl\.s32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqshlQ_ns64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqshlQ_ns64.c
+@@ -17,4 +17,3 @@ void test_vqshlQ_ns64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqshl\.s64\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqshlQ_ns8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqshlQ_ns8.c
+@@ -17,4 +17,3 @@ void test_vqshlQ_ns8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqshl\.s8\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqshlQ_nu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqshlQ_nu16.c
+@@ -17,4 +17,3 @@ void test_vqshlQ_nu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqshl\.u16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqshlQ_nu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqshlQ_nu32.c
+@@ -17,4 +17,3 @@ void test_vqshlQ_nu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqshl\.u32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqshlQ_nu64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqshlQ_nu64.c
+@@ -17,4 +17,3 @@ void test_vqshlQ_nu64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqshl\.u64\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqshlQ_nu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqshlQ_nu8.c
+@@ -17,4 +17,3 @@ void test_vqshlQ_nu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqshl\.u8\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqshlQs16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqshlQs16.c
+@@ -18,4 +18,3 @@ void test_vqshlQs16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqshl\.s16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqshlQs32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqshlQs32.c
+@@ -18,4 +18,3 @@ void test_vqshlQs32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqshl\.s32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqshlQs64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqshlQs64.c
+@@ -18,4 +18,3 @@ void test_vqshlQs64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqshl\.s64\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqshlQs8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqshlQs8.c
+@@ -18,4 +18,3 @@ void test_vqshlQs8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqshl\.s8\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqshlQu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqshlQu16.c
+@@ -18,4 +18,3 @@ void test_vqshlQu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqshl\.u16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqshlQu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqshlQu32.c
+@@ -18,4 +18,3 @@ void test_vqshlQu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqshl\.u32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqshlQu64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqshlQu64.c
+@@ -18,4 +18,3 @@ void test_vqshlQu64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqshl\.u64\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqshlQu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqshlQu8.c
+@@ -18,4 +18,3 @@ void test_vqshlQu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqshl\.u8\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqshl_ns16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqshl_ns16.c
+@@ -17,4 +17,3 @@ void test_vqshl_ns16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqshl\.s16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqshl_ns32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqshl_ns32.c
+@@ -17,4 +17,3 @@ void test_vqshl_ns32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqshl\.s32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqshl_ns64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqshl_ns64.c
+@@ -17,4 +17,3 @@ void test_vqshl_ns64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqshl\.s64\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqshl_ns8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqshl_ns8.c
+@@ -17,4 +17,3 @@ void test_vqshl_ns8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqshl\.s8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqshl_nu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqshl_nu16.c
+@@ -17,4 +17,3 @@ void test_vqshl_nu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqshl\.u16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqshl_nu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqshl_nu32.c
+@@ -17,4 +17,3 @@ void test_vqshl_nu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqshl\.u32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqshl_nu64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqshl_nu64.c
+@@ -17,4 +17,3 @@ void test_vqshl_nu64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqshl\.u64\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqshl_nu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqshl_nu8.c
+@@ -17,4 +17,3 @@ void test_vqshl_nu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqshl\.u8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqshls16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqshls16.c
+@@ -18,4 +18,3 @@ void test_vqshls16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqshl\.s16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqshls32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqshls32.c
+@@ -18,4 +18,3 @@ void test_vqshls32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqshl\.s32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqshls64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqshls64.c
+@@ -18,4 +18,3 @@ void test_vqshls64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqshl\.s64\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqshls8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqshls8.c
+@@ -18,4 +18,3 @@ void test_vqshls8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqshl\.s8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqshlu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqshlu16.c
+@@ -18,4 +18,3 @@ void test_vqshlu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqshl\.u16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqshlu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqshlu32.c
+@@ -18,4 +18,3 @@ void test_vqshlu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqshl\.u32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqshlu64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqshlu64.c
+@@ -18,4 +18,3 @@ void test_vqshlu64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqshl\.u64\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqshlu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqshlu8.c
+@@ -18,4 +18,3 @@ void test_vqshlu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqshl\.u8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqshluQ_ns16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqshluQ_ns16.c
+@@ -17,4 +17,3 @@ void test_vqshluQ_ns16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqshlu\.s16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqshluQ_ns32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqshluQ_ns32.c
+@@ -17,4 +17,3 @@ void test_vqshluQ_ns32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqshlu\.s32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqshluQ_ns64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqshluQ_ns64.c
+@@ -17,4 +17,3 @@ void test_vqshluQ_ns64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqshlu\.s64\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqshluQ_ns8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqshluQ_ns8.c
+@@ -17,4 +17,3 @@ void test_vqshluQ_ns8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqshlu\.s8\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqshlu_ns16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqshlu_ns16.c
+@@ -17,4 +17,3 @@ void test_vqshlu_ns16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqshlu\.s16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqshlu_ns32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqshlu_ns32.c
+@@ -17,4 +17,3 @@ void test_vqshlu_ns32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqshlu\.s32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqshlu_ns64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqshlu_ns64.c
+@@ -17,4 +17,3 @@ void test_vqshlu_ns64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqshlu\.s64\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqshlu_ns8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqshlu_ns8.c
+@@ -17,4 +17,3 @@ void test_vqshlu_ns8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqshlu\.s8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqshrn_ns16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqshrn_ns16.c
+@@ -17,4 +17,3 @@ void test_vqshrn_ns16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqshrn\.s16\[ 	\]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqshrn_ns32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqshrn_ns32.c
+@@ -17,4 +17,3 @@ void test_vqshrn_ns32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqshrn\.s32\[ 	\]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqshrn_ns64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqshrn_ns64.c
+@@ -17,4 +17,3 @@ void test_vqshrn_ns64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqshrn\.s64\[ 	\]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqshrn_nu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqshrn_nu16.c
+@@ -17,4 +17,3 @@ void test_vqshrn_nu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqshrn\.u16\[ 	\]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqshrn_nu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqshrn_nu32.c
+@@ -17,4 +17,3 @@ void test_vqshrn_nu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqshrn\.u32\[ 	\]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqshrn_nu64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqshrn_nu64.c
+@@ -17,4 +17,3 @@ void test_vqshrn_nu64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqshrn\.u64\[ 	\]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqshrun_ns16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqshrun_ns16.c
+@@ -17,4 +17,3 @@ void test_vqshrun_ns16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqshrun\.s16\[ 	\]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqshrun_ns32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqshrun_ns32.c
+@@ -17,4 +17,3 @@ void test_vqshrun_ns32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqshrun\.s32\[ 	\]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqshrun_ns64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqshrun_ns64.c
+@@ -17,4 +17,3 @@ void test_vqshrun_ns64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqshrun\.s64\[ 	\]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqsubQs16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqsubQs16.c
+@@ -18,4 +18,3 @@ void test_vqsubQs16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqsub\.s16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqsubQs32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqsubQs32.c
+@@ -18,4 +18,3 @@ void test_vqsubQs32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqsub\.s32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqsubQs64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqsubQs64.c
+@@ -18,4 +18,3 @@ void test_vqsubQs64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqsub\.s64\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqsubQs8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqsubQs8.c
+@@ -18,4 +18,3 @@ void test_vqsubQs8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqsub\.s8\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqsubQu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqsubQu16.c
+@@ -18,4 +18,3 @@ void test_vqsubQu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqsub\.u16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqsubQu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqsubQu32.c
+@@ -18,4 +18,3 @@ void test_vqsubQu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqsub\.u32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqsubQu64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqsubQu64.c
+@@ -18,4 +18,3 @@ void test_vqsubQu64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqsub\.u64\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqsubQu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqsubQu8.c
+@@ -18,4 +18,3 @@ void test_vqsubQu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqsub\.u8\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqsubs16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqsubs16.c
+@@ -18,4 +18,3 @@ void test_vqsubs16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqsub\.s16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqsubs32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqsubs32.c
+@@ -18,4 +18,3 @@ void test_vqsubs32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqsub\.s32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqsubs64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqsubs64.c
+@@ -18,4 +18,3 @@ void test_vqsubs64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqsub\.s64\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqsubs8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqsubs8.c
+@@ -18,4 +18,3 @@ void test_vqsubs8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqsub\.s8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqsubu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqsubu16.c
+@@ -18,4 +18,3 @@ void test_vqsubu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqsub\.u16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqsubu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqsubu32.c
+@@ -18,4 +18,3 @@ void test_vqsubu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqsub\.u32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqsubu64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqsubu64.c
+@@ -18,4 +18,3 @@ void test_vqsubu64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqsub\.u64\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vqsubu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vqsubu8.c
+@@ -18,4 +18,3 @@ void test_vqsubu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vqsub\.u8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vrecpeQf32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vrecpeQf32.c
+@@ -17,4 +17,3 @@ void test_vrecpeQf32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrecpe\.f32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vrecpeQu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vrecpeQu32.c
+@@ -17,4 +17,3 @@ void test_vrecpeQu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrecpe\.u32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vrecpef32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vrecpef32.c
+@@ -17,4 +17,3 @@ void test_vrecpef32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrecpe\.f32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vrecpeu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vrecpeu32.c
+@@ -17,4 +17,3 @@ void test_vrecpeu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrecpe\.u32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vrecpsQf32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vrecpsQf32.c
+@@ -18,4 +18,3 @@ void test_vrecpsQf32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrecps\.f32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vrecpsf32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vrecpsf32.c
+@@ -18,4 +18,3 @@ void test_vrecpsf32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrecps\.f32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_p128.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_p128.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQf32_p128 (void)
+   out_float32x4_t = vreinterpretq_f32_p128 (arg0_poly128_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_p16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_p16.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQf32_p16 (void)
+   out_float32x4_t = vreinterpretq_f32_p16 (arg0_poly16x8_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_p64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_p64.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQf32_p64 (void)
+   out_float32x4_t = vreinterpretq_f32_p64 (arg0_poly64x2_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_p8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_p8.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQf32_p8 (void)
+   out_float32x4_t = vreinterpretq_f32_p8 (arg0_poly8x16_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_s16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_s16.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQf32_s16 (void)
+   out_float32x4_t = vreinterpretq_f32_s16 (arg0_int16x8_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_s32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_s32.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQf32_s32 (void)
+   out_float32x4_t = vreinterpretq_f32_s32 (arg0_int32x4_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_s64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_s64.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQf32_s64 (void)
+   out_float32x4_t = vreinterpretq_f32_s64 (arg0_int64x2_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_s8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_s8.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQf32_s8 (void)
+   out_float32x4_t = vreinterpretq_f32_s8 (arg0_int8x16_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_u16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_u16.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQf32_u16 (void)
+   out_float32x4_t = vreinterpretq_f32_u16 (arg0_uint16x8_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_u32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_u32.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQf32_u32 (void)
+   out_float32x4_t = vreinterpretq_f32_u32 (arg0_uint32x4_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_u64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_u64.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQf32_u64 (void)
+   out_float32x4_t = vreinterpretq_f32_u64 (arg0_uint64x2_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_u8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQf32_u8.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQf32_u8 (void)
+   out_float32x4_t = vreinterpretq_f32_u8 (arg0_uint8x16_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp128_f32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp128_f32.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQp128_f32 (void)
+   out_poly128_t = vreinterpretq_p128_f32 (arg0_float32x4_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp128_p16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp128_p16.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQp128_p16 (void)
+   out_poly128_t = vreinterpretq_p128_p16 (arg0_poly16x8_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp128_p64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp128_p64.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQp128_p64 (void)
+   out_poly128_t = vreinterpretq_p128_p64 (arg0_poly64x2_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp128_p8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp128_p8.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQp128_p8 (void)
+   out_poly128_t = vreinterpretq_p128_p8 (arg0_poly8x16_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp128_s16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp128_s16.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQp128_s16 (void)
+   out_poly128_t = vreinterpretq_p128_s16 (arg0_int16x8_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp128_s32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp128_s32.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQp128_s32 (void)
+   out_poly128_t = vreinterpretq_p128_s32 (arg0_int32x4_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp128_s64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp128_s64.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQp128_s64 (void)
+   out_poly128_t = vreinterpretq_p128_s64 (arg0_int64x2_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp128_s8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp128_s8.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQp128_s8 (void)
+   out_poly128_t = vreinterpretq_p128_s8 (arg0_int8x16_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp128_u16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp128_u16.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQp128_u16 (void)
+   out_poly128_t = vreinterpretq_p128_u16 (arg0_uint16x8_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp128_u32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp128_u32.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQp128_u32 (void)
+   out_poly128_t = vreinterpretq_p128_u32 (arg0_uint32x4_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp128_u64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp128_u64.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQp128_u64 (void)
+   out_poly128_t = vreinterpretq_p128_u64 (arg0_uint64x2_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp128_u8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp128_u8.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQp128_u8 (void)
+   out_poly128_t = vreinterpretq_p128_u8 (arg0_uint8x16_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_f32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_f32.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQp16_f32 (void)
+   out_poly16x8_t = vreinterpretq_p16_f32 (arg0_float32x4_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_p128.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_p128.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQp16_p128 (void)
+   out_poly16x8_t = vreinterpretq_p16_p128 (arg0_poly128_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_p64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_p64.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQp16_p64 (void)
+   out_poly16x8_t = vreinterpretq_p16_p64 (arg0_poly64x2_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_p8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_p8.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQp16_p8 (void)
+   out_poly16x8_t = vreinterpretq_p16_p8 (arg0_poly8x16_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_s16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_s16.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQp16_s16 (void)
+   out_poly16x8_t = vreinterpretq_p16_s16 (arg0_int16x8_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_s32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_s32.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQp16_s32 (void)
+   out_poly16x8_t = vreinterpretq_p16_s32 (arg0_int32x4_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_s64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_s64.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQp16_s64 (void)
+   out_poly16x8_t = vreinterpretq_p16_s64 (arg0_int64x2_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_s8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_s8.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQp16_s8 (void)
+   out_poly16x8_t = vreinterpretq_p16_s8 (arg0_int8x16_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_u16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_u16.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQp16_u16 (void)
+   out_poly16x8_t = vreinterpretq_p16_u16 (arg0_uint16x8_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_u32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_u32.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQp16_u32 (void)
+   out_poly16x8_t = vreinterpretq_p16_u32 (arg0_uint32x4_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_u64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_u64.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQp16_u64 (void)
+   out_poly16x8_t = vreinterpretq_p16_u64 (arg0_uint64x2_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_u8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp16_u8.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQp16_u8 (void)
+   out_poly16x8_t = vreinterpretq_p16_u8 (arg0_uint8x16_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp64_f32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp64_f32.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQp64_f32 (void)
+   out_poly64x2_t = vreinterpretq_p64_f32 (arg0_float32x4_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp64_p128.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp64_p128.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQp64_p128 (void)
+   out_poly64x2_t = vreinterpretq_p64_p128 (arg0_poly128_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp64_p16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp64_p16.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQp64_p16 (void)
+   out_poly64x2_t = vreinterpretq_p64_p16 (arg0_poly16x8_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp64_p8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp64_p8.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQp64_p8 (void)
+   out_poly64x2_t = vreinterpretq_p64_p8 (arg0_poly8x16_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp64_s16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp64_s16.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQp64_s16 (void)
+   out_poly64x2_t = vreinterpretq_p64_s16 (arg0_int16x8_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp64_s32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp64_s32.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQp64_s32 (void)
+   out_poly64x2_t = vreinterpretq_p64_s32 (arg0_int32x4_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp64_s64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp64_s64.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQp64_s64 (void)
+   out_poly64x2_t = vreinterpretq_p64_s64 (arg0_int64x2_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp64_s8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp64_s8.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQp64_s8 (void)
+   out_poly64x2_t = vreinterpretq_p64_s8 (arg0_int8x16_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp64_u16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp64_u16.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQp64_u16 (void)
+   out_poly64x2_t = vreinterpretq_p64_u16 (arg0_uint16x8_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp64_u32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp64_u32.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQp64_u32 (void)
+   out_poly64x2_t = vreinterpretq_p64_u32 (arg0_uint32x4_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp64_u64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp64_u64.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQp64_u64 (void)
+   out_poly64x2_t = vreinterpretq_p64_u64 (arg0_uint64x2_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp64_u8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp64_u8.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQp64_u8 (void)
+   out_poly64x2_t = vreinterpretq_p64_u8 (arg0_uint8x16_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_f32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_f32.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQp8_f32 (void)
+   out_poly8x16_t = vreinterpretq_p8_f32 (arg0_float32x4_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_p128.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_p128.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQp8_p128 (void)
+   out_poly8x16_t = vreinterpretq_p8_p128 (arg0_poly128_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_p16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_p16.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQp8_p16 (void)
+   out_poly8x16_t = vreinterpretq_p8_p16 (arg0_poly16x8_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_p64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_p64.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQp8_p64 (void)
+   out_poly8x16_t = vreinterpretq_p8_p64 (arg0_poly64x2_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_s16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_s16.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQp8_s16 (void)
+   out_poly8x16_t = vreinterpretq_p8_s16 (arg0_int16x8_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_s32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_s32.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQp8_s32 (void)
+   out_poly8x16_t = vreinterpretq_p8_s32 (arg0_int32x4_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_s64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_s64.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQp8_s64 (void)
+   out_poly8x16_t = vreinterpretq_p8_s64 (arg0_int64x2_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_s8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_s8.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQp8_s8 (void)
+   out_poly8x16_t = vreinterpretq_p8_s8 (arg0_int8x16_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_u16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_u16.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQp8_u16 (void)
+   out_poly8x16_t = vreinterpretq_p8_u16 (arg0_uint16x8_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_u32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_u32.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQp8_u32 (void)
+   out_poly8x16_t = vreinterpretq_p8_u32 (arg0_uint32x4_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_u64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_u64.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQp8_u64 (void)
+   out_poly8x16_t = vreinterpretq_p8_u64 (arg0_uint64x2_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_u8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQp8_u8.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQp8_u8 (void)
+   out_poly8x16_t = vreinterpretq_p8_u8 (arg0_uint8x16_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_f32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_f32.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQs16_f32 (void)
+   out_int16x8_t = vreinterpretq_s16_f32 (arg0_float32x4_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_p128.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_p128.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQs16_p128 (void)
+   out_int16x8_t = vreinterpretq_s16_p128 (arg0_poly128_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_p16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_p16.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQs16_p16 (void)
+   out_int16x8_t = vreinterpretq_s16_p16 (arg0_poly16x8_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_p64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_p64.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQs16_p64 (void)
+   out_int16x8_t = vreinterpretq_s16_p64 (arg0_poly64x2_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_p8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_p8.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQs16_p8 (void)
+   out_int16x8_t = vreinterpretq_s16_p8 (arg0_poly8x16_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_s32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_s32.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQs16_s32 (void)
+   out_int16x8_t = vreinterpretq_s16_s32 (arg0_int32x4_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_s64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_s64.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQs16_s64 (void)
+   out_int16x8_t = vreinterpretq_s16_s64 (arg0_int64x2_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_s8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_s8.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQs16_s8 (void)
+   out_int16x8_t = vreinterpretq_s16_s8 (arg0_int8x16_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_u16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_u16.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQs16_u16 (void)
+   out_int16x8_t = vreinterpretq_s16_u16 (arg0_uint16x8_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_u32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_u32.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQs16_u32 (void)
+   out_int16x8_t = vreinterpretq_s16_u32 (arg0_uint32x4_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_u64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_u64.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQs16_u64 (void)
+   out_int16x8_t = vreinterpretq_s16_u64 (arg0_uint64x2_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_u8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs16_u8.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQs16_u8 (void)
+   out_int16x8_t = vreinterpretq_s16_u8 (arg0_uint8x16_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_f32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_f32.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQs32_f32 (void)
+   out_int32x4_t = vreinterpretq_s32_f32 (arg0_float32x4_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_p128.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_p128.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQs32_p128 (void)
+   out_int32x4_t = vreinterpretq_s32_p128 (arg0_poly128_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_p16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_p16.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQs32_p16 (void)
+   out_int32x4_t = vreinterpretq_s32_p16 (arg0_poly16x8_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_p64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_p64.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQs32_p64 (void)
+   out_int32x4_t = vreinterpretq_s32_p64 (arg0_poly64x2_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_p8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_p8.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQs32_p8 (void)
+   out_int32x4_t = vreinterpretq_s32_p8 (arg0_poly8x16_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_s16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_s16.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQs32_s16 (void)
+   out_int32x4_t = vreinterpretq_s32_s16 (arg0_int16x8_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_s64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_s64.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQs32_s64 (void)
+   out_int32x4_t = vreinterpretq_s32_s64 (arg0_int64x2_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_s8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_s8.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQs32_s8 (void)
+   out_int32x4_t = vreinterpretq_s32_s8 (arg0_int8x16_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_u16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_u16.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQs32_u16 (void)
+   out_int32x4_t = vreinterpretq_s32_u16 (arg0_uint16x8_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_u32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_u32.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQs32_u32 (void)
+   out_int32x4_t = vreinterpretq_s32_u32 (arg0_uint32x4_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_u64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_u64.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQs32_u64 (void)
+   out_int32x4_t = vreinterpretq_s32_u64 (arg0_uint64x2_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_u8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs32_u8.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQs32_u8 (void)
+   out_int32x4_t = vreinterpretq_s32_u8 (arg0_uint8x16_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_f32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_f32.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQs64_f32 (void)
+   out_int64x2_t = vreinterpretq_s64_f32 (arg0_float32x4_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_p128.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_p128.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQs64_p128 (void)
+   out_int64x2_t = vreinterpretq_s64_p128 (arg0_poly128_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_p16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_p16.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQs64_p16 (void)
+   out_int64x2_t = vreinterpretq_s64_p16 (arg0_poly16x8_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_p64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_p64.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQs64_p64 (void)
+   out_int64x2_t = vreinterpretq_s64_p64 (arg0_poly64x2_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_p8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_p8.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQs64_p8 (void)
+   out_int64x2_t = vreinterpretq_s64_p8 (arg0_poly8x16_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_s16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_s16.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQs64_s16 (void)
+   out_int64x2_t = vreinterpretq_s64_s16 (arg0_int16x8_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_s32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_s32.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQs64_s32 (void)
+   out_int64x2_t = vreinterpretq_s64_s32 (arg0_int32x4_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_s8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_s8.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQs64_s8 (void)
+   out_int64x2_t = vreinterpretq_s64_s8 (arg0_int8x16_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_u16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_u16.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQs64_u16 (void)
+   out_int64x2_t = vreinterpretq_s64_u16 (arg0_uint16x8_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_u32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_u32.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQs64_u32 (void)
+   out_int64x2_t = vreinterpretq_s64_u32 (arg0_uint32x4_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_u64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_u64.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQs64_u64 (void)
+   out_int64x2_t = vreinterpretq_s64_u64 (arg0_uint64x2_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_u8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs64_u8.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQs64_u8 (void)
+   out_int64x2_t = vreinterpretq_s64_u8 (arg0_uint8x16_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_f32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_f32.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQs8_f32 (void)
+   out_int8x16_t = vreinterpretq_s8_f32 (arg0_float32x4_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_p128.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_p128.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQs8_p128 (void)
+   out_int8x16_t = vreinterpretq_s8_p128 (arg0_poly128_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_p16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_p16.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQs8_p16 (void)
+   out_int8x16_t = vreinterpretq_s8_p16 (arg0_poly16x8_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_p64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_p64.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQs8_p64 (void)
+   out_int8x16_t = vreinterpretq_s8_p64 (arg0_poly64x2_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_p8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_p8.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQs8_p8 (void)
+   out_int8x16_t = vreinterpretq_s8_p8 (arg0_poly8x16_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_s16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_s16.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQs8_s16 (void)
+   out_int8x16_t = vreinterpretq_s8_s16 (arg0_int16x8_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_s32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_s32.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQs8_s32 (void)
+   out_int8x16_t = vreinterpretq_s8_s32 (arg0_int32x4_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_s64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_s64.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQs8_s64 (void)
+   out_int8x16_t = vreinterpretq_s8_s64 (arg0_int64x2_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_u16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_u16.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQs8_u16 (void)
+   out_int8x16_t = vreinterpretq_s8_u16 (arg0_uint16x8_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_u32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_u32.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQs8_u32 (void)
+   out_int8x16_t = vreinterpretq_s8_u32 (arg0_uint32x4_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_u64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_u64.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQs8_u64 (void)
+   out_int8x16_t = vreinterpretq_s8_u64 (arg0_uint64x2_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_u8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQs8_u8.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQs8_u8 (void)
+   out_int8x16_t = vreinterpretq_s8_u8 (arg0_uint8x16_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_f32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_f32.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQu16_f32 (void)
+   out_uint16x8_t = vreinterpretq_u16_f32 (arg0_float32x4_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_p128.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_p128.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQu16_p128 (void)
+   out_uint16x8_t = vreinterpretq_u16_p128 (arg0_poly128_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_p16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_p16.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQu16_p16 (void)
+   out_uint16x8_t = vreinterpretq_u16_p16 (arg0_poly16x8_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_p64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_p64.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQu16_p64 (void)
+   out_uint16x8_t = vreinterpretq_u16_p64 (arg0_poly64x2_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_p8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_p8.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQu16_p8 (void)
+   out_uint16x8_t = vreinterpretq_u16_p8 (arg0_poly8x16_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_s16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_s16.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQu16_s16 (void)
+   out_uint16x8_t = vreinterpretq_u16_s16 (arg0_int16x8_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_s32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_s32.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQu16_s32 (void)
+   out_uint16x8_t = vreinterpretq_u16_s32 (arg0_int32x4_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_s64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_s64.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQu16_s64 (void)
+   out_uint16x8_t = vreinterpretq_u16_s64 (arg0_int64x2_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_s8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_s8.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQu16_s8 (void)
+   out_uint16x8_t = vreinterpretq_u16_s8 (arg0_int8x16_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_u32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_u32.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQu16_u32 (void)
+   out_uint16x8_t = vreinterpretq_u16_u32 (arg0_uint32x4_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_u64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_u64.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQu16_u64 (void)
+   out_uint16x8_t = vreinterpretq_u16_u64 (arg0_uint64x2_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_u8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu16_u8.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQu16_u8 (void)
+   out_uint16x8_t = vreinterpretq_u16_u8 (arg0_uint8x16_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_f32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_f32.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQu32_f32 (void)
+   out_uint32x4_t = vreinterpretq_u32_f32 (arg0_float32x4_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_p128.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_p128.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQu32_p128 (void)
+   out_uint32x4_t = vreinterpretq_u32_p128 (arg0_poly128_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_p16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_p16.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQu32_p16 (void)
+   out_uint32x4_t = vreinterpretq_u32_p16 (arg0_poly16x8_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_p64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_p64.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQu32_p64 (void)
+   out_uint32x4_t = vreinterpretq_u32_p64 (arg0_poly64x2_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_p8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_p8.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQu32_p8 (void)
+   out_uint32x4_t = vreinterpretq_u32_p8 (arg0_poly8x16_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_s16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_s16.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQu32_s16 (void)
+   out_uint32x4_t = vreinterpretq_u32_s16 (arg0_int16x8_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_s32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_s32.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQu32_s32 (void)
+   out_uint32x4_t = vreinterpretq_u32_s32 (arg0_int32x4_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_s64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_s64.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQu32_s64 (void)
+   out_uint32x4_t = vreinterpretq_u32_s64 (arg0_int64x2_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_s8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_s8.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQu32_s8 (void)
+   out_uint32x4_t = vreinterpretq_u32_s8 (arg0_int8x16_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_u16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_u16.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQu32_u16 (void)
+   out_uint32x4_t = vreinterpretq_u32_u16 (arg0_uint16x8_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_u64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_u64.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQu32_u64 (void)
+   out_uint32x4_t = vreinterpretq_u32_u64 (arg0_uint64x2_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_u8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu32_u8.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQu32_u8 (void)
+   out_uint32x4_t = vreinterpretq_u32_u8 (arg0_uint8x16_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_f32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_f32.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQu64_f32 (void)
+   out_uint64x2_t = vreinterpretq_u64_f32 (arg0_float32x4_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_p128.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_p128.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQu64_p128 (void)
+   out_uint64x2_t = vreinterpretq_u64_p128 (arg0_poly128_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_p16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_p16.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQu64_p16 (void)
+   out_uint64x2_t = vreinterpretq_u64_p16 (arg0_poly16x8_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_p64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_p64.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQu64_p64 (void)
+   out_uint64x2_t = vreinterpretq_u64_p64 (arg0_poly64x2_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_p8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_p8.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQu64_p8 (void)
+   out_uint64x2_t = vreinterpretq_u64_p8 (arg0_poly8x16_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_s16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_s16.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQu64_s16 (void)
+   out_uint64x2_t = vreinterpretq_u64_s16 (arg0_int16x8_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_s32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_s32.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQu64_s32 (void)
+   out_uint64x2_t = vreinterpretq_u64_s32 (arg0_int32x4_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_s64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_s64.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQu64_s64 (void)
+   out_uint64x2_t = vreinterpretq_u64_s64 (arg0_int64x2_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_s8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_s8.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQu64_s8 (void)
+   out_uint64x2_t = vreinterpretq_u64_s8 (arg0_int8x16_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_u16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_u16.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQu64_u16 (void)
+   out_uint64x2_t = vreinterpretq_u64_u16 (arg0_uint16x8_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_u32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_u32.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQu64_u32 (void)
+   out_uint64x2_t = vreinterpretq_u64_u32 (arg0_uint32x4_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_u8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu64_u8.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQu64_u8 (void)
+   out_uint64x2_t = vreinterpretq_u64_u8 (arg0_uint8x16_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_f32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_f32.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQu8_f32 (void)
+   out_uint8x16_t = vreinterpretq_u8_f32 (arg0_float32x4_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_p128.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_p128.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQu8_p128 (void)
+   out_uint8x16_t = vreinterpretq_u8_p128 (arg0_poly128_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_p16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_p16.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQu8_p16 (void)
+   out_uint8x16_t = vreinterpretq_u8_p16 (arg0_poly16x8_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_p64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_p64.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQu8_p64 (void)
+   out_uint8x16_t = vreinterpretq_u8_p64 (arg0_poly64x2_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_p8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_p8.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQu8_p8 (void)
+   out_uint8x16_t = vreinterpretq_u8_p8 (arg0_poly8x16_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_s16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_s16.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQu8_s16 (void)
+   out_uint8x16_t = vreinterpretq_u8_s16 (arg0_int16x8_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_s32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_s32.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQu8_s32 (void)
+   out_uint8x16_t = vreinterpretq_u8_s32 (arg0_int32x4_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_s64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_s64.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQu8_s64 (void)
+   out_uint8x16_t = vreinterpretq_u8_s64 (arg0_int64x2_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_s8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_s8.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQu8_s8 (void)
+   out_uint8x16_t = vreinterpretq_u8_s8 (arg0_int8x16_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_u16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_u16.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQu8_u16 (void)
+   out_uint8x16_t = vreinterpretq_u8_u16 (arg0_uint16x8_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_u32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_u32.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQu8_u32 (void)
+   out_uint8x16_t = vreinterpretq_u8_u32 (arg0_uint32x4_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_u64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretQu8_u64.c
+@@ -16,4 +16,3 @@ void test_vreinterpretQu8_u64 (void)
+   out_uint8x16_t = vreinterpretq_u8_u64 (arg0_uint64x2_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_p16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_p16.c
+@@ -16,4 +16,3 @@ void test_vreinterpretf32_p16 (void)
+   out_float32x2_t = vreinterpret_f32_p16 (arg0_poly16x4_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_p64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_p64.c
+@@ -16,4 +16,3 @@ void test_vreinterpretf32_p64 (void)
+   out_float32x2_t = vreinterpret_f32_p64 (arg0_poly64x1_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_p8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_p8.c
+@@ -16,4 +16,3 @@ void test_vreinterpretf32_p8 (void)
+   out_float32x2_t = vreinterpret_f32_p8 (arg0_poly8x8_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_s16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_s16.c
+@@ -16,4 +16,3 @@ void test_vreinterpretf32_s16 (void)
+   out_float32x2_t = vreinterpret_f32_s16 (arg0_int16x4_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_s32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_s32.c
+@@ -16,4 +16,3 @@ void test_vreinterpretf32_s32 (void)
+   out_float32x2_t = vreinterpret_f32_s32 (arg0_int32x2_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_s64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_s64.c
+@@ -16,4 +16,3 @@ void test_vreinterpretf32_s64 (void)
+   out_float32x2_t = vreinterpret_f32_s64 (arg0_int64x1_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_s8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_s8.c
+@@ -16,4 +16,3 @@ void test_vreinterpretf32_s8 (void)
+   out_float32x2_t = vreinterpret_f32_s8 (arg0_int8x8_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_u16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_u16.c
+@@ -16,4 +16,3 @@ void test_vreinterpretf32_u16 (void)
+   out_float32x2_t = vreinterpret_f32_u16 (arg0_uint16x4_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_u32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_u32.c
+@@ -16,4 +16,3 @@ void test_vreinterpretf32_u32 (void)
+   out_float32x2_t = vreinterpret_f32_u32 (arg0_uint32x2_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_u64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_u64.c
+@@ -16,4 +16,3 @@ void test_vreinterpretf32_u64 (void)
+   out_float32x2_t = vreinterpret_f32_u64 (arg0_uint64x1_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_u8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretf32_u8.c
+@@ -16,4 +16,3 @@ void test_vreinterpretf32_u8 (void)
+   out_float32x2_t = vreinterpret_f32_u8 (arg0_uint8x8_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_f32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_f32.c
+@@ -16,4 +16,3 @@ void test_vreinterpretp16_f32 (void)
+   out_poly16x4_t = vreinterpret_p16_f32 (arg0_float32x2_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_p64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_p64.c
+@@ -16,4 +16,3 @@ void test_vreinterpretp16_p64 (void)
+   out_poly16x4_t = vreinterpret_p16_p64 (arg0_poly64x1_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_p8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_p8.c
+@@ -16,4 +16,3 @@ void test_vreinterpretp16_p8 (void)
+   out_poly16x4_t = vreinterpret_p16_p8 (arg0_poly8x8_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_s16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_s16.c
+@@ -16,4 +16,3 @@ void test_vreinterpretp16_s16 (void)
+   out_poly16x4_t = vreinterpret_p16_s16 (arg0_int16x4_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_s32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_s32.c
+@@ -16,4 +16,3 @@ void test_vreinterpretp16_s32 (void)
+   out_poly16x4_t = vreinterpret_p16_s32 (arg0_int32x2_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_s64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_s64.c
+@@ -16,4 +16,3 @@ void test_vreinterpretp16_s64 (void)
+   out_poly16x4_t = vreinterpret_p16_s64 (arg0_int64x1_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_s8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_s8.c
+@@ -16,4 +16,3 @@ void test_vreinterpretp16_s8 (void)
+   out_poly16x4_t = vreinterpret_p16_s8 (arg0_int8x8_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_u16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_u16.c
+@@ -16,4 +16,3 @@ void test_vreinterpretp16_u16 (void)
+   out_poly16x4_t = vreinterpret_p16_u16 (arg0_uint16x4_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_u32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_u32.c
+@@ -16,4 +16,3 @@ void test_vreinterpretp16_u32 (void)
+   out_poly16x4_t = vreinterpret_p16_u32 (arg0_uint32x2_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_u64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_u64.c
+@@ -16,4 +16,3 @@ void test_vreinterpretp16_u64 (void)
+   out_poly16x4_t = vreinterpret_p16_u64 (arg0_uint64x1_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_u8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretp16_u8.c
+@@ -16,4 +16,3 @@ void test_vreinterpretp16_u8 (void)
+   out_poly16x4_t = vreinterpret_p16_u8 (arg0_uint8x8_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretp64_f32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretp64_f32.c
+@@ -16,4 +16,3 @@ void test_vreinterpretp64_f32 (void)
+   out_poly64x1_t = vreinterpret_p64_f32 (arg0_float32x2_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretp64_p16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretp64_p16.c
+@@ -16,4 +16,3 @@ void test_vreinterpretp64_p16 (void)
+   out_poly64x1_t = vreinterpret_p64_p16 (arg0_poly16x4_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretp64_p8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretp64_p8.c
+@@ -16,4 +16,3 @@ void test_vreinterpretp64_p8 (void)
+   out_poly64x1_t = vreinterpret_p64_p8 (arg0_poly8x8_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretp64_s16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretp64_s16.c
+@@ -16,4 +16,3 @@ void test_vreinterpretp64_s16 (void)
+   out_poly64x1_t = vreinterpret_p64_s16 (arg0_int16x4_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretp64_s32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretp64_s32.c
+@@ -16,4 +16,3 @@ void test_vreinterpretp64_s32 (void)
+   out_poly64x1_t = vreinterpret_p64_s32 (arg0_int32x2_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretp64_s64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretp64_s64.c
+@@ -16,4 +16,3 @@ void test_vreinterpretp64_s64 (void)
+   out_poly64x1_t = vreinterpret_p64_s64 (arg0_int64x1_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretp64_s8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretp64_s8.c
+@@ -16,4 +16,3 @@ void test_vreinterpretp64_s8 (void)
+   out_poly64x1_t = vreinterpret_p64_s8 (arg0_int8x8_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretp64_u16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretp64_u16.c
+@@ -16,4 +16,3 @@ void test_vreinterpretp64_u16 (void)
+   out_poly64x1_t = vreinterpret_p64_u16 (arg0_uint16x4_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretp64_u32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretp64_u32.c
+@@ -16,4 +16,3 @@ void test_vreinterpretp64_u32 (void)
+   out_poly64x1_t = vreinterpret_p64_u32 (arg0_uint32x2_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretp64_u64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretp64_u64.c
+@@ -16,4 +16,3 @@ void test_vreinterpretp64_u64 (void)
+   out_poly64x1_t = vreinterpret_p64_u64 (arg0_uint64x1_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretp64_u8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretp64_u8.c
+@@ -16,4 +16,3 @@ void test_vreinterpretp64_u8 (void)
+   out_poly64x1_t = vreinterpret_p64_u8 (arg0_uint8x8_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_f32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_f32.c
+@@ -16,4 +16,3 @@ void test_vreinterpretp8_f32 (void)
+   out_poly8x8_t = vreinterpret_p8_f32 (arg0_float32x2_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_p16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_p16.c
+@@ -16,4 +16,3 @@ void test_vreinterpretp8_p16 (void)
+   out_poly8x8_t = vreinterpret_p8_p16 (arg0_poly16x4_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_p64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_p64.c
+@@ -16,4 +16,3 @@ void test_vreinterpretp8_p64 (void)
+   out_poly8x8_t = vreinterpret_p8_p64 (arg0_poly64x1_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_s16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_s16.c
+@@ -16,4 +16,3 @@ void test_vreinterpretp8_s16 (void)
+   out_poly8x8_t = vreinterpret_p8_s16 (arg0_int16x4_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_s32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_s32.c
+@@ -16,4 +16,3 @@ void test_vreinterpretp8_s32 (void)
+   out_poly8x8_t = vreinterpret_p8_s32 (arg0_int32x2_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_s64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_s64.c
+@@ -16,4 +16,3 @@ void test_vreinterpretp8_s64 (void)
+   out_poly8x8_t = vreinterpret_p8_s64 (arg0_int64x1_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_s8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_s8.c
+@@ -16,4 +16,3 @@ void test_vreinterpretp8_s8 (void)
+   out_poly8x8_t = vreinterpret_p8_s8 (arg0_int8x8_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_u16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_u16.c
+@@ -16,4 +16,3 @@ void test_vreinterpretp8_u16 (void)
+   out_poly8x8_t = vreinterpret_p8_u16 (arg0_uint16x4_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_u32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_u32.c
+@@ -16,4 +16,3 @@ void test_vreinterpretp8_u32 (void)
+   out_poly8x8_t = vreinterpret_p8_u32 (arg0_uint32x2_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_u64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_u64.c
+@@ -16,4 +16,3 @@ void test_vreinterpretp8_u64 (void)
+   out_poly8x8_t = vreinterpret_p8_u64 (arg0_uint64x1_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_u8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretp8_u8.c
+@@ -16,4 +16,3 @@ void test_vreinterpretp8_u8 (void)
+   out_poly8x8_t = vreinterpret_p8_u8 (arg0_uint8x8_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_f32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_f32.c
+@@ -16,4 +16,3 @@ void test_vreinterprets16_f32 (void)
+   out_int16x4_t = vreinterpret_s16_f32 (arg0_float32x2_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_p16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_p16.c
+@@ -16,4 +16,3 @@ void test_vreinterprets16_p16 (void)
+   out_int16x4_t = vreinterpret_s16_p16 (arg0_poly16x4_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_p64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_p64.c
+@@ -16,4 +16,3 @@ void test_vreinterprets16_p64 (void)
+   out_int16x4_t = vreinterpret_s16_p64 (arg0_poly64x1_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_p8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_p8.c
+@@ -16,4 +16,3 @@ void test_vreinterprets16_p8 (void)
+   out_int16x4_t = vreinterpret_s16_p8 (arg0_poly8x8_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_s32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_s32.c
+@@ -16,4 +16,3 @@ void test_vreinterprets16_s32 (void)
+   out_int16x4_t = vreinterpret_s16_s32 (arg0_int32x2_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_s64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_s64.c
+@@ -16,4 +16,3 @@ void test_vreinterprets16_s64 (void)
+   out_int16x4_t = vreinterpret_s16_s64 (arg0_int64x1_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_s8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_s8.c
+@@ -16,4 +16,3 @@ void test_vreinterprets16_s8 (void)
+   out_int16x4_t = vreinterpret_s16_s8 (arg0_int8x8_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_u16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_u16.c
+@@ -16,4 +16,3 @@ void test_vreinterprets16_u16 (void)
+   out_int16x4_t = vreinterpret_s16_u16 (arg0_uint16x4_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_u32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_u32.c
+@@ -16,4 +16,3 @@ void test_vreinterprets16_u32 (void)
+   out_int16x4_t = vreinterpret_s16_u32 (arg0_uint32x2_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_u64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_u64.c
+@@ -16,4 +16,3 @@ void test_vreinterprets16_u64 (void)
+   out_int16x4_t = vreinterpret_s16_u64 (arg0_uint64x1_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_u8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterprets16_u8.c
+@@ -16,4 +16,3 @@ void test_vreinterprets16_u8 (void)
+   out_int16x4_t = vreinterpret_s16_u8 (arg0_uint8x8_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_f32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_f32.c
+@@ -16,4 +16,3 @@ void test_vreinterprets32_f32 (void)
+   out_int32x2_t = vreinterpret_s32_f32 (arg0_float32x2_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_p16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_p16.c
+@@ -16,4 +16,3 @@ void test_vreinterprets32_p16 (void)
+   out_int32x2_t = vreinterpret_s32_p16 (arg0_poly16x4_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_p64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_p64.c
+@@ -16,4 +16,3 @@ void test_vreinterprets32_p64 (void)
+   out_int32x2_t = vreinterpret_s32_p64 (arg0_poly64x1_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_p8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_p8.c
+@@ -16,4 +16,3 @@ void test_vreinterprets32_p8 (void)
+   out_int32x2_t = vreinterpret_s32_p8 (arg0_poly8x8_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_s16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_s16.c
+@@ -16,4 +16,3 @@ void test_vreinterprets32_s16 (void)
+   out_int32x2_t = vreinterpret_s32_s16 (arg0_int16x4_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_s64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_s64.c
+@@ -16,4 +16,3 @@ void test_vreinterprets32_s64 (void)
+   out_int32x2_t = vreinterpret_s32_s64 (arg0_int64x1_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_s8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_s8.c
+@@ -16,4 +16,3 @@ void test_vreinterprets32_s8 (void)
+   out_int32x2_t = vreinterpret_s32_s8 (arg0_int8x8_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_u16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_u16.c
+@@ -16,4 +16,3 @@ void test_vreinterprets32_u16 (void)
+   out_int32x2_t = vreinterpret_s32_u16 (arg0_uint16x4_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_u32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_u32.c
+@@ -16,4 +16,3 @@ void test_vreinterprets32_u32 (void)
+   out_int32x2_t = vreinterpret_s32_u32 (arg0_uint32x2_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_u64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_u64.c
+@@ -16,4 +16,3 @@ void test_vreinterprets32_u64 (void)
+   out_int32x2_t = vreinterpret_s32_u64 (arg0_uint64x1_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_u8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterprets32_u8.c
+@@ -16,4 +16,3 @@ void test_vreinterprets32_u8 (void)
+   out_int32x2_t = vreinterpret_s32_u8 (arg0_uint8x8_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_f32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_f32.c
+@@ -16,4 +16,3 @@ void test_vreinterprets64_f32 (void)
+   out_int64x1_t = vreinterpret_s64_f32 (arg0_float32x2_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_p16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_p16.c
+@@ -16,4 +16,3 @@ void test_vreinterprets64_p16 (void)
+   out_int64x1_t = vreinterpret_s64_p16 (arg0_poly16x4_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_p64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_p64.c
+@@ -16,4 +16,3 @@ void test_vreinterprets64_p64 (void)
+   out_int64x1_t = vreinterpret_s64_p64 (arg0_poly64x1_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_p8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_p8.c
+@@ -16,4 +16,3 @@ void test_vreinterprets64_p8 (void)
+   out_int64x1_t = vreinterpret_s64_p8 (arg0_poly8x8_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_s16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_s16.c
+@@ -16,4 +16,3 @@ void test_vreinterprets64_s16 (void)
+   out_int64x1_t = vreinterpret_s64_s16 (arg0_int16x4_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_s32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_s32.c
+@@ -16,4 +16,3 @@ void test_vreinterprets64_s32 (void)
+   out_int64x1_t = vreinterpret_s64_s32 (arg0_int32x2_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_s8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_s8.c
+@@ -16,4 +16,3 @@ void test_vreinterprets64_s8 (void)
+   out_int64x1_t = vreinterpret_s64_s8 (arg0_int8x8_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_u16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_u16.c
+@@ -16,4 +16,3 @@ void test_vreinterprets64_u16 (void)
+   out_int64x1_t = vreinterpret_s64_u16 (arg0_uint16x4_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_u32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_u32.c
+@@ -16,4 +16,3 @@ void test_vreinterprets64_u32 (void)
+   out_int64x1_t = vreinterpret_s64_u32 (arg0_uint32x2_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_u64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_u64.c
+@@ -16,4 +16,3 @@ void test_vreinterprets64_u64 (void)
+   out_int64x1_t = vreinterpret_s64_u64 (arg0_uint64x1_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_u8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterprets64_u8.c
+@@ -16,4 +16,3 @@ void test_vreinterprets64_u8 (void)
+   out_int64x1_t = vreinterpret_s64_u8 (arg0_uint8x8_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_f32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_f32.c
+@@ -16,4 +16,3 @@ void test_vreinterprets8_f32 (void)
+   out_int8x8_t = vreinterpret_s8_f32 (arg0_float32x2_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_p16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_p16.c
+@@ -16,4 +16,3 @@ void test_vreinterprets8_p16 (void)
+   out_int8x8_t = vreinterpret_s8_p16 (arg0_poly16x4_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_p64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_p64.c
+@@ -16,4 +16,3 @@ void test_vreinterprets8_p64 (void)
+   out_int8x8_t = vreinterpret_s8_p64 (arg0_poly64x1_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_p8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_p8.c
+@@ -16,4 +16,3 @@ void test_vreinterprets8_p8 (void)
+   out_int8x8_t = vreinterpret_s8_p8 (arg0_poly8x8_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_s16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_s16.c
+@@ -16,4 +16,3 @@ void test_vreinterprets8_s16 (void)
+   out_int8x8_t = vreinterpret_s8_s16 (arg0_int16x4_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_s32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_s32.c
+@@ -16,4 +16,3 @@ void test_vreinterprets8_s32 (void)
+   out_int8x8_t = vreinterpret_s8_s32 (arg0_int32x2_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_s64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_s64.c
+@@ -16,4 +16,3 @@ void test_vreinterprets8_s64 (void)
+   out_int8x8_t = vreinterpret_s8_s64 (arg0_int64x1_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_u16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_u16.c
+@@ -16,4 +16,3 @@ void test_vreinterprets8_u16 (void)
+   out_int8x8_t = vreinterpret_s8_u16 (arg0_uint16x4_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_u32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_u32.c
+@@ -16,4 +16,3 @@ void test_vreinterprets8_u32 (void)
+   out_int8x8_t = vreinterpret_s8_u32 (arg0_uint32x2_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_u64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_u64.c
+@@ -16,4 +16,3 @@ void test_vreinterprets8_u64 (void)
+   out_int8x8_t = vreinterpret_s8_u64 (arg0_uint64x1_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_u8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterprets8_u8.c
+@@ -16,4 +16,3 @@ void test_vreinterprets8_u8 (void)
+   out_int8x8_t = vreinterpret_s8_u8 (arg0_uint8x8_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_f32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_f32.c
+@@ -16,4 +16,3 @@ void test_vreinterpretu16_f32 (void)
+   out_uint16x4_t = vreinterpret_u16_f32 (arg0_float32x2_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_p16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_p16.c
+@@ -16,4 +16,3 @@ void test_vreinterpretu16_p16 (void)
+   out_uint16x4_t = vreinterpret_u16_p16 (arg0_poly16x4_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_p64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_p64.c
+@@ -16,4 +16,3 @@ void test_vreinterpretu16_p64 (void)
+   out_uint16x4_t = vreinterpret_u16_p64 (arg0_poly64x1_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_p8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_p8.c
+@@ -16,4 +16,3 @@ void test_vreinterpretu16_p8 (void)
+   out_uint16x4_t = vreinterpret_u16_p8 (arg0_poly8x8_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_s16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_s16.c
+@@ -16,4 +16,3 @@ void test_vreinterpretu16_s16 (void)
+   out_uint16x4_t = vreinterpret_u16_s16 (arg0_int16x4_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_s32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_s32.c
+@@ -16,4 +16,3 @@ void test_vreinterpretu16_s32 (void)
+   out_uint16x4_t = vreinterpret_u16_s32 (arg0_int32x2_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_s64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_s64.c
+@@ -16,4 +16,3 @@ void test_vreinterpretu16_s64 (void)
+   out_uint16x4_t = vreinterpret_u16_s64 (arg0_int64x1_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_s8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_s8.c
+@@ -16,4 +16,3 @@ void test_vreinterpretu16_s8 (void)
+   out_uint16x4_t = vreinterpret_u16_s8 (arg0_int8x8_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_u32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_u32.c
+@@ -16,4 +16,3 @@ void test_vreinterpretu16_u32 (void)
+   out_uint16x4_t = vreinterpret_u16_u32 (arg0_uint32x2_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_u64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_u64.c
+@@ -16,4 +16,3 @@ void test_vreinterpretu16_u64 (void)
+   out_uint16x4_t = vreinterpret_u16_u64 (arg0_uint64x1_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_u8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretu16_u8.c
+@@ -16,4 +16,3 @@ void test_vreinterpretu16_u8 (void)
+   out_uint16x4_t = vreinterpret_u16_u8 (arg0_uint8x8_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_f32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_f32.c
+@@ -16,4 +16,3 @@ void test_vreinterpretu32_f32 (void)
+   out_uint32x2_t = vreinterpret_u32_f32 (arg0_float32x2_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_p16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_p16.c
+@@ -16,4 +16,3 @@ void test_vreinterpretu32_p16 (void)
+   out_uint32x2_t = vreinterpret_u32_p16 (arg0_poly16x4_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_p64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_p64.c
+@@ -16,4 +16,3 @@ void test_vreinterpretu32_p64 (void)
+   out_uint32x2_t = vreinterpret_u32_p64 (arg0_poly64x1_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_p8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_p8.c
+@@ -16,4 +16,3 @@ void test_vreinterpretu32_p8 (void)
+   out_uint32x2_t = vreinterpret_u32_p8 (arg0_poly8x8_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_s16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_s16.c
+@@ -16,4 +16,3 @@ void test_vreinterpretu32_s16 (void)
+   out_uint32x2_t = vreinterpret_u32_s16 (arg0_int16x4_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_s32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_s32.c
+@@ -16,4 +16,3 @@ void test_vreinterpretu32_s32 (void)
+   out_uint32x2_t = vreinterpret_u32_s32 (arg0_int32x2_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_s64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_s64.c
+@@ -16,4 +16,3 @@ void test_vreinterpretu32_s64 (void)
+   out_uint32x2_t = vreinterpret_u32_s64 (arg0_int64x1_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_s8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_s8.c
+@@ -16,4 +16,3 @@ void test_vreinterpretu32_s8 (void)
+   out_uint32x2_t = vreinterpret_u32_s8 (arg0_int8x8_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_u16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_u16.c
+@@ -16,4 +16,3 @@ void test_vreinterpretu32_u16 (void)
+   out_uint32x2_t = vreinterpret_u32_u16 (arg0_uint16x4_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_u64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_u64.c
+@@ -16,4 +16,3 @@ void test_vreinterpretu32_u64 (void)
+   out_uint32x2_t = vreinterpret_u32_u64 (arg0_uint64x1_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_u8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretu32_u8.c
+@@ -16,4 +16,3 @@ void test_vreinterpretu32_u8 (void)
+   out_uint32x2_t = vreinterpret_u32_u8 (arg0_uint8x8_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_f32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_f32.c
+@@ -16,4 +16,3 @@ void test_vreinterpretu64_f32 (void)
+   out_uint64x1_t = vreinterpret_u64_f32 (arg0_float32x2_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_p16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_p16.c
+@@ -16,4 +16,3 @@ void test_vreinterpretu64_p16 (void)
+   out_uint64x1_t = vreinterpret_u64_p16 (arg0_poly16x4_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_p64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_p64.c
+@@ -16,4 +16,3 @@ void test_vreinterpretu64_p64 (void)
+   out_uint64x1_t = vreinterpret_u64_p64 (arg0_poly64x1_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_p8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_p8.c
+@@ -16,4 +16,3 @@ void test_vreinterpretu64_p8 (void)
+   out_uint64x1_t = vreinterpret_u64_p8 (arg0_poly8x8_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_s16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_s16.c
+@@ -16,4 +16,3 @@ void test_vreinterpretu64_s16 (void)
+   out_uint64x1_t = vreinterpret_u64_s16 (arg0_int16x4_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_s32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_s32.c
+@@ -16,4 +16,3 @@ void test_vreinterpretu64_s32 (void)
+   out_uint64x1_t = vreinterpret_u64_s32 (arg0_int32x2_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_s64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_s64.c
+@@ -16,4 +16,3 @@ void test_vreinterpretu64_s64 (void)
+   out_uint64x1_t = vreinterpret_u64_s64 (arg0_int64x1_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_s8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_s8.c
+@@ -16,4 +16,3 @@ void test_vreinterpretu64_s8 (void)
+   out_uint64x1_t = vreinterpret_u64_s8 (arg0_int8x8_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_u16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_u16.c
+@@ -16,4 +16,3 @@ void test_vreinterpretu64_u16 (void)
+   out_uint64x1_t = vreinterpret_u64_u16 (arg0_uint16x4_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_u32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_u32.c
+@@ -16,4 +16,3 @@ void test_vreinterpretu64_u32 (void)
+   out_uint64x1_t = vreinterpret_u64_u32 (arg0_uint32x2_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_u8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretu64_u8.c
+@@ -16,4 +16,3 @@ void test_vreinterpretu64_u8 (void)
+   out_uint64x1_t = vreinterpret_u64_u8 (arg0_uint8x8_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_f32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_f32.c
+@@ -16,4 +16,3 @@ void test_vreinterpretu8_f32 (void)
+   out_uint8x8_t = vreinterpret_u8_f32 (arg0_float32x2_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_p16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_p16.c
+@@ -16,4 +16,3 @@ void test_vreinterpretu8_p16 (void)
+   out_uint8x8_t = vreinterpret_u8_p16 (arg0_poly16x4_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_p64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_p64.c
+@@ -16,4 +16,3 @@ void test_vreinterpretu8_p64 (void)
+   out_uint8x8_t = vreinterpret_u8_p64 (arg0_poly64x1_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_p8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_p8.c
+@@ -16,4 +16,3 @@ void test_vreinterpretu8_p8 (void)
+   out_uint8x8_t = vreinterpret_u8_p8 (arg0_poly8x8_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_s16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_s16.c
+@@ -16,4 +16,3 @@ void test_vreinterpretu8_s16 (void)
+   out_uint8x8_t = vreinterpret_u8_s16 (arg0_int16x4_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_s32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_s32.c
+@@ -16,4 +16,3 @@ void test_vreinterpretu8_s32 (void)
+   out_uint8x8_t = vreinterpret_u8_s32 (arg0_int32x2_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_s64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_s64.c
+@@ -16,4 +16,3 @@ void test_vreinterpretu8_s64 (void)
+   out_uint8x8_t = vreinterpret_u8_s64 (arg0_int64x1_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_s8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_s8.c
+@@ -16,4 +16,3 @@ void test_vreinterpretu8_s8 (void)
+   out_uint8x8_t = vreinterpret_u8_s8 (arg0_int8x8_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_u16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_u16.c
+@@ -16,4 +16,3 @@ void test_vreinterpretu8_u16 (void)
+   out_uint8x8_t = vreinterpret_u8_u16 (arg0_uint16x4_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_u32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_u32.c
+@@ -16,4 +16,3 @@ void test_vreinterpretu8_u32 (void)
+   out_uint8x8_t = vreinterpret_u8_u32 (arg0_uint32x2_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_u64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vreinterpretu8_u64.c
+@@ -16,4 +16,3 @@ void test_vreinterpretu8_u64 (void)
+   out_uint8x8_t = vreinterpret_u8_u64 (arg0_uint64x1_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vrev16Qp8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vrev16Qp8.c
+@@ -17,4 +17,3 @@ void test_vrev16Qp8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrev16\.8\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vrev16Qs8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vrev16Qs8.c
+@@ -17,4 +17,3 @@ void test_vrev16Qs8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrev16\.8\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vrev16Qu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vrev16Qu8.c
+@@ -17,4 +17,3 @@ void test_vrev16Qu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrev16\.8\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vrev16p8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vrev16p8.c
+@@ -17,4 +17,3 @@ void test_vrev16p8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrev16\.8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vrev16s8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vrev16s8.c
+@@ -17,4 +17,3 @@ void test_vrev16s8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrev16\.8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vrev16u8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vrev16u8.c
+@@ -17,4 +17,3 @@ void test_vrev16u8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrev16\.8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vrev32Qp16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vrev32Qp16.c
+@@ -17,4 +17,3 @@ void test_vrev32Qp16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrev32\.16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vrev32Qp8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vrev32Qp8.c
+@@ -17,4 +17,3 @@ void test_vrev32Qp8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrev32\.8\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vrev32Qs16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vrev32Qs16.c
+@@ -17,4 +17,3 @@ void test_vrev32Qs16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrev32\.16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vrev32Qs8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vrev32Qs8.c
+@@ -17,4 +17,3 @@ void test_vrev32Qs8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrev32\.8\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vrev32Qu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vrev32Qu16.c
+@@ -17,4 +17,3 @@ void test_vrev32Qu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrev32\.16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vrev32Qu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vrev32Qu8.c
+@@ -17,4 +17,3 @@ void test_vrev32Qu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrev32\.8\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vrev32p16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vrev32p16.c
+@@ -17,4 +17,3 @@ void test_vrev32p16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrev32\.16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vrev32p8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vrev32p8.c
+@@ -17,4 +17,3 @@ void test_vrev32p8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrev32\.8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vrev32s16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vrev32s16.c
+@@ -17,4 +17,3 @@ void test_vrev32s16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrev32\.16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vrev32s8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vrev32s8.c
+@@ -17,4 +17,3 @@ void test_vrev32s8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrev32\.8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vrev32u16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vrev32u16.c
+@@ -17,4 +17,3 @@ void test_vrev32u16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrev32\.16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vrev32u8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vrev32u8.c
+@@ -17,4 +17,3 @@ void test_vrev32u8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrev32\.8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vrev64Qf32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vrev64Qf32.c
+@@ -17,4 +17,3 @@ void test_vrev64Qf32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrev64\.32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vrev64Qp16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vrev64Qp16.c
+@@ -17,4 +17,3 @@ void test_vrev64Qp16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrev64\.16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vrev64Qp8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vrev64Qp8.c
+@@ -17,4 +17,3 @@ void test_vrev64Qp8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrev64\.8\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vrev64Qs16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vrev64Qs16.c
+@@ -17,4 +17,3 @@ void test_vrev64Qs16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrev64\.16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vrev64Qs32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vrev64Qs32.c
+@@ -17,4 +17,3 @@ void test_vrev64Qs32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrev64\.32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vrev64Qs8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vrev64Qs8.c
+@@ -17,4 +17,3 @@ void test_vrev64Qs8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrev64\.8\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vrev64Qu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vrev64Qu16.c
+@@ -17,4 +17,3 @@ void test_vrev64Qu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrev64\.16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vrev64Qu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vrev64Qu32.c
+@@ -17,4 +17,3 @@ void test_vrev64Qu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrev64\.32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vrev64Qu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vrev64Qu8.c
+@@ -17,4 +17,3 @@ void test_vrev64Qu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrev64\.8\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vrev64f32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vrev64f32.c
+@@ -17,4 +17,3 @@ void test_vrev64f32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrev64\.32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vrev64p16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vrev64p16.c
+@@ -17,4 +17,3 @@ void test_vrev64p16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrev64\.16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vrev64p8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vrev64p8.c
+@@ -17,4 +17,3 @@ void test_vrev64p8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrev64\.8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vrev64s16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vrev64s16.c
+@@ -17,4 +17,3 @@ void test_vrev64s16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrev64\.16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vrev64s32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vrev64s32.c
+@@ -17,4 +17,3 @@ void test_vrev64s32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrev64\.32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vrev64s8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vrev64s8.c
+@@ -17,4 +17,3 @@ void test_vrev64s8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrev64\.8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vrev64u16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vrev64u16.c
+@@ -17,4 +17,3 @@ void test_vrev64u16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrev64\.16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vrev64u32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vrev64u32.c
+@@ -17,4 +17,3 @@ void test_vrev64u32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrev64\.32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vrev64u8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vrev64u8.c
+@@ -17,4 +17,3 @@ void test_vrev64u8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrev64\.8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vrndaf32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vrndaf32.c
+@@ -17,4 +17,3 @@ void test_vrndaf32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrinta\.f32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vrndaqf32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vrndaqf32.c
+@@ -17,4 +17,3 @@ void test_vrndaqf32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrinta\.f32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vrndf32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vrndf32.c
+@@ -17,4 +17,3 @@ void test_vrndf32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrintz\.f32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vrndmf32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vrndmf32.c
+@@ -17,4 +17,3 @@ void test_vrndmf32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrintm\.f32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vrndmqf32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vrndmqf32.c
+@@ -17,4 +17,3 @@ void test_vrndmqf32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrintm\.f32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vrndnf32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vrndnf32.c
+@@ -17,4 +17,3 @@ void test_vrndnf32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrintn\.f32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vrndnqf32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vrndnqf32.c
+@@ -17,4 +17,3 @@ void test_vrndnqf32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrintn\.f32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vrndpf32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vrndpf32.c
+@@ -17,4 +17,3 @@ void test_vrndpf32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrintp\.f32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vrndpqf32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vrndpqf32.c
+@@ -17,4 +17,3 @@ void test_vrndpqf32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrintp\.f32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vrndqf32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vrndqf32.c
+@@ -17,4 +17,3 @@ void test_vrndqf32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrintz\.f32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vrsqrteQf32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vrsqrteQf32.c
+@@ -17,4 +17,3 @@ void test_vrsqrteQf32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrsqrte\.f32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vrsqrteQu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vrsqrteQu32.c
+@@ -17,4 +17,3 @@ void test_vrsqrteQu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrsqrte\.u32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vrsqrtef32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vrsqrtef32.c
+@@ -17,4 +17,3 @@ void test_vrsqrtef32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrsqrte\.f32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vrsqrteu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vrsqrteu32.c
+@@ -17,4 +17,3 @@ void test_vrsqrteu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrsqrte\.u32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vrsqrtsQf32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vrsqrtsQf32.c
+@@ -18,4 +18,3 @@ void test_vrsqrtsQf32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrsqrts\.f32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vrsqrtsf32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vrsqrtsf32.c
+@@ -18,4 +18,3 @@ void test_vrsqrtsf32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vrsqrts\.f32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vsetQ_lanef32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vsetQ_lanef32.c
+@@ -18,4 +18,3 @@ void test_vsetQ_lanef32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmov\.32\[ 	\]+\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[rR\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vsetQ_lanep16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vsetQ_lanep16.c
+@@ -18,4 +18,3 @@ void test_vsetQ_lanep16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmov\.16\[ 	\]+\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[rR\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vsetQ_lanep8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vsetQ_lanep8.c
+@@ -18,4 +18,3 @@ void test_vsetQ_lanep8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmov\.8\[ 	\]+\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[rR\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vsetQ_lanes16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vsetQ_lanes16.c
+@@ -18,4 +18,3 @@ void test_vsetQ_lanes16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmov\.16\[ 	\]+\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[rR\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vsetQ_lanes32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vsetQ_lanes32.c
+@@ -18,4 +18,3 @@ void test_vsetQ_lanes32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmov\.32\[ 	\]+\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[rR\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vsetQ_lanes64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vsetQ_lanes64.c
+@@ -18,4 +18,3 @@ void test_vsetQ_lanes64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmov\[ 	\]+\[dD\]\[0-9\]+, \[rR\]\[0-9\]+, \[rR\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vsetQ_lanes8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vsetQ_lanes8.c
+@@ -18,4 +18,3 @@ void test_vsetQ_lanes8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmov\.8\[ 	\]+\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[rR\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vsetQ_laneu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vsetQ_laneu16.c
+@@ -18,4 +18,3 @@ void test_vsetQ_laneu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmov\.16\[ 	\]+\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[rR\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vsetQ_laneu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vsetQ_laneu32.c
+@@ -18,4 +18,3 @@ void test_vsetQ_laneu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmov\.32\[ 	\]+\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[rR\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vsetQ_laneu64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vsetQ_laneu64.c
+@@ -18,4 +18,3 @@ void test_vsetQ_laneu64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmov\[ 	\]+\[dD\]\[0-9\]+, \[rR\]\[0-9\]+, \[rR\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vsetQ_laneu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vsetQ_laneu8.c
+@@ -18,4 +18,3 @@ void test_vsetQ_laneu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmov\.8\[ 	\]+\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[rR\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vset_lanef32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vset_lanef32.c
+@@ -18,4 +18,3 @@ void test_vset_lanef32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmov\.32\[ 	\]+\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[rR\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vset_lanep16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vset_lanep16.c
+@@ -18,4 +18,3 @@ void test_vset_lanep16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmov\.16\[ 	\]+\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[rR\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vset_lanep8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vset_lanep8.c
+@@ -18,4 +18,3 @@ void test_vset_lanep8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmov\.8\[ 	\]+\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[rR\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vset_lanes16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vset_lanes16.c
+@@ -18,4 +18,3 @@ void test_vset_lanes16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmov\.16\[ 	\]+\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[rR\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vset_lanes32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vset_lanes32.c
+@@ -18,4 +18,3 @@ void test_vset_lanes32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmov\.32\[ 	\]+\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[rR\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vset_lanes64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vset_lanes64.c
+@@ -17,4 +17,3 @@ void test_vset_lanes64 (void)
+   out_int64x1_t = vset_lane_s64 (arg0_int64_t, arg1_int64x1_t, 0);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vset_lanes8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vset_lanes8.c
+@@ -18,4 +18,3 @@ void test_vset_lanes8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmov\.8\[ 	\]+\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[rR\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vset_laneu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vset_laneu16.c
+@@ -18,4 +18,3 @@ void test_vset_laneu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmov\.16\[ 	\]+\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[rR\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vset_laneu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vset_laneu32.c
+@@ -18,4 +18,3 @@ void test_vset_laneu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmov\.32\[ 	\]+\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[rR\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vset_laneu64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vset_laneu64.c
+@@ -17,4 +17,3 @@ void test_vset_laneu64 (void)
+   out_uint64x1_t = vset_lane_u64 (arg0_uint64_t, arg1_uint64x1_t, 0);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vset_laneu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vset_laneu8.c
+@@ -18,4 +18,3 @@ void test_vset_laneu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vmov\.8\[ 	\]+\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[rR\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vshlQ_ns16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vshlQ_ns16.c
+@@ -17,4 +17,3 @@ void test_vshlQ_ns16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vshl\.i16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vshlQ_ns32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vshlQ_ns32.c
+@@ -17,4 +17,3 @@ void test_vshlQ_ns32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vshl\.i32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vshlQ_ns64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vshlQ_ns64.c
+@@ -17,4 +17,3 @@ void test_vshlQ_ns64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vshl\.i64\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vshlQ_ns8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vshlQ_ns8.c
+@@ -17,4 +17,3 @@ void test_vshlQ_ns8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vshl\.i8\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vshlQ_nu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vshlQ_nu16.c
+@@ -17,4 +17,3 @@ void test_vshlQ_nu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vshl\.i16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vshlQ_nu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vshlQ_nu32.c
+@@ -17,4 +17,3 @@ void test_vshlQ_nu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vshl\.i32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vshlQ_nu64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vshlQ_nu64.c
+@@ -17,4 +17,3 @@ void test_vshlQ_nu64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vshl\.i64\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vshlQ_nu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vshlQ_nu8.c
+@@ -17,4 +17,3 @@ void test_vshlQ_nu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vshl\.i8\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vshlQs16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vshlQs16.c
+@@ -18,4 +18,3 @@ void test_vshlQs16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vshl\.s16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vshlQs32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vshlQs32.c
+@@ -18,4 +18,3 @@ void test_vshlQs32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vshl\.s32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vshlQs64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vshlQs64.c
+@@ -18,4 +18,3 @@ void test_vshlQs64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vshl\.s64\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vshlQs8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vshlQs8.c
+@@ -18,4 +18,3 @@ void test_vshlQs8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vshl\.s8\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vshlQu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vshlQu16.c
+@@ -18,4 +18,3 @@ void test_vshlQu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vshl\.u16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vshlQu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vshlQu32.c
+@@ -18,4 +18,3 @@ void test_vshlQu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vshl\.u32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vshlQu64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vshlQu64.c
+@@ -18,4 +18,3 @@ void test_vshlQu64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vshl\.u64\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vshlQu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vshlQu8.c
+@@ -18,4 +18,3 @@ void test_vshlQu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vshl\.u8\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vshl_ns16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vshl_ns16.c
+@@ -17,4 +17,3 @@ void test_vshl_ns16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vshl\.i16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vshl_ns32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vshl_ns32.c
+@@ -17,4 +17,3 @@ void test_vshl_ns32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vshl\.i32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vshl_ns64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vshl_ns64.c
+@@ -17,4 +17,3 @@ void test_vshl_ns64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vshl\.i64\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vshl_ns8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vshl_ns8.c
+@@ -17,4 +17,3 @@ void test_vshl_ns8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vshl\.i8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vshl_nu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vshl_nu16.c
+@@ -17,4 +17,3 @@ void test_vshl_nu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vshl\.i16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vshl_nu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vshl_nu32.c
+@@ -17,4 +17,3 @@ void test_vshl_nu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vshl\.i32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vshl_nu64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vshl_nu64.c
+@@ -17,4 +17,3 @@ void test_vshl_nu64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vshl\.i64\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vshl_nu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vshl_nu8.c
+@@ -17,4 +17,3 @@ void test_vshl_nu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vshl\.i8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vshll_ns16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vshll_ns16.c
+@@ -17,4 +17,3 @@ void test_vshll_ns16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vshll\.s16\[ 	\]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vshll_ns32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vshll_ns32.c
+@@ -17,4 +17,3 @@ void test_vshll_ns32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vshll\.s32\[ 	\]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vshll_ns8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vshll_ns8.c
+@@ -17,4 +17,3 @@ void test_vshll_ns8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vshll\.s8\[ 	\]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vshll_nu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vshll_nu16.c
+@@ -17,4 +17,3 @@ void test_vshll_nu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vshll\.u16\[ 	\]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vshll_nu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vshll_nu32.c
+@@ -17,4 +17,3 @@ void test_vshll_nu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vshll\.u32\[ 	\]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vshll_nu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vshll_nu8.c
+@@ -17,4 +17,3 @@ void test_vshll_nu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vshll\.u8\[ 	\]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vshls16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vshls16.c
+@@ -18,4 +18,3 @@ void test_vshls16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vshl\.s16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vshls32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vshls32.c
+@@ -18,4 +18,3 @@ void test_vshls32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vshl\.s32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vshls64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vshls64.c
+@@ -18,4 +18,3 @@ void test_vshls64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vshl\.s64\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vshls8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vshls8.c
+@@ -18,4 +18,3 @@ void test_vshls8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vshl\.s8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vshlu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vshlu16.c
+@@ -18,4 +18,3 @@ void test_vshlu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vshl\.u16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vshlu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vshlu32.c
+@@ -18,4 +18,3 @@ void test_vshlu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vshl\.u32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vshlu64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vshlu64.c
+@@ -18,4 +18,3 @@ void test_vshlu64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vshl\.u64\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vshlu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vshlu8.c
+@@ -18,4 +18,3 @@ void test_vshlu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vshl\.u8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vshrQ_ns16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vshrQ_ns16.c
+@@ -17,4 +17,3 @@ void test_vshrQ_ns16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vshr\.s16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vshrQ_ns32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vshrQ_ns32.c
+@@ -17,4 +17,3 @@ void test_vshrQ_ns32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vshr\.s32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vshrQ_ns64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vshrQ_ns64.c
+@@ -17,4 +17,3 @@ void test_vshrQ_ns64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vshr\.s64\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vshrQ_ns8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vshrQ_ns8.c
+@@ -17,4 +17,3 @@ void test_vshrQ_ns8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vshr\.s8\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vshrQ_nu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vshrQ_nu16.c
+@@ -17,4 +17,3 @@ void test_vshrQ_nu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vshr\.u16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vshrQ_nu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vshrQ_nu32.c
+@@ -17,4 +17,3 @@ void test_vshrQ_nu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vshr\.u32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vshrQ_nu64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vshrQ_nu64.c
+@@ -17,4 +17,3 @@ void test_vshrQ_nu64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vshr\.u64\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vshrQ_nu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vshrQ_nu8.c
+@@ -17,4 +17,3 @@ void test_vshrQ_nu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vshr\.u8\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vshr_ns16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vshr_ns16.c
+@@ -17,4 +17,3 @@ void test_vshr_ns16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vshr\.s16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vshr_ns32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vshr_ns32.c
+@@ -17,4 +17,3 @@ void test_vshr_ns32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vshr\.s32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vshr_ns64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vshr_ns64.c
+@@ -17,4 +17,3 @@ void test_vshr_ns64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vshr\.s64\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vshr_ns8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vshr_ns8.c
+@@ -17,4 +17,3 @@ void test_vshr_ns8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vshr\.s8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vshr_nu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vshr_nu16.c
+@@ -17,4 +17,3 @@ void test_vshr_nu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vshr\.u16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vshr_nu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vshr_nu32.c
+@@ -17,4 +17,3 @@ void test_vshr_nu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vshr\.u32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vshr_nu64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vshr_nu64.c
+@@ -17,4 +17,3 @@ void test_vshr_nu64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vshr\.u64\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vshr_nu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vshr_nu8.c
+@@ -17,4 +17,3 @@ void test_vshr_nu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vshr\.u8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vshrn_ns16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vshrn_ns16.c
+@@ -17,4 +17,3 @@ void test_vshrn_ns16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vshrn\.i16\[ 	\]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vshrn_ns32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vshrn_ns32.c
+@@ -17,4 +17,3 @@ void test_vshrn_ns32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vshrn\.i32\[ 	\]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vshrn_ns64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vshrn_ns64.c
+@@ -17,4 +17,3 @@ void test_vshrn_ns64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vshrn\.i64\[ 	\]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vshrn_nu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vshrn_nu16.c
+@@ -17,4 +17,3 @@ void test_vshrn_nu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vshrn\.i16\[ 	\]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vshrn_nu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vshrn_nu32.c
+@@ -17,4 +17,3 @@ void test_vshrn_nu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vshrn\.i32\[ 	\]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vshrn_nu64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vshrn_nu64.c
+@@ -17,4 +17,3 @@ void test_vshrn_nu64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vshrn\.i64\[ 	\]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vsliQ_np16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vsliQ_np16.c
+@@ -18,4 +18,3 @@ void test_vsliQ_np16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vsli\.16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vsliQ_np64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vsliQ_np64.c
+@@ -18,4 +18,3 @@ void test_vsliQ_np64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vsli\.64\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vsliQ_np8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vsliQ_np8.c
+@@ -18,4 +18,3 @@ void test_vsliQ_np8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vsli\.8\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vsliQ_ns16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vsliQ_ns16.c
+@@ -18,4 +18,3 @@ void test_vsliQ_ns16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vsli\.16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vsliQ_ns32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vsliQ_ns32.c
+@@ -18,4 +18,3 @@ void test_vsliQ_ns32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vsli\.32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vsliQ_ns64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vsliQ_ns64.c
+@@ -18,4 +18,3 @@ void test_vsliQ_ns64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vsli\.64\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vsliQ_ns8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vsliQ_ns8.c
+@@ -18,4 +18,3 @@ void test_vsliQ_ns8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vsli\.8\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vsliQ_nu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vsliQ_nu16.c
+@@ -18,4 +18,3 @@ void test_vsliQ_nu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vsli\.16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vsliQ_nu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vsliQ_nu32.c
+@@ -18,4 +18,3 @@ void test_vsliQ_nu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vsli\.32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vsliQ_nu64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vsliQ_nu64.c
+@@ -18,4 +18,3 @@ void test_vsliQ_nu64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vsli\.64\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vsliQ_nu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vsliQ_nu8.c
+@@ -18,4 +18,3 @@ void test_vsliQ_nu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vsli\.8\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vsli_np16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vsli_np16.c
+@@ -18,4 +18,3 @@ void test_vsli_np16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vsli\.16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vsli_np64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vsli_np64.c
+@@ -18,4 +18,3 @@ void test_vsli_np64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vsli\.64\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vsli_np8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vsli_np8.c
+@@ -18,4 +18,3 @@ void test_vsli_np8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vsli\.8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vsli_ns16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vsli_ns16.c
+@@ -18,4 +18,3 @@ void test_vsli_ns16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vsli\.16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vsli_ns32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vsli_ns32.c
+@@ -18,4 +18,3 @@ void test_vsli_ns32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vsli\.32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vsli_ns64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vsli_ns64.c
+@@ -18,4 +18,3 @@ void test_vsli_ns64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vsli\.64\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vsli_ns8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vsli_ns8.c
+@@ -18,4 +18,3 @@ void test_vsli_ns8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vsli\.8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vsli_nu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vsli_nu16.c
+@@ -18,4 +18,3 @@ void test_vsli_nu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vsli\.16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vsli_nu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vsli_nu32.c
+@@ -18,4 +18,3 @@ void test_vsli_nu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vsli\.32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vsli_nu64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vsli_nu64.c
+@@ -18,4 +18,3 @@ void test_vsli_nu64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vsli\.64\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vsli_nu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vsli_nu8.c
+@@ -18,4 +18,3 @@ void test_vsli_nu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vsli\.8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vsraQ_ns16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vsraQ_ns16.c
+@@ -18,4 +18,3 @@ void test_vsraQ_ns16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vsra\.s16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vsraQ_ns32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vsraQ_ns32.c
+@@ -18,4 +18,3 @@ void test_vsraQ_ns32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vsra\.s32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vsraQ_ns64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vsraQ_ns64.c
+@@ -18,4 +18,3 @@ void test_vsraQ_ns64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vsra\.s64\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vsraQ_ns8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vsraQ_ns8.c
+@@ -18,4 +18,3 @@ void test_vsraQ_ns8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vsra\.s8\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vsraQ_nu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vsraQ_nu16.c
+@@ -18,4 +18,3 @@ void test_vsraQ_nu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vsra\.u16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vsraQ_nu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vsraQ_nu32.c
+@@ -18,4 +18,3 @@ void test_vsraQ_nu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vsra\.u32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vsraQ_nu64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vsraQ_nu64.c
+@@ -18,4 +18,3 @@ void test_vsraQ_nu64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vsra\.u64\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vsraQ_nu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vsraQ_nu8.c
+@@ -18,4 +18,3 @@ void test_vsraQ_nu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vsra\.u8\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vsra_ns16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vsra_ns16.c
+@@ -18,4 +18,3 @@ void test_vsra_ns16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vsra\.s16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vsra_ns32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vsra_ns32.c
+@@ -18,4 +18,3 @@ void test_vsra_ns32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vsra\.s32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vsra_ns64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vsra_ns64.c
+@@ -18,4 +18,3 @@ void test_vsra_ns64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vsra\.s64\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vsra_ns8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vsra_ns8.c
+@@ -18,4 +18,3 @@ void test_vsra_ns8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vsra\.s8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vsra_nu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vsra_nu16.c
+@@ -18,4 +18,3 @@ void test_vsra_nu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vsra\.u16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vsra_nu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vsra_nu32.c
+@@ -18,4 +18,3 @@ void test_vsra_nu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vsra\.u32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vsra_nu64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vsra_nu64.c
+@@ -18,4 +18,3 @@ void test_vsra_nu64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vsra\.u64\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vsra_nu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vsra_nu8.c
+@@ -18,4 +18,3 @@ void test_vsra_nu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vsra\.u8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vsriQ_np16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vsriQ_np16.c
+@@ -18,4 +18,3 @@ void test_vsriQ_np16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vsri\.16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vsriQ_np64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vsriQ_np64.c
+@@ -18,4 +18,3 @@ void test_vsriQ_np64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vsri\.64\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vsriQ_np8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vsriQ_np8.c
+@@ -18,4 +18,3 @@ void test_vsriQ_np8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vsri\.8\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vsriQ_ns16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vsriQ_ns16.c
+@@ -18,4 +18,3 @@ void test_vsriQ_ns16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vsri\.16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vsriQ_ns32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vsriQ_ns32.c
+@@ -18,4 +18,3 @@ void test_vsriQ_ns32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vsri\.32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vsriQ_ns64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vsriQ_ns64.c
+@@ -18,4 +18,3 @@ void test_vsriQ_ns64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vsri\.64\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vsriQ_ns8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vsriQ_ns8.c
+@@ -18,4 +18,3 @@ void test_vsriQ_ns8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vsri\.8\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vsriQ_nu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vsriQ_nu16.c
+@@ -18,4 +18,3 @@ void test_vsriQ_nu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vsri\.16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vsriQ_nu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vsriQ_nu32.c
+@@ -18,4 +18,3 @@ void test_vsriQ_nu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vsri\.32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vsriQ_nu64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vsriQ_nu64.c
+@@ -18,4 +18,3 @@ void test_vsriQ_nu64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vsri\.64\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vsriQ_nu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vsriQ_nu8.c
+@@ -18,4 +18,3 @@ void test_vsriQ_nu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vsri\.8\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vsri_np16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vsri_np16.c
+@@ -18,4 +18,3 @@ void test_vsri_np16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vsri\.16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vsri_np64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vsri_np64.c
+@@ -18,4 +18,3 @@ void test_vsri_np64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vsri\.64\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vsri_np8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vsri_np8.c
+@@ -18,4 +18,3 @@ void test_vsri_np8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vsri\.8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vsri_ns16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vsri_ns16.c
+@@ -18,4 +18,3 @@ void test_vsri_ns16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vsri\.16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vsri_ns32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vsri_ns32.c
+@@ -18,4 +18,3 @@ void test_vsri_ns32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vsri\.32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vsri_ns64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vsri_ns64.c
+@@ -18,4 +18,3 @@ void test_vsri_ns64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vsri\.64\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vsri_ns8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vsri_ns8.c
+@@ -18,4 +18,3 @@ void test_vsri_ns8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vsri\.8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vsri_nu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vsri_nu16.c
+@@ -18,4 +18,3 @@ void test_vsri_nu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vsri\.16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vsri_nu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vsri_nu32.c
+@@ -18,4 +18,3 @@ void test_vsri_nu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vsri\.32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vsri_nu64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vsri_nu64.c
+@@ -18,4 +18,3 @@ void test_vsri_nu64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vsri\.64\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vsri_nu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vsri_nu8.c
+@@ -18,4 +18,3 @@ void test_vsri_nu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vsri\.8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanef32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanef32.c
+@@ -17,4 +17,3 @@ void test_vst1Q_lanef32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst1\.32\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanep16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanep16.c
+@@ -17,4 +17,3 @@ void test_vst1Q_lanep16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst1\.16\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanep64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanep64.c
+@@ -17,4 +17,3 @@ void test_vst1Q_lanep64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst1\.64\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanep8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanep8.c
+@@ -17,4 +17,3 @@ void test_vst1Q_lanep8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst1\.8\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanes16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanes16.c
+@@ -17,4 +17,3 @@ void test_vst1Q_lanes16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst1\.16\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanes32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanes32.c
+@@ -17,4 +17,3 @@ void test_vst1Q_lanes32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst1\.32\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanes64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanes64.c
+@@ -17,4 +17,3 @@ void test_vst1Q_lanes64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst1\.64\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanes8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst1Q_lanes8.c
+@@ -17,4 +17,3 @@ void test_vst1Q_lanes8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst1\.8\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst1Q_laneu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst1Q_laneu16.c
+@@ -17,4 +17,3 @@ void test_vst1Q_laneu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst1\.16\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst1Q_laneu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst1Q_laneu32.c
+@@ -17,4 +17,3 @@ void test_vst1Q_laneu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst1\.32\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst1Q_laneu64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst1Q_laneu64.c
+@@ -17,4 +17,3 @@ void test_vst1Q_laneu64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst1\.64\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst1Q_laneu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst1Q_laneu8.c
+@@ -17,4 +17,3 @@ void test_vst1Q_laneu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst1\.8\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst1Qf32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst1Qf32.c
+@@ -17,4 +17,3 @@ void test_vst1Qf32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst1\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst1Qp16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst1Qp16.c
+@@ -17,4 +17,3 @@ void test_vst1Qp16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst1\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst1Qp64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst1Qp64.c
+@@ -17,4 +17,3 @@ void test_vst1Qp64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst1\.64\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst1Qp8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst1Qp8.c
+@@ -17,4 +17,3 @@ void test_vst1Qp8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst1\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst1Qs16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst1Qs16.c
+@@ -17,4 +17,3 @@ void test_vst1Qs16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst1\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst1Qs32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst1Qs32.c
+@@ -17,4 +17,3 @@ void test_vst1Qs32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst1\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst1Qs64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst1Qs64.c
+@@ -17,4 +17,3 @@ void test_vst1Qs64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst1\.64\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst1Qs8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst1Qs8.c
+@@ -17,4 +17,3 @@ void test_vst1Qs8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst1\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst1Qu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst1Qu16.c
+@@ -17,4 +17,3 @@ void test_vst1Qu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst1\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst1Qu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst1Qu32.c
+@@ -17,4 +17,3 @@ void test_vst1Qu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst1\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst1Qu64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst1Qu64.c
+@@ -17,4 +17,3 @@ void test_vst1Qu64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst1\.64\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst1Qu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst1Qu8.c
+@@ -17,4 +17,3 @@ void test_vst1Qu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst1\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst1_lanef32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst1_lanef32.c
+@@ -17,4 +17,3 @@ void test_vst1_lanef32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst1\.32\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst1_lanep16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst1_lanep16.c
+@@ -17,4 +17,3 @@ void test_vst1_lanep16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst1\.16\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst1_lanep64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst1_lanep64.c
+@@ -17,4 +17,3 @@ void test_vst1_lanep64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst1\.64\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst1_lanep8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst1_lanep8.c
+@@ -17,4 +17,3 @@ void test_vst1_lanep8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst1\.8\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst1_lanes16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst1_lanes16.c
+@@ -17,4 +17,3 @@ void test_vst1_lanes16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst1\.16\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst1_lanes32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst1_lanes32.c
+@@ -17,4 +17,3 @@ void test_vst1_lanes32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst1\.32\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst1_lanes64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst1_lanes64.c
+@@ -17,4 +17,3 @@ void test_vst1_lanes64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst1\.64\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst1_lanes8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst1_lanes8.c
+@@ -17,4 +17,3 @@ void test_vst1_lanes8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst1\.8\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst1_laneu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst1_laneu16.c
+@@ -17,4 +17,3 @@ void test_vst1_laneu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst1\.16\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst1_laneu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst1_laneu32.c
+@@ -17,4 +17,3 @@ void test_vst1_laneu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst1\.32\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst1_laneu64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst1_laneu64.c
+@@ -17,4 +17,3 @@ void test_vst1_laneu64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst1\.64\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst1_laneu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst1_laneu8.c
+@@ -17,4 +17,3 @@ void test_vst1_laneu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst1\.8\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]\\\})|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst1f32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst1f32.c
+@@ -17,4 +17,3 @@ void test_vst1f32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst1\.32\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst1p16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst1p16.c
+@@ -17,4 +17,3 @@ void test_vst1p16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst1\.16\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst1p64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst1p64.c
+@@ -17,4 +17,3 @@ void test_vst1p64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst1\.64\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst1p8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst1p8.c
+@@ -17,4 +17,3 @@ void test_vst1p8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst1\.8\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst1s16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst1s16.c
+@@ -17,4 +17,3 @@ void test_vst1s16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst1\.16\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst1s32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst1s32.c
+@@ -17,4 +17,3 @@ void test_vst1s32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst1\.32\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst1s64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst1s64.c
+@@ -17,4 +17,3 @@ void test_vst1s64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst1\.64\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst1s8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst1s8.c
+@@ -17,4 +17,3 @@ void test_vst1s8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst1\.8\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst1u16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst1u16.c
+@@ -17,4 +17,3 @@ void test_vst1u16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst1\.16\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst1u32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst1u32.c
+@@ -17,4 +17,3 @@ void test_vst1u32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst1\.32\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst1u64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst1u64.c
+@@ -17,4 +17,3 @@ void test_vst1u64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst1\.64\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst1u8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst1u8.c
+@@ -17,4 +17,3 @@ void test_vst1u8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst1\.8\[ 	\]+((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst2Q_lanef32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst2Q_lanef32.c
+@@ -17,4 +17,3 @@ void test_vst2Q_lanef32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst2\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst2Q_lanep16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst2Q_lanep16.c
+@@ -17,4 +17,3 @@ void test_vst2Q_lanep16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst2\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst2Q_lanes16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst2Q_lanes16.c
+@@ -17,4 +17,3 @@ void test_vst2Q_lanes16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst2\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst2Q_lanes32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst2Q_lanes32.c
+@@ -17,4 +17,3 @@ void test_vst2Q_lanes32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst2\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst2Q_laneu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst2Q_laneu16.c
+@@ -17,4 +17,3 @@ void test_vst2Q_laneu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst2\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst2Q_laneu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst2Q_laneu32.c
+@@ -17,4 +17,3 @@ void test_vst2Q_laneu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst2\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst2Qf32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst2Qf32.c
+@@ -18,4 +18,3 @@ void test_vst2Qf32 (void)
+ 
+ /* { dg-final { scan-assembler "vst2\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { scan-assembler "vst2\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst2Qp16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst2Qp16.c
+@@ -18,4 +18,3 @@ void test_vst2Qp16 (void)
+ 
+ /* { dg-final { scan-assembler "vst2\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { scan-assembler "vst2\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst2Qp8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst2Qp8.c
+@@ -18,4 +18,3 @@ void test_vst2Qp8 (void)
+ 
+ /* { dg-final { scan-assembler "vst2\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { scan-assembler "vst2\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst2Qs16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst2Qs16.c
+@@ -18,4 +18,3 @@ void test_vst2Qs16 (void)
+ 
+ /* { dg-final { scan-assembler "vst2\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { scan-assembler "vst2\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst2Qs32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst2Qs32.c
+@@ -18,4 +18,3 @@ void test_vst2Qs32 (void)
+ 
+ /* { dg-final { scan-assembler "vst2\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { scan-assembler "vst2\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst2Qs8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst2Qs8.c
+@@ -18,4 +18,3 @@ void test_vst2Qs8 (void)
+ 
+ /* { dg-final { scan-assembler "vst2\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { scan-assembler "vst2\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst2Qu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst2Qu16.c
+@@ -18,4 +18,3 @@ void test_vst2Qu16 (void)
+ 
+ /* { dg-final { scan-assembler "vst2\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { scan-assembler "vst2\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst2Qu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst2Qu32.c
+@@ -18,4 +18,3 @@ void test_vst2Qu32 (void)
+ 
+ /* { dg-final { scan-assembler "vst2\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { scan-assembler "vst2\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst2Qu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst2Qu8.c
+@@ -18,4 +18,3 @@ void test_vst2Qu8 (void)
+ 
+ /* { dg-final { scan-assembler "vst2\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { scan-assembler "vst2\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst2_lanef32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst2_lanef32.c
+@@ -17,4 +17,3 @@ void test_vst2_lanef32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst2\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst2_lanep16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst2_lanep16.c
+@@ -17,4 +17,3 @@ void test_vst2_lanep16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst2\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst2_lanep8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst2_lanep8.c
+@@ -17,4 +17,3 @@ void test_vst2_lanep8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst2\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst2_lanes16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst2_lanes16.c
+@@ -17,4 +17,3 @@ void test_vst2_lanes16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst2\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst2_lanes32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst2_lanes32.c
+@@ -17,4 +17,3 @@ void test_vst2_lanes32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst2\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst2_lanes8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst2_lanes8.c
+@@ -17,4 +17,3 @@ void test_vst2_lanes8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst2\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst2_laneu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst2_laneu16.c
+@@ -17,4 +17,3 @@ void test_vst2_laneu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst2\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst2_laneu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst2_laneu32.c
+@@ -17,4 +17,3 @@ void test_vst2_laneu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst2\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst2_laneu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst2_laneu8.c
+@@ -17,4 +17,3 @@ void test_vst2_laneu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst2\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst2f32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst2f32.c
+@@ -17,4 +17,3 @@ void test_vst2f32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst2\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst2p16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst2p16.c
+@@ -17,4 +17,3 @@ void test_vst2p16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst2\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst2p64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst2p64.c
+@@ -17,4 +17,3 @@ void test_vst2p64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst1\.64\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst2p8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst2p8.c
+@@ -17,4 +17,3 @@ void test_vst2p8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst2\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst2s16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst2s16.c
+@@ -17,4 +17,3 @@ void test_vst2s16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst2\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst2s32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst2s32.c
+@@ -17,4 +17,3 @@ void test_vst2s32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst2\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst2s64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst2s64.c
+@@ -17,4 +17,3 @@ void test_vst2s64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst1\.64\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst2s8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst2s8.c
+@@ -17,4 +17,3 @@ void test_vst2s8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst2\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst2u16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst2u16.c
+@@ -17,4 +17,3 @@ void test_vst2u16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst2\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst2u32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst2u32.c
+@@ -17,4 +17,3 @@ void test_vst2u32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst2\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst2u64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst2u64.c
+@@ -17,4 +17,3 @@ void test_vst2u64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst1\.64\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst2u8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst2u8.c
+@@ -17,4 +17,3 @@ void test_vst2u8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst2\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst3Q_lanef32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst3Q_lanef32.c
+@@ -17,4 +17,3 @@ void test_vst3Q_lanef32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst3\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst3Q_lanep16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst3Q_lanep16.c
+@@ -17,4 +17,3 @@ void test_vst3Q_lanep16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst3\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst3Q_lanes16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst3Q_lanes16.c
+@@ -17,4 +17,3 @@ void test_vst3Q_lanes16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst3\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst3Q_lanes32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst3Q_lanes32.c
+@@ -17,4 +17,3 @@ void test_vst3Q_lanes32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst3\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst3Q_laneu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst3Q_laneu16.c
+@@ -17,4 +17,3 @@ void test_vst3Q_laneu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst3\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst3Q_laneu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst3Q_laneu32.c
+@@ -17,4 +17,3 @@ void test_vst3Q_laneu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst3\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst3Qf32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst3Qf32.c
+@@ -18,4 +18,3 @@ void test_vst3Qf32 (void)
+ 
+ /* { dg-final { scan-assembler "vst3\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { scan-assembler "vst3\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst3Qp16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst3Qp16.c
+@@ -18,4 +18,3 @@ void test_vst3Qp16 (void)
+ 
+ /* { dg-final { scan-assembler "vst3\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { scan-assembler "vst3\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst3Qp8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst3Qp8.c
+@@ -18,4 +18,3 @@ void test_vst3Qp8 (void)
+ 
+ /* { dg-final { scan-assembler "vst3\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { scan-assembler "vst3\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst3Qs16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst3Qs16.c
+@@ -18,4 +18,3 @@ void test_vst3Qs16 (void)
+ 
+ /* { dg-final { scan-assembler "vst3\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { scan-assembler "vst3\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst3Qs32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst3Qs32.c
+@@ -18,4 +18,3 @@ void test_vst3Qs32 (void)
+ 
+ /* { dg-final { scan-assembler "vst3\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { scan-assembler "vst3\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst3Qs8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst3Qs8.c
+@@ -18,4 +18,3 @@ void test_vst3Qs8 (void)
+ 
+ /* { dg-final { scan-assembler "vst3\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { scan-assembler "vst3\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst3Qu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst3Qu16.c
+@@ -18,4 +18,3 @@ void test_vst3Qu16 (void)
+ 
+ /* { dg-final { scan-assembler "vst3\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { scan-assembler "vst3\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst3Qu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst3Qu32.c
+@@ -18,4 +18,3 @@ void test_vst3Qu32 (void)
+ 
+ /* { dg-final { scan-assembler "vst3\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { scan-assembler "vst3\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst3Qu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst3Qu8.c
+@@ -18,4 +18,3 @@ void test_vst3Qu8 (void)
+ 
+ /* { dg-final { scan-assembler "vst3\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { scan-assembler "vst3\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst3_lanef32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst3_lanef32.c
+@@ -17,4 +17,3 @@ void test_vst3_lanef32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst3\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst3_lanep16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst3_lanep16.c
+@@ -17,4 +17,3 @@ void test_vst3_lanep16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst3\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst3_lanep8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst3_lanep8.c
+@@ -17,4 +17,3 @@ void test_vst3_lanep8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst3\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst3_lanes16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst3_lanes16.c
+@@ -17,4 +17,3 @@ void test_vst3_lanes16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst3\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst3_lanes32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst3_lanes32.c
+@@ -17,4 +17,3 @@ void test_vst3_lanes32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst3\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst3_lanes8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst3_lanes8.c
+@@ -17,4 +17,3 @@ void test_vst3_lanes8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst3\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst3_laneu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst3_laneu16.c
+@@ -17,4 +17,3 @@ void test_vst3_laneu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst3\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst3_laneu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst3_laneu32.c
+@@ -17,4 +17,3 @@ void test_vst3_laneu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst3\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst3_laneu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst3_laneu8.c
+@@ -17,4 +17,3 @@ void test_vst3_laneu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst3\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst3f32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst3f32.c
+@@ -17,4 +17,3 @@ void test_vst3f32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst3\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst3p16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst3p16.c
+@@ -17,4 +17,3 @@ void test_vst3p16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst3\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst3p64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst3p64.c
+@@ -17,4 +17,3 @@ void test_vst3p64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst1\.64\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst3p8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst3p8.c
+@@ -17,4 +17,3 @@ void test_vst3p8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst3\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst3s16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst3s16.c
+@@ -17,4 +17,3 @@ void test_vst3s16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst3\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst3s32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst3s32.c
+@@ -17,4 +17,3 @@ void test_vst3s32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst3\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst3s64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst3s64.c
+@@ -17,4 +17,3 @@ void test_vst3s64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst1\.64\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst3s8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst3s8.c
+@@ -17,4 +17,3 @@ void test_vst3s8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst3\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst3u16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst3u16.c
+@@ -17,4 +17,3 @@ void test_vst3u16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst3\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst3u32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst3u32.c
+@@ -17,4 +17,3 @@ void test_vst3u32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst3\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst3u64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst3u64.c
+@@ -17,4 +17,3 @@ void test_vst3u64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst1\.64\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst3u8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst3u8.c
+@@ -17,4 +17,3 @@ void test_vst3u8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst3\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst4Q_lanef32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst4Q_lanef32.c
+@@ -17,4 +17,3 @@ void test_vst4Q_lanef32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst4\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst4Q_lanep16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst4Q_lanep16.c
+@@ -17,4 +17,3 @@ void test_vst4Q_lanep16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst4\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst4Q_lanes16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst4Q_lanes16.c
+@@ -17,4 +17,3 @@ void test_vst4Q_lanes16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst4\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst4Q_lanes32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst4Q_lanes32.c
+@@ -17,4 +17,3 @@ void test_vst4Q_lanes32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst4\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst4Q_laneu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst4Q_laneu16.c
+@@ -17,4 +17,3 @@ void test_vst4Q_laneu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst4\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst4Q_laneu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst4Q_laneu32.c
+@@ -17,4 +17,3 @@ void test_vst4Q_laneu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst4\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst4Qf32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst4Qf32.c
+@@ -18,4 +18,3 @@ void test_vst4Qf32 (void)
+ 
+ /* { dg-final { scan-assembler "vst4\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { scan-assembler "vst4\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst4Qp16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst4Qp16.c
+@@ -18,4 +18,3 @@ void test_vst4Qp16 (void)
+ 
+ /* { dg-final { scan-assembler "vst4\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { scan-assembler "vst4\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst4Qp8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst4Qp8.c
+@@ -18,4 +18,3 @@ void test_vst4Qp8 (void)
+ 
+ /* { dg-final { scan-assembler "vst4\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { scan-assembler "vst4\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst4Qs16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst4Qs16.c
+@@ -18,4 +18,3 @@ void test_vst4Qs16 (void)
+ 
+ /* { dg-final { scan-assembler "vst4\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { scan-assembler "vst4\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst4Qs32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst4Qs32.c
+@@ -18,4 +18,3 @@ void test_vst4Qs32 (void)
+ 
+ /* { dg-final { scan-assembler "vst4\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { scan-assembler "vst4\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst4Qs8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst4Qs8.c
+@@ -18,4 +18,3 @@ void test_vst4Qs8 (void)
+ 
+ /* { dg-final { scan-assembler "vst4\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { scan-assembler "vst4\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst4Qu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst4Qu16.c
+@@ -18,4 +18,3 @@ void test_vst4Qu16 (void)
+ 
+ /* { dg-final { scan-assembler "vst4\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { scan-assembler "vst4\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst4Qu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst4Qu32.c
+@@ -18,4 +18,3 @@ void test_vst4Qu32 (void)
+ 
+ /* { dg-final { scan-assembler "vst4\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { scan-assembler "vst4\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst4Qu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst4Qu8.c
+@@ -18,4 +18,3 @@ void test_vst4Qu8 (void)
+ 
+ /* { dg-final { scan-assembler "vst4\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+ /* { dg-final { scan-assembler "vst4\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst4_lanef32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst4_lanef32.c
+@@ -17,4 +17,3 @@ void test_vst4_lanef32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst4\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst4_lanep16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst4_lanep16.c
+@@ -17,4 +17,3 @@ void test_vst4_lanep16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst4\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst4_lanep8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst4_lanep8.c
+@@ -17,4 +17,3 @@ void test_vst4_lanep8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst4\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst4_lanes16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst4_lanes16.c
+@@ -17,4 +17,3 @@ void test_vst4_lanes16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst4\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst4_lanes32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst4_lanes32.c
+@@ -17,4 +17,3 @@ void test_vst4_lanes32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst4\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst4_lanes8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst4_lanes8.c
+@@ -17,4 +17,3 @@ void test_vst4_lanes8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst4\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst4_laneu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst4_laneu16.c
+@@ -17,4 +17,3 @@ void test_vst4_laneu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst4\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst4_laneu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst4_laneu32.c
+@@ -17,4 +17,3 @@ void test_vst4_laneu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst4\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst4_laneu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst4_laneu8.c
+@@ -17,4 +17,3 @@ void test_vst4_laneu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst4\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+\\\[\[0-9\]+\\\]-\[dD\]\[0-9\]+\\\[\[0-9\]+\\\])|(\[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\], \[dD\]\[0-9\]+\\\[\[0-9\]+\\\]))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst4f32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst4f32.c
+@@ -17,4 +17,3 @@ void test_vst4f32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst4\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst4p16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst4p16.c
+@@ -17,4 +17,3 @@ void test_vst4p16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst4\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst4p64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst4p64.c
+@@ -17,4 +17,3 @@ void test_vst4p64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst1\.64\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst4p8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst4p8.c
+@@ -17,4 +17,3 @@ void test_vst4p8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst4\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst4s16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst4s16.c
+@@ -17,4 +17,3 @@ void test_vst4s16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst4\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst4s32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst4s32.c
+@@ -17,4 +17,3 @@ void test_vst4s32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst4\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst4s64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst4s64.c
+@@ -17,4 +17,3 @@ void test_vst4s64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst1\.64\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst4s8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst4s8.c
+@@ -17,4 +17,3 @@ void test_vst4s8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst4\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst4u16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst4u16.c
+@@ -17,4 +17,3 @@ void test_vst4u16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst4\.16\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst4u32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst4u32.c
+@@ -17,4 +17,3 @@ void test_vst4u32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst4\.32\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst4u64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst4u64.c
+@@ -17,4 +17,3 @@ void test_vst4u64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst1\.64\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vst4u8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vst4u8.c
+@@ -17,4 +17,3 @@ void test_vst4u8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vst4\.8\[ 	\]+\\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \\\[\[rR\]\[0-9\]+\(:\[0-9\]+\)?\\\]!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vsubQf32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vsubQf32.c
+@@ -18,4 +18,3 @@ void test_vsubQf32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vsub\.f32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vsubQs16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vsubQs16.c
+@@ -18,4 +18,3 @@ void test_vsubQs16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vsub\.i16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vsubQs32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vsubQs32.c
+@@ -18,4 +18,3 @@ void test_vsubQs32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vsub\.i32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vsubQs64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vsubQs64.c
+@@ -18,4 +18,3 @@ void test_vsubQs64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vsub\.i64\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vsubQs8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vsubQs8.c
+@@ -18,4 +18,3 @@ void test_vsubQs8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vsub\.i8\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vsubQu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vsubQu16.c
+@@ -18,4 +18,3 @@ void test_vsubQu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vsub\.i16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vsubQu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vsubQu32.c
+@@ -18,4 +18,3 @@ void test_vsubQu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vsub\.i32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vsubQu64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vsubQu64.c
+@@ -18,4 +18,3 @@ void test_vsubQu64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vsub\.i64\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vsubQu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vsubQu8.c
+@@ -18,4 +18,3 @@ void test_vsubQu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vsub\.i8\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vsubf32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vsubf32.c
+@@ -18,4 +18,3 @@ void test_vsubf32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vsub\.f32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vsubhns16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vsubhns16.c
+@@ -18,4 +18,3 @@ void test_vsubhns16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vsubhn\.i16\[ 	\]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vsubhns32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vsubhns32.c
+@@ -18,4 +18,3 @@ void test_vsubhns32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vsubhn\.i32\[ 	\]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vsubhns64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vsubhns64.c
+@@ -18,4 +18,3 @@ void test_vsubhns64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vsubhn\.i64\[ 	\]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vsubhnu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vsubhnu16.c
+@@ -18,4 +18,3 @@ void test_vsubhnu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vsubhn\.i16\[ 	\]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vsubhnu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vsubhnu32.c
+@@ -18,4 +18,3 @@ void test_vsubhnu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vsubhn\.i32\[ 	\]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vsubhnu64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vsubhnu64.c
+@@ -18,4 +18,3 @@ void test_vsubhnu64 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vsubhn\.i64\[ 	\]+\[dD\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vsubls16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vsubls16.c
+@@ -18,4 +18,3 @@ void test_vsubls16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vsubl\.s16\[ 	\]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vsubls32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vsubls32.c
+@@ -18,4 +18,3 @@ void test_vsubls32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vsubl\.s32\[ 	\]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vsubls8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vsubls8.c
+@@ -18,4 +18,3 @@ void test_vsubls8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vsubl\.s8\[ 	\]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vsublu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vsublu16.c
+@@ -18,4 +18,3 @@ void test_vsublu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vsubl\.u16\[ 	\]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vsublu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vsublu32.c
+@@ -18,4 +18,3 @@ void test_vsublu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vsubl\.u32\[ 	\]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vsublu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vsublu8.c
+@@ -18,4 +18,3 @@ void test_vsublu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vsubl\.u8\[ 	\]+\[qQ\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vsubs16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vsubs16.c
+@@ -18,4 +18,3 @@ void test_vsubs16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vsub\.i16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vsubs32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vsubs32.c
+@@ -18,4 +18,3 @@ void test_vsubs32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vsub\.i32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vsubs64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vsubs64.c
+@@ -17,4 +17,3 @@ void test_vsubs64 (void)
+   out_int64x1_t = vsub_s64 (arg0_int64x1_t, arg1_int64x1_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vsubs8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vsubs8.c
+@@ -18,4 +18,3 @@ void test_vsubs8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vsub\.i8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vsubu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vsubu16.c
+@@ -18,4 +18,3 @@ void test_vsubu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vsub\.i16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vsubu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vsubu32.c
+@@ -18,4 +18,3 @@ void test_vsubu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vsub\.i32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vsubu64.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vsubu64.c
+@@ -17,4 +17,3 @@ void test_vsubu64 (void)
+   out_uint64x1_t = vsub_u64 (arg0_uint64x1_t, arg1_uint64x1_t);
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vsubu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vsubu8.c
+@@ -18,4 +18,3 @@ void test_vsubu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vsub\.i8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vsubws16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vsubws16.c
+@@ -18,4 +18,3 @@ void test_vsubws16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vsubw\.s16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vsubws32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vsubws32.c
+@@ -18,4 +18,3 @@ void test_vsubws32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vsubw\.s32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vsubws8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vsubws8.c
+@@ -18,4 +18,3 @@ void test_vsubws8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vsubw\.s8\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vsubwu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vsubwu16.c
+@@ -18,4 +18,3 @@ void test_vsubwu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vsubw\.u16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vsubwu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vsubwu32.c
+@@ -18,4 +18,3 @@ void test_vsubwu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vsubw\.u32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vsubwu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vsubwu8.c
+@@ -18,4 +18,3 @@ void test_vsubwu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vsubw\.u8\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vtbl1p8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vtbl1p8.c
+@@ -18,4 +18,3 @@ void test_vtbl1p8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vtbl\.8\[ 	\]+\[dD\]\[0-9\]+, ((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vtbl1s8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vtbl1s8.c
+@@ -18,4 +18,3 @@ void test_vtbl1s8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vtbl\.8\[ 	\]+\[dD\]\[0-9\]+, ((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vtbl1u8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vtbl1u8.c
+@@ -18,4 +18,3 @@ void test_vtbl1u8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vtbl\.8\[ 	\]+\[dD\]\[0-9\]+, ((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vtbl2p8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vtbl2p8.c
+@@ -18,4 +18,3 @@ void test_vtbl2p8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vtbl\.8\[ 	\]+\[dD\]\[0-9\]+, \\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vtbl2s8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vtbl2s8.c
+@@ -18,4 +18,3 @@ void test_vtbl2s8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vtbl\.8\[ 	\]+\[dD\]\[0-9\]+, \\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vtbl2u8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vtbl2u8.c
+@@ -18,4 +18,3 @@ void test_vtbl2u8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vtbl\.8\[ 	\]+\[dD\]\[0-9\]+, \\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vtbl3p8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vtbl3p8.c
+@@ -18,4 +18,3 @@ void test_vtbl3p8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vtbl\.8\[ 	\]+\[dD\]\[0-9\]+, \\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vtbl3s8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vtbl3s8.c
+@@ -18,4 +18,3 @@ void test_vtbl3s8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vtbl\.8\[ 	\]+\[dD\]\[0-9\]+, \\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vtbl3u8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vtbl3u8.c
+@@ -18,4 +18,3 @@ void test_vtbl3u8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vtbl\.8\[ 	\]+\[dD\]\[0-9\]+, \\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vtbl4p8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vtbl4p8.c
+@@ -18,4 +18,3 @@ void test_vtbl4p8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vtbl\.8\[ 	\]+\[dD\]\[0-9\]+, \\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vtbl4s8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vtbl4s8.c
+@@ -18,4 +18,3 @@ void test_vtbl4s8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vtbl\.8\[ 	\]+\[dD\]\[0-9\]+, \\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vtbl4u8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vtbl4u8.c
+@@ -18,4 +18,3 @@ void test_vtbl4u8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vtbl\.8\[ 	\]+\[dD\]\[0-9\]+, \\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vtbx1p8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vtbx1p8.c
+@@ -19,4 +19,3 @@ void test_vtbx1p8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vtbx\.8\[ 	\]+\[dD\]\[0-9\]+, ((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vtbx1s8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vtbx1s8.c
+@@ -19,4 +19,3 @@ void test_vtbx1s8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vtbx\.8\[ 	\]+\[dD\]\[0-9\]+, ((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vtbx1u8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vtbx1u8.c
+@@ -19,4 +19,3 @@ void test_vtbx1u8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vtbx\.8\[ 	\]+\[dD\]\[0-9\]+, ((\\\{\[dD\]\[0-9\]+\\\})|(\[dD\]\[0-9\]+)), \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vtbx2p8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vtbx2p8.c
+@@ -19,4 +19,3 @@ void test_vtbx2p8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vtbx\.8\[ 	\]+\[dD\]\[0-9\]+, \\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vtbx2s8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vtbx2s8.c
+@@ -19,4 +19,3 @@ void test_vtbx2s8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vtbx\.8\[ 	\]+\[dD\]\[0-9\]+, \\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vtbx2u8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vtbx2u8.c
+@@ -19,4 +19,3 @@ void test_vtbx2u8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vtbx\.8\[ 	\]+\[dD\]\[0-9\]+, \\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vtbx3p8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vtbx3p8.c
+@@ -19,4 +19,3 @@ void test_vtbx3p8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vtbx\.8\[ 	\]+\[dD\]\[0-9\]+, \\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vtbx3s8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vtbx3s8.c
+@@ -19,4 +19,3 @@ void test_vtbx3s8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vtbx\.8\[ 	\]+\[dD\]\[0-9\]+, \\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vtbx3u8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vtbx3u8.c
+@@ -19,4 +19,3 @@ void test_vtbx3u8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vtbx\.8\[ 	\]+\[dD\]\[0-9\]+, \\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vtbx4p8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vtbx4p8.c
+@@ -19,4 +19,3 @@ void test_vtbx4p8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vtbx\.8\[ 	\]+\[dD\]\[0-9\]+, \\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vtbx4s8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vtbx4s8.c
+@@ -19,4 +19,3 @@ void test_vtbx4s8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vtbx\.8\[ 	\]+\[dD\]\[0-9\]+, \\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vtbx4u8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vtbx4u8.c
+@@ -19,4 +19,3 @@ void test_vtbx4u8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vtbx\.8\[ 	\]+\[dD\]\[0-9\]+, \\\{((\[dD\]\[0-9\]+-\[dD\]\[0-9\]+)|(\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+))\\\}, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vtrnQf32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vtrnQf32.c
+@@ -18,4 +18,3 @@ void test_vtrnQf32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vtrn\.32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vtrnQp16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vtrnQp16.c
+@@ -18,4 +18,3 @@ void test_vtrnQp16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vtrn\.16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vtrnQp8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vtrnQp8.c
+@@ -18,4 +18,3 @@ void test_vtrnQp8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vtrn\.8\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vtrnQs16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vtrnQs16.c
+@@ -18,4 +18,3 @@ void test_vtrnQs16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vtrn\.16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vtrnQs32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vtrnQs32.c
+@@ -18,4 +18,3 @@ void test_vtrnQs32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vtrn\.32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vtrnQs8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vtrnQs8.c
+@@ -18,4 +18,3 @@ void test_vtrnQs8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vtrn\.8\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vtrnQu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vtrnQu16.c
+@@ -18,4 +18,3 @@ void test_vtrnQu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vtrn\.16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vtrnQu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vtrnQu32.c
+@@ -18,4 +18,3 @@ void test_vtrnQu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vtrn\.32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vtrnQu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vtrnQu8.c
+@@ -18,4 +18,3 @@ void test_vtrnQu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vtrn\.8\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vtrnf32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vtrnf32.c
+@@ -18,4 +18,3 @@ void test_vtrnf32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vuzp\.32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vtrnp16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vtrnp16.c
+@@ -18,4 +18,3 @@ void test_vtrnp16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vtrn\.16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vtrnp8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vtrnp8.c
+@@ -18,4 +18,3 @@ void test_vtrnp8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vtrn\.8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vtrns16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vtrns16.c
+@@ -18,4 +18,3 @@ void test_vtrns16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vtrn\.16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vtrns32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vtrns32.c
+@@ -18,4 +18,3 @@ void test_vtrns32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vuzp\.32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vtrns8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vtrns8.c
+@@ -18,4 +18,3 @@ void test_vtrns8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vtrn\.8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vtrnu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vtrnu16.c
+@@ -18,4 +18,3 @@ void test_vtrnu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vtrn\.16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vtrnu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vtrnu32.c
+@@ -18,4 +18,3 @@ void test_vtrnu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vuzp\.32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vtrnu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vtrnu8.c
+@@ -18,4 +18,3 @@ void test_vtrnu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vtrn\.8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vtstQp8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vtstQp8.c
+@@ -18,4 +18,3 @@ void test_vtstQp8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vtst\.8\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vtstQs16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vtstQs16.c
+@@ -18,4 +18,3 @@ void test_vtstQs16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vtst\.16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vtstQs32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vtstQs32.c
+@@ -18,4 +18,3 @@ void test_vtstQs32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vtst\.32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vtstQs8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vtstQs8.c
+@@ -18,4 +18,3 @@ void test_vtstQs8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vtst\.8\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vtstQu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vtstQu16.c
+@@ -18,4 +18,3 @@ void test_vtstQu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vtst\.16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vtstQu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vtstQu32.c
+@@ -18,4 +18,3 @@ void test_vtstQu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vtst\.32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vtstQu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vtstQu8.c
+@@ -18,4 +18,3 @@ void test_vtstQu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vtst\.8\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vtstp8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vtstp8.c
+@@ -18,4 +18,3 @@ void test_vtstp8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vtst\.8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vtsts16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vtsts16.c
+@@ -18,4 +18,3 @@ void test_vtsts16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vtst\.16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vtsts32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vtsts32.c
+@@ -18,4 +18,3 @@ void test_vtsts32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vtst\.32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vtsts8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vtsts8.c
+@@ -18,4 +18,3 @@ void test_vtsts8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vtst\.8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vtstu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vtstu16.c
+@@ -18,4 +18,3 @@ void test_vtstu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vtst\.16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vtstu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vtstu32.c
+@@ -18,4 +18,3 @@ void test_vtstu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vtst\.32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vtstu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vtstu8.c
+@@ -18,4 +18,3 @@ void test_vtstu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vtst\.8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vuzpQf32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vuzpQf32.c
+@@ -18,4 +18,3 @@ void test_vuzpQf32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vuzp\.32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vuzpQp16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vuzpQp16.c
+@@ -18,4 +18,3 @@ void test_vuzpQp16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vuzp\.16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vuzpQp8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vuzpQp8.c
+@@ -18,4 +18,3 @@ void test_vuzpQp8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vuzp\.8\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vuzpQs16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vuzpQs16.c
+@@ -18,4 +18,3 @@ void test_vuzpQs16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vuzp\.16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vuzpQs32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vuzpQs32.c
+@@ -18,4 +18,3 @@ void test_vuzpQs32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vuzp\.32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vuzpQs8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vuzpQs8.c
+@@ -18,4 +18,3 @@ void test_vuzpQs8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vuzp\.8\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vuzpQu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vuzpQu16.c
+@@ -18,4 +18,3 @@ void test_vuzpQu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vuzp\.16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vuzpQu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vuzpQu32.c
+@@ -18,4 +18,3 @@ void test_vuzpQu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vuzp\.32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vuzpQu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vuzpQu8.c
+@@ -18,4 +18,3 @@ void test_vuzpQu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vuzp\.8\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vuzpf32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vuzpf32.c
+@@ -18,4 +18,3 @@ void test_vuzpf32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vuzp\.32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vuzpp16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vuzpp16.c
+@@ -18,4 +18,3 @@ void test_vuzpp16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vuzp\.16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vuzpp8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vuzpp8.c
+@@ -18,4 +18,3 @@ void test_vuzpp8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vuzp\.8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vuzps16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vuzps16.c
+@@ -18,4 +18,3 @@ void test_vuzps16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vuzp\.16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vuzps32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vuzps32.c
+@@ -18,4 +18,3 @@ void test_vuzps32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vuzp\.32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vuzps8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vuzps8.c
+@@ -18,4 +18,3 @@ void test_vuzps8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vuzp\.8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vuzpu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vuzpu16.c
+@@ -18,4 +18,3 @@ void test_vuzpu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vuzp\.16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vuzpu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vuzpu32.c
+@@ -18,4 +18,3 @@ void test_vuzpu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vuzp\.32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vuzpu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vuzpu8.c
+@@ -18,4 +18,3 @@ void test_vuzpu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vuzp\.8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vzipQf32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vzipQf32.c
+@@ -18,4 +18,3 @@ void test_vzipQf32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vzip\.32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vzipQp16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vzipQp16.c
+@@ -18,4 +18,3 @@ void test_vzipQp16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vzip\.16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vzipQp8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vzipQp8.c
+@@ -18,4 +18,3 @@ void test_vzipQp8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vzip\.8\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vzipQs16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vzipQs16.c
+@@ -18,4 +18,3 @@ void test_vzipQs16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vzip\.16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vzipQs32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vzipQs32.c
+@@ -18,4 +18,3 @@ void test_vzipQs32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vzip\.32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vzipQs8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vzipQs8.c
+@@ -18,4 +18,3 @@ void test_vzipQs8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vzip\.8\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vzipQu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vzipQu16.c
+@@ -18,4 +18,3 @@ void test_vzipQu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vzip\.16\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vzipQu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vzipQu32.c
+@@ -18,4 +18,3 @@ void test_vzipQu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vzip\.32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vzipQu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vzipQu8.c
+@@ -18,4 +18,3 @@ void test_vzipQu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vzip\.8\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vzipf32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vzipf32.c
+@@ -18,4 +18,3 @@ void test_vzipf32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vuzp\.32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vzipp16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vzipp16.c
+@@ -18,4 +18,3 @@ void test_vzipp16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vzip\.16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vzipp8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vzipp8.c
+@@ -18,4 +18,3 @@ void test_vzipp8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vzip\.8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vzips16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vzips16.c
+@@ -18,4 +18,3 @@ void test_vzips16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vzip\.16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vzips32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vzips32.c
+@@ -18,4 +18,3 @@ void test_vzips32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vuzp\.32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vzips8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vzips8.c
+@@ -18,4 +18,3 @@ void test_vzips8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vzip\.8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vzipu16.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vzipu16.c
+@@ -18,4 +18,3 @@ void test_vzipu16 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vzip\.16\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vzipu32.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vzipu32.c
+@@ -18,4 +18,3 @@ void test_vzipu32 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vuzp\.32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/neon/vzipu8.c
++++ b/src/gcc/testsuite/gcc.target/arm/neon/vzipu8.c
+@@ -18,4 +18,3 @@ void test_vzipu8 (void)
+ }
+ 
+ /* { dg-final { scan-assembler "vzip\.8\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ 	\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/no-volatile-in-it.c
++++ b/src/gcc/testsuite/gcc.target/arm/no-volatile-in-it.c
+@@ -1,5 +1,6 @@
+ /* { dg-do compile } */
+ /* { dg-require-effective-target arm_thumb2_ok } */
++/* { dg-skip-if "do not override -mcpu" { *-*-* } { "-march=*" "-mcpu=*" } { "-mcpu=cortex-m7" } } */
+ /* { dg-options "-Os -mthumb -mcpu=cortex-m7" } */
+ 
+ int
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/arm/pr26702.c
+@@ -0,0 +1,4 @@
++/* { dg-do compile { target arm*-*-eabi* } } */
++/* { dg-final { scan-assembler "\\.size\[\\t \]+static_foo, 4" } } */
++int foo;
++static int static_foo;
+--- a/src/gcc/testsuite/gcc.target/arm/pr42172-1.c
++++ b/src/gcc/testsuite/gcc.target/arm/pr42172-1.c
+@@ -16,4 +16,4 @@ void init_A (struct A *this)
+   this->f4 = 0;
+ }
+ 
+-/* { dg-final { scan-assembler-times "ldr" 1 } } */
++/* { dg-final { scan-assembler-times "str" 1 } } */
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/arm/pr43404.c
+@@ -0,0 +1,10 @@
++/* { dg-do compile } */
++/* { dg-require-effective-target naked_functions } */
++/* { dg-options "-O0" } */
++
++__attribute__ ((naked))
++void __data_abort(void)
++{
++  long foo; /* { dg-error "cannot allocate stack for variable" } */
++  long* bar = &foo;
++}
+--- a/src/gcc/testsuite/gcc.target/arm/pr43597.c
++++ b/src/gcc/testsuite/gcc.target/arm/pr43597.c
+@@ -25,4 +25,3 @@ foo4 ()
+ /* { dg-final { scan-assembler-times "sub" 1 } } */
+ /* { dg-final { scan-assembler-times "cmp" 0 } } */
+ /* { dg-final { object-size text <= 30 } } */
+-/* { dg-final { cleanup-saved-temps "pr43597" } } */
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/arm/pr48470.c
+@@ -0,0 +1,11 @@
++/* { dg-do compile } */
++/* { dg-require-effective-target naked_functions } */
++/* { dg-options "-O0" } */
++
++extern void g(int *x);
++
++void __attribute__((naked)) f(void)
++{
++    int x = 0; /* { dg-error "cannot allocate stack for variable" } */
++    g(&x);
++}
+--- a/src/gcc/testsuite/gcc.target/arm/pr58784.c
++++ b/src/gcc/testsuite/gcc.target/arm/pr58784.c
+@@ -1,6 +1,8 @@
+ /* { dg-do compile } */
+ /* { dg-skip-if "incompatible options" { arm_thumb1 } { "*" } { "" } } */
+ /* { dg-options "-march=armv7-a -mfloat-abi=hard -mfpu=neon -marm -O2" } */
++/* { dg-skip-if "need hardfp ABI" { *-*-* } { "-mfloat-abi=soft" } { "" } } */
++
+ 
+ typedef struct __attribute__ ((__packed__))
+ {
+--- a/src/gcc/testsuite/gcc.target/arm/pr59985.C
++++ b/src/gcc/testsuite/gcc.target/arm/pr59985.C
+@@ -1,6 +1,7 @@
+ /* { dg-do compile } */
+ /* { dg-skip-if "incompatible options" { arm_thumb1 } { "*" } { "" } } */
+ /* { dg-options "-g -fcompare-debug -O2 -march=armv7-a -mtune=cortex-a9 -mfpu=vfpv3-d16 -mfloat-abi=hard" } */
++/* { dg-skip-if "need hardfp abi" { *-*-* } { "-mfloat-abi=soft" } { "" } } */
+ 
+ extern void *f1 (unsigned long, unsigned long);
+ extern const struct line_map *f2 (void *, int, unsigned int, const char *, unsigned int);
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/arm/pr64208.c
+@@ -0,0 +1,25 @@
++/* { dg-do compile } */
++/* { dg-skip-if "Test is specific to the iWMMXt" { arm*-*-* } { "-mcpu=*" } { "-mcpu=iwmmxt" } } */
++/* { dg-skip-if "Test is specific to the iWMMXt" { arm*-*-* } { "-mabi=*" } { "-mabi=iwmmxt" } } */
++/* { dg-skip-if "Test is specific to the iWMMXt" { arm*-*-* } { "-march=*" } { "-march=iwmmxt" } } */
++/* { dg-skip-if "Test is specific to ARM mode" { arm*-*-* } { "-mthumb" } { "" } } */
++/* { dg-require-effective-target arm32 } */
++/* { dg-require-effective-target arm_iwmmxt_ok } */
++/* { dg-options "-O1 -mcpu=iwmmxt" } */
++
++long long x6(void);
++void x7(long long, long long);
++void x8(long long);
++
++int x0;
++long long *x1;
++
++void x2(void) {
++  long long *x3 = x1;
++  while (x1) {
++    long long x4 = x0, x5 = x6();
++    x7(x4, x5);
++    x8(x5);
++    *x3 = 0;
++  }
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/arm/pr64616.c
+@@ -0,0 +1,14 @@
++/* { dg-do compile } */
++/* { dg-options "-O2 -fdump-rtl-cprop2" } */
++
++int f (int);
++unsigned int glob;
++
++void
++g ()
++{
++  while (f (glob));
++  glob = 5;
++}
++
++/* { dg-final { scan-rtl-dump "GLOBAL COPY-PROP" "cprop2" } } */
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/arm/pr64744-1.c
+@@ -0,0 +1,40 @@
++/* { dg-do compile } */
++/* { dg-require-effective-target naked_functions } */
++/* { dg-options "-O0" } */
++
++__attribute__((naked))
++void foo1 ()
++{
++  int aa = 0;
++  int ab = {0};
++}
++
++__attribute__((naked))
++void foo2() {
++  char aa [ ] = {}; /* { dg-error "cannot allocate stack for variable" } */
++  char ab [1] = {};
++  char ac [2] = {}; /* { dg-error "cannot allocate stack for variable" } */
++  char ad [3] = {}; /* { dg-error "cannot allocate stack for variable" } */
++}
++
++__attribute__((naked))
++void foo3() {
++  char aa [1] = {0};
++  char ab [2] = {0}; /* { dg-error "cannot allocate stack for variable" } */
++  char ac [3] = {0}; /* { dg-error "cannot allocate stack for variable" } */
++  char ad [4] = {0}; /* { dg-error "cannot allocate stack for variable" } */
++}
++
++__attribute__((naked))
++void foo4() {
++  char aa [2] = {0,0}; /* { dg-error "cannot allocate stack for variable" } */
++}
++__attribute__((naked))
++void foo5() {
++  char aa [3] = {0,0,0}; /* { dg-error "cannot allocate stack for variable" } */
++}
++
++__attribute__((naked))
++void foo6() {
++  char aa [4] = {0,0,0,0}; /* { dg-error "cannot allocate stack for variable" } */
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/arm/pr64744-2.c
+@@ -0,0 +1,13 @@
++/* { dg-do compile } */
++/* { dg-require-effective-target naked_functions } */
++/* { dg-options "-O0" } */
++
++struct s {
++  char a;
++    int b;
++};
++
++__attribute__((naked))
++void foo () {
++  struct s x = {}; /* { dg-error "cannot allocate stack for variable" } */
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/arm/pr64818.c
+@@ -0,0 +1,30 @@
++/* { dg-do compile } */
++/* { dg-options "-O1" } */
++
++char temp[16];
++extern int foo1 (void);
++
++void foo (void)
++{
++  int i;
++  int len;
++
++  while (1)
++  {
++    len = foo1 ();
++    register int a asm ("r0") = 5;
++    register char *b asm ("r1") = temp;
++    register int c asm ("r2") = len;
++    asm volatile ("mov %[r0], %[r0]\n  mov %[r1], %[r1]\n  mov %[r2], %[r2]\n"
++		   : "+m"(*b)
++		   : [r0]"r"(a), [r1]"r"(b), [r2]"r"(c));
++
++    for (i = 0; i < len; i++)
++    {
++      if (temp[i] == 10)
++      return;
++    }
++  }
++}
++
++/* { dg-final { scan-assembler "\[\\t \]+mov\ r1,\ r1" } } */
+--- a/src/gcc/testsuite/gcc.target/arm/pr65067.c
++++ b/src/gcc/testsuite/gcc.target/arm/pr65067.c
+@@ -1,4 +1,5 @@
+ /* { dg-do compile } */
++/* { dg-require-effective-target arm_thumb2_ok } */
+ /* { dg-options "-mthumb -mcpu=cortex-m3 -O2" } */
+ 
+ struct tmp {
+--- a/src/gcc/testsuite/gcc.target/arm/pr65647.c
++++ b/src/gcc/testsuite/gcc.target/arm/pr65647.c
+@@ -1,4 +1,6 @@
+ /* { dg-do compile } */
++/* { dg-require-effective-target arm_arch_v6m_ok } */
++/* { dg-skip-if "do not override -mfloat-abi" { *-*-* } { "-mfloat-abi=*" } {"-mfloat-abi=soft" } } */
+ /* { dg-options "-march=armv6-m -mthumb -O3 -w -mfloat-abi=soft" } */
+ 
+ a, b, c, e, g = &e, h, i = 7, l = 1, m, n, o, q = &m, r, s = &r, u, w = 9, x,
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/arm/pr65710.c
+@@ -0,0 +1,120 @@
++/* { dg-do compile } */
++/* { dg-skip-if "do not override -mfloat-abi" { *-*-* } { "-mfloat-abi=*" } {"-mfloat-abi=soft" } } */
++/* { dg-options "-mthumb -O2 -mfloat-abi=soft -w" } */
++/* { dg-skip-if "" { ! { arm_thumb1_ok || arm_thumb2_ok } } } */
++
++struct ST {
++  char *buffer;
++  int used;
++};
++
++struct ST *h;
++
++enum { no_op, duplicate, pop_failure_jump, dummy_failure_jump };
++
++typedef struct {
++  unsigned pointer;
++} byte_fail_stack_elt_t;
++
++typedef struct { unsigned avail; } byte_fail_stack_type;
++
++typedef union {
++  byte_fail_stack_elt_t word;
++  struct {
++    unsigned match_null_string_p : 2;
++    unsigned is_active : 1;
++    unsigned ever_matched_something : 1;
++  } bits;
++} byte_register_info_type;
++
++static int a;
++int b = 0;
++int c, e, f;
++int *d, *g;
++
++int
++byte_re_match_2_internal_size2(const int p2, int p3, const int p4) {
++  int i, p;
++  char *j;
++  char k, l, m, n = h;
++  byte_fail_stack_type o;
++  byte_fail_stack_elt_t *q;
++  unsigned int s = (unsigned int)h;
++  long t, u;
++  char **v, *w, **x, **y, **t1;
++  byte_register_info_type *z, *t2 = __builtin_alloca(s);
++  x = __builtin_alloca(s);
++  y = __builtin_alloca(s);
++  z = __builtin_alloca(sizeof(byte_register_info_type));
++  k = p4 + byte_re_match_2_internal_size2;
++  if (p3)
++    f = p4;
++  for (;;) {
++    if (h == h->used) {
++      g = f;
++      if (o.avail) {
++        b = 1;
++        for (; i < s; i++)
++          t1[i] = w;
++        goto fail;
++      }
++      e = 30 > s;
++      d = p4;
++      d[s] = 1;
++      return;
++    }
++    switch (*h->buffer++) {
++    case no_op:
++      while (m && n ?: *g)
++        ;
++      y[*h->buffer] = z[*h->buffer].bits.match_null_string_p ? w == &a ?: w : w;
++      w = g;
++      if (t) {
++        char r = h;
++        while (r && z[r].bits.is_active)
++          r--;
++        if (r == 0)
++          ;
++        else
++          u = r;
++      }
++      switch (*j++)
++      case dummy_failure_jump:
++      i = j;
++      if (i)
++        if (z[*h->buffer].bits.ever_matched_something) {
++          unsigned r;
++          z[*h->buffer].bits.ever_matched_something = r = *h->buffer;
++          for (; r + *(h->buffer + 1); r++) {
++            v = x[r];
++            w[r] = y[r];
++          }
++        }
++      break;
++    case duplicate: {
++      char *t3 = p2 + p3;
++      if (t3)
++        break;
++    }
++      if ((p3 ?: p4) == k)
++        goto fail;
++    case pop_failure_jump:
++      for (; c; c--)
++        t2[c].word = q[o.avail];
++      char t4;
++      q = t4 = __builtin_allocamemcpy(t4 ?: (p <<= 1));
++    }
++    continue;
++  fail : {
++    unsigned t5;
++    t = q;
++    t5 = u;
++    for (; t5 >= t; t5--)
++      v[t5] = q[--o.avail].pointer;
++    switch (*h->buffer)
++    case pop_failure_jump:
++    goto fail;
++  }
++    m = &l;
++  }
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/arm/pr65729.c
+@@ -0,0 +1,10 @@
++/* { dg-do compile } */
++/* { dg-require-effective-target arm_hard_vfp_ok } */
++/* { dg-options "-O2 -march=armv7-a -mfloat-abi=hard -mfpu=vfpv3-d16" } */
++
++int foo (void)
++{
++  double x = 0.0;
++  asm volatile ("" : "+gw" (x));
++  return x;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/arm/pr65924.c
+@@ -0,0 +1,9 @@
++/* { dg-do compile } */
++/* { dg-require-effective-target arm_thumb2_ok } */
++/* { dg-options "-O2 -mthumb" } */
++
++int a, b, c;
++int fn1() {
++  if (b + a < 0)
++    c = 0;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/arm/pr67756.c
+@@ -0,0 +1,64 @@
++/* { dg-do compile } */
++/* { dg-require-effective-target arm_hard_vfp_ok } */
++/* { dg-options "-O2 -mapcs -march=armv7-a -mfloat-abi=hard -mfpu=vfpv3-d16" } */
++
++int inode_permission (), try_break_deleg ();
++int mutex_lock (), mutex_unlock ();
++struct mutex
++{
++};
++struct dentry
++{
++  struct inode *d_inode;
++};
++struct inode
++{
++  const struct inode_operations *i_op;
++  struct super_block *i_sb;
++    union
++    {
++      const unsigned int i_nlink;
++    };
++  unsigned long i_state;
++  struct mutex i_mutex;
++};
++struct super_block
++{
++  unsigned int s_max_links;
++};
++struct inode_operations
++{
++  int (*link) (struct dentry *, struct inode *, struct dentry *);
++} __attribute__ ((__aligned__ ((1 << 6))));
++static inline __attribute__ ((always_inline))
++__attribute__ ((no_instrument_function))
++int may_create (struct inode *dir, struct dentry *child)
++{
++  if (child->d_inode)
++    return -17;
++  return inode_permission (dir, 0x00000002 | 0x00000001);
++}
++
++int
++vfs_link (struct dentry *old_dentry, struct inode *dir,
++	  struct dentry *new_dentry, struct inode **delegated_inode)
++{
++  struct inode *inode = old_dentry->d_inode;
++  unsigned max_links = dir->i_sb->s_max_links;
++  int error;
++  error = may_create (dir, new_dentry);
++  if (error)
++    return error;
++  mutex_lock (&inode->i_mutex);
++  if (inode->i_nlink == 0 && !(inode->i_state & (1 << 10)))
++    error = -2;
++  else if (max_links && inode->i_nlink >= max_links)
++    error = -31;
++  else
++    {
++      error = try_break_deleg (inode, delegated_inode);
++      error = dir->i_op->link (old_dentry, dir, new_dentry);
++    }
++  mutex_unlock (&inode->i_mutex);
++  return error;
++}
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/arm/pragma_attribute.c
+@@ -0,0 +1,35 @@
++/* Test for #prama target macros.  */
++/* { dg-do compile } */
++/* { dg-require-effective-target arm_thumb1_ok } */
++
++#pragma GCC target ("thumb")
++
++#ifndef __thumb__
++#error "__thumb__ is not defined"
++#endif
++
++#ifdef __thumb2__
++#ifndef __ARM_32BIT_STATE
++#error  "__ARM_32BIT_STATE is not defined"
++#endif
++#else /* thumb1 */
++#ifdef __ARM_32BIT_STATE
++#error  "__ARM_32BIT_STATE is defined"
++#endif
++#endif /* thumb1 */
++
++#pragma GCC target ("arm")
++
++#ifdef __thumb__
++#error "__thumb__ is defined"
++#endif
++
++#if defined (__thumb2__) || defined (__thumb1__)
++#error "thumb is defined"
++#endif 
++
++#ifndef __ARM_32BIT_STATE
++#error  "__ARM_32BIT_STATE is not defined"
++#endif
++
++#pragma GCC reset_options
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/arm/reg_equal_test.c
+@@ -0,0 +1,24 @@
++/* { dg-do compile } */
++/* { dg-options "-O1 -fdump-rtl-expand" } */
++
++extern void abort (void);
++unsigned int a = 1;
++
++int
++main (void)
++{
++  unsigned int b, c, d;
++
++  if (sizeof (int) != 4 || (int) 0xc7d24b5e > 0)
++    return 0;
++
++  c = 0xc7d24b5e;
++  d = a | -2;
++  b = (d == 0) ? c : (c % d);
++  if (b != c)
++    abort ();
++
++  return 0;
++}
++
++/* { dg-final { scan-rtl-dump "expr_list:REG_EQUAL \\(const_int -942519458" "expand" } } */
+--- a/src/gcc/testsuite/gcc.target/arm/scd42-1.c
++++ b/src/gcc/testsuite/gcc.target/arm/scd42-1.c
+@@ -1,7 +1,8 @@
+ /* Verify that mov is preferred on XScale for loading a 1 byte constant. */
+ /* { dg-do compile } */
+ /* { dg-skip-if "incompatible options" { arm*-*-* } { "-march=*" } { "" } } */
+-/* { dg-options "-mcpu=xscale -O" } */
++/* { dg-skip-if "do not override -mfloat-abi" { *-*-* } { "-mfloat-abi=*" } { "-mfloat-abi=softfp" } } */
++/* { dg-options "-mcpu=xscale -O -mfloat-abi=softfp" } */
+ 
+ unsigned load1(void) __attribute__ ((naked));
+ unsigned load1(void)
+--- a/src/gcc/testsuite/gcc.target/arm/scd42-3.c
++++ b/src/gcc/testsuite/gcc.target/arm/scd42-3.c
+@@ -2,7 +2,8 @@
+ /* { dg-do compile } */
+ /* { dg-skip-if "Test is specific to Xscale" { arm*-*-* } { "-march=*" } { "-march=xscale" } } */
+ /* { dg-skip-if "Test is specific to Xscale" { arm*-*-* } { "-mcpu=*" } { "-mcpu=xscale" } } */
+-/* { dg-options "-mcpu=xscale -O" } */
++/* { dg-skip-if "do not override -mfloat-abi" { *-*-* } { "-mfloat-abi=*" } { "-mfloat-abi=softfp" } } */
++/* { dg-options "-mcpu=xscale -O -mfloat-abi=softfp" } */
+ 
+ unsigned load4(void) __attribute__ ((naked));
+ unsigned load4(void)
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/arm/short-it-ifcvt-1.c
+@@ -0,0 +1,23 @@
++/* Test that ifcvt is not being too aggressive when -mrestrict-it.  */
++/* { dg-do compile } */
++/* { dg-options "-O2 -mrestrict-it" } */
++/* { dg-require-effective-target arm_thumb2_ok } */
++
++int
++f1(int x, int y, int z)
++{
++  if (x > 100)
++    {
++      x++;
++      z = -z;
++    }
++  else
++    {
++      x = -x;
++      y = -y;
++      z = 1;
++    }
++  return x + y + z;
++}
++
++/* { dg-final { scan-assembler "b(gt|le)" } } */
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/arm/short-it-ifcvt-2.c
+@@ -0,0 +1,21 @@
++/* Test that ifcvt is not being too aggressive when -mrestrict-it.  */
++/* { dg-do compile } */
++/* { dg-options "-O2 -mrestrict-it" } */
++/* { dg-require-effective-target arm_thumb2_ok } */
++
++int
++f1(int x, int y, int z)
++{
++  if (x > 100)
++    {
++      x++;
++      z = -z;
++    }
++  else
++    {
++      x = -x;
++      y = -y;
++    }
++  return x + y + z;
++}
++/* { dg-final { scan-assembler "b(gt|le)" } } */
+--- a/src/gcc/testsuite/gcc.target/arm/sibcall-2.c
++++ b/src/gcc/testsuite/gcc.target/arm/sibcall-2.c
+@@ -1,5 +1,5 @@
+-/* { dg-require-effective-target arm_eabi } */
+ /* { dg-do compile } */
++/* { dg-require-effective-target arm_eabi } */
+ /* { dg-options "-O2 -mabi=aapcs" } */
+ 
+ 
+--- a/src/gcc/testsuite/gcc.target/arm/simd/neon-vrndx_f32_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/neon-vrndx_f32_1.c
+@@ -14,4 +14,3 @@ test_vrndx_f32 (float32x2_t in)
+ }
+ 
+ /* { dg-final { scan-assembler "vrintx\.f32\[ 	\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/neon-vrndxq_f32_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/neon-vrndxq_f32_1.c
+@@ -14,4 +14,3 @@ test_vrndxq_f32 (float32x4_t in)
+ }
+ 
+ /* { dg-final { scan-assembler "vrintx\.f32\[ 	\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/simd.exp
++++ b/src/gcc/testsuite/gcc.target/arm/simd/simd.exp
+@@ -27,9 +27,22 @@ load_lib gcc-dg.exp
+ # Initialize `dg'.
+ dg-init
+ 
++# If the target hardware supports NEON, the default action is "run", otherwise
++# just "compile".
++global dg-do-what-default
++set save-dg-do-what-default ${dg-do-what-default}
++if {![check_effective_target_arm_neon_ok]} then {
++  return
++} elseif {[is-effective-target arm_neon_hw]} then {
++  set dg-do-what-default run
++} else {
++  set dg-do-what-default compile
++}
++
+ # Main loop.
+ dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.\[cCS\]]] \
+ 	"" ""
+ 
+ # All done.
++set dg-do-what-default ${save-dg-do-what-default}
+ dg-finish
+--- a/src/gcc/testsuite/gcc.target/arm/simd/vextQf32_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/vextQf32_1.c
+@@ -1,7 +1,5 @@
+ /* Test the `vextQf32' ARM Neon intrinsic.  */
+ 
+-/* { dg-do run } */
+-/* { dg-require-effective-target arm_neon_ok } */
+ /* { dg-options "-save-temps -O3 -fno-inline" } */
+ /* { dg-add-options arm_neon } */
+ 
+@@ -9,4 +7,3 @@
+ #include "../../aarch64/simd/extq_f32.x"
+ 
+ /* { dg-final { scan-assembler-times "vext\.32\[ \t\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 3 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/vextQp16_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/vextQp16_1.c
+@@ -1,7 +1,5 @@
+ /* Test the `vextQp16' ARM Neon intrinsic.  */
+ 
+-/* { dg-do run } */
+-/* { dg-require-effective-target arm_neon_ok } */
+ /* { dg-options "-save-temps -O3 -fno-inline" } */
+ /* { dg-add-options arm_neon } */
+ 
+@@ -9,4 +7,3 @@
+ #include "../../aarch64/simd/extq_p16.x"
+ 
+ /* { dg-final { scan-assembler-times "vext\.16\[ \t\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 7 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/vextQp64_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/vextQp64_1.c
+@@ -1,6 +1,5 @@
+ /* Test the `vextQp64' ARM Neon intrinsic.  */
+ 
+-/* { dg-do run } */
+ /* { dg-require-effective-target arm_crypto_ok } */
+ /* { dg-options "-save-temps -O3 -fno-inline" } */
+ /* { dg-add-options arm_crypto } */
+@@ -30,4 +29,3 @@ main (int argc, char **argv)
+ }
+ 
+ /* { dg-final { scan-assembler-times "vext\.64\[ \t\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/vextQp8_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/vextQp8_1.c
+@@ -1,7 +1,5 @@
+ /* Test the `vextQp8' ARM Neon intrinsic.  */
+ 
+-/* { dg-do run } */
+-/* { dg-require-effective-target arm_neon_ok } */
+ /* { dg-options "-save-temps -O3 -fno-inline" } */
+ /* { dg-add-options arm_neon } */
+ 
+@@ -9,4 +7,3 @@
+ #include "../../aarch64/simd/extq_p8.x"
+ 
+ /* { dg-final { scan-assembler-times "vext\.8\[ \t\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 15 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/vextQs16_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/vextQs16_1.c
+@@ -1,7 +1,5 @@
+ /* Test the `vextQs16' ARM Neon intrinsic.  */
+ 
+-/* { dg-do run } */
+-/* { dg-require-effective-target arm_neon_ok } */
+ /* { dg-options "-save-temps -O3 -fno-inline" } */
+ /* { dg-add-options arm_neon } */
+ 
+@@ -9,4 +7,3 @@
+ #include "../../aarch64/simd/extq_s16.x"
+ 
+ /* { dg-final { scan-assembler-times "vext\.16\[ \t\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 7 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/vextQs32_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/vextQs32_1.c
+@@ -1,7 +1,5 @@
+ /* Test the `vextQs32' ARM Neon intrinsic.  */
+ 
+-/* { dg-do run } */
+-/* { dg-require-effective-target arm_neon_ok } */
+ /* { dg-options "-save-temps -O3 -fno-inline" } */
+ /* { dg-add-options arm_neon } */
+ 
+@@ -9,4 +7,3 @@
+ #include "../../aarch64/simd/extq_s32.x"
+ 
+ /* { dg-final { scan-assembler-times "vext\.32\[ \t\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 3 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/vextQs64_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/vextQs64_1.c
+@@ -1,7 +1,5 @@
+ /* Test the `vextQs64' ARM Neon intrinsic.  */
+ 
+-/* { dg-do run } */
+-/* { dg-require-effective-target arm_neon_ok } */
+ /* { dg-options "-save-temps -O3 -fno-inline" } */
+ /* { dg-add-options arm_neon } */
+ 
+@@ -9,4 +7,3 @@
+ #include "../../aarch64/simd/extq_s64.x"
+ 
+ /* { dg-final { scan-assembler-times "vext\.64\[ \t\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/vextQs8_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/vextQs8_1.c
+@@ -1,7 +1,5 @@
+ /* Test the `vextQs8' ARM Neon intrinsic.  */
+ 
+-/* { dg-do run } */
+-/* { dg-require-effective-target arm_neon_ok } */
+ /* { dg-options "-save-temps -O3 -fno-inline" } */
+ /* { dg-add-options arm_neon } */
+ 
+@@ -9,4 +7,3 @@
+ #include "../../aarch64/simd/extq_s8.x"
+ 
+ /* { dg-final { scan-assembler-times "vext\.8\[ \t\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 15 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/vextQu16_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/vextQu16_1.c
+@@ -1,7 +1,5 @@
+ /* Test the `vextQu16' ARM Neon intrinsic.  */
+ 
+-/* { dg-do run } */
+-/* { dg-require-effective-target arm_neon_ok } */
+ /* { dg-options "-save-temps -O3 -fno-inline" } */
+ /* { dg-add-options arm_neon } */
+ 
+@@ -9,4 +7,3 @@
+ #include "../../aarch64/simd/extq_u16.x"
+ 
+ /* { dg-final { scan-assembler-times "vext\.16\[ \t\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 7 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/vextQu32_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/vextQu32_1.c
+@@ -1,7 +1,5 @@
+ /* Test the `vextQu32' ARM Neon intrinsic.  */
+ 
+-/* { dg-do run } */
+-/* { dg-require-effective-target arm_neon_ok } */
+ /* { dg-options "-save-temps -O3 -fno-inline" } */
+ /* { dg-add-options arm_neon } */
+ 
+@@ -9,4 +7,3 @@
+ #include "../../aarch64/simd/extq_u32.x"
+ 
+ /* { dg-final { scan-assembler-times "vext\.32\[ \t\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 3 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/vextQu64_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/vextQu64_1.c
+@@ -1,7 +1,5 @@
+ /* Test the `vextQu64' ARM Neon intrinsic.  */
+ 
+-/* { dg-do run } */
+-/* { dg-require-effective-target arm_neon_ok } */
+ /* { dg-options "-save-temps -O3 -fno-inline" } */
+ /* { dg-add-options arm_neon } */
+ 
+@@ -9,4 +7,3 @@
+ #include "../../aarch64/simd/extq_u64.x"
+ 
+ /* { dg-final { scan-assembler-times "vext\.64\[ \t\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/vextQu8_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/vextQu8_1.c
+@@ -1,7 +1,5 @@
+ /* Test the `vextQu8' ARM Neon intrinsic.  */
+ 
+-/* { dg-do run } */
+-/* { dg-require-effective-target arm_neon_ok } */
+ /* { dg-options "-save-temps -O3 -fno-inline" } */
+ /* { dg-add-options arm_neon } */
+ 
+@@ -9,4 +7,3 @@
+ #include "../../aarch64/simd/extq_u8.x"
+ 
+ /* { dg-final { scan-assembler-times "vext\.8\[ \t\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+, #\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 15 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/vextf32_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/vextf32_1.c
+@@ -1,7 +1,5 @@
+ /* Test the `vextf32' ARM Neon intrinsic.  */
+ 
+-/* { dg-do run } */
+-/* { dg-require-effective-target arm_neon_ok } */
+ /* { dg-options "-save-temps -O3 -fno-inline" } */
+ /* { dg-add-options arm_neon } */
+ 
+@@ -9,4 +7,3 @@
+ #include "../../aarch64/simd/ext_f32.x"
+ 
+ /* { dg-final { scan-assembler-times "vext\.32\[ \t\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/vextp16_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/vextp16_1.c
+@@ -1,7 +1,5 @@
+ /* Test the `vextp16' ARM Neon intrinsic.  */
+ 
+-/* { dg-do run } */
+-/* { dg-require-effective-target arm_neon_ok } */
+ /* { dg-options "-save-temps -O3 -fno-inline" } */
+ /* { dg-add-options arm_neon } */
+ 
+@@ -9,4 +7,3 @@
+ #include "../../aarch64/simd/ext_p16.x"
+ 
+ /* { dg-final { scan-assembler-times "vext\.16\[ \t\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 3 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/vextp64_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/vextp64_1.c
+@@ -1,6 +1,5 @@
+ /* Test the `vextp64' ARM Neon intrinsic.  */
+ 
+-/* { dg-do run } */
+ /* { dg-require-effective-target arm_crypto_ok } */
+ /* { dg-options "-save-temps -O3 -fno-inline" } */
+ /* { dg-add-options arm_crypto } */
+@@ -22,5 +21,4 @@ main (int argc, char **argv)
+   return 0;
+ }
+ 
+-/* Don't scan assembler for vext - it can be optimized into a move from r0.
+-/* { dg-final { cleanup-saved-temps } } */
++/* Don't scan assembler for vext - it can be optimized into a move from r0. */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/vextp8_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/vextp8_1.c
+@@ -1,7 +1,5 @@
+ /* Test the `vextp8' ARM Neon intrinsic.  */
+ 
+-/* { dg-do run } */
+-/* { dg-require-effective-target arm_neon_ok } */
+ /* { dg-options "-save-temps -O3 -fno-inline" } */
+ /* { dg-add-options arm_neon } */
+ 
+@@ -9,4 +7,3 @@
+ #include "../../aarch64/simd/ext_p8.x"
+ 
+ /* { dg-final { scan-assembler-times "vext\.8\[ \t\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 7 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/vexts16_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/vexts16_1.c
+@@ -1,7 +1,5 @@
+ /* Test the `vexts16' ARM Neon intrinsic.  */
+ 
+-/* { dg-do run } */
+-/* { dg-require-effective-target arm_neon_ok } */
+ /* { dg-options "-save-temps -O3 -fno-inline" } */
+ /* { dg-add-options arm_neon } */
+ 
+@@ -9,4 +7,3 @@
+ #include "../../aarch64/simd/ext_s16.x"
+ 
+ /* { dg-final { scan-assembler-times "vext\.16\[ \t\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 3 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/vexts32_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/vexts32_1.c
+@@ -1,7 +1,5 @@
+ /* Test the `vexts32' ARM Neon intrinsic.  */
+ 
+-/* { dg-do run } */
+-/* { dg-require-effective-target arm_neon_ok } */
+ /* { dg-options "-save-temps -O3 -fno-inline" } */
+ /* { dg-add-options arm_neon } */
+ 
+@@ -9,4 +7,3 @@
+ #include "../../aarch64/simd/ext_s32.x"
+ 
+ /* { dg-final { scan-assembler-times "vext\.32\[ \t\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/vexts64_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/vexts64_1.c
+@@ -1,7 +1,5 @@
+ /* Test the `vexts64' ARM Neon intrinsic.  */
+ 
+-/* { dg-do run } */
+-/* { dg-require-effective-target arm_neon_ok } */
+ /* { dg-options "-save-temps -O3 -fno-inline" } */
+ /* { dg-add-options arm_neon } */
+ 
+@@ -24,4 +22,3 @@ main (int argc, char **argv)
+ }
+ 
+ /* Don't scan assembler for vext - it can be optimized into a move from r0.  */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/vexts8_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/vexts8_1.c
+@@ -1,7 +1,5 @@
+ /* Test the `vexts8' ARM Neon intrinsic.  */
+ 
+-/* { dg-do run } */
+-/* { dg-require-effective-target arm_neon_ok } */
+ /* { dg-options "-save-temps -O3 -fno-inline" } */
+ /* { dg-add-options arm_neon } */
+ 
+@@ -9,4 +7,3 @@
+ #include "../../aarch64/simd/ext_s8.x"
+ 
+ /* { dg-final { scan-assembler-times "vext\.8\[ \t\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 7 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/vextu16_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/vextu16_1.c
+@@ -1,7 +1,5 @@
+ /* Test the `vextu16' ARM Neon intrinsic.  */
+ 
+-/* { dg-do run } */
+-/* { dg-require-effective-target arm_neon_ok } */
+ /* { dg-options "-save-temps -O3 -fno-inline" } */
+ /* { dg-add-options arm_neon } */
+ 
+@@ -9,4 +7,3 @@
+ #include "../../aarch64/simd/ext_u16.x"
+ 
+ /* { dg-final { scan-assembler-times "vext\.16\[ \t\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 3 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/vextu32_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/vextu32_1.c
+@@ -1,7 +1,5 @@
+ /* Test the `vextu32' ARM Neon intrinsic.  */
+ 
+-/* { dg-do run } */
+-/* { dg-require-effective-target arm_neon_ok } */
+ /* { dg-options "-save-temps -O3 -fno-inline" } */
+ /* { dg-add-options arm_neon } */
+ 
+@@ -9,4 +7,3 @@
+ #include "../../aarch64/simd/ext_u32.x"
+ 
+ /* { dg-final { scan-assembler-times "vext\.32\[ \t\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/vextu64_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/vextu64_1.c
+@@ -1,7 +1,5 @@
+ /* Test the `vextu64' ARM Neon intrinsic.  */
+ 
+-/* { dg-do run } */
+-/* { dg-require-effective-target arm_neon_ok } */
+ /* { dg-options "-save-temps -O3 -fno-inline" } */
+ /* { dg-add-options arm_neon } */
+ 
+@@ -24,4 +22,3 @@ main (int argc, char **argv)
+ }
+ 
+ /* Don't scan assembler for vext - it can be optimized into a move from r0.  */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/vextu8_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/vextu8_1.c
+@@ -1,7 +1,5 @@
+ /* Test the `vextu8' ARM Neon intrinsic.  */
+ 
+-/* { dg-do run } */
+-/* { dg-require-effective-target arm_neon_ok } */
+ /* { dg-options "-save-temps -O3 -fno-inline" } */
+ /* { dg-add-options arm_neon } */
+ 
+@@ -9,4 +7,3 @@
+ #include "../../aarch64/simd/ext_u8.x"
+ 
+ /* { dg-final { scan-assembler-times "vext\.8\[ \t\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+, \[dD\]\[0-9\]+, #\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 7 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/vrev16p8_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/vrev16p8_1.c
+@@ -1,7 +1,5 @@
+ /* Test the `vrev16p8' ARM Neon intrinsic.  */
+ 
+-/* { dg-do run } */
+-/* { dg-require-effective-target arm_neon_ok } */
+ /* { dg-options "-save-temps -fno-inline" } */
+ /* { dg-add-options arm_neon } */
+ 
+@@ -9,4 +7,3 @@
+ #include "../../aarch64/simd/vrev16p8.x"
+ 
+ /* { dg-final { scan-assembler "vrev16\.8\[ \t\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/vrev16qp8_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/vrev16qp8_1.c
+@@ -1,7 +1,5 @@
+ /* Test the `vrev16q_p8' ARM Neon intrinsic.  */
+ 
+-/* { dg-do run } */
+-/* { dg-require-effective-target arm_neon_ok } */
+ /* { dg-options "-save-temps -fno-inline" } */
+ /* { dg-add-options arm_neon } */
+ 
+@@ -9,4 +7,3 @@
+ #include "../../aarch64/simd/vrev16qp8.x"
+ 
+ /* { dg-final { scan-assembler "vrev16\.8\[ \t\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/vrev16qs8_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/vrev16qs8_1.c
+@@ -1,7 +1,5 @@
+ /* Test the `vrev16q_s8' ARM Neon intrinsic.  */
+ 
+-/* { dg-do run } */
+-/* { dg-require-effective-target arm_neon_ok } */
+ /* { dg-options "-save-temps -fno-inline" } */
+ /* { dg-add-options arm_neon } */
+ 
+@@ -9,4 +7,3 @@
+ #include "../../aarch64/simd/vrev16qs8.x"
+ 
+ /* { dg-final { scan-assembler "vrev16\.8\[ \t\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/vrev16qu8_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/vrev16qu8_1.c
+@@ -1,7 +1,5 @@
+ /* Test the `vrev16q_u8' ARM Neon intrinsic.  */
+ 
+-/* { dg-do run } */
+-/* { dg-require-effective-target arm_neon_ok } */
+ /* { dg-options "-save-temps -fno-inline" } */
+ /* { dg-add-options arm_neon } */
+ 
+@@ -9,4 +7,3 @@
+ #include "../../aarch64/simd/vrev16qu8.x"
+ 
+ /* { dg-final { scan-assembler "vrev16\.8\[ \t\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/vrev16s8_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/vrev16s8_1.c
+@@ -1,7 +1,5 @@
+ /* Test the `vrev16s8' ARM Neon intrinsic.  */
+ 
+-/* { dg-do run } */
+-/* { dg-require-effective-target arm_neon_ok } */
+ /* { dg-options "-save-temps -fno-inline" } */
+ /* { dg-add-options arm_neon } */
+ 
+@@ -9,4 +7,3 @@
+ #include "../../aarch64/simd/vrev16s8.x"
+ 
+ /* { dg-final { scan-assembler "vrev16\.8\[ \t\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/vrev16u8_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/vrev16u8_1.c
+@@ -1,7 +1,5 @@
+ /* Test the `vrev16u8' ARM Neon intrinsic.  */
+ 
+-/* { dg-do run } */
+-/* { dg-require-effective-target arm_neon_ok } */
+ /* { dg-options "-save-temps -fno-inline" } */
+ /* { dg-add-options arm_neon } */
+ 
+@@ -9,4 +7,3 @@
+ #include "../../aarch64/simd/vrev16u8.x"
+ 
+ /* { dg-final { scan-assembler "vrev16\.8\[ \t\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/vrev32p16_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/vrev32p16_1.c
+@@ -1,7 +1,5 @@
+ /* Test the `vrev32p16' ARM Neon intrinsic.  */
+ 
+-/* { dg-do run } */
+-/* { dg-require-effective-target arm_neon_ok } */
+ /* { dg-options "-save-temps -fno-inline" } */
+ /* { dg-add-options arm_neon } */
+ 
+@@ -9,4 +7,3 @@
+ #include "../../aarch64/simd/vrev32p16.x"
+ 
+ /* { dg-final { scan-assembler "vrev32\.16\[ \t\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/vrev32p8_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/vrev32p8_1.c
+@@ -1,7 +1,5 @@
+ /* Test the `vrev32p8' ARM Neon intrinsic.  */
+ 
+-/* { dg-do run } */
+-/* { dg-require-effective-target arm_neon_ok } */
+ /* { dg-options "-save-temps -fno-inline" } */
+ /* { dg-add-options arm_neon } */
+ 
+@@ -9,4 +7,3 @@
+ #include "../../aarch64/simd/vrev32p8.x"
+ 
+ /* { dg-final { scan-assembler "vrev32\.8\[ \t\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/vrev32qp16_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/vrev32qp16_1.c
+@@ -1,7 +1,5 @@
+ /* Test the `vrev32q_p16' ARM Neon intrinsic.  */
+ 
+-/* { dg-do run } */
+-/* { dg-require-effective-target arm_neon_ok } */
+ /* { dg-options "-save-temps -fno-inline" } */
+ /* { dg-add-options arm_neon } */
+ 
+@@ -9,4 +7,3 @@
+ #include "../../aarch64/simd/vrev32qp16.x"
+ 
+ /* { dg-final { scan-assembler "vrev32\.16\[ \t\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/vrev32qp8_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/vrev32qp8_1.c
+@@ -1,7 +1,5 @@
+ /* Test the `vrev32q_p8' ARM Neon intrinsic.  */
+ 
+-/* { dg-do run } */
+-/* { dg-require-effective-target arm_neon_ok } */
+ /* { dg-options "-save-temps -fno-inline" } */
+ /* { dg-add-options arm_neon } */
+ 
+@@ -9,4 +7,3 @@
+ #include "../../aarch64/simd/vrev32qp8.x"
+ 
+ /* { dg-final { scan-assembler "vrev32\.8\[ \t\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/vrev32qs16_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/vrev32qs16_1.c
+@@ -1,7 +1,5 @@
+ /* Test the `vrev32q_s16' ARM Neon intrinsic.  */
+ 
+-/* { dg-do run } */
+-/* { dg-require-effective-target arm_neon_ok } */
+ /* { dg-options "-save-temps -fno-inline" } */
+ /* { dg-add-options arm_neon } */
+ 
+@@ -9,4 +7,3 @@
+ #include "../../aarch64/simd/vrev32qs16.x"
+ 
+ /* { dg-final { scan-assembler "vrev32\.16\[ \t\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/vrev32qs8_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/vrev32qs8_1.c
+@@ -1,7 +1,5 @@
+ /* Test the `vrev32q_s8' ARM Neon intrinsic.  */
+ 
+-/* { dg-do run } */
+-/* { dg-require-effective-target arm_neon_ok } */
+ /* { dg-options "-save-temps -fno-inline" } */
+ /* { dg-add-options arm_neon } */
+ 
+@@ -9,4 +7,3 @@
+ #include "../../aarch64/simd/vrev32qs8.x"
+ 
+ /* { dg-final { scan-assembler "vrev32\.8\[ \t\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/vrev32qu16_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/vrev32qu16_1.c
+@@ -1,7 +1,5 @@
+ /* Test the `vrev32q_u16' ARM Neon intrinsic.  */
+ 
+-/* { dg-do run } */
+-/* { dg-require-effective-target arm_neon_ok } */
+ /* { dg-options "-save-temps -fno-inline" } */
+ /* { dg-add-options arm_neon } */
+ 
+@@ -9,4 +7,3 @@
+ #include "../../aarch64/simd/vrev32qu16.x"
+ 
+ /* { dg-final { scan-assembler "vrev32\.16\[ \t\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/vrev32qu8_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/vrev32qu8_1.c
+@@ -1,7 +1,5 @@
+ /* Test the `vrev32q_u8' ARM Neon intrinsic.  */
+ 
+-/* { dg-do run } */
+-/* { dg-require-effective-target arm_neon_ok } */
+ /* { dg-options "-save-temps -fno-inline" } */
+ /* { dg-add-options arm_neon } */
+ 
+@@ -9,4 +7,3 @@
+ #include "../../aarch64/simd/vrev32qu8.x"
+ 
+ /* { dg-final { scan-assembler "vrev32\.8\[ \t\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/vrev32s16_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/vrev32s16_1.c
+@@ -1,7 +1,5 @@
+ /* Test the `vrev32s16' ARM Neon intrinsic.  */
+ 
+-/* { dg-do run } */
+-/* { dg-require-effective-target arm_neon_ok } */
+ /* { dg-options "-save-temps -fno-inline" } */
+ /* { dg-add-options arm_neon } */
+ 
+@@ -9,4 +7,3 @@
+ #include "../../aarch64/simd/vrev32s16.x"
+ 
+ /* { dg-final { scan-assembler "vrev32\.16\[ \t\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/vrev32s8_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/vrev32s8_1.c
+@@ -1,7 +1,5 @@
+ /* Test the `vrev32s8' ARM Neon intrinsic.  */
+ 
+-/* { dg-do run } */
+-/* { dg-require-effective-target arm_neon_ok } */
+ /* { dg-options "-save-temps -fno-inline" } */
+ /* { dg-add-options arm_neon } */
+ 
+@@ -9,4 +7,3 @@
+ #include "../../aarch64/simd/vrev32s8.x"
+ 
+ /* { dg-final { scan-assembler "vrev32\.8\[ \t\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/vrev32u16_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/vrev32u16_1.c
+@@ -1,7 +1,5 @@
+ /* Test the `vrev32u16' ARM Neon intrinsic.  */
+ 
+-/* { dg-do run } */
+-/* { dg-require-effective-target arm_neon_ok } */
+ /* { dg-options "-save-temps -fno-inline" } */
+ /* { dg-add-options arm_neon } */
+ 
+@@ -9,4 +7,3 @@
+ #include "../../aarch64/simd/vrev32u16.x"
+ 
+ /* { dg-final { scan-assembler "vrev32\.16\[ \t\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/vrev32u8_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/vrev32u8_1.c
+@@ -1,7 +1,5 @@
+ /* Test the `vrev32u8' ARM Neon intrinsic.  */
+ 
+-/* { dg-do run } */
+-/* { dg-require-effective-target arm_neon_ok } */
+ /* { dg-options "-save-temps -fno-inline" } */
+ /* { dg-add-options arm_neon } */
+ 
+@@ -9,4 +7,3 @@
+ #include "../../aarch64/simd/vrev32u8.x"
+ 
+ /* { dg-final { scan-assembler "vrev32\.8\[ \t\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/vrev64f32_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/vrev64f32_1.c
+@@ -1,7 +1,5 @@
+ /* Test the `vrev64f32' ARM Neon intrinsic.  */
+ 
+-/* { dg-do run } */
+-/* { dg-require-effective-target arm_neon_ok } */
+ /* { dg-options "-save-temps -fno-inline" } */
+ /* { dg-add-options arm_neon } */
+ 
+@@ -9,4 +7,3 @@
+ #include "../../aarch64/simd/vrev64f32.x"
+ 
+ /* { dg-final { scan-assembler "vrev64\.32\[ \t\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/vrev64p16_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/vrev64p16_1.c
+@@ -1,7 +1,5 @@
+ /* Test the `vrev64p16' ARM Neon intrinsic.  */
+ 
+-/* { dg-do run } */
+-/* { dg-require-effective-target arm_neon_ok } */
+ /* { dg-options "-save-temps -fno-inline" } */
+ /* { dg-add-options arm_neon } */
+ 
+@@ -9,4 +7,3 @@
+ #include "../../aarch64/simd/vrev64p16.x"
+ 
+ /* { dg-final { scan-assembler "vrev64\.16\[ \t\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/vrev64p8_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/vrev64p8_1.c
+@@ -1,7 +1,5 @@
+ /* Test the `vrev64p8' ARM Neon intrinsic.  */
+ 
+-/* { dg-do run } */
+-/* { dg-require-effective-target arm_neon_ok } */
+ /* { dg-options "-save-temps -fno-inline" } */
+ /* { dg-add-options arm_neon } */
+ 
+@@ -9,4 +7,3 @@
+ #include "../../aarch64/simd/vrev64p8.x"
+ 
+ /* { dg-final { scan-assembler "vrev64\.8\[ \t\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/vrev64qf32_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/vrev64qf32_1.c
+@@ -1,7 +1,5 @@
+ /* Test the `vrev64q_f32' ARM Neon intrinsic.  */
+ 
+-/* { dg-do run } */
+-/* { dg-require-effective-target arm_neon_ok } */
+ /* { dg-options "-save-temps -fno-inline" } */
+ /* { dg-add-options arm_neon } */
+ 
+@@ -9,4 +7,3 @@
+ #include "../../aarch64/simd/vrev64qf32.x"
+ 
+ /* { dg-final { scan-assembler "vrev64\.32\[ \t\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/vrev64qp16_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/vrev64qp16_1.c
+@@ -1,7 +1,5 @@
+ /* Test the `vrev64q_p16' ARM Neon intrinsic.  */
+ 
+-/* { dg-do run } */
+-/* { dg-require-effective-target arm_neon_ok } */
+ /* { dg-options "-save-temps -fno-inline" } */
+ /* { dg-add-options arm_neon } */
+ 
+@@ -9,4 +7,3 @@
+ #include "../../aarch64/simd/vrev64qp16.x"
+ 
+ /* { dg-final { scan-assembler "vrev64\.16\[ \t\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/vrev64qp8_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/vrev64qp8_1.c
+@@ -1,7 +1,5 @@
+ /* Test the `vrev64q_p8' ARM Neon intrinsic.  */
+ 
+-/* { dg-do run } */
+-/* { dg-require-effective-target arm_neon_ok } */
+ /* { dg-options "-save-temps -fno-inline" } */
+ /* { dg-add-options arm_neon } */
+ 
+@@ -9,4 +7,3 @@
+ #include "../../aarch64/simd/vrev64qp8.x"
+ 
+ /* { dg-final { scan-assembler "vrev64\.8\[ \t\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/vrev64qs16_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/vrev64qs16_1.c
+@@ -1,7 +1,5 @@
+ /* Test the `vrev64q_s16' ARM Neon intrinsic.  */
+ 
+-/* { dg-do run } */
+-/* { dg-require-effective-target arm_neon_ok } */
+ /* { dg-options "-save-temps -fno-inline" } */
+ /* { dg-add-options arm_neon } */
+ 
+@@ -9,4 +7,3 @@
+ #include "../../aarch64/simd/vrev64qs16.x"
+ 
+ /* { dg-final { scan-assembler "vrev64\.16\[ \t\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/vrev64qs32_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/vrev64qs32_1.c
+@@ -1,7 +1,5 @@
+ /* Test the `vrev64q_s32' ARM Neon intrinsic.  */
+ 
+-/* { dg-do run } */
+-/* { dg-require-effective-target arm_neon_ok } */
+ /* { dg-options "-save-temps -fno-inline" } */
+ /* { dg-add-options arm_neon } */
+ 
+@@ -9,4 +7,3 @@
+ #include "../../aarch64/simd/vrev64qs32.x"
+ 
+ /* { dg-final { scan-assembler "vrev64\.32\[ \t\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/vrev64qs8_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/vrev64qs8_1.c
+@@ -1,7 +1,5 @@
+ /* Test the `vrev64q_s8' ARM Neon intrinsic.  */
+ 
+-/* { dg-do run } */
+-/* { dg-require-effective-target arm_neon_ok } */
+ /* { dg-options "-save-temps -fno-inline" } */
+ /* { dg-add-options arm_neon } */
+ 
+@@ -9,4 +7,3 @@
+ #include "../../aarch64/simd/vrev64qs8.x"
+ 
+ /* { dg-final { scan-assembler "vrev64\.8\[ \t\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/vrev64qu16_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/vrev64qu16_1.c
+@@ -1,7 +1,5 @@
+ /* Test the `vrev64q_u16' ARM Neon intrinsic.  */
+ 
+-/* { dg-do run } */
+-/* { dg-require-effective-target arm_neon_ok } */
+ /* { dg-options "-save-temps -fno-inline" } */
+ /* { dg-add-options arm_neon } */
+ 
+@@ -9,4 +7,3 @@
+ #include "../../aarch64/simd/vrev64qu16.x"
+ 
+ /* { dg-final { scan-assembler "vrev64\.16\[ \t\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/vrev64qu32_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/vrev64qu32_1.c
+@@ -1,7 +1,5 @@
+ /* Test the `vrev64q_u32' ARM Neon intrinsic.  */
+ 
+-/* { dg-do run } */
+-/* { dg-require-effective-target arm_neon_ok } */
+ /* { dg-options "-save-temps -fno-inline" } */
+ /* { dg-add-options arm_neon } */
+ 
+@@ -9,4 +7,3 @@
+ #include "../../aarch64/simd/vrev64qu32.x"
+ 
+ /* { dg-final { scan-assembler "vrev64\.32\[ \t\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/vrev64qu8_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/vrev64qu8_1.c
+@@ -1,7 +1,5 @@
+ /* Test the `vrev64q_u8' ARM Neon intrinsic.  */
+ 
+-/* { dg-do run } */
+-/* { dg-require-effective-target arm_neon_ok } */
+ /* { dg-options "-save-temps -fno-inline" } */
+ /* { dg-add-options arm_neon } */
+ 
+@@ -9,4 +7,3 @@
+ #include "../../aarch64/simd/vrev64qu8.x"
+ 
+ /* { dg-final { scan-assembler "vrev64\.8\[ \t\]+\[qQ\]\[0-9\]+, \[qQ\]\[0-9\]+!?\(\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/vrev64s16_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/vrev64s16_1.c
+@@ -1,7 +1,5 @@
+ /* Test the `vrev64s16' ARM Neon intrinsic.  */
+ 
+-/* { dg-do run } */
+-/* { dg-require-effective-target arm_neon_ok } */
+ /* { dg-options "-save-temps -fno-inline" } */
+ /* { dg-add-options arm_neon } */
+ 
+@@ -9,4 +7,3 @@
+ #include "../../aarch64/simd/vrev64s16.x"
+ 
+ /* { dg-final { scan-assembler "vrev64\.16\[ \t\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/vrev64s32_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/vrev64s32_1.c
+@@ -1,7 +1,5 @@
+ /* Test the `vrev64s32' ARM Neon intrinsic.  */
+ 
+-/* { dg-do run } */
+-/* { dg-require-effective-target arm_neon_ok } */
+ /* { dg-options "-save-temps -fno-inline" } */
+ /* { dg-add-options arm_neon } */
+ 
+@@ -9,4 +7,3 @@
+ #include "../../aarch64/simd/vrev64s32.x"
+ 
+ /* { dg-final { scan-assembler "vrev64\.32\[ \t\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/vrev64s8_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/vrev64s8_1.c
+@@ -1,7 +1,5 @@
+ /* Test the `vrev64s8' ARM Neon intrinsic.  */
+ 
+-/* { dg-do run } */
+-/* { dg-require-effective-target arm_neon_ok } */
+ /* { dg-options "-save-temps -fno-inline" } */
+ /* { dg-add-options arm_neon } */
+ 
+@@ -9,4 +7,3 @@
+ #include "../../aarch64/simd/vrev64s8.x"
+ 
+ /* { dg-final { scan-assembler "vrev64\.8\[ \t\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/vrev64u16_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/vrev64u16_1.c
+@@ -1,7 +1,5 @@
+ /* Test the `vrev64u16' ARM Neon intrinsic.  */
+ 
+-/* { dg-do run } */
+-/* { dg-require-effective-target arm_neon_ok } */
+ /* { dg-options "-save-temps -fno-inline" } */
+ /* { dg-add-options arm_neon } */
+ 
+@@ -9,4 +7,3 @@
+ #include "../../aarch64/simd/vrev64u16.x"
+ 
+ /* { dg-final { scan-assembler "vrev64\.16\[ \t\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/vrev64u32_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/vrev64u32_1.c
+@@ -1,7 +1,5 @@
+ /* Test the `vrev64u32' ARM Neon intrinsic.  */
+ 
+-/* { dg-do run } */
+-/* { dg-require-effective-target arm_neon_ok } */
+ /* { dg-options "-save-temps -fno-inline" } */
+ /* { dg-add-options arm_neon } */
+ 
+@@ -9,4 +7,3 @@
+ #include "../../aarch64/simd/vrev64u32.x"
+ 
+ /* { dg-final { scan-assembler "vrev64\.32\[ \t\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/vrev64u8_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/vrev64u8_1.c
+@@ -1,7 +1,5 @@
+ /* Test the `vrev64u8' ARM Neon intrinsic.  */
+ 
+-/* { dg-do run } */
+-/* { dg-require-effective-target arm_neon_ok } */
+ /* { dg-options "-save-temps -fno-inline" } */
+ /* { dg-add-options arm_neon } */
+ 
+@@ -9,4 +7,3 @@
+ #include "../../aarch64/simd/vrev64u8.x"
+ 
+ /* { dg-final { scan-assembler "vrev64\.8\[ \t\]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/vtrnf32_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/vtrnf32_1.c
+@@ -1,7 +1,5 @@
+ /* Test the `vtrnf32' ARM Neon intrinsic.  */
+ 
+-/* { dg-do run } */
+-/* { dg-require-effective-target arm_neon_ok } */
+ /* { dg-options "-save-temps -O1 -fno-inline" } */
+ /* { dg-add-options arm_neon } */
+ 
+@@ -9,4 +7,3 @@
+ #include "../../aarch64/simd/vtrnf32.x"
+ 
+ /* { dg-final { scan-assembler-times "vuzp\.32\[ \t\]+\[dD\]\[0-9\]+, ?\[dD\]\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/vtrnp16_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/vtrnp16_1.c
+@@ -1,7 +1,5 @@
+ /* Test the `vtrnp16' ARM Neon intrinsic.  */
+ 
+-/* { dg-do run } */
+-/* { dg-require-effective-target arm_neon_ok } */
+ /* { dg-options "-save-temps -O1 -fno-inline" } */
+ /* { dg-add-options arm_neon } */
+ 
+@@ -9,4 +7,3 @@
+ #include "../../aarch64/simd/vtrnp16.x"
+ 
+ /* { dg-final { scan-assembler-times "vtrn\.16\[ \t\]+\[dD\]\[0-9\]+, ?\[dD\]\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/vtrnp8_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/vtrnp8_1.c
+@@ -1,7 +1,5 @@
+ /* Test the `vtrnp8' ARM Neon intrinsic.  */
+ 
+-/* { dg-do run } */
+-/* { dg-require-effective-target arm_neon_ok } */
+ /* { dg-options "-save-temps -O1 -fno-inline" } */
+ /* { dg-add-options arm_neon } */
+ 
+@@ -9,4 +7,3 @@
+ #include "../../aarch64/simd/vtrnp8.x"
+ 
+ /* { dg-final { scan-assembler-times "vtrn\.8\[ \t\]+\[dD\]\[0-9\]+, ?\[dD\]\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/vtrnqf32_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/vtrnqf32_1.c
+@@ -1,7 +1,5 @@
+ /* Test the `vtrnQf32' ARM Neon intrinsic.  */
+ 
+-/* { dg-do run } */
+-/* { dg-require-effective-target arm_neon_ok } */
+ /* { dg-options "-save-temps -O1 -fno-inline" } */
+ /* { dg-add-options arm_neon } */
+ 
+@@ -9,4 +7,3 @@
+ #include "../../aarch64/simd/vtrnqf32.x"
+ 
+ /* { dg-final { scan-assembler-times "vtrn\.32\[ \t\]+\[qQ\]\[0-9\]+, ?\[qQ\]\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/vtrnqp16_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/vtrnqp16_1.c
+@@ -1,7 +1,5 @@
+ /* Test the `vtrnQp16' ARM Neon intrinsic.  */
+ 
+-/* { dg-do run } */
+-/* { dg-require-effective-target arm_neon_ok } */
+ /* { dg-options "-save-temps -O1 -fno-inline" } */
+ /* { dg-add-options arm_neon } */
+ 
+@@ -9,4 +7,3 @@
+ #include "../../aarch64/simd/vtrnqp16.x"
+ 
+ /* { dg-final { scan-assembler-times "vtrn\.16\[ \t\]+\[qQ\]\[0-9\]+, ?\[qQ\]\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/vtrnqp8_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/vtrnqp8_1.c
+@@ -1,7 +1,5 @@
+ /* Test the `vtrnQp8' ARM Neon intrinsic.  */
+ 
+-/* { dg-do run } */
+-/* { dg-require-effective-target arm_neon_ok } */
+ /* { dg-options "-save-temps -O1 -fno-inline" } */
+ /* { dg-add-options arm_neon } */
+ 
+@@ -9,4 +7,3 @@
+ #include "../../aarch64/simd/vtrnqp8.x"
+ 
+ /* { dg-final { scan-assembler-times "vtrn\.8\[ \t\]+\[qQ\]\[0-9\]+, ?\[qQ\]\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/vtrnqs16_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/vtrnqs16_1.c
+@@ -1,7 +1,5 @@
+ /* Test the `vtrnQs16' ARM Neon intrinsic.  */
+ 
+-/* { dg-do run } */
+-/* { dg-require-effective-target arm_neon_ok } */
+ /* { dg-options "-save-temps -O1 -fno-inline" } */
+ /* { dg-add-options arm_neon } */
+ 
+@@ -9,4 +7,3 @@
+ #include "../../aarch64/simd/vtrnqs16.x"
+ 
+ /* { dg-final { scan-assembler-times "vtrn\.16\[ \t\]+\[qQ\]\[0-9\]+, ?\[qQ\]\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/vtrnqs32_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/vtrnqs32_1.c
+@@ -1,7 +1,5 @@
+ /* Test the `vtrnQs32' ARM Neon intrinsic.  */
+ 
+-/* { dg-do run } */
+-/* { dg-require-effective-target arm_neon_ok } */
+ /* { dg-options "-save-temps -O1 -fno-inline" } */
+ /* { dg-add-options arm_neon } */
+ 
+@@ -9,4 +7,3 @@
+ #include "../../aarch64/simd/vtrnqs32.x"
+ 
+ /* { dg-final { scan-assembler-times "vtrn\.32\[ \t\]+\[qQ\]\[0-9\]+, ?\[qQ\]\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/vtrnqs8_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/vtrnqs8_1.c
+@@ -1,7 +1,5 @@
+ /* Test the `vtrnQs8' ARM Neon intrinsic.  */
+ 
+-/* { dg-do run } */
+-/* { dg-require-effective-target arm_neon_ok } */
+ /* { dg-options "-save-temps -O1 -fno-inline" } */
+ /* { dg-add-options arm_neon } */
+ 
+@@ -9,4 +7,3 @@
+ #include "../../aarch64/simd/vtrnqs8.x"
+ 
+ /* { dg-final { scan-assembler-times "vtrn\.8\[ \t\]+\[qQ\]\[0-9\]+, ?\[qQ\]\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/vtrnqu16_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/vtrnqu16_1.c
+@@ -1,7 +1,5 @@
+ /* Test the `vtrnQu16' ARM Neon intrinsic.  */
+ 
+-/* { dg-do run } */
+-/* { dg-require-effective-target arm_neon_ok } */
+ /* { dg-options "-save-temps -O1 -fno-inline" } */
+ /* { dg-add-options arm_neon } */
+ 
+@@ -9,4 +7,3 @@
+ #include "../../aarch64/simd/vtrnqu16.x"
+ 
+ /* { dg-final { scan-assembler-times "vtrn\.16\[ \t\]+\[qQ\]\[0-9\]+, ?\[qQ\]\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/vtrnqu32_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/vtrnqu32_1.c
+@@ -1,7 +1,5 @@
+ /* Test the `vtrnQu32' ARM Neon intrinsic.  */
+ 
+-/* { dg-do run } */
+-/* { dg-require-effective-target arm_neon_ok } */
+ /* { dg-options "-save-temps -O1 -fno-inline" } */
+ /* { dg-add-options arm_neon } */
+ 
+@@ -9,4 +7,3 @@
+ #include "../../aarch64/simd/vtrnqu32.x"
+ 
+ /* { dg-final { scan-assembler-times "vtrn\.32\[ \t\]+\[qQ\]\[0-9\]+, ?\[qQ\]\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/vtrnqu8_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/vtrnqu8_1.c
+@@ -1,7 +1,5 @@
+ /* Test the `vtrnQu8' ARM Neon intrinsic.  */
+ 
+-/* { dg-do run } */
+-/* { dg-require-effective-target arm_neon_ok } */
+ /* { dg-options "-save-temps -O1 -fno-inline" } */
+ /* { dg-add-options arm_neon } */
+ 
+@@ -9,4 +7,3 @@
+ #include "../../aarch64/simd/vtrnqu8.x"
+ 
+ /* { dg-final { scan-assembler-times "vtrn\.8\[ \t\]+\[qQ\]\[0-9\]+, ?\[qQ\]\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/vtrns16_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/vtrns16_1.c
+@@ -1,7 +1,5 @@
+ /* Test the `vtrns16' ARM Neon intrinsic.  */
+ 
+-/* { dg-do run } */
+-/* { dg-require-effective-target arm_neon_ok } */
+ /* { dg-options "-save-temps -O1 -fno-inline" } */
+ /* { dg-add-options arm_neon } */
+ 
+@@ -9,4 +7,3 @@
+ #include "../../aarch64/simd/vtrns16.x"
+ 
+ /* { dg-final { scan-assembler-times "vtrn\.16\[ \t\]+\[dD\]\[0-9\]+, ?\[dD\]\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/vtrns32_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/vtrns32_1.c
+@@ -1,7 +1,5 @@
+ /* Test the `vtrns32' ARM Neon intrinsic.  */
+ 
+-/* { dg-do run } */
+-/* { dg-require-effective-target arm_neon_ok } */
+ /* { dg-options "-save-temps -O1 -fno-inline" } */
+ /* { dg-add-options arm_neon } */
+ 
+@@ -9,4 +7,3 @@
+ #include "../../aarch64/simd/vtrns32.x"
+ 
+ /* { dg-final { scan-assembler-times "vuzp\.32\[ \t\]+\[dD\]\[0-9\]+, ?\[dD\]\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/vtrns8_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/vtrns8_1.c
+@@ -1,7 +1,5 @@
+ /* Test the `vtrns8' ARM Neon intrinsic.  */
+ 
+-/* { dg-do run } */
+-/* { dg-require-effective-target arm_neon_ok } */
+ /* { dg-options "-save-temps -O1 -fno-inline" } */
+ /* { dg-add-options arm_neon } */
+ 
+@@ -9,4 +7,3 @@
+ #include "../../aarch64/simd/vtrns8.x"
+ 
+ /* { dg-final { scan-assembler-times "vtrn\.8\[ \t\]+\[dD\]\[0-9\]+, ?\[dD\]\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/vtrnu16_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/vtrnu16_1.c
+@@ -1,7 +1,5 @@
+ /* Test the `vtrnu16' ARM Neon intrinsic.  */
+ 
+-/* { dg-do run } */
+-/* { dg-require-effective-target arm_neon_ok } */
+ /* { dg-options "-save-temps -O1 -fno-inline" } */
+ /* { dg-add-options arm_neon } */
+ 
+@@ -9,4 +7,3 @@
+ #include "../../aarch64/simd/vtrnu16.x"
+ 
+ /* { dg-final { scan-assembler-times "vtrn\.16\[ \t\]+\[dD\]\[0-9\]+, ?\[dD\]\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/vtrnu32_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/vtrnu32_1.c
+@@ -1,7 +1,5 @@
+ /* Test the `vtrnu32' ARM Neon intrinsic.  */
+ 
+-/* { dg-do run } */
+-/* { dg-require-effective-target arm_neon_ok } */
+ /* { dg-options "-save-temps -O1 -fno-inline" } */
+ /* { dg-add-options arm_neon } */
+ 
+@@ -9,4 +7,3 @@
+ #include "../../aarch64/simd/vtrnu32.x"
+ 
+ /* { dg-final { scan-assembler-times "vuzp\.32\[ \t\]+\[dD\]\[0-9\]+, ?\[dD\]\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/vtrnu8_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/vtrnu8_1.c
+@@ -1,7 +1,5 @@
+ /* Test the `vtrnu8' ARM Neon intrinsic.  */
+ 
+-/* { dg-do run } */
+-/* { dg-require-effective-target arm_neon_ok } */
+ /* { dg-options "-save-temps -O1 -fno-inline" } */
+ /* { dg-add-options arm_neon } */
+ 
+@@ -9,4 +7,3 @@
+ #include "../../aarch64/simd/vtrnu8.x"
+ 
+ /* { dg-final { scan-assembler-times "vtrn\.8\[ \t\]+\[dD\]\[0-9\]+, ?\[dD\]\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/vuzpf32_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/vuzpf32_1.c
+@@ -1,7 +1,5 @@
+ /* Test the `vuzpf32' ARM Neon intrinsic.  */
+ 
+-/* { dg-do run } */
+-/* { dg-require-effective-target arm_neon_ok } */
+ /* { dg-options "-save-temps -O1 -fno-inline" } */
+ /* { dg-add-options arm_neon } */
+ 
+@@ -9,4 +7,3 @@
+ #include "../../aarch64/simd/vuzpf32.x"
+ 
+ /* { dg-final { scan-assembler-times "vuzp\.32\[ \t\]+\[dD\]\[0-9\]+, ?\[dD\]\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/vuzpp16_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/vuzpp16_1.c
+@@ -1,7 +1,5 @@
+ /* Test the `vuzpp16' ARM Neon intrinsic.  */
+ 
+-/* { dg-do run } */
+-/* { dg-require-effective-target arm_neon_ok } */
+ /* { dg-options "-save-temps -O1 -fno-inline" } */
+ /* { dg-add-options arm_neon } */
+ 
+@@ -9,4 +7,3 @@
+ #include "../../aarch64/simd/vuzpp16.x"
+ 
+ /* { dg-final { scan-assembler-times "vuzp\.16\[ \t\]+\[dD\]\[0-9\]+, ?\[dD\]\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/vuzpp8_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/vuzpp8_1.c
+@@ -1,7 +1,5 @@
+ /* Test the `vuzpp8' ARM Neon intrinsic.  */
+ 
+-/* { dg-do run } */
+-/* { dg-require-effective-target arm_neon_ok } */
+ /* { dg-options "-save-temps -O1 -fno-inline" } */
+ /* { dg-add-options arm_neon } */
+ 
+@@ -9,4 +7,3 @@
+ #include "../../aarch64/simd/vuzpp8.x"
+ 
+ /* { dg-final { scan-assembler-times "vuzp\.8\[ \t\]+\[dD\]\[0-9\]+, ?\[dD\]\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/vuzpqf32_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/vuzpqf32_1.c
+@@ -1,7 +1,5 @@
+ /* Test the `vuzpQf32' ARM Neon intrinsic.  */
+ 
+-/* { dg-do run } */
+-/* { dg-require-effective-target arm_neon_ok } */
+ /* { dg-options "-save-temps -O1 -fno-inline" } */
+ /* { dg-add-options arm_neon } */
+ 
+@@ -9,4 +7,3 @@
+ #include "../../aarch64/simd/vuzpqf32.x"
+ 
+ /* { dg-final { scan-assembler-times "vuzp\.32\[ \t\]+\[qQ\]\[0-9\]+, ?\[qQ\]\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/vuzpqp16_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/vuzpqp16_1.c
+@@ -1,7 +1,5 @@
+ /* Test the `vuzpQp16' ARM Neon intrinsic.  */
+ 
+-/* { dg-do run } */
+-/* { dg-require-effective-target arm_neon_ok } */
+ /* { dg-options "-save-temps -O1 -fno-inline" } */
+ /* { dg-add-options arm_neon } */
+ 
+@@ -9,4 +7,3 @@
+ #include "../../aarch64/simd/vuzpqp16.x"
+ 
+ /* { dg-final { scan-assembler-times "vuzp\.16\[ \t\]+\[qQ\]\[0-9\]+, ?\[qQ\]\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/vuzpqp8_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/vuzpqp8_1.c
+@@ -1,7 +1,5 @@
+ /* Test the `vuzpQp8' ARM Neon intrinsic.  */
+ 
+-/* { dg-do run } */
+-/* { dg-require-effective-target arm_neon_ok } */
+ /* { dg-options "-save-temps -O1 -fno-inline" } */
+ /* { dg-add-options arm_neon } */
+ 
+@@ -9,4 +7,3 @@
+ #include "../../aarch64/simd/vuzpqp8.x"
+ 
+ /* { dg-final { scan-assembler-times "vuzp\.8\[ \t\]+\[qQ\]\[0-9\]+, ?\[qQ\]\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/vuzpqs16_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/vuzpqs16_1.c
+@@ -1,7 +1,5 @@
+ /* Test the `vuzpQs16' ARM Neon intrinsic.  */
+ 
+-/* { dg-do run } */
+-/* { dg-require-effective-target arm_neon_ok } */
+ /* { dg-options "-save-temps -O1 -fno-inline" } */
+ /* { dg-add-options arm_neon } */
+ 
+@@ -9,4 +7,3 @@
+ #include "../../aarch64/simd/vuzpqs16.x"
+ 
+ /* { dg-final { scan-assembler-times "vuzp\.16\[ \t\]+\[qQ\]\[0-9\]+, ?\[qQ\]\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/vuzpqs32_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/vuzpqs32_1.c
+@@ -1,7 +1,5 @@
+ /* Test the `vuzpQs32' ARM Neon intrinsic.  */
+ 
+-/* { dg-do run } */
+-/* { dg-require-effective-target arm_neon_ok } */
+ /* { dg-options "-save-temps -O1 -fno-inline" } */
+ /* { dg-add-options arm_neon } */
+ 
+@@ -9,4 +7,3 @@
+ #include "../../aarch64/simd/vuzpqs32.x"
+ 
+ /* { dg-final { scan-assembler-times "vuzp\.32\[ \t\]+\[qQ\]\[0-9\]+, ?\[qQ\]\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/vuzpqs8_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/vuzpqs8_1.c
+@@ -1,7 +1,5 @@
+ /* Test the `vuzpQs8' ARM Neon intrinsic.  */
+ 
+-/* { dg-do run } */
+-/* { dg-require-effective-target arm_neon_ok } */
+ /* { dg-options "-save-temps -O1 -fno-inline" } */
+ /* { dg-add-options arm_neon } */
+ 
+@@ -9,4 +7,3 @@
+ #include "../../aarch64/simd/vuzpqs8.x"
+ 
+ /* { dg-final { scan-assembler-times "vuzp\.8\[ \t\]+\[qQ\]\[0-9\]+, ?\[qQ\]\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/vuzpqu16_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/vuzpqu16_1.c
+@@ -1,7 +1,5 @@
+ /* Test the `vuzpQu16' ARM Neon intrinsic.  */
+ 
+-/* { dg-do run } */
+-/* { dg-require-effective-target arm_neon_ok } */
+ /* { dg-options "-save-temps -O1 -fno-inline" } */
+ /* { dg-add-options arm_neon } */
+ 
+@@ -9,4 +7,3 @@
+ #include "../../aarch64/simd/vuzpqu16.x"
+ 
+ /* { dg-final { scan-assembler-times "vuzp\.16\[ \t\]+\[qQ\]\[0-9\]+, ?\[qQ\]\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/vuzpqu32_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/vuzpqu32_1.c
+@@ -1,7 +1,5 @@
+ /* Test the `vuzpQu32' ARM Neon intrinsic.  */
+ 
+-/* { dg-do run } */
+-/* { dg-require-effective-target arm_neon_ok } */
+ /* { dg-options "-save-temps -O1 -fno-inline" } */
+ /* { dg-add-options arm_neon } */
+ 
+@@ -9,4 +7,3 @@
+ #include "../../aarch64/simd/vuzpqu32.x"
+ 
+ /* { dg-final { scan-assembler-times "vuzp\.32\[ \t\]+\[qQ\]\[0-9\]+, ?\[qQ\]\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/vuzpqu8_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/vuzpqu8_1.c
+@@ -1,7 +1,5 @@
+ /* Test the `vuzpQu8' ARM Neon intrinsic.  */
+ 
+-/* { dg-do run } */
+-/* { dg-require-effective-target arm_neon_ok } */
+ /* { dg-options "-save-temps -O1 -fno-inline" } */
+ /* { dg-add-options arm_neon } */
+ 
+@@ -9,4 +7,3 @@
+ #include "../../aarch64/simd/vuzpqu8.x"
+ 
+ /* { dg-final { scan-assembler-times "vuzp\.8\[ \t\]+\[qQ\]\[0-9\]+, ?\[qQ\]\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/vuzps16_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/vuzps16_1.c
+@@ -1,7 +1,5 @@
+ /* Test the `vuzps16' ARM Neon intrinsic.  */
+ 
+-/* { dg-do run } */
+-/* { dg-require-effective-target arm_neon_ok } */
+ /* { dg-options "-save-temps -O1 -fno-inline" } */
+ /* { dg-add-options arm_neon } */
+ 
+@@ -9,4 +7,3 @@
+ #include "../../aarch64/simd/vuzps16.x"
+ 
+ /* { dg-final { scan-assembler-times "vuzp\.16\[ \t\]+\[dD\]\[0-9\]+, ?\[dD\]\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/vuzps32_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/vuzps32_1.c
+@@ -1,7 +1,5 @@
+ /* Test the `vuzps32' ARM Neon intrinsic.  */
+ 
+-/* { dg-do run } */
+-/* { dg-require-effective-target arm_neon_ok } */
+ /* { dg-options "-save-temps -O1 -fno-inline" } */
+ /* { dg-add-options arm_neon } */
+ 
+@@ -9,4 +7,3 @@
+ #include "../../aarch64/simd/vuzps32.x"
+ 
+ /* { dg-final { scan-assembler-times "vuzp\.32\[ \t\]+\[dD\]\[0-9\]+, ?\[dD\]\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/vuzps8_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/vuzps8_1.c
+@@ -1,7 +1,5 @@
+ /* Test the `vuzps8' ARM Neon intrinsic.  */
+ 
+-/* { dg-do run } */
+-/* { dg-require-effective-target arm_neon_ok } */
+ /* { dg-options "-save-temps -O1 -fno-inline" } */
+ /* { dg-add-options arm_neon } */
+ 
+@@ -9,4 +7,3 @@
+ #include "../../aarch64/simd/vuzps8.x"
+ 
+ /* { dg-final { scan-assembler-times "vuzp\.8\[ \t\]+\[dD\]\[0-9\]+, ?\[dD\]\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/vuzpu16_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/vuzpu16_1.c
+@@ -1,7 +1,5 @@
+ /* Test the `vuzpu16' ARM Neon intrinsic.  */
+ 
+-/* { dg-do run } */
+-/* { dg-require-effective-target arm_neon_ok } */
+ /* { dg-options "-save-temps -O1 -fno-inline" } */
+ /* { dg-add-options arm_neon } */
+ 
+@@ -9,4 +7,3 @@
+ #include "../../aarch64/simd/vuzpu16.x"
+ 
+ /* { dg-final { scan-assembler-times "vuzp\.16\[ \t\]+\[dD\]\[0-9\]+, ?\[dD\]\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/vuzpu32_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/vuzpu32_1.c
+@@ -1,7 +1,5 @@
+ /* Test the `vuzpu32' ARM Neon intrinsic.  */
+ 
+-/* { dg-do run } */
+-/* { dg-require-effective-target arm_neon_ok } */
+ /* { dg-options "-save-temps -O1 -fno-inline" } */
+ /* { dg-add-options arm_neon } */
+ 
+@@ -9,4 +7,3 @@
+ #include "../../aarch64/simd/vuzpu32.x"
+ 
+ /* { dg-final { scan-assembler-times "vuzp\.32\[ \t\]+\[dD\]\[0-9\]+, ?\[dD\]\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/vuzpu8_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/vuzpu8_1.c
+@@ -1,7 +1,5 @@
+ /* Test the `vuzpu8' ARM Neon intrinsic.  */
+ 
+-/* { dg-do run } */
+-/* { dg-require-effective-target arm_neon_ok } */
+ /* { dg-options "-save-temps -O1 -fno-inline" } */
+ /* { dg-add-options arm_neon } */
+ 
+@@ -9,4 +7,3 @@
+ #include "../../aarch64/simd/vuzpu8.x"
+ 
+ /* { dg-final { scan-assembler-times "vuzp\.8\[ \t\]+\[dD\]\[0-9\]+, ?\[dD\]\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/vzipf32_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/vzipf32_1.c
+@@ -1,7 +1,5 @@
+ /* Test the `vzipf32' ARM Neon intrinsic.  */
+ 
+-/* { dg-do run } */
+-/* { dg-require-effective-target arm_neon_ok } */
+ /* { dg-options "-save-temps -O1 -fno-inline" } */
+ /* { dg-add-options arm_neon } */
+ 
+@@ -9,4 +7,3 @@
+ #include "../../aarch64/simd/vzipf32.x"
+ 
+ /* { dg-final { scan-assembler-times "vuzp\.32\[ \t\]+\[dD\]\[0-9\]+, ?\[dD\]\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/vzipp16_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/vzipp16_1.c
+@@ -1,7 +1,5 @@
+ /* Test the `vzipp16' ARM Neon intrinsic.  */
+ 
+-/* { dg-do run } */
+-/* { dg-require-effective-target arm_neon_ok } */
+ /* { dg-options "-save-temps -O1 -fno-inline" } */
+ /* { dg-add-options arm_neon } */
+ 
+@@ -9,4 +7,3 @@
+ #include "../../aarch64/simd/vzipp16.x"
+ 
+ /* { dg-final { scan-assembler-times "vzip\.16\[ \t\]+\[dD\]\[0-9\]+, ?\[dD\]\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/vzipp8_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/vzipp8_1.c
+@@ -1,7 +1,5 @@
+ /* Test the `vzipp8' ARM Neon intrinsic.  */
+ 
+-/* { dg-do run } */
+-/* { dg-require-effective-target arm_neon_ok } */
+ /* { dg-options "-save-temps -O1 -fno-inline" } */
+ /* { dg-add-options arm_neon } */
+ 
+@@ -9,4 +7,3 @@
+ #include "../../aarch64/simd/vzipp8.x"
+ 
+ /* { dg-final { scan-assembler-times "vzip\.8\[ \t\]+\[dD\]\[0-9\]+, ?\[dD\]\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/vzipqf32_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/vzipqf32_1.c
+@@ -1,7 +1,5 @@
+ /* Test the `vzipQf32' ARM Neon intrinsic.  */
+ 
+-/* { dg-do run } */
+-/* { dg-require-effective-target arm_neon_ok } */
+ /* { dg-options "-save-temps -O1 -fno-inline" } */
+ /* { dg-add-options arm_neon } */
+ 
+@@ -9,4 +7,3 @@
+ #include "../../aarch64/simd/vzipqf32.x"
+ 
+ /* { dg-final { scan-assembler-times "vzip\.32\[ \t\]+\[qQ\]\[0-9\]+, ?\[qQ\]\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/vzipqp16_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/vzipqp16_1.c
+@@ -1,7 +1,5 @@
+ /* Test the `vzipQp16' ARM Neon intrinsic.  */
+ 
+-/* { dg-do run } */
+-/* { dg-require-effective-target arm_neon_ok } */
+ /* { dg-options "-save-temps -O1 -fno-inline" } */
+ /* { dg-add-options arm_neon } */
+ 
+@@ -9,4 +7,3 @@
+ #include "../../aarch64/simd/vzipqp16.x"
+ 
+ /* { dg-final { scan-assembler-times "vzip\.16\[ \t\]+\[qQ\]\[0-9\]+, ?\[qQ\]\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/vzipqp8_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/vzipqp8_1.c
+@@ -1,7 +1,5 @@
+ /* Test the `vzipQp8' ARM Neon intrinsic.  */
+ 
+-/* { dg-do run } */
+-/* { dg-require-effective-target arm_neon_ok } */
+ /* { dg-options "-save-temps -O1 -fno-inline" } */
+ /* { dg-add-options arm_neon } */
+ 
+@@ -9,4 +7,3 @@
+ #include "../../aarch64/simd/vzipqp8.x"
+ 
+ /* { dg-final { scan-assembler-times "vzip\.8\[ \t\]+\[qQ\]\[0-9\]+, ?\[qQ\]\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/vzipqs16_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/vzipqs16_1.c
+@@ -1,7 +1,5 @@
+ /* Test the `vzipQs16' ARM Neon intrinsic.  */
+ 
+-/* { dg-do run } */
+-/* { dg-require-effective-target arm_neon_ok } */
+ /* { dg-options "-save-temps -O1 -fno-inline" } */
+ /* { dg-add-options arm_neon } */
+ 
+@@ -9,4 +7,3 @@
+ #include "../../aarch64/simd/vzipqs16.x"
+ 
+ /* { dg-final { scan-assembler-times "vzip\.16\[ \t\]+\[qQ\]\[0-9\]+, ?\[qQ\]\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/vzipqs32_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/vzipqs32_1.c
+@@ -1,7 +1,5 @@
+ /* Test the `vzipQs32' ARM Neon intrinsic.  */
+ 
+-/* { dg-do run } */
+-/* { dg-require-effective-target arm_neon_ok } */
+ /* { dg-options "-save-temps -O1 -fno-inline" } */
+ /* { dg-add-options arm_neon } */
+ 
+@@ -9,4 +7,3 @@
+ #include "../../aarch64/simd/vzipqs32.x"
+ 
+ /* { dg-final { scan-assembler-times "vzip\.32\[ \t\]+\[qQ\]\[0-9\]+, ?\[qQ\]\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/vzipqs8_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/vzipqs8_1.c
+@@ -1,7 +1,5 @@
+ /* Test the `vzipQs8' ARM Neon intrinsic.  */
+ 
+-/* { dg-do run } */
+-/* { dg-require-effective-target arm_neon_ok } */
+ /* { dg-options "-save-temps -O1 -fno-inline" } */
+ /* { dg-add-options arm_neon } */
+ 
+@@ -9,4 +7,3 @@
+ #include "../../aarch64/simd/vzipqs8.x"
+ 
+ /* { dg-final { scan-assembler-times "vzip\.8\[ \t\]+\[qQ\]\[0-9\]+, ?\[qQ\]\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/vzipqu16_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/vzipqu16_1.c
+@@ -1,7 +1,5 @@
+ /* Test the `vzipQu16' ARM Neon intrinsic.  */
+ 
+-/* { dg-do run } */
+-/* { dg-require-effective-target arm_neon_ok } */
+ /* { dg-options "-save-temps -O1 -fno-inline" } */
+ /* { dg-add-options arm_neon } */
+ 
+@@ -9,4 +7,3 @@
+ #include "../../aarch64/simd/vzipqu16.x"
+ 
+ /* { dg-final { scan-assembler-times "vzip\.16\[ \t\]+\[qQ\]\[0-9\]+, ?\[qQ\]\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/vzipqu32_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/vzipqu32_1.c
+@@ -1,7 +1,5 @@
+ /* Test the `vzipQu32' ARM Neon intrinsic.  */
+ 
+-/* { dg-do run } */
+-/* { dg-require-effective-target arm_neon_ok } */
+ /* { dg-options "-save-temps -O1 -fno-inline" } */
+ /* { dg-add-options arm_neon } */
+ 
+@@ -9,4 +7,3 @@
+ #include "../../aarch64/simd/vzipqu32.x"
+ 
+ /* { dg-final { scan-assembler-times "vzip\.32\[ \t\]+\[qQ\]\[0-9\]+, ?\[qQ\]\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/vzipqu8_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/vzipqu8_1.c
+@@ -1,7 +1,5 @@
+ /* Test the `vzipQu8' ARM Neon intrinsic.  */
+ 
+-/* { dg-do run } */
+-/* { dg-require-effective-target arm_neon_ok } */
+ /* { dg-options "-save-temps -O1 -fno-inline" } */
+ /* { dg-add-options arm_neon } */
+ 
+@@ -9,4 +7,3 @@
+ #include "../../aarch64/simd/vzipqu8.x"
+ 
+ /* { dg-final { scan-assembler-times "vzip\.8\[ \t\]+\[qQ\]\[0-9\]+, ?\[qQ\]\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/vzips16_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/vzips16_1.c
+@@ -1,7 +1,5 @@
+ /* Test the `vzips16' ARM Neon intrinsic.  */
+ 
+-/* { dg-do run } */
+-/* { dg-require-effective-target arm_neon_ok } */
+ /* { dg-options "-save-temps -O1 -fno-inline" } */
+ /* { dg-add-options arm_neon } */
+ 
+@@ -9,4 +7,3 @@
+ #include "../../aarch64/simd/vzips16.x"
+ 
+ /* { dg-final { scan-assembler-times "vzip\.16\[ \t\]+\[dD\]\[0-9\]+, ?\[dD\]\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/vzips32_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/vzips32_1.c
+@@ -1,7 +1,5 @@
+ /* Test the `vzips32' ARM Neon intrinsic.  */
+ 
+-/* { dg-do run } */
+-/* { dg-require-effective-target arm_neon_ok } */
+ /* { dg-options "-save-temps -O1 -fno-inline" } */
+ /* { dg-add-options arm_neon } */
+ 
+@@ -9,4 +7,3 @@
+ #include "../../aarch64/simd/vzips32.x"
+ 
+ /* { dg-final { scan-assembler-times "vuzp\.32\[ \t\]+\[dD\]\[0-9\]+, ?\[dD\]\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/vzips8_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/vzips8_1.c
+@@ -1,7 +1,5 @@
+ /* Test the `vzips8' ARM Neon intrinsic.  */
+ 
+-/* { dg-do run } */
+-/* { dg-require-effective-target arm_neon_ok } */
+ /* { dg-options "-save-temps -O1 -fno-inline" } */
+ /* { dg-add-options arm_neon } */
+ 
+@@ -9,4 +7,3 @@
+ #include "../../aarch64/simd/vzips8.x"
+ 
+ /* { dg-final { scan-assembler-times "vzip\.8\[ \t\]+\[dD\]\[0-9\]+, ?\[dD\]\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/vzipu16_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/vzipu16_1.c
+@@ -1,7 +1,5 @@
+ /* Test the `vzipu16' ARM Neon intrinsic.  */
+ 
+-/* { dg-do run } */
+-/* { dg-require-effective-target arm_neon_ok } */
+ /* { dg-options "-save-temps -O1 -fno-inline" } */
+ /* { dg-add-options arm_neon } */
+ 
+@@ -9,4 +7,3 @@
+ #include "../../aarch64/simd/vzipu16.x"
+ 
+ /* { dg-final { scan-assembler-times "vzip\.16\[ \t\]+\[dD\]\[0-9\]+, ?\[dD\]\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/vzipu32_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/vzipu32_1.c
+@@ -1,7 +1,5 @@
+ /* Test the `vzipu32' ARM Neon intrinsic.  */
+ 
+-/* { dg-do run } */
+-/* { dg-require-effective-target arm_neon_ok } */
+ /* { dg-options "-save-temps -O1 -fno-inline" } */
+ /* { dg-add-options arm_neon } */
+ 
+@@ -9,4 +7,3 @@
+ #include "../../aarch64/simd/vzipu32.x"
+ 
+ /* { dg-final { scan-assembler-times "vuzp\.32\[ \t\]+\[dD\]\[0-9\]+, ?\[dD\]\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/simd/vzipu8_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/simd/vzipu8_1.c
+@@ -1,7 +1,5 @@
+ /* Test the `vzipu8' ARM Neon intrinsic.  */
+ 
+-/* { dg-do run } */
+-/* { dg-require-effective-target arm_neon_ok } */
+ /* { dg-options "-save-temps -O1 -fno-inline" } */
+ /* { dg-add-options arm_neon } */
+ 
+@@ -9,4 +7,3 @@
+ #include "../../aarch64/simd/vzipu8.x"
+ 
+ /* { dg-final { scan-assembler-times "vzip\.8\[ \t\]+\[dD\]\[0-9\]+, ?\[dD\]\[0-9\]+!?\(?:\[ \t\]+@\[a-zA-Z0-9 \]+\)?\n" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/arm/split-live-ranges-for-shrink-wrap.c
++++ b/src/gcc/testsuite/gcc.target/arm/split-live-ranges-for-shrink-wrap.c
+@@ -13,4 +13,3 @@ int test (int d, char * out, char *in, int len)
+ }
+ /* { dg-final { object-size text <= 20 } } */
+ /* { dg-final { scan-rtl-dump-not "Split live-range of register" "ira" } } */
+-/* { dg-final { cleanup-rtl-dump "ira" } } */
+--- a/src/gcc/testsuite/gcc.target/arm/thumb-ifcvt.c
++++ b/src/gcc/testsuite/gcc.target/arm/thumb-ifcvt.c
+@@ -1,7 +1,7 @@
+ /* Check that Thumb 16-bit shifts can be if-converted.  */
+ /* { dg-do compile } */
+ /* { dg-require-effective-target arm_thumb2_ok } */
+-/* { dg-options "-O2 -mthumb" } */
++/* { dg-options "-O2 -mthumb -mno-restrict-it" } */
+ 
+ int
+ foo (int a, int b)
+--- a/src/gcc/testsuite/gcc.target/arm/thumb1-Os-mult.c
++++ b/src/gcc/testsuite/gcc.target/arm/thumb1-Os-mult.c
+@@ -1,5 +1,5 @@
+-/* { dg-require-effective-target arm_thumb1_ok } */
+ /* { dg-do compile } */
++/* { dg-require-effective-target arm_thumb1_ok } */
+ /* { dg-options "-Os" } */
+ /* { dg-skip-if "" { ! { arm_thumb1 } } } */
+ 
+--- a/src/gcc/testsuite/gcc.target/arm/thumb1-load-64bit-constant-1.c
++++ b/src/gcc/testsuite/gcc.target/arm/thumb1-load-64bit-constant-1.c
+@@ -1,5 +1,5 @@
+-/* { dg-require-effective-target arm_thumb1_ok } */
+ /* { dg-do compile } */
++/* { dg-require-effective-target arm_thumb1_ok } */
+ /* { dg-options "-Os" } */
+ /* { dg-skip-if "" { ! { arm_thumb1 } } } */
+ 
+--- a/src/gcc/testsuite/gcc.target/arm/thumb1-load-64bit-constant-2.c
++++ b/src/gcc/testsuite/gcc.target/arm/thumb1-load-64bit-constant-2.c
+@@ -1,5 +1,5 @@
+-/* { dg-require-effective-target arm_thumb1_ok } */
+ /* { dg-do compile } */
++/* { dg-require-effective-target arm_thumb1_ok } */
+ /* { dg-options "-O2" } */
+ /* { dg-skip-if "" { ! { arm_thumb1 } } } */
+ 
+--- a/src/gcc/testsuite/gcc.target/arm/thumb1-load-64bit-constant-3.c
++++ b/src/gcc/testsuite/gcc.target/arm/thumb1-load-64bit-constant-3.c
+@@ -1,5 +1,5 @@
+-/* { dg-require-effective-target arm_thumb1_ok } */
+ /* { dg-do compile } */
++/* { dg-require-effective-target arm_thumb1_ok } */
+ /* { dg-options "-Os" } */
+ /* { dg-skip-if "" { ! { arm_thumb1 } } } */
+ 
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.target/arm/unsigned-float.c
+@@ -0,0 +1,21 @@
++/* { dg-do compile } */
++/* { dg-require-effective-target arm_vfp_ok } */
++/* { dg-skip-if "need fp instructions" { *-*-* } { "-mfloat-abi=soft" } { "" } } */
++/* { dg-options "-march=armv7-a -O1" } */
++/* { dg-additional-options "-mfloat-abi=softfp" { target { ! { arm_hf_eabi } } } } */
++
++#include <stdint.h>
++
++double
++f1 (uint16_t x)
++{
++  return (double)(float)x;
++}
++
++float
++f2 (uint16_t x)
++{
++  return (float)(double)x;
++}
++
++/* { dg-final { scan-assembler-not "vcvt.(f32.f64|f64.f32)" } } */
+--- a/src/gcc/testsuite/gcc.target/arm/vect-copysignf.c
++++ b/src/gcc/testsuite/gcc.target/arm/vect-copysignf.c
+@@ -33,4 +33,3 @@ main (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.target/arm/vect-lceilf_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/vect-lceilf_1.c
+@@ -18,4 +18,3 @@ foo ()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.target/arm/vect-lfloorf_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/vect-lfloorf_1.c
+@@ -18,4 +18,3 @@ foo ()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.target/arm/vect-lroundf_1.c
++++ b/src/gcc/testsuite/gcc.target/arm/vect-lroundf_1.c
+@@ -18,4 +18,3 @@ foo ()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.target/arm/vect-rounding-btruncf.c
++++ b/src/gcc/testsuite/gcc.target/arm/vect-rounding-btruncf.c
+@@ -18,4 +18,3 @@ foo ()
+ }
+ 
+ /* { 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/vect-rounding-ceilf.c
++++ b/src/gcc/testsuite/gcc.target/arm/vect-rounding-ceilf.c
+@@ -18,4 +18,3 @@ foo ()
+ }
+ 
+ /* { 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/vect-rounding-floorf.c
++++ b/src/gcc/testsuite/gcc.target/arm/vect-rounding-floorf.c
+@@ -18,4 +18,3 @@ foo ()
+ }
+ 
+ /* { 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/vect-rounding-roundf.c
++++ b/src/gcc/testsuite/gcc.target/arm/vect-rounding-roundf.c
+@@ -18,4 +18,3 @@ foo ()
+ }
+ 
+ /* { 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/vfp-1.c
++++ b/src/gcc/testsuite/gcc.target/arm/vfp-1.c
+@@ -1,6 +1,7 @@
+ /* { dg-do compile } */
+-/* { dg-options "-O2 -mfpu=vfp -mfloat-abi=softfp" } */
++/* { dg-options "-O2 -mfpu=vfp -mfloat-abi=softfp -ffp-contract=off" } */
+ /* { dg-require-effective-target arm_vfp_ok } */
++/* { dg-skip-if "need fp instructions" { *-*-* } { "-mfloat-abi=soft" } { "" } } */
+ 
+ extern float fabsf (float);
+ extern float sqrtf (float);
+--- a/src/gcc/testsuite/gcc.target/arm/volatile-bitfields-1.c
++++ b/src/gcc/testsuite/gcc.target/arm/volatile-bitfields-1.c
+@@ -1,5 +1,5 @@
+-/* { dg-require-effective-target arm_eabi } */
+ /* { dg-do compile } */
++/* { dg-require-effective-target arm_eabi } */
+ /* { dg-options "-O2" } */
+ 
+ typedef struct {
+--- a/src/gcc/testsuite/gcc.target/arm/volatile-bitfields-2.c
++++ b/src/gcc/testsuite/gcc.target/arm/volatile-bitfields-2.c
+@@ -1,5 +1,5 @@
+-/* { dg-require-effective-target arm_eabi } */
+ /* { dg-do compile } */
++/* { dg-require-effective-target arm_eabi } */
+ /* { dg-options "-O2" } */
+ 
+ typedef struct {
+--- a/src/gcc/testsuite/gcc.target/arm/volatile-bitfields-3.c
++++ b/src/gcc/testsuite/gcc.target/arm/volatile-bitfields-3.c
+@@ -1,5 +1,5 @@
+-/* { dg-require-effective-target arm_eabi } */
+ /* { dg-do compile } */
++/* { dg-require-effective-target arm_eabi } */
+ /* { dg-options "-O2" } */
+ 
+ typedef struct {
+--- a/src/gcc/testsuite/gcc.target/arm/volatile-bitfields-4.c
++++ b/src/gcc/testsuite/gcc.target/arm/volatile-bitfields-4.c
+@@ -1,5 +1,5 @@
+-/* { dg-require-effective-target arm_eabi } */
+ /* { dg-do compile } */
++/* { dg-require-effective-target arm_eabi } */
+ /* { dg-options "-O2" } */
+ /* { dg-final { scan-assembler-times "ldr\[\\t \]+\[^\n\]*,\[\\t \]*\\\[\[^\n\]*\\\]" 2 } } */
+ /* { dg-final { scan-assembler-times "str\[\\t \]+\[^\n\]*,\[\\t \]*\\\[\[^\n\]*\\\]" 2 } } */
+--- a/src/gcc/testsuite/gcc.target/i386/avx-cvt-2.c
++++ b/src/gcc/testsuite/gcc.target/i386/avx-cvt-2.c
+@@ -10,4 +10,3 @@
+ /* { dg-final { scan-assembler "vcvttps2dq\[^\n\r\]*ymm" } } */
+ /* { dg-final { scan-assembler "vcvtdq2pd\[^\n\r\]*(%xmm\[^\n\r\]*%ymm|ymm\[^\n\r\]*xmm)" } } */
+ /* { dg-final { scan-assembler "vcvtpd2ps(y\[^\n\r\]*%xmm|\[^\n\r\]*xmm\[^\n\r\]*YMMWORD PTR)" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.target/i386/avx-cvt-3.c
++++ b/src/gcc/testsuite/gcc.target/i386/avx-cvt-3.c
+@@ -10,4 +10,3 @@
+ /* { dg-final { scan-assembler "vcvttps2dq\[^\n\r\]*xmm" } } */
+ /* { dg-final { scan-assembler "vcvtdq2pd\[^\n\r\]*xmm\[^\n\r\]*xmm" } } */
+ /* { dg-final { scan-assembler "vcvtpd2ps(x\[^\n\r\]*%xmm|\[^\n\r\]*xmm\[^\n\r\]*XMMWORD PTR)" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.target/i386/avx2-cvt-2.c
++++ b/src/gcc/testsuite/gcc.target/i386/avx2-cvt-2.c
+@@ -10,4 +10,3 @@
+ /* { dg-final { scan-assembler "vcvttps2dq\[^\n\r\]*ymm" } } */
+ /* { dg-final { scan-assembler "vcvtdq2pd\[^\n\r\]*(%xmm\[^\n\r\]*%ymm|ymm\[^\n\r\]*xmm)" } } */
+ /* { dg-final { scan-assembler "vcvtpd2ps(y\[^\n\r\]*%xmm|\[^\n\r\]*xmm\[^\n\r\]*YMMWORD PTR)" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.target/i386/avx2-gather-2.c
++++ b/src/gcc/testsuite/gcc.target/i386/avx2-gather-2.c
+@@ -4,4 +4,3 @@
+ #include "avx2-gather-1.c"
+ 
+ /* { dg-final { scan-tree-dump-times "note: vectorized 1 loops in function" 16 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.target/i386/avx2-gather-6.c
++++ b/src/gcc/testsuite/gcc.target/i386/avx2-gather-6.c
+@@ -4,4 +4,3 @@
+ #include "avx2-gather-5.c"
+ 
+ /* { dg-final { scan-tree-dump-times "note: vectorized 1 loops in function" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.target/i386/avx2-vect-aggressive-1.c
++++ b/src/gcc/testsuite/gcc.target/i386/avx2-vect-aggressive-1.c
+@@ -30,4 +30,3 @@ void foo()
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.target/i386/avx2-vect-aggressive.c
++++ b/src/gcc/testsuite/gcc.target/i386/avx2-vect-aggressive.c
+@@ -45,5 +45,4 @@ avx2_test (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+--- a/src/gcc/testsuite/gcc.target/i386/avx2-vpaddb-3.c
++++ b/src/gcc/testsuite/gcc.target/i386/avx2-vpaddb-3.c
+@@ -9,4 +9,3 @@
+ #include "avx2-vpop-check.h"
+ 
+ /* { dg-final { scan-assembler-times "vpaddb\[ \\t\]+\[^\n\]*%ymm\[0-9\]" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/i386/avx2-vpaddd-3.c
++++ b/src/gcc/testsuite/gcc.target/i386/avx2-vpaddd-3.c
+@@ -9,4 +9,3 @@
+ #include "avx2-vpop-check.h"
+ 
+ /* { dg-final { scan-assembler-times "vpaddd\[ \\t\]+\[^\n\]*%ymm\[0-9\]" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/i386/avx2-vpaddq-3.c
++++ b/src/gcc/testsuite/gcc.target/i386/avx2-vpaddq-3.c
+@@ -9,4 +9,3 @@
+ #include "avx2-vpop-check.h"
+ 
+ /* { dg-final { scan-assembler-times "vpaddq\[ \\t\]+\[^\n\]*%ymm\[0-9\]" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/i386/avx2-vpaddw-3.c
++++ b/src/gcc/testsuite/gcc.target/i386/avx2-vpaddw-3.c
+@@ -9,4 +9,3 @@
+ #include "avx2-vpop-check.h"
+ 
+ /* { dg-final { scan-assembler-times "vpaddw\[ \\t\]+\[^\n\]*%ymm\[0-9\]" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/i386/avx2-vpand-3.c
++++ b/src/gcc/testsuite/gcc.target/i386/avx2-vpand-3.c
+@@ -9,4 +9,3 @@
+ #include "avx2-vpop-check.h"
+ 
+ /* { dg-final { scan-assembler-times "vpand\[ \\t\]+\[^\n\]*%ymm\[0-9\]" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/i386/avx2-vpmulld-3.c
++++ b/src/gcc/testsuite/gcc.target/i386/avx2-vpmulld-3.c
+@@ -9,4 +9,3 @@
+ #include "avx2-vpop-check.h"
+ 
+ /* { dg-final { scan-assembler-times "vpmulld\[ \\t\]+\[^\n\]*%ymm\[0-9\]" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/i386/avx2-vpmullw-3.c
++++ b/src/gcc/testsuite/gcc.target/i386/avx2-vpmullw-3.c
+@@ -9,4 +9,3 @@
+ #include "avx2-vpop-check.h"
+ 
+ /* { dg-final { scan-assembler-times "vpmullw\[ \\t\]+\[^\n\]*%ymm\[0-9\]" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/i386/avx2-vpsrad-3.c
++++ b/src/gcc/testsuite/gcc.target/i386/avx2-vpsrad-3.c
+@@ -9,4 +9,3 @@
+ #include "avx2-vpop-check.h"
+ 
+ /* { dg-final { scan-assembler-times "vpsrld\[ \\t\]+\[^\n\]*%ymm\[0-9\]" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/i386/avx2-vpsraw-3.c
++++ b/src/gcc/testsuite/gcc.target/i386/avx2-vpsraw-3.c
+@@ -9,4 +9,3 @@
+ #include "avx2-vpop-check.h"
+ 
+ /* { dg-final { scan-assembler-times "vpsraw\[ \\t\]+\[^\n\]*%ymm\[0-9\]" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/i386/avx2-vpsrld-3.c
++++ b/src/gcc/testsuite/gcc.target/i386/avx2-vpsrld-3.c
+@@ -9,4 +9,3 @@
+ #include "avx2-vpop-check.h"
+ 
+ /* { dg-final { scan-assembler-times "vpsrld\[ \\t\]+\[^\n\]*%ymm\[0-9\]" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/i386/avx2-vpsrlw-3.c
++++ b/src/gcc/testsuite/gcc.target/i386/avx2-vpsrlw-3.c
+@@ -9,4 +9,3 @@
+ #include "avx2-vpop-check.h"
+ 
+ /* { dg-final { scan-assembler-times "vpsrlw\[ \\t\]+\[^\n\]*%ymm\[0-9\]" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/i386/avx2-vpsubb-3.c
++++ b/src/gcc/testsuite/gcc.target/i386/avx2-vpsubb-3.c
+@@ -9,4 +9,3 @@
+ #include "avx2-vpop-check.h"
+ 
+ /* { dg-final { scan-assembler-times "vpsubb\[ \\t\]+\[^\n\]*%ymm\[0-9\]" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/i386/avx2-vpsubd-3.c
++++ b/src/gcc/testsuite/gcc.target/i386/avx2-vpsubd-3.c
+@@ -9,4 +9,3 @@
+ #include "avx2-vpop-check.h"
+ 
+ /* { dg-final { scan-assembler-times "vpsubd\[ \\t\]+\[^\n\]*%ymm\[0-9\]" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/i386/avx2-vpsubq-3.c
++++ b/src/gcc/testsuite/gcc.target/i386/avx2-vpsubq-3.c
+@@ -9,4 +9,3 @@
+ #include "avx2-vpop-check.h"
+ 
+ /* { dg-final { scan-assembler-times "vpsubq\[ \\t\]+\[^\n\]*%ymm\[0-9\]" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/i386/avx2-vpsubw-3.c
++++ b/src/gcc/testsuite/gcc.target/i386/avx2-vpsubw-3.c
+@@ -9,4 +9,3 @@
+ #include "avx2-vpop-check.h"
+ 
+ /* { dg-final { scan-assembler-times "vpsubw\[ \\t\]+\[^\n\]*%ymm\[0-9\]" 1 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/i386/avx512f-gather-2.c
++++ b/src/gcc/testsuite/gcc.target/i386/avx512f-gather-2.c
+@@ -8,4 +8,3 @@
+ /* { dg-final { scan-assembler-not "gather\[^\n\]*ymm\[^\n\]*xmm" } } */
+ /* { dg-final { scan-assembler-not "gather\[^\n\]*xmm\[^\n\]*xmm" } } */
+ /* { dg-final { scan-tree-dump-times "note: vectorized 1 loops in function" 16 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.target/i386/branch-cost1.c
++++ b/src/gcc/testsuite/gcc.target/i386/branch-cost1.c
+@@ -13,4 +13,3 @@ foo (int a, int b)
+ 
+ /* { dg-final { scan-tree-dump-times "if " 2 "gimple" } } */
+ /* { dg-final { scan-tree-dump-not " & " "gimple" } } */
+-/* { dg-final { cleanup-tree-dump "gimple" } } */
+--- a/src/gcc/testsuite/gcc.target/i386/branch-cost2.c
++++ b/src/gcc/testsuite/gcc.target/i386/branch-cost2.c
+@@ -13,4 +13,3 @@ foo (int a, int b)
+ 
+ /* { dg-final { scan-tree-dump-times "if " 1 "gimple" } } */
+ /* { dg-final { scan-tree-dump-times " & " 1 "gimple" } } */
+-/* { dg-final { cleanup-tree-dump "gimple" } } */
+--- a/src/gcc/testsuite/gcc.target/i386/branch-cost3.c
++++ b/src/gcc/testsuite/gcc.target/i386/branch-cost3.c
+@@ -13,4 +13,3 @@ foo (_Bool a, _Bool b)
+ 
+ /* { dg-final { scan-tree-dump-times "if " 1 "gimple" } } */
+ /* { dg-final { scan-tree-dump-times " & " 1 "gimple" } } */
+-/* { dg-final { cleanup-tree-dump "gimple" } } */
+--- a/src/gcc/testsuite/gcc.target/i386/branch-cost4.c
++++ b/src/gcc/testsuite/gcc.target/i386/branch-cost4.c
+@@ -13,4 +13,3 @@ foo (_Bool a, _Bool b)
+ 
+ /* { dg-final { scan-tree-dump-times "if " 2 "gimple" } } */
+ /* { dg-final { scan-tree-dump-not " & " "gimple" } } */
+-/* { dg-final { cleanup-tree-dump "gimple" } } */
+--- a/src/gcc/testsuite/gcc.target/i386/chkp-bndret.c
++++ b/src/gcc/testsuite/gcc.target/i386/chkp-bndret.c
+@@ -2,7 +2,6 @@
+ /* { dg-require-effective-target mpx } */
+ /* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-chkp" } */
+ /* { dg-final { scan-tree-dump-not "bndret" "chkp" } } */
+-/* { dg-final { cleanup-tree-dump "chkp" } } */
+ 
+ #include "string.h"
+ 
+--- a/src/gcc/testsuite/gcc.target/i386/chkp-builtins-1.c
++++ b/src/gcc/testsuite/gcc.target/i386/chkp-builtins-1.c
+@@ -2,7 +2,6 @@
+ /* { dg-require-effective-target mpx } */
+ /* { dg-options "-fcheck-pointer-bounds -mmpx -fdump-tree-chkp" } */
+ /* { dg-final { scan-tree-dump-not "bnd_init_ptr_bounds" "chkp" } } */
+-/* { dg-final { cleanup-tree-dump "chkp" } } */
+ 
+ void *
+ chkp_test (void *p)
+--- a/src/gcc/testsuite/gcc.target/i386/chkp-builtins-2.c
++++ b/src/gcc/testsuite/gcc.target/i386/chkp-builtins-2.c
+@@ -2,7 +2,6 @@
+ /* { dg-require-effective-target mpx } */
+ /* { dg-options "-fcheck-pointer-bounds -mmpx -fdump-tree-chkp" } */
+ /* { dg-final { scan-tree-dump-not "bnd_copy_ptr_bounds" "chkp" } } */
+-/* { dg-final { cleanup-tree-dump "chkp" } } */
+ 
+ void *
+ chkp_test (void *p, void *q)
+--- a/src/gcc/testsuite/gcc.target/i386/chkp-builtins-3.c
++++ b/src/gcc/testsuite/gcc.target/i386/chkp-builtins-3.c
+@@ -2,7 +2,6 @@
+ /* { dg-require-effective-target mpx } */
+ /* { dg-options "-fcheck-pointer-bounds -mmpx -fdump-tree-chkp" } */
+ /* { dg-final { scan-tree-dump-not "bnd_set_ptr_bounds" "chkp" } } */
+-/* { dg-final { cleanup-tree-dump "chkp" } } */
+ 
+ void *
+ chkp_test (void *p)
+--- a/src/gcc/testsuite/gcc.target/i386/chkp-builtins-4.c
++++ b/src/gcc/testsuite/gcc.target/i386/chkp-builtins-4.c
+@@ -2,7 +2,6 @@
+ /* { dg-require-effective-target mpx } */
+ /* { dg-options "-fcheck-pointer-bounds -mmpx -fdump-tree-chkp" } */
+ /* { dg-final { scan-tree-dump-not "bnd_null_ptr_bounds" "chkp" } } */
+-/* { dg-final { cleanup-tree-dump "chkp" } } */
+ 
+ void *
+ chkp_test (void *p)
+--- a/src/gcc/testsuite/gcc.target/i386/chkp-const-check-1.c
++++ b/src/gcc/testsuite/gcc.target/i386/chkp-const-check-1.c
+@@ -3,7 +3,6 @@
+ /* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-chkpopt" } */
+ /* { dg-final { scan-tree-dump-not "bndcl" "chkpopt" } } */
+ /* { dg-final { scan-tree-dump-not "bndcu" "chkpopt" } } */
+-/* { dg-final { cleanup-tree-dump "chkpopt" } } */
+ 
+ int test (int *p)
+ {
+--- a/src/gcc/testsuite/gcc.target/i386/chkp-lifetime-1.c
++++ b/src/gcc/testsuite/gcc.target/i386/chkp-lifetime-1.c
+@@ -2,7 +2,6 @@
+ /* { dg-require-effective-target mpx } */
+ /* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-chkpopt-details" } */
+ /* { dg-final { scan-tree-dump "Moving creation of \[^ \]+ down to its use" "chkpopt" } } */
+-/* { dg-final { cleanup-tree-dump "chkpopt" } } */
+ 
+ extern int arr[];
+ 
+--- a/src/gcc/testsuite/gcc.target/i386/chkp-narrow-bounds.c
++++ b/src/gcc/testsuite/gcc.target/i386/chkp-narrow-bounds.c
+@@ -3,7 +3,6 @@
+ /* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-chkp" } */
+ /* { dg-final { scan-tree-dump "bndcl" "chkp" } } */
+ /* { dg-final { scan-tree-dump "bndcu" "chkp" } } */
+-/* { dg-final { cleanup-tree-dump "chkp" } } */
+ 
+ int
+ test (int *p)
+--- a/src/gcc/testsuite/gcc.target/i386/chkp-remove-bndint-1.c
++++ b/src/gcc/testsuite/gcc.target/i386/chkp-remove-bndint-1.c
+@@ -2,7 +2,6 @@
+ /* { dg-require-effective-target mpx } */
+ /* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-optimized" } */
+ /* { dg-final { scan-tree-dump-not "bndint" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+ 
+ struct S
+ {
+--- a/src/gcc/testsuite/gcc.target/i386/chkp-remove-bndint-2.c
++++ b/src/gcc/testsuite/gcc.target/i386/chkp-remove-bndint-2.c
+@@ -2,7 +2,6 @@
+ /* { dg-require-effective-target mpx } */
+ /* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-optimized -Wchkp" } */
+ /* { dg-final { scan-tree-dump-not "bndint" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+ 
+ struct S
+ {
+--- a/src/gcc/testsuite/gcc.target/i386/chkp-strlen-1.c
++++ b/src/gcc/testsuite/gcc.target/i386/chkp-strlen-1.c
+@@ -2,7 +2,6 @@
+ /* { dg-require-effective-target mpx } */
+ /* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-strlen" } */
+ /* { dg-final { scan-tree-dump "memcpy.chkp" "strlen" } } */
+-/* { dg-final { cleanup-tree-dump "strlen" } } */
+ 
+ #include "string.h"
+ 
+--- a/src/gcc/testsuite/gcc.target/i386/chkp-strlen-2.c
++++ b/src/gcc/testsuite/gcc.target/i386/chkp-strlen-2.c
+@@ -3,7 +3,6 @@
+ /* { dg-require-effective-target stpcpy } */
+ /* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-strlen" } */
+ /* { dg-final { scan-tree-dump-not "strlen" "strlen" } } */
+-/* { dg-final { cleanup-tree-dump "strlen" } } */
+ 
+ #include "string.h"
+ 
+--- a/src/gcc/testsuite/gcc.target/i386/chkp-strlen-3.c
++++ b/src/gcc/testsuite/gcc.target/i386/chkp-strlen-3.c
+@@ -2,7 +2,6 @@
+ /* { dg-require-effective-target mpx } */
+ /* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-strlen" } */
+ /* { dg-final { scan-tree-dump-times "strlen" 1 "strlen" } } */
+-/* { dg-final { cleanup-tree-dump "strlen" } } */
+ 
+ #include "string.h"
+ 
+--- a/src/gcc/testsuite/gcc.target/i386/chkp-strlen-4.c
++++ b/src/gcc/testsuite/gcc.target/i386/chkp-strlen-4.c
+@@ -3,7 +3,6 @@
+ /* { dg-require-effective-target mempcpy } */
+ /* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-strlen -D_GNU_SOURCE" } */
+ /* { dg-final { scan-tree-dump-times "strlen" 1 "strlen" } } */
+-/* { dg-final { cleanup-tree-dump "strlen" } } */
+ 
+ #include "string.h"
+ 
+--- a/src/gcc/testsuite/gcc.target/i386/chkp-strlen-5.c
++++ b/src/gcc/testsuite/gcc.target/i386/chkp-strlen-5.c
+@@ -3,7 +3,6 @@
+ /* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-strlen" } */
+ /* { dg-final { scan-tree-dump-times "strlen" 2 "strlen" } } */
+ /* { dg-final { scan-tree-dump "memcpy" "strlen" } } */
+-/* { dg-final { cleanup-tree-dump "strlen" } } */
+ 
+ #include "string.h"
+ 
+--- a/src/gcc/testsuite/gcc.target/i386/chkp-stropt-1.c
++++ b/src/gcc/testsuite/gcc.target/i386/chkp-stropt-1.c
+@@ -2,7 +2,6 @@
+ /* { dg-require-effective-target mpx } */
+ /* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-chkpopt -fchkp-use-nochk-string-functions" } */
+ /* { dg-final { scan-tree-dump "memcpy_nochk" "chkpopt" } } */
+-/* { dg-final { cleanup-tree-dump "chkpopt" } } */
+ 
+ #include "string.h"
+ 
+--- a/src/gcc/testsuite/gcc.target/i386/chkp-stropt-10.c
++++ b/src/gcc/testsuite/gcc.target/i386/chkp-stropt-10.c
+@@ -2,7 +2,6 @@
+ /* { dg-require-effective-target mpx } */
+ /* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-chkpopt -fchkp-use-fast-string-functions" } */
+ /* { dg-final { scan-tree-dump-not "memset_nobnd" "chkpopt" } } */
+-/* { dg-final { cleanup-tree-dump "chkpopt" } } */
+ 
+ #include "string.h"
+ 
+--- a/src/gcc/testsuite/gcc.target/i386/chkp-stropt-11.c
++++ b/src/gcc/testsuite/gcc.target/i386/chkp-stropt-11.c
+@@ -2,7 +2,6 @@
+ /* { dg-require-effective-target mpx } */
+ /* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-chkpopt -fchkp-use-fast-string-functions" } */
+ /* { dg-final { scan-tree-dump-not "memmove_nobnd" "chkpopt" } } */
+-/* { dg-final { cleanup-tree-dump "chkpopt" } } */
+ 
+ #include "string.h"
+ 
+--- a/src/gcc/testsuite/gcc.target/i386/chkp-stropt-12.c
++++ b/src/gcc/testsuite/gcc.target/i386/chkp-stropt-12.c
+@@ -3,7 +3,6 @@
+ /* { dg-require-effective-target mempcpy } */
+ /* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-chkpopt -fchkp-use-fast-string-functions -D_GNU_SOURCE" } */
+ /* { dg-final { scan-tree-dump-not "mempcpy_nobnd" "chkpopt" } } */
+-/* { dg-final { cleanup-tree-dump "chkpopt" } } */
+ 
+ #include "string.h"
+ 
+--- a/src/gcc/testsuite/gcc.target/i386/chkp-stropt-13.c
++++ b/src/gcc/testsuite/gcc.target/i386/chkp-stropt-13.c
+@@ -2,7 +2,6 @@
+ /* { dg-require-effective-target mpx } */
+ /* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-chkpopt -fchkp-use-nochk-string-functions -fchkp-use-fast-string-functions" } */
+ /* { dg-final { scan-tree-dump "memcpy_nobnd_nochk" "chkpopt" } } */
+-/* { dg-final { cleanup-tree-dump "chkpopt" } } */
+ 
+ #include "string.h"
+ 
+--- a/src/gcc/testsuite/gcc.target/i386/chkp-stropt-14.c
++++ b/src/gcc/testsuite/gcc.target/i386/chkp-stropt-14.c
+@@ -2,7 +2,6 @@
+ /* { dg-require-effective-target mpx } */
+ /* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-chkpopt -fchkp-use-nochk-string-functions -fchkp-use-fast-string-functions" } */
+ /* { dg-final { scan-tree-dump "memset_nobnd_nochk" "chkpopt" } } */
+-/* { dg-final { cleanup-tree-dump "chkpopt" } } */
+ 
+ #include "string.h"
+ 
+--- a/src/gcc/testsuite/gcc.target/i386/chkp-stropt-15.c
++++ b/src/gcc/testsuite/gcc.target/i386/chkp-stropt-15.c
+@@ -2,7 +2,6 @@
+ /* { dg-require-effective-target mpx } */
+ /* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-chkpopt -fchkp-use-nochk-string-functions -fchkp-use-fast-string-functions" } */
+ /* { dg-final { scan-tree-dump "memmove_nobnd_nochk" "chkpopt" } } */
+-/* { dg-final { cleanup-tree-dump "chkpopt" } } */
+ 
+ #include "string.h"
+ 
+--- a/src/gcc/testsuite/gcc.target/i386/chkp-stropt-16.c
++++ b/src/gcc/testsuite/gcc.target/i386/chkp-stropt-16.c
+@@ -3,7 +3,6 @@
+ /* { dg-require-effective-target mempcpy } */
+ /* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-chkpopt -fchkp-use-nochk-string-functions -fchkp-use-fast-string-functions -D_GNU_SOURCE" } */
+ /* { dg-final { scan-tree-dump "mempcpy_nobnd_nochk" "chkpopt" } } */
+-/* { dg-final { cleanup-tree-dump "chkpopt" } } */
+ 
+ #include "string.h"
+ 
+--- a/src/gcc/testsuite/gcc.target/i386/chkp-stropt-2.c
++++ b/src/gcc/testsuite/gcc.target/i386/chkp-stropt-2.c
+@@ -2,7 +2,6 @@
+ /* { dg-require-effective-target mpx } */
+ /* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-chkpopt -fchkp-use-nochk-string-functions" } */
+ /* { dg-final { scan-tree-dump "memset_nochk" "chkpopt" } } */
+-/* { dg-final { cleanup-tree-dump "chkpopt" } } */
+ 
+ #include "string.h"
+ 
+--- a/src/gcc/testsuite/gcc.target/i386/chkp-stropt-3.c
++++ b/src/gcc/testsuite/gcc.target/i386/chkp-stropt-3.c
+@@ -2,7 +2,6 @@
+ /* { dg-require-effective-target mpx } */
+ /* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-chkpopt -fchkp-use-nochk-string-functions" } */
+ /* { dg-final { scan-tree-dump "memmove_nochk" "chkpopt" } } */
+-/* { dg-final { cleanup-tree-dump "chkpopt" } } */
+ 
+ #include "string.h"
+ 
+--- a/src/gcc/testsuite/gcc.target/i386/chkp-stropt-4.c
++++ b/src/gcc/testsuite/gcc.target/i386/chkp-stropt-4.c
+@@ -3,7 +3,6 @@
+ /* { dg-require-effective-target mempcpy } */
+ /* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-chkpopt -fchkp-use-nochk-string-functions -D_GNU_SOURCE" } */
+ /* { dg-final { scan-tree-dump "mempcpy_nochk" "chkpopt" } } */
+-/* { dg-final { cleanup-tree-dump "chkpopt" } } */
+ 
+ #include "string.h"
+ 
+--- a/src/gcc/testsuite/gcc.target/i386/chkp-stropt-5.c
++++ b/src/gcc/testsuite/gcc.target/i386/chkp-stropt-5.c
+@@ -2,7 +2,6 @@
+ /* { dg-require-effective-target mpx } */
+ /* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-chkpopt -fchkp-use-fast-string-functions" } */
+ /* { dg-final { scan-tree-dump "memcpy_nobnd" "chkpopt" } } */
+-/* { dg-final { cleanup-tree-dump "chkpopt" } } */
+ 
+ #include "string.h"
+ 
+--- a/src/gcc/testsuite/gcc.target/i386/chkp-stropt-6.c
++++ b/src/gcc/testsuite/gcc.target/i386/chkp-stropt-6.c
+@@ -2,7 +2,6 @@
+ /* { dg-require-effective-target mpx } */
+ /* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-chkpopt -fchkp-use-fast-string-functions" } */
+ /* { dg-final { scan-tree-dump "memset_nobnd" "chkpopt" } } */
+-/* { dg-final { cleanup-tree-dump "chkpopt" } } */
+ 
+ #include "string.h"
+ 
+--- a/src/gcc/testsuite/gcc.target/i386/chkp-stropt-7.c
++++ b/src/gcc/testsuite/gcc.target/i386/chkp-stropt-7.c
+@@ -2,7 +2,6 @@
+ /* { dg-require-effective-target mpx } */
+ /* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-chkpopt -fchkp-use-fast-string-functions" } */
+ /* { dg-final { scan-tree-dump "memmove_nobnd" "chkpopt" } } */
+-/* { dg-final { cleanup-tree-dump "chkpopt" } } */
+ 
+ #include "string.h"
+ 
+--- a/src/gcc/testsuite/gcc.target/i386/chkp-stropt-8.c
++++ b/src/gcc/testsuite/gcc.target/i386/chkp-stropt-8.c
+@@ -3,7 +3,6 @@
+ /* { dg-require-effective-target mempcpy } */
+ /* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-chkpopt -fchkp-use-fast-string-functions -D_GNU_SOURCE" } */
+ /* { dg-final { scan-tree-dump "mempcpy_nobnd" "chkpopt" } } */
+-/* { dg-final { cleanup-tree-dump "chkpopt" } } */
+ 
+ #include "string.h"
+ 
+--- a/src/gcc/testsuite/gcc.target/i386/chkp-stropt-9.c
++++ b/src/gcc/testsuite/gcc.target/i386/chkp-stropt-9.c
+@@ -2,7 +2,6 @@
+ /* { dg-require-effective-target mpx } */
+ /* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-chkpopt -fchkp-use-fast-string-functions" } */
+ /* { dg-final { scan-tree-dump-not "memcpy_nobnd" "chkpopt" } } */
+-/* { dg-final { cleanup-tree-dump "chkpopt" } } */
+ 
+ #include "string.h"
+ 
+--- a/src/gcc/testsuite/gcc.target/i386/intrinsics_opt-2.c
++++ b/src/gcc/testsuite/gcc.target/i386/intrinsics_opt-2.c
+@@ -13,4 +13,3 @@ int f(__m128d x){
+ }
+ 
+ /* { dg-final { scan-tree-dump "return 1;" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.target/i386/mcount_pic.c
++++ b/src/gcc/testsuite/gcc.target/i386/mcount_pic.c
+@@ -12,5 +12,4 @@ int main ()
+ 
+ /* { dg-final { scan-assembler "mcount" } } */
+ /* { dg-final { scan-assembler "get_pc_thunk" { xfail { *-*-solaris* && { ! gld } } } } } */
+-/* { dg-final { cleanup-saved-temps } } */
+ /* { dg-final { cleanup-profile-file } } */
+--- a/src/gcc/testsuite/gcc.target/i386/nrv1.c
++++ b/src/gcc/testsuite/gcc.target/i386/nrv1.c
+@@ -9,4 +9,3 @@ _Complex double foo (_Complex double x)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "return slot optimization" 1 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.target/i386/pr20020-1.c
++++ b/src/gcc/testsuite/gcc.target/i386/pr20020-1.c
+@@ -24,4 +24,3 @@ sptr_result (void)
+ }
+ /* { dg-final { scan-rtl-dump "\\\(set \\\(reg:TI \[0-9\]* \\\[ <retval> \\\]\\\)" "expand" } } */
+ /* { dg-final { scan-rtl-dump "\\\(set \\\(reg/i:TI 0 ax\\\)" "expand" } } */
+-/* { dg-final { cleanup-rtl-dump "expand" } } */
+--- a/src/gcc/testsuite/gcc.target/i386/pr20020-2.c
++++ b/src/gcc/testsuite/gcc.target/i386/pr20020-2.c
+@@ -22,4 +22,3 @@ copy_sptr (sptr_t *dest, sptr_t src)
+ }
+ 
+ /* { dg-final { scan-rtl-dump "\\\(set \\\(reg:TI \[0-9\]*" "expand" } } */
+-/* { dg-final { cleanup-rtl-dump "expand" } } */
+--- a/src/gcc/testsuite/gcc.target/i386/pr20020-3.c
++++ b/src/gcc/testsuite/gcc.target/i386/pr20020-3.c
+@@ -25,4 +25,3 @@ copy_sptr (void)
+ 
+ /* { dg-final { scan-rtl-dump "\\\(set \\\(reg:TI \[0-9\]*" "expand" } } */
+ /* { dg-final { scan-rtl-dump "\\\(set \\\(mem/c:TI" "expand" } } */
+-/* { dg-final { cleanup-rtl-dump "expand" } } */
+--- a/src/gcc/testsuite/gcc.target/i386/pr24178.c
++++ b/src/gcc/testsuite/gcc.target/i386/pr24178.c
+@@ -13,4 +13,3 @@ unsigned long f(unsigned char *p10) {
+ /* The p->c memory access should have alignment of 4 bytes.  */
+ 
+ /* { dg-final { scan-rtl-dump "MEM\[^\\n\]*A32" "expand" } } */
+-/* { dg-final { cleanup-rtl-dump "expand" } } */
+--- a/src/gcc/testsuite/gcc.target/i386/pr37248-1.c
++++ b/src/gcc/testsuite/gcc.target/i386/pr37248-1.c
+@@ -17,4 +17,3 @@ foo (struct S x)
+ 
+ /* { dg-final { scan-tree-dump "& 7;" "optimized" } } */
+ /* { dg-final { scan-tree-dump "== 7;" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.target/i386/pr37248-2.c
++++ b/src/gcc/testsuite/gcc.target/i386/pr37248-2.c
+@@ -21,4 +21,3 @@ foo (struct S x)
+ 
+ /* { dg-final { scan-tree-dump "& (3758096391|0x0e0000007);" "optimized" } } */
+ /* { dg-final { scan-tree-dump "== (3758096391|0x0e0000007);" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.target/i386/pr37248-3.c
++++ b/src/gcc/testsuite/gcc.target/i386/pr37248-3.c
+@@ -23,4 +23,3 @@ foo (struct S x)
+ 
+ /* { dg-final { scan-tree-dump "& (3766484487|0x0e07ffe07);" "optimized" } } */
+ /* { dg-final { scan-tree-dump "== (3758163463|0x0e0010607);" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.target/i386/pr45830.c
++++ b/src/gcc/testsuite/gcc.target/i386/pr45830.c
+@@ -28,4 +28,3 @@ foo (int *a)
+ 
+ /* { dg-final { scan-tree-dump "expanding as bit test is preferable" "switchconv" } } */
+ /* { dg-final { scan-assembler-not "CSWTCH" } } */
+-/* { dg-final { cleanup-tree-dump "switchconv" } } */
+--- a/src/gcc/testsuite/gcc.target/i386/pr46865-2.c
++++ b/src/gcc/testsuite/gcc.target/i386/pr46865-2.c
+@@ -29,4 +29,3 @@ bar (void)
+ }
+ 
+ /* { dg-final { scan-assembler-times "asmnop" 2 } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/i386/pr53397-1.c
++++ b/src/gcc/testsuite/gcc.target/i386/pr53397-1.c
+@@ -25,4 +25,3 @@ void prefetch_when_non_constant_step_is_invariant(int step, int n)
+ /* { dg-final { scan-tree-dump "Issued prefetch" "aprefetch" } } */
+ /* { dg-final { scan-assembler "prefetcht0" } } */
+ 
+-/* { dg-final { cleanup-tree-dump "aprefetch" } } */
+--- a/src/gcc/testsuite/gcc.target/i386/pr53397-2.c
++++ b/src/gcc/testsuite/gcc.target/i386/pr53397-2.c
+@@ -24,5 +24,4 @@ void donot_prefetch_when_non_constant_step_is_variant(int step, int n)
+ /* { dg-final { scan-tree-dump "Not prefetching" "aprefetch" } } */
+ /* { dg-final { scan-tree-dump "loop variant step" "aprefetch" } } */
+ 
+-/* { dg-final { cleanup-tree-dump "aprefetch" } } */
+ 
+--- a/src/gcc/testsuite/gcc.target/i386/pr53623.c
++++ b/src/gcc/testsuite/gcc.target/i386/pr53623.c
+@@ -21,5 +21,4 @@ int main(void) {
+ }
+ 
+ /* { dg-final { scan-rtl-dump "copy needed" "ree" } } */
+-/* { dg-final { cleanup-rtl-dump "ree" } } */
+ 
+--- a/src/gcc/testsuite/gcc.target/i386/pr56564-1.c
++++ b/src/gcc/testsuite/gcc.target/i386/pr56564-1.c
+@@ -23,4 +23,3 @@ bar (void)
+ /* { dg-final { scan-tree-dump-times "return 0" 1 "optimized" } } */
+ /* { dg-final { scan-assembler ".align\[ \t]*16\[^:]*\[\n\r]s:" { target { *-*-linux* } } } } */
+ /* { dg-final { scan-assembler ".align\[ \t]*16\[^:]*\[\n\r]t:" { target { *-*-linux* } } } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.target/i386/pr56564-2.c
++++ b/src/gcc/testsuite/gcc.target/i386/pr56564-2.c
+@@ -22,4 +22,3 @@ bar (void)
+ /* { dg-final { scan-tree-dump-times "return 0" 2 "optimized" } } */
+ /* { dg-final { scan-assembler ".align\[ \t]*16\[^:]*\[\n\r]s:" { target { *-*-linux* } } } } */
+ /* { dg-final { scan-assembler ".align\[ \t]*16\[^:]*\[\n\r]t:" { target { *-*-linux* } } } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.target/i386/pr56564-3.c
++++ b/src/gcc/testsuite/gcc.target/i386/pr56564-3.c
+@@ -26,4 +26,3 @@ bar (void)
+ /* { dg-final { scan-tree-dump-times "return 0" 0 "optimized" } } */
+ /* { dg-final { scan-assembler-not ".align\[ \t]*16\[^:]*\[\n\r]s:" { target { *-*-linux* } } } } */
+ /* { dg-final { scan-assembler ".align\[ \t]*16\[^:]*\[\n\r]t:" { target { *-*-linux* } } } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.target/i386/pr56564-4.c
++++ b/src/gcc/testsuite/gcc.target/i386/pr56564-4.c
+@@ -19,4 +19,3 @@ bar (void)
+ 
+ /* { dg-final { scan-assembler-not ".align\[ \t]*16\[^:]*\[\n\r]s:" { target { *-*-linux* } } } } */
+ /* { dg-final { scan-assembler ".align\[ \t]*16\[^:]*\[\n\r]t:" { target { *-*-linux* } } } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.target/i386/pr58066.c
++++ b/src/gcc/testsuite/gcc.target/i386/pr58066.c
+@@ -19,4 +19,3 @@ void* goo()
+ 
+ /* { dg-final { scan-rtl-dump "Function foo.*set\[^\r\n\]*sp\\)\[\r\n\]\[^\r\n\]*plus\[^\r\n\]*sp\\)\[\r\n\]\[^\r\n\]*const_int -8.*UNSPEC_TLS.*Function goo" "final" } } */
+ /* { dg-final { scan-rtl-dump "Function goo.*set\[^\r\n\]*sp\\)\[\r\n\]\[^\r\n\]*plus\[^\r\n\]*sp\\)\[\r\n\]\[^\r\n\]*const_int -8.*UNSPEC_TLS" "final" } } */
+-/* { dg-final { cleanup-rtl-dump "final" } } */
+--- a/src/gcc/testsuite/gcc.target/i386/pr59544.c
++++ b/src/gcc/testsuite/gcc.target/i386/pr59544.c
+@@ -10,4 +10,3 @@ void test1(short * __restrict__ x, short * __restrict__ y, short * __restrict__
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.target/i386/reload-1.c
++++ b/src/gcc/testsuite/gcc.target/i386/reload-1.c
+@@ -112,4 +112,3 @@ long foo (job *j )
+ }
+ 
+ /* { dg-final { scan-rtl-dump-not "deleted 1 dead insns" "csa" } } */
+-/* { dg-final { cleanup-rtl-dump "csa" } } */
+--- a/src/gcc/testsuite/gcc.target/i386/rotate-3.c
++++ b/src/gcc/testsuite/gcc.target/i386/rotate-3.c
+@@ -2,7 +2,6 @@
+ /* { dg-require-effective-target avx2 } */
+ /* { dg-options "-O3 -mavx2 -fdump-tree-vect-details" } */
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+ unsigned int a[1024] __attribute__((aligned (32)));
+ 
+--- a/src/gcc/testsuite/gcc.target/i386/rotate-4.c
++++ b/src/gcc/testsuite/gcc.target/i386/rotate-4.c
+@@ -2,7 +2,6 @@
+ /* { dg-require-effective-target avx } */
+ /* { dg-options "-O3 -mavx -fdump-tree-vect-details" } */
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+ unsigned int a[1024] __attribute__((aligned (32)));
+ 
+--- a/src/gcc/testsuite/gcc.target/i386/rotate-5.c
++++ b/src/gcc/testsuite/gcc.target/i386/rotate-5.c
+@@ -2,7 +2,6 @@
+ /* { dg-require-effective-target avx } */
+ /* { dg-options "-O3 -mavx -fdump-tree-vect-details" } */
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+ 
+ unsigned int a[1024] __attribute__((aligned (32)));
+ 
+--- a/src/gcc/testsuite/gcc.target/i386/shrink_wrap_1.c
++++ b/src/gcc/testsuite/gcc.target/i386/shrink_wrap_1.c
+@@ -46,4 +46,3 @@ builtin_memset_gen_str (void *data, long offset __attribute__ ((__unused__)),
+ }
+ 
+ /* { dg-final { scan-rtl-dump "Performing shrink-wrapping" "pro_and_epilogue"  } } */
+-/* { dg-final { cleanup-rtl-dump "pro_and_epilogue" } } */
+--- a/src/gcc/testsuite/gcc.target/i386/sse2-cvt-2.c
++++ b/src/gcc/testsuite/gcc.target/i386/sse2-cvt-2.c
+@@ -10,4 +10,3 @@
+ /* { dg-final { scan-assembler "cvttps2dq" } } */
+ /* { dg-final { scan-assembler "cvtdq2pd" } } */
+ /* { dg-final { scan-assembler "cvtpd2ps" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.target/i386/sw-1.c
++++ b/src/gcc/testsuite/gcc.target/i386/sw-1.c
+@@ -16,4 +16,3 @@ __attribute__((regparm(1))) void foo (int a, int b)
+  }
+ 
+ /* { dg-final { scan-rtl-dump "Performing shrink-wrapping" "pro_and_epilogue" } } */
+-/* { dg-final { cleanup-rtl-dump "pro_and_epilogue" } } */
+--- a/src/gcc/testsuite/gcc.target/i386/thunk-retbnd.c
++++ b/src/gcc/testsuite/gcc.target/i386/thunk-retbnd.c
+@@ -2,7 +2,6 @@
+ /* { dg-require-effective-target mpx } */
+ /* { dg-options "-O2 -fcheck-pointer-bounds -mmpx -fdump-tree-optimized" } */
+ /* { dg-final { scan-tree-dump-times "return &glob," 2 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+ 
+ int glob;
+ 
+--- a/src/gcc/testsuite/gcc.target/i386/vect-abs-s16.c
++++ b/src/gcc/testsuite/gcc.target/i386/vect-abs-s16.c
+@@ -12,4 +12,3 @@ void test (short* a, short* b)
+ 
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.target/i386/vect-abs-s32.c
++++ b/src/gcc/testsuite/gcc.target/i386/vect-abs-s32.c
+@@ -12,4 +12,3 @@ void test (int* a, int* b)
+ 
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.target/i386/vect-abs-s8.c
++++ b/src/gcc/testsuite/gcc.target/i386/vect-abs-s8.c
+@@ -12,4 +12,3 @@ void test (char* a, char* b)
+ 
+ 
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.target/i386/vect-cond-1.c
++++ b/src/gcc/testsuite/gcc.target/i386/vect-cond-1.c
+@@ -18,4 +18,3 @@ foo (int *p)
+     }
+ }
+ 
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.target/i386/vect-double-1.c
++++ b/src/gcc/testsuite/gcc.target/i386/vect-double-1.c
+@@ -34,4 +34,3 @@ sse2_test (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "Vectorized loops: 1" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.target/i386/vect-double-2.c
++++ b/src/gcc/testsuite/gcc.target/i386/vect-double-2.c
+@@ -32,4 +32,3 @@ sse2_test (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump-not "vectorized 1 loops" "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.target/i386/vectorize1.c
++++ b/src/gcc/testsuite/gcc.target/i386/vectorize1.c
+@@ -18,4 +18,3 @@ int set_names (void)
+ }
+ 
+ /* { dg-final { scan-tree-dump "vect_cst" "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.target/mips/octeon-pipe-1.c
++++ b/src/gcc/testsuite/gcc.target/mips/octeon-pipe-1.c
+@@ -9,4 +9,3 @@ NOMIPS16 int f (int a, int b)
+ }
+ 
+ /* { dg-final { scan-rtl-dump "octeon_mult\\*71" "sched2" } }  */
+-/* { dg-final { cleanup-rtl-dump "sched2" } }  */
+--- a/src/gcc/testsuite/gcc.target/mips/octeon2-pipe-1.c
++++ b/src/gcc/testsuite/gcc.target/mips/octeon2-pipe-1.c
+@@ -9,4 +9,3 @@ NOMIPS16 int f (int a, int b)
+ }
+ 
+ /* { dg-final { scan-rtl-dump "octeon_mult\\*17" "sched2" } }  */
+-/* { dg-final { cleanup-rtl-dump "sched2" } }  */
+--- a/src/gcc/testsuite/gcc.target/mips/octeon3-pipe-1.c
++++ b/src/gcc/testsuite/gcc.target/mips/octeon3-pipe-1.c
+@@ -9,4 +9,3 @@ NOMIPS16 int f (int a, int b)
+ }
+ 
+ /* { dg-final { scan-rtl-dump "octeon_mult\\*17" "sched2" } }  */
+-/* { dg-final { cleanup-rtl-dump "sched2" } }  */
+--- a/src/gcc/testsuite/gcc.target/mips/pr54240.c
++++ b/src/gcc/testsuite/gcc.target/mips/pr54240.c
+@@ -25,4 +25,3 @@ NOMIPS16 int foo(S *s)
+ }
+ 
+ /* { dg-final { scan-tree-dump "Hoisting adjacent loads" "phiopt1" } } */
+-/* { dg-final { cleanup-tree-dump "phiopt1" } } */
+--- a/src/gcc/testsuite/gcc.target/nios2/custom-fp-lto.c
++++ b/src/gcc/testsuite/gcc.target/nios2/custom-fp-lto.c
+@@ -26,4 +26,3 @@ main (int argc, char *argv[])
+ }
+ 
+ /* { dg-final { scan-lto-assembler "custom\\t224, " } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/powerpc/altivec-16.c
++++ b/src/gcc/testsuite/gcc.target/powerpc/altivec-16.c
+@@ -19,4 +19,3 @@ vector_float f1 = { 1.0, 2.0, 3.0, 4.0 };
+ vector_float_foo = { 3.0, 4.0, 5.0, 6.0 };
+ vector_float_bar_eq { 8.0, 7.0, 6.0, 5.0 };
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/powerpc/altivec-29.c
++++ b/src/gcc/testsuite/gcc.target/powerpc/altivec-29.c
+@@ -20,4 +20,3 @@ int *baz (int *vector __attribute__((unused)))
+   return vector;
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/powerpc/dfmode_off.c
++++ b/src/gcc/testsuite/gcc.target/powerpc/dfmode_off.c
+@@ -44,4 +44,3 @@ double r19 (void *x) { return *(double *) (x + 32749); }
+ double r20 (void *x) { return *(double *) (x + 32748); }
+ 
+ /* { dg-final { object-size text == 320 } } */
+-/* { dg-final { cleanup-saved-temps "dfmode_off" } } */
+--- a/src/gcc/testsuite/gcc.target/powerpc/dimode_off.c
++++ b/src/gcc/testsuite/gcc.target/powerpc/dimode_off.c
+@@ -47,4 +47,3 @@ long long r20 (void *x) { return *(long long *) (x + 32748); }
+ /* 32-bit test should really be == 512 bytes, see pr54110 */
+ /* { dg-final { object-size text <= 640 { target { ilp32 } } } } */
+ /* { dg-final { scan-assembler-not "(st|l)fd" } } */
+-/* { dg-final { cleanup-saved-temps "dimode_off" } } */
+--- a/src/gcc/testsuite/gcc.target/powerpc/e500-ord-1.c
++++ b/src/gcc/testsuite/gcc.target/powerpc/e500-ord-1.c
+@@ -26,4 +26,3 @@ int islessequal (float f1, float f2)
+ }
+ 
+ /* { dg-final { scan-rtl-dump-not "__unordsf2" "final" } } */
+-/* { dg-final { cleanup-rtl-dump "final" } } */
+--- a/src/gcc/testsuite/gcc.target/powerpc/e500-ord-2.c
++++ b/src/gcc/testsuite/gcc.target/powerpc/e500-ord-2.c
+@@ -26,4 +26,3 @@ int islessequal (float f1, float f2)
+ }
+ 
+ /* { dg-final { scan-rtl-dump-not "__unordsf2" "final" } } */
+-/* { dg-final { cleanup-rtl-dump "final" } } */
+--- a/src/gcc/testsuite/gcc.target/powerpc/e500-unord-1.c
++++ b/src/gcc/testsuite/gcc.target/powerpc/e500-unord-1.c
+@@ -26,4 +26,3 @@ int islessequal (float f1, float f2)
+ }
+ 
+ /* { dg-final { scan-rtl-dump-times "__unordsf2" 4 "final" } } */
+-/* { dg-final { cleanup-rtl-dump "final" } } */
+--- a/src/gcc/testsuite/gcc.target/powerpc/e500-unord-2.c
++++ b/src/gcc/testsuite/gcc.target/powerpc/e500-unord-2.c
+@@ -26,4 +26,3 @@ int islessequal (float f1, float f2)
+ }
+ 
+ /* { dg-final { scan-rtl-dump-not "__unordsf2" "final" } } */
+-/* { dg-final { cleanup-rtl-dump "final" } } */
+--- a/src/gcc/testsuite/gcc.target/powerpc/htm-builtin-1.c
++++ b/src/gcc/testsuite/gcc.target/powerpc/htm-builtin-1.c
+@@ -51,4 +51,3 @@ void use_builtins (long *p, char code, long *a, long *b)
+   __builtin_set_tfhar (a[22]);
+   __builtin_set_tfiar (a[23]);
+ }
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/powerpc/outofline_rnreg.c
++++ b/src/gcc/testsuite/gcc.target/powerpc/outofline_rnreg.c
+@@ -6,7 +6,6 @@
+ /* { dg-options "-Os -frename-registers -fdump-rtl-rnreg" } */
+ /* "* renamed" or "* no available better choice" results are not acceptable */
+ /* { dg-final { scan-rtl-dump-not "Register 11 in insn *" "rnreg" { target powerpc*-*-linux* } } } */
+-/* { dg-final { cleanup-rtl-dump "rnreg" } } */
+ int
+ calc (int j)
+ {
+--- a/src/gcc/testsuite/gcc.target/powerpc/pr54240.c
++++ b/src/gcc/testsuite/gcc.target/powerpc/pr54240.c
+@@ -24,4 +24,3 @@ int foo(S *s)
+ }
+ 
+ /* { dg-final { scan-tree-dump "Hoisting adjacent loads" "phiopt1" } } */
+-/* { dg-final { cleanup-tree-dump "phiopt1" } } */
+--- a/src/gcc/testsuite/gcc.target/powerpc/pr56605.c
++++ b/src/gcc/testsuite/gcc.target/powerpc/pr56605.c
+@@ -11,4 +11,3 @@ void foo (short* __restrict sb, int* __restrict ia)
+ }
+ 
+ /* { dg-final { scan-rtl-dump-times "\\\(compare:CC \\\(subreg:SI \\\(reg:DI" 1 "loop2_doloop" } } */
+-/* { dg-final { cleanup-rtl-dump "loop2_doloop" } } */
+--- a/src/gcc/testsuite/gcc.target/powerpc/tfmode_off.c
++++ b/src/gcc/testsuite/gcc.target/powerpc/tfmode_off.c
+@@ -49,4 +49,3 @@ TFmode r19 (void *x) { return *(TFmode *) (x + 32749); }
+ TFmode r20 (void *x) { return *(TFmode *) (x + 32748); }
+ 
+ /* { dg-final { object-size text == 544 } } */
+-/* { dg-final { cleanup-saved-temps "tfmode_off" } } */
+--- a/src/gcc/testsuite/gcc.target/powerpc/timode_off.c
++++ b/src/gcc/testsuite/gcc.target/powerpc/timode_off.c
+@@ -55,4 +55,3 @@ TImode r20 (void *x) { return *(TImode *) (x + 32748); }
+ 
+ /* { dg-final { object-size text <= 700 } } */
+ /* { dg-final { scan-assembler-not "(st|l)fd" } } */
+-/* { dg-final { cleanup-saved-temps "timode_off" } } */
+--- a/src/gcc/testsuite/gcc.target/powerpc/vsx-vectorize-1.c
++++ b/src/gcc/testsuite/gcc.target/powerpc/vsx-vectorize-1.c
+@@ -52,4 +52,3 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 1 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.target/powerpc/vsx-vectorize-2.c
++++ b/src/gcc/testsuite/gcc.target/powerpc/vsx-vectorize-2.c
+@@ -62,4 +62,3 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 0 "vect" {xfail { {! vect_hw_misalign } || powerpc*-*-* } } } } */
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 0 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 4 "vect" {xfail { {! vect_hw_misalign } || powerpc*-*-* } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.target/powerpc/vsx-vectorize-3.c
++++ b/src/gcc/testsuite/gcc.target/powerpc/vsx-vectorize-3.c
+@@ -58,4 +58,3 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 0 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 2 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.target/powerpc/vsx-vectorize-4.c
++++ b/src/gcc/testsuite/gcc.target/powerpc/vsx-vectorize-4.c
+@@ -58,4 +58,3 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 0 "vect" {xfail { {! vect_hw_misalign } || powerpc*-*-* } } } } */
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 0 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 3 "vect" {xfail { {! vect_hw_misalign } || powerpc*-*-* } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.target/powerpc/vsx-vectorize-5.c
++++ b/src/gcc/testsuite/gcc.target/powerpc/vsx-vectorize-5.c
+@@ -58,4 +58,3 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 0 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 2 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.target/powerpc/vsx-vectorize-6.c
++++ b/src/gcc/testsuite/gcc.target/powerpc/vsx-vectorize-6.c
+@@ -62,4 +62,3 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 0 "vect" {xfail { {! vect_hw_misalign } || powerpc*-*-* } } } } */
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 0 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 4 "vect" {xfail { {! vect_hw_misalign } || powerpc*-*-* } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.target/powerpc/vsx-vectorize-7.c
++++ b/src/gcc/testsuite/gcc.target/powerpc/vsx-vectorize-7.c
+@@ -62,4 +62,3 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 0 "vect" {xfail { {! vect_hw_misalign } || powerpc*-*-* } } } } */
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 0 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 4 "vect" {xfail { {! vect_hw_misalign } || powerpc*-*-* } } } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.target/powerpc/vsx-vectorize-8.c
++++ b/src/gcc/testsuite/gcc.target/powerpc/vsx-vectorize-8.c
+@@ -62,4 +62,3 @@ int main (void)
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 0 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "Alignment of access forced using versioning" 2 "vect" } } */
+ /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 2 "vect" } } */
+-/* { dg-final { cleanup-tree-dump "vect" } } */
+--- a/src/gcc/testsuite/gcc.target/s390/htm-nofloat-1.c
++++ b/src/gcc/testsuite/gcc.target/s390/htm-nofloat-1.c
+@@ -48,4 +48,3 @@ int main(void)
+ /* Make sure no FPR saves/restores are emitted.  */
+ /* { dg-final { scan-assembler-not "\tstd\t" } } */
+ /* { dg-final { scan-assembler-not "\tld\t" } } */
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/s390/vector/vec-abi-vararg-1.c
++++ b/src/gcc/testsuite/gcc.target/s390/vector/vec-abi-vararg-1.c
+@@ -16,7 +16,6 @@
+ /* { dg-final { scan-assembler "vl\t%v\[0-9\]*,232\\(%r15\\)" { target ilp32 } } } */
+ /* { dg-final { scan-assembler "ld\t%v\[0-9\]*,248\\(%r15\\)" { target ilp32 } } } */
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+ 
+ #include <stdarg.h>
+ 
+--- a/src/gcc/testsuite/gcc.target/s390/vector/vec-dbl-math-compile-1.c
++++ b/src/gcc/testsuite/gcc.target/s390/vector/vec-dbl-math-compile-1.c
+@@ -45,4 +45,3 @@ fmsdbl (v2df a, v2df b, v2df c)
+ }
+ /* { dg-final { scan-assembler-times "vfms" 1 } } */
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/s390/vector/vec-genbytemask-1.c
++++ b/src/gcc/testsuite/gcc.target/s390/vector/vec-genbytemask-1.c
+@@ -80,4 +80,3 @@ main ()
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/s390/vector/vec-genmask-1.c
++++ b/src/gcc/testsuite/gcc.target/s390/vector/vec-genmask-1.c
+@@ -67,4 +67,3 @@ main ()
+   return 0;
+ }
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+--- a/src/gcc/testsuite/gcc.target/s390/zvector/vec-dbl-math-compile-1.c
++++ b/src/gcc/testsuite/gcc.target/s390/zvector/vec-dbl-math-compile-1.c
+@@ -8,7 +8,6 @@
+ /* { dg-final { scan-assembler-times "vfcedbs\t" 2 } } */
+ /* { dg-final { scan-assembler-times "vfchdbs\t" 2 } } */
+ 
+-/* { dg-final { cleanup-saved-temps } } */
+ 
+ #include <vecintrin.h>
+ 
+--- a/src/gcc/testsuite/gcc.target/sparc/fexpand-2.c
++++ b/src/gcc/testsuite/gcc.target/sparc/fexpand-2.c
+@@ -9,4 +9,3 @@ vec16 foo () {
+ }
+ 
+ /* { dg-final { scan-tree-dump "{ 16, 32, 64, 128 }" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.target/sparc/fpmerge-2.c
++++ b/src/gcc/testsuite/gcc.target/sparc/fpmerge-2.c
+@@ -13,4 +13,3 @@ pixel foo () {
+ 
+ /* { dg-final { scan-assembler-not "fpmerge\t%" } } */
+ /* { dg-final { scan-tree-dump "{ 1, 2, 3, 4, 5, 6, 7, 8 }" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.target/sparc/fpmul-2.c
++++ b/src/gcc/testsuite/gcc.target/sparc/fpmul-2.c
+@@ -45,4 +45,3 @@ vec16 foo3 () {
+ }
+ /* { dg-final { scan-assembler-not "fmul8x16al\t%" } } */
+ /* { dg-final { scan-tree-dump "{ 2, 4, 6, 8 }" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.target/sparc/pdist-2.c
++++ b/src/gcc/testsuite/gcc.target/sparc/pdist-2.c
+@@ -16,4 +16,3 @@ int64_t foo () {
+ 
+ /* { dg-final { scan-assembler-not "pdist\t%" } } */
+ /* { dg-final { scan-tree-dump "return 475" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gcc.target/sparc/pdistn-2.c
++++ b/src/gcc/testsuite/gcc.target/sparc/pdistn-2.c
+@@ -13,4 +13,3 @@ long foo () {
+ 
+ /* { dg-final { scan-assembler-not "pdistn\t%" } } */
+ /* { dg-final { scan-tree-dump "return 473" "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gfortran.dg/PR40660.f90
++++ b/src/gcc/testsuite/gfortran.dg/PR40660.f90
+@@ -11,5 +11,4 @@ PROGRAM test
+ end program test
+ 
+ ! { dg-final { scan-tree-dump-times ": 3\] _gfortran" 0 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+ 
+--- a/src/gcc/testsuite/gfortran.dg/alloc_comp_auto_array_2.f90
++++ b/src/gcc/testsuite/gfortran.dg/alloc_comp_auto_array_2.f90
+@@ -37,4 +37,3 @@ end module grid_io
+   use grid_io
+   call read_grid_header
+ end
+-! { dg-final { cleanup-tree-dump "grid_io" } }
+--- a/src/gcc/testsuite/gfortran.dg/alloc_comp_basics_1.f90
++++ b/src/gcc/testsuite/gfortran.dg/alloc_comp_basics_1.f90
+@@ -142,4 +142,3 @@ contains
+ 
+ end program alloc
+ ! { dg-final { scan-tree-dump-times "builtin_free" 18 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/alloc_comp_constructor_1.f90
++++ b/src/gcc/testsuite/gfortran.dg/alloc_comp_constructor_1.f90
+@@ -108,4 +108,3 @@ contains
+ 
+ end program test_constructor
+ ! { dg-final { scan-tree-dump-times "builtin_free" 19 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/allocatable_function_1.f90
++++ b/src/gcc/testsuite/gfortran.dg/allocatable_function_1.f90
+@@ -108,4 +108,3 @@ contains
+ 
+ end program alloc_fun
+ ! { dg-final { scan-tree-dump-times "free" 10 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/allocatable_function_4.f90
++++ b/src/gcc/testsuite/gfortran.dg/allocatable_function_4.f90
+@@ -52,5 +52,4 @@ function unique_A (x, sorted) result (x_unique)
+ end function unique_A
+ 
+ ! { dg-final { scan-tree-dump-times "__builtin_free" 5 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+ 
+--- a/src/gcc/testsuite/gfortran.dg/allocatable_scalar_13.f90
++++ b/src/gcc/testsuite/gfortran.dg/allocatable_scalar_13.f90
+@@ -69,4 +69,3 @@ contains
+ end
+ ! { dg-final { scan-tree-dump-times "builtin_malloc" 15 "original" } }
+ ! { dg-final { scan-tree-dump-times "builtin_free" 17 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/allocatable_scalar_9.f90
++++ b/src/gcc/testsuite/gfortran.dg/allocatable_scalar_9.f90
+@@ -53,4 +53,3 @@ end block
+ end
+ 
+ ! { dg-final { scan-tree-dump-times "__builtin_free" 32 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/array_constructor_14.f90
++++ b/src/gcc/testsuite/gfortran.dg/array_constructor_14.f90
+@@ -12,4 +12,3 @@ subroutine bar(x)
+ end subroutine
+ 
+ ! { dg-final { scan-tree-dump-times "data" 0 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/array_constructor_15.f90
++++ b/src/gcc/testsuite/gfortran.dg/array_constructor_15.f90
+@@ -4,4 +4,3 @@
+   if (any(x(:,:) .ne. reshape ((/ 3, 1, 4, 1 /), (/ 2, 2 /)))) call abort ()
+ end
+ ! { dg-final { scan-tree-dump-times "atmp" 0 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/array_constructor_40.f90
++++ b/src/gcc/testsuite/gfortran.dg/array_constructor_40.f90
+@@ -49,4 +49,3 @@ program main
+   if (abs(res - 8.1) > 1e-5) call abort
+ end program main
+ ! { dg-final { scan-tree-dump-times "while" 5 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/array_constructor_41.f90
++++ b/src/gcc/testsuite/gfortran.dg/array_constructor_41.f90
+@@ -30,4 +30,3 @@ PROGRAM TEST
+ END
+ 
+ ! { dg-final { scan-tree-dump-times "realloc" 0 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/array_constructor_43.f90
++++ b/src/gcc/testsuite/gfortran.dg/array_constructor_43.f90
+@@ -10,4 +10,3 @@ program main
+   if (any ([a,b,c,d] < 0.2)) print *,"foo"
+ end program main
+ ! { dg-final { scan-tree-dump-times "\\\|\\\|" 3 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/array_constructor_46.f90
++++ b/src/gcc/testsuite/gfortran.dg/array_constructor_46.f90
+@@ -12,4 +12,3 @@ program main
+   if (abs (product([[11._dp, thirteen], a]) - 30030._dp) > 1e-8) call abort
+ end program main
+ ! { dg-final { scan-tree-dump-times "while" 2 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/array_constructor_47.f90
++++ b/src/gcc/testsuite/gfortran.dg/array_constructor_47.f90
+@@ -20,5 +20,4 @@ program main
+   end function eleven_ones
+ end program main
+ ! { dg-final { scan-tree-dump-times "while" 4 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+ 
+--- a/src/gcc/testsuite/gfortran.dg/array_constructor_49.f90
++++ b/src/gcc/testsuite/gfortran.dg/array_constructor_49.f90
+@@ -10,4 +10,3 @@ program t
+   if (line /= ' 3 4 5 6') call abort
+ end program t
+ ! { dg-final { scan-tree-dump-times "__var" 3 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/array_memcpy_1.f90
++++ b/src/gcc/testsuite/gfortran.dg/array_memcpy_1.f90
+@@ -25,4 +25,3 @@ subroutine testl(a,b)
+ end subroutine
+ 
+ ! { dg-final { scan-tree-dump-times "memcpy" 4 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/array_memcpy_2.f90
++++ b/src/gcc/testsuite/gfortran.dg/array_memcpy_2.f90
+@@ -17,4 +17,3 @@
+   z = y
+ end
+ ! { dg-final { scan-tree-dump-times "memcpy" 2 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/array_memcpy_3.f90
++++ b/src/gcc/testsuite/gfortran.dg/array_memcpy_3.f90
+@@ -12,4 +12,3 @@ subroutine bar(x)
+ end subroutine
+ 
+ ! { dg-final { scan-tree-dump-times "memcpy|ref-all\[^\\n\]*ref-all" 2 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/array_memcpy_4.f90
++++ b/src/gcc/testsuite/gfortran.dg/array_memcpy_4.f90
+@@ -10,4 +10,3 @@
+   d = s
+ end
+ ! { dg-final { scan-tree-dump-times "memcpy" 1 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/array_memset_1.f90
++++ b/src/gcc/testsuite/gfortran.dg/array_memset_1.f90
+@@ -61,4 +61,3 @@ subroutine l3(a)
+ end subroutine
+ 
+ ! { dg-final { scan-tree-dump-times "memset" 12 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/array_memset_2.f90
++++ b/src/gcc/testsuite/gfortran.dg/array_memset_2.f90
+@@ -34,4 +34,3 @@ program test
+ end program
+ 
+ ! { dg-final { scan-tree-dump-times "= {}" 2 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/array_section_2.f90
++++ b/src/gcc/testsuite/gfortran.dg/array_section_2.f90
+@@ -13,4 +13,3 @@ program test
+    temp(1:size(a)) = a
+ end program
+ ! { dg-final { scan-tree-dump-times "MAX_EXPR\[^\n\t\]+ubound\[^\n\t\]+lbound" 1 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/assign_10.f90
++++ b/src/gcc/testsuite/gfortran.dg/assign_10.f90
+@@ -25,4 +25,3 @@ end
+ !
+ ! { dg-final { scan-tree-dump-times "parm" 18 "original" } }
+ ! { dg-final { scan-tree-dump-times "atmp" 18 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/associate_11.f90
++++ b/src/gcc/testsuite/gfortran.dg/associate_11.f90
+@@ -22,4 +22,3 @@ contains
+ end program bug
+ 
+ ! { dg-final { scan-tree-dump-times "foo ..integer.kind=4..0:. . restrict. a.data.;" 1 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/associate_6.f03
++++ b/src/gcc/testsuite/gfortran.dg/associate_6.f03
+@@ -35,4 +35,3 @@ PROGRAM main
+   END ASSOCIATE
+ END PROGRAM main
+ ! { dg-final { scan-tree-dump-times "func" 2 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/associative_1.f90
++++ b/src/gcc/testsuite/gfortran.dg/associative_1.f90
+@@ -7,4 +7,3 @@ SUBROUTINE S1(a)
+  a=1+a-1
+ END SUBROUTINE S1
+ ! { dg-final { scan-tree-dump-times " \\\+ " 0 "optimized" } }
+-! { dg-final { cleanup-tree-dump "optimized" } }
+--- a/src/gcc/testsuite/gfortran.dg/assumed_charlen_substring_1.f90
++++ b/src/gcc/testsuite/gfortran.dg/assumed_charlen_substring_1.f90
+@@ -7,4 +7,3 @@ subroutine foo(a,b)
+   if (a(1:) /= a(1:)) call do_not_use
+ end subroutine foo
+ ! { dg-final { scan-tree-dump-times "do_not_use" 0 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/assumed_rank_10.f90
++++ b/src/gcc/testsuite/gfortran.dg/assumed_rank_10.f90
+@@ -103,4 +103,3 @@ end program test
+ ! { dg-final { scan-tree-dump-times "iia = .integer.kind=4. .. desc.\[0-9\]+.data;" 1 "original" } }
+ ! { dg-final { scan-tree-dump-times "jjp = .struct t .. desc.\[0-9\]+.data;" 1 "original" } }
+ ! { dg-final { scan-tree-dump-times "jja = .struct t .. desc.\[0-9\]+.data;" 1 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/assumed_rank_12.f90
++++ b/src/gcc/testsuite/gfortran.dg/assumed_rank_12.f90
+@@ -17,5 +17,4 @@ end function f
+ end
+ 
+ ! { dg-final { scan-tree-dump " = f \\(\\);.*desc.0.dtype = .*;.*desc.0.data = .void .. D.*;.*sub \\(&desc.0\\);.*D.*= .integer.kind=4. .. desc.0.data;" "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+ 
+--- a/src/gcc/testsuite/gfortran.dg/assumed_type_2.f90
++++ b/src/gcc/testsuite/gfortran.dg/assumed_type_2.f90
+@@ -175,4 +175,3 @@ end
+ ! { dg-final { scan-tree-dump-times "sub_array_shape \\(&array_class_t1_alloc._data," 1 "original" } }
+ ! { dg-final { scan-tree-dump-times "sub_array_shape \\(&array_class_t1_ptr._data," 1 "original" } }
+ 
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/auto_dealloc_1.f90
++++ b/src/gcc/testsuite/gfortran.dg/auto_dealloc_1.f90
+@@ -54,4 +54,3 @@ end module
+ 
+ 
+ ! { dg-final { scan-tree-dump-times "__builtin_free" 4 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/auto_dealloc_2.f90
++++ b/src/gcc/testsuite/gfortran.dg/auto_dealloc_2.f90
+@@ -28,4 +28,3 @@ end program
+ 
+ ! { dg-final { scan-tree-dump-times "__builtin_free" 4 "original" } }
+ ! { dg-final { scan-tree-dump-times "x->_vptr->_final \\(" 1 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/auto_save_2.f90
++++ b/src/gcc/testsuite/gfortran.dg/auto_save_2.f90
+@@ -81,4 +81,3 @@ end
+ 
+ ! { dg-final { scan-tree-dump-times "  static integer\\\(kind=4\\\) a = 0;" 2 "original" } }
+ ! { dg-final { scan-tree-dump-times "  b = 0;" 2 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/bind_c_array_params_2.f90
++++ b/src/gcc/testsuite/gfortran.dg/bind_c_array_params_2.f90
+@@ -19,4 +19,3 @@ end
+ ! { dg-final { scan-assembler-times "\[ \t\]\[$,_0-9\]*myBindC" 1 { target { ! { hppa*-*-* } } } } }
+ ! { dg-final { scan-assembler-times "myBindC,%r2" 1 { target { hppa*-*-* } } } }
+ ! { dg-final { scan-tree-dump-times "test \\\(&parm\\." 1 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/bind_c_usage_13.f03
++++ b/src/gcc/testsuite/gfortran.dg/bind_c_usage_13.f03
+@@ -148,4 +148,3 @@ end program test
+ ! { dg-final { scan-tree-dump "subiso_val .121.;" "original" } }
+ ! { dg-final { scan-tree-dump "subiso2_val ..z..;" "original" } }
+ !
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/bind_c_usage_14.f03
++++ b/src/gcc/testsuite/gfortran.dg/bind_c_usage_14.f03
+@@ -112,4 +112,3 @@ end subroutine sub6NoIso
+ ! { dg-final { scan-tree-dump "master.3.sub6noiso .0, 0B, 0B, 0B, b, a, 0, 0, 1, 1\\);" "original" } }
+ ! { dg-final { scan-tree-dump "master.3.sub6noiso .1, z, y, x, 0B, 0B, 1, 1, 0, 0\\);" "original" } }
+ 
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/block_2.f08
++++ b/src/gcc/testsuite/gfortran.dg/block_2.f08
+@@ -36,4 +36,3 @@ PROGRAM main
+   END BLOCK
+ END PROGRAM main
+ ! { dg-final { scan-tree-dump-times "free \\(\\(void \\*\\) alloc_arr\\.data" 1 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/bound_simplification_3.f90
++++ b/src/gcc/testsuite/gfortran.dg/bound_simplification_3.f90
+@@ -20,4 +20,3 @@ end program testit
+ 
+ ! { dg-final { scan-tree-dump-times "bound" 0 "original" } }
+ ! { dg-final { scan-tree-dump-times "abort" 0 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/c_f_pointer_tests_3.f90
++++ b/src/gcc/testsuite/gfortran.dg/c_f_pointer_tests_3.f90
+@@ -39,4 +39,3 @@ end program test
+ ! Check c_f_procpointer
+ ! { dg-final { scan-tree-dump-times "  fprocptr = .integer.kind=4. .\\*<.*>. ... cfunptr;" 1 "original" } }
+ !
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/c_funloc_tests_7.f90
++++ b/src/gcc/testsuite/gfortran.dg/c_funloc_tests_7.f90
+@@ -18,5 +18,4 @@ end
+ 
+ ! { dg-final { scan-tree-dump-times "cfp =\[^;\]+ nocsub;" 1 "original" } }
+ ! { dg-final { scan-tree-dump-times "fint =\[^;\]+ cfp;" 1 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+ 
+--- a/src/gcc/testsuite/gfortran.dg/c_loc_test_22.f90
++++ b/src/gcc/testsuite/gfortran.dg/c_loc_test_22.f90
+@@ -21,4 +21,3 @@ end
+ ! { dg-final { scan-tree-dump-times "parm.\[0-9\]+.data = \\(void .\\) &\\(.yyy.\[0-9\]+\\)\\\[D.\[0-9\]+ \\* 4\\\];" 1 "original" } }
+ 
+ ! { dg-final { scan-tree-dump-times "D.\[0-9\]+ = parm.\[0-9\]+.data;\[^;]+ptr\[1-4\] = D.\[0-9\]+;" 4 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/c_ptr_tests_14.f90
++++ b/src/gcc/testsuite/gfortran.dg/c_ptr_tests_14.f90
+@@ -49,4 +49,3 @@ end program test
+ 
+ ! { dg-final { scan-tree-dump-times "bbb =" 0 "original" } }
+ 
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/c_ptr_tests_15.f90
++++ b/src/gcc/testsuite/gfortran.dg/c_ptr_tests_15.f90
+@@ -51,4 +51,3 @@ end program test
+ 
+ ! { dg-final { scan-tree-dump-times "bbb =" 0 "original" } }
+ 
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/c_ptr_tests_16.f90
++++ b/src/gcc/testsuite/gfortran.dg/c_ptr_tests_16.f90
+@@ -59,4 +59,3 @@ function fun()
+ end function fun 
+ 
+ ! { dg-final { scan-tree-dump-times "i_do_not_exist" 0 "optimized" } }
+-! { dg-final { cleanup-tree-dump "optimized" } }
+--- a/src/gcc/testsuite/gfortran.dg/char_cast_1.f90
++++ b/src/gcc/testsuite/gfortran.dg/char_cast_1.f90
+@@ -28,4 +28,3 @@ end
+ ! The sign that all is well is that [S.6][1] appears twice.
+ ! Platform dependent variations are [S$6][1], [__S_6][1], [S___6][1]
+ ! { dg-final { scan-tree-dump-times "6\\\]\\\[1\\\]" 2 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/char_cast_2.f90
++++ b/src/gcc/testsuite/gfortran.dg/char_cast_2.f90
+@@ -23,4 +23,3 @@ end
+ ! Platform dependent variations are [S$5][1], [__S_5][1], [S___5][1]
+ ! so we count the occurrences of 5][1].
+ ! { dg-final { scan-tree-dump-times "5\\\]\\\[1\\\]" 2 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/char_eoshift_5.f90
++++ b/src/gcc/testsuite/gfortran.dg/char_eoshift_5.f90
+@@ -22,4 +22,3 @@ END
+ 
+ ! Check that _gfortran_eoshift* is called with 8 arguments:
+ ! { dg-final { scan-tree-dump "_gfortran_eoshift\[0-9_\]+char \\(\[&a-zA-Z0-9._\]*, \[&a-zA-Z0-9._\]*, \[&a-zA-Z0-9._\]*, \[&a-zA-Z0-9._\]*, \[&a-zA-Z0-9._\]*, \[&a-zA-Z0-9._\]*, \[&a-zA-Z0-9._\]*, \[&a-zA-Z0-9._\]*\\)" "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/char_length_17.f90
++++ b/src/gcc/testsuite/gfortran.dg/char_length_17.f90
+@@ -12,4 +12,3 @@ program main
+   if (c(i+1:i+1) /= 'b') call abort ()
+ end program main
+ ! { dg-final { scan-tree-dump-times "gfortran_compare_string" 0 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/character_comparison_1.f90
++++ b/src/gcc/testsuite/gfortran.dg/character_comparison_1.f90
+@@ -33,5 +33,4 @@ subroutine yes
+ end subroutine yes
+ 
+ ! { dg-final { scan-tree-dump-times "gfortran_compare_string" 0 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+ 
+--- a/src/gcc/testsuite/gfortran.dg/character_comparison_2.f90
++++ b/src/gcc/testsuite/gfortran.dg/character_comparison_2.f90
+@@ -36,5 +36,4 @@ subroutine yes
+ end subroutine yes
+ 
+ ! { dg-final { scan-tree-dump-times "gfortran_compare_string" 0 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+ 
+--- a/src/gcc/testsuite/gfortran.dg/character_comparison_3.f90
++++ b/src/gcc/testsuite/gfortran.dg/character_comparison_3.f90
+@@ -27,5 +27,4 @@ end program main
+ 
+ ! { dg-final { scan-tree-dump-times "gfortran_compare_string" 6 "original" } }
+ ! { dg-final { scan-tree-dump-times "__builtin_memcmp" 2 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+ 
+--- a/src/gcc/testsuite/gfortran.dg/character_comparison_4.f90
++++ b/src/gcc/testsuite/gfortran.dg/character_comparison_4.f90
+@@ -35,5 +35,4 @@ subroutine yes
+ end subroutine yes
+ 
+ ! { dg-final { scan-tree-dump-times "gfortran_compare_string" 0 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+ 
+--- a/src/gcc/testsuite/gfortran.dg/character_comparison_5.f90
++++ b/src/gcc/testsuite/gfortran.dg/character_comparison_5.f90
+@@ -17,5 +17,4 @@ end program main
+ 
+ ! { dg-final { scan-tree-dump-times "gfortran_concat_string" 0 "original" } }
+ ! { dg-final { scan-tree-dump-times "__builtin_memcmp" 2 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+ 
+--- a/src/gcc/testsuite/gfortran.dg/character_comparison_6.f90
++++ b/src/gcc/testsuite/gfortran.dg/character_comparison_6.f90
+@@ -16,5 +16,4 @@ end program main
+ 
+ ! { dg-final { scan-tree-dump-times "gfortran_concat_string" 4 "original" } }
+ ! { dg-final { scan-tree-dump-times "gfortran_compare_string" 2 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+ 
+--- a/src/gcc/testsuite/gfortran.dg/character_comparison_7.f90
++++ b/src/gcc/testsuite/gfortran.dg/character_comparison_7.f90
+@@ -22,5 +22,4 @@ subroutine no(a)
+ end subroutine no
+ 
+ ! { dg-final { scan-tree-dump-times "gfortran_compare_string" 0 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+ 
+--- a/src/gcc/testsuite/gfortran.dg/character_comparison_8.f90
++++ b/src/gcc/testsuite/gfortran.dg/character_comparison_8.f90
+@@ -10,5 +10,4 @@ program main
+   if (LGT(a,a)) call abort
+ end program main
+ ! { dg-final { scan-tree-dump-times "gfortran_compare_string" 0 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+ 
+--- a/src/gcc/testsuite/gfortran.dg/character_comparison_9.f90
++++ b/src/gcc/testsuite/gfortran.dg/character_comparison_9.f90
+@@ -13,4 +13,3 @@ program main
+ end program main
+ ! { dg-final { scan-tree-dump-times "_gfortran_compare_string_char4" 1 "original" } }
+ ! { dg-final { scan-tree-dump-times "__builtin_memcmp" 2 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/chmod_1.f90
++++ b/src/gcc/testsuite/gfortran.dg/chmod_1.f90
+@@ -2,7 +2,7 @@
+ ! { dg-options "-std=gnu" }
+ ! See PR38956.  Test fails on cygwin when user has Administrator rights
+   implicit none
+-  character(len=*), parameter :: n = "foobar_file"
++  character(len=*), parameter :: n = "foobar_file_chmod_1"
+   integer :: i
+ 
+   open (10,file=n)
+--- a/src/gcc/testsuite/gfortran.dg/chmod_2.f90
++++ b/src/gcc/testsuite/gfortran.dg/chmod_2.f90
+@@ -2,7 +2,7 @@
+ ! { dg-options "-std=gnu" }
+ ! See PR38956.  Test fails on cygwin when user has Administrator rights
+   implicit none
+-  character(len=*), parameter :: n = "foobar_file"
++  character(len=*), parameter :: n = "foobar_file_chmod_2"
+   integer :: i
+ 
+   open (10,file=n)
+--- a/src/gcc/testsuite/gfortran.dg/chmod_3.f90
++++ b/src/gcc/testsuite/gfortran.dg/chmod_3.f90
+@@ -2,7 +2,7 @@
+ ! { dg-options "-std=gnu -fdefault-integer-8" }
+ ! See PR38956.  Test fails on cygwin when user has Administrator rights
+   implicit none
+-  character(len=*), parameter :: n = "foobar_file"
++  character(len=*), parameter :: n = "foobar_file_chmod_3"
+   integer :: i
+ 
+   open (10,file=n)
+--- a/src/gcc/testsuite/gfortran.dg/class_19.f03
++++ b/src/gcc/testsuite/gfortran.dg/class_19.f03
+@@ -40,4 +40,3 @@ program main
+ end program main
+ 
+ ! { dg-final { scan-tree-dump-times "__builtin_free" 12 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/class_51.f90
++++ b/src/gcc/testsuite/gfortran.dg/class_51.f90
+@@ -22,4 +22,3 @@
+   End Program
+ 
+ ! { dg-final { scan-tree-dump-times "sub \\(&class" 1 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/class_alias.f90
++++ b/src/gcc/testsuite/gfortran.dg/class_alias.f90
+@@ -92,4 +92,3 @@ use test_module
+   deallocate (var_a)
+   deallocate (var_p)
+ end
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/class_allocate_14.f90
++++ b/src/gcc/testsuite/gfortran.dg/class_allocate_14.f90
+@@ -27,5 +27,4 @@ end
+ 
+ ! { dg-final { scan-tree-dump-times "static struct __class_m_T_1_0a b = {._data={.data=0B}, ._vptr=&__vtab_m_T};" 1 "original" } }
+ ! { dg-final { scan-tree-dump-times "static struct __class_m_T_a y = {._data=0B, ._vptr=&__vtab_m_T};" 1 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+ 
+--- a/src/gcc/testsuite/gfortran.dg/class_allocate_15.f90
++++ b/src/gcc/testsuite/gfortran.dg/class_allocate_15.f90
+@@ -25,4 +25,3 @@ contains
+   end
+ end
+ ! { dg-final { scan-tree-dump-times "__builtin_free" 2 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/class_allocate_16.f90
++++ b/src/gcc/testsuite/gfortran.dg/class_allocate_16.f90
+@@ -25,4 +25,3 @@
+ end
+ 
+ ! { dg-final { scan-tree-dump-times "__builtin_free" 4 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/class_allocate_17.f90
++++ b/src/gcc/testsuite/gfortran.dg/class_allocate_17.f90
+@@ -29,4 +29,3 @@ contains
+ end
+ 
+ ! { dg-final { scan-tree-dump-times "fini_coarray" 1 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/class_array_15.f03
++++ b/src/gcc/testsuite/gfortran.dg/class_array_15.f03
+@@ -116,4 +116,3 @@ subroutine pr54992  ! This test remains as the original.
+   if (loc (b) .ne. loc(bh%hostNode)) call abort
+ end
+ ! { dg-final { scan-tree-dump-times "builtin_free" 12 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/class_array_16.f90
++++ b/src/gcc/testsuite/gfortran.dg/class_array_16.f90
+@@ -68,4 +68,3 @@ end
+ 
+ ! { dg-final { scan-tree-dump-times "__builtin_free" 5 "original" } }
+ ! { dg-final { scan-tree-dump-times "finally" 0 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/class_array_17.f90
++++ b/src/gcc/testsuite/gfortran.dg/class_array_17.f90
+@@ -31,4 +31,3 @@ program test
+ end
+ 
+ ! { dg-final { scan-tree-dump-times "__builtin_malloc \\(40\\);" 1 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/coarray_11.f90
++++ b/src/gcc/testsuite/gfortran.dg/coarray_11.f90
+@@ -61,4 +61,3 @@ subroutine boundsTest()
+ end subroutine boundsTest
+ 
+ ! { dg-final { scan-tree-dump-times "not_existing" 0 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/coarray_12.f90
++++ b/src/gcc/testsuite/gfortran.dg/coarray_12.f90
+@@ -74,4 +74,3 @@ end subroutine testAlloc5
+ ! { dg-final { scan-tree-dump-times "yyy.dim.4..lbound = .*ooo;" 1 "original" } }
+ ! { dg-final { scan-tree-dump-times "yyy.dim.4..ubound"          0 "original" } }
+ 
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/coarray_30.f90
++++ b/src/gcc/testsuite/gfortran.dg/coarray_30.f90
+@@ -12,4 +12,3 @@ program main
+ end
+ 
+ ! { dg-final { scan-tree-dump-times "greeting.data = \\(void . restrict\\) __builtin_malloc \\(25\\);" 1 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/coarray_31.f90
++++ b/src/gcc/testsuite/gfortran.dg/coarray_31.f90
+@@ -19,4 +19,3 @@ end
+ ! { dg-final { scan-tree-dump "a.y.x.data = D.\[0-9\]+.y.x.data;" "original" } }
+ ! { dg-final { scan-tree-dump "a.y.z._data.data = D.\[0-9\]+.y.z._data.data;" "original" } }
+ ! { dg-final { scan-tree-dump "a.y.d._data.data = D.\[0-9\]+.y.d._data.data;" "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/coarray_32.f90
++++ b/src/gcc/testsuite/gfortran.dg/coarray_32.f90
+@@ -14,5 +14,4 @@ end
+ 
+ ! { dg-final { scan-tree-dump-times "ubound.. = " 1 "original" } }
+ ! { dg-final { scan-tree-dump-times "size.. = " 2 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+ 
+--- a/src/gcc/testsuite/gfortran.dg/coarray_atomic_4.f90
++++ b/src/gcc/testsuite/gfortran.dg/coarray_atomic_4.f90
+@@ -66,4 +66,3 @@ end
+ ! All calls should have a stat=0
+ ! { dg-final { scan-tree-dump-times "stat = 0;" 14 "original" } }
+ 
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/coarray_atomic_5.f90
++++ b/src/gcc/testsuite/gfortran.dg/coarray_atomic_5.f90
+@@ -23,4 +23,3 @@ end program
+ ! { dg-final { scan-tree-dump-times "_gfortran_caf_atomic_define \\(caf_token.0, 0, 1, &value.., 0B, 1, 4\\);" 1 "original" } }
+ ! { dg-final { scan-tree-dump-times "_gfortran_caf_atomic_op \\(1, caf_token.0, 0, 1, &me, 0B, 0B, 1, 4\\);" 1 "original" } }
+ ! { dg-final { scan-tree-dump-times "_gfortran_caf_atomic_ref \\(caf_token.0, 0, 1, &me, 0B, 1, 4\\);" 1 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/coarray_collectives_11.f90
++++ b/src/gcc/testsuite/gfortran.dg/coarray_collectives_11.f90
+@@ -12,4 +12,3 @@ program test
+ end program test
+ 
+ ! { dg-final { scan-tree-dump-times "stat1 = 0;" 1 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/coarray_collectives_12.f90
++++ b/src/gcc/testsuite/gfortran.dg/coarray_collectives_12.f90
+@@ -23,4 +23,3 @@ end program test
+ ! { dg-final { scan-tree-dump-times "_gfortran_caf_co_broadcast \\(&desc.., _gfortran_caf_num_images \\(0, -1\\), &stat1, errmesg1, 6\\);" 1 "original" } }
+ ! { dg-final { scan-tree-dump-times "_gfortran_caf_co_broadcast \\(&val2, 4, &stat2, errmesg2, 7\\);" 1 "original" } }
+ ! { dg-final { scan-tree-dump-times "_gfortran_caf_co_broadcast \\(&desc.., res, &stat3, errmesg3, 8\\);" 1 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/coarray_collectives_15.f90
++++ b/src/gcc/testsuite/gfortran.dg/coarray_collectives_15.f90
+@@ -17,4 +17,3 @@ contains
+ end program test
+ 
+ ! { dg-final { scan-tree-dump-times "stat1 = 0;" 1 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/coarray_collectives_16.f90
++++ b/src/gcc/testsuite/gfortran.dg/coarray_collectives_16.f90
+@@ -36,4 +36,3 @@ end program test
+ ! { dg-final { scan-tree-dump-times "_gfortran_caf_co_reduce \\(&desc.., fr, 4, _gfortran_caf_num_images \\(0, -1\\), &stat1, errmesg1, 0, 6\\);" 1 "original" } }
+ ! { dg-final { scan-tree-dump-times "_gfortran_caf_co_reduce \\(&val2, gz, 0, 4, &stat2, errmesg2, 0, 7\\);" 1 "original" } }
+ ! { dg-final { scan-tree-dump-times "_gfortran_caf_co_reduce \\(&desc.., hc, 1, res, &stat3, errmesg3, 99, 8\\);" 1 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/coarray_collectives_4.f90
++++ b/src/gcc/testsuite/gfortran.dg/coarray_collectives_4.f90
+@@ -16,5 +16,4 @@ end program test
+ ! { dg-final { scan-tree-dump-times "stat1 = 0;" 1 "original" } }
+ ! { dg-final { scan-tree-dump-times "stat2 = 0;" 1 "original" } }
+ ! { dg-final { scan-tree-dump-times "stat3 = 0;" 1 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+ 
+--- a/src/gcc/testsuite/gfortran.dg/coarray_collectives_5.f90
++++ b/src/gcc/testsuite/gfortran.dg/coarray_collectives_5.f90
+@@ -16,4 +16,3 @@ end program test
+ ! { dg-final { scan-tree-dump-times "_gfortran_caf_co_max \\(&desc.., 0, &stat1, 0B, 0, 0\\);" 1 "original" } }
+ ! { dg-final { scan-tree-dump-times "_gfortran_caf_co_min \\(&desc.., 0, &stat2, 0B, 0, 0\\);" 1 "original" } }
+ ! { dg-final { scan-tree-dump-times "_gfortran_caf_co_sum \\(&desc.., 0, &stat3, 0B, 0\\);" 1 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/coarray_collectives_6.f90
++++ b/src/gcc/testsuite/gfortran.dg/coarray_collectives_6.f90
+@@ -23,4 +23,3 @@ end program test
+ ! { dg-final { scan-tree-dump-times "_gfortran_caf_co_max \\(&desc.., 0, &stat1, errmesg1, 0, 6\\);" 1 "original" } }
+ ! { dg-final { scan-tree-dump-times "_gfortran_caf_co_sum \\(&val2, 4, &stat2, errmesg2, 7\\);" 1 "original" } }
+ ! { dg-final { scan-tree-dump-times "_gfortran_caf_co_min \\(&desc.., res, &stat3, errmesg3, 99, 8\\);" 1 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/coarray_lib_alloc_1.f90
++++ b/src/gcc/testsuite/gfortran.dg/coarray_lib_alloc_1.f90
+@@ -19,4 +19,3 @@
+ ! { dg-final { scan-tree-dump-times "_gfortran_caf_deregister .&yy.token, &stat.., &errmsg, 200.;" 1 "original" } }
+ ! { dg-final { scan-tree-dump-times "_gfortran_caf_deregister .&yy.token, 0B, 0B, 0.;" 1 "original" } }
+ ! { dg-final { scan-tree-dump-times "_gfortran_caf_deregister .&xx.token, 0B, 0B, 0.;" 1 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/coarray_lib_alloc_2.f90
++++ b/src/gcc/testsuite/gfortran.dg/coarray_lib_alloc_2.f90
+@@ -21,4 +21,3 @@
+ ! { dg-final { scan-tree-dump-times "_gfortran_caf_deregister .&yy._data.token, &stat.., &errmsg, 200.;" 1 "original" } }
+ ! { dg-final { scan-tree-dump-times "_gfortran_caf_deregister .&yy._data.token, 0B, 0B, 0.;" 1 "original" } }
+ ! { dg-final { scan-tree-dump-times "_gfortran_caf_deregister .&xx._data.token, 0B, 0B, 0.;" 1 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/coarray_lib_alloc_3.f90
++++ b/src/gcc/testsuite/gfortran.dg/coarray_lib_alloc_3.f90
+@@ -22,4 +22,3 @@ subroutine test
+ ! { dg-final { scan-tree-dump-times "_gfortran_caf_deregister .&yy._data.token, &stat.., &errmsg, 200.;" 1 "original" } }
+ ! { dg-final { scan-tree-dump-times "_gfortran_caf_deregister .&yy._data.token, 0B, 0B, 0.;" 1 "original" } }
+ ! { dg-final { scan-tree-dump-times "_gfortran_caf_deregister .&xx._data.token, 0B, 0B, 0.;" 1 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/coarray_lib_comm_1.f90
++++ b/src/gcc/testsuite/gfortran.dg/coarray_lib_comm_1.f90
+@@ -44,4 +44,3 @@ end
+ ! { dg-final { scan-tree-dump-times "_gfortran_caf_get \\\(caf_token.1, \\\(integer\\\(kind=\[48\]\\\)\\\) parm.\[0-9\]+.data - \\\(integer\\\(kind=\[48\]\\\)\\\) b, 1, &parm.\[0-9\]+, 0B, &p, 4, 4, 0\\\);" 1 "original" } }
+ ! { dg-final { scan-tree-dump-times "_gfortran_caf_sendget \\\(caf_token.0, \\\(integer\\\(kind=\[48\]\\\)\\\) parm.\[0-9\]+.data - \\\(integer\\\(kind=\[48\]\\\)\\\) a, 1, &parm.\[0-9\]+, 0B, caf_token.0, \\\(integer\\\(kind=\[48\]\\\)\\\) parm.\[0-9\]+.data - \\\(integer\\\(kind=\[48\]\\\)\\\) a, 1, &parm.\[0-9\]+, 0B, 4, 4, 0\\\);" 1 "original" } }
+ 
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/coarray_lib_move_alloc_1.f90
++++ b/src/gcc/testsuite/gfortran.dg/coarray_lib_move_alloc_1.f90
+@@ -20,4 +20,3 @@ end
+ ! { dg-final { scan-tree-dump-times "_gfortran_caf_deregister" 2 "original" } }
+ ! { dg-final { scan-tree-dump-times "\\*bb = \\*aa" 1 "original" } }
+ ! { dg-final { scan-tree-dump-times "\\*dd = \\*cc" 1 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/coarray_lib_realloc_1.f90
++++ b/src/gcc/testsuite/gfortran.dg/coarray_lib_realloc_1.f90
+@@ -32,4 +32,3 @@ end
+ ! But copy "ii" and "CAF":
+ ! { dg-final { scan-tree-dump-times "__builtin_memcpy|= MEM" 2 "original" } }
+ 
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/coarray_lib_this_image_1.f90
++++ b/src/gcc/testsuite/gfortran.dg/coarray_lib_this_image_1.f90
+@@ -24,4 +24,3 @@ end
+ ! { dg-final { scan-tree-dump-times "mythis_image = _gfortran_caf_this_image \\(0\\);" 1 "original" } }
+ ! { dg-final { scan-tree-dump-times "bar \\(x, caf_token.., 0\\);" 1 "original" } }
+ ! { dg-final { scan-tree-dump-times "_gfortran_caf_init \\(&argc, &argv\\);" 1 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/coarray_lib_this_image_2.f90
++++ b/src/gcc/testsuite/gfortran.dg/coarray_lib_this_image_2.f90
+@@ -24,4 +24,3 @@ end
+ ! { dg-final { scan-tree-dump-times "mythis_image = _gfortran_caf_this_image \\(0\\);" 1 "original" } }
+ ! { dg-final { scan-tree-dump-times "bar \\(&parm.\[0-9\]+, caf_token.\[0-9\]+, \\(integer\\(kind=\[48\]\\)\\) parm.\[0-9\]+.data - \\(integer\\(kind=\[48\]\\)\\) x\\);" 1 "original" } }
+ ! { dg-final { scan-tree-dump-times "_gfortran_caf_init \\(&argc, &argv\\);" 1 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/coarray_lib_token_1.f90
++++ b/src/gcc/testsuite/gfortran.dg/coarray_lib_token_1.f90
+@@ -85,4 +85,3 @@ end program main
+ !
+ ! { dg-final { scan-tree-dump-times "sub_opt \\(.integer.kind=4. .. caf, caf_token.\[0-9\]+, 0\\)" 1 "original" } }
+ !
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/coarray_lib_token_2.f90
++++ b/src/gcc/testsuite/gfortran.dg/coarray_lib_token_2.f90
+@@ -112,4 +112,3 @@ end program main
+ !
+ ! { dg-final { scan-tree-dump-times "sub_opt \\(.integer.kind=4. .. caf.data, caf.token, 0\\)" 1 "original" } }
+ !
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/coarray_lib_token_3.f90
++++ b/src/gcc/testsuite/gfortran.dg/coarray_lib_token_3.f90
+@@ -10,4 +10,3 @@ end
+ 
+ ! { dg-final { scan-tree-dump-times "caf.data = \\(void . restrict\\) _gfortran_caf_register \\(4, 1, &caf.token, 0B, 0B, 0\\);" 1 "original" } }
+ ! { dg-final { scan-tree-dump-times "caf_scalar.data = \\(void . restrict\\) _gfortran_caf_register \\(4, 1, &caf_scalar.token, 0B, 0B, 0\\);" 1 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/coarray_lib_token_4.f90
++++ b/src/gcc/testsuite/gfortran.dg/coarray_lib_token_4.f90
+@@ -49,4 +49,3 @@ end program test_caf
+ !
+ ! { dg-final { scan-tree-dump-times "foo \\(&parm.\[0-9\]+, &a, &C.\[0-9\]+, caf_token.\[0-9\]+, \\(integer\\(kind=.\\)\\) parm.\[0-9\]+.data - \\(integer\\(kind=.\\)\\) b, a.token, 0\\);" 1 "original" } }
+ !
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/coarray_lock_7.f90
++++ b/src/gcc/testsuite/gfortran.dg/coarray_lock_7.f90
+@@ -44,4 +44,3 @@ end
+ ! { dg-final { scan-tree-dump-times "_gfortran_caf_lock \\(four.token, 1 - \\(integer\\(kind=4\\)\\) four.dim\\\[0\\\].lbound, 7 - \\(integer\\(kind=4\\)\\) four.dim\\\[1\\\].lbound, &acquired.., &ii, 0B, 0\\);|_gfortran_caf_lock \\(four.token, 1 - four.dim\\\[0\\\].lbound, 7 - four.dim\\\[1\\\].lbound, &acquired.., &ii, 0B, 0\\);" 1 "original" } }
+ ! { dg-final { scan-tree-dump-times "_gfortran_caf_unlock \\(four.token, 2 - \\(integer\\(kind=4\\)\\) four.dim\\\[0\\\].lbound, 8 - \\(integer\\(kind=4\\)\\) four.dim\\\[1\\\].lbound, 0B, 0B, 0\\);|_gfortran_caf_unlock \\(four.token, 2 - four.dim\\\[0\\\].lbound, 8 - four.dim\\\[1\\\].lbound, 0B, 0B, 0\\);" 1 "original" } }
+ 
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/coarray_poly_4.f90
++++ b/src/gcc/testsuite/gfortran.dg/coarray_poly_4.f90
+@@ -20,4 +20,3 @@ call sub(var%x)
+ end subroutine test
+ 
+ ! { dg-final { scan-tree-dump-times "sub \\(\\(real\\(kind=4\\) \\*\\) var.x.data, var.x.token, 0\\);" 1 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/coarray_poly_5.f90
++++ b/src/gcc/testsuite/gfortran.dg/coarray_poly_5.f90
+@@ -11,4 +11,3 @@ allocate(x%x[*])
+ end subroutine test
+ 
+ ! { dg-final { scan-tree-dump-times "x->_data->x.data = _gfortran_caf_register \\(4, 1, &x->_data->x.token, 0B, 0B, 0\\);" 1 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/coarray_poly_6.f90
++++ b/src/gcc/testsuite/gfortran.dg/coarray_poly_6.f90
+@@ -19,4 +19,3 @@ end
+ ! { dg-final { scan-tree-dump-times "bar \\(struct __class_MAIN___T_0_1t \\* x, void \\* restrict caf_token.., integer\\(kind=\[48\]\\) caf_offset..\\)" 1 "original" } }
+ ! { dg-final { scan-tree-dump-times "bar \\(0B, 0B, 0\\);" 1 "original" } }
+ ! { dg-final { scan-tree-dump-times "foo \\(&class.., y._data._data.token, \\(integer\\(kind=\[48\]\\)\\) class..._data.data - \\(integer\\(kind=\[48\]\\)\\) y._data._data.data\\);" 1 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/coarray_poly_7.f90
++++ b/src/gcc/testsuite/gfortran.dg/coarray_poly_7.f90
+@@ -19,4 +19,3 @@ end
+ ! { dg-final { scan-tree-dump-times "bar \\(struct __class_MAIN___T_1_1t \\* x, void \\* restrict caf_token.., integer\\(kind=\[48\]\\) caf_offset..\\)" 1 "original" } }
+ ! { dg-final { scan-tree-dump-times "bar \\(0B, 0B, 0\\);" 1 "original" } }
+ ! { dg-final { scan-tree-dump-times "foo \\(&class.., y._data._data.token, \\(integer\\(kind=\[48\]\\)\\) class..._data.data - \\(integer\\(kind=\[48\]\\)\\) y._data._data.data\\);" 1 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/coarray_poly_8.f90
++++ b/src/gcc/testsuite/gfortran.dg/coarray_poly_8.f90
+@@ -19,4 +19,3 @@ end
+ ! { dg-final { scan-tree-dump-times "bar \\(struct __class_MAIN___T_1_1t \\* x, void \\* restrict caf_token.., integer\\(kind=\[48\]\\) caf_offset..\\)" 1 "original" } }
+ ! { dg-final { scan-tree-dump-times "bar \\(0B, 0B, 0\\);" 1 "original" } }
+ ! { dg-final { scan-tree-dump-times "foo \\(&class.., y._data._data.token, \\(integer\\(kind=\[48\]\\)\\) class..._data.data - \\(integer\\(kind=\[48\]\\)\\) y._data._data.data\\);" 1 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/coarray_sync_memory.f90
++++ b/src/gcc/testsuite/gfortran.dg/coarray_sync_memory.f90
+@@ -16,4 +16,3 @@ end
+ ! { dg-final { scan-tree-dump-times "_gfortran_caf_sync_memory \\(&stat, 0B, 0\\);" 1 "original" } }
+ ! { dg-final { scan-tree-dump-times "_gfortran_caf_sync_memory \\(0B, &&msg, 42\\);" 1 "original" } }
+ ! { dg-final { scan-tree-dump-times "_gfortran_caf_sync_memory \\(&stat, &&msg, 42\\);" 1 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/coarray_this_image_1.f90
++++ b/src/gcc/testsuite/gfortran.dg/coarray_this_image_1.f90
+@@ -17,4 +17,3 @@ end
+ ! { dg-final { scan-tree-dump-times "k3 = 1;" 1 "original" } }
+ ! { dg-final { scan-tree-dump-times "k4 = 0;" 1 "original" } }
+ ! { dg-final { scan-tree-dump-times "k5 = 1;" 1 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/coarray_this_image_2.f90
++++ b/src/gcc/testsuite/gfortran.dg/coarray_this_image_2.f90
+@@ -17,4 +17,3 @@ end
+ ! { dg-final { scan-tree-dump-times "k3 = _gfortran_caf_num_images \\(7, -1\\);" 1 "original" } }
+ ! { dg-final { scan-tree-dump-times "k4 = _gfortran_caf_num_images \\(8, 1\\);" 1 "original" } }
+ ! { dg-final { scan-tree-dump-times "k5 = _gfortran_caf_num_images \\(0, 0\\);" 1 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/complex_intrinsic_7.f90
++++ b/src/gcc/testsuite/gfortran.dg/complex_intrinsic_7.f90
+@@ -41,4 +41,3 @@ if (abs(tanh(z81_1) - cmplx(1.0839233273386946_8,0.27175258531951174_8,8)) > eps
+ 
+ end
+ ! { dg-final { scan-tree-dump-times "abort" 0 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/constructor_2.f90
++++ b/src/gcc/testsuite/gfortran.dg/constructor_2.f90
+@@ -70,4 +70,3 @@ program main
+   if (b%bar /= 4) call abort ()
+ end program main
+ 
+-! { dg-final { cleanup-tree-dump "foo_module bar_module" } }
+--- a/src/gcc/testsuite/gfortran.dg/contiguous_3.f90
++++ b/src/gcc/testsuite/gfortran.dg/contiguous_3.f90
+@@ -62,4 +62,3 @@ end subroutine test3
+ ! { dg-final { scan-tree-dump-times "_gfortran_internal_unpack .&parm" 2 "original" } }
+ 
+ 
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/default_format_2.f90
++++ b/src/gcc/testsuite/gfortran.dg/default_format_2.f90
+@@ -1,5 +1,5 @@
+-! { dg-require-effective-target fortran_large_real }
+ ! { dg-do run { xfail powerpc*-apple-darwin* powerpc*-*-linux* } }
++! { dg-require-effective-target fortran_large_real }
+ ! Test XFAILed on these platforms because the system's printf() lacks
+ ! proper support for denormalized long doubles. See PR24685
+ !
+--- a/src/gcc/testsuite/gfortran.dg/default_format_denormal_2.f90
++++ b/src/gcc/testsuite/gfortran.dg/default_format_denormal_2.f90
+@@ -1,5 +1,5 @@
+-! { dg-require-effective-target fortran_large_real }
+ ! { dg-do run { xfail powerpc*-apple-darwin* } }
++! { dg-require-effective-target fortran_large_real }
+ ! Test XFAILed on this platform because the system's printf() lacks
+ ! proper support for denormalized long doubles. See PR24685
+ !
+--- a/src/gcc/testsuite/gfortran.dg/default_initialization_5.f90
++++ b/src/gcc/testsuite/gfortran.dg/default_initialization_5.f90
+@@ -62,4 +62,3 @@ end program
+ 
+ ! { dg-final { scan-tree-dump-times "my_data.head = 0B" 1 "original" } }
+ ! { dg-final { scan-tree-dump-times "my_data.head = &tgt" 1 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/default_numeric_type_1.f90
++++ b/src/gcc/testsuite/gfortran.dg/default_numeric_type_1.f90
+@@ -16,4 +16,3 @@ end subroutine
+ program testprog
+   call mysub1((/1.,2./),(/1.,2.,3./),-2, 3.2)
+ end
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/dependency_10.f90
++++ b/src/gcc/testsuite/gfortran.dg/dependency_10.f90
+@@ -10,4 +10,3 @@ subroutine foo(a)
+   endwhere
+ end subroutine
+ ! { dg-final { scan-tree-dump-times "malloc" 0 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/dependency_11.f90
++++ b/src/gcc/testsuite/gfortran.dg/dependency_11.f90
+@@ -10,4 +10,3 @@ subroutine foo(a)
+   endwhere
+ end subroutine
+ ! { dg-final { scan-tree-dump-times "malloc" 0 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/dependency_12.f90
++++ b/src/gcc/testsuite/gfortran.dg/dependency_12.f90
+@@ -9,4 +9,3 @@ subroutine foo(a,b)
+   endwhere
+ end subroutine
+ ! { dg-final { scan-tree-dump-times "malloc" 0 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/dependency_13.f90
++++ b/src/gcc/testsuite/gfortran.dg/dependency_13.f90
+@@ -10,4 +10,3 @@
+    end where
+    end
+ ! { dg-final { scan-tree-dump-times "temp" 3 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/dependency_14.f90
++++ b/src/gcc/testsuite/gfortran.dg/dependency_14.f90
+@@ -9,4 +9,3 @@ subroutine foo(a,i)
+   endwhere
+ end subroutine
+ ! { dg-final { scan-tree-dump-times "malloc" 0 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/dependency_15.f90
++++ b/src/gcc/testsuite/gfortran.dg/dependency_15.f90
+@@ -9,4 +9,3 @@ subroutine foo(a,i)
+   endwhere
+ end subroutine
+ ! { dg-final { scan-tree-dump-times "malloc" 0 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/dependency_16.f90
++++ b/src/gcc/testsuite/gfortran.dg/dependency_16.f90
+@@ -9,4 +9,3 @@ subroutine foo(a,i)
+   endwhere
+ end subroutine
+ ! { dg-final { scan-tree-dump-times "malloc" 0 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/dependency_17.f90
++++ b/src/gcc/testsuite/gfortran.dg/dependency_17.f90
+@@ -9,4 +9,3 @@ subroutine foo(a,i)
+   endwhere
+ end subroutine
+ ! { dg-final { scan-tree-dump-times "malloc" 0 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/dependency_18.f90
++++ b/src/gcc/testsuite/gfortran.dg/dependency_18.f90
+@@ -17,4 +17,3 @@ subroutine foo(a,i,j,k)
+   a(k:k+2) = a(k+1:k+3)
+ end subroutine
+ ! { dg-final { scan-tree-dump-times "malloc" 0 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/dependency_20.f90
++++ b/src/gcc/testsuite/gfortran.dg/dependency_20.f90
+@@ -7,4 +7,3 @@
+   endwhere
+ end
+ ! { dg-final { scan-tree-dump-times "temp" 0 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/dependency_26.f90
++++ b/src/gcc/testsuite/gfortran.dg/dependency_26.f90
+@@ -49,4 +49,3 @@ END MODULE M1
+ end
+ ! { dg-final { scan-tree-dump-times "&a" 1 "original" } }
+ ! { dg-final { scan-tree-dump-times "pack" 0 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/dependency_4.f90
++++ b/src/gcc/testsuite/gfortran.dg/dependency_4.f90
+@@ -8,4 +8,3 @@ subroutine foo(a)
+   endwhere
+ end subroutine
+ ! { dg-final { scan-tree-dump-times "malloc" 0 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/dependency_5.f90
++++ b/src/gcc/testsuite/gfortran.dg/dependency_5.f90
+@@ -8,4 +8,3 @@ subroutine foo(a)
+   endwhere
+ end subroutine
+ ! { dg-final { scan-tree-dump-times "malloc" 0 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/dependency_6.f90
++++ b/src/gcc/testsuite/gfortran.dg/dependency_6.f90
+@@ -8,4 +8,3 @@ subroutine foo(a)
+   endwhere
+ end subroutine
+ ! { dg-final { scan-tree-dump-times "malloc" 0 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/dependency_7.f90
++++ b/src/gcc/testsuite/gfortran.dg/dependency_7.f90
+@@ -8,4 +8,3 @@ subroutine foo(a)
+   endwhere
+ end subroutine
+ ! { dg-final { scan-tree-dump-times "malloc" 0 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/dependency_8.f90
++++ b/src/gcc/testsuite/gfortran.dg/dependency_8.f90
+@@ -10,4 +10,3 @@ subroutine foo(a,i,j)
+   endwhere
+ end subroutine
+ ! { dg-final { scan-tree-dump-times "temp" 3 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/dependency_9.f90
++++ b/src/gcc/testsuite/gfortran.dg/dependency_9.f90
+@@ -10,4 +10,3 @@ subroutine foo(a,i,j)
+   endwhere
+ end subroutine
+ ! { dg-final { scan-tree-dump-times "malloc" 0 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/derived_array_intrinisics_1.f90
++++ b/src/gcc/testsuite/gfortran.dg/derived_array_intrinisics_1.f90
+@@ -28,4 +28,3 @@
+     j = total
+   end
+ ! { dg-final { scan-tree-dump-times "j = 50" 1 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/derived_constructor_char_1.f90
++++ b/src/gcc/testsuite/gfortran.dg/derived_constructor_char_1.f90
+@@ -47,4 +47,3 @@ end subroutine
+ ! { dg-final { scan-tree-dump-times "four = ..txt=..ABC  ., .ZYX  ...;" 1 "original" } }
+ ! { dg-final { scan-tree-dump-times "five = ..txt=..AbCdE., .ZyXwV...;" 1 "original" } }
+ ! { dg-final { scan-tree-dump-times "six = ..txt=..aBcDe., .zYxWv...;" 1 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/direct_io_8.f90
++++ b/src/gcc/testsuite/gfortran.dg/direct_io_8.f90
+@@ -7,7 +7,7 @@ program main
+   i=44
+   ir = -42
+ 
+-  open(11,file="foo.dat")
++  open(11,file="foo_direct_io_8.dat")
+   ! Try a direct access read on a formatted sequential rile
+   READ (11, REC = I, ERR = 99) TEMP_CHANGES
+   call abort
+--- a/src/gcc/testsuite/gfortran.dg/dot_product_2.f90
++++ b/src/gcc/testsuite/gfortran.dg/dot_product_2.f90
+@@ -35,4 +35,3 @@ end
+ 
+ 
+ ! { dg-final { scan-tree-dump-not "abort" "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/dot_product_3.f90
++++ b/src/gcc/testsuite/gfortran.dg/dot_product_3.f90
+@@ -12,4 +12,3 @@ program main
+    stop
+ end program main
+ ! { dg-final { scan-tree-dump-times "8\\.0e\\+0" 1 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/elemental_dependency_1.f90
++++ b/src/gcc/testsuite/gfortran.dg/elemental_dependency_1.f90
+@@ -80,4 +80,3 @@ CONTAINS
+ END PROGRAM main
+ 
+ ! { dg-final { scan-tree-dump-times "_gfortran_internal_unpack" 3 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/elemental_dependency_3.f90
++++ b/src/gcc/testsuite/gfortran.dg/elemental_dependency_3.f90
+@@ -25,4 +25,3 @@ program gfcbu84_main
+   end subroutine tq_tvgh
+ end program gfcbu84_main
+ ! { dg-final { scan-tree-dump-times "atmp" 0 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/elemental_dependency_4.f90
++++ b/src/gcc/testsuite/gfortran.dg/elemental_dependency_4.f90
+@@ -164,4 +164,3 @@ CONTAINS
+     END FUNCTION Romeo
+ END PROGRAM Main
+ 
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/extends_11.f03
++++ b/src/gcc/testsuite/gfortran.dg/extends_11.f03
+@@ -38,4 +38,3 @@
+ end
+ 
+ ! { dg-final { scan-tree-dump-times " +recruit\\.service\\.education\\.person\\.ss =" 8 "original"} }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/extends_14.f03
++++ b/src/gcc/testsuite/gfortran.dg/extends_14.f03
+@@ -26,4 +26,3 @@ program evolve_aflow
+ end program 
+ 
+ ! { dg-final { scan-tree-dump-times "__builtin_free" 3 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/extends_type_of_3.f90
++++ b/src/gcc/testsuite/gfortran.dg/extends_type_of_3.f90
+@@ -108,4 +108,3 @@ end
+ 
+ ! { dg-final { scan-tree-dump-times "abort" 13 "original" } }
+ ! { dg-final { scan-tree-dump-times "should_not_exist" 0 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/f2003_inquire_1.f03
++++ b/src/gcc/testsuite/gfortran.dg/f2003_inquire_1.f03
+@@ -4,7 +4,7 @@ character(25) :: sround, ssign, sasynchronous, sdecimal, sencoding
+ integer :: vsize, vid
+ logical :: vpending
+ 
+-open(10, file='mydata', asynchronous="yes", blank="null", &
++open(10, file='mydata_f2003_inquire_1', asynchronous="yes", blank="null", &
+ & decimal="comma", encoding="utf-8", sign="plus")
+ 
+ inquire(unit=10, round=sround, sign=ssign, size=vsize, id=vid, &
+--- a/src/gcc/testsuite/gfortran.dg/f2003_io_1.f03
++++ b/src/gcc/testsuite/gfortran.dg/f2003_io_1.f03
+@@ -8,7 +8,7 @@ character(25) :: msg
+ 
+ a = 23.45
+ b = 0.0
+-open(10, file='mydata', asynchronous="yes", blank="null")
++open(10, file='mydata_f2003_io_1', asynchronous="yes", blank="null")
+ 
+ write(10,'(10f8.3)', asynchronous="yes", decimal="comma", id=j) a
+ rewind(10)
+--- a/src/gcc/testsuite/gfortran.dg/f2003_io_2.f03
++++ b/src/gcc/testsuite/gfortran.dg/f2003_io_2.f03
+@@ -7,7 +7,7 @@ character(25) :: msg
+ real, dimension(10) :: a, b
+ 
+ a = 43.21
+-open(10, file='mydata', asynchronous="yes")
++open(10, file='mydata_f2003_io_2', asynchronous="yes")
+ write(10,'(10f8.3)', asynchronous="yes", decimal="comma") a
+ rewind(10)
+ read(10,'(10f8.3)', asynchronous="yes", decimal="comma", id=idvar) b
+--- a/src/gcc/testsuite/gfortran.dg/f2003_io_8.f03
++++ b/src/gcc/testsuite/gfortran.dg/f2003_io_8.f03
+@@ -6,7 +6,7 @@ real :: c
+ integer :: istat, j
+ character(25) :: msg
+ 
+-open(10, file='mydata', asynchronous="yes", blank="null")
++open(10, file='mydata_f2003_io_8', asynchronous="yes", blank="null")
+ write(10,'(10f8.3)', asynchronous='no', decimal="comma", id=j) a ! { dg-error "must be with ASYNCHRONOUS=" }
+ read(10,'(10f8.3)', id=j, decimal="comma", blank="zero") b ! { dg-error "must be with ASYNCHRONOUS=" }
+ read(10,'(10f8.3)', asynchronous=msg, decimal="comma", blank="zero") b ! { dg-error "must be an initialization expression" }
+--- a/src/gcc/testsuite/gfortran.dg/finalize_10.f90
++++ b/src/gcc/testsuite/gfortran.dg/finalize_10.f90
+@@ -36,4 +36,3 @@ end subroutine foo
+ ! { dg-final { scan-tree-dump-times "desc.\[0-9\]+.data = \\(void \\* restrict\\) bb;" 1 "original" } }
+ ! { dg-final { scan-tree-dump-times "__final_m_T2 \\(&desc.\[0-9\]+, 0, 0\\);" 1 "original" } }
+ 
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/finalize_18.f90
++++ b/src/gcc/testsuite/gfortran.dg/finalize_18.f90
+@@ -44,4 +44,3 @@ end
+ ! { dg-final { scan-tree-dump "y.cc._vptr->_final \\(&desc.\[0-9\]+, (\\(integer\\(kind=8\\)\\) )?y.cc._vptr->_size, 1\\);" "original" } }
+ ! { dg-final { scan-tree-dump "y.dd._vptr->_final \\(&y.dd._data, (\\(integer\\(kind=8\\)\\) )?y.dd._vptr->_size, 1\\);" "original" } }
+ 
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/finalize_21.f90
++++ b/src/gcc/testsuite/gfortran.dg/finalize_21.f90
+@@ -9,4 +9,3 @@ class(*), allocatable :: var
+ end
+ 
+ ! { dg-final { scan-tree-dump "static struct __vtype__STAR __vtab__STAR = {._hash=0, ._size=., ._extends=0B, ._def_init=0B, ._copy=0B, ._final=0B};" "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/finalize_28.f90
++++ b/src/gcc/testsuite/gfortran.dg/finalize_28.f90
+@@ -22,4 +22,3 @@ contains
+   end subroutine coo_dump_edges
+ end module coo_graphs
+ ! { dg-final { scan-tree-dump-times "__builtin_free" 3 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/fmt_en.f90
++++ b/src/gcc/testsuite/gfortran.dg/fmt_en.f90
+@@ -183,4 +183,3 @@ contains
+     end subroutine
+ end program
+ ! { dg-final { scan-file fmt_en.res "All kinds rounded to nearest" { xfail hppa*-*-hpux* } } }
+-! { dg-final { cleanup-saved-temps } }
+--- a/src/gcc/testsuite/gfortran.dg/forall_15.f90
++++ b/src/gcc/testsuite/gfortran.dg/forall_15.f90
+@@ -23,4 +23,3 @@ program test
+ end program test
+ ! { dg-final { scan-tree-dump-times "__builtin_cos" 1 "original" } }
+ ! { dg-final { scan-tree-dump-times "__builtin_sin" 1 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/forall_8.f90
++++ b/src/gcc/testsuite/gfortran.dg/forall_8.f90
+@@ -6,4 +6,3 @@
+   end forall
+   end
+ ! { dg-final { scan-tree-dump-times "temp" 0 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/forall_9.f90
++++ b/src/gcc/testsuite/gfortran.dg/forall_9.f90
+@@ -6,4 +6,3 @@
+   end forall
+   end
+ ! { dg-final { scan-tree-dump-times "temp" 0 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/function_optimize_1.f90
++++ b/src/gcc/testsuite/gfortran.dg/function_optimize_1.f90
+@@ -44,4 +44,3 @@ end program main
+ ! { dg-final { scan-tree-dump-times "element" 1 "original" } }
+ ! { dg-final { scan-tree-dump-times "mypure" 1 "original" } }
+ ! { dg-final { scan-tree-dump-times "elem_impure" 2 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/function_optimize_2.f90
++++ b/src/gcc/testsuite/gfortran.dg/function_optimize_2.f90
+@@ -44,4 +44,3 @@ end program main
+ ! { dg-final { scan-tree-dump-times "element" 1 "original" } }
+ ! { dg-final { scan-tree-dump-times "mypure" 1 "original" } }
+ ! { dg-final { scan-tree-dump-times "elem_impure" 1 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/function_optimize_6.f90
++++ b/src/gcc/testsuite/gfortran.dg/function_optimize_6.f90
+@@ -11,6 +11,5 @@ program main
+   ENDDO
+ END program main
+ ! { dg-final { scan-tree-dump-times "mypure" 1 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+ 
+ 
+--- a/src/gcc/testsuite/gfortran.dg/function_optimize_7.f90
++++ b/src/gcc/testsuite/gfortran.dg/function_optimize_7.f90
+@@ -44,4 +44,3 @@ end subroutine xx
+ ! { dg-final { scan-tree-dump-times "mypure" 1 "original" } }
+ ! { dg-final { scan-tree-dump-times "elem_impure" 2 "original" } }
+ ! { dg-final { scan-tree-dump-times "sum_r4" 1 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/function_optimize_8.f90
++++ b/src/gcc/testsuite/gfortran.dg/function_optimize_8.f90
+@@ -32,4 +32,3 @@ program main
+ end program main
+ ! { dg-final { scan-tree-dump-times "myfunc" 2 "original" } }
+ ! { dg-final { scan-tree-dump-times "mychar" 2 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/function_optimize_9.f90
++++ b/src/gcc/testsuite/gfortran.dg/function_optimize_9.f90
+@@ -20,4 +20,3 @@ program main
+   print *,a
+ end program main
+ ! { dg-final { scan-tree-dump-times "purefunc" 1 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/generic_18.f90
++++ b/src/gcc/testsuite/gfortran.dg/generic_18.f90
+@@ -50,4 +50,3 @@ PROGRAM MakeAChoice
+ END PROGRAM MakeAChoice
+ ! { dg-final { scan-tree-dump-times "specproc" 3 "original" } }
+ ! { dg-final { scan-tree-dump-times "elemproc" 3 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/goacc/acc_on_device-1.f95
++++ b/src/gcc/testsuite/gfortran.dg/goacc/acc_on_device-1.f95
+@@ -19,4 +19,3 @@ end function f
+ ! Unsuitable to be handled as a builtin, so we're expecting four calls.
+ ! { dg-final { scan-rtl-dump-times "\\\(call \[^\\n\]* acc_on_device" 4 "expand" } }
+ 
+-! { dg-final { cleanup-rtl-dump "expand" } }
+--- a/src/gcc/testsuite/gfortran.dg/goacc/acc_on_device-2-off.f95
++++ b/src/gcc/testsuite/gfortran.dg/goacc/acc_on_device-2-off.f95
+@@ -36,4 +36,3 @@ end function f
+ ! Without -fopenacc, we're expecting one call.
+ ! { dg-final { scan-rtl-dump-times "\\\(call \[^\\n\]* acc_on_device" 1 "expand" } }
+ 
+-! { dg-final { cleanup-rtl-dump "expand" } }
+--- a/src/gcc/testsuite/gfortran.dg/goacc/acc_on_device-2.f95
++++ b/src/gcc/testsuite/gfortran.dg/goacc/acc_on_device-2.f95
+@@ -37,4 +37,3 @@ end function f
+ ! TODO: not working.
+ ! { dg-final { scan-rtl-dump-times "\\\(call \[^\\n\]* acc_on_device" 0 "expand" { xfail *-*-* } } }
+ 
+-! { dg-final { cleanup-rtl-dump "expand" } }
+--- a/src/gcc/testsuite/gfortran.dg/goacc/data-tree.f95
++++ b/src/gcc/testsuite/gfortran.dg/goacc/data-tree.f95
+@@ -27,4 +27,3 @@ end program test
+ ! { dg-final { scan-tree-dump-times "map\\(alloc:t\\)" 1 "original" } } 
+ 
+ ! { dg-final { scan-tree-dump-times "map\\(force_deviceptr:u\\)" 1 "original" } } 
+-! { dg-final { cleanup-tree-dump "original" } } 
+--- a/src/gcc/testsuite/gfortran.dg/goacc/declare-1.f95
++++ b/src/gcc/testsuite/gfortran.dg/goacc/declare-1.f95
+@@ -17,4 +17,3 @@ contains
+ end program test
+ ! { dg-prune-output "unimplemented" }
+ ! { dg-final { scan-tree-dump-times "pragma acc declare map\\(force_tofrom:i\\)" 2 "original" } } 
+-! { dg-final { cleanup-tree-dump "original" } } 
+--- a/src/gcc/testsuite/gfortran.dg/goacc/host_data-tree.f95
++++ b/src/gcc/testsuite/gfortran.dg/goacc/host_data-tree.f95
+@@ -10,4 +10,3 @@ program test
+ end program test
+ ! { dg-prune-output "unimplemented" }
+ ! { dg-final { scan-tree-dump-times "pragma acc host_data use_device\\(i\\)" 1 "original" } } 
+-! { dg-final { cleanup-tree-dump "original" } } 
+--- a/src/gcc/testsuite/gfortran.dg/goacc/kernels-tree.f95
++++ b/src/gcc/testsuite/gfortran.dg/goacc/kernels-tree.f95
+@@ -29,4 +29,3 @@ end program test
+ ! { dg-final { scan-tree-dump-times "map\\(alloc:t\\)" 1 "original" } } 
+ 
+ ! { dg-final { scan-tree-dump-times "map\\(force_deviceptr:u\\)" 1 "original" } } 
+-! { dg-final { cleanup-tree-dump "original" } } 
+--- a/src/gcc/testsuite/gfortran.dg/goacc/loop-tree-1.f90
++++ b/src/gcc/testsuite/gfortran.dg/goacc/loop-tree-1.f90
+@@ -45,4 +45,3 @@ end program test
+ 
+ ! { dg-final { scan-tree-dump-times "private\\(m\\)" 1 "original" } } 
+ ! { dg-final { scan-tree-dump-times "reduction\\(\\+:sum\\)" 1 "original" } } 
+-! { dg-final { cleanup-tree-dump "original" } } 
+--- a/src/gcc/testsuite/gfortran.dg/goacc/parallel-tree.f95
++++ b/src/gcc/testsuite/gfortran.dg/goacc/parallel-tree.f95
+@@ -38,4 +38,3 @@ end program test
+ ! { dg-final { scan-tree-dump-times "map\\(force_deviceptr:u\\)" 1 "original" } } 
+ ! { dg-final { scan-tree-dump-times "private\\(v\\)" 1 "original" } } 
+ ! { dg-final { scan-tree-dump-times "firstprivate\\(w\\)" 1 "original" } } 
+-! { dg-final { cleanup-tree-dump "original" } } 
+--- a/src/gcc/testsuite/gfortran.dg/goacc/private-1.f95
++++ b/src/gcc/testsuite/gfortran.dg/goacc/private-1.f95
+@@ -35,4 +35,3 @@ end program test
+ ! { dg-final { scan-tree-dump-times "private\\(i\\)" 3 "omplower" } }
+ ! { dg-final { scan-tree-dump-times "private\\(j\\)" 2 "omplower" } }
+ ! { dg-final { scan-tree-dump-times "private\\(k\\)" 1 "omplower" } }
+-! { dg-final { cleanup-tree-dump "omplower" } }
+--- a/src/gcc/testsuite/gfortran.dg/gomp/do-1.f90
++++ b/src/gcc/testsuite/gfortran.dg/gomp/do-1.f90
+@@ -23,4 +23,3 @@ end subroutine bar
+ 
+ ! { dg-final { scan-tree-dump-times "GOMP_parallel_loop_dynamic_start" 2 "omplower" { xfail *-*-* } } }
+ ! { dg-final { scan-tree-dump-times "GOMP_parallel_loop_guided_start" 2 "omplower" { xfail *-*-* } } }
+-! { dg-final { cleanup-tree-dump "omplower" } }
+--- a/src/gcc/testsuite/gfortran.dg/gomp/omp_parse1.f90
++++ b/src/gcc/testsuite/gfortran.dg/gomp/omp_parse1.f90
+@@ -17,4 +17,3 @@ call bar
+ end
+ 
+ ! { dg-final { scan-tree-dump-times "pragma omp parallel" 3 "omplower" } }
+-! { dg-final { cleanup-tree-dump "omplower" } }
+--- a/src/gcc/testsuite/gfortran.dg/gomp/omp_parse2.f
++++ b/src/gcc/testsuite/gfortran.dg/gomp/omp_parse2.f
+@@ -11,4 +11,3 @@ C$omp 	 	p
+       end
+ 
+ ! { dg-final { scan-tree-dump-times "pragma omp parallel" 2 "omplower" } }
+-! { dg-final { cleanup-tree-dump "omplower" } }
+--- a/src/gcc/testsuite/gfortran.dg/gomp/openmp-simd-1.f90
++++ b/src/gcc/testsuite/gfortran.dg/gomp/openmp-simd-1.f90
+@@ -134,4 +134,3 @@ end
+ ! { dg-final { scan-tree-dump-times "pragma omp simd" 6 "original" } }
+ ! { dg-final { scan-tree-dump-times "pragma omp" 6 "original" } }
+ ! { dg-final { scan-tree-dump-times "__builtin_GOMP" 0 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/gomp/openmp-simd-2.f90
++++ b/src/gcc/testsuite/gfortran.dg/gomp/openmp-simd-2.f90
+@@ -25,4 +25,3 @@ include 'openmp-simd-1.f90'
+ ! { dg-final { scan-tree-dump-times "__builtin_GOMP_cancel" 2 "original" } }
+ ! { dg-final { scan-tree-dump-times "__builtin_GOMP_taskyield" 1 "original" } }
+ ! { dg-final { scan-tree-dump-times "__builtin_GOMP_taskwait" 1 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/gomp/openmp-simd-3.f90
++++ b/src/gcc/testsuite/gfortran.dg/gomp/openmp-simd-3.f90
+@@ -25,4 +25,3 @@ include 'openmp-simd-1.f90'
+ ! { dg-final { scan-tree-dump-times "__builtin_GOMP_cancel" 2 "original" } }
+ ! { dg-final { scan-tree-dump-times "__builtin_GOMP_taskyield" 1 "original" } }
+ ! { dg-final { scan-tree-dump-times "__builtin_GOMP_taskwait" 1 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/gomp/workshare2.f90
++++ b/src/gcc/testsuite/gfortran.dg/gomp/workshare2.f90
+@@ -50,4 +50,3 @@ program foo
+ 
+ end program foo
+ ! { dg-final { scan-tree-dump-times "__var" 0 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/gomp/workshare3.f90
++++ b/src/gcc/testsuite/gfortran.dg/gomp/workshare3.f90
+@@ -36,4 +36,3 @@ program foo
+ 
+ end program foo
+ ! { dg-final { scan-tree-dump-times "__builtin_cosf" 2 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/graphite/block-1.f90
++++ b/src/gcc/testsuite/gfortran.dg/graphite/block-1.f90
+@@ -9,5 +9,4 @@ end subroutine matrix_multiply
+ 
+ ! { dg-final { scan-tree-dump-times "number of SCoPs: 1" 1 "graphite" { xfail *-*-* } } }
+ ! { dg-final { scan-tree-dump-times "will be loop blocked" 1 "graphite" { xfail *-*-* } } }
+-! { dg-final { cleanup-tree-dump "graphite" } }
+ 
+--- a/src/gcc/testsuite/gfortran.dg/graphite/block-2.f
++++ b/src/gcc/testsuite/gfortran.dg/graphite/block-2.f
+@@ -18,4 +18,3 @@
+ 
+ ! { dg-final { scan-tree-dump-times "number of SCoPs: 2" 1 "graphite" { xfail *-*-* } } }
+ ! { dg-final { scan-tree-dump-times "will be loop blocked" 2 "graphite" { xfail *-*-* } } }
+-! { dg-final { cleanup-tree-dump "graphite" } }
+--- a/src/gcc/testsuite/gfortran.dg/graphite/block-3.f90
++++ b/src/gcc/testsuite/gfortran.dg/graphite/block-3.f90
+@@ -14,5 +14,4 @@ end subroutine matrix_multiply
+ 
+ ! { dg-final { scan-tree-dump-times "number of SCoPs: 1" 1 "graphite" { xfail *-*-* } } }
+ ! { dg-final { scan-tree-dump-times "will be loop blocked" 1 "graphite" { xfail *-*-* } } }
+-! { dg-final { cleanup-tree-dump "graphite" } }
+ 
+--- a/src/gcc/testsuite/gfortran.dg/graphite/block-4.f90
++++ b/src/gcc/testsuite/gfortran.dg/graphite/block-4.f90
+@@ -17,5 +17,4 @@ end subroutine matrix_multiply
+ 
+ ! { dg-final { scan-tree-dump-times "number of SCoPs: 1" 1 "graphite" { xfail *-*-* } } }
+ ! { dg-final { scan-tree-dump-times "will be loop blocked" 1 "graphite" { xfail *-*-* } } }
+-! { dg-final { cleanup-tree-dump "graphite" } }
+ 
+--- a/src/gcc/testsuite/gfortran.dg/graphite/interchange-1.f
++++ b/src/gcc/testsuite/gfortran.dg/graphite/interchange-1.f
+@@ -42,4 +42,3 @@
+ ! kernel from bwaves.
+ 
+ ! { dg-final { scan-tree-dump-times "will be interchanged" 1 "graphite" { xfail *-*-* } } }
+-! { dg-final { cleanup-tree-dump "graphite" } }
+--- a/src/gcc/testsuite/gfortran.dg/graphite/interchange-2.f
++++ b/src/gcc/testsuite/gfortran.dg/graphite/interchange-2.f
+@@ -40,4 +40,3 @@
+ ! as the number of iterations for f4 is not known.
+ 
+ ! { dg-final { scan-tree-dump-times "will be interchanged" 0 "graphite" } }
+-! { dg-final { cleanup-tree-dump "graphite" } }
+--- a/src/gcc/testsuite/gfortran.dg/graphite/interchange-3.f90
++++ b/src/gcc/testsuite/gfortran.dg/graphite/interchange-3.f90
+@@ -25,4 +25,3 @@ Program FOO
+ end Program FOO
+ 
+ ! { dg-final { scan-tree-dump-times "will be interchanged" 1 "graphite" } }
+-! { dg-final { cleanup-tree-dump "graphite" } }
+--- a/src/gcc/testsuite/gfortran.dg/graphite/interchange-4.f
++++ b/src/gcc/testsuite/gfortran.dg/graphite/interchange-4.f
+@@ -26,4 +26,3 @@ c
+       end
+ 
+ ! { dg-final { scan-tree-dump-times "will be interchanged" 1 "graphite" { xfail *-*-* } } }
+-! { dg-final { cleanup-tree-dump "graphite" } }
+--- a/src/gcc/testsuite/gfortran.dg/graphite/interchange-5.f
++++ b/src/gcc/testsuite/gfortran.dg/graphite/interchange-5.f
+@@ -27,4 +27,3 @@ c
+       end
+ 
+ ! { dg-final { scan-tree-dump-times "will be interchanged" 1 "graphite" { xfail *-*-* } } }
+-! { dg-final { cleanup-tree-dump "graphite" } }
+--- a/src/gcc/testsuite/gfortran.dg/graphite/pr14741.f90
++++ b/src/gcc/testsuite/gfortran.dg/graphite/pr14741.f90
+@@ -26,4 +26,3 @@ END SUBROUTINE mult
+ 
+ ! { dg-final { scan-tree-dump-times "number of SCoPs: 1" 1 "graphite" { xfail *-*-* } } }
+ ! { dg-final { scan-tree-dump-times "will be loop blocked" 1 "graphite" { xfail *-*-* } } }
+-! { dg-final { cleanup-tree-dump "graphite" } }
+--- a/src/gcc/testsuite/gfortran.dg/graphite/scop-1.f
++++ b/src/gcc/testsuite/gfortran.dg/graphite/scop-1.f
+@@ -10,4 +10,3 @@
+       end
+ 
+ ! { dg-final { scan-tree-dump-times "number of SCoPs: 1" 1 "graphite" { xfail *-*-* } } } 
+-! { dg-final { cleanup-tree-dump "graphite" } } 
+--- a/src/gcc/testsuite/gfortran.dg/graphite/vect-pr40979.f90
++++ b/src/gcc/testsuite/gfortran.dg/graphite/vect-pr40979.f90
+@@ -24,4 +24,3 @@ contains
+ end module mqc_m
+ 
+ ! { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } }
+-! { dg-final { cleanup-tree-dump "vect" } }
+--- a/src/gcc/testsuite/gfortran.dg/implicit_pure_3.f90
++++ b/src/gcc/testsuite/gfortran.dg/implicit_pure_3.f90
+@@ -106,4 +106,3 @@ END MODULE
+ 
+ ! { dg-final { scan-module-absence "parallel_rng_types" "IMPLICIT_PURE" } }
+ ! { dg-final { scan-tree-dump-times "rn32 \\(rng_stream" 3 "optimized" } }
+-! { dg-final { cleanup-tree-dump "optimized" } }
+--- a/src/gcc/testsuite/gfortran.dg/index_2.f90
++++ b/src/gcc/testsuite/gfortran.dg/index_2.f90
+@@ -53,4 +53,3 @@
+ 
+ ! { dg-final { scan-tree-dump-times "if ..integer.kind=1.. _gfortran_string_index" 6 "original" } }
+ ! { dg-final { scan-tree-dump-times "if ..integer.kind=1.. _gfortran_string_scan" 6 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/inline_product_1.f90
++++ b/src/gcc/testsuite/gfortran.dg/inline_product_1.f90
+@@ -29,4 +29,3 @@ end
+ ! { dg-final { scan-tree-dump-times "struct array._integer\\(kind=4\\) atmp" 0 "original" } }
+ ! { dg-final { scan-tree-dump-times "struct array\[^\\n\]*atmp" 0 "original" } }
+ ! { dg-final { scan-tree-dump-times "_gfortran_product_" 0 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/inline_sum_1.f90
++++ b/src/gcc/testsuite/gfortran.dg/inline_sum_1.f90
+@@ -191,4 +191,3 @@ end
+ ! { dg-final { scan-tree-dump-times "struct array._integer\\(kind=4\\) atmp" 13 "original" } }
+ ! { dg-final { scan-tree-dump-times "struct array\[^\\n\]*atmp" 13 "original" } }
+ ! { dg-final { scan-tree-dump-times "_gfortran_sum_" 0 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/inline_transpose_1.f90
++++ b/src/gcc/testsuite/gfortran.dg/inline_transpose_1.f90
+@@ -234,5 +234,3 @@ end subroutine titi
+ ! { # Commented out as failing at -O0: dg-final { scan-tree-dump-times "_gfortran_abort" 37 "optimized" } }
+ !
+ ! cleanup
+-! { dg-final { cleanup-tree-dump "original" } }
+-! { dg-final { cleanup-tree-dump "optimized" } }
+--- a/src/gcc/testsuite/gfortran.dg/inquire_size.f90
++++ b/src/gcc/testsuite/gfortran.dg/inquire_size.f90
+@@ -4,7 +4,7 @@ integer :: i
+ character(30) :: aname = "noname"
+ logical :: is_named
+ 
+-open(25, file="testfile", status="replace", access="stream", form="unformatted")
++open(25, file="testfile_inquire_size", status="replace", access="stream", form="unformatted")
+ do i=1,100
+   write(25) i, "abcdefghijklmnopqrstuvwxyz"
+ enddo
+@@ -14,16 +14,16 @@ enddo
+ 
+ inquire(unit=25, named=is_named, name=aname, size=i)
+ if (.not.is_named) call abort
+-if (aname /= "testfile") call abort
++if (aname /= "testfile_inquire_size") call abort
+ if (i /= 3000) call abort
+ 
+-inquire(file="testfile", size=i)
++inquire(file="testfile_inquire_size", size=i)
+ if (.not.is_named) call abort
+-if (aname /= "testfile") call abort
++if (aname /= "testfile_inquire_size") call abort
+ if (i /= 3000) call abort
+ 
+ close(25, status="delete")
+-inquire(file="testfile", size=i)
++inquire(file="testfile_inquire_size", size=i)
+ if (i /= -1)  call abort
+ end
+ 
+--- a/src/gcc/testsuite/gfortran.dg/intent_optimize_1.f90
++++ b/src/gcc/testsuite/gfortran.dg/intent_optimize_1.f90
+@@ -21,4 +21,3 @@ if (y /= 5) call does_not_exist ()
+ end
+ 
+ ! { dg-final { scan-tree-dump-times "does_not_exist" 0 "optimized" } }
+-! { dg-final { cleanup-tree-dump "optimized" } }
+--- a/src/gcc/testsuite/gfortran.dg/internal_pack_11.f90
++++ b/src/gcc/testsuite/gfortran.dg/internal_pack_11.f90
+@@ -15,4 +15,3 @@
+   call foo (ot(0:time_steps)) ! Was an unnecessary temporary
+   end
+ ! { dg-final { scan-tree-dump-times "unpack" 0 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/internal_pack_12.f90
++++ b/src/gcc/testsuite/gfortran.dg/internal_pack_12.f90
+@@ -56,4 +56,3 @@ subroutine bar(x)
+   if (any (x(1:3) /= [1,3,5])) call abort ()
+ end subroutine bar
+ ! { dg-final { scan-tree-dump-times "unpack" 4 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/internal_pack_4.f90
++++ b/src/gcc/testsuite/gfortran.dg/internal_pack_4.f90
+@@ -28,4 +28,3 @@ END
+ 
+ ! { dg-final { scan-tree-dump-times "a != 0B \\? \\\(.*\\\) _gfortran_internal_pack" 1 "original" } }
+ ! { dg-final { scan-tree-dump-times "if \\(a != 0B &&" 1 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/internal_pack_5.f90
++++ b/src/gcc/testsuite/gfortran.dg/internal_pack_5.f90
+@@ -18,4 +18,3 @@ end program test
+ 
+ ! { dg-final { scan-tree-dump-times "_gfortran_internal_pack" 1 "original" } }
+ ! { dg-final { scan-tree-dump-times "_gfortran_internal_unpack" 0 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/internal_pack_6.f90
++++ b/src/gcc/testsuite/gfortran.dg/internal_pack_6.f90
+@@ -55,4 +55,3 @@ END SUBROUTINE S2
+  call s2
+ end
+ ! { dg-final { scan-tree-dump-times "_gfortran_internal_pack" 0 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/internal_pack_7.f90
++++ b/src/gcc/testsuite/gfortran.dg/internal_pack_7.f90
+@@ -31,4 +31,3 @@ CONTAINS
+   END FUNCTION S2
+ END MODULE M1
+ ! { dg-final { scan-tree-dump-times "pack" 0 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/internal_pack_9.f90
++++ b/src/gcc/testsuite/gfortran.dg/internal_pack_9.f90
+@@ -38,4 +38,3 @@ subroutine foobar
+   call foo(A(:,3:7:-1)) ! temporary(3) OK because of stride
+ end
+ ! { dg-final { scan-tree-dump-times "unpack" 3 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/intrinsic_optional_char_arg_1.f90
++++ b/src/gcc/testsuite/gfortran.dg/intrinsic_optional_char_arg_1.f90
+@@ -29,4 +29,3 @@ END PROGRAM main
+ ! { dg-final { scan-tree-dump "_eoshift\[0-9_\]+char \\(\[&a-zA-Z0-9._, \]+, 1, 0\\)" "original" } }
+ ! { dg-final { scan-tree-dump "_reshape\[0-9_\]+char \\(\[&a-zA-Z0-9._, \]+, 1, 0\\)" "original" } }
+ ! { dg-final { scan-tree-dump "_pack\[0-9_\]+char \\(\[&a-zA-Z0-9._, \]+, 1, 0\\)" "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/intrinsic_size_3.f90
++++ b/src/gcc/testsuite/gfortran.dg/intrinsic_size_3.f90
+@@ -23,4 +23,3 @@ program bug
+ end program bug
+ 
+ ! { dg-final { scan-tree-dump-times "iszs = \\(integer\\(kind=2\\)\\) MAX_EXPR <\\(D.\[0-9\]+->dim.0..ubound - D.\[0-9\]+->dim.0..lbound\\) \\+ 1, 0>;" 1 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/intrinsic_std_6.f90
++++ b/src/gcc/testsuite/gfortran.dg/intrinsic_std_6.f90
+@@ -38,4 +38,3 @@ END SUBROUTINE implicit_type
+ ! { dg-final { scan-tree-dump " abort " "original" } }
+ ! { dg-final { scan-tree-dump " asinh " "original" } }
+ ! { dg-final { scan-tree-dump " acosh " "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/ipcp-array-1.f90
++++ b/src/gcc/testsuite/gfortran.dg/ipcp-array-1.f90
+@@ -13,7 +13,5 @@ end
+ 
+ ! { dg-final { scan-ipa-dump "Creating a specialized node of foo" "cp" } }
+ ! { dg-final { scan-ipa-dump-times "Aggregate replacements\[^=\]*=\[^=\]*=\[^=\]*=\[^=\]*=\[^=\]*=\[^=\]*=\[^=\]*=\[^=\]*=" 2 "cp" } }
+-! { dg-final { cleanup-ipa-dump "cp" } }
+ ! { dg-final { scan-tree-dump-not "stride;" "optimized" } }
+ ! { dg-final { scan-tree-dump-not "lbound;" "optimized" } }
+-! { dg-final { cleanup-tree-dump "optimized" } }
+--- a/src/gcc/testsuite/gfortran.dg/ishft_4.f90
++++ b/src/gcc/testsuite/gfortran.dg/ishft_4.f90
+@@ -37,4 +37,3 @@ end program
+ !
+ ! { dg-final { scan-tree-dump-times "foo *\\\(\\\)" 5 "original" } }
+ ! { dg-final { scan-tree-dump-times "bar *\\\(\\\)" 5 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/iso_c_binding_param_2.f90
++++ b/src/gcc/testsuite/gfortran.dg/iso_c_binding_param_2.f90
+@@ -17,4 +17,3 @@ if (c_float128_complex >= 0 .and. c_float128_complex /= 16) call unreachable()
+ end
+ 
+ ! { dg-final { scan-tree-dump-times "unreachable" 0 "optimized" } }
+-! { dg-final { cleanup-tree-dump "optimized" } }
+--- a/src/gcc/testsuite/gfortran.dg/iso_fortran_env_5.f90
++++ b/src/gcc/testsuite/gfortran.dg/iso_fortran_env_5.f90
+@@ -23,5 +23,4 @@ if (STAT_LOCKED == STAT_UNLOCKED) call abort()
+ end
+ 
+ ! { dg-final { scan-tree-dump-times "abort" 0 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+ 
+--- a/src/gcc/testsuite/gfortran.dg/ldist-1.f90
++++ b/src/gcc/testsuite/gfortran.dg/ldist-1.f90
+@@ -33,4 +33,3 @@ end Subroutine PADEC
+ ! locality heuristic, this loop should not be split.
+ 
+ ! { dg-final { scan-tree-dump-not "distributed: split to" "ldist" } }
+-! { dg-final { cleanup-tree-dump "ldist" } }
+--- a/src/gcc/testsuite/gfortran.dg/ldist-pr45199.f
++++ b/src/gcc/testsuite/gfortran.dg/ldist-pr45199.f
+@@ -24,4 +24,3 @@
+ 
+ ! { dg-final { scan-tree-dump "distributed: split to 0 loops and 9 library calls" "ldist" } }
+ ! { dg-final { scan-tree-dump-times "generated memset zero" 9 "ldist" } }
+-! { dg-final { cleanup-tree-dump "ldist" } }
+--- a/src/gcc/testsuite/gfortran.dg/leadz_trailz_3.f90
++++ b/src/gcc/testsuite/gfortran.dg/leadz_trailz_3.f90
+@@ -27,4 +27,3 @@ end program
+ !   -- plus as many times as the function is called
+ !
+ ! { dg-final { scan-tree-dump-times "foo *\\\(\\\)" 7 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/matmul_9.f90
++++ b/src/gcc/testsuite/gfortran.dg/matmul_9.f90
+@@ -43,5 +43,4 @@ program name
+ end program name
+ 
+ ! { dg-final { scan-tree-dump-times "matmul" 0 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+ 
+--- a/src/gcc/testsuite/gfortran.dg/merge_init_expr_2.f90
++++ b/src/gcc/testsuite/gfortran.dg/merge_init_expr_2.f90
+@@ -55,4 +55,3 @@ end subroutine test
+ ! { dg-final { scan-tree-dump-times "check1 = 1275069467;" 1 "original" } }
+ ! { dg-final { scan-tree-dump-times "check2 = 1;" 1 "original" } }
+ ! { dg-final { scan-tree-dump-times "__builtin_memmove ..void .. &three, .void .. &one, 3.;" 1 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/missing_optional_dummy_4.f90
++++ b/src/gcc/testsuite/gfortran.dg/missing_optional_dummy_4.f90
+@@ -23,4 +23,3 @@ contains
+ end module krmod
+ 
+ ! { dg-final { scan-tree-dump " tm_doit \\(0B, 0\\);" "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/missing_optional_dummy_5.f90
++++ b/src/gcc/testsuite/gfortran.dg/missing_optional_dummy_5.f90
+@@ -24,4 +24,3 @@ contains
+ end module krmod
+ 
+ ! { dg-final { scan-tree-dump " tm_doit \\(&parm\.., 0B, 0\\);" "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/missing_optional_dummy_6.f90
++++ b/src/gcc/testsuite/gfortran.dg/missing_optional_dummy_6.f90
+@@ -57,4 +57,3 @@ end program test
+ ! { dg-final { scan-tree-dump-times "assumed_shape2 \\(as1" 0 "original" } }
+ ! { dg-final { scan-tree-dump-times "explicit_shape2 \\(as1" 0 "original" } }
+ 
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/move_alloc_4.f90
++++ b/src/gcc/testsuite/gfortran.dg/move_alloc_4.f90
+@@ -21,4 +21,3 @@ program testmv3
+ end program testmv3 
+ 
+ ! { dg-final { scan-tree-dump-times "__builtin_free" 9 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/namelist_66.f90
++++ b/src/gcc/testsuite/gfortran.dg/namelist_66.f90
+@@ -17,7 +17,7 @@ end type qptracer
+ type(qptracer) , dimension(3) :: qtracer
+ namelist/naml2/  qtracer
+ 
+-open (99, file='nml.dat', status="replace")
++open (99, file='nml_66.dat', status="replace")
+ write(99,*) "&naml1"
+ write(99,*) "   tracer(1)   = 'aa', .true."
+ write(99,*) "   tracer(2)   = 'bb', .true."
+--- a/src/gcc/testsuite/gfortran.dg/namelist_82.f90
++++ b/src/gcc/testsuite/gfortran.dg/namelist_82.f90
+@@ -10,7 +10,7 @@ namelist/naml1/  tracer
+ 
+ tracer(:) = ptracer('XXX', .false.)
+ 
+-open (99, file='nml.dat', status="replace")
++open (99, file='nml_82.dat', status="replace")
+ write(99,*) "&naml1"
+ !write(99,*) "   tracer(2)   = 'bb' , .true."
+ write(99,*) "   tracer(:)   = 'aa' , .true."
+--- a/src/gcc/testsuite/gfortran.dg/no_arg_check_2.f90
++++ b/src/gcc/testsuite/gfortran.dg/no_arg_check_2.f90
+@@ -150,4 +150,3 @@ end
+ ! { dg-final { scan-tree-dump-times "sub_array_assumed \\(\\(struct t1.0:. . restrict\\) array_class_t1_alloc._data.data\\);" 1 "original" } }
+ ! { dg-final { scan-tree-dump-times "sub_array_assumed \\(\\(struct t1.0:. .\\) array_class_t1_ptr._data.data\\);" 1 "original" } }
+ 
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/open_negative_unit_1.f90
++++ b/src/gcc/testsuite/gfortran.dg/open_negative_unit_1.f90
+@@ -9,7 +9,7 @@ program nutest
+     logical l
+     integer id, ios
+ 
+-    open(newunit=id, file="foo.txt", iostat=ios)
++    open(newunit=id, file="foo_open_negative_unit_1.txt", iostat=ios)
+     if (ios /= 0) call abort
+ 
+     open(id, file="bar.txt", iostat=ios)
+@@ -17,14 +17,14 @@ program nutest
+ 
+     close(id, status="delete")
+ 
+-    open(unit=10, file="foo.txt", status="old", iostat=ios)
++    open(unit=10, file="foo_open_negative_unit_1.txt", status="old", iostat=ios)
+     if (ios /= 0) call abort
+ 
+     close(10, status="delete")
+ 
+-    open(-10, file="foo.txt", iostat=ios)
++    open(-10, file="foo_open_negative_unit_1.txt", iostat=ios)
+     if (ios == 0) call abort
+ 
+-    inquire(file="foo.txt", exist=l)
++    inquire(file="foo_open_negative_unit_1.txt", exist=l)
+     if (l) call abort
+ end program nutest
+--- a/src/gcc/testsuite/gfortran.dg/open_new.f90
++++ b/src/gcc/testsuite/gfortran.dg/open_new.f90
+@@ -3,9 +3,9 @@
+ !            status="new" is an error
+ program main
+   nout = 10
+-  open(nout, file="foo.dat", status="replace")     ! make sure foo.dat exists
++  open(nout, file="foo_open_new.dat", status="replace")     ! make sure foo_open_new.dat exists
+   close(nout)
+-  open(nout, file="foo.dat", status="new",err=100)
++  open(nout, file="foo_open_new.dat", status="new",err=100)
+   call abort                 ! This should never happen
+-100 call unlink ("foo.dat")
++100 call unlink ("foo_open_new.dat")
+ end program main
+--- a/src/gcc/testsuite/gfortran.dg/parameter_array_element_1.f90
++++ b/src/gcc/testsuite/gfortran.dg/parameter_array_element_1.f90
+@@ -15,5 +15,4 @@
+ END
+ ! Scan for the 105 in the declaration real8 out_val[105];
+ ! { dg-final { scan-tree-dump-times "105" 1 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+ 
+--- a/src/gcc/testsuite/gfortran.dg/power_3.f90
++++ b/src/gcc/testsuite/gfortran.dg/power_3.f90
+@@ -35,4 +35,3 @@ program main
+ 
+ end program main
+ ! { dg-final { scan-tree-dump-times "_gfortran_pow_i4_i4" 4 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/power_4.f90
++++ b/src/gcc/testsuite/gfortran.dg/power_4.f90
+@@ -26,4 +26,3 @@ program main
+   if (any(d /= e)) call abort
+ end program main
+ ! { dg-final { scan-tree-dump-times "_gfortran_pow_i4_i4" 3 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/power_5.f90
++++ b/src/gcc/testsuite/gfortran.dg/power_5.f90
+@@ -33,4 +33,3 @@ program main
+ 
+ end program main
+ ! { dg-final { scan-tree-dump-times "_gfortran_pow_i4_i4" 0 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/power_6.f90
++++ b/src/gcc/testsuite/gfortran.dg/power_6.f90
+@@ -12,4 +12,3 @@ end
+ ! { dg-final { scan-tree-dump-not "__builtin_powif"  "optimized" } }
+ ! { dg-final { scan-tree-dump "powi_cond_\[0-9\] = k_\[0-9\]\\(D\\) & 1;"  "optimized" } }
+ ! { dg-final { scan-tree-dump "powi_\[0-9\] = powi_cond_\[0-9\] \\? -1.0e\\+0 : 1.0e\\+0;"  "optimized" } }
+-! { dg-final { cleanup-tree-dump "optimized" } }
+--- a/src/gcc/testsuite/gfortran.dg/pr26246_1.f90
++++ b/src/gcc/testsuite/gfortran.dg/pr26246_1.f90
+@@ -15,4 +15,3 @@ module pr26246_1
+ end module pr26246_1
+ 
+ ! { dg-final { scan-tree-dump-times "static int" 0 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/pr26246_2.f90
++++ b/src/gcc/testsuite/gfortran.dg/pr26246_2.f90
+@@ -10,4 +10,3 @@ subroutine foo(string, n)
+ end subroutine foo
+ 
+ ! { dg-final { scan-tree-dump-times "static int" 0 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/pr32921.f
++++ b/src/gcc/testsuite/gfortran.dg/pr32921.f
+@@ -46,4 +46,3 @@
+       RETURN
+       END
+ ! { dg-final { scan-tree-dump-times "stride" 4 "lim1" } }
+-! { dg-final { cleanup-tree-dump "lim1" } }
+--- a/src/gcc/testsuite/gfortran.dg/pr34163.f90
++++ b/src/gcc/testsuite/gfortran.dg/pr34163.f90
+@@ -13,4 +13,3 @@ do i = i1+1 , i2
+ enddo
+ end subroutine trisolve2
+ ! { dg-final { scan-tree-dump "Executing predictive commoning" "pcom" } }
+-! { dg-final { cleanup-tree-dump "pcom" } }
+--- a/src/gcc/testsuite/gfortran.dg/pr38868.f
++++ b/src/gcc/testsuite/gfortran.dg/pr38868.f
+@@ -14,4 +14,3 @@
+       END
+ 
+ ! { dg-final { scan-rtl-dump-times "line\\\+80" 0 "expand" } }
+-! { dg-final { cleanup-rtl-dump "expand" } } */
+--- a/src/gcc/testsuite/gfortran.dg/pr42108.f90
++++ b/src/gcc/testsuite/gfortran.dg/pr42108.f90
+@@ -25,5 +25,3 @@ end subroutine eval
+ ! { dg-final { scan-tree-dump "in all uses of countm1\[^\n\]* / " "pre" } }
+ ! There should be only one load from n left
+ ! { dg-final { scan-tree-dump-times "\\*n_" 1 "fre1" } }
+-! { dg-final { cleanup-tree-dump "fre1" } }
+-! { dg-final { cleanup-tree-dump "pre" } }
+--- a/src/gcc/testsuite/gfortran.dg/pr43984.f90
++++ b/src/gcc/testsuite/gfortran.dg/pr43984.f90
+@@ -53,4 +53,3 @@ end
+ ! There should be three loads from iyz.data, not four.
+ 
+ ! { dg-final { scan-tree-dump-times "= iyz.data" 3 "pre" } }
+-! { dg-final { cleanup-tree-dump "pre" } }
+--- a/src/gcc/testsuite/gfortran.dg/pr45636.f90
++++ b/src/gcc/testsuite/gfortran.dg/pr45636.f90
+@@ -13,4 +13,3 @@ end program main
+ ! This test will fail on targets which prefer memcpy/memset over
+ ! move_by_pieces/store_by_pieces.
+ ! { dg-final { scan-tree-dump-times "memset" 0 "forwprop2" { xfail { { hppa*-*-* && { ! lp64 } } || { { mips*-*-* && { ! nomips16 } } || { aarch64*-*-* } } } } } }
+-! { dg-final { cleanup-tree-dump "forwprop2" } }
+--- a/src/gcc/testsuite/gfortran.dg/pr48636-2.f90
++++ b/src/gcc/testsuite/gfortran.dg/pr48636-2.f90
+@@ -35,4 +35,3 @@ end program main
+ 
+ ! { dg-final { scan-ipa-dump "Creating a specialized node of \[^\n\r\]*bar/\[0-9\]*\\." "cp" } }
+ ! { dg-final { scan-ipa-dump-times "Aggregate replacements\[^=\]*=\[^=\]*=\[^=\]*=\[^=\]*=\[^=\]*=\[^=\]*=\[^=\]*=\[^=\]*=\[^=\]*=" 2 "cp" } }
+-! { dg-final { cleanup-ipa-dump "cp" } }
+--- a/src/gcc/testsuite/gfortran.dg/pr48636.f90
++++ b/src/gcc/testsuite/gfortran.dg/pr48636.f90
+@@ -36,4 +36,3 @@ end program main
+ ! { dg-final { scan-ipa-dump "bar\[^\\n\]*inline copy in MAIN" "inline" } }
+ ! { dg-final { scan-ipa-dump-times "phi predicate:" 5 "inline" } }
+ ! { dg-final { scan-ipa-dump "inline hints: loop_iterations" "inline" } }
+-! { dg-final { cleanup-ipa-dump "inline" } }
+--- a/src/gcc/testsuite/gfortran.dg/pr52835.f90
++++ b/src/gcc/testsuite/gfortran.dg/pr52835.f90
+@@ -13,4 +13,3 @@ subroutine foo (x, y, z, n)
+ end subroutine
+ 
+ ! { dg-final { scan-tree-dump "bar\[ _\]" "optimized" } }
+-! { dg-final { cleanup-tree-dump "optimized" } }
+--- a/src/gcc/testsuite/gfortran.dg/pr53787.f90
++++ b/src/gcc/testsuite/gfortran.dg/pr53787.f90
+@@ -18,4 +18,3 @@ end subroutine init
+ 
+ ! { dg-final { scan-ipa-dump "Creating a specialized node of init" "cp" } }
+ ! { dg-final { scan-ipa-dump-times "Aggregate replacements" 2 "cp" } }
+-! { dg-final { cleanup-ipa-dump "cp" } }
+--- a/src/gcc/testsuite/gfortran.dg/pr57987.f90
++++ b/src/gcc/testsuite/gfortran.dg/pr57987.f90
+@@ -21,4 +21,3 @@ contains
+ end program test
+ 
+ ! { dg-final { scan-ipa-dump-not "redefined extern inline functions are not considered for inlining" "inline" } }
+-! { dg-final { cleanup-ipa-dump "inline" } }
+--- a/src/gcc/testsuite/gfortran.dg/proc_decl_23.f90
++++ b/src/gcc/testsuite/gfortran.dg/proc_decl_23.f90
+@@ -40,4 +40,3 @@ end module m_string
+   print *, t%char3 (["g","h","i"])
+   print *, char1 (["j","k","l"])
+ end
+-! { dg-final { cleanup-tree-dump "m_string" } }
+--- a/src/gcc/testsuite/gfortran.dg/promotion_2.f90
++++ b/src/gcc/testsuite/gfortran.dg/promotion_2.f90
+@@ -13,4 +13,3 @@ end program test
+ 
+ ! { dg-final { scan-tree-dump-times "sgemm_" 0 "original" } }
+ ! { dg-final { scan-tree-dump-times "dgemm_" 1 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/rank_4.f90
++++ b/src/gcc/testsuite/gfortran.dg/rank_4.f90
+@@ -16,4 +16,3 @@ program test_rank
+ end program test_rank
+ 
+ ! { dg-final { scan-tree-dump-times "not_existing" 0 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/realloc_on_assign_18.f90
++++ b/src/gcc/testsuite/gfortran.dg/realloc_on_assign_18.f90
+@@ -17,4 +17,3 @@ end
+ 
+ ! { dg-final { scan-tree-dump "x = \\(struct t .\\) __builtin_malloc \\(1\\);" "original" } }
+ ! { dg-final { scan-tree-dump "y.data = \\(void . restrict\\) __builtin_malloc \\(1\\);" "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/realloc_on_assign_19.f90
++++ b/src/gcc/testsuite/gfortran.dg/realloc_on_assign_19.f90
+@@ -18,4 +18,3 @@ contains
+   end subroutine bar
+ end module foo
+ ! { dg-final { scan-tree-dump-times "alloc" 0 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/reassoc_1.f90
++++ b/src/gcc/testsuite/gfortran.dg/reassoc_1.f90
+@@ -10,4 +10,3 @@ end
+ ! We need an explicit +5 and -5, and an intermediate ((bla)) expression
+ ! (the reassoc barrier).  Make use of "." matching lineends.
+ ! { dg-final { scan-tree-dump "\\\+ 5.*\\\)\\\).* - 5" "optimized" } }
+-! { dg-final { cleanup-tree-dump "optimized" } }
+--- a/src/gcc/testsuite/gfortran.dg/reassoc_10.f
++++ b/src/gcc/testsuite/gfortran.dg/reassoc_10.f
+@@ -14,4 +14,3 @@
+ ! and power expansion.
+ 
+ ! { dg-final { scan-tree-dump-times " \\\* " 5 "optimized" } }
+-! { dg-final { cleanup-tree-dump "optimized" } }
+--- a/src/gcc/testsuite/gfortran.dg/reassoc_2.f90
++++ b/src/gcc/testsuite/gfortran.dg/reassoc_2.f90
+@@ -13,4 +13,3 @@ function test(a)
+ end
+ 
+ ! { dg-final { scan-tree-dump "- 5" "optimized" } }
+-! { dg-final { cleanup-tree-dump "optimized" } }
+--- a/src/gcc/testsuite/gfortran.dg/reassoc_3.f90
++++ b/src/gcc/testsuite/gfortran.dg/reassoc_3.f90
+@@ -16,5 +16,3 @@ end
+ ! { dg-final { scan-tree-dump "b = 5" "original" } }
+ ! { dg-final { scan-tree-dump "c_. = .a" "optimized" } }
+ ! { dg-final { scan-tree-dump "return c_.;" "optimized" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+-! { dg-final { cleanup-tree-dump "optimized" } }
+--- a/src/gcc/testsuite/gfortran.dg/reassoc_4.f
++++ b/src/gcc/testsuite/gfortran.dg/reassoc_4.f
+@@ -41,4 +41,3 @@
+ ! unrolled loops.
+ 
+ ! { dg-final { scan-tree-dump-times "\[0-9\] \\\* " 22 "reassoc1" } }
+-! { dg-final { cleanup-tree-dump "reassoc1" } }
+--- a/src/gcc/testsuite/gfortran.dg/reassoc_5.f90
++++ b/src/gcc/testsuite/gfortran.dg/reassoc_5.f90
+@@ -16,4 +16,3 @@ end
+ ! We need an explicit +5 and -5, and an intermediate ((bla)) expression
+ ! (the reassoc barrier).  Make use of "." matching lineends.
+ ! { dg-final { scan-tree-dump-times "\\\+ 5.*\\\)\\\).* - 5" 0 "optimized" } }
+-! { dg-final { cleanup-tree-dump "optimized" } }
+--- a/src/gcc/testsuite/gfortran.dg/reassoc_6.f
++++ b/src/gcc/testsuite/gfortran.dg/reassoc_6.f
+@@ -19,4 +19,3 @@
+ ! While we understand to combine x + ~x IVOPTs now messes things
+ ! up by hiding that operation in casts to unsigned.
+ ! { dg-final { scan-tree-dump-not "~" "optimized" { xfail *-*-* } } }
+-! { dg-final { cleanup-tree-dump "optimized" } }
+--- a/src/gcc/testsuite/gfortran.dg/reassoc_7.f
++++ b/src/gcc/testsuite/gfortran.dg/reassoc_7.f
+@@ -13,4 +13,3 @@
+ ! There should be two multiplies following un-distribution.
+ 
+ ! { dg-final { scan-tree-dump-times " \\\* " 2 "optimized" } }
+-! { dg-final { cleanup-tree-dump "optimized" } }
+--- a/src/gcc/testsuite/gfortran.dg/reassoc_8.f
++++ b/src/gcc/testsuite/gfortran.dg/reassoc_8.f
+@@ -14,4 +14,3 @@
+ ! and power expansion.
+ 
+ ! { dg-final { scan-tree-dump-times " \\\* " 3 "optimized" } }
+-! { dg-final { cleanup-tree-dump "optimized" } }
+--- a/src/gcc/testsuite/gfortran.dg/reassoc_9.f
++++ b/src/gcc/testsuite/gfortran.dg/reassoc_9.f
+@@ -14,4 +14,3 @@
+ ! and power expansion.
+ 
+ ! { dg-final { scan-tree-dump-times " \\\* " 3 "optimized" } }
+-! { dg-final { cleanup-tree-dump "optimized" } }
+--- a/src/gcc/testsuite/gfortran.dg/reshape_empty_1.f03
++++ b/src/gcc/testsuite/gfortran.dg/reshape_empty_1.f03
+@@ -17,4 +17,3 @@ if (K /= i) call abort
+ end
+ 
+ ! { dg-final { scan-tree-dump-times "\\\{1, 2, 2, 2, 1, 2, 2, 2, 1\\\}" 2 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/scan_2.f90
++++ b/src/gcc/testsuite/gfortran.dg/scan_2.f90
+@@ -32,4 +32,3 @@ end program p1
+ 
+ ! { dg-final { scan-tree-dump-times "iscan = _gfortran_string_scan \\(2," 1 "original" } }
+ ! { dg-final { scan-tree-dump-times "iverify = _gfortran_string_verify \\(2," 1 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/select_char_2.f90
++++ b/src/gcc/testsuite/gfortran.dg/select_char_2.f90
+@@ -42,4 +42,3 @@ contains
+ end
+ 
+ ! { dg-final { scan-tree-dump-not "_gfortran_select_string" "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/shape_7.f90
++++ b/src/gcc/testsuite/gfortran.dg/shape_7.f90
+@@ -28,5 +28,4 @@ Program Main
+ End Program Main
+ 
+ ! { dg-final { scan-tree-dump-times "abort" 0 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+ 
+--- a/src/gcc/testsuite/gfortran.dg/single_char_string.f90
++++ b/src/gcc/testsuite/gfortran.dg/single_char_string.f90
+@@ -33,4 +33,3 @@ end
+ ! { dg-final { scan-tree-dump-times "_gfortran_compare_string" 0 "original" } }
+ ! { dg-final { scan-tree-dump-times "_gfortran_copy_string" 0 "original" } }
+ 
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/size_kind_2.f90
++++ b/src/gcc/testsuite/gfortran.dg/size_kind_2.f90
+@@ -14,4 +14,3 @@ end
+ ! { dg-final { scan-tree-dump "static integer.kind=8. A..\\\[2\\\] = \\\{2147483650, 2\\\};" "original" } }
+ ! { dg-final { scan-tree-dump "var2 = 4294967300;" "original" } }
+ ! { dg-final { scan-tree-dump "var3 = 2147483650;" "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/sizeof_3.f90
++++ b/src/gcc/testsuite/gfortran.dg/sizeof_3.f90
+@@ -42,4 +42,3 @@ end
+ ! { dg-final { scan-tree-dump-times "m2test = 1;" 1 "original" } }
+ ! { dg-final { scan-tree-dump-times "iii = 100;" 1 "original" } }
+ ! { dg-final { scan-tree-dump-times "jjj = 160;" 1 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/spread_size_limit.f90
++++ b/src/gcc/testsuite/gfortran.dg/spread_size_limit.f90
+@@ -11,5 +11,4 @@ ZLON_MASK(:,:)= SPREAD( (/ (JLON , JLON=1,720) /) , DIM=2, NCOPIES=360 )
+ print *, zlon_mask(100,100)
+ END
+ ! { dg-final { scan-tree-dump-times "_gfortran_spread" 1 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+ 
+--- a/src/gcc/testsuite/gfortran.dg/stat_1.f90
++++ b/src/gcc/testsuite/gfortran.dg/stat_1.f90
+@@ -1,7 +1,7 @@
+ ! { dg-do run }
+ ! { dg-skip-if "" { *-*-mingw* spu-*-* } { "*" } { "" } }
+ ! { dg-options "-std=gnu" }
+-  character(len=*), parameter :: f = "testfile"
++  character(len=*), parameter :: f = "testfile_stat_1"
+   integer :: s1(13), r1, s2(13), r2, s3(13), r3, d(13), rd
+   
+   open (10,file=f)
+--- a/src/gcc/testsuite/gfortran.dg/stat_2.f90
++++ b/src/gcc/testsuite/gfortran.dg/stat_2.f90
+@@ -1,7 +1,7 @@
+ ! { dg-do run }
+ ! { dg-skip-if "" { *-*-mingw* spu-*-* } { "*" } { "" } }
+ ! { dg-options "-std=gnu" }
+-  character(len=*), parameter :: f = "testfile"
++  character(len=*), parameter :: f = "testfile_stat_2"
+   integer :: s1(13), r1, s2(13), r2, s3(13), r3, d(13), rd
+   
+   open (10,file=f)
+--- a/src/gcc/testsuite/gfortran.dg/storage_size_4.f90
++++ b/src/gcc/testsuite/gfortran.dg/storage_size_4.f90
+@@ -20,4 +20,3 @@ subroutine S ( A )
+ end
+ 
+ ! { dg-final { scan-tree-dump-not "abort" "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/storage_size_5.f90
++++ b/src/gcc/testsuite/gfortran.dg/storage_size_5.f90
+@@ -41,4 +41,3 @@ end subroutine test2
+ 
+ ! { dg-final { scan-tree-dump-times "k1 = \\(integer\\(kind=1\\)\\)" 1 "original" } }
+ ! { dg-final { scan-tree-dump-times "k2 = \\(integer\\(kind=2\\)\\)" 1 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/streamio_10.f90
++++ b/src/gcc/testsuite/gfortran.dg/streamio_10.f90
+@@ -8,7 +8,7 @@ program stream_io_10
+   integer(kind=8) :: thepos
+   a = (/ 1, 2, 3, 4 /)
+   b = a
+-  open(10, file="teststream", access="stream")
++  open(10, file="teststream_streamio_10", access="stream")
+   write(10) a
+   inquire(10, pos=thepos)
+   if (thepos.ne.17) call abort()
+--- a/src/gcc/testsuite/gfortran.dg/streamio_12.f90
++++ b/src/gcc/testsuite/gfortran.dg/streamio_12.f90
+@@ -6,7 +6,7 @@ program streamtest
+   character(1)   :: tchar
+   integer        :: i,j,k
+   real(kind=4), dimension(100,100) :: anarray
+-  open(10, file="teststream", access="stream", form="unformatted")
++  open(10, file="teststream_streamio_12", access="stream", form="unformatted")
+   anarray = 3.14159
+   write(10) anarray
+   write(10, pos=1) ! This is a way to position an unformatted file
+--- a/src/gcc/testsuite/gfortran.dg/streamio_15.f90
++++ b/src/gcc/testsuite/gfortran.dg/streamio_15.f90
+@@ -13,7 +13,7 @@ program main
+   if (newline_length < 1 .or. newline_length > 2) call abort
+   close(20)
+ 
+-  open(20,file="foo.txt",form="formatted",access="stream")
++  open(20,file="foo_streamio_15.txt",form="formatted",access="stream")
+   write(20,'(A)') '123456'
+   write(20,'(A)') 'abcdef'
+   write(20,'(A)') 'qwerty'
+--- a/src/gcc/testsuite/gfortran.dg/streamio_4.f90
++++ b/src/gcc/testsuite/gfortran.dg/streamio_4.f90
+@@ -9,7 +9,7 @@ program streamtest
+   integer        :: i,j,k
+   integer, parameter :: lines = 5231
+    
+-  open(10, file="teststream", access="stream", form="formatted")
++  open(10, file="teststream_streamio_4", access="stream", form="formatted")
+   
+   do i=1,lines
+     do j=0,9
+@@ -19,7 +19,7 @@ program streamtest
+   
+   close(10)
+   
+-  open(10, file="teststream", access="stream",&
++  open(10, file="teststream_streamio_4", access="stream",&
+   &form="formatted", position="append")
+   do i=1,lines
+     do j=0,9
+--- a/src/gcc/testsuite/gfortran.dg/streamio_5.f90
++++ b/src/gcc/testsuite/gfortran.dg/streamio_5.f90
+@@ -7,7 +7,7 @@ program streamtest5
+   character(1)   :: tchar
+   integer        :: i,j,k
+    
+-  open(10, file="teststream", access="stream", form="unformatted")
++  open(10, file="teststream_streamio_5", access="stream", form="unformatted")
+   
+   do i=1,1229
+     do j=0,9
+@@ -18,7 +18,7 @@ program streamtest5
+   
+   close(10)
+   
+-  open(10, file="teststream", access="stream", form="unformatted")
++  open(10, file="teststream_streamio_5", access="stream", form="unformatted")
+   
+   do i=1,1229
+     do j=0,9
+--- a/src/gcc/testsuite/gfortran.dg/streamio_6.f90
++++ b/src/gcc/testsuite/gfortran.dg/streamio_6.f90
+@@ -15,7 +15,7 @@ program streamio_6
+   &    72, 81, 59, 24, 37, 43, 21, 54, 68, 31, 19, 79, 63, 41,&
+   &    42, 12, 10, 62, 43, 9, 30, 9, 54, 35, 4, 5, 55, 3, 94 /
+ 
+-  open(unit=15,file="teststream",access="stream",form="unformatted")
++  open(unit=15,file="teststream_streamio_6",access="stream",form="unformatted")
+   do i=1,100
+     k = a(i)
+     write(unit=15, pos=k) achar(k)
+--- a/src/gcc/testsuite/gfortran.dg/streamio_7.f90
++++ b/src/gcc/testsuite/gfortran.dg/streamio_7.f90
+@@ -7,7 +7,7 @@ program streamtest
+   character(1)   :: tchar
+   integer        :: i,j,k
+   real(kind=4), dimension(100,100) :: anarray
+-  open(10, file="teststream", access="stream", form="unformatted")
++  open(10, file="teststream_streamio_7", access="stream", form="unformatted")
+   anarray = 3.14159
+   write(10) anarray
+   anarray = 0.0
+--- a/src/gcc/testsuite/gfortran.dg/string_assign_1.f90
++++ b/src/gcc/testsuite/gfortran.dg/string_assign_1.f90
+@@ -8,4 +8,3 @@ program main
+   print *,c
+ end program main
+ ! { dg-final { scan-tree-dump-times "memcpy" 0 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/string_compare_4.f90
++++ b/src/gcc/testsuite/gfortran.dg/string_compare_4.f90
+@@ -20,4 +20,3 @@ contains
+   end subroutine foo
+ end program main
+ ! { dg-final { scan-tree-dump-times "_gfortran_string_len_trim" 4 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/string_length_2.f90
++++ b/src/gcc/testsuite/gfortran.dg/string_length_2.f90
+@@ -29,4 +29,3 @@ program main
+   if (len(c(  (i-2)*(i-3)     :   (i-3)*(i-2)    )) /= 1)       call abort ! Case 18
+ end program main
+ ! { dg-final { scan-tree-dump-times "_abort" 0 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/structure_constructor_11.f90
++++ b/src/gcc/testsuite/gfortran.dg/structure_constructor_11.f90
+@@ -93,4 +93,3 @@ end program ala
+ ! { dg-final { scan-tree-dump-times "this->_data->a.cleanup = \\*cleanup;" 1 "original" } }
+ ! { dg-final { scan-tree-dump-times "ext_ptr.\[0-9\]+.init = this->_data->a.init;" 1 "original" } }
+ ! { dg-final { scan-tree-dump-times "ext_ptr.\[0-9\]+.cleanup = this->_data->a.cleanup;" 1 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/transfer_intrinsic_1.f90
++++ b/src/gcc/testsuite/gfortran.dg/transfer_intrinsic_1.f90
+@@ -15,4 +15,3 @@ subroutine BytesToString(bytes, string)
+     string = transfer(bytes, string)
+   end subroutine
+ ! { dg-final { scan-tree-dump-times "MIN_EXPR" 1 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/transfer_intrinsic_6.f90
++++ b/src/gcc/testsuite/gfortran.dg/transfer_intrinsic_6.f90
+@@ -17,4 +17,3 @@
+ end
+ 
+ ! { dg-final { scan-tree-dump-times "__builtin_free" 1 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/transfer_resolve_3.f90
++++ b/src/gcc/testsuite/gfortran.dg/transfer_resolve_3.f90
+@@ -16,5 +16,4 @@ intg = transfer (para%ptr, intg)
+ end
+ 
+ ! { dg-final { scan-tree-dump-times "intg = 0;" 2 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+ 
+--- a/src/gcc/testsuite/gfortran.dg/transpose_optimization_1.f90
++++ b/src/gcc/testsuite/gfortran.dg/transpose_optimization_1.f90
+@@ -103,4 +103,3 @@ contains
+ end module foo
+ 
+ ! { dg-final { scan-tree-dump-times "struct\[^\\n\]*atmp" 4 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/transpose_optimization_2.f90
++++ b/src/gcc/testsuite/gfortran.dg/transpose_optimization_2.f90
+@@ -62,4 +62,3 @@ end
+ !
+ ! { dg-final { scan-tree-dump-times "parm" 66 "original" } }
+ ! { dg-final { scan-tree-dump-times "atmp" 12 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/trim_optimize_1.f90
++++ b/src/gcc/testsuite/gfortran.dg/trim_optimize_1.f90
+@@ -13,4 +13,3 @@ end program main
+ 
+ ! { dg-final { scan-tree-dump-times "memmove" 3 "original" } }
+ ! { dg-final { scan-tree-dump-times "string_trim" 0 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/trim_optimize_2.f90
++++ b/src/gcc/testsuite/gfortran.dg/trim_optimize_2.f90
+@@ -34,4 +34,3 @@ end program main
+ 
+ ! { dg-final { scan-tree-dump-times "memmove" 6 "original" } }
+ ! { dg-final { scan-tree-dump-times "string_trim" 0 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/trim_optimize_3.f90
++++ b/src/gcc/testsuite/gfortran.dg/trim_optimize_3.f90
+@@ -13,4 +13,3 @@ program main
+   if (b4 /= 4_'bcdx') call abort
+ end
+ ! { dg-final { scan-tree-dump-times "string_len_trim" 2 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/trim_optimize_5.f90
++++ b/src/gcc/testsuite/gfortran.dg/trim_optimize_5.f90
+@@ -17,4 +17,3 @@ program main
+   if (line /= 'abY       ') call abort
+ end program main
+ ! { dg-final { scan-tree-dump-times "string_len_trim" 2 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/trim_optimize_7.f90
++++ b/src/gcc/testsuite/gfortran.dg/trim_optimize_7.f90
+@@ -16,4 +16,3 @@ program main
+   if (d /= 'a b a c ') call abort
+ end
+ ! { dg-final { scan-tree-dump-times "string_len_trim" 1 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/trim_optimize_8.f90
++++ b/src/gcc/testsuite/gfortran.dg/trim_optimize_8.f90
+@@ -11,4 +11,3 @@ program main
+   if (trim (trim(a) // trim(b)) /= 'ab ') call abort
+ end
+ ! { dg-final { scan-tree-dump-times "string_len_trim" 1 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/typebound_assignment_5.f03
++++ b/src/gcc/testsuite/gfortran.dg/typebound_assignment_5.f03
+@@ -41,4 +41,3 @@
+ 
+ ! { dg-final { scan-tree-dump-not "_gfortran_internal_pack" "original" } }
+ ! { dg-final { scan-tree-dump-not "_gfortran_internal_unpack" "original" } }
+-! { dg-final { cleanup-tree-dump "original"} }
+--- a/src/gcc/testsuite/gfortran.dg/typebound_assignment_6.f03
++++ b/src/gcc/testsuite/gfortran.dg/typebound_assignment_6.f03
+@@ -39,5 +39,4 @@
+ 
+ ! { dg-final { scan-tree-dump-times "_gfortran_internal_pack" 1 "original" } }
+ ! { dg-final { scan-tree-dump-times "_gfortran_internal_unpack" 1 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+ 
+--- a/src/gcc/testsuite/gfortran.dg/typebound_call_21.f03
++++ b/src/gcc/testsuite/gfortran.dg/typebound_call_21.f03
+@@ -34,4 +34,3 @@ end module m
+ end
+ 
+ ! { dg-final { scan-tree-dump-times "_vptr->" 0 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/typebound_call_22.f03
++++ b/src/gcc/testsuite/gfortran.dg/typebound_call_22.f03
+@@ -27,4 +27,3 @@ program test
+ end program
+ 
+ ! { dg-final { scan-tree-dump-times "base \\(\\);" 1 "optimized" } }
+-! { dg-final { cleanup-tree-dump "optimized" } }
+--- a/src/gcc/testsuite/gfortran.dg/typebound_operator_14.f90
++++ b/src/gcc/testsuite/gfortran.dg/typebound_operator_14.f90
+@@ -39,4 +39,3 @@ contains
+   end function gt_cmp_int
+ end module
+ 
+-! { dg-final { cleanup-tree-dump "m_sort test" } }
+--- a/src/gcc/testsuite/gfortran.dg/typebound_proc_27.f03
++++ b/src/gcc/testsuite/gfortran.dg/typebound_proc_27.f03
+@@ -88,5 +88,4 @@ end program prog
+ ! take the realloc path after the first assignment, so don't count as a malloc.
+ ! { dg-final { scan-tree-dump-times "__builtin_free" 7 "original" } }
+ !
+-! { dg-final { cleanup-tree-dump "original" } }
+ 
+--- a/src/gcc/testsuite/gfortran.dg/unf_read_corrupted_1.f90
++++ b/src/gcc/testsuite/gfortran.dg/unf_read_corrupted_1.f90
+@@ -10,13 +10,13 @@ program main
+   ! Write out a truncated unformatted sequential file by
+   ! using unformatted stream.
+ 
+-  open (10, form="unformatted", access="stream", file="foo.dat", &
++  open (10, form="unformatted", access="stream", file="foo_unf_read_corrupted_1.dat", &
+   status="unknown")
+   write (10) 16_4, 1_4
+   close (10, status="keep")
+ 
+   ! Try to read
+-  open (10, file="foo.dat", form="unformatted", access="sequential")
++  open (10, file="foo_unf_read_corrupted_1.dat", form="unformatted", access="sequential")
+   i1 = 0
+   i2 = 0
+   read (10, iostat=ios, iomsg=msg) i1, i2
+--- a/src/gcc/testsuite/gfortran.dg/unlimited_polymorphic_11.f90
++++ b/src/gcc/testsuite/gfortran.dg/unlimited_polymorphic_11.f90
+@@ -11,4 +11,3 @@
+ end
+ 
+ ! { dg-final { scan-tree-dump "\\(struct __vtype__STAR \\*\\) c._vptr = \\(struct __vtype__STAR \\*\\) a._vptr;" "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/unlimited_polymorphic_8.f90
++++ b/src/gcc/testsuite/gfortran.dg/unlimited_polymorphic_8.f90
+@@ -17,4 +17,3 @@ end
+ 
+ ! { dg-final { scan-tree-dump-times "foo.0.x._data = 0B;" 1 "original" } }
+ ! { dg-final { scan-tree-dump-times "foo.0.x._vptr = .* &__vtab__STAR;" 1 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/use_rename_6.f90
++++ b/src/gcc/testsuite/gfortran.dg/use_rename_6.f90
+@@ -37,4 +37,3 @@ subroutine four()
+ end subroutine four
+ 
+ ! { dg-final { scan-tree-dump-times "shall_not_be_there" 0 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/vect/O3-pr36119.f90
++++ b/src/gcc/testsuite/gfortran.dg/vect/O3-pr36119.f90
+@@ -25,4 +25,3 @@ SUBROUTINE check_dnucint_ana (dcore)
+   END IF
+ END SUBROUTINE check_dnucint_ana
+ 
+-! { dg-final { cleanup-tree-dump "vect" } } 
+--- a/src/gcc/testsuite/gfortran.dg/vect/O3-pr39595.f
++++ b/src/gcc/testsuite/gfortran.dg/vect/O3-pr39595.f
+@@ -13,5 +13,4 @@
+       end do
+       end
+ 
+-! { dg-final { cleanup-tree-dump "vect" } }
+ 
+--- a/src/gcc/testsuite/gfortran.dg/vect/O3-pr49957.f
++++ b/src/gcc/testsuite/gfortran.dg/vect/O3-pr49957.f
+@@ -14,4 +14,3 @@
+       return
+       end
+ ! { dg-final { scan-tree-dump "vectorized 1 loops" "vect" { xfail vect_no_align } } }
+-! { dg-final { cleanup-tree-dump "vect" } }
+--- a/src/gcc/testsuite/gfortran.dg/vect/Ofast-pr50414.f90
++++ b/src/gcc/testsuite/gfortran.dg/vect/Ofast-pr50414.f90
+@@ -8,4 +8,3 @@
+       CALL PROUND(YMA)
+       END
+ 
+-! { dg-final { cleanup-tree-dump "vect" } }
+--- a/src/gcc/testsuite/gfortran.dg/vect/cost-model-pr34445.f
++++ b/src/gcc/testsuite/gfortran.dg/vect/cost-model-pr34445.f
+@@ -6,4 +6,3 @@ c { dg-do compile }
+         Alpha = 1.2
+       End Do
+       End
+-c { dg-final { cleanup-tree-dump "vect" } }
+--- a/src/gcc/testsuite/gfortran.dg/vect/cost-model-pr34445a.f
++++ b/src/gcc/testsuite/gfortran.dg/vect/cost-model-pr34445a.f
+@@ -26,4 +26,3 @@ c
+   130 continue
+       return
+       end
+-c { dg-final { cleanup-tree-dump "vect" } }
+--- a/src/gcc/testsuite/gfortran.dg/vect/fast-math-mgrid-resid.f
++++ b/src/gcc/testsuite/gfortran.dg/vect/fast-math-mgrid-resid.f
+@@ -43,5 +43,3 @@ C
+ ! { dg-final { scan-tree-dump-times "Executing predictive commoning without unrolling" 1 "pcom" { target lp64 } } }
+ ! { dg-final { scan-tree-dump-times "Executing predictive commoning without unrolling" 2 "pcom" { target ia32 } } }
+ ! { dg-final { scan-tree-dump-times "Predictive commoning failed: no suitable chains" 0 "pcom" } }
+-! { dg-final { cleanup-tree-dump "vect" } }
+-! { dg-final { cleanup-tree-dump "pcom" } }
+--- a/src/gcc/testsuite/gfortran.dg/vect/fast-math-pr33299.f90
++++ b/src/gcc/testsuite/gfortran.dg/vect/fast-math-pr33299.f90
+@@ -14,4 +14,3 @@ FUNCTION f( x, dist ) RESULT(s)
+   IF( x < 0 ) s = -s
+ END FUNCTION f
+ 
+-! { dg-final { cleanup-tree-dump "vect" } }
+--- a/src/gcc/testsuite/gfortran.dg/vect/fast-math-pr37021.f90
++++ b/src/gcc/testsuite/gfortran.dg/vect/fast-math-pr37021.f90
+@@ -15,4 +15,3 @@ subroutine to_product_of(self,a,b,a1,a2)
+ end subroutine
+ 
+ ! { dg-final { scan-tree-dump "vectorized 1 loops" "vect" } }
+-! { dg-final { cleanup-tree-dump "vect" } }
+--- a/src/gcc/testsuite/gfortran.dg/vect/fast-math-pr38968.f90
++++ b/src/gcc/testsuite/gfortran.dg/vect/fast-math-pr38968.f90
+@@ -25,4 +25,3 @@ program mymatmul
+ end program mymatmul
+ 
+ ! { dg-final { scan-tree-dump "vectorized 1 loops" "vect" } }
+-! { dg-final { cleanup-tree-dump "vect" } }
+--- a/src/gcc/testsuite/gfortran.dg/vect/fast-math-real8-pr40801.f90
++++ b/src/gcc/testsuite/gfortran.dg/vect/fast-math-real8-pr40801.f90
+@@ -34,4 +34,3 @@ IF (ITOP < KLEV+1) THEN
+ ENDIF
+ END SUBROUTINE ACCONV
+ 
+-! { dg-final { cleanup-tree-dump "vect" } }
+--- a/src/gcc/testsuite/gfortran.dg/vect/fast-math-rnflow-trs2a2.f90
++++ b/src/gcc/testsuite/gfortran.dg/vect/fast-math-rnflow-trs2a2.f90
+@@ -30,4 +30,3 @@
+       end function trs2a2
+ 
+ ! { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  } }
+-! { dg-final { cleanup-tree-dump "vect" } }
+--- a/src/gcc/testsuite/gfortran.dg/vect/fast-math-vect-8.f90
++++ b/src/gcc/testsuite/gfortran.dg/vect/fast-math-vect-8.f90
+@@ -91,4 +91,3 @@ end module solv_cap
+ 
+ 
+ ! { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_intfloat_cvt } } }
+-! { dg-final { cleanup-tree-dump "vect" } } 
+--- a/src/gcc/testsuite/gfortran.dg/vect/no-fre-no-copy-prop-O3-pr51704.f90
++++ b/src/gcc/testsuite/gfortran.dg/vect/no-fre-no-copy-prop-O3-pr51704.f90
+@@ -53,5 +53,4 @@ contains
+   end subroutine tes
+ end
+ 
+-! { dg-final { cleanup-tree-dump "vect" } }
+ 
+--- a/src/gcc/testsuite/gfortran.dg/vect/no-vfa-pr32377.f90
++++ b/src/gcc/testsuite/gfortran.dg/vect/no-vfa-pr32377.f90
+@@ -12,5 +12,4 @@ real t1,t2,chksum,ctime,dtime,cs1d
+ end
+ 
+ ! { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect"   } }
+-! { dg-final { cleanup-tree-dump "vect" } }
+ 
+--- a/src/gcc/testsuite/gfortran.dg/vect/no-vfa-pr32457.f90
++++ b/src/gcc/testsuite/gfortran.dg/vect/no-vfa-pr32457.f90
+@@ -12,4 +12,3 @@ SUBROUTINE KEEL(RBOUND)
+ END SUBROUTINE KEEL
+ 
+ ! { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" } }
+-! { dg-final { cleanup-tree-dump "vect" } }
+--- a/src/gcc/testsuite/gfortran.dg/vect/pr19049.f90
++++ b/src/gcc/testsuite/gfortran.dg/vect/pr19049.f90
+@@ -21,5 +21,4 @@ subroutine s111 (ntimes,ld,n,ctime,dtime,a,b,c,d,e,aa,bb,cc)
+ ! { dg-final { scan-tree-dump-times "vectorized 1 loops" 0 "vect" } }
+ ! { dg-final { scan-tree-dump-times "complicated access pattern" 1 "vect" { xfail vect_multiple_sizes } } }
+ ! { dg-final { scan-tree-dump-times "complicated access pattern" 2 "vect" { target vect_multiple_sizes } } }
+-! { dg-final { cleanup-tree-dump "vect" } }
+ 
+--- a/src/gcc/testsuite/gfortran.dg/vect/pr32377.f90
++++ b/src/gcc/testsuite/gfortran.dg/vect/pr32377.f90
+@@ -12,4 +12,3 @@ subroutine s243(ntimes,ld,n,ctime,dtime,a,b,c,d,e,aa,bb,cc)
+ end subroutine s243
+ 
+ ! { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect" } }
+-! { dg-final { cleanup-tree-dump "vect" } }
+--- a/src/gcc/testsuite/gfortran.dg/vect/pr32380.f
++++ b/src/gcc/testsuite/gfortran.dg/vect/pr32380.f
+@@ -262,4 +262,3 @@ c
+ ! { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { ! vect_element_align } } } }
+ ! { dg-final { scan-tree-dump-times "vectorized 5 loops" 1 "vect" { target { vect_element_align && { ! vect_call_sqrtf } } } } }
+ ! { dg-final { scan-tree-dump-times "vectorized 6 loops" 1 "vect" { target { vect_element_align && vect_call_sqrtf } } } }
+-! { dg-final { cleanup-tree-dump "vect" } }
+--- a/src/gcc/testsuite/gfortran.dg/vect/pr33301.f
++++ b/src/gcc/testsuite/gfortran.dg/vect/pr33301.f
+@@ -11,4 +11,3 @@ c     It is present in original lapack source
+    20       CONTINUE
+       END
+ 
+-c { dg-final { cleanup-tree-dump "vect" } }
+--- a/src/gcc/testsuite/gfortran.dg/vect/pr39318.f90
++++ b/src/gcc/testsuite/gfortran.dg/vect/pr39318.f90
+@@ -17,5 +17,4 @@
+       return
+       end
+ 
+-! { dg-final { cleanup-tree-dump "vect" } }
+ 
+--- a/src/gcc/testsuite/gfortran.dg/vect/pr45714-a.f
++++ b/src/gcc/testsuite/gfortran.dg/vect/pr45714-a.f
+@@ -24,4 +24,3 @@
+       enddo
+       end
+ 
+-! { dg-final { cleanup-tree-dump "vect" } }
+--- a/src/gcc/testsuite/gfortran.dg/vect/pr45714-b.f
++++ b/src/gcc/testsuite/gfortran.dg/vect/pr45714-b.f
+@@ -24,4 +24,3 @@
+       enddo
+       end
+ 
+-! { dg-final { cleanup-tree-dump "vect" } }
+--- a/src/gcc/testsuite/gfortran.dg/vect/pr46213.f90
++++ b/src/gcc/testsuite/gfortran.dg/vect/pr46213.f90
+@@ -22,4 +22,3 @@ contains
+   end function get_d
+ end program test
+ 
+-! { dg-final { cleanup-tree-dump "vect" } }
+--- a/src/gcc/testsuite/gfortran.dg/vect/pr48329.f90
++++ b/src/gcc/testsuite/gfortran.dg/vect/pr48329.f90
+@@ -26,4 +26,3 @@ program calcpi
+ end program calcpi
+ 
+ ! { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } }
+-! { dg-final { cleanup-tree-dump "vect" } }
+--- a/src/gcc/testsuite/gfortran.dg/vect/pr50178.f90
++++ b/src/gcc/testsuite/gfortran.dg/vect/pr50178.f90
+@@ -26,4 +26,3 @@ subroutine suedyn
+ 
+ end subroutine suedyn
+ 
+-! { dg-final { cleanup-tree-dump "vect" } }
+--- a/src/gcc/testsuite/gfortran.dg/vect/pr50412.f90
++++ b/src/gcc/testsuite/gfortran.dg/vect/pr50412.f90
+@@ -9,4 +9,3 @@
+    20 CONTINUE
+       END
+ 
+-! { dg-final { cleanup-tree-dump "vect" } }
+--- a/src/gcc/testsuite/gfortran.dg/vect/pr51058-2.f90
++++ b/src/gcc/testsuite/gfortran.dg/vect/pr51058-2.f90
+@@ -17,4 +17,3 @@ subroutine pr51058(n, u, v, w, z)
+   end do
+ end subroutine
+ 
+-! { dg-final { cleanup-tree-dump "vect" } }
+--- a/src/gcc/testsuite/gfortran.dg/vect/pr51058.f90
++++ b/src/gcc/testsuite/gfortran.dg/vect/pr51058.f90
+@@ -15,5 +15,4 @@
+          ENDDO
+       END
+ 
+-! { dg-final { cleanup-tree-dump "vect" } }
+ 
+--- a/src/gcc/testsuite/gfortran.dg/vect/pr51285.f90
++++ b/src/gcc/testsuite/gfortran.dg/vect/pr51285.f90
+@@ -33,4 +33,3 @@
+     ENDDO
+  END SUBROUTINE
+ 
+-! { dg-final { cleanup-tree-dump "vect" } }
+--- a/src/gcc/testsuite/gfortran.dg/vect/pr52580.f
++++ b/src/gcc/testsuite/gfortran.dg/vect/pr52580.f
+@@ -30,4 +30,3 @@
+       RETURN
+       END
+ ! { dg-final { scan-tree-dump-times "LOOP VECTORIZED" 1 "vect" } }
+-! { dg-final { cleanup-tree-dump "vect" } }
+--- a/src/gcc/testsuite/gfortran.dg/vect/pr62283.f
++++ b/src/gcc/testsuite/gfortran.dg/vect/pr62283.f
+@@ -14,4 +14,3 @@ C { dg-additional-options "-fvect-cost-model=dynamic" }
+       y=y+beta*x
+       end
+ C { dg-final { scan-tree-dump-times "vectorized 1 loops" 2 "vect" { target { vect_hw_misalign } } } }
+-C { dg-final { cleanup-tree-dump "vect" } }
+--- a/src/gcc/testsuite/gfortran.dg/vect/vect-1.f90
++++ b/src/gcc/testsuite/gfortran.dg/vect/vect-1.f90
+@@ -8,4 +8,3 @@ PRINT*, C(500000)
+ END
+ 
+ ! { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect" } }
+-! { dg-final { cleanup-tree-dump "vect" } }
+--- a/src/gcc/testsuite/gfortran.dg/vect/vect-2.f90
++++ b/src/gcc/testsuite/gfortran.dg/vect/vect-2.f90
+@@ -19,4 +19,3 @@ END
+ ! { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 2 "vect" { target { { vect_no_align && { ! vect_hw_misalign } } && { ! vector_alignment_reachable } } } } }
+ ! { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 2 "vect" { xfail { vect_no_align && { ! vect_hw_misalign } } } } }
+ ! { dg-final { scan-tree-dump-times "Alignment of access forced using versioning." 3 "vect" {target { { vect_no_align && { ! vect_hw_misalign } } || { { ! vector_alignment_reachable  } && { ! vect_hw_misalign } } } } } }
+-! { dg-final { cleanup-tree-dump "vect" } }
+--- a/src/gcc/testsuite/gfortran.dg/vect/vect-3.f90
++++ b/src/gcc/testsuite/gfortran.dg/vect/vect-3.f90
+@@ -12,4 +12,3 @@ END
+ ! { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 1 "vect" { xfail { { vect_no_align && { ! vect_hw_misalign } } || {! vector_alignment_reachable}} } } }
+ ! { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect" { xfail { { vect_no_align && { ! vect_hw_misalign } } || { ! vector_alignment_reachable} } } } }
+ 
+-! { dg-final { cleanup-tree-dump "vect" } }
+--- a/src/gcc/testsuite/gfortran.dg/vect/vect-4.f90
++++ b/src/gcc/testsuite/gfortran.dg/vect/vect-4.f90
+@@ -14,4 +14,3 @@ END
+ ! { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect" { xfail { { vect_no_align && { ! vect_hw_misalign } } || {! vector_alignment_reachable} } } } }
+ ! { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 2 "vect" { target { {! vector_alignment_reachable} && {! vect_hw_misalign} } } } }
+ ! { dg-final { scan-tree-dump-times "accesses have the same alignment." 1 "vect" } }
+-! { dg-final { cleanup-tree-dump "vect" } }
+--- a/src/gcc/testsuite/gfortran.dg/vect/vect-5.f90
++++ b/src/gcc/testsuite/gfortran.dg/vect/vect-5.f90
+@@ -40,4 +40,3 @@
+ ! { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 1 "vect" { xfail { vect_no_align && { ! vect_hw_misalign } } } } }
+ ! { dg-final { scan-tree-dump-times "Alignment of access forced using versioning." 2 "vect" { target { vect_no_align && { ! vect_hw_misalign } } } } }
+ ! { dg-final { scan-tree-dump-times "Alignment of access forced using versioning." 1 "vect" { target { {! vector_alignment_reachable} && {! vect_hw_misalign} } } } }
+-! { dg-final { cleanup-tree-dump "vect" } }
+--- a/src/gcc/testsuite/gfortran.dg/vect/vect-6.f
++++ b/src/gcc/testsuite/gfortran.dg/vect/vect-6.f
+@@ -21,5 +21,4 @@
+   150    CONTINUE
+       END
+ 
+-! { dg-final { cleanup-tree-dump "vect" } }
+ 
+--- a/src/gcc/testsuite/gfortran.dg/vect/vect-7.f90
++++ b/src/gcc/testsuite/gfortran.dg/vect/vect-7.f90
+@@ -12,5 +12,4 @@ subroutine foo (x,nnd)
+ end subroutine foo 
+ 
+ ! { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_unpack  && vect_intfloat_cvt } } } } 
+-! { dg-final { cleanup-tree-dump "vect" } } 
+ 
+--- a/src/gcc/testsuite/gfortran.dg/vect/vect-8.f90
++++ b/src/gcc/testsuite/gfortran.dg/vect/vect-8.f90
+@@ -704,4 +704,3 @@ RETURN
+ END SUBROUTINE kernel
+ 
+ ! { dg-final { scan-tree-dump-times "vectorized 19 loops" 1 "vect" } }
+-! { dg-final { cleanup-tree-dump "vect" } }
+--- a/src/gcc/testsuite/gfortran.dg/vect/vect-do-concurrent-1.f90
++++ b/src/gcc/testsuite/gfortran.dg/vect/vect-do-concurrent-1.f90
+@@ -13,4 +13,3 @@ end subroutine test
+ 
+ ! { dg-message "loop vectorized" "" { target *-*-* } 0 }
+ ! { dg-bogus " version\[^\n\r]* alias" "" { target *-*-* } 0 }
+-! { dg-final { cleanup-tree-dump "vect" } }
+--- a/src/gcc/testsuite/gfortran.dg/vect/vect-gems.f90
++++ b/src/gcc/testsuite/gfortran.dg/vect/vect-gems.f90
+@@ -54,4 +54,3 @@ END SUBROUTINE UPMLupdateE
+ END MODULE UPML_mod
+ 
+ ! { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  } }
+-! { dg-final { cleanup-tree-dump "vect" } }
+--- a/src/gcc/testsuite/gfortran.dg/vector_subscript_4.f90
++++ b/src/gcc/testsuite/gfortran.dg/vector_subscript_4.f90
+@@ -10,4 +10,3 @@
+       k = j((/1,1,1/)+i)
+       end
+ ! { dg-final { scan-tree-dump-times "A\.2\\\[3\\\]" 1 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/vector_subscript_6.f90
++++ b/src/gcc/testsuite/gfortran.dg/vector_subscript_6.f90
+@@ -30,4 +30,3 @@ subroutine test3(esss,Ix,Iyz, e_x, ii_ivec)
+ end subroutine
+ 
+ ! { dg-final { scan-tree-dump-not "malloc" "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gfortran.dg/volatile10.f90
++++ b/src/gcc/testsuite/gfortran.dg/volatile10.f90
+@@ -145,4 +145,3 @@ end program main
+ ! { dg-final { scan-tree-dump      "main_test2_2" "optimized" } }
+ ! TODO: dg-final { scan-tree-dump-not  "main_test2_3" "optimized" } 
+ ! { dg-final { scan-tree-dump      "main_test2_4" "optimized" } }
+-! { dg-final { cleanup-tree-dump  "optimized" } }
+--- a/src/gcc/testsuite/gfortran.dg/volatile11.f90
++++ b/src/gcc/testsuite/gfortran.dg/volatile11.f90
+@@ -37,4 +37,3 @@ end subroutine
+ ! { dg-final { scan-tree-dump "NotOptimizedAway1" "optimized" } } */
+ ! { dg-final { scan-tree-dump "NotOptimizedAway2" "optimized" } } */
+ ! { dg-final { scan-tree-dump-not "IsOptimizedAway" "optimized" } } */
+-! { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gfortran.dg/volatile12.f90
++++ b/src/gcc/testsuite/gfortran.dg/volatile12.f90
+@@ -12,5 +12,4 @@ end
+ ! { dg-final { scan-tree-dump "integer.kind=.. . volatile arg" "optimized" } }
+ ! { dg-final { scan-tree-dump-times " =.v. arg;" 2 "optimized" } }
+ ! { dg-final { scan-tree-dump "i_dont_exist" "optimized" } }
+-! { dg-final { cleanup-tree-dump "optimized" } }
+ 
+--- a/src/gcc/testsuite/gfortran.dg/volatile4.f90
++++ b/src/gcc/testsuite/gfortran.dg/volatile4.f90
+@@ -15,4 +15,3 @@ end do
+ end
+ ! { dg-final { scan-tree-dump "VolatileNotOptimizedAway" "optimized" } } */
+ ! { dg-final { scan-tree-dump-not "NonVolatileNotOptimizedAway" "optimized" } } */
+-! { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/gcc/testsuite/gfortran.dg/volatile5.f90
++++ b/src/gcc/testsuite/gfortran.dg/volatile5.f90
+@@ -39,4 +39,3 @@ end program main
+ ! { dg-final { scan-tree-dump "bStillPresent" "optimized" } }
+ ! { dg-final { scan-tree-dump-not "cPresent" "optimized" } }
+ ! { dg-final { scan-tree-dump-not "cStillPresent" "optimized" } }
+-! { dg-final { cleanup-tree-dump "optimized" } }
+--- a/src/gcc/testsuite/gfortran.dg/volatile6.f90
++++ b/src/gcc/testsuite/gfortran.dg/volatile6.f90
+@@ -23,4 +23,3 @@ end
+ ! { dg-final { scan-tree-dump "VolatileNotOptimizedAway2" "optimized" } }
+ ! { dg-final { scan-tree-dump-not "NonVolatileNotOptimizedAway1" "optimized" } }
+ ! { dg-final { scan-tree-dump-not "NonVolatileNotOptimizedAway2" "optimized" } }
+-! { dg-final { cleanup-tree-dump "optimized" } }
+--- a/src/gcc/testsuite/gfortran.dg/volatile7.f90
++++ b/src/gcc/testsuite/gfortran.dg/volatile7.f90
+@@ -13,4 +13,3 @@ if(associated(t2)) print *, 'NonVolatileNotOptimizedAway'
+ end
+ ! { dg-final { scan-tree-dump "VolatileNotOptimizedAway" "optimized" } }
+ ! { dg-final { scan-tree-dump-not "NonVolatileNotOptimizedAway" "optimized" } } 
+-! { dg-final { cleanup-tree-dump "optimized" } } 
+--- a/src/gcc/testsuite/gfortran.dg/whole_file_5.f90
++++ b/src/gcc/testsuite/gfortran.dg/whole_file_5.f90
+@@ -17,4 +17,3 @@ PROGRAM main
+ END PROGRAM
+ 
+ ! { dg-final { scan-tree-dump-times "= f \\(\\)" 0 "optimized" } }
+-! { dg-final { cleanup-tree-dump "optimized" } }
+--- a/src/gcc/testsuite/gfortran.dg/whole_file_6.f90
++++ b/src/gcc/testsuite/gfortran.dg/whole_file_6.f90
+@@ -17,4 +17,3 @@ INTEGER FUNCTION f()
+ END FUNCTION
+ 
+ ! { dg-final { scan-tree-dump-times "= f \\(\\)" 0 "optimized" } }
+-! { dg-final { cleanup-tree-dump "optimized" } }
+--- a/src/gcc/testsuite/gfortran.dg/widechar_7.f90
++++ b/src/gcc/testsuite/gfortran.dg/widechar_7.f90
+@@ -16,4 +16,3 @@ program test
+ end program test
+ 
+ ! { dg-final { scan-tree-dump-times "memmove" 0 "original" } }
+-! { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gnat.dg/aggr12.adb
++++ b/src/gcc/testsuite/gnat.dg/aggr12.adb
+@@ -17,4 +17,3 @@ package body Aggr12 is
+ end Aggr12;
+ 
+ -- { dg-final { scan-tree-dump-not "{.i1=0, .i2=2}" "original" } }
+--- { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gnat.dg/aggr13.adb
++++ b/src/gcc/testsuite/gnat.dg/aggr13.adb
+@@ -20,4 +20,3 @@ begin
+ end;
+ 
+ -- { dg-final { scan-tree-dump-not "= {}" "gimple" } }
+--- { dg-final { cleanup-tree-dump "gimple" } }
+--- a/src/gcc/testsuite/gnat.dg/aliasing1.adb
++++ b/src/gcc/testsuite/gnat.dg/aliasing1.adb
+@@ -19,4 +19,3 @@ package body Aliasing1 is
+ end Aliasing1;
+ 
+ -- { dg-final { scan-tree-dump-not "gnat_rcheck" "optimized" } }
+--- { dg-final { cleanup-tree-dump "optimized" } }
+--- a/src/gcc/testsuite/gnat.dg/aliasing2.adb
++++ b/src/gcc/testsuite/gnat.dg/aliasing2.adb
+@@ -19,4 +19,3 @@ package body Aliasing2 is
+ end Aliasing2;
+ 
+ -- { dg-final { scan-tree-dump-not "gnat_rcheck" "optimized" } }
+--- { dg-final { cleanup-tree-dump "optimized" } }
+--- a/src/gcc/testsuite/gnat.dg/alignment4.adb
++++ b/src/gcc/testsuite/gnat.dg/alignment4.adb
+@@ -12,4 +12,3 @@ begin
+ end;
+ 
+ -- { dg-final { scan-tree-dump-not ".\F" "gimple" } }
+--- { dg-final { cleanup-tree-dump "gimple" } }
+--- a/src/gcc/testsuite/gnat.dg/alignment5.adb
++++ b/src/gcc/testsuite/gnat.dg/alignment5.adb
+@@ -28,4 +28,3 @@ begin
+ end;
+ 
+ -- { dg-final { scan-tree-dump-not "\.F" "gimple" } }
+--- { dg-final { cleanup-tree-dump "gimple" } }
+--- a/src/gcc/testsuite/gnat.dg/alignment6.adb
++++ b/src/gcc/testsuite/gnat.dg/alignment6.adb
+@@ -29,4 +29,3 @@ begin
+ end;
+ 
+ -- { dg-final { scan-tree-dump-not "VIEW_CONVERT_EXPR" "gimple" } }
+--- { dg-final { cleanup-tree-dump "gimple" } }
+--- a/src/gcc/testsuite/gnat.dg/array16.adb
++++ b/src/gcc/testsuite/gnat.dg/array16.adb
+@@ -25,4 +25,3 @@ package body Array16 is
+ end Array16;
+ 
+ -- { dg-final { scan-tree-dump-not "secondary_stack" "optimized" } }
+--- { dg-final { cleanup-tree-dump "optimized" } }
+--- a/src/gcc/testsuite/gnat.dg/array7.adb
++++ b/src/gcc/testsuite/gnat.dg/array7.adb
+@@ -20,4 +20,3 @@ package body Array7 is
+ end Array7;
+ 
+ -- { dg-final { scan-tree-dump-not "MAX_EXPR" "optimized" } }
+--- { dg-final { cleanup-tree-dump "optimized" } }
+--- a/src/gcc/testsuite/gnat.dg/atomic1.adb
++++ b/src/gcc/testsuite/gnat.dg/atomic1.adb
+@@ -15,4 +15,3 @@ end;
+ 
+ -- { dg-final { scan-tree-dump-times "v_16" 1 "gimple"} }
+ -- { dg-final { scan-tree-dump-times "v_32" 1 "gimple"} }
+--- { dg-final { cleanup-tree-dump "gimple" } }
+--- a/src/gcc/testsuite/gnat.dg/atomic6_1.adb
++++ b/src/gcc/testsuite/gnat.dg/atomic6_1.adb
+@@ -36,4 +36,3 @@ end;
+ -- { dg-final { scan-tree-dump-times "atomic_store\[^\n\r\]*&temp" 0 "gimple"} }
+ -- { dg-final { scan-tree-dump-times "atomic_store\[^\n\r\]*ptr" 0 "gimple"} }
+ 
+--- { dg-final { cleanup-tree-dump "gimple" } }
+--- a/src/gcc/testsuite/gnat.dg/atomic6_2.adb
++++ b/src/gcc/testsuite/gnat.dg/atomic6_2.adb
+@@ -42,4 +42,3 @@ end;
+ -- { dg-final { scan-tree-dump-times "atomic_store\[^\n\r\]*&temp" 0 "gimple"} }
+ -- { dg-final { scan-tree-dump-times "atomic_store\[^\n\r\]*ptr" 0 "gimple"} }
+ 
+--- { dg-final { cleanup-tree-dump "gimple" } }
+--- a/src/gcc/testsuite/gnat.dg/atomic6_3.adb
++++ b/src/gcc/testsuite/gnat.dg/atomic6_3.adb
+@@ -55,4 +55,3 @@ end;
+ -- { dg-final { scan-tree-dump-times "atomic_store\[^\n\r\]*&temp" 0 "gimple"} }
+ -- { dg-final { scan-tree-dump-times "atomic_store\[^\n\r\]*ptr" 0 "gimple"} }
+ 
+--- { dg-final { cleanup-tree-dump "gimple" } }
+--- a/src/gcc/testsuite/gnat.dg/atomic6_4.adb
++++ b/src/gcc/testsuite/gnat.dg/atomic6_4.adb
+@@ -42,4 +42,3 @@ end;
+ -- { dg-final { scan-tree-dump-times "atomic_store\[^\n\r\]*&temp" 0 "gimple"} }
+ -- { dg-final { scan-tree-dump-times "atomic_store\[^\n\r\]*ptr" 0 "gimple"} }
+ 
+--- { dg-final { cleanup-tree-dump "gimple" } }
+--- a/src/gcc/testsuite/gnat.dg/atomic6_5.adb
++++ b/src/gcc/testsuite/gnat.dg/atomic6_5.adb
+@@ -35,4 +35,3 @@ end;
+ -- { dg-final { scan-tree-dump-times "atomic_store\[^\n\r\]*&temp" 0 "gimple"} }
+ -- { dg-final { scan-tree-dump-times "atomic_store\[^\n\r\]*ptr" 0 "gimple"} }
+ 
+--- { dg-final { cleanup-tree-dump "gimple" } }
+--- a/src/gcc/testsuite/gnat.dg/atomic6_6.adb
++++ b/src/gcc/testsuite/gnat.dg/atomic6_6.adb
+@@ -36,4 +36,3 @@ end;
+ -- { dg-final { scan-tree-dump-times "atomic_store\[^\n\r\]*&temp" 0 "gimple"} }
+ -- { dg-final { scan-tree-dump-times "atomic_store\[^\n\r\]*ptr" 0 "gimple"} }
+ 
+--- { dg-final { cleanup-tree-dump "gimple" } }
+--- a/src/gcc/testsuite/gnat.dg/atomic6_7.adb
++++ b/src/gcc/testsuite/gnat.dg/atomic6_7.adb
+@@ -37,4 +37,3 @@ end;
+ -- { dg-final { scan-tree-dump-times "atomic_store\[^\n\r\]*&temp" 0 "gimple"} }
+ -- { dg-final { scan-tree-dump-times "atomic_store\[^\n\r\]*ptr" 0 "gimple"} }
+ 
+--- { dg-final { cleanup-tree-dump "gimple" } }
+--- a/src/gcc/testsuite/gnat.dg/atomic6_8.adb
++++ b/src/gcc/testsuite/gnat.dg/atomic6_8.adb
+@@ -34,4 +34,3 @@ end;
+ -- { dg-final { scan-tree-dump-times "atomic_store\[^\n\r\]*&temp" 0 "gimple"} }
+ -- { dg-final { scan-tree-dump-times "atomic_store\[^\n\r\]*ptr" 3 "gimple"} }
+ 
+--- { dg-final { cleanup-tree-dump "gimple" } }
+--- a/src/gcc/testsuite/gnat.dg/derived_type1.adb
++++ b/src/gcc/testsuite/gnat.dg/derived_type1.adb
+@@ -25,4 +25,3 @@ end;
+ 
+ -- { dg-final { scan-tree-dump-not "VIEW_CONVERT_EXPR<struct derived_type1__root>" "original" } }
+ -- { dg-final { scan-tree-dump-not "VIEW_CONVERT_EXPR<struct derived_type1__derived1>" "original" } }
+--- { dg-final { cleanup-tree-dump "original" } }
+--- a/src/gcc/testsuite/gnat.dg/loop_optimization6.adb
++++ b/src/gcc/testsuite/gnat.dg/loop_optimization6.adb
+@@ -23,4 +23,3 @@ package body Loop_Optimization6 is
+ end Loop_Optimization6;
+ 
+ -- { dg-final { scan-tree-dump-not "goto" "optimized"} }
+--- { dg-final { cleanup-tree-dump "optimized" } }
+--- a/src/gcc/testsuite/gnat.dg/noinline2.adb
++++ b/src/gcc/testsuite/gnat.dg/noinline2.adb
+@@ -19,4 +19,3 @@ package body Noinline2 is
+ end Noinline2;
+ 
+ -- { dg-final { scan-tree-dump-times "noinline2.inner" 2 "optimized"  } }
+--- { dg-final { cleanup-tree-dump "optimized" } }
+--- a/src/gcc/testsuite/gnat.dg/opt15.adb
++++ b/src/gcc/testsuite/gnat.dg/opt15.adb
+@@ -9,4 +9,3 @@ begin
+ end;
+ 
+ -- { dg-final { scan-tree-dump-not "trace_inlined" "optimized" } }
+--- { dg-final { cleanup-tree-dump "optimized" } }
+--- a/src/gcc/testsuite/gnat.dg/opt34.adb
++++ b/src/gcc/testsuite/gnat.dg/opt34.adb
+@@ -26,4 +26,3 @@ begin
+ end;
+ 
+ -- { dg-final { scan-tree-dump "Created a replacement for result" "esra" } }
+--- { dg-final { cleanup-tree-dump "esra" } }
+--- a/src/gcc/testsuite/gnat.dg/opt37.adb
++++ b/src/gcc/testsuite/gnat.dg/opt37.adb
+@@ -39,4 +39,3 @@ package body Opt37 is
+ end Opt37;
+ 
+ -- { dg-final { scan-tree-dump-not "alloca" "optimized" } }
+--- { dg-final { cleanup-tree-dump "optimized" } }
+--- a/src/gcc/testsuite/gnat.dg/opt39.adb
++++ b/src/gcc/testsuite/gnat.dg/opt39.adb
+@@ -28,4 +28,3 @@ begin
+ end;
+ 
+ -- { dg-final { scan-tree-dump-times "MEM" 1 "optimized" } }
+--- { dg-final { cleanup-tree-dump "optimized" } }
+--- a/src/gcc/testsuite/gnat.dg/opt40.adb
++++ b/src/gcc/testsuite/gnat.dg/opt40.adb
+@@ -14,4 +14,3 @@ begin
+ end;
+ 
+ -- { dg-final { scan-tree-dump-not "gnat_rcheck" "optimized" } }
+--- { dg-final { cleanup-tree-dump "optimized" } }
+--- a/src/gcc/testsuite/gnat.dg/pack9.adb
++++ b/src/gcc/testsuite/gnat.dg/pack9.adb
+@@ -16,4 +16,3 @@ package body Pack9 is
+ end Pack9;
+ 
+ -- { dg-final { scan-tree-dump-not "gnat_rcheck" "optimized" } }
+--- { dg-final { cleanup-tree-dump "optimized" } }
+--- a/src/gcc/testsuite/gnat.dg/renaming5.adb
++++ b/src/gcc/testsuite/gnat.dg/renaming5.adb
+@@ -27,4 +27,3 @@ package body Renaming5 is
+ end Renaming5;
+ 
+ -- { dg-final { scan-tree-dump-times "goto" 2 "optimized" } }
+--- { dg-final { cleanup-tree-dump "optimized" } }
+--- a/src/gcc/testsuite/gnat.dg/specs/noinline3.ads
++++ b/src/gcc/testsuite/gnat.dg/specs/noinline3.ads
+@@ -6,4 +6,3 @@ with Noinline3_Pkg;
+ package Noinline3 is new Noinline3_Pkg (0);
+ 
+ -- { dg-final { scan-tree-dump-times "noinline3.inner" 2 "optimized"  } }
+--- { dg-final { cleanup-tree-dump "optimized" } }
+--- a/src/gcc/testsuite/gnat.dg/unchecked_convert9.adb
++++ b/src/gcc/testsuite/gnat.dg/unchecked_convert9.adb
+@@ -12,4 +12,3 @@ package body Unchecked_Convert9 is
+ end Unchecked_Convert9;
+ 
+ -- { dg-final { scan-rtl-dump-times "set \\(mem/v" 1 "final" } }
+--- { dg-final { cleanup-rtl-dump "final" } }
+--- a/src/gcc/testsuite/gnat.dg/vect1.adb
++++ b/src/gcc/testsuite/gnat.dg/vect1.adb
+@@ -125,4 +125,3 @@ package body Vect1 is
+ end Vect1;
+ 
+ -- { dg-final { scan-tree-dump-times "vectorized 1 loops" 15 "vect"  } }
+--- { dg-final { cleanup-tree-dump "vect" } }
+--- a/src/gcc/testsuite/gnat.dg/vect11.adb
++++ b/src/gcc/testsuite/gnat.dg/vect11.adb
+@@ -30,4 +30,3 @@ package body Vect11 is
+ end Vect11;
+ 
+ -- { dg-final { scan-tree-dump-not "goto" "optimized" } }
+--- { dg-final { cleanup-tree-dump "optimized" } }
+--- a/src/gcc/testsuite/gnat.dg/vect12.adb
++++ b/src/gcc/testsuite/gnat.dg/vect12.adb
+@@ -24,4 +24,3 @@ package body Vect12 is
+ end Vect12;
+ 
+ -- { dg-final { scan-tree-dump-not "vectorized 1 loops" "vect"  } }
+--- { dg-final { cleanup-tree-dump "vect" } }
+--- a/src/gcc/testsuite/gnat.dg/vect13.adb
++++ b/src/gcc/testsuite/gnat.dg/vect13.adb
+@@ -24,4 +24,3 @@ package body Vect13 is
+ end Vect13;
+ 
+ -- { dg-final { scan-tree-dump-times "vectorized 1 loops" 2 "vect"  } }
+--- { dg-final { cleanup-tree-dump "vect" } }
+--- a/src/gcc/testsuite/gnat.dg/vect14.adb
++++ b/src/gcc/testsuite/gnat.dg/vect14.adb
+@@ -22,4 +22,3 @@ begin
+ end;
+ 
+ -- { dg-final { scan-tree-dump-not "VIEW_CONVERT_EXPR" "optimized" } }
+--- { dg-final { cleanup-tree-dump "optimized" } }
+--- a/src/gcc/testsuite/gnat.dg/vect2.adb
++++ b/src/gcc/testsuite/gnat.dg/vect2.adb
+@@ -125,4 +125,3 @@ package body Vect2 is
+ end Vect2;
+ 
+ -- { dg-final { scan-tree-dump-times "vectorized 1 loops" 15 "vect"  } }
+--- { dg-final { cleanup-tree-dump "vect" } }
+--- a/src/gcc/testsuite/gnat.dg/vect3.adb
++++ b/src/gcc/testsuite/gnat.dg/vect3.adb
+@@ -125,4 +125,3 @@ package body Vect3 is
+ end Vect3;
+ 
+ -- { dg-final { scan-tree-dump-times "vectorized 1 loops" 15 "vect"  } }
+--- { dg-final { cleanup-tree-dump "vect" } }
+--- a/src/gcc/testsuite/gnat.dg/vect4.adb
++++ b/src/gcc/testsuite/gnat.dg/vect4.adb
+@@ -125,4 +125,3 @@ package body Vect4 is
+ end Vect4;
+ 
+ -- { dg-final { scan-tree-dump-times "vectorized 1 loops" 15 "vect"  } }
+--- { dg-final { cleanup-tree-dump "vect" } }
+--- a/src/gcc/testsuite/gnat.dg/vect5.adb
++++ b/src/gcc/testsuite/gnat.dg/vect5.adb
+@@ -125,4 +125,3 @@ package body Vect5 is
+ end Vect5;
+ 
+ -- { dg-final { scan-tree-dump-times "vectorized 1 loops" 15 "vect"  } }
+--- { dg-final { cleanup-tree-dump "vect" } }
+--- a/src/gcc/testsuite/gnat.dg/vect6.adb
++++ b/src/gcc/testsuite/gnat.dg/vect6.adb
+@@ -125,4 +125,3 @@ package body Vect6 is
+ end Vect6;
+ 
+ -- { dg-final { scan-tree-dump-times "vectorized 1 loops" 15 "vect"  } }
+--- { dg-final { cleanup-tree-dump "vect" } }
+--- a/src/gcc/testsuite/gnat.dg/volatile6.adb
++++ b/src/gcc/testsuite/gnat.dg/volatile6.adb
+@@ -17,4 +17,3 @@ begin
+ end;
+ 
+ -- { dg-final { scan-tree-dump "goto" "optimized" } }
+--- { dg-final { cleanup-tree-dump "optimized" } }
+--- a/src/gcc/testsuite/gnat.dg/volatile7.adb
++++ b/src/gcc/testsuite/gnat.dg/volatile7.adb
+@@ -21,4 +21,3 @@ begin
+ end;
+ 
+ -- { dg-final { scan-tree-dump "goto" "optimized" } }
+--- { dg-final { cleanup-tree-dump "optimized" } }
+--- a/src/gcc/testsuite/gnat.dg/volatile8.adb
++++ b/src/gcc/testsuite/gnat.dg/volatile8.adb
+@@ -19,4 +19,3 @@ begin
+ end;
+ 
+ -- { dg-final { scan-tree-dump "goto" "optimized" } }
+--- { dg-final { cleanup-tree-dump "optimized" } }
+--- a/src/gcc/testsuite/gnat.dg/volatile9.adb
++++ b/src/gcc/testsuite/gnat.dg/volatile9.adb
+@@ -17,4 +17,3 @@ begin
+ end;
+ 
+ -- { dg-final { scan-tree-dump "goto" "optimized" } }
+--- { dg-final { cleanup-tree-dump "optimized" } }
+--- a/src/gcc/testsuite/lib/asan-dg.exp
++++ b/src/gcc/testsuite/lib/asan-dg.exp
+@@ -138,6 +138,7 @@ proc asan_finish { args } {
+     }
+     set ld_library_path $asan_saved_library_path
+     set_ld_library_path_env_vars
++    clear_effective_target_cache
+ }
+ 
+ # Symbolize lines like
+--- a/src/gcc/testsuite/lib/atomic-dg.exp
++++ b/src/gcc/testsuite/lib/atomic-dg.exp
+@@ -101,4 +101,5 @@ proc atomic_finish { args } {
+     } else {
+ 	unset TEST_ALWAYS_FLAGS
+     }
++    clear_effective_target_cache
+ }
+--- a/src/gcc/testsuite/lib/cilk-plus-dg.exp
++++ b/src/gcc/testsuite/lib/cilk-plus-dg.exp
+@@ -101,4 +101,5 @@ proc cilkplus_finish { args } {
+     } else {
+ 	unset TEST_ALWAYS_FLAGS
+     }
++    clear_effective_target_cache
+ }
+--- a/src/gcc/testsuite/lib/clearcap.exp
++++ b/src/gcc/testsuite/lib/clearcap.exp
+@@ -55,4 +55,5 @@ proc clearcap-finish { args } {
+     } else {
+ 	unset TEST_ALWAYS_FLAGS
+     }
++    clear_effective_target_cache
+ }
+--- a/src/gcc/testsuite/lib/gcc-dg.exp
++++ b/src/gcc/testsuite/lib/gcc-dg.exp
+@@ -105,6 +105,108 @@ if [check_effective_target_lto] {
+     }
+ }
+ 
++# Deduce generated files from tool flags, return finalcode string
++proc schedule-cleanups { opts } {
++    global additional_sources
++    set finalcode ""
++    set testcases {}
++    lappend testcases [lindex [testname-for-summary] 0]
++    verbose "Cleanup testcases: $testcases" 4
++    if { [info exists additional_sources] && $additional_sources != "" } {
++	lappend testcases $additional_sources
++	verbose "Cleanup testcases, additional: $additional_sources" 4
++    }
++    verbose "Cleanup all options: $opts" 4
++
++    # First some fixups to transform stuff to something manageable ..
++    # --dump= should translate to -d with joined operand.
++    if [regexp -- {(^|\s+)--dump=[^\s]+(\s+|$)} $opts] {
++	regsub -all -- {--dump=} $opts {-d} opts
++    }
++    # -da and -dx are treated as shorthand for -fdump-rtl-all here
++    if [regexp -- {(^|\s+)-d[ax](\s+|$)} $opts] {
++	verbose "Cleanup -d seen" 4
++	lappend opts "-fdump-rtl-all"
++    }
++    # .. and don't question why there is --dump=? and -d?
++
++    # Then handle options that generate non-dump files
++    # TODO
++    # -fprofile-generate -> cleanup-coverage-files()
++    # -fstack-usage -> cleanup-stack-usage()
++    if [regexp -- {(^|\s+)-fstack-usage(\s+|$)} $opts] {
++	verbose "Cleanup -fstack-usage seen" 4
++#	append finalcode "cleanup-stack-usage\n"
++    }
++    global keep_saved_temps_suffixes
++    if [info exists keep_saved_temps_suffixes ] {
++	verbose "dg-keep-saved-temps ${keep_saved_temps_suffixes}" 2
++    }
++    # -save-temps -> cleanup-saved-temps()
++    if [regexp -- {(^|\s+)-save-temps(\s+|$)} $opts] {
++	verbose "Cleanup -save-temps seen" 4
++	if [info exists keep_saved_temps_suffixes] {
++	    append finalcode "cleanup-saved-temps ${keep_saved_temps_suffixes}\n"
++	} else {
++	    append finalcode "cleanup-saved-temps\n"
++	}
++    } else {
++	if [info exists keep_saved_temps_suffixes ] {
++	    error "dg-keep-saved-temps specified but testcase does not -save-temps"
++	    return
++	}
++    }
++    # Finally see if there are any dumps in opts, otherwise we are done
++    if [regexp -- {(?=(?:^|[ \t]+)?)-fdump-[^ \t]+(?=(?:$|[ \t]+)?)} $opts] {
++        # Ipa, Rtl, Tree for simplicity
++        set ptn "{i,r,t}"
++    } else {
++        return $finalcode
++    }
++    # stem.ext.<passnum><fam>.<passname><pass-instances>
++    # (tree)passes can have multiple instances, thus optional trailing *
++    set ptn "\[0-9\]\[0-9\]\[0-9\]$ptn.*"
++    # Handle ltrans files around -flto
++    if [regexp -- {(^|\s+)-flto(\s+|$)} $opts] {
++	verbose "Cleanup -flto seen" 4
++	set ltrans "{ltrans\[0-9\]*.,}"
++    } else {
++	set ltrans ""
++    }
++    set ptn "$ltrans$ptn"
++    verbose "Cleanup final ptn: $ptn" 4
++    set tfiles {}
++    foreach src $testcases {
++	set basename [file tail $src]
++	if { $ltrans != "" } {
++	    # ??? should we use upvar 1 output_file instead of this (dup ?)
++	    set stem [file rootname $basename]
++	    set basename_ext [file extension $basename]
++	    if {$basename_ext != ""} {
++		regsub -- {^.*\.} $basename_ext {} basename_ext
++	    }
++	    lappend tfiles "$stem.{$basename_ext,exe}"
++	    unset basename_ext
++	} else {
++	    lappend tfiles $basename
++	}
++    }
++    if { [llength $tfiles] > 1 } {
++	set tfiles [join $tfiles ","]
++	set tfiles "{$tfiles}"
++    }
++    verbose "Cleanup final testcases: $tfiles" 4
++    # We have to quote the regex
++    regsub -all {([][$^?+*()|\\{}])} "$tfiles.$ptn" {\\\1} ptn
++    set final ""
++    append final {remove-build-file }
++    append final "\"$ptn\""
++    verbose "Cleanup final: $final" 4
++    append finalcode "$final\n"
++
++    return $finalcode
++}
++
+ # Define gcc callbacks for dg.exp.
+ 
+ proc gcc-dg-test-1 { target_compile prog do_what extra_tool_flags } {
+@@ -176,6 +278,7 @@ proc gcc-dg-test-1 { target_compile prog do_what extra_tool_flags } {
+ 	}
+     }
+ 
++    append finalcode [schedule-cleanups "$options $extra_tool_flags"]
+     if { $extra_tool_flags != "" } {
+ 	lappend options "additional_flags=$extra_tool_flags"
+     }
+@@ -527,27 +630,6 @@ proc cleanup-repo-files { } {
+     }
+ }
+ 
+-# Remove compiler-generated RTL dump files for the current test.
+-#
+-# SUFFIX is the filename suffix pattern.
+-proc cleanup-rtl-dump { suffix } {
+-  cleanup-dump "\[0-9\]\[0-9\]\[0-9\]r.$suffix"
+-}
+-
+-# Remove a specific tree dump file for the current test.
+-#
+-# SUFFIX is the tree dump file suffix pattern.
+-proc cleanup-tree-dump { suffix } {
+-  cleanup-dump "\[0-9\]\[0-9\]\[0-9\]t.$suffix"
+-}
+-
+-# Remove a specific ipa dump file for the current test.
+-#
+-# SUFFIX is the ipa dump file suffix pattern.
+-proc cleanup-ipa-dump { suffix } {
+-  cleanup-dump "\[0-9\]\[0-9\]\[0-9\]i.$suffix"
+-}
+-
+ # Remove a final insns dump file for the current test.
+ proc cleanup-final-insns-dump { } {
+     set testcase [testname-for-summary]
+@@ -592,30 +674,6 @@ proc cleanup-ada-spec { } {
+     }
+ }
+ 
+-# Remove all dump files with the provided suffix.
+-proc cleanup-dump { suffix } {
+-    global additional_sources_used
+-    set testcase [testname-for-summary]
+-    # The name might include a list of options; extract the file name.
+-    set src [file tail [lindex $testcase 0]]
+-    remove-build-file "[file tail $src].$suffix"
+-    remove-build-file "[file rootname [file tail $src]].exe.$suffix"
+-    remove-build-file "[file rootname [file tail $src]].exe.ltrans\[0-9\]*.$suffix"
+-    # -fcompare-debug dumps
+-    remove-build-file "[file tail $src].gk.$suffix"
+-
+-    # Clean up dump files for additional source files.
+-    if [info exists additional_sources_used] {
+-	foreach srcfile $additional_sources_used {
+-	    remove-build-file "[file tail $srcfile].$suffix"
+-	    remove-build-file "[file rootname [file tail $srcfile]].exe.$suffix"
+-	    remove-build-file "[file rootname [file tail $srcfile]].exe.ltrans\[0-9\]*.$suffix"
+-	    # -fcompare-debug dumps
+-	    remove-build-file "[file tail $srcfile].gk.$suffix"
+-	}
+-    }
+-}
+-
+ # Remove files kept by --save-temps for the current test.
+ #
+ # Currently this is only .i, .ii, .s and .o files, but more can be added
+@@ -658,6 +716,24 @@ proc cleanup-saved-temps { args } {
+     }
+ }
+ 
++
++# Files to be kept after cleanup of --save-temps for the current test.
++# ARGS is a list of suffixes to NOT delete.
++proc dg-keep-saved-temps { args } {
++    global keep_saved_temps_suffixes
++    set keep_saved_temps_suffixes {}
++
++    # add the to-be-kept suffixes
++    foreach suffix {".mii" ".ii" ".i" ".s" ".o" ".gkd" ".res" ".ltrans.out"} {
++	if {[lsearch $args $suffix] >= 0} {
++	    lappend keep_saved_temps_suffixes $suffix
++	}
++    }
++    if { [llength keep_saved_temps_suffixes] < 1 } {
++	error "dg-keep-saved-temps ${args} did not match any known suffix"
++    }
++}
++
+ # Scan Fortran modules for a given regexp.
+ #
+ # Argument 0 is the module name
+@@ -760,6 +836,7 @@ if { [info procs saved-dg-test] == [list] } {
+ 	global shouldfail
+ 	global testname_with_flags
+ 	global set_target_env_var
++	global keep_saved_temps_suffixes
+ 
+ 	if { [ catch { eval saved-dg-test $args } errmsg ] } {
+ 	    set saved_info $errorInfo
+@@ -785,6 +862,9 @@ if { [info procs saved-dg-test] == [list] } {
+ 	if [info exists set_target_env_var] {
+ 	    unset set_target_env_var
+ 	}
++	if [info exists keep_saved_temps_suffixes] {
++	    unset keep_saved_temps_suffixes
++	}
+ 	unset_timeout_vars
+ 	if [info exists compiler_conditional_xfail_data] {
+ 	    unset compiler_conditional_xfail_data
+--- a/src/gcc/testsuite/lib/mpx-dg.exp
++++ b/src/gcc/testsuite/lib/mpx-dg.exp
+@@ -142,4 +142,5 @@ proc mpx_finish { args } {
+     }
+     set ld_library_path $mpx_saved_library_path
+     set_ld_library_path_env_vars
++    clear_effective_target_cache
+ }
+--- a/src/gcc/testsuite/lib/profopt.exp
++++ b/src/gcc/testsuite/lib/profopt.exp
+@@ -304,6 +304,9 @@ proc profopt-execute { src } {
+ 	    return
+ 	}
+ 
++	# schedule removal of dump files et al
++	# Do this before the call below destroys additional_sources..
++	append use_final_code [schedule-cleanups "$option $extra_flags"]
+         set extra_options [dg-additional-files-options "" "$src"]
+ 
+ 	# Remove old profiling data files.  Make sure additional_sources_used is
+--- a/src/gcc/testsuite/lib/target-supports.exp
++++ b/src/gcc/testsuite/lib/target-supports.exp
+@@ -117,6 +117,7 @@ proc current_target_name { } {
+ 
+ proc check_cached_effective_target { prop args } {
+     global et_cache
++    global et_prop_list
+ 
+     set target [current_target_name]
+     if {![info exists et_cache($prop,target)]
+@@ -124,12 +125,40 @@ proc check_cached_effective_target { prop args } {
+ 	verbose "check_cached_effective_target $prop: checking $target" 2
+ 	set et_cache($prop,target) $target
+ 	set et_cache($prop,value) [uplevel eval $args]
++	if {![info exists et_prop_list]
++	    || [lsearch $et_prop_list $prop] < 0} {
++	    lappend et_prop_list $prop
++	}
++	verbose "check_cached_effective_target cached list is now: $et_prop_list" 2
+     }
+     set value $et_cache($prop,value)
+     verbose "check_cached_effective_target $prop: returning $value for $target" 2
+     return $value
+ }
+ 
++# Clear effective-target cache. This is useful after testing
++# effective-target features and overriding TEST_ALWAYS_FLAGS and/or
++# ALWAYS_CXXFLAGS.
++# If one changes ALWAYS_CXXFLAGS or TEST_ALWAYS_FLAGS then they should
++# do a clear_effective_target_cache at the end as the target cache can
++# make decisions based upon the flags, and those decisions need to be
++# redone when the flags change. An example of this is the
++# asan_init/asan_finish pair.
++
++proc clear_effective_target_cache { } {
++    global et_cache
++    global et_prop_list
++
++    if {[info exists et_prop_list]} {
++	verbose "clear_effective_target_cache: $et_prop_list" 2
++	foreach prop $et_prop_list {
++	    unset et_cache($prop,value)
++	    unset et_cache($prop,target)
++	}
++	unset et_prop_list
++    }
++}
++
+ # Like check_compile, but delete the output file and return true if the
+ # compiler printed no messages.
+ proc check_no_compiler_messages_nocache {args} {
+@@ -2687,7 +2716,11 @@ proc check_effective_target_arm_neon_fp16_ok_nocache { } {
+     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"} {
++		       "-mfpu=neon-fp16 -mfloat-abi=softfp"
++		       "-mfp16-format=ieee"
++		       "-mfloat-abi=softfp -mfp16-format=ieee"
++		       "-mfpu=neon-fp16 -mfp16-format=ieee"
++		       "-mfpu=neon-fp16 -mfloat-abi=softfp -mfp16-format=ieee"} {
+ 	    if { [check_no_compiler_messages_nocache arm_neon_fp_16_ok object {
+ 		#include "arm_neon.h"
+ 		float16x4_t
+@@ -2710,6 +2743,21 @@ proc check_effective_target_arm_neon_fp16_ok { } {
+ 		check_effective_target_arm_neon_fp16_ok_nocache]
+ }
+ 
++proc check_effective_target_arm_neon_fp16_hw { } {
++    if {! [check_effective_target_arm_neon_fp16_ok] } {
++	return 0
++    }
++    global et_arm_neon_fp16_flags
++    check_runtime_nocache arm_neon_fp16_hw {
++	int
++	main (int argc, char **argv)
++	{
++	  asm ("vcvt.f32.f16 q1, d0");
++	  return 0;
++	}
++    } $et_arm_neon_fp16_flags
++}
++
+ proc add_options_for_arm_neon_fp16 { flags } {
+     if { ! [check_effective_target_arm_neon_fp16_ok] } {
+ 	return "$flags"
+@@ -4675,6 +4723,27 @@ proc check_effective_target_vect_call_copysignf { } {
+     return $et_vect_call_copysignf_saved
+ }
+ 
++# Return 1 if the target supports hardware square root instructions.
++
++proc check_effective_target_sqrt_insn { } {
++    global et_sqrt_insn_saved
++
++    if [info exists et_sqrt_insn_saved] {
++	verbose "check_effective_target_hw_sqrt: using cached result" 2
++    } else {
++	set et_sqrt_insn_saved 0
++	if { [istarget x86_64-*-*]
++	     || [istarget powerpc*-*-*]
++	     || [istarget aarch64*-*-*]
++	     || ([istarget arm*-*-*] && [check_effective_target_arm_vfp_ok]) } {
++	   set et_sqrt_insn_saved 1
++	}
++    }
++
++    verbose "check_effective_target_hw_sqrt: returning et_sqrt_insn_saved" 2
++    return $et_sqrt_insn_saved
++}
++
+ # Return 1 if the target supports vector sqrtf calls.
+ 
+ proc check_effective_target_vect_call_sqrtf { } {
+--- a/src/gcc/testsuite/lib/tsan-dg.exp
++++ b/src/gcc/testsuite/lib/tsan-dg.exp
+@@ -149,4 +149,5 @@ proc tsan_finish { args } {
+     }
+     set ld_library_path $tsan_saved_library_path
+     set_ld_library_path_env_vars
++    clear_effective_target_cache
+ }
+--- a/src/gcc/testsuite/lib/ubsan-dg.exp
++++ b/src/gcc/testsuite/lib/ubsan-dg.exp
+@@ -121,4 +121,5 @@ proc ubsan_finish { args } {
+     }
+     set ld_library_path $ubsan_saved_library_path
+     set_ld_library_path_env_vars
++    clear_effective_target_cache
+ }
+--- a/src/gcc/testsuite/obj-c++.dg/encode-2.mm
++++ b/src/gcc/testsuite/obj-c++.dg/encode-2.mm
+@@ -24,5 +24,4 @@ const char *enc3 = @encode(anonymous);
+ 
+ /* { dg-final { scan-assembler "{Vec<float>=ffi}" } }  */
+ /* { dg-final { scan-assembler "{Vec<double>=ddi}" } }  */
+-/* { dg-final { scan-file "encode-2.o" "{?={Vec<double>=ddi}{Vec<float>=ffi}fd{Vec<signed char>=cci}i}" } }
+-/* { dg-final cleanup-saved-temps } */
++/* { dg-final { scan-file "encode-2.o" "{?={Vec<double>=ddi}{Vec<float>=ffi}fd{Vec<signed char>=cci}i}" } } */
+--- a/src/gcc/tree-chrec.c
++++ b/src/gcc/tree-chrec.c
+@@ -1178,8 +1178,6 @@ nb_vars_in_chrec (tree chrec)
+     }
+ }
+ 
+-static tree chrec_convert_1 (tree, tree, gimple, bool);
+-
+ /* Converts BASE and STEP of affine scev to TYPE.  LOOP is the loop whose iv
+    the scev corresponds to.  AT_STMT is the statement at that the scev is
+    evaluated.  USE_OVERFLOW_SEMANTICS is true if this function should assume that
+@@ -1254,8 +1252,7 @@ convert_affine_scev (struct loop *loop, tree type,
+ 				use_overflow_semantics))
+     return false;
+ 
+-  new_base = chrec_convert_1 (type, *base, at_stmt,
+-			      use_overflow_semantics);
++  new_base = chrec_convert (type, *base, at_stmt, use_overflow_semantics);
+   /* The step must be sign extended, regardless of the signedness
+      of CT and TYPE.  This only needs to be handled specially when
+      CT is unsigned -- to avoid e.g. unsigned char [100, +, 255]
+@@ -1266,10 +1263,11 @@ convert_affine_scev (struct loop *loop, tree type,
+   if (TYPE_PRECISION (step_type) > TYPE_PRECISION (ct) && TYPE_UNSIGNED (ct))
+     {
+       tree signed_ct = build_nonstandard_integer_type (TYPE_PRECISION (ct), 0);
+-      new_step = chrec_convert_1 (signed_ct, new_step, at_stmt,
+-                                  use_overflow_semantics);
++      new_step = chrec_convert (signed_ct, new_step, at_stmt,
++                                use_overflow_semantics);
+     }
+-  new_step = chrec_convert_1 (step_type, new_step, at_stmt, use_overflow_semantics);
++  new_step = chrec_convert (step_type, new_step, at_stmt,
++			    use_overflow_semantics);
+ 
+   if (automatically_generated_chrec_p (new_base)
+       || automatically_generated_chrec_p (new_step))
+@@ -1306,36 +1304,6 @@ chrec_convert_rhs (tree type, tree chrec, gimple at_stmt)
+    determining a more accurate estimation of the number of iterations.
+    By default AT_STMT could be safely set to NULL_TREE.
+ 
+-   The following rule is always true: TREE_TYPE (chrec) ==
+-   TREE_TYPE (CHREC_LEFT (chrec)) == TREE_TYPE (CHREC_RIGHT (chrec)).
+-   An example of what could happen when adding two chrecs and the type
+-   of the CHREC_RIGHT is different than CHREC_LEFT is:
+-
+-   {(uint) 0, +, (uchar) 10} +
+-   {(uint) 0, +, (uchar) 250}
+-
+-   that would produce a wrong result if CHREC_RIGHT is not (uint):
+-
+-   {(uint) 0, +, (uchar) 4}
+-
+-   instead of
+-
+-   {(uint) 0, +, (uint) 260}
+-*/
+-
+-tree
+-chrec_convert (tree type, tree chrec, gimple at_stmt)
+-{
+-  return chrec_convert_1 (type, chrec, at_stmt, true);
+-}
+-
+-/* Convert CHREC to TYPE.  When the analyzer knows the context in
+-   which the CHREC is built, it sets AT_STMT to the statement that
+-   contains the definition of the analyzed variable, otherwise the
+-   conversion is less accurate: the information is used for
+-   determining a more accurate estimation of the number of iterations.
+-   By default AT_STMT could be safely set to NULL_TREE.
+-
+    USE_OVERFLOW_SEMANTICS is true if this function should assume that
+    the rules for overflow of the given language apply (e.g., that signed
+    arithmetics in C does not overflow) -- i.e., to use them to avoid unnecessary
+@@ -1420,15 +1388,53 @@ keep_cast:
+   return res;
+ }
+ 
++/* Convert CHREC to TYPE.  When the analyzer knows the context in
++   which the CHREC is built, it sets AT_STMT to the statement that
++   contains the definition of the analyzed variable, otherwise the
++   conversion is less accurate: the information is used for
++   determining a more accurate estimation of the number of iterations.
++   By default AT_STMT could be safely set to NULL_TREE.
++
++   The following rule is always true: TREE_TYPE (chrec) ==
++   TREE_TYPE (CHREC_LEFT (chrec)) == TREE_TYPE (CHREC_RIGHT (chrec)).
++   An example of what could happen when adding two chrecs and the type
++   of the CHREC_RIGHT is different than CHREC_LEFT is:
++
++   {(uint) 0, +, (uchar) 10} +
++   {(uint) 0, +, (uchar) 250}
++
++   that would produce a wrong result if CHREC_RIGHT is not (uint):
++
++   {(uint) 0, +, (uchar) 4}
++
++   instead of
++
++   {(uint) 0, +, (uint) 260}
++
++   USE_OVERFLOW_SEMANTICS is true if this function should assume that
++   the rules for overflow of the given language apply (e.g., that signed
++   arithmetics in C does not overflow) -- i.e., to use them to avoid unnecessary
++   tests, but also to enforce that the result follows them.  */
++
++tree
++chrec_convert (tree type, tree chrec, gimple at_stmt,
++	       bool use_overflow_semantics)
++{
++  return chrec_convert_1 (type, chrec, at_stmt, use_overflow_semantics);
++}
++
+ /* Convert CHREC to TYPE, without regard to signed overflows.  Returns the new
+    chrec if something else than what chrec_convert would do happens, NULL_TREE
+-   otherwise.  */
++   otherwise.  This function set TRUE to variable pointed by FOLD_CONVERSIONS
++   if the result chrec may overflow.  */
+ 
+ tree
+-chrec_convert_aggressive (tree type, tree chrec)
++chrec_convert_aggressive (tree type, tree chrec, bool *fold_conversions)
+ {
+   tree inner_type, left, right, lc, rc, rtype;
+ 
++  gcc_assert (fold_conversions != NULL);
++
+   if (automatically_generated_chrec_p (chrec)
+       || TREE_CODE (chrec) != POLYNOMIAL_CHREC)
+     return NULL_TREE;
+@@ -1437,17 +1443,33 @@ chrec_convert_aggressive (tree type, tree chrec)
+   if (TYPE_PRECISION (type) > TYPE_PRECISION (inner_type))
+     return NULL_TREE;
+ 
++  if (useless_type_conversion_p (type, inner_type))
++    return NULL_TREE;
++
++  if (!*fold_conversions && evolution_function_is_affine_p (chrec))
++    {
++      tree base, step;
++      struct loop *loop;
++
++      loop = get_chrec_loop (chrec);
++      base = CHREC_LEFT (chrec);
++      step = CHREC_RIGHT (chrec);
++      if (convert_affine_scev (loop, type, &base, &step, NULL, true))
++	return build_polynomial_chrec (loop->num, base, step);
++    }
+   rtype = POINTER_TYPE_P (type) ? sizetype : type;
+ 
+   left = CHREC_LEFT (chrec);
+   right = CHREC_RIGHT (chrec);
+-  lc = chrec_convert_aggressive (type, left);
++  lc = chrec_convert_aggressive (type, left, fold_conversions);
+   if (!lc)
+     lc = chrec_convert (type, left, NULL);
+-  rc = chrec_convert_aggressive (rtype, right);
++  rc = chrec_convert_aggressive (rtype, right, fold_conversions);
+   if (!rc)
+     rc = chrec_convert (rtype, right, NULL);
+ 
++  *fold_conversions = true;
++
+   return build_polynomial_chrec (CHREC_VARIABLE (chrec), lc, rc);
+ }
+ 
+--- a/src/gcc/tree-chrec.h
++++ b/src/gcc/tree-chrec.h
+@@ -59,9 +59,9 @@ enum ev_direction scev_direction (const_tree);
+ extern tree chrec_fold_plus (tree, tree, tree);
+ extern tree chrec_fold_minus (tree, tree, tree);
+ extern tree chrec_fold_multiply (tree, tree, tree);
+-extern tree chrec_convert (tree, tree, gimple);
++extern tree chrec_convert (tree, tree, gimple, bool = true);
+ extern tree chrec_convert_rhs (tree, tree, gimple);
+-extern tree chrec_convert_aggressive (tree, tree);
++extern tree chrec_convert_aggressive (tree, tree, bool *);
+ 
+ /* Operations.  */
+ extern tree chrec_apply (unsigned, tree, tree);
+--- a/src/gcc/tree-pass.h
++++ b/src/gcc/tree-pass.h
+@@ -380,6 +380,7 @@ extern gimple_opt_pass *make_pass_loop_prefetch (gcc::context *ctxt);
+ extern gimple_opt_pass *make_pass_iv_optimize (gcc::context *ctxt);
+ extern gimple_opt_pass *make_pass_tree_loop_done (gcc::context *ctxt);
+ extern gimple_opt_pass *make_pass_ch (gcc::context *ctxt);
++extern gimple_opt_pass *make_pass_ch_vect (gcc::context *ctxt);
+ extern gimple_opt_pass *make_pass_ccp (gcc::context *ctxt);
+ extern gimple_opt_pass *make_pass_phi_only_cprop (gcc::context *ctxt);
+ extern gimple_opt_pass *make_pass_build_ssa (gcc::context *ctxt);
+--- a/src/gcc/tree-scalar-evolution.c
++++ b/src/gcc/tree-scalar-evolution.c
+@@ -2143,7 +2143,7 @@ analyze_scalar_evolution_in_loop (struct loop *wrto_loop, struct loop *use_loop,
+   /* We cannot just do
+ 
+      tmp = analyze_scalar_evolution (use_loop, version);
+-     ev = resolve_mixers (wrto_loop, tmp);
++     ev = resolve_mixers (wrto_loop, tmp, folded_casts);
+ 
+      as resolve_mixers would query the scalar evolution with respect to
+      wrto_loop.  For example, in the situation described in the function
+@@ -2152,9 +2152,9 @@ analyze_scalar_evolution_in_loop (struct loop *wrto_loop, struct loop *use_loop,
+ 
+      analyze_scalar_evolution (use_loop, version) = k2
+ 
+-     and resolve_mixers (loop1, k2) finds that the value of k2 in loop 1
+-     is 100, which is a wrong result, since we are interested in the
+-     value in loop 3.
++     and resolve_mixers (loop1, k2, folded_casts) finds that the value of
++     k2 in loop 1 is 100, which is a wrong result, since we are interested
++     in the value in loop 3.
+ 
+      Instead, we need to proceed from use_loop to wrto_loop loop by loop,
+      each time checking that there is no evolution in the inner loop.  */
+@@ -2164,10 +2164,7 @@ analyze_scalar_evolution_in_loop (struct loop *wrto_loop, struct loop *use_loop,
+   while (1)
+     {
+       tmp = analyze_scalar_evolution (use_loop, ev);
+-      ev = resolve_mixers (use_loop, tmp);
+-
+-      if (folded_casts && tmp != ev)
+-	*folded_casts = true;
++      ev = resolve_mixers (use_loop, tmp, folded_casts);
+ 
+       if (use_loop == wrto_loop)
+ 	return ev;
+@@ -2290,7 +2287,7 @@ loop_closed_phi_def (tree var)
+ }
+ 
+ static tree instantiate_scev_r (basic_block, struct loop *, struct loop *,
+-				tree, bool, int);
++				tree, bool *, int);
+ 
+ /* Analyze all the parameters of the chrec, between INSTANTIATE_BELOW
+    and EVOLUTION_LOOP, that were left under a symbolic form.
+@@ -2299,9 +2296,10 @@ static tree instantiate_scev_r (basic_block, struct loop *, struct loop *,
+ 
+    CACHE is the cache of already instantiated values.
+ 
+-   FOLD_CONVERSIONS should be set to true when the conversions that
+-   may wrap in signed/pointer type are folded, as long as the value of
+-   the chrec is preserved.
++   Variable pointed by FOLD_CONVERSIONS is set to TRUE when the
++   conversions that may wrap in signed/pointer type are folded, as long
++   as the value of the chrec is preserved.  If FOLD_CONVERSIONS is NULL
++   then we don't do such fold.
+ 
+    SIZE_EXPR is used for computing the size of the expression to be
+    instantiated, and to stop if it exceeds some limit.  */
+@@ -2310,7 +2308,7 @@ static tree
+ instantiate_scev_name (basic_block instantiate_below,
+ 		       struct loop *evolution_loop, struct loop *inner_loop,
+ 		       tree chrec,
+-		       bool fold_conversions,
++		       bool *fold_conversions,
+ 		       int size_expr)
+ {
+   tree res;
+@@ -2404,9 +2402,10 @@ instantiate_scev_name (basic_block instantiate_below,
+ 
+    CACHE is the cache of already instantiated values.
+ 
+-   FOLD_CONVERSIONS should be set to true when the conversions that
+-   may wrap in signed/pointer type are folded, as long as the value of
+-   the chrec is preserved.
++   Variable pointed by FOLD_CONVERSIONS is set to TRUE when the
++   conversions that may wrap in signed/pointer type are folded, as long
++   as the value of the chrec is preserved.  If FOLD_CONVERSIONS is NULL
++   then we don't do such fold.
+ 
+    SIZE_EXPR is used for computing the size of the expression to be
+    instantiated, and to stop if it exceeds some limit.  */
+@@ -2414,7 +2413,7 @@ instantiate_scev_name (basic_block instantiate_below,
+ static tree
+ instantiate_scev_poly (basic_block instantiate_below,
+ 		       struct loop *evolution_loop, struct loop *,
+-		       tree chrec, bool fold_conversions, int size_expr)
++		       tree chrec, bool *fold_conversions, int size_expr)
+ {
+   tree op1;
+   tree op0 = instantiate_scev_r (instantiate_below, evolution_loop,
+@@ -2448,9 +2447,10 @@ instantiate_scev_poly (basic_block instantiate_below,
+ 
+    CACHE is the cache of already instantiated values.
+ 
+-   FOLD_CONVERSIONS should be set to true when the conversions that
+-   may wrap in signed/pointer type are folded, as long as the value of
+-   the chrec is preserved.
++   Variable pointed by FOLD_CONVERSIONS is set to TRUE when the
++   conversions that may wrap in signed/pointer type are folded, as long
++   as the value of the chrec is preserved.  If FOLD_CONVERSIONS is NULL
++   then we don't do such fold.
+ 
+    SIZE_EXPR is used for computing the size of the expression to be
+    instantiated, and to stop if it exceeds some limit.  */
+@@ -2460,7 +2460,7 @@ instantiate_scev_binary (basic_block instantiate_below,
+ 			 struct loop *evolution_loop, struct loop *inner_loop,
+ 			 tree chrec, enum tree_code code,
+ 			 tree type, tree c0, tree c1,
+-			 bool fold_conversions, int size_expr)
++			 bool *fold_conversions, int size_expr)
+ {
+   tree op1;
+   tree op0 = instantiate_scev_r (instantiate_below, evolution_loop, inner_loop,
+@@ -2506,9 +2506,10 @@ instantiate_scev_binary (basic_block instantiate_below,
+ 
+    CACHE is the cache of already instantiated values.
+ 
+-   FOLD_CONVERSIONS should be set to true when the conversions that
+-   may wrap in signed/pointer type are folded, as long as the value of
+-   the chrec is preserved.
++   Variable pointed by FOLD_CONVERSIONS is set to TRUE when the
++   conversions that may wrap in signed/pointer type are folded, as long
++   as the value of the chrec is preserved.  If FOLD_CONVERSIONS is NULL
++   then we don't do such fold.
+ 
+    SIZE_EXPR is used for computing the size of the expression to be
+    instantiated, and to stop if it exceeds some limit.  */
+@@ -2516,7 +2517,7 @@ instantiate_scev_binary (basic_block instantiate_below,
+ static tree
+ instantiate_array_ref (basic_block instantiate_below,
+ 		       struct loop *evolution_loop, struct loop *inner_loop,
+-		       tree chrec, bool fold_conversions, int size_expr)
++		       tree chrec, bool *fold_conversions, int size_expr)
+ {
+   tree res;
+   tree index = TREE_OPERAND (chrec, 1);
+@@ -2543,9 +2544,10 @@ instantiate_array_ref (basic_block instantiate_below,
+ 
+    CACHE is the cache of already instantiated values.
+ 
+-   FOLD_CONVERSIONS should be set to true when the conversions that
+-   may wrap in signed/pointer type are folded, as long as the value of
+-   the chrec is preserved.
++   Variable pointed by FOLD_CONVERSIONS is set to TRUE when the
++   conversions that may wrap in signed/pointer type are folded, as long
++   as the value of the chrec is preserved.  If FOLD_CONVERSIONS is NULL
++   then we don't do such fold.
+ 
+    SIZE_EXPR is used for computing the size of the expression to be
+    instantiated, and to stop if it exceeds some limit.  */
+@@ -2554,7 +2556,7 @@ static tree
+ instantiate_scev_convert (basic_block instantiate_below,
+ 			  struct loop *evolution_loop, struct loop *inner_loop,
+ 			  tree chrec, tree type, tree op,
+-			  bool fold_conversions, int size_expr)
++			  bool *fold_conversions, int size_expr)
+ {
+   tree op0 = instantiate_scev_r (instantiate_below, evolution_loop,
+ 				 inner_loop, op,
+@@ -2565,19 +2567,21 @@ instantiate_scev_convert (basic_block instantiate_below,
+ 
+   if (fold_conversions)
+     {
+-      tree tmp = chrec_convert_aggressive (type, op0);
++      tree tmp = chrec_convert_aggressive (type, op0, fold_conversions);
+       if (tmp)
+ 	return tmp;
+-    }
+ 
+-  if (chrec && op0 == op)
+-    return chrec;
++      /* If we used chrec_convert_aggressive, we can no longer assume that
++	 signed chrecs do not overflow, as chrec_convert does, so avoid
++	 calling it in that case.  */
++      if (*fold_conversions)
++	{
++	  if (chrec && op0 == op)
++	    return chrec;
+ 
+-  /* If we used chrec_convert_aggressive, we can no longer assume that
+-     signed chrecs do not overflow, as chrec_convert does, so avoid
+-     calling it in that case.  */
+-  if (fold_conversions)
+-    return fold_convert (type, op0);
++	  return fold_convert (type, op0);
++	}
++    }
+ 
+   return chrec_convert (type, op0, NULL);
+ }
+@@ -2591,9 +2595,10 @@ instantiate_scev_convert (basic_block instantiate_below,
+ 
+    CACHE is the cache of already instantiated values.
+ 
+-   FOLD_CONVERSIONS should be set to true when the conversions that
+-   may wrap in signed/pointer type are folded, as long as the value of
+-   the chrec is preserved.
++   Variable pointed by FOLD_CONVERSIONS is set to TRUE when the
++   conversions that may wrap in signed/pointer type are folded, as long
++   as the value of the chrec is preserved.  If FOLD_CONVERSIONS is NULL
++   then we don't do such fold.
+ 
+    SIZE_EXPR is used for computing the size of the expression to be
+    instantiated, and to stop if it exceeds some limit.  */
+@@ -2603,7 +2608,7 @@ instantiate_scev_not (basic_block instantiate_below,
+ 		      struct loop *evolution_loop, struct loop *inner_loop,
+ 		      tree chrec,
+ 		      enum tree_code code, tree type, tree op,
+-		      bool fold_conversions, int size_expr)
++		      bool *fold_conversions, int size_expr)
+ {
+   tree op0 = instantiate_scev_r (instantiate_below, evolution_loop,
+ 				 inner_loop, op,
+@@ -2641,9 +2646,10 @@ instantiate_scev_not (basic_block instantiate_below,
+ 
+    CACHE is the cache of already instantiated values.
+ 
+-   FOLD_CONVERSIONS should be set to true when the conversions that
+-   may wrap in signed/pointer type are folded, as long as the value of
+-   the chrec is preserved.
++   Variable pointed by FOLD_CONVERSIONS is set to TRUE when the
++   conversions that may wrap in signed/pointer type are folded, as long
++   as the value of the chrec is preserved.  If FOLD_CONVERSIONS is NULL
++   then we don't do such fold.
+ 
+    SIZE_EXPR is used for computing the size of the expression to be
+    instantiated, and to stop if it exceeds some limit.  */
+@@ -2652,7 +2658,7 @@ static tree
+ instantiate_scev_3 (basic_block instantiate_below,
+ 		    struct loop *evolution_loop, struct loop *inner_loop,
+ 		    tree chrec,
+-		    bool fold_conversions, int size_expr)
++		    bool *fold_conversions, int size_expr)
+ {
+   tree op1, op2;
+   tree op0 = instantiate_scev_r (instantiate_below, evolution_loop,
+@@ -2689,9 +2695,10 @@ instantiate_scev_3 (basic_block instantiate_below,
+ 
+    CACHE is the cache of already instantiated values.
+ 
+-   FOLD_CONVERSIONS should be set to true when the conversions that
+-   may wrap in signed/pointer type are folded, as long as the value of
+-   the chrec is preserved.
++   Variable pointed by FOLD_CONVERSIONS is set to TRUE when the
++   conversions that may wrap in signed/pointer type are folded, as long
++   as the value of the chrec is preserved.  If FOLD_CONVERSIONS is NULL
++   then we don't do such fold.
+ 
+    SIZE_EXPR is used for computing the size of the expression to be
+    instantiated, and to stop if it exceeds some limit.  */
+@@ -2700,7 +2707,7 @@ static tree
+ instantiate_scev_2 (basic_block instantiate_below,
+ 		    struct loop *evolution_loop, struct loop *inner_loop,
+ 		    tree chrec,
+-		    bool fold_conversions, int size_expr)
++		    bool *fold_conversions, int size_expr)
+ {
+   tree op1;
+   tree op0 = instantiate_scev_r (instantiate_below, evolution_loop,
+@@ -2729,9 +2736,10 @@ instantiate_scev_2 (basic_block instantiate_below,
+ 
+    CACHE is the cache of already instantiated values.
+ 
+-   FOLD_CONVERSIONS should be set to true when the conversions that
+-   may wrap in signed/pointer type are folded, as long as the value of
+-   the chrec is preserved.
++   Variable pointed by FOLD_CONVERSIONS is set to TRUE when the
++   conversions that may wrap in signed/pointer type are folded, as long
++   as the value of the chrec is preserved.  If FOLD_CONVERSIONS is NULL
++   then we don't do such fold.
+ 
+    SIZE_EXPR is used for computing the size of the expression to be
+    instantiated, and to stop if it exceeds some limit.  */
+@@ -2740,7 +2748,7 @@ static tree
+ instantiate_scev_1 (basic_block instantiate_below,
+ 		    struct loop *evolution_loop, struct loop *inner_loop,
+ 		    tree chrec,
+-		    bool fold_conversions, int size_expr)
++		    bool *fold_conversions, int size_expr)
+ {
+   tree op0 = instantiate_scev_r (instantiate_below, evolution_loop,
+ 				 inner_loop, TREE_OPERAND (chrec, 0),
+@@ -2762,9 +2770,10 @@ instantiate_scev_1 (basic_block instantiate_below,
+ 
+    CACHE is the cache of already instantiated values.
+ 
+-   FOLD_CONVERSIONS should be set to true when the conversions that
+-   may wrap in signed/pointer type are folded, as long as the value of
+-   the chrec is preserved.
++   Variable pointed by FOLD_CONVERSIONS is set to TRUE when the
++   conversions that may wrap in signed/pointer type are folded, as long
++   as the value of the chrec is preserved.  If FOLD_CONVERSIONS is NULL
++   then we don't do such fold.
+ 
+    SIZE_EXPR is used for computing the size of the expression to be
+    instantiated, and to stop if it exceeds some limit.  */
+@@ -2773,7 +2782,7 @@ static tree
+ instantiate_scev_r (basic_block instantiate_below,
+ 		    struct loop *evolution_loop, struct loop *inner_loop,
+ 		    tree chrec,
+-		    bool fold_conversions, int size_expr)
++		    bool *fold_conversions, int size_expr)
+ {
+   /* Give up if the expression is larger than the MAX that we allow.  */
+   if (size_expr++ > PARAM_VALUE (PARAM_SCEV_MAX_EXPR_SIZE))
+@@ -2898,7 +2907,7 @@ instantiate_scev (basic_block instantiate_below, struct loop *evolution_loop,
+     }
+ 
+   res = instantiate_scev_r (instantiate_below, evolution_loop,
+-			    NULL, chrec, false, 0);
++			    NULL, chrec, NULL, 0);
+ 
+   if (destr)
+     {
+@@ -2922,9 +2931,10 @@ instantiate_scev (basic_block instantiate_below, struct loop *evolution_loop,
+    of an expression.  */
+ 
+ tree
+-resolve_mixers (struct loop *loop, tree chrec)
++resolve_mixers (struct loop *loop, tree chrec, bool *folded_casts)
+ {
+   bool destr = false;
++  bool fold_conversions = false;
+   if (!global_cache)
+     {
+       global_cache = new instantiate_cache_type;
+@@ -2932,7 +2942,10 @@ resolve_mixers (struct loop *loop, tree chrec)
+     }
+ 
+   tree ret = instantiate_scev_r (block_before_loop (loop), loop, NULL,
+-				 chrec, true, 0);
++				 chrec, &fold_conversions, 0);
++
++  if (folded_casts && !*folded_casts)
++    *folded_casts = fold_conversions;
+ 
+   if (destr)
+     {
+@@ -3385,7 +3398,8 @@ scev_const_prop (void)
+ 	      && !INTEGRAL_TYPE_P (type))
+ 	    continue;
+ 
+-	  ev = resolve_mixers (loop, analyze_scalar_evolution (loop, name));
++	  ev = resolve_mixers (loop, analyze_scalar_evolution (loop, name),
++			       NULL);
+ 	  if (!is_gimple_min_invariant (ev)
+ 	      || !may_propagate_copy (name, ev))
+ 	    continue;
+--- a/src/gcc/tree-scalar-evolution.h
++++ b/src/gcc/tree-scalar-evolution.h
+@@ -31,7 +31,7 @@ extern void scev_reset_htab (void);
+ extern void scev_finalize (void);
+ extern tree analyze_scalar_evolution (struct loop *, tree);
+ extern tree instantiate_scev (basic_block, struct loop *, tree);
+-extern tree resolve_mixers (struct loop *, tree);
++extern tree resolve_mixers (struct loop *, tree, bool *);
+ extern void gather_stats_on_scev_database (void);
+ extern unsigned int scev_const_prop (void);
+ extern bool expression_expensive_p (tree);
+--- a/src/gcc/tree-ssa-loop-ch.c
++++ b/src/gcc/tree-ssa-loop-ch.c
+@@ -143,12 +143,23 @@ do_while_loop_p (struct loop *loop)
+   return true;
+ }
+ 
+-/* For all loops, copy the condition at the end of the loop body in front
+-   of the loop.  This is beneficial since it increases efficiency of
+-   code motion optimizations.  It also saves one jump on entry to the loop.  */
+-
+ namespace {
+ 
++/* Common superclass for both header-copying phases.  */
++class ch_base : public gimple_opt_pass
++{
++  protected:
++    ch_base (pass_data data, gcc::context *ctxt)
++      : gimple_opt_pass (data, ctxt)
++    {}
++
++  /* Copies headers of all loops in FUN for which process_loop_p is true.  */
++  unsigned int copy_headers (function *fun);
++
++  /* Return true to copy headers of LOOP or false to skip.  */
++  virtual bool process_loop_p (struct loop *loop) = 0;
++};
++
+ const pass_data pass_data_ch =
+ {
+   GIMPLE_PASS, /* type */
+@@ -162,21 +173,68 @@ const pass_data pass_data_ch =
+   0, /* todo_flags_finish */
+ };
+ 
+-class pass_ch : public gimple_opt_pass
++class pass_ch : public ch_base
+ {
+ public:
+   pass_ch (gcc::context *ctxt)
+-    : gimple_opt_pass (pass_data_ch, ctxt)
++    : ch_base (pass_data_ch, ctxt)
+   {}
+ 
+   /* opt_pass methods: */
+   virtual bool gate (function *) { return flag_tree_ch != 0; }
++  
++  /* Initialize and finalize loop structures, copying headers inbetween.  */
+   virtual unsigned int execute (function *);
+ 
++protected:
++  /* ch_base method: */
++  virtual bool process_loop_p (struct loop *loop);
+ }; // class pass_ch
+ 
++const pass_data pass_data_ch_vect =
++{
++  GIMPLE_PASS, /* type */
++  "ch_vect", /* name */
++  OPTGROUP_LOOP, /* optinfo_flags */
++  TV_TREE_CH, /* tv_id */
++  ( PROP_cfg | PROP_ssa ), /* properties_required */
++  0, /* properties_provided */
++  0, /* properties_destroyed */
++  0, /* todo_flags_start */
++  0, /* todo_flags_finish */
++};
++
++/* This is a more aggressive version of the same pass, designed to run just
++   before if-conversion and vectorization, to put more loops into the form
++   required for those phases.  */
++class pass_ch_vect : public ch_base
++{
++public:
++  pass_ch_vect (gcc::context *ctxt)
++    : ch_base (pass_data_ch_vect, ctxt)
++  {}
++
++  /* opt_pass methods: */
++  virtual bool gate (function *fun)
++  {
++    return flag_tree_ch != 0
++	   && (flag_tree_loop_vectorize != 0 || fun->has_force_vectorize_loops);
++  }
++  
++  /* Just copy headers, no initialization/finalization of loop structures.  */
++  virtual unsigned int execute (function *);
++
++protected:
++  /* ch_base method: */
++  virtual bool process_loop_p (struct loop *loop);
++}; // class pass_ch_vect
++
++/* For all loops, copy the condition at the end of the loop body in front
++   of the loop.  This is beneficial since it increases efficiency of
++   code motion optimizations.  It also saves one jump on entry to the loop.  */
++
+ unsigned int
+-pass_ch::execute (function *fun)
++ch_base::copy_headers (function *fun)
+ {
+   struct loop *loop;
+   basic_block header;
+@@ -186,13 +244,8 @@ pass_ch::execute (function *fun)
+   unsigned bbs_size;
+   bool changed = false;
+ 
+-  loop_optimizer_init (LOOPS_HAVE_PREHEADERS
+-		       | LOOPS_HAVE_SIMPLE_LATCHES);
+   if (number_of_loops (fun) <= 1)
+-    {
+-      loop_optimizer_finalize ();
+       return 0;
+-    }
+ 
+   bbs = XNEWVEC (basic_block, n_basic_blocks_for_fn (fun));
+   copied_bbs = XNEWVEC (basic_block, n_basic_blocks_for_fn (fun));
+@@ -209,7 +262,7 @@ pass_ch::execute (function *fun)
+ 	 written as such, or because jump threading transformed it into one),
+ 	 we might be in fact peeling the first iteration of the loop.  This
+ 	 in general is not a good idea.  */
+-      if (do_while_loop_p (loop))
++      if (!process_loop_p (loop))
+ 	continue;
+ 
+       /* Iterate the header copying up to limit; this takes care of the cases
+@@ -296,17 +349,88 @@ pass_ch::execute (function *fun)
+       changed = true;
+     }
+ 
+-  update_ssa (TODO_update_ssa);
++  if (changed)
++    update_ssa (TODO_update_ssa);
+   free (bbs);
+   free (copied_bbs);
+ 
+-  loop_optimizer_finalize ();
+   return changed ? TODO_cleanup_cfg : 0;
+ }
+ 
++/* Initialize the loop structures we need, and finalize after.  */
++
++unsigned int
++pass_ch::execute (function *fun)
++{
++  loop_optimizer_init (LOOPS_HAVE_PREHEADERS
++		       | LOOPS_HAVE_SIMPLE_LATCHES);
++
++  unsigned int res = copy_headers (fun);
++
++  loop_optimizer_finalize ();
++  return res;
++}
++
++/* Assume an earlier phase has already initialized all the loop structures that
++   we need here (and perhaps others too), and that these will be finalized by
++   a later phase.  */
++   
++unsigned int
++pass_ch_vect::execute (function *fun)
++{
++  return copy_headers (fun);
++}
++
++/* Apply header copying according to a very simple test of do-while shape.  */
++
++bool
++pass_ch::process_loop_p (struct loop *loop)
++{
++  return !do_while_loop_p (loop);
++}
++
++/* Apply header-copying to loops where we might enable vectorization.  */
++
++bool
++pass_ch_vect::process_loop_p (struct loop *loop)
++{
++  if (!flag_tree_vectorize && !loop->force_vectorize)
++    return false;
++
++  if (loop->dont_vectorize)
++    return false;
++
++  if (!do_while_loop_p (loop))
++    return true;
++
++ /* The vectorizer won't handle anything with multiple exits, so skip.  */
++  edge exit = single_exit (loop);
++  if (!exit)
++    return false;
++
++  /* Copy headers iff there looks to be code in the loop after the exit block,
++     i.e. the exit block has an edge to another block (besides the latch,
++     which should be empty).  */
++  edge_iterator ei;
++  edge e;
++  FOR_EACH_EDGE (e, ei, exit->src->succs)
++    if (!loop_exit_edge_p (loop, e)
++	&& e->dest != loop->header
++	&& e->dest != loop->latch)
++      return true;
++
++  return false;
++}
++
+ } // anon namespace
+ 
+ gimple_opt_pass *
++make_pass_ch_vect (gcc::context *ctxt)
++{
++  return new pass_ch_vect (ctxt);
++}
++
++gimple_opt_pass *
+ make_pass_ch (gcc::context *ctxt)
+ {
+   return new pass_ch (ctxt);
+--- a/src/gcc/tree-ssa-loop-ivopts.c
++++ b/src/gcc/tree-ssa-loop-ivopts.c
+@@ -171,9 +171,10 @@ struct iv
+   tree base_object;	/* A memory object to that the induction variable points.  */
+   tree step;		/* Step of the iv (constant only).  */
+   tree ssa_name;	/* The ssa name with the value.  */
++  unsigned use_id;	/* The identifier in the use if it is the case.  */
+   bool biv_p;		/* Is it a biv?  */
+   bool have_use_for;	/* Do we already have a use for it?  */
+-  unsigned use_id;	/* The identifier in the use if it is the case.  */
++  bool no_overflow;	/* True if the iv doesn't overflow.  */
+ };
+ 
+ /* Per-ssa version information (induction variable descriptions, etc.).  */
+@@ -226,6 +227,7 @@ struct cost_pair
+ struct iv_use
+ {
+   unsigned id;		/* The id of the use.  */
++  unsigned sub_id;	/* The id of the sub use.  */
+   enum use_type type;	/* Type of the use.  */
+   struct iv *iv;	/* The induction variable it is based on.  */
+   gimple stmt;		/* Statement in that it occurs.  */
+@@ -239,6 +241,11 @@ struct iv_use
+ 
+   struct iv_cand *selected;
+ 			/* The selected candidate.  */
++
++  struct iv_use *next;	/* The next sub use.  */
++  tree addr_base;	/* Base address with const offset stripped.  */
++  unsigned HOST_WIDE_INT addr_offset;
++			/* Const offset stripped from base address.  */
+ };
+ 
+ /* The position where the iv is computed.  */
+@@ -509,9 +516,9 @@ single_dom_exit (struct loop *loop)
+ /* Dumps information about the induction variable IV to FILE.  */
+ 
+ void
+-dump_iv (FILE *file, struct iv *iv)
++dump_iv (FILE *file, struct iv *iv, bool dump_name)
+ {
+-  if (iv->ssa_name)
++  if (iv->ssa_name && dump_name)
+     {
+       fprintf (file, "ssa name ");
+       print_generic_expr (file, iv->ssa_name, TDF_SLIM);
+@@ -555,7 +562,11 @@ dump_iv (FILE *file, struct iv *iv)
+ void
+ dump_use (FILE *file, struct iv_use *use)
+ {
+-  fprintf (file, "use %d\n", use->id);
++  fprintf (file, "use %d", use->id);
++  if (use->sub_id)
++    fprintf (file, ".%d", use->sub_id);
++
++  fprintf (file, "\n");
+ 
+   switch (use->type)
+     {
+@@ -584,7 +595,7 @@ dump_use (FILE *file, struct iv_use *use)
+     print_generic_expr (file, *use->op_p, TDF_SLIM);
+   fprintf (file, "\n");
+ 
+-  dump_iv (file, use->iv);
++  dump_iv (file, use->iv, false);
+ 
+   if (use->related_cands)
+     {
+@@ -604,8 +615,12 @@ dump_uses (FILE *file, struct ivopts_data *data)
+   for (i = 0; i < n_iv_uses (data); i++)
+     {
+       use = iv_use (data, i);
+-
+-      dump_use (file, use);
++      do
++	{
++	  dump_use (file, use);
++	  use = use->next;
++	}
++      while (use);
+       fprintf (file, "\n");
+     }
+ }
+@@ -668,7 +683,7 @@ dump_cand (FILE *file, struct iv_cand *cand)
+       break;
+     }
+ 
+-  dump_iv (file, iv);
++  dump_iv (file, iv, false);
+ }
+ 
+ /* Returns the info for ssa version VER.  */
+@@ -990,10 +1005,10 @@ contain_complex_addr_expr (tree expr)
+ }
+ 
+ /* Allocates an induction variable with given initial value BASE and step STEP
+-   for loop LOOP.  */
++   for loop LOOP.  NO_OVERFLOW implies the iv doesn't overflow.  */
+ 
+ static struct iv *
+-alloc_iv (tree base, tree step)
++alloc_iv (tree base, tree step, bool no_overflow = false)
+ {
+   tree expr = base;
+   struct iv *iv = XCNEW (struct iv);
+@@ -1020,21 +1035,24 @@ alloc_iv (tree base, tree step)
+   iv->have_use_for = false;
+   iv->use_id = 0;
+   iv->ssa_name = NULL_TREE;
++  iv->no_overflow = no_overflow;
+ 
+   return iv;
+ }
+ 
+-/* Sets STEP and BASE for induction variable IV.  */
++/* Sets STEP and BASE for induction variable IV.  NO_OVERFLOW implies the IV
++   doesn't overflow.  */
+ 
+ static void
+-set_iv (struct ivopts_data *data, tree iv, tree base, tree step)
++set_iv (struct ivopts_data *data, tree iv, tree base, tree step,
++	bool no_overflow)
+ {
+   struct version_info *info = name_info (data, iv);
+ 
+   gcc_assert (!info->iv);
+ 
+   bitmap_set_bit (data->relevant, SSA_NAME_VERSION (iv));
+-  info->iv = alloc_iv (base, step);
++  info->iv = alloc_iv (base, step, no_overflow);
+   info->iv->ssa_name = iv;
+ }
+ 
+@@ -1056,31 +1074,12 @@ get_iv (struct ivopts_data *data, tree var)
+ 
+       if (!bb
+ 	  || !flow_bb_inside_loop_p (data->current_loop, bb))
+-	set_iv (data, var, var, build_int_cst (type, 0));
++	set_iv (data, var, var, build_int_cst (type, 0), true);
+     }
+ 
+   return name_info (data, var)->iv;
+ }
+ 
+-/* Determines the step of a biv defined in PHI.  Returns NULL if PHI does
+-   not define a simple affine biv with nonzero step.  */
+-
+-static tree
+-determine_biv_step (gphi *phi)
+-{
+-  struct loop *loop = gimple_bb (phi)->loop_father;
+-  tree name = PHI_RESULT (phi);
+-  affine_iv iv;
+-
+-  if (virtual_operand_p (name))
+-    return NULL_TREE;
+-
+-  if (!simple_iv (loop, loop, name, &iv, true))
+-    return NULL_TREE;
+-
+-  return integer_zerop (iv.step) ? NULL_TREE : iv.step;
+-}
+-
+ /* Return the first non-invariant ssa var found in EXPR.  */
+ 
+ static tree
+@@ -1114,6 +1113,7 @@ static bool
+ find_bivs (struct ivopts_data *data)
+ {
+   gphi *phi;
++  affine_iv iv;
+   tree step, type, base, stop;
+   bool found = false;
+   struct loop *loop = data->current_loop;
+@@ -1126,10 +1126,16 @@ find_bivs (struct ivopts_data *data)
+       if (SSA_NAME_OCCURS_IN_ABNORMAL_PHI (PHI_RESULT (phi)))
+ 	continue;
+ 
+-      step = determine_biv_step (phi);
+-      if (!step)
++      if (virtual_operand_p (PHI_RESULT (phi)))
+ 	continue;
+ 
++      if (!simple_iv (loop, loop, PHI_RESULT (phi), &iv, true))
++	continue;
++
++      if (integer_zerop (iv.step))
++	continue;
++
++      step = iv.step;
+       base = PHI_ARG_DEF_FROM_EDGE (phi, loop_preheader_edge (loop));
+       /* Stop expanding iv base at the first ssa var referred by iv step.
+ 	 Ideally we should stop at any ssa var, because that's expensive
+@@ -1152,7 +1158,7 @@ find_bivs (struct ivopts_data *data)
+ 	    step = fold_convert (type, step);
+ 	}
+ 
+-      set_iv (data, PHI_RESULT (phi), base, step);
++      set_iv (data, PHI_RESULT (phi), base, step, iv.no_overflow);
+       found = true;
+     }
+ 
+@@ -1255,7 +1261,7 @@ find_givs_in_stmt (struct ivopts_data *data, gimple stmt)
+   if (!find_givs_in_stmt_scev (data, stmt, &iv))
+     return;
+ 
+-  set_iv (data, gimple_assign_lhs (stmt), iv.base, iv.step);
++  set_iv (data, gimple_assign_lhs (stmt), iv.base, iv.step, iv.no_overflow);
+ }
+ 
+ /* Finds general ivs in basic block BB.  */
+@@ -1319,36 +1325,83 @@ find_induction_variables (struct ivopts_data *data)
+       EXECUTE_IF_SET_IN_BITMAP (data->relevant, 0, i, bi)
+ 	{
+ 	  if (ver_info (data, i)->iv)
+-	    dump_iv (dump_file, ver_info (data, i)->iv);
++	    dump_iv (dump_file, ver_info (data, i)->iv, true);
+ 	}
+     }
+ 
+   return true;
+ }
+ 
+-/* Records a use of type USE_TYPE at *USE_P in STMT whose value is IV.  */
++/* Records a use of type USE_TYPE at *USE_P in STMT whose value is IV.
++   For address type use, ADDR_BASE is the stripped IV base, ADDR_OFFSET
++   is the const offset stripped from IV base.  For uses of other types,
++   ADDR_BASE and ADDR_OFFSET are zero by default.  */
+ 
+ static struct iv_use *
+ record_use (struct ivopts_data *data, tree *use_p, struct iv *iv,
+-	    gimple stmt, enum use_type use_type)
++	    gimple stmt, enum use_type use_type, tree addr_base = NULL,
++	    unsigned HOST_WIDE_INT addr_offset = 0)
+ {
+   struct iv_use *use = XCNEW (struct iv_use);
+ 
+   use->id = n_iv_uses (data);
++  use->sub_id = 0;
+   use->type = use_type;
+   use->iv = iv;
+   use->stmt = stmt;
+   use->op_p = use_p;
+   use->related_cands = BITMAP_ALLOC (NULL);
++  use->next = NULL;
++  use->addr_base = addr_base;
++  use->addr_offset = addr_offset;
+ 
+-  /* To avoid showing ssa name in the dumps, if it was not reset by the
+-     caller.  */
+-  iv->ssa_name = NULL_TREE;
++  data->iv_uses.safe_push (use);
+ 
+-  if (dump_file && (dump_flags & TDF_DETAILS))
+-    dump_use (dump_file, use);
++  return use;
++}
+ 
+-  data->iv_uses.safe_push (use);
++/* Records a sub use of type USE_TYPE at *USE_P in STMT whose value is IV.
++   The sub use is recorded under the one whose use id is ID_GROUP.  */
++
++static struct iv_use *
++record_sub_use (struct ivopts_data *data, tree *use_p,
++		    struct iv *iv, gimple stmt, enum use_type use_type,
++		    tree addr_base, unsigned HOST_WIDE_INT addr_offset,
++		    unsigned int id_group)
++{
++  struct iv_use *use = XCNEW (struct iv_use);
++  struct iv_use *group = iv_use (data, id_group);
++
++  use->id = group->id;
++  use->sub_id = 0;
++  use->type = use_type;
++  use->iv = iv;
++  use->stmt = stmt;
++  use->op_p = use_p;
++  use->related_cands = NULL;
++  use->addr_base = addr_base;
++  use->addr_offset = addr_offset;
++
++  /* Sub use list is maintained in offset ascending order.  */
++  if (addr_offset <= group->addr_offset)
++    {
++      use->related_cands = group->related_cands;
++      group->related_cands = NULL;
++      use->next = group;
++      data->iv_uses[id_group] = use;
++    }
++  else
++    {
++      struct iv_use *pre;
++      do
++	{
++	  pre = group;
++	  group = group->next;
++	}
++      while (group && addr_offset > group->addr_offset);
++      use->next = pre->next;
++      pre->next = use;
++    }
+ 
+   return use;
+ }
+@@ -1613,6 +1666,7 @@ idx_find_step (tree base, tree *idx, void *data)
+ {
+   struct ifs_ivopts_data *dta = (struct ifs_ivopts_data *) data;
+   struct iv *iv;
++  bool use_overflow_semantics = false;
+   tree step, iv_base, iv_step, lbound, off;
+   struct loop *loop = dta->ivopts_data->current_loop;
+ 
+@@ -1672,9 +1726,12 @@ idx_find_step (tree base, tree *idx, void *data)
+ 
+   iv_base = iv->base;
+   iv_step = iv->step;
++  if (iv->no_overflow && nowrap_type_p (TREE_TYPE (iv_step)))
++    use_overflow_semantics = true;
++
+   if (!convert_affine_scev (dta->ivopts_data->current_loop,
+ 			    sizetype, &iv_base, &iv_step, dta->stmt,
+-			    false))
++			    use_overflow_semantics))
+     {
+       /* The index might wrap.  */
+       return false;
+@@ -1837,6 +1894,50 @@ may_be_nonaddressable_p (tree expr)
+   return false;
+ }
+ 
++static tree
++strip_offset (tree expr, unsigned HOST_WIDE_INT *offset);
++
++/* Record a use of type USE_TYPE at *USE_P in STMT whose value is IV.
++   If there is an existing use which has same stripped iv base and step,
++   this function records this one as a sub use to that; otherwise records
++   it as a normal one.  */
++
++static struct iv_use *
++record_group_use (struct ivopts_data *data, tree *use_p,
++		  struct iv *iv, gimple stmt, enum use_type use_type)
++{
++  unsigned int i;
++  struct iv_use *use;
++  tree addr_base;
++  unsigned HOST_WIDE_INT addr_offset;
++
++  /* Only support sub use for address type uses, that is, with base
++     object.  */
++  if (!iv->base_object)
++    return record_use (data, use_p, iv, stmt, use_type);
++
++  addr_base = strip_offset (iv->base, &addr_offset);
++  for (i = 0; i < n_iv_uses (data); i++)
++    {
++      use = iv_use (data, i);
++      if (use->type != USE_ADDRESS || !use->iv->base_object)
++	continue;
++
++      /* Check if it has the same stripped base and step.  */
++      if (operand_equal_p (iv->base_object, use->iv->base_object, 0)
++	  && operand_equal_p (iv->step, use->iv->step, 0)
++	  && operand_equal_p (addr_base, use->addr_base, 0))
++	break;
++    }
++
++  if (i == n_iv_uses (data))
++    return record_use (data, use_p, iv, stmt,
++		       use_type, addr_base, addr_offset);
++  else
++    return record_sub_use (data, use_p, iv, stmt,
++			   use_type, addr_base, addr_offset, i);
++}
++
+ /* Finds addresses in *OP_P inside STMT.  */
+ 
+ static void
+@@ -1947,7 +2048,7 @@ find_interesting_uses_address (struct ivopts_data *data, gimple stmt, tree *op_p
+     }
+ 
+   civ = alloc_iv (base, step);
+-  record_use (data, op_p, civ, stmt, USE_ADDRESS);
++  record_group_use (data, op_p, civ, stmt, USE_ADDRESS);
+   return;
+ 
+ fail:
+@@ -2133,6 +2234,172 @@ find_interesting_uses (struct ivopts_data *data)
+   free (body);
+ }
+ 
++/* Compute maximum offset of [base + offset] addressing mode
++   for memory reference represented by USE.  */
++
++static HOST_WIDE_INT
++compute_max_addr_offset (struct iv_use *use)
++{
++  int width;
++  rtx reg, addr;
++  HOST_WIDE_INT i, off;
++  unsigned list_index, num;
++  addr_space_t as;
++  machine_mode mem_mode, addr_mode;
++  static vec<HOST_WIDE_INT> max_offset_list;
++
++  as = TYPE_ADDR_SPACE (TREE_TYPE (use->iv->base));
++  mem_mode = TYPE_MODE (TREE_TYPE (*use->op_p));
++
++  num = max_offset_list.length ();
++  list_index = (unsigned) as * MAX_MACHINE_MODE + (unsigned) mem_mode;
++  if (list_index >= num)
++    {
++      max_offset_list.safe_grow (list_index + MAX_MACHINE_MODE);
++      for (; num < max_offset_list.length (); num++)
++	max_offset_list[num] = -1;
++    }
++
++  off = max_offset_list[list_index];
++  if (off != -1)
++    return off;
++
++  addr_mode = targetm.addr_space.address_mode (as);
++  reg = gen_raw_REG (addr_mode, LAST_VIRTUAL_REGISTER + 1);
++  addr = gen_rtx_fmt_ee (PLUS, addr_mode, reg, NULL_RTX);
++
++  width = GET_MODE_BITSIZE (addr_mode) - 1;
++  if (width > (HOST_BITS_PER_WIDE_INT - 1))
++    width = HOST_BITS_PER_WIDE_INT - 1;
++
++  for (i = width; i > 0; i--)
++    {
++      off = ((unsigned HOST_WIDE_INT) 1 << i) - 1;
++      XEXP (addr, 1) = gen_int_mode (off, addr_mode);
++      if (memory_address_addr_space_p (mem_mode, addr, as))
++	break;
++
++      /* For some strict-alignment targets, the offset must be naturally
++	 aligned.  Try an aligned offset if mem_mode is not QImode.  */
++      off = ((unsigned HOST_WIDE_INT) 1 << i);
++      if (off > GET_MODE_SIZE (mem_mode) && mem_mode != QImode)
++	{
++	  off -= GET_MODE_SIZE (mem_mode);
++	  XEXP (addr, 1) = gen_int_mode (off, addr_mode);
++	  if (memory_address_addr_space_p (mem_mode, addr, as))
++	    break;
++	}
++    }
++  if (i == 0)
++    off = 0;
++
++  max_offset_list[list_index] = off;
++  return off;
++}
++
++/* Check if all small groups should be split.  Return true if and
++   only if:
++
++     1) At least one groups contain two uses with different offsets.
++     2) No group contains more than two uses with different offsets.
++
++   Return false otherwise.  We want to split such groups because:
++
++     1) Small groups don't have much benefit and may interfer with
++	general candidate selection.
++     2) Size for problem with only small groups is usually small and
++	general algorithm can handle it well.
++
++   TODO -- Above claim may not hold when auto increment is supported.  */
++
++static bool
++split_all_small_groups (struct ivopts_data *data)
++{
++  bool split_p = false;
++  unsigned int i, n, distinct;
++  struct iv_use *pre, *use;
++
++  n = n_iv_uses (data);
++  for (i = 0; i < n; i++)
++    {
++      use = iv_use (data, i);
++      if (!use->next)
++	continue;
++
++      distinct = 1;
++      gcc_assert (use->type == USE_ADDRESS);
++      for (pre = use, use = use->next; use; pre = use, use = use->next)
++	{
++	  if (pre->addr_offset != use->addr_offset)
++	    distinct++;
++
++	  if (distinct > 2)
++	    return false;
++	}
++      if (distinct == 2)
++	split_p = true;
++    }
++
++  return split_p;
++}
++
++/* For each group of address type uses, this function further groups
++   these uses according to the maximum offset supported by target's
++   [base + offset] addressing mode.  */
++
++static void
++group_address_uses (struct ivopts_data *data)
++{
++  HOST_WIDE_INT max_offset = -1;
++  unsigned int i, n, sub_id;
++  struct iv_use *pre, *use;
++  unsigned HOST_WIDE_INT addr_offset_first;
++
++  /* Reset max offset to split all small groups.  */
++  if (split_all_small_groups (data))
++    max_offset = 0;
++
++  n = n_iv_uses (data);
++  for (i = 0; i < n; i++)
++    {
++      use = iv_use (data, i);
++      if (!use->next)
++	continue;
++
++      gcc_assert (use->type == USE_ADDRESS);
++      if (max_offset != 0)
++	max_offset = compute_max_addr_offset (use);
++
++      while (use)
++	{
++	  sub_id = 0;
++	  addr_offset_first = use->addr_offset;
++	  /* Only uses with offset that can fit in offset part against
++	     the first use can be grouped together.  */
++	  for (pre = use, use = use->next;
++	       use && (use->addr_offset - addr_offset_first
++		       <= (unsigned HOST_WIDE_INT) max_offset);
++	       pre = use, use = use->next)
++	    {
++	      use->id = pre->id;
++	      use->sub_id = ++sub_id;
++	    }
++
++	  /* Break the list and create new group.  */
++	  if (use)
++	    {
++	      pre->next = NULL;
++	      use->id = n_iv_uses (data);
++	      use->related_cands = BITMAP_ALLOC (NULL);
++	      data->iv_uses.safe_push (use);
++	    }
++	}
++    }
++
++  if (dump_file && (dump_flags & TDF_DETAILS))
++    dump_uses (dump_file, data);
++}
++
+ /* Strips constant offsets from EXPR and stores them to OFFSET.  If INSIDE_ADDR
+    is true, assume we are inside an address.  If TOP_COMPREF is true, assume
+    we are at the top-level of the processed address.  */
+@@ -2550,20 +2817,20 @@ add_autoinc_candidates (struct ivopts_data *data, tree base, tree step,
+ 
+ /* Adds a candidate BASE + STEP * i.  Important field is set to IMPORTANT and
+    position to POS.  If USE is not NULL, the candidate is set as related to
+-   it.  The candidate computation is scheduled on all available positions.  */
++   it.  The candidate computation is scheduled before exit condition and at
++   the end of loop.  */
+ 
+ static void
+ add_candidate (struct ivopts_data *data,
+ 	       tree base, tree step, bool important, struct iv_use *use)
+ {
++  gcc_assert (use == NULL || use->sub_id == 0);
++
+   if (ip_normal_pos (data->current_loop))
+     add_candidate_1 (data, base, step, important, IP_NORMAL, use, NULL);
+   if (ip_end_pos (data->current_loop)
+       && allow_ip_end_pos_p (data->current_loop))
+     add_candidate_1 (data, base, step, important, IP_END, use, NULL);
+-
+-  if (use != NULL && use->type == USE_ADDRESS)
+-    add_autoinc_candidates (data, base, step, important, use);
+ }
+ 
+ /* Adds standard iv candidates.  */
+@@ -2592,7 +2859,7 @@ add_standard_iv_candidates (struct ivopts_data *data)
+ /* Adds candidates bases on the old induction variable IV.  */
+ 
+ static void
+-add_old_iv_candidates (struct ivopts_data *data, struct iv *iv)
++add_iv_candidate_for_biv (struct ivopts_data *data, struct iv *iv)
+ {
+   gimple phi;
+   tree def;
+@@ -2632,7 +2899,7 @@ add_old_iv_candidates (struct ivopts_data *data, struct iv *iv)
+ /* Adds candidates based on the old induction variables.  */
+ 
+ static void
+-add_old_ivs_candidates (struct ivopts_data *data)
++add_iv_candidate_for_bivs (struct ivopts_data *data)
+ {
+   unsigned i;
+   struct iv *iv;
+@@ -2642,19 +2909,19 @@ add_old_ivs_candidates (struct ivopts_data *data)
+     {
+       iv = ver_info (data, i)->iv;
+       if (iv && iv->biv_p && !integer_zerop (iv->step))
+-	add_old_iv_candidates (data, iv);
++	add_iv_candidate_for_biv (data, iv);
+     }
+ }
+ 
+-/* Adds candidates based on the value of the induction variable IV and USE.  */
++/* Adds candidates based on the value of USE's iv.  */
+ 
+ static void
+-add_iv_value_candidates (struct ivopts_data *data,
+-			 struct iv *iv, struct iv_use *use)
++add_iv_candidate_for_use (struct ivopts_data *data, struct iv_use *use)
+ {
+   unsigned HOST_WIDE_INT offset;
+   tree base;
+   tree basetype;
++  struct iv *iv = use->iv;
+ 
+   add_candidate (data, iv->base, iv->step, false, use);
+ 
+@@ -2664,21 +2931,25 @@ add_iv_value_candidates (struct ivopts_data *data,
+   basetype = TREE_TYPE (iv->base);
+   if (POINTER_TYPE_P (basetype))
+     basetype = sizetype;
+-  add_candidate (data, build_int_cst (basetype, 0),
+-		 iv->step, true, use);
++  add_candidate (data, build_int_cst (basetype, 0), iv->step, true, use);
+ 
+   /* Third, try removing the constant offset.  Make sure to even
+      add a candidate for &a[0] vs. (T *)&a.  */
+   base = strip_offset (iv->base, &offset);
+-  if (offset
+-      || base != iv->base)
++  if (offset || base != iv->base)
+     add_candidate (data, base, iv->step, false, use);
++
++  /* At last, add auto-incremental candidates.  Make such variables
++     important since other iv uses with same base object may be based
++     on it.  */
++  if (use != NULL && use->type == USE_ADDRESS)
++    add_autoinc_candidates (data, iv->base, iv->step, true, use);
+ }
+ 
+ /* Adds candidates based on the uses.  */
+ 
+ static void
+-add_derived_ivs_candidates (struct ivopts_data *data)
++add_iv_candidate_for_uses (struct ivopts_data *data)
+ {
+   unsigned i;
+ 
+@@ -2695,7 +2966,7 @@ add_derived_ivs_candidates (struct ivopts_data *data)
+ 	case USE_COMPARE:
+ 	case USE_ADDRESS:
+ 	  /* Just add the ivs based on the value of the iv used here.  */
+-	  add_iv_value_candidates (data, use->iv, use);
++	  add_iv_candidate_for_use (data, use);
+ 	  break;
+ 
+ 	default:
+@@ -2785,11 +3056,22 @@ new_cost (unsigned runtime, unsigned complexity)
+   return cost;
+ }
+ 
++/* Returns true if COST is infinite.  */
++
++static bool
++infinite_cost_p (comp_cost cost)
++{
++  return cost.cost == INFTY;
++}
++
+ /* Adds costs COST1 and COST2.  */
+ 
+ static comp_cost
+ add_costs (comp_cost cost1, comp_cost cost2)
+ {
++  if (infinite_cost_p (cost1) || infinite_cost_p (cost2))
++    return infinite_cost;
++
+   cost1.cost += cost2.cost;
+   cost1.complexity += cost2.complexity;
+ 
+@@ -2818,14 +3100,6 @@ compare_costs (comp_cost cost1, comp_cost cost2)
+   return cost1.cost - cost2.cost;
+ }
+ 
+-/* Returns true if COST is infinite.  */
+-
+-static bool
+-infinite_cost_p (comp_cost cost)
+-{
+-  return cost.cost == INFTY;
+-}
+-
+ /* Sets cost of (USE, CANDIDATE) pair to COST and record that it depends
+    on invariants DEPENDS_ON and that the value used in expressing it
+    is VALUE, and in case of iv elimination the comparison operator is COMP.  */
+@@ -3644,6 +3918,7 @@ get_shiftadd_cost (tree expr, machine_mode mode, comp_cost cost0,
+   if (!(m >= 0 && m < maxm))
+     return false;
+ 
++  STRIP_NOPS (op1);
+   mult_in_op1 = operand_equal_p (op1, mult, 0);
+ 
+   as_cost = add_cost (speed, mode) + shift_cost (speed, mode, m);
+@@ -4300,7 +4575,15 @@ get_computation_cost_at (struct ivopts_data *data,
+       cost.cost += add_cost (data->speed, TYPE_MODE (ctype));
+     }
+ 
+-  if (inv_expr_id)
++  /* Set of invariants depended on by sub use has already been computed
++     for the first use in the group.  */
++  if (use->sub_id)
++    {
++      cost.cost = 0;
++      if (depends_on && *depends_on)
++	bitmap_clear (*depends_on);
++    }
++  else if (inv_expr_id)
+     {
+       *inv_expr_id =
+           get_loop_invariant_expr_id (data, ubase, cbase, ratio, address_p);
+@@ -4429,6 +4712,8 @@ determine_use_iv_cost_address (struct ivopts_data *data,
+   bitmap depends_on;
+   bool can_autoinc;
+   int inv_expr_id = -1;
++  struct iv_use *sub_use;
++  comp_cost sub_cost;
+   comp_cost cost = get_computation_cost (data, use, cand, true, &depends_on,
+ 					 &can_autoinc, &inv_expr_id);
+ 
+@@ -4442,6 +4727,15 @@ determine_use_iv_cost_address (struct ivopts_data *data,
+       else if (cand->pos == IP_AFTER_USE || cand->pos == IP_BEFORE_USE)
+ 	cost = infinite_cost;
+     }
++  for (sub_use = use->next;
++       sub_use && !infinite_cost_p (cost);
++       sub_use = sub_use->next)
++    {
++       sub_cost = get_computation_cost (data, sub_use, cand, true, &depends_on,
++					&can_autoinc, &inv_expr_id);
++       cost = add_costs (cost, sub_cost);
++    }
++
+   set_use_iv_cost (data, use, cand, cost, depends_on, NULL_TREE, ERROR_MARK,
+                    inv_expr_id);
+ 
+@@ -5058,10 +5352,10 @@ find_iv_candidates (struct ivopts_data *data)
+   add_standard_iv_candidates (data);
+ 
+   /* Add old induction variables.  */
+-  add_old_ivs_candidates (data);
++  add_iv_candidate_for_bivs (data);
+ 
+   /* Add induction variables derived from uses.  */
+-  add_derived_ivs_candidates (data);
++  add_iv_candidate_for_uses (data);
+ 
+   set_autoinc_for_original_candidates (data);
+ 
+@@ -6588,8 +6882,8 @@ adjust_iv_update_pos (struct iv_cand *cand, struct iv_use *use)
+ /* Rewrites USE (address that is an iv) using candidate CAND.  */
+ 
+ static void
+-rewrite_use_address (struct ivopts_data *data,
+-		     struct iv_use *use, struct iv_cand *cand)
++rewrite_use_address_1 (struct ivopts_data *data,
++		       struct iv_use *use, struct iv_cand *cand)
+ {
+   aff_tree aff;
+   gimple_stmt_iterator bsi = gsi_for_stmt (use->stmt);
+@@ -6624,6 +6918,28 @@ rewrite_use_address (struct ivopts_data *data,
+   *use->op_p = ref;
+ }
+ 
++/* Rewrites USE (address that is an iv) using candidate CAND.  If it's the
++   first use of a group, rewrites sub uses in the group too.  */
++
++static void
++rewrite_use_address (struct ivopts_data *data,
++		      struct iv_use *use, struct iv_cand *cand)
++{
++  struct iv_use *next;
++
++  gcc_assert (use->sub_id == 0);
++  rewrite_use_address_1 (data, use, cand);
++  update_stmt (use->stmt);
++
++  for (next = use->next; next != NULL; next = next->next)
++    {
++      rewrite_use_address_1 (data, next, cand);
++      update_stmt (next->stmt);
++    }
++
++  return;
++}
++
+ /* Rewrites USE (the condition such that one of the arguments is an iv) using
+    candidate CAND.  */
+ 
+@@ -6899,6 +7215,18 @@ free_loop_data (struct ivopts_data *data)
+   for (i = 0; i < n_iv_uses (data); i++)
+     {
+       struct iv_use *use = iv_use (data, i);
++      struct iv_use *pre = use, *sub = use->next;
++
++      while (sub)
++	{
++	  gcc_assert (sub->related_cands == NULL);
++	  gcc_assert (sub->n_map_members == 0 && sub->cost_map == NULL);
++
++	  free (sub->iv);
++	  pre = sub;
++	  sub = sub->next;
++	  free (pre);
++	}
+ 
+       free (use->iv);
+       BITMAP_FREE (use->related_cands);
+@@ -7025,6 +7353,7 @@ tree_ssa_iv_optimize_loop (struct ivopts_data *data, struct loop *loop)
+ 
+   /* Finds interesting uses (item 1).  */
+   find_interesting_uses (data);
++  group_address_uses (data);
+   if (n_iv_uses (data) > MAX_CONSIDERED_USES)
+     goto finish;
+ 
+--- a/src/gcc/tree-ssa-loop-niter.c
++++ b/src/gcc/tree-ssa-loop-niter.c
+@@ -31,6 +31,7 @@ along with GCC; see the file COPYING3.  If not see
+ #include "wide-int.h"
+ #include "inchash.h"
+ #include "tree.h"
++#include "stor-layout.h"
+ #include "fold-const.h"
+ #include "calls.h"
+ #include "hashtab.h"
+@@ -148,6 +149,237 @@ split_to_var_and_offset (tree expr, tree *var, mpz_t offset)
+     }
+ }
+ 
++/* From condition C0 CMP C1 derives information regarding the value range
++   of VAR, which is of TYPE.  Results are stored in to BELOW and UP.  */
++
++static void
++refine_value_range_using_guard (tree type, tree var,
++				tree c0, enum tree_code cmp, tree c1,
++				mpz_t below, mpz_t up)
++{
++  tree varc0, varc1, ctype;
++  mpz_t offc0, offc1;
++  mpz_t mint, maxt, minc1, maxc1;
++  wide_int minv, maxv;
++  bool no_wrap = nowrap_type_p (type);
++  bool c0_ok, c1_ok;
++  signop sgn = TYPE_SIGN (type);
++
++  switch (cmp)
++    {
++    case LT_EXPR:
++    case LE_EXPR:
++    case GT_EXPR:
++    case GE_EXPR:
++      STRIP_SIGN_NOPS (c0);
++      STRIP_SIGN_NOPS (c1);
++      ctype = TREE_TYPE (c0);
++      if (!useless_type_conversion_p (ctype, type))
++	return;
++
++      break;
++
++    case EQ_EXPR:
++      /* We could derive quite precise information from EQ_EXPR, however,
++	 such a guard is unlikely to appear, so we do not bother with
++	 handling it.  */
++      return;
++
++    case NE_EXPR:
++      /* NE_EXPR comparisons do not contain much of useful information,
++	 except for cases of comparing with bounds.  */
++      if (TREE_CODE (c1) != INTEGER_CST
++	  || !INTEGRAL_TYPE_P (type))
++	return;
++
++      /* Ensure that the condition speaks about an expression in the same
++	 type as X and Y.  */
++      ctype = TREE_TYPE (c0);
++      if (TYPE_PRECISION (ctype) != TYPE_PRECISION (type))
++	return;
++      c0 = fold_convert (type, c0);
++      c1 = fold_convert (type, c1);
++
++      if (operand_equal_p (var, c0, 0))
++	{
++	  mpz_t valc1;
++
++	  /* Case of comparing VAR with its below/up bounds.  */
++	  mpz_init (valc1);
++	  wi::to_mpz (c1, valc1, TYPE_SIGN (type));
++	  if (mpz_cmp (valc1, below) == 0)
++	    cmp = GT_EXPR;
++	  if (mpz_cmp (valc1, up) == 0)
++	    cmp = LT_EXPR;
++
++	  mpz_clear (valc1);
++	}
++      else
++	{
++	  /* Case of comparing with the bounds of the type.  */
++	  wide_int min = wi::min_value (type);
++	  wide_int max = wi::max_value (type);
++
++	  if (wi::eq_p (c1, min))
++	    cmp = GT_EXPR;
++	  if (wi::eq_p (c1, max))
++	    cmp = LT_EXPR;
++	}
++
++      /* Quick return if no useful information.  */
++      if (cmp == NE_EXPR)
++	return;
++
++      break;
++
++    default:
++      return;
++    }
++
++  mpz_init (offc0);
++  mpz_init (offc1);
++  split_to_var_and_offset (expand_simple_operations (c0), &varc0, offc0);
++  split_to_var_and_offset (expand_simple_operations (c1), &varc1, offc1);
++
++  /* We are only interested in comparisons of expressions based on VAR.  */
++  if (operand_equal_p (var, varc1, 0))
++    {
++      std::swap (varc0, varc1);
++      mpz_swap (offc0, offc1);
++      cmp = swap_tree_comparison (cmp);
++    }
++  else if (!operand_equal_p (var, varc0, 0))
++    {
++      mpz_clear (offc0);
++      mpz_clear (offc1);
++      return;
++    }
++
++  mpz_init (mint);
++  mpz_init (maxt);
++  get_type_static_bounds (type, mint, maxt);
++  mpz_init (minc1);
++  mpz_init (maxc1);
++  /* Setup range information for varc1.  */
++  if (integer_zerop (varc1))
++    {
++      wi::to_mpz (integer_zero_node, minc1, TYPE_SIGN (type));
++      wi::to_mpz (integer_zero_node, maxc1, TYPE_SIGN (type));
++    }
++  else if (TREE_CODE (varc1) == SSA_NAME
++	   && INTEGRAL_TYPE_P (type)
++	   && get_range_info (varc1, &minv, &maxv) == VR_RANGE)
++    {
++      gcc_assert (wi::le_p (minv, maxv, sgn));
++      wi::to_mpz (minv, minc1, sgn);
++      wi::to_mpz (maxv, maxc1, sgn);
++    }
++  else
++    {
++      mpz_set (minc1, mint);
++      mpz_set (maxc1, maxt);
++    }
++
++  /* Compute valid range information for varc1 + offc1.  Note nothing
++     useful can be derived if it overflows or underflows.  Overflow or
++     underflow could happen when:
++
++       offc1 > 0 && varc1 + offc1 > MAX_VAL (type)
++       offc1 < 0 && varc1 + offc1 < MIN_VAL (type).  */
++  mpz_add (minc1, minc1, offc1);
++  mpz_add (maxc1, maxc1, offc1);
++  c1_ok = (no_wrap
++	   || mpz_sgn (offc1) == 0
++	   || (mpz_sgn (offc1) < 0 && mpz_cmp (minc1, mint) >= 0)
++	   || (mpz_sgn (offc1) > 0 && mpz_cmp (maxc1, maxt) <= 0));
++  if (!c1_ok)
++    goto end;
++
++  if (mpz_cmp (minc1, mint) < 0)
++    mpz_set (minc1, mint);
++  if (mpz_cmp (maxc1, maxt) > 0)
++    mpz_set (maxc1, maxt);
++
++  if (cmp == LT_EXPR)
++    {
++      cmp = LE_EXPR;
++      mpz_sub_ui (maxc1, maxc1, 1);
++    }
++  if (cmp == GT_EXPR)
++    {
++      cmp = GE_EXPR;
++      mpz_add_ui (minc1, minc1, 1);
++    }
++
++  /* Compute range information for varc0.  If there is no overflow,
++     the condition implied that
++
++       (varc0) cmp (varc1 + offc1 - offc0)
++
++     We can possibly improve the upper bound of varc0 if cmp is LE_EXPR,
++     or the below bound if cmp is GE_EXPR.
++
++     To prove there is no overflow/underflow, we need to check below
++     four cases:
++       1) cmp == LE_EXPR && offc0 > 0
++
++	    (varc0 + offc0) doesn't overflow
++	    && (varc1 + offc1 - offc0) doesn't underflow
++
++       2) cmp == LE_EXPR && offc0 < 0
++
++	    (varc0 + offc0) doesn't underflow
++	    && (varc1 + offc1 - offc0) doesn't overfloe
++
++	  In this case, (varc0 + offc0) will never underflow if we can
++	  prove (varc1 + offc1 - offc0) doesn't overflow.
++
++       3) cmp == GE_EXPR && offc0 < 0
++
++	    (varc0 + offc0) doesn't underflow
++	    && (varc1 + offc1 - offc0) doesn't overflow
++
++       4) cmp == GE_EXPR && offc0 > 0
++
++	    (varc0 + offc0) doesn't overflow
++	    && (varc1 + offc1 - offc0) doesn't underflow
++
++	  In this case, (varc0 + offc0) will never overflow if we can
++	  prove (varc1 + offc1 - offc0) doesn't underflow.
++
++     Note we only handle case 2 and 4 in below code.  */
++
++  mpz_sub (minc1, minc1, offc0);
++  mpz_sub (maxc1, maxc1, offc0);
++  c0_ok = (no_wrap
++	   || mpz_sgn (offc0) == 0
++	   || (cmp == LE_EXPR
++	       && mpz_sgn (offc0) < 0 && mpz_cmp (maxc1, maxt) <= 0)
++	   || (cmp == GE_EXPR
++	       && mpz_sgn (offc0) > 0 && mpz_cmp (minc1, mint) >= 0));
++  if (!c0_ok)
++    goto end;
++
++  if (cmp == LE_EXPR)
++    {
++      if (mpz_cmp (up, maxc1) > 0)
++	mpz_set (up, maxc1);
++    }
++  else
++    {
++      if (mpz_cmp (below, minc1) < 0)
++	mpz_set (below, minc1);
++    }
++
++end:
++  mpz_clear (mint);
++  mpz_clear (maxt);
++  mpz_clear (minc1);
++  mpz_clear (maxc1);
++  mpz_clear (offc0);
++  mpz_clear (offc1);
++}
++
+ /* Stores estimate on the minimum/maximum value of the expression VAR + OFF
+    in TYPE to MIN and MAX.  */
+ 
+@@ -155,6 +387,9 @@ static void
+ determine_value_range (struct loop *loop, tree type, tree var, mpz_t off,
+ 		       mpz_t min, mpz_t max)
+ {
++  int cnt = 0;
++  mpz_t minm, maxm;
++  basic_block bb;
+   wide_int minv, maxv;
+   enum value_range_type rtype = VR_VARYING;
+ 
+@@ -209,35 +444,69 @@ determine_value_range (struct loop *loop, tree type, tree var, mpz_t off,
+ 		}
+ 	    }
+ 	}
+-      if (rtype == VR_RANGE)
++      mpz_init (minm);
++      mpz_init (maxm);
++      if (rtype != VR_RANGE)
++	{
++	  mpz_set (minm, min);
++	  mpz_set (maxm, max);
++	}
++      else
+ 	{
+-	  mpz_t minm, maxm;
+ 	  gcc_assert (wi::le_p (minv, maxv, sgn));
+-	  mpz_init (minm);
+-	  mpz_init (maxm);
+ 	  wi::to_mpz (minv, minm, sgn);
+ 	  wi::to_mpz (maxv, maxm, sgn);
+-	  mpz_add (minm, minm, off);
+-	  mpz_add (maxm, maxm, off);
+-	  /* If the computation may not wrap or off is zero, then this
+-	     is always fine.  If off is negative and minv + off isn't
+-	     smaller than type's minimum, or off is positive and
+-	     maxv + off isn't bigger than type's maximum, use the more
+-	     precise range too.  */
+-	  if (nowrap_type_p (type)
+-	      || mpz_sgn (off) == 0
+-	      || (mpz_sgn (off) < 0 && mpz_cmp (minm, min) >= 0)
+-	      || (mpz_sgn (off) > 0 && mpz_cmp (maxm, max) <= 0))
+-	    {
+-	      mpz_set (min, minm);
+-	      mpz_set (max, maxm);
+-	      mpz_clear (minm);
+-	      mpz_clear (maxm);
+-	      return;
+-	    }
++	}
++      /* Now walk the dominators of the loop header and use the entry
++	 guards to refine the estimates.  */
++      for (bb = loop->header;
++	   bb != ENTRY_BLOCK_PTR_FOR_FN (cfun) && cnt < MAX_DOMINATORS_TO_WALK;
++	   bb = get_immediate_dominator (CDI_DOMINATORS, bb))
++	{
++	  edge e;
++	  tree c0, c1;
++	  gimple cond;
++	  enum tree_code cmp;
++
++	  if (!single_pred_p (bb))
++	    continue;
++	  e = single_pred_edge (bb);
++
++	  if (!(e->flags & (EDGE_TRUE_VALUE | EDGE_FALSE_VALUE)))
++	    continue;
++
++	  cond = last_stmt (e->src);
++	  c0 = gimple_cond_lhs (cond);
++	  cmp = gimple_cond_code (cond);
++	  c1 = gimple_cond_rhs (cond);
++
++	  if (e->flags & EDGE_FALSE_VALUE)
++	    cmp = invert_tree_comparison (cmp, false);
++
++	  refine_value_range_using_guard (type, var, c0, cmp, c1, minm, maxm);
++	  ++cnt;
++	}
++
++      mpz_add (minm, minm, off);
++      mpz_add (maxm, maxm, off);
++      /* If the computation may not wrap or off is zero, then this
++	 is always fine.  If off is negative and minv + off isn't
++	 smaller than type's minimum, or off is positive and
++	 maxv + off isn't bigger than type's maximum, use the more
++	 precise range too.  */
++      if (nowrap_type_p (type)
++	  || mpz_sgn (off) == 0
++	  || (mpz_sgn (off) < 0 && mpz_cmp (minm, min) >= 0)
++	  || (mpz_sgn (off) > 0 && mpz_cmp (maxm, max) <= 0))
++	{
++	  mpz_set (min, minm);
++	  mpz_set (max, maxm);
+ 	  mpz_clear (minm);
+ 	  mpz_clear (maxm);
++	  return;
+ 	}
++      mpz_clear (minm);
++      mpz_clear (maxm);
+     }
+ 
+   /* If the computation may wrap, we know nothing about the value, except for
+@@ -1184,6 +1453,7 @@ number_of_iterations_lt (tree type, affine_iv *iv0, affine_iv *iv1,
+       niter->niter = delta;
+       niter->max = widest_int::from (wi::from_mpz (niter_type, bnds->up, false),
+ 				     TYPE_SIGN (niter_type));
++      niter->control.no_overflow = true;
+       return true;
+     }
+ 
+@@ -1840,6 +2110,10 @@ simplify_using_initial_conditions (struct loop *loop, tree expr)
+       if (e->flags & EDGE_FALSE_VALUE)
+ 	cond = invert_truthvalue (cond);
+       expr = tree_simplify_using_condition (cond, expr);
++      /* Break if EXPR is simplified to const values.  */
++      if (expr && (integer_zerop (expr) || integer_nonzerop (expr)))
++	break;
++
+       ++cnt;
+     }
+ 
+@@ -1965,6 +2239,9 @@ number_of_iterations_exit (struct loop *loop, edge exit,
+     return false;
+ 
+   niter->assumptions = boolean_false_node;
++  niter->control.base = NULL_TREE;
++  niter->control.step = NULL_TREE;
++  niter->control.no_overflow = false;
+   last = last_stmt (exit->src);
+   if (!last)
+     return false;
+@@ -2744,6 +3021,29 @@ record_estimate (struct loop *loop, tree bound, const widest_int &i_bound,
+   record_niter_bound (loop, new_i_bound, realistic, upper);
+ }
+ 
++/* Records the control iv analyzed in NITER for LOOP if the iv is valid
++   and doesn't overflow.  */
++
++static void
++record_control_iv (struct loop *loop, struct tree_niter_desc *niter)
++{
++  struct control_iv *iv;
++
++  if (!niter->control.base || !niter->control.step)
++    return;
++
++  if (!integer_onep (niter->assumptions) || !niter->control.no_overflow)
++    return;
++
++  iv = ggc_alloc<control_iv> ();
++  iv->base = niter->control.base;
++  iv->step = niter->control.step;
++  iv->next = loop->control_ivs;
++  loop->control_ivs = iv;
++
++  return;
++}
++
+ /* Record the estimate on number of iterations of LOOP based on the fact that
+    the induction variable BASE + STEP * i evaluated in STMT does not wrap and
+    its values belong to the range <LOW, HIGH>.  REALISTIC is true if the
+@@ -3467,6 +3767,7 @@ estimate_numbers_of_iterations_loop (struct loop *loop)
+       record_estimate (loop, niter, niter_desc.max,
+ 		       last_stmt (ex->src),
+ 		       true, ex == likely_exit, true);
++      record_control_iv (loop, &niter_desc);
+     }
+   exits.release ();
+ 
+@@ -3773,6 +4074,194 @@ nowrap_type_p (tree type)
+   return false;
+ }
+ 
++/* Return true if we can prove LOOP is exited before evolution of induction
++   variabled {BASE, STEP} overflows with respect to its type bound.  */
++
++static bool
++loop_exits_before_overflow (tree base, tree step,
++			    gimple at_stmt, struct loop *loop)
++{
++  widest_int niter;
++  struct control_iv *civ;
++  struct nb_iter_bound *bound;
++  tree e, delta, step_abs, unsigned_base;
++  tree type = TREE_TYPE (step);
++  tree unsigned_type, valid_niter;
++
++  /* Don't issue signed overflow warnings.  */
++  fold_defer_overflow_warnings ();
++
++  /* Compute the number of iterations before we reach the bound of the
++     type, and verify that the loop is exited before this occurs.  */
++  unsigned_type = unsigned_type_for (type);
++  unsigned_base = fold_convert (unsigned_type, base);
++
++  if (tree_int_cst_sign_bit (step))
++    {
++      tree extreme = fold_convert (unsigned_type,
++				   lower_bound_in_type (type, type));
++      delta = fold_build2 (MINUS_EXPR, unsigned_type, unsigned_base, extreme);
++      step_abs = fold_build1 (NEGATE_EXPR, unsigned_type,
++			      fold_convert (unsigned_type, step));
++    }
++  else
++    {
++      tree extreme = fold_convert (unsigned_type,
++				   upper_bound_in_type (type, type));
++      delta = fold_build2 (MINUS_EXPR, unsigned_type, extreme, unsigned_base);
++      step_abs = fold_convert (unsigned_type, step);
++    }
++
++  valid_niter = fold_build2 (FLOOR_DIV_EXPR, unsigned_type, delta, step_abs);
++
++  estimate_numbers_of_iterations_loop (loop);
++
++  if (max_loop_iterations (loop, &niter)
++      && wi::fits_to_tree_p (niter, TREE_TYPE (valid_niter))
++      && (e = fold_binary (GT_EXPR, boolean_type_node, valid_niter,
++			   wide_int_to_tree (TREE_TYPE (valid_niter),
++					     niter))) != NULL
++      && integer_nonzerop (e))
++    {
++      fold_undefer_and_ignore_overflow_warnings ();
++      return true;
++    }
++  if (at_stmt)
++    for (bound = loop->bounds; bound; bound = bound->next)
++      {
++	if (n_of_executions_at_most (at_stmt, bound, valid_niter))
++	  {
++	    fold_undefer_and_ignore_overflow_warnings ();
++	    return true;
++	  }
++      }
++  fold_undefer_and_ignore_overflow_warnings ();
++
++  /* Try to prove loop is exited before {base, step} overflows with the
++     help of analyzed loop control IV.  This is done only for IVs with
++     constant step because otherwise we don't have the information.  */
++  if (TREE_CODE (step) == INTEGER_CST)
++    for (civ = loop->control_ivs; civ; civ = civ->next)
++      {
++	enum tree_code code;
++	tree stepped, extreme, civ_type = TREE_TYPE (civ->step);
++
++	/* Have to consider type difference because operand_equal_p ignores
++	   that for constants.  */
++	if (TYPE_UNSIGNED (type) != TYPE_UNSIGNED (civ_type)
++	    || element_precision (type) != element_precision (civ_type))
++	  continue;
++
++	/* Only consider control IV with same step.  */
++	if (!operand_equal_p (step, civ->step, 0))
++	  continue;
++
++	/* Done proving if this is a no-overflow control IV.  */
++	if (operand_equal_p (base, civ->base, 0))
++	  return true;
++
++	/* If this is a before stepping control IV, in other words, we have
++
++	     {civ_base, step} = {base + step, step}
++
++	   Because civ {base + step, step} doesn't overflow during loop
++	   iterations, {base, step} will not overflow if we can prove the
++	   operation "base + step" does not overflow.  Specifically, we try
++	   to prove below conditions are satisfied:
++
++	     base <= UPPER_BOUND (type) - step  ;;step > 0
++	     base >= LOWER_BOUND (type) - step  ;;step < 0
++
++	   by proving the reverse conditions are false using loop's initial
++	   condition.  */
++	if (POINTER_TYPE_P (TREE_TYPE (base)))
++	  code = POINTER_PLUS_EXPR;
++	else
++	  code = PLUS_EXPR;
++
++	stepped = fold_build2 (code, TREE_TYPE (base), base, step);
++	if (operand_equal_p (stepped, civ->base, 0))
++	  {
++	    if (tree_int_cst_sign_bit (step))
++	      {
++		code = LT_EXPR;
++		extreme = lower_bound_in_type (type, type);
++	      }
++	    else
++	      {
++		code = GT_EXPR;
++		extreme = upper_bound_in_type (type, type);
++	      }
++	    extreme = fold_build2 (MINUS_EXPR, type, extreme, step);
++	    e = fold_build2 (code, boolean_type_node, base, extreme);
++	    e = simplify_using_initial_conditions (loop, e);
++	    if (integer_zerop (e))
++	      return true;
++
++	    continue;
++	  }
++
++	/* Similar to above, only in this case we have:
++
++	     {civ_base, step} = {(signed T)((unsigned T)base + step), step}
++	     && TREE_TYPE (civ_base) = signed T.
++
++	   We prove that below condition is satisfied:
++
++	     (signed T)((unsigned T)base + step)
++	       == (signed T)(unsigned T)base + step
++	       == base + step
++
++	   because of exact the same reason as above.  This also proves
++	   there is no overflow in the operation "base + step", thus the
++	   induction variable {base, step} during loop iterations.
++
++	   This is necessary to handle cases as below:
++
++	     int foo (int *a, signed char s, signed char l)
++	       {
++		 signed char i;
++		 for (i = s; i < l; i++)
++		   a[i] = 0;
++		 return 0;
++	       }
++
++	   The variable I is firstly converted to type unsigned char,
++	   incremented, then converted back to type signed char.  */
++	if (!CONVERT_EXPR_P (civ->base) || TREE_TYPE (civ->base) != type)
++	  continue;
++	e = TREE_OPERAND (civ->base, 0);
++	if (TREE_CODE (e) != PLUS_EXPR
++	    || TREE_CODE (TREE_OPERAND (e, 1)) != INTEGER_CST
++	    || !operand_equal_p (step,
++				 fold_convert (type,
++					       TREE_OPERAND (e, 1)), 0))
++	  continue;
++	e = TREE_OPERAND (e, 0);
++	if (!CONVERT_EXPR_P (e) || !operand_equal_p (e, unsigned_base, 0))
++	  continue;
++	e = TREE_OPERAND (e, 0);
++	gcc_assert (operand_equal_p (e, base, 0));
++	if (tree_int_cst_sign_bit (step))
++	  {
++	    code = LT_EXPR;
++	    extreme = lower_bound_in_type (type, type);
++	  }
++	else
++	  {
++	    code = GT_EXPR;
++	    extreme = upper_bound_in_type (type, type);
++	  }
++	extreme = fold_build2 (MINUS_EXPR, type, extreme, step);
++	e = fold_build2 (code, boolean_type_node, base, extreme);
++	e = simplify_using_initial_conditions (loop, e);
++	if (integer_zerop (e))
++	  return true;
++      }
++
++  return false;
++}
++
+ /* Return false only when the induction variable BASE + STEP * I is
+    known to not overflow: i.e. when the number of iterations is small
+    enough with respect to the step and initial condition in order to
+@@ -3788,13 +4277,6 @@ scev_probably_wraps_p (tree base, tree step,
+ 		       gimple at_stmt, struct loop *loop,
+ 		       bool use_overflow_semantics)
+ {
+-  tree delta, step_abs;
+-  tree unsigned_type, valid_niter;
+-  tree type = TREE_TYPE (step);
+-  tree e;
+-  widest_int niter;
+-  struct nb_iter_bound *bound;
+-
+   /* FIXME: We really need something like
+      http://gcc.gnu.org/ml/gcc-patches/2005-06/msg02025.html.
+ 
+@@ -3828,56 +4310,8 @@ scev_probably_wraps_p (tree base, tree step,
+   if (TREE_CODE (step) != INTEGER_CST)
+     return true;
+ 
+-  /* Don't issue signed overflow warnings.  */
+-  fold_defer_overflow_warnings ();
+-
+-  /* Otherwise, compute the number of iterations before we reach the
+-     bound of the type, and verify that the loop is exited before this
+-     occurs.  */
+-  unsigned_type = unsigned_type_for (type);
+-  base = fold_convert (unsigned_type, base);
+-
+-  if (tree_int_cst_sign_bit (step))
+-    {
+-      tree extreme = fold_convert (unsigned_type,
+-				   lower_bound_in_type (type, type));
+-      delta = fold_build2 (MINUS_EXPR, unsigned_type, base, extreme);
+-      step_abs = fold_build1 (NEGATE_EXPR, unsigned_type,
+-			      fold_convert (unsigned_type, step));
+-    }
+-  else
+-    {
+-      tree extreme = fold_convert (unsigned_type,
+-				   upper_bound_in_type (type, type));
+-      delta = fold_build2 (MINUS_EXPR, unsigned_type, extreme, base);
+-      step_abs = fold_convert (unsigned_type, step);
+-    }
+-
+-  valid_niter = fold_build2 (FLOOR_DIV_EXPR, unsigned_type, delta, step_abs);
+-
+-  estimate_numbers_of_iterations_loop (loop);
+-
+-  if (max_loop_iterations (loop, &niter)
+-      && wi::fits_to_tree_p (niter, TREE_TYPE (valid_niter))
+-      && (e = fold_binary (GT_EXPR, boolean_type_node, valid_niter,
+-			   wide_int_to_tree (TREE_TYPE (valid_niter),
+-					     niter))) != NULL
+-      && integer_nonzerop (e))
+-    {
+-      fold_undefer_and_ignore_overflow_warnings ();
+-      return false;
+-    }
+-  if (at_stmt)
+-    for (bound = loop->bounds; bound; bound = bound->next)
+-      {
+-	if (n_of_executions_at_most (at_stmt, bound, valid_niter))
+-	  {
+-	    fold_undefer_and_ignore_overflow_warnings ();
+-	    return false;
+-	  }
+-      }
+-
+-  fold_undefer_and_ignore_overflow_warnings ();
++  if (loop_exits_before_overflow (base, step, at_stmt, loop))
++    return false;
+ 
+   /* At this point we still don't have a proof that the iv does not
+      overflow: give up.  */
+@@ -3889,17 +4323,26 @@ scev_probably_wraps_p (tree base, tree step,
+ void
+ free_numbers_of_iterations_estimates_loop (struct loop *loop)
+ {
+-  struct nb_iter_bound *bound, *next;
++  struct control_iv *civ;
++  struct nb_iter_bound *bound;
+ 
+   loop->nb_iterations = NULL;
+   loop->estimate_state = EST_NOT_COMPUTED;
+-  for (bound = loop->bounds; bound; bound = next)
++  for (bound = loop->bounds; bound;)
+     {
+-      next = bound->next;
++      struct nb_iter_bound *next = bound->next;
+       ggc_free (bound);
++      bound = next;
+     }
+-
+   loop->bounds = NULL;
++
++  for (civ = loop->control_ivs; civ;)
++    {
++      struct control_iv *next = civ->next;
++      ggc_free (civ);
++      civ = next;
++    }
++  loop->control_ivs = NULL;
+ }
+ 
+ /* Frees the information on upper bounds on numbers of iterations of loops.  */
+--- a/src/gcc/tree-ssa-loop-niter.h
++++ b/src/gcc/tree-ssa-loop-niter.h
+@@ -41,6 +41,7 @@ extern void estimate_numbers_of_iterations (void);
+ extern bool stmt_dominates_stmt_p (gimple, gimple);
+ extern bool nowrap_type_p (tree);
+ extern bool scev_probably_wraps_p (tree, tree, gimple, struct loop *, bool);
++extern void free_loop_control_ivs (struct loop *);
+ extern void free_numbers_of_iterations_estimates_loop (struct loop *);
+ extern void free_numbers_of_iterations_estimates (void);
+ extern void substitute_in_loop_info (struct loop *, tree, tree);
+--- a/src/gcc/tree-ssa-math-opts.c
++++ b/src/gcc/tree-ssa-math-opts.c
+@@ -143,6 +143,7 @@ along with GCC; see the file COPYING3.  If not see
+ #include "target.h"
+ #include "gimple-pretty-print.h"
+ #include "builtins.h"
++#include "params.h"
+ 
+ /* FIXME: RTL headers have to be included here for optabs.  */
+ #include "rtl.h"		/* Because optabs.h wants enum rtx_code.  */
+@@ -1148,6 +1149,357 @@ build_and_insert_cast (gimple_stmt_iterator *gsi, location_t loc,
+   return result;
+ }
+ 
++struct pow_synth_sqrt_info
++{
++  bool *factors;
++  unsigned int deepest;
++  unsigned int num_mults;
++};
++
++/* Return true iff the real value C can be represented as a
++   sum of powers of 0.5 up to N.  That is:
++   C == SUM<i from 1..N> (a[i]*(0.5**i)) where a[i] is either 0 or 1.
++   Record in INFO the various parameters of the synthesis algorithm such
++   as the factors a[i], the maximum 0.5 power and the number of
++   multiplications that will be required.  */
++
++bool
++representable_as_half_series_p (REAL_VALUE_TYPE c, unsigned n,
++				 struct pow_synth_sqrt_info *info)
++{
++  REAL_VALUE_TYPE factor = dconsthalf;
++  REAL_VALUE_TYPE remainder = c;
++
++  info->deepest = 0;
++  info->num_mults = 0;
++  memset (info->factors, 0, n * sizeof (bool));
++
++  for (unsigned i = 0; i < n; i++)
++    {
++      REAL_VALUE_TYPE res;
++
++      /* If something inexact happened bail out now.  */
++      if (REAL_ARITHMETIC (res, MINUS_EXPR, remainder, factor))
++	return false;
++
++      /* We have hit zero.  The number is representable as a sum
++         of powers of 0.5.  */
++      if (REAL_VALUES_EQUAL (res, dconst0))
++	{
++	  info->factors[i] = true;
++	  info->deepest = i + 1;
++	  return true;
++	}
++      else if (!REAL_VALUE_NEGATIVE (res))
++	{
++	  remainder = res;
++	  info->factors[i] = true;
++	  info->num_mults++;
++	}
++      else
++	info->factors[i] = false;
++
++      REAL_ARITHMETIC (factor, MULT_EXPR, factor, dconsthalf);
++    }
++  return false;
++}
++
++/* Return the tree corresponding to FN being applied
++   to ARG N times at GSI and LOC.
++   Look up previous results from CACHE if need be.
++   cache[0] should contain just plain ARG i.e. FN applied to ARG 0 times.  */
++
++static tree
++get_fn_chain (tree arg, unsigned int n, gimple_stmt_iterator *gsi,
++	      tree fn, location_t loc, tree *cache)
++{
++  tree res = cache[n];
++  if (!res)
++    {
++      tree prev = get_fn_chain (arg, n - 1, gsi, fn, loc, cache);
++      res = build_and_insert_call (gsi, loc, fn, prev);
++      cache[n] = res;
++    }
++
++  return res;
++}
++
++/* Print to STREAM the repeated application of function FNAME to ARG
++   N times.  So, for FNAME = "foo", ARG = "x", N = 2 it would print:
++   "foo (foo (x))".  */
++
++static void
++print_nested_fn (FILE* stream, const char *fname, const char* arg,
++		 unsigned int n)
++{
++  if (n == 0)
++    fprintf (stream, "%s", arg);
++  else
++    {
++      fprintf (stream, "%s (", fname);
++      print_nested_fn (stream, fname, arg, n - 1);
++      fprintf (stream, ")");
++    }
++}
++
++/* Print to STREAM the fractional sequence of sqrt chains
++   applied to ARG, described by INFO.  Used for the dump file.  */
++
++static void
++dump_fractional_sqrt_sequence (FILE *stream, const char *arg,
++			        struct pow_synth_sqrt_info *info)
++{
++  for (unsigned int i = 0; i < info->deepest; i++)
++    {
++      bool is_set = info->factors[i];
++      if (is_set)
++	{
++	  print_nested_fn (stream, "sqrt", arg, i + 1);
++	  if (i != info->deepest - 1)
++	    fprintf (stream, " * ");
++	}
++    }
++}
++
++/* Print to STREAM a representation of raising ARG to an integer
++   power N.  Used for the dump file.  */
++
++static void
++dump_integer_part (FILE *stream, const char* arg, HOST_WIDE_INT n)
++{
++  if (n > 1)
++    fprintf (stream, "powi (%s, " HOST_WIDE_INT_PRINT_DEC ")", arg, n);
++  else if (n == 1)
++    fprintf (stream, "%s", arg);
++}
++
++/* Attempt to synthesize a POW[F] (ARG0, ARG1) call using chains of
++   square roots.  Place at GSI and LOC.  Limit the maximum depth
++   of the sqrt chains to MAX_DEPTH.  Return the tree holding the
++   result of the expanded sequence or NULL_TREE if the expansion failed.
++
++   This routine assumes that ARG1 is a real number with a fractional part
++   (the integer exponent case will have been handled earlier in
++   gimple_expand_builtin_pow).
++
++   For ARG1 > 0.0:
++   * For ARG1 composed of a whole part WHOLE_PART and a fractional part
++     FRAC_PART i.e. WHOLE_PART == floor (ARG1) and
++                    FRAC_PART == ARG1 - WHOLE_PART:
++     Produce POWI (ARG0, WHOLE_PART) * POW (ARG0, FRAC_PART) where
++     POW (ARG0, FRAC_PART) is expanded as a product of square root chains
++     if it can be expressed as such, that is if FRAC_PART satisfies:
++     FRAC_PART == <SUM from i = 1 until MAX_DEPTH> (a[i] * (0.5**i))
++     where integer a[i] is either 0 or 1.
++
++     Example:
++     POW (x, 3.625) == POWI (x, 3) * POW (x, 0.625)
++       --> POWI (x, 3) * SQRT (x) * SQRT (SQRT (SQRT (x)))
++
++   For ARG1 < 0.0 there are two approaches:
++   * (A) Expand to 1.0 / POW (ARG0, -ARG1) where POW (ARG0, -ARG1)
++         is calculated as above.
++
++     Example:
++     POW (x, -5.625) == 1.0 / POW (x, 5.625)
++       -->  1.0 / (POWI (x, 5) * SQRT (x) * SQRT (SQRT (SQRT (x))))
++
++   * (B) : WHOLE_PART := - ceil (abs (ARG1))
++           FRAC_PART  := ARG1 - WHOLE_PART
++     and expand to POW (x, FRAC_PART) / POWI (x, WHOLE_PART).
++     Example:
++     POW (x, -5.875) == POW (x, 0.125) / POWI (X, 6)
++       --> SQRT (SQRT (SQRT (x))) / (POWI (x, 6))
++
++   For ARG1 < 0.0 we choose between (A) and (B) depending on
++   how many multiplications we'd have to do.
++   So, for the example in (B): POW (x, -5.875), if we were to
++   follow algorithm (A) we would produce:
++   1.0 / POWI (X, 5) * SQRT (X) * SQRT (SQRT (X)) * SQRT (SQRT (SQRT (X)))
++   which contains more multiplications than approach (B).
++
++   Hopefully, this approach will eliminate potentially expensive POW library
++   calls when unsafe floating point math is enabled and allow the compiler to
++   further optimise the multiplies, square roots and divides produced by this
++   function.  */
++
++static tree
++expand_pow_as_sqrts (gimple_stmt_iterator *gsi, location_t loc,
++		     tree arg0, tree arg1, HOST_WIDE_INT max_depth)
++{
++  tree type = TREE_TYPE (arg0);
++  machine_mode mode = TYPE_MODE (type);
++  tree sqrtfn = mathfn_built_in (type, BUILT_IN_SQRT);
++  bool one_over = true;
++
++  if (!sqrtfn)
++    return NULL_TREE;
++
++  if (TREE_CODE (arg1) != REAL_CST)
++    return NULL_TREE;
++
++  REAL_VALUE_TYPE exp_init = TREE_REAL_CST (arg1);
++
++  gcc_assert (max_depth > 0);
++  tree *cache = XALLOCAVEC (tree, max_depth + 1);
++
++  struct pow_synth_sqrt_info synth_info;
++  synth_info.factors = XALLOCAVEC (bool, max_depth + 1);
++  synth_info.deepest = 0;
++  synth_info.num_mults = 0;
++
++  bool neg_exp = REAL_VALUE_NEGATIVE (exp_init);
++  REAL_VALUE_TYPE exp = real_value_abs (&exp_init);
++
++  /* The whole and fractional parts of exp.  */
++  REAL_VALUE_TYPE whole_part;
++  REAL_VALUE_TYPE frac_part;
++
++  real_floor (&whole_part, mode, &exp);
++  REAL_ARITHMETIC (frac_part, MINUS_EXPR, exp, whole_part);
++
++
++  REAL_VALUE_TYPE ceil_whole = dconst0;
++  REAL_VALUE_TYPE ceil_fract = dconst0;
++
++  if (neg_exp)
++    {
++      real_ceil (&ceil_whole, mode, &exp);
++      REAL_ARITHMETIC (ceil_fract, MINUS_EXPR, ceil_whole, exp);
++    }
++
++  if (!representable_as_half_series_p (frac_part, max_depth, &synth_info))
++    return NULL_TREE;
++
++  /* Check whether it's more profitable to not use 1.0 / ...  */
++  if (neg_exp)
++    {
++      struct pow_synth_sqrt_info alt_synth_info;
++      alt_synth_info.factors = XALLOCAVEC (bool, max_depth + 1);
++      alt_synth_info.deepest = 0;
++      alt_synth_info.num_mults = 0;
++
++      if (representable_as_half_series_p (ceil_fract, max_depth,
++					   &alt_synth_info)
++	  && alt_synth_info.deepest <= synth_info.deepest
++	  && alt_synth_info.num_mults < synth_info.num_mults)
++	{
++	  whole_part = ceil_whole;
++	  frac_part = ceil_fract;
++	  synth_info.deepest = alt_synth_info.deepest;
++	  synth_info.num_mults = alt_synth_info.num_mults;
++	  memcpy (synth_info.factors, alt_synth_info.factors,
++		  (max_depth + 1) * sizeof (bool));
++	  one_over = false;
++	}
++    }
++
++  HOST_WIDE_INT n = real_to_integer (&whole_part);
++  REAL_VALUE_TYPE cint;
++  real_from_integer (&cint, VOIDmode, n, SIGNED);
++
++  if (!real_identical (&whole_part, &cint))
++    return NULL_TREE;
++
++  if (powi_cost (n) + synth_info.num_mults > POWI_MAX_MULTS)
++    return NULL_TREE;
++
++  memset (cache, 0, (max_depth + 1) * sizeof (tree));
++
++  tree integer_res = n == 0 ? build_real (type, dconst1) : arg0;
++
++  /* Calculate the integer part of the exponent.  */
++  if (n > 1)
++    {
++      integer_res = gimple_expand_builtin_powi (gsi, loc, arg0, n);
++      if (!integer_res)
++	return NULL_TREE;
++    }
++
++  if (dump_file)
++    {
++      char string[64];
++
++      real_to_decimal (string, &exp_init, sizeof (string), 0, 1);
++      fprintf (dump_file, "synthesizing pow (x, %s) as:\n", string);
++
++      if (neg_exp)
++	{
++	  if (one_over)
++	    {
++	      fprintf (dump_file, "1.0 / (");
++	      dump_integer_part (dump_file, "x", n);
++	      if (n > 0)
++	        fprintf (dump_file, " * ");
++	      dump_fractional_sqrt_sequence (dump_file, "x", &synth_info);
++	      fprintf (dump_file, ")");
++	    }
++	  else
++	    {
++	      dump_fractional_sqrt_sequence (dump_file, "x", &synth_info);
++	      fprintf (dump_file, " / (");
++	      dump_integer_part (dump_file, "x", n);
++	      fprintf (dump_file, ")");
++	    }
++	}
++      else
++	{
++	  dump_fractional_sqrt_sequence (dump_file, "x", &synth_info);
++	  if (n > 0)
++	    fprintf (dump_file, " * ");
++	  dump_integer_part (dump_file, "x", n);
++	}
++
++      fprintf (dump_file, "\ndeepest sqrt chain: %d\n", synth_info.deepest);
++    }
++
++
++  tree fract_res = NULL_TREE;
++  cache[0] = arg0;
++
++  /* Calculate the fractional part of the exponent.  */
++  for (unsigned i = 0; i < synth_info.deepest; i++)
++    {
++      if (synth_info.factors[i])
++	{
++	  tree sqrt_chain = get_fn_chain (arg0, i + 1, gsi, sqrtfn, loc, cache);
++
++	  if (!fract_res)
++	      fract_res = sqrt_chain;
++
++	  else
++	    fract_res = build_and_insert_binop (gsi, loc, "powroot", MULT_EXPR,
++					   fract_res, sqrt_chain);
++	}
++    }
++
++  tree res = NULL_TREE;
++
++  if (neg_exp)
++    {
++      if (one_over)
++	{
++	  if (n > 0)
++	    res = build_and_insert_binop (gsi, loc, "powroot", MULT_EXPR,
++					   fract_res, integer_res);
++	  else
++	    res = fract_res;
++
++	  res = build_and_insert_binop (gsi, loc, "powrootrecip", RDIV_EXPR,
++					  build_real (type, dconst1), res);
++	}
++      else
++	{
++	  res = build_and_insert_binop (gsi, loc, "powroot", RDIV_EXPR,
++					 fract_res, integer_res);
++	}
++    }
++  else
++    res = build_and_insert_binop (gsi, loc, "powroot", MULT_EXPR,
++				   fract_res, integer_res);
++  return res;
++}
++
+ /* ARG0 and ARG1 are the two arguments to a pow builtin call in GSI
+    with location info LOC.  If possible, create an equivalent and
+    less expensive sequence of statements prior to GSI, and return an
+@@ -1157,13 +1509,17 @@ static tree
+ gimple_expand_builtin_pow (gimple_stmt_iterator *gsi, location_t loc, 
+ 			   tree arg0, tree arg1)
+ {
+-  REAL_VALUE_TYPE c, cint, dconst1_4, dconst3_4, dconst1_3, dconst1_6;
++  REAL_VALUE_TYPE c, cint, dconst1_3, dconst1_4, dconst1_6;
+   REAL_VALUE_TYPE c2, dconst3;
+   HOST_WIDE_INT n;
+-  tree type, sqrtfn, cbrtfn, sqrt_arg0, sqrt_sqrt, result, cbrt_x, powi_cbrt_x;
++  tree type, sqrtfn, cbrtfn, sqrt_arg0, result, cbrt_x, powi_cbrt_x;
+   machine_mode mode;
++  bool speed_p = optimize_bb_for_speed_p (gsi_bb (*gsi));
+   bool hw_sqrt_exists, c_is_int, c2_is_int;
+ 
++  dconst1_4 = dconst1;
++  SET_REAL_EXP (&dconst1_4, REAL_EXP (&dconst1_4) - 2);
++
+   /* If the exponent isn't a constant, there's nothing of interest
+      to be done.  */
+   if (TREE_CODE (arg1) != REAL_CST)
+@@ -1179,7 +1535,7 @@ gimple_expand_builtin_pow (gimple_stmt_iterator *gsi, location_t loc,
+   if (c_is_int
+       && ((n >= -1 && n <= 2)
+ 	  || (flag_unsafe_math_optimizations
+-	      && optimize_bb_for_speed_p (gsi_bb (*gsi))
++	      && speed_p
+ 	      && powi_cost (n) <= POWI_MAX_MULTS)))
+     return gimple_expand_builtin_powi (gsi, loc, arg0, n);
+ 
+@@ -1196,49 +1552,8 @@ gimple_expand_builtin_pow (gimple_stmt_iterator *gsi, location_t loc,
+       && !HONOR_SIGNED_ZEROS (mode))
+     return build_and_insert_call (gsi, loc, sqrtfn, arg0);
+ 
+-  /* Optimize pow(x,0.25) = sqrt(sqrt(x)).  Assume on most machines that
+-     a builtin sqrt instruction is smaller than a call to pow with 0.25,
+-     so do this optimization even if -Os.  Don't do this optimization
+-     if we don't have a hardware sqrt insn.  */
+-  dconst1_4 = dconst1;
+-  SET_REAL_EXP (&dconst1_4, REAL_EXP (&dconst1_4) - 2);
+   hw_sqrt_exists = optab_handler (sqrt_optab, mode) != CODE_FOR_nothing;
+ 
+-  if (flag_unsafe_math_optimizations
+-      && sqrtfn
+-      && REAL_VALUES_EQUAL (c, dconst1_4)
+-      && hw_sqrt_exists)
+-    {
+-      /* sqrt(x)  */
+-      sqrt_arg0 = build_and_insert_call (gsi, loc, sqrtfn, arg0);
+-
+-      /* sqrt(sqrt(x))  */
+-      return build_and_insert_call (gsi, loc, sqrtfn, sqrt_arg0);
+-    }
+-      
+-  /* Optimize pow(x,0.75) = sqrt(x) * sqrt(sqrt(x)) unless we are
+-     optimizing for space.  Don't do this optimization if we don't have
+-     a hardware sqrt insn.  */
+-  real_from_integer (&dconst3_4, VOIDmode, 3, SIGNED);
+-  SET_REAL_EXP (&dconst3_4, REAL_EXP (&dconst3_4) - 2);
+-
+-  if (flag_unsafe_math_optimizations
+-      && sqrtfn
+-      && optimize_function_for_speed_p (cfun)
+-      && REAL_VALUES_EQUAL (c, dconst3_4)
+-      && hw_sqrt_exists)
+-    {
+-      /* sqrt(x)  */
+-      sqrt_arg0 = build_and_insert_call (gsi, loc, sqrtfn, arg0);
+-
+-      /* sqrt(sqrt(x))  */
+-      sqrt_sqrt = build_and_insert_call (gsi, loc, sqrtfn, sqrt_arg0);
+-
+-      /* sqrt(x) * sqrt(sqrt(x))  */
+-      return build_and_insert_binop (gsi, loc, "powroot", MULT_EXPR,
+-				     sqrt_arg0, sqrt_sqrt);
+-    }
+-
+   /* Optimize pow(x,1./3.) = cbrt(x).  This requires unsafe math
+      optimizations since 1./3. is not exactly representable.  If x
+      is negative and finite, the correct value of pow(x,1./3.) is
+@@ -1263,7 +1578,7 @@ gimple_expand_builtin_pow (gimple_stmt_iterator *gsi, location_t loc,
+       && sqrtfn
+       && cbrtfn
+       && (gimple_val_nonnegative_real_p (arg0) || !HONOR_NANS (mode))
+-      && optimize_function_for_speed_p (cfun)
++      && speed_p
+       && hw_sqrt_exists
+       && REAL_VALUES_EQUAL (c, dconst1_6))
+     {
+@@ -1274,54 +1589,31 @@ gimple_expand_builtin_pow (gimple_stmt_iterator *gsi, location_t loc,
+       return build_and_insert_call (gsi, loc, cbrtfn, sqrt_arg0);
+     }
+ 
+-  /* Optimize pow(x,c), where n = 2c for some nonzero integer n
+-     and c not an integer, into
+-
+-       sqrt(x) * powi(x, n/2),                n > 0;
+-       1.0 / (sqrt(x) * powi(x, abs(n/2))),   n < 0.
+-
+-     Do not calculate the powi factor when n/2 = 0.  */
+-  real_arithmetic (&c2, MULT_EXPR, &c, &dconst2);
+-  n = real_to_integer (&c2);
+-  real_from_integer (&cint, VOIDmode, n, SIGNED);
+-  c2_is_int = real_identical (&c2, &cint);
+ 
++  /* Attempt to expand the POW as a product of square root chains.
++     Expand the 0.25 case even when otpimising for size.  */
+   if (flag_unsafe_math_optimizations
+       && sqrtfn
+-      && c2_is_int
+-      && !c_is_int
+-      && optimize_function_for_speed_p (cfun))
++      && hw_sqrt_exists
++      && (speed_p || REAL_VALUES_EQUAL (c, dconst1_4))
++      && !HONOR_SIGNED_ZEROS (mode))
+     {
+-      tree powi_x_ndiv2 = NULL_TREE;
+-
+-      /* Attempt to fold powi(arg0, abs(n/2)) into multiplies.  If not
+-         possible or profitable, give up.  Skip the degenerate case when
+-         n is 1 or -1, where the result is always 1.  */
+-      if (absu_hwi (n) != 1)
+-	{
+-	  powi_x_ndiv2 = gimple_expand_builtin_powi (gsi, loc, arg0,
+-						     abs_hwi (n / 2));
+-	  if (!powi_x_ndiv2)
+-	    return NULL_TREE;
+-	}
++      unsigned int max_depth = speed_p
++				? PARAM_VALUE (PARAM_MAX_POW_SQRT_DEPTH)
++				: 2;
+ 
+-      /* Calculate sqrt(x).  When n is not 1 or -1, multiply it by the
+-	 result of the optimal multiply sequence just calculated.  */
+-      sqrt_arg0 = build_and_insert_call (gsi, loc, sqrtfn, arg0);
++      tree expand_with_sqrts
++	= expand_pow_as_sqrts (gsi, loc, arg0, arg1, max_depth);
+ 
+-      if (absu_hwi (n) == 1)
+-	result = sqrt_arg0;
+-      else
+-	result = build_and_insert_binop (gsi, loc, "powroot", MULT_EXPR,
+-					 sqrt_arg0, powi_x_ndiv2);
+-
+-      /* If n is negative, reciprocate the result.  */
+-      if (n < 0)
+-	result = build_and_insert_binop (gsi, loc, "powroot", RDIV_EXPR,
+-					 build_real (type, dconst1), result);
+-      return result;
++      if (expand_with_sqrts)
++	return expand_with_sqrts;
+     }
+ 
++  real_arithmetic (&c2, MULT_EXPR, &c, &dconst2);
++  n = real_to_integer (&c2);
++  real_from_integer (&cint, VOIDmode, n, SIGNED);
++  c2_is_int = real_identical (&c2, &cint);
++
+   /* Optimize pow(x,c), where 3c = n for some nonzero integer n, into
+ 
+      powi(x, n/3) * powi(cbrt(x), n%3),                    n > 0;
+--- a/src/gcc/tree-ssa-phiopt.c
++++ b/src/gcc/tree-ssa-phiopt.c
+@@ -90,6 +90,7 @@ along with GCC; see the file COPYING3.  If not see
+ static unsigned int tree_ssa_phiopt_worker (bool, bool);
+ static bool conditional_replacement (basic_block, basic_block,
+ 				     edge, edge, gphi *, tree, tree);
++static bool factor_out_conditional_conversion (edge, edge, gphi *, tree, tree);
+ static int value_replacement (basic_block, basic_block,
+ 			      edge, edge, gimple, tree, tree);
+ static bool minmax_replacement (basic_block, basic_block,
+@@ -356,6 +357,19 @@ tree_ssa_phiopt_worker (bool do_store_elim, bool do_hoist_loads)
+ 	     node.  */
+ 	  gcc_assert (arg0 != NULL && arg1 != NULL);
+ 
++	  if (factor_out_conditional_conversion (e1, e2, phi, arg0, arg1))
++	    {
++	      /* factor_out_conditional_conversion may create a new PHI in
++		 BB2 and eliminate an existing PHI in BB2.  Recompute values
++		 that may be affected by that change.  */
++	      phis = phi_nodes (bb2);
++	      phi = single_non_singleton_phi_for_edges (phis, e1, e2);
++	      gcc_assert (phi);
++	      arg0 = gimple_phi_arg_def (phi, e1->dest_idx);
++	      arg1 = gimple_phi_arg_def (phi, e2->dest_idx);
++	      gcc_assert (arg0 != NULL && arg1 != NULL);
++	    }
++
+ 	  /* Do the replacement of conditional if it can be done.  */
+ 	  if (conditional_replacement (bb, bb1, e1, e2, phi, arg0, arg1))
+ 	    cfgchanged = true;
+@@ -431,6 +445,134 @@ replace_phi_edge_with_variable (basic_block cond_block,
+ 	      bb->index);
+ }
+ 
++/* PR66726: Factor conversion out of COND_EXPR.  If the arguments of the PHI
++   stmt are CONVERT_STMT, factor out the conversion and perform the conversion
++   to the result of PHI stmt.  */
++
++static bool
++factor_out_conditional_conversion (edge e0, edge e1, gphi *phi,
++				   tree arg0, tree arg1)
++{
++  gimple arg0_def_stmt = NULL, arg1_def_stmt = NULL, new_stmt;
++  tree new_arg0 = NULL_TREE, new_arg1 = NULL_TREE;
++  tree temp, result;
++  gphi *newphi;
++  gimple_stmt_iterator gsi, gsi_for_def;
++  source_location locus = gimple_location (phi);
++  enum tree_code convert_code;
++
++  /* Handle only PHI statements with two arguments.  TODO: If all
++     other arguments to PHI are INTEGER_CST or if their defining
++     statement have the same unary operation, we can handle more
++     than two arguments too.  */
++  if (gimple_phi_num_args (phi) != 2)
++    return false;
++
++  /* First canonicalize to simplify tests.  */
++  if (TREE_CODE (arg0) != SSA_NAME)
++    {
++      std::swap (arg0, arg1);
++      std::swap (e0, e1);
++    }
++
++  if (TREE_CODE (arg0) != SSA_NAME
++      || (TREE_CODE (arg1) != SSA_NAME
++	  && TREE_CODE (arg1) != INTEGER_CST))
++    return false;
++
++  /* Check if arg0 is an SSA_NAME and the stmt which defines arg0 is
++     a conversion.  */
++  arg0_def_stmt = SSA_NAME_DEF_STMT (arg0);
++  if (!is_gimple_assign (arg0_def_stmt)
++      || !gimple_assign_cast_p (arg0_def_stmt))
++    return false;
++
++  /* Use the RHS as new_arg0.  */
++  convert_code = gimple_assign_rhs_code (arg0_def_stmt);
++  new_arg0 = gimple_assign_rhs1 (arg0_def_stmt);
++  if (convert_code == VIEW_CONVERT_EXPR)
++    new_arg0 = TREE_OPERAND (new_arg0, 0);
++
++  if (TREE_CODE (arg1) == SSA_NAME)
++    {
++      /* Check if arg1 is an SSA_NAME and the stmt which defines arg1
++	 is a conversion.  */
++      arg1_def_stmt = SSA_NAME_DEF_STMT (arg1);
++      if (!is_gimple_assign (arg1_def_stmt)
++	  || gimple_assign_rhs_code (arg1_def_stmt) != convert_code)
++	return false;
++
++      /* Use the RHS as new_arg1.  */
++      new_arg1 = gimple_assign_rhs1 (arg1_def_stmt);
++      if (convert_code == VIEW_CONVERT_EXPR)
++	new_arg1 = TREE_OPERAND (new_arg1, 0);
++    }
++  else
++    {
++      /* If arg1 is an INTEGER_CST, fold it to new type.  */
++      if (INTEGRAL_TYPE_P (TREE_TYPE (new_arg0))
++	  && int_fits_type_p (arg1, TREE_TYPE (new_arg0)))
++	{
++	  if (gimple_assign_cast_p (arg0_def_stmt))
++	    new_arg1 = fold_convert (TREE_TYPE (new_arg0), arg1);
++	  else
++	    return false;
++	}
++      else
++	return false;
++    }
++
++  /*  If arg0/arg1 have > 1 use, then this transformation actually increases
++      the number of expressions evaluated at runtime.  */
++  if (!has_single_use (arg0)
++      || (arg1_def_stmt && !has_single_use (arg1)))
++    return false;
++
++  /* If types of new_arg0 and new_arg1 are different bailout.  */
++  if (!types_compatible_p (TREE_TYPE (new_arg0), TREE_TYPE (new_arg1)))
++    return false;
++
++  /* Create a new PHI stmt.  */
++  result = PHI_RESULT (phi);
++  temp = make_ssa_name (TREE_TYPE (new_arg0), NULL);
++  newphi = create_phi_node (temp, gimple_bb (phi));
++
++  if (dump_file && (dump_flags & TDF_DETAILS))
++    {
++      fprintf (dump_file, "PHI ");
++      print_generic_expr (dump_file, gimple_phi_result (phi), 0);
++      fprintf (dump_file,
++	       " changed to factor conversion out from COND_EXPR.\n");
++      fprintf (dump_file, "New stmt with CAST that defines ");
++      print_generic_expr (dump_file, result, 0);
++      fprintf (dump_file, ".\n");
++    }
++
++  /* Remove the old cast(s) that has single use.  */
++  gsi_for_def = gsi_for_stmt (arg0_def_stmt);
++  gsi_remove (&gsi_for_def, true);
++  if (arg1_def_stmt)
++    {
++      gsi_for_def = gsi_for_stmt (arg1_def_stmt);
++      gsi_remove (&gsi_for_def, true);
++    }
++
++  add_phi_arg (newphi, new_arg0, e0, locus);
++  add_phi_arg (newphi, new_arg1, e1, locus);
++
++  /* Create the conversion stmt and insert it.  */
++  if (convert_code == VIEW_CONVERT_EXPR)
++    temp = fold_build1 (VIEW_CONVERT_EXPR, TREE_TYPE (result), temp);
++  new_stmt = gimple_build_assign (result,  convert_code, temp);
++  gsi = gsi_after_labels (gimple_bb (phi));
++  gsi_insert_before (&gsi, new_stmt, GSI_SAME_STMT);
++
++  /* Remove he original PHI stmt.  */
++  gsi = gsi_for_stmt (phi);
++  gsi_remove (&gsi, true);
++  return true;
++}
++
+ /*  The function conditional_replacement does the main work of doing the
+     conditional replacement.  Return true if the replacement is done.
+     Otherwise return false.
+@@ -2173,6 +2315,26 @@ gate_hoist_loads (void)
+    This pass also performs a fifth transformation of a slightly different
+    flavor.
+ 
++   Factor conversion in COND_EXPR
++   ------------------------------
++
++   This transformation factors the conversion out of COND_EXPR with
++   factor_out_conditional_conversion.
++
++   For example:
++   if (a <= CST) goto <bb 3>; else goto <bb 4>;
++   <bb 3>:
++   tmp = (int) a;
++   <bb 4>:
++   tmp = PHI <tmp, CST>
++
++   Into:
++   if (a <= CST) goto <bb 3>; else goto <bb 4>;
++   <bb 3>:
++   <bb 4>:
++   a = PHI <a, CST>
++   tmp = (int) a;
++
+    Adjacent Load Hoisting
+    ----------------------
+ 
+--- a/src/gcc/tree-vrp.c
++++ b/src/gcc/tree-vrp.c
+@@ -3145,14 +3145,33 @@ extract_range_from_binary_expr_1 (value_range_t *vr,
+ 		 and all numbers from min to 0 for negative min.  */
+ 	      cmp = compare_values (vr0.max, zero);
+ 	      if (cmp == -1)
+-		max = zero;
++		{
++		  /* When vr0.max < 0, vr1.min != 0 and value
++		     ranges for dividend and divisor are available.  */
++		  if (vr1.type == VR_RANGE
++		      && !symbolic_range_p (&vr0)
++		      && !symbolic_range_p (&vr1)
++		      && !compare_values (vr1.min, zero))
++		    max = int_const_binop (code, vr0.max, vr1.min);
++		  else
++		    max = zero;
++		}
+ 	      else if (cmp == 0 || cmp == 1)
+ 		max = vr0.max;
+ 	      else
+ 		type = VR_VARYING;
+ 	      cmp = compare_values (vr0.min, zero);
+ 	      if (cmp == 1)
+-		min = zero;
++		{
++		  /* For unsigned division when value ranges for dividend
++		     and divisor are available.  */
++		  if (vr1.type == VR_RANGE
++		      && !symbolic_range_p (&vr0)
++		      && !symbolic_range_p (&vr1))
++		    min = int_const_binop (code, vr0.min, vr1.max);
++		  else
++		    min = zero;
++		}
+ 	      else if (cmp == 0 || cmp == -1)
+ 		min = vr0.min;
+ 	      else
+@@ -3180,26 +3199,60 @@ extract_range_from_binary_expr_1 (value_range_t *vr,
+     }
+   else if (code == TRUNC_MOD_EXPR)
+     {
+-      if (vr1.type != VR_RANGE
+-	  || range_includes_zero_p (vr1.min, vr1.max) != 0
+-	  || vrp_val_is_min (vr1.min))
++      if (range_is_null (&vr1))
+ 	{
+-	  set_value_range_to_varying (vr);
++	  set_value_range_to_undefined (vr);
+ 	  return;
+ 	}
++      /* ABS (A % B) < ABS (B) and either
++	 0 <= A % B <= A or A <= A % B <= 0.  */
+       type = VR_RANGE;
+-      /* Compute MAX <|vr1.min|, |vr1.max|> - 1.  */
+-      max = fold_unary_to_constant (ABS_EXPR, expr_type, vr1.min);
+-      if (tree_int_cst_lt (max, vr1.max))
+-	max = vr1.max;
+-      max = int_const_binop (MINUS_EXPR, max, build_int_cst (TREE_TYPE (max), 1));
+-      /* If the dividend is non-negative the modulus will be
+-	 non-negative as well.  */
+-      if (TYPE_UNSIGNED (expr_type)
+-	  || value_range_nonnegative_p (&vr0))
+-	min = build_int_cst (TREE_TYPE (max), 0);
++      signop sgn = TYPE_SIGN (expr_type);
++      unsigned int prec = TYPE_PRECISION (expr_type);
++      wide_int wmin, wmax, tmp;
++      wide_int zero = wi::zero (prec);
++      wide_int one = wi::one (prec);
++      if (vr1.type == VR_RANGE && !symbolic_range_p (&vr1))
++	{
++	  wmax = wi::sub (vr1.max, one);
++	  if (sgn == SIGNED)
++	    {
++	      tmp = wi::sub (wi::minus_one (prec), vr1.min);
++	      wmax = wi::smax (wmax, tmp);
++	    }
++	}
+       else
+-	min = fold_unary_to_constant (NEGATE_EXPR, expr_type, max);
++	{
++	  wmax = wi::max_value (prec, sgn);
++	  /* X % INT_MIN may be INT_MAX.  */
++	  if (sgn == UNSIGNED)
++	    wmax = wmax - one;
++	}
++
++      if (sgn == UNSIGNED)
++	wmin = zero;
++      else
++	{
++	  wmin = -wmax;
++	  if (vr0.type == VR_RANGE && TREE_CODE (vr0.min) == INTEGER_CST)
++	    {
++	      tmp = vr0.min;
++	      if (wi::gts_p (tmp, zero))
++		tmp = zero;
++	      wmin = wi::smax (wmin, tmp);
++	    }
++	}
++
++      if (vr0.type == VR_RANGE && TREE_CODE (vr0.max) == INTEGER_CST)
++	{
++	  tmp = vr0.max;
++	  if (sgn == SIGNED && wi::neg_p (tmp))
++	    tmp = zero;
++	  wmax = wi::min (wmax, tmp, sgn);
++	}
++
++      min = wide_int_to_tree (expr_type, wmin);
++      max = wide_int_to_tree (expr_type, wmax);
+     }
+   else if (code == BIT_AND_EXPR || code == BIT_IOR_EXPR || code == BIT_XOR_EXPR)
+     {
+--- a/src/libgcc/config.host
++++ b/src/libgcc/config.host
+@@ -382,14 +382,15 @@ arm*-*-netbsdelf*)
+ 	tmake_file="$tmake_file arm/t-arm arm/t-netbsd t-slibgcc-gld-nover"
+ 	;;
+ arm*-*-linux*)			# ARM GNU/Linux with ELF
+-	tmake_file="${tmake_file} arm/t-arm t-fixedpoint-gnu-prefix"
++	tmake_file="${tmake_file} arm/t-arm t-fixedpoint-gnu-prefix t-crtfm"
+ 	tmake_file="${tmake_file} arm/t-elf arm/t-bpabi arm/t-linux-eabi t-slibgcc-libgcc"
+ 	tm_file="$tm_file arm/bpabi-lib.h"
+ 	unwind_header=config/arm/unwind-arm.h
+ 	tmake_file="$tmake_file t-softfp-sfdf t-softfp-excl arm/t-softfp t-softfp"
++	extra_parts="$extra_parts crtfastmath.o"
+ 	;;
+ arm*-*-uclinux*)		# ARM ucLinux
+-	tmake_file="${tmake_file} t-fixedpoint-gnu-prefix"
++	tmake_file="${tmake_file} t-fixedpoint-gnu-prefix t-crtfm"
+ 	tmake_file="$tmake_file arm/t-arm arm/t-elf t-softfp-sfdf t-softfp-excl arm/t-softfp t-softfp"
+ 	tmake_file="${tmake_file} arm/t-bpabi"
+ 	tm_file="$tm_file arm/bpabi-lib.h"
+@@ -401,7 +402,7 @@ arm*-*-eabi* | arm*-*-symbianelf* | arm*-*-rtems*)
+ 	tm_file="$tm_file arm/bpabi-lib.h"
+ 	case ${host} in
+ 	arm*-*-eabi* | arm*-*-rtems*)
+-	  tmake_file="${tmake_file} arm/t-bpabi"
++	  tmake_file="${tmake_file} arm/t-bpabi t-crtfm"
+ 	  extra_parts="crtbegin.o crtend.o crti.o crtn.o"
+ 	  ;;
+ 	arm*-*-symbianelf*)
+--- /dev/null
++++ b/src/libgcc/config/arm/crtfastmath.c
+@@ -0,0 +1,40 @@
++/*
++ * Copyright (C) 2014 Free Software Foundation, Inc.
++ *
++ * This file 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 file is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++ * General Public License for more details.
++ *
++ * Under Section 7 of GPL version 3, you are granted additional
++ * permissions described in the GCC Runtime Library Exception, version
++ * 3.1, as published by the Free Software Foundation.
++ *
++ * You should have received a copy of the GNU General Public License and
++ * a copy of the GCC Runtime Library Exception along with this program;
++ * see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++ * <http://www.gnu.org/licenses/>.
++ */
++
++/* Enable flush-to-zero support for -ffast-math on VFP targets.  */
++#ifndef __SOFTFP__
++
++#define FPSCR_FZ		(1 << 24)
++
++static void __attribute__((constructor))
++__arm_set_fast_math (void)
++{
++  unsigned int fpscr_save;
++
++  /* Set the FZ (flush-to-zero) bit in FPSCR.  */
++  __asm__("vmrs %0, fpscr" : "=r" (fpscr_save));
++  fpscr_save |= FPSCR_FZ;
++  __asm__("vmsr fpscr, %0" : : "r" (fpscr_save));
++}
++
++#endif /* __SOFTFP__  */
+--- a/src/libgcc/config/arm/fp16.c
++++ b/src/libgcc/config/arm/fp16.c
+@@ -35,9 +35,12 @@ __gnu_f2h_internal(unsigned int a, int ieee)
+     {
+       if (!ieee)
+ 	return sign;
++      if (mantissa == 0)
++	return sign | 0x7c00;	/* Infinity.  */
++      /* Remaining cases are NaNs.  Convert SNaN to QNaN.  */
+       return sign | 0x7e00 | (mantissa >> 13);
+     }
+-  
++
+   if (aexp == 0 && mantissa == 0)
+     return sign;
+ 
+@@ -49,7 +52,7 @@ __gnu_f2h_internal(unsigned int a, int ieee)
+     {
+       mask = 0x00ffffff;
+       if (aexp >= -25)
+-        mask >>= 25 + aexp;
++	mask >>= 25 + aexp;
+     }
+   else
+     mask = 0x00001fff;
+--- a/src/libgcc/config/arm/ieee754-df.S
++++ b/src/libgcc/config/arm/ieee754-df.S
+@@ -33,8 +33,12 @@
+  * Only the default rounding mode is intended for best performances.
+  * Exceptions aren't supported yet, but that can be added quite easily
+  * if necessary without impacting performances.
++ *
++ * In the CFI related comments, 'previousOffset' refers to the previous offset
++ * from sp used to compute the CFA.
+  */
+ 
++	.cfi_sections .debug_frame
+ 
+ #ifndef __ARMEB__
+ #define xl r0
+@@ -53,11 +57,13 @@
+ 
+ ARM_FUNC_START negdf2
+ ARM_FUNC_ALIAS aeabi_dneg negdf2
++	CFI_START_FUNCTION
+ 
+ 	@ flip sign bit
+ 	eor	xh, xh, #0x80000000
+ 	RET
+ 
++	CFI_END_FUNCTION
+ 	FUNC_END aeabi_dneg
+ 	FUNC_END negdf2
+ 
+@@ -66,6 +72,7 @@ ARM_FUNC_ALIAS aeabi_dneg negdf2
+ #ifdef L_arm_addsubdf3
+ 
+ ARM_FUNC_START aeabi_drsub
++	CFI_START_FUNCTION
+ 
+ 	eor	xh, xh, #0x80000000	@ flip sign bit of first arg
+ 	b	1f	
+@@ -81,7 +88,11 @@ ARM_FUNC_ALIAS aeabi_dsub subdf3
+ ARM_FUNC_START adddf3
+ ARM_FUNC_ALIAS aeabi_dadd adddf3
+ 
+-1:	do_push	{r4, r5, lr}
++1:  do_push {r4, r5, lr}        @ sp -= 12
++	.cfi_adjust_cfa_offset 12   @ CFA is now sp + previousOffset + 12
++	.cfi_rel_offset r4, 0       @ Registers are saved from sp to sp + 8
++	.cfi_rel_offset r5, 4
++	.cfi_rel_offset lr, 8
+ 
+ 	@ Look for zeroes, equal values, INF, or NAN.
+ 	shift1	lsl, r4, xh, #1
+@@ -148,6 +159,11 @@ ARM_FUNC_ALIAS aeabi_dadd adddf3
+ 	@ Since this is not common case, rescale them off line.
+ 	teq	r4, r5
+ 	beq	LSYM(Lad_d)
++
++@ CFI note: we're lucky that the branches to Lad_* that appear after this function
++@ have a CFI state that's exactly the same as the one we're in at this
++@ point. Otherwise the CFI would change to a different state after the branch,
++@ which would be disastrous for backtracing.
+ LSYM(Lad_x):
+ 
+ 	@ Compensate for the exponent overlapping the mantissa MSB added later
+@@ -413,6 +429,7 @@ LSYM(Lad_i):
+ 	orrne	xh, xh, #0x00080000	@ quiet NAN
+ 	RETLDM	"r4, r5"
+ 
++	CFI_END_FUNCTION
+ 	FUNC_END aeabi_dsub
+ 	FUNC_END subdf3
+ 	FUNC_END aeabi_dadd
+@@ -420,12 +437,19 @@ LSYM(Lad_i):
+ 
+ ARM_FUNC_START floatunsidf
+ ARM_FUNC_ALIAS aeabi_ui2d floatunsidf
++	CFI_START_FUNCTION
+ 
+ 	teq	r0, #0
+ 	do_it	eq, t
+ 	moveq	r1, #0
+ 	RETc(eq)
+-	do_push	{r4, r5, lr}
++
++	do_push {r4, r5, lr}        @ sp -= 12
++	.cfi_adjust_cfa_offset 12   @ CFA is now sp + previousOffset + 12
++	.cfi_rel_offset r4, 0       @ Registers are saved from sp + 0 to sp + 8.
++	.cfi_rel_offset r5, 4
++	.cfi_rel_offset lr, 8
++
+ 	mov	r4, #0x400		@ initial exponent
+ 	add	r4, r4, #(52-1 - 1)
+ 	mov	r5, #0			@ sign bit is 0
+@@ -435,17 +459,25 @@ ARM_FUNC_ALIAS aeabi_ui2d floatunsidf
+ 	mov	xh, #0
+ 	b	LSYM(Lad_l)
+ 
++	CFI_END_FUNCTION
+ 	FUNC_END aeabi_ui2d
+ 	FUNC_END floatunsidf
+ 
+ ARM_FUNC_START floatsidf
+ ARM_FUNC_ALIAS aeabi_i2d floatsidf
++	CFI_START_FUNCTION
+ 
+ 	teq	r0, #0
+ 	do_it	eq, t
+ 	moveq	r1, #0
+ 	RETc(eq)
+-	do_push	{r4, r5, lr}
++
++	do_push {r4, r5, lr}        @ sp -= 12
++	.cfi_adjust_cfa_offset 12   @ CFA is now sp + previousOffset + 12
++	.cfi_rel_offset r4, 0       @ Registers are saved from sp + 0 to sp + 8.
++	.cfi_rel_offset r5, 4
++	.cfi_rel_offset lr, 8
++
+ 	mov	r4, #0x400		@ initial exponent
+ 	add	r4, r4, #(52-1 - 1)
+ 	ands	r5, r0, #0x80000000	@ sign bit in r5
+@@ -457,11 +489,13 @@ ARM_FUNC_ALIAS aeabi_i2d floatsidf
+ 	mov	xh, #0
+ 	b	LSYM(Lad_l)
+ 
++	CFI_END_FUNCTION
+ 	FUNC_END aeabi_i2d
+ 	FUNC_END floatsidf
+ 
+ ARM_FUNC_START extendsfdf2
+ ARM_FUNC_ALIAS aeabi_f2d extendsfdf2
++	CFI_START_FUNCTION
+ 
+ 	movs	r2, r0, lsl #1		@ toss sign bit
+ 	mov	xh, r2, asr #3		@ stretch exponent
+@@ -480,34 +514,54 @@ ARM_FUNC_ALIAS aeabi_f2d extendsfdf2
+ 
+ 	@ value was denormalized.  We can normalize it now.
+ 	do_push	{r4, r5, lr}
++	.cfi_adjust_cfa_offset 12   @ CFA is now sp + previousOffset + 12
++	.cfi_rel_offset r4, 0       @ Registers are saved from sp + 0 to sp + 8.
++	.cfi_rel_offset r5, 4
++	.cfi_rel_offset lr, 8
++
+ 	mov	r4, #0x380		@ setup corresponding exponent
+ 	and	r5, xh, #0x80000000	@ move sign bit in r5
+ 	bic	xh, xh, #0x80000000
+ 	b	LSYM(Lad_l)
+ 
++	CFI_END_FUNCTION
+ 	FUNC_END aeabi_f2d
+ 	FUNC_END extendsfdf2
+ 
+ ARM_FUNC_START floatundidf
+ ARM_FUNC_ALIAS aeabi_ul2d floatundidf
++	CFI_START_FUNCTION
++	.cfi_remember_state        @ Save the current CFA state.
+ 
+ 	orrs	r2, r0, r1
+ 	do_it	eq
+ 	RETc(eq)
+ 
+-	do_push	{r4, r5, lr}
++	do_push {r4, r5, lr}       @ sp -= 12
++	.cfi_adjust_cfa_offset 12  @ CFA is now sp + previousOffset + 12
++	.cfi_rel_offset r4, 0      @ Registers are saved from sp + 0 to sp + 8
++	.cfi_rel_offset r5, 4
++	.cfi_rel_offset lr, 8
+ 
+ 	mov	r5, #0
+ 	b	2f
+ 
+ ARM_FUNC_START floatdidf
+ ARM_FUNC_ALIAS aeabi_l2d floatdidf
++	.cfi_restore_state
++	@ Restore the CFI state we saved above. If we didn't do this then the
++	@ following instructions would have the CFI state that was set by the
++	@ offset adjustments made in floatundidf.
+ 
+ 	orrs	r2, r0, r1
+ 	do_it	eq
+ 	RETc(eq)
+ 
+-	do_push	{r4, r5, lr}
++	do_push {r4, r5, lr}       @ sp -= 12
++	.cfi_adjust_cfa_offset 12  @ CFA is now sp + previousOffset + 12
++	.cfi_rel_offset r4, 0      @ Registers are saved from sp to sp + 8
++	.cfi_rel_offset r5, 4
++	.cfi_rel_offset lr, 8
+ 
+ 	ands	r5, ah, #0x80000000	@ sign bit in r5
+ 	bpl	2f
+@@ -550,6 +604,7 @@ ARM_FUNC_ALIAS aeabi_l2d floatdidf
+ 	add	r4, r4, r2
+ 	b	LSYM(Lad_p)
+ 
++	CFI_END_FUNCTION
+ 	FUNC_END floatdidf
+ 	FUNC_END aeabi_l2d
+ 	FUNC_END floatundidf
+@@ -561,7 +616,14 @@ ARM_FUNC_ALIAS aeabi_l2d floatdidf
+ 
+ ARM_FUNC_START muldf3
+ ARM_FUNC_ALIAS aeabi_dmul muldf3
+-	do_push	{r4, r5, r6, lr}
++	CFI_START_FUNCTION
++
++	do_push {r4, r5, r6, lr}    @ sp -= 16
++	.cfi_adjust_cfa_offset 16   @ CFA is now sp + previousOffset + 16
++	.cfi_rel_offset r4, 0       @ Registers are saved from sp to sp + 12.
++	.cfi_rel_offset r5, 4
++	.cfi_rel_offset r6, 8
++	.cfi_rel_offset lr, 12
+ 
+ 	@ Mask out exponents, trap any zero/denormal/INF/NAN.
+ 	mov	ip, #0xff
+@@ -596,7 +658,16 @@ ARM_FUNC_ALIAS aeabi_dmul muldf3
+ 	and   r6, r6, #0x80000000
+ 
+ 	@ Well, no way to make it shorter without the umull instruction.
+-	stmfd	sp!, {r6, r7, r8, r9, sl, fp}
++	stmfd   sp!, {r6, r7, r8, r9, sl, fp}   @ sp -= 24
++	.cfi_remember_state         @ Save the current CFI state.
++	.cfi_adjust_cfa_offset 24   @ CFA is now sp + previousOffset + 24.
++	.cfi_rel_offset r6, 0       @ Registers are saved from sp to sp + 20.
++	.cfi_rel_offset r7, 4
++	.cfi_rel_offset r8, 8
++	.cfi_rel_offset r9, 12
++	.cfi_rel_offset sl, 16
++	.cfi_rel_offset fp, 20
++
+ 	mov	r7, xl, lsr #16
+ 	mov	r8, yl, lsr #16
+ 	mov	r9, xh, lsr #16
+@@ -648,8 +719,8 @@ ARM_FUNC_ALIAS aeabi_dmul muldf3
+ 	mul	fp, xh, yh
+ 	adcs	r5, r5, fp
+ 	adc	r6, r6, #0
+-	ldmfd	sp!, {yl, r7, r8, r9, sl, fp}
+-
++	ldmfd   sp!, {yl, r7, r8, r9, sl, fp}   @ sp += 24
++	.cfi_restore_state   @ Restore the previous CFI state.
+ #else
+ 
+ 	@ Here is the actual multiplication.
+@@ -715,7 +786,6 @@ LSYM(Lml_1):
+ 	orr	xh, xh, #0x00100000
+ 	mov	lr, #0
+ 	subs	r4, r4, #1
+-
+ LSYM(Lml_u):
+ 	@ Overflow?
+ 	bgt	LSYM(Lml_o)
+@@ -863,13 +933,20 @@ LSYM(Lml_n):
+ 	orr	xh, xh, #0x00f80000
+ 	RETLDM	"r4, r5, r6"
+ 
++	CFI_END_FUNCTION
+ 	FUNC_END aeabi_dmul
+ 	FUNC_END muldf3
+ 
+ ARM_FUNC_START divdf3
+ ARM_FUNC_ALIAS aeabi_ddiv divdf3
++	CFI_START_FUNCTION
+ 	
+ 	do_push	{r4, r5, r6, lr}
++	.cfi_adjust_cfa_offset 16
++	.cfi_rel_offset r4, 0
++	.cfi_rel_offset r5, 4
++	.cfi_rel_offset r6, 8
++	.cfi_rel_offset lr, 12
+ 
+ 	@ Mask out exponents, trap any zero/denormal/INF/NAN.
+ 	mov	ip, #0xff
+@@ -1052,6 +1129,7 @@ LSYM(Ldv_s):
+ 	bne	LSYM(Lml_z)		@ 0 / <non_zero> -> 0
+ 	b	LSYM(Lml_n)		@ 0 / 0 -> NAN
+ 
++	CFI_END_FUNCTION
+ 	FUNC_END aeabi_ddiv
+ 	FUNC_END divdf3
+ 
+@@ -1063,6 +1141,7 @@ LSYM(Ldv_s):
+ 
+ ARM_FUNC_START gtdf2
+ ARM_FUNC_ALIAS gedf2 gtdf2
++	CFI_START_FUNCTION
+ 	mov	ip, #-1
+ 	b	1f
+ 
+@@ -1077,6 +1156,10 @@ ARM_FUNC_ALIAS eqdf2 cmpdf2
+ 	mov	ip, #1			@ how should we specify unordered here?
+ 
+ 1:	str	ip, [sp, #-4]!
++	.cfi_adjust_cfa_offset 4        @ CFA is now sp + previousOffset + 4.
++	@ We're not adding CFI for ip as it's pushed into the stack
++	@ only because @ it may be popped off later as a return value
++	@ (i.e. we're not preserving @ it anyways).
+ 
+ 	@ Trap any INF/NAN first.
+ 	mov	ip, xh, lsl #1
+@@ -1085,10 +1168,18 @@ ARM_FUNC_ALIAS eqdf2 cmpdf2
+ 	do_it	ne
+ 	COND(mvn,s,ne)	ip, ip, asr #21
+ 	beq	3f
+-
+-	@ Test for equality.
+-	@ Note that 0.0 is equal to -0.0.
++	.cfi_remember_state
++	@ Save the current CFI state. This is done because the branch
++	@ is conditional, @ and if we don't take it we'll issue a
++	@ .cfi_adjust_cfa_offset and return.  @ If we do take it,
++	@ however, the .cfi_adjust_cfa_offset from the non-branch @ code
++	@ will affect the branch code as well. To avoid this we'll
++	@ restore @ the current state before executing the branch code.
++
++	@ Test for equality.  @ Note that 0.0 is equal to -0.0.
+ 2:	add	sp, sp, #4
++	.cfi_adjust_cfa_offset -4       @ CFA is now sp + previousOffset.
++
+ 	orrs	ip, xl, xh, lsl #1	@ if x == 0.0 or -0.0
+ 	do_it	eq, e
+ 	COND(orr,s,eq)	ip, yl, yh, lsl #1	@ and y == 0.0 or -0.0
+@@ -1117,8 +1208,13 @@ ARM_FUNC_ALIAS eqdf2 cmpdf2
+ 	orr	r0, r0, #1
+ 	RET
+ 
+-	@ Look for a NAN.
+-3:	mov	ip, xh, lsl #1
++3:  @ Look for a NAN.
++
++	@ Restore the previous CFI state (i.e. keep the CFI state as it was
++	@ before the branch).
++	.cfi_restore_state
++
++	mov ip, xh, lsl #1
+ 	mvns	ip, ip, asr #21
+ 	bne	4f
+ 	orrs	ip, xl, xh, lsl #12
+@@ -1128,9 +1224,13 @@ ARM_FUNC_ALIAS eqdf2 cmpdf2
+ 	bne	2b
+ 	orrs	ip, yl, yh, lsl #12
+ 	beq	2b			@ y is not NAN
++
+ 5:	ldr	r0, [sp], #4		@ unordered return code
++	.cfi_adjust_cfa_offset -4       @ CFA is now sp + previousOffset.
++
+ 	RET
+ 
++	CFI_END_FUNCTION
+ 	FUNC_END gedf2
+ 	FUNC_END gtdf2
+ 	FUNC_END ledf2
+@@ -1140,6 +1240,7 @@ ARM_FUNC_ALIAS eqdf2 cmpdf2
+ 	FUNC_END cmpdf2
+ 
+ ARM_FUNC_START aeabi_cdrcmple
++	CFI_START_FUNCTION
+ 
+ 	mov	ip, r0
+ 	mov	r0, r2
+@@ -1148,13 +1249,17 @@ ARM_FUNC_START aeabi_cdrcmple
+ 	mov	r1, r3
+ 	mov	r3, ip
+ 	b	6f
+-	
++
+ ARM_FUNC_START aeabi_cdcmpeq
+ ARM_FUNC_ALIAS aeabi_cdcmple aeabi_cdcmpeq
+ 
+ 	@ The status-returning routines are required to preserve all
+ 	@ registers except ip, lr, and cpsr.
+ 6:	do_push	{r0, lr}
++	.cfi_adjust_cfa_offset 8  @ CFA is now sp + previousOffset + 8.
++	.cfi_rel_offset r0, 0     @ Previous r0 is saved at sp.
++	.cfi_rel_offset lr, 4     @ Previous lr is saved at sp + 4.
++
+ 	ARM_CALL cmpdf2
+ 	@ Set the Z flag correctly, and the C flag unconditionally.
+ 	cmp	r0, #0
+@@ -1162,59 +1267,86 @@ ARM_FUNC_ALIAS aeabi_cdcmple aeabi_cdcmpeq
+ 	@ that the first operand was smaller than the second.
+ 	do_it	mi
+ 	cmnmi	r0, #0
++
+ 	RETLDM	"r0"
+ 
++	CFI_END_FUNCTION
+ 	FUNC_END aeabi_cdcmple
+ 	FUNC_END aeabi_cdcmpeq
+ 	FUNC_END aeabi_cdrcmple
+ 	
+ ARM_FUNC_START	aeabi_dcmpeq
++	CFI_START_FUNCTION
++
++	str lr, [sp, #-8]!        @ sp -= 8
++	.cfi_adjust_cfa_offset 8  @ CFA is now sp + previousOffset + 8
++	.cfi_rel_offset lr, 0     @ lr is at sp
+ 
+-	str	lr, [sp, #-8]!
+ 	ARM_CALL aeabi_cdcmple
+ 	do_it	eq, e
+ 	moveq	r0, #1	@ Equal to.
+ 	movne	r0, #0	@ Less than, greater than, or unordered.
++
+ 	RETLDM
+ 
++	CFI_END_FUNCTION
+ 	FUNC_END aeabi_dcmpeq
+ 
+ ARM_FUNC_START	aeabi_dcmplt
++	CFI_START_FUNCTION
++
++	str lr, [sp, #-8]!        @ sp -= 8
++	.cfi_adjust_cfa_offset 8  @ CFA is now sp + previousOffset + 8
++	.cfi_rel_offset lr, 0     @ lr is at sp
+ 
+-	str	lr, [sp, #-8]!
+ 	ARM_CALL aeabi_cdcmple
+ 	do_it	cc, e
+ 	movcc	r0, #1	@ Less than.
+ 	movcs	r0, #0	@ Equal to, greater than, or unordered.
+ 	RETLDM
+ 
++	CFI_END_FUNCTION
+ 	FUNC_END aeabi_dcmplt
+ 
+ ARM_FUNC_START	aeabi_dcmple
++	CFI_START_FUNCTION
++
++	str lr, [sp, #-8]!        @ sp -= 8
++	.cfi_adjust_cfa_offset 8  @ CFA is now sp + previousOffset + 8
++	.cfi_rel_offset lr, 0     @ lr is at sp
+ 
+-	str	lr, [sp, #-8]!
+ 	ARM_CALL aeabi_cdcmple
+ 	do_it	ls, e
+ 	movls	r0, #1  @ Less than or equal to.
+ 	movhi	r0, #0	@ Greater than or unordered.
+ 	RETLDM
+ 
++	CFI_END_FUNCTION
+ 	FUNC_END aeabi_dcmple
+ 
+ ARM_FUNC_START	aeabi_dcmpge
++	CFI_START_FUNCTION
++
++	str lr, [sp, #-8]!        @ sp -= 8
++	.cfi_adjust_cfa_offset 8  @ CFA is now sp + previousOffset + 8
++	.cfi_rel_offset lr, 0     @ lr is at sp
+ 
+-	str	lr, [sp, #-8]!
+ 	ARM_CALL aeabi_cdrcmple
+ 	do_it	ls, e
+ 	movls	r0, #1	@ Operand 2 is less than or equal to operand 1.
+ 	movhi	r0, #0	@ Operand 2 greater than operand 1, or unordered.
+ 	RETLDM
+ 
++	CFI_END_FUNCTION
+ 	FUNC_END aeabi_dcmpge
+ 
+ ARM_FUNC_START	aeabi_dcmpgt
++	CFI_START_FUNCTION
++
++	str lr, [sp, #-8]!        @ sp -= 8
++	.cfi_adjust_cfa_offset 8  @ CFA is now sp + previousOffset + 8
++	.cfi_rel_offset lr, 0     @ lr is at sp
+ 
+-	str	lr, [sp, #-8]!
+ 	ARM_CALL aeabi_cdrcmple
+ 	do_it	cc, e
+ 	movcc	r0, #1	@ Operand 2 is less than operand 1.
+@@ -1222,6 +1354,7 @@ ARM_FUNC_START	aeabi_dcmpgt
+ 			@ or they are unordered.
+ 	RETLDM
+ 
++	CFI_END_FUNCTION
+ 	FUNC_END aeabi_dcmpgt
+ 
+ #endif /* L_cmpdf2 */
+@@ -1230,6 +1363,7 @@ ARM_FUNC_START	aeabi_dcmpgt
+ 
+ ARM_FUNC_START unorddf2
+ ARM_FUNC_ALIAS aeabi_dcmpun unorddf2
++	.cfi_startproc
+ 
+ 	mov	ip, xh, lsl #1
+ 	mvns	ip, ip, asr #21
+@@ -1247,6 +1381,7 @@ ARM_FUNC_ALIAS aeabi_dcmpun unorddf2
+ 3:	mov	r0, #1			@ arguments are unordered.
+ 	RET
+ 
++	.cfi_endproc
+ 	FUNC_END aeabi_dcmpun
+ 	FUNC_END unorddf2
+ 
+@@ -1256,6 +1391,7 @@ ARM_FUNC_ALIAS aeabi_dcmpun unorddf2
+ 
+ ARM_FUNC_START fixdfsi
+ ARM_FUNC_ALIAS aeabi_d2iz fixdfsi
++	CFI_START_FUNCTION
+ 
+ 	@ check exponent range.
+ 	mov	r2, xh, lsl #1
+@@ -1289,6 +1425,7 @@ ARM_FUNC_ALIAS aeabi_d2iz fixdfsi
+ 4:	mov	r0, #0			@ How should we convert NAN?
+ 	RET
+ 
++	CFI_END_FUNCTION
+ 	FUNC_END aeabi_d2iz
+ 	FUNC_END fixdfsi
+ 
+@@ -1298,6 +1435,7 @@ ARM_FUNC_ALIAS aeabi_d2iz fixdfsi
+ 
+ ARM_FUNC_START fixunsdfsi
+ ARM_FUNC_ALIAS aeabi_d2uiz fixunsdfsi
++	CFI_START_FUNCTION
+ 
+ 	@ check exponent range.
+ 	movs	r2, xh, lsl #1
+@@ -1327,6 +1465,7 @@ ARM_FUNC_ALIAS aeabi_d2uiz fixunsdfsi
+ 4:	mov	r0, #0			@ How should we convert NAN?
+ 	RET
+ 
++	CFI_END_FUNCTION
+ 	FUNC_END aeabi_d2uiz
+ 	FUNC_END fixunsdfsi
+ 
+@@ -1336,6 +1475,7 @@ ARM_FUNC_ALIAS aeabi_d2uiz fixunsdfsi
+ 
+ ARM_FUNC_START truncdfsf2
+ ARM_FUNC_ALIAS aeabi_d2f truncdfsf2
++	CFI_START_FUNCTION
+ 
+ 	@ check exponent range.
+ 	mov	r2, xh, lsl #1
+@@ -1400,6 +1540,7 @@ ARM_FUNC_ALIAS aeabi_d2f truncdfsf2
+ 	orr	r0, r0, #0x00800000
+ 	RET
+ 
++	CFI_END_FUNCTION
+ 	FUNC_END aeabi_d2f
+ 	FUNC_END truncdfsf2
+ 
+--- a/src/libgcc/config/arm/ieee754-sf.S
++++ b/src/libgcc/config/arm/ieee754-sf.S
+@@ -31,16 +31,21 @@
+  * Only the default rounding mode is intended for best performances.
+  * Exceptions aren't supported yet, but that can be added quite easily
+  * if necessary without impacting performances.
++ *
++ * In the CFI related comments, 'previousOffset' refers to the previous offset
++ * from sp used to compute the CFA.
+  */
+ 
+ #ifdef L_arm_negsf2
+ 	
+ ARM_FUNC_START negsf2
+ ARM_FUNC_ALIAS aeabi_fneg negsf2
++	CFI_START_FUNCTION
+ 
+ 	eor	r0, r0, #0x80000000	@ flip sign bit
+ 	RET
+ 
++	CFI_END_FUNCTION
+ 	FUNC_END aeabi_fneg
+ 	FUNC_END negsf2
+ 
+@@ -49,6 +54,7 @@ ARM_FUNC_ALIAS aeabi_fneg negsf2
+ #ifdef L_arm_addsubsf3
+ 
+ ARM_FUNC_START aeabi_frsub
++	CFI_START_FUNCTION
+ 
+ 	eor	r0, r0, #0x80000000	@ flip sign bit of first arg
+ 	b	1f
+@@ -284,6 +290,7 @@ LSYM(Lad_i):
+ 	orrne	r0, r0, #0x00400000	@ quiet NAN
+ 	RET
+ 
++	CFI_END_FUNCTION
+ 	FUNC_END aeabi_frsub
+ 	FUNC_END aeabi_fadd
+ 	FUNC_END addsf3
+@@ -292,6 +299,7 @@ LSYM(Lad_i):
+ 
+ ARM_FUNC_START floatunsisf
+ ARM_FUNC_ALIAS aeabi_ui2f floatunsisf
++	CFI_START_FUNCTION
+ 		
+ 	mov	r3, #0
+ 	b	1f
+@@ -316,6 +324,7 @@ ARM_FUNC_ALIAS aeabi_i2f floatsisf
+ 	mov	al, #0
+ 	b	2f
+ 
++	CFI_END_FUNCTION
+ 	FUNC_END aeabi_i2f
+ 	FUNC_END floatsisf
+ 	FUNC_END aeabi_ui2f
+@@ -323,6 +332,7 @@ ARM_FUNC_ALIAS aeabi_i2f floatsisf
+ 
+ ARM_FUNC_START floatundisf
+ ARM_FUNC_ALIAS aeabi_ul2f floatundisf
++	CFI_START_FUNCTION
+ 
+ 	orrs	r2, r0, r1
+ 	do_it	eq
+@@ -409,6 +419,7 @@ ARM_FUNC_ALIAS aeabi_l2f floatdisf
+ 	biceq	r0, r0, ip, lsr #31
+ 	RET
+ 
++	CFI_END_FUNCTION
+ 	FUNC_END floatdisf
+ 	FUNC_END aeabi_l2f
+ 	FUNC_END floatundisf
+@@ -420,6 +431,7 @@ ARM_FUNC_ALIAS aeabi_l2f floatdisf
+ 
+ ARM_FUNC_START mulsf3
+ ARM_FUNC_ALIAS aeabi_fmul mulsf3
++	CFI_START_FUNCTION
+ 
+ 	@ Mask out exponents, trap any zero/denormal/INF/NAN.
+ 	mov	ip, #0xff
+@@ -454,7 +466,13 @@ LSYM(Lml_x):
+ 	and	r3, ip, #0x80000000
+ 
+ 	@ Well, no way to make it shorter without the umull instruction.
+-	do_push	{r3, r4, r5}
++	do_push	{r3, r4, r5}       @ sp -= 12
++	.cfi_remember_state        @ Save the current CFI state
++	.cfi_adjust_cfa_offset 12  @ CFA is now sp + previousOffset + 12
++	.cfi_rel_offset r3, 0      @ Registers are saved from sp to sp + 8
++	.cfi_rel_offset r4, 4
++	.cfi_rel_offset r5, 8
++
+ 	mov	r4, r0, lsr #16
+ 	mov	r5, r1, lsr #16
+ 	bic	r0, r0, r4, lsl #16
+@@ -465,7 +483,8 @@ LSYM(Lml_x):
+ 	mla	r0, r4, r1, r0
+ 	adds	r3, r3, r0, lsl #16
+ 	adc	r1, ip, r0, lsr #16
+-	do_pop	{r0, r4, r5}
++	do_pop	{r0, r4, r5}       @ sp += 12
++	.cfi_restore_state         @ Restore the previous CFI state
+ 
+ #else
+ 
+@@ -618,11 +637,13 @@ LSYM(Lml_n):
+ 	orr	r0, r0, #0x00c00000
+ 	RET
+ 
++	CFI_END_FUNCTION
+ 	FUNC_END aeabi_fmul
+ 	FUNC_END mulsf3
+ 
+ ARM_FUNC_START divsf3
+ ARM_FUNC_ALIAS aeabi_fdiv divsf3
++	CFI_START_FUNCTION
+ 
+ 	@ Mask out exponents, trap any zero/denormal/INF/NAN.
+ 	mov	ip, #0xff
+@@ -758,6 +779,7 @@ LSYM(Ldv_s):
+ 	bne	LSYM(Lml_z)		@ 0 / <non_zero> -> 0
+ 	b	LSYM(Lml_n)		@ 0 / 0 -> NAN
+ 
++	CFI_END_FUNCTION
+ 	FUNC_END aeabi_fdiv
+ 	FUNC_END divsf3
+ 
+@@ -782,6 +804,7 @@ LSYM(Ldv_s):
+ 
+ ARM_FUNC_START gtsf2
+ ARM_FUNC_ALIAS gesf2 gtsf2
++	CFI_START_FUNCTION
+ 	mov	ip, #-1
+ 	b	1f
+ 
+@@ -796,6 +819,10 @@ ARM_FUNC_ALIAS eqsf2 cmpsf2
+ 	mov	ip, #1			@ how should we specify unordered here?
+ 
+ 1:	str	ip, [sp, #-4]!
++	.cfi_adjust_cfa_offset 4  @ CFA is now sp + previousOffset + 4.
++	@ We're not adding CFI for ip as it's pushed into the stack only because
++	@ it may be popped off later as a return value (i.e. we're not preserving
++	@ it anyways).
+ 
+ 	@ Trap any INF/NAN first.
+ 	mov	r2, r0, lsl #1
+@@ -804,10 +831,18 @@ ARM_FUNC_ALIAS eqsf2 cmpsf2
+ 	do_it	ne
+ 	COND(mvn,s,ne)	ip, r3, asr #24
+ 	beq	3f
++	.cfi_remember_state
++	@ Save the current CFI state. This is done because the branch is conditional,
++	@ and if we don't take it we'll issue a .cfi_adjust_cfa_offset and return.
++	@ If we do take it, however, the .cfi_adjust_cfa_offset from the non-branch
++	@ code will affect the branch code as well. To avoid this we'll restore
++	@ the current state before executing the branch code.
+ 
+ 	@ Compare values.
+ 	@ Note that 0.0 is equal to -0.0.
+ 2:	add	sp, sp, #4
++	.cfi_adjust_cfa_offset -4       @ CFA is now sp + previousOffset.
++
+ 	orrs	ip, r2, r3, lsr #1	@ test if both are 0, clear C flag
+ 	do_it	ne
+ 	teqne	r0, r1			@ if not 0 compare sign
+@@ -823,8 +858,13 @@ ARM_FUNC_ALIAS eqsf2 cmpsf2
+ 	orrne	r0, r0, #1
+ 	RET
+ 
+-	@ Look for a NAN. 
+-3:	mvns	ip, r2, asr #24
++3:	@ Look for a NAN.
++
++	@ Restore the previous CFI state (i.e. keep the CFI state as it was
++	@ before the branch).
++	.cfi_restore_state
++
++	mvns	ip, r2, asr #24
+ 	bne	4f
+ 	movs	ip, r0, lsl #9
+ 	bne	5f			@ r0 is NAN
+@@ -832,9 +872,12 @@ ARM_FUNC_ALIAS eqsf2 cmpsf2
+ 	bne	2b
+ 	movs	ip, r1, lsl #9
+ 	beq	2b			@ r1 is not NAN
++
+ 5:	ldr	r0, [sp], #4		@ return unordered code.
++	.cfi_adjust_cfa_offset -4       @ CFA is now sp + previousOffset.
+ 	RET
+ 
++	CFI_END_FUNCTION
+ 	FUNC_END gesf2
+ 	FUNC_END gtsf2
+ 	FUNC_END lesf2
+@@ -844,6 +887,7 @@ ARM_FUNC_ALIAS eqsf2 cmpsf2
+ 	FUNC_END cmpsf2
+ 
+ ARM_FUNC_START aeabi_cfrcmple
++	CFI_START_FUNCTION
+ 
+ 	mov	ip, r0
+ 	mov	r0, r1
+@@ -856,6 +900,13 @@ ARM_FUNC_ALIAS aeabi_cfcmple aeabi_cfcmpeq
+ 	@ The status-returning routines are required to preserve all
+ 	@ registers except ip, lr, and cpsr.
+ 6:	do_push	{r0, r1, r2, r3, lr}
++	.cfi_adjust_cfa_offset 20  @ CFA is at sp + previousOffset + 20
++	.cfi_rel_offset r0, 0      @ Registers are saved from sp to sp + 16
++	.cfi_rel_offset r1, 4
++	.cfi_rel_offset r2, 8
++	.cfi_rel_offset r3, 12
++	.cfi_rel_offset lr, 16
++
+ 	ARM_CALL cmpsf2
+ 	@ Set the Z flag correctly, and the C flag unconditionally.
+ 	cmp	r0, #0
+@@ -865,57 +916,82 @@ ARM_FUNC_ALIAS aeabi_cfcmple aeabi_cfcmpeq
+ 	cmnmi	r0, #0
+ 	RETLDM	"r0, r1, r2, r3"
+ 
++	CFI_END_FUNCTION
+ 	FUNC_END aeabi_cfcmple
+ 	FUNC_END aeabi_cfcmpeq
+ 	FUNC_END aeabi_cfrcmple
+ 
+ ARM_FUNC_START	aeabi_fcmpeq
++	CFI_START_FUNCTION
++
++	str	lr, [sp, #-8]!    @ sp -= 8
++	.cfi_adjust_cfa_offset 8  @ CFA is now sp + previousOffset + 8
++	.cfi_rel_offset lr, 0     @ lr is at sp
+ 
+-	str	lr, [sp, #-8]!
+ 	ARM_CALL aeabi_cfcmple
+ 	do_it	eq, e
+ 	moveq	r0, #1	@ Equal to.
+ 	movne	r0, #0	@ Less than, greater than, or unordered.
+ 	RETLDM
+ 
++	CFI_END_FUNCTION
+ 	FUNC_END aeabi_fcmpeq
+ 
+ ARM_FUNC_START	aeabi_fcmplt
++	CFI_START_FUNCTION
++
++	str	lr, [sp, #-8]!    @ sp -= 8
++	.cfi_adjust_cfa_offset 8  @ CFA is now sp + previousOffset + 8
++	.cfi_rel_offset lr, 0     @ lr is at sp
+ 
+-	str	lr, [sp, #-8]!
+ 	ARM_CALL aeabi_cfcmple
+ 	do_it	cc, e
+ 	movcc	r0, #1	@ Less than.
+ 	movcs	r0, #0	@ Equal to, greater than, or unordered.
+ 	RETLDM
+ 
++	CFI_END_FUNCTION
+ 	FUNC_END aeabi_fcmplt
+ 
+ ARM_FUNC_START	aeabi_fcmple
++	CFI_START_FUNCTION
++
++	str	lr, [sp, #-8]!    @ sp -= 8
++	.cfi_adjust_cfa_offset 8  @ CFA is now sp + previousOffset + 8
++	.cfi_rel_offset lr, 0     @ lr is at sp
+ 
+-	str	lr, [sp, #-8]!
+ 	ARM_CALL aeabi_cfcmple
+ 	do_it	ls, e
+ 	movls	r0, #1  @ Less than or equal to.
+ 	movhi	r0, #0	@ Greater than or unordered.
+ 	RETLDM
+ 
++	CFI_END_FUNCTION
+ 	FUNC_END aeabi_fcmple
+ 
+ ARM_FUNC_START	aeabi_fcmpge
++	CFI_START_FUNCTION
++
++	str	lr, [sp, #-8]!    @ sp -= 8
++	.cfi_adjust_cfa_offset 8  @ CFA is now sp + previousOffset + 8
++	.cfi_rel_offset lr, 0     @ lr is at sp
+ 
+-	str	lr, [sp, #-8]!
+ 	ARM_CALL aeabi_cfrcmple
+ 	do_it	ls, e
+ 	movls	r0, #1	@ Operand 2 is less than or equal to operand 1.
+ 	movhi	r0, #0	@ Operand 2 greater than operand 1, or unordered.
+ 	RETLDM
+ 
++	CFI_END_FUNCTION
+ 	FUNC_END aeabi_fcmpge
+ 
+ ARM_FUNC_START	aeabi_fcmpgt
++	CFI_START_FUNCTION
++
++	str	lr, [sp, #-8]!    @ sp -= 8
++	.cfi_adjust_cfa_offset 8  @ CFA is now sp + previousOffset + 8
++	.cfi_rel_offset lr, 0     @ lr is at sp
+ 
+-	str	lr, [sp, #-8]!
+ 	ARM_CALL aeabi_cfrcmple
+ 	do_it	cc, e
+ 	movcc	r0, #1	@ Operand 2 is less than operand 1.
+@@ -923,6 +999,7 @@ ARM_FUNC_START	aeabi_fcmpgt
+ 			@ or they are unordered.
+ 	RETLDM
+ 
++	CFI_END_FUNCTION
+ 	FUNC_END aeabi_fcmpgt
+ 
+ #endif /* L_cmpsf2 */
+@@ -931,6 +1008,7 @@ ARM_FUNC_START	aeabi_fcmpgt
+ 
+ ARM_FUNC_START unordsf2
+ ARM_FUNC_ALIAS aeabi_fcmpun unordsf2
++	CFI_START_FUNCTION
+ 
+ 	mov	r2, r0, lsl #1
+ 	mov	r3, r1, lsl #1
+@@ -947,6 +1025,7 @@ ARM_FUNC_ALIAS aeabi_fcmpun unordsf2
+ 3:	mov	r0, #1			@ arguments are unordered.
+ 	RET
+ 
++	CFI_END_FUNCTION
+ 	FUNC_END aeabi_fcmpun
+ 	FUNC_END unordsf2
+ 
+@@ -956,6 +1035,7 @@ ARM_FUNC_ALIAS aeabi_fcmpun unordsf2
+ 
+ ARM_FUNC_START fixsfsi
+ ARM_FUNC_ALIAS aeabi_f2iz fixsfsi
++	CFI_START_FUNCTION
+ 
+ 	@ check exponent range.
+ 	mov	r2, r0, lsl #1
+@@ -989,6 +1069,7 @@ ARM_FUNC_ALIAS aeabi_f2iz fixsfsi
+ 4:	mov	r0, #0			@ What should we convert NAN to?
+ 	RET
+ 
++	CFI_END_FUNCTION
+ 	FUNC_END aeabi_f2iz
+ 	FUNC_END fixsfsi
+ 
+@@ -998,6 +1079,7 @@ ARM_FUNC_ALIAS aeabi_f2iz fixsfsi
+ 
+ ARM_FUNC_START fixunssfsi
+ ARM_FUNC_ALIAS aeabi_f2uiz fixunssfsi
++	CFI_START_FUNCTION
+ 
+ 	@ check exponent range.
+ 	movs	r2, r0, lsl #1
+@@ -1027,6 +1109,7 @@ ARM_FUNC_ALIAS aeabi_f2uiz fixunssfsi
+ 4:	mov	r0, #0			@ What should we convert NAN to?
+ 	RET
+ 
++	CFI_END_FUNCTION
+ 	FUNC_END aeabi_f2uiz
+ 	FUNC_END fixunssfsi
+ 
+--- a/src/libgcc/config/arm/lib1funcs.S
++++ b/src/libgcc/config/arm/lib1funcs.S
+@@ -1965,6 +1965,16 @@ LSYM(Lchange_\register):
+ 
+ #endif /* Arch supports thumb.  */
+ 
++.macro CFI_START_FUNCTION
++	.cfi_startproc
++	.cfi_remember_state
++.endm
++
++.macro CFI_END_FUNCTION
++	.cfi_restore_state
++	.cfi_endproc
++.endm
++
+ #ifndef __symbian__
+ #ifndef __ARM_ARCH_6M__
+ #include "ieee754-df.S"
+--- a/src/libgcc/unwind-dw2-fde-dip.c
++++ b/src/libgcc/unwind-dw2-fde-dip.c
+@@ -59,6 +59,12 @@
+ 
+ #if !defined(inhibit_libc) && defined(HAVE_LD_EH_FRAME_HDR) \
+     && defined(TARGET_DL_ITERATE_PHDR) \
++    && defined(__linux__)
++# define USE_PT_GNU_EH_FRAME
++#endif
++
++#if !defined(inhibit_libc) && defined(HAVE_LD_EH_FRAME_HDR) \
++    && defined(TARGET_DL_ITERATE_PHDR) \
+     && (defined(__DragonFly__) || defined(__FreeBSD__))
+ # define ElfW __ElfN
+ # define USE_PT_GNU_EH_FRAME
+--- a/src/libgfortran/acinclude.m4
++++ b/src/libgfortran/acinclude.m4
+@@ -100,7 +100,7 @@ void foo (void);
+ 	      [Define to 1 if the target supports #pragma weak])
+   fi
+   case "$host" in
+-    *-*-darwin* | *-*-hpux* | *-*-cygwin* | *-*-mingw* )
++    *-*-darwin* | *-*-hpux* | *-*-cygwin* | *-*-mingw* | *-*-musl* )
+       AC_DEFINE(GTHREAD_USE_WEAK, 0,
+ 		[Define to 0 if the target shouldn't use #pragma weak])
+       ;;
+--- a/src/libgfortran/configure
++++ b/src/libgfortran/configure
+@@ -26456,7 +26456,7 @@ $as_echo "#define SUPPORTS_WEAK 1" >>confdefs.h
+ 
+   fi
+   case "$host" in
+-    *-*-darwin* | *-*-hpux* | *-*-cygwin* | *-*-mingw* )
++    *-*-darwin* | *-*-hpux* | *-*-cygwin* | *-*-mingw* | *-*-musl* )
+ 
+ $as_echo "#define GTHREAD_USE_WEAK 0" >>confdefs.h
+ 
+--- a/src/libgomp/testsuite/libgomp.graphite/bounds.c
++++ b/src/libgomp/testsuite/libgomp.graphite/bounds.c
+@@ -8,6 +8,3 @@ int foo(int *a, int n)
+ /* Check that Graphite dependency checking notes the dependency.  */
+ /* { dg-do compile } */
+ /* { dg-final { scan-tree-dump-times "0 loops carried no dependency" 1 "graphite" } } */
+-/* { dg-final { cleanup-tree-dump "graphite" } } */
+-/* { dg-final { cleanup-tree-dump "parloops" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/libgomp/testsuite/libgomp.graphite/force-parallel-1.c
++++ b/src/libgomp/testsuite/libgomp.graphite/force-parallel-1.c
+@@ -25,7 +25,4 @@ int main(void)
+ 
+ /* Check that parallel code generation part make the right answer.  */
+ /* { dg-final { scan-tree-dump-times "1 loops carried no dependency" 1 "graphite" } } */
+-/* { dg-final { cleanup-tree-dump "graphite" } } */
+ /* { dg-final { scan-tree-dump-times "loopfn" 4 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "parloops" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/libgomp/testsuite/libgomp.graphite/force-parallel-2.c
++++ b/src/libgomp/testsuite/libgomp.graphite/force-parallel-2.c
+@@ -24,7 +24,4 @@ int main(void)
+ 
+ /* Check that parallel code generation part make the right answer.  */
+ /* { dg-final { scan-tree-dump-times "2 loops carried no dependency" 1 "graphite" } } */
+-/* { dg-final { cleanup-tree-dump "graphite" } } */
+ /* { dg-final { scan-tree-dump-times "loopfn" 4 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "parloops" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/libgomp/testsuite/libgomp.graphite/force-parallel-3.c
++++ b/src/libgomp/testsuite/libgomp.graphite/force-parallel-3.c
+@@ -31,8 +31,5 @@ int main(void)
+ 
+ /* Check that parallel code generation part make the right answer.  */
+ /* { dg-final { scan-tree-dump-times "4 loops carried no dependency" 1 "graphite" } } */
+-/* { dg-final { cleanup-tree-dump "graphite" } } */
+ /* { dg-final { scan-tree-dump-times "loopfn.0" 4 "optimized" } } */
+ /* { dg-final { scan-tree-dump-times "loopfn.1" 4 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "parloops" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/libgomp/testsuite/libgomp.graphite/force-parallel-4.c
++++ b/src/libgomp/testsuite/libgomp.graphite/force-parallel-4.c
+@@ -49,8 +49,5 @@ int main(void)
+ /* Check that parallel code generation part make the right answer.  */
+ /* { dg-final { scan-tree-dump-times "1 loops carried no dependency" 1 "graphite" } } */
+ /* { dg-final { scan-tree-dump-times "2 loops carried no dependency" 1 "graphite" } } */
+-/* { dg-final { cleanup-tree-dump "graphite" } } */
+ /* { dg-final { scan-tree-dump-times "loopfn.0" 4 "optimized" } } */
+ /* { dg-final { scan-tree-dump-times "loopfn.1" 4 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "parloops" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/libgomp/testsuite/libgomp.graphite/force-parallel-5.c
++++ b/src/libgomp/testsuite/libgomp.graphite/force-parallel-5.c
+@@ -32,8 +32,5 @@ int main(void)
+ 
+ /* Check that parallel code generation part make the right answer.  */
+ /* { dg-final { scan-tree-dump-times "1 loops carried no dependency" 1 "graphite" } } */
+-/* { dg-final { cleanup-tree-dump "graphite" } } */
+ /* { dg-final { scan-tree-dump-times "loopfn.0" 4 "optimized" } } */
+ /* { dg-final { scan-tree-dump-times "loopfn.1" 4 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "parloops" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/libgomp/testsuite/libgomp.graphite/force-parallel-6.c
++++ b/src/libgomp/testsuite/libgomp.graphite/force-parallel-6.c
+@@ -80,7 +80,4 @@ int main(void)
+ 
+ /* Check that parallel code generation part make the right answer.  */
+ /* { dg-final { scan-tree-dump-times "1 loops carried no dependency" 1 "graphite" } } */
+-/* { dg-final { cleanup-tree-dump "graphite" } } */
+ /* { dg-final { scan-tree-dump-times "loopfn.0" 4 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "parloops" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/libgomp/testsuite/libgomp.graphite/force-parallel-7.c
++++ b/src/libgomp/testsuite/libgomp.graphite/force-parallel-7.c
+@@ -32,7 +32,4 @@ int main (void)
+ 
+ /* Check that parallel code generation part make the right answer.  */
+ /* { dg-final { scan-tree-dump-times "3 loops carried no dependency" 1 "graphite" } } */
+-/* { dg-final { cleanup-tree-dump "graphite" } } */
+ /* { dg-final { scan-tree-dump-times "loopfn.0" 4 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "parloops" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/libgomp/testsuite/libgomp.graphite/force-parallel-8.c
++++ b/src/libgomp/testsuite/libgomp.graphite/force-parallel-8.c
+@@ -46,8 +46,5 @@ int main(void)
+ /* { dg-final { scan-tree-dump-times "1 loops carried no dependency" 1 "graphite" } } */
+ /* { dg-final { scan-tree-dump-times "3 loops carried no dependency" 1 "graphite" } } */
+ /* { dg-final { scan-tree-dump-times "5 loops carried no dependency" 1 "graphite" } } */
+-/* { dg-final { cleanup-tree-dump "graphite" } } */
+ /* { dg-final { scan-tree-dump-times "loopfn.0" 4 "optimized" } } */
+ /* { dg-final { scan-tree-dump-times "loopfn.1" 4 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "parloops" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/libgomp/testsuite/libgomp.graphite/force-parallel-9.c
++++ b/src/libgomp/testsuite/libgomp.graphite/force-parallel-9.c
+@@ -30,8 +30,5 @@ int main(void)
+ 
+ /* Check that parallel code generation part make the right answer.  */
+ /* { dg-final { scan-tree-dump-times "4 loops carried no dependency" 1 "graphite" } } */
+-/* { dg-final { cleanup-tree-dump "graphite" } } */
+ /* { dg-final { scan-tree-dump-times "loopfn.0" 4 "optimized" } } */
+ /* { dg-final { scan-tree-dump-times "loopfn.1" 4 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "parloops" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/libgomp/testsuite/libgomp.graphite/pr41118.c
++++ b/src/libgomp/testsuite/libgomp.graphite/pr41118.c
+@@ -13,7 +13,4 @@ int main(void)
+ }
+ 
+ /* Check that parallel code generation part make the right answer.  */
+-/* { dg-final { cleanup-tree-dump "graphite" } } */
+ /* { dg-final { scan-tree-dump-times "loopfn" 0 "optimized" } } */
+-/* { dg-final { cleanup-tree-dump "parloops" } } */
+-/* { dg-final { cleanup-tree-dump "optimized" } } */
+--- a/src/libitm/config/arm/hwcap.cc
++++ b/src/libitm/config/arm/hwcap.cc
+@@ -40,7 +40,7 @@ int GTM_hwcap HIDDEN = 0
+ 
+ #ifdef __linux__
+ #include <unistd.h>
+-#include <sys/fcntl.h>
++#include <fcntl.h>
+ #include <elf.h>
+ 
+ static void __attribute__((constructor))
+--- a/src/libitm/config/linux/x86/tls.h
++++ b/src/libitm/config/linux/x86/tls.h
+@@ -25,16 +25,19 @@
+ #ifndef LIBITM_X86_TLS_H
+ #define LIBITM_X86_TLS_H 1
+ 
+-#if defined(__GLIBC_PREREQ) && __GLIBC_PREREQ(2, 10)
++#if defined(__GLIBC_PREREQ)
++#if __GLIBC_PREREQ(2, 10)
+ /* Use slots in the TCB head rather than __thread lookups.
+    GLIBC has reserved words 10 through 13 for TM.  */
+ #define HAVE_ARCH_GTM_THREAD 1
+ #define HAVE_ARCH_GTM_THREAD_DISP 1
+ #endif
++#endif
+ 
+ #include "config/generic/tls.h"
+ 
+-#if defined(__GLIBC_PREREQ) && __GLIBC_PREREQ(2, 10)
++#if defined(__GLIBC_PREREQ)
++#if __GLIBC_PREREQ(2, 10)
+ namespace GTM HIDDEN {
+ 
+ #ifdef __x86_64__
+@@ -101,5 +104,6 @@ static inline void set_abi_disp(struct abi_dispatch *x)
+ 
+ } // namespace GTM
+ #endif /* >= GLIBC 2.10 */
++#endif
+ 
+ #endif // LIBITM_X86_TLS_H
+--- /dev/null
++++ b/src/libstdc++-v3/config/cpu/arm/cpu_defines.h
+@@ -0,0 +1,40 @@
++// Specific definitions for generic platforms  -*- C++ -*-
++
++// Copyright (C) 2015 Free Software Foundation, Inc.
++//
++// This file is part of the GNU ISO C++ Library.  This library is free
++// software; you can redistribute it and/or modify it under the
++// terms of the GNU General Public License as published by the
++// Free Software Foundation; either version 3, or (at your option)
++// any later version.
++
++// This library is distributed in the hope that it will be useful,
++// but WITHOUT ANY WARRANTY; without even the implied warranty of
++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++// GNU General Public License for more details.
++
++// Under Section 7 of GPL version 3, you are granted additional
++// permissions described in the GCC Runtime Library Exception, version
++// 3.1, as published by the Free Software Foundation.
++
++// You should have received a copy of the GNU General Public License and
++// a copy of the GCC Runtime Library Exception along with this program;
++// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++// <http://www.gnu.org/licenses/>.
++
++/** @file bits/cpu_defines.h
++ *  This is an internal header file, included by other library headers.
++ *  Do not attempt to use it directly. @headername{iosfwd}
++ */
++
++#ifndef _GLIBCXX_CPU_DEFINES
++#define _GLIBCXX_CPU_DEFINES 1
++
++// Integer divide instructions don't trap on ARM.
++#ifdef __ARM_ARCH_EXT_IDIV__
++#define __glibcxx_integral_traps false
++#else
++#define __glibcxx_integral_traps true
++#endif
++
++#endif
+--- a/src/libstdc++-v3/config/os/generic/os_defines.h
++++ b/src/libstdc++-v3/config/os/generic/os_defines.h
+@@ -33,4 +33,9 @@
+ // System-specific #define, typedefs, corrections, etc, go here.  This
+ // file will come before all others.
+ 
++// Disable the weak reference logic in gthr.h for os/generic because it
++// is broken on every platform unless there is implementation specific
++// workaround in gthr-posix.h and at link-time for static linking.
++#define _GLIBCXX_GTHREAD_USE_WEAK 0
++
+ #endif
+--- a/src/libstdc++-v3/configure.host
++++ b/src/libstdc++-v3/configure.host
+@@ -143,6 +143,9 @@ cpu_include_dir=cpu/${try_cpu}
+ # Set specific CPU overrides for cpu_defines_dir. Most can just use generic.
+ # THIS TABLE IS SORTED.  KEEP IT THAT WAY.
+ case "${host_cpu}" in
++  arm*)
++    cpu_defines_dir=cpu/arm
++    ;;
+   powerpc* | rs6000)
+     cpu_defines_dir=cpu/powerpc
+     ;;
+@@ -273,6 +276,9 @@ case "${host_os}" in
+   freebsd*)
+     os_include_dir="os/bsd/freebsd"
+     ;;
++  linux-musl*)
++    os_include_dir="os/generic"
++    ;;
+   gnu* | linux* | kfreebsd*-gnu | knetbsd*-gnu)
+     if [ "$uclibc" = "yes" ]; then
+       os_include_dir="os/uclibc"
+--- a/src/libstdc++-v3/testsuite/lib/libstdc++.exp
++++ b/src/libstdc++-v3/testsuite/lib/libstdc++.exp
+@@ -409,6 +409,11 @@ proc libstdc++-dg-test { prog do_what extra_tool_flags } {
+     # and-target file), but the defaults are lacking in goodness.
+     set comp_output [$select_compile "$prog" "$output_file" "$compile_type" $options];
+ 
++    set unsupported_message [libstdc++_check_unsupported_p $comp_output]
++    if { $unsupported_message != "" } {
++	set comp_output "::unsupported::$unsupported_message"
++    }
++
+     return [list $comp_output $output_file]
+ }
+ 
diff --git a/debian/patches/gcc-multiarch.diff b/debian/patches/gcc-multiarch.diff
new file mode 100644
index 0000000..663f763
--- /dev/null
+++ b/debian/patches/gcc-multiarch.diff
@@ -0,0 +1,168 @@
+# DP: - Remaining multiarch patches, not yet submitted upstream.
+# DP: - Add MULTIARCH_DIRNAME definitions for multilib configurations,
+# DP:   which are used for the non-multilib builds.
+
+2013-06-12  Matthias Klose  <doko at ubuntu.com>
+
+	* config/i386/t-linux64: Set MULTIARCH_DIRNAME.
+	* config/i386/t-kfreebsd: Set MULTIARCH_DIRNAME.
+	* config.gcc (i[34567]86-*-linux* | x86_64-*-linux*): Prepend
+	i386/t-linux to $tmake_file;
+	set default ABI to N64 for mips64el.
+	* config/mips/t-linux64: Set MULTIARCH_DIRNAME.
+	* config/rs6000/t-linux64: Set MULTIARCH_DIRNAME.
+	* config/s390/t-linux64: Set MULTIARCH_DIRNAME.
+	* config/sparc/t-linux64: Set MULTIARCH_DIRNAME.
+	* src/gcc/config/mips/mips.h: (/usr)/lib as default path.
+
+Index: b/src/gcc/config/sh/t-linux
+===================================================================
+--- a/src/gcc/config/sh/t-linux
++++ b/src/gcc/config/sh/t-linux
+@@ -1,2 +1,5 @@
+ MULTILIB_DIRNAMES= 
+ MULTILIB_MATCHES = 
++
++MULTILIB_OSDIRNAMES = .:sh4-linux-gnu sh4_nofpu-linux-gnu:sh4-linux-gnu
++MULTIARCH_DIRNAME = $(call if_multiarch,sh4-linux-gnu)
+Index: b/src/gcc/config/sparc/t-linux64
+===================================================================
+--- a/src/gcc/config/sparc/t-linux64
++++ b/src/gcc/config/sparc/t-linux64
+@@ -27,3 +27,5 @@ MULTILIB_OPTIONS = m64/m32
+ MULTILIB_DIRNAMES = 64 32
+ MULTILIB_OSDIRNAMES = ../lib64$(call if_multiarch,:sparc64-linux-gnu)
+ MULTILIB_OSDIRNAMES += $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)$(call if_multiarch,:sparc-linux-gnu)
++
++MULTIARCH_DIRNAME = $(call if_multiarch,sparc$(if $(findstring 64,$(target)),64)-linux-gnu)
+Index: b/src/gcc/config/s390/t-linux64
+===================================================================
+--- a/src/gcc/config/s390/t-linux64
++++ b/src/gcc/config/s390/t-linux64
+@@ -9,3 +9,5 @@ MULTILIB_OPTIONS = m64/m31
+ MULTILIB_DIRNAMES = 64 32
+ MULTILIB_OSDIRNAMES = ../lib64$(call if_multiarch,:s390x-linux-gnu)
+ MULTILIB_OSDIRNAMES += $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)$(call if_multiarch,:s390-linux-gnu)
++
++MULTIARCH_DIRNAME = $(call if_multiarch,s390$(if $(findstring s390x,$(target)),x)-linux-gnu)
+Index: b/src/gcc/config/rs6000/t-linux64
+===================================================================
+--- a/src/gcc/config/rs6000/t-linux64
++++ b/src/gcc/config/rs6000/t-linux64
+@@ -31,6 +31,8 @@ MULTILIB_EXTRA_OPTS :=
+ MULTILIB_OSDIRNAMES := m64=../lib64$(call if_multiarch,:powerpc64-linux-gnu)
+ MULTILIB_OSDIRNAMES += m32=$(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)$(call if_multiarch,:powerpc-linux-gnu)
+ 
++MULTIARCH_DIRNAME = $(call if_multiarch,powerpc$(if $(findstring 64,$(target)),64)-linux-gnu)
++
+ rs6000-linux.o: $(srcdir)/config/rs6000/rs6000-linux.c
+ 	$(COMPILE) $<
+ 	$(POSTCOMPILE)
+Index: b/src/gcc/config/i386/t-linux64
+===================================================================
+--- a/src/gcc/config/i386/t-linux64
++++ b/src/gcc/config/i386/t-linux64
+@@ -36,3 +36,13 @@ MULTILIB_DIRNAMES   = $(patsubst m%, %,
+ MULTILIB_OSDIRNAMES = m64=../lib64$(call if_multiarch,:x86_64-linux-gnu)
+ MULTILIB_OSDIRNAMES+= m32=$(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)$(call if_multiarch,:i386-linux-gnu)
+ MULTILIB_OSDIRNAMES+= mx32=../libx32$(call if_multiarch,:x86_64-linux-gnux32)
++
++ifneq (,$(findstring x86_64,$(target)))
++  ifneq (,$(findstring biarchx32.h,$(tm_include_list)))
++  MULTIARCH_DIRNAME = $(call if_multiarch,x86_64-linux-gnux32)
++  else
++  MULTIARCH_DIRNAME = $(call if_multiarch,x86_64-linux-gnu)
++  endif
++else
++  MULTIARCH_DIRNAME = $(call if_multiarch,i386-linux-gnu)
++endif
+Index: b/src/gcc/config/i386/t-kfreebsd
+===================================================================
+--- a/src/gcc/config/i386/t-kfreebsd
++++ b/src/gcc/config/i386/t-kfreebsd
+@@ -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)))
++
++MULTIARCH_DIRNAME := $(subst linux,$(KFREEBSD_OS),$(MULTIARCH_DIRNAME))
+Index: b/src/gcc/config/mips/t-linux64
+===================================================================
+--- a/src/gcc/config/mips/t-linux64
++++ b/src/gcc/config/mips/t-linux64
+@@ -24,3 +24,13 @@ MULTILIB_OSDIRNAMES = \
+ 	../lib32$(call if_multiarch,:mips64$(MIPS_EL)-linux-gnuabin32$(MIPS_SOFT)) \
+ 	../lib$(call if_multiarch,:mips$(MIPS_EL)-linux-gnu$(MIPS_SOFT)) \
+ 	../lib64$(call if_multiarch,:mips64$(MIPS_EL)-linux-gnuabi64$(MIPS_SOFT))
++
++ifneq (,$(findstring abin32,$(target)))
++MULTIARCH_DIRNAME = $(call if_multiarch,mips64$(MIPS_EL)-linux-gnuabin32$(MIPS_SOFT))
++else
++ifneq (,$(findstring abi64,$(target)))
++MULTIARCH_DIRNAME = $(call if_multiarch,mips64$(MIPS_EL)-linux-gnuabi64$(MIPS_SOFT))
++else
++MULTIARCH_DIRNAME = $(call if_multiarch,mips$(MIPS_EL)-linux-gnu$(MIPS_SOFT))
++endif
++endif
+Index: b/src/gcc/config.gcc
+===================================================================
+--- a/src/gcc/config.gcc
++++ b/src/gcc/config.gcc
+@@ -2038,6 +2038,10 @@ mips*-*-linux*)				# Linux MIPS, either
+ 			default_mips_arch=mips64r2
+ 			enable_mips_multilibs="yes"
+ 			;;
++		mips64*-*-linux-gnuabi64 | mipsisa64*-*-linux-gnuabi64)
++			default_mips_abi=64
++			enable_mips_multilibs="yes"
++			;;
+ 		mips64*-*-linux* | mipsisa64*-*-linux*)
+ 			default_mips_abi=n32
+ 			enable_mips_multilibs="yes"
+@@ -4247,7 +4251,7 @@ case ${target} in
+ 	i[34567]86-*-darwin* | x86_64-*-darwin*)
+ 		;;
+ 	i[34567]86-*-linux* | x86_64-*-linux*)
+-		tmake_file="$tmake_file i386/t-linux"
++		tmake_file="i386/t-linux $tmake_file"
+ 		;;
+ 	i[34567]86-*-kfreebsd*-gnu | x86_64-*-kfreebsd*-gnu)
+ 		tmake_file="$tmake_file i386/t-kfreebsd"
+Index: b/src/gcc/config/aarch64/t-aarch64-linux
+===================================================================
+--- a/src/gcc/config/aarch64/t-aarch64-linux
++++ b/src/gcc/config/aarch64/t-aarch64-linux
+@@ -22,7 +22,7 @@ LIB1ASMSRC   = aarch64/lib1funcs.asm
+ LIB1ASMFUNCS = _aarch64_sync_cache_range
+ 
+ AARCH_BE = $(if $(findstring TARGET_BIG_ENDIAN_DEFAULT=1, $(tm_defines)),_be)
+-MULTILIB_OSDIRNAMES = mabi.lp64=../lib64$(call if_multiarch,:aarch64$(AARCH_BE)-linux-gnu)
+-MULTIARCH_DIRNAME = $(call if_multiarch,aarch64$(AARCH_BE)-linux-gnu)
++MULTILIB_OSDIRNAMES = mabi.lp64=../lib$(call if_multiarch,:aarch64$(AARCH_BE)-linux-gnu)
++MULTILIB_OSDIRNAMES += mabi.ilp32=../libilp32$(call if_multiarch,:aarch64$(AARCH_BE)_ilp32-linux-gnu)
+ 
+-MULTILIB_OSDIRNAMES += mabi.ilp32=../libilp32
++MULTIARCH_DIRNAME = $(call if_multiarch,aarch64$(AARCH_BE)-linux-gnu)
+Index: b/src/gcc/config/mips/mips.h
+===================================================================
+--- a/src/gcc/config/mips/mips.h
++++ b/src/gcc/config/mips/mips.h
+@@ -3185,13 +3185,3 @@ extern GTY(()) struct target_globals *mi
+    with arguments ARGS.  */
+ #define PMODE_INSN(NAME, ARGS) \
+   (Pmode == SImode ? NAME ## _si ARGS : NAME ## _di ARGS)
+-
+-/* If we are *not* using multilibs and the default ABI is not ABI_32 we
+-   need to change these from /lib and /usr/lib.  */
+-#if MIPS_ABI_DEFAULT == ABI_N32
+-#define STANDARD_STARTFILE_PREFIX_1 "/lib32/"
+-#define STANDARD_STARTFILE_PREFIX_2 "/usr/lib32/"
+-#elif MIPS_ABI_DEFAULT == ABI_64
+-#define STANDARD_STARTFILE_PREFIX_1 "/lib64/"
+-#define STANDARD_STARTFILE_PREFIX_2 "/usr/lib64/"
+-#endif
diff --git a/debian/patches/gcc-multilib-multiarch.diff b/debian/patches/gcc-multilib-multiarch.diff
new file mode 100644
index 0000000..374f923
--- /dev/null
+++ b/debian/patches/gcc-multilib-multiarch.diff
@@ -0,0 +1,123 @@
+# DP: Don't auto-detect multilib osdirnames.
+
+Index: b/src/gcc/config/sparc/t-linux64
+===================================================================
+--- a/src/gcc/config/sparc/t-linux64
++++ b/src/gcc/config/sparc/t-linux64
+@@ -25,7 +25,12 @@
+ 
+ MULTILIB_OPTIONS = m64/m32
+ MULTILIB_DIRNAMES = 64 32
++ifneq (,$(findstring sparc64,$(target)))
++MULTILIB_OSDIRNAMES = ../lib$(call if_multiarch,:sparc64-linux-gnu)
++MULTILIB_OSDIRNAMES += ../lib32$(call if_multiarch,:sparc-linux-gnu)
++else
+ MULTILIB_OSDIRNAMES = ../lib64$(call if_multiarch,:sparc64-linux-gnu)
+-MULTILIB_OSDIRNAMES += $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)$(call if_multiarch,:sparc-linux-gnu)
++MULTILIB_OSDIRNAMES += ../lib$(call if_multiarch,:sparc-linux-gnu)
++endif
+ 
+ MULTIARCH_DIRNAME = $(call if_multiarch,sparc$(if $(findstring 64,$(target)),64)-linux-gnu)
+Index: b/src/gcc/config/s390/t-linux64
+===================================================================
+--- a/src/gcc/config/s390/t-linux64
++++ b/src/gcc/config/s390/t-linux64
+@@ -7,7 +7,12 @@
+ 
+ MULTILIB_OPTIONS = m64/m31
+ MULTILIB_DIRNAMES = 64 32
++ifneq (,$(findstring s390x,$(target)))
++MULTILIB_OSDIRNAMES = ../lib$(call if_multiarch,:s390x-linux-gnu)
++MULTILIB_OSDIRNAMES += ../lib32$(call if_multiarch,:s390-linux-gnu)
++else
+ MULTILIB_OSDIRNAMES = ../lib64$(call if_multiarch,:s390x-linux-gnu)
+-MULTILIB_OSDIRNAMES += $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)$(call if_multiarch,:s390-linux-gnu)
++MULTILIB_OSDIRNAMES += ../lib$(call if_multiarch,:s390-linux-gnu)
++endif
+ 
+ MULTIARCH_DIRNAME = $(call if_multiarch,s390$(if $(findstring s390x,$(target)),x)-linux-gnu)
+Index: b/src/gcc/config/rs6000/t-linux64
+===================================================================
+--- a/src/gcc/config/rs6000/t-linux64
++++ b/src/gcc/config/rs6000/t-linux64
+@@ -28,8 +28,13 @@
+ MULTILIB_OPTIONS    := m64/m32
+ MULTILIB_DIRNAMES   := 64 32
+ MULTILIB_EXTRA_OPTS := 
++ifneq (,$(findstring powerpc64,$(target)))
++MULTILIB_OSDIRNAMES := m64=../lib$(call if_multiarch,:powerpc64-linux-gnu)
++MULTILIB_OSDIRNAMES += m32=../lib32$(call if_multiarch,:powerpc-linux-gnu)
++else
+ MULTILIB_OSDIRNAMES := m64=../lib64$(call if_multiarch,:powerpc64-linux-gnu)
+-MULTILIB_OSDIRNAMES += m32=$(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)$(call if_multiarch,:powerpc-linux-gnu)
++MULTILIB_OSDIRNAMES += m32=../lib$(call if_multiarch,:powerpc-linux-gnu)
++endif
+ 
+ MULTIARCH_DIRNAME = $(call if_multiarch,powerpc$(if $(findstring 64,$(target)),64)-linux-gnu)
+ 
+Index: b/src/gcc/config/i386/t-linux64
+===================================================================
+--- a/src/gcc/config/i386/t-linux64
++++ b/src/gcc/config/i386/t-linux64
+@@ -33,9 +33,19 @@
+ comma=,
+ MULTILIB_OPTIONS    = $(subst $(comma),/,$(TM_MULTILIB_CONFIG))
+ MULTILIB_DIRNAMES   = $(patsubst m%, %, $(subst /, ,$(MULTILIB_OPTIONS)))
++ifneq (,$(findstring gnux32,$(target)))
+ MULTILIB_OSDIRNAMES = m64=../lib64$(call if_multiarch,:x86_64-linux-gnu)
+-MULTILIB_OSDIRNAMES+= m32=$(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)$(call if_multiarch,:i386-linux-gnu)
++MULTILIB_OSDIRNAMES+= m32=../lib32$(call if_multiarch,:i386-linux-gnu)
++MULTILIB_OSDIRNAMES+= mx32=../lib$(call if_multiarch,:x86_64-linux-gnux32)
++else ifneq (,$(findstring x86_64,$(target)))
++MULTILIB_OSDIRNAMES = m64=../lib$(call if_multiarch,:x86_64-linux-gnu)
++MULTILIB_OSDIRNAMES+= m32=../lib32$(call if_multiarch,:i386-linux-gnu)
+ MULTILIB_OSDIRNAMES+= mx32=../libx32$(call if_multiarch,:x86_64-linux-gnux32)
++else
++MULTILIB_OSDIRNAMES = m64=../lib64$(call if_multiarch,:x86_64-linux-gnu)
++MULTILIB_OSDIRNAMES+= m32=../lib$(call if_multiarch,:i386-linux-gnu)
++MULTILIB_OSDIRNAMES+= mx32=../libx32$(call if_multiarch,:x86_64-linux-gnux32)
++endif
+ 
+ ifneq (,$(findstring x86_64,$(target)))
+   ifneq (,$(findstring biarchx32.h,$(tm_include_list)))
+Index: b/src/gcc/config/mips/t-linux64
+===================================================================
+--- a/src/gcc/config/mips/t-linux64
++++ b/src/gcc/config/mips/t-linux64
+@@ -20,10 +20,23 @@ MULTILIB_OPTIONS = mabi=n32/mabi=32/mabi
+ MULTILIB_DIRNAMES = n32 32 64
+ MIPS_EL = $(if $(filter %el, $(firstword $(subst -, ,$(target)))),el)
+ MIPS_SOFT = $(if $(strip $(filter MASK_SOFT_FLOAT_ABI, $(target_cpu_default)) $(filter soft, $(with_float))),soft)
++
++ifneq (,$(findstring gnuabi64,$(target)))
++MULTILIB_OSDIRNAMES = \
++	../lib32$(call if_multiarch,:mips64$(MIPS_EL)-linux-gnuabin32$(MIPS_SOFT)) \
++	../libo32$(call if_multiarch,:mips$(MIPS_EL)-linux-gnu$(MIPS_SOFT)) \
++	../lib$(call if_multiarch,:mips64$(MIPS_EL)-linux-gnuabi64$(MIPS_SOFT))
++else ifneq (,$(findstring gnuabin32,$(target)))
++MULTILIB_OSDIRNAMES = \
++	../lib$(call if_multiarch,:mips64$(MIPS_EL)-linux-gnuabin32$(MIPS_SOFT)) \
++	../libo32$(call if_multiarch,:mips$(MIPS_EL)-linux-gnu$(MIPS_SOFT)) \
++	../lib64$(call if_multiarch,:mips64$(MIPS_EL)-linux-gnuabi64$(MIPS_SOFT))
++else
+ MULTILIB_OSDIRNAMES = \
+ 	../lib32$(call if_multiarch,:mips64$(MIPS_EL)-linux-gnuabin32$(MIPS_SOFT)) \
+ 	../lib$(call if_multiarch,:mips$(MIPS_EL)-linux-gnu$(MIPS_SOFT)) \
+ 	../lib64$(call if_multiarch,:mips64$(MIPS_EL)-linux-gnuabi64$(MIPS_SOFT))
++endif
+ 
+ ifneq (,$(findstring abin32,$(target)))
+ MULTIARCH_DIRNAME = $(call if_multiarch,mips64$(MIPS_EL)-linux-gnuabin32$(MIPS_SOFT))
+Index: b/src/gcc/config/rs6000/t-linux
+===================================================================
+--- 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)))
+ ifneq (,$(findstring powerpc64,$(target)))
+-MULTILIB_OSDIRNAMES := .=../lib64$(call if_multiarch,:powerpc64-linux-gnu)
++MULTILIB_OSDIRNAMES := .=../lib$(call if_multiarch,:powerpc64-linux-gnu)
+ else
+ ifneq (,$(findstring spe,$(target)))
+ MULTIARCH_DIRNAME := powerpc-linux-gnuspe$(if $(findstring 8548,$(with_cpu)),,v1)
diff --git a/debian/patches/gcc-sysroot.diff b/debian/patches/gcc-sysroot.diff
new file mode 100644
index 0000000..e312dd6
--- /dev/null
+++ b/debian/patches/gcc-sysroot.diff
@@ -0,0 +1,157 @@
+# DP: Allow building --with-sysroot=/
+
+Index: b/src/gcc/configure.ac
+===================================================================
+--- a/src/gcc/configure.ac
++++ b/src/gcc/configure.ac
+@@ -121,6 +121,69 @@ if test x$local_prefix = x; then
+ 	local_prefix=/usr/local
+ fi
+ 
++AC_ARG_WITH([native-system-header-dir],
++  [  --with-native-system-header-dir=dir
++                          use dir as the directory to look for standard
++                          system header files in.  Defaults to /usr/include.],
++[
++ case ${with_native_system_header_dir} in
++ yes|no) AC_MSG_ERROR([bad value ${withval} given for --with-native-system-header-dir]) ;;
++ /* | [[A-Za-z]]:[[\\/]]*) ;;
++ *) AC_MSG_ERROR([--with-native-system-header-dir argument ${withval} must be an absolute directory]) ;;
++ esac
++ configured_native_system_header_dir="${withval}"
++], [configured_native_system_header_dir=])
++
++AC_ARG_WITH(build-sysroot, 
++  [AS_HELP_STRING([--with-build-sysroot=sysroot],
++                  [use sysroot as the system root during the build])],
++  [if test x"$withval" != x ; then
++     SYSROOT_CFLAGS_FOR_TARGET="--sysroot=$withval"
++   fi],
++  [SYSROOT_CFLAGS_FOR_TARGET=])
++AC_SUBST(SYSROOT_CFLAGS_FOR_TARGET)
++
++if test "x$prefix" = xNONE; then
++ test_prefix=/usr/local
++else
++ test_prefix=$prefix
++fi
++if test "x$exec_prefix" = xNONE; then
++ test_exec_prefix=$test_prefix
++else
++ test_exec_prefix=$exec_prefix
++fi
++
++AC_ARG_WITH(sysroot,
++[AS_HELP_STRING([[--with-sysroot[=DIR]]],
++		[search for usr/lib, usr/include, et al, within DIR])],
++[
++ case ${with_sysroot} in
++ yes) TARGET_SYSTEM_ROOT='${exec_prefix}/${target_noncanonical}/sys-root' ;;
++ *) TARGET_SYSTEM_ROOT=$with_sysroot ;;
++ esac
++   
++ TARGET_SYSTEM_ROOT_DEFINE='-DTARGET_SYSTEM_ROOT=\"$(TARGET_SYSTEM_ROOT)\"'
++ CROSS_SYSTEM_HEADER_DIR='$(TARGET_SYSTEM_ROOT)$${sysroot_headers_suffix}$(NATIVE_SYSTEM_HEADER_DIR)'
++	
++ case ${TARGET_SYSTEM_ROOT} in
++ "${test_prefix}"|"${test_prefix}/"*|\
++ "${test_exec_prefix}"|"${test_exec_prefix}/"*|\
++ '${prefix}'|'${prefix}/'*|\
++ '${exec_prefix}'|'${exec_prefix}/'*)
++   t="$TARGET_SYSTEM_ROOT_DEFINE -DTARGET_SYSTEM_ROOT_RELOCATABLE"
++   TARGET_SYSTEM_ROOT_DEFINE="$t"
++   ;;
++ esac
++], [
++ TARGET_SYSTEM_ROOT=
++ TARGET_SYSTEM_ROOT_DEFINE=
++ CROSS_SYSTEM_HEADER_DIR='$(gcc_tooldir)/sys-include'
++])
++AC_SUBST(TARGET_SYSTEM_ROOT)
++AC_SUBST(TARGET_SYSTEM_ROOT_DEFINE)
++AC_SUBST(CROSS_SYSTEM_HEADER_DIR)
++
+ # Don't set gcc_gxx_include_dir to gxx_include_dir since that's only
+ # passed in by the toplevel make and thus we'd get different behavior
+ # depending on where we built the sources.
+@@ -152,7 +215,9 @@ gcc_gxx_include_dir_add_sysroot=0
+ if test "${with_sysroot+set}" = set; then
+   gcc_gxx_without_sysroot=`expr "${gcc_gxx_include_dir}" : "${with_sysroot}"'\(.*\)'`
+   if test "${gcc_gxx_without_sysroot}"; then
+-    gcc_gxx_include_dir="${gcc_gxx_without_sysroot}"
++    if test x${with_sysroot} != x/; then
++      gcc_gxx_include_dir="${gcc_gxx_without_sysroot}"
++    fi
+     gcc_gxx_include_dir_add_sysroot=1
+   fi
+ fi
+@@ -791,69 +856,6 @@ AC_ARG_ENABLE(shared,
+ ], [enable_shared=yes])
+ AC_SUBST(enable_shared)
+ 
+-AC_ARG_WITH([native-system-header-dir],
+-  [  --with-native-system-header-dir=dir
+-                          use dir as the directory to look for standard
+-                          system header files in.  Defaults to /usr/include.],
+-[
+- case ${with_native_system_header_dir} in
+- yes|no) AC_MSG_ERROR([bad value ${withval} given for --with-native-system-header-dir]) ;;
+- /* | [[A-Za-z]]:[[\\/]]*) ;;
+- *) AC_MSG_ERROR([--with-native-system-header-dir argument ${withval} must be an absolute directory]) ;;
+- esac
+- configured_native_system_header_dir="${withval}"
+-], [configured_native_system_header_dir=])
+-
+-AC_ARG_WITH(build-sysroot, 
+-  [AS_HELP_STRING([--with-build-sysroot=sysroot],
+-                  [use sysroot as the system root during the build])],
+-  [if test x"$withval" != x ; then
+-     SYSROOT_CFLAGS_FOR_TARGET="--sysroot=$withval"
+-   fi],
+-  [SYSROOT_CFLAGS_FOR_TARGET=])
+-AC_SUBST(SYSROOT_CFLAGS_FOR_TARGET)
+-
+-if test "x$prefix" = xNONE; then
+- test_prefix=/usr/local
+-else
+- test_prefix=$prefix
+-fi
+-if test "x$exec_prefix" = xNONE; then
+- test_exec_prefix=$test_prefix
+-else
+- test_exec_prefix=$exec_prefix
+-fi
+-
+-AC_ARG_WITH(sysroot,
+-[AS_HELP_STRING([[--with-sysroot[=DIR]]],
+-		[search for usr/lib, usr/include, et al, within DIR])],
+-[
+- case ${with_sysroot} in
+- yes) TARGET_SYSTEM_ROOT='${exec_prefix}/${target_noncanonical}/sys-root' ;;
+- *) TARGET_SYSTEM_ROOT=$with_sysroot ;;
+- esac
+-   
+- TARGET_SYSTEM_ROOT_DEFINE='-DTARGET_SYSTEM_ROOT=\"$(TARGET_SYSTEM_ROOT)\"'
+- CROSS_SYSTEM_HEADER_DIR='$(TARGET_SYSTEM_ROOT)$${sysroot_headers_suffix}$(NATIVE_SYSTEM_HEADER_DIR)'
+-	
+- case ${TARGET_SYSTEM_ROOT} in
+- "${test_prefix}"|"${test_prefix}/"*|\
+- "${test_exec_prefix}"|"${test_exec_prefix}/"*|\
+- '${prefix}'|'${prefix}/'*|\
+- '${exec_prefix}'|'${exec_prefix}/'*)
+-   t="$TARGET_SYSTEM_ROOT_DEFINE -DTARGET_SYSTEM_ROOT_RELOCATABLE"
+-   TARGET_SYSTEM_ROOT_DEFINE="$t"
+-   ;;
+- esac
+-], [
+- TARGET_SYSTEM_ROOT=
+- TARGET_SYSTEM_ROOT_DEFINE=
+- CROSS_SYSTEM_HEADER_DIR='$(gcc_tooldir)/sys-include'
+-])
+-AC_SUBST(TARGET_SYSTEM_ROOT)
+-AC_SUBST(TARGET_SYSTEM_ROOT_DEFINE)
+-AC_SUBST(CROSS_SYSTEM_HEADER_DIR)
+-
+ AC_ARG_WITH(specs,
+   [AS_HELP_STRING([--with-specs=SPECS],
+                   [add SPECS to driver command-line processing])],
diff --git a/debian/patches/gcc-target-include-asm.diff b/debian/patches/gcc-target-include-asm.diff
new file mode 100644
index 0000000..f042926
--- /dev/null
+++ b/debian/patches/gcc-target-include-asm.diff
@@ -0,0 +1,15 @@
+# DP: Search $(builddir)/sys-include for the asm header files
+
+Index: b/src/configure.ac
+===================================================================
+--- a/src/configure.ac
++++ b/src/configure.ac
+@@ -3195,7 +3195,7 @@ fi
+ # being built; programs in there won't even run.
+ if test "${build}" = "${host}" && test -d ${srcdir}/gcc; then
+   # Search for pre-installed headers if nothing else fits.
+-  FLAGS_FOR_TARGET=$FLAGS_FOR_TARGET' -B$(build_tooldir)/bin/ -B$(build_tooldir)/lib/ -isystem $(build_tooldir)/include -isystem $(build_tooldir)/sys-include'
++  FLAGS_FOR_TARGET=$FLAGS_FOR_TARGET' -B$(build_tooldir)/bin/ -B$(build_tooldir)/lib/ -isystem $(build_tooldir)/include -isystem $(build_tooldir)/sys-include -isystem $(CURDIR)/sys-include'
+ fi
+ 
+ if test "x${use_gnu_ld}" = x &&
diff --git a/debian/patches/gcc-textdomain.diff b/debian/patches/gcc-textdomain.diff
new file mode 100644
index 0000000..a037c33
--- /dev/null
+++ b/debian/patches/gcc-textdomain.diff
@@ -0,0 +1,96 @@
+# DP: Set gettext's domain and textdomain to the versioned package name.
+
+Index: b/src/gcc/intl.c
+===================================================================
+--- a/src/gcc/intl.c
++++ b/src/gcc/intl.c
+@@ -55,8 +55,8 @@ gcc_init_libintl (void)
+   setlocale (LC_ALL, "");
+ #endif
+ 
+-  (void) bindtextdomain ("gcc", LOCALEDIR);
+-  (void) textdomain ("gcc");
++  (void) bindtextdomain ("gcc-5", LOCALEDIR);
++  (void) textdomain ("gcc-5");
+ 
+   /* Opening quotation mark.  */
+   open_quote = _("`");
+Index: b/src/gcc/Makefile.in
+===================================================================
+--- a/src/gcc/Makefile.in
++++ b/src/gcc/Makefile.in
+@@ -3904,8 +3904,8 @@ install-po:
+ 	  dir=$(localedir)/$$lang/LC_MESSAGES; \
+ 	  echo $(mkinstalldirs) $(DESTDIR)$$dir; \
+ 	  $(mkinstalldirs) $(DESTDIR)$$dir || exit 1; \
+-	  echo $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/gcc.mo; \
+-	  $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/gcc.mo; \
++	  echo $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/gcc-5.mo; \
++	  $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/gcc-5.mo; \
+ 	done
+ 
+ # Rule for regenerating the message template (gcc.pot).
+Index: b/src/libcpp/init.c
+===================================================================
+--- a/src/libcpp/init.c
++++ b/src/libcpp/init.c
+@@ -153,7 +153,7 @@ init_library (void)
+       init_trigraph_map ();
+ 
+ #ifdef ENABLE_NLS
+-       (void) bindtextdomain (PACKAGE, LOCALEDIR);
++       (void) bindtextdomain (PACKAGE PACKAGE_SUFFIX, LOCALEDIR);
+ #endif
+     }
+ }
+Index: b/src/libcpp/system.h
+===================================================================
+--- a/src/libcpp/system.h
++++ b/src/libcpp/system.h
+@@ -280,7 +280,7 @@ extern int errno;
+ #endif
+ 
+ #ifndef _
+-# define _(msgid) dgettext (PACKAGE, msgid)
++# define _(msgid) dgettext (PACKAGE PACKAGE_SUFFIX, msgid)
+ #endif
+ 
+ #ifndef N_
+Index: b/src/libcpp/Makefile.in
+===================================================================
+--- a/src/libcpp/Makefile.in
++++ b/src/libcpp/Makefile.in
+@@ -49,6 +49,7 @@ LDFLAGS = @LDFLAGS@
+ LIBICONV = @LIBICONV@
+ LIBINTL = @LIBINTL@
+ PACKAGE = @PACKAGE@
++PACKAGE_SUFFIX = -5
+ RANLIB = @RANLIB@
+ SHELL = @SHELL@
+ USED_CATALOGS = @USED_CATALOGS@
+@@ -72,10 +73,12 @@ depcomp = $(SHELL) $(srcdir)/../depcomp
+ 
+ INCLUDES = -I$(srcdir) -I. -I$(srcdir)/../include @INCINTL@ \
+ 	-I$(srcdir)/include
++DEBCPPFLAGS += -DPACKAGE_SUFFIX=\"$(strip $(PACKAGE_SUFFIX))\"
+ 
+-ALL_CFLAGS = $(CFLAGS) $(WARN_CFLAGS) $(INCLUDES) $(CPPFLAGS) $(PICFLAG)
++ALL_CFLAGS = $(CFLAGS) $(WARN_CFLAGS) $(INCLUDES) $(CPPFLAGS) $(PICFLAG) \
++	$(DEBCPPFLAGS)
+ ALL_CXXFLAGS = $(CXXFLAGS) $(WARN_CXXFLAGS) $(NOEXCEPTION_FLAGS) $(INCLUDES) \
+-	$(CPPFLAGS) $(PICFLAG)
++	$(CPPFLAGS) $(PICFLAG) $(DEBCPPFLAGS)
+ 
+ # The name of the compiler to use.
+ COMPILER = $(CXX)
+@@ -164,8 +167,8 @@ install-strip install: all installdirs
+ 	  else continue; \
+ 	  fi; \
+ 	  dir=$(localedir)/$$lang/LC_MESSAGES; \
+-	  echo $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/$(PACKAGE).mo; \
+-	  $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/$(PACKAGE).mo; \
++	  echo $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/$(PACKAGE)$(PACKAGE_SUFFIX).mo; \
++	  $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/$(PACKAGE)$(PACKAGE_SUFFIX).mo; \
+ 	done
+ 
+ mostlyclean:
diff --git a/debian/patches/gccgo-version.diff b/debian/patches/gccgo-version.diff
new file mode 100644
index 0000000..3fb3740
--- /dev/null
+++ b/debian/patches/gccgo-version.diff
@@ -0,0 +1,91 @@
+# DP: Omit the subminor number from the go libdir
+
+Index: b/src/gcc/go/Make-lang.in
+===================================================================
+--- a/src/gcc/go/Make-lang.in
++++ b/src/gcc/go/Make-lang.in
+@@ -217,7 +217,9 @@ go.stageprofile: stageprofile-start
+ go.stagefeedback: stagefeedback-start
+ 	-mv go/*$(objext) stagefeedback/go
+ 
+-CFLAGS-go/go-lang.o += -DDEFAULT_TARGET_VERSION=\"$(version)\" \
++short_version := $(shell echo $(version) | sed -r 's/([0-9]+).*/\1/')
++
++CFLAGS-go/go-lang.o += -DDEFAULT_TARGET_VERSION=\"$(short_version)\" \
+ 	-DDEFAULT_TARGET_MACHINE=\"$(target_noncanonical)\"
+ 
+ GOINCLUDES = -I $(srcdir)/go -I $(srcdir)/go/gofrontend
+Index: b/src/libgo/Makefile.in
+===================================================================
+--- a/src/libgo/Makefile.in
++++ b/src/libgo/Makefile.in
+@@ -491,14 +491,15 @@ SUFFIXES = .c .go .gox .o .obj .lo .a
+ @LIBGO_IS_RTEMS_TRUE at subdirs = testsuite
+ SUBDIRS = ${subdirs}
+ gcc_version := $(shell $(GOC) -dumpversion)
++short_version := $(shell echo $(gcc_version) | sed -r 's/([0-9]+)\..*/\1/')
+ MAINT_CHARSET = latin1
+ mkinstalldirs = $(SHELL) $(toplevel_srcdir)/mkinstalldirs
+ PWD_COMMAND = $${PWDCMD-pwd}
+ STAMP = echo timestamp >
+ toolexecdir = $(glibgo_toolexecdir)
+ toolexeclibdir = $(glibgo_toolexeclibdir)
+-toolexeclibgodir = $(nover_glibgo_toolexeclibdir)/go/$(gcc_version)/$(target_alias)
+-libexecsubdir = $(libexecdir)/gcc/$(target_alias)/$(gcc_version)
++toolexeclibgodir = $(nover_glibgo_toolexeclibdir)/go/$(short_version)
++libexecsubdir = $(libexecdir)/gcc/$(target_alias)/$(short_version)
+ WARN_CFLAGS = $(WARN_FLAGS) $(WERROR)
+ 
+ # -I/-D flags to pass when compiling.
+Index: b/src/libgo/Makefile.am
+===================================================================
+--- a/src/libgo/Makefile.am
++++ b/src/libgo/Makefile.am
+@@ -16,6 +16,7 @@ endif
+ SUBDIRS = ${subdirs}
+ 
+ gcc_version := $(shell $(GOC) -dumpversion)
++short_version := $(shell echo $(gcc_version) | sed -r 's/([0-9]+)\..*/\1/')
+ 
+ MAINT_CHARSET = latin1
+ 
+@@ -25,8 +26,8 @@ STAMP = echo timestamp >
+ 
+ toolexecdir = $(glibgo_toolexecdir)
+ toolexeclibdir = $(glibgo_toolexeclibdir)
+-toolexeclibgodir = $(nover_glibgo_toolexeclibdir)/go/$(gcc_version)/$(target_alias)
+-libexecsubdir = $(libexecdir)/gcc/$(target_alias)/$(gcc_version)
++toolexeclibgodir = $(nover_glibgo_toolexeclibdir)/go/$(short_version)
++libexecsubdir = $(libexecdir)/gcc/$(target_alias)/$(short_version)
+ 
+ LIBFFI = @LIBFFI@
+ LIBFFIINCS = @LIBFFIINCS@
+Index: b/src/gotools/Makefile.am
+===================================================================
+--- a/src/gotools/Makefile.am
++++ b/src/gotools/Makefile.am
+@@ -18,8 +18,9 @@
+ ACLOCAL_AMFLAGS = -I ./config -I ../config
+ 
+ gcc_version := $(shell $(GCC_FOR_TARGET) -dumpversion)
++short_version := $(shell echo $(gcc_version) | sed -r 's/([0-9]+)\..*/\1/')
+ 
+-libexecsubdir = $(libexecdir)/gcc/$(target_noncanonical)/$(gcc_version)
++libexecsubdir = $(libexecdir)/gcc/$(target_noncanonical)/$(short_version)
+ 
+ mkinstalldirs = $(SHELL) $(toplevel_srcdir)/mkinstalldirs
+ PWD_COMMAND = $${PWDCMD-pwd}
+Index: b/src/gotools/Makefile.in
+===================================================================
+--- a/src/gotools/Makefile.in
++++ b/src/gotools/Makefile.in
+@@ -219,7 +219,8 @@ top_builddir = @top_builddir@
+ top_srcdir = @top_srcdir@
+ ACLOCAL_AMFLAGS = -I ./config -I ../config
+ gcc_version := $(shell $(GCC_FOR_TARGET) -dumpversion)
+-libexecsubdir = $(libexecdir)/gcc/$(target_noncanonical)/$(gcc_version)
++short_version := $(shell echo $(gcc_version) | sed -r 's/([0-9]+)\..*/\1/')
++libexecsubdir = $(libexecdir)/gcc/$(target_noncanonical)/$(short_version)
+ mkinstalldirs = $(SHELL) $(toplevel_srcdir)/mkinstalldirs
+ PWD_COMMAND = $${PWDCMD-pwd}
+ STAMP = echo timestamp >
diff --git a/debian/patches/gcj-arm-mode.diff b/debian/patches/gcj-arm-mode.diff
new file mode 100644
index 0000000..3305c0c
--- /dev/null
+++ b/debian/patches/gcj-arm-mode.diff
@@ -0,0 +1,33 @@
+# DP: For armhf, force arm mode instead of thumb mode
+
+--- a/src/libjava/configure.host
++++ b/src/libjava/configure.host
+@@ -66,6 +66,9 @@
+     ;;
+ esac
+ 
++# on armhf force arm mode
++libgcj_flags="${libgcj_flags} -marm"
++
+ AM_RUNTESTFLAGS= 
+ 
+ # Set any host dependent compiler flags.
+--- a/src/gcc/java/lang-specs.h
++++ b/src/gcc/java/lang-specs.h
+@@ -47,7 +47,7 @@
+     %{.class|.zip|.jar|!fsyntax-only:jc1				\
+       %{.java|fsaw-java-file:%U.jar -fsource-filename=%i %<ffilelist-file} \
+       %{.class|.zip|.jar|ffilelist-file|fcompile-resource*:%i}		\
+-      %(jc1) %(cc1_options) %{I*} %{!findirect-dispatch:-faux-classpath %U.zip} \
++      %(jc1) %(cc1_options) -marm %{I*} %{!findirect-dispatch:-faux-classpath %U.zip} \
+       %{MD:-MD_} %{MMD:-MMD_} %{M} %{MM} %{MA} %{MT*} %{MF*}\
+       %(invoke_as)}",
+       0, 0, 0},
+--- a/src/libjava/libgcj.spec.in
++++ b/src/libjava/libgcj.spec.in
+@@ -9,4 +9,4 @@
+ %rename lib liborig
+ *lib: @LD_START_STATIC_SPEC@ @LIBGCJ_SPEC@ @LD_FINISH_STATIC_SPEC@ @LIBMATHSPEC@ @LDLIBICONV@ @GCSPEC@ @THREADSPEC@ @ZLIBSPEC@ @SYSTEMSPEC@ %(libgcc) @LIBSTDCXXSPEC@ %(liborig)
+ 
+-*jc1: @HASH_SYNC_SPEC@ @DIVIDESPEC@ @CHECKREFSPEC@ @JC1GCSPEC@ @EXCEPTIONSPEC@ @BACKTRACESPEC@ @IEEESPEC@ @ATOMICSPEC@ @LIBGCJ_BC_SPEC@ -fkeep-inline-functions
++*jc1: @HASH_SYNC_SPEC@ @DIVIDESPEC@ @CHECKREFSPEC@ @JC1GCSPEC@ @EXCEPTIONSPEC@ @BACKTRACESPEC@ @IEEESPEC@ @ATOMICSPEC@ @LIBGCJ_BC_SPEC@ -fkeep-inline-functions -marm
diff --git a/debian/patches/gdc-5-doc.diff b/debian/patches/gdc-5-doc.diff
new file mode 100644
index 0000000..80493ab
--- /dev/null
+++ b/debian/patches/gdc-5-doc.diff
@@ -0,0 +1,106 @@
+# DP: This implements D language support in the GCC back end, and adds
+# DP: relevant documentation about the GDC front end (documentation part).
+
+Index: b/src/gcc/doc/frontends.texi
+===================================================================
+--- a/src/gcc/doc/frontends.texi
++++ b/src/gcc/doc/frontends.texi
+@@ -9,6 +9,7 @@
+ @cindex GNU Compiler Collection
+ @cindex GNU C Compiler
+ @cindex Ada
++ at cindex D
+ @cindex Fortran
+ @cindex Go
+ @cindex Java
+@@ -17,7 +18,7 @@
+ GCC stands for ``GNU Compiler Collection''.  GCC is an integrated
+ distribution of compilers for several major programming languages.  These
+ languages currently include C, C++, Objective-C, Objective-C++, Java,
+-Fortran, Ada, and Go.
++Fortran, Ada, D and Go.
+ 
+ The abbreviation @dfn{GCC} has multiple meanings in common use.  The
+ current official meaning is ``GNU Compiler Collection'', which refers
+Index: b/src/gcc/doc/install.texi
+===================================================================
+--- a/src/gcc/doc/install.texi
++++ b/src/gcc/doc/install.texi
+@@ -1547,12 +1547,12 @@ their runtime libraries should be built.
+ grep language= */config-lang.in
+ @end smallexample
+ Currently, you can use any of the following:
+- at code{all}, @code{ada}, @code{c}, @code{c++}, @code{fortran},
++ at code{all}, @code{ada}, @code{c}, @code{c++}, @code{d}, @code{fortran},
+ @code{go}, @code{java}, @code{objc}, @code{obj-c++}.
+ Building the Ada compiler has special requirements, see below.
+ If you do not pass this flag, or specify the option @code{all}, then all
+ default languages available in the @file{gcc} sub-tree will be configured.
+-Ada, Go and Objective-C++ are not default languages; the rest are.
++Ada, D, Go and Objective-C++ are not default languages; the rest are.
+ 
+ @item --enable-stage1-languages=@var{lang1}, at var{lang2}, at dots{}
+ Specify that a particular subset of compilers and their runtime
+Index: b/src/gcc/doc/invoke.texi
+===================================================================
+--- a/src/gcc/doc/invoke.texi
++++ b/src/gcc/doc/invoke.texi
+@@ -1259,6 +1259,15 @@ called @dfn{specs}.
+ Ada source code file containing a library unit body (a subprogram or
+ package body).  Such files are also called @dfn{bodies}.
+ 
++ at item @var{file}.d
++D source code file.
++
++ at item @var{file}.di
++D interface code file.
++
++ at item @var{file}.dd
++D documentation code file.
++
+ @c GCC also knows about some suffixes for languages not yet included:
+ @c Pascal:
+ @c @var{file}.p
+@@ -1294,6 +1303,7 @@ objective-c  objective-c-header  objecti
+ objective-c++ objective-c++-header objective-c++-cpp-output
+ assembler  assembler-with-cpp
+ ada
++d
+ f77  f77-cpp-input f95  f95-cpp-input
+ go
+ java
+Index: b/src/gcc/doc/sourcebuild.texi
+===================================================================
+--- a/src/gcc/doc/sourcebuild.texi
++++ b/src/gcc/doc/sourcebuild.texi
+@@ -109,6 +109,9 @@ The Objective-C and Objective-C++ runtim
+ @item libquadmath
+ The runtime support library for quad-precision math operations.
+ 
++ at item libphobos
++The D standard runtime library.
++
+ @item libssp
+ The Stack protector runtime library.
+ 
+Index: b/src/gcc/doc/standards.texi
+===================================================================
+--- a/src/gcc/doc/standards.texi
++++ b/src/gcc/doc/standards.texi
+@@ -280,6 +280,16 @@ available online, see @uref{http://gcc.g
+ As of the GCC 4.7.1 release, GCC supports the Go 1 language standard,
+ described at @uref{http://golang.org/doc/go1.html}.
+ 
++ at section D language
++
++The D language is under development as of this writing; see the
++ at uref{http://dlang.org/@/language-reference.html, current language
++reference}.  At present the current major version of D is 2.0, and
++there is no way to describe the language supported by GCC in terms of
++a specific minor version.  In general GCC follows the D frontend
++releases closely, and any given GCC release will support the current
++language as of the date that the release was frozen.
++
+ @section References for Other Languages
+ 
+ @xref{Top, GNAT Reference Manual, About This Guide, gnat_rm,
diff --git a/debian/patches/gdc-5.diff b/debian/patches/gdc-5.diff
new file mode 100644
index 0000000..6f27bed
--- /dev/null
+++ b/debian/patches/gdc-5.diff
@@ -0,0 +1,138 @@
+# DP: This implements D language support in the GCC back end, and adds
+# DP: relevant documentation about the GDC front end (code part).
+
+Index: b/src/gcc/config/darwin.h
+===================================================================
+--- a/src/gcc/config/darwin.h
++++ b/src/gcc/config/darwin.h
+@@ -49,6 +49,10 @@ see the files COPYING3 and COPYING.RUNTI
+ /* Suppress g++ attempt to link in the math library automatically. */
+ #define MATH_LIBRARY ""
+ 
++/* Suppress gdc attempt to link in the thread and time library automatically. */
++#define THREAD_LIBRARY ""
++#define TIME_LIBRARY ""
++
+ /* We have atexit.  */
+ 
+ #define HAVE_ATEXIT
+Index: b/src/gcc/config/i386/cygming.h
+===================================================================
+--- a/src/gcc/config/i386/cygming.h
++++ b/src/gcc/config/i386/cygming.h
+@@ -170,6 +170,10 @@ along with GCC; see the file COPYING3.
+ 
+ #undef MATH_LIBRARY
+ #define MATH_LIBRARY ""
++#undef THREAD_LIBRARY
++#define THREAD_LIBRARY ""
++#undef TIME_LIBRARY
++#define TIME_LIBRARY ""
+ 
+ #undef TARGET_LIBC_HAS_FUNCTION
+ #define TARGET_LIBC_HAS_FUNCTION no_c99_libc_has_function
+Index: b/src/gcc/config/linux-android.h
+===================================================================
+--- a/src/gcc/config/linux-android.h
++++ b/src/gcc/config/linux-android.h
+@@ -57,3 +57,9 @@
+ 
+ #define ANDROID_ENDFILE_SPEC \
+   "%{shared: crtend_so%O%s;: crtend_android%O%s}"
++
++/* Suppress gdc attempt to link in the thread and time library automatically. */
++#if ANDROID_DEFAULT
++# define THREAD_LIBRARY ""
++# define TIME_LIBRARY ""
++#endif
+Index: b/src/gcc/config/rs6000/rs6000.c
+===================================================================
+--- a/src/gcc/config/rs6000/rs6000.c
++++ b/src/gcc/config/rs6000/rs6000.c
+@@ -25733,7 +25733,8 @@ rs6000_output_function_epilogue (FILE *f
+       if (lang_GNU_C ()
+ 	  || ! strcmp (language_string, "GNU GIMPLE")
+ 	  || ! strcmp (language_string, "GNU Go")
+-	  || ! strcmp (language_string, "libgccjit"))
++	  || ! strcmp (language_string, "libgccjit")
++	  || ! strcmp (language_string, "GNU D"))
+ 	i = 0;
+       else if (! strcmp (language_string, "GNU F77")
+ 	       || lang_GNU_Fortran ())
+Index: b/src/gcc/dwarf2out.c
+===================================================================
+--- a/src/gcc/dwarf2out.c
++++ b/src/gcc/dwarf2out.c
+@@ -4756,6 +4756,15 @@ is_ada (void)
+   return lang == DW_LANG_Ada95 || lang == DW_LANG_Ada83;
+ }
+ 
++/* Return TRUE if the language is D.  */
++static inline bool
++is_dlang (void)
++{
++  unsigned int lang = get_AT_unsigned (comp_unit_die (), DW_AT_language);
++
++  return lang == DW_LANG_D;
++}
++
+ /* Remove the specified attribute if present.  */
+ 
+ static void
+@@ -19843,6 +19852,8 @@ gen_compile_unit_die (const char *filena
+ 	language = DW_LANG_ObjC;
+       else if (strcmp (language_string, "GNU Objective-C++") == 0)
+ 	language = DW_LANG_ObjC_plus_plus;
++      else if (strcmp (language_string, "GNU D") == 0)
++	language = DW_LANG_D;
+       else if (dwarf_version >= 5 || !dwarf_strict)
+ 	{
+ 	  if (strcmp (language_string, "GNU Go") == 0)
+@@ -20811,7 +20822,7 @@ declare_in_namespace (tree thing, dw_die
+ 
+   if (ns_context != context_die)
+     {
+-      if (is_fortran ())
++      if (is_fortran () || is_dlang ())
+ 	return ns_context;
+       if (DECL_P (thing))
+ 	gen_decl_die (thing, NULL, ns_context);
+@@ -20834,7 +20845,7 @@ gen_namespace_die (tree decl, dw_die_ref
+     {
+       /* Output a real namespace or module.  */
+       context_die = setup_namespace_context (decl, comp_unit_die ());
+-      namespace_die = new_die (is_fortran ()
++      namespace_die = new_die (is_fortran () || is_dlang ()
+ 			       ? DW_TAG_module : DW_TAG_namespace,
+ 			       context_die, decl);
+       /* For Fortran modules defined in different CU don't add src coords.  */
+@@ -20897,7 +20908,7 @@ gen_decl_die (tree decl, tree origin, dw
+       break;
+ 
+     case CONST_DECL:
+-      if (!is_fortran () && !is_ada ())
++      if (!is_fortran () && !is_ada () && !is_dlang ())
+ 	{
+ 	  /* The individual enumerators of an enum type get output when we output
+ 	     the Dwarf representation of the relevant enum type itself.  */
+@@ -21368,7 +21379,7 @@ dwarf2out_decl (tree decl)
+     case CONST_DECL:
+       if (debug_info_level <= DINFO_LEVEL_TERSE)
+ 	return;
+-      if (!is_fortran () && !is_ada ())
++      if (!is_fortran () && !is_ada () && !is_dlang ())
+ 	return;
+       if (TREE_STATIC (decl) && decl_function_context (decl))
+ 	context_die = lookup_decl_die (DECL_CONTEXT (decl));
+Index: b/src/gcc/gcc.c
+===================================================================
+--- a/src/gcc/gcc.c
++++ b/src/gcc/gcc.c
+@@ -1148,6 +1148,7 @@ static const struct compiler default_com
+   {".java", "#Java", 0, 0, 0}, {".class", "#Java", 0, 0, 0},
+   {".zip", "#Java", 0, 0, 0}, {".jar", "#Java", 0, 0, 0},
+   {".go", "#Go", 0, 1, 0},
++  {".d", "#D", 0, 1, 0}, {".dd", "#D", 0, 1, 0}, {".di", "#D", 0, 1, 0},
+   /* Next come the entries for C.  */
+   {".c", "@c", 0, 0, 1},
+   {"@c",
diff --git a/debian/patches/gdc-base-version.diff b/debian/patches/gdc-base-version.diff
new file mode 100644
index 0000000..d92bd4c
--- /dev/null
+++ b/debian/patches/gdc-base-version.diff
@@ -0,0 +1,15 @@
+# DP: Use the GCC base version for the D include dir name
+
+Index: b/src/libphobos/configure.ac
+===================================================================
+--- a/src/libphobos/configure.ac
++++ b/src/libphobos/configure.ac
+@@ -138,7 +138,7 @@ fi
+ AC_SUBST(GDC)
+ 
+ AC_MSG_CHECKING([D GCC version])
+-d_gcc_ver=`$GDC -dumpversion`
++d_gcc_ver=`$GDC -dumpversion | sed 's/^\(@<:@0-9@:>@*\).*/\1/'`
+ AC_MSG_RESULT($d_gcc_ver)
+ 
+ phobos_toolexecdir=no
diff --git a/debian/patches/gdc-config-ml.diff b/debian/patches/gdc-config-ml.diff
new file mode 100644
index 0000000..1e124c6
--- /dev/null
+++ b/debian/patches/gdc-config-ml.diff
@@ -0,0 +1,55 @@
+# DP: config-ml.in: Add D support.
+
+2015-04-30  Matthias Klose  <doko at ubuntu.com>
+
+        * config-ml.in: Add D support: treat GDC and GDCFLAGS like other
+        compiler/flag environment variables.
+
+Index: b/src/config-ml.in
+===================================================================
+--- a/src/config-ml.in
++++ b/src/config-ml.in
+@@ -525,6 +525,7 @@ multi-do:
+ 				GCJFLAGS="$(GCJFLAGS) $${flags}" \
+ 				GOCFLAGS="$(GOCFLAGS) $${flags}" \
+ 				CXXFLAGS="$(CXXFLAGS) $${flags}" \
++				DFLAGS="$(DFLAGS) $${flags}" \
+ 				LIBCFLAGS="$(LIBCFLAGS) $${flags}" \
+ 				LIBCXXFLAGS="$(LIBCXXFLAGS) $${flags}" \
+ 				LDFLAGS="$(LDFLAGS) $${flags}" \
+@@ -757,7 +758,7 @@ if [ -n "${multidirs}" ] && [ -z "${ml_n
+         break
+       fi
+     done
+-    ml_config_env='CC="${CC_}$flags" CXX="${CXX_}$flags" F77="${F77_}$flags" GCJ="${GCJ_}$flags" GFORTRAN="${GFORTRAN_}$flags" GOC="${GOC_}$flags"'
++    ml_config_env='CC="${CC_}$flags" CXX="${CXX_}$flags" F77="${F77_}$flags" GCJ="${GCJ_}$flags" GFORTRAN="${GFORTRAN_}$flags" GOC="${GOC_}$flags" GDC="${GDC_}$flags"'
+ 
+     if [ "${with_target_subdir}" = "." ]; then
+ 	CC_=$CC' '
+@@ -766,6 +767,7 @@ if [ -n "${multidirs}" ] && [ -z "${ml_n
+ 	GCJ_=$GCJ' '
+ 	GFORTRAN_=$GFORTRAN' '
+ 	GOC_=$GOC' '
++	GDC_=$GDC' '
+     else
+ 	# Create a regular expression that matches any string as long
+ 	# as ML_POPDIR.
+@@ -842,6 +844,18 @@ if [ -n "${multidirs}" ] && [ -z "${ml_n
+ 	  esac
+ 	done
+ 
++	GDC_=
++	for arg in ${GDC}; do
++	  case $arg in
++	  -[BIL]"${ML_POPDIR}"/*)
++	    GDC_="${GDC_}"`echo "X${arg}" | sed -n "s/X\\(-[BIL]${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X-[BIL]${popdir_rx}\\(.*\\)/\\1/p"`' ' ;;
++	  "${ML_POPDIR}"/*)
++	    GDC_="${GDC_}"`echo "X${arg}" | sed -n "s/X\\(${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X${popdir_rx}\\(.*\\)/\\1/p"`' ' ;;
++	  *)
++	    GDC_="${GDC_}${arg} " ;;
++	  esac
++	done
++
+ 	if test "x${LD_LIBRARY_PATH+set}" = xset; then
+ 	  LD_LIBRARY_PATH_=
+ 	  for arg in `echo "$LD_LIBRARY_PATH" | tr ':' ' '`; do
diff --git a/debian/patches/gdc-cross-biarch.diff b/debian/patches/gdc-cross-biarch.diff
new file mode 100644
index 0000000..24dd5bc
--- /dev/null
+++ b/debian/patches/gdc-cross-biarch.diff
@@ -0,0 +1,13 @@
+# DP: Fix the location of target's libs in cross-build for biarch
+
+--- a/src/config-ml.in
++++ b/src/config-ml.in
+@@ -891,6 +915,8 @@
+ 	  case $arg in
+ 	  -[BIL]"${ML_POPDIR}"/*)
+ 	    GDC_="${GDC_}"`echo "X${arg}" | sed -n "s/X\\(-[BIL]${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X-[BIL]${popdir_rx}\\(.*\\)/\\1/p"`' ' ;;
++	  -B*/lib/)
++	    GDC_="${GDC_}"`echo "X${arg}" | sed -n "$FILTER_"`' ' ;;
+ 	  "${ML_POPDIR}"/*)
+ 	    GDC_="${GDC_}"`echo "X${arg}" | sed -n "s/X\\(${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X${popdir_rx}\\(.*\\)/\\1/p"`' ' ;;
+ 	  *)
diff --git a/debian/patches/gdc-cross-install-location.diff b/debian/patches/gdc-cross-install-location.diff
new file mode 100644
index 0000000..21d4e92
--- /dev/null
+++ b/debian/patches/gdc-cross-install-location.diff
@@ -0,0 +1,13 @@
+Index: b/src/libphobos/configure.ac
+===================================================================
+--- a/src/libphobos/configure.ac
++++ b/src/libphobos/configure.ac
+@@ -167,7 +167,7 @@ AC_SUBST(phobos_toolexecdir)
+ AC_SUBST(phobos_toolexeclibdir)
+ 
+ # Default case for install directory for D sources files.
+-gdc_include_dir='${libdir}/gcc/${target_alias}'/${d_gcc_ver}/include/d
++gdc_include_dir='${libdir}/gcc-cross/${target_alias}'/${d_gcc_ver}/include/d
+ AC_SUBST(gdc_include_dir)
+ 
+ dnl Checks for header files.
diff --git a/debian/patches/gdc-driver-nophobos.diff b/debian/patches/gdc-driver-nophobos.diff
new file mode 100644
index 0000000..693d125
--- /dev/null
+++ b/debian/patches/gdc-driver-nophobos.diff
@@ -0,0 +1,28 @@
+# DP: Modify gdc driver to have no libphobos by default.
+
+Index: b/src/gcc/d/d-lang.cc
+===================================================================
+--- a/src/gcc/d/d-lang.cc
++++ b/src/gcc/d/d-lang.cc
+@@ -179,7 +179,7 @@ static void
+ d_init_options_struct(gcc_options *opts)
+ {
+   // 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;
+Index: b/src/gcc/d/d-spec.c
+===================================================================
+--- a/src/gcc/d/d-spec.c
++++ b/src/gcc/d/d-spec.c
+@@ -91,7 +91,7 @@ lang_specific_driver (cl_decoded_option
+ 
+   /* 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
diff --git a/debian/patches/gdc-frontend-posix.diff b/debian/patches/gdc-frontend-posix.diff
new file mode 100644
index 0000000..3c70021
--- /dev/null
+++ b/debian/patches/gdc-frontend-posix.diff
@@ -0,0 +1,15 @@
+# DP: Fix build of the D frontend on the Hurd and KFreeBSD.
+
+Index: b/src/gcc/d/dfrontend/object.h
+===================================================================
+--- a/src/gcc/d/dfrontend/object.h
++++ b/src/gcc/d/dfrontend/object.h
+@@ -10,7 +10,7 @@
+ #ifndef OBJECT_H
+ #define OBJECT_H
+ 
+-#define POSIX (__linux__ || __APPLE__ || __FreeBSD__ || __OpenBSD__ || __sun)
++#define POSIX (__linux__ || __GLIBC__ || __gnu_hurd__ || __APPLE__ || __FreeBSD__ || __OpenBSD__ || __sun)
+ 
+ #if __DMC__
+ #pragma once
diff --git a/debian/patches/gdc-libphobos-build.diff b/debian/patches/gdc-libphobos-build.diff
new file mode 100644
index 0000000..ee10020
--- /dev/null
+++ b/debian/patches/gdc-libphobos-build.diff
@@ -0,0 +1,939 @@
+# DP: This implements building of libphobos library in GCC.
+
+Index: b/src/configure.ac
+===================================================================
+--- a/src/configure.ac
++++ b/src/configure.ac
+@@ -171,6 +171,7 @@ target_libraries="target-libgcc \
+ 		target-libssp \
+ 		target-libquadmath \
+ 		target-libgfortran \
++		target-libphobos \
+ 		target-boehm-gc \
+ 		${libgcj} \
+ 		target-libobjc \
+@@ -1352,6 +1353,7 @@ else
+   GCJ_FOR_BUILD="\$(GCJ)"
+   GFORTRAN_FOR_BUILD="\$(GFORTRAN)"
+   GOC_FOR_BUILD="\$(GOC)"
++  GDC_FOR_BUILD="\$(GDC)"
+   DLLTOOL_FOR_BUILD="\$(DLLTOOL)"
+   LD_FOR_BUILD="\$(LD)"
+   NM_FOR_BUILD="\$(NM)"
+@@ -3266,6 +3268,7 @@ AC_SUBST(DLLTOOL_FOR_BUILD)
+ AC_SUBST(GCJ_FOR_BUILD)
+ AC_SUBST(GFORTRAN_FOR_BUILD)
+ AC_SUBST(GOC_FOR_BUILD)
++AC_SUBST(GDC_FOR_BUILD)
+ AC_SUBST(LDFLAGS_FOR_BUILD)
+ AC_SUBST(LD_FOR_BUILD)
+ AC_SUBST(NM_FOR_BUILD)
+@@ -3376,6 +3379,7 @@ NCN_STRICT_CHECK_TARGET_TOOLS(GCC_FOR_TA
+ NCN_STRICT_CHECK_TARGET_TOOLS(GCJ_FOR_TARGET, gcj)
+ NCN_STRICT_CHECK_TARGET_TOOLS(GFORTRAN_FOR_TARGET, gfortran)
+ NCN_STRICT_CHECK_TARGET_TOOLS(GOC_FOR_TARGET, gccgo)
++NCN_STRICT_CHECK_TARGET_TOOLS(GDC_FOR_TARGET, gdc)
+ 
+ ACX_CHECK_INSTALLED_TARGET_TOOL(AR_FOR_TARGET, ar)
+ ACX_CHECK_INSTALLED_TARGET_TOOL(AS_FOR_TARGET, as)
+@@ -3411,6 +3415,8 @@ GCC_TARGET_TOOL(gfortran, GFORTRAN_FOR_T
+ 		[gcc/gfortran -B$$r/$(HOST_SUBDIR)/gcc/], fortran)
+ GCC_TARGET_TOOL(gccgo, GOC_FOR_TARGET, GOC,
+ 		[gcc/gccgo -B$$r/$(HOST_SUBDIR)/gcc/], go)
++GCC_TARGET_TOOL(gdc, GDC_FOR_TARGET, GDC,
++		[gcc/gdc -B$$r/$(HOST_SUBDIR)/gcc/], d)
+ GCC_TARGET_TOOL(ld, LD_FOR_TARGET, LD, [ld/ld-new])
+ GCC_TARGET_TOOL(lipo, LIPO_FOR_TARGET, LIPO)
+ GCC_TARGET_TOOL(nm, NM_FOR_TARGET, NM, [binutils/nm-new])
+Index: b/src/Makefile.def
+===================================================================
+--- a/src/Makefile.def
++++ b/src/Makefile.def
+@@ -156,6 +156,7 @@ target_modules = { module= libquadmath;
+ target_modules = { module= libgfortran; };
+ target_modules = { module= libobjc; };
+ target_modules = { module= libgo; };
++target_modules = { module= libphobos; };
+ target_modules = { module= libtermcap; no_check=true;
+                    missing=mostlyclean;
+                    missing=clean;
+@@ -313,6 +314,7 @@ flags_to_pass = { flag= GCJ_FOR_TARGET ;
+ flags_to_pass = { flag= GFORTRAN_FOR_TARGET ; };
+ flags_to_pass = { flag= GOC_FOR_TARGET ; };
+ flags_to_pass = { flag= GOCFLAGS_FOR_TARGET ; };
++flags_to_pass = { flag= GDC_FOR_TARGET ; };
+ flags_to_pass = { flag= LD_FOR_TARGET ; };
+ flags_to_pass = { flag= LIPO_FOR_TARGET ; };
+ flags_to_pass = { flag= LDFLAGS_FOR_TARGET ; };
+@@ -583,6 +585,8 @@ dependencies = { module=configure-target
+ dependencies = { module=all-target-libgo; on=all-target-libbacktrace; };
+ dependencies = { module=all-target-libgo; on=all-target-libffi; };
+ dependencies = { module=all-target-libgo; on=all-target-libatomic; };
++dependencies = { module=configure-target-libphobos; on=configure-target-zlib; };
++dependencies = { module=all-target-libphobos; on=all-target-zlib; };
+ dependencies = { module=configure-target-libjava; on=configure-target-zlib; };
+ dependencies = { module=configure-target-libjava; on=configure-target-boehm-gc; };
+ dependencies = { module=configure-target-libjava; on=configure-target-libffi; };
+@@ -646,6 +650,8 @@ languages = { language=objc;	gcc-check-t
+ languages = { language=obj-c++;	gcc-check-target=check-obj-c++; };
+ languages = { language=go;	gcc-check-target=check-go;
+ 				lib-check-target=check-target-libgo; };
++languages = { language=d;	gcc-check-target=check-d;
++				lib-check-target=check-target-libphobos; };
+ 
+ // Toplevel bootstrap
+ bootstrap_stage = { id=1 ; };
+Index: b/src/config-ml.in
+===================================================================
+--- a/src/config-ml.in
++++ b/src/config-ml.in
+@@ -524,6 +524,7 @@ multi-do:
+ 				exec_prefix="$(exec_prefix)" \
+ 				GCJFLAGS="$(GCJFLAGS) $${flags}" \
+ 				GOCFLAGS="$(GOCFLAGS) $${flags}" \
++				GDCFLAGS="$(GDCFLAGS) $${flags}" \
+ 				CXXFLAGS="$(CXXFLAGS) $${flags}" \
+ 				LIBCFLAGS="$(LIBCFLAGS) $${flags}" \
+ 				LIBCXXFLAGS="$(LIBCXXFLAGS) $${flags}" \
+@@ -757,7 +758,7 @@ if [ -n "${multidirs}" ] && [ -z "${ml_n
+         break
+       fi
+     done
+-    ml_config_env='CC="${CC_}$flags" CXX="${CXX_}$flags" F77="${F77_}$flags" GCJ="${GCJ_}$flags" GFORTRAN="${GFORTRAN_}$flags" GOC="${GOC_}$flags"'
++    ml_config_env='CC="${CC_}$flags" CXX="${CXX_}$flags" F77="${F77_}$flags" GCJ="${GCJ_}$flags" GFORTRAN="${GFORTRAN_}$flags" GOC="${GOC_}$flags" GDC="${GDC_}$flags"'
+ 
+     if [ "${with_target_subdir}" = "." ]; then
+ 	CC_=$CC' '
+@@ -766,6 +767,7 @@ if [ -n "${multidirs}" ] && [ -z "${ml_n
+ 	GCJ_=$GCJ' '
+ 	GFORTRAN_=$GFORTRAN' '
+ 	GOC_=$GOC' '
++	GDC_=$GDC' '
+     else
+ 	# Create a regular expression that matches any string as long
+ 	# as ML_POPDIR.
+@@ -842,6 +844,18 @@ if [ -n "${multidirs}" ] && [ -z "${ml_n
+ 	  esac
+ 	done
+ 
++	GDC_=
++	for arg in ${GDC}; do
++	  case $arg in
++	  -[BIL]"${ML_POPDIR}"/*)
++	    GDC_="${GDC_}"`echo "X${arg}" | sed -n "s/X\\(-[BIL]${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X-[BIL]${popdir_rx}\\(.*\\)/\\1/p"`' ' ;;
++	  "${ML_POPDIR}"/*)
++	    GDC_="${GDC_}"`echo "X${arg}" | sed -n "s/X\\(${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X${popdir_rx}\\(.*\\)/\\1/p"`' ' ;;
++	  *)
++	    GDC_="${GDC_}${arg} " ;;
++	  esac
++	done
++
+ 	if test "x${LD_LIBRARY_PATH+set}" = xset; then
+ 	  LD_LIBRARY_PATH_=
+ 	  for arg in `echo "$LD_LIBRARY_PATH" | tr ':' ' '`; do
+Index: b/src/config/multi.m4
+===================================================================
+--- a/src/config/multi.m4
++++ b/src/config/multi.m4
+@@ -65,4 +65,6 @@ CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
+ CC="$CC"
+ CXX="$CXX"
+ GFORTRAN="$GFORTRAN"
+-GCJ="$GCJ"])])dnl
++GCJ="$GCJ"
++GDC="$GDC"])])dnl
++
+Index: b/src/Makefile.in
+===================================================================
+--- a/src/Makefile.in
++++ b/src/Makefile.in
+@@ -157,6 +157,7 @@ BUILD_EXPORTS = \
+ 	GFORTRAN="$(GFORTRAN_FOR_BUILD)"; export GFORTRAN; \
+ 	GOC="$(GOC_FOR_BUILD)"; export GOC; \
+ 	GOCFLAGS="$(GOCFLAGS_FOR_BUILD)"; export GOCFLAGS; \
++	GDC="$(GDC_FOR_BUILD)"; export GDC; \
+ 	DLLTOOL="$(DLLTOOL_FOR_BUILD)"; export DLLTOOL; \
+ 	LD="$(LD_FOR_BUILD)"; export LD; \
+ 	LDFLAGS="$(LDFLAGS_FOR_BUILD)"; export LDFLAGS; \
+@@ -194,6 +195,7 @@ HOST_EXPORTS = \
+ 	GCJ="$(GCJ)"; export GCJ; \
+ 	GFORTRAN="$(GFORTRAN)"; export GFORTRAN; \
+ 	GOC="$(GOC)"; export GOC; \
++	GDC="$(GDC)"; export GDC; \
+ 	AR="$(AR)"; export AR; \
+ 	AS="$(AS)"; export AS; \
+ 	CC_FOR_BUILD="$(CC_FOR_BUILD)"; export CC_FOR_BUILD; \
+@@ -280,6 +282,7 @@ BASE_TARGET_EXPORTS = \
+ 	GCJ="$(GCJ_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export GCJ; \
+ 	GFORTRAN="$(GFORTRAN_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export GFORTRAN; \
+ 	GOC="$(GOC_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export GOC; \
++	GDC="$(GDC_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export GDC; \
+ 	DLLTOOL="$(DLLTOOL_FOR_TARGET)"; export DLLTOOL; \
+ 	LD="$(COMPILER_LD_FOR_TARGET)"; export LD; \
+ 	LDFLAGS="$(LDFLAGS_FOR_TARGET)"; export LDFLAGS; \
+@@ -347,6 +350,7 @@ DLLTOOL_FOR_BUILD = @DLLTOOL_FOR_BUILD@
+ GCJ_FOR_BUILD = @GCJ_FOR_BUILD@
+ GFORTRAN_FOR_BUILD = @GFORTRAN_FOR_BUILD@
+ GOC_FOR_BUILD = @GOC_FOR_BUILD@
++GDC_FOR_BUILD = @GDC_FOR_BUILD@
+ LDFLAGS_FOR_BUILD = @LDFLAGS_FOR_BUILD@
+ LD_FOR_BUILD = @LD_FOR_BUILD@
+ NM_FOR_BUILD = @NM_FOR_BUILD@
+@@ -529,6 +533,7 @@ RAW_CXX_FOR_TARGET=$(STAGE_CC_WRAPPER) @
+ GCJ_FOR_TARGET=$(STAGE_CC_WRAPPER) @GCJ_FOR_TARGET@
+ GFORTRAN_FOR_TARGET=$(STAGE_CC_WRAPPER) @GFORTRAN_FOR_TARGET@
+ GOC_FOR_TARGET=$(STAGE_CC_WRAPPER) @GOC_FOR_TARGET@
++GDC_FOR_TARGET=$(STAGE_CC_WRAPPER) @GDC_FOR_TARGET@
+ DLLTOOL_FOR_TARGET=@DLLTOOL_FOR_TARGET@
+ LD_FOR_TARGET=@LD_FOR_TARGET@
+ 
+@@ -751,6 +756,7 @@ BASE_FLAGS_TO_PASS = \
+ 	"GFORTRAN_FOR_TARGET=$(GFORTRAN_FOR_TARGET)" \
+ 	"GOC_FOR_TARGET=$(GOC_FOR_TARGET)" \
+ 	"GOCFLAGS_FOR_TARGET=$(GOCFLAGS_FOR_TARGET)" \
++	"GDC_FOR_TARGET=$(GDC_FOR_TARGET)" \
+ 	"LD_FOR_TARGET=$(LD_FOR_TARGET)" \
+ 	"LIPO_FOR_TARGET=$(LIPO_FOR_TARGET)" \
+ 	"LDFLAGS_FOR_TARGET=$(LDFLAGS_FOR_TARGET)" \
+@@ -804,6 +810,7 @@ EXTRA_HOST_FLAGS = \
+ 	'GCJ=$(GCJ)' \
+ 	'GFORTRAN=$(GFORTRAN)' \
+ 	'GOC=$(GOC)' \
++	'GDC=$(GDC)' \
+ 	'LD=$(LD)' \
+ 	'LIPO=$(LIPO)' \
+ 	'NM=$(NM)' \
+@@ -852,6 +859,7 @@ EXTRA_TARGET_FLAGS = \
+ 	'GFORTRAN=$$(GFORTRAN_FOR_TARGET) $$(XGCC_FLAGS_FOR_TARGET) $$(TFLAGS)' \
+ 	'GOC=$$(GOC_FOR_TARGET) $$(XGCC_FLAGS_FOR_TARGET) $$(TFLAGS)' \
+ 	'GOCFLAGS=$$(GOCFLAGS_FOR_TARGET)' \
++	'GDC=$$(GDC_FOR_TARGET) $$(XGCC_FLAGS_FOR_TARGET) $$(TFLAGS)' \
+ 	'LD=$(COMPILER_LD_FOR_TARGET)' \
+ 	'LDFLAGS=$$(LDFLAGS_FOR_TARGET)' \
+ 	'LIBCFLAGS=$$(LIBCFLAGS_FOR_TARGET)' \
+@@ -954,6 +962,7 @@ configure-target:  \
+     maybe-configure-target-libgfortran \
+     maybe-configure-target-libobjc \
+     maybe-configure-target-libgo \
++    maybe-configure-target-libphobos \
+     maybe-configure-target-libtermcap \
+     maybe-configure-target-winsup \
+     maybe-configure-target-libgloss \
+@@ -1123,6 +1132,7 @@ all-target: maybe-all-target-libquadmath
+ all-target: maybe-all-target-libgfortran
+ all-target: maybe-all-target-libobjc
+ all-target: maybe-all-target-libgo
++all-target: maybe-all-target-libphobos
+ all-target: maybe-all-target-libtermcap
+ all-target: maybe-all-target-winsup
+ all-target: maybe-all-target-libgloss
+@@ -1221,6 +1231,7 @@ info-target: maybe-info-target-libquadma
+ info-target: maybe-info-target-libgfortran
+ info-target: maybe-info-target-libobjc
+ info-target: maybe-info-target-libgo
++info-target: maybe-info-target-libphobos
+ info-target: maybe-info-target-libtermcap
+ info-target: maybe-info-target-winsup
+ info-target: maybe-info-target-libgloss
+@@ -1312,6 +1323,7 @@ dvi-target: maybe-dvi-target-libquadmath
+ dvi-target: maybe-dvi-target-libgfortran
+ dvi-target: maybe-dvi-target-libobjc
+ dvi-target: maybe-dvi-target-libgo
++dvi-target: maybe-dvi-target-libphobos
+ dvi-target: maybe-dvi-target-libtermcap
+ dvi-target: maybe-dvi-target-winsup
+ dvi-target: maybe-dvi-target-libgloss
+@@ -1403,6 +1415,7 @@ pdf-target: maybe-pdf-target-libquadmath
+ pdf-target: maybe-pdf-target-libgfortran
+ pdf-target: maybe-pdf-target-libobjc
+ pdf-target: maybe-pdf-target-libgo
++pdf-target: maybe-pdf-target-libphobos
+ pdf-target: maybe-pdf-target-libtermcap
+ pdf-target: maybe-pdf-target-winsup
+ pdf-target: maybe-pdf-target-libgloss
+@@ -1494,6 +1507,7 @@ html-target: maybe-html-target-libquadma
+ html-target: maybe-html-target-libgfortran
+ html-target: maybe-html-target-libobjc
+ html-target: maybe-html-target-libgo
++html-target: maybe-html-target-libphobos
+ html-target: maybe-html-target-libtermcap
+ html-target: maybe-html-target-winsup
+ html-target: maybe-html-target-libgloss
+@@ -1585,6 +1599,7 @@ TAGS-target: maybe-TAGS-target-libquadma
+ TAGS-target: maybe-TAGS-target-libgfortran
+ TAGS-target: maybe-TAGS-target-libobjc
+ TAGS-target: maybe-TAGS-target-libgo
++TAGS-target: maybe-TAGS-target-libphobos
+ TAGS-target: maybe-TAGS-target-libtermcap
+ TAGS-target: maybe-TAGS-target-winsup
+ TAGS-target: maybe-TAGS-target-libgloss
+@@ -1676,6 +1691,7 @@ install-info-target: maybe-install-info-
+ install-info-target: maybe-install-info-target-libgfortran
+ install-info-target: maybe-install-info-target-libobjc
+ install-info-target: maybe-install-info-target-libgo
++install-info-target: maybe-install-info-target-libphobos
+ install-info-target: maybe-install-info-target-libtermcap
+ install-info-target: maybe-install-info-target-winsup
+ install-info-target: maybe-install-info-target-libgloss
+@@ -1767,6 +1783,7 @@ install-pdf-target: maybe-install-pdf-ta
+ install-pdf-target: maybe-install-pdf-target-libgfortran
+ install-pdf-target: maybe-install-pdf-target-libobjc
+ install-pdf-target: maybe-install-pdf-target-libgo
++install-pdf-target: maybe-install-pdf-target-libphobos
+ install-pdf-target: maybe-install-pdf-target-libtermcap
+ install-pdf-target: maybe-install-pdf-target-winsup
+ install-pdf-target: maybe-install-pdf-target-libgloss
+@@ -1858,6 +1875,7 @@ install-html-target: maybe-install-html-
+ install-html-target: maybe-install-html-target-libgfortran
+ install-html-target: maybe-install-html-target-libobjc
+ install-html-target: maybe-install-html-target-libgo
++install-html-target: maybe-install-html-target-libphobos
+ install-html-target: maybe-install-html-target-libtermcap
+ install-html-target: maybe-install-html-target-winsup
+ install-html-target: maybe-install-html-target-libgloss
+@@ -1949,6 +1967,7 @@ installcheck-target: maybe-installcheck-
+ installcheck-target: maybe-installcheck-target-libgfortran
+ installcheck-target: maybe-installcheck-target-libobjc
+ installcheck-target: maybe-installcheck-target-libgo
++installcheck-target: maybe-installcheck-target-libphobos
+ installcheck-target: maybe-installcheck-target-libtermcap
+ installcheck-target: maybe-installcheck-target-winsup
+ installcheck-target: maybe-installcheck-target-libgloss
+@@ -2040,6 +2059,7 @@ mostlyclean-target: maybe-mostlyclean-ta
+ mostlyclean-target: maybe-mostlyclean-target-libgfortran
+ mostlyclean-target: maybe-mostlyclean-target-libobjc
+ mostlyclean-target: maybe-mostlyclean-target-libgo
++mostlyclean-target: maybe-mostlyclean-target-libphobos
+ mostlyclean-target: maybe-mostlyclean-target-libtermcap
+ mostlyclean-target: maybe-mostlyclean-target-winsup
+ mostlyclean-target: maybe-mostlyclean-target-libgloss
+@@ -2131,6 +2151,7 @@ clean-target: maybe-clean-target-libquad
+ clean-target: maybe-clean-target-libgfortran
+ clean-target: maybe-clean-target-libobjc
+ clean-target: maybe-clean-target-libgo
++clean-target: maybe-clean-target-libphobos
+ clean-target: maybe-clean-target-libtermcap
+ clean-target: maybe-clean-target-winsup
+ clean-target: maybe-clean-target-libgloss
+@@ -2222,6 +2243,7 @@ distclean-target: maybe-distclean-target
+ distclean-target: maybe-distclean-target-libgfortran
+ distclean-target: maybe-distclean-target-libobjc
+ distclean-target: maybe-distclean-target-libgo
++distclean-target: maybe-distclean-target-libphobos
+ distclean-target: maybe-distclean-target-libtermcap
+ distclean-target: maybe-distclean-target-winsup
+ distclean-target: maybe-distclean-target-libgloss
+@@ -2313,6 +2335,7 @@ maintainer-clean-target: maybe-maintaine
+ maintainer-clean-target: maybe-maintainer-clean-target-libgfortran
+ maintainer-clean-target: maybe-maintainer-clean-target-libobjc
+ maintainer-clean-target: maybe-maintainer-clean-target-libgo
++maintainer-clean-target: maybe-maintainer-clean-target-libphobos
+ maintainer-clean-target: maybe-maintainer-clean-target-libtermcap
+ maintainer-clean-target: maybe-maintainer-clean-target-winsup
+ maintainer-clean-target: maybe-maintainer-clean-target-libgloss
+@@ -2459,6 +2482,7 @@ check-target:  \
+     maybe-check-target-libgfortran \
+     maybe-check-target-libobjc \
+     maybe-check-target-libgo \
++    maybe-check-target-libphobos \
+     maybe-check-target-libtermcap \
+     maybe-check-target-winsup \
+     maybe-check-target-libgloss \
+@@ -2637,6 +2661,7 @@ install-target:  \
+     maybe-install-target-libgfortran \
+     maybe-install-target-libobjc \
+     maybe-install-target-libgo \
++    maybe-install-target-libphobos \
+     maybe-install-target-libtermcap \
+     maybe-install-target-winsup \
+     maybe-install-target-libgloss \
+@@ -2748,6 +2773,7 @@ install-strip-target:  \
+     maybe-install-strip-target-libgfortran \
+     maybe-install-strip-target-libobjc \
+     maybe-install-strip-target-libgo \
++    maybe-install-strip-target-libphobos \
+     maybe-install-strip-target-libtermcap \
+     maybe-install-strip-target-winsup \
+     maybe-install-strip-target-libgloss \
+@@ -41295,6 +41321,464 @@ maintainer-clean-target-libgo:
+ 
+ 
+ 
++.PHONY: configure-target-libphobos maybe-configure-target-libphobos
++maybe-configure-target-libphobos:
++ at if gcc-bootstrap
++configure-target-libphobos: stage_current
++ at endif gcc-bootstrap
++ at if target-libphobos
++maybe-configure-target-libphobos: configure-target-libphobos
++configure-target-libphobos: 
++	@: $(MAKE); $(unstage)
++	@r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	echo "Checking multilib configuration for libphobos..."; \
++	$(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libphobos ; \
++	$(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libphobos/multilib.tmp 2> /dev/null ; \
++	if test -r $(TARGET_SUBDIR)/libphobos/multilib.out; then \
++	  if cmp -s $(TARGET_SUBDIR)/libphobos/multilib.tmp $(TARGET_SUBDIR)/libphobos/multilib.out; then \
++	    rm -f $(TARGET_SUBDIR)/libphobos/multilib.tmp; \
++	  else \
++	    rm -f $(TARGET_SUBDIR)/libphobos/Makefile; \
++	    mv $(TARGET_SUBDIR)/libphobos/multilib.tmp $(TARGET_SUBDIR)/libphobos/multilib.out; \
++	  fi; \
++	else \
++	  mv $(TARGET_SUBDIR)/libphobos/multilib.tmp $(TARGET_SUBDIR)/libphobos/multilib.out; \
++	fi; \
++	test ! -f $(TARGET_SUBDIR)/libphobos/Makefile || exit 0; \
++	$(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libphobos ; \
++	$(NORMAL_TARGET_EXPORTS)  \
++	echo Configuring in $(TARGET_SUBDIR)/libphobos; \
++	cd "$(TARGET_SUBDIR)/libphobos" || exit 1; \
++	case $(srcdir) in \
++	  /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \
++	  *) topdir=`echo $(TARGET_SUBDIR)/libphobos/ | \
++		sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \
++	esac; \
++	module_srcdir=libphobos; \
++	rm -f no-such-file || : ; \
++	CONFIG_SITE=no-such-file $(SHELL) \
++	  $$s/$$module_srcdir/configure \
++	  --srcdir=$${topdir}/$$module_srcdir \
++	  $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \
++	  --target=${target_alias}  \
++	  || exit 1
++ at endif target-libphobos
++
++
++
++
++
++.PHONY: all-target-libphobos maybe-all-target-libphobos
++maybe-all-target-libphobos:
++ at if gcc-bootstrap
++all-target-libphobos: stage_current
++ at endif gcc-bootstrap
++ at if target-libphobos
++TARGET-target-libphobos=all
++maybe-all-target-libphobos: all-target-libphobos
++all-target-libphobos: configure-target-libphobos
++	@: $(MAKE); $(unstage)
++	@r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(NORMAL_TARGET_EXPORTS)  \
++	(cd $(TARGET_SUBDIR)/libphobos && \
++	  $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS)   \
++		$(TARGET-target-libphobos))
++ at endif target-libphobos
++
++
++
++
++
++.PHONY: check-target-libphobos maybe-check-target-libphobos
++maybe-check-target-libphobos:
++ at if target-libphobos
++maybe-check-target-libphobos: check-target-libphobos
++
++check-target-libphobos:
++	@: $(MAKE); $(unstage)
++	@r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(NORMAL_TARGET_EXPORTS) \
++	(cd $(TARGET_SUBDIR)/libphobos && \
++	  $(MAKE) $(TARGET_FLAGS_TO_PASS)   check)
++
++ at endif target-libphobos
++
++.PHONY: install-target-libphobos maybe-install-target-libphobos
++maybe-install-target-libphobos:
++ at if target-libphobos
++maybe-install-target-libphobos: install-target-libphobos
++
++install-target-libphobos: installdirs
++	@: $(MAKE); $(unstage)
++	@r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(NORMAL_TARGET_EXPORTS) \
++	(cd $(TARGET_SUBDIR)/libphobos && \
++	  $(MAKE) $(TARGET_FLAGS_TO_PASS)  install)
++
++ at endif target-libphobos
++
++.PHONY: install-strip-target-libphobos maybe-install-strip-target-libphobos
++maybe-install-strip-target-libphobos:
++ at if target-libphobos
++maybe-install-strip-target-libphobos: install-strip-target-libphobos
++
++install-strip-target-libphobos: installdirs
++	@: $(MAKE); $(unstage)
++	@r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(NORMAL_TARGET_EXPORTS) \
++	(cd $(TARGET_SUBDIR)/libphobos && \
++	  $(MAKE) $(TARGET_FLAGS_TO_PASS)  install-strip)
++
++ at endif target-libphobos
++
++# Other targets (info, dvi, pdf, etc.)
++
++.PHONY: maybe-info-target-libphobos info-target-libphobos
++maybe-info-target-libphobos:
++ at if target-libphobos
++maybe-info-target-libphobos: info-target-libphobos
++
++info-target-libphobos: \
++    configure-target-libphobos 
++	@: $(MAKE); $(unstage)
++	@[ -f $(TARGET_SUBDIR)/libphobos/Makefile ] || exit 0 ; \
++	r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(NORMAL_TARGET_EXPORTS) \
++	echo "Doing info in $(TARGET_SUBDIR)/libphobos" ; \
++	for flag in $(EXTRA_TARGET_FLAGS); do \
++	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
++	done; \
++	(cd $(TARGET_SUBDIR)/libphobos && \
++	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
++	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
++	          "RANLIB=$${RANLIB}" \
++	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
++	           info) \
++	  || exit 1
++
++ at endif target-libphobos
++
++.PHONY: maybe-dvi-target-libphobos dvi-target-libphobos
++maybe-dvi-target-libphobos:
++ at if target-libphobos
++maybe-dvi-target-libphobos: dvi-target-libphobos
++
++dvi-target-libphobos: \
++    configure-target-libphobos 
++	@: $(MAKE); $(unstage)
++	@[ -f $(TARGET_SUBDIR)/libphobos/Makefile ] || exit 0 ; \
++	r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(NORMAL_TARGET_EXPORTS) \
++	echo "Doing dvi in $(TARGET_SUBDIR)/libphobos" ; \
++	for flag in $(EXTRA_TARGET_FLAGS); do \
++	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
++	done; \
++	(cd $(TARGET_SUBDIR)/libphobos && \
++	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
++	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
++	          "RANLIB=$${RANLIB}" \
++	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
++	           dvi) \
++	  || exit 1
++
++ at endif target-libphobos
++
++.PHONY: maybe-pdf-target-libphobos pdf-target-libphobos
++maybe-pdf-target-libphobos:
++ at if target-libphobos
++maybe-pdf-target-libphobos: pdf-target-libphobos
++
++pdf-target-libphobos: \
++    configure-target-libphobos 
++	@: $(MAKE); $(unstage)
++	@[ -f $(TARGET_SUBDIR)/libphobos/Makefile ] || exit 0 ; \
++	r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(NORMAL_TARGET_EXPORTS) \
++	echo "Doing pdf in $(TARGET_SUBDIR)/libphobos" ; \
++	for flag in $(EXTRA_TARGET_FLAGS); do \
++	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
++	done; \
++	(cd $(TARGET_SUBDIR)/libphobos && \
++	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
++	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
++	          "RANLIB=$${RANLIB}" \
++	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
++	           pdf) \
++	  || exit 1
++
++ at endif target-libphobos
++
++.PHONY: maybe-html-target-libphobos html-target-libphobos
++maybe-html-target-libphobos:
++ at if target-libphobos
++maybe-html-target-libphobos: html-target-libphobos
++
++html-target-libphobos: \
++    configure-target-libphobos 
++	@: $(MAKE); $(unstage)
++	@[ -f $(TARGET_SUBDIR)/libphobos/Makefile ] || exit 0 ; \
++	r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(NORMAL_TARGET_EXPORTS) \
++	echo "Doing html in $(TARGET_SUBDIR)/libphobos" ; \
++	for flag in $(EXTRA_TARGET_FLAGS); do \
++	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
++	done; \
++	(cd $(TARGET_SUBDIR)/libphobos && \
++	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
++	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
++	          "RANLIB=$${RANLIB}" \
++	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
++	           html) \
++	  || exit 1
++
++ at endif target-libphobos
++
++.PHONY: maybe-TAGS-target-libphobos TAGS-target-libphobos
++maybe-TAGS-target-libphobos:
++ at if target-libphobos
++maybe-TAGS-target-libphobos: TAGS-target-libphobos
++
++TAGS-target-libphobos: \
++    configure-target-libphobos 
++	@: $(MAKE); $(unstage)
++	@[ -f $(TARGET_SUBDIR)/libphobos/Makefile ] || exit 0 ; \
++	r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(NORMAL_TARGET_EXPORTS) \
++	echo "Doing TAGS in $(TARGET_SUBDIR)/libphobos" ; \
++	for flag in $(EXTRA_TARGET_FLAGS); do \
++	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
++	done; \
++	(cd $(TARGET_SUBDIR)/libphobos && \
++	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
++	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
++	          "RANLIB=$${RANLIB}" \
++	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
++	           TAGS) \
++	  || exit 1
++
++ at endif target-libphobos
++
++.PHONY: maybe-install-info-target-libphobos install-info-target-libphobos
++maybe-install-info-target-libphobos:
++ at if target-libphobos
++maybe-install-info-target-libphobos: install-info-target-libphobos
++
++install-info-target-libphobos: \
++    configure-target-libphobos \
++    info-target-libphobos 
++	@: $(MAKE); $(unstage)
++	@[ -f $(TARGET_SUBDIR)/libphobos/Makefile ] || exit 0 ; \
++	r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(NORMAL_TARGET_EXPORTS) \
++	echo "Doing install-info in $(TARGET_SUBDIR)/libphobos" ; \
++	for flag in $(EXTRA_TARGET_FLAGS); do \
++	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
++	done; \
++	(cd $(TARGET_SUBDIR)/libphobos && \
++	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
++	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
++	          "RANLIB=$${RANLIB}" \
++	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
++	           install-info) \
++	  || exit 1
++
++ at endif target-libphobos
++
++.PHONY: maybe-install-pdf-target-libphobos install-pdf-target-libphobos
++maybe-install-pdf-target-libphobos:
++ at if target-libphobos
++maybe-install-pdf-target-libphobos: install-pdf-target-libphobos
++
++install-pdf-target-libphobos: \
++    configure-target-libphobos \
++    pdf-target-libphobos 
++	@: $(MAKE); $(unstage)
++	@[ -f $(TARGET_SUBDIR)/libphobos/Makefile ] || exit 0 ; \
++	r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(NORMAL_TARGET_EXPORTS) \
++	echo "Doing install-pdf in $(TARGET_SUBDIR)/libphobos" ; \
++	for flag in $(EXTRA_TARGET_FLAGS); do \
++	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
++	done; \
++	(cd $(TARGET_SUBDIR)/libphobos && \
++	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
++	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
++	          "RANLIB=$${RANLIB}" \
++	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
++	           install-pdf) \
++	  || exit 1
++
++ at endif target-libphobos
++
++.PHONY: maybe-install-html-target-libphobos install-html-target-libphobos
++maybe-install-html-target-libphobos:
++ at if target-libphobos
++maybe-install-html-target-libphobos: install-html-target-libphobos
++
++install-html-target-libphobos: \
++    configure-target-libphobos \
++    html-target-libphobos 
++	@: $(MAKE); $(unstage)
++	@[ -f $(TARGET_SUBDIR)/libphobos/Makefile ] || exit 0 ; \
++	r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(NORMAL_TARGET_EXPORTS) \
++	echo "Doing install-html in $(TARGET_SUBDIR)/libphobos" ; \
++	for flag in $(EXTRA_TARGET_FLAGS); do \
++	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
++	done; \
++	(cd $(TARGET_SUBDIR)/libphobos && \
++	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
++	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
++	          "RANLIB=$${RANLIB}" \
++	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
++	           install-html) \
++	  || exit 1
++
++ at endif target-libphobos
++
++.PHONY: maybe-installcheck-target-libphobos installcheck-target-libphobos
++maybe-installcheck-target-libphobos:
++ at if target-libphobos
++maybe-installcheck-target-libphobos: installcheck-target-libphobos
++
++installcheck-target-libphobos: \
++    configure-target-libphobos 
++	@: $(MAKE); $(unstage)
++	@[ -f $(TARGET_SUBDIR)/libphobos/Makefile ] || exit 0 ; \
++	r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(NORMAL_TARGET_EXPORTS) \
++	echo "Doing installcheck in $(TARGET_SUBDIR)/libphobos" ; \
++	for flag in $(EXTRA_TARGET_FLAGS); do \
++	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
++	done; \
++	(cd $(TARGET_SUBDIR)/libphobos && \
++	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
++	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
++	          "RANLIB=$${RANLIB}" \
++	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
++	           installcheck) \
++	  || exit 1
++
++ at endif target-libphobos
++
++.PHONY: maybe-mostlyclean-target-libphobos mostlyclean-target-libphobos
++maybe-mostlyclean-target-libphobos:
++ at if target-libphobos
++maybe-mostlyclean-target-libphobos: mostlyclean-target-libphobos
++
++mostlyclean-target-libphobos: 
++	@: $(MAKE); $(unstage)
++	@[ -f $(TARGET_SUBDIR)/libphobos/Makefile ] || exit 0 ; \
++	r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(NORMAL_TARGET_EXPORTS) \
++	echo "Doing mostlyclean in $(TARGET_SUBDIR)/libphobos" ; \
++	for flag in $(EXTRA_TARGET_FLAGS); do \
++	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
++	done; \
++	(cd $(TARGET_SUBDIR)/libphobos && \
++	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
++	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
++	          "RANLIB=$${RANLIB}" \
++	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
++	           mostlyclean) \
++	  || exit 1
++
++ at endif target-libphobos
++
++.PHONY: maybe-clean-target-libphobos clean-target-libphobos
++maybe-clean-target-libphobos:
++ at if target-libphobos
++maybe-clean-target-libphobos: clean-target-libphobos
++
++clean-target-libphobos: 
++	@: $(MAKE); $(unstage)
++	@[ -f $(TARGET_SUBDIR)/libphobos/Makefile ] || exit 0 ; \
++	r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(NORMAL_TARGET_EXPORTS) \
++	echo "Doing clean in $(TARGET_SUBDIR)/libphobos" ; \
++	for flag in $(EXTRA_TARGET_FLAGS); do \
++	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
++	done; \
++	(cd $(TARGET_SUBDIR)/libphobos && \
++	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
++	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
++	          "RANLIB=$${RANLIB}" \
++	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
++	           clean) \
++	  || exit 1
++
++ at endif target-libphobos
++
++.PHONY: maybe-distclean-target-libphobos distclean-target-libphobos
++maybe-distclean-target-libphobos:
++ at if target-libphobos
++maybe-distclean-target-libphobos: distclean-target-libphobos
++
++distclean-target-libphobos: 
++	@: $(MAKE); $(unstage)
++	@[ -f $(TARGET_SUBDIR)/libphobos/Makefile ] || exit 0 ; \
++	r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(NORMAL_TARGET_EXPORTS) \
++	echo "Doing distclean in $(TARGET_SUBDIR)/libphobos" ; \
++	for flag in $(EXTRA_TARGET_FLAGS); do \
++	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
++	done; \
++	(cd $(TARGET_SUBDIR)/libphobos && \
++	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
++	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
++	          "RANLIB=$${RANLIB}" \
++	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
++	           distclean) \
++	  || exit 1
++
++ at endif target-libphobos
++
++.PHONY: maybe-maintainer-clean-target-libphobos maintainer-clean-target-libphobos
++maybe-maintainer-clean-target-libphobos:
++ at if target-libphobos
++maybe-maintainer-clean-target-libphobos: maintainer-clean-target-libphobos
++
++maintainer-clean-target-libphobos: 
++	@: $(MAKE); $(unstage)
++	@[ -f $(TARGET_SUBDIR)/libphobos/Makefile ] || exit 0 ; \
++	r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(NORMAL_TARGET_EXPORTS) \
++	echo "Doing maintainer-clean in $(TARGET_SUBDIR)/libphobos" ; \
++	for flag in $(EXTRA_TARGET_FLAGS); do \
++	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
++	done; \
++	(cd $(TARGET_SUBDIR)/libphobos && \
++	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
++	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
++	          "RANLIB=$${RANLIB}" \
++	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
++	           maintainer-clean) \
++	  || exit 1
++
++ at endif target-libphobos
++
++
++
++
++
+ .PHONY: configure-target-libtermcap maybe-configure-target-libtermcap
+ maybe-configure-target-libtermcap:
+ @if gcc-bootstrap
+@@ -48714,6 +49198,14 @@ check-gcc-go:
+ 	(cd gcc && $(MAKE) $(GCC_FLAGS_TO_PASS) check-go);
+ check-go: check-gcc-go check-target-libgo
+ 
++.PHONY: check-gcc-d check-d
++check-gcc-d:
++	r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	$(HOST_EXPORTS) \
++	(cd gcc && $(MAKE) $(GCC_FLAGS_TO_PASS) check-d);
++check-d: check-gcc-d check-target-libphobos
++
+ 
+ # The gcc part of install-no-fixedincludes, which relies on an intimate
+ # knowledge of how a number of gcc internal targets (inter)operate.  Delegate.
+@@ -50850,6 +51342,7 @@ configure-target-libquadmath: stage_last
+ configure-target-libgfortran: stage_last
+ configure-target-libobjc: stage_last
+ configure-target-libgo: stage_last
++configure-target-libphobos: stage_last
+ configure-target-libtermcap: stage_last
+ configure-target-winsup: stage_last
+ configure-target-libgloss: stage_last
+@@ -50888,6 +51381,7 @@ configure-target-libquadmath: maybe-all-
+ configure-target-libgfortran: maybe-all-gcc
+ configure-target-libobjc: maybe-all-gcc
+ configure-target-libgo: maybe-all-gcc
++configure-target-libphobos: maybe-all-gcc
+ configure-target-libtermcap: maybe-all-gcc
+ configure-target-winsup: maybe-all-gcc
+ configure-target-libgloss: maybe-all-gcc
+@@ -51693,6 +52187,8 @@ configure-target-libgo: maybe-all-target
+ all-target-libgo: maybe-all-target-libbacktrace
+ all-target-libgo: maybe-all-target-libffi
+ all-target-libgo: maybe-all-target-libatomic
++configure-target-libphobos: maybe-configure-target-zlib
++all-target-libphobos: maybe-all-target-zlib
+ configure-target-libjava: maybe-configure-target-zlib
+ configure-target-libjava: maybe-configure-target-boehm-gc
+ configure-target-libjava: maybe-configure-target-libffi
+@@ -51810,6 +52306,7 @@ configure-target-libquadmath: maybe-all-
+ configure-target-libgfortran: maybe-all-target-libgcc
+ configure-target-libobjc: maybe-all-target-libgcc
+ configure-target-libgo: maybe-all-target-libgcc
++configure-target-libphobos: maybe-all-target-libgcc
+ configure-target-libtermcap: maybe-all-target-libgcc
+ configure-target-winsup: maybe-all-target-libgcc
+ configure-target-libgloss: maybe-all-target-libgcc
+@@ -51857,6 +52354,8 @@ configure-target-libobjc: maybe-all-targ
+ 
+ configure-target-libgo: maybe-all-target-newlib maybe-all-target-libgloss
+ 
++configure-target-libphobos: maybe-all-target-newlib maybe-all-target-libgloss
++
+ configure-target-libtermcap: maybe-all-target-newlib maybe-all-target-libgloss
+ 
+ configure-target-winsup: maybe-all-target-newlib maybe-all-target-libgloss
+Index: b/src/Makefile.tpl
+===================================================================
+--- a/src/Makefile.tpl
++++ b/src/Makefile.tpl
+@@ -160,6 +160,7 @@ BUILD_EXPORTS = \
+ 	GFORTRAN="$(GFORTRAN_FOR_BUILD)"; export GFORTRAN; \
+ 	GOC="$(GOC_FOR_BUILD)"; export GOC; \
+ 	GOCFLAGS="$(GOCFLAGS_FOR_BUILD)"; export GOCFLAGS; \
++	GDC="$(GDC_FOR_BUILD)"; export GDC; \
+ 	DLLTOOL="$(DLLTOOL_FOR_BUILD)"; export DLLTOOL; \
+ 	LD="$(LD_FOR_BUILD)"; export LD; \
+ 	LDFLAGS="$(LDFLAGS_FOR_BUILD)"; export LDFLAGS; \
+@@ -197,6 +198,7 @@ HOST_EXPORTS = \
+ 	GCJ="$(GCJ)"; export GCJ; \
+ 	GFORTRAN="$(GFORTRAN)"; export GFORTRAN; \
+ 	GOC="$(GOC)"; export GOC; \
++	GDC="$(GDC)"; export GDC; \
+ 	AR="$(AR)"; export AR; \
+ 	AS="$(AS)"; export AS; \
+ 	CC_FOR_BUILD="$(CC_FOR_BUILD)"; export CC_FOR_BUILD; \
+@@ -283,6 +285,7 @@ BASE_TARGET_EXPORTS = \
+ 	GCJ="$(GCJ_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export GCJ; \
+ 	GFORTRAN="$(GFORTRAN_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export GFORTRAN; \
+ 	GOC="$(GOC_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export GOC; \
++	GDC="$(GDC_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export GDC; \
+ 	DLLTOOL="$(DLLTOOL_FOR_TARGET)"; export DLLTOOL; \
+ 	LD="$(COMPILER_LD_FOR_TARGET)"; export LD; \
+ 	LDFLAGS="$(LDFLAGS_FOR_TARGET)"; export LDFLAGS; \
+@@ -350,6 +353,7 @@ DLLTOOL_FOR_BUILD = @DLLTOOL_FOR_BUILD@
+ GCJ_FOR_BUILD = @GCJ_FOR_BUILD@
+ GFORTRAN_FOR_BUILD = @GFORTRAN_FOR_BUILD@
+ GOC_FOR_BUILD = @GOC_FOR_BUILD@
++GDC_FOR_BUILD = @GDC_FOR_BUILD@
+ LDFLAGS_FOR_BUILD = @LDFLAGS_FOR_BUILD@
+ LD_FOR_BUILD = @LD_FOR_BUILD@
+ NM_FOR_BUILD = @NM_FOR_BUILD@
+@@ -482,6 +486,7 @@ RAW_CXX_FOR_TARGET=$(STAGE_CC_WRAPPER) @
+ GCJ_FOR_TARGET=$(STAGE_CC_WRAPPER) @GCJ_FOR_TARGET@
+ GFORTRAN_FOR_TARGET=$(STAGE_CC_WRAPPER) @GFORTRAN_FOR_TARGET@
+ GOC_FOR_TARGET=$(STAGE_CC_WRAPPER) @GOC_FOR_TARGET@
++GDC_FOR_TARGET=$(STAGE_CC_WRAPPER) @GDC_FOR_TARGET@
+ DLLTOOL_FOR_TARGET=@DLLTOOL_FOR_TARGET@
+ LD_FOR_TARGET=@LD_FOR_TARGET@
+ 
+@@ -605,6 +610,7 @@ EXTRA_HOST_FLAGS = \
+ 	'GCJ=$(GCJ)' \
+ 	'GFORTRAN=$(GFORTRAN)' \
+ 	'GOC=$(GOC)' \
++	'GDC=$(GDC)' \
+ 	'LD=$(LD)' \
+ 	'LIPO=$(LIPO)' \
+ 	'NM=$(NM)' \
+@@ -653,6 +659,7 @@ EXTRA_TARGET_FLAGS = \
+ 	'GFORTRAN=$$(GFORTRAN_FOR_TARGET) $$(XGCC_FLAGS_FOR_TARGET) $$(TFLAGS)' \
+ 	'GOC=$$(GOC_FOR_TARGET) $$(XGCC_FLAGS_FOR_TARGET) $$(TFLAGS)' \
+ 	'GOCFLAGS=$$(GOCFLAGS_FOR_TARGET)' \
++	'GDC=$$(GDC_FOR_TARGET) $$(XGCC_FLAGS_FOR_TARGET) $$(TFLAGS)' \
+ 	'LD=$(COMPILER_LD_FOR_TARGET)' \
+ 	'LDFLAGS=$$(LDFLAGS_FOR_TARGET)' \
+ 	'LIBCFLAGS=$$(LIBCFLAGS_FOR_TARGET)' \
diff --git a/debian/patches/gdc-multiarch.diff b/debian/patches/gdc-multiarch.diff
new file mode 100644
index 0000000..1925e1a
--- /dev/null
+++ b/debian/patches/gdc-multiarch.diff
@@ -0,0 +1,17 @@
+# DP: Set the D target include directory to a multiarch location.
+
+--- a/src/gcc/d/Make-lang.in
++++ b/src/gcc/d/Make-lang.in
+@@ -61,7 +61,11 @@
+ 	$(D_DMD_H)
+ 
+ 
+-gcc_d_target_include_dir=$(gcc_d_include_dir)/$(target_noncanonical)
++ifneq (,$(MULTIARCH_DIRNAME))
++  gcc_d_target_include_dir = /usr/include/$(MULTIARCH_DIRNAME)/d/$(version)
++else
++  gcc_d_target_include_dir=$(gcc_d_include_dir)/$(target_noncanonical)
++endif
+ 
+ # Name of phobos library
+ D_LIBPHOBOS = -DLIBPHOBOS=\"gphobos2\"
diff --git a/debian/patches/gdc-profiledbuild.diff b/debian/patches/gdc-profiledbuild.diff
new file mode 100644
index 0000000..2c1624b
--- /dev/null
+++ b/debian/patches/gdc-profiledbuild.diff
@@ -0,0 +1,19 @@
+# DP: Don't build gdc build tools idgen and impcnvgen with profiling flags
+
+--- a/src/gcc/d/Make-lang.in
++++ b/src/gcc/d/Make-lang.in
+@@ -97,6 +97,14 @@
+ d/impcvgen: d/impcnvgen.dmdgen.o
+ 	+$(LINKER_FOR_BUILD) $(BUILD_LINKER_FLAGS) $(BUILD_LDFLAGS) -o $@ $^
+ 
++d/idgen.dmdgen.o: d/dfrontend/idgen.c
++	$(filter-out -fprofile-%,$(DMD_COMPILE)) $(D_INCLUDES) $<
++	$(POSTCOMPILE)
++
++d/impcnvgen.dmdgen.o: $(srcdir)/d/dfrontend/impcnvgen.c
++	$(filter-out -fprofile-%,$(DMDGEN_COMPILE)) $(D_INCLUDES) $<
++	$(POSTCOMPILE)
++
+ # Generated sources.
+ d/id.c: d/idgen
+ 	cd d && ./idgen
diff --git a/debian/patches/gdc-texinfo.diff b/debian/patches/gdc-texinfo.diff
new file mode 100644
index 0000000..a925e8d
--- /dev/null
+++ b/debian/patches/gdc-texinfo.diff
@@ -0,0 +1,55 @@
+# DP: Add macros for the gdc texinfo documentation.
+
+Index: b/src/gcc/d/gdc.texi
+===================================================================
+--- a/src/gcc/d/gdc.texi
++++ b/src/gcc/d/gdc.texi
+@@ -43,6 +43,22 @@ man page gfdl(7).
+ @insertcopying
+ @end ifinfo
+ 
++ at macro versionsubtitle
++ at ifclear DEVELOPMENT
++ at subtitle For @sc{gcc} version @value{version-GCC}
++ at end ifclear
++ at ifset DEVELOPMENT
++ at subtitle For @sc{gcc} version @value{version-GCC} (pre-release)
++ at end ifset
++ at ifset VERSION_PACKAGE
++ at sp 1
++ at subtitle @value{VERSION_PACKAGE}
++ at end ifset
++ at c Even if there are no authors, the second titlepage line should be
++ at c forced to the bottom of the page.
++ at vskip 0pt plus 1filll
++ at end macro
++
+ @titlepage
+ @title The GNU D Compiler
+ @versionsubtitle
+@@ -138,6 +154,25 @@ remainder.
+ 
+ @c man end
+ 
++ at macro gcctabopt{body}
++ at code{\body\}
++ at end macro
++ at macro gccoptlist{body}
++ at smallexample
++\body\
++ at end smallexample
++ at end macro
++ at c Makeinfo handles the above macro OK, TeX needs manual line breaks;
++ at c they get lost at some point in handling the macro.  But if @macro is
++ at c used here rather than @alias, it produces double line breaks.
++ at iftex
++ at alias gol = *
++ at end iftex
++ at ifnottex
++ at macro gol
++ at end macro
++ at end ifnottex
++
+ @c man begin OPTIONS gdc
+ 
+ @table @gcctabopt
diff --git a/debian/patches/gdc-updates.diff b/debian/patches/gdc-updates.diff
new file mode 100644
index 0000000..27d5f32
--- /dev/null
+++ b/debian/patches/gdc-updates.diff
@@ -0,0 +1,2 @@
+# DP: gdc updates up to 2014xxyy.
+
diff --git a/debian/patches/gdc-versym-cpu.diff b/debian/patches/gdc-versym-cpu.diff
new file mode 100644
index 0000000..9d7baf3
--- /dev/null
+++ b/debian/patches/gdc-versym-cpu.diff
@@ -0,0 +1,382 @@
+# DP: Implements D CPU version conditions.
+
+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
+
+Index: b/src/gcc/config/aarch64/aarch64.h
+===================================================================
+--- a/src/gcc/config/aarch64/aarch64.h
++++ b/src/gcc/config/aarch64/aarch64.h
+@@ -95,6 +95,14 @@
+ 	builtin_define ("__ARM_FEATURE_CRYPTO");	\
+     } while (0)
+ 
++/* Target CPU builtins for D.  */
++#define TARGET_CPU_D_BUILTINS()				\
++  do							\
++    {							\
++      builtin_define ("AArch64");			\
++      builtin_define ("D_HardFloat");			\
++    } while (0)
++
+ 

+ 
+ /* Target machine storage layout.  */
+Index: b/src/gcc/config/alpha/alpha.h
+===================================================================
+--- 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)
+ 
++/* Target CPU builtins for D.  */
++#define TARGET_CPU_D_BUILTINS()				\
++  do							\
++    {							\
++	builtin_define ("Alpha");			\
++	if (TARGET_SOFT_FP)				\
++	  {						\
++	    builtin_define ("D_SoftFloat");		\
++	    builtin_define ("Alpha_SoftFloat");		\
++	  }						\
++	else						\
++	  {						\
++	    builtin_define ("D_HardFloat");		\
++	    builtin_define ("Alpha_HardFloat");		\
++	  }						\
++} while (0)
++
+ #ifndef SUBTARGET_LANGUAGE_CPP_BUILTINS
+ #define SUBTARGET_LANGUAGE_CPP_BUILTINS()		\
+   do							\
+Index: b/src/gcc/config/arm/arm.h
+===================================================================
+--- a/src/gcc/config/arm/arm.h
++++ b/src/gcc/config/arm/arm.h
+@@ -172,6 +172,31 @@ extern char arm_arch_name[];
+ 	  builtin_define ("__ARM_ASM_SYNTAX_UNIFIED__");\
+     } while (0)
+ 
++/* Target CPU builtins for D.  */
++#define TARGET_CPU_D_BUILTINS()				\
++  do							\
++    {							\
++	builtin_define ("ARM");				\
++							\
++	if (TARGET_THUMB || TARGET_THUMB2)		\
++	  builtin_define ("ARM_Thumb");			\
++							\
++	if (TARGET_HARD_FLOAT_ABI)			\
++	  builtin_define ("ARM_HardFloat");		\
++	else						\
++	  {						\
++	    if(TARGET_SOFT_FLOAT)			\
++	      builtin_define ("ARM_SoftFloat");		\
++	    else if(TARGET_HARD_FLOAT)			\
++	      builtin_define ("ARM_SoftFP");		\
++	  }						\
++							\
++	if(TARGET_SOFT_FLOAT)				\
++	  builtin_define ("D_SoftFloat");		\
++	else if(TARGET_HARD_FLOAT)			\
++	  builtin_define ("D_HardFloat");		\
++    } while (0)
++
+ #include "config/arm/arm-opts.h"
+ 
+ enum target_cpus
+Index: b/src/gcc/config/i386/i386.h
+===================================================================
+--- a/src/gcc/config/i386/i386.h
++++ b/src/gcc/config/i386/i386.h
+@@ -647,6 +647,24 @@ extern const char *host_detect_local_cpu
+ /* Target CPU builtins.  */
+ #define TARGET_CPU_CPP_BUILTINS() ix86_target_macros ()
+ 
++/* Target CPU builtins for D.  */
++#define TARGET_CPU_D_BUILTINS()			\
++  do {						\
++    if (TARGET_64BIT)				\
++    {						\
++      builtin_define("X86_64");			\
++      if (TARGET_X32)				\
++        builtin_define("D_X32");		\
++    }						\
++    else					\
++      builtin_define("X86");			\
++						\
++    if (TARGET_80387)				\
++      builtin_define("D_HardFloat");		\
++    else					\
++      builtin_define("D_SoftFloat");		\
++  } while (0)
++
+ /* Target Pragmas.  */
+ #define REGISTER_TARGET_PRAGMAS() ix86_register_pragmas ()
+ 
+Index: b/src/gcc/config/ia64/ia64.h
+===================================================================
+--- 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)
+ 
++/* Target CPU builtins for D.  */
++#define TARGET_CPU_D_BUILTINS()			\
++do {						\
++	builtin_define ("IA64");		\
++	builtin_define ("D_HardFloat");		\
++} while (0)
++
+ #ifndef SUBTARGET_EXTRA_SPECS
+ #define SUBTARGET_EXTRA_SPECS
+ #endif
+Index: b/src/gcc/config/mips/mips.h
+===================================================================
+--- a/src/gcc/config/mips/mips.h
++++ b/src/gcc/config/mips/mips.h
+@@ -593,6 +593,54 @@ struct mips_cpu_info {
+     }									\
+   while (0)
+ 
++/* Target CPU builtins for D.  */
++#define TARGET_CPU_D_BUILTINS()						\
++  do									\
++  {									\
++    if (TARGET_64BIT)							\
++      builtin_define("MIPS64");						\
++    else								\
++      builtin_define("MIPS32");						\
++									\
++    switch (mips_abi)							\
++    {									\
++      case ABI_32:							\
++	builtin_define("MIPS_O32");					\
++	break;								\
++									\
++      case ABI_O64:							\
++	builtin_define("MIPS_O64");					\
++	break;								\
++									\
++      case ABI_N32:							\
++	builtin_define("MIPS_N32");					\
++	break;								\
++									\
++      case ABI_64:							\
++	builtin_define("MIPS_N64");					\
++	break;								\
++									\
++      case ABI_EABI:							\
++	builtin_define("MIPS_EABI");					\
++	break;								\
++									\
++      default:								\
++	gcc_unreachable();						\
++    }									\
++									\
++    if (TARGET_HARD_FLOAT_ABI)						\
++    {									\
++      builtin_define("MIPS_HardFloat");					\
++      builtin_define("D_HardFloat");					\
++    }									\
++    else if (TARGET_SOFT_FLOAT_ABI)					\
++    {									\
++      builtin_define("MIPS_SoftFloat");					\
++      builtin_define("D_SoftFloat");					\
++    }									\
++  }									\
++  while (0)
++
+ /* Default target_flags if no switches are specified  */
+ 
+ #ifndef TARGET_DEFAULT
+Index: b/src/gcc/config/pa/pa.h
+===================================================================
+--- 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)
+ 
++/* Target CPU builtins for D.  */
++#define TARGET_CPU_D_BUILTINS()					\
++do {								\
++     if(TARGET_64BIT)						\
++       builtin_define("HPPA64");				\
++     else							\
++       builtin_define("HPPA");					\
++								\
++     if(TARGET_SOFT_FLOAT)					\
++       builtin_define ("D_SoftFloat");				\
++     else							\
++       builtin_define ("D_HardFloat");				\
++} while (0)
++
+ /* An old set of OS defines for various BSD-like systems.  */
+ #define TARGET_OS_CPP_BUILTINS()				\
+   do								\
+Index: b/src/gcc/config/rs6000/rs6000.h
+===================================================================
+--- a/src/gcc/config/rs6000/rs6000.h
++++ b/src/gcc/config/rs6000/rs6000.h
+@@ -703,6 +703,28 @@ extern unsigned char rs6000_recip_bits[]
+ #define TARGET_CPU_CPP_BUILTINS() \
+   rs6000_cpu_cpp_builtins (pfile)
+ 
++/* Target CPU builtins for D.  */
++#define TARGET_CPU_D_BUILTINS()			\
++  do						\
++    {						\
++      if (TARGET_64BIT)				\
++	builtin_define ("PPC64");		\
++      else					\
++	builtin_define ("PPC");			\
++						\
++      if (TARGET_HARD_FLOAT)			\
++	{					\
++	  builtin_define ("PPC_HardFloat");	\
++	  builtin_define ("D_HardFloat");	\
++	}					\
++      else if (TARGET_SOFT_FLOAT)		\
++	{					\
++	  builtin_define ("PPC_SoftFloat");	\
++	  builtin_define ("D_SoftFloat");	\
++	}					\
++    }						\
++  while (0)
++
+ /* 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()	\
+Index: b/src/gcc/config/s390/s390.h
+===================================================================
+--- a/src/gcc/config/s390/s390.h
++++ b/src/gcc/config/s390/s390.h
+@@ -113,6 +113,22 @@ enum processor_flags
+ /* Target CPU builtins.  */
+ #define TARGET_CPU_CPP_BUILTINS() s390_cpu_cpp_builtins (pfile)
+ 
++/* Target CPU builtins for D.  */
++#define TARGET_CPU_D_BUILTINS()				\
++  do							\
++    {							\
++      if (TARGET_64BIT)					\
++        builtin_define ("S390X");			\
++      else						\
++        builtin_define ("S390");			\
++							\
++      if(TARGET_SOFT_FLOAT)				\
++        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	\
+                             | MASK_OPT_HTM | MASK_OPT_VX)
+Index: b/src/gcc/config/sh/sh.h
+===================================================================
+--- 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)
+ 
++/* Target CPU builtins for D.  */
++#define TARGET_CPU_D_BUILTINS()			\
++  do						\
++    {						\
++      if (TARGET_SHMEDIA64)			\
++	builtin_define ("SH64");		\
++      else					\
++	builtin_define ("SH");			\
++						\
++      if (TARGET_FPU_ANY)			\
++	builtin_define ("D_HardFloat");		\
++      else					\
++	builtin_define ("D_SoftFloat");		\
++    }						\
++  while (0)
++
+ /* 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.  */
+Index: b/src/gcc/config/sparc/sparc.h
+===================================================================
+--- 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 ()
+ 
++/* Target CPU builtins for D.  */
++#define TARGET_CPU_D_BUILTINS()			\
++do						\
++    {						\
++      if (TARGET_64BIT)				\
++	builtin_define ("SPARC64");		\
++      else					\
++	builtin_define ("SPARC");		\
++						\
++      if(TARGET_V8PLUS)				\
++	builtin_define ("SPARC_V8Plus");	\
++						\
++      if(TARGET_FPU)				\
++	{					\
++	  builtin_define ("D_HardFloat");	\
++	  builtin_define ("SPARC_HardFloat");	\
++	}					\
++      else					\
++	{					\
++	  builtin_define ("D_SoftFloat");	\
++	  builtin_define ("SPARC_SoftFloat");	\
++	}					\
++    }						\
++  while (0)
++
+ /* Specify this in a cover file to provide bi-architecture (32/64) support.  */
+ /* #define SPARC_BI_ARCH */
+ 
diff --git a/debian/patches/gdc-versym-os.diff b/debian/patches/gdc-versym-os.diff
new file mode 100644
index 0000000..dc820d2
--- /dev/null
+++ b/debian/patches/gdc-versym-os.diff
@@ -0,0 +1,430 @@
+# DP: Implements D OS version conditions.
+
+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
+
+Index: b/src/gcc/config/alpha/linux.h
+===================================================================
+--- a/src/gcc/config/alpha/linux.h
++++ b/src/gcc/config/alpha/linux.h
+@@ -33,6 +33,16 @@ along with GCC; see the file COPYING3.
+ 	  builtin_define ("_GNU_SOURCE");			\
+     } while (0)
+ 
++#undef TARGET_OS_D_BUILTINS 
++#define TARGET_OS_D_BUILTINS()					\
++    do {							\
++	if (OPTION_GLIBC)					\
++	  builtin_define ("GNU_GLibc");				\
++								\
++	builtin_define ("linux");				\
++	builtin_define ("Posix");				\
++    } while (0)
++
+ #undef LIB_SPEC
+ #define LIB_SPEC \
+   "%{pthread:-lpthread} \
+Index: b/src/gcc/config/arm/linux-eabi.h
+===================================================================
+--- a/src/gcc/config/arm/linux-eabi.h
++++ b/src/gcc/config/arm/linux-eabi.h
+@@ -30,6 +30,15 @@
+     }						\
+   while (false)
+ 
++#undef  TARGET_OS_D_BUILTINS
++#define TARGET_OS_D_BUILTINS() 			\
++  do 						\
++    {						\
++      TARGET_GENERIC_LINUX_OS_D_BUILTINS();	\
++      ANDROID_TARGET_OS_D_BUILTINS();		\
++    }						\
++  while (false)
++
+ /* 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.  */
+Index: b/src/gcc/config/darwin.h
+===================================================================
+--- a/src/gcc/config/darwin.h
++++ b/src/gcc/config/darwin.h
+@@ -923,4 +923,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"
+ 
++#define TARGET_OS_D_BUILTINS()					\
++    do {							\
++	builtin_define ("OSX");					\
++	builtin_define ("Posix");				\
++    } while (0)
++
+ #endif /* CONFIG_DARWIN_H */
+Index: b/src/gcc/config/freebsd.h
+===================================================================
+--- 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()
+ 
++#undef TARGET_OS_D_BUILTINS
++#define TARGET_OS_D_BUILTINS()					\
++    do {							\
++	builtin_define ("FreeBSD");				\
++	builtin_define ("Posix");				\
++    } while (0)
++
+ #undef  CPP_SPEC
+ #define CPP_SPEC FBSD_CPP_SPEC
+ 
+Index: b/src/gcc/config/gnu.h
+===================================================================
+--- a/src/gcc/config/gnu.h
++++ b/src/gcc/config/gnu.h
+@@ -39,3 +39,11 @@ along with GCC.  If not, see <http://www
+ 	builtin_assert ("system=unix");		\
+ 	builtin_assert ("system=posix");	\
+     } while (0)
++
++#undef TARGET_OS_D_BUILTINS
++#define TARGET_OS_D_BUILTINS()					\
++    do {							\
++								\
++	builtin_define ("Hurd");				\
++	builtin_define ("Posix");				\
++    } while (0)
+Index: b/src/gcc/config/i386/cygwin.h
+===================================================================
+--- a/src/gcc/config/i386/cygwin.h
++++ b/src/gcc/config/i386/cygwin.h
+@@ -29,6 +29,13 @@ along with GCC; see the file COPYING3.
+     }								\
+   while (0)
+ 
++#define TARGET_OS_D_BUILTINS()					\
++    do {							\
++      builtin_define ("Windows");				\
++      builtin_define ("Cygwin");				\
++      builtin_define ("Posix");					\
++    } while (0)
++
+ #undef CPP_SPEC
+ #define CPP_SPEC "%(cpp_cpu) %{posix:-D_POSIX_SOURCE} \
+   %{!ansi:-Dunix} \
+Index: b/src/gcc/config/i386/linux-common.h
+===================================================================
+--- a/src/gcc/config/i386/linux-common.h
++++ b/src/gcc/config/i386/linux-common.h
+@@ -27,6 +27,15 @@ along with GCC; see the file COPYING3.
+     }                                          \
+   while (0)
+ 
++#undef  TARGET_OS_D_BUILTINS
++#define TARGET_OS_D_BUILTINS() 			\
++  do 						\
++    {						\
++      TARGET_GENERIC_LINUX_OS_D_BUILTINS();	\
++      ANDROID_TARGET_OS_D_BUILTINS();		\
++    }						\
++  while (0)
++
+ #undef CC1_SPEC
+ #define CC1_SPEC \
+   LINUX_OR_ANDROID_CC (GNU_USER_TARGET_CC1_SPEC, \
+Index: b/src/gcc/config/i386/mingw-w64.h
+===================================================================
+--- a/src/gcc/config/i386/mingw-w64.h
++++ b/src/gcc/config/i386/mingw-w64.h
+@@ -89,3 +89,10 @@ along with GCC; see the file COPYING3.
+   %{static:-Bstatic} %{!static:-Bdynamic} \
+   %{shared|mdll: " SUB_LINK_ENTRY " --enable-auto-image-base} \
+   %(shared_libgcc_undefs)"
++
++#undef TARGET_OS_D_BUILTINS
++#define TARGET_OS_D_BUILTINS()					\
++    do {							\
++      TARGET_GENERIC_MINGW_OS_D_BUILTINS();			\
++      builtin_define ("GNU_MinGW64");				\
++    } while (0)
+Index: b/src/gcc/config/i386/mingw32.h
+===================================================================
+--- a/src/gcc/config/i386/mingw32.h
++++ b/src/gcc/config/i386/mingw32.h
+@@ -53,6 +53,18 @@ along with GCC; see the file COPYING3.
+     }								\
+   while (0)
+ 
++#define TARGET_OS_D_BUILTINS() TARGET_GENERIC_MINGW_OS_D_BUILTINS()
++#define TARGET_GENERIC_MINGW_OS_D_BUILTINS()			\
++    do {							\
++      builtin_define ("Windows");				\
++      builtin_define ("MinGW");					\
++								\
++      if (TARGET_64BIT && ix86_abi == MS_ABI)			\
++	  builtin_define ("Win64");				\
++      else if (!TARGET_64BIT)					\
++        builtin_define ("Win32");				\
++    } while (0)
++
+ #ifndef TARGET_USE_PTHREAD_BY_DEFAULT
+ #define SPEC_PTHREAD1 "pthread"
+ #define SPEC_PTHREAD2 "!no-pthread"
+Index: b/src/gcc/config/kfreebsd-gnu.h
+===================================================================
+--- a/src/gcc/config/kfreebsd-gnu.h
++++ b/src/gcc/config/kfreebsd-gnu.h
+@@ -29,6 +29,14 @@ along with GCC; see the file COPYING3.
+     }						\
+   while (0)
+ 
++#undef TARGET_OS_D_BUILTINS
++#define TARGET_OS_D_BUILTINS()					\
++    do {							\
++	builtin_define ("FreeBSD");				\
++	builtin_define ("Posix");				\
++	builtin_define ("GNU_GLibc");				\
++    } while (0)
++
+ #define GNU_USER_DYNAMIC_LINKER        GLIBC_DYNAMIC_LINKER
+ #define GNU_USER_DYNAMIC_LINKER32      GLIBC_DYNAMIC_LINKER32
+ #define GNU_USER_DYNAMIC_LINKER64      GLIBC_DYNAMIC_LINKER64
+Index: b/src/gcc/config/knetbsd-gnu.h
+===================================================================
+--- a/src/gcc/config/knetbsd-gnu.h
++++ b/src/gcc/config/knetbsd-gnu.h
+@@ -30,6 +30,16 @@ along with GCC; see the file COPYING3.
+     }						\
+   while (0)
+ 
++#undef TARGET_OS_D_BUILTINS
++#define TARGET_OS_D_BUILTINS()			\
++  do						\
++    {						\
++      builtin_define ("NetBSD");		\
++      builtin_define ("Posix");			\
++      builtin_define ("GNU_GLibc");		\
++    }						\
++  while (0)
++
+ 
+ #undef GNU_USER_DYNAMIC_LINKER
+ #define GNU_USER_DYNAMIC_LINKER "/lib/ld.so.1"
+Index: b/src/gcc/config/kopensolaris-gnu.h
+===================================================================
+--- a/src/gcc/config/kopensolaris-gnu.h
++++ b/src/gcc/config/kopensolaris-gnu.h
+@@ -30,5 +30,15 @@ along with GCC; see the file COPYING3.
+     }						\
+   while (0)
+ 
++#define TARGET_OS_D_BUILTINS()				\
++  do							\
++    {							\
++	builtin_define ("Solaris");			\
++	builtin_define ("Posix");			\
++	builtin_define ("GNU_OpenSolaris");		\
++	builtin_define ("GNU_GLibc");			\
++    }							\
++  while (0)
++
+ #undef GNU_USER_DYNAMIC_LINKER
+ #define GNU_USER_DYNAMIC_LINKER "/lib/ld.so.1"
+Index: b/src/gcc/config/linux-android.h
+===================================================================
+--- a/src/gcc/config/linux-android.h
++++ b/src/gcc/config/linux-android.h
+@@ -25,6 +25,12 @@
+ 	  builtin_define ("__ANDROID__");			\
+     } while (0)
+ 
++#define ANDROID_TARGET_OS_D_BUILTINS()				\
++    do {							\
++	if (TARGET_ANDROID)					\
++	  builtin_define ("Android");				\
++    } while (0)
++
+ #if ANDROID_DEFAULT
+ # define NOANDROID "mno-android"
+ #else
+Index: b/src/gcc/config/linux.h
+===================================================================
+--- a/src/gcc/config/linux.h
++++ b/src/gcc/config/linux.h
+@@ -49,6 +49,28 @@ see the files COPYING3 and COPYING.RUNTI
+ 	builtin_assert ("system=posix");			\
+     } while (0)
+ 
++#define TARGET_OS_D_BUILTINS() TARGET_GENERIC_LINUX_OS_D_BUILTINS()
++#define TARGET_GENERIC_LINUX_OS_D_BUILTINS()			\
++    do {							\
++	if (OPTION_GLIBC)					\
++	  {							\
++	    builtin_define ("GNU_GLibc");			\
++	    builtin_define ("CRuntime_Glibc");			\
++	  }							\
++	else if (OPTION_UCLIBC)					\
++	  {							\
++	    builtin_define ("GNU_UCLibc");			\
++	  }							\
++	else if (OPTION_BIONIC)					\
++	  {							\
++	    builtin_define ("GNU_Bionic");			\
++	    builtin_define ("CRuntime_Bionic");			\
++	  }							\
++								\
++	builtin_define ("linux");				\
++	builtin_define ("Posix");				\
++    } while (0)
++
+ /* Determine which dynamic linker to use depending on whether GLIBC or
+    uClibc or Bionic is the default C library and whether
+    -muclibc or -mglibc or -mbionic has been passed to change the default.  */
+Index: b/src/gcc/config/mips/linux-common.h
+===================================================================
+--- a/src/gcc/config/mips/linux-common.h
++++ b/src/gcc/config/mips/linux-common.h
+@@ -27,6 +27,15 @@ along with GCC; see the file COPYING3.
+     ANDROID_TARGET_OS_CPP_BUILTINS();				\
+   } while (0)
+ 
++#undef  TARGET_OS_D_BUILTINS
++#define TARGET_OS_D_BUILTINS() 			\
++  do 						\
++    {						\
++      TARGET_GENERIC_LINUX_OS_D_BUILTINS();	\
++      ANDROID_TARGET_OS_D_BUILTINS();		\
++    }						\
++  while (0)
++
+ #undef  LINK_SPEC
+ #define LINK_SPEC							\
+   LINUX_OR_ANDROID_LD (GNU_USER_TARGET_LINK_SPEC,			\
+Index: b/src/gcc/config/netbsd.h
+===================================================================
+--- a/src/gcc/config/netbsd.h
++++ b/src/gcc/config/netbsd.h
+@@ -29,6 +29,14 @@ along with GCC; see the file COPYING3.
+     }						\
+   while (0)
+ 
++#define TARGET_OS_D_BUILTINS()			\
++  do						\
++    {						\
++      builtin_define ("NetBSD");		\
++      builtin_define ("Posix");			\
++    }						\
++  while (0)
++
+ /* CPP_SPEC parts common to all NetBSD targets.  */
+ #define NETBSD_CPP_SPEC				\
+   "%{posix:-D_POSIX_SOURCE} \
+Index: b/src/gcc/config/openbsd.h
+===================================================================
+--- a/src/gcc/config/openbsd.h
++++ b/src/gcc/config/openbsd.h
+@@ -84,6 +84,14 @@ along with GCC; see the file COPYING3.
+     }						\
+   while (0)
+ 
++#define TARGET_OS_D_BUILTINS()			\
++  do						\
++    {						\
++      builtin_define ("OpenBSD");		\
++      builtin_define ("Posix");			\
++    }						\
++  while (0)
++
+ /* TARGET_OS_CPP_BUILTINS() common to all OpenBSD ELF targets.  */
+ #define OPENBSD_OS_CPP_BUILTINS_ELF()		\
+   do						\
+Index: b/src/gcc/config/rs6000/aix.h
+===================================================================
+--- a/src/gcc/config/rs6000/aix.h
++++ b/src/gcc/config/rs6000/aix.h
+@@ -115,6 +115,13 @@
+     }						\
+   while (0)
+ 
++#define TARGET_OS_D_BUILTINS()					\
++    do {							\
++								\
++	builtin_define ("AIX");					\
++	builtin_define ("Posix");				\
++    } while (0)
++
+ /* Define appropriate architecture macros for preprocessor depending on
+    target switches.  */
+ 
+Index: b/src/gcc/config/rs6000/linux.h
+===================================================================
+--- a/src/gcc/config/rs6000/linux.h
++++ b/src/gcc/config/rs6000/linux.h
+@@ -53,6 +53,17 @@
+     }						\
+   while (0)
+ 
++#undef  TARGET_OS_D_BUILTINS
++#define TARGET_OS_D_BUILTINS()			\
++  do						\
++    {						\
++      builtin_define ("linux");			\
++      builtin_define ("Posix");			\
++      if (OPTION_GLIBC)				\
++	builtin_define ("GNU_GLibc");		\
++    }						\
++  while (0)
++
+ #undef	CPP_OS_DEFAULT_SPEC
+ #define CPP_OS_DEFAULT_SPEC "%(cpp_os_linux)"
+ 
+Index: b/src/gcc/config/rs6000/linux64.h
+===================================================================
+--- a/src/gcc/config/rs6000/linux64.h
++++ b/src/gcc/config/rs6000/linux64.h
+@@ -336,6 +336,17 @@ extern int dot_symbols;
+     }							\
+   while (0)
+ 
++#undef  TARGET_OS_D_BUILTINS
++#define TARGET_OS_D_BUILTINS()				\
++  do							\
++    {							\
++      builtin_define ("linux");				\
++      builtin_define ("Posix");				\
++      if (OPTION_GLIBC)					\
++	builtin_define ("GNU_GLibc");			\
++    }							\
++  while (0)
++
+ #undef  CPP_OS_DEFAULT_SPEC
+ #define CPP_OS_DEFAULT_SPEC "%(cpp_os_linux)"
+ 
diff --git a/debian/patches/go-escape-analysis.diff b/debian/patches/go-escape-analysis.diff
new file mode 100644
index 0000000..eb66f5f
--- /dev/null
+++ b/debian/patches/go-escape-analysis.diff
@@ -0,0 +1,4976 @@
+# DP: 
+
+gcc/go/
+
+2015-04-17  Chris Manghane  <cmang at google.com>
+
+	* Make-lang.in (GO_OBJS): Add go/escape.o.
+
+ 
+Index: b/src/gcc/go/Make-lang.in
+===================================================================
+--- a/src/gcc/go/Make-lang.in
++++ b/src/gcc/go/Make-lang.in
+@@ -51,6 +51,7 @@ go-warn = $(STRICT_WARN)
+ GO_OBJS = \
+ 	go/ast-dump.o \
+ 	go/dataflow.o \
++	go/escape.o \
+ 	go/export.o \
+ 	go/expressions.o \
+ 	go/go-backend.o \
+Index: b/src/gcc/go/gofrontend/gogo.cc
+===================================================================
+--- a/src/gcc/go/gofrontend/gogo.cc
++++ b/src/gcc/go/gofrontend/gogo.cc
+@@ -10,14 +10,15 @@
+ 
+ #include "go-c.h"
+ #include "go-dump.h"
++#include "go-optimize.h"
+ #include "lex.h"
+ #include "types.h"
+ #include "statements.h"
+ #include "expressions.h"
+-#include "dataflow.h"
+ #include "runtime.h"
+ #include "import.h"
+ #include "export.h"
++#include "escape.h"
+ #include "backend.h"
+ #include "gogo.h"
+ 
+@@ -158,11 +159,19 @@ Gogo::Gogo(Backend* backend, Linemap* li
+   Function_type* new_type = Type::make_function_type(NULL, NULL, NULL, loc);
+   new_type->set_is_varargs();
+   new_type->set_is_builtin();
++  Node::Escape_states* new_escapes =
++    new Node::Escape_states(1, Node::ESCAPE_NONE);
++  new_type->set_parameter_escape_states(new_escapes);
++  new_type->set_has_escape_info();
+   this->globals_->add_function_declaration("new", NULL, new_type, loc);
+ 
+   Function_type* make_type = Type::make_function_type(NULL, NULL, NULL, loc);
+   make_type->set_is_varargs();
+   make_type->set_is_builtin();
++  Node::Escape_states* make_escapes =
++    new Node::Escape_states(2, Node::ESCAPE_NONE);
++  make_type->set_parameter_escape_states(make_escapes);
++  make_type->set_has_escape_info();
+   this->globals_->add_function_declaration("make", NULL, make_type, loc);
+ 
+   Typed_identifier_list* len_result = new Typed_identifier_list();
+@@ -170,6 +179,10 @@ Gogo::Gogo(Backend* backend, Linemap* li
+   Function_type* len_type = Type::make_function_type(NULL, NULL, len_result,
+ 						     loc);
+   len_type->set_is_builtin();
++  Node::Escape_states* len_escapes =
++    new Node::Escape_states(1, Node::ESCAPE_NONE);
++  len_type->set_parameter_escape_states(len_escapes);
++  len_type->set_has_escape_info();
+   this->globals_->add_function_declaration("len", NULL, len_type, loc);
+ 
+   Typed_identifier_list* cap_result = new Typed_identifier_list();
+@@ -177,16 +190,26 @@ Gogo::Gogo(Backend* backend, Linemap* li
+   Function_type* cap_type = Type::make_function_type(NULL, NULL, len_result,
+ 						     loc);
+   cap_type->set_is_builtin();
++  Node::Escape_states* cap_escapes =
++    new Node::Escape_states(1, Node::ESCAPE_NONE);
++  cap_type->set_parameter_escape_states(cap_escapes);
++  cap_type->set_has_escape_info();
+   this->globals_->add_function_declaration("cap", NULL, cap_type, loc);
+ 
+   Function_type* print_type = Type::make_function_type(NULL, NULL, NULL, loc);
+   print_type->set_is_varargs();
+   print_type->set_is_builtin();
++  Node::Escape_states* print_escapes =
++    new Node::Escape_states(1, Node::ESCAPE_NONE);
++  print_type->set_parameter_escape_states(print_escapes);
++  print_type->set_has_escape_info();
+   this->globals_->add_function_declaration("print", NULL, print_type, loc);
+ 
+   print_type = Type::make_function_type(NULL, NULL, NULL, loc);
+   print_type->set_is_varargs();
+   print_type->set_is_builtin();
++  print_type->set_parameter_escape_states(print_escapes);
++  print_type->set_has_escape_info();
+   this->globals_->add_function_declaration("println", NULL, print_type, loc);
+ 
+   Type *empty = Type::make_empty_interface_type(loc);
+@@ -195,6 +218,10 @@ Gogo::Gogo(Backend* backend, Linemap* li
+   Function_type *panic_type = Type::make_function_type(NULL, panic_parms,
+ 						       NULL, loc);
+   panic_type->set_is_builtin();
++  Node::Escape_states* panic_escapes =
++    new Node::Escape_states(1, Node::ESCAPE_ARG);
++  panic_type->set_parameter_escape_states(panic_escapes);
++  panic_type->set_has_escape_info();
+   this->globals_->add_function_declaration("panic", NULL, panic_type, loc);
+ 
+   Typed_identifier_list* recover_result = new Typed_identifier_list();
+@@ -208,6 +235,10 @@ Gogo::Gogo(Backend* backend, Linemap* li
+   Function_type* close_type = Type::make_function_type(NULL, NULL, NULL, loc);
+   close_type->set_is_varargs();
+   close_type->set_is_builtin();
++  Node::Escape_states* close_escapes =
++    new Node::Escape_states(1, Node::ESCAPE_NONE);
++  close_type->set_parameter_escape_states(close_escapes);
++  close_type->set_has_escape_info();
+   this->globals_->add_function_declaration("close", NULL, close_type, loc);
+ 
+   Typed_identifier_list* copy_result = new Typed_identifier_list();
+@@ -216,31 +247,56 @@ Gogo::Gogo(Backend* backend, Linemap* li
+ 						      copy_result, loc);
+   copy_type->set_is_varargs();
+   copy_type->set_is_builtin();
++  Node::Escape_states* copy_escapes =
++    new Node::Escape_states(2, Node::ESCAPE_NONE);
++  copy_type->set_parameter_escape_states(copy_escapes);
++  copy_type->set_has_escape_info();
+   this->globals_->add_function_declaration("copy", NULL, copy_type, loc);
+ 
+   Function_type* append_type = Type::make_function_type(NULL, NULL, NULL, loc);
+   append_type->set_is_varargs();
+   append_type->set_is_builtin();
++  Node::Escape_states* append_escapes = new Node::Escape_states;
++  append_escapes->push_back(Node::ESCAPE_ARG);
++  append_escapes->push_back(Node::ESCAPE_NONE);
++  append_type->set_parameter_escape_states(append_escapes);
++  append_type->set_has_escape_info();
+   this->globals_->add_function_declaration("append", NULL, append_type, loc);
+ 
+   Function_type* complex_type = Type::make_function_type(NULL, NULL, NULL, loc);
+   complex_type->set_is_varargs();
+   complex_type->set_is_builtin();
++  Node::Escape_states* complex_escapes =
++    new Node::Escape_states(2, Node::ESCAPE_NONE);
++  complex_type->set_parameter_escape_states(complex_escapes);
++  complex_type->set_has_escape_info();
+   this->globals_->add_function_declaration("complex", NULL, complex_type, loc);
+ 
+   Function_type* real_type = Type::make_function_type(NULL, NULL, NULL, loc);
+   real_type->set_is_varargs();
+   real_type->set_is_builtin();
++  Node::Escape_states* real_escapes =
++    new Node::Escape_states(1, Node::ESCAPE_NONE);
++  real_type->set_parameter_escape_states(real_escapes);
++  real_type->set_has_escape_info();
+   this->globals_->add_function_declaration("real", NULL, real_type, loc);
+ 
+   Function_type* imag_type = Type::make_function_type(NULL, NULL, NULL, loc);
+   imag_type->set_is_varargs();
+   imag_type->set_is_builtin();
++  Node::Escape_states* imag_escapes =
++    new Node::Escape_states(1, Node::ESCAPE_NONE);
++  imag_type->set_parameter_escape_states(imag_escapes);
++  imag_type->set_has_escape_info();
+   this->globals_->add_function_declaration("imag", NULL, imag_type, loc);
+ 
+   Function_type* delete_type = Type::make_function_type(NULL, NULL, NULL, loc);
+   delete_type->set_is_varargs();
+   delete_type->set_is_builtin();
++  Node::Escape_states* delete_escapes =
++    new Node::Escape_states(2, Node::ESCAPE_NONE);
++  delete_type->set_parameter_escape_states(delete_escapes);
++  delete_type->set_has_escape_info();
+   this->globals_->add_function_declaration("delete", NULL, delete_type, loc);
+ }
+ 
+@@ -1604,9 +1660,9 @@ Gogo::start_function(const std::string&
+ 
+   Block* block = new Block(NULL, location);
+ 
+-  Function* enclosing = (at_top_level
++  Named_object* enclosing = (at_top_level
+ 			 ? NULL
+-			 : this->functions_.back().function->func_value());
++			 : this->functions_.back().function);
+ 
+   Function* function = new Function(type, enclosing, block, location);
+ 
+@@ -1904,6 +1960,74 @@ Gogo::add_label_reference(const std::str
+ 				   issue_goto_errors);
+ }
+ 
++// Add a function to the call graph.
++
++Node*
++Gogo::add_call_node(Named_object* function)
++{
++  Node* call = this->lookup_call_node(function);
++  if (call == NULL)
++    {
++      call = Node::make_call(function);
++      this->call_graph_.insert(call);
++      this->named_call_nodes_[function] = call;
++    }
++  return call;
++}
++
++// Find the call node that represents FUNCTION.  Return NULL if it does not
++// exist.
++
++Node*
++Gogo::lookup_call_node(Named_object* function) const
++{
++  Named_escape_nodes::const_iterator p = this->named_call_nodes_.find(function);
++  if (p == this->named_call_nodes_.end())
++    return NULL;
++  return p->second;
++}
++
++// Add a connection node for OBJECT.
++
++Node*
++Gogo::add_connection_node(Named_object* object)
++{
++  Node* connection = this->lookup_connection_node(object);
++  if (connection == NULL)
++    {
++      connection = Node::make_connection(object, Node::ESCAPE_NONE);
++
++      // Each global variable is a part of the global connection graph.
++      if (object->is_variable()
++	  && object->var_value()->is_global())
++	{
++	  connection->connection_node()->set_escape_state(Node::ESCAPE_GLOBAL);
++	  this->global_connections_.insert(connection);
++	}
++
++      // Each function declaration or definition is the root of its own
++      // connection graph.  This means closures will have their own
++      // connection graph that objects in the enclosing function might
++      // refer to.
++      if (object->is_function() || object->is_function_declaration())
++	this->connection_roots_.insert(connection);
++      this->named_connection_nodes_[object] = connection;
++    }
++  return connection;
++}
++
++// Find the connection node for OBJECT.  Return NULL if it does not exist.
++
++Node*
++Gogo::lookup_connection_node(Named_object* object) const
++{
++  Named_escape_nodes::const_iterator p =
++    this->named_connection_nodes_.find(object);
++  if (p == this->named_connection_nodes_.end())
++    return NULL;
++  return p->second;
++}
++
+ // Return the current binding state.
+ 
+ Bindings_snapshot*
+@@ -4455,7 +4579,7 @@ Gogo::convert_named_types_in_bindings(Bi
+ 
+ // Class Function.
+ 
+-Function::Function(Function_type* type, Function* enclosing, Block* block,
++Function::Function(Function_type* type, Named_object* enclosing, Block* block,
+ 		   Location location)
+   : type_(type), enclosing_(enclosing), results_(NULL),
+     closure_var_(NULL), block_(block), location_(location), labels_(),
+@@ -4809,6 +4933,13 @@ Function::export_func_with_type(Export*
+       exp->write_c_string("(");
+       const Typed_identifier* receiver = fntype->receiver();
+       exp->write_name(receiver->name());
++
++      if (fntype->has_escape_info())
++        {
++          exp->write_c_string(" ");
++          exp->write_escape(fntype->receiver_escape_state());
++        }
++
+       exp->write_c_string(" ");
+       exp->write_type(receiver->type());
+       exp->write_c_string(") ");
+@@ -4820,17 +4951,25 @@ Function::export_func_with_type(Export*
+   const Typed_identifier_list* parameters = fntype->parameters();
+   if (parameters != NULL)
+     {
++      size_t i = 0;
+       bool is_varargs = fntype->is_varargs();
+       bool first = true;
+       for (Typed_identifier_list::const_iterator p = parameters->begin();
+ 	   p != parameters->end();
+-	   ++p)
++	   ++p, ++i)
+ 	{
+ 	  if (first)
+ 	    first = false;
+ 	  else
+ 	    exp->write_c_string(", ");
+ 	  exp->write_name(p->name());
++
++	  if (fntype->has_escape_info())
++	    {
++	      exp->write_c_string(" ");
++	      exp->write_escape(fntype->parameter_escape_states()->at(i));
++	    }
++
+ 	  exp->write_c_string(" ");
+ 	  if (!is_varargs || p + 1 != parameters->end())
+ 	    exp->write_type(p->type());
+@@ -4878,17 +5017,29 @@ Function::export_func_with_type(Export*
+ void
+ Function::import_func(Import* imp, std::string* pname,
+ 		      Typed_identifier** preceiver,
++		      Node::Escapement_lattice* rcvr_escape,
+ 		      Typed_identifier_list** pparameters,
++		      Node::Escape_states** pparam_escapes,
+ 		      Typed_identifier_list** presults,
+-		      bool* is_varargs)
++		      bool* is_varargs, bool* has_escape_info)
+ {
++  *has_escape_info = false;
++
+   imp->require_c_string("func ");
+ 
+   *preceiver = NULL;
++  *rcvr_escape = Node::ESCAPE_NONE;
+   if (imp->peek_char() == '(')
+     {
+       imp->require_c_string("(");
+       std::string name = imp->read_name();
++
++      if (imp->match_c_string(" <escape")){
++	*has_escape_info = true;
++	imp->require_c_string(" ");
++	*rcvr_escape = imp->read_escape_info();
++      }
++
+       imp->require_c_string(" ");
+       Type* rtype = imp->read_type();
+       *preceiver = new Typed_identifier(name, rtype, imp->location());
+@@ -4898,16 +5049,27 @@ Function::import_func(Import* imp, std::
+   *pname = imp->read_identifier();
+ 
+   Typed_identifier_list* parameters;
++  Node::Escape_states* param_escapes;
+   *is_varargs = false;
+   imp->require_c_string(" (");
+   if (imp->peek_char() == ')')
+-    parameters = NULL;
++    {
++      parameters = NULL;
++      param_escapes = NULL;
++    }
+   else
+     {
+       parameters = new Typed_identifier_list();
++      param_escapes = new Node::Escape_states();
+       while (true)
+ 	{
+ 	  std::string name = imp->read_name();
++	  if (imp->match_c_string(" <escape")){
++	    *has_escape_info = true;
++	    imp->require_c_string(" ");
++	    param_escapes->push_back(imp->read_escape_info());
++	  }
++
+ 	  imp->require_c_string(" ");
+ 
+ 	  if (imp->match_c_string("..."))
+@@ -4929,6 +5091,7 @@ Function::import_func(Import* imp, std::
+     }
+   imp->require_c_string(")");
+   *pparameters = parameters;
++  *pparam_escapes = param_escapes;
+ 
+   Typed_identifier_list* results;
+   if (imp->peek_char() != ' ')
+@@ -5765,7 +5928,7 @@ Variable::Variable(Type* type, Expressio
+     type_from_init_tuple_(false), type_from_range_index_(false),
+     type_from_range_value_(false), type_from_chan_element_(false),
+     is_type_switch_var_(false), determined_type_(false),
+-    in_unique_section_(false)
++    in_unique_section_(false), escapes_(true)
+ {
+   go_assert(type != NULL || init != NULL);
+   go_assert(!is_parameter || init == NULL);
+Index: b/src/gcc/go/gofrontend/gogo.h
+===================================================================
+--- a/src/gcc/go/gofrontend/gogo.h
++++ b/src/gcc/go/gofrontend/gogo.h
+@@ -7,6 +7,7 @@
+ #ifndef GO_GOGO_H
+ #define GO_GOGO_H
+ 
++#include "escape.h"
+ #include "go-linemap.h"
+ 
+ class Traverse;
+@@ -125,6 +126,21 @@ class Gogo
+   linemap()
+   { return this->linemap_; }
+ 
++  // Get the Call Graph.
++  const std::set<Node*>&
++  call_graph() const
++  { return this->call_graph_; }
++
++  // Get the roots of each connection graph.
++  const std::set<Node*>&
++  connection_roots() const
++  { return this->connection_roots_; }
++
++  // Get the nodes that escape globally.
++  const std::set<Node*>&
++  global_connections() const
++  { return this->global_connections_; }
++
+   // Get the package name.
+   const std::string&
+   package_name() const;
+@@ -345,6 +361,22 @@ class Gogo
+   add_label_reference(const std::string&, Location,
+ 		      bool issue_goto_errors);
+ 
++  // Add a FUNCTION to the call graph.
++  Node*
++  add_call_node(Named_object* function);
++
++  // Lookup the call node for FUNCTION.
++  Node*
++  lookup_call_node(Named_object* function) const;
++
++  // Add a connection node for OBJECT.
++  Node*
++  add_connection_node(Named_object* object);
++
++  // Lookup the connection node for OBJECT.
++  Node*
++  lookup_connection_node(Named_object* object) const;
++
+   // Return a snapshot of the current binding state.
+   Bindings_snapshot*
+   bindings_snapshot(Location);
+@@ -544,6 +576,26 @@ class Gogo
+   void
+   check_return_statements();
+ 
++  // Build call graph.
++  void
++  build_call_graph();
++
++  // Build connection graphs.
++  void
++  build_connection_graphs();
++
++  // Analyze reachability in the connection graphs.
++  void
++  analyze_reachability();
++
++  // Record escape information in function signatures for export data.
++  void
++  mark_escaping_signatures();
++
++  // Optimize variable allocation.
++  void
++  optimize_allocations(const char** filenames);
++
+   // Do all exports.
+   void
+   do_exports();
+@@ -579,6 +631,14 @@ class Gogo
+   void
+   dump_ast(const char* basename);
+ 
++  // Dump Call Graph if -fgo-dump-calls is set.
++  void
++  dump_call_graph(const char* basename);
++
++  // Dump Connection Graphs if -fgo-dump-connections is set.
++  void
++  dump_connection_graphs(const char* basename);
++
+   // Convert named types to the backend representation.
+   void
+   convert_named_types();
+@@ -684,6 +744,10 @@ class Gogo
+   // where they were defined.
+   typedef Unordered_map(std::string, Location) File_block_names;
+ 
++  // Type used to map named objects that refer to objects to the
++  // node that represent them in the escape analysis graphs.
++  typedef Unordered_map(Named_object*, Node*)  Named_escape_nodes;
++
+   // Type used to queue writing a type specific function.
+   struct Specific_type_function
+   {
+@@ -716,6 +780,20 @@ class Gogo
+   // The global binding contour.  This includes the builtin functions
+   // and the package we are compiling.
+   Bindings* globals_;
++  // The call graph for a program execution which represents the functions
++  // encountered and the caller-callee relationship between the functions.
++  std::set<Node*> call_graph_;
++  // The nodes that form the roots of the connection graphs for each called
++  // function and represent the connectivity relationship between all objects
++  // in the function.
++  std::set<Node*> connection_roots_;
++  // All connection nodes that have an escape state of ESCAPE_GLOBAL are a part
++  // of a special connection graph of only global variables.
++  std::set<Node*> global_connections_;
++  // Mapping from named objects to nodes in the call graph.
++  Named_escape_nodes named_call_nodes_;
++  // Mapping from named objects to nodes in a connection graph.
++  Named_escape_nodes named_connection_nodes_;
+   // The list of names we have seen in the file block.
+   File_block_names file_block_names_;
+   // Mapping from import file names to packages.
+@@ -886,7 +964,7 @@ class Block
+ class Function
+ {
+  public:
+-  Function(Function_type* type, Function*, Block*, Location);
++  Function(Function_type* type, Named_object*, Block*, Location);
+ 
+   // Return the function's type.
+   Function_type*
+@@ -894,14 +972,14 @@ class Function
+   { return this->type_; }
+ 
+   // Return the enclosing function if there is one.
+-  Function*
+-  enclosing()
++  Named_object*
++  enclosing() const
+   { return this->enclosing_; }
+ 
+   // Set the enclosing function.  This is used when building thunks
+   // for functions which call recover.
+   void
+-  set_enclosing(Function* enclosing)
++  set_enclosing(Named_object* enclosing)
+   {
+     go_assert(this->enclosing_ == NULL);
+     this->enclosing_ = enclosing;
+@@ -1152,8 +1230,11 @@ class Function
+   // Import a function.
+   static void
+   import_func(Import*, std::string* pname, Typed_identifier** receiver,
++	      Node::Escapement_lattice* rcvr_escape,
+ 	      Typed_identifier_list** pparameters,
+-	      Typed_identifier_list** presults, bool* is_varargs);
++	      Node::Escape_states** pparam_escapes,
++	      Typed_identifier_list** presults, bool* is_varargs,
++	      bool* has_escape_info);
+ 
+  private:
+   // Type for mapping from label names to Label objects.
+@@ -1169,7 +1250,7 @@ class Function
+   Function_type* type_;
+   // The enclosing function.  This is NULL when there isn't one, which
+   // is the normal case.
+-  Function* enclosing_;
++  Named_object* enclosing_;
+   // The result variables, if any.
+   Results* results_;
+   // If there is a closure, this is the list of variables which appear
+@@ -1414,7 +1495,11 @@ class Variable
+   // Whether this variable should live in the heap.
+   bool
+   is_in_heap() const
+-  { return this->is_address_taken_ && !this->is_global_; }
++  {
++    return this->is_address_taken_ 
++      && this->escapes_
++      && !this->is_global_;
++  }
+ 
+   // Note that something takes the address of this variable.
+   void
+@@ -1432,6 +1517,16 @@ class Variable
+   set_non_escaping_address_taken()
+   { this->is_non_escaping_address_taken_ = true; }
+ 
++  // Return whether this variable escapes the function it is declared in.
++  bool
++  escapes()
++  { return this->escapes_; }
++
++  // Note that this variable does not escape the function it is declared in.
++  void
++  set_does_not_escape()
++  { this->escapes_ = false; }
++
+   // Get the source location of the variable's declaration.
+   Location
+   location() const
+@@ -1525,6 +1620,11 @@ class Variable
+     this->type_from_chan_element_ = false;
+   }
+ 
++  // TRUE if this variable was created for a type switch clause.
++  bool
++  is_type_switch_var() const
++  { return this->is_type_switch_var_; }
++
+   // Note that this variable was created for a type switch clause.
+   void
+   set_is_type_switch_var()
+@@ -1609,7 +1709,7 @@ class Variable
+   bool is_used_ : 1;
+   // Whether something takes the address of this variable.  For a
+   // local variable this implies that the variable has to be on the
+-  // heap.
++  // heap if it escapes from its function.
+   bool is_address_taken_ : 1;
+   // Whether something takes the address of this variable such that
+   // the address does not escape the function.
+@@ -1635,6 +1735,9 @@ class Variable
+   // True if this variable should be put in a unique section.  This is
+   // used for field tracking.
+   bool in_unique_section_ : 1;
++  // Whether this variable escapes the function it is created in.  This is
++  // true until shown otherwise.
++  bool escapes_ : 1;
+ };
+ 
+ // A variable which is really the name for a function return value, or
+@@ -1647,7 +1750,7 @@ class Result_variable
+ 		  Location location)
+     : type_(type), function_(function), index_(index), location_(location),
+       backend_(NULL), is_address_taken_(false),
+-      is_non_escaping_address_taken_(false)
++      is_non_escaping_address_taken_(false), escapes_(true)
+   { }
+ 
+   // Get the type of the result variable.
+@@ -1690,11 +1793,24 @@ class Result_variable
+   void
+   set_non_escaping_address_taken()
+   { this->is_non_escaping_address_taken_ = true; }
++  
++  // Return whether this variable escapes the function it is declared in.
++  bool
++  escapes()
++  { return this->escapes_; }
++
++  // Note that this variable does not escape the function it is declared in.
++  void
++  set_does_not_escape()
++  { this->escapes_ = false; }
+ 
+   // Whether this variable should live in the heap.
+   bool
+   is_in_heap() const
+-  { return this->is_address_taken_; }
++  {
++    return this->is_address_taken_
++      && this->escapes_;
++  }
+ 
+   // Set the function.  This is used when cloning functions which call
+   // recover.
+@@ -1722,6 +1838,9 @@ class Result_variable
+   // Whether something takes the address of this variable such that
+   // the address does not escape the function.
+   bool is_non_escaping_address_taken_;
++  // Whether this variable escapes the function it is created in.  This is
++  // true until shown otherwise.
++  bool escapes_;
+ };
+ 
+ // The value we keep for a named constant.  This lets us hold a type
+Index: b/src/gcc/go/gofrontend/dataflow.cc
+===================================================================
+--- a/src/gcc/go/gofrontend/dataflow.cc
++++ b/src/gcc/go/gofrontend/dataflow.cc
+@@ -169,8 +169,20 @@ Dataflow_traverse_statements::statement(
+ 					Statement *statement)
+ {
+   Dataflow_traverse_assignment dta(this->dataflow_, statement);
+-  if (!statement->traverse_assignments(&dta))
++
++  // For thunk statements, make sure to traverse the call expression to
++  // find any reference to a variable being used as an argument.
++  if (!statement->traverse_assignments(&dta)
++      || statement->thunk_statement() != NULL)
+     {
++      // Case statements in selects will be lowered into temporaries at this
++      // point so our dataflow analysis will miss references between a/c and ch
++      // in case statements of the form a,c := <-ch.  Do a special dataflow
++      // analysis for select statements here; the analysis for the blocks will
++      // be handled as usual.
++      if (statement->select_statement() != NULL)
++	statement->select_statement()->analyze_dataflow(this->dataflow_);
++
+       Dataflow_traverse_expressions dte(this->dataflow_, statement);
+       statement->traverse(block, pindex, &dte);
+     }
+@@ -195,12 +207,21 @@ Dataflow::Compare_vars::operator()(const
+     return false;
+   if (loc1 > loc2)
+     return true;
++  if (Linemap::is_predeclared_location(loc1))
++    return false;
+ 
+-  if (no1 == no2)
++  if (no1 == no2
++      || (no1->is_result_variable()
++	  && no2->is_result_variable())
++      || ((no1->is_variable()
++	   && no1->var_value()->is_type_switch_var())
++	  && (no2->is_variable()
++	      && no2->var_value()->is_type_switch_var())))
+     return false;
+ 
+   // We can't have two variables with the same name in the same
+-  // location.
++  // location unless they are type switch variables which share the same
++  // fake location.
+   go_unreachable();
+ }
+ 
+Index: b/src/gcc/go/gofrontend/escape.h
+===================================================================
+--- /dev/null
++++ b/src/gcc/go/gofrontend/escape.h
+@@ -0,0 +1,310 @@
++// escape.h -- Go frontend escape analysis.     -*- C++ -*-
++
++// Copyright 2015 The Go Authors. All rights reserved.
++// Use of this source code is governed by a BSD-style
++// license that can be found in the LICENSE file.
++
++#ifndef GO_ESCAPE_H
++#define GO_ESCAPE_H
++
++#include "go-system.h"
++#include "string-dump.h"
++
++class Call_node;
++class Connection_node;
++class Connection_dump_context;
++class Gogo;
++class Named_object;
++
++// A basic escape analysis implementation for the Go frontend based on the
++// algorithm from "Escape Analysis for Java" by Choi et. al in OOPSLA '99.
++// This is a simplified version of the flow insensitive analysis with the goal
++// of reducing the overhead cost of garbage collection by allocating objects
++// on the stack when they do not escape the function they were created in.
++//
++// A major simplification is that the analysis only implements what Choi refers
++// to as "deferred edges" which are used to used model assignments that copy
++// references from one variable to another e.g. a := b.  It is unnecessary to
++// consider assignments to the fields of an object because, in general, if a
++// field of an object escapes and must be heap-allocated, there is no way to
++// heap-allocate that escaping field without heap-allocating the entire object.
++// That is, for some globally escaping object GVAR, if there is an assignment
++// of the form GVAR = t.f such that field f of object t escapes, it is likely
++// that t must be heap-allocated as well.  In the analysis, this assignment
++// will be simplified to GVAR = t, which is imprecise but has the same effect.
++
++// This is a general graph node representing a named object used in a call graph
++// or connection graph.  In a call graph, each named object is either a Function
++// or Function_declaration representing a function called during the program
++// execution (which isn't necessarily every function declared).  In a connection
++// graph, there is a node for each node in the call graph, which forms the root
++// of that connection graph.  Each connection graph root contains nodes whose
++// objects are either variables used in the function defintion or are nested
++// closures created within the function definition.  The connection graph is
++// a way of modeling the connectivity between all objects created in a given
++// function as well as understanding the relationship between input arguments
++// in the caller and the formal parameters in the callee.
++
++class Node
++{
++ public:
++  enum Node_classification
++  {
++    NODE_CALL,
++    NODE_CONNECTION
++  };
++
++  virtual ~Node();
++
++  // Make a call node for FUNCTION.
++  static Node*
++  make_call(Named_object* function);
++
++  // Make a connection node for OBJECT.
++  // Note: values in this enum appear in export data, and therefore MUST NOT
++  // change.
++  enum Escapement_lattice
++  {
++    // ESCAPE_GLOBAL means that the object escapes all functions globally.
++    ESCAPE_GLOBAL = 0,
++    // ESCAPE_ARG with respect to a function means that the object escapes that
++    // function it is created in via the function's arguments or results.
++    ESCAPE_ARG = 1,
++    // ESCAPE_NONE means that the object does not escape the function in which
++    // it was created.
++    ESCAPE_NONE = 2
++  };
++
++  // A list of states usually corresponding to a list of function parameters.
++  typedef std::vector<Escapement_lattice> Escape_states;
++
++  static Node*
++  make_connection(Named_object* object, Escapement_lattice e);
++
++  // Return the node classification.
++  Node_classification
++  classification() const
++  { return this->classification_; }
++
++  // Return whether this is a call node.
++  bool
++  is_call() const
++  { return this->classification_ == NODE_CALL; }
++
++  // Return whether this is a connection node.
++  bool
++  is_connection() const
++  { return this->classification_ == NODE_CONNECTION; }
++
++  // If this is a connection node, return the Connection_node.
++  // Otherwise, return NULL.
++  Connection_node*
++  connection_node()
++  { return this->convert<Connection_node, NODE_CONNECTION>(); }
++
++  // Return this node's unique id.
++  unsigned int
++  id() const
++  { return this->id_; }
++
++  // Return this node's generated name for GraphViz.
++  virtual const std::string&
++  name() = 0;
++
++  // Return this node's generated label for GraphViz.
++  virtual const std::string&
++  label();
++
++  // Return the object this node represents.
++  Named_object*
++  object() const
++  { return this->object_; }
++
++  void
++  add_edge(Node* v)
++  { this->edges_.insert(v); }
++
++  const std::set<Node*>&
++  edges() const
++  { return this->edges_; }
++
++ protected:
++  Node(Node_classification, Named_object* object);
++
++  const std::string&
++  get_name() const
++  { return this->name_; }
++
++  void
++  set_name(const std::string& name)
++  { this->name_ = name; }
++
++  const std::string&
++  get_label() const
++  { return this->label_; }
++
++  void
++  set_label(const std::string& label)
++  { this->label_ = label; }
++
++ private:
++  template<typename Node_class,
++	   Node_classification node_classification>
++  const Node_class*
++  convert() const
++  {
++    return (this->classification_ == node_classification
++	    ? static_cast<const Node_class*>(this)
++	    : NULL);
++  }
++
++  template<typename Node_class,
++	   Node_classification node_classification>
++  Node_class*
++  convert()
++  {
++    return (this->classification_ == node_classification
++	    ? static_cast<Node_class*>(this)
++	    : NULL);
++  }
++
++  // The classification of this node.
++  Node_classification classification_;
++  // A unique ID for this node.
++  unsigned int id_;
++  // The name for this node e.g. "Node<ID>" used as a GraphViz identifier.
++  std::string name_;
++  // The label for this node in the GraphViz representation.
++  std::string label_;
++  // The object represented by this node.
++  Named_object* object_;
++  // A distinct set of nodes that this node has edges to.
++  std::set<Node*> edges_;
++};
++
++
++// A node representing a function that might be called during program execution.
++
++class Call_node : public Node
++{
++ public:
++  Call_node(Named_object* function);
++
++  const std::string&
++  name();
++};
++
++// A node representing an object in the connection graph built for each function
++// in the call graph.
++
++class Connection_node : public Node
++{
++ public:
++  Connection_node(Named_object* object, Escapement_lattice e)
++    : Node(NODE_CONNECTION, object),
++      escape_state_(e)
++  { }
++
++  // Return this node's generated name for GraphViz.
++  const std::string&
++  name();
++
++  // Return this node's generated label for GraphViz.
++  const std::string&
++  label();
++
++  // Return the escape state for this node.
++  Escapement_lattice
++  escape_state() const
++  { return this->escape_state_; }
++
++  // Set the escape state for this node.
++  void
++  set_escape_state(Escapement_lattice e)
++  { this->escape_state_ = e; }
++
++  // Return the objects inside of this connection graph.
++  // This is empty for all connection nodes that are not the root of a
++  // connection graph.  Each node in the call graph is a root of a connection
++  // graph.
++  const std::set<Node*>&
++  objects() const
++  { return this->objects_; }
++
++  void
++  add_object(Node* object)
++  { this->objects_.insert(object); }
++
++  void
++  dump_connection(Connection_dump_context*);
++
++ private:
++  // The escapement of this node.
++  Escapement_lattice escape_state_;
++  // The set of nodes contained within this connection node.  If this node is
++  // not a root of a connection graph, this will be empty.
++  std::set<Node*> objects_;
++};
++
++// This class implements fgo-dump-calls. The Call graph dump of a Go program.
++
++class Call_dump_context : public String_dump
++{
++ public:
++  Call_dump_context(std::ostream* out = NULL);
++
++  // Initialize the dump context.
++  void
++  dump(Gogo*, const char* basename);
++
++  // Get dump output stream.
++  std::ostream&
++  ostream()
++  { return *this->ostream_; }
++
++  // Implementation of String_dump interface.
++  void
++  write_c_string(const char*);
++
++  void
++  write_string(const std::string&);
++
++ private:
++  // Stream on output dump file.
++  std::ostream* ostream_;
++
++  Gogo* gogo_;
++};
++
++// This class implements fgo-dump-conns.  The connection graph dump of
++// the functions called in a Go program.
++
++class Connection_dump_context : public String_dump
++{
++ public:
++  Connection_dump_context(std::ostream* out = NULL);
++
++  // Initialize the dump context.
++  void
++  dump(Gogo*, const char* basename);
++
++  // Get dump output stream.
++  std::ostream&
++  ostream()
++  { return *this->ostream_; }
++
++  // Implementation of String_dump interface.
++  void
++  write_c_string(const char*);
++
++  void
++  write_string(const std::string&);
++
++ private:
++  // Stream on output dump file.
++  std::ostream* ostream_;
++
++  Gogo* gogo_;
++};
++
++#endif // !defined(GO_ESCAPE_H)
+Index: b/src/gcc/go/gofrontend/go.cc
+===================================================================
+--- a/src/gcc/go/gofrontend/go.cc
++++ b/src/gcc/go/gofrontend/go.cc
+@@ -110,6 +110,10 @@ go_parse_input_files(const char** filena
+   if (only_check_syntax)
+     return;
+ 
++  // Consider escape analysis information when deciding if a variable should
++  // live on the heap or on the stack.
++  ::gogo->optimize_allocations(filenames);
++
+   // Export global identifiers as appropriate.
+   ::gogo->do_exports();
+ 
+Index: b/src/gcc/go/gofrontend/types.h
+===================================================================
+--- a/src/gcc/go/gofrontend/types.h
++++ b/src/gcc/go/gofrontend/types.h
+@@ -8,6 +8,7 @@
+ #define GO_TYPES_H
+ 
+ #include "go-linemap.h"
++#include "escape.h"
+ 
+ class Gogo;
+ class Package;
+@@ -1778,7 +1779,7 @@ class Function_type : public Type
+     : Type(TYPE_FUNCTION),
+       receiver_(receiver), parameters_(parameters), results_(results),
+       location_(location), is_varargs_(false), is_builtin_(false),
+-      fnbtype_(NULL)
++      has_escape_info_(false), fnbtype_(NULL), parameter_escape_states_(NULL)
+   { }
+ 
+   // Get the receiver.
+@@ -1786,6 +1787,16 @@ class Function_type : public Type
+   receiver() const
+   { return this->receiver_; }
+ 
++  // Get the escape state of the receiver.
++  const Node::Escapement_lattice&
++  receiver_escape_state() const
++  { return this->receiver_escape_state_; }
++
++  // Set the escape state of the receiver.
++  void
++  set_receiver_escape_state(const Node::Escapement_lattice& e)
++  { this->receiver_escape_state_ = e; }
++
+   // Get the return names and types.
+   const Typed_identifier_list*
+   results() const
+@@ -1796,6 +1807,16 @@ class Function_type : public Type
+   parameters() const
+   { return this->parameters_; }
+ 
++  // Get the escape states associated with each parameter.
++  const Node::Escape_states*
++  parameter_escape_states() const
++  { return this->parameter_escape_states_; }
++
++  // Set the escape states of the parameters.
++  void
++  set_parameter_escape_states(Node::Escape_states* states)
++  { this->parameter_escape_states_ = states; }
++
+   // Whether this is a varargs function.
+   bool
+   is_varargs() const
+@@ -1806,6 +1827,11 @@ class Function_type : public Type
+   is_builtin() const
+   { return this->is_builtin_; }
+ 
++  // Whether this contains escape information.
++  bool
++  has_escape_info() const
++  { return this->has_escape_info_; }
++
+   // The location where this type was defined.
+   Location
+   location() const
+@@ -1836,6 +1862,11 @@ class Function_type : public Type
+   set_is_builtin()
+   { this->is_builtin_ = true; }
+ 
++  // Record that this has escape information.
++  void
++  set_has_escape_info()
++  { this->has_escape_info_ = true; }
++
+   // Import a function type.
+   static Function_type*
+   do_import(Import*);
+@@ -1947,9 +1978,16 @@ class Function_type : public Type
+   // Whether this is a special builtin function which can not simply
+   // be called.  This is used for len, cap, etc.
+   bool is_builtin_;
++  // Whether escape information for the receiver and parameters has been
++  // recorded.
++  bool has_escape_info_;
+   // The backend representation of this type for backend function
+   // declarations and definitions.
+   Btype* fnbtype_;
++  // The escape state of the receiver.
++  Node::Escapement_lattice receiver_escape_state_;
++  // The escape states of each parameter.
++  Node::Escape_states* parameter_escape_states_;
+ };
+ 
+ // The type of a function's backend representation.
+Index: b/src/gcc/go/gofrontend/import.h
+===================================================================
+--- a/src/gcc/go/gofrontend/import.h
++++ b/src/gcc/go/gofrontend/import.h
+@@ -7,6 +7,7 @@
+ #ifndef GO_IMPORT_H
+ #define GO_IMPORT_H
+ 
++#include "escape.h"
+ #include "export.h"
+ #include "go-linemap.h"
+ 
+@@ -197,6 +198,10 @@ class Import
+   Type*
+   read_type();
+ 
++  // Read escape information.
++  Node::Escapement_lattice
++  read_escape_info();
++
+  private:
+   static Stream*
+   try_package_in_directory(const std::string&, Location);
+Index: b/src/gcc/go/gofrontend/export.cc
+===================================================================
+--- a/src/gcc/go/gofrontend/export.cc
++++ b/src/gcc/go/gofrontend/export.cc
+@@ -436,6 +436,17 @@ Export::write_type(const Type* type)
+     this->type_refs_[type] = index;
+ }
+ 
++// Export escape information.
++
++void
++Export::write_escape(const Node::Escapement_lattice& e)
++{
++  char buf[30];
++  snprintf(buf, sizeof buf, "<escape %d>", e);
++  this->write_c_string(buf);
++  return;
++}
++
+ // Add the builtin types to the export table.
+ 
+ void
+Index: b/src/gcc/go/gofrontend/export.h
+===================================================================
+--- a/src/gcc/go/gofrontend/export.h
++++ b/src/gcc/go/gofrontend/export.h
+@@ -7,6 +7,7 @@
+ #ifndef GO_EXPORT_H
+ #define GO_EXPORT_H
+ 
++#include "escape.h"
+ #include "string-dump.h"
+ 
+ struct sha1_ctx;
+@@ -161,6 +162,10 @@ class Export : public String_dump
+   void
+   write_type(const Type*);
+ 
++  // Write out escape information.
++  void
++  write_escape(const Node::Escapement_lattice& e);
++
+  private:
+   Export(const Export&);
+   Export& operator=(const Export&);
+Index: b/src/gcc/go/gofrontend/expressions.h
+===================================================================
+--- a/src/gcc/go/gofrontend/expressions.h
++++ b/src/gcc/go/gofrontend/expressions.h
+@@ -31,19 +31,31 @@ class Var_expression;
+ class Temporary_reference_expression;
+ class Set_and_use_temporary_expression;
+ class String_expression;
++class Type_conversion_expression;
+ class Unary_expression;
+ class Binary_expression;
+ class Call_expression;
++class Call_result_expression;
+ class Func_expression;
+ class Func_descriptor_expression;
+ class Unknown_expression;
+ class Index_expression;
++class Array_index_expression;
+ class Map_index_expression;
+ class Bound_method_expression;
+ class Field_reference_expression;
+ class Interface_field_reference_expression;
++class Allocation_expression;
++class Struct_construction_expression;
++class Array_construction_expression;
++class Fixed_array_construction_expression;
++class Slice_construction_expression;
++class Map_construction_expression;
+ class Type_guard_expression;
++class Heap_expression;
+ class Receive_expression;
++class Conditional_expression;
++class Compound_expression;
+ class Numeric_constant;
+ class Named_object;
+ class Export;
+@@ -553,6 +565,12 @@ class Expression
+   string_expression()
+   { return this->convert<String_expression, EXPRESSION_STRING>(); }
+ 
++  // If this is a conversion expression, return the Type_conversion_expression
++  // structure.  Otherwise, return NULL.
++  Type_conversion_expression*
++  conversion_expression()
++  { return this->convert<Type_conversion_expression, EXPRESSION_CONVERSION>(); }
++
+   // Return whether this is the expression nil.
+   bool
+   is_nil_expression() const
+@@ -582,6 +600,13 @@ class Expression
+   call_expression()
+   { return this->convert<Call_expression, EXPRESSION_CALL>(); }
+ 
++  // If this is a call_result expression, return the Call_result_expression
++  // structure.  Otherwise, return NULL.  This is a controlled dynamic
++  // cast.
++  Call_result_expression*
++  call_result_expression()
++  { return this->convert<Call_result_expression, EXPRESSION_CALL_RESULT>(); }
++
+   // If this is an expression which refers to a function, return the
+   // Func_expression structure.  Otherwise, return NULL.
+   Func_expression*
+@@ -611,6 +636,13 @@ class Expression
+   index_expression()
+   { return this->convert<Index_expression, EXPRESSION_INDEX>(); }
+ 
++  // If this is an expression which refers to indexing in a array,
++  // return the Array_index_expression structure.  Otherwise, return
++  // NULL.
++  Array_index_expression*
++  array_index_expression()
++  { return this->convert<Array_index_expression, EXPRESSION_ARRAY_INDEX>(); }
++
+   // If this is an expression which refers to indexing in a map,
+   // return the Map_index_expression structure.  Otherwise, return
+   // NULL.
+@@ -643,18 +675,78 @@ class Expression
+ 			 EXPRESSION_INTERFACE_FIELD_REFERENCE>();
+   }
+ 
++  // If this is an allocation expression, return the Allocation_expression
++  // structure.  Otherwise, return NULL.
++  Allocation_expression*
++  allocation_expression()
++  { return this->convert<Allocation_expression, EXPRESSION_ALLOCATION>(); }
++
++  // If this is a struct composite literal, return the
++  // Struct_construction_expression structure.  Otherwise, return NULL.
++  Struct_construction_expression*
++  struct_literal()
++  {
++    return this->convert<Struct_construction_expression,
++			 EXPRESSION_STRUCT_CONSTRUCTION>();
++  }
++
++  // If this is a array composite literal, return the
++  // Array_construction_expression structure.  Otherwise, return NULL.
++  Fixed_array_construction_expression*
++  array_literal()
++  {
++    return this->convert<Fixed_array_construction_expression,
++			 EXPRESSION_FIXED_ARRAY_CONSTRUCTION>();
++  }
++
++  // If this is a slice composite literal, return the
++  // Slice_construction_expression structure.  Otherwise, return NULL.
++  Slice_construction_expression*
++  slice_literal()
++  {
++    return this->convert<Slice_construction_expression,
++			 EXPRESSION_SLICE_CONSTRUCTION>();
++  }
++
++  // If this is a map composite literal, return the
++  // Map_construction_expression structure.  Otherwise, return NULL.
++  Map_construction_expression*
++  map_literal()
++  {
++    return this->convert<Map_construction_expression,
++			 EXPRESSION_MAP_CONSTRUCTION>();
++  }
++
+   // If this is a type guard expression, return the
+   // Type_guard_expression structure.  Otherwise, return NULL.
+   Type_guard_expression*
+   type_guard_expression()
+   { return this->convert<Type_guard_expression, EXPRESSION_TYPE_GUARD>(); }
+ 
++  // If this is a heap expression, returhn the Heap_expression structure.
++  // Otherwise, return NULL.
++  Heap_expression*
++  heap_expression()
++  { return this->convert<Heap_expression, EXPRESSION_HEAP>(); }
++
+   // If this is a receive expression, return the Receive_expression
+   // structure.  Otherwise, return NULL.
+   Receive_expression*
+   receive_expression()
+   { return this->convert<Receive_expression, EXPRESSION_RECEIVE>(); }
+ 
++  // If this is a conditional expression, return the Conditional_expression
++  // structure.  Otherwise, return NULL.
++  Conditional_expression*
++  conditional_expression()
++  { return this->convert<Conditional_expression, EXPRESSION_CONDITIONAL>(); }
++
++  // If this is a compound expression, return the Compound_expression structure.
++  // Otherwise, return NULL.
++  Compound_expression*
++  compound_expression()
++  { return this->convert<Compound_expression, EXPRESSION_COMPOUND>(); }
++
+   // Return true if this is a composite literal.
+   bool
+   is_composite_literal() const;
+@@ -1322,6 +1414,97 @@ class String_expression : public Express
+   Type* type_;
+ };
+ 
++// A type conversion expression.
++
++class Type_conversion_expression : public Expression
++{
++ public:
++  Type_conversion_expression(Type* type, Expression* expr,
++			     Location location)
++    : Expression(EXPRESSION_CONVERSION, location),
++      type_(type), expr_(expr), may_convert_function_types_(false)
++  { }
++
++  // Return the type to which we are converting.
++  Type*
++  type() const
++  { return this->type_; }
++
++  // Return the expression which we are converting.
++  Expression*
++  expr() const
++  { return this->expr_; }
++
++  // Permit converting from one function type to another.  This is
++  // used internally for method expressions.
++  void
++  set_may_convert_function_types()
++  {
++    this->may_convert_function_types_ = true;
++  }
++
++  // Import a type conversion expression.
++  static Expression*
++  do_import(Import*);
++
++ protected:
++  int
++  do_traverse(Traverse* traverse);
++
++  Expression*
++  do_lower(Gogo*, Named_object*, Statement_inserter*, int);
++
++  Expression*
++  do_flatten(Gogo*, Named_object*, Statement_inserter*);
++
++  bool
++  do_is_constant() const;
++
++  bool
++  do_is_immutable() const;
++
++  bool
++  do_numeric_constant_value(Numeric_constant*) const;
++
++  bool
++  do_string_constant_value(std::string*) const;
++
++  Type*
++  do_type()
++  { return this->type_; }
++
++  void
++  do_determine_type(const Type_context*);
++
++  void
++  do_check_types(Gogo*);
++
++  Expression*
++  do_copy()
++  {
++    return new Type_conversion_expression(this->type_, this->expr_->copy(),
++					  this->location());
++  }
++
++  Bexpression*
++  do_get_backend(Translate_context* context);
++
++  void
++  do_export(Export*) const;
++
++  void
++  do_dump_expression(Ast_dump_context*) const;
++
++ private:
++  // The type to convert to.
++  Type* type_;
++  // The expression to convert.
++  Expression* expr_;
++  // True if this is permitted to convert function types.  This is
++  // used internally for method expressions.
++  bool may_convert_function_types_;
++};
++
+ // A Unary expression.
+ 
+ class Unary_expression : public Expression
+@@ -1827,6 +2010,57 @@ class Call_expression : public Expressio
+   bool is_flattened_;
+ };
+ 
++// A single result from a call which returns multiple results.
++
++class Call_result_expression : public Expression
++{
++ public:
++  Call_result_expression(Call_expression* call, unsigned int index)
++    : Expression(EXPRESSION_CALL_RESULT, call->location()),
++      call_(call), index_(index)
++  { }
++
++  Expression*
++  call() const
++  { return this->call_; }
++
++ protected:
++  int
++  do_traverse(Traverse*);
++
++  Type*
++  do_type();
++
++  void
++  do_determine_type(const Type_context*);
++
++  void
++  do_check_types(Gogo*);
++
++  Expression*
++  do_copy()
++  {
++    return new Call_result_expression(this->call_->call_expression(),
++				      this->index_);
++  }
++
++  bool
++  do_must_eval_in_order() const
++  { return true; }
++
++  Bexpression*
++  do_get_backend(Translate_context*);
++
++  void
++  do_dump_expression(Ast_dump_context*) const;
++
++ private:
++  // The underlying call expression.
++  Expression* call_;
++  // Which result we want.
++  unsigned int index_;
++};
++
+ // An expression which represents a pointer to a function.
+ 
+ class Func_expression : public Expression
+@@ -2074,6 +2308,95 @@ class Index_expression : public Parser_e
+   bool is_lvalue_;
+ };
+ 
++// An array index.  This is used for both indexing and slicing.
++
++class Array_index_expression : public Expression
++{
++ public:
++  Array_index_expression(Expression* array, Expression* start,
++			 Expression* end, Expression* cap, Location location)
++    : Expression(EXPRESSION_ARRAY_INDEX, location),
++      array_(array), start_(start), end_(end), cap_(cap), type_(NULL)
++  { }
++
++  // Return the array.
++  Expression*
++  array()
++  { return this->array_; }
++
++  const Expression*
++  array() const
++  { return this->array_; }
++
++ protected:
++  int
++  do_traverse(Traverse*);
++
++  Expression*
++  do_flatten(Gogo*, Named_object*, Statement_inserter*);
++
++  Type*
++  do_type();
++
++  void
++  do_determine_type(const Type_context*);
++
++  void
++  do_check_types(Gogo*);
++
++  Expression*
++  do_copy()
++  {
++    return Expression::make_array_index(this->array_->copy(),
++					this->start_->copy(),
++					(this->end_ == NULL
++					 ? NULL
++					 : this->end_->copy()),
++					(this->cap_ == NULL
++					 ? NULL
++					 : this->cap_->copy()),
++					this->location());
++  }
++
++  bool
++  do_must_eval_subexpressions_in_order(int* skip) const
++  {
++    *skip = 1;
++    return true;
++  }
++
++  bool
++  do_is_addressable() const;
++
++  void
++  do_address_taken(bool escapes)
++  { this->array_->address_taken(escapes); }
++
++  void
++  do_issue_nil_check()
++  { this->array_->issue_nil_check(); }
++
++  Bexpression*
++  do_get_backend(Translate_context*);
++
++  void
++  do_dump_expression(Ast_dump_context*) const;
++  
++ private:
++  // The array we are getting a value from.
++  Expression* array_;
++  // The start or only index.
++  Expression* start_;
++  // The end index of a slice.  This may be NULL for a simple array
++  // index, or it may be a nil expression for the length of the array.
++  Expression* end_;
++  // The capacity argument of a slice.  This may be NULL for an array index or
++  // slice.
++  Expression* cap_;
++  // The type of the expression.
++  Type* type_;
++};
++
+ // An index into a map.
+ 
+ class Map_index_expression : public Expression
+@@ -2456,6 +2779,327 @@ class Interface_field_reference_expressi
+   std::string name_;
+ };
+ 
++// Implement the builtin function new.
++
++class Allocation_expression : public Expression
++{
++ public:
++  Allocation_expression(Type* type, Location location)
++    : Expression(EXPRESSION_ALLOCATION, location),
++      type_(type), allocate_on_stack_(false), stack_temp_(NULL)
++  { }
++
++  void
++  set_allocate_on_stack()
++  { this->allocate_on_stack_ = true; }
++
++ protected:
++  int
++  do_traverse(Traverse*);
++
++  Type*
++  do_type();
++
++  void
++  do_determine_type(const Type_context*)
++  { }
++
++  Expression*
++  do_copy();
++
++  Expression*
++  do_flatten(Gogo*, Named_object*, Statement_inserter*);
++
++  Bexpression*
++  do_get_backend(Translate_context*);
++
++  void
++  do_dump_expression(Ast_dump_context*) const;
++
++ private:
++  // The type we are allocating.
++  Type* type_;
++  // Whether or not this is a stack allocation.
++  bool allocate_on_stack_;
++  // If this memory is stack allocated, it will use the address of STACK_TEMP.
++  // Otherwise, STACK_TEMP is NULL.
++  Temporary_statement* stack_temp_;
++};
++
++// Construct a struct.
++
++class Struct_construction_expression : public Expression
++{
++ public:
++  Struct_construction_expression(Type* type, Expression_list* vals,
++				 Location location)
++    : Expression(EXPRESSION_STRUCT_CONSTRUCTION, location),
++      type_(type), vals_(vals), traverse_order_(NULL)
++  { }
++
++  // Set the traversal order, used to ensure that we implement the
++  // order of evaluation rules.  Takes ownership of the argument.
++  void
++  set_traverse_order(std::vector<int>* traverse_order)
++  { this->traverse_order_ = traverse_order; }
++
++  // Return whether this is a constant initializer.
++  bool
++  is_constant_struct() const;
++
++  Expression_list*
++  vals() const
++  { return this->vals_; }
++
++ protected:
++  int
++  do_traverse(Traverse* traverse);
++
++  bool
++  do_is_immutable() const;
++
++  Type*
++  do_type()
++  { return this->type_; }
++
++  void
++  do_determine_type(const Type_context*);
++
++  void
++  do_check_types(Gogo*);
++
++  Expression*
++  do_copy()
++  {
++    Struct_construction_expression* ret =
++      new Struct_construction_expression(this->type_,
++					 (this->vals_ == NULL
++					  ? NULL
++					  : this->vals_->copy()),
++					 this->location());
++    if (this->traverse_order_ != NULL)
++      ret->set_traverse_order(this->traverse_order_);
++    return ret;
++  }
++
++  Expression*
++  do_flatten(Gogo*, Named_object*, Statement_inserter*);
++
++  Bexpression*
++  do_get_backend(Translate_context*);
++
++  void
++  do_export(Export*) const;
++
++  void
++  do_dump_expression(Ast_dump_context*) const;
++
++ private:
++  // The type of the struct to construct.
++  Type* type_;
++  // The list of values, in order of the fields in the struct.  A NULL
++  // entry means that the field should be zero-initialized.
++  Expression_list* vals_;
++  // If not NULL, the order in which to traverse vals_.  This is used
++  // so that we implement the order of evaluation rules correctly.
++  std::vector<int>* traverse_order_;
++};
++
++// Construct an array.  This class is not used directly; instead we
++// use the child classes, Fixed_array_construction_expression and
++// Slice_construction_expression.
++
++class Array_construction_expression : public Expression
++{
++ protected:
++  Array_construction_expression(Expression_classification classification,
++				Type* type,
++				const std::vector<unsigned long>* indexes,
++				Expression_list* vals, Location location)
++    : Expression(classification, location),
++      type_(type), indexes_(indexes), vals_(vals)
++  { go_assert(indexes == NULL || indexes->size() == vals->size()); }
++
++ public:
++  // Return whether this is a constant initializer.
++  bool
++  is_constant_array() const;
++
++  // Return the number of elements.
++  size_t
++  element_count() const
++  { return this->vals_ == NULL ? 0 : this->vals_->size(); }
++
++  // The list of values.
++  Expression_list*
++  vals() const
++  { return this->vals_; }
++
++protected:
++  virtual int
++  do_traverse(Traverse* traverse);
++
++  bool
++  do_is_immutable() const;
++
++  Type*
++  do_type()
++  { return this->type_; }
++
++  void
++  do_determine_type(const Type_context*);
++
++  void
++  do_check_types(Gogo*);
++
++  void
++  do_export(Export*) const;
++
++  // The indexes.
++  const std::vector<unsigned long>*
++  indexes()
++  { return this->indexes_; }
++
++  Expression*
++  do_flatten(Gogo*, Named_object*, Statement_inserter*);
++
++  // Get the backend constructor for the array values.
++  Bexpression*
++  get_constructor(Translate_context* context, Btype* btype);
++
++  void
++  do_dump_expression(Ast_dump_context*) const;
++
++ private:
++  // The type of the array to construct.
++  Type* type_;
++  // The list of indexes into the array, one for each value.  This may
++  // be NULL, in which case the indexes start at zero and increment.
++  const std::vector<unsigned long>* indexes_;
++  // The list of values.  This may be NULL if there are no values.
++  Expression_list* vals_;
++};
++
++// Construct a fixed array.
++
++class Fixed_array_construction_expression :
++  public Array_construction_expression
++{
++ public:
++  Fixed_array_construction_expression(Type* type,
++				      const std::vector<unsigned long>* indexes,
++				      Expression_list* vals, Location location);
++
++ protected:
++  Expression*
++  do_copy()
++  {
++    return new Fixed_array_construction_expression(this->type(),
++						   this->indexes(),
++						   (this->vals() == NULL
++						    ? NULL
++						    : this->vals()->copy()),
++						   this->location());
++  }
++
++  Bexpression*
++  do_get_backend(Translate_context*);
++};
++
++// Construct a slice.
++
++class Slice_construction_expression : public Array_construction_expression
++{
++ public:
++  Slice_construction_expression(Type* type,
++				const std::vector<unsigned long>* indexes,
++				Expression_list* vals, Location location);
++ protected:
++  // Note that taking the address of a slice literal is invalid.
++
++  int
++  do_traverse(Traverse* traverse);
++
++  Expression*
++  do_copy()
++  {
++    return new Slice_construction_expression(this->type(), this->indexes(),
++					     (this->vals() == NULL
++					      ? NULL
++					      : this->vals()->copy()),
++					     this->location());
++  }
++
++  Bexpression*
++  do_get_backend(Translate_context*);
++
++ private:
++  // The type of the values in this slice.
++  Type* valtype_;
++};
++
++// Construct a map.
++
++class Map_construction_expression : public Expression
++{
++ public:
++  Map_construction_expression(Type* type, Expression_list* vals,
++			      Location location)
++    : Expression(EXPRESSION_MAP_CONSTRUCTION, location),
++      type_(type), vals_(vals), element_type_(NULL), constructor_temp_(NULL)
++  { go_assert(vals == NULL || vals->size() % 2 == 0); }
++
++  Expression_list*
++  vals() const
++  { return this->vals_; }
++
++ protected:
++  int
++  do_traverse(Traverse* traverse);
++
++  Expression*
++  do_flatten(Gogo*, Named_object*, Statement_inserter*);
++
++  Type*
++  do_type()
++  { return this->type_; }
++
++  void
++  do_determine_type(const Type_context*);
++
++  void
++  do_check_types(Gogo*);
++
++  Expression*
++  do_copy()
++  {
++    return new Map_construction_expression(this->type_,
++					   (this->vals_ == NULL
++					    ? NULL
++					    : this->vals_->copy()),
++					   this->location());
++  }
++
++  Bexpression*
++  do_get_backend(Translate_context*);
++
++  void
++  do_export(Export*) const;
++
++  void
++  do_dump_expression(Ast_dump_context*) const;
++  
++ private:
++  // The type of the map to construct.
++  Type* type_;
++  // The list of values.
++  Expression_list* vals_;
++  // The type of the key-value pair struct for each map element.
++  Struct_type* element_type_;
++  // A temporary reference to the variable storing the constructor initializer.
++  Temporary_statement* constructor_temp_;
++};
++
+ // A type guard expression.
+ 
+ class Type_guard_expression : public Expression
+@@ -2514,6 +3158,58 @@ class Type_guard_expression : public Exp
+   Type* type_;
+ };
+ 
++// Class Heap_expression.
++
++// When you take the address of an escaping expression, it is allocated
++// on the heap.  This class implements that.
++
++class Heap_expression : public Expression
++{
++ public:
++  Heap_expression(Expression* expr, Location location)
++    : Expression(EXPRESSION_HEAP, location),
++      expr_(expr)
++  { }
++
++  Expression*
++  expr() const
++  { return this->expr_; }
++
++ protected:
++  int
++  do_traverse(Traverse* traverse)
++  { return Expression::traverse(&this->expr_, traverse); }
++
++  Type*
++  do_type();
++  void
++  do_determine_type(const Type_context*)
++  { this->expr_->determine_type_no_context(); }
++
++  Expression*
++  do_copy()
++  {
++    return Expression::make_heap_expression(this->expr_->copy(),
++                                            this->location());
++  }
++
++  Bexpression*
++  do_get_backend(Translate_context*);
++
++  // We only export global objects, and the parser does not generate
++  // this in global scope.
++  void
++  do_export(Export*) const
++  { go_unreachable(); }
++
++  void
++  do_dump_expression(Ast_dump_context*) const;
++
++ private:
++  // The expression which is being put on the heap.
++  Expression* expr_;
++};
++
+ // A receive expression.
+ 
+ class Receive_expression : public Expression
+@@ -2574,6 +3270,96 @@ class Receive_expression : public Expres
+   Temporary_statement* temp_receiver_;
+ };
+ 
++// Conditional expressions.
++
++class Conditional_expression : public Expression
++{
++ public:
++  Conditional_expression(Expression* cond, Expression* then_expr,
++                         Expression* else_expr, Location location)
++      : Expression(EXPRESSION_CONDITIONAL, location),
++        cond_(cond), then_(then_expr), else_(else_expr)
++  {}
++
++  Expression*
++  condition() const
++  { return this->cond_; }
++
++ protected:
++  int
++  do_traverse(Traverse*);
++
++  Type*
++  do_type();
++
++  void
++  do_determine_type(const Type_context*);
++
++  Expression*
++  do_copy()
++  {
++    return new Conditional_expression(this->cond_->copy(), this->then_->copy(),
++                                      this->else_->copy(), this->location());
++  }
++
++  Bexpression*
++  do_get_backend(Translate_context* context);
++
++  void
++  do_dump_expression(Ast_dump_context*) const;
++
++ private:
++  // The condition to be checked.
++  Expression* cond_;
++  // The expression to execute if the condition is true.
++  Expression* then_;
++  // The expression to execute if the condition is false.
++  Expression* else_;
++};
++
++// Compound expressions.
++
++class Compound_expression : public Expression
++{
++ public:
++  Compound_expression(Expression* init, Expression* expr, Location location)
++      : Expression(EXPRESSION_COMPOUND, location), init_(init), expr_(expr)
++  {}
++
++  Expression*
++  init() const
++  { return this->init_; }
++
++ protected:
++  int
++  do_traverse(Traverse*);
++
++  Type*
++  do_type();
++
++  void
++  do_determine_type(const Type_context*);
++
++  Expression*
++  do_copy()
++  {
++    return new Compound_expression(this->init_->copy(), this->expr_->copy(),
++                                   this->location());
++  }
++
++  Bexpression*
++  do_get_backend(Translate_context* context);
++
++  void
++  do_dump_expression(Ast_dump_context*) const;
++
++ private:
++  // The expression that is evaluated first and discarded.
++  Expression* init_;
++  // The expression that is evaluated and returned.
++  Expression* expr_;
++};
++
+ // A numeric constant.  This is used both for untyped constants and
+ // for constants that have a type.
+ 
+Index: b/src/gcc/go/gofrontend/statements.cc
+===================================================================
+--- a/src/gcc/go/gofrontend/statements.cc
++++ b/src/gcc/go/gofrontend/statements.cc
+@@ -14,6 +14,7 @@
+ #include "backend.h"
+ #include "statements.h"
+ #include "ast-dump.h"
++#include "dataflow.h"
+ 
+ // Class Statement.
+ 
+@@ -520,45 +521,7 @@ Statement::make_temporary(Type* type, Ex
+   return new Temporary_statement(type, init, location);
+ }
+ 
+-// An assignment statement.
+-
+-class Assignment_statement : public Statement
+-{
+- public:
+-  Assignment_statement(Expression* lhs, Expression* rhs,
+-		       Location location)
+-    : Statement(STATEMENT_ASSIGNMENT, location),
+-      lhs_(lhs), rhs_(rhs)
+-  { }
+-
+- protected:
+-  int
+-  do_traverse(Traverse* traverse);
+-
+-  bool
+-  do_traverse_assignments(Traverse_assignments*);
+-
+-  void
+-  do_determine_types();
+-
+-  void
+-  do_check_types(Gogo*);
+-
+-  Statement*
+-  do_flatten(Gogo*, Named_object*, Block*, Statement_inserter*);
+-
+-  Bstatement*
+-  do_get_backend(Translate_context*);
+-
+-  void
+-  do_dump_statement(Ast_dump_context*) const;
+-
+- private:
+-  // Left hand side--the lvalue.
+-  Expression* lhs_;
+-  // Right hand side--the rvalue.
+-  Expression* rhs_;
+-};
++// Class Assignment_statement.
+ 
+ // Traversal.
+ 
+@@ -3150,41 +3113,7 @@ Statement::make_unnamed_label_statement(
+   return new Unnamed_label_statement(label);
+ }
+ 
+-// An if statement.
+-
+-class If_statement : public Statement
+-{
+- public:
+-  If_statement(Expression* cond, Block* then_block, Block* else_block,
+-	       Location location)
+-    : Statement(STATEMENT_IF, location),
+-      cond_(cond), then_block_(then_block), else_block_(else_block)
+-  { }
+-
+- protected:
+-  int
+-  do_traverse(Traverse*);
+-
+-  void
+-  do_determine_types();
+-
+-  void
+-  do_check_types(Gogo*);
+-
+-  bool
+-  do_may_fall_through() const;
+-
+-  Bstatement*
+-  do_get_backend(Translate_context*);
+-
+-  void
+-  do_dump_statement(Ast_dump_context*) const;
+-
+- private:
+-  Expression* cond_;
+-  Block* then_block_;
+-  Block* else_block_;
+-};
++// Class If_statement.
+ 
+ // Traversal.
+ 
+@@ -4676,7 +4605,6 @@ Select_clauses::Select_clause::lower(Gog
+   // through here.
+   this->is_lowered_ = true;
+   this->val_ = NULL;
+-  this->var_ = NULL;
+ }
+ 
+ // Lower a default clause in a select statement.
+@@ -4840,6 +4768,22 @@ Select_clauses::Select_clause::check_typ
+     error_at(this->location(), "invalid receive on send-only channel");
+ }
+ 
++// Analyze the dataflow across each case statement.
++
++void
++Select_clauses::Select_clause::analyze_dataflow(Dataflow* dataflow)
++{
++  if (this->is_default_)
++    return;
++
++  // For a CommClause, the dataflow analysis should record a definition of
++  // VAR and CLOSEDVAR
++  if (this->var_ != NULL && !this->var_->is_sink())
++    dataflow->add_def(this->var_, this->channel_, NULL, false);
++  if (this->closedvar_ != NULL && !this->closedvar_->is_sink())
++    dataflow->add_def(this->closedvar_, this->channel_, NULL, false);
++}
++
+ // Whether this clause may fall through to the statement which follows
+ // the overall select statement.
+ 
+@@ -4958,6 +4902,17 @@ Select_clauses::check_types()
+     p->check_types();
+ }
+ 
++// Analyze the dataflow across each case statement.
++
++void
++Select_clauses::analyze_dataflow(Dataflow* dataflow)
++{
++  for (Clauses::iterator p = this->clauses_.begin();
++       p != this->clauses_.end();
++       ++p)
++    p->analyze_dataflow(dataflow);
++}
++
+ // Return whether these select clauses fall through to the statement
+ // following the overall select statement.
+ 
+Index: b/src/gcc/go/gofrontend/statements.h
+===================================================================
+--- a/src/gcc/go/gofrontend/statements.h
++++ b/src/gcc/go/gofrontend/statements.h
+@@ -15,12 +15,14 @@ class Statement_inserter;
+ class Block;
+ class Function;
+ class Unnamed_label;
++class Assignment_statement;
+ class Temporary_statement;
+ class Variable_declaration_statement;
+ class Expression_statement;
+ class Return_statement;
+ class Thunk_statement;
+ class Label_statement;
++class If_statement;
+ class For_statement;
+ class For_range_statement;
+ class Switch_statement;
+@@ -45,6 +47,7 @@ class Bexpression;
+ class Bstatement;
+ class Bvariable;
+ class Ast_dump_context;
++class Dataflow;
+ 
+ // This class is used to traverse assignments made by a statement
+ // which makes assignments.
+@@ -331,6 +334,22 @@ class Statement
+   is_block_statement() const
+   { return this->classification_ == STATEMENT_BLOCK; }
+ 
++  // If this is an assignment statement, return it.  Otherwise return
++  // NULL.
++  Assignment_statement*
++  assignment_statement()
++  {
++    return this->convert<Assignment_statement, STATEMENT_ASSIGNMENT>();
++  }
++
++  // If this is an temporary statement, return it.  Otherwise return
++  // NULL.
++  Temporary_statement*
++  temporary_statement()
++  {
++    return this->convert<Temporary_statement, STATEMENT_TEMPORARY>();
++  }
++
+   // If this is a variable declaration statement, return it.
+   // Otherwise return NULL.
+   Variable_declaration_statement*
+@@ -363,6 +382,11 @@ class Statement
+   label_statement()
+   { return this->convert<Label_statement, STATEMENT_LABEL>(); }
+ 
++  // If this is an if statement, return it.  Otherwise return NULL.
++  If_statement*
++  if_statement()
++  { return this->convert<If_statement, STATEMENT_IF>(); }
++
+   // If this is a for statement, return it.  Otherwise return NULL.
+   For_statement*
+   for_statement()
+@@ -385,6 +409,11 @@ class Statement
+   type_switch_statement()
+   { return this->convert<Type_switch_statement, STATEMENT_TYPE_SWITCH>(); }
+ 
++  // If this is a send statement, return it.  Otherwise return NULL.
++  Send_statement*
++  send_statement()
++  { return this->convert<Send_statement, STATEMENT_SEND>(); }
++
+   // If this is a select statement, return it.  Otherwise return NULL.
+   Select_statement*
+   select_statement()
+@@ -507,6 +536,54 @@ class Statement
+   Location location_;
+ };
+ 
++// An assignment statement.
++
++class Assignment_statement : public Statement
++{
++ public:
++  Assignment_statement(Expression* lhs, Expression* rhs,
++		       Location location)
++    : Statement(STATEMENT_ASSIGNMENT, location),
++      lhs_(lhs), rhs_(rhs)
++  { }
++
++  Expression*
++  lhs() const
++  { return this->lhs_; }
++
++  Expression*
++  rhs() const
++  { return this->rhs_; }
++
++ protected:
++  int
++  do_traverse(Traverse* traverse);
++
++  bool
++  do_traverse_assignments(Traverse_assignments*);
++
++  void
++  do_determine_types();
++
++  void
++  do_check_types(Gogo*);
++
++  Statement*
++  do_flatten(Gogo*, Named_object*, Block*, Statement_inserter*);
++
++  Bstatement*
++  do_get_backend(Translate_context*);
++
++  void
++  do_dump_statement(Ast_dump_context*) const;
++
++ private:
++  // Left hand side--the lvalue.
++  Expression* lhs_;
++  // Right hand side--the rvalue.
++  Expression* rhs_;
++};
++
+ // A statement which creates and initializes a temporary variable.
+ 
+ class Temporary_statement : public Statement
+@@ -697,6 +774,14 @@ class Send_statement : public Statement
+       channel_(channel), val_(val)
+   { }
+ 
++  Expression*
++  channel()
++  { return this->channel_; }  
++
++  Expression*
++  val()
++  { return this->val_; }
++
+  protected:
+   int
+   do_traverse(Traverse* traverse);
+@@ -775,6 +860,10 @@ class Select_clauses
+   void
+   check_types();
+ 
++  // Analyze the dataflow across each case statement.
++  void
++  analyze_dataflow(Dataflow*);
++
+   // Whether the select clauses may fall through to the statement
+   // which follows the overall select statement.
+   bool
+@@ -831,6 +920,10 @@ class Select_clauses
+     void
+     check_types();
+ 
++    // Analyze the dataflow across each case statement.
++    void
++    analyze_dataflow(Dataflow*);
++
+     // Return true if this is the default clause.
+     bool
+     is_default() const
+@@ -937,6 +1030,10 @@ class Select_statement : public Statemen
+   Unnamed_label*
+   break_label();
+ 
++  void
++  analyze_dataflow(Dataflow* dataflow)
++  { this->clauses_->analyze_dataflow(dataflow); }
++
+  protected:
+   int
+   do_traverse(Traverse* traverse)
+@@ -1108,6 +1205,46 @@ class Label_statement : public Statement
+   Label* label_;
+ };
+ 
++// An if statement.
++
++class If_statement : public Statement
++{
++ public:
++  If_statement(Expression* cond, Block* then_block, Block* else_block,
++	       Location location)
++    : Statement(STATEMENT_IF, location),
++      cond_(cond), then_block_(then_block), else_block_(else_block)
++  { }
++
++  Expression*
++  condition() const
++  { return this->cond_; }
++
++ protected:
++  int
++  do_traverse(Traverse*);
++
++  void
++  do_determine_types();
++
++  void
++  do_check_types(Gogo*);
++
++  bool
++  do_may_fall_through() const;
++
++  Bstatement*
++  do_get_backend(Translate_context*);
++
++  void
++  do_dump_statement(Ast_dump_context*) const;
++
++ private:
++  Expression* cond_;
++  Block* then_block_;
++  Block* else_block_;
++};
++
+ // A for statement.
+ 
+ class For_statement : public Statement
+Index: b/src/gcc/go/gofrontend/escape.cc
+===================================================================
+--- /dev/null
++++ b/src/gcc/go/gofrontend/escape.cc
+@@ -0,0 +1,1481 @@
++// escape.cc -- Go frontend escape analysis.
++
++// Copyright 2015 The Go Authors. All rights reserved.
++// Use of this source code is governed by a BSD-style
++// license that can be found in the LICENSE file.
++
++#include "go-system.h"
++
++#include <fstream>
++
++#include "go-c.h"
++#include "go-dump.h"
++#include "go-optimize.h"
++#include "types.h"
++#include "statements.h"
++#include "expressions.h"
++#include "dataflow.h"
++#include "gogo.h"
++#include "escape.h"
++
++// Class Node.
++
++Node::Node(Node_classification classification, Named_object* object)
++  : classification_(classification), object_(object)
++{
++  // Give every node a unique ID for representation purposes.
++  static int count;
++  this->id_ = count++;
++}
++
++Node::~Node()
++{
++}
++
++// Make a call node for FUNCTION.
++
++Node*
++Node::make_call(Named_object* function)
++{
++  return new Call_node(function);
++}
++
++// Make a connection node for OBJECT.
++
++Node*
++Node::make_connection(Named_object* object, Escapement_lattice e)
++{
++  return new Connection_node(object, e);
++}
++
++// Return this node's label, which will be the name seen in the graphical
++// representation.
++
++const std::string&
++Node::label()
++{
++  if (this->label_.empty())
++    {
++      this->label_ = "[label=\"";
++      this->label_ += this->object_->name();
++      this->label_ += "\"]";
++    }
++  return this->label_;
++}
++
++// Class Call_node.
++
++Call_node::Call_node(Named_object* function)
++  : Node(NODE_CALL, function)
++{ go_assert(function->is_function() || function->is_function_declaration()); }
++
++const std::string&
++Call_node::name()
++{
++  if (this->get_name().empty())
++    {
++      char buf[30];
++      snprintf(buf, sizeof buf, "CallNode%d", this->id());
++      this->set_name(std::string(buf));
++    }
++  return this->get_name();
++}
++
++// Class Connection_node.
++
++const std::string&
++Connection_node::name()
++{
++  if (this->get_name().empty())
++    {
++      char buf[30];
++      snprintf(buf, sizeof buf, "ConnectionNode%d", this->id());
++      this->set_name(std::string(buf));
++    }
++  return this->get_name();
++}
++
++const std::string&
++Connection_node::label()
++{
++  if (this->get_label().empty())
++    {
++      std::string label = "[label=\"";
++      label += this->object()->name();
++      label += "\",color=";
++      switch (this->escape_state_)
++      {
++      case ESCAPE_GLOBAL:
++	label += "red";
++	break;
++      case ESCAPE_ARG:
++	label += "blue";
++	break;
++      case ESCAPE_NONE:
++	label += "black";
++	break;
++      }
++      label += "]";
++      this->set_label(label);
++    }
++  return this->get_label();
++}
++
++// Dump a connection node and its edges to a dump file.
++
++void
++Connection_node::dump_connection(Connection_dump_context* cdc)
++{
++  cdc->write_string(this->name() + this->label());
++  cdc->write_c_string("\n");
++
++  for (std::set<Node*>::const_iterator p = this->edges().begin();
++       p != this->edges().end();
++       ++p)
++    {
++      cdc->write_string(this->name());
++      cdc->write_c_string("->");
++
++      if ((*p)->object()->is_function())
++	{
++	  char buf[100];
++	  snprintf(buf, sizeof buf, "dummy%d[lhead=cluster%d]",
++		   (*p)->id(), (*p)->id());
++	  cdc->write_c_string(buf);
++	}
++      else
++	cdc->write_string((*p)->name());
++      cdc->write_c_string("\n");
++    }
++}
++
++// The -fgo-dump-calls flag to activate call graph dumps in GraphViz DOT format.
++
++Go_dump call_graph_dump_flag("calls");
++
++// Class Call_dump_context.
++
++Call_dump_context::Call_dump_context(std::ostream* out)
++  : ostream_(out), gogo_(NULL)
++{ }
++
++// Dump files will be named %basename%.calls.dot
++
++const char* kCallDumpFileExtension = ".calls.dot";
++
++// Dump the call graph in DOT format.
++
++void
++Call_dump_context::dump(Gogo* gogo, const char* basename)
++{
++  std::ofstream* out = new std::ofstream();
++  std::string dumpname(basename);
++  dumpname += kCallDumpFileExtension;
++  out->open(dumpname.c_str());
++
++  if (out->fail())
++    {
++      error("cannot open %s:%m, -fgo-dump-calls ignored", dumpname.c_str());
++      return;
++    }
++
++  this->gogo_ = gogo;
++  this->ostream_ = out;
++
++  this->write_string("digraph CallGraph {\n");
++  std::set<Node*> call_graph = gogo->call_graph();
++
++  // Generate GraphViz nodes for each node.
++  for (std::set<Node*>::const_iterator p = call_graph.begin();
++       p != call_graph.end();
++       ++p)
++    {
++      this->write_string((*p)->name() + (*p)->label());
++      this->write_c_string("\n");
++      
++      // Generate a graphical representation of the caller-callee relationship.
++      std::set<Node*> callees = (*p)->edges();
++      for (std::set<Node*>::const_iterator ce = callees.begin();
++	   ce != callees.end();
++	   ++ce)
++	{
++	  this->write_string((*p)->name() + "->" + (*ce)->name());
++	  this->write_c_string("\n");
++	}
++    }
++  this->write_string("}");
++  out->close();
++}
++
++// Dump the Call Graph of the program to the dump file.
++
++void Gogo::dump_call_graph(const char* basename)
++{
++  if (::call_graph_dump_flag.is_enabled())
++    {
++      Call_dump_context cdc;
++      cdc.dump(this, basename);
++    }
++}
++
++// Implementation of String_dump interface.
++
++void
++Call_dump_context::write_c_string(const char* s)
++{
++  this->ostream() << s;
++}
++
++void
++Call_dump_context::write_string(const std::string& s)
++{
++  this->ostream() << s;
++}
++
++// The -fgo-dump-conns flag to activate connection graph dumps in
++// GraphViz DOT format.
++
++Go_dump connection_graph_dump_flag("conns");
++
++// Class Connection_dump_context.
++
++Connection_dump_context::Connection_dump_context(std::ostream* out)
++  : ostream_(out), gogo_(NULL)
++{ }
++
++// Dump files will be named %basename%.conns.dot
++
++const char* kConnectionDumpFileExtension = ".conns.dot";
++
++// Dump the connection graph in DOT format.
++
++void
++Connection_dump_context::dump(Gogo* gogo, const char* basename)
++{
++  std::ofstream* out = new std::ofstream();
++  std::string dumpname(basename);
++  dumpname += kConnectionDumpFileExtension;
++  out->open(dumpname.c_str());
++
++  if (out->fail())
++    {
++      error("cannot open %s:%m, -fgo-dump-conns ignored", dumpname.c_str());
++      return;
++    }
++
++  this->gogo_ = gogo;
++  this->ostream_ = out;
++
++  this->write_string("digraph ConnectionGraph {\n");
++  this->write_string("compound=true\n");
++
++  // Dump global objects.
++  std::set<Node*> globals = this->gogo_->global_connections();
++  this->write_c_string("subgraph globals{\n");
++  this->write_c_string("label=\"NonLocalGraph\"\n");
++  this->write_c_string("color=red\n");
++  for (std::set<Node*>::const_iterator p1 = globals.begin();
++       p1 != globals.end();
++       ++p1)
++    (*p1)->connection_node()->dump_connection(this);
++  this->write_c_string("}\n");
++
++  std::set<Node*> roots = this->gogo_->connection_roots();
++  for (std::set<Node*>::const_reverse_iterator p1 = roots.rbegin();
++       p1 != roots.rend();
++       ++p1)
++    {
++      std::set<Node*> objects = (*p1)->connection_node()->objects();
++
++      char buf[150];
++      snprintf(buf, sizeof buf, "subgraph cluster%d", (*p1)->id());
++      this->write_c_string(buf);
++      this->write_string("{\n");
++      snprintf(buf, sizeof buf, "dummy%d[shape=point,style=invis]\n",
++	       (*p1)->id());
++      this->write_c_string(buf);
++      this->write_string("label = \"" + (*p1)->object()->name() + "\"\n");
++
++      for (std::set<Node*>::const_iterator p2 = objects.begin();
++	   p2 != objects.end();
++	   ++p2)
++	(*p2)->connection_node()->dump_connection(this);
++
++      this->write_string("}\n");
++    }
++  this->write_string("}");
++  out->close();
++}
++
++void
++Gogo::dump_connection_graphs(const char* basename)
++{
++  if (::connection_graph_dump_flag.is_enabled())
++    {
++      Connection_dump_context cdc;
++      cdc.dump(this, basename);
++    }
++}
++
++// Implementation of String_dump interface.
++
++void
++Connection_dump_context::write_c_string(const char* s)
++{
++  this->ostream() << s;
++}
++
++void
++Connection_dump_context::write_string(const std::string& s)
++{
++  this->ostream() << s;
++}
++
++// A traversal class used to build a call graph for this program.
++
++class Build_call_graph : public Traverse
++{
++ public:
++  Build_call_graph(Gogo* gogo)
++    : Traverse(traverse_functions
++	       | traverse_expressions),
++      gogo_(gogo), current_function_(NULL)
++  { }
++
++  int
++  function(Named_object*);
++
++  int
++  expression(Expression**);
++
++ private:
++  // The IR.
++  Gogo* gogo_;
++  // The current function being traversed, for reference when traversing the
++  // function body.
++  Named_object* current_function_;
++};
++
++// Add each function to the call graph and then traverse each function's
++// body to find callee functions.
++
++int
++Build_call_graph::function(Named_object* fn)
++{
++  this->gogo_->add_call_node(fn);
++  go_assert(this->current_function_ == NULL);
++  this->current_function_ = fn;
++  fn->func_value()->traverse(this);
++  this->current_function_ = NULL;
++  return TRAVERSE_CONTINUE;
++}
++
++// Find function calls and add them as callees to CURRENT_FUNCTION.
++
++int
++Build_call_graph::expression(Expression** pexpr)
++{
++  if (this->current_function_ == NULL)
++    return TRAVERSE_CONTINUE;
++
++  Expression* expr = *pexpr;
++  Named_object* fn;
++  if (expr->call_expression() != NULL)
++    {
++      Func_expression* func = expr->call_expression()->fn()->func_expression();
++      if (func == NULL)
++	{
++	  // This is probably a variable holding a function value or a closure.
++	  return TRAVERSE_CONTINUE;
++	}
++      fn = func->named_object();
++    }
++  else if (expr->func_expression() != NULL)
++    fn = expr->func_expression()->named_object();
++  else
++    return TRAVERSE_CONTINUE;
++
++  Node* caller = this->gogo_->lookup_call_node(this->current_function_);
++  go_assert(caller != NULL);
++
++  // Create the callee here if it hasn't been seen yet.  This could also be a
++  // function defined in another package.
++  Node* callee = this->gogo_->add_call_node(fn);
++  caller->add_edge(callee);
++  return TRAVERSE_CONTINUE;
++}
++
++// Build the call graph.
++
++void
++Gogo::build_call_graph()
++{
++  Build_call_graph build_calls(this);
++  this->traverse(&build_calls);
++}
++
++// A traversal class used to build a connection graph for each node in the
++// call graph.
++
++class Build_connection_graphs : public Traverse
++{
++ public:
++  Build_connection_graphs(Gogo* gogo)
++    : Traverse(traverse_variables
++	       | traverse_statements),
++      gogo_(gogo), dataflow_(new Dataflow), current_function_(NULL)
++  {
++    // Collect dataflow information for this program.
++    this->dataflow_->initialize(this->gogo_);
++  }
++
++  void
++  set_current_function(Named_object* function)
++  { this->current_function_ = function; }
++
++  int
++  variable(Named_object*);
++
++  int
++  statement(Block*, size_t*, Statement*);
++
++
++ private:
++  // Handle a call EXPR referencing OBJECT.
++  void
++  handle_call(Named_object* object, Expression* expr);
++
++  // Get the initialization values of a composite literal EXPR.
++  Expression_list*
++  get_composite_arguments(Expression* expr);
++
++  // Handle defining OBJECT as a composite literal EXPR.
++  void
++  handle_composite_literal(Named_object* object, Expression* expr);
++
++  // Resolve the outermost named object of EXPR if there is one.
++  Named_object*
++  resolve_var_reference(Expression* expr);
++
++  // The IR.
++  Gogo* gogo_;
++  // The Dataflow information for this program.
++  Dataflow* dataflow_;
++  // The current function whose connection graph is being built.
++  Named_object* current_function_;
++};
++
++// Given an expression, return the outermost Named_object that it refers to.
++// This is used to model the simplification between assignments in our analysis.
++
++Named_object*
++Build_connection_graphs::resolve_var_reference(Expression* expr)
++{
++  bool done = false;
++  Expression* orig = expr;
++  while (!done)
++    {
++      // The goal of this loop is to find the variable being referenced, p,
++      // when the expression is:
++      switch (expr->classification())
++      {
++      case Expression::EXPRESSION_UNARY:
++	// &p or *p
++	expr = expr->unary_expression()->operand();
++	break;
++
++      case Expression::EXPRESSION_ARRAY_INDEX:
++	// p[i][j]
++	expr = expr->array_index_expression()->array();
++	break;
++
++      case Expression::EXPRESSION_FIELD_REFERENCE:
++	// p.i.j
++	orig = expr;
++	expr = expr->field_reference_expression()->expr();
++	break;
++
++      case Expression::EXPRESSION_RECEIVE:
++	// <- p
++	expr = expr->receive_expression()->channel();
++	break;
++
++      case Expression::EXPRESSION_BOUND_METHOD:
++	// p.c
++	expr = expr->bound_method_expression()->first_argument();
++	break;
++
++      case Expression::EXPRESSION_CALL:
++	// p.c()
++	expr = expr->call_expression()->fn();
++	break;
++
++      case Expression::EXPRESSION_TEMPORARY_REFERENCE:
++	// This is used after lowering, so try to retrieve the original
++	// expression that might have been lowered into a temporary statement.
++	expr = expr->temporary_reference_expression()->statement()->init();
++	if (expr == NULL)
++	  return NULL;
++	break;
++
++      case Expression::EXPRESSION_SET_AND_USE_TEMPORARY:
++	expr = expr->set_and_use_temporary_expression()->expression();
++	break;
++
++      case Expression::EXPRESSION_COMPOUND:
++	// p && q
++	expr = expr->compound_expression()->init();
++	break;
++
++      case Expression::EXPRESSION_CONDITIONAL:
++	// if p {
++	expr = expr->conditional_expression()->condition();
++	break;
++
++      case Expression::EXPRESSION_CONVERSION:
++	// T(p)
++	expr = expr->conversion_expression()->expr();
++	break;
++
++      case Expression::EXPRESSION_TYPE_GUARD:
++	// p.(T)
++	expr = expr->type_guard_expression()->expr();
++	break;
++
++      default:
++	done = true;
++	break;
++      }
++    }
++
++  Var_expression* ve = expr->var_expression();
++  if (ve != NULL)
++    {
++      Named_object* no = ve->named_object();
++      go_assert(no->is_variable() || no->is_result_variable());
++
++      if (no->is_variable()
++	  && no->var_value()->is_closure()
++	  && this->current_function_->func_value()->needs_closure())
++	{
++	  // CURRENT_FUNCTION is a closure and NO is being set to a
++	  // variable in the enclosing function.
++	  Named_object* closure = this->current_function_;
++
++	  // If NO is a closure variable, the expression is a field
++	  // reference to the enclosed variable.
++	  Field_reference_expression* fre =
++	    orig->deref()->field_reference_expression();
++	  if (fre == NULL)
++	    return NULL;
++
++	  unsigned int closure_index = fre->field_index();
++	  no = closure->func_value()->enclosing_var(closure_index - 1);
++	}
++      return no;
++    }
++  return NULL;
++}
++
++// For a call that references OBJECT, associate the OBJECT argument with the
++// appropriate call parameter.
++
++void
++Build_connection_graphs::handle_call(Named_object* object, Expression* e)
++{
++  // Only call expression statements are interesting
++  // e.g. 'func(var)' for which we can show var does not escape.
++  Call_expression* ce = e->call_expression();
++  if (ce == NULL || ce->args() == NULL)
++    return;
++  
++  // If the function call that references OBJECT is unknown, we must be
++  // conservative and assume every argument escapes.  A function call is unknown
++  // if it is a call to a function stored in a variable or a call to an
++  // interface method.
++  if (ce->fn()->func_expression() == NULL)
++    {
++      for (Expression_list::const_iterator arg = ce->args()->begin();
++	   arg != ce->args()->end();
++	   ++arg)
++	{
++	  Named_object* arg_no = this->resolve_var_reference(*arg);
++	  if (arg_no != NULL)
++	    {
++	      Connection_node* arg_node =
++		this->gogo_->add_connection_node(arg_no)->connection_node();
++	      arg_node->set_escape_state(Node::ESCAPE_ARG);
++	    }
++	}
++      return;
++    }
++
++  Named_object* callee = ce->fn()->func_expression()->named_object();
++  Function_type* fntype;
++  if (callee->is_function())
++    fntype = callee->func_value()->type();
++  else
++    fntype = callee->func_declaration_value()->type();
++
++  Node* callee_node = this->gogo_->lookup_connection_node(callee);
++  if (callee_node == NULL && callee->is_function())
++    {
++      // Might be a nested closure that hasn't been analyzed yet.
++      Named_object* currfn = this->current_function_;
++      callee_node = this->gogo_->add_connection_node(callee);
++      this->current_function_ = callee;
++      callee->func_value()->traverse(this);
++      this->current_function_ = currfn;
++    }
++
++  // First find which arguments OBJECT is to CALLEE.  Given a function call,
++  // OBJECT could be an argument multiple times e.g. CALLEE(OBJECT, OBJECT).
++  // TODO(cmang): This should be done by the Dataflow analysis so we don't have
++  // to do it each time we see a function call.  FIXME.
++  Expression_list* args = ce->args()->copy();
++  if (fntype->is_varargs()
++      && args->back()->slice_literal() != NULL)
++    {
++      // Is the function is varargs, the last argument is lowered into a slice
++      // containing all original arguments.  We want to traverse the original
++      // arguments here.
++      Slice_construction_expression* sce = args->back()->slice_literal();
++      for (Expression_list::const_iterator p = sce->vals()->begin();
++	   p != sce->vals()->end();
++	   ++p)
++	{
++	  if (*p != NULL)
++	    args->push_back(*p);
++	}
++    }
++
++  // ARG_POSITION is just a counter used to keep track of the index in the list
++  // of arguments to this call.  In a method call, the receiver will always be
++  // the first argument.  When looking at the function type, it will not be the
++  // first element in the parameter list; instead, the receiver will be
++  // non-NULL.  For convenience, mark the position of the receiver argument
++  // as negative.
++  int arg_position = fntype->is_method() ? -1 : 0;
++  std::list<int> positions;
++  for (Expression_list::const_iterator p = args->begin();
++       p != args->end();
++       ++p, ++arg_position)
++    {
++      Expression* arg = *p;
++
++      // An argument might be a chain of method calls, some of which are
++      // converted from value to pointer types.  Just remove the unary
++      // conversion if it exists.
++      if (arg->unary_expression() != NULL)
++	arg = arg->unary_expression()->operand();
++
++      // The reference to OBJECT might be in a nested call argument.
++      if (arg->call_expression() != NULL)
++	this->handle_call(object, arg);
++
++      std::vector<Named_object*> objects;
++      if (arg->is_composite_literal()
++	  || arg->heap_expression() != NULL)
++	{
++	  // For a call that has a composite literal as an argument, traverse
++	  // the initializers of the composite literal for extra objects to
++	  // associate with a parameter in this function.
++	  Expression_list* comp_args = this->get_composite_arguments(arg);
++	  if (comp_args == NULL)
++	    continue;
++
++	  for (size_t i = 0; i < comp_args->size(); ++i)
++	    {
++	      Expression* comp_arg = comp_args->at(i);
++	      if (comp_arg == NULL)
++		continue;
++	      else if (comp_arg->is_composite_literal()
++		       || comp_arg->heap_expression() != NULL)
++		{
++		  // Of course, there are situations where a composite literal
++		  // initialization value is also a composite literal.
++		  Expression_list* nested_args =
++		    this->get_composite_arguments(comp_arg);
++		  if (nested_args != NULL)
++		    comp_args->append(nested_args);
++		}
++
++	      Named_object* no = this->resolve_var_reference(comp_arg);
++	      if (no != NULL)
++		objects.push_back(no);
++	    }
++	}
++      else
++	{
++	  Named_object* arg_no = this->resolve_var_reference(arg);
++	  if (arg_no != NULL)
++	    objects.push_back(arg_no);
++	}
++
++      // There are no variables to consider for this parameter.
++      if (objects.empty())
++	continue;
++
++      for (std::vector<Named_object*>::const_iterator p1 = objects.begin();
++	   p1 != objects.end();
++	   ++p1)
++	{
++	  // If CALLEE is defined in another package and we have imported escape
++	  // information about its parameters, update the escape state of this
++	  // argument appropriately. If there is no escape information for this
++	  // function, we have to assume all arguments escape.
++	  if (callee->package() != NULL
++	      || fntype->is_builtin())
++	    {
++	      Node::Escapement_lattice param_escape = Node::ESCAPE_NONE;
++	      if (fntype->has_escape_info())
++		{
++		  if (arg_position == -1)
++		    {
++		      // Use the escape info from the receiver.
++		      param_escape = fntype->receiver_escape_state();
++		    }
++		  else if (fntype->parameters() != NULL)
++		    {
++		      const Node::Escape_states* states =
++			fntype->parameter_escape_states();
++
++		      int param_size = fntype->parameters()->size();
++		      if (arg_position >= param_size)
++			{
++			  go_assert(fntype->is_varargs());
++			  param_escape = states->back();
++			}
++		      else
++			param_escape =
++			  fntype->parameter_escape_states()->at(arg_position);
++		    }
++		}
++	      else
++		param_escape = Node::ESCAPE_ARG;
++
++	      Connection_node* arg_node =
++		this->gogo_->add_connection_node(*p1)->connection_node();
++	      if (arg_node->escape_state() > param_escape)
++		arg_node->set_escape_state(param_escape);
++	    }
++
++	  if (*p1 == object)
++	    positions.push_back(arg_position);
++	}
++    }
++
++  // If OBJECT was not found in CALLEE's arguments, OBJECT is likely a
++  // subexpression of one of the arguments e.g. CALLEE(a[OBJECT]).  This call
++  // does not give any useful information about whether OBJECT escapes.
++  if (positions.empty())
++    return;
++
++  // The idea here is to associate the OBJECT in the caller context with the
++  // parameter in the callee context.  This also needs to consider varargs.
++  // This only works with functions with arguments.
++  if (!callee->is_function())
++    return;
++
++  // Use the bindings in the callee to lookup the associated parameter.
++  const Bindings* callee_bindings = callee->func_value()->block()->bindings();
++
++  // Next find the corresponding named parameters in the function signature.
++  const Typed_identifier_list* params = fntype->parameters();
++  for (std::list<int>::const_iterator pos = positions.begin();
++       params != NULL && pos != positions.end();
++       ++pos)
++    {
++      std::string param_name;
++      bool param_is_interface = false;
++      if (*pos >= 0 && params->size() <= static_cast<size_t>(*pos))
++	{
++	  // There were more arguments than there are parameters. This must be
++	  // varargs and the argument corresponds to the last parameter.
++	  go_assert(fntype->is_varargs());
++	  param_name = params->back().name();
++	}
++      else if (*pos < 0)
++	{
++	  // We adjust the recorded position of method arguments by one to
++	  // account for the receiver, so *pos == -1 implies this is the
++	  // receiver and this must be a method call.
++	  go_assert(fntype->is_method() && fntype->receiver() != NULL);
++	  param_name = fntype->receiver()->name();
++	}
++      else
++	{
++	  param_name = params->at(*pos).name();
++	  param_is_interface =
++	    (params->at(*pos).type()->interface_type() != NULL);
++	}
++
++      if (Gogo::is_sink_name(param_name) || param_name.empty())
++	continue;
++
++      // Get the object for the associated parameter in this binding.
++      Named_object* param_no = callee_bindings->lookup_local(param_name);
++      go_assert(param_no != NULL);
++
++      // Add an edge from ARG_NODE in the caller context to the PARAM_NODE in
++      // the callee context.
++      if (object->is_variable() && object->var_value()->is_closure())
++	{
++	  int position = *pos;
++	  if (fntype->is_method())
++	    ++position;
++
++	  // Calling a function within a closure with a closure argument.
++	  // Resolve the real variable using the closure argument.
++	  object = this->resolve_var_reference(ce->args()->at(position));
++	}
++
++      Node* arg_node = this->gogo_->add_connection_node(object);
++      Node* param_node = this->gogo_->add_connection_node(param_no);
++
++      // Act conservatively when an argument is converted into an interface
++      // value.  FIXME.
++      if (param_is_interface)
++	param_node->connection_node()->set_escape_state(Node::ESCAPE_ARG);
++      param_node->add_edge(arg_node);
++    }
++
++  // This is a method call with one argument: the receiver.
++  if (params == NULL)
++    {
++      go_assert(positions.size() == 1);
++      std::string rcvr_name = fntype->receiver()->name();
++      if (Gogo::is_sink_name(rcvr_name) || rcvr_name.empty())
++	return;
++
++      Named_object* rcvr_no = callee_bindings->lookup_local(rcvr_name);
++      Node* arg_node = this->gogo_->add_connection_node(object);
++      Node* rcvr_node = this->gogo_->add_connection_node(rcvr_no);
++      rcvr_node->add_edge(arg_node);
++    }
++}
++
++// Given a composite literal expression, return the initialization values.
++// This is used to handle situations where call and composite literal
++// expressions have nested composite literals as arguments/initializers.
++
++Expression_list*
++Build_connection_graphs::get_composite_arguments(Expression* expr)
++{
++  // A heap expression is just any expression that takes the address of a
++  // composite literal.
++  if (expr->heap_expression() != NULL)
++    expr = expr->heap_expression()->expr();
++
++  switch (expr->classification())
++    {
++    case Expression::EXPRESSION_STRUCT_CONSTRUCTION:
++      return expr->struct_literal()->vals();
++
++    case Expression::EXPRESSION_FIXED_ARRAY_CONSTRUCTION:
++      return expr->array_literal()->vals();
++
++    case Expression::EXPRESSION_SLICE_CONSTRUCTION:
++      return expr->slice_literal()->vals();
++
++    case Expression::EXPRESSION_MAP_CONSTRUCTION:
++      return expr->map_literal()->vals();
++
++    default:
++      return NULL;
++    }
++}
++
++// Given an OBJECT defined as a composite literal EXPR, create edges between
++// OBJECT and all variables referenced in EXPR.
++
++void
++Build_connection_graphs::handle_composite_literal(Named_object* object,
++						  Expression* expr)
++{
++  Expression_list* args = this->get_composite_arguments(expr);
++  if (args == NULL)
++    return;
++
++  std::vector<Named_object*> composite_args;
++  for (Expression_list::const_iterator p = args->begin();
++       p != args->end();
++       ++p)
++    {
++      if (*p == NULL)
++	continue;
++      else if ((*p)->call_expression() != NULL)
++	this->handle_call(object, *p);
++      else if ((*p)->is_composite_literal()
++	       || (*p)->heap_expression() != NULL)
++	this->handle_composite_literal(object, *p);
++
++      Named_object* no = this->resolve_var_reference(*p);
++      if (no != NULL)
++	composite_args.push_back(no);
++    }
++
++  Node* object_node = this->gogo_->add_connection_node(object);
++  for (std::vector<Named_object*>::const_iterator p = composite_args.begin();
++       p != composite_args.end();
++       ++p)
++    {
++      Node* arg_node = this->gogo_->add_connection_node(*p);
++      object_node->add_edge(arg_node);
++    }
++}
++
++// Create connection nodes for each variable in a called function.
++
++int
++Build_connection_graphs::variable(Named_object* var)
++{
++  Node* var_node = this->gogo_->add_connection_node(var);
++  Node* root = this->gogo_->lookup_connection_node(this->current_function_);
++  go_assert(root != NULL);
++
++  // Add VAR to the set of objects in CURRENT_FUNCTION's connection graph.
++  root->connection_node()->add_object(var_node);
++
++  // A function's results always escape.
++  if (var->is_result_variable())
++    var_node->connection_node()->set_escape_state(Node::ESCAPE_ARG);
++
++  // Create edges from a variable to its definitions.
++  const Dataflow::Defs* defs = this->dataflow_->find_defs(var);
++  if (defs != NULL)
++    {
++      for (Dataflow::Defs::const_iterator p = defs->begin();
++	   p != defs->end();
++	   ++p)
++	{
++	  if (p->val == NULL)
++	    continue;
++
++	  if (p->val->func_expression() != NULL)
++	    {
++	      // VAR is being defined as a function object.
++	      Named_object* fn = p->val->func_expression()->named_object();
++	      Node* fn_node = this->gogo_->add_connection_node(fn);
++	      var_node->add_edge(fn_node);
++	    }
++	  else if(p->val->is_composite_literal()
++		  || p->val->heap_expression() != NULL)
++	    this->handle_composite_literal(var, p->val);
++
++	  Named_object* ref = this->resolve_var_reference(p->val);
++	  if (ref == NULL)
++	    continue;
++
++	  Node* ref_node = this->gogo_->add_connection_node(ref);
++	  var_node->add_edge(ref_node);
++	}
++    }
++
++  // Create edges from a reference to a variable.
++  const Dataflow::Refs* refs = this->dataflow_->find_refs(var);
++  if (refs != NULL)
++    {
++      for (Dataflow::Refs::const_iterator p = refs->begin();
++	   p != refs->end();
++	   ++p)
++	{
++	  switch (p->statement->classification())
++	  {
++	  case Statement::STATEMENT_ASSIGNMENT:
++	    {
++	      Assignment_statement* assn =
++		p->statement->assignment_statement();
++	      Named_object* lhs_no = this->resolve_var_reference(assn->lhs());
++	      Named_object* rhs_no = this->resolve_var_reference(assn->rhs());
++
++	      if (assn->rhs()->is_composite_literal()
++		  || assn->rhs()->heap_expression() != NULL)
++		this->handle_composite_literal(var, assn->rhs());
++	      else if (assn->rhs()->call_result_expression() != NULL)
++		{
++		  // V's initialization will be a call result if
++		  // V, V1 := call(VAR).
++		  // There are no useful edges to make from V, but we want
++		  // to make sure we handle the call that references VAR.
++		  Expression* call =
++		    assn->rhs()->call_result_expression()->call();
++		  this->handle_call(var, call);
++		}
++	      else if (assn->rhs()->call_expression() != NULL)
++		this->handle_call(var, assn->rhs());
++
++	      // If there is no standalone variable on the rhs, this could be a
++	      // binary expression, which isn't interesting for analysis or a
++	      // composite literal or call expression, which we handled above.
++	      // If the underlying variable on the rhs isn't VAR then it is
++	      // likely an indexing expression where VAR is the index.
++	      if(lhs_no == NULL
++		 || rhs_no == NULL
++		 || rhs_no != var)
++		break;
++
++	      var_node->connection_node()->set_escape_state(Node::ESCAPE_ARG);
++
++	      Node* def_node = this->gogo_->add_connection_node(lhs_no);
++	      def_node->add_edge(var_node);
++	    }
++	    break;
++
++	  case Statement::STATEMENT_SEND:
++	    {
++	      Send_statement* send = p->statement->send_statement();
++	      Named_object* chan_no = this->resolve_var_reference(send->channel());
++	      Named_object* val_no = resolve_var_reference(send->val());
++
++	      if (chan_no == NULL || val_no == NULL)
++		break;
++
++	      Node* chan_node = this->gogo_->add_connection_node(chan_no);
++	      Node* val_node = this->gogo_->add_connection_node(val_no);
++	      chan_node->add_edge(val_node);
++	    }
++	    break;
++
++	  case Statement::STATEMENT_EXPRESSION:
++	    this->handle_call(var,
++	    		      p->statement->expression_statement()->expr());
++	    break;
++
++	  case Statement::STATEMENT_GO:
++	  case Statement::STATEMENT_DEFER:
++	    // Any variable referenced via a go or defer statement escapes to
++	    // a different goroutine.
++	    if (var_node->connection_node()->escape_state() > Node::ESCAPE_ARG)
++	      var_node->connection_node()->set_escape_state(Node::ESCAPE_ARG);
++	    this->handle_call(var, p->statement->thunk_statement()->call());
++	    break;
++
++	  case Statement::STATEMENT_IF:
++	    {
++	      // If this is a reference via an if statement, it is interesting
++	      // if there is a function call in the condition.  References in
++	      // the then and else blocks would be discovered in an earlier
++	      // case.
++	      If_statement* if_stmt = p->statement->if_statement();
++	      Expression* cond = if_stmt->condition();
++	      if (cond->call_expression() != NULL)
++		this->handle_call(var, cond);
++	      else if (cond->binary_expression() != NULL)
++		{
++		  Binary_expression* comp = cond->binary_expression();
++		  if (comp->left()->call_expression() != NULL)
++		    this->handle_call(var, comp->left());
++		  if (comp->right()->call_expression() != NULL)
++		    this->handle_call(var, comp->right());
++		}
++	    }
++	    break;
++
++	  case Statement::STATEMENT_VARIABLE_DECLARATION:
++	    {
++	      // VAR could be referenced as the initialization for another
++	      // variable, V e.g. V := call(VAR) or V := &T{field: VAR}.
++	      Variable_declaration_statement* decl =
++		p->statement->variable_declaration_statement();
++	      Named_object* decl_no = decl->var();
++	      Variable* v = decl_no->var_value();
++
++	      Expression* init = v->init();
++	      if (init == NULL)
++		break;
++
++	      if (init->is_composite_literal()
++		  || init->heap_expression() != NULL)
++		{
++		  // Create edges between DECL_NO and each named object in the
++		  // composite literal.
++		  this->handle_composite_literal(decl_no, init);
++		}
++	      else if (init->call_result_expression() != NULL)
++		{
++		  // V's initialization will be a call result if
++		  // V, V1 := call(VAR).
++		  // There's no useful edges to make from V or V1, but we want
++		  // to make sure we handle the call that references VAR.
++		  Expression* call = init->call_result_expression()->call();
++		  this->handle_call(var, call);
++		}
++	      else if (init->call_expression() != NULL)
++		this->handle_call(var, init);
++	    }
++	    break;
++
++	  case Statement::STATEMENT_TEMPORARY:
++	    {
++	      // A call to a function with mutliple results that references VAR
++	      // will be lowered into a temporary at this point.  Make sure the
++	      // call that references VAR is handled.
++	      Expression* init = p->statement->temporary_statement()->init();
++	      if (init == NULL)
++		break;
++	      else if (init->call_result_expression() != NULL)
++		{
++		  Expression* call = init->call_result_expression()->call();
++		  this->handle_call(var, call);
++		}
++	    }
++
++	  default:
++	    break;
++	  }
++	}
++    }
++  return TRAVERSE_CONTINUE;
++}
++
++// Traverse statements to find interesting references that might have not
++// been recorded in the dataflow analysis.  For example, many statements
++// in closures are not properly recorded during dataflow analysis.  This should
++// handle all of the cases handled above in statements that reference a
++// variable.  FIXME.
++
++int
++Build_connection_graphs::statement(Block*, size_t*, Statement* s)
++{
++  switch(s->classification())
++  {
++  case Statement::STATEMENT_ASSIGNMENT:
++    {
++      Assignment_statement* assn = s->assignment_statement();
++      Named_object* lhs_no = this->resolve_var_reference(assn->lhs());
++
++      if (lhs_no == NULL)
++	break;
++
++      if (assn->rhs()->func_expression() != NULL)
++	{
++	  Node* lhs_node = this->gogo_->add_connection_node(lhs_no);
++	  Named_object* fn = assn->rhs()->func_expression()->named_object();
++	  Node* fn_node = this->gogo_->add_connection_node(fn);
++	  lhs_node->add_edge(fn_node);
++	}
++      else if (assn->rhs()->call_expression() != NULL)
++	this->handle_call(lhs_no, assn->rhs()->call_expression());
++      else
++	{
++	  Named_object* rhs_no = this->resolve_var_reference(assn->rhs());
++	  if (rhs_no != NULL)
++	    {
++	      Node* lhs_node = this->gogo_->add_connection_node(lhs_no);
++	      Node* rhs_node = this->gogo_->add_connection_node(rhs_no);
++	      lhs_node->add_edge(rhs_node);
++	    }
++	}
++    }
++    break;
++
++  case Statement::STATEMENT_SEND:
++    {
++      Send_statement* send = s->send_statement();
++      Named_object* chan_no = this->resolve_var_reference(send->channel());
++      Named_object* val_no = this->resolve_var_reference(send->val());
++
++      if (chan_no == NULL || val_no == NULL)
++	break;
++
++      Node* chan_node = this->gogo_->add_connection_node(chan_no);
++      Node* val_node = this->gogo_->add_connection_node(val_no);
++      chan_node->add_edge(val_node);
++    }
++    break;
++
++  case Statement::STATEMENT_EXPRESSION:
++    {
++      Expression* expr = s->expression_statement()->expr();
++      if (expr->call_expression() != NULL)
++	{
++	  // It's not clear what variables we are trying to find references to
++	  // so just use the arguments to this call.
++	  Expression_list* args = expr->call_expression()->args();
++	  if (args == NULL)
++	    break;
++
++	  for (Expression_list::const_iterator p = args->begin();
++	       p != args->end();
++	       ++p)
++	    {
++	      Named_object* no = this->resolve_var_reference(*p);
++	      if (no != NULL)
++		this->handle_call(no, expr);
++	    }
++	}
++    }
++    break;
++
++  default:
++    break;
++  }
++
++  return TRAVERSE_CONTINUE;
++}
++
++// Build the connection graphs for each function present in the call graph.
++
++void
++Gogo::build_connection_graphs()
++{
++  Build_connection_graphs build_conns(this);
++
++  for (std::set<Node*>::const_iterator p = this->call_graph_.begin();
++       p != this->call_graph_.end();
++       ++p)
++    {
++      Named_object* func = (*p)->object();
++      
++      go_assert(func->is_function() || func->is_function_declaration());
++      Function_type* fntype;
++      if (func->is_function())
++	fntype = func->func_value()->type();
++      else
++	fntype = func->func_declaration_value()->type();
++      if (fntype->is_builtin())
++	continue;
++
++      this->add_connection_node(func);
++      build_conns.set_current_function(func);
++      if (func->is_function())
++	{
++	  // A pointer receiver of a method always escapes from the method.
++	  if (fntype->is_method() &&
++	      fntype->receiver()->type()->points_to() != NULL)
++	    {
++	      const Bindings* callee_bindings =
++		func->func_value()->block()->bindings();
++	      std::string rcvr_name = fntype->receiver()->name();
++	      if (Gogo::is_sink_name(rcvr_name) || rcvr_name.empty())
++		return;
++
++	      Named_object* rcvr_no = callee_bindings->lookup_local(rcvr_name);
++	      Node* rcvr_node = this->add_connection_node(rcvr_no);
++	      rcvr_node->connection_node()->set_escape_state(Node::ESCAPE_ARG);
++	    }
++	  func->func_value()->traverse(&build_conns);
++	}
++    }
++}
++
++void
++Gogo::analyze_reachability()
++{
++  std::list<Node*> worklist;
++
++  // Run reachability analysis on all globally escaping objects.
++  for (std::set<Node*>::const_iterator p = this->global_connections_.begin();
++       p != this->global_connections_.end();
++       ++p)
++    worklist.push_back(*p);
++
++  while (!worklist.empty())
++    {
++      Node* m = worklist.front();
++      worklist.pop_front();
++
++      for (std::set<Node*>::iterator n = m->edges().begin();
++	   n != m->edges().end();
++	   ++n)
++	{
++	  // If an object can be reached from a node with ESCAPE_GLOBAL,
++	  // it also must ESCAPE_GLOBAL.
++	  if ((*n)->connection_node()->escape_state() != Node::ESCAPE_GLOBAL)
++	    {
++	      (*n)->connection_node()->set_escape_state(Node::ESCAPE_GLOBAL);
++	      worklist.push_back(*n);
++	    }
++	}
++    }
++
++  // Run reachability analysis on all objects that escape via arguments.
++  for (Named_escape_nodes::const_iterator p =
++	 this->named_connection_nodes_.begin();
++       p != this->named_connection_nodes_.end();
++       ++p)
++    {
++      if (p->second->connection_node()->escape_state() == Node::ESCAPE_ARG)
++	worklist.push_back(p->second);
++    }
++
++  while (!worklist.empty())
++    {
++      Node* m = worklist.front();
++      worklist.pop_front();
++
++      for (std::set<Node*>::iterator n = m->edges().begin();
++	   n != m->edges().end();
++	   ++n)
++	{
++	  // If an object can be reached from a node with ESCAPE_ARG,
++	  // it is ESCAPE_ARG or ESCAPE_GLOBAL.
++	  if ((*n)->connection_node()->escape_state() > Node::ESCAPE_ARG)
++	    {
++	      (*n)->connection_node()->set_escape_state(Node::ESCAPE_ARG);
++	      worklist.push_back(*n);
++	    }
++	}
++    }  
++}
++
++// Iterate over all functions analyzed in the analysis, recording escape
++// information for each receiver and parameter.
++
++void
++Gogo::mark_escaping_signatures()
++{
++  for (std::set<Node*>::const_iterator p = this->call_graph_.begin();
++       p != this->call_graph_.end();
++       ++p)
++    {
++      Named_object* fn = (*p)->object();
++      if (!fn->is_function())
++	continue;
++
++      Function* func = fn->func_value();
++      Function_type* fntype = func->type();
++      const Bindings* bindings = func->block()->bindings();
++
++      // If this is a method, set the escape state of the receiver.
++      if (fntype->is_method())
++	{
++	  std::string rcvr_name = fntype->receiver()->name();
++	  if (rcvr_name.empty() || Gogo::is_sink_name(rcvr_name))
++	    fntype->set_receiver_escape_state(Node::ESCAPE_NONE);
++	  else
++	    {
++	      Named_object* rcvr_no = bindings->lookup_local(rcvr_name);
++	      go_assert(rcvr_no != NULL);
++
++	      Node* rcvr_node = this->lookup_connection_node(rcvr_no);
++	      if (rcvr_node != NULL)
++		{
++		  Node::Escapement_lattice e =
++		    rcvr_node->connection_node()->escape_state();
++		  fntype->set_receiver_escape_state(e);
++		}
++	      else
++		fntype->set_receiver_escape_state(Node::ESCAPE_NONE);
++	    }
++	  fntype->set_has_escape_info();
++	}
++
++      const Typed_identifier_list* params = fntype->parameters();
++      if (params == NULL)
++	continue;
++
++      fntype->set_has_escape_info();
++      Node::Escape_states* param_escape_states = new Node::Escape_states;
++      for (Typed_identifier_list::const_iterator p1 = params->begin();
++	   p1 != params->end();
++	   ++p1)
++	{
++	  std::string param_name = p1->name();
++	  if (param_name.empty() || Gogo::is_sink_name(param_name))
++	    param_escape_states->push_back(Node::ESCAPE_NONE);
++	  else
++	    {
++	      Named_object* param_no = bindings->lookup_local(param_name);
++	      go_assert(param_no != NULL);
++
++	      Node* param_node = this->lookup_connection_node(param_no);
++	      if (param_node == NULL)
++		{
++		  param_escape_states->push_back(Node::ESCAPE_NONE);
++		  continue;
++		}
++
++	      Node::Escapement_lattice e =
++		param_node->connection_node()->escape_state();
++	      param_escape_states->push_back(e);
++	    }
++	}
++      go_assert(params->size() == param_escape_states->size());
++      fntype->set_parameter_escape_states(param_escape_states);
++    }
++}
++
++class Optimize_allocations : public Traverse
++{
++ public:
++  Optimize_allocations(Gogo* gogo)
++    : Traverse(traverse_variables),
++      gogo_(gogo)
++  { }
++
++  int
++  variable(Named_object*);
++
++ private:
++  // The IR.
++  Gogo* gogo_;
++};
++
++// The -fgo-optimize-alloc flag activates this escape analysis.
++
++Go_optimize optimize_allocation_flag("allocs");
++
++// Propagate escape information for each variable.
++
++int
++Optimize_allocations::variable(Named_object* var)
++{
++  Node* var_node = this->gogo_->lookup_connection_node(var);
++  if (var_node == NULL
++      || var_node->connection_node()->escape_state() != Node::ESCAPE_NONE)
++    return TRAVERSE_CONTINUE;
++
++  if (var->is_variable())
++    {
++      if (var->var_value()->is_address_taken())
++      	var->var_value()->set_does_not_escape();
++      if (var->var_value()->init() != NULL
++	  && var->var_value()->init()->allocation_expression() != NULL)
++	{
++	  Allocation_expression* alloc =
++	    var->var_value()->init()->allocation_expression();
++	  alloc->set_allocate_on_stack();
++	}
++    }
++  else if (var->is_result_variable()
++	   && var->result_var_value()->is_address_taken())
++    var->result_var_value()->set_does_not_escape();
++
++  return TRAVERSE_CONTINUE;
++}
++
++// Perform escape analysis on this program and optimize allocations using
++// the derived information if -fgo-optimize-allocs.
++
++void
++Gogo::optimize_allocations(const char** filenames)
++{
++  if (!::optimize_allocation_flag.is_enabled() || saw_errors())
++    return;
++
++  // Build call graph for this program.
++  this->build_call_graph();
++
++  // Dump the call graph for this program if -fgo-dump-calls is enabled.
++  this->dump_call_graph(filenames[0]);
++
++  // Build the connection graphs for this program.
++  this->build_connection_graphs();
++
++  // Dump the connection graphs if -fgo-dump-connections is enabled.
++  this->dump_connection_graphs(filenames[0]);
++
++  // Given the connection graphs for this program, perform a reachability
++  // analysis to determine what objects escape.
++  this->analyze_reachability();
++
++  // Propagate escape information to variables and variable initializations.
++  Optimize_allocations optimize_allocs(this);
++  this->traverse(&optimize_allocs);
++
++  // Store escape information for a function's receivers and parameters in the
++  // function's signature for use when exporting package information.
++  this->mark_escaping_signatures();
++}
+Index: b/src/gcc/go/gofrontend/import.cc
+===================================================================
+--- a/src/gcc/go/gofrontend/import.cc
++++ b/src/gcc/go/gofrontend/import.cc
+@@ -502,16 +502,28 @@ Import::import_func(Package* package)
+ {
+   std::string name;
+   Typed_identifier* receiver;
++  Node::Escapement_lattice rcvr_escape;
+   Typed_identifier_list* parameters;
++  Node::Escape_states* param_escapes;
+   Typed_identifier_list* results;
+   bool is_varargs;
+-  Function::import_func(this, &name, &receiver, &parameters, &results,
+-			&is_varargs);
++  bool has_escape_info;
++  Function::import_func(this, &name, &receiver, &rcvr_escape, &parameters,
++			&param_escapes, &results, &is_varargs,
++			&has_escape_info);
+   Function_type *fntype = Type::make_function_type(receiver, parameters,
+ 						   results, this->location_);
+   if (is_varargs)
+     fntype->set_is_varargs();
+ 
++  if (has_escape_info)
++    {
++      if (fntype->is_method())
++	fntype->set_receiver_escape_state(rcvr_escape);
++      fntype->set_parameter_escape_states(param_escapes);
++      fntype->set_has_escape_info();
++    }
++
+   Location loc = this->location_;
+   Named_object* no;
+   if (fntype->is_method())
+@@ -762,6 +774,19 @@ Import::read_type()
+   return type;
+ }
+ 
++// Read escape info in the import stream.
++
++Node::Escapement_lattice
++Import::read_escape_info()
++{
++  Stream* stream = this->stream_;
++  this->require_c_string("<escape ");
++
++  int escape_value = stream->get_char() - '0';
++  this->require_c_string(">");
++  return Node::Escapement_lattice(escape_value);
++}
++
+ // Register the builtin types.
+ 
+ void
+Index: b/src/gcc/go/gofrontend/expressions.cc
+===================================================================
+--- a/src/gcc/go/gofrontend/expressions.cc
++++ b/src/gcc/go/gofrontend/expressions.cc
+@@ -3017,100 +3017,7 @@ Expression::make_iota()
+   return &iota_expression;
+ }
+ 
+-// A type conversion expression.
+-
+-class Type_conversion_expression : public Expression
+-{
+- public:
+-  Type_conversion_expression(Type* type, Expression* expr,
+-			     Location location)
+-    : Expression(EXPRESSION_CONVERSION, location),
+-      type_(type), expr_(expr), may_convert_function_types_(false)
+-  { }
+-
+-  // Return the type to which we are converting.
+-  Type*
+-  type() const
+-  { return this->type_; }
+-
+-  // Return the expression which we are converting.
+-  Expression*
+-  expr() const
+-  { return this->expr_; }
+-
+-  // Permit converting from one function type to another.  This is
+-  // used internally for method expressions.
+-  void
+-  set_may_convert_function_types()
+-  {
+-    this->may_convert_function_types_ = true;
+-  }
+-
+-  // Import a type conversion expression.
+-  static Expression*
+-  do_import(Import*);
+-
+- protected:
+-  int
+-  do_traverse(Traverse* traverse);
+-
+-  Expression*
+-  do_lower(Gogo*, Named_object*, Statement_inserter*, int);
+-
+-  Expression*
+-  do_flatten(Gogo*, Named_object*, Statement_inserter*);
+-
+-  bool
+-  do_is_constant() const;
+-
+-  bool
+-  do_is_immutable() const;
+-
+-  bool
+-  do_numeric_constant_value(Numeric_constant*) const;
+-
+-  bool
+-  do_string_constant_value(std::string*) const;
+-
+-  Type*
+-  do_type()
+-  { return this->type_; }
+-
+-  void
+-  do_determine_type(const Type_context*)
+-  {
+-    Type_context subcontext(this->type_, false);
+-    this->expr_->determine_type(&subcontext);
+-  }
+-
+-  void
+-  do_check_types(Gogo*);
+-
+-  Expression*
+-  do_copy()
+-  {
+-    return new Type_conversion_expression(this->type_, this->expr_->copy(),
+-					  this->location());
+-  }
+-
+-  Bexpression*
+-  do_get_backend(Translate_context* context);
+-
+-  void
+-  do_export(Export*) const;
+-
+-  void
+-  do_dump_expression(Ast_dump_context*) const;
+-
+- private:
+-  // The type to convert to.
+-  Type* type_;
+-  // The expression to convert.
+-  Expression* expr_;
+-  // True if this is permitted to convert function types.  This is
+-  // used internally for method expressions.
+-  bool may_convert_function_types_;
+-};
++// Class Type_conversion_expression.
+ 
+ // Traversal.
+ 
+@@ -3300,6 +3207,15 @@ Type_conversion_expression::do_string_co
+   return false;
+ }
+ 
++// Determine the resulting type of the conversion.
++
++void
++Type_conversion_expression::do_determine_type(const Type_context*)
++{
++  Type_context subcontext(this->type_, false);
++  this->expr_->determine_type(&subcontext);
++}
++
+ // Check that types are convertible.
+ 
+ void
+@@ -3750,6 +3666,19 @@ Unary_expression::do_flatten(Gogo* gogo,
+         }
+     }
+ 
++  if (this->op_ == OPERATOR_AND)
++    {
++      if (this->expr_->var_expression() != NULL)
++	{
++	  Named_object* var = this->expr_->var_expression()->named_object();
++	  if (var->is_variable())
++	    this->escapes_ = var->var_value()->escapes();
++	  if (var->is_result_variable())
++	    this->escapes_ = var->result_var_value()->escapes();
++	}
++      this->expr_->address_taken(this->escapes_);
++    }
++
+   if (this->create_temp_ && !this->expr_->is_variable())
+     {
+       Temporary_statement* temp =
+@@ -4070,10 +3999,7 @@ Unary_expression::do_check_types(Gogo*)
+ 	    }
+ 	}
+       else
+-        {
+-          this->expr_->address_taken(this->escapes_);
+-          this->expr_->issue_nil_check();
+-        }
++	this->expr_->issue_nil_check();
+       break;
+ 
+     case OPERATOR_MULT:
+@@ -6362,13 +6288,15 @@ Bound_method_expression::create_thunk(Go
+ 
+   Function_type* new_fntype = orig_fntype->copy_with_names();
+ 
+-  Named_object* new_no = gogo->start_function(Gogo::thunk_name(), new_fntype,
++  std::string thunk_name = Gogo::thunk_name();
++  Named_object* new_no = gogo->start_function(thunk_name, new_fntype,
+ 					      false, loc);
+ 
+   Variable* cvar = new Variable(closure_type, NULL, false, false, false, loc);
+   cvar->set_is_used();
+   cvar->set_is_closure();
+-  Named_object* cp = Named_object::make_variable("$closure", NULL, cvar);
++  Named_object* cp = Named_object::make_variable("$closure" + thunk_name,
++						 NULL, cvar);
+   new_no->func_value()->set_closure_var(cp);
+ 
+   gogo->start_block(loc);
+@@ -8082,7 +8010,9 @@ Builtin_call_expression::do_copy()
+ {
+   Call_expression* bce =
+     new Builtin_call_expression(this->gogo_, this->fn()->copy(),
+-				this->args()->copy(),
++				(this->args() == NULL
++				 ? NULL
++				 : this->args()->copy()),
+ 				this->is_varargs(),
+ 				this->location());
+ 
+@@ -9517,52 +9447,7 @@ Expression::make_call(Expression* fn, Ex
+   return new Call_expression(fn, args, is_varargs, location);
+ }
+ 
+-// A single result from a call which returns multiple results.
+-
+-class Call_result_expression : public Expression
+-{
+- public:
+-  Call_result_expression(Call_expression* call, unsigned int index)
+-    : Expression(EXPRESSION_CALL_RESULT, call->location()),
+-      call_(call), index_(index)
+-  { }
+-
+- protected:
+-  int
+-  do_traverse(Traverse*);
+-
+-  Type*
+-  do_type();
+-
+-  void
+-  do_determine_type(const Type_context*);
+-
+-  void
+-  do_check_types(Gogo*);
+-
+-  Expression*
+-  do_copy()
+-  {
+-    return new Call_result_expression(this->call_->call_expression(),
+-				      this->index_);
+-  }
+-
+-  bool
+-  do_must_eval_in_order() const
+-  { return true; }
+-
+-  Bexpression*
+-  do_get_backend(Translate_context*);
+-
+-  void
+-  do_dump_expression(Ast_dump_context*) const;
+-
+- private:
+-  // The underlying call expression.
+-  Expression* call_;
+-  // Which result we want.
+-  unsigned int index_;
+-};
++// Class Call_result_expression.
+ 
+ // Traverse a call result.
+ 
+@@ -9825,85 +9710,7 @@ Expression::make_index(Expression* left,
+   return new Index_expression(left, start, end, cap, location);
+ }
+ 
+-// An array index.  This is used for both indexing and slicing.
+-
+-class Array_index_expression : public Expression
+-{
+- public:
+-  Array_index_expression(Expression* array, Expression* start,
+-			 Expression* end, Expression* cap, Location location)
+-    : Expression(EXPRESSION_ARRAY_INDEX, location),
+-      array_(array), start_(start), end_(end), cap_(cap), type_(NULL)
+-  { }
+-
+- protected:
+-  int
+-  do_traverse(Traverse*);
+-
+-  Expression*
+-  do_flatten(Gogo*, Named_object*, Statement_inserter*);
+-
+-  Type*
+-  do_type();
+-
+-  void
+-  do_determine_type(const Type_context*);
+-
+-  void
+-  do_check_types(Gogo*);
+-
+-  Expression*
+-  do_copy()
+-  {
+-    return Expression::make_array_index(this->array_->copy(),
+-					this->start_->copy(),
+-					(this->end_ == NULL
+-					 ? NULL
+-					 : this->end_->copy()),
+-					(this->cap_ == NULL
+-					 ? NULL
+-					 : this->cap_->copy()),
+-					this->location());
+-  }
+-
+-  bool
+-  do_must_eval_subexpressions_in_order(int* skip) const
+-  {
+-    *skip = 1;
+-    return true;
+-  }
+-
+-  bool
+-  do_is_addressable() const;
+-
+-  void
+-  do_address_taken(bool escapes)
+-  { this->array_->address_taken(escapes); }
+-
+-  void
+-  do_issue_nil_check()
+-  { this->array_->issue_nil_check(); }
+-
+-  Bexpression*
+-  do_get_backend(Translate_context*);
+-
+-  void
+-  do_dump_expression(Ast_dump_context*) const;
+-  
+- private:
+-  // The array we are getting a value from.
+-  Expression* array_;
+-  // The start or only index.
+-  Expression* start_;
+-  // The end index of a slice.  This may be NULL for a simple array
+-  // index, or it may be a nil expression for the length of the array.
+-  Expression* end_;
+-  // The capacity argument of a slice.  This may be NULL for an array index or
+-  // slice.
+-  Expression* cap_;
+-  // The type of the expression.
+-  Type* type_;
+-};
++// Class Array_index_expression.
+ 
+ // Array index traversal.
+ 
+@@ -11199,13 +11006,15 @@ Interface_field_reference_expression::cr
+ 
+   Function_type* new_fntype = orig_fntype->copy_with_names();
+ 
+-  Named_object* new_no = gogo->start_function(Gogo::thunk_name(), new_fntype,
++  std::string thunk_name = Gogo::thunk_name();
++  Named_object* new_no = gogo->start_function(thunk_name, new_fntype,
+ 					      false, loc);
+ 
+   Variable* cvar = new Variable(closure_type, NULL, false, false, false, loc);
+   cvar->set_is_used();
+   cvar->set_is_closure();
+-  Named_object* cp = Named_object::make_variable("$closure", NULL, cvar);
++  Named_object* cp = Named_object::make_variable("$closure" + thunk_name,
++						 NULL, cvar);
+   new_no->func_value()->set_closure_var(cp);
+ 
+   gogo->start_block(loc);
+@@ -11605,43 +11414,45 @@ Expression::make_selector(Expression* le
+   return new Selector_expression(left, name, location);
+ }
+ 
+-// Implement the builtin function new.
++// Class Allocation_expression.
+ 
+-class Allocation_expression : public Expression
++int
++Allocation_expression::do_traverse(Traverse* traverse)
+ {
+- public:
+-  Allocation_expression(Type* type, Location location)
+-    : Expression(EXPRESSION_ALLOCATION, location),
+-      type_(type)
+-  { }
+-
+- protected:
+-  int
+-  do_traverse(Traverse* traverse)
+-  { return Type::traverse(this->type_, traverse); }
+-
+-  Type*
+-  do_type()
+-  { return Type::make_pointer_type(this->type_); }
++  return Type::traverse(this->type_, traverse);
++}
+ 
+-  void
+-  do_determine_type(const Type_context*)
+-  { }
++Type*
++Allocation_expression::do_type()
++{
++  return Type::make_pointer_type(this->type_);
++}
+ 
+-  Expression*
+-  do_copy()
+-  { return new Allocation_expression(this->type_, this->location()); }
++// Make a copy of an allocation expression.
+ 
+-  Bexpression*
+-  do_get_backend(Translate_context*);
++Expression*
++Allocation_expression::do_copy()
++{
++  Allocation_expression* alloc =
++    new Allocation_expression(this->type_, this->location());
++  if (this->allocate_on_stack_)
++    alloc->set_allocate_on_stack();
++  return alloc;
++}
+ 
+-  void
+-  do_dump_expression(Ast_dump_context*) const;
+-  
+- private:
+-  // The type we are allocating.
+-  Type* type_;
+-};
++Expression*
++Allocation_expression::do_flatten(Gogo*, Named_object*,
++				  Statement_inserter* inserter)
++{
++  if (this->allocate_on_stack_)
++    {
++      this->stack_temp_ = Statement::make_temporary(this->type_, NULL,
++						    this->location());
++      this->stack_temp_->set_is_address_taken();
++      inserter->insert(this->stack_temp_);
++    }
++  return this;
++}
+ 
+ // Return the backend representation for an allocation expression.
+ 
+@@ -11650,6 +11461,15 @@ Allocation_expression::do_get_backend(Tr
+ {
+   Gogo* gogo = context->gogo();
+   Location loc = this->location();
++
++  if (this->stack_temp_ != NULL)
++    {
++      Expression* ref =
++	Expression::make_temporary_reference(this->stack_temp_, loc);
++      ref = Expression::make_unary(OPERATOR_AND, ref, loc);
++      return ref->get_backend(context);
++    }
++
+   Bexpression* space = 
+     gogo->allocate_memory(this->type_, loc)->get_backend(context);
+   Btype* pbtype = gogo->backend()->pointer_type(this->type_->get_backend(gogo));
+@@ -11675,80 +11495,7 @@ Expression::make_allocation(Type* type,
+   return new Allocation_expression(type, location);
+ }
+ 
+-// Construct a struct.
+-
+-class Struct_construction_expression : public Expression
+-{
+- public:
+-  Struct_construction_expression(Type* type, Expression_list* vals,
+-				 Location location)
+-    : Expression(EXPRESSION_STRUCT_CONSTRUCTION, location),
+-      type_(type), vals_(vals), traverse_order_(NULL)
+-  { }
+-
+-  // Set the traversal order, used to ensure that we implement the
+-  // order of evaluation rules.  Takes ownership of the argument.
+-  void
+-  set_traverse_order(std::vector<int>* traverse_order)
+-  { this->traverse_order_ = traverse_order; }
+-
+-  // Return whether this is a constant initializer.
+-  bool
+-  is_constant_struct() const;
+-
+- protected:
+-  int
+-  do_traverse(Traverse* traverse);
+-
+-  bool
+-  do_is_immutable() const;
+-
+-  Type*
+-  do_type()
+-  { return this->type_; }
+-
+-  void
+-  do_determine_type(const Type_context*);
+-
+-  void
+-  do_check_types(Gogo*);
+-
+-  Expression*
+-  do_copy()
+-  {
+-    Struct_construction_expression* ret =
+-      new Struct_construction_expression(this->type_,
+-					 (this->vals_ == NULL
+-					  ? NULL
+-					  : this->vals_->copy()),
+-					 this->location());
+-    if (this->traverse_order_ != NULL)
+-      ret->set_traverse_order(this->traverse_order_);
+-    return ret;
+-  }
+-
+-  Expression*
+-  do_flatten(Gogo*, Named_object*, Statement_inserter*);
+-
+-  Bexpression*
+-  do_get_backend(Translate_context*);
+-
+-  void
+-  do_export(Export*) const;
+-
+-  void
+-  do_dump_expression(Ast_dump_context*) const;
+-
+- private:
+-  // The type of the struct to construct.
+-  Type* type_;
+-  // The list of values, in order of the fields in the struct.  A NULL
+-  // entry means that the field should be zero-initialized.
+-  Expression_list* vals_;
+-  // If not NULL, the order in which to traverse vals_.  This is used
+-  // so that we implement the order of evaluation rules correctly.
+-  std::vector<int>* traverse_order_;
+-};
++// Class Struct_construction_expression.
+ 
+ // Traversal.
+ 
+@@ -12015,80 +11762,7 @@ Expression::make_struct_composite_litera
+   return new Struct_construction_expression(type, vals, location);
+ }
+ 
+-// Construct an array.  This class is not used directly; instead we
+-// use the child classes, Fixed_array_construction_expression and
+-// Slice_construction_expression.
+-
+-class Array_construction_expression : public Expression
+-{
+- protected:
+-  Array_construction_expression(Expression_classification classification,
+-				Type* type,
+-				const std::vector<unsigned long>* indexes,
+-				Expression_list* vals, Location location)
+-    : Expression(classification, location),
+-      type_(type), indexes_(indexes), vals_(vals)
+-  { go_assert(indexes == NULL || indexes->size() == vals->size()); }
+-
+- public:
+-  // Return whether this is a constant initializer.
+-  bool
+-  is_constant_array() const;
+-
+-  // Return the number of elements.
+-  size_t
+-  element_count() const
+-  { return this->vals_ == NULL ? 0 : this->vals_->size(); }
+-
+-protected:
+-  virtual int
+-  do_traverse(Traverse* traverse);
+-
+-  bool
+-  do_is_immutable() const;
+-
+-  Type*
+-  do_type()
+-  { return this->type_; }
+-
+-  void
+-  do_determine_type(const Type_context*);
+-
+-  void
+-  do_check_types(Gogo*);
+-
+-  void
+-  do_export(Export*) const;
+-
+-  // The indexes.
+-  const std::vector<unsigned long>*
+-  indexes()
+-  { return this->indexes_; }
+-
+-  // The list of values.
+-  Expression_list*
+-  vals()
+-  { return this->vals_; }
+-
+-  Expression*
+-  do_flatten(Gogo*, Named_object*, Statement_inserter*);
+-
+-  // Get the backend constructor for the array values.
+-  Bexpression*
+-  get_constructor(Translate_context* context, Btype* btype);
+-
+-  void
+-  do_dump_expression(Ast_dump_context*) const;
+-
+- private:
+-  // The type of the array to construct.
+-  Type* type_;
+-  // The list of indexes into the array, one for each value.  This may
+-  // be NULL, in which case the indexes start at zero and increment.
+-  const std::vector<unsigned long>* indexes_;
+-  // The list of values.  This may be NULL if there are no values.
+-  Expression_list* vals_;
+-};
++// Class Array_construction_expression.
+ 
+ // Traversal.
+ 
+@@ -12344,34 +12018,14 @@ Array_construction_expression::do_dump_e
+ 
+ }
+ 
+-// Construct a fixed array.
++// Class Fixed_array_construction_expression.
+ 
+-class Fixed_array_construction_expression :
+-  public Array_construction_expression
+-{
+- public:
+-  Fixed_array_construction_expression(Type* type,
+-				      const std::vector<unsigned long>* indexes,
+-				      Expression_list* vals, Location location)
+-    : Array_construction_expression(EXPRESSION_FIXED_ARRAY_CONSTRUCTION,
+-				    type, indexes, vals, location)
+-  { go_assert(type->array_type() != NULL && !type->is_slice_type()); }
+-
+- protected:
+-  Expression*
+-  do_copy()
+-  {
+-    return new Fixed_array_construction_expression(this->type(),
+-						   this->indexes(),
+-						   (this->vals() == NULL
+-						    ? NULL
+-						    : this->vals()->copy()),
+-						   this->location());
+-  }
+-
+-  Bexpression*
+-  do_get_backend(Translate_context*);
+-};
++Fixed_array_construction_expression::Fixed_array_construction_expression(
++    Type* type, const std::vector<unsigned long>* indexes,
++    Expression_list* vals, Location location)
++  : Array_construction_expression(EXPRESSION_FIXED_ARRAY_CONSTRUCTION,
++				  type, indexes, vals, location)
++{ go_assert(type->array_type() != NULL && !type->is_slice_type()); }
+ 
+ // Return the backend representation for constructing a fixed array.
+ 
+@@ -12391,60 +12045,34 @@ Expression::make_array_composite_literal
+   return new Fixed_array_construction_expression(type, NULL, vals, location);
+ }
+ 
+-// Construct a slice.
++// Class Slice_construction_expression.
+ 
+-class Slice_construction_expression : public Array_construction_expression
++Slice_construction_expression::Slice_construction_expression(
++  Type* type, const std::vector<unsigned long>* indexes,
++  Expression_list* vals, Location location)
++  : Array_construction_expression(EXPRESSION_SLICE_CONSTRUCTION,
++				  type, indexes, vals, location),
++    valtype_(NULL)
+ {
+- public:
+-  Slice_construction_expression(Type* type,
+-				const std::vector<unsigned long>* indexes,
+-				Expression_list* vals, Location location)
+-    : Array_construction_expression(EXPRESSION_SLICE_CONSTRUCTION,
+-				    type, indexes, vals, location),
+-      valtype_(NULL)
+-  {
+-    go_assert(type->is_slice_type());
+-
+-    unsigned long lenval;
+-    Expression* length;
+-    if (vals == NULL || vals->empty())
+-      lenval = 0;
+-    else
+-      {
+-	if (this->indexes() == NULL)
+-	  lenval = vals->size();
+-	else
+-	  lenval = indexes->back() + 1;
+-      }
+-    Type* int_type = Type::lookup_integer_type("int");
+-    length = Expression::make_integer_ul(lenval, int_type, location);
+-    Type* element_type = type->array_type()->element_type();
+-    this->valtype_ = Type::make_array_type(element_type, length);
+-  }
+-
+- protected:
+-  // Note that taking the address of a slice literal is invalid.
+-
+-  int
+-  do_traverse(Traverse* traverse);
++  go_assert(type->is_slice_type());
+ 
+-  Expression*
+-  do_copy()
+-  {
+-    return new Slice_construction_expression(this->type(), this->indexes(),
+-					     (this->vals() == NULL
+-					      ? NULL
+-					      : this->vals()->copy()),
+-					     this->location());
+-  }
++  unsigned long lenval;
++  Expression* length;
++  if (vals == NULL || vals->empty())
++    lenval = 0;
++  else
++    {
++      if (this->indexes() == NULL)
++	lenval = vals->size();
++      else
++	lenval = indexes->back() + 1;
++    }
++  Type* int_type = Type::lookup_integer_type("int");
++  length = Expression::make_integer_ul(lenval, int_type, location);
++  Type* element_type = type->array_type()->element_type();
++  this->valtype_ = Type::make_array_type(element_type, length);
++}
+ 
+-  Bexpression*
+-  do_get_backend(Translate_context*);
+-
+- private:
+-  // The type of the values in this slice.
+-  Type* valtype_;
+-};
+ 
+ // Traversal.
+ 
+@@ -12526,63 +12154,7 @@ Expression::make_slice_composite_literal
+   return new Slice_construction_expression(type, NULL, vals, location);
+ }
+ 
+-// Construct a map.
+-
+-class Map_construction_expression : public Expression
+-{
+- public:
+-  Map_construction_expression(Type* type, Expression_list* vals,
+-			      Location location)
+-    : Expression(EXPRESSION_MAP_CONSTRUCTION, location),
+-      type_(type), vals_(vals), element_type_(NULL), constructor_temp_(NULL)
+-  { go_assert(vals == NULL || vals->size() % 2 == 0); }
+-
+- protected:
+-  int
+-  do_traverse(Traverse* traverse);
+-
+-  Expression*
+-  do_flatten(Gogo*, Named_object*, Statement_inserter*);
+-
+-  Type*
+-  do_type()
+-  { return this->type_; }
+-
+-  void
+-  do_determine_type(const Type_context*);
+-
+-  void
+-  do_check_types(Gogo*);
+-
+-  Expression*
+-  do_copy()
+-  {
+-    return new Map_construction_expression(this->type_,
+-					   (this->vals_ == NULL
+-					    ? NULL
+-					    : this->vals_->copy()),
+-					   this->location());
+-  }
+-
+-  Bexpression*
+-  do_get_backend(Translate_context*);
+-
+-  void
+-  do_export(Export*) const;
+-
+-  void
+-  do_dump_expression(Ast_dump_context*) const;
+-  
+- private:
+-  // The type of the map to construct.
+-  Type* type_;
+-  // The list of values.
+-  Expression_list* vals_;
+-  // The type of the key-value pair struct for each map element.
+-  Struct_type* element_type_;
+-  // A temporary reference to the variable storing the constructor initializer.
+-  Temporary_statement* constructor_temp_;
+-};
++// Class Map_construction_expression.
+ 
+ // Traversal.
+ 
+@@ -13692,53 +13264,11 @@ Expression::make_type_guard(Expression*
+ 
+ // Class Heap_expression.
+ 
+-// When you take the address of an escaping expression, it is allocated
+-// on the heap.  This class implements that.
++// Return the type of the expression stored on the heap.
+ 
+-class Heap_expression : public Expression
+-{
+- public:
+-  Heap_expression(Expression* expr, Location location)
+-    : Expression(EXPRESSION_HEAP, location),
+-      expr_(expr)
+-  { }
+-
+- protected:
+-  int
+-  do_traverse(Traverse* traverse)
+-  { return Expression::traverse(&this->expr_, traverse); }
+-
+-  Type*
+-  do_type()
+-  { return Type::make_pointer_type(this->expr_->type()); }
+-
+-  void
+-  do_determine_type(const Type_context*)
+-  { this->expr_->determine_type_no_context(); }
+-
+-  Expression*
+-  do_copy()
+-  {
+-    return Expression::make_heap_expression(this->expr_->copy(),
+-                                            this->location());
+-  }
+-
+-  Bexpression*
+-  do_get_backend(Translate_context*);
+-
+-  // We only export global objects, and the parser does not generate
+-  // this in global scope.
+-  void
+-  do_export(Export*) const
+-  { go_unreachable(); }
+-
+-  void
+-  do_dump_expression(Ast_dump_context*) const;
+-
+- private:
+-  // The expression which is being put on the heap.
+-  Expression* expr_;
+-};
++Type*
++Heap_expression::do_type()
++{ return Type::make_pointer_type(this->expr_->type()); }
+ 
+ // Return the backend representation for allocating an expression on the heap.
+ 
+@@ -14976,48 +14506,7 @@ Expression::make_label_addr(Label* label
+   return new Label_addr_expression(label, location);
+ }
+ 
+-// Conditional expressions.
+-
+-class Conditional_expression : public Expression
+-{
+- public:
+-  Conditional_expression(Expression* cond, Expression* then_expr,
+-                         Expression* else_expr, Location location)
+-      : Expression(EXPRESSION_CONDITIONAL, location),
+-        cond_(cond), then_(then_expr), else_(else_expr)
+-  {}
+-
+- protected:
+-  int
+-  do_traverse(Traverse*);
+-
+-  Type*
+-  do_type();
+-
+-  void
+-  do_determine_type(const Type_context*);
+-
+-  Expression*
+-  do_copy()
+-  {
+-    return new Conditional_expression(this->cond_->copy(), this->then_->copy(),
+-                                      this->else_->copy(), this->location());
+-  }
+-
+-  Bexpression*
+-  do_get_backend(Translate_context* context);
+-
+-  void
+-  do_dump_expression(Ast_dump_context*) const;
+-
+- private:
+-  // The condition to be checked.
+-  Expression* cond_;
+-  // The expression to execute if the condition is true.
+-  Expression* then_;
+-  // The expression to execute if the condition is false.
+-  Expression* else_;
+-};
++// Class Conditional_expression.
+ 
+ // Traversal.
+ 
+@@ -15096,44 +14585,7 @@ Expression::make_conditional(Expression*
+   return new Conditional_expression(cond, then, else_expr, location);
+ }
+ 
+-// Compound expressions.
+-
+-class Compound_expression : public Expression
+-{
+- public:
+-  Compound_expression(Expression* init, Expression* expr, Location location)
+-      : Expression(EXPRESSION_COMPOUND, location), init_(init), expr_(expr)
+-  {}
+-
+- protected:
+-  int
+-  do_traverse(Traverse*);
+-
+-  Type*
+-  do_type();
+-
+-  void
+-  do_determine_type(const Type_context*);
+-
+-  Expression*
+-  do_copy()
+-  {
+-    return new Compound_expression(this->init_->copy(), this->expr_->copy(),
+-                                   this->location());
+-  }
+-
+-  Bexpression*
+-  do_get_backend(Translate_context* context);
+-
+-  void
+-  do_dump_expression(Ast_dump_context*) const;
+-
+- private:
+-  // The expression that is evaluated first and discarded.
+-  Expression* init_;
+-  // The expression that is evaluated and returned.
+-  Expression* expr_;
+-};
++// Class Compound_expression.
+ 
+ // Traversal.
+ 
diff --git a/debian/patches/go-escape-analysis2.diff b/debian/patches/go-escape-analysis2.diff
new file mode 100644
index 0000000..b149279
--- /dev/null
+++ b/debian/patches/go-escape-analysis2.diff
@@ -0,0 +1,517 @@
+# DP: gccgo: Consider multi-result calls in escape analysis.
+# DP: gccgo: Propagate escape info from closures to enclosed variables.
+# DP: gccgo: Analyze function values and conversions.
+# DP: gccgo: Use backend interface for stack allocation.
+
+LANG=C svn diff -r222194:222657 gcc/go \
+	| sed -r 's,^--- (\S+)\t(\S+)(.*)$,--- a/src/\1\t\2,;s,^\+\+\+ (\S+)\t(\S+)(.*)$,+++ b/src/\1\t\2,'
+
+gcc/go/
+
+2015-04-30  Chris Manghane  <cmang at google.com>
+
+	* go-gcc.cc (Gcc_backend::stack_allocation_expression): New
+	method.
+
+Index: b/src/gcc/go/go-gcc.cc
+===================================================================
+--- a/src/gcc/go/go-gcc.cc
++++ b/src/gcc/go/go-gcc.cc
+@@ -324,6 +324,9 @@ class Gcc_backend : public Backend
+   call_expression(Bexpression* fn, const std::vector<Bexpression*>& args,
+                   Bexpression* static_chain, Location);
+ 
++  Bexpression*
++  stack_allocation_expression(int64_t size, Location);
++
+   // Statements.
+ 
+   Bstatement*
+@@ -1884,6 +1887,17 @@ Gcc_backend::call_expression(Bexpression
+   return this->make_expression(ret);
+ }
+ 
++// Return an expression that allocates SIZE bytes on the stack.
++
++Bexpression*
++Gcc_backend::stack_allocation_expression(int64_t size, Location location)
++{
++  tree alloca = builtin_decl_explicit(BUILT_IN_ALLOCA);
++  tree size_tree = build_int_cst(integer_type_node, size);
++  tree ret = build_call_expr_loc(location.gcc_location(), alloca, 1, size_tree);
++  return this->make_expression(ret);
++}
++
+ // An expression as a statement.
+ 
+ Bstatement*
+Index: b/src/gcc/go/gofrontend/gogo.h
+===================================================================
+--- a/src/gcc/go/gofrontend/gogo.h
++++ b/src/gcc/go/gofrontend/gogo.h
+@@ -1042,6 +1042,11 @@ class Function
+     this->is_unnamed_type_stub_method_ = true;
+   }
+ 
++  // Return the amount of enclosed variables in this closure.
++  size_t
++  closure_field_count() const
++  { return this->closure_fields_.size(); }
++
+   // Add a new field to the closure variable.
+   void
+   add_closure_field(Named_object* var, Location loc)
+Index: b/src/gcc/go/gofrontend/expressions.h
+===================================================================
+--- a/src/gcc/go/gofrontend/expressions.h
++++ b/src/gcc/go/gofrontend/expressions.h
+@@ -2786,7 +2786,7 @@ class Allocation_expression : public Exp
+  public:
+   Allocation_expression(Type* type, Location location)
+     : Expression(EXPRESSION_ALLOCATION, location),
+-      type_(type), allocate_on_stack_(false), stack_temp_(NULL)
++      type_(type), allocate_on_stack_(false)
+   { }
+ 
+   void
+@@ -2807,9 +2807,6 @@ class Allocation_expression : public Exp
+   Expression*
+   do_copy();
+ 
+-  Expression*
+-  do_flatten(Gogo*, Named_object*, Statement_inserter*);
+-
+   Bexpression*
+   do_get_backend(Translate_context*);
+ 
+@@ -2821,9 +2818,6 @@ class Allocation_expression : public Exp
+   Type* type_;
+   // Whether or not this is a stack allocation.
+   bool allocate_on_stack_;
+-  // If this memory is stack allocated, it will use the address of STACK_TEMP.
+-  // Otherwise, STACK_TEMP is NULL.
+-  Temporary_statement* stack_temp_;
+ };
+ 
+ // Construct a struct.
+Index: b/src/gcc/go/gofrontend/backend.h
+===================================================================
+--- a/src/gcc/go/gofrontend/backend.h
++++ b/src/gcc/go/gofrontend/backend.h
+@@ -377,6 +377,10 @@ class Backend
+   call_expression(Bexpression* fn, const std::vector<Bexpression*>& args,
+ 		  Bexpression* static_chain, Location) = 0;
+ 
++  // Return an expression that allocates SIZE bytes on the stack.
++  virtual Bexpression*
++  stack_allocation_expression(int64_t size, Location) = 0;
++
+   // Statements.
+ 
+   // Create an error statement.  This is used for cases which should
+Index: b/src/gcc/go/gofrontend/escape.cc
+===================================================================
+--- a/src/gcc/go/gofrontend/escape.cc
++++ b/src/gcc/go/gofrontend/escape.cc
+@@ -906,6 +906,8 @@ Build_connection_graphs::handle_composit
+ 	continue;
+       else if ((*p)->call_expression() != NULL)
+ 	this->handle_call(object, *p);
++      else if ((*p)->func_expression() != NULL)
++	composite_args.push_back((*p)->func_expression()->named_object());
+       else if ((*p)->is_composite_literal()
+ 	       || (*p)->heap_expression() != NULL)
+ 	this->handle_composite_literal(object, *p);
+@@ -949,21 +951,24 @@ Build_connection_graphs::variable(Named_
+ 	   p != defs->end();
+ 	   ++p)
+ 	{
+-	  if (p->val == NULL)
++	  Expression* def = p->val;
++	  if (def == NULL)
+ 	    continue;
+ 
+-	  if (p->val->func_expression() != NULL)
++	  if (def->conversion_expression() != NULL)
++	    def = def->conversion_expression()->expr();
++	  if (def->func_expression() != NULL)
+ 	    {
+ 	      // VAR is being defined as a function object.
+-	      Named_object* fn = p->val->func_expression()->named_object();
++	      Named_object* fn = def->func_expression()->named_object();
+ 	      Node* fn_node = this->gogo_->add_connection_node(fn);
+ 	      var_node->add_edge(fn_node);
+ 	    }
+-	  else if(p->val->is_composite_literal()
+-		  || p->val->heap_expression() != NULL)
+-	    this->handle_composite_literal(var, p->val);
++	  else if(def->is_composite_literal()
++		  || def->heap_expression() != NULL)
++	    this->handle_composite_literal(var, def);
+ 
+-	  Named_object* ref = this->resolve_var_reference(p->val);
++	  Named_object* ref = this->resolve_var_reference(def);
+ 	  if (ref == NULL)
+ 	    continue;
+ 
+@@ -989,21 +994,21 @@ Build_connection_graphs::variable(Named_
+ 	      Named_object* lhs_no = this->resolve_var_reference(assn->lhs());
+ 	      Named_object* rhs_no = this->resolve_var_reference(assn->rhs());
+ 
+-	      if (assn->rhs()->is_composite_literal()
+-		  || assn->rhs()->heap_expression() != NULL)
+-		this->handle_composite_literal(var, assn->rhs());
+-	      else if (assn->rhs()->call_result_expression() != NULL)
++	      Expression* rhs = assn->rhs();
++	      if (rhs->is_composite_literal()
++		  || rhs->heap_expression() != NULL)
++		this->handle_composite_literal(var, rhs);
++
++	      if (rhs->call_result_expression() != NULL)
+ 		{
+ 		  // V's initialization will be a call result if
+ 		  // V, V1 := call(VAR).
+ 		  // There are no useful edges to make from V, but we want
+ 		  // to make sure we handle the call that references VAR.
+-		  Expression* call =
+-		    assn->rhs()->call_result_expression()->call();
+-		  this->handle_call(var, call);
++		  rhs = rhs->call_result_expression()->call();
+ 		}
+-	      else if (assn->rhs()->call_expression() != NULL)
+-		this->handle_call(var, assn->rhs());
++	      if (rhs->call_expression() != NULL)
++		this->handle_call(var, rhs);
+ 
+ 	      // If there is no standalone variable on the rhs, this could be a
+ 	      // binary expression, which isn't interesting for analysis or a
+@@ -1038,8 +1043,12 @@ Build_connection_graphs::variable(Named_
+ 	    break;
+ 
+ 	  case Statement::STATEMENT_EXPRESSION:
+-	    this->handle_call(var,
+-	    		      p->statement->expression_statement()->expr());
++	    {
++	      Expression* call = p->statement->expression_statement()->expr();
++	      if (call->call_result_expression() != NULL)
++		call = call->call_result_expression()->call();
++	      this->handle_call(var, call);
++	    }
+ 	    break;
+ 
+ 	  case Statement::STATEMENT_GO:
+@@ -1064,10 +1073,17 @@ Build_connection_graphs::variable(Named_
+ 	      else if (cond->binary_expression() != NULL)
+ 		{
+ 		  Binary_expression* comp = cond->binary_expression();
+-		  if (comp->left()->call_expression() != NULL)
+-		    this->handle_call(var, comp->left());
+-		  if (comp->right()->call_expression() != NULL)
+-		    this->handle_call(var, comp->right());
++		  Expression* left = comp->left();
++		  Expression* right = comp->right();
++
++		  if (left->call_result_expression() != NULL)
++		    left = left->call_result_expression()->call();
++		  if (left->call_expression() != NULL)
++		    this->handle_call(var, left);
++		  if (right->call_result_expression() != NULL)
++		    right = right->call_result_expression()->call();
++		  if (right->call_expression() != NULL)
++		    this->handle_call(var, right);
+ 		}
+ 	    }
+ 	    break;
+@@ -1092,16 +1108,10 @@ Build_connection_graphs::variable(Named_
+ 		  // composite literal.
+ 		  this->handle_composite_literal(decl_no, init);
+ 		}
+-	      else if (init->call_result_expression() != NULL)
+-		{
+-		  // V's initialization will be a call result if
+-		  // V, V1 := call(VAR).
+-		  // There's no useful edges to make from V or V1, but we want
+-		  // to make sure we handle the call that references VAR.
+-		  Expression* call = init->call_result_expression()->call();
+-		  this->handle_call(var, call);
+-		}
+-	      else if (init->call_expression() != NULL)
++
++	      if (init->call_result_expression() != NULL)
++		init = init->call_result_expression()->call();
++	      if (init->call_expression() != NULL)
+ 		this->handle_call(var, init);
+ 	    }
+ 	    break;
+@@ -1148,18 +1158,46 @@ Build_connection_graphs::statement(Block
+       if (lhs_no == NULL)
+ 	break;
+ 
+-      if (assn->rhs()->func_expression() != NULL)
++      Expression* rhs = assn->rhs();
++      if (rhs->temporary_reference_expression() != NULL)
++	rhs = rhs->temporary_reference_expression()->statement()->init();
++      if (rhs == NULL)
++	break;
++
++      if (rhs->call_result_expression() != NULL)
++	rhs = rhs->call_result_expression()->call();
++      if (rhs->call_expression() != NULL)
++	{
++	  // It's not clear what variables we are trying to find references to
++	  // so just use the arguments to this call.
++	  Expression_list* args = rhs->call_expression()->args();
++	  if (args == NULL)
++	    break;
++
++	  for (Expression_list::const_iterator p = args->begin();
++	       p != args->end();
++	       ++p)
++	    {
++	      Named_object* no = this->resolve_var_reference(*p);
++	      if (no != NULL) {
++		Node* lhs_node = this->gogo_->add_connection_node(lhs_no);
++		Node* rhs_node = this->gogo_->add_connection_node(no);
++		lhs_node->add_edge(rhs_node);
++	      }
++	    }
++
++	  this->handle_call(lhs_no, rhs);
++	}
++      else if (rhs->func_expression() != NULL)
+ 	{
+ 	  Node* lhs_node = this->gogo_->add_connection_node(lhs_no);
+-	  Named_object* fn = assn->rhs()->func_expression()->named_object();
++	  Named_object* fn = rhs->func_expression()->named_object();
+ 	  Node* fn_node = this->gogo_->add_connection_node(fn);
+ 	  lhs_node->add_edge(fn_node);
+ 	}
+-      else if (assn->rhs()->call_expression() != NULL)
+-	this->handle_call(lhs_no, assn->rhs()->call_expression());
+       else
+ 	{
+-	  Named_object* rhs_no = this->resolve_var_reference(assn->rhs());
++	  Named_object* rhs_no = this->resolve_var_reference(rhs);
+ 	  if (rhs_no != NULL)
+ 	    {
+ 	      Node* lhs_node = this->gogo_->add_connection_node(lhs_no);
+@@ -1188,6 +1226,8 @@ Build_connection_graphs::statement(Block
+   case Statement::STATEMENT_EXPRESSION:
+     {
+       Expression* expr = s->expression_statement()->expr();
++      if (expr->call_result_expression() != NULL)
++	expr = expr->call_result_expression()->call();
+       if (expr->call_expression() != NULL)
+ 	{
+ 	  // It's not clear what variables we are trying to find references to
+@@ -1208,6 +1248,73 @@ Build_connection_graphs::statement(Block
+     }
+     break;
+ 
++  case Statement::STATEMENT_GO:
++  case Statement::STATEMENT_DEFER:
++    {
++      // Any variable referenced via a go or defer statement escapes to
++      // a different goroutine.
++      Expression* call = s->thunk_statement()->call();
++      if (call->call_expression() != NULL)
++	{
++	  // It's not clear what variables we are trying to find references to
++	  // so just use the arguments to this call.
++	  Expression_list* args = call->call_expression()->args();
++	  if (args == NULL)
++	    break;
++
++	  for (Expression_list::const_iterator p = args->begin();
++	       p != args->end();
++	       ++p)
++	    {
++	      Named_object* no = this->resolve_var_reference(*p);
++	      if (no != NULL)
++		this->handle_call(no, call);
++	    }
++	}
++    }
++    break;
++
++  case Statement::STATEMENT_VARIABLE_DECLARATION:
++    {
++      Variable_declaration_statement* decl =
++	s->variable_declaration_statement();
++      Named_object* decl_no = decl->var();
++      Variable* v = decl_no->var_value();
++
++      Expression* init = v->init();
++      if (init == NULL)
++	break;
++
++      if (init->is_composite_literal()
++	  || init->heap_expression() != NULL)
++	{
++	  // Create edges between DECL_NO and each named object in the
++	  // composite literal.
++	  this->handle_composite_literal(decl_no, init);
++	}
++
++      if (init->call_result_expression() != NULL)
++	init = init->call_result_expression()->call();
++      if (init->call_expression() != NULL)
++	{
++	  // It's not clear what variables we are trying to find references to
++	  // so just use the arguments to this call.
++	  Expression_list* args = init->call_expression()->args();
++	  if (args == NULL)
++	    break;
++
++	  for (Expression_list::const_iterator p = args->begin();
++	       p != args->end();
++	       ++p)
++	    {
++	      Named_object* no = this->resolve_var_reference(*p);
++	      if (no != NULL)
++		this->handle_call(no, init);
++	    }
++	}
++    }
++    break;
++
+   default:
+     break;
+   }
+@@ -1276,8 +1383,22 @@ Gogo::analyze_reachability()
+       Node* m = worklist.front();
+       worklist.pop_front();
+ 
+-      for (std::set<Node*>::iterator n = m->edges().begin();
+-	   n != m->edges().end();
++      std::set<Node*> reachable = m->edges();
++      if (m->object()->is_function()
++	  && m->object()->func_value()->needs_closure())
++	{
++	  // If a closure escapes everything it closes over also escapes.
++	  Function* closure = m->object()->func_value();
++	  for (size_t i = 0; i < closure->closure_field_count(); i++)
++	    {
++	      Named_object* enclosed = closure->enclosing_var(i);
++	      Node* enclosed_node = this->lookup_connection_node(enclosed);
++	      go_assert(enclosed_node != NULL);
++	      reachable.insert(enclosed_node);
++	    }
++	}
++      for (std::set<Node*>::iterator n = reachable.begin();
++	   n != reachable.end();
+ 	   ++n)
+ 	{
+ 	  // If an object can be reached from a node with ESCAPE_GLOBAL,
+@@ -1296,7 +1417,7 @@ Gogo::analyze_reachability()
+        p != this->named_connection_nodes_.end();
+        ++p)
+     {
+-      if (p->second->connection_node()->escape_state() == Node::ESCAPE_ARG)
++      if (p->second->connection_node()->escape_state() < Node::ESCAPE_NONE)
+ 	worklist.push_back(p->second);
+     }
+ 
+@@ -1305,15 +1426,30 @@ Gogo::analyze_reachability()
+       Node* m = worklist.front();
+       worklist.pop_front();
+ 
+-      for (std::set<Node*>::iterator n = m->edges().begin();
+-	   n != m->edges().end();
++      std::set<Node*> reachable = m->edges();
++      if (m->object()->is_function()
++	  && m->object()->func_value()->needs_closure())
++	{
++	  // If a closure escapes everything it closes over also escapes.
++	  Function* closure = m->object()->func_value();
++	  for (size_t i = 0; i < closure->closure_field_count(); i++)
++	    {
++	      Named_object* enclosed = closure->enclosing_var(i);
++	      Node* enclosed_node = this->lookup_connection_node(enclosed);
++	      go_assert(enclosed_node != NULL);
++	      reachable.insert(enclosed_node);
++	    }
++	}
++      for (std::set<Node*>::iterator n = reachable.begin();
++	   n != reachable.end();
+ 	   ++n)
+ 	{
+ 	  // If an object can be reached from a node with ESCAPE_ARG,
+ 	  // it is ESCAPE_ARG or ESCAPE_GLOBAL.
+-	  if ((*n)->connection_node()->escape_state() > Node::ESCAPE_ARG)
++	  Node::Escapement_lattice e = m->connection_node()->escape_state();
++	  if ((*n)->connection_node()->escape_state() > e)
+ 	    {
+-	      (*n)->connection_node()->set_escape_state(Node::ESCAPE_ARG);
++	      (*n)->connection_node()->set_escape_state(e);
+ 	      worklist.push_back(*n);
+ 	    }
+ 	}
+@@ -1429,8 +1565,7 @@ Optimize_allocations::variable(Named_obj
+ 
+   if (var->is_variable())
+     {
+-      if (var->var_value()->is_address_taken())
+-      	var->var_value()->set_does_not_escape();
++      var->var_value()->set_does_not_escape();
+       if (var->var_value()->init() != NULL
+ 	  && var->var_value()->init()->allocation_expression() != NULL)
+ 	{
+@@ -1439,9 +1574,6 @@ Optimize_allocations::variable(Named_obj
+ 	  alloc->set_allocate_on_stack();
+ 	}
+     }
+-  else if (var->is_result_variable()
+-	   && var->result_var_value()->is_address_taken())
+-    var->result_var_value()->set_does_not_escape();
+ 
+   return TRAVERSE_CONTINUE;
+ }
+Index: b/src/gcc/go/gofrontend/expressions.cc
+===================================================================
+--- a/src/gcc/go/gofrontend/expressions.cc
++++ b/src/gcc/go/gofrontend/expressions.cc
+@@ -11440,20 +11440,6 @@ Allocation_expression::do_copy()
+   return alloc;
+ }
+ 
+-Expression*
+-Allocation_expression::do_flatten(Gogo*, Named_object*,
+-				  Statement_inserter* inserter)
+-{
+-  if (this->allocate_on_stack_)
+-    {
+-      this->stack_temp_ = Statement::make_temporary(this->type_, NULL,
+-						    this->location());
+-      this->stack_temp_->set_is_address_taken();
+-      inserter->insert(this->stack_temp_);
+-    }
+-  return this;
+-}
+-
+ // Return the backend representation for an allocation expression.
+ 
+ Bexpression*
+@@ -11462,17 +11448,16 @@ Allocation_expression::do_get_backend(Tr
+   Gogo* gogo = context->gogo();
+   Location loc = this->location();
+ 
+-  if (this->stack_temp_ != NULL)
++  Btype* btype = this->type_->get_backend(gogo);
++  if (this->allocate_on_stack_)
+     {
+-      Expression* ref =
+-	Expression::make_temporary_reference(this->stack_temp_, loc);
+-      ref = Expression::make_unary(OPERATOR_AND, ref, loc);
+-      return ref->get_backend(context);
++      int64_t size = gogo->backend()->type_size(btype);
++      return gogo->backend()->stack_allocation_expression(size, loc);
+     }
+ 
+   Bexpression* space = 
+     gogo->allocate_memory(this->type_, loc)->get_backend(context);
+-  Btype* pbtype = gogo->backend()->pointer_type(this->type_->get_backend(gogo));
++  Btype* pbtype = gogo->backend()->pointer_type(btype);
+   return gogo->backend()->convert_expression(pbtype, space, loc);
+ }
+ 
diff --git a/debian/patches/go-escape-analysis3.diff b/debian/patches/go-escape-analysis3.diff
new file mode 100644
index 0000000..7fc9e5e
--- /dev/null
+++ b/debian/patches/go-escape-analysis3.diff
@@ -0,0 +1,75 @@
+# DP: gccgo: Analyze escape information of interface parameters.
+
+When analyzing function calls with interface parameters, all arguments
+related to an interface parameter were assumed to escape via the
+function arguments.  Now, if an argument is related to a non-escaping
+parameter with an interface type, the argument may be stack-allocated.
+
+Index: b/src/gcc/go/gofrontend/escape.cc
+===================================================================
+--- a/src/gcc/go/gofrontend/escape.cc
++++ b/src/gcc/go/gofrontend/escape.cc
+@@ -586,8 +586,20 @@ Build_connection_graphs::handle_call(Nam
+   // Only call expression statements are interesting
+   // e.g. 'func(var)' for which we can show var does not escape.
+   Call_expression* ce = e->call_expression();
+-  if (ce == NULL || ce->args() == NULL)
++  if (ce == NULL)
+     return;
++  else if (ce->args() == NULL)
++    {
++      if (ce->fn()->interface_field_reference_expression() != NULL)
++	{
++	  // This is a call to an interface method with no arguments. OBJECT
++	  // must be the receiver and we assume it escapes.
++	  Connection_node* rcvr_node =
++	    this->gogo_->add_connection_node(object)->connection_node();
++	  rcvr_node->set_escape_state(Node::ESCAPE_ARG);
++	}
++      return;
++    }
+   
+   // If the function call that references OBJECT is unknown, we must be
+   // conservative and assume every argument escapes.  A function call is unknown
+@@ -606,6 +618,8 @@ Build_connection_graphs::handle_call(Nam
+ 		this->gogo_->add_connection_node(arg_no)->connection_node();
+ 	      arg_node->set_escape_state(Node::ESCAPE_ARG);
+ 	    }
++	  else if ((*arg)->call_expression() != NULL)
++	    this->handle_call(object, *arg);
+ 	}
+       return;
+     }
+@@ -787,7 +801,6 @@ Build_connection_graphs::handle_call(Nam
+        ++pos)
+     {
+       std::string param_name;
+-      bool param_is_interface = false;
+       if (*pos >= 0 && params->size() <= static_cast<size_t>(*pos))
+ 	{
+ 	  // There were more arguments than there are parameters. This must be
+@@ -804,11 +817,7 @@ Build_connection_graphs::handle_call(Nam
+ 	  param_name = fntype->receiver()->name();
+ 	}
+       else
+-	{
+-	  param_name = params->at(*pos).name();
+-	  param_is_interface =
+-	    (params->at(*pos).type()->interface_type() != NULL);
+-	}
++	param_name = params->at(*pos).name();
+ 
+       if (Gogo::is_sink_name(param_name) || param_name.empty())
+ 	continue;
+@@ -832,11 +841,6 @@ Build_connection_graphs::handle_call(Nam
+ 
+       Node* arg_node = this->gogo_->add_connection_node(object);
+       Node* param_node = this->gogo_->add_connection_node(param_no);
+-
+-      // Act conservatively when an argument is converted into an interface
+-      // value.  FIXME.
+-      if (param_is_interface)
+-	param_node->connection_node()->set_escape_state(Node::ESCAPE_ARG);
+       param_node->add_edge(arg_node);
+     }
+ 
diff --git a/debian/patches/go-escape-analysis4.diff b/debian/patches/go-escape-analysis4.diff
new file mode 100644
index 0000000..7994cb7
--- /dev/null
+++ b/debian/patches/go-escape-analysis4.diff
@@ -0,0 +1,24 @@
+# DP: gccgo: If unary & does not escape, the var does not escape.
+
+If we have a unary & that takes the address of a variable, do
+not force the variable to escape if the unary & does not
+escape.
+
+Index: b/src/gcc/go/gofrontend/expressions.cc
+===================================================================
+--- a/src/gcc/go/gofrontend/expressions.cc
++++ b/src/gcc/go/gofrontend/expressions.cc
+@@ -3668,7 +3668,12 @@ Unary_expression::do_flatten(Gogo* gogo,
+ 
+   if (this->op_ == OPERATOR_AND)
+     {
+-      if (this->expr_->var_expression() != NULL)
++      // If this->escapes_ is false at this point, then it was set to
++      // false by an explicit call to set_does_not_escape, and the
++      // value does not escape.  If this->escapes_ is true, we may be
++      // able to set it to false if taking the address of a variable
++      // that does not escape.
++      if (this->escapes_ && this->expr_->var_expression() != NULL)
+ 	{
+ 	  Named_object* var = this->expr_->var_expression()->named_object();
+ 	  if (var->is_variable())
diff --git a/debian/patches/go-escape-analysis5.diff b/debian/patches/go-escape-analysis5.diff
new file mode 100644
index 0000000..0c99e1b
--- /dev/null
+++ b/debian/patches/go-escape-analysis5.diff
@@ -0,0 +1,93 @@
+# DP: gccgo: escape: Analyze binary expressions.
+
+Binary expressions might contain function calls that cause an object
+to escape.  Previously, there were not analyzed.
+
+Index: b/src/gcc/go/gofrontend/escape.cc
+===================================================================
+--- a/src/gcc/go/gofrontend/escape.cc
++++ b/src/gcc/go/gofrontend/escape.cc
+@@ -453,6 +453,11 @@ class Build_connection_graphs : public T
+   void
+   handle_composite_literal(Named_object* object, Expression* expr);
+ 
++  // Handle analysis of the left and right operands of a binary expression
++  // with respect to OBJECT.
++  void
++  handle_binary(Named_object* object, Expression* expr);
++
+   // Resolve the outermost named object of EXPR if there is one.
+   Named_object*
+   resolve_var_reference(Expression* expr);
+@@ -931,6 +936,31 @@ Build_connection_graphs::handle_composit
+     }
+ }
+ 
++// Given an OBJECT reference in a binary expression E, analyze the left and
++// right operands for possible edges.
++
++void
++Build_connection_graphs::handle_binary(Named_object* object, Expression* e)
++{
++  Binary_expression* be = e->binary_expression();
++  go_assert(be != NULL);
++  Expression* left = be->left();
++  Expression* right = be->right();
++
++  if (left->call_result_expression() != NULL)
++    left = left->call_result_expression()->call();
++  if (left->call_expression() != NULL)
++    this->handle_call(object, left);
++  else if (left->binary_expression() != NULL)
++    this->handle_binary(object, left);
++  if (right->call_result_expression() != NULL)
++    right = right->call_result_expression()->call();
++  if (right->call_expression() != NULL)
++    this->handle_call(object, right);
++  else if (right->binary_expression() != NULL)
++    this->handle_binary(object, right);
++}
++
+ // Create connection nodes for each variable in a called function.
+ 
+ int
+@@ -1024,8 +1054,6 @@ Build_connection_graphs::variable(Named_
+ 		 || rhs_no != var)
+ 		break;
+ 
+-	      var_node->connection_node()->set_escape_state(Node::ESCAPE_ARG);
+-
+ 	      Node* def_node = this->gogo_->add_connection_node(lhs_no);
+ 	      def_node->add_edge(var_node);
+ 	    }
+@@ -1075,20 +1103,7 @@ Build_connection_graphs::variable(Named_
+ 	      if (cond->call_expression() != NULL)
+ 		this->handle_call(var, cond);
+ 	      else if (cond->binary_expression() != NULL)
+-		{
+-		  Binary_expression* comp = cond->binary_expression();
+-		  Expression* left = comp->left();
+-		  Expression* right = comp->right();
+-
+-		  if (left->call_result_expression() != NULL)
+-		    left = left->call_result_expression()->call();
+-		  if (left->call_expression() != NULL)
+-		    this->handle_call(var, left);
+-		  if (right->call_result_expression() != NULL)
+-		    right = right->call_result_expression()->call();
+-		  if (right->call_expression() != NULL)
+-		    this->handle_call(var, right);
+-		}
++		this->handle_binary(var, cond);
+ 	    }
+ 	    break;
+ 
+@@ -1117,6 +1132,8 @@ Build_connection_graphs::variable(Named_
+ 		init = init->call_result_expression()->call();
+ 	      if (init->call_expression() != NULL)
+ 		this->handle_call(var, init);
++	      else if (init->binary_expression() != NULL)
++		this->handle_binary(var, init);
+ 	    }
+ 	    break;
+ 
diff --git a/debian/patches/go-escape-analysis6.diff b/debian/patches/go-escape-analysis6.diff
new file mode 100644
index 0000000..7964826
--- /dev/null
+++ b/debian/patches/go-escape-analysis6.diff
@@ -0,0 +1,208 @@
+# DP: escape: Analyze multiple result type assertions.
+    
+    For multi-result type assertions, the object being converted is hidden
+    behind unsafe conversions and calls to runtime methods.  This change
+    allows the analysis to make edges between the result of the assertion
+    and the object being asserted.
+
+Index: b/src/gcc/go/gofrontend/expressions.h
+===================================================================
+--- a/src/gcc/go/gofrontend/expressions.h
++++ b/src/gcc/go/gofrontend/expressions.h
+@@ -32,6 +32,7 @@ class Temporary_reference_expression;
+ class Set_and_use_temporary_expression;
+ class String_expression;
+ class Type_conversion_expression;
++class Unsafe_type_conversion_expression;
+ class Unary_expression;
+ class Binary_expression;
+ class Call_expression;
+@@ -571,6 +572,15 @@ class Expression
+   conversion_expression()
+   { return this->convert<Type_conversion_expression, EXPRESSION_CONVERSION>(); }
+ 
++  // If this is an unsafe conversion expression, return the
++  // Unsafe_type_conversion_expression structure.  Otherwise, return NULL.
++  Unsafe_type_conversion_expression*
++  unsafe_conversion_expression()
++  {
++    return this->convert<Unsafe_type_conversion_expression,
++			 EXPRESSION_UNSAFE_CONVERSION>();
++  }
++
+   // Return whether this is the expression nil.
+   bool
+   is_nil_expression() const
+@@ -1505,6 +1515,57 @@ class Type_conversion_expression : publi
+   bool may_convert_function_types_;
+ };
+ 
++// An unsafe type conversion, used to pass values to builtin functions.
++
++class Unsafe_type_conversion_expression : public Expression
++{
++ public:
++  Unsafe_type_conversion_expression(Type* type, Expression* expr,
++				    Location location)
++    : Expression(EXPRESSION_UNSAFE_CONVERSION, location),
++      type_(type), expr_(expr)
++  { }
++
++  Expression*
++  expr() const
++  { return this->expr_; }
++
++ protected:
++  int
++  do_traverse(Traverse* traverse);
++
++  bool
++  do_is_immutable() const;
++
++  Type*
++  do_type()
++  { return this->type_; }
++
++  void
++  do_determine_type(const Type_context*)
++  { this->expr_->determine_type_no_context(); }
++
++  Expression*
++  do_copy()
++  {
++    return new Unsafe_type_conversion_expression(this->type_,
++						 this->expr_->copy(),
++						 this->location());
++  }
++
++  Bexpression*
++  do_get_backend(Translate_context*);
++
++  void
++  do_dump_expression(Ast_dump_context*) const;
++
++ private:
++  // The type to convert to.
++  Type* type_;
++  // The expression to convert.
++  Expression* expr_;
++};
++
+ // A Unary expression.
+ 
+ class Unary_expression : public Expression
+@@ -2024,6 +2085,10 @@ class Call_result_expression : public Ex
+   call() const
+   { return this->call_; }
+ 
++  unsigned int
++  index() const
++  { return this->index_; }
++
+  protected:
+   int
+   do_traverse(Traverse*);
+Index: b/src/gcc/go/gofrontend/escape.cc
+===================================================================
+--- a/src/gcc/go/gofrontend/escape.cc
++++ b/src/gcc/go/gofrontend/escape.cc
+@@ -547,6 +547,41 @@ Build_connection_graphs::resolve_var_ref
+ 	expr = expr->type_guard_expression()->expr();
+ 	break;
+ 
++      case Expression::EXPRESSION_UNSAFE_CONVERSION:
++	{
++	  Expression* e = expr->unsafe_conversion_expression()->expr();
++	  if (e->call_result_expression() != NULL
++	      && e->call_result_expression()->index() == 0)
++	    {
++	      // a, ok := p.(T) gets lowered into a call to one of the interface
++	      // to type conversion functions instead of a type guard expression.
++	      // We only want to make a connection between a and p, the bool
++	      // result should not escape because p escapes.
++	      e = e->call_result_expression()->call();
++
++	      Named_object* fn =
++		e->call_expression()->fn()->func_expression()->named_object();
++	      std::string fn_name = fn->name();
++	      if (fn->package() == NULL
++		  && fn->is_function_declaration()
++		  && !fn->func_declaration_value()->asm_name().empty())
++		{
++		  if (fn_name == "ifaceI2E2"
++		      || fn_name == "ifaceI2I2")
++		    e = e->call_expression()->args()->at(0);
++		  else if (fn_name == "ifaceE2I2"
++			   || fn_name == "ifaceI2I2"
++			   || fn_name == "ifaceE2T2P"
++			   || fn_name == "ifaceI2T2P"
++			   || fn_name == "ifaceE2T2"
++			   || fn_name == "ifaceI2T2")
++		    e = e->call_expression()->args()->at(1);
++		}
++	    }
++	  expr = e;
++	}
++	break;
++
+       default:
+ 	done = true;
+ 	break;
+Index: b/src/gcc/go/gofrontend/expressions.cc
+===================================================================
+--- a/src/gcc/go/gofrontend/expressions.cc
++++ b/src/gcc/go/gofrontend/expressions.cc
+@@ -3391,52 +3391,7 @@ Expression::make_cast(Type* type, Expres
+   return new Type_conversion_expression(type, val, location);
+ }
+ 
+-// An unsafe type conversion, used to pass values to builtin functions.
+-
+-class Unsafe_type_conversion_expression : public Expression
+-{
+- public:
+-  Unsafe_type_conversion_expression(Type* type, Expression* expr,
+-				    Location location)
+-    : Expression(EXPRESSION_UNSAFE_CONVERSION, location),
+-      type_(type), expr_(expr)
+-  { }
+-
+- protected:
+-  int
+-  do_traverse(Traverse* traverse);
+-
+-  bool
+-  do_is_immutable() const;
+-
+-  Type*
+-  do_type()
+-  { return this->type_; }
+-
+-  void
+-  do_determine_type(const Type_context*)
+-  { this->expr_->determine_type_no_context(); }
+-
+-  Expression*
+-  do_copy()
+-  {
+-    return new Unsafe_type_conversion_expression(this->type_,
+-						 this->expr_->copy(),
+-						 this->location());
+-  }
+-
+-  Bexpression*
+-  do_get_backend(Translate_context*);
+-
+-  void
+-  do_dump_expression(Ast_dump_context*) const;
+-
+- private:
+-  // The type to convert to.
+-  Type* type_;
+-  // The expression to convert.
+-  Expression* expr_;
+-};
++// Class Unsafe_type_conversion_expression.
+ 
+ // Traversal.
+ 
diff --git a/debian/patches/go-testsuite.diff b/debian/patches/go-testsuite.diff
new file mode 100644
index 0000000..9856216
--- /dev/null
+++ b/debian/patches/go-testsuite.diff
@@ -0,0 +1,21 @@
+# DP: Skip Go testcase on AArch64 which hangs on the buildds.
+
+Index: b/src/gcc/testsuite/go.test/go-test.exp
+===================================================================
+--- a/src/gcc/testsuite/go.test/go-test.exp
++++ b/src/gcc/testsuite/go.test/go-test.exp
+@@ -398,6 +398,14 @@ proc go-gc-tests { } {
+ 	    }
+ 	}
+ 
++	# Hangs on the buildds
++	if { [istarget "aarch64*-*-*"] } {
++	    if { [string match "*go.test/test/chan/select5.go" $test] } {
++		untested $test
++		continue
++	    }
++	}
++
+ 	if { [file tail $test] == "init1.go" } {
+ 	    # This tests whether GC runs during init, which for gccgo
+ 	    # it currently does not.
diff --git a/debian/patches/go-use-gold.diff b/debian/patches/go-use-gold.diff
new file mode 100644
index 0000000..8ee113a
--- /dev/null
+++ b/debian/patches/go-use-gold.diff
@@ -0,0 +1,103 @@
+# DP: Pass -fuse-ld=gold to gccgo on targets supporting -fsplit-stack
+
+gcc/go/                                                                                      
+                                                                                             
+        * gospec.c (lang_specific_driver): Pass -fuse-ld=gold on targets                     
+        supporting -fsplit-stack, unless overwritten.                                        
+                                                                                             
+gcc/                                                                                         
+        * configure.ac: New define HAVE_GOLD_NON_DEFAULT.                                    
+        * config.in: Regenerate.                                                             
+                                                                                             
+Index: b/src/gcc/go/gospec.c
+===================================================================
+--- a/src/gcc/go/gospec.c
++++ b/src/gcc/go/gospec.c
+@@ -117,6 +117,10 @@ lang_specific_driver (struct cl_decoded_
+   /* Whether the -S option was used.  */
+   bool saw_opt_S = false;
+ 
++  /* "-fuse-ld=" if it appears on the command line.  */
++  bool saw_use_ld ATTRIBUTE_UNUSED = false;
++  int need_gold = 0;
++
+   /* The first input file with an extension of .go.  */
+   const char *first_go_file = NULL;  
+ 
+@@ -217,6 +221,11 @@ lang_specific_driver (struct cl_decoded_
+ 	    }
+ 
+ 	  break;
++
++	case OPT_fuse_ld_bfd:
++	case OPT_fuse_ld_gold:
++	  saw_use_ld = true;
++	  break;
+ 	}
+     }
+ 
+@@ -226,8 +235,14 @@ lang_specific_driver (struct cl_decoded_
+   shared_libgcc = 0;
+ #endif
+ 
++#if defined(TARGET_CAN_SPLIT_STACK) && defined(HAVE_GOLD_NON_DEFAULT)
++  if (!saw_use_ld)
++    need_gold = 1;
++#endif
++
+   /* Make sure to have room for the trailing NULL argument.  */
+-  num_args = argc + need_math + shared_libgcc + (library > 0) * 5 + 10;
++  num_args = argc + need_math + shared_libgcc + need_gold +
++    (library > 0) * 5 + 10;
+   new_decoded_options = XNEWVEC (struct cl_decoded_option, num_args);
+ 
+   i = 0;
+@@ -244,6 +259,14 @@ lang_specific_driver (struct cl_decoded_
+ 		       &new_decoded_options[j]);
+       j++;
+     }
++#ifdef HAVE_GOLD_NON_DEFAULT
++  if (need_gold)
++    {
++      generate_option (OPT_fuse_ld_gold, NULL, 1, CL_DRIVER,
++		       &new_decoded_options[j]);
++      j++;
++    }
++#endif
+ #endif
+ 
+   /* NOTE: We start at 1 now, not 0.  */
+Index: b/src/gcc/config.in
+===================================================================
+--- a/src/gcc/config.in
++++ b/src/gcc/config.in
+@@ -1283,6 +1283,12 @@
+ #endif
+ 
+ 
++/* Define if the gold linker is available as a non-default */
++#ifndef USED_FOR_TARGET
++#undef HAVE_GOLD_NON_DEFAULT
++#endif
++
++
+ /* Define if you have the iconv() function. */
+ #ifndef USED_FOR_TARGET
+ #undef HAVE_ICONV
+Index: b/src/gcc/configure.ac
+===================================================================
+--- a/src/gcc/configure.ac
++++ b/src/gcc/configure.ac
+@@ -2226,6 +2226,12 @@ if test x$gcc_cv_ld != x; then
+ fi
+ AC_MSG_RESULT($ld_is_gold)
+ 
++# Check to see if ld is used, and gold is available
++if test x$ld_is_gold = xno && which ${gcc_cv_ld}.gold >/dev/null 2>&1; then
++  AC_DEFINE(HAVE_GOLD_NON_DEFAULT, 1,
++  	    [Define if the gold linker is available as a non-default])
++fi
++
+ ORIGINAL_LD_FOR_TARGET=$gcc_cv_ld
+ AC_SUBST(ORIGINAL_LD_FOR_TARGET)
+ case "$ORIGINAL_LD_FOR_TARGET" in
diff --git a/debian/patches/gotools-configury.diff b/debian/patches/gotools-configury.diff
new file mode 100644
index 0000000..5560129
--- /dev/null
+++ b/debian/patches/gotools-configury.diff
@@ -0,0 +1,45 @@
+# DP: Fix gotools cross build.
+
+	* Makefile.am: Use GOC configured in configure.ac for cross builds.
+	* configure.ac: Fix NATIVE conditional.
+	* Makefile.in, configure: Regenerate.
+
+Index: b/src/gotools/Makefile.am
+===================================================================
+--- a/src/gotools/Makefile.am
++++ b/src/gotools/Makefile.am
+@@ -33,7 +33,7 @@ if NATIVE
+ # Use the compiler we just built.
+ GOCOMPILER = $(GOC_FOR_TARGET)
+ else
+-GOCOMPILER = $(GOC)
++GOCOMPILER = @GOC@
+ endif
+ 
+ GOCFLAGS = $(CFLAGS_FOR_TARGET)
+Index: b/src/gotools/Makefile.in
+===================================================================
+--- a/src/gotools/Makefile.in
++++ b/src/gotools/Makefile.in
+@@ -226,7 +226,7 @@ PWD_COMMAND = $${PWDCMD-pwd}
+ STAMP = echo timestamp >
+ libgodir = ../$(target_noncanonical)/libgo
+ LIBGODEP = $(libgodir)/libgo.la
+- at NATIVE_FALSE@GOCOMPILER = $(GOC)
++ at NATIVE_FALSE@GOCOMPILER = @GOC@
+ 
+ # Use the compiler we just built.
+ @NATIVE_TRUE at GOCOMPILER = $(GOC_FOR_TARGET)
+Index: b/src/gotools/configure.ac
+===================================================================
+--- a/src/gotools/configure.ac
++++ b/src/gotools/configure.ac
+@@ -46,7 +46,7 @@ AC_PROG_INSTALL
+ AC_PROG_CC
+ AC_PROG_GO
+ 
+-AM_CONDITIONAL(NATIVE, test "$cross_compiling" = no)
++AM_CONDITIONAL(NATIVE, test "$host" = "$target")
+ 
+ dnl Test for -lsocket and -lnsl.  Copied from libjava/configure.ac.
+ AC_CACHE_CHECK([for socket libraries], gotools_cv_lib_sockets,
diff --git a/debian/patches/hurd-boehm-gc.diff b/debian/patches/hurd-boehm-gc.diff
new file mode 100644
index 0000000..f650841
--- /dev/null
+++ b/debian/patches/hurd-boehm-gc.diff
@@ -0,0 +1,26 @@
+Index: b/src/boehm-gc/configure.host
+===================================================================
+--- a/src/boehm-gc/configure.host
++++ b/src/boehm-gc/configure.host
+@@ -41,7 +41,7 @@ else
+ fi
+ 
+ case "${host}" in
+-  *-linux*|*-kfreebsd*-gnu*)
++  *-linux*|*-kfreebsd*-gnu*|*-gnu*)
+     gc_use_mmap=yes
+     ;;
+ esac
+Index: b/src/boehm-gc/include/private/gcconfig.h
+===================================================================
+--- a/src/boehm-gc/include/private/gcconfig.h
++++ b/src/boehm-gc/include/private/gcconfig.h
+@@ -2132,7 +2132,7 @@
+ #   endif
+ # endif
+ 
+-#if defined(LINUX) && defined(USE_MMAP)
++#if (defined(LINUX) || defined(HURD)) && defined(USE_MMAP)
+     /* The kernel may do a somewhat better job merging mappings etc.	*/
+     /* with anonymous mappings.						*/
+ #   define USE_MMAP_ANON
diff --git a/debian/patches/hurd-changes.diff b/debian/patches/hurd-changes.diff
new file mode 100644
index 0000000..2b368da
--- /dev/null
+++ b/debian/patches/hurd-changes.diff
@@ -0,0 +1,20 @@
+# DP: Traditional GNU systems don't have a /usr directory.  However, Debian
+# DP: systems do, and we support both having a /usr -> . symlink, and having a
+# DP: /usr directory like the other ports.  So this patch should NOT go
+# DP: upstream.
+
+---
+ config.gcc |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/src/gcc/config.gcc	(r�vision 182461)
++++ b/src/gcc/config.gcc	(copie de travail)
+@@ -583,7 +583,7 @@
+     *-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu | *-*-knetbsd*-gnu | *-*-kopensolaris*-gnu)
+       :;;
+     *-*-gnu*)
+-      native_system_header_dir=/include
++      # native_system_header_dir=/include
+       ;;
+   esac
+   # glibc / uclibc / bionic switch.
diff --git a/debian/patches/kfreebsd-boehm-gc.diff b/debian/patches/kfreebsd-boehm-gc.diff
new file mode 100644
index 0000000..40d6577
--- /dev/null
+++ b/debian/patches/kfreebsd-boehm-gc.diff
@@ -0,0 +1,15 @@
+# DP: boehm-gc: use mmap instead of brk also on kfreebsd-*.
+
+Index: b/src/boehm-gc/configure.host
+===================================================================
+--- a/src/boehm-gc/configure.host
++++ b/src/boehm-gc/configure.host
+@@ -41,7 +41,7 @@ else
+ fi
+ 
+ case "${host}" in
+-  *-linux*)
++  *-linux*|*-kfreebsd*-gnu*)
+     gc_use_mmap=yes
+     ;;
+ esac
diff --git a/debian/patches/kfreebsd-unwind.diff b/debian/patches/kfreebsd-unwind.diff
new file mode 100644
index 0000000..d755b7b
--- /dev/null
+++ b/debian/patches/kfreebsd-unwind.diff
@@ -0,0 +1,53 @@
+# DP: DWARF2 EH unwinding support for AMD x86-64 and x86 KFreeBSD.
+
+Index: b/src/libgcc/config.host
+===================================================================
+--- a/src/libgcc/config.host
++++ b/src/libgcc/config.host
+@@ -595,7 +595,12 @@ i[34567]86-*-linux*)
+ 	tm_file="${tm_file} i386/elf-lib.h"
+ 	md_unwind_header=i386/linux-unwind.h
+ 	;;
+-i[34567]86-*-kfreebsd*-gnu | i[34567]86-*-knetbsd*-gnu | i[34567]86-*-gnu* | i[34567]86-*-kopensolaris*-gnu)
++i[34567]86-*-kfreebsd*-gnu)
++	extra_parts="$extra_parts crtprec32.o crtprec64.o crtprec80.o crtfastmath.o"
++	tmake_file="${tmake_file} i386/t-crtpc i386/t-crtfm i386/t-crtstuff t-dfprules"
++	md_unwind_header=i386/freebsd-unwind.h
++	;;
++i[34567]86-*-knetbsd*-gnu | i[34567]86-*-gnu* | i[34567]86-*-kopensolaris*-gnu)
+ 	extra_parts="$extra_parts crtprec32.o crtprec64.o crtprec80.o crtfastmath.o"
+ 	tmake_file="${tmake_file} i386/t-crtpc i386/t-crtfm i386/t-crtstuff t-dfprules"
+ 	tm_file="${tm_file} i386/elf-lib.h"
+@@ -606,7 +611,12 @@ x86_64-*-linux*)
+ 	tm_file="${tm_file} i386/elf-lib.h"
+ 	md_unwind_header=i386/linux-unwind.h
+ 	;;
+-x86_64-*-kfreebsd*-gnu | x86_64-*-knetbsd*-gnu)
++x86_64-*-kfreebsd*-gnu)
++	extra_parts="$extra_parts crtprec32.o crtprec64.o crtprec80.o crtfastmath.o"
++	tmake_file="${tmake_file} i386/t-crtpc i386/t-crtfm i386/t-crtstuff t-dfprules"
++	md_unwind_header=i386/freebsd-unwind.h
++	;;
++x86_64-*-knetbsd*-gnu)
+ 	extra_parts="$extra_parts crtprec32.o crtprec64.o crtprec80.o crtfastmath.o"
+ 	tmake_file="${tmake_file} i386/t-crtpc i386/t-crtfm i386/t-crtstuff t-dfprules"
+ 	tm_file="${tm_file} i386/elf-lib.h"
+Index: b/src/libgcc/config/i386/freebsd-unwind.h
+===================================================================
+--- a/src/libgcc/config/i386/freebsd-unwind.h
++++ b/src/libgcc/config/i386/freebsd-unwind.h
+@@ -26,6 +26,8 @@ see the files COPYING3 and COPYING.RUNTI
+ /* Do code reading to identify a signal frame, and set the frame
+    state data appropriately.  See unwind-dw2.c for the structs. */
+ 
++#ifndef inhibit_libc
++
+ #include <sys/types.h>
+ #include <signal.h>
+ #include <sys/ucontext.h>
+@@ -171,3 +173,5 @@ x86_freebsd_fallback_frame_state
+   return _URC_NO_REASON;
+ }
+ #endif /* ifdef __x86_64__  */
++
++#endif /* ifndef inhibit_libc */
diff --git a/debian/patches/libasan-sparc.diff b/debian/patches/libasan-sparc.diff
new file mode 100644
index 0000000..4b52ac2
--- /dev/null
+++ b/debian/patches/libasan-sparc.diff
@@ -0,0 +1,163 @@
+# DP: Re-apply sanitizer patch for sparc, dropped upstream
+
+# don't remove, this is regularly overwritten, see PR sanitizer/63958.
+
+libsanitizer/
+
+2014-10-14  David S. Miller  <davem at davemloft.net>
+
+	* sanitizer_common/sanitizer_platform_limits_linux.cc (time_t):
+	Define at __kernel_time_t, as needed for sparc.
+	(struct __old_kernel_stat): Don't check if __sparc__ is defined.
+	* libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h
+	(__sanitizer): Define struct___old_kernel_stat_sz,
+	struct_kernel_stat_sz, and struct_kernel_stat64_sz for sparc.
+	(__sanitizer_ipc_perm): Adjust for sparc targets.
+	(__sanitizer_shmid_ds): Likewsie.
+	(__sanitizer_sigaction): Likewsie.
+	(IOC_SIZE): Likewsie.
+
+Index: libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h
+===================================================================
+--- a/src/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h	(revision 216223)
++++ a/src/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h	(revision 216224)
+@@ -72,6 +72,14 @@
+   const unsigned struct_kernel_stat_sz = 144;
+   #endif
+   const unsigned struct_kernel_stat64_sz = 104;
++#elif defined(__sparc__) && defined(__arch64__)
++  const unsigned struct___old_kernel_stat_sz = 0;
++  const unsigned struct_kernel_stat_sz = 104;
++  const unsigned struct_kernel_stat64_sz = 144;
++#elif defined(__sparc__) && !defined(__arch64__)
++  const unsigned struct___old_kernel_stat_sz = 0;
++  const unsigned struct_kernel_stat_sz = 64;
++  const unsigned struct_kernel_stat64_sz = 104;
+ #endif
+   struct __sanitizer_perf_event_attr {
+     unsigned type;
+@@ -94,7 +102,7 @@
+ 
+ #if defined(__powerpc64__)
+   const unsigned struct___old_kernel_stat_sz = 0;
+-#else
++#elif !defined(__sparc__)
+   const unsigned struct___old_kernel_stat_sz = 32;
+ #endif
+ 
+@@ -173,6 +181,18 @@
+     unsigned short __pad1;
+     unsigned long __unused1;
+     unsigned long __unused2;
++#elif defined(__sparc__)
++# if defined(__arch64__)
++    unsigned mode;
++    unsigned short __pad1;
++# else
++    unsigned short __pad1;
++    unsigned short mode;
++    unsigned short __pad2;
++# endif
++    unsigned short __seq;
++    unsigned long long __unused1;
++    unsigned long long __unused2;
+ #else
+     unsigned short mode;
+     unsigned short __pad1;
+@@ -190,6 +210,26 @@
+ 
+   struct __sanitizer_shmid_ds {
+     __sanitizer_ipc_perm shm_perm;
++  #if defined(__sparc__)
++  # if !defined(__arch64__)
++    u32 __pad1;
++  # endif
++    long shm_atime;
++  # if !defined(__arch64__)
++    u32 __pad2;
++  # endif
++    long shm_dtime;
++  # if !defined(__arch64__)
++    u32 __pad3;
++  # endif
++    long shm_ctime;
++    uptr shm_segsz;
++    int shm_cpid;
++    int shm_lpid;
++    unsigned long shm_nattch;
++    unsigned long __glibc_reserved1;
++    unsigned long __glibc_reserved2;
++  #else    
+   #ifndef __powerpc__
+     uptr shm_segsz;
+   #elif !defined(__powerpc64__)
+@@ -227,6 +267,7 @@
+     uptr __unused4;
+     uptr __unused5;
+   #endif
++#endif
+   };
+ #elif SANITIZER_FREEBSD
+   struct __sanitizer_ipc_perm {
+@@ -523,9 +564,13 @@
+ #else
+     __sanitizer_sigset_t sa_mask;
+ #ifndef __mips__
++#if defined(__sparc__)
++    unsigned long sa_flags;
++#else
+     int sa_flags;
+ #endif
+ #endif
++#endif
+ #if SANITIZER_LINUX
+     void (*sa_restorer)();
+ #endif
+@@ -745,7 +790,7 @@
+ 
+ #define IOC_NRBITS 8
+ #define IOC_TYPEBITS 8
+-#if defined(__powerpc__) || defined(__powerpc64__) || defined(__mips__)
++#if defined(__powerpc__) || defined(__powerpc64__) || defined(__mips__) || defined(__sparc__)
+ #define IOC_SIZEBITS 13
+ #define IOC_DIRBITS 3
+ #define IOC_NONE 1U
+@@ -775,7 +820,17 @@
+ #define IOC_DIR(nr) (((nr) >> IOC_DIRSHIFT) & IOC_DIRMASK)
+ #define IOC_TYPE(nr) (((nr) >> IOC_TYPESHIFT) & IOC_TYPEMASK)
+ #define IOC_NR(nr) (((nr) >> IOC_NRSHIFT) & IOC_NRMASK)
++
++#if defined(__sparc__)
++// In sparc the 14 bits SIZE field overlaps with the
++// least significant bit of DIR, so either IOC_READ or
++// IOC_WRITE shall be 1 in order to get a non-zero SIZE.
++# define IOC_SIZE(nr)                       \
++  ((((((nr) >> 29) & 0x7) & (4U|2U)) == 0)? \
++   0 : (((nr) >> 16) & 0x3fff))
++#else
+ #define IOC_SIZE(nr) (((nr) >> IOC_SIZESHIFT) & IOC_SIZEMASK)
++#endif
+ 
+   extern unsigned struct_arpreq_sz;
+   extern unsigned struct_ifreq_sz;
+Index: libsanitizer/sanitizer_common/sanitizer_platform_limits_linux.cc
+===================================================================
+--- a/src/libsanitizer/sanitizer_common/sanitizer_platform_limits_linux.cc	(revision 216223)
++++ a/src/libsanitizer/sanitizer_common/sanitizer_platform_limits_linux.cc	(revision 216224)
+@@ -36,6 +36,7 @@
+ #define uid_t __kernel_uid_t
+ #define gid_t __kernel_gid_t
+ #define off_t __kernel_off_t
++#define time_t __kernel_time_t
+ // This header seems to contain the definitions of _kernel_ stat* structs.
+ #include <asm/stat.h>
+ #undef ino_t
+@@ -60,7 +61,7 @@
+ }  // namespace __sanitizer
+ 
+ #if !defined(__powerpc64__) && !defined(__x86_64__) && !defined(__aarch64__)\
+-                            && !defined(__mips__)
++                            && !defined(__mips__) && !defined(__sparc__)
+ COMPILER_CHECK(struct___old_kernel_stat_sz == sizeof(struct __old_kernel_stat));
+ #endif
+ 
diff --git a/debian/patches/libcilkrts-targets.diff b/debian/patches/libcilkrts-targets.diff
new file mode 100644
index 0000000..3c3e1c9
--- /dev/null
+++ b/debian/patches/libcilkrts-targets.diff
@@ -0,0 +1,21 @@
+# DP: Disable libcilkrts on KFreeBSD and the Hurd. See #734973.
+
+Index: b/src/libcilkrts/configure.tgt
+===================================================================
+--- a/src/libcilkrts/configure.tgt
++++ b/src/libcilkrts/configure.tgt
+@@ -44,3 +44,14 @@ esac
+ 
+ # Disable libcilkrts on non POSIX hosted systems.
+ . ${srcdir}/../config/target-posix
++
++# Disable libcilkrts on KFreeBSD and the Hurd.
++if test x$enable_libcilkrts = x ; then
++    case "${target}" in
++    *-*-linux*)
++        ;;
++    *-*-gnu* | *-*-k*bsd*-gnu)
++        UNSUPPORTED=1
++        ;;
++    esac
++fi
diff --git a/debian/patches/libffi-ro-eh_frame_sect.diff b/debian/patches/libffi-ro-eh_frame_sect.diff
new file mode 100644
index 0000000..4da147b
--- /dev/null
+++ b/debian/patches/libffi-ro-eh_frame_sect.diff
@@ -0,0 +1,15 @@
+# DP: PR libffi/47248, force a read only eh frame section.
+
+Index: b/src/libffi/configure.ac
+===================================================================
+--- a/src/libffi/configure.ac
++++ b/src/libffi/configure.ac
+@@ -270,6 +270,8 @@ if test "x$GCC" = "xyes"; then
+   		libffi_cv_hidden_visibility_attribute=yes
+   	    fi
+   	fi
++	# FIXME: see PR libffi/47248
++	libffi_cv_ro_eh_frame=yes
+   	rm -f conftest.*
+       ])
+   if test $libffi_cv_hidden_visibility_attribute = yes; then
diff --git a/debian/patches/libgnatprj-cross-hack.diff b/debian/patches/libgnatprj-cross-hack.diff
new file mode 100644
index 0000000..9c4e86a
--- /dev/null
+++ b/debian/patches/libgnatprj-cross-hack.diff
@@ -0,0 +1,69 @@
+This is a gross hack to cross build libgnatprj without having the
+gmp.h header for the target architecture.  Are libgnatvsn and libgnatprj
+really target libraries, or host libraries? The odd thing is that
+the gnat cross build tools are not linked against these two libraries.
+
+Index: b/src/gcc/wide-int.h
+===================================================================
+--- a/src/gcc/wide-int.h
++++ b/src/gcc/wide-int.h
+@@ -3087,8 +3087,10 @@ namespace wi
+   wide_int from_buffer (const unsigned char *, unsigned int);
+ 
+ #ifndef GENERATOR_FILE
++#ifndef LIBGNATPRJ_CROSS_HACK
+   void to_mpz (const wide_int_ref &, mpz_t, signop);
+ #endif
++#endif
+ 
+   wide_int mask (unsigned int, bool, unsigned int);
+   wide_int shifted_mask (unsigned int, unsigned int, bool, unsigned int);
+Index: b/src/gcc/system.h
+===================================================================
+--- a/src/gcc/system.h
++++ b/src/gcc/system.h
+@@ -659,8 +659,10 @@ extern int vsnprintf (char *, size_t, co
+ 
+ /* Do not introduce a gmp.h dependency on the build system.  */
+ #ifndef GENERATOR_FILE
++#ifndef LIBGNATPRJ_CROSS_HACK
+ #include <gmp.h>
+ #endif
++#endif
+ 
+ /* Get libiberty declarations.  */
+ #include "libiberty.h"
+Index: b/src/libgnatprj/Makefile.in
+===================================================================
+--- a/src/libgnatprj/Makefile.in
++++ b/src/libgnatprj/Makefile.in
+@@ -92,12 +92,12 @@ obj-shared/%.o: %.ads
+ 	$(GCC) -c -fPIC $(ADAFLAGS) $(LIBGNAT_JUST_BUILT) $(LIBGNATVSN) $< -o $@
+ 
+ obj-shared/%.o: %.c
+-	$(GPP) -c -fPIC $(CFLAGS) -DHAVE_CONFIG_H -DIN_GCC -pedantic \
++	$(GPP) -c -fPIC $(CFLAGS) -DHAVE_CONFIG_H -DIN_GCC -DLIBGNATPRJ_CROSS_HACK -pedantic \
+ 	   -I at srcdir@/../gcc -I at srcdir@/../include -I at srcdir@/../libcpp/include -I../../gcc \
+ 	   $< -o $@
+ 
+ obj-shared/prefix.o: @srcdir@/../gcc/prefix.c
+-	$(GPP) -c -fPIC $(CFLAGS) -DPREFIX=\"@prefix@\" -DBASEVER=\"$(BASEVER)\" \
++	$(GPP) -c -fPIC $(CFLAGS) -DPREFIX=\"@prefix@\" -DBASEVER=\"$(BASEVER)\" -DLIBGNATPRJ_CROSS_HACK \
+ 	   -I at srcdir@/../gcc -I at srcdir@/../include -I../../gcc -I at srcdir@/../libcpp/include \
+ 	   $< -o $@
+ 
+@@ -118,12 +118,12 @@ obj-static/%.o: %.ads
+ 	$(GCC) -c $(ADAFLAGS) $(LIBGNAT_JUST_BUILT) $(LIBGNATVSN) $< -o $@
+ 
+ obj-static/%.o: %.c
+-	$(GPP) -c $(CFLAGS) -DHAVE_CONFIG_H -DIN_GCC -pedantic \
++	$(GPP) -c $(CFLAGS) -DHAVE_CONFIG_H -DIN_GCC -DLIBGNATPRJ_CROSS_HACK -pedantic \
+ 	   -I at srcdir@/../gcc -I at srcdir@/../include -I at srcdir@/../libcpp/include -I../../gcc \
+ 	   $< -o $@
+ 
+ obj-static/prefix.o: @srcdir@/../gcc/prefix.c
+-	$(GPP) -c $(CFLAGS) -DPREFIX=\"@prefix@\" -DBASEVER=\"$(BASEVER)\" \
++	$(GPP) -c $(CFLAGS) -DPREFIX=\"@prefix@\" -DBASEVER=\"$(BASEVER)\" -DLIBGNATPRJ_CROSS_HACK \
+ 	   -I at srcdir@/../gcc -I at srcdir@/../include -I../../gcc -I at srcdir@/../libcpp/include \
+ 	   $< -o $@
+ 
diff --git a/debian/patches/libgnatprj-link.diff b/debian/patches/libgnatprj-link.diff
new file mode 100644
index 0000000..abf026f
--- /dev/null
+++ b/debian/patches/libgnatprj-link.diff
@@ -0,0 +1,21 @@
+# DP: Don't link libgnatprj using --no-allow-shlib-undefined on older releases.
+
+in precise:
+/lib/x86_64-linux-gnu/libc.so.6: undefined reference to `_rtld_global at GLIBC_PRIVATE'
+/lib/x86_64-linux-gnu/libc.so.6: undefined reference to `_dl_argv at GLIBC_PRIVATE'
+/lib/x86_64-linux-gnu/libc.so.6: undefined reference to `_rtld_global_ro at GLIBC_PRIVATE'
+/lib/x86_64-linux-gnu/libc.so.6: undefined reference to `__libc_enable_secure at GLIBC_PRIVATE'
+/lib/x86_64-linux-gnu/libc.so.6: undefined reference to `__tls_get_addr at GLIBC_2.3'
+collect2: error: ld returned 1 exit status
+
+--- a/src/libgnatprj/Makefile.in
++++ b/src/libgnatprj/Makefile.in
+@@ -74,7 +74,7 @@
+ 
+ libgnatprj.so.$(LIB_VERSION): $(addprefix obj-shared/,$(OBJECTS))
+ 	: # Make libgnatprj.so
+-	$(GCC) -o $@ -shared -fPIC -Wl,--soname,$@ -Wl,--no-allow-shlib-undefined \
++	$(GCC) -o $@ -shared -fPIC -Wl,--soname,$@ \
+ 	   $^ $(addprefix ../libiberty/pic/,$(LIBIBERTY_OBJECTS)) \
+ 	   -L../gcc/ada/rts -lgnat-$(LIB_VERSION) \
+ 	   -L../libgnatvsn -lgnatvsn
diff --git a/debian/patches/libgo-revert-timeout-exp.diff b/debian/patches/libgo-revert-timeout-exp.diff
new file mode 100644
index 0000000..fbf8a6c
--- /dev/null
+++ b/debian/patches/libgo-revert-timeout-exp.diff
@@ -0,0 +1,12 @@
+Index: b/src/libgo/testsuite/lib/libgo.exp
+===================================================================
+--- a/src/libgo/testsuite/lib/libgo.exp
++++ b/src/libgo/testsuite/lib/libgo.exp
+@@ -45,7 +45,6 @@ load_gcc_lib wrapper.exp
+ load_gcc_lib target-supports.exp
+ load_gcc_lib target-utils.exp
+ load_gcc_lib gcc-defs.exp
+-load_gcc_lib timeout.exp
+ load_gcc_lib go.exp
+ 
+ proc libgo_init { args } {
diff --git a/debian/patches/libgo-setcontext-config.diff b/debian/patches/libgo-setcontext-config.diff
new file mode 100644
index 0000000..a34c46f
--- /dev/null
+++ b/debian/patches/libgo-setcontext-config.diff
@@ -0,0 +1,21 @@
+# DP: libgo: Overwrite the setcontext_clobbers_tls check on mips*
+
+Index: b/src/libgo/configure.ac
+===================================================================
+--- a/src/libgo/configure.ac
++++ b/src/libgo/configure.ac
+@@ -797,6 +797,14 @@ main ()
+ CFLAGS="$CFLAGS_hold"
+ LIBS="$LIBS_hold"
+ ])
++dnl overwrite for the mips* 64bit multilibs, fails on some buildds
++if test "$libgo_cv_lib_setcontext_clobbers_tls" = "yes"; then
++  case "$target" in
++  mips*-linux-*)
++    AC_MSG_WARN([FIXME: overwrite setcontext_clobbers_tls for $target:$ptr_type_size])
++    libgo_cv_lib_setcontext_clobbers_tls=no ;;
++  esac
++fi
+ if test "$libgo_cv_lib_setcontext_clobbers_tls" = "yes"; then
+   AC_DEFINE(SETCONTEXT_CLOBBERS_TLS, 1,
+ 	    [Define if setcontext clobbers TLS variables])
diff --git a/debian/patches/libgo-testsuite.diff b/debian/patches/libgo-testsuite.diff
new file mode 100644
index 0000000..220f8c6
--- /dev/null
+++ b/debian/patches/libgo-testsuite.diff
@@ -0,0 +1,52 @@
+# DP: Only run the libgo testsuite for flags configured in RUNTESTFLAGS
+
+Index: b/src/libgo/Makefile.am
+===================================================================
+--- a/src/libgo/Makefile.am
++++ b/src/libgo/Makefile.am
+@@ -2109,6 +2109,12 @@ CHECK = \
+ 	export LD_LIBRARY_PATH; \
+ 	$(MKDIR_P) $(@D); \
+ 	rm -f $@-testsum $@-testlog; \
++	run_check=yes; \
++	MULTILIBDIR="$(MULTILIBDIR)"; \
++	case "$$MULTILIBDIR" in /64|/x32) \
++	  echo "$$RUNTESTFLAGS" | grep -q "$${MULTILIBDIR\#/*}" || run_check=; \
++	esac; \
++	if test "$$run_check" = "yes"; then \
+ 	if test "$(USE_DEJAGNU)" = "yes"; then \
+ 	  $(SHELL) $(srcdir)/testsuite/gotest --dejagnu=yes --basedir=$(srcdir) --srcdir=$(srcdir)/go/$(@D) --pkgpath="$(@D)" --pkgfiles="$(go_$(subst /,_,$(@D))_files)" --testname="$(@D)" --goarch="$(GOARCH)" $(GOTESTFLAGS) $(go_$(subst /,_,$(@D))_test_files); \
+ 	elif test "$(GOBENCH)" != ""; then \
+@@ -2124,6 +2130,7 @@ CHECK = \
+ 	    echo "FAIL: $(@D)" > $@-testsum; \
+ 	    exit 1; \
+ 	  fi; \
++	fi; \
+ 	fi
+ 
+ # Build all packages before checking any.
+Index: b/src/libgo/Makefile.in
+===================================================================
+--- a/src/libgo/Makefile.in
++++ b/src/libgo/Makefile.in
+@@ -2196,6 +2196,12 @@ CHECK = \
+ 	export LD_LIBRARY_PATH; \
+ 	$(MKDIR_P) $(@D); \
+ 	rm -f $@-testsum $@-testlog; \
++	run_check=yes; \
++	MULTILIBDIR="$(MULTILIBDIR)"; \
++	case "$$MULTILIBDIR" in /64|/x32) \
++	  echo "$$RUNTESTFLAGS" | grep -q "$${MULTILIBDIR\#/*}" || run_check=; \
++	esac; \
++	if test "$$run_check" = "yes"; then \
+ 	if test "$(USE_DEJAGNU)" = "yes"; then \
+ 	  $(SHELL) $(srcdir)/testsuite/gotest --dejagnu=yes --basedir=$(srcdir) --srcdir=$(srcdir)/go/$(@D) --pkgpath="$(@D)" --pkgfiles="$(go_$(subst /,_,$(@D))_files)" --testname="$(@D)" --goarch="$(GOARCH)" $(GOTESTFLAGS) $(go_$(subst /,_,$(@D))_test_files); \
+ 	elif test "$(GOBENCH)" != ""; then \
+@@ -2211,6 +2217,7 @@ CHECK = \
+ 	    echo "FAIL: $(@D)" > $@-testsum; \
+ 	    exit 1; \
+ 	  fi; \
++	fi; \
+ 	fi
+ 
+ 
diff --git a/debian/patches/libgomp-kfreebsd-testsuite.diff b/debian/patches/libgomp-kfreebsd-testsuite.diff
new file mode 100644
index 0000000..acac273
--- /dev/null
+++ b/debian/patches/libgomp-kfreebsd-testsuite.diff
@@ -0,0 +1,16 @@
+# DP: Disable lock-2.c test on kfreebsd-*
+
+Index: b/src/libgomp/testsuite/libgomp.c/lock-2.c
+===================================================================
+--- a/src/libgomp/testsuite/libgomp.c/lock-2.c
++++ b/src/libgomp/testsuite/libgomp.c/lock-2.c
+@@ -4,6 +4,9 @@
+ int
+ main (void)
+ {
++#ifdef __FreeBSD_kernel__
++  return 1;
++#endif
+   int l = 0;
+   omp_nest_lock_t lock;
+   omp_init_nest_lock (&lock);
diff --git a/debian/patches/libgomp-omp_h-multilib.diff b/debian/patches/libgomp-omp_h-multilib.diff
new file mode 100644
index 0000000..e93f55b
--- /dev/null
+++ b/debian/patches/libgomp-omp_h-multilib.diff
@@ -0,0 +1,28 @@
+# DP: Fix up omp.h for multilibs.
+
+2008-06-09  Jakub Jelinek  <jakub at redhat.com>
+
+	* omp.h.in (omp_nest_lock_t): Fix up for Linux multilibs.
+
+2015-03-25  Matthias Klose  <doko at ubuntu.com>
+
+	* omp.h.in (omp_nest_lock_t): Limit the fix Linux.
+
+Index: b/src/libgomp/omp.h.in
+===================================================================
+--- a/src/libgomp/omp.h.in
++++ b/src/libgomp/omp.h.in
+@@ -40,8 +40,13 @@ typedef struct
+ 
+ typedef struct
+ {
++#if defined(__linux__)
++  unsigned char _x[8 + sizeof (void *)] 
++    __attribute__((__aligned__(sizeof (void *))));
++#else
+   unsigned char _x[@OMP_NEST_LOCK_SIZE@] 
+     __attribute__((__aligned__(@OMP_NEST_LOCK_ALIGN@)));
++#endif
+ } omp_nest_lock_t;
+ #endif
+ 
diff --git a/debian/patches/libitm-no-fortify-source.diff b/debian/patches/libitm-no-fortify-source.diff
new file mode 100644
index 0000000..8f15964
--- /dev/null
+++ b/debian/patches/libitm-no-fortify-source.diff
@@ -0,0 +1,19 @@
+# DP: Build libitm with -U_FORTIFY_SOURCE on x86 and x86_64.
+
+Index: b/src/libitm/configure.tgt
+===================================================================
+--- a/src/libitm/configure.tgt
++++ b/src/libitm/configure.tgt
+@@ -119,6 +119,12 @@ case "${target_cpu}" in
+ 	;;
+ esac
+ 
++# FIXME: ftbfs with -D_FORTIFY_SOURCE (error: invalid use of '__builtin_va_arg_pack ())
++case "${target}" in
++  *-*-linux*)
++	XCFLAGS="${XCFLAGS} -U_FORTIFY_SOURCE"
++esac
++
+ # For the benefit of top-level configure, determine if the cpu is supported.
+ test -d ${srcdir}/config/$ARCH || UNSUPPORTED=1
+ 
diff --git a/debian/patches/libjava-armel-unwind.diff b/debian/patches/libjava-armel-unwind.diff
new file mode 100644
index 0000000..12c78b3
--- /dev/null
+++ b/debian/patches/libjava-armel-unwind.diff
@@ -0,0 +1,19 @@
+# DP: On armel, apply kludge to fix unwinder infinitely looping 'til it runs out
+# DP: of memory (http://gcc.gnu.org/ml/java/2008-06/msg00010.html).
+
+---
+ libjava/stacktrace.cc |    3 +++
+ 1 files changed, 3 insertions(+), 0 deletions(-)
+
+--- a/src/libjava/stacktrace.cc
++++ b/src/libjava/stacktrace.cc
+@@ -115,6 +115,9 @@ _Jv_StackTrace::UnwindTraceFn (struct _Unwind_Context *context, void *state_ptr)
+   // Check if the trace buffer needs to be extended.
+   if (pos == state->length)
+     {
++      // http://gcc.gnu.org/ml/java/2008-06/msg00010.html
++      return _URC_END_OF_STACK;
++
+       int newLength = state->length * 2;
+       void *newFrames = _Jv_AllocBytes (newLength * sizeof(_Jv_StackFrame));
+       memcpy (newFrames, state->frames, state->length * sizeof(_Jv_StackFrame));      
diff --git a/debian/patches/libjava-disable-plugin.diff b/debian/patches/libjava-disable-plugin.diff
new file mode 100644
index 0000000..3685497
--- /dev/null
+++ b/debian/patches/libjava-disable-plugin.diff
@@ -0,0 +1,15 @@
+# DP: Don't build the gcjwebplugin, even when configured with --enable-plugin
+
+Index: b/src/libjava/configure.ac
+===================================================================
+--- a/src/libjava/configure.ac
++++ b/src/libjava/configure.ac
+@@ -67,6 +67,8 @@ AC_ARG_ENABLE(browser-plugin,
+      esac],
+     [browser_plugin_enabled=no]
+ )
++# FIXME: don't build the plugin, this option collides with GCC plugin support
++plugin_enabled=no
+ 
+ AC_ARG_ENABLE(gconf-peer,
+   AS_HELP_STRING([--enable-gconf-peer],
diff --git a/debian/patches/libjava-fixed-symlinks.diff b/debian/patches/libjava-fixed-symlinks.diff
new file mode 100644
index 0000000..6019ce3
--- /dev/null
+++ b/debian/patches/libjava-fixed-symlinks.diff
@@ -0,0 +1,28 @@
+# DP: Remove unneed '..' elements from symlinks in JAVA_HOME
+
+Index: b/src/libjava/Makefile.am
+===================================================================
+--- a/src/libjava/Makefile.am
++++ b/src/libjava/Makefile.am
+@@ -836,7 +836,7 @@ if CREATE_JAVA_HOME
+ 	$(mkinstalldirs) $(DESTDIR)$(SDK_INCLUDE_DIR)/$(OS)
+ 	relative() { \
+ 	  $(PERL) -e 'use File::Spec; \
+-	    print File::Spec->abs2rel($$ARGV[0], $$ARGV[1])' $$1 $$2; \
++	    print File::Spec->abs2rel($$ARGV[0], $$ARGV[1])' $$1 $$2 | sed -r 's,(bin|lib)[^/]*/\.\./,,'; \
+ 	}; \
+ 	RELATIVE=$$(relative $(DESTDIR)$(bindir) $(DESTDIR)$(SDK_BIN_DIR)); \
+ 	ln -sf $$RELATIVE/`echo gij | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'` \
+Index: b/src/libjava/Makefile.in
+===================================================================
+--- a/src/libjava/Makefile.in
++++ b/src/libjava/Makefile.in
+@@ -12506,7 +12506,7 @@ install-data-local:
+ @CREATE_JAVA_HOME_TRUE@	$(mkinstalldirs) $(DESTDIR)$(SDK_INCLUDE_DIR)/$(OS)
+ @CREATE_JAVA_HOME_TRUE@	relative() { \
+ @CREATE_JAVA_HOME_TRUE@	  $(PERL) -e 'use File::Spec; \
+- at CREATE_JAVA_HOME_TRUE@	    print File::Spec->abs2rel($$ARGV[0], $$ARGV[1])' $$1 $$2; \
++ at CREATE_JAVA_HOME_TRUE@	    print File::Spec->abs2rel($$ARGV[0], $$ARGV[1])' $$1 $$2 | sed -r 's,(bin|lib)[^/]*/\.\./,,'; \
+ @CREATE_JAVA_HOME_TRUE@	}; \
+ @CREATE_JAVA_HOME_TRUE@	RELATIVE=$$(relative $(DESTDIR)$(bindir) $(DESTDIR)$(SDK_BIN_DIR)); \
+ @CREATE_JAVA_HOME_TRUE@	ln -sf $$RELATIVE/`echo gij | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'` \
diff --git a/debian/patches/libjava-jnipath.diff b/debian/patches/libjava-jnipath.diff
new file mode 100644
index 0000000..b34c160
--- /dev/null
+++ b/debian/patches/libjava-jnipath.diff
@@ -0,0 +1,129 @@
+# DP: - Add /usr/lib/jni and /usr/lib/<multiarch>/jni to java.library.path.
+# DP: - When running the i386 binaries on amd64, look in
+# DP: - /usr/lib32/gcj-x.y and /usr/lib32/jni instead.
+
+Index: b/src/libjava/configure.ac
+===================================================================
+--- a/src/libjava/configure.ac
++++ b/src/libjava/configure.ac
+@@ -1520,6 +1520,9 @@ AC_CHECK_SIZEOF(void *)
+ 
+ AC_C_BIGENDIAN
+ 
++MULTIARCH_DIR=$(dpkg-architecture -qDEB_HOST_MULTIARCH 2>/dev/null || true)
++AC_SUBST(MULTIARCH_DIR)
++
+ ZLIBS=
+ SYS_ZLIBS=
+ ZINCS=
+Index: b/src/libjava/Makefile.am
+===================================================================
+--- a/src/libjava/Makefile.am
++++ b/src/libjava/Makefile.am
+@@ -364,6 +364,7 @@ AM_CXXFLAGS = \
+ 	$(WARNINGS) \
+ 	-D_GNU_SOURCE \
+ 	-DPREFIX="\"$(prefix)\"" \
++	-DMULTIARCH_DIR="\"$(MULTIARCH_DIR)\"" \
+ 	-DTOOLEXECLIBDIR="\"$(toolexeclibdir)\"" \
+         -DJAVA_HOME="\"$(JAVA_HOME_DIR)\"" \
+         -DBOOT_CLASS_PATH="\"$(BOOT_CLASS_PATH_DIR)\"" \
+Index: b/src/libjava/Makefile.in
+===================================================================
+--- a/src/libjava/Makefile.in
++++ b/src/libjava/Makefile.in
+@@ -639,6 +639,7 @@ MAINT = @MAINT@
+ MAKE = @MAKE@
+ MAKEINFO = @MAKEINFO@
+ MKDIR_P = @MKDIR_P@
++MULTIARCH_DIR = @MULTIARCH_DIR@
+ NM = nm
+ NMEDIT = @NMEDIT@
+ OBJDUMP = @OBJDUMP@
+@@ -1022,6 +1023,7 @@ AM_CXXFLAGS = \
+ 	$(WARNINGS) \
+ 	-D_GNU_SOURCE \
+ 	-DPREFIX="\"$(prefix)\"" \
++	-DMULTIARCH_DIR="\"$(MULTIARCH_DIR)\"" \
+ 	-DTOOLEXECLIBDIR="\"$(toolexeclibdir)\"" \
+         -DJAVA_HOME="\"$(JAVA_HOME_DIR)\"" \
+         -DBOOT_CLASS_PATH="\"$(BOOT_CLASS_PATH_DIR)\"" \
+Index: b/src/libjava/gnu/classpath/natSystemProperties.cc
+===================================================================
+--- a/src/libjava/gnu/classpath/natSystemProperties.cc
++++ b/src/libjava/gnu/classpath/natSystemProperties.cc
+@@ -141,6 +141,44 @@ PrependVersionedLibdir (::java::lang::St
+   return retval;
+ }
+ 
++static char*
++AppendJniLibdir (char *path, struct utsname *u)
++{
++  char* retval;
++  const char* jnilibdir = "/usr/lib/jni";
++#ifdef MULTIARCH_DIR
++  const char* jnilibdir2 = "/usr/lib/" MULTIARCH_DIR "/jni";
++  jsize len2 = strlen (jnilibdir2) + 2;
++#else
++  jsize len2 = 0;
++#endif
++
++#if defined(__linux__) && defined (__i386__)
++  if (! strcmp ("x86_64", u->machine))
++    jnilibdir = "/usr/lib32/jni";
++#endif
++
++  if (path)
++    {
++      jsize total = strlen (path)
++	+ (sizeof (PATH_SEPARATOR) - 1) + strlen (jnilibdir) +len2 + 1;
++      retval = (char*) _Jv_Malloc (total);
++      strcpy (retval, path);
++      strcat (retval, PATH_SEPARATOR);
++      strcat (retval, jnilibdir);
++    }
++  else
++    {
++      retval = (char*) _Jv_Malloc (strlen (jnilibdir) + len2 + 1);
++      strcpy (retval, jnilibdir);
++    }
++#ifdef MULTIARCH_DIR
++  strcat (retval, PATH_SEPARATOR);
++  strcat (retval, jnilibdir2);
++#endif
++  return retval;
++}
++
+ void
+ gnu::classpath::SystemProperties::insertSystemProperties (::java::util::Properties *newprops)
+ {
+@@ -373,8 +411,13 @@ gnu::classpath::SystemProperties::insert
+       // Prepend GCJ_VERSIONED_LIBDIR to the module load path so that
+       // libgcj will find its own JNI libraries, like libgtkpeer.so.
+       char* val = PrependVersionedLibdir (path);
+-      _Jv_SetDLLSearchPath (val);
++
++      // Append jnilibdir
++      char* val2 = AppendJniLibdir (val, &u);
++
++      _Jv_SetDLLSearchPath (val2);
+       _Jv_Free (val);
++      _Jv_Free (val2);
+     }
+   else
+     {
+@@ -382,9 +425,12 @@ gnu::classpath::SystemProperties::insert
+ #ifdef USE_LTDL
+       char *libpath = getenv (LTDL_SHLIBPATH_VAR);
+       char* val = _Jv_PrependVersionedLibdir (libpath);
+-      SET ("java.library.path", val);
+-      _Jv_SetDLLSearchPath (val);
++      // Append jnilibdir
++      char* val2 = AppendJniLibdir (val, &u);
++      SET ("java.library.path", val2);
++      _Jv_SetDLLSearchPath (val2);
+       _Jv_Free (val);
++      _Jv_Free (val2);
+ #else
+       SET ("java.library.path", "");
+ #endif
diff --git a/debian/patches/libjava-multiarch.diff b/debian/patches/libjava-multiarch.diff
new file mode 100644
index 0000000..ffcf8fa
--- /dev/null
+++ b/debian/patches/libjava-multiarch.diff
@@ -0,0 +1,82 @@
+# DP: Install libjava libraries to multiarch location
+
+Index: b/src/libjava/configure.ac
+===================================================================
+--- a/src/libjava/configure.ac
++++ b/src/libjava/configure.ac
+@@ -1580,6 +1580,10 @@ case ${version_specific_libs} in
+       .) toolexeclibdir=$toolexecmainlibdir ;; # Avoid trailing /.
+       *) toolexeclibdir=$toolexecmainlibdir/$multi_os_directory ;;
+     esac
++    multiarch=`$CC -print-multiarch`
++    if test -n "$multiarch"; then
++        toolexeclibdir=$toolexecmainlibdir/$multiarch
++    fi
+     ;;
+ esac
+ AC_SUBST(toolexecdir)
+@@ -1597,6 +1601,10 @@ AC_DEFINE_UNQUOTED(GCJVERSION, "$GCJVERS
+ # libraries are found.
+ gcjsubdir=gcj-$gcjversion-$libgcj_soversion
+ dbexecdir='$(toolexeclibdir)/'$gcjsubdir
++multiarch=`$CC -print-multiarch`
++if test -n "$multiarch"; then
++    dbexecdir='$(libdir)/'$multiarch/$gcjsubdir
++fi
+ AC_SUBST(dbexecdir)
+ AC_SUBST(gcjsubdir)
+ 
+Index: b/src/libjava/Makefile.am
+===================================================================
+--- a/src/libjava/Makefile.am
++++ b/src/libjava/Makefile.am
+@@ -373,7 +373,7 @@ AM_CXXFLAGS = \
+ 	-DGCJ_VERSIONED_LIBDIR="\"$(dbexecdir)\"" \
+ 	-DPATH_SEPARATOR="\"$(CLASSPATH_SEPARATOR)\"" \
+ 	-DECJ_JAR_FILE="\"$(ECJ_JAR)\"" \
+-	-DLIBGCJ_DEFAULT_DATABASE="\"$(dbexecdir)/$(db_name)\"" \
++	-DLIBGCJ_DEFAULT_DATABASE="\"/var/lib/$(MULTIARCH_DIR)/gcj-5/$(db_name)\"" \
+ 	-DLIBGCJ_DEFAULT_DATABASE_PATH_TAIL="\"$(db_pathtail)\""
+ 
+ AM_GCJFLAGS = \
+Index: b/src/libjava/Makefile.in
+===================================================================
+--- a/src/libjava/Makefile.in
++++ b/src/libjava/Makefile.in
+@@ -1032,7 +1032,7 @@ AM_CXXFLAGS = \
+ 	-DGCJ_VERSIONED_LIBDIR="\"$(dbexecdir)\"" \
+ 	-DPATH_SEPARATOR="\"$(CLASSPATH_SEPARATOR)\"" \
+ 	-DECJ_JAR_FILE="\"$(ECJ_JAR)\"" \
+-	-DLIBGCJ_DEFAULT_DATABASE="\"$(dbexecdir)/$(db_name)\"" \
++	-DLIBGCJ_DEFAULT_DATABASE="\"/var/lib/$(MULTIARCH_DIR)/gcj-5/$(db_name)\"" \
+ 	-DLIBGCJ_DEFAULT_DATABASE_PATH_TAIL="\"$(db_pathtail)\""
+ 
+ AM_GCJFLAGS = \
+Index: b/src/libjava/classpath/m4/acinclude.m4
+===================================================================
+--- a/src/libjava/classpath/m4/acinclude.m4
++++ b/src/libjava/classpath/m4/acinclude.m4
+@@ -276,6 +276,10 @@ AC_DEFUN([CLASSPATH_TOOLEXECLIBDIR],
+       esac
+       ;;
+   esac
++  multiarch=`$CC -print-multiarch`
++  if test -n "$multiarch"; then
++    toolexeclibdir=${libdir}/${multiarch}
++  fi
+   AC_SUBST(toolexecdir)
+   AC_SUBST(toolexecmainlibdir)
+   AC_SUBST(toolexeclibdir)
+Index: b/src/libjava/classpath/configure.ac
+===================================================================
+--- a/src/libjava/classpath/configure.ac
++++ b/src/libjava/classpath/configure.ac
+@@ -16,6 +16,8 @@ dnl END GCJ LOCAL
+ 
+ AC_CANONICAL_TARGET
+ 
++dnl dummy change to run autoconf
++
+ dnl GCJ LOCAL
+ AC_ARG_ENABLE(java-maintainer-mode,
+ 	AS_HELP_STRING([--enable-java-maintainer-mode],
diff --git a/debian/patches/libjava-nobiarch-check.diff b/debian/patches/libjava-nobiarch-check.diff
new file mode 100644
index 0000000..347b78b
--- /dev/null
+++ b/debian/patches/libjava-nobiarch-check.diff
@@ -0,0 +1,27 @@
+# DP: For biarch builds, disable the testsuite for the non-default architecture
+# DP: for runtime libraries, which are not built by default (libjava).
+
+---
+ libjava/testsuite/Makefile.in |    4 +++-
+ 2 files changed, 25 insertions(+), 1 deletions(-)
+
+Index: b/src/libjava/testsuite/Makefile.in
+===================================================================
+--- a/src/libjava/testsuite/Makefile.in
++++ b/src/libjava/testsuite/Makefile.in
+@@ -384,12 +384,14 @@ CTAGS:
+ 
+ 
+ check-DEJAGNU: site.exp
++	runtestflags="`echo '$(RUNTESTFLAGS)' | sed -r 's/,-m(32|64|x32)//g;s/,-mabi=(n32|64)//g'`"; \
++	case "$$runtestflags" in *\\{\\}) runtestflags=; esac; \
+ 	srcdir=`$(am__cd) $(srcdir) && pwd`; export srcdir; \
+ 	EXPECT=$(EXPECT); export EXPECT; \
+ 	runtest=$(RUNTEST); \
+ 	if $(SHELL) -c "$$runtest --version" > /dev/null 2>&1; then \
+ 	  exit_status=0; l='$(DEJATOOL)'; for tool in $$l; do \
+-	    if $$runtest $(AM_RUNTESTFLAGS) $(RUNTESTDEFAULTFLAGS) $(RUNTESTFLAGS); \
++	    if $$runtest $(AM_RUNTESTFLAGS) $(RUNTESTDEFAULTFLAGS) $$runtestflags; \
+ 	    then :; else exit_status=1; fi; \
+ 	  done; \
+ 	else echo "WARNING: could not find \`runtest'" 1>&2; :;\
diff --git a/debian/patches/libjava-rpath.diff b/debian/patches/libjava-rpath.diff
new file mode 100644
index 0000000..b664e9c
--- /dev/null
+++ b/debian/patches/libjava-rpath.diff
@@ -0,0 +1,29 @@
+# DP: - Link ecjx with -rpath $(dbexecdir)
+
+---
+ libjava/Makefile.am |    2 +-
+ libjava/Makefile.in |    2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+--- a/src/libjava/Makefile.am
++++ b/src/libjava/Makefile.am
+@@ -888,7 +888,7 @@ else !ENABLE_SHARED
+ ecjx_LDFLAGS = $(ECJX_BASE_FLAGS) $(ECJ_BUILD_JAR) -fbootclasspath=$(BOOTCLASSPATH)
+ endif !ENABLE_SHARED
+ 
+-ecjx_LDADD = -L$(here)/.libs $(extra_ldflags)
++ecjx_LDADD = -L$(here)/.libs $(extra_ldflags) -rpath $(dbexecdir)
+ ecjx_DEPENDENCIES = libgcj.la libgcj.spec
+ if USE_LIBGCJ_BC
+ ecjx_DEPENDENCIES += libgcj_bc.la
+--- a/src/libjava/Makefile.in
++++ b/src/libjava/Makefile.in
+@@ -8360,7 +8360,7 @@ ECJX_BASE_FLAGS = -findirect-dispatch \
+ @NATIVE_FALSE at ecjx_LDFLAGS = $(ECJX_BASE_FLAGS) $(ECJ_BUILD_JAR)
+ @NATIVE_FALSE at ecjx_LDADD = 
+ @NATIVE_TRUE at ecjx_LDADD = -L$(here)/.libs $(extra_ldflags) \
+- at NATIVE_TRUE@	$(am__append_21)
++ at NATIVE_TRUE@	$(am__append_21) -rpath $(dbexecdir)
+ @NATIVE_FALSE at ecjx_DEPENDENCIES = 
+ @NATIVE_TRUE at ecjx_DEPENDENCIES = libgcj.la libgcj.spec \
+ @NATIVE_TRUE@	$(am__append_20)
diff --git a/debian/patches/libjava-sjlj.diff b/debian/patches/libjava-sjlj.diff
new file mode 100644
index 0000000..f16f695
--- /dev/null
+++ b/debian/patches/libjava-sjlj.diff
@@ -0,0 +1,40 @@
+# DP: Don't try to use _Unwind_Backtrace on SJLJ targets.
+# DP: See bug #387875, #388505, GCC PR 29206.
+
+---
+ libjava/sysdep/generic/backtrace.h |   17 +++++++++++++++++
+ 1 files changed, 17 insertions(+), 0 deletions(-)
+
+Index: b/src/libjava/sysdep/generic/backtrace.h
+===================================================================
+--- a/src/libjava/sysdep/generic/backtrace.h
++++ b/src/libjava/sysdep/generic/backtrace.h
+@@ -13,6 +13,20 @@ details.  */
+ 
+ #include <java-stack.h>
+ 
++#ifdef SJLJ_EXCEPTIONS
++
++#undef _Unwind_GetIPInfo
++#define _Unwind_GetIPInfo(ctx,ip_before_insn) \
++  (abort (), (void) (ctx), *ip_before_insn = 1, 0)
++
++#undef _Unwind_GetRegionStart
++#define _Unwind_GetRegionStart(ctx) \
++  (abort (), (void) (ctx), 0)
++
++#undef _Unwind_Backtrace
++#define _Unwind_Backtrace(trace_fn,state_ptr) \
++  (fallback_backtrace (trace_fn, state_ptr))
++
+ /* Unwind through the call stack calling TRACE_FN with STATE for every stack
+    frame.  Returns the reason why the unwinding was stopped.  */
+ _Unwind_Reason_Code
+@@ -20,4 +34,7 @@ fallback_backtrace (_Unwind_Trace_Fn, _J
+ {
+   return _URC_NO_REASON;
+ }
++
++#endif /* SJLJ_EXCEPTIONS */
++
+ #endif
diff --git a/debian/patches/libjava-stacktrace.diff b/debian/patches/libjava-stacktrace.diff
new file mode 100644
index 0000000..43f8599
--- /dev/null
+++ b/debian/patches/libjava-stacktrace.diff
@@ -0,0 +1,52 @@
+# DP: libgcj: Lookup source file name and line number in separated
+# DP: debug files found in /usr/lib/debug
+
+---
+ libjava/stacktrace.cc |   27 +++++++++++++++++++++++++++
+ 1 files changed, 27 insertions(+), 0 deletions(-)
+
+Index: b/src/libjava/stacktrace.cc
+===================================================================
+--- a/src/libjava/stacktrace.cc
++++ b/src/libjava/stacktrace.cc
+@@ -17,6 +17,11 @@ details.  */
+ #include <java-stack.h>
+ 
+ #include <stdio.h>
++#include <stdlib.h>
++#include <string.h>
++#ifdef HAVE_UNISTD_H
++#include <unistd.h>
++#endif
+ 
+ #include <java/lang/Boolean.h>
+ #include <java/lang/Class.h>
+@@ -260,6 +265,28 @@ _Jv_StackTrace::getLineNumberForFrame(_J
+       finder->lookup (binaryName, (jlong) offset);
+       *sourceFileName = finder->getSourceFile();
+       *lineNum = finder->getLineNum();
++      if (*lineNum == -1 && info.file_name[0] == '/')
++	{
++	  const char *debugPrefix = "/usr/lib/debug";
++	  char *debugPath = (char *) malloc (strlen(debugPrefix)
++					     + strlen(info.file_name)
++					     + 2);
++
++	  if (debugPath)
++	    {
++	      strcpy (debugPath, debugPrefix);
++	      strcat (debugPath, info.file_name);
++	      //printf ("%s: 0x%x\n", debugPath, offset);
++	      if (!access (debugPath, R_OK))
++		{
++		  binaryName = JvNewStringUTF (debugPath);
++		  finder->lookup (binaryName, (jlong) offset);
++		  *sourceFileName = finder->getSourceFile();
++		  *lineNum = finder->getLineNum();
++		}
++	      free (debugPath);
++	    }
++	}
+       if (*lineNum == -1 && NameFinder::showRaw())
+         {
+           gnu::gcj::runtime::StringBuffer *t =
diff --git a/debian/patches/libjit-ldflags.diff b/debian/patches/libjit-ldflags.diff
new file mode 100644
index 0000000..0473867
--- /dev/null
+++ b/debian/patches/libjit-ldflags.diff
@@ -0,0 +1,13 @@
+Index: b/src/gcc/jit/Make-lang.in
+===================================================================
+--- a/src/gcc/jit/Make-lang.in
++++ b/src/gcc/jit/Make-lang.in
+@@ -86,7 +86,7 @@ $(LIBGCCJIT_FILENAME): $(jit_OBJS) \
+ 	     $(CPPLIB) $(LIBDECNUMBER) $(LIBS) $(BACKENDLIBS) \
+ 	     $(EXTRA_GCC_OBJS) \
+ 	     -Wl,--version-script=$(srcdir)/jit/libgccjit.map \
+-	     -Wl,-soname,$(LIBGCCJIT_SONAME)
++	     -Wl,-soname,$(LIBGCCJIT_SONAME) $(LDFLAGS)
+ 
+ $(LIBGCCJIT_SONAME_SYMLINK): $(LIBGCCJIT_FILENAME)
+ 	ln -sf $(LIBGCCJIT_FILENAME) $(LIBGCCJIT_SONAME_SYMLINK)
diff --git a/debian/patches/libstdc++-doclink.diff b/debian/patches/libstdc++-doclink.diff
new file mode 100644
index 0000000..30a8d31
--- /dev/null
+++ b/debian/patches/libstdc++-doclink.diff
@@ -0,0 +1,68 @@
+# DP: adjust hrefs to point to the local documentation
+
+---
+ libstdc++-v3/doc/doxygen/mainpage.html |   10 +++++-----
+ 1 files changed, 5 insertions(+), 5 deletions(-)
+
+Index: b/src/libstdc++-v3/doc/doxygen/mainpage.html
+===================================================================
+--- a/src/libstdc++-v3/doc/doxygen/mainpage.html
++++ b/src/libstdc++-v3/doc/doxygen/mainpage.html
+@@ -27,10 +27,10 @@
+ <p class="smallertext">Generated on @DATE at .</p>
+ 
+ <p>There are two types of documentation for libstdc++.  One is the
+-   distribution documentation, which can be read online
+-   <a href="http://gcc.gnu.org/onlinedocs/libstdc++/index.html">here</a>
+-   or offline from the file doc/html/index.html in the library source
+-   directory.
++   distribution documentation, which can be read
++   <a href="../index.html">offline in the documentation directory</a>
++   or
++   <a href="http://gcc.gnu.org/onlinedocs/libstdc++/index.html">online</a>.
+ </p>
+ 
+ <p>The other type is the source documentation, of which this is the first page.
+@@ -81,9 +81,10 @@
+   This style guide can also be viewed on the <a href="http://gcc.gnu.org/onlinedocs/libstdc++/manual/bk01apas04.html">web</a>.
+ 
+ <h2>License, Copyright, and Other Lawyerly Verbosity</h2>
+-<p>The libstdc++ documentation is released under
+-   <a href="http://gcc.gnu.org/onlinedocs/libstdc++/manual/bk01pt01ch01s02.html">
+-   these terms</a>.
++<p>The libstdc++ documentation is released under these terms
++   (<a href="../manual/license.html">read offline</a> or
++    <a href="http://gcc.gnu.org/onlinedocs/libstdc++/manual/license.html">read online</a>.
++   ).
+ </p>
+ <p>Part of the generated documentation involved comments and notes from
+    SGI, who says we gotta say this:
+Index: b/src/libstdc++-v3/doc/html/api.html
+===================================================================
+--- a/src/libstdc++-v3/doc/html/api.html
++++ b/src/libstdc++-v3/doc/html/api.html
+@@ -20,6 +20,8 @@
+   member functions for the library classes, finding out what is in a
+   particular include file, looking at inheritance diagrams, etc.
+ </p><p>
++<a class="link" href="user/index.html">The API documentation, rendered into HTML, can be viewed offline.</a>
++</p><p>
+   The API documentation, rendered into HTML, can be viewed online:
+ </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
+       <a class="link" href="http://gcc.gnu.org/onlinedocs/libstdc++/libstdc++-html-USERS-3.4/index.html" target="_top">for the 3.4 release
+Index: b/src/libstdc++-v3/doc/xml/api.xml
+===================================================================
+--- a/src/libstdc++-v3/doc/xml/api.xml
++++ b/src/libstdc++-v3/doc/xml/api.xml
+@@ -40,6 +40,11 @@
+ </para>
+ 
+ <para>
++  <ulink url="user/index.html">The source-level documentation for this release can be viewed offline.
++  </ulink>
++</para>
++
++<para>
+   The API documentation, rendered into HTML, can be viewed online:
+ </para>
+ 
diff --git a/debian/patches/libstdc++-functexcept.diff b/debian/patches/libstdc++-functexcept.diff
new file mode 100644
index 0000000..2956487
--- /dev/null
+++ b/debian/patches/libstdc++-functexcept.diff
@@ -0,0 +1,17 @@
+# DP: PR libstdc++/66145, std::ios_base::failure objects thrown from libstdc++.so use old ABI
+# DP: Just build src/c++11/functexcept.cc using the new ABI. It will break
+# DP: code, which will be handled in the archive by adding Breaks for the
+# DP: affected packages.  Third party code using such code will need a rebuild.
+
+--- a/src/libstdc++-v3/src/c++11/functexcept.cc
++++ b/src/libstdc++-v3/src/c++11/functexcept.cc
+@@ -20,9 +20,6 @@
+ // see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+ // <http://www.gnu.org/licenses/>.
+ 
+-// We don't want to change the type thrown by __throw_ios_failure (yet?)
+-#define _GLIBCXX_USE_CXX11_ABI 0
+-
+ #include <bits/functexcept.h>
+ #include <cstdlib>
+ #include <exception>
diff --git a/debian/patches/libstdc++-man-3cxx.diff b/debian/patches/libstdc++-man-3cxx.diff
new file mode 100644
index 0000000..0109e5c
--- /dev/null
+++ b/debian/patches/libstdc++-man-3cxx.diff
@@ -0,0 +1,67 @@
+# DP: Install libstdc++ man pages with suffix .3cxx instead of .3
+
+Index: b/src/libstdc++-v3/doc/doxygen/user.cfg.in
+===================================================================
+--- a/src/libstdc++-v3/doc/doxygen/user.cfg.in
++++ b/src/libstdc++-v3/doc/doxygen/user.cfg.in
+@@ -1936,7 +1936,7 @@ MAN_OUTPUT             = man
+ # The default value is: .3.
+ # This tag requires that the tag GENERATE_MAN is set to YES.
+ 
+-MAN_EXTENSION          = .3
++MAN_EXTENSION          = .3cxx
+ 
+ # If the MAN_LINKS tag is set to YES and doxygen generates man output, then it
+ # will generate one additional man file for each entity documented in the real
+Index: b/src/libstdc++-v3/scripts/run_doxygen
+===================================================================
+--- a/src/libstdc++-v3/scripts/run_doxygen
++++ b/src/libstdc++-v3/scripts/run_doxygen
+@@ -243,6 +243,9 @@ fi
+ if $do_man; then
+ echo ::
+ echo :: Fixing up the man pages...
++mkdir -p $outdir/man/man3
++mv $outdir/man/man3cxx/* $outdir/man/man3/
++rmdir $outdir/man/man3cxx
+ cd $outdir/man/man3
+ 
+ # File names with embedded spaces (EVIL!) need to be....?  renamed or removed?
+@@ -264,7 +267,7 @@ rm -f *.h.3 *.hpp.3 *config* *.cc.3 *.tc
+ # and I'm off getting coffee then anyhow, so I didn't care enough to make
+ # this super-fast.
+ g++ ${srcdir}/doc/doxygen/stdheader.cc -o ./stdheader
+-problematic=`egrep -l '#include <.*_.*>' [a-z]*.3`
++problematic=`egrep -l '#include <.*_.*>' [a-z]*.3 [a-z]*.3cxx`
+ for f in $problematic; do
+     # this is also slow, but safe and easy to debug
+     oldh=`sed -n '/fC#include </s/.*<\(.*\)>.*/\1/p' $f`
+@@ -277,7 +280,7 @@ rm stdheader
+ # Some of the pages for generated modules have text that confuses certain
+ # implementations of man(1), e.g. on GNU/Linux.  We need to have another
+ # top-level *roff tag to /stop/ the .SH NAME entry.
+-problematic=`egrep --files-without-match '^\.SH SYNOPSIS' [A-Z]*.3`
++problematic=`egrep --files-without-match '^\.SH SYNOPSIS' [A-Z]*.3cxx`
+ #problematic='Containers.3 Sequences.3 Assoc_containers.3 Iterator_types.3'
+ 
+ for f in $problematic; do
+@@ -291,7 +294,7 @@ a\
+ done
+ 
+ # Also, break this (generated) line up.  It's ugly as sin.
+-problematic=`grep -l '[^^]Definition at line' *.3`
++problematic=`grep -l '[^^]Definition at line' *.3 *.3cxx`
+ for f in $problematic; do
+     sed 's/Definition at line/\
+ .PP\
+@@ -391,8 +394,8 @@ for f in ios streambuf istream ostream i
+ 	 istringstream ostringstream stringstream filebuf ifstream \
+ 	 ofstream fstream string;
+ do
+-    echo ".so man3/std::basic_${f}.3" > std::${f}.3
+-    echo ".so man3/std::basic_${f}.3" > std::w${f}.3
++    echo ".so man3/std::basic_${f}.3cxx" > std::${f}.3cxx
++    echo ".so man3/std::basic_${f}.3cxx" > std::w${f}.3cxx
+ done
+ 
+ echo ::
diff --git a/debian/patches/libstdc++-no-testsuite.diff b/debian/patches/libstdc++-no-testsuite.diff
new file mode 100644
index 0000000..771bf7a
--- /dev/null
+++ b/debian/patches/libstdc++-no-testsuite.diff
@@ -0,0 +1,12 @@
+# DP: Don't run the libstdc++ testsuite on arm, hppa and mipsel (timeouts on the buildds)
+
+--- a/src/libstdc++-v3/testsuite/Makefile.in
++++ b/src/libstdc++-v3/testsuite/Makefile.in
+@@ -567,6 +567,7 @@
+ 
+ # Run the testsuite in normal mode.
+ check-DEJAGNU $(check_DEJAGNU_normal_targets): check-DEJAGNU%: site.exp
++	case "$(target)" in arm*|hppa*|mipsel*) exit 0;; esac; \
+ 	$(if $*,@)AR="$(AR)"; export AR; \
+ 	RANLIB="$(RANLIB)"; export RANLIB; \
+ 	if [ -z "$*" ] && [ "$(filter -j, $(MFLAGS))" = "-j" ]; then \
diff --git a/debian/patches/libstdc++-nothumb-check.diff b/debian/patches/libstdc++-nothumb-check.diff
new file mode 100644
index 0000000..6c665a2
--- /dev/null
+++ b/debian/patches/libstdc++-nothumb-check.diff
@@ -0,0 +1,38 @@
+# DP: Don't run the libstdc++-v3 testsuite in thumb mode on armel
+
+Index: testsuite/Makefile.in
+===================================================================
+--- a/src/libstdc++-v3/testsuite/Makefile.in	(revision 156820)
++++ b/src/libstdc++-v3/testsuite/Makefile.in	(working copy)
+@@ -583,6 +583,8 @@
+ 	srcdir=`$(am__cd) $(srcdir) && pwd`; export srcdir; \
+ 	EXPECT=$(EXPECT); export EXPECT; \
+ 	runtest=$(RUNTEST); \
++	runtestflags="`echo '$(RUNTESTFLAGS)' | sed 's/,-marm/-marm/'`"; \
++	case "$$runtestflags" in *\\{\\}) runtestflags=; esac; \
+ 	if [ -z "$$runtest" ]; then runtest=runtest; fi; \
+ 	tool=libstdc++; \
+ 	dirs=; \
+@@ -590,7 +592,7 @@
+ 	  normal0) \
+ 	    if $(SHELL) -c "$$runtest --version" > /dev/null 2>&1; then \
+ 	      $$runtest $(AM_RUNTESTFLAGS) $(RUNTESTDEFAULTFLAGS) \
+-			$(RUNTESTFLAGS) abi.exp; \
++			$$runtestflags abi.exp; \
+ 	    else echo "WARNING: could not find \`runtest'" 1>&2; :;\
+ 	    fi; \
+ 	    dirs="`cd $$srcdir; echo [013-9][0-9]_*/* [abep]*/*`";; \
+@@ -605,11 +607,11 @@
+ 	if $(SHELL) -c "$$runtest --version" > /dev/null 2>&1; then \
+ 	  if [ -n "$$dirs" ]; then \
+ 	    $$runtest $(AM_RUNTESTFLAGS) $(RUNTESTDEFAULTFLAGS) \
+-		    $(RUNTESTFLAGS) \
++		    $$runtestflags \
+ 		    "conformance.exp=`echo $$dirs | sed 's/ /* /g;s/$$/*/'`"; \
+ 	  else \
+ 	    $$runtest $(AM_RUNTESTFLAGS) $(RUNTESTDEFAULTFLAGS) \
+-		    $(RUNTESTFLAGS); \
++		    $$runtestflags; \
+ 	  fi; \
+ 	else echo "WARNING: could not find \`runtest'" 1>&2; :;\
+ 	fi
diff --git a/debian/patches/libstdc++-pic.diff b/debian/patches/libstdc++-pic.diff
new file mode 100644
index 0000000..c5d4220
--- /dev/null
+++ b/debian/patches/libstdc++-pic.diff
@@ -0,0 +1,95 @@
+# DP: Build and install libstdc++_pic.a library.
+
+Index: b/src/libstdc++-v3/src/Makefile.am
+===================================================================
+--- a/src/libstdc++-v3/src/Makefile.am
++++ b/src/libstdc++-v3/src/Makefile.am
+@@ -310,10 +310,12 @@ if GLIBCXX_BUILD_DEBUG
+ STAMP_DEBUG = build-debug
+ STAMP_INSTALL_DEBUG = install-debug
+ CLEAN_DEBUG = debug
++STAMP_INSTALL_PIC = install-pic
+ else
+ STAMP_DEBUG =
+ STAMP_INSTALL_DEBUG =
+ CLEAN_DEBUG =
++STAMP_INSTALL_PIC =
+ endif
+ 
+ # Build a debug variant.
+@@ -348,6 +350,7 @@ build-debug: stamp-debug
+ 	  mv Makefile Makefile.tmp; \
+ 	  sed -e 's,all-local: all-once,all-local:,' \
+ 	      -e 's,install-data-local: install-data-once,install-data-local:,' \
++	      -e 's,install-exec-local:.*,install-exec-local:,' \
+ 	      -e '/vpath/!s,src/c,src/debug/c,' \
+ 	  < Makefile.tmp > Makefile ; \
+ 	  rm -f Makefile.tmp ; \
+@@ -358,3 +361,8 @@ build-debug: stamp-debug
+ install-debug: build-debug
+ 	(cd ${debugdir} && $(MAKE) CXXFLAGS='$(DEBUG_FLAGS)' \
+ 	toolexeclibdir=$(glibcxx_toolexeclibdir)/debug install) ;
++
++install-exec-local: $(STAMP_INSTALL_PIC)
++$(STAMP_INSTALL_PIC):
++	$(MKDIR_P) $(DESTDIR)$(toolexeclibdir)
++	$(INSTALL_DATA) .libs/libstdc++convenience.a $(DESTDIR)$(toolexeclibdir)/libstdc++_pic.a
+Index: b/src/libstdc++-v3/src/Makefile.in
+===================================================================
+--- a/src/libstdc++-v3/src/Makefile.in
++++ b/src/libstdc++-v3/src/Makefile.in
+@@ -530,6 +530,8 @@ CXXLINK = \
+ @GLIBCXX_BUILD_DEBUG_TRUE at STAMP_INSTALL_DEBUG = install-debug
+ @GLIBCXX_BUILD_DEBUG_FALSE at CLEAN_DEBUG = 
+ @GLIBCXX_BUILD_DEBUG_TRUE at CLEAN_DEBUG = debug
++ at GLIBCXX_BUILD_DEBUG_FALSE@STAMP_INSTALL_PIC = 
++ at GLIBCXX_BUILD_DEBUG_TRUE@STAMP_INSTALL_PIC = install-pic
+ 
+ # Build a debug variant.
+ # Take care to fix all possibly-relative paths.
+@@ -828,7 +830,7 @@ install-dvi: install-dvi-recursive
+ 
+ install-dvi-am:
+ 
+-install-exec-am: install-toolexeclibLTLIBRARIES
++install-exec-am: install-exec-local install-toolexeclibLTLIBRARIES
+ 
+ install-html: install-html-recursive
+ 
+@@ -879,11 +881,11 @@ uninstall-am: uninstall-toolexeclibLTLIB
+ 	distclean-libtool distclean-tags 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 \
+-	install-toolexeclibLTLIBRARIES installcheck installcheck-am \
+-	installdirs installdirs-am maintainer-clean \
++	install-exec-am install-exec-local install-html \
++	install-html-am install-info install-info-am install-man \
++	install-pdf install-pdf-am install-ps install-ps-am \
++	install-strip install-toolexeclibLTLIBRARIES installcheck \
++	installcheck-am installdirs installdirs-am maintainer-clean \
+ 	maintainer-clean-generic mostlyclean mostlyclean-compile \
+ 	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+ 	tags tags-recursive uninstall uninstall-am \
+@@ -1016,6 +1018,7 @@ build-debug: stamp-debug
+ 	  mv Makefile Makefile.tmp; \
+ 	  sed -e 's,all-local: all-once,all-local:,' \
+ 	      -e 's,install-data-local: install-data-once,install-data-local:,' \
++	      -e 's,install-exec-local:.*,install-exec-local:,' \
+ 	      -e '/vpath/!s,src/c,src/debug/c,' \
+ 	  < Makefile.tmp > Makefile ; \
+ 	  rm -f Makefile.tmp ; \
+@@ -1027,6 +1030,11 @@ install-debug: build-debug
+ 	(cd ${debugdir} && $(MAKE) CXXFLAGS='$(DEBUG_FLAGS)' \
+ 	toolexeclibdir=$(glibcxx_toolexeclibdir)/debug install) ;
+ 
++install-exec-local: $(STAMP_INSTALL_PIC)
++$(STAMP_INSTALL_PIC):
++	$(MKDIR_P) $(DESTDIR)$(toolexeclibdir)
++	$(INSTALL_DATA) .libs/libstdc++convenience.a $(DESTDIR)$(toolexeclibdir)/libstdc++_pic.a
++
+ # Tell versions [3.59,3.63) of GNU make to not export all variables.
+ # Otherwise a system limit (for SysV at least) may be exceeded.
+ .NOEXPORT:
diff --git a/debian/patches/libstdc++-test-installed.diff b/debian/patches/libstdc++-test-installed.diff
new file mode 100644
index 0000000..b9e6bfd
--- /dev/null
+++ b/debian/patches/libstdc++-test-installed.diff
@@ -0,0 +1,78 @@
+# DP: Add support to run the libstdc++-v3 testsuite using the
+# DP: installed shared libraries.
+
+Index: b/src/libstdc++-v3/testsuite/lib/libstdc++.exp
+===================================================================
+--- a/src/libstdc++-v3/testsuite/lib/libstdc++.exp
++++ b/src/libstdc++-v3/testsuite/lib/libstdc++.exp
+@@ -37,6 +37,12 @@
+ # the last thing before testing begins.  This can be defined in, e.g.,
+ # ~/.dejagnurc or $DEJAGNU.
+ 
++set test_installed 0
++if [info exists env(TEST_INSTALLED)] {
++    verbose -log "test installed libstdc++-v3"
++    set test_installed 1
++}
++
+ proc load_gcc_lib { filename } {
+     global srcdir loaded_libs
+ 
+@@ -101,6 +107,7 @@ proc libstdc++_init { testfile } {
+     global tool_timeout
+     global DEFAULT_CXXFLAGS
+     global STATIC_LIBCXXFLAGS
++    global test_installed
+ 
+     # We set LC_ALL and LANG to C so that we get the same error
+     # messages as expected.
+@@ -120,6 +127,9 @@ proc libstdc++_init { testfile } {
+ 
+     set blddir [lookfor_file [get_multilibs] libstdc++-v3]
+     set flags_file "${blddir}/scripts/testsuite_flags"
++    if {$test_installed} {
++      set flags_file "${blddir}/scripts/testsuite_flags.installed"
++    }
+     set shlib_ext [get_shlib_extension]
+     v3track flags_file 2
+ 
+@@ -151,7 +161,11 @@ proc libstdc++_init { testfile } {
+ 
+     # Locate libgcc.a so we don't need to account for different values of
+     # SHLIB_EXT on different platforms
+-    set gccdir [lookfor_file $tool_root_dir gcc/libgcc.a]
++    if {$test_installed} {
++	set gccdir ""
++    } else {
++	set gccdir [lookfor_file $tool_root_dir gcc/libgcc.a]
++    }
+     if {$gccdir != ""} {
+         set gccdir [file dirname $gccdir]
+ 	append ld_library_path_tmp ":${gccdir}"
+@@ -160,7 +174,11 @@ proc libstdc++_init { testfile } {
+ 
+     # Locate libgomp. This is only required for parallel mode.
+     set v3-libgomp 0
+-    set libgompdir [lookfor_file $blddir/../libgomp .libs/libgomp.$shlib_ext]
++    if {$test_installed} {
++	set libgompdir ""
++    } else {
++	set libgompdir [lookfor_file $blddir/../libgomp .libs/libgomp.$shlib_ext]
++    }
+     if {$libgompdir != ""} {
+ 	set v3-libgomp 1
+         set libgompdir [file dirname $libgompdir]
+@@ -182,7 +200,12 @@ proc libstdc++_init { testfile } {
+ 
+     # Locate libstdc++ shared library. (ie libstdc++.so.)
+     set v3-sharedlib 0
+-    set sharedlibdir [lookfor_file $blddir src/.libs/libstdc++.$shlib_ext]
++    if {$test_installed} {
++	set sharedlibdir ""
++	set v3-sharedlib 1
++    } else {
++	set sharedlibdir [lookfor_file $blddir src/.libs/libstdc++.$shlib_ext]
++    }
+     if {$sharedlibdir != ""} {
+ 	if { ([string match "*-*-linux*" $target_triplet]
+ 	      || [string match "*-*-gnu*" $target_triplet])
diff --git a/debian/patches/link-libs.diff b/debian/patches/link-libs.diff
new file mode 100644
index 0000000..6d9899c
--- /dev/null
+++ b/debian/patches/link-libs.diff
@@ -0,0 +1,170 @@
+#DP: Link libraries with -01.
+
+---
+ gcc/config/t-slibgcc-elf-ver |    1 +
+ libffi/Makefile.am           |    2 +-
+ libffi/Makefile.in           |    2 +-
+ libgfortran/Makefile.am      |    2 +-
+ libgfortran/Makefile.in      |    2 +-
+ libjava/Makefile.am          |    2 +-
+ libjava/Makefile.in          |    2 +-
+ libmudflap/Makefile.am       |    4 ++--
+ libmudflap/Makefile.in       |    4 ++--
+ libobjc/Makefile.in          |    2 ++
+ libstdc++-v3/src/Makefile.am |    1 +
+ libstdc++-v3/src/Makefile.in |    1 +
+ 12 files changed, 15 insertions(+), 10 deletions(-)
+
+--- a/src/gcc/config/t-slibgcc-elf-ver.orig	2009-09-10
++++ b/src/gcc/config/t-slibgcc-elf-ver	2009-12-22
+@@ -35,6 +35,7 @@
+ SHLIB_LINK = $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) -shared -nodefaultlibs \
+ 	-Wl,--soname=$(SHLIB_SONAME) \
+ 	-Wl,--version-script=$(SHLIB_MAP) \
++	-Wl,-O1 \
+ 	-o $(SHLIB_DIR)/$(SHLIB_SONAME).tmp @multilib_flags@ \
+ 	$(SHLIB_OBJS) $(SHLIB_LC) && \
+ 	rm -f $(SHLIB_DIR)/$(SHLIB_SOLINK) && \
+--- a/src/libffi/Makefile.am.orig	2009-08-23
++++ b/src/libffi/Makefile.am	2009-12-22
+@@ -164,7 +164,7 @@
+ 
+ LTLDFLAGS = $(shell $(SHELL) $(top_srcdir)/../libtool-ldflags $(LDFLAGS))
+ 
+-libffi_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` $(LTLDFLAGS)
++libffi_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` $(LTLDFLAGS) -Wl,-O1
+ 
+ AM_CPPFLAGS = -I. -I$(top_srcdir)/include -Iinclude -I$(top_srcdir)/src
+ AM_CCASFLAGS = $(AM_CPPFLAGS)
+--- a/src/libffi/Makefile.in.orig	2009-12-07
++++ b/src/libffi/Makefile.in	2009-12-22
+@@ -468,7 +468,7 @@
+ nodist_libffi_convenience_la_SOURCES = $(nodist_libffi_la_SOURCES)
+ AM_CFLAGS = -Wall -g -fexceptions
+ LTLDFLAGS = $(shell $(SHELL) $(top_srcdir)/../libtool-ldflags $(LDFLAGS))
+-libffi_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` $(LTLDFLAGS)
++libffi_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` $(LTLDFLAGS) -Wl,-O1
+ AM_CPPFLAGS = -I. -I$(top_srcdir)/include -Iinclude -I$(top_srcdir)/src
+ AM_CCASFLAGS = $(AM_CPPFLAGS)
+ all: fficonfig.h
+--- a/src/libgfortran/Makefile.am.orig	2009-12-01
++++ b/src/libgfortran/Makefile.am	2009-12-22
+@@ -18,7 +18,7 @@
+ 
+ toolexeclib_LTLIBRARIES = libgfortran.la
+ libgfortran_la_LINK = $(LINK) $(libgfortran_la_LDFLAGS)
+-libgfortran_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` $(LTLDFLAGS) -lm $(extra_ldflags_libgfortran) $(version_arg)
++libgfortran_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` $(LTLDFLAGS) -lm $(extra_ldflags_libgfortran) $(version_arg) -Wl,-O1
+ 
+ myexeclib_LTLIBRARIES = libgfortranbegin.la
+ myexeclibdir = $(libdir)/gcc/$(target_alias)/$(gcc_version)$(MULTISUBDIR)
+--- a/src/libgfortran/Makefile.in.orig	2009-12-07
++++ b/src/libgfortran/Makefile.in	2009-12-22
+@@ -976,7 +976,7 @@
+ 
+ toolexeclib_LTLIBRARIES = libgfortran.la
+ libgfortran_la_LINK = $(LINK) $(libgfortran_la_LDFLAGS)
+-libgfortran_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` $(LTLDFLAGS) -lm $(extra_ldflags_libgfortran) $(version_arg)
++libgfortran_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` $(LTLDFLAGS) -lm $(extra_ldflags_libgfortran) $(version_arg) -Wl,-O1
+ myexeclib_LTLIBRARIES = libgfortranbegin.la
+ myexeclibdir = $(libdir)/gcc/$(target_alias)/$(gcc_version)$(MULTISUBDIR)
+ libgfortranbegin_la_SOURCES = fmain.c
+--- a/src/libjava/Makefile.am.orig	2009-12-21
++++ b/src/libjava/Makefile.am	2009-12-22
+@@ -299,7 +299,7 @@
+ GCJ_FOR_ECJX = @GCJ_FOR_ECJX@
+ GCJ_FOR_ECJX_LINK = $(GCJ_FOR_ECJX) -o $@
+ LIBLINK = $(LIBTOOL) --tag=CXX $(LIBTOOLFLAGS) --mode=link $(CXX) -L$(here) \
+-	  $(JC1FLAGS) $(LTLDFLAGS) $(extra_ldflags_libjava) $(extra_ldflags) -o $@
++	  $(JC1FLAGS) $(LTLDFLAGS) $(extra_ldflags_libjava) $(extra_ldflags) -Wl,-O1 -o $@
+ CXXLINK = $(LIBTOOL) --tag=CXX $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
+ 	  $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LTLDFLAGS) -o $@
+ 
+--- a/src/libjava/Makefile.in.orig	2009-12-21
++++ b/src/libjava/Makefile.in	2009-12-22
+@@ -1073,7 +1073,7 @@
+ 
+ GCJ_FOR_ECJX_LINK = $(GCJ_FOR_ECJX) -o $@
+ LIBLINK = $(LIBTOOL) --tag=CXX $(LIBTOOLFLAGS) --mode=link $(CXX) -L$(here) \
+-	  $(JC1FLAGS) $(LTLDFLAGS) $(extra_ldflags_libjava) $(extra_ldflags) -o $@
++	  $(JC1FLAGS) $(LTLDFLAGS) $(extra_ldflags_libjava) $(extra_ldflags) -Wl,-O1 -o $@
+ 
+ CXXLINK = $(LIBTOOL) --tag=CXX $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
+ 	  $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LTLDFLAGS) -o $@
+--- a/src/libmudflap/Makefile.am.orig	2009-08-23
++++ b/src/libmudflap/Makefile.am	2009-12-22
+@@ -34,7 +34,7 @@
+ 	mf-hooks2.c
+ libmudflap_la_LIBADD = 
+ libmudflap_la_DEPENDENCIES = $(libmudflap_la_LIBADD)
+-libmudflap_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version`
++libmudflap_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` -Wl,-O1
+ 
+ 
+ libmudflapth_la_SOURCES = \
+@@ -46,7 +46,7 @@
+ libmudflapth_la_CFLAGS = -DLIBMUDFLAPTH
+ libmudflapth_la_LIBADD =
+ libmudflapth_la_DEPENDENCIES = $(libmudflapth_la_LIBADD)
+-libmudflapth_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version`
++libmudflapth_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` -Wl,-O1
+ 
+ 
+ # XXX hack alert
+--- a/src/libmudflap/Makefile.in.orig	2009-12-07
++++ b/src/libmudflap/Makefile.in	2009-12-22
+@@ -320,7 +320,7 @@
+ 
+ libmudflap_la_LIBADD = 
+ libmudflap_la_DEPENDENCIES = $(libmudflap_la_LIBADD)
+-libmudflap_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version`
++libmudflap_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` -Wl,-O1
+ libmudflapth_la_SOURCES = \
+ 	mf-runtime.c \
+ 	mf-heuristics.c \
+@@ -331,7 +331,7 @@
+ libmudflapth_la_CFLAGS = -DLIBMUDFLAPTH
+ libmudflapth_la_LIBADD = 
+ libmudflapth_la_DEPENDENCIES = $(libmudflapth_la_LIBADD)
+-libmudflapth_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version`
++libmudflapth_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` -Wl,-O1
+ 
+ # XXX hack alert
+ # From libffi/Makefile.am
+--- a/src/libobjc/Makefile.in.orig	2009-08-23
++++ b/src/libobjc/Makefile.in	2009-12-22
+@@ -282,12 +282,14 @@
+ libobjc$(libsuffix).la: $(OBJS)
+ 	$(LIBTOOL_LINK) $(CC) -o $@ $(OBJS) \
+ 		-rpath $(toolexeclibdir) \
++		-Wl,-O1 \
+ 		-version-info $(LIBOBJC_VERSION) $(extra_ldflags_libobjc) \
+ 		$(LTLDFLAGS)
+ 
+ libobjc_gc$(libsuffix).la: $(OBJS_GC)
+ 	$(LIBTOOL_LINK) $(CC) -o $@ $(OBJS_GC) $(OBJC_BOEHM_GC_LIBS) \
+ 		-rpath $(toolexeclibdir) \
++		-Wl,-O1 \
+ 		-version-info $(LIBOBJC_GC_VERSION) $(extra_ldflags_libobjc) \
+ 		$(LTLDFLAGS)
+ 
+--- a/src/libstdc++-v3/src/Makefile.am.orig	2009-12-21
++++ b/src/libstdc++-v3/src/Makefile.am	2009-12-22
+@@ -207,6 +207,7 @@
+ 	$(top_builddir)/libsupc++/libsupc++convenience.la
+ 
+ libstdc___la_LDFLAGS = \
++	-Wl,-O1 \
+ 	-version-info $(libtool_VERSION) ${version_arg} -lm 
+ 
+ libstdc___la_LINK = $(CXXLINK) $(libstdc___la_LDFLAGS)
+--- a/src/libstdc++-v3/src/Makefile.in.orig	2009-12-21
++++ b/src/libstdc++-v3/src/Makefile.in	2009-12-22
+@@ -444,6 +444,7 @@
+ 	$(top_builddir)/libsupc++/libsupc++convenience.la
+ 
+ libstdc___la_LDFLAGS = \
++	-Wl,-O1 \
+ 	-version-info $(libtool_VERSION) ${version_arg} -lm 
+ 
+ libstdc___la_LINK = $(CXXLINK) $(libstdc___la_LDFLAGS)
diff --git a/debian/patches/m68k-revert-pr45144.diff b/debian/patches/m68k-revert-pr45144.diff
new file mode 100644
index 0000000..9f9d3c7
--- /dev/null
+++ b/debian/patches/m68k-revert-pr45144.diff
@@ -0,0 +1,18 @@
+[revert the minor PR45144 missed-optimization fix because it
+ results in miscompilation of gnat on m68k with gcc-4.6 and 4.5;
+ with gcc-4.7 other changes mask the issue <mikpe at it.uu.se>]
+
+	PR ada/48835
+
+--- a/src/gcc/tree-sra.c
++++ b/src/gcc/tree-sra.c
+@@ -916,9 +916,6 @@ type_consists_of_records_p (tree type)
+       {
+ 	tree ft = TREE_TYPE (fld);
+ 
+-	if (DECL_BIT_FIELD (fld))
+-	  return false;
+-
+ 	if (!is_gimple_reg_type (ft)
+ 	    && !type_consists_of_records_p (ft))
+ 	  return false;
diff --git a/debian/patches/mips-fix-loongson2f-nop.diff b/debian/patches/mips-fix-loongson2f-nop.diff
new file mode 100644
index 0000000..215eaf8
--- /dev/null
+++ b/debian/patches/mips-fix-loongson2f-nop.diff
@@ -0,0 +1,15 @@
+# DP: On mips, pass -mfix-loongson2f-nop to as, if -mno-fix-loongson2f-nop
+# DP: is not passed.
+
+Index: b/src/gcc/config/mips/mips.h
+===================================================================
+--- a/src/gcc/config/mips/mips.h
++++ b/src/gcc/config/mips/mips.h
+@@ -1343,6 +1343,7 @@ struct mips_cpu_info {
+ %{msym32} %{mno-sym32} \
+ %{mtune=*}" \
+ FP_ASM_SPEC "\
++%{!mno-fix-loongson2f-nop:-mfix-loongson2f-nop} \
+ %(subtarget_asm_spec)"
+ 
+ /* Extra switches sometimes passed to the linker.  */
diff --git a/debian/patches/note-gnu-stack.diff b/debian/patches/note-gnu-stack.diff
new file mode 100644
index 0000000..e9ff769
--- /dev/null
+++ b/debian/patches/note-gnu-stack.diff
@@ -0,0 +1,186 @@
+# DP: Add .note.GNU-stack sections for gcc's crt files, libffi and boehm-gc
+# DP: Taken from FC.
+
+gcc/
+
+2004-09-20  Jakub Jelinek  <jakub at redhat.com>
+
+	* config/rs6000/ppc-asm.h: Add .note.GNU-stack section also
+	on ppc64-linux.
+
+	* config/ia64/lib1funcs.asm: Add .note.GNU-stack section on
+	ia64-linux.
+	* config/ia64/crtbegin.asm: Likewise.
+	* config/ia64/crtend.asm: Likewise.
+	* config/ia64/crti.asm: Likewise.
+	* config/ia64/crtn.asm: Likewise.
+
+2004-05-14  Jakub Jelinek  <jakub at redhat.com>
+
+	* config/ia64/linux.h (TARGET_ASM_FILE_END): Define.
+
+boehm-gc/
+
+2005-02-08  Jakub Jelinek  <jakub at redhat.com>
+
+	* ia64_save_regs_in_stack.s: Moved to...
+	* ia64_save_regs_in_stack.S: ... this.  Add .note.GNU-stack
+	on Linux.
+
+libffi/
+
+2007-05-11  Daniel Jacobowitz  <dan at debian.org>
+
+	* src/arm/sysv.S: Fix ARM comment marker.
+
+2005-02-08  Jakub Jelinek  <jakub at redhat.com>
+
+	* src/alpha/osf.S: Add .note.GNU-stack on Linux.
+	* src/s390/sysv.S: Likewise.
+	* src/powerpc/linux64.S: Likewise.
+	* src/powerpc/linux64_closure.S: Likewise.
+	* src/powerpc/ppc_closure.S: Likewise.
+	* src/powerpc/sysv.S: Likewise.
+	* src/x86/unix64.S: Likewise.
+	* src/x86/sysv.S: Likewise.
+	* src/sparc/v8.S: Likewise.
+	* src/sparc/v9.S: Likewise.
+	* src/m68k/sysv.S: Likewise.
+	* src/ia64/unix.S: Likewise.
+	* src/arm/sysv.S: Likewise.
+
+---
+ boehm-gc/ia64_save_regs_in_stack.S   |   15 +++++++++++++++
+ boehm-gc/ia64_save_regs_in_stack.s   |   12 ------------
+ gcc/config/ia64/linux.h              |    3 +++
+ gcc/config/rs6000/ppc-asm.h          |    2 +-
+ libgcc/config/ia64/crtbegin.S        |    4 ++++
+ libgcc/config/ia64/crtend.S          |    4 ++++
+ libgcc/config/ia64/crti.S            |    4 ++++
+ libgcc/config/ia64/crtn.S            |    4 ++++
+ libgcc/config/ia64/lib1funcs.S       |    4 ++++
+ 9 files changed, 39 insertions(+), 13 deletions(-)
+
+Index: b/src/boehm-gc/ia64_save_regs_in_stack.s
+===================================================================
+--- a/src/boehm-gc/ia64_save_regs_in_stack.s
++++ /dev/null
+@@ -1,12 +0,0 @@
+-        .text
+-        .align 16
+-        .global GC_save_regs_in_stack
+-        .proc GC_save_regs_in_stack
+-GC_save_regs_in_stack:
+-        .body
+-        flushrs
+-        ;;
+-        mov r8=ar.bsp
+-        br.ret.sptk.few rp
+-        .endp GC_save_regs_in_stack
+-
+Index: b/src/boehm-gc/ia64_save_regs_in_stack.S
+===================================================================
+--- /dev/null
++++ b/src/boehm-gc/ia64_save_regs_in_stack.S
+@@ -0,0 +1,15 @@
++        .text
++        .align 16
++        .global GC_save_regs_in_stack
++        .proc GC_save_regs_in_stack
++GC_save_regs_in_stack:
++        .body
++        flushrs
++        ;;
++        mov r8=ar.bsp
++        br.ret.sptk.few rp
++        .endp GC_save_regs_in_stack
++
++#ifdef __linux__
++	.section .note.GNU-stack,"", at progbits
++#endif
+Index: b/src/libgcc/config/ia64/crtbegin.S
+===================================================================
+--- a/src/libgcc/config/ia64/crtbegin.S
++++ b/src/libgcc/config/ia64/crtbegin.S
+@@ -252,3 +252,7 @@ __do_jv_register_classes:
+ .weak __cxa_finalize
+ #endif
+ .weak _Jv_RegisterClasses
++
++#ifdef __linux__
++.section .note.GNU-stack; .previous
++#endif
+Index: b/src/libgcc/config/ia64/crtend.S
+===================================================================
+--- a/src/libgcc/config/ia64/crtend.S
++++ b/src/libgcc/config/ia64/crtend.S
+@@ -119,3 +119,7 @@ __do_global_ctors_aux:
+ 
+ 	br.ret.sptk.many rp
+ 	.endp __do_global_ctors_aux
++
++#ifdef __linux__
++.section .note.GNU-stack; .previous
++#endif
+Index: b/src/libgcc/config/ia64/crti.S
+===================================================================
+--- a/src/libgcc/config/ia64/crti.S
++++ b/src/libgcc/config/ia64/crti.S
+@@ -51,3 +51,7 @@ _fini:
+ 	.body
+ 
+ # end of crti.S
++
++#ifdef __linux__
++.section .note.GNU-stack; .previous
++#endif
+Index: b/src/libgcc/config/ia64/crtn.S
+===================================================================
+--- a/src/libgcc/config/ia64/crtn.S
++++ b/src/libgcc/config/ia64/crtn.S
+@@ -41,3 +41,7 @@
+ 	br.ret.sptk.many b0
+ 
+ # end of crtn.S
++
++#ifdef __linux__
++.section .note.GNU-stack; .previous
++#endif
+Index: b/src/libgcc/config/ia64/lib1funcs.S
+===================================================================
+--- a/src/libgcc/config/ia64/lib1funcs.S
++++ b/src/libgcc/config/ia64/lib1funcs.S
+@@ -793,3 +793,7 @@ __floattitf:
+ 	.endp __floattitf
+ #endif
+ #endif
++
++#ifdef __linux__
++.section .note.GNU-stack; .previous
++#endif
+Index: b/src/gcc/config/ia64/linux.h
+===================================================================
+--- a/src/gcc/config/ia64/linux.h
++++ b/src/gcc/config/ia64/linux.h
+@@ -79,5 +79,8 @@ do {						\
+ #undef TARGET_INIT_LIBFUNCS
+ #define TARGET_INIT_LIBFUNCS ia64_soft_fp_init_libfuncs
+ 
++#undef TARGET_ASM_FILE_END
++#define TARGET_ASM_FILE_END file_end_indicate_exec_stack
++
+ /* Define this to be nonzero if static stack checking is supported.  */
+ #define STACK_CHECK_STATIC_BUILTIN 1
+Index: b/src/gcc/config/rs6000/ppc-asm.h
+===================================================================
+--- a/src/gcc/config/rs6000/ppc-asm.h
++++ b/src/gcc/config/rs6000/ppc-asm.h
+@@ -375,7 +375,7 @@ GLUE(.L,name): \
+ #endif
+ #endif
+ 
+-#if defined __linux__ && !defined __powerpc64__
++#if defined __linux__
+ 	.section .note.GNU-stack
+ 	.previous
+ #endif
diff --git a/debian/patches/powerpc_nofprs.diff b/debian/patches/powerpc_nofprs.diff
new file mode 100644
index 0000000..7b4b204
--- /dev/null
+++ b/debian/patches/powerpc_nofprs.diff
@@ -0,0 +1,75 @@
+--- a/src/libgcc/config/rs6000/crtsavfpr.S
++++ b/src/libgcc/config/rs6000/crtsavfpr.S
+@@ -33,6 +33,7 @@
+ 
+ /* On PowerPC64 Linux, these functions are provided by the linker.  */
+ #ifndef __powerpc64__
++#ifndef __NO_FPRS__
+ 
+ /* Routines for saving floating point registers, called by the compiler.  */
+ /* Called with r11 pointing to the stack header word of the caller of the */
+@@ -79,3 +80,4 @@
+ CFI_ENDPROC
+ 
+ #endif
++#endif
+--- a/src/libgcc/config/rs6000/crtresfpr.S
++++ b/src/libgcc/config/rs6000/crtresfpr.S
+@@ -33,6 +33,7 @@
+ 
+ /* On PowerPC64 Linux, these functions are provided by the linker.  */
+ #ifndef __powerpc64__
++#ifndef __NO_FPRS__
+ 
+ /* Routines for restoring floating point registers, called by the compiler.  */
+ /* Called with r11 pointing to the stack header word of the caller of the */
+@@ -79,3 +80,4 @@
+ CFI_ENDPROC
+ 
+ #endif
++#endif
+--- a/src/libgcc/config/rs6000/crtresxfpr.S
++++ b/src/libgcc/config/rs6000/crtresxfpr.S
+@@ -33,6 +33,7 @@
+ 
+ /* On PowerPC64 Linux, these functions are provided by the linker.  */
+ #ifndef __powerpc64__
++#ifndef __NO_FPRS__
+ 
+ /* Routines for restoring floating point registers, called by the compiler.  */
+ /* Called with r11 pointing to the stack header word of the caller of the */
+@@ -124,3 +125,4 @@
+ CFI_ENDPROC
+ 
+ #endif
++#endif
+--- a/src/libgcc/config/rs6000/crtsavevr.S	2013-03-13 22:25:25.802681336 +0000
++++ b/src/libgcc/config/rs6000/crtsavevr.S	2013-03-13 22:26:21.054695066 +0000
+@@ -24,6 +24,7 @@
+ 
+ /* On PowerPC64 Linux, these functions are provided by the linker.  */
+ #ifndef __powerpc64__
++#ifndef __NO_FPRS__
+ 
+ #undef __ALTIVEC__
+ #define __ALTIVEC__ 1
+@@ -85,3 +86,4 @@
+ CFI_ENDPROC
+ 
+ #endif
++#endif
+--- a/src/libgcc/config/rs6000/crtrestvr.S	2013-03-13 22:25:28.394681980 +0000
++++ b/src/libgcc/config/rs6000/crtrestvr.S	2013-03-13 22:26:21.058695067 +0000
+@@ -24,6 +24,7 @@
+ 
+ /* On PowerPC64 Linux, these functions are provided by the linker.  */
+ #ifndef __powerpc64__
++#ifndef __NO_FPRS__
+ 
+ #undef __ALTIVEC__
+ #define __ALTIVEC__ 1
+@@ -85,3 +86,4 @@
+ CFI_ENDPROC
+ 
+ #endif
++#endif
diff --git a/debian/patches/powerpc_remove_many.diff b/debian/patches/powerpc_remove_many.diff
new file mode 100644
index 0000000..e50df0c
--- /dev/null
+++ b/debian/patches/powerpc_remove_many.diff
@@ -0,0 +1,32 @@
+# DP: Subject: [PATCH] remove -many on __SPE__ target
+# DP: this helps to to detect opcodes which are not part of the current
+# DP: CPU because without -many gas won't touch them. This currently could
+# DP: break the kernel build as the 603 on steroids cpus use performance
+# DP: counter opcodes which are not available on the steroid less 603 core.
+
+--- a/src/gcc/config/rs6000/rs6000.h
++++ b/src/gcc/config/rs6000/rs6000.h
+@@ -98,6 +98,12 @@
+ #define ASM_CPU_476_SPEC "-mpower4"
+ #endif
+ 
++#ifndef __SPE__
++#define ASM_CPU_SPU_MANY_NOT_SPE "-many"
++#else
++#define ASM_CPU_SPU_MANY_NOT_SPE
++#endif
++
+ /* Common ASM definitions used by ASM_SPEC among the various targets for
+    handling -mcpu=xxx switches.  There is a parallel list in driver-rs6000.c to
+    provide the default assembler options if the user uses -mcpu=native, so if
+@@ -170,7 +176,8 @@
+ %{mcpu=e500mc64: -me500mc64} \
+ %{maltivec: -maltivec} \
+ %{mvsx: -mvsx %{!maltivec: -maltivec} %{!mcpu*: %(asm_cpu_power7)}} \
+ %{mpower8-vector|mcrypto|mdirect-move|mhtm: %{!mcpu*: %(asm_cpu_power8)}} \
+--many"
++" \
++ASM_CPU_SPU_MANY_NOT_SPE
+ 
+ #define CPP_DEFAULT_SPEC ""
+ 
diff --git a/debian/patches/pr39491.diff b/debian/patches/pr39491.diff
new file mode 100644
index 0000000..4c51820
--- /dev/null
+++ b/debian/patches/pr39491.diff
@@ -0,0 +1,132 @@
+# DP: Proposed patch for PR libstdc++/39491.
+
+2009-04-16  Benjamin Kosnik  <bkoz at redhat.com>
+
+	* src/math_stubs_long_double.cc (__signbitl): Add for hppa linux only.
+
+Index: a/src/libstdc++-v3/src/math_stubs_long_double.cc
+===================================================================
+--- a/src/libstdc++-v3/src/math_stubs_long_double.cc	(revision 146216)
++++ b/src/libstdc++-v3/src/math_stubs_long_double.cc	(working copy)
+@@ -213,4 +221,111 @@
+     return tanh((double) x);
+   }
+ #endif
++
++  // From libmath/signbitl.c
++  // XXX ABI mistakenly exported
++#if defined (__hppa__) && defined (__linux__)
++# include <endian.h>
++# include <float.h>
++
++typedef unsigned int U_int32_t __attribute ((mode (SI)));
++typedef int Int32_t __attribute ((mode (SI)));
++typedef unsigned int U_int64_t __attribute ((mode (DI)));
++typedef int Int64_t __attribute ((mode (DI)));
++
++#if BYTE_ORDER == BIG_ENDIAN
++typedef union
++{
++  long double value;
++  struct
++  {
++    unsigned int sign_exponent:16;
++    unsigned int empty:16;
++    U_int32_t msw;
++    U_int32_t lsw;
++  } parts;
++} ieee_long_double_shape_type;
++#endif
++#if BYTE_ORDER == LITTLE_ENDIAN
++typedef union
++{
++  long double value;
++  struct
++  {
++    U_int32_t lsw;
++    U_int32_t msw;
++    unsigned int sign_exponent:16;
++    unsigned int empty:16;
++  } parts;
++} ieee_long_double_shape_type;
++#endif
++
++/* Get int from the exponent of a long double.  */
++#define GET_LDOUBLE_EXP(exp,d)                                  \
++do {                                                            \
++  ieee_long_double_shape_type ge_u;                             \
++  ge_u.value = (d);                                             \
++  (exp) = ge_u.parts.sign_exponent;                             \
++} while (0)
++
++#if BYTE_ORDER == BIG_ENDIAN
++typedef union
++{
++  long double value;
++  struct
++  {
++    U_int64_t msw;
++    U_int64_t lsw;
++  } parts64;
++  struct
++  {
++    U_int32_t w0, w1, w2, w3;
++  } parts32;
++} ieee_quad_double_shape_type;
++#endif
++
++#if BYTE_ORDER == LITTLE_ENDIAN
++typedef union
++{
++  long double value;
++  struct
++  {
++    U_int64_t lsw;
++    U_int64_t msw;
++  } parts64;
++  struct
++  {
++    U_int32_t w3, w2, w1, w0;
++  } parts32;
++} ieee_quad_double_shape_type;
++#endif
++
++/* Get most significant 64 bit int from a quad long double.  */
++#define GET_LDOUBLE_MSW64(msw,d)				\
++do {								\
++  ieee_quad_double_shape_type qw_u;				\
++  qw_u.value = (d);						\
++  (msw) = qw_u.parts64.msw;					\
++} while (0)
++
++int
++__signbitl (long double x)
++{
++#if LDBL_MANT_DIG == 113
++  Int64_t msw;
++
++  GET_LDOUBLE_MSW64 (msw, x);
++  return msw < 0;
++#else
++  Int32_t e;
++
++  GET_LDOUBLE_EXP (e, x);
++  return e & 0x8000;
++#endif
++}
++#endif
++
++#ifndef _GLIBCXX_HAVE___SIGNBITL
++
++#endif
+ } // extern "C"
+--- a/src/libstdc++-v3/config/abi/pre/gnu.ver~	2009-04-10 01:23:07.000000000 +0200
++++ b/src/libstdc++-v3/config/abi/pre/gnu.ver	2009-04-21 16:24:24.000000000 +0200
+@@ -635,6 +635,7 @@
+     sqrtf;
+     sqrtl;
+     copysignf;
++    __signbitl;
+ 
+    # GLIBCXX_ABI compatibility only.
+     # std::string
diff --git a/debian/patches/pr47818.diff b/debian/patches/pr47818.diff
new file mode 100644
index 0000000..909916e
--- /dev/null
+++ b/debian/patches/pr47818.diff
@@ -0,0 +1,24 @@
+# DP: Fix PR ada/47818: Pragma Assert is rejected with No_Implementation_Pragmas restriction.
+
+Index: b/src/gcc/ada/sem_prag.adb
+===================================================================
+--- a/src/gcc/ada/sem_prag.adb
++++ b/src/gcc/ada/sem_prag.adb
+@@ -11334,7 +11334,16 @@ package body Sem_Prag is
+             Str   : Node_Id;
+ 
+          begin
+-            GNAT_Pragma;
++            --  This could be a rewritten pragma Assert. If it is the case
++            --  then don't check restrictions, because they are different for
++            --  pragma Assert and were already checked.
++
++            if Nkind (Original_Node (N)) /= N_Pragma
++              or else Pragma_Name (Original_Node (N)) /= Name_Assert
++            then
++               GNAT_Pragma;
++            end if;
++
+             Check_At_Least_N_Arguments (2);
+             Check_At_Most_N_Arguments (3);
+             Check_Optional_Identifier (Arg1, Name_Name);
diff --git a/debian/patches/pr61106.diff b/debian/patches/pr61106.diff
new file mode 100644
index 0000000..fd5dc57
--- /dev/null
+++ b/debian/patches/pr61106.diff
@@ -0,0 +1,24 @@
+# DP: Proposed patch for PR driver/61106
+
+--- a/src/gcc/optc-gen.awk
++++ b/src/gcc/optc-gen.awk
+@@ -404,15 +404,17 @@ for (i = 0; i < n_enabledby; i++) {
+     for (j = 1; j < n_enables; j++) {
+         opt_var_name = var_name(flags[opt_numbers[thisenable[j]]]);
+         if (opt_var_name != "") {
+             condition = "!opts_set->x_" opt_var_name
+             if (thisenableif[j] != "") {
+-                condition = condition " && (" thisenableif[j] ")"
++                value = "(" thisenableif[j] ")"
++            } else {
++                value = "value"
+             }
+             print "      if (" condition ")"
+             print "        handle_generated_option (opts, opts_set,"
+-            print "                                 " opt_enum(thisenable[j]) ", NULL, value,"
++            print "                                 " opt_enum(thisenable[j]) ", NULL, " value ","
+             print "                                 lang_mask, kind, loc, handlers, dc);"
+         } else {
+             print "#error " thisenable[j] " does not have a Var() flag"
+         }
+     }
diff --git a/debian/patches/pr61126.diff b/debian/patches/pr61126.diff
new file mode 100644
index 0000000..2c9aeb9
--- /dev/null
+++ b/debian/patches/pr61126.diff
@@ -0,0 +1,51 @@
+Index: gcc/fortran/lang.opt
+===================================================================
+--- a/src/gcc/fortran/lang.opt	(revision 210277)
++++ b/src/gcc/fortran/lang.opt	(working copy)
+@@ -301,6 +301,10 @@
+ Fortran Warning
+ Warn about unused dummy arguments.
+ 
++Wunused-parameter
++LangEnabledBy(Fortran,Wextra)
++; Documented in common.opt
++
+ Wzerotrip
+ Fortran Warning
+ Warn about zero-trip DO loops
+Index: gcc/fortran/options.c
+===================================================================
+--- a/src/gcc/fortran/options.c	(revision 210277)
++++ b/src/gcc/fortran/options.c	(working copy)
+@@ -674,12 +674,7 @@
+       break;
+ 
+     case OPT_Wextra:
+-      handle_generated_option (&global_options, &global_options_set,
+-			       OPT_Wunused_parameter, NULL, value,
+-			       gfc_option_lang_mask (), kind, loc,
+-			       handlers, global_dc);
+       set_Wextra (value);
+-
+       break;
+ 
+     case OPT_Wfunction_elimination:
+Index: gcc/opts-global.c
+===================================================================
+--- a/src/gcc/opts-global.c	(revision 210277)
++++ b/src/gcc/opts-global.c	(working copy)
+@@ -273,10 +273,10 @@
+   handlers->unknown_option_callback = unknown_option_callback;
+   handlers->wrong_lang_callback = complain_wrong_lang;
+   handlers->num_handlers = 3;
+-  handlers->handlers[0].handler = lang_handle_option;
+-  handlers->handlers[0].mask = initial_lang_mask;
+-  handlers->handlers[1].handler = common_handle_option;
+-  handlers->handlers[1].mask = CL_COMMON;
++  handlers->handlers[0].handler = common_handle_option;
++  handlers->handlers[0].mask = CL_COMMON;
++  handlers->handlers[1].handler = lang_handle_option;
++  handlers->handlers[1].mask = initial_lang_mask;
+   handlers->handlers[2].handler = target_handle_option;
+   handlers->handlers[2].mask = CL_TARGET;
+ }
diff --git a/debian/patches/pr65913-workaround.diff b/debian/patches/pr65913-workaround.diff
new file mode 100644
index 0000000..26c026c
--- /dev/null
+++ b/debian/patches/pr65913-workaround.diff
@@ -0,0 +1,731 @@
+# DP: Work around PR c++/65913, link with -latomic (older than binutils 2.25)
+
+--- a/src/gcc/cp/g++spec.c
++++ b/src/gcc/cp/g++spec.c
+@@ -264,6 +264,8 @@
+ 
+   /* Add one for shared_libgcc or extra static library.  */
+   num_args = argc + added + need_math + (library > 0) * 4 + 1;
++  /* Link libatomic.  */
++  num_args += 2;
+   new_decoded_options = XNEWVEC (struct cl_decoded_option, num_args);
+ 
+   i = 0;
+@@ -389,6 +391,17 @@
+   if (shared_libgcc && !static_link)
+     generate_option (OPT_shared_libgcc, NULL, 1, CL_DRIVER,
+ 		     &new_decoded_options[j++]);
++  if (library > 0)
++    {
++      /* Work around http://gcc.gnu.org/PR65913.  */
++      generate_option (OPT_Wl_, "--as-needed", 1, CL_DRIVER,
++		       &new_decoded_options[j]);
++      j++;
++      generate_option (OPT_l, "atomic", 1, CL_DRIVER,
++		       &new_decoded_options[j]);
++      added_libraries++;
++      j++;
++    }
+ 
+   *in_decoded_options_count = j;
+   *in_decoded_options = new_decoded_options;
+--- a/src/configure.ac
++++ b/src/configure.ac
+@@ -2683,6 +2683,11 @@
+ build_configdirs=`echo "${build_configdirs}" | sed -e 's/build-//g'`
+ bootstrap_fixincludes=no
+ 
++# If we are building libatomic, bootstrap it.
++if echo " ${target_configdirs} " | grep " libatomic " > /dev/null 2>&1 ; then
++  bootstrap_target_libs=${bootstrap_target_libs}target-libatomic,
++fi
++
+ # If we are building libgomp, bootstrap it.
+ if echo " ${target_configdirs} " | grep " libgomp " > /dev/null 2>&1 ; then
+   bootstrap_target_libs=${bootstrap_target_libs}target-libgomp,
+@@ -3389,7 +3394,7 @@
+ GCC_TARGET_TOOL(cc, CC_FOR_TARGET, CC, [gcc/xgcc -B$$r/$(HOST_SUBDIR)/gcc/])
+ dnl see comments for CXX_FOR_TARGET_FLAG_TO_PASS
+ GCC_TARGET_TOOL(c++, CXX_FOR_TARGET, CXX,
+-		[gcc/xg++ -B$$r/$(HOST_SUBDIR)/gcc/ -nostdinc++ `if test -f $$r/$(TARGET_SUBDIR)/libstdc++-v3/scripts/testsuite_flags; then $(SHELL) $$r/$(TARGET_SUBDIR)/libstdc++-v3/scripts/testsuite_flags --build-includes; else echo -funconfigured-libstdc++-v3 ; fi` -L$$r/$(TARGET_SUBDIR)/libstdc++-v3/src -L$$r/$(TARGET_SUBDIR)/libstdc++-v3/src/.libs -L$$r/$(TARGET_SUBDIR)/libstdc++-v3/libsupc++/.libs],
++		[gcc/xg++ -B$$r/$(HOST_SUBDIR)/gcc/ -nostdinc++ `if test -f $$r/$(TARGET_SUBDIR)/libstdc++-v3/scripts/testsuite_flags; then $(SHELL) $$r/$(TARGET_SUBDIR)/libstdc++-v3/scripts/testsuite_flags --build-includes; else echo -funconfigured-libstdc++-v3 ; fi` -L$$r/$(TARGET_SUBDIR)/libatomic/.libs -L$$r/$(TARGET_SUBDIR)/libstdc++-v3/src -L$$r/$(TARGET_SUBDIR)/libstdc++-v3/src/.libs -L$$r/$(TARGET_SUBDIR)/libstdc++-v3/libsupc++/.libs],
+ 		c++)
+ GCC_TARGET_TOOL(c++ for libstdc++, RAW_CXX_FOR_TARGET, CXX,
+ 		[gcc/xgcc -shared-libgcc -B$$r/$(HOST_SUBDIR)/gcc -nostdinc++ -L$$r/$(TARGET_SUBDIR)/libstdc++-v3/src -L$$r/$(TARGET_SUBDIR)/libstdc++-v3/src/.libs -L$$r/$(TARGET_SUBDIR)/libstdc++-v3/libsupc++/.libs],
+--- a/src/Makefile.def
++++ b/src/Makefile.def
+@@ -166,7 +166,7 @@
+ target_modules = { module= libada; };
+ target_modules = { module= libgomp; bootstrap= true; lib_path=.libs; };
+ target_modules = { module= libitm; lib_path=.libs; };
+-target_modules = { module= libatomic; lib_path=.libs; };
++target_modules = { module= libatomic; bootstrap= true; lib_path=.libs; };
+ 
+ // These are (some of) the make targets to be done in each subdirectory.
+ // Not all; these are the ones which don't have special options.
+@@ -549,6 +549,7 @@
+ dependencies = { module=all-target-libjava; on=all-target-libffi; };
+ dependencies = { module=configure-target-libobjc; on=configure-target-boehm-gc; };
+ dependencies = { module=all-target-libobjc; on=all-target-boehm-gc; };
++dependencies = { module=configure-target-libstdc++-v3; on=configure-target-libatomic; };
+ dependencies = { module=configure-target-libstdc++-v3; on=configure-target-libgomp; };
+ dependencies = { module=configure-target-liboffloadmic; on=configure-target-libgomp; };
+ dependencies = { module=configure-target-libsanitizer; on=all-target-libstdc++-v3; };
+@@ -574,6 +575,9 @@
+ dependencies = { module=install-target-libitm; on=install-target-libgcc; };
+ dependencies = { module=install-target-libobjc; on=install-target-libgcc; };
+ dependencies = { module=install-target-libstdc++-v3; on=install-target-libgcc; };
++dependencies = { module=install-target-libstdc++-v3; on=install-target-libatomic; };
++dependencies = { module=install-target-libcc1; on=install-target-libstdc++-v3; };
++dependencies = { module=install-target-libcc1; on=install-target-libatomic; };
+ 
+ // Target modules in the 'src' repository.
+ lang_env_dependencies = { module=libtermcap; };
+--- a/src/Makefile.tpl
++++ b/src/Makefile.tpl
+@@ -240,11 +240,13 @@
+ POSTSTAGE1_CXX_EXPORT = \
+ 	CXX="$(STAGE_CC_WRAPPER) $$r/$(HOST_SUBDIR)/prev-gcc/xg++$(exeext) \
+ 	  -B$$r/$(HOST_SUBDIR)/prev-gcc/ -B$(build_tooldir)/bin/ -nostdinc++ \
++	  -B$$r/prev-$(TARGET_SUBDIR)/libatomic/.libs \
+ 	  -B$$r/prev-$(TARGET_SUBDIR)/libstdc++-v3/src/.libs \
+ 	  -B$$r/prev-$(TARGET_SUBDIR)/libstdc++-v3/libsupc++/.libs \
+ 	  `if $(LEAN); then echo ' -isystem '; else echo ' -I'; fi`$$r/prev-$(TARGET_SUBDIR)/libstdc++-v3/include/$(TARGET_SUBDIR) \
+ 	  `if $(LEAN); then echo ' -isystem '; else echo ' -I'; fi`$$r/prev-$(TARGET_SUBDIR)/libstdc++-v3/include \
+ 	  `if $(LEAN); then echo ' -isystem '; else echo ' -I'; fi`$$s/libstdc++-v3/libsupc++ \
++	  -L$$r/prev-$(TARGET_SUBDIR)/libatomic/.libs \
+ 	  -L$$r/prev-$(TARGET_SUBDIR)/libstdc++-v3/src/.libs \
+ 	  -L$$r/prev-$(TARGET_SUBDIR)/libstdc++-v3/libsupc++/.libs"; \
+ 	  export CXX; \
+--- a/src/Makefile.in
++++ b/src/Makefile.in
+@@ -237,11 +237,13 @@
+ POSTSTAGE1_CXX_EXPORT = \
+ 	CXX="$(STAGE_CC_WRAPPER) $$r/$(HOST_SUBDIR)/prev-gcc/xg++$(exeext) \
+ 	  -B$$r/$(HOST_SUBDIR)/prev-gcc/ -B$(build_tooldir)/bin/ -nostdinc++ \
++	  -B$$r/prev-$(TARGET_SUBDIR)/libatomic/.libs \
+ 	  -B$$r/prev-$(TARGET_SUBDIR)/libstdc++-v3/src/.libs \
+ 	  -B$$r/prev-$(TARGET_SUBDIR)/libstdc++-v3/libsupc++/.libs \
+ 	  `if $(LEAN); then echo ' -isystem '; else echo ' -I'; fi`$$r/prev-$(TARGET_SUBDIR)/libstdc++-v3/include/$(TARGET_SUBDIR) \
+ 	  `if $(LEAN); then echo ' -isystem '; else echo ' -I'; fi`$$r/prev-$(TARGET_SUBDIR)/libstdc++-v3/include \
+ 	  `if $(LEAN); then echo ' -isystem '; else echo ' -I'; fi`$$s/libstdc++-v3/libsupc++ \
++	  -L$$r/prev-$(TARGET_SUBDIR)/libatomic/.libs \
+ 	  -L$$r/prev-$(TARGET_SUBDIR)/libstdc++-v3/src/.libs \
+ 	  -L$$r/prev-$(TARGET_SUBDIR)/libstdc++-v3/libsupc++/.libs"; \
+ 	  export CXX; \
+@@ -1132,7 +1134,9 @@
+ all-target: maybe-all-target-libgomp
+ @endif target-libgomp-no-bootstrap
+ all-target: maybe-all-target-libitm
++ at if target-libatomic-no-bootstrap
+ all-target: maybe-all-target-libatomic
++ at endif target-libatomic-no-bootstrap
+ 
+ # Do a target for all the subdirectories.  A ``make do-X'' will do a
+ # ``make X'' in all subdirectories (because, in general, there is a
+@@ -46810,7 +46814,6 @@
+ @if target-libatomic
+ maybe-configure-target-libatomic: configure-target-libatomic
+ configure-target-libatomic: 
+-	@: $(MAKE); $(unstage)
+ 	@r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	echo "Checking multilib configuration for libatomic..."; \
+@@ -46848,8 +46851,279 @@
+ 
+ 
+ 
++.PHONY: configure-stage1-target-libatomic maybe-configure-stage1-target-libatomic
++maybe-configure-stage1-target-libatomic:
++ at if target-libatomic-bootstrap
++maybe-configure-stage1-target-libatomic: configure-stage1-target-libatomic
++configure-stage1-target-libatomic:
++	@[ $(current_stage) = stage1 ] || $(MAKE) stage1-start
++	@$(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libatomic
++	@r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	TFLAGS="$(STAGE1_TFLAGS)"; \
++	echo "Checking multilib configuration for libatomic..."; \
++	$(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libatomic/multilib.tmp 2> /dev/null ; \
++	if test -r $(TARGET_SUBDIR)/libatomic/multilib.out; then \
++	  if cmp -s $(TARGET_SUBDIR)/libatomic/multilib.tmp $(TARGET_SUBDIR)/libatomic/multilib.out; then \
++	    rm -f $(TARGET_SUBDIR)/libatomic/multilib.tmp; \
++	  else \
++	    rm -f $(TARGET_SUBDIR)/libatomic/Makefile; \
++	    mv $(TARGET_SUBDIR)/libatomic/multilib.tmp $(TARGET_SUBDIR)/libatomic/multilib.out; \
++	  fi; \
++	else \
++	  mv $(TARGET_SUBDIR)/libatomic/multilib.tmp $(TARGET_SUBDIR)/libatomic/multilib.out; \
++	fi; \
++	test ! -f $(TARGET_SUBDIR)/libatomic/Makefile || exit 0; \
++	$(NORMAL_TARGET_EXPORTS) \
++	CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \
++	CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \
++	LIBCFLAGS="$(LIBCFLAGS_FOR_TARGET)"; export LIBCFLAGS;  \
++	echo Configuring stage 1 in $(TARGET_SUBDIR)/libatomic ; \
++	$(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libatomic ; \
++	cd $(TARGET_SUBDIR)/libatomic || exit 1; \
++	case $(srcdir) in \
++	  /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \
++	  *) topdir=`echo $(TARGET_SUBDIR)/libatomic/ | \
++		sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \
++	esac; \
++	module_srcdir=libatomic; \
++	$(SHELL) $$s/$$module_srcdir/configure \
++	  --srcdir=$${topdir}/$$module_srcdir \
++	  $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \
++	  --target=${target_alias} \
++	   \
++	  $(STAGE1_CONFIGURE_FLAGS)
++ at endif target-libatomic-bootstrap
+ 
++.PHONY: configure-stage2-target-libatomic maybe-configure-stage2-target-libatomic
++maybe-configure-stage2-target-libatomic:
++ at if target-libatomic-bootstrap
++maybe-configure-stage2-target-libatomic: configure-stage2-target-libatomic
++configure-stage2-target-libatomic:
++	@[ $(current_stage) = stage2 ] || $(MAKE) stage2-start
++	@$(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libatomic
++	@r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	TFLAGS="$(STAGE2_TFLAGS)"; \
++	echo "Checking multilib configuration for libatomic..."; \
++	$(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libatomic/multilib.tmp 2> /dev/null ; \
++	if test -r $(TARGET_SUBDIR)/libatomic/multilib.out; then \
++	  if cmp -s $(TARGET_SUBDIR)/libatomic/multilib.tmp $(TARGET_SUBDIR)/libatomic/multilib.out; then \
++	    rm -f $(TARGET_SUBDIR)/libatomic/multilib.tmp; \
++	  else \
++	    rm -f $(TARGET_SUBDIR)/libatomic/Makefile; \
++	    mv $(TARGET_SUBDIR)/libatomic/multilib.tmp $(TARGET_SUBDIR)/libatomic/multilib.out; \
++	  fi; \
++	else \
++	  mv $(TARGET_SUBDIR)/libatomic/multilib.tmp $(TARGET_SUBDIR)/libatomic/multilib.out; \
++	fi; \
++	test ! -f $(TARGET_SUBDIR)/libatomic/Makefile || exit 0; \
++	$(NORMAL_TARGET_EXPORTS) \
++	 \
++	CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \
++	CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \
++	LIBCFLAGS="$(LIBCFLAGS_FOR_TARGET)"; export LIBCFLAGS;  \
++	echo Configuring stage 2 in $(TARGET_SUBDIR)/libatomic ; \
++	$(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libatomic ; \
++	cd $(TARGET_SUBDIR)/libatomic || exit 1; \
++	case $(srcdir) in \
++	  /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \
++	  *) topdir=`echo $(TARGET_SUBDIR)/libatomic/ | \
++		sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \
++	esac; \
++	module_srcdir=libatomic; \
++	$(SHELL) $$s/$$module_srcdir/configure \
++	  --srcdir=$${topdir}/$$module_srcdir \
++	  $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \
++	  --target=${target_alias} \
++	   --with-build-libsubdir=$(HOST_SUBDIR)  \
++	  $(STAGE2_CONFIGURE_FLAGS)
++ at endif target-libatomic-bootstrap
+ 
++.PHONY: configure-stage3-target-libatomic maybe-configure-stage3-target-libatomic
++maybe-configure-stage3-target-libatomic:
++ at if target-libatomic-bootstrap
++maybe-configure-stage3-target-libatomic: configure-stage3-target-libatomic
++configure-stage3-target-libatomic:
++	@[ $(current_stage) = stage3 ] || $(MAKE) stage3-start
++	@$(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libatomic
++	@r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	TFLAGS="$(STAGE3_TFLAGS)"; \
++	echo "Checking multilib configuration for libatomic..."; \
++	$(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libatomic/multilib.tmp 2> /dev/null ; \
++	if test -r $(TARGET_SUBDIR)/libatomic/multilib.out; then \
++	  if cmp -s $(TARGET_SUBDIR)/libatomic/multilib.tmp $(TARGET_SUBDIR)/libatomic/multilib.out; then \
++	    rm -f $(TARGET_SUBDIR)/libatomic/multilib.tmp; \
++	  else \
++	    rm -f $(TARGET_SUBDIR)/libatomic/Makefile; \
++	    mv $(TARGET_SUBDIR)/libatomic/multilib.tmp $(TARGET_SUBDIR)/libatomic/multilib.out; \
++	  fi; \
++	else \
++	  mv $(TARGET_SUBDIR)/libatomic/multilib.tmp $(TARGET_SUBDIR)/libatomic/multilib.out; \
++	fi; \
++	test ! -f $(TARGET_SUBDIR)/libatomic/Makefile || exit 0; \
++	$(NORMAL_TARGET_EXPORTS) \
++	 \
++	CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \
++	CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \
++	LIBCFLAGS="$(LIBCFLAGS_FOR_TARGET)"; export LIBCFLAGS;  \
++	echo Configuring stage 3 in $(TARGET_SUBDIR)/libatomic ; \
++	$(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libatomic ; \
++	cd $(TARGET_SUBDIR)/libatomic || exit 1; \
++	case $(srcdir) in \
++	  /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \
++	  *) topdir=`echo $(TARGET_SUBDIR)/libatomic/ | \
++		sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \
++	esac; \
++	module_srcdir=libatomic; \
++	$(SHELL) $$s/$$module_srcdir/configure \
++	  --srcdir=$${topdir}/$$module_srcdir \
++	  $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \
++	  --target=${target_alias} \
++	   --with-build-libsubdir=$(HOST_SUBDIR)  \
++	  $(STAGE3_CONFIGURE_FLAGS)
++ at endif target-libatomic-bootstrap
++
++.PHONY: configure-stage4-target-libatomic maybe-configure-stage4-target-libatomic
++maybe-configure-stage4-target-libatomic:
++ at if target-libatomic-bootstrap
++maybe-configure-stage4-target-libatomic: configure-stage4-target-libatomic
++configure-stage4-target-libatomic:
++	@[ $(current_stage) = stage4 ] || $(MAKE) stage4-start
++	@$(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libatomic
++	@r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	TFLAGS="$(STAGE4_TFLAGS)"; \
++	echo "Checking multilib configuration for libatomic..."; \
++	$(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libatomic/multilib.tmp 2> /dev/null ; \
++	if test -r $(TARGET_SUBDIR)/libatomic/multilib.out; then \
++	  if cmp -s $(TARGET_SUBDIR)/libatomic/multilib.tmp $(TARGET_SUBDIR)/libatomic/multilib.out; then \
++	    rm -f $(TARGET_SUBDIR)/libatomic/multilib.tmp; \
++	  else \
++	    rm -f $(TARGET_SUBDIR)/libatomic/Makefile; \
++	    mv $(TARGET_SUBDIR)/libatomic/multilib.tmp $(TARGET_SUBDIR)/libatomic/multilib.out; \
++	  fi; \
++	else \
++	  mv $(TARGET_SUBDIR)/libatomic/multilib.tmp $(TARGET_SUBDIR)/libatomic/multilib.out; \
++	fi; \
++	test ! -f $(TARGET_SUBDIR)/libatomic/Makefile || exit 0; \
++	$(NORMAL_TARGET_EXPORTS) \
++	 \
++	CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \
++	CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \
++	LIBCFLAGS="$(LIBCFLAGS_FOR_TARGET)"; export LIBCFLAGS;  \
++	echo Configuring stage 4 in $(TARGET_SUBDIR)/libatomic ; \
++	$(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libatomic ; \
++	cd $(TARGET_SUBDIR)/libatomic || exit 1; \
++	case $(srcdir) in \
++	  /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \
++	  *) topdir=`echo $(TARGET_SUBDIR)/libatomic/ | \
++		sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \
++	esac; \
++	module_srcdir=libatomic; \
++	$(SHELL) $$s/$$module_srcdir/configure \
++	  --srcdir=$${topdir}/$$module_srcdir \
++	  $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \
++	  --target=${target_alias} \
++	   --with-build-libsubdir=$(HOST_SUBDIR)  \
++	  $(STAGE4_CONFIGURE_FLAGS)
++ at endif target-libatomic-bootstrap
++
++.PHONY: configure-stageprofile-target-libatomic maybe-configure-stageprofile-target-libatomic
++maybe-configure-stageprofile-target-libatomic:
++ at if target-libatomic-bootstrap
++maybe-configure-stageprofile-target-libatomic: configure-stageprofile-target-libatomic
++configure-stageprofile-target-libatomic:
++	@[ $(current_stage) = stageprofile ] || $(MAKE) stageprofile-start
++	@$(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libatomic
++	@r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	TFLAGS="$(STAGEprofile_TFLAGS)"; \
++	echo "Checking multilib configuration for libatomic..."; \
++	$(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libatomic/multilib.tmp 2> /dev/null ; \
++	if test -r $(TARGET_SUBDIR)/libatomic/multilib.out; then \
++	  if cmp -s $(TARGET_SUBDIR)/libatomic/multilib.tmp $(TARGET_SUBDIR)/libatomic/multilib.out; then \
++	    rm -f $(TARGET_SUBDIR)/libatomic/multilib.tmp; \
++	  else \
++	    rm -f $(TARGET_SUBDIR)/libatomic/Makefile; \
++	    mv $(TARGET_SUBDIR)/libatomic/multilib.tmp $(TARGET_SUBDIR)/libatomic/multilib.out; \
++	  fi; \
++	else \
++	  mv $(TARGET_SUBDIR)/libatomic/multilib.tmp $(TARGET_SUBDIR)/libatomic/multilib.out; \
++	fi; \
++	test ! -f $(TARGET_SUBDIR)/libatomic/Makefile || exit 0; \
++	$(NORMAL_TARGET_EXPORTS) \
++	 \
++	CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \
++	CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \
++	LIBCFLAGS="$(LIBCFLAGS_FOR_TARGET)"; export LIBCFLAGS;  \
++	echo Configuring stage profile in $(TARGET_SUBDIR)/libatomic ; \
++	$(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libatomic ; \
++	cd $(TARGET_SUBDIR)/libatomic || exit 1; \
++	case $(srcdir) in \
++	  /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \
++	  *) topdir=`echo $(TARGET_SUBDIR)/libatomic/ | \
++		sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \
++	esac; \
++	module_srcdir=libatomic; \
++	$(SHELL) $$s/$$module_srcdir/configure \
++	  --srcdir=$${topdir}/$$module_srcdir \
++	  $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \
++	  --target=${target_alias} \
++	   --with-build-libsubdir=$(HOST_SUBDIR)  \
++	  $(STAGEprofile_CONFIGURE_FLAGS)
++ at endif target-libatomic-bootstrap
++
++.PHONY: configure-stagefeedback-target-libatomic maybe-configure-stagefeedback-target-libatomic
++maybe-configure-stagefeedback-target-libatomic:
++ at if target-libatomic-bootstrap
++maybe-configure-stagefeedback-target-libatomic: configure-stagefeedback-target-libatomic
++configure-stagefeedback-target-libatomic:
++	@[ $(current_stage) = stagefeedback ] || $(MAKE) stagefeedback-start
++	@$(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libatomic
++	@r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	TFLAGS="$(STAGEfeedback_TFLAGS)"; \
++	echo "Checking multilib configuration for libatomic..."; \
++	$(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libatomic/multilib.tmp 2> /dev/null ; \
++	if test -r $(TARGET_SUBDIR)/libatomic/multilib.out; then \
++	  if cmp -s $(TARGET_SUBDIR)/libatomic/multilib.tmp $(TARGET_SUBDIR)/libatomic/multilib.out; then \
++	    rm -f $(TARGET_SUBDIR)/libatomic/multilib.tmp; \
++	  else \
++	    rm -f $(TARGET_SUBDIR)/libatomic/Makefile; \
++	    mv $(TARGET_SUBDIR)/libatomic/multilib.tmp $(TARGET_SUBDIR)/libatomic/multilib.out; \
++	  fi; \
++	else \
++	  mv $(TARGET_SUBDIR)/libatomic/multilib.tmp $(TARGET_SUBDIR)/libatomic/multilib.out; \
++	fi; \
++	test ! -f $(TARGET_SUBDIR)/libatomic/Makefile || exit 0; \
++	$(NORMAL_TARGET_EXPORTS) \
++	 \
++	CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \
++	CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \
++	LIBCFLAGS="$(LIBCFLAGS_FOR_TARGET)"; export LIBCFLAGS;  \
++	echo Configuring stage feedback in $(TARGET_SUBDIR)/libatomic ; \
++	$(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libatomic ; \
++	cd $(TARGET_SUBDIR)/libatomic || exit 1; \
++	case $(srcdir) in \
++	  /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \
++	  *) topdir=`echo $(TARGET_SUBDIR)/libatomic/ | \
++		sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \
++	esac; \
++	module_srcdir=libatomic; \
++	$(SHELL) $$s/$$module_srcdir/configure \
++	  --srcdir=$${topdir}/$$module_srcdir \
++	  $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \
++	  --target=${target_alias} \
++	   --with-build-libsubdir=$(HOST_SUBDIR)  \
++	  $(STAGEfeedback_CONFIGURE_FLAGS)
++ at endif target-libatomic-bootstrap
++
++
++
++
++
+ .PHONY: all-target-libatomic maybe-all-target-libatomic
+ maybe-all-target-libatomic:
+ @if gcc-bootstrap
+@@ -46859,7 +47133,6 @@
+ TARGET-target-libatomic=all
+ maybe-all-target-libatomic: all-target-libatomic
+ all-target-libatomic: configure-target-libatomic
+-	@: $(MAKE); $(unstage)
+ 	@r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	$(NORMAL_TARGET_EXPORTS)  \
+@@ -46870,8 +47143,257 @@
+ 
+ 
+ 
++.PHONY: all-stage1-target-libatomic maybe-all-stage1-target-libatomic
++.PHONY: clean-stage1-target-libatomic maybe-clean-stage1-target-libatomic
++maybe-all-stage1-target-libatomic:
++maybe-clean-stage1-target-libatomic:
++ at if target-libatomic-bootstrap
++maybe-all-stage1-target-libatomic: all-stage1-target-libatomic
++all-stage1: all-stage1-target-libatomic
++TARGET-stage1-target-libatomic = $(TARGET-target-libatomic)
++all-stage1-target-libatomic: configure-stage1-target-libatomic
++	@[ $(current_stage) = stage1 ] || $(MAKE) stage1-start
++	@r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	TFLAGS="$(STAGE1_TFLAGS)"; \
++	$(NORMAL_TARGET_EXPORTS)  \
++	cd $(TARGET_SUBDIR)/libatomic && \
++	$(MAKE) $(BASE_FLAGS_TO_PASS) \
++		CFLAGS="$(CFLAGS_FOR_TARGET)" \
++		CXXFLAGS="$(CXXFLAGS_FOR_TARGET)" \
++		LIBCFLAGS="$(LIBCFLAGS_FOR_TARGET)" \
++		CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \
++		CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \
++		LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \
++		$(EXTRA_TARGET_FLAGS)  \
++		  \
++		TFLAGS="$(STAGE1_TFLAGS)" \
++		$(TARGET-stage1-target-libatomic)
+ 
++maybe-clean-stage1-target-libatomic: clean-stage1-target-libatomic
++clean-stage1: clean-stage1-target-libatomic
++clean-stage1-target-libatomic:
++	@if [ $(current_stage) = stage1 ]; then \
++	  [ -f $(TARGET_SUBDIR)/libatomic/Makefile ] || exit 0; \
++	else \
++	  [ -f $(TARGET_SUBDIR)/stage1-libatomic/Makefile ] || exit 0; \
++	  $(MAKE) stage1-start; \
++	fi; \
++	cd $(TARGET_SUBDIR)/libatomic && \
++	$(MAKE) $(EXTRA_TARGET_FLAGS)  \
++	  clean
++ at endif target-libatomic-bootstrap
+ 
++
++.PHONY: all-stage2-target-libatomic maybe-all-stage2-target-libatomic
++.PHONY: clean-stage2-target-libatomic maybe-clean-stage2-target-libatomic
++maybe-all-stage2-target-libatomic:
++maybe-clean-stage2-target-libatomic:
++ at if target-libatomic-bootstrap
++maybe-all-stage2-target-libatomic: all-stage2-target-libatomic
++all-stage2: all-stage2-target-libatomic
++TARGET-stage2-target-libatomic = $(TARGET-target-libatomic)
++all-stage2-target-libatomic: configure-stage2-target-libatomic
++	@[ $(current_stage) = stage2 ] || $(MAKE) stage2-start
++	@r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	TFLAGS="$(STAGE2_TFLAGS)"; \
++	$(NORMAL_TARGET_EXPORTS) \
++	  \
++	cd $(TARGET_SUBDIR)/libatomic && \
++	$(MAKE) $(BASE_FLAGS_TO_PASS) \
++		CFLAGS="$(CFLAGS_FOR_TARGET)" \
++		CXXFLAGS="$(CXXFLAGS_FOR_TARGET)" \
++		LIBCFLAGS="$(LIBCFLAGS_FOR_TARGET)" \
++		CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \
++		CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \
++		LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \
++		$(EXTRA_TARGET_FLAGS)   \
++		TFLAGS="$(STAGE2_TFLAGS)" \
++		$(TARGET-stage2-target-libatomic)
++
++maybe-clean-stage2-target-libatomic: clean-stage2-target-libatomic
++clean-stage2: clean-stage2-target-libatomic
++clean-stage2-target-libatomic:
++	@if [ $(current_stage) = stage2 ]; then \
++	  [ -f $(TARGET_SUBDIR)/libatomic/Makefile ] || exit 0; \
++	else \
++	  [ -f $(TARGET_SUBDIR)/stage2-libatomic/Makefile ] || exit 0; \
++	  $(MAKE) stage2-start; \
++	fi; \
++	cd $(TARGET_SUBDIR)/libatomic && \
++	$(MAKE) $(EXTRA_TARGET_FLAGS)   clean
++ at endif target-libatomic-bootstrap
++
++
++.PHONY: all-stage3-target-libatomic maybe-all-stage3-target-libatomic
++.PHONY: clean-stage3-target-libatomic maybe-clean-stage3-target-libatomic
++maybe-all-stage3-target-libatomic:
++maybe-clean-stage3-target-libatomic:
++ at if target-libatomic-bootstrap
++maybe-all-stage3-target-libatomic: all-stage3-target-libatomic
++all-stage3: all-stage3-target-libatomic
++TARGET-stage3-target-libatomic = $(TARGET-target-libatomic)
++all-stage3-target-libatomic: configure-stage3-target-libatomic
++	@[ $(current_stage) = stage3 ] || $(MAKE) stage3-start
++	@r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	TFLAGS="$(STAGE3_TFLAGS)"; \
++	$(NORMAL_TARGET_EXPORTS) \
++	  \
++	cd $(TARGET_SUBDIR)/libatomic && \
++	$(MAKE) $(BASE_FLAGS_TO_PASS) \
++		CFLAGS="$(CFLAGS_FOR_TARGET)" \
++		CXXFLAGS="$(CXXFLAGS_FOR_TARGET)" \
++		LIBCFLAGS="$(LIBCFLAGS_FOR_TARGET)" \
++		CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \
++		CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \
++		LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \
++		$(EXTRA_TARGET_FLAGS)   \
++		TFLAGS="$(STAGE3_TFLAGS)" \
++		$(TARGET-stage3-target-libatomic)
++
++maybe-clean-stage3-target-libatomic: clean-stage3-target-libatomic
++clean-stage3: clean-stage3-target-libatomic
++clean-stage3-target-libatomic:
++	@if [ $(current_stage) = stage3 ]; then \
++	  [ -f $(TARGET_SUBDIR)/libatomic/Makefile ] || exit 0; \
++	else \
++	  [ -f $(TARGET_SUBDIR)/stage3-libatomic/Makefile ] || exit 0; \
++	  $(MAKE) stage3-start; \
++	fi; \
++	cd $(TARGET_SUBDIR)/libatomic && \
++	$(MAKE) $(EXTRA_TARGET_FLAGS)   clean
++ at endif target-libatomic-bootstrap
++
++
++.PHONY: all-stage4-target-libatomic maybe-all-stage4-target-libatomic
++.PHONY: clean-stage4-target-libatomic maybe-clean-stage4-target-libatomic
++maybe-all-stage4-target-libatomic:
++maybe-clean-stage4-target-libatomic:
++ at if target-libatomic-bootstrap
++maybe-all-stage4-target-libatomic: all-stage4-target-libatomic
++all-stage4: all-stage4-target-libatomic
++TARGET-stage4-target-libatomic = $(TARGET-target-libatomic)
++all-stage4-target-libatomic: configure-stage4-target-libatomic
++	@[ $(current_stage) = stage4 ] || $(MAKE) stage4-start
++	@r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	TFLAGS="$(STAGE4_TFLAGS)"; \
++	$(NORMAL_TARGET_EXPORTS) \
++	  \
++	cd $(TARGET_SUBDIR)/libatomic && \
++	$(MAKE) $(BASE_FLAGS_TO_PASS) \
++		CFLAGS="$(CFLAGS_FOR_TARGET)" \
++		CXXFLAGS="$(CXXFLAGS_FOR_TARGET)" \
++		LIBCFLAGS="$(LIBCFLAGS_FOR_TARGET)" \
++		CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \
++		CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \
++		LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \
++		$(EXTRA_TARGET_FLAGS)   \
++		TFLAGS="$(STAGE4_TFLAGS)" \
++		$(TARGET-stage4-target-libatomic)
++
++maybe-clean-stage4-target-libatomic: clean-stage4-target-libatomic
++clean-stage4: clean-stage4-target-libatomic
++clean-stage4-target-libatomic:
++	@if [ $(current_stage) = stage4 ]; then \
++	  [ -f $(TARGET_SUBDIR)/libatomic/Makefile ] || exit 0; \
++	else \
++	  [ -f $(TARGET_SUBDIR)/stage4-libatomic/Makefile ] || exit 0; \
++	  $(MAKE) stage4-start; \
++	fi; \
++	cd $(TARGET_SUBDIR)/libatomic && \
++	$(MAKE) $(EXTRA_TARGET_FLAGS)   clean
++ at endif target-libatomic-bootstrap
++
++
++.PHONY: all-stageprofile-target-libatomic maybe-all-stageprofile-target-libatomic
++.PHONY: clean-stageprofile-target-libatomic maybe-clean-stageprofile-target-libatomic
++maybe-all-stageprofile-target-libatomic:
++maybe-clean-stageprofile-target-libatomic:
++ at if target-libatomic-bootstrap
++maybe-all-stageprofile-target-libatomic: all-stageprofile-target-libatomic
++all-stageprofile: all-stageprofile-target-libatomic
++TARGET-stageprofile-target-libatomic = $(TARGET-target-libatomic)
++all-stageprofile-target-libatomic: configure-stageprofile-target-libatomic
++	@[ $(current_stage) = stageprofile ] || $(MAKE) stageprofile-start
++	@r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	TFLAGS="$(STAGEprofile_TFLAGS)"; \
++	$(NORMAL_TARGET_EXPORTS) \
++	  \
++	cd $(TARGET_SUBDIR)/libatomic && \
++	$(MAKE) $(BASE_FLAGS_TO_PASS) \
++		CFLAGS="$(CFLAGS_FOR_TARGET)" \
++		CXXFLAGS="$(CXXFLAGS_FOR_TARGET)" \
++		LIBCFLAGS="$(LIBCFLAGS_FOR_TARGET)" \
++		CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \
++		CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \
++		LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \
++		$(EXTRA_TARGET_FLAGS)   \
++		TFLAGS="$(STAGEprofile_TFLAGS)" \
++		$(TARGET-stageprofile-target-libatomic)
++
++maybe-clean-stageprofile-target-libatomic: clean-stageprofile-target-libatomic
++clean-stageprofile: clean-stageprofile-target-libatomic
++clean-stageprofile-target-libatomic:
++	@if [ $(current_stage) = stageprofile ]; then \
++	  [ -f $(TARGET_SUBDIR)/libatomic/Makefile ] || exit 0; \
++	else \
++	  [ -f $(TARGET_SUBDIR)/stageprofile-libatomic/Makefile ] || exit 0; \
++	  $(MAKE) stageprofile-start; \
++	fi; \
++	cd $(TARGET_SUBDIR)/libatomic && \
++	$(MAKE) $(EXTRA_TARGET_FLAGS)   clean
++ at endif target-libatomic-bootstrap
++
++
++.PHONY: all-stagefeedback-target-libatomic maybe-all-stagefeedback-target-libatomic
++.PHONY: clean-stagefeedback-target-libatomic maybe-clean-stagefeedback-target-libatomic
++maybe-all-stagefeedback-target-libatomic:
++maybe-clean-stagefeedback-target-libatomic:
++ at if target-libatomic-bootstrap
++maybe-all-stagefeedback-target-libatomic: all-stagefeedback-target-libatomic
++all-stagefeedback: all-stagefeedback-target-libatomic
++TARGET-stagefeedback-target-libatomic = $(TARGET-target-libatomic)
++all-stagefeedback-target-libatomic: configure-stagefeedback-target-libatomic
++	@[ $(current_stage) = stagefeedback ] || $(MAKE) stagefeedback-start
++	@r=`${PWD_COMMAND}`; export r; \
++	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
++	TFLAGS="$(STAGEfeedback_TFLAGS)"; \
++	$(NORMAL_TARGET_EXPORTS) \
++	  \
++	cd $(TARGET_SUBDIR)/libatomic && \
++	$(MAKE) $(BASE_FLAGS_TO_PASS) \
++		CFLAGS="$(CFLAGS_FOR_TARGET)" \
++		CXXFLAGS="$(CXXFLAGS_FOR_TARGET)" \
++		LIBCFLAGS="$(LIBCFLAGS_FOR_TARGET)" \
++		CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \
++		CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \
++		LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \
++		$(EXTRA_TARGET_FLAGS)   \
++		TFLAGS="$(STAGEfeedback_TFLAGS)" \
++		$(TARGET-stagefeedback-target-libatomic)
++
++maybe-clean-stagefeedback-target-libatomic: clean-stagefeedback-target-libatomic
++clean-stagefeedback: clean-stagefeedback-target-libatomic
++clean-stagefeedback-target-libatomic:
++	@if [ $(current_stage) = stagefeedback ]; then \
++	  [ -f $(TARGET_SUBDIR)/libatomic/Makefile ] || exit 0; \
++	else \
++	  [ -f $(TARGET_SUBDIR)/stagefeedback-libatomic/Makefile ] || exit 0; \
++	  $(MAKE) stagefeedback-start; \
++	fi; \
++	cd $(TARGET_SUBDIR)/libatomic && \
++	$(MAKE) $(EXTRA_TARGET_FLAGS)   clean
++ at endif target-libatomic-bootstrap
++
++
++
++
++
++
+ .PHONY: check-target-libatomic maybe-check-target-libatomic
+ maybe-check-target-libatomic:
+ @if target-libatomic
+@@ -49508,7 +50030,12 @@
+ configure-stageprofile-target-libgomp: maybe-all-stageprofile-gcc
+ configure-stagefeedback-target-libgomp: maybe-all-stagefeedback-gcc
+ configure-target-libitm: stage_last
+-configure-target-libatomic: stage_last
++configure-stage1-target-libatomic: maybe-all-stage1-gcc
++configure-stage2-target-libatomic: maybe-all-stage2-gcc
++configure-stage3-target-libatomic: maybe-all-stage3-gcc
++configure-stage4-target-libatomic: maybe-all-stage4-gcc
++configure-stageprofile-target-libatomic: maybe-all-stageprofile-gcc
++configure-stagefeedback-target-libatomic: maybe-all-stagefeedback-gcc
+ @endif gcc-bootstrap
+ 
+ @if gcc-no-bootstrap
+@@ -50328,6 +50855,14 @@
+ all-target-libjava: maybe-all-target-libffi
+ configure-target-libobjc: maybe-configure-target-boehm-gc
+ all-target-libobjc: maybe-all-target-boehm-gc
++configure-target-libstdc++-v3: maybe-configure-target-libatomic
++
++configure-stage1-target-libstdc++-v3: maybe-configure-stage1-target-libatomic
++configure-stage2-target-libstdc++-v3: maybe-configure-stage2-target-libatomic
++configure-stage3-target-libstdc++-v3: maybe-configure-stage3-target-libatomic
++configure-stage4-target-libstdc++-v3: maybe-configure-stage4-target-libatomic
++configure-stageprofile-target-libstdc++-v3: maybe-configure-stageprofile-target-libatomic
++configure-stagefeedback-target-libstdc++-v3: maybe-configure-stagefeedback-target-libatomic
+ configure-target-libstdc++-v3: maybe-configure-target-libgomp
+ 
+ configure-stage1-target-libstdc++-v3: maybe-configure-stage1-target-libgomp
+@@ -50377,6 +50912,9 @@
+ install-target-libitm: maybe-install-target-libgcc
+ install-target-libobjc: maybe-install-target-libgcc
+ install-target-libstdc++-v3: maybe-install-target-libgcc
++install-target-libstdc++-v3: maybe-install-target-libatomic
++install-target-libcc1: maybe-install-target-libstdc++-v3
++install-target-libcc1: maybe-install-target-libatomic
+ all-target-libgloss: maybe-all-target-newlib
+ all-target-winsup: maybe-all-target-libtermcap
+ configure-target-newlib: maybe-all-binutils
+@@ -50420,6 +50958,12 @@
+ configure-stage4-target-libgomp: maybe-all-stage4-target-libgcc
+ configure-stageprofile-target-libgomp: maybe-all-stageprofile-target-libgcc
+ configure-stagefeedback-target-libgomp: maybe-all-stagefeedback-target-libgcc
++configure-stage1-target-libatomic: maybe-all-stage1-target-libgcc
++configure-stage2-target-libatomic: maybe-all-stage2-target-libgcc
++configure-stage3-target-libatomic: maybe-all-stage3-target-libgcc
++configure-stage4-target-libatomic: maybe-all-stage4-target-libgcc
++configure-stageprofile-target-libatomic: maybe-all-stageprofile-target-libgcc
++configure-stagefeedback-target-libatomic: maybe-all-stagefeedback-target-libgcc
+ @endif gcc-bootstrap
+ 
+ @if gcc-no-bootstrap
diff --git a/debian/patches/pr66368.diff b/debian/patches/pr66368.diff
new file mode 100644
index 0000000..ec15a8c
--- /dev/null
+++ b/debian/patches/pr66368.diff
@@ -0,0 +1,26 @@
+# DP: PR go/66368, build libgo with -fno-stack-protector
+
+Index: b/src/libgo/Makefile.am
+===================================================================
+--- a/src/libgo/Makefile.am
++++ b/src/libgo/Makefile.am
+@@ -42,6 +42,7 @@ AM_CPPFLAGS = -I $(srcdir)/runtime $(LIB
+ ACLOCAL_AMFLAGS = -I ./config -I ../config
+ 
+ AM_CFLAGS = -fexceptions -fnon-call-exceptions -fplan9-extensions \
++	-fno-stack-protector \
+ 	$(SPLIT_STACK) $(WARN_CFLAGS) \
+ 	$(STRINGOPS_FLAG) $(OSCFLAGS) \
+ 	-I $(srcdir)/../libgcc -I $(srcdir)/../libbacktrace \
+Index: b/src/libgo/Makefile.in
+===================================================================
+--- a/src/libgo/Makefile.in
++++ b/src/libgo/Makefile.in
+@@ -506,6 +506,7 @@ WARN_CFLAGS = $(WARN_FLAGS) $(WERROR)
+ AM_CPPFLAGS = -I $(srcdir)/runtime $(LIBFFIINCS) $(PTHREAD_CFLAGS)
+ ACLOCAL_AMFLAGS = -I ./config -I ../config
+ AM_CFLAGS = -fexceptions -fnon-call-exceptions -fplan9-extensions \
++	-fno-stack-protector \
+ 	$(SPLIT_STACK) $(WARN_CFLAGS) \
+ 	$(STRINGOPS_FLAG) $(OSCFLAGS) \
+ 	-I $(srcdir)/../libgcc -I $(srcdir)/../libbacktrace \
diff --git a/debian/patches/pr67508.diff b/debian/patches/pr67508.diff
new file mode 100644
index 0000000..e57fc0a
--- /dev/null
+++ b/debian/patches/pr67508.diff
@@ -0,0 +1,107 @@
+# DP: libgo: Fix PR go/67508, rewrite lfstack packing/unpacking
+# DP: to look more like that in Go
+
+From 95eb3733500feffc2eeeec5bcfac7e34583514e2 Mon Sep 17 00:00:00 2001
+From: Michael Hudson-Doyle <michael.hudson at canonical.com>
+Date: Fri, 31 Jul 2015 11:45:45 +1200
+Subject: [PATCH] runtime: rewrite lfstack packing/unpacking to look more like that in Go
+
+Change-Id: I4ca61240c3f69c6dce1fde8d859f8507dfab80fc
+---
+
+diff --git a/libgo/runtime/lfstack.goc b/libgo/runtime/lfstack.goc
+index 060a0cc..9eb80d9 100644
+--- a/src/libgo/runtime/lfstack.goc
++++ b/src/libgo/runtime/lfstack.goc
+@@ -9,25 +9,41 @@
+ #include "arch.h"
+ 
+ #if __SIZEOF_POINTER__ == 8
+-// Amd64 uses 48-bit virtual addresses, 47-th bit is used as kernel/user flag.
+-// So we use 17msb of pointers as ABA counter.
+-# define PTR_BITS 47
+-#else
+-# define PTR_BITS 32
+-#endif
+-#define PTR_MASK ((1ull<<PTR_BITS)-1)
+-#define CNT_MASK (0ull-1)
+-
+-#if __SIZEOF_POINTER__ == 8 && (defined(__sparc__) || (defined(__sun__) && defined(__amd64__)))
+ // SPARC64 and Solaris on AMD64 uses all 64 bits of virtual addresses.
+ // Use low-order three bits as ABA counter.
+ // http://docs.oracle.com/cd/E19120-01/open.solaris/816-5138/6mba6ua5p/index.html
+-#undef PTR_BITS
+-#undef CNT_MASK
+-#undef PTR_MASK
+-#define PTR_BITS 0
+-#define CNT_MASK 7
+-#define PTR_MASK ((0ull-1)<<3)
++# if defined(__sparc__) || (defined(__sun__) && defined(__amd64__))
++static inline uint64 lfPack(LFNode *node, uintptr cnt) {
++	return ((uint64)(node)) | ((cnt)&7);
++}
++static inline LFNode* lfUnpack(uint64 val) {
++	return (LFNode*)(val&~7);
++}
++# else
++#  if defined(__aarch64__)
++// Depending on the kernel options, pointers on arm64 can have up to 48 significant
++// bits (see https://www.kernel.org/doc/Documentation/arm64/memory.txt).
++#   define PTR_BITS 48
++#  else
++// Amd64 uses 48-bit virtual addresses, 47-th bit is used as kernel/user flag.
++// So we use 17msb of pointers as ABA counter.
++#   define PTR_BITS 47
++#  endif
++# define CNT_BITS (64 - PTR_BITS + 3)
++static inline uint64 lfPack(LFNode *node, uintptr cnt) {
++	return ((uint64)(node)<<(64-PTR_BITS)) | (cnt&(((1<<CNT_BITS)-1)));
++}
++static inline LFNode* lfUnpack(uint64 val) {
++	return (LFNode*)((val >> CNT_BITS) << 3);
++}
++# endif
++#else
++static inline uint64 lfPack(LFNode *node, uintptr cnt) {
++	return ((uint64)(uintptr)(node)<<32) | cnt;
++}
++static inline LFNode* lfUnpack(uint64 val) {
++	return (LFNode*)(uintptr)(val >> 32);
++}
+ #endif
+ 
+ void
+@@ -35,16 +51,16 @@
+ {
+ 	uint64 old, new;
+ 
+-	if((uintptr)node != ((uintptr)node&PTR_MASK)) {
++	if(node != lfUnpack(lfPack(node, 0))) {
+ 		runtime_printf("p=%p\n", node);
+ 		runtime_throw("runtime_lfstackpush: invalid pointer");
+ 	}
+ 
+ 	node->pushcnt++;
+-	new = (uint64)(uintptr)node|(((uint64)node->pushcnt&CNT_MASK)<<PTR_BITS);
++	new = lfPack(node, node->pushcnt);
+ 	for(;;) {
+ 		old = runtime_atomicload64(head);
+-		node->next = (LFNode*)(uintptr)(old&PTR_MASK);
++		node->next = lfUnpack(old);
+ 		if(runtime_cas64(head, old, new))
+ 			break;
+ 	}
+@@ -60,11 +76,11 @@
+ 		old = runtime_atomicload64(head);
+ 		if(old == 0)
+ 			return nil;
+-		node = (LFNode*)(uintptr)(old&PTR_MASK);
++		node = lfUnpack(old);
+ 		node2 = runtime_atomicloadp(&node->next);
+ 		new = 0;
+ 		if(node2 != nil)
+-			new = (uint64)(uintptr)node2|(((uint64)node2->pushcnt&CNT_MASK)<<PTR_BITS);
++			new = lfPack(node2, node2->pushcnt);
+ 		if(runtime_cas64(head, old, new))
+ 			return node;
+ 	}
diff --git a/debian/patches/pr67590.diff b/debian/patches/pr67590.diff
new file mode 100644
index 0000000..c8fde66
--- /dev/null
+++ b/debian/patches/pr67590.diff
@@ -0,0 +1,38 @@
+# DP: Fix PR67590, setting objdump macro.
+
+Index: gcc-5-5.2.1/src/libcc1/configure.ac
+===================================================================
+--- gcc-5-5.2.1.orig/src/libcc1/configure.ac
++++ gcc-5-5.2.1/src/libcc1/configure.ac
+@@ -63,6 +63,31 @@ if test "$GXX" = yes; then
+ fi
+ AC_SUBST(libsuffix)
+ 
++# Figure out what objdump we will be using.
++AS_VAR_SET_IF(gcc_cv_objdump,, [
++if test -f $gcc_cv_binutils_srcdir/configure.in \
++     && test -f ../binutils/Makefile \
++     && test x$build = x$host; then
++	# Single tree build which includes binutils.
++	gcc_cv_objdump=../binutils/objdump$build_exeext
++elif test -x objdump$build_exeext; then
++	gcc_cv_objdump=./objdump$build_exeext
++elif ( set dummy $OBJDUMP_FOR_TARGET; test -x $[2] ); then
++        gcc_cv_objdump="$OBJDUMP_FOR_TARGET"
++else
++        AC_PATH_PROG(gcc_cv_objdump, $OBJDUMP_FOR_TARGET)
++fi])
++
++AC_MSG_CHECKING(what objdump to use)
++if test "$gcc_cv_objdump" = ../binutils/objdump$build_exeext; then
++	# Single tree build which includes binutils.
++	AC_MSG_RESULT(newly built objdump)
++elif test x$gcc_cv_objdump = x; then
++	AC_MSG_RESULT(not found)
++else
++	AC_MSG_RESULT($gcc_cv_objdump)
++fi
++
+ dnl Test for -lsocket and -lnsl.  Copied from libgo/configure.ac.
+ AC_CACHE_CHECK([for socket libraries], libcc1_cv_lib_sockets,
+   [libcc1_cv_lib_sockets=
diff --git a/debian/patches/pr67899.diff b/debian/patches/pr67899.diff
new file mode 100644
index 0000000..5317033
--- /dev/null
+++ b/debian/patches/pr67899.diff
@@ -0,0 +1,31 @@
+# DP: Proposed patch for PR sanitizer/67899
+
+--- a/src/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h
++++ b/src/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h
+@@ -564,13 +564,12 @@
+ #else
+     __sanitizer_sigset_t sa_mask;
+ #ifndef __mips__
+-#if defined(__sparc__)
+-    unsigned long sa_flags;
+-#else
++#if defined(__sparc__) && defined(__arch64__)
++    int __pad;
++#endif
+     int sa_flags;
+ #endif
+ #endif
+-#endif
+ #if SANITIZER_LINUX
+     void (*sa_restorer)();
+ #endif
+@@ -593,7 +592,8 @@
+       void (*handler)(int signo);
+       void (*sigaction)(int signo, void *info, void *ctx);
+     };
+-    unsigned long sa_flags;
++    int __pad;
++    int sa_flags;
+     void (*sa_restorer)(void);
+     __sanitizer_kernel_sigset_t sa_mask;
+   };
diff --git a/debian/patches/rename-info-files.diff b/debian/patches/rename-info-files.diff
new file mode 100644
index 0000000..9661366
--- /dev/null
+++ b/debian/patches/rename-info-files.diff
@@ -0,0 +1,842 @@
+# DP: Allow transformations on info file names. Reference the
+# DP: transformed info file names in the texinfo files.
+
+
+2004-02-17  Matthias Klose  <doko at debian.org>
+
+gcc/ChangeLog:
+	* Makefile.in: Allow transformations on info file names.
+	Define MAKEINFODEFS, macros to pass transformated info file
+	names to makeinfo.
+	* doc/cpp.texi: Use macros defined in MAKEINFODEFS for references.
+	* doc/cppinternals.texi: Likewise.
+	* doc/extend.texi: Likewise.
+	* doc/gcc.texi: Likewise.
+	* doc/gccint.texi: Likewise.
+	* doc/invoke.texi: Likewise.
+	* doc/libgcc.texi: Likewise.
+	* doc/makefile.texi: Likewise.
+	* doc/passes.texi: Likewise.
+	* doc/sourcebuild.texi: Likewise.
+	* doc/standards.texi: Likewise.
+	* doc/trouble.texi: Likewise.
+
+gcc/fortran/ChangeLog:
+	* Make-lang.in: Allow transformations on info file names.
+	Pass macros of transformated info file defined in MAKEINFODEFS
+	names to makeinfo.
+	* gfortran.texi: Use macros defined in MAKEINFODEFS for references.
+
+gcc/java/ChangeLog:
+	* Make-lang.in: Allow transformations on info file names.
+	Pass macros of transformated info file defined in MAKEINFODEFS
+
+Index: b/src/gcc/fortran/gfortran.texi
+===================================================================
+--- a/src/gcc/fortran/gfortran.texi
++++ b/src/gcc/fortran/gfortran.texi
+@@ -101,7 +101,7 @@ Texts being (a) (see below), and with th
+ @ifinfo
+ @dircategory Software development
+ @direntry
+-* gfortran: (gfortran).                  The GNU Fortran Compiler.
++* @value{fngfortran}: (@value{fngfortran}).                  The GNU Fortran Compiler.
+ @end direntry
+ This file documents the use and the internals of
+ the GNU Fortran compiler, (@command{gfortran}).
+Index: b/src/gcc/fortran/Make-lang.in
+===================================================================
+--- a/src/gcc/fortran/Make-lang.in
++++ b/src/gcc/fortran/Make-lang.in
+@@ -114,7 +114,8 @@ fortran.tags: force
+ 	cd $(srcdir)/fortran; etags -o TAGS.sub *.c *.h; \
+ 	etags --include TAGS.sub --include ../TAGS.sub
+ 
+-fortran.info: doc/gfortran.info doc/gfc-internals.info
++INFO_FORTRAN_NAME = $(shell echo gfortran|sed '$(program_transform_name)')
++fortran.info: doc/$(INFO_FORTRAN_NAME).info
+ fortran.dvi: doc/gfortran.dvi doc/gfc-internals.dvi
+ 
+ F95_HTMLFILES = $(build_htmldir)/gfortran
+@@ -181,10 +182,10 @@ GFORTRAN_TEXI = \
+   $(srcdir)/doc/include/gcc-common.texi \
+   gcc-vers.texi
+ 
+-doc/gfortran.info: $(GFORTRAN_TEXI)
++doc/$(INFO_FORTRAN_NAME).info: $(GFORTRAN_TEXI)
+ 	if [ x$(BUILD_INFO) = xinfo ]; then \
+ 	  rm -f doc/gfortran.info-*; \
+-	  $(MAKEINFO) -I $(srcdir)/doc/include -I $(srcdir)/fortran \
++	  $(MAKEINFO) $(MAKEINFODEFS) -I $(srcdir)/doc/include -I $(srcdir)/fortran \
+ 	    -o $@ $<; \
+ 	else true; fi
+ 
+@@ -249,7 +250,7 @@ fortran.install-common: install-finclude
+ 
+ fortran.install-plugin:
+ 
+-fortran.install-info: $(DESTDIR)$(infodir)/gfortran.info
++fortran.install-info: $(DESTDIR)$(infodir)/$(INFO_FORTRAN_NAME).info
+ 
+ fortran.install-man: $(DESTDIR)$(man1dir)/$(GFORTRAN_INSTALL_NAME)$(man1ext)
+ 
+@@ -267,7 +268,7 @@ fortran.uninstall:
+ 	rm -rf $(DESTDIR)$(bindir)/$(GFORTRAN_INSTALL_NAME)$(exeext); \
+ 	rm -rf $(DESTDIR)$(man1dir)/$(GFORTRAN_INSTALL_NAME)$(man1ext); \
+ 	rm -rf $(DESTDIR)$(bindir)/$(GFORTRAN_TARGET_INSTALL_NAME)$(exeext); \
+-	rm -rf $(DESTDIR)$(infodir)/gfortran.info*
++	rm -rf $(DESTDIR)$(infodir)/$(INFO_FORTRAN_NAME).info*
+ 
+ #

+ # Clean hooks:
+Index: b/src/gcc/Makefile.in
+===================================================================
+--- a/src/gcc/Makefile.in
++++ b/src/gcc/Makefile.in
+@@ -2880,8 +2880,32 @@ install-no-fixedincludes:
+ 
+ doc: $(BUILD_INFO) $(GENERATED_MANPAGES)
+ 
+-INFOFILES = doc/cpp.info doc/gcc.info doc/gccint.info \
+-            doc/gccinstall.info doc/cppinternals.info
++INFO_CPP_NAME = $(shell echo cpp|sed '$(program_transform_name)')
++INFO_GCC_NAME = $(shell echo gcc|sed '$(program_transform_name)')
++INFO_GXX_NAME = $(shell echo g++|sed '$(program_transform_name)')
++INFO_GCCINT_NAME = $(shell echo gccint|sed '$(program_transform_name)')
++INFO_GCCINSTALL_NAME = $(shell echo gccinstall|sed '$(program_transform_name)')
++INFO_CPPINT_NAME = $(shell echo cppinternals|sed '$(program_transform_name)')
++
++INFO_FORTRAN_NAME = $(shell echo gfortran|sed '$(program_transform_name)')
++INFO_GCJ_NAME = $(shell echo gcj|sed '$(program_transform_name)')
++INFO_GCCGO_NAME = $(shell echo gccgo|sed '$(program_transform_name)')
++
++INFOFILES = doc/$(INFO_CPP_NAME).info doc/$(INFO_GCC_NAME).info \
++            doc/$(INFO_GCCINT_NAME).info \
++            doc/$(INFO_GCCINSTALL_NAME).info doc/$(INFO_CPPINT_NAME).info
++
++MAKEINFODEFS = -D 'fncpp $(INFO_CPP_NAME)' \
++               -D 'fngcc $(INFO_GCC_NAME)' \
++               -D 'fngcov $(INFO_GCC_NAME)' \
++               -D 'fngcovtool $(INFO_GCC_NAME)' \
++               -D 'fngxx $(INFO_GXX_NAME)' \
++               -D 'fngccint $(INFO_GCCINT_NAME)' \
++               -D 'fngccinstall $(INFO_GCCINSTALL_NAME)' \
++               -D 'fncppint $(INFO_CPPINT_NAME)' \
++               -D 'fngfortran $(INFO_FORTRAN_NAME)' \
++               -D 'fngcj $(INFO_GCJ_NAME)' \
++               -D 'fngccgo $(INFO_GCCGO_NAME)'
+ 
+ info: $(INFOFILES) lang.info @GENINSRC@ srcinfo lang.srcinfo
+ 
+@@ -2928,7 +2952,19 @@ gcc-vers.texi: $(BASEVER) $(DEVPHASE)
+ 	if [ -n "$(PKGVERSION)" ]; then \
+ 	  echo "@set VERSION_PACKAGE $(PKGVERSION)" >> $@T; \
+ 	fi
+-	echo "@set BUGURL $(BUGURL_TEXI)" >> $@T; \
++	echo "@set BUGURL $(BUGURL_TEXI)" >> $@T
++	( \
++	  echo '@set fncpp $(INFO_CPP_NAME)'; \
++	  echo '@set fngcc $(INFO_GCC_NAME)'; \
++	  echo '@set fngcov $(INFO_GCC_NAME)'; \
++	  echo '@set fngxx $(INFO_GXX_NAME)'; \
++	  echo '@set fngccint $(INFO_GCCINT_NAME)'; \
++	  echo '@set fngccinstall $(INFO_GCCINSTALL_NAME)'; \
++	  echo '@set fncppint $(INFO_CPPINT_NAME)'; \
++	  echo '@set fngfortran $(INFO_FORTRAN_NAME)'; \
++	  echo '@set fngcj $(INFO_GCJ_NAME)'; \
++	  echo '@set fngccgo $(INFO_GCCGO_NAME)'; \
++	) >> $@T
+ 	mv -f $@T $@
+ 
+ 
+@@ -2936,21 +2972,41 @@ gcc-vers.texi: $(BASEVER) $(DEVPHASE)
+ # patterns.  To use them, put each of the specific targets with its
+ # specific dependencies but no build commands.
+ 
+-doc/cpp.info: $(TEXI_CPP_FILES)
+-doc/gcc.info: $(TEXI_GCC_FILES)
+-doc/gccint.info: $(TEXI_GCCINT_FILES)
+-doc/cppinternals.info: $(TEXI_CPPINT_FILES)
+-
++# Generic entry to handle info files, which are not renamed (currently Ada)
+ doc/%.info: %.texi
+ 	if [ x$(BUILD_INFO) = xinfo ]; then \
+ 		$(MAKEINFO) $(MAKEINFOFLAGS) -I . -I $(gcc_docdir) \
+ 			-I $(gcc_docdir)/include -o $@ $<; \
+ 	fi
+ 
++doc/$(INFO_CPP_NAME).info: $(TEXI_CPP_FILES)
++	if [ x$(BUILD_INFO) = xinfo ]; then \
++		$(MAKEINFO) $(MAKEINFOFLAGS) $(MAKEINFODEFS) -I $(gcc_docdir) \
++			-I $(gcc_docdir)/include -o $@ $<; \
++	fi
++
++doc/$(INFO_GCC_NAME).info: $(TEXI_GCC_FILES)
++	if [ x$(BUILD_INFO) = xinfo ]; then \
++		$(MAKEINFO) $(MAKEINFOFLAGS) $(MAKEINFODEFS) -I $(gcc_docdir) \
++			-I $(gcc_docdir)/include -o $@ $<; \
++	fi
++
++doc/$(INFO_GCCINT_NAME).info: $(TEXI_GCCINT_FILES)
++	if [ x$(BUILD_INFO) = xinfo ]; then \
++		$(MAKEINFO) $(MAKEINFOFLAGS) $(MAKEINFODEFS) -I $(gcc_docdir) \
++			-I $(gcc_docdir)/include -o $@ $<; \
++	fi
++
++doc/$(INFO_CPPINT_NAME).info: $(TEXI_CPPINT_FILES)
++	if [ x$(BUILD_INFO) = xinfo ]; then \
++		$(MAKEINFO) $(MAKEINFOFLAGS) $(MAKEINFODEFS) -I $(gcc_docdir) \
++			-I $(gcc_docdir)/include -o $@ $<; \
++	fi
++
+ # Duplicate entry to handle renaming of gccinstall.info
+-doc/gccinstall.info: $(TEXI_GCCINSTALL_FILES)
++doc/$(INFO_GCCINSTALL_NAME).info: $(TEXI_GCCINSTALL_FILES)
+ 	if [ x$(BUILD_INFO) = xinfo ]; then \
+-		$(MAKEINFO) $(MAKEINFOFLAGS) -I $(gcc_docdir) \
++		$(MAKEINFO) $(MAKEINFOFLAGS) $(MAKEINFODEFS) -I $(gcc_docdir) \
+ 			-I $(gcc_docdir)/include -o $@ $<; \
+ 	fi
+ 
+@@ -3346,11 +3402,11 @@ install-driver: installdirs xgcc$(exeext
+ # $(INSTALL_DATA) might be a relative pathname, so we can't cd into srcdir
+ # to do the install.
+ install-info:: doc installdirs \
+-	$(DESTDIR)$(infodir)/cpp.info \
+-	$(DESTDIR)$(infodir)/gcc.info \
+-	$(DESTDIR)$(infodir)/cppinternals.info \
+-	$(DESTDIR)$(infodir)/gccinstall.info \
+-	$(DESTDIR)$(infodir)/gccint.info \
++	$(DESTDIR)$(infodir)/$(INFO_CPP_NAME).info \
++	$(DESTDIR)$(infodir)/$(INFO_GCC_NAME).info \
++	$(DESTDIR)$(infodir)/$(INFO_CPPINT_NAME).info \
++	$(DESTDIR)$(infodir)/$(INFO_GCCINSTALL_NAME).info \
++	$(DESTDIR)$(infodir)/$(INFO_GCCINT_NAME).info \
+ 	lang.install-info
+ 
+ $(DESTDIR)$(infodir)/%.info: doc/%.info installdirs
+@@ -3404,6 +3460,7 @@ install-man: lang.install-man \
+ 	$(DESTDIR)$(man1dir)/$(GCC_INSTALL_NAME)$(man1ext) \
+ 	$(DESTDIR)$(man1dir)/$(CPP_INSTALL_NAME)$(man1ext) \
+ 	$(DESTDIR)$(man1dir)/$(GCOV_INSTALL_NAME)$(man1ext) \
++	$(DESTDIR)$(man1dir)/$(GCOV_TOOL_INSTALL_NAME)$(man1ext) \
+ 	$(DESTDIR)$(man7dir)/fsf-funding$(man7ext) \
+ 	$(DESTDIR)$(man7dir)/gfdl$(man7ext) \
+ 	$(DESTDIR)$(man7dir)/gpl$(man7ext)
+@@ -3564,8 +3621,11 @@ uninstall: lang.uninstall
+ 	-rm -rf $(DESTDIR)$(bindir)/$(GCOV_INSTALL_NAME)$(exeext)
+ 	-rm -rf $(DESTDIR)$(man1dir)/$(GCC_INSTALL_NAME)$(man1ext)
+ 	-rm -rf $(DESTDIR)$(man1dir)/cpp$(man1ext)
+-	-rm -f $(DESTDIR)$(infodir)/cpp.info* $(DESTDIR)$(infodir)/gcc.info*
+-	-rm -f $(DESTDIR)$(infodir)/cppinternals.info* $(DESTDIR)$(infodir)/gccint.info*
++	-rm -f $(DESTDIR)$(infodir)/$(INFO_CPP_NAME).info*
++	-rm -f $(DESTDIR)$(infodir)/$(INFO_GCC_NAME).info*
++	-rm -f $(DESTDIR)$(infodir)/$(INFO_CPPINT_NAME).info*
++	-rm -f $(DESTDIR)$(infodir)/$(INFO_GCCINT_NAME).info*
++	-rm -f $(DESTDIR)$(infodir)/$(INFO_GCCINSTALL_NAME).info*
+ 	for i in ar nm ranlib ; do \
+ 	  install_name=`echo gcc-$$i|sed '$(program_transform_name)'`$(exeext) ;\
+ 	  target_install_name=$(target_noncanonical)-`echo gcc-$$i|sed '$(program_transform_name)'`$(exeext) ; \
+Index: b/src/gcc/java/gcj.texi
+===================================================================
+--- a/src/gcc/java/gcj.texi
++++ b/src/gcc/java/gcj.texi
+@@ -55,25 +55,25 @@ man page gfdl(7).
+ @format
+ @dircategory Software development
+ @direntry
+-* Gcj: (gcj).               Ahead-of-time compiler for the Java language
++* @value{fngcj}: (@value{fngcj}).               Ahead-of-time compiler for the Java language
+ @end direntry
+ 
+ @dircategory Individual utilities
+ @direntry
+-* jcf-dump: (gcj)Invoking jcf-dump.
++* jcf-dump: (@value{fngcj}) Invoking jcf-dump.
+                             Print information about Java class files
+-* gij: (gcj)Invoking gij.   GNU interpreter for Java bytecode
+-* gcj-dbtool: (gcj)Invoking gcj-dbtool.
++* gij: (@value{fngcj}) Invoking gij.   GNU interpreter for Java bytecode
++* gcj-dbtool: (@value{fngcj}) Invoking gcj-dbtool.
+                             Tool for manipulating class file databases.
+-* jv-convert: (gcj)Invoking jv-convert.
++* jv-convert: (@value{fngcj}) Invoking jv-convert.
+                             Convert file from one encoding to another
+-* grmic: (gcj)Invoking grmic.
++* grmic: (@value{fngcj}) Invoking grmic.
+                             Generate stubs for Remote Method Invocation.
+-* gc-analyze: (gcj)Invoking gc-analyze.
++* gc-analyze: (@value{fngcj}) Invoking gc-analyze.
+                             Analyze Garbage Collector (GC) memory dumps.
+-* aot-compile: (gcj)Invoking aot-compile.
++* aot-compile: (@value{fngcj})Invoking aot-compile.
+                             Compile bytecode to native and generate databases.
+-* rebuild-gcj-db: (gcj)Invoking rebuild-gcj-db.
++* rebuild-gcj-db: (@value{fngcj})Invoking rebuild-gcj-db.
+                             Merge the per-solib databases made by aot-compile
+                             into one system-wide database.
+ @end direntry
+@@ -159,7 +159,7 @@ and the Info entries for @file{gcj} and
+ 
+ As @command{gcj} is just another front end to @command{gcc}, it supports many
+ of the same options as gcc.  @xref{Option Summary, , Option Summary,
+-gcc, Using the GNU Compiler Collection (GCC)}.  This manual only documents the
++ at value{fngcc}, Using the GNU Compiler Collection (GCC)}.  This manual only documents the
+ options specific to @command{gcj}.
+ 
+ @c man end
+Index: b/src/gcc/java/Make-lang.in
+===================================================================
+--- a/src/gcc/java/Make-lang.in
++++ b/src/gcc/java/Make-lang.in
+@@ -122,9 +122,10 @@ java.tags: force
+ 	etags --include TAGS.sub --include ../TAGS.sub
+ 
+ 
+-java.info: doc/gcj.info
++INFO_GCJ_NAME = $(shell echo gcj|sed '$(program_transform_name)')
++java.info: doc/$(INFO_GCJ_NAME).info
+ 
+-java.srcinfo: doc/gcj.info
++java.srcinfo: doc/$(INFO_GCJ_NAME).info
+ 	-cp -p $^ $(srcdir)/doc
+ 
+ java.dvi: doc/gcj.dvi
+@@ -190,7 +191,7 @@ java.uninstall:
+ 	-rm -rf $(DESTDIR)$(man1dir)/aot-compile$(man1ext)
+ 	-rm -rf $(DESTDIR)$(man1dir)/rebuild-gcj-db$(man1ext)
+ 
+-java.install-info: $(DESTDIR)$(infodir)/gcj.info
++java.install-info: $(DESTDIR)$(infodir)/$(INFO_GCJ_NAME).info
+ 
+ java.install-pdf: $(JAVA_PDFFILES)
+ 	@$(NORMAL_INSTALL)
+@@ -273,10 +274,10 @@ TEXI_JAVA_FILES = java/gcj.texi $(gcc_do
+ 	 gcc-vers.texi
+ 
+ # Documentation
+-doc/gcj.info: $(TEXI_JAVA_FILES)
++doc/$(INFO_GCJ_NAME).info: $(TEXI_JAVA_FILES)
+ 	if test "x$(BUILD_INFO)" = xinfo; then \
+-	  rm -f doc/gcj.info*; \
+-	  $(MAKEINFO) $(MAKEINFOFLAGS) -I $(gcc_docdir) \
++	  rm -f doc/$(INFO_GCJ_NAME).info*; \
++	  $(MAKEINFO) $(MAKEINFOFLAGS) $(MAKEINFODEFS) -I $(gcc_docdir) \
+ 		-I $(gcc_docdir)/include -o $@ $<; \
+ 	else true; fi
+ 
+Index: b/src/gcc/ada/gnat-style.texi
+===================================================================
+--- a/src/gcc/ada/gnat-style.texi
++++ b/src/gcc/ada/gnat-style.texi
+@@ -31,7 +31,7 @@ Texts.  A copy of the license is include
+ 
+ @dircategory Software development
+ @direntry
+-* gnat-style: (gnat-style).      GNAT Coding Style
++* gnat-style: (gnat-style-5).      GNAT Coding Style
+ @end direntry
+ 
+ @macro syntax{element}
+Index: b/src/gcc/ada/gnat_rm.texi
+===================================================================
+--- a/src/gcc/ada/gnat_rm.texi
++++ b/src/gcc/ada/gnat_rm.texi
+@@ -12,7 +12,7 @@
+ @finalout
+ @dircategory GNU Ada Tools 
+ @direntry
+-* gnat_rm: (gnat_rm.info). gnat_rm
++* GNAT Reference Manual: (gnat_rm-5).  Reference Manual for GNU Ada tools.
+ @end direntry
+ 
+ @definfoenclose strong,`,'
+Index: b/src/gcc/doc/invoke.texi
+===================================================================
+--- a/src/gcc/doc/invoke.texi
++++ b/src/gcc/doc/invoke.texi
+@@ -11188,7 +11188,7 @@ One of the standard libraries bypassed b
+ @option{-nodefaultlibs} is @file{libgcc.a}, a library of internal subroutines
+ which GCC uses to overcome shortcomings of particular machines, or special
+ needs for some languages.
+-(@xref{Interface,,Interfacing to GCC Output,gccint,GNU Compiler
++(@xref{Interface,,Interfacing to GCC Output, at value{fngccint},GNU Compiler
+ Collection (GCC) Internals},
+ for more discussion of @file{libgcc.a}.)
+ In most cases, you need @file{libgcc.a} even when you want to avoid
+@@ -11197,7 +11197,7 @@ or @option{-nodefaultlibs} you should us
+ This ensures that you have no unresolved references to internal GCC
+ library subroutines.
+ (An example of such an internal subroutine is @code{__main}, used to ensure C++
+-constructors are called; @pxref{Collect2,, at code{collect2}, gccint,
++constructors are called; @pxref{Collect2,, at code{collect2}, @value{fngccint},
+ GNU Compiler Collection (GCC) Internals}.)
+ 
+ @item -pie
+@@ -23994,7 +23994,7 @@ Note that you can also specify places to
+ @option{-B}, @option{-I} and @option{-L} (@pxref{Directory Options}).  These
+ take precedence over places specified using environment variables, which
+ in turn take precedence over those specified by the configuration of GCC at .
+- at xref{Driver,, Controlling the Compilation Driver @file{gcc}, gccint,
++ at xref{Driver,, Controlling the Compilation Driver @file{gcc}, @value{fngccint},
+ GNU Compiler Collection (GCC) Internals}.
+ 
+ @table @env
+@@ -24154,7 +24154,7 @@ the headers it contains change.
+ 
+ A precompiled header file is searched for when @code{#include} is
+ seen in the compilation.  As it searches for the included file
+-(@pxref{Search Path,,Search Path,cpp,The C Preprocessor}) the
++(@pxref{Search Path,,Search Path, at value{fncpp},The C Preprocessor}) the
+ compiler looks for a precompiled header in each directory just before it
+ looks for the include file in that directory.  The name searched for is
+ the name specified in the @code{#include} with @samp{.gch} appended.  If
+Index: b/src/gcc/doc/extend.texi
+===================================================================
+--- a/src/gcc/doc/extend.texi
++++ b/src/gcc/doc/extend.texi
+@@ -18396,7 +18396,7 @@ want to write code that checks whether t
+ test for the GNU compiler the same way as for C programs: check for a
+ predefined macro @code{__GNUC__}.  You can also use @code{__GNUG__} to
+ test specifically for GNU C++ (@pxref{Common Predefined Macros,,
+-Predefined Macros,cpp,The GNU C Preprocessor}).
++Predefined Macros, at value{fncpp},The GNU C Preprocessor}).
+ 
+ @menu
+ * C++ Volatiles::       What constitutes an access to a volatile object.
+Index: b/src/gcc/doc/standards.texi
+===================================================================
+--- a/src/gcc/doc/standards.texi
++++ b/src/gcc/doc/standards.texi
+@@ -286,8 +286,8 @@ described at @uref{http://golang.org/doc
+ GNAT Reference Manual}, for information on standard
+ conformance and compatibility of the Ada compiler.
+ 
+- at xref{Standards,,Standards, gfortran, The GNU Fortran Compiler}, for details
++ at xref{Standards,,Standards, @value{fngfortran}, The GNU Fortran Compiler}, for details
+ of standards supported by GNU Fortran.
+ 
+- at xref{Compatibility,,Compatibility with the Java Platform, gcj, GNU gcj},
++ at xref{Compatibility,,Compatibility with the Java Platform, @value{fngcj}, GNU gcj},
+ for details of compatibility between @command{gcj} and the Java Platform.
+Index: b/src/gcc/doc/libgcc.texi
+===================================================================
+--- a/src/gcc/doc/libgcc.texi
++++ b/src/gcc/doc/libgcc.texi
+@@ -24,7 +24,7 @@ that needs them.
+ GCC will also generate calls to C library routines, such as
+ @code{memcpy} and @code{memset}, in some cases.  The set of routines
+ that GCC may possibly use is documented in @ref{Other
+-Builtins,,,gcc, Using the GNU Compiler Collection (GCC)}.
++Builtins,,, at value{fngcc}, Using the GNU Compiler Collection (GCC)}.
+ 
+ These routines take arguments and return values of a specific machine
+ mode, not a specific C type.  @xref{Machine Modes}, for an explanation
+Index: b/src/gcc/doc/gccint.texi
+===================================================================
+--- a/src/gcc/doc/gccint.texi
++++ b/src/gcc/doc/gccint.texi
+@@ -49,7 +49,7 @@ Texts being (a) (see below), and with th
+ @ifnottex
+ @dircategory Software development
+ @direntry
+-* gccint: (gccint).            Internals of the GNU Compiler Collection.
++* @value{fngccint}: (@value{fngccint}).            Internals of the GNU Compiler Collection.
+ @end direntry
+ This file documents the internals of the GNU compilers.
+ @sp 1
+@@ -81,7 +81,7 @@ write front ends for new languages.  It
+ @value{VERSION_PACKAGE}
+ @end ifset
+ version @value{version-GCC}.  The use of the GNU compilers is documented in a
+-separate manual.  @xref{Top,, Introduction, gcc, Using the GNU
++separate manual.  @xref{Top,, Introduction, @value{fngcc}, Using the GNU
+ Compiler Collection (GCC)}.
+ 
+ This manual is mainly a reference manual rather than a tutorial.  It
+Index: b/src/gcc/doc/cpp.texi
+===================================================================
+--- a/src/gcc/doc/cpp.texi
++++ b/src/gcc/doc/cpp.texi
+@@ -50,7 +50,7 @@ This manual contains no Invariant Sectio
+ @ifinfo
+ @dircategory Software development
+ @direntry
+-* Cpp: (cpp).                  The GNU C preprocessor.
++* @value{fncpp}: (@value{fncpp}).                  The GNU C preprocessor.
+ @end direntry
+ @end ifinfo
+ 
+Index: b/src/gcc/doc/gcc.texi
+===================================================================
+--- a/src/gcc/doc/gcc.texi
++++ b/src/gcc/doc/gcc.texi
+@@ -63,10 +63,10 @@ Texts being (a) (see below), and with th
+ @ifnottex
+ @dircategory Software development
+ @direntry
+-* gcc: (gcc).                  The GNU Compiler Collection.
+-* g++: (gcc).                  The GNU C++ compiler.
+-* gcov: (gcc) Gcov.            @command{gcov}---a test coverage program.
+-* gcov-tool: (gcc) Gcov-tool.  @command{gcov-tool}---an offline gcda profile processing program.
++* @value{fngcc}: (@value{fngcc}).                  The GNU Compiler Collection.
++* @value{fngxx}: (@value{fngcc}).                  The GNU C++ compiler.
++* @value{fngcov}: (@value{fngcc}) Gcov.            @command{gcov}---a test coverage program.
++* @value{fngcovtool}: (@value{fngcc}) Gcov.            @command{gcov-tool}---an offline gcda profile processing program.
+ @end direntry
+ This file documents the use of the GNU compilers.
+ @sp 1
+@@ -126,7 +126,7 @@ version @value{version-GCC}.
+ The internals of the GNU compilers, including how to port them to new
+ targets and some information about how to write front ends for new
+ languages, are documented in a separate manual.  @xref{Top,,
+-Introduction, gccint, GNU Compiler Collection (GCC) Internals}.
++Introduction, @value{fngccint}, GNU Compiler Collection (GCC) Internals}.
+ 
+ @menu
+ * G++ and GCC::     You can compile C or C++ programs.
+Index: b/src/gcc/doc/makefile.texi
+===================================================================
+--- a/src/gcc/doc/makefile.texi
++++ b/src/gcc/doc/makefile.texi
+@@ -139,7 +139,7 @@ regardless of how it itself was compiled
+ Builds a compiler with profiling feedback information.  In this case,
+ the second and third stages are named @samp{profile} and @samp{feedback},
+ respectively.  For more information, see
+- at ref{Building,,Building with profile feedback,gccinstall,Installing GCC}.
++ at ref{Building,,Building with profile feedback, at value{fngccinstall},Installing GCC}.
+ 
+ @item restrap
+ Restart a bootstrap, so that everything that was not built with
+Index: b/src/gcc/doc/install.texi
+===================================================================
+--- a/src/gcc/doc/install.texi
++++ b/src/gcc/doc/install.texi
+@@ -94,7 +94,7 @@ Free Documentation License}''.
+ @end ifinfo
+ @dircategory Software development
+ @direntry
+-* gccinstall: (gccinstall).    Installing the GNU Compiler Collection.
++* @value{fngccinstall}: (@value{fngccinstall}).    Installing the GNU Compiler Collection.
+ @end direntry
+ 
+ @c Part 3 Titlepage and Copyright
+Index: b/src/gcc/doc/cppinternals.texi
+===================================================================
+--- a/src/gcc/doc/cppinternals.texi
++++ b/src/gcc/doc/cppinternals.texi
+@@ -7,7 +7,7 @@
+ @ifinfo
+ @dircategory Software development
+ @direntry
+-* Cpplib: (cppinternals).      Cpplib internals.
++* @value{fncppint}: (@value{fncppint}).      Cpplib internals.
+ @end direntry
+ @end ifinfo
+ 
+Index: b/src/libgomp/libgomp.texi
+===================================================================
+--- a/src/libgomp/libgomp.texi
++++ b/src/libgomp/libgomp.texi
+@@ -31,7 +31,7 @@ texts being (a) (see below), and with th
+ @ifinfo
+ @dircategory GNU Libraries
+ @direntry
+-* libgomp: (libgomp).          GNU Offloading and Multi Processing Runtime Library.
++* @value{fnlibgomp}: (@value{fnlibgomp}).          GNU Offloading and Multi Processing Runtime Library.
+ @end direntry
+ 
+ This manual documents libgomp, the GNU Offloading and Multi Processing
+Index: b/src/libgomp/Makefile.in
+===================================================================
+--- a/src/libgomp/Makefile.in
++++ b/src/libgomp/Makefile.in
+@@ -445,7 +445,8 @@ info_TEXINFOS = libgomp.texi
+ 
+ # AM_CONDITIONAL on configure check ACX_CHECK_PROG_VER([MAKEINFO])
+ @BUILD_INFO_TRUE at STAMP_BUILD_INFO = stamp-build-info
+-CLEANFILES = $(STAMP_GENINSRC) $(STAMP_BUILD_INFO) libgomp.info
++INFO_LIBGOMP_NAME = $(shell echo libgomp|sed '$(program_transform_name)')
++CLEANFILES = $(STAMP_GENINSRC) $(STAMP_BUILD_INFO) $(INFO_LIBGOMP_NAME).info
+ MAINTAINERCLEANFILES = $(srcdir)/libgomp.info
+ all: config.h
+ 	$(MAKE) $(AM_MAKEFLAGS) all-recursive
+@@ -1235,15 +1236,16 @@ env.lo: libgomp_f.h
+ env.o: libgomp_f.h
+ 
+ all-local: $(STAMP_GENINSRC)
+-
+-stamp-geninsrc: libgomp.info
+-	cp -p $(top_builddir)/libgomp.info $(srcdir)/libgomp.info
++stamp-geninsrc: $(INFO_LIBGOMP_NAME).info
++	cp -p $(top_builddir)/$(INFO_LIBGOMP_NAME).info $(srcdir)/libgomp.info
+ 	@touch $@
+ 
+-libgomp.info: $(STAMP_BUILD_INFO)
++libgomp.info: $(INFO_LIBGOMP_NAME).info
++	[ "$(INFO_LIBGOMP_NAME).info" = libgomp.info ] || cp $(INFO_LIBGOMP_NAME).info libgomp.info
++$(INFO_LIBGOMP_NAME).info: $(STAMP_BUILD_INFO)
+ 
+ stamp-build-info: libgomp.texi
+-	$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) -o libgomp.info $(srcdir)/libgomp.texi
++	$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -D 'fnlibgomp $(INFO_LIBGOMP_NAME)' -I $(srcdir) -o $(INFO_LIBGOMP_NAME).info $(srcdir)/libgomp.texi
+ 	@touch $@
+ 
+ # Tell versions [3.59,3.63) of GNU make to not export all variables.
+Index: b/src/libgomp/Makefile.am
+===================================================================
+--- a/src/libgomp/Makefile.am
++++ b/src/libgomp/Makefile.am
+@@ -125,16 +125,19 @@ endif
+ 
+ all-local: $(STAMP_GENINSRC)
+ 
+-stamp-geninsrc: libgomp.info
+-	cp -p $(top_builddir)/libgomp.info $(srcdir)/libgomp.info
++INFO_LIBGOMP_NAME = $(shell echo libgomp|sed '$(program_transform_name)')
++stamp-geninsrc: $(INFO_LIBGOMP_NAME).info
++	cp -p $(top_builddir)/$(INFO_LIBGOMP_NAME).info $(srcdir)/libgomp.info
+ 	@touch $@
+ 
+-libgomp.info: $(STAMP_BUILD_INFO)
++libgomp.info: $(INFO_LIBGOMP_NAME).info
++	cp $(INFO_LIBGOMP_NAME).info libgomp.info
++$(INFO_LIBGOMP_NAME).info: $(STAMP_BUILD_INFO)
+ 
+ stamp-build-info: libgomp.texi
+-	$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) -o libgomp.info $(srcdir)/libgomp.texi
++	$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -D 'fnlibgomp $(INFO_LIBGOMP_NAME)' -I $(srcdir) -o $(INFO_LIBGOMP_NAME).info $(srcdir)/libgomp.texi
+ 	@touch $@
+ 
+ 
+-CLEANFILES = $(STAMP_GENINSRC) $(STAMP_BUILD_INFO) libgomp.info
++CLEANFILES = $(STAMP_GENINSRC) $(STAMP_BUILD_INFO) $(INFO_LIBGOMP_NAME).info
+ MAINTAINERCLEANFILES = $(srcdir)/libgomp.info
+Index: b/src/libitm/libitm.texi
+===================================================================
+--- a/src/libitm/libitm.texi
++++ b/src/libitm/libitm.texi
+@@ -20,7 +20,7 @@ Free Documentation License''.
+ @ifinfo
+ @dircategory GNU Libraries
+ @direntry
+-* libitm: (libitm).                    GNU Transactional Memory Library
++* @value{fnlibitm}: (@value{fnlibitm}).                    GNU Transactional Memory Library
+ @end direntry
+ 
+ This manual documents the GNU Transactional Memory Library.
+Index: b/src/libitm/Makefile.am
+===================================================================
+--- a/src/libitm/Makefile.am
++++ b/src/libitm/Makefile.am
+@@ -107,14 +107,17 @@ endif
+ 
+ all-local: $(STAMP_GENINSRC)
+ 
+-stamp-geninsrc: libitm.info
+-	cp -p $(top_builddir)/libitm.info $(srcdir)/libitm.info
++INFO_LIBITM_NAME = $(shell echo libitm|sed '$(program_transform_name)')
++stamp-geninsrc: $(INFO_LIBITM_NAME).info
++	cp -p $(top_builddir)/$(INFO_LIBITM_NAME).info $(srcdir)/libitm.info
+ 	@touch $@
+ 
+-libitm.info: $(STAMP_BUILD_INFO)
++libitm.info: $(INFO_LIBITM_NAME).info
++       cp $(INFO_LIBITM_NAME).info libitm.info
++$(INFO_LIBITM_NAME).info: $(STAMP_BUILD_INFO)
+ 
+ stamp-build-info: libitm.texi
+-	$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) -o libitm.info $(srcdir)/libitm.texi
++	$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) -D 'fnlibitm $(INFO_LIBITM_NAME)'-o $(INFO_LIBITM_NAME).info $(srcdir)/libitm.texi
+ 	@touch $@
+ 
+ 
+Index: b/src/libitm/Makefile.in
+===================================================================
+--- a/src/libitm/Makefile.in
++++ b/src/libitm/Makefile.in
+@@ -1057,14 +1057,17 @@ vpath % $(strip $(search_path))
+ 
+ all-local: $(STAMP_GENINSRC)
+ 
+-stamp-geninsrc: libitm.info
+-	cp -p $(top_builddir)/libitm.info $(srcdir)/libitm.info
++INFO_LIBITM_NAME = $(shell echo libitm|sed '$(program_transform_name)')
++stamp-geninsrc: $(INFO_LIBITM_NAME).info
++	cp -p $(top_builddir)/$(INFO_LIBITM_NAME).info $(srcdir)/libitm.info
+ 	@touch $@
+ 
+-libitm.info: $(STAMP_BUILD_INFO)
++libitm.info: $(INFO_LIBITM_NAME).info
++	cp $(INFO_LIBITM_NAME).info libitm.info
++$(INFO_LIBITM_NAME).info: $(STAMP_BUILD_INFO)
+ 
+ stamp-build-info: libitm.texi
+-	$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) -o libitm.info $(srcdir)/libitm.texi
++	$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) -D 'fnlibitm $(INFO_LIBITM_NAME)' -o $(INFO_LIBITM_NAME).info $(srcdir)/libitm.texi
+ 	@touch $@
+ 
+ # Tell versions [3.59,3.63) of GNU make to not export all variables.
+Index: b/src/gcc/go/Make-lang.in
+===================================================================
+--- a/src/gcc/go/Make-lang.in
++++ b/src/gcc/go/Make-lang.in
+@@ -85,10 +85,11 @@ GO_TEXI_FILES = \
+ 	$(gcc_docdir)/include/gcc-common.texi \
+ 	gcc-vers.texi
+ 
+-doc/gccgo.info: $(GO_TEXI_FILES)
++INFO_GCCGO_NAME = $(shell echo gccgo|sed '$(program_transform_name)')
++doc/$(INFO_GCCGO_NAME).info: $(GO_TEXI_FILES)
+ 	if test "x$(BUILD_INFO)" = xinfo; then \
+-	  rm -f doc/gccgo.info*; \
+-	  $(MAKEINFO) $(MAKEINFOFLAGS) -I $(gcc_docdir) \
++	  rm -f doc/$(INFO_GCCGO_NAME).info*; \
++	  $(MAKEINFO) $(MAKEINFOFLAGS) $(MAKEINFODEFS) -I $(gcc_docdir) \
+ 		-I $(gcc_docdir)/include -o $@ $<; \
+ 	else true; fi
+ 
+@@ -114,7 +115,7 @@ gccgo.pod: go/gccgo.texi
+ go.all.cross: gccgo-cross$(exeext)
+ go.start.encap: gccgo$(exeext)
+ go.rest.encap:
+-go.info: doc/gccgo.info
++go.info: doc/$(INFO_GCCGO_NAME).info
+ go.dvi: doc/gccgo.dvi
+ go.pdf: doc/gccgo.pdf
+ go.html: $(build_htmldir)/go/index.html
+@@ -150,7 +151,7 @@ go.install-common: installdirs
+ 
+ go.install-plugin:
+ 
+-go.install-info: $(DESTDIR)$(infodir)/gccgo.info
++go.install-info: $(DESTDIR)$(infodir)/$(INFO_GCCGO_NAME).info
+ 
+ go.install-pdf: doc/gccgo.pdf
+ 	@$(NORMAL_INSTALL)
+@@ -190,7 +191,7 @@ go.uninstall:
+ 	rm -rf $(DESTDIR)$(bindir)/$(GCCGO_INSTALL_NAME)$(exeext)
+ 	rm -rf $(DESTDIR)$(man1dir)/$(GCCGO_INSTALL_NAME)$(man1ext)
+ 	rm -rf $(DESTDIR)$(bindir)/$(GCCGO_TARGET_INSTALL_NAME)$(exeext)
+-	rm -rf $(DESTDIR)$(infodir)/gccgo.info*
++	rm -rf $(DESTDIR)$(infodir)/$(INFO_GCCGO_NAME).info*
+ 
+ # Clean hooks.
+ 
+Index: b/src/gcc/go/gccgo.texi
+===================================================================
+--- a/src/gcc/go/gccgo.texi
++++ b/src/gcc/go/gccgo.texi
+@@ -50,7 +50,7 @@ man page gfdl(7).
+ @format
+ @dircategory Software development
+ @direntry
+-* Gccgo: (gccgo).           A GCC-based compiler for the Go language
++* @value{fngccgo}: (@value{fngccgo}).           A GCC-based compiler for the Go language
+ @end direntry
+ @end format
+ 
+@@ -123,7 +123,7 @@ and the Info entries for @file{gccgo} an
+ 
+ The @command{gccgo} command is a frontend to @command{gcc} and
+ supports many of the same options.  @xref{Option Summary, , Option
+-Summary, gcc, Using the GNU Compiler Collection (GCC)}.  This manual
++Summary, @value{fngcc}, Using the GNU Compiler Collection (GCC)}.  This manual
+ only documents the options specific to @command{gccgo}.
+ 
+ The @command{gccgo} command may be used to compile Go source code into
+Index: b/src/libquadmath/libquadmath.texi
+===================================================================
+--- a/src/libquadmath/libquadmath.texi
++++ b/src/libquadmath/libquadmath.texi
+@@ -25,7 +25,7 @@ copy and modify this GNU manual.
+ @ifinfo
+ @dircategory GNU Libraries
+ @direntry
+-* libquadmath: (libquadmath).                  GCC Quad-Precision Math Library
++* @value{fnlibquadmath}: (@value{fnlibquadmath}).                  GCC Quad-Precision Math Library
+ @end direntry
+ 
+ This manual documents the GCC Quad-Precision Math Library API.
+Index: b/src/libquadmath/Makefile.am
+===================================================================
+--- a/src/libquadmath/Makefile.am
++++ b/src/libquadmath/Makefile.am
+@@ -133,22 +133,24 @@ endif
+ 
+ all-local: $(STAMP_GENINSRC)
+ 
+-stamp-geninsrc: libquadmath.info
+-	cp -p $(top_builddir)/libquadmath.info $(srcdir)/libquadmath.info
++INFO_LIBQMATH_NAME = $(shell echo libquadmath|sed '$(program_transform_name)')
++
++stamp-geninsrc: $(INFO_LIBQMATH_NAME).info
++	cp -p $(top_builddir)/$(INFO_LIBQMATH_NAME).info $(srcdir)/libquadmath.info
+ 	@touch $@
+ 
+ stamp-build-info: libquadmath.texi $(libquadmath_TEXINFOS)
+-	$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) -o libquadmath.info $(srcdir)/libquadmath.texi
++	$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) -o $(INFO_LIBQMATH_NAME).info $(srcdir)/libquadmath.texi
+ 	@touch $@
+ 
+-CLEANFILES = $(STAMP_GENINSRC) $(STAMP_BUILD_INFO) libquadmath.info
+-MAINTAINERCLEANFILES = $(srcdir)/libquadmath.info
++CLEANFILES = $(STAMP_GENINSRC) $(STAMP_BUILD_INFO) $(INFO_LIBQMATH_NAME).info
++MAINTAINERCLEANFILES = $(srcdir)/$(INFO_LIBQMATH_NAME).info
+ 
+ endif BUILD_LIBQUADMATH
+ 
+ # Unconditionally override this target, so that automake's definition
+ # does not wrongly interfere.
+-libquadmath.info: $(STAMP_BUILD_INFO)
++$(INFO_LIBQMATH_NAME).info: $(STAMP_BUILD_INFO)
+ 
+ 
+ # Automake Documentation:
+Index: b/src/libquadmath/Makefile.in
+===================================================================
+--- a/src/libquadmath/Makefile.in
++++ b/src/libquadmath/Makefile.in
+@@ -169,7 +169,8 @@ MULTIDIRS =
+ MULTISUBDIR = 
+ MULTIDO = true
+ MULTICLEAN = true
+-INFO_DEPS = libquadmath.info
++INFO_LIBQMATH_NAME = $(shell echo libquadmath|sed '$(program_transform_name)')
++INFO_DEPS = $(INFO_LIBQMATH_NAME).info
+ am__TEXINFO_TEX_DIR = $(srcdir)/../gcc/doc/include
+ DVIS = libquadmath.dvi
+ PDFS = libquadmath.pdf
+@@ -406,8 +407,8 @@ AUTOMAKE_OPTIONS = 1.8 foreign
+ 
+ # AM_CONDITIONAL on configure check ACX_CHECK_PROG_VER([MAKEINFO])
+ @BUILD_INFO_TRUE@@BUILD_LIBQUADMATH_TRUE at STAMP_BUILD_INFO = stamp-build-info
+- at BUILD_LIBQUADMATH_TRUE@CLEANFILES = $(STAMP_GENINSRC) $(STAMP_BUILD_INFO) libquadmath.info
+- at BUILD_LIBQUADMATH_TRUE@MAINTAINERCLEANFILES = $(srcdir)/libquadmath.info
++ at BUILD_LIBQUADMATH_TRUE@CLEANFILES = $(STAMP_GENINSRC) $(STAMP_BUILD_INFO) $(INFO_LIBQMATH_NAME).info
++ at BUILD_LIBQUADMATH_TRUE@MAINTAINERCLEANFILES = $(srcdir)/$(INFO_LIBQMATH_NAME).info
+ 
+ # Automake Documentation:
+ # If your package has Texinfo files in many directories, you can use the
+@@ -1466,17 +1467,17 @@ uninstall-am: uninstall-dvi-am uninstall
+ 
+ @BUILD_LIBQUADMATH_TRUE at all-local: $(STAMP_GENINSRC)
+ 
+- at BUILD_LIBQUADMATH_TRUE@stamp-geninsrc: libquadmath.info
+- at BUILD_LIBQUADMATH_TRUE@	cp -p $(top_builddir)/libquadmath.info $(srcdir)/libquadmath.info
++ at BUILD_LIBQUADMATH_TRUE@stamp-geninsrc: $(INFO_LIBQMATH_NAME).info
++ at BUILD_LIBQUADMATH_TRUE@	cp -p $(top_builddir)/$(INFO_LIBQMATH_NAME).info $(srcdir)/$(INFO_LIBQMATH_NAME).info
+ @BUILD_LIBQUADMATH_TRUE@	@touch $@
+ 
+ @BUILD_LIBQUADMATH_TRUE at stamp-build-info: libquadmath.texi $(libquadmath_TEXINFOS)
+- at BUILD_LIBQUADMATH_TRUE@	$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) -o libquadmath.info $(srcdir)/libquadmath.texi
++ at BUILD_LIBQUADMATH_TRUE@	$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) -o $(INFO_LIBQMATH_NAME).info $(srcdir)/libquadmath.texi
+ @BUILD_LIBQUADMATH_TRUE@	@touch $@
+ 
+ # Unconditionally override this target, so that automake's definition
+ # does not wrongly interfere.
+-libquadmath.info: $(STAMP_BUILD_INFO)
++$(INFO_LIBQMATH_NAME).info: $(STAMP_BUILD_INFO)
+ 
+ libquadmath-vers.texi:
+ 	echo "@set BUGURL $(REPORT_BUGS_TEXI)" > $@
diff --git a/debian/patches/skip-bootstrap-multilib.diff b/debian/patches/skip-bootstrap-multilib.diff
new file mode 100644
index 0000000..26380d6
--- /dev/null
+++ b/debian/patches/skip-bootstrap-multilib.diff
@@ -0,0 +1,49 @@
+# DP: Skip non-default multilib and libstdc++-v3 debug builds in bootstrap builds
+
+Index: b/src/config-ml.in
+===================================================================
+--- a/src/config-ml.in
++++ b/src/config-ml.in
+@@ -479,6 +479,17 @@ esac
+ # Tests like `if [ -n "$multidirs" ]' require it.
+ multidirs=`echo "$multidirs" | sed -e 's/^[ ][ ]*//' -e 's/[ ][ ]*$//' -e 's/[ ][ ]*/ /g'`
+ 
++# stage1 and stage2 builds of the non-default multilib configurations
++# are not needed; skip these to save some build time.
++if [ -f ../../stage_final ] && [ -f ../../stage_current ]; then
++    stage_final=`cat ../../stage_final`
++    stage_current=`cat ../../stage_current`
++    if [ "$stage_current" != "$stage_final" ]; then
++	echo "Skip `basename $ml_realsrcdir` non-default multilibs for bootstrap stage $stage_current"
++	multidirs=
++    fi
++fi
++
+ # Add code to library's top level makefile to handle building the multilib
+ # subdirs.
+ 
+Index: b/src/libstdc++-v3/acinclude.m4
+===================================================================
+--- a/src/libstdc++-v3/acinclude.m4
++++ b/src/libstdc++-v3/acinclude.m4
+@@ -2503,7 +2503,20 @@ dnl
+ AC_DEFUN([GLIBCXX_ENABLE_DEBUG], [
+   AC_MSG_CHECKING([for additional debug build])
+   GLIBCXX_ENABLE(libstdcxx-debug,$1,,[build extra debug library])
++  if test x$enable_libstdcxx_debug = xyes; then
++    if test -f $toplevel_builddir/../stage_final && test -f $toplevel_builddir/../stage_current; then
++      stage_final=`cat $toplevel_builddir/../stage_final`
++      stage_current=`cat $toplevel_builddir/../stage_current`
++      if test x$stage_current != x$stage_final ; then
++	skip_debug_build=yes
++	enable_libstdcxx_debug=no
++      fi
++    fi
++  fi
+   AC_MSG_RESULT($enable_libstdcxx_debug)
++  if test x$skip_debug_build = xyes ; then
++    AC_MSG_NOTICE([Skip libstdc++-v3 debug build for bootstrap stage $stage_current])
++  fi
+   GLIBCXX_CONDITIONAL(GLIBCXX_BUILD_DEBUG, test $enable_libstdcxx_debug = yes)
+ ])
+ 
diff --git a/debian/patches/sparc-force-cpu.diff b/debian/patches/sparc-force-cpu.diff
new file mode 100644
index 0000000..3cef05c
--- /dev/null
+++ b/debian/patches/sparc-force-cpu.diff
@@ -0,0 +1,27 @@
+# DP: On sparc default to ultrasparc (v9a) in 32bit mode
+
+Index: b/src/gcc/config.gcc
+===================================================================
+--- a/src/gcc/config.gcc
++++ b/src/gcc/config.gcc
+@@ -4369,6 +4369,20 @@ do
+ 			;;
+ 		esac
+ 
++		# setting this directly fails to build a biarch defaulting to 32bit
++		case "$target" in
++		    sparc-*-linux*)
++			if test "$option" = cpu; then
++				val=ultrasparc
++			fi
++			;;
++		    DISABLEDsparc64-*-linux*)
++			if test "$option" = cpu_32; then
++				val=ultrasparc
++			fi
++			;;
++		esac
++
+ 		if test "x$t" = x
+ 		then
+ 			t="{ \"$option\", \"$val\" }"
diff --git a/debian/patches/sparc64-biarch-long-double-128.diff b/debian/patches/sparc64-biarch-long-double-128.diff
new file mode 100644
index 0000000..8cf8e2d
--- /dev/null
+++ b/debian/patches/sparc64-biarch-long-double-128.diff
@@ -0,0 +1,35 @@
+# DP: Fix --with-long-double-128 for sparc32 when defaulting to 64-bit.
+
+On sparc, the --with-long-double-128 option doesn't change anything for
+a 64-bit compiler, as it always default to 128-bit long doubles. For
+a 32/64-bit compiler defaulting to 32-bit this correctly control the
+size of long double of the 32-bit compiler, however for a 32/64-bit
+compiler defaulting to 64-bit, the built-in specs force the 
+-mlong-double-64 option. This makes the option useless in this case.
+
+The patch below fixes that by removing the -mlong-double-64 from the
+built-in spec, using the default instead.
+
+Changelog gcc/
+
+2013-12-04  Aurelien Jarno  <aurelien at aurel32.net>
+
+	* config/sparc/linux64.h (CC1_SPEC): When defaulting to 64-bit,
+	don't force -mlong-double-64 when -m32 or -mv8plus is given.
+
+Index: b/src/gcc/config/sparc/linux64.h
+===================================================================
+--- a/src/gcc/config/sparc/linux64.h
++++ b/src/gcc/config/sparc/linux64.h
+@@ -154,9 +154,9 @@ extern const char *host_detect_local_cpu
+ #else
+ #define CC1_SPEC "%{profile:-p} \
+ %{m32:%{m64:%emay not use both -m32 and -m64}} \
+-%{m32:-mptr32 -mno-stack-bias %{!mlong-double-128:-mlong-double-64} \
++%{m32:-mptr32 -mno-stack-bias \
+   %{!mcpu*:-mcpu=cypress}} \
+-%{mv8plus:-mptr32 -mno-stack-bias %{!mlong-double-128:-mlong-double-64} \
++%{mv8plus:-mptr32 -mno-stack-bias \
+   %{!mcpu*:-mcpu=v9}} \
+ %{!m32:%{!mcpu*:-mcpu=ultrasparc}} \
+ %{!mno-vis:%{!m32:%{!mcpu=v9:-mvis}}} \
diff --git a/debian/patches/svn-class-updates.diff b/debian/patches/svn-class-updates.diff
new file mode 100644
index 0000000..7e591ca
--- /dev/null
+++ b/debian/patches/svn-class-updates.diff
@@ -0,0 +1,27 @@
+# DP: updated class files from the 4.8 branch upto yyyymmdd.
+
+dir=gcc-4_8-branch
+dir=/scratch/packages/gcc/svn/gcc-4_8-branch
+tag=gcc_4_8_0_release
+branch=gcc-4_8-branch
+
+tmplist=files$$
+
+svn diff --summarize \
+        svn://gcc.gnu.org/svn/gcc/tags/$tag \
+        svn://gcc.gnu.org/svn/gcc/branches/$branch \
+    | grep '\.class$' > $tmplist
+
+sed -n '/^[AM].*\.class$/s,.*/'$tag'/\(.*\),\1,p' $tmplist \
+    > neworchanged.list
+sed -n '/^[D].*\.class$/s,.*/'$tag'/\(.*\),\1,p' $tmplist \
+    > removed.list
+sed -n '/^[^ADM].*\.class$/s,.*/'$tag'/\(.*\),\1,p' $tmplist \
+    > unknown.list
+
+echo "new or changed: $(wc -l neworchanged.list | cut '-d ' -f1), removed $(wc -l removed.list | cut '-d ' -f1): , unknown: $(wc -l unknown.list | cut '-d ' -f1)"
+tar -c -J -f java-class-files.tar.xz -C $dir -T neworchanged.list
+uuencode java-class-files.tar.xz java-class-files.tar.xz > java-class-files.tar.xz.uue
+
+rm -f $tmplist neworchanged.list removed.list unknown.list
+
diff --git a/debian/patches/svn-doc-updates.diff b/debian/patches/svn-doc-updates.diff
new file mode 100644
index 0000000..2f92e80
--- /dev/null
+++ b/debian/patches/svn-doc-updates.diff
@@ -0,0 +1,6 @@
+# DP: updates from the 5 branch upto 2015xxyy (documentation).
+
+svn diff svn://gcc.gnu.org/svn/gcc/tags/gcc_5_1_0_release svn://gcc.gnu.org/svn/gcc/branches/gcc-5-branch \
+	| sed -r 's,^--- (\S+)\t(\S+)(.*)$,--- a/src/\1\t\2,;s,^\+\+\+ (\S+)\t(\S+)(.*)$,+++ b/src/\1\t\2,' \
+	| awk '/^Index:.*\.texi/ {skip=0; print; next} /^Index:/ {skip=1; next} skip==0'
+
diff --git a/debian/patches/svn-updates.diff b/debian/patches/svn-updates.diff
new file mode 100644
index 0000000..e0c5eb4
--- /dev/null
+++ b/debian/patches/svn-updates.diff
@@ -0,0 +1,1114 @@
+# DP: updates from the 5 branch upto 20151207 (r231361).
+
+last_update()
+{
+	cat > ${dir}LAST_UPDATED <EOF
+Mon Dec  7 13:54:48 CET 2015
+Mon Dec  7 12:54:48 UTC 2015 (revision 231361)
+EOF
+}
+
+LANG=C svn diff svn://gcc.gnu.org/svn/gcc/tags/gcc_5_3_0_release svn://gcc.gnu.org/svn/gcc/branches/gcc-5-branch \
+	| sed -r 's,^--- (\S+)\t(\S+)(.*)$,--- a/src/\1\t\2,;s,^\+\+\+ (\S+)\t(\S+)(.*)$,+++ b/src/\1\t\2,' \
+	| awk '/^Index:.*\.(class|texi)/ {skip=1; next} /^Index:/ { skip=0 } skip==0'
+
+Index: Makefile.in
+===================================================================
+--- a/src/Makefile.in	(.../tags/gcc_5_3_0_release)
++++ b/src/Makefile.in	(.../branches/gcc-5-branch)
+@@ -50485,6 +50485,7 @@
+ 
+ 
+ configure-target-libffi: maybe-all-target-newlib maybe-all-target-libgloss
++configure-target-libffi: maybe-all-target-libstdc++-v3
+ 
+ configure-target-libjava: maybe-all-target-newlib maybe-all-target-libgloss
+ configure-target-libjava: maybe-all-target-libstdc++-v3
+Index: libstdc++-v3/include/experimental/fs_path.h
+===================================================================
+--- a/src/libstdc++-v3/include/experimental/fs_path.h	(.../tags/gcc_5_3_0_release)
++++ b/src/libstdc++-v3/include/experimental/fs_path.h	(.../branches/gcc-5-branch)
+@@ -549,16 +549,6 @@
+     std::string _M_what = _M_gen_what();
+   };
+ 
+-  struct path::_Cmpt : path
+-  {
+-    _Cmpt(string_type __s, _Type __t, size_t __pos)
+-      : path(std::move(__s), __t), _M_pos(__pos) { }
+-
+-    _Cmpt() : _M_pos(-1) { }
+-
+-    size_t _M_pos;
+-  };
+-
+   template<>
+     struct path::__is_encoded_char<char> : std::true_type
+     { using value_type = char; };
+@@ -575,6 +565,16 @@
+     struct path::__is_encoded_char<char32_t> : std::true_type
+     { using value_type = char32_t; };
+ 
++  struct path::_Cmpt : path
++  {
++    _Cmpt(string_type __s, _Type __t, size_t __pos)
++      : path(std::move(__s), __t), _M_pos(__pos) { }
++
++    _Cmpt() : _M_pos(-1) { }
++
++    size_t _M_pos;
++  };
++
+   // specialize _Cvt for degenerate 'noconv' case
+   template<>
+     struct path::_Cvt<path::value_type>
+Index: libstdc++-v3/include/bits/shared_ptr.h
+===================================================================
+--- a/src/libstdc++-v3/include/bits/shared_ptr.h	(.../tags/gcc_5_3_0_release)
++++ b/src/libstdc++-v3/include/bits/shared_ptr.h	(.../branches/gcc-5-branch)
+@@ -582,19 +582,25 @@
+ 	_M_weak_assign(_Tp1* __p, const __shared_count<>& __n) const noexcept
+ 	{ _M_weak_this._M_assign(__p, __n); }
+ 
+-      template<typename _Tp1>
++      template<typename _Tp1, typename _Tp2>
+ 	friend void
+-	__enable_shared_from_this_helper(const __shared_count<>& __pn,
+-					 const enable_shared_from_this* __pe,
+-					 const _Tp1* __px) noexcept
+-	{
+-	  if (__pe != 0)
+-	    __pe->_M_weak_assign(const_cast<_Tp1*>(__px), __pn);
+-	}
++	__enable_shared_from_this_helper(const __shared_count<>&,
++					 const enable_shared_from_this<_Tp1>*,
++					 const _Tp2*) noexcept;
+ 
+       mutable weak_ptr<_Tp>  _M_weak_this;
+     };
+ 
++  template<typename _Tp1, typename _Tp2>
++    inline void
++    __enable_shared_from_this_helper(const __shared_count<>& __pn,
++				     const enable_shared_from_this<_Tp1>*
++				     __pe, const _Tp2* __px) noexcept
++    {
++      if (__pe != nullptr)
++	__pe->_M_weak_assign(const_cast<_Tp2*>(__px), __pn);
++    }
++
+   /**
+    *  @brief  Create an object that is owned by a shared_ptr.
+    *  @param  __a     An allocator.
+Index: libstdc++-v3/include/bits/c++config
+===================================================================
+--- a/src/libstdc++-v3/include/bits/c++config	(.../tags/gcc_5_3_0_release)
++++ b/src/libstdc++-v3/include/bits/c++config	(.../branches/gcc-5-branch)
+@@ -294,7 +294,7 @@
+ # endif
+ 
+ # if _GLIBCXX_USE_CXX11_ABI
+-  inline namespace __cxx11 __attribute__((__abi_tag__)) { }
++  inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { }
+ # endif
+   }
+ 
+Index: libstdc++-v3/include/bits/shared_ptr_base.h
+===================================================================
+--- a/src/libstdc++-v3/include/bits/shared_ptr_base.h	(.../tags/gcc_5_3_0_release)
++++ b/src/libstdc++-v3/include/bits/shared_ptr_base.h	(.../branches/gcc-5-branch)
+@@ -1540,19 +1540,25 @@
+ 	_M_weak_assign(_Tp1* __p, const __shared_count<_Lp>& __n) const noexcept
+ 	{ _M_weak_this._M_assign(__p, __n); }
+ 
+-      template<typename _Tp1>
++      template<_Lock_policy _Lp1, typename _Tp1, typename _Tp2>
+ 	friend void
+-	__enable_shared_from_this_helper(const __shared_count<_Lp>& __pn,
+-					 const __enable_shared_from_this* __pe,
+-					 const _Tp1* __px) noexcept
+-	{
+-	  if (__pe != 0)
+-	    __pe->_M_weak_assign(const_cast<_Tp1*>(__px), __pn);
+-	}
++	__enable_shared_from_this_helper(const __shared_count<_Lp1>&,
++					 const __enable_shared_from_this<_Tp1,
++					 _Lp1>*, const _Tp2*) noexcept;
+ 
+       mutable __weak_ptr<_Tp, _Lp>  _M_weak_this;
+     };
+ 
++  template<_Lock_policy _Lp1, typename _Tp1, typename _Tp2>
++    inline void
++    __enable_shared_from_this_helper(const __shared_count<_Lp1>& __pn,
++				     const __enable_shared_from_this<_Tp1,
++				     _Lp1>* __pe,
++				     const _Tp2* __px) noexcept
++    {
++      if (__pe != nullptr)
++	__pe->_M_weak_assign(const_cast<_Tp2*>(__px), __pn);
++    }
+ 
+   template<typename _Tp, _Lock_policy _Lp, typename _Alloc, typename... _Args>
+     inline __shared_ptr<_Tp, _Lp>
+Index: libstdc++-v3/ChangeLog
+===================================================================
+--- a/src/libstdc++-v3/ChangeLog	(.../tags/gcc_5_3_0_release)
++++ b/src/libstdc++-v3/ChangeLog	(.../branches/gcc-5-branch)
+@@ -1,3 +1,21 @@
++2015-12-04  Jonathan Wakely  <jwakely at redhat.com>
++
++	PR libstdc++/56383
++	* testsuite/20_util/enable_shared_from_this/56383.cc: New.
++	* include/bits/shared_ptr_base.h (__enable_shared_from_this): Make
++	friend declaration match previous declaration of
++	__enable_shared_from_this_helper.
++	* include/bits/shared_ptr.h (enable_shared_from_this): Likewise.
++
++2015-12-04  Jonathan Wakely  <jwakely at redhat.com>
++
++	* include/experimental/bits/fs_path.h (path::_Cmpt): Move definition
++	after __is_encoded_char explicit specializations.
++
++2015-12-04  Jason Merrill  <jason at redhat.com>
++
++	* include/bits/c++config: Fix abi_tag in special modes.
++
+ 2015-12-04  Release Manager
+ 
+ 	* GCC 5.3.0 released.
+Index: libstdc++-v3/testsuite/20_util/enable_shared_from_this/56383.cc
+===================================================================
+--- a/src/libstdc++-v3/testsuite/20_util/enable_shared_from_this/56383.cc	(.../tags/gcc_5_3_0_release)
++++ b/src/libstdc++-v3/testsuite/20_util/enable_shared_from_this/56383.cc	(.../branches/gcc-5-branch)
+@@ -0,0 +1,56 @@
++// Copyright (C) 2015 Free Software Foundation, Inc.
++//
++// This file is part of the GNU ISO C++ Library.  This library is free
++// software; you can redistribute it and/or modify it under the
++// terms of the GNU General Public License as published by the
++// Free Software Foundation; either version 3, or (at your option)
++// any later version.
++
++// This library is distributed in the hope that it will be useful,
++// but WITHOUT ANY WARRANTY; without even the implied warranty of
++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++// GNU General Public License for more details.
++
++// You should have received a copy of the GNU General Public License along
++// with this library; see the file COPYING3.  If not see
++// <http://www.gnu.org/licenses/>.
++
++// { dg-options "-std=gnu++11" }
++
++#include <memory>
++#include <testsuite_hooks.h>
++
++struct A : std::enable_shared_from_this<A>
++{
++    void* a() { return shared_from_this().get(); }
++};
++
++struct B : std::enable_shared_from_this<B>
++{
++};
++
++struct D : A, B
++{
++};
++
++void test01()
++{
++  bool test = false;
++
++  auto d = std::make_shared<D>();
++  try
++  {
++      d->a();
++  }
++  catch (const std::bad_weak_ptr&)
++  {
++    test = true;
++  }
++  VERIFY(test);
++}
++
++int
++main()
++{
++  test01();
++}
+Index: ChangeLog
+===================================================================
+--- a/src/ChangeLog	(.../tags/gcc_5_3_0_release)
++++ b/src/ChangeLog	(.../branches/gcc-5-branch)
+@@ -1,3 +1,13 @@
++2015-12-04  Andreas Tobler  <andreast at gcc.gnu.org>
++
++	Backport from mainline
++	2015-12-01  Andreas Tobler  <andreast at gcc.gnu.org>
++
++	PR libffi/65726
++	* Makefile.def (lang_env_dependencies): Make libffi depend
++	on cxx.
++	* Makefile.in: Regenerate.
++
+ 2015-12-04  Release Manager
+ 
+ 	* GCC 5.3.0 released.
+Index: libgcc/ChangeLog
+===================================================================
+--- a/src/libgcc/ChangeLog	(.../tags/gcc_5_3_0_release)
++++ b/src/libgcc/ChangeLog	(.../branches/gcc-5-branch)
+@@ -1,3 +1,12 @@
++2015-12-05  John David Anglin  <danglin at gcc.gnu.org>
++
++	Backport from mainline:
++	2015-12-01  John David Anglin  <danglin at gcc.gnu.org>
++
++	* config/pa/fptr.c (__canonicalize_funcptr_for_compare): Initialize
++	fixup values if saved GOT address doesn't match runtime address.
++	(fixup_branch_offset): Reorder list.
++
+ 2015-12-04  Release Manager
+ 
+ 	* GCC 5.3.0 released.
+Index: libgcc/config/pa/fptr.c
+===================================================================
+--- a/src/libgcc/config/pa/fptr.c	(.../tags/gcc_5_3_0_release)
++++ b/src/libgcc/config/pa/fptr.c	(.../branches/gcc-5-branch)
+@@ -40,7 +40,7 @@
+    the template should it be necessary to change the current branch
+    position.  */
+ #define NOFFSETS 2
+-static int fixup_branch_offset[NOFFSETS] = { 32, -4 };
++static int fixup_branch_offset[NOFFSETS] = { -4, 32 };
+ 
+ #define GET_FIELD(X, FROM, TO) \
+   ((X) >> (31 - (TO)) & ((1 << ((TO) - (FROM) + 1)) - 1))
+@@ -66,6 +66,7 @@
+ {
+   static unsigned int fixup_plabel[2];
+   static fixup_t fixup;
++  static unsigned int *init_fixup;
+   unsigned int *plabel, *got;
+ 
+   /* -1 and page 0 are special.  -1 is used in crtend to mark the end of
+@@ -88,9 +89,11 @@
+     return plabel[0];
+ 
+   /* Initialize our plabel for calling fixup if we haven't done so already.
+-     This code needs to be thread safe but we don't have to be too careful
+-     as the result is invariant.  */
+-  if (!fixup)
++     We can't rely on static initialization so we check that any previous
++     initialization was done for the current got address.  This code needs
++     to be thread safe but we don't have to be too careful as the result
++     is invariant.  */
++  if (init_fixup != got)
+     {
+       int i;
+       unsigned int *iptr;
+@@ -121,6 +124,9 @@
+       fixup_plabel[0] = (unsigned int) iptr + 8;  /* address of fixup */
+       fixup_plabel[1] = got[-1];		  /* ltp for fixup */
+       fixup = (fixup_t) ((int) fixup_plabel | 3);
++
++      /* Save address of the global offset table.  */
++      init_fixup = got;
+     }
+ 
+   /* Call fixup to resolve the function address.  got[1] contains the
+Index: gcc/DATESTAMP
+===================================================================
+--- a/src/gcc/DATESTAMP	(.../tags/gcc_5_3_0_release)
++++ b/src/gcc/DATESTAMP	(.../branches/gcc-5-branch)
+@@ -1 +1 @@
+-20151204
++20151207
+Index: gcc/ChangeLog
+===================================================================
+--- a/src/gcc/ChangeLog	(.../tags/gcc_5_3_0_release)
++++ b/src/gcc/ChangeLog	(.../branches/gcc-5-branch)
+@@ -1,3 +1,31 @@
++2015-12-07  Jakub Jelinek  <jakub at redhat.com>
++
++	Backport from mainline
++	2015-12-04  Jakub Jelinek  <jakub at redhat.com>
++
++	PR tree-optimization/68680
++	* calls.c (special_function_p): Return ECF_MAY_BE_ALLOCA for
++	BUILT_IN_ALLOCA{,_WITH_ALIGN}.  Don't check for __builtin_alloca
++	by name.
++
++	PR tree-optimization/68671
++	* tree-ssa-reassoc.c (maybe_optimize_range_tests): For basic
++	blocks starting with the successor of first bb we've modified
++	and ending with last_bb call reset_flow_sensitive_info_in_bb.
++
++2015-12-04  Andreas Tobler  <andreast at gcc.gnu.org>
++
++	Backport from mainline
++	2015-12-01  Andreas Tobler  <andreast at gcc.gnu.org>
++
++	* config/rs6000/freebsd64.h (ELFv2_ABI_CHECK): Add new macro.
++	(SUBSUBTARGET_OVERRIDE_OPTIONS): Use it to decide whether to set
++	rs6000_current_abi to ABI_AIX or ABI_ELFv2.
++
++2015-12-04  Richard Biener  <rguenther at suse.de>
++
++	* BASE-VER: Set to 5.3.1.
++
+ 2015-12-04  Release Manager
+ 
+ 	* GCC 5.3.0 released.
+Index: gcc/testsuite/gcc.target/i386/pr68680.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.target/i386/pr68680.c	(.../tags/gcc_5_3_0_release)
++++ b/src/gcc/testsuite/gcc.target/i386/pr68680.c	(.../branches/gcc-5-branch)
+@@ -0,0 +1,15 @@
++/* PR tree-optimization/68680 */
++/* { dg-do compile } */
++/* { dg-options "-O2 -fstack-protector-strong" } */
++
++int foo (char *);
++
++int
++bar (unsigned long x)
++{
++  char a[x];
++  return foo (a);
++}
++
++/* Verify that this function is stack protected.  */
++/* { dg-final { scan-assembler "stack_chk_fail" } } */
+Index: gcc/testsuite/gcc.dg/pr68671.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.dg/pr68671.c	(.../tags/gcc_5_3_0_release)
++++ b/src/gcc/testsuite/gcc.dg/pr68671.c	(.../branches/gcc-5-branch)
+@@ -0,0 +1,23 @@
++/* PR tree-optimization/68671 */
++/* { dg-do run } */
++/* { dg-options " -O2 -fno-tree-dce" } */
++
++volatile int a = -1;
++volatile int b;
++
++static inline int
++fn1 (signed char p1, int p2)
++{
++  return (p1 < 0) || (p1 > (1 >> p2)) ? 0 : (p1 << 1);
++}
++
++int
++main ()
++{
++  signed char c = a;
++  b = fn1 (c, 1);
++  c = ((128 | c) < 0 ? 1 : 0);
++  if (c != 1)
++    __builtin_abort ();
++  return 0;
++}
+Index: gcc/testsuite/ChangeLog
+===================================================================
+--- a/src/gcc/testsuite/ChangeLog	(.../tags/gcc_5_3_0_release)
++++ b/src/gcc/testsuite/ChangeLog	(.../branches/gcc-5-branch)
+@@ -1,3 +1,14 @@
++2015-12-07  Jakub Jelinek  <jakub at redhat.com>
++
++	Backport from mainline
++	2015-12-04  Jakub Jelinek  <jakub at redhat.com>
++
++	PR tree-optimization/68680
++	* gcc.target/i386/pr68680.c: New test.
++
++	PR tree-optimization/68671
++	* gcc.dg/pr68671.c: New test.
++
+ 2015-12-04  Release Manager
+ 
+ 	* GCC 5.3.0 released.
+Index: gcc/testsuite/g++.dg/template/pr67337.C
+===================================================================
+--- a/src/gcc/testsuite/g++.dg/template/pr67337.C	(.../tags/gcc_5_3_0_release)
++++ b/src/gcc/testsuite/g++.dg/template/pr67337.C	(.../branches/gcc-5-branch)
+@@ -0,0 +1,25 @@
++template <class> class A
++{
++  void m_fn1 (int *, int);
++};
++
++template <class> class B
++{
++public:
++  typedef int Type;
++};
++
++template <class> class C
++{
++public:
++  C (int);
++  template <template <class> class T> void m_fn2 (typename T<void>::Type);
++};
++
++template <>
++void
++A<int>::m_fn1 (int *, int)
++{
++  C<int> a (0);
++  a.m_fn2<B> (0);
++}
+Index: gcc/cp/ChangeLog
+===================================================================
+--- a/src/gcc/cp/ChangeLog	(.../tags/gcc_5_3_0_release)
++++ b/src/gcc/cp/ChangeLog	(.../branches/gcc-5-branch)
+@@ -1,3 +1,8 @@
++2015-12-04  Markus Trippelsdorf  <markus at trippelsdorf.de>
++
++	PR c++/67337
++	* mangle.c (write_template_prefix): Guard against context==NULL.
++
+ 2015-12-04  Release Manager
+ 
+ 	* GCC 5.3.0 released.
+Index: gcc/cp/mangle.c
+===================================================================
+--- a/src/gcc/cp/mangle.c	(.../tags/gcc_5_3_0_release)
++++ b/src/gcc/cp/mangle.c	(.../branches/gcc-5-branch)
+@@ -1160,7 +1160,7 @@
+      So, for the example above, `Outer<int>::Inner' is represented as a
+      substitution candidate by a TREE_LIST whose purpose is `Outer<int>'
+      and whose value is `Outer<T>::Inner<U>'.  */
+-  if (TYPE_P (context))
++  if (context && TYPE_P (context))
+     substitution = build_tree_list (context, templ);
+   else
+     substitution = templ;
+Index: gcc/ada/doc/gnat_ugn/gnat_and_program_execution.rst
+===================================================================
+--- a/src/gcc/ada/doc/gnat_ugn/gnat_and_program_execution.rst	(.../tags/gcc_5_3_0_release)
++++ b/src/gcc/ada/doc/gnat_ugn/gnat_and_program_execution.rst	(.../branches/gcc-5-branch)
+@@ -3872,7 +3872,7 @@
+   it to obtain accurate dynamic memory usage history at a minimal cost to the
+   execution speed. Note however, that `gnatmem` is not supported on all
+   platforms (currently, it is supported on AIX, HP-UX, GNU/Linux, Solaris and
+-  Windows NT/2000/XP (x86).
++  Windows NT/2000/XP (x86)).
+ 
+   The `gnatmem` command has the form
+ 
+Index: gcc/ada/s-oscons-tmplt.c
+===================================================================
+--- a/src/gcc/ada/s-oscons-tmplt.c	(.../tags/gcc_5_3_0_release)
++++ b/src/gcc/ada/s-oscons-tmplt.c	(.../branches/gcc-5-branch)
+@@ -157,7 +157,7 @@
+ # include <_types.h>
+ #endif
+ 
+-#ifdef __linux__
++#if defined (__linux__) || defined (__rtems__)
+ # include <pthread.h>
+ # include <signal.h>
+ #endif
+@@ -1456,7 +1456,8 @@
+ CNS(CLOCK_RT_Ada, "")
+ #endif
+ 
+-#if defined (__APPLE__) || defined (__linux__) || defined (DUMMY)
++#if defined (__APPLE__) || defined (__linux__) || defined (__rtems__) || \
++  defined (DUMMY)
+ /*
+ 
+    --  Sizes of pthread data types
+@@ -1499,7 +1500,7 @@
+ CND(PTHREAD_RWLOCK_SIZE,     "pthread_rwlock_t")
+ CND(PTHREAD_ONCE_SIZE,       "pthread_once_t")
+ 
+-#endif /* __APPLE__ || __linux__ */
++#endif /* __APPLE__ || __linux__ || __rtems__*/
+ 
+ /*
+ 
+Index: gcc/ada/s-osinte-kfreebsd-gnu.ads
+===================================================================
+--- a/src/gcc/ada/s-osinte-kfreebsd-gnu.ads	(.../tags/gcc_5_3_0_release)
++++ b/src/gcc/ada/s-osinte-kfreebsd-gnu.ads	(.../branches/gcc-5-branch)
+@@ -7,7 +7,7 @@
+ --                                  S p e c                                 --
+ --                                                                          --
+ --               Copyright (C) 1991-1994, Florida State University          --
+---            Copyright (C) 1995-2014, Free Software Foundation, Inc.       --
++--            Copyright (C) 1995-2015, Free Software Foundation, Inc.       --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+@@ -30,7 +30,7 @@
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+---  This is the GNU/kFreeBSD (GNU/LinuxThreads) version of this package
++--  This is the GNU/kFreeBSD (POSIX Threads) version of this package
+ 
+ --  This package encapsulates all direct interfaces to OS services
+ --  that are needed by children of System.
+@@ -198,8 +198,24 @@
+    -- Time --
+    ----------
+ 
++   Time_Slice_Supported : constant Boolean := True;
++   --  Indicates whether time slicing is supported (i.e SCHED_RR is supported)
++
+    type timespec is private;
+ 
++   function nanosleep (rqtp, rmtp : access timespec) return int;
++   pragma Import (C, nanosleep, "nanosleep");
++
++   type clockid_t is private;
++
++   CLOCK_REALTIME : constant clockid_t;
++
++   function clock_gettime
++     (clock_id : clockid_t;
++      tp       : access timespec)
++      return int;
++   pragma Import (C, clock_gettime, "clock_gettime");
++
+    function To_Duration (TS : timespec) return Duration;
+    pragma Inline (To_Duration);
+ 
+@@ -236,6 +252,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 --
+    -------------
+@@ -261,7 +287,19 @@
+    type pthread_key_t       is private;
+ 
+    PTHREAD_CREATE_DETACHED : constant := 1;
++   PTHREAD_CREATE_JOINABLE : constant := 0;
+ 
++   PTHREAD_SCOPE_PROCESS : constant := 0;
++   PTHREAD_SCOPE_SYSTEM  : constant := 2;
++
++   --  Read/Write lock not supported on kfreebsd. To add support both types
++   --  pthread_rwlock_t and pthread_rwlockattr_t must properly be defined
++   --  with the associated routines pthread_rwlock_[init/destroy] and
++   --  pthread_rwlock_[rdlock/wrlock/unlock].
++
++   subtype pthread_rwlock_t     is pthread_mutex_t;
++   subtype pthread_rwlockattr_t is pthread_mutexattr_t;
++
+    -----------
+    -- Stack --
+    -----------
+@@ -284,10 +322,30 @@
+    Alternate_Stack_Size : constant := 0;
+    --  No alternate signal stack is used on this platform
+ 
++   Stack_Base_Available : constant Boolean := False;
++   --  Indicates whether the stack base is available on this target
++
+    function Get_Stack_Base (thread : pthread_t) return Address;
+    pragma Inline (Get_Stack_Base);
+-   --  This is a dummy procedure to share some GNULLI files
++   --  returns the stack base of the specified thread. Only call this function
++   --  when Stack_Base_Available is True.
+ 
++   function Get_Page_Size return size_t;
++   function Get_Page_Size return Address;
++   pragma Import (C, Get_Page_Size, "getpagesize");
++   --  Returns the size of a page
++
++   PROT_NONE  : constant := 0;
++   PROT_READ  : constant := 1;
++   PROT_WRITE : constant := 2;
++   PROT_EXEC  : constant := 4;
++   PROT_ALL   : constant := PROT_READ + PROT_WRITE + PROT_EXEC;
++   PROT_ON    : constant := PROT_NONE;
++   PROT_OFF   : constant := PROT_ALL;
++
++   function mprotect (addr : Address; len : size_t; prot : int) return int;
++   pragma Import (C, mprotect);
++
+    ---------------------------------------
+    -- Nonstandard Thread Initialization --
+    ---------------------------------------
+@@ -375,6 +433,36 @@
+    -- POSIX.1c  Section 13 --
+    --------------------------
+ 
++   PTHREAD_PRIO_NONE    : constant := 0;
++   PTHREAD_PRIO_PROTECT : constant := 2;
++   PTHREAD_PRIO_INHERIT : constant := 1;
++
++   function pthread_mutexattr_setprotocol
++     (attr     : access pthread_mutexattr_t;
++      protocol : int) return int;
++   pragma Import
++      (C, pthread_mutexattr_setprotocol, "pthread_mutexattr_setprotocol");
++
++   function pthread_mutexattr_getprotocol
++     (attr     : access pthread_mutexattr_t;
++      protocol : access int) return int;
++   pragma Import
++     (C, pthread_mutexattr_getprotocol, "pthread_mutexattr_getprotocol");
++
++   function pthread_mutexattr_setprioceiling
++     (attr     : access pthread_mutexattr_t;
++      prioceiling : int) return int;
++   pragma Import
++     (C, pthread_mutexattr_setprioceiling,
++      "pthread_mutexattr_setprioceiling");
++
++   function pthread_mutexattr_getprioceiling
++     (attr     : access pthread_mutexattr_t;
++      prioceiling : access int) return int;
++   pragma Import
++     (C, pthread_mutexattr_getprioceiling,
++      "pthread_mutexattr_getprioceiling");
++
+    type struct_sched_param is record
+       sched_priority : int;  --  scheduling priority
+    end record;
+@@ -386,6 +474,28 @@
+       param  : access struct_sched_param) return int;
+    pragma Import (C, pthread_setschedparam, "pthread_setschedparam");
+ 
++   function pthread_attr_setscope
++     (attr            : access pthread_attr_t;
++      contentionscope : int) return int;
++   pragma Import (C, pthread_attr_setscope, "pthread_attr_setscope");
++
++   function pthread_attr_getscope
++     (attr            : access pthread_attr_t;
++      contentionscope : access int) return int;
++   pragma Import (C, pthread_attr_getscope, "pthread_attr_getscope");
++
++   function pthread_attr_setinheritsched
++     (attr            : access pthread_attr_t;
++      inheritsched : int) return int;
++   pragma Import
++     (C, pthread_attr_setinheritsched, "pthread_attr_setinheritsched");
++
++   function pthread_attr_getinheritsched
++     (attr         : access pthread_attr_t;
++      inheritsched : access int) return int;
++   pragma Import
++     (C, pthread_attr_getinheritsched, "pthread_attr_getinheritsched");
++
+    function pthread_attr_setschedpolicy
+      (attr   : access pthread_attr_t;
+       policy : int) return int;
+@@ -496,6 +606,9 @@
+    end record;
+    pragma Convention (C, timespec);
+ 
++   type clockid_t is new int;
++   CLOCK_REALTIME : constant clockid_t := 0;
++
+    type pthread_attr_t is record
+       detachstate   : int;
+       schedpolicy   : int;
+Index: gcc/ada/ChangeLog
+===================================================================
+--- a/src/gcc/ada/ChangeLog	(.../tags/gcc_5_3_0_release)
++++ b/src/gcc/ada/ChangeLog	(.../branches/gcc-5-branch)
+@@ -1,3 +1,40 @@
++2015-12-06  Piotr Trojanek  <piotr.trojanek at gmail.com>
++
++	PR ada/60164
++	* doc/gnat_ugn/gnat_and_program_execution.rst (gnatmem): Fix typo.
++
++2015-12-06  Eric Botcazou  <ebotcazou at adacore.com>
++
++	PR ada/56274
++	* s-osinte-kfreebsd-gnu.ads (pthread_rwlock_t): New subtype.
++	(pthread_rwlockattr_t): Likewise.
++
++2015-12-06  Ludovic Brenta  <ludovic at ludovic-brenta.org>
++
++	PR ada/49944
++	* s-osinte-freebsd.ads: Minor reformatting.
++	(Stack_Base_Available): Correct comments.
++	* s-osinte-kfreebsd-gnu.ads (Time_Slice_Supported, nanosleep,
++	clock_id_t, clock_gettime, Stack_Base_Available, Get_Page_Size,
++	mprotect, pthread_mutexattr_setprotocol,pthread_mutexattr_getprotocol
++	pthread_mutexattr_setprioceiling, pthread_mutexattr_getprioceiling,
++	pthread_attr_setscope, pthread_attr_getscope,
++	pthread_attr_setinheritsched, pthread_attr_getinheritsched,
++	Time_Slice_Supported): Copy from s-osinte-freebsd.ads.
++	* gcc-interface/Makefile.in (x86/kfreebsd): Use the POSIX version of
++	the System.Task_Primitives.Operations package.
++
++2015-12-06  Ludovic Brenta  <ludovic at ludovic-brenta.org>
++
++	PR ada/49940
++	* s-osinte-kfreebsd-gnu.ads (lwp_self): New imported function.
++
++2015-12-04  Jan Sommer <soja-lists at aries.uberspace.de>
++
++	PR ada/68169
++	* s-oscons-tmplt.c: Generate pthread constants for RTEMS
++	* s-osinte-rtems.ads: Declare pthread structs as opaque types in Ada
++
+ 2015-12-04  Release Manager
+ 
+ 	* GCC 5.3.0 released.
+Index: gcc/ada/s-osinte-rtems.ads
+===================================================================
+--- a/src/gcc/ada/s-osinte-rtems.ads	(.../tags/gcc_5_3_0_release)
++++ b/src/gcc/ada/s-osinte-rtems.ads	(.../branches/gcc-5-branch)
+@@ -51,6 +51,8 @@
+ --  It is designed to be a bottom-level (leaf) package.
+ 
+ with Interfaces.C;
++with System.OS_Constants;
++
+ package System.OS_Interface is
+    pragma Preelaborate;
+ 
+@@ -60,6 +62,7 @@
+    subtype rtems_id       is Interfaces.C.unsigned;
+ 
+    subtype int            is Interfaces.C.int;
++   subtype char           is Interfaces.C.char;
+    subtype short          is Interfaces.C.short;
+    subtype long           is Interfaces.C.long;
+    subtype unsigned       is Interfaces.C.unsigned;
+@@ -68,7 +71,6 @@
+    subtype unsigned_char  is Interfaces.C.unsigned_char;
+    subtype plain_char     is Interfaces.C.plain_char;
+    subtype size_t         is Interfaces.C.size_t;
+-
+    -----------
+    -- Errno --
+    -----------
+@@ -76,11 +78,11 @@
+    function errno return int;
+    pragma Import (C, errno, "__get_errno");
+ 
+-   EAGAIN    : constant := 11;
+-   EINTR     : constant := 4;
+-   EINVAL    : constant := 22;
+-   ENOMEM    : constant := 12;
+-   ETIMEDOUT : constant := 116;
++   EAGAIN    : constant := System.OS_Constants.EAGAIN;
++   EINTR     : constant := System.OS_Constants.EINTR;
++   EINVAL    : constant := System.OS_Constants.EINVAL;
++   ENOMEM    : constant := System.OS_Constants.ENOMEM;
++   ETIMEDOUT : constant := System.OS_Constants.ETIMEDOUT;
+ 
+    -------------
+    -- Signals --
+@@ -448,6 +450,7 @@
+       ss_low_priority     : int;
+       ss_replenish_period : timespec;
+       ss_initial_budget   : timespec;
++      sched_ss_max_repl   : int;
+    end record;
+    pragma Convention (C, struct_sched_param);
+ 
+@@ -621,43 +624,34 @@
+    end record;
+    pragma Convention (C, timespec);
+ 
+-   CLOCK_REALTIME :  constant clockid_t := 1;
+-   CLOCK_MONOTONIC : constant clockid_t := 4;
++   CLOCK_REALTIME :  constant clockid_t := System.OS_Constants.CLOCK_REALTIME;
++   CLOCK_MONOTONIC : constant clockid_t := System.OS_Constants.CLOCK_MONOTONIC;
+ 
++   subtype char_array is Interfaces.C.char_array;
++
+    type pthread_attr_t is record
+-      is_initialized  : int;
+-      stackaddr       : System.Address;
+-      stacksize       : int;
+-      contentionscope : int;
+-      inheritsched    : int;
+-      schedpolicy     : int;
+-      schedparam      : struct_sched_param;
+-      cputime_clocked_allowed : int;
+-      detatchstate    : int;
++      Data : char_array (1 .. OS_Constants.PTHREAD_ATTR_SIZE);
+    end record;
+    pragma Convention (C, pthread_attr_t);
++   for pthread_attr_t'Alignment use Interfaces.C.double'Alignment;
+ 
+    type pthread_condattr_t is record
+-      flags           : int;
+-      process_shared  : int;
++      Data : char_array (1 .. OS_Constants.PTHREAD_CONDATTR_SIZE);
+    end record;
+    pragma Convention (C, pthread_condattr_t);
++   for pthread_condattr_t'Alignment use Interfaces.C.double'Alignment;
+ 
+    type pthread_mutexattr_t is record
+-      is_initialized  : int;
+-      process_shared  : int;
+-      prio_ceiling    : int;
+-      protocol        : int;
+-      mutex_type      : int;
+-      recursive       : int;
+-   end record;
++      Data : char_array (1 .. OS_Constants.PTHREAD_MUTEXATTR_SIZE);
++   end  record;
+    pragma Convention (C, pthread_mutexattr_t);
++   for pthread_mutexattr_t'Alignment use Interfaces.C.double'Alignment;
+ 
+    type pthread_rwlockattr_t is record
+-      is_initialized  : int;
+-      process_shared  : int;
++      Data : char_array (1 .. OS_Constants.PTHREAD_RWLOCKATTR_SIZE);
+    end record;
+    pragma Convention (C, pthread_rwlockattr_t);
++   for pthread_rwlockattr_t'Alignment use Interfaces.C.double'Alignment;
+ 
+    type pthread_t is new rtems_id;
+ 
+Index: gcc/ada/gcc-interface/Makefile.in
+===================================================================
+--- a/src/gcc/ada/gcc-interface/Makefile.in	(.../tags/gcc_5_3_0_release)
++++ b/src/gcc/ada/gcc-interface/Makefile.in	(.../branches/gcc-5-branch)
+@@ -1365,9 +1365,7 @@
+   s-osinte.adb<s-osinte-posix.adb \
+   s-osinte.ads<s-osinte-kfreebsd-gnu.ads \
+   s-osprim.adb<s-osprim-posix.adb \
+-  s-taprop.adb<s-taprop-linux.adb \
+-  s-tasinf.ads<s-tasinf-linux.ads \
+-  s-tasinf.adb<s-tasinf-linux.adb \
++  s-taprop.adb<s-taprop-posix.adb \
+   s-taspri.ads<s-taspri-posix.ads \
+   s-tpopsp.adb<s-tpopsp-posix-foreign.adb \
+   $(ATOMICS_TARGET_PAIRS) \
+@@ -1398,9 +1396,7 @@
+   s-osinte.adb<s-osinte-posix.adb \
+   s-osinte.ads<s-osinte-kfreebsd-gnu.ads \
+   s-osprim.adb<s-osprim-posix.adb \
+-  s-taprop.adb<s-taprop-linux.adb \
+-  s-tasinf.ads<s-tasinf-linux.ads \
+-  s-tasinf.adb<s-tasinf-linux.adb \
++  s-taprop.adb<s-taprop-posix.adb \
+   s-taspri.ads<s-taspri-posix.ads \
+   s-tpopsp.adb<s-tpopsp-posix-foreign.adb \
+   system.ads<system-freebsd-x86_64.ads
+Index: gcc/ada/s-osinte-freebsd.ads
+===================================================================
+--- a/src/gcc/ada/s-osinte-freebsd.ads	(.../tags/gcc_5_3_0_release)
++++ b/src/gcc/ada/s-osinte-freebsd.ads	(.../branches/gcc-5-branch)
+@@ -31,7 +31,7 @@
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+---  This is the FreeBSD PTHREADS version of this package
++--  This is the FreeBSD (POSIX Threads) version of this package
+ 
+ --  This package encapsulates all direct interfaces to OS services
+ --  that are needed by the tasking run-time (libgnarl).
+@@ -197,7 +197,7 @@
+ 
+    type timespec is private;
+ 
+-   function nanosleep (rqtp, rmtp : access timespec)  return int;
++   function nanosleep (rqtp, rmtp : access timespec) return int;
+    pragma Import (C, nanosleep, "nanosleep");
+ 
+    type clockid_t is new int;
+@@ -322,10 +322,7 @@
+    --  No alternate signal stack is used on this platform
+ 
+    Stack_Base_Available : constant Boolean := False;
+-   --  Indicates whether the stack base is available on this target. This
+-   --  allows us to share s-osinte.adb between all the FSU run time. Note that
+-   --  this value can only be true if pthread_t has a complete definition that
+-   --  corresponds exactly to the C header files.
++   --  Indicates whether the stack base is available on this target
+ 
+    function Get_Stack_Base (thread : pthread_t) return Address;
+    pragma Inline (Get_Stack_Base);
+Index: gcc/BASE-VER
+===================================================================
+--- a/src/gcc/BASE-VER	(.../tags/gcc_5_3_0_release)
++++ b/src/gcc/BASE-VER	(.../branches/gcc-5-branch)
+@@ -1 +1 @@
+-5.3.0
++5.3.1
+Index: gcc/calls.c
+===================================================================
+--- a/src/gcc/calls.c	(.../tags/gcc_5_3_0_release)
++++ b/src/gcc/calls.c	(.../branches/gcc-5-branch)
+@@ -576,12 +576,9 @@
+       /* We assume that alloca will always be called by name.  It
+ 	 makes no sense to pass it as a pointer-to-function to
+ 	 anything that does not understand its behavior.  */
+-      if (((IDENTIFIER_LENGTH (name_decl) == 6
+-	    && name[0] == 'a'
+-	    && ! strcmp (name, "alloca"))
+-	   || (IDENTIFIER_LENGTH (name_decl) == 16
+-	       && name[0] == '_'
+-	       && ! strcmp (name, "__builtin_alloca"))))
++      if (IDENTIFIER_LENGTH (name_decl) == 6
++	  && name[0] == 'a'
++	  && ! strcmp (name, "alloca"))
+ 	flags |= ECF_MAY_BE_ALLOCA;
+ 
+       /* Disregard prefix _, __, __x or __builtin_.  */
+@@ -627,6 +624,17 @@
+ 	flags |= ECF_NORETURN;
+     }
+ 
++  if (DECL_BUILT_IN_CLASS (fndecl) == BUILT_IN_NORMAL)
++    switch (DECL_FUNCTION_CODE (fndecl))
++      {
++      case BUILT_IN_ALLOCA:
++      case BUILT_IN_ALLOCA_WITH_ALIGN:
++	flags |= ECF_MAY_BE_ALLOCA;
++	break;
++      default:
++	break;
++      }
++
+   return flags;
+ }
+ 
+Index: gcc/tree-ssa-reassoc.c
+===================================================================
+--- a/src/gcc/tree-ssa-reassoc.c	(.../tags/gcc_5_3_0_release)
++++ b/src/gcc/tree-ssa-reassoc.c	(.../branches/gcc-5-branch)
+@@ -3286,7 +3286,7 @@
+     any_changes = optimize_range_tests (ERROR_MARK, &ops);
+   if (any_changes)
+     {
+-      unsigned int idx;
++      unsigned int idx, max_idx = 0;
+       /* update_ops relies on has_single_use predicates returning the
+ 	 same values as it did during get_ops earlier.  Additionally it
+ 	 never removes statements, only adds new ones and it should walk
+@@ -3302,6 +3302,7 @@
+ 	    {
+ 	      tree new_op;
+ 
++	      max_idx = idx;
+ 	      stmt = last_stmt (bb);
+ 	      new_op = update_ops (bbinfo[idx].op,
+ 				   (enum tree_code)
+@@ -3371,6 +3372,10 @@
+ 	      && ops[bbinfo[idx].first_idx]->op != NULL_TREE)
+ 	    {
+ 	      gcond *cond_stmt = as_a <gcond *> (last_stmt (bb));
++
++	      if (idx > max_idx)
++		max_idx = idx;
++
+ 	      if (integer_zerop (ops[bbinfo[idx].first_idx]->op))
+ 		gimple_cond_make_false (cond_stmt);
+ 	      else if (integer_onep (ops[bbinfo[idx].first_idx]->op))
+@@ -3387,6 +3392,17 @@
+ 	  if (bb == first_bb)
+ 	    break;
+ 	}
++
++      /* The above changes could result in basic blocks after the first
++	 modified one, up to and including last_bb, to be executed even if
++	 they would not be in the original program.  If the value ranges of
++	 assignment lhs' in those bbs were dependent on the conditions
++	 guarding those basic blocks which now can change, the VRs might
++	 be incorrect.  As no_side_effect_bb should ensure those SSA_NAMEs
++	 are only used within the same bb, it should be not a big deal if
++	 we just reset all the VRs in those bbs.  See PR68671.  */
++      for (bb = last_bb, idx = 0; idx < max_idx; bb = single_pred (bb), idx++)
++	reset_flow_sensitive_info_in_bb (bb);
+     }
+ }
+ 
+Index: gcc/config/rs6000/freebsd64.h
+===================================================================
+--- a/src/gcc/config/rs6000/freebsd64.h	(.../tags/gcc_5_3_0_release)
++++ b/src/gcc/config/rs6000/freebsd64.h	(.../branches/gcc-5-branch)
+@@ -65,6 +65,13 @@
+ #define INVALID_64BIT "-m%s not supported in this configuration"
+ #define INVALID_32BIT INVALID_64BIT
+ 
++/* Use LINUX64 instead of FREEBSD64 for compat with e.g. sysv4le.h */
++#ifdef LINUX64_DEFAULT_ABI_ELFv2
++#define ELFv2_ABI_CHECK (rs6000_elf_abi != 1)
++#else
++#define ELFv2_ABI_CHECK (rs6000_elf_abi == 2)
++#endif
++
+ #undef  SUBSUBTARGET_OVERRIDE_OPTIONS
+ #define SUBSUBTARGET_OVERRIDE_OPTIONS				\
+   do								\
+@@ -84,6 +91,12 @@
+ 	      rs6000_isa_flags &= ~OPTION_MASK_RELOCATABLE;	\
+ 	      error (INVALID_64BIT, "relocatable");		\
+ 	    }							\
++	  if (ELFv2_ABI_CHECK)					\
++	    {							\
++	      rs6000_current_abi = ABI_ELFv2;			\
++	      if (dot_symbols)					\
++		error ("-mcall-aixdesc incompatible with -mabi=elfv2"); \
++	    }							\
+ 	  if (rs6000_isa_flags & OPTION_MASK_EABI)		\
+ 	    {							\
+ 	      rs6000_isa_flags &= ~OPTION_MASK_EABI;		\
+Index: libgfortran/ChangeLog
+===================================================================
+--- a/src/libgfortran/ChangeLog	(.../tags/gcc_5_3_0_release)
++++ b/src/libgfortran/ChangeLog	(.../branches/gcc-5-branch)
+@@ -1,3 +1,9 @@
++2015-12-05  Juoko Orava <jouko.orava at iki.fi>
++
++	PR fortran/50201
++	* io/write_float.def: Avoid marking quadmath_snprintf as an untyped
++	weak reference, which fixing linking with -static.
++
+ 2015-12-04  Release Manager
+ 
+ 	* GCC 5.3.0 released.
+Index: libgfortran/io/write_float.def
+===================================================================
+--- a/src/libgfortran/io/write_float.def	(.../tags/gcc_5_3_0_release)
++++ b/src/libgfortran/io/write_float.def	(.../branches/gcc-5-branch)
+@@ -938,7 +938,7 @@
+ 
+ #if defined(GFC_REAL_16_IS_FLOAT128)
+ #define DTOA2Q(prec,val)							\
+-__qmath_(quadmath_snprintf) (buffer, size, "%+-#.*Qe", (prec), (val))
++quadmath_snprintf (buffer, size, "%+-#.*Qe", (prec), (val))
+ #endif
+ 
+ #define FDTOA(suff,prec,val) TOKENPASTE(FDTOA2,suff)(prec,val)
+@@ -953,7 +953,7 @@
+ 
+ #if defined(GFC_REAL_16_IS_FLOAT128)
+ #define FDTOA2Q(prec,val)			       \
+-__qmath_(quadmath_snprintf) (buffer, size, "%+-#.*Qf", \
++quadmath_snprintf (buffer, size, "%+-#.*Qf", \
+ 			     (prec), (val))
+ #endif
+ 
+Index: Makefile.def
+===================================================================
+--- a/src/Makefile.def	(.../tags/gcc_5_3_0_release)
++++ b/src/Makefile.def	(.../branches/gcc-5-branch)
+@@ -522,6 +522,7 @@
+ // on libgcc and newlib/libgloss.
+ lang_env_dependencies = { module=libjava; cxx=true; };
+ lang_env_dependencies = { module=libitm; cxx=true; };
++lang_env_dependencies = { module=libffi; cxx=true; };
+ lang_env_dependencies = { module=libcilkrts; cxx=true; };
+ lang_env_dependencies = { module=liboffloadmic; cxx=true; };
+ lang_env_dependencies = { module=newlib; no_c=true; };
diff --git a/debian/patches/sys-auxv-header.diff b/debian/patches/sys-auxv-header.diff
new file mode 100644
index 0000000..2402402
--- /dev/null
+++ b/debian/patches/sys-auxv-header.diff
@@ -0,0 +1,46 @@
+# DP: Check for the sys/auxv.h header file.
+
+Index: b/src/gcc/configure.ac
+===================================================================
+--- a/src/gcc/configure.ac
++++ b/src/gcc/configure.ac
+@@ -1032,6 +1032,7 @@ AC_HEADER_TIOCGWINSZ
+ AC_CHECK_HEADERS(limits.h stddef.h string.h strings.h stdlib.h time.h iconv.h \
+ 		 fcntl.h ftw.h unistd.h sys/file.h sys/time.h sys/mman.h \
+ 		 sys/resource.h sys/param.h sys/times.h sys/stat.h \
++		 sys/auxv.h \
+ 		 direct.h malloc.h langinfo.h ldfcn.h locale.h wchar.h)
+ 
+ # Check for thread headers.
+Index: b/src/gcc/config.in
+===================================================================
+--- a/src/gcc/config.in
++++ b/src/gcc/config.in
+@@ -1646,6 +1646,12 @@
+ #endif
+ 
+ 
++/* Define to 1 if you have the <sys/auxv.h> header file. */
++#ifndef USED_FOR_TARGET
++#undef HAVE_SYS_AUXV_H
++#endif
++
++
+ /* Define to 1 if you have the <sys/file.h> header file. */
+ #ifndef USED_FOR_TARGET
+ #undef HAVE_SYS_FILE_H
+Index: b/src/gcc/config/rs6000/driver-rs6000.c
+===================================================================
+--- a/src/gcc/config/rs6000/driver-rs6000.c
++++ b/src/gcc/config/rs6000/driver-rs6000.c
+@@ -31,6 +31,10 @@ along with GCC; see the file COPYING3.
+ # include <link.h>
+ #endif
+ 
++#ifdef HAVE_SYS_AUXV_H
++# include <sys/auxv.h>
++#endif
++
+ #if defined (__APPLE__) || (__FreeBSD__)
+ # include <sys/types.h>
+ # include <sys/sysctl.h>
diff --git a/debian/patches/testsuite-glibc-warnings.diff b/debian/patches/testsuite-glibc-warnings.diff
new file mode 100644
index 0000000..69f0eb4
--- /dev/null
+++ b/debian/patches/testsuite-glibc-warnings.diff
@@ -0,0 +1,29 @@
+# DP: fix testcases that triggered -Wunused-result with glibc
+# DP: Author: Steve Beattie <steve.beattie at canonical.com>
+---
+ src/gcc/testsuite/c-c++-common/cilk-plus/AN/comma_exp.c |    2 +-
+ src/gcc/testsuite/c-c++-common/tsan/fd_pipe_race.c      |    1 +
+ 2 files changed, 2 insertions(+), 1 deletion(-)
+
+Index: b/src/gcc/testsuite/c-c++-common/tsan/fd_pipe_race.c
+===================================================================
+--- a/src/gcc/testsuite/c-c++-common/tsan/fd_pipe_race.c
++++ b/src/gcc/testsuite/c-c++-common/tsan/fd_pipe_race.c
+@@ -1,5 +1,5 @@
+ /* { dg-shouldfail "tsan" } */
+-/* { dg-additional-options "-ldl" } */
++/* { dg-additional-options "-Wno-unused-result -ldl" } */
+ 
+ #include <pthread.h>
+ #include <unistd.h>
+Index: b/src/gcc/testsuite/c-c++-common/cilk-plus/AN/comma_exp.c
+===================================================================
+--- a/src/gcc/testsuite/c-c++-common/cilk-plus/AN/comma_exp.c
++++ b/src/gcc/testsuite/c-c++-common/cilk-plus/AN/comma_exp.c
+@@ -1,5 +1,5 @@
+ /* { dg-do run } */
+-/* { dg-options "-fcilkplus" } */
++/* { dg-options "-fcilkplus -Wno-unused-result" } */
+ 
+ #include <stdlib.h>
+ 
diff --git a/debian/patches/testsuite-hardening-format.diff b/debian/patches/testsuite-hardening-format.diff
new file mode 100644
index 0000000..220084a
--- /dev/null
+++ b/debian/patches/testsuite-hardening-format.diff
@@ -0,0 +1,382 @@
+#! /bin/sh -e
+
+# All lines beginning with `# DPATCH:' are a description of the patch.
+# DP: Description: use -Wno-format on tests that cannot be adjusted other ways.
+# DP: Author: Kees Cook <kees at ubuntu.com>
+# DP: Ubuntu: https://bugs.launchpad.net/bugs/344502
+
+dir=
+if [ $# -eq 3 -a "$2" = '-d' ]; then
+    pdir="-d $3"
+    dir="$3/"
+elif [ $# -ne 1 ]; then
+    echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+    exit 1
+fi
+case "$1" in
+    -patch)
+        patch $pdir -f --no-backup-if-mismatch -p1 < $0
+        #cd ${dir}gcc && autoconf
+        ;;
+    -unpatch)
+        patch $pdir -f --no-backup-if-mismatch -R -p1 < $0
+        #rm ${dir}gcc/configure
+        ;;
+    *)
+        echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+        exit 1
+esac
+exit 0
+
+---
+ src/boehm-gc/testsuite/boehm-gc.c/middle.c                 |    3 +++
+ src/gcc/testsuite/c-c++-common/torture/vector-compare-1.c  |    1 +
+ src/gcc/testsuite/g++.dg/abi/pragma-pack1.C                |    2 ++
+ src/gcc/testsuite/g++.dg/abi/regparm1.C                    |    1 +
+ src/gcc/testsuite/g++.dg/cpp0x/constexpr-tuple.C           |    1 +
+ src/gcc/testsuite/g++.dg/torture/pr51436.C                 |    1 +
+ src/gcc/testsuite/g++.old-deja/g++.law/weak.C              |    2 +-
+ src/gcc/testsuite/g++.old-deja/g++.other/std1.C            |    1 +
+ src/gcc/testsuite/gcc.c-torture/execute/vfprintf-chk-1.x   |    5 +++++
+ src/gcc/testsuite/gcc.c-torture/execute/vprintf-chk-1.x    |    5 +++++
+ src/gcc/testsuite/gcc.dg/charset/builtin2.c                |    2 +-
+ src/gcc/testsuite/gcc.dg/format/format.exp                 |    2 +-
+ src/gcc/testsuite/gcc.dg/ipa/ipa-sra-1.c                   |    2 +-
+ src/gcc/testsuite/gcc.dg/lto/20090218-2_0.c                |    2 ++
+ src/gcc/testsuite/gcc.dg/pr30473.c                         |    2 +-
+ src/gcc/testsuite/gcc.dg/pr38902.c                         |    2 +-
+ src/gcc/testsuite/gcc.dg/pr59418.c                         |    2 +-
+ src/gcc/testsuite/gcc.dg/torture/tls/tls-test.c            |    2 +-
+ src/gcc/testsuite/gcc.dg/tree-ssa/builtin-fprintf-1.c      |    2 +-
+ src/gcc/testsuite/gcc.dg/tree-ssa/builtin-fprintf-chk-1.c  |    2 +-
+ src/gcc/testsuite/gcc.dg/tree-ssa/builtin-printf-1.c       |    2 +-
+ src/gcc/testsuite/gcc.dg/tree-ssa/builtin-printf-chk-1.c   |    2 +-
+ src/gcc/testsuite/gcc.dg/tree-ssa/builtin-vfprintf-1.c     |    2 +-
+ src/gcc/testsuite/gcc.dg/tree-ssa/builtin-vfprintf-chk-1.c |    2 +-
+ src/gcc/testsuite/gcc.dg/tree-ssa/builtin-vprintf-1.c      |    2 +-
+ src/gcc/testsuite/gcc.dg/tree-ssa/builtin-vprintf-chk-1.c  |    2 +-
+ src/gcc/testsuite/gcc.dg/tree-ssa/isolate-4.c              |    2 +-
+ src/gcc/testsuite/objc.dg/torture/strings/const-str-3.m    |    2 +-
+ 28 files changed, 40 insertions(+), 18 deletions(-)
+
+Index: b/src/gcc/testsuite/gcc.c-torture/execute/vfprintf-chk-1.x
+===================================================================
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.c-torture/execute/vfprintf-chk-1.x
+@@ -0,0 +1,5 @@
++# Implement "/* { dg-options "-U_FORITFY_SOURCE" } */", due to
++# http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20567
++
++set additional_flags "-U_FORTIFY_SOURCE"
++return 0
+Index: b/src/gcc/testsuite/gcc.c-torture/execute/vprintf-chk-1.x
+===================================================================
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.c-torture/execute/vprintf-chk-1.x
+@@ -0,0 +1,5 @@
++# Implement "/* { dg-options "-U_FORITFY_SOURCE" } */", due to
++# http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20567
++
++set additional_flags "-U_FORTIFY_SOURCE"
++return 0
+Index: b/src/gcc/testsuite/gcc.dg/charset/builtin2.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.dg/charset/builtin2.c
++++ b/src/gcc/testsuite/gcc.dg/charset/builtin2.c
+@@ -3,7 +3,7 @@
+ 
+ /* { dg-do compile } */
+ /* { dg-require-iconv "IBM1047" } */
+-/* { dg-options "-O2 -fexec-charset=IBM1047" } */
++/* { dg-options "-O2 -fexec-charset=IBM1047 -Wno-format" } */
+ /* { dg-final { scan-assembler-not "printf" } } */
+ /* { dg-final { scan-assembler-not "fprintf" } } */
+ /* { dg-final { scan-assembler-not "sprintf" } } */
+Index: b/src/gcc/testsuite/gcc.dg/format/format.exp
+===================================================================
+--- a/src/gcc/testsuite/gcc.dg/format/format.exp
++++ b/src/gcc/testsuite/gcc.dg/format/format.exp
+@@ -26,7 +26,7 @@ load_lib gcc-dg.exp
+ load_lib torture-options.exp
+ 
+ torture-init
+-set-torture-options [list { } { -DWIDE } ]
++set-torture-options [list { -Wformat=0 } { -DWIDE -Wformat=0 } ]
+ 
+ dg-init
+ gcc-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.\[cS\]]] "" ""
+Index: b/src/gcc/testsuite/gcc.dg/pr30473.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.dg/pr30473.c
++++ b/src/gcc/testsuite/gcc.dg/pr30473.c
+@@ -1,7 +1,7 @@
+ /* PR middle-end/30473 */
+ /* Make sure this doesn't ICE.  */
+ /* { dg-do compile } */
+-/* { dg-options "-O2" } */
++/* { dg-options "-O2 -Wno-format" } */
+ 
+ extern int sprintf (char *, const char *, ...);
+ 
+Index: b/src/gcc/testsuite/gcc.dg/pr38902.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.dg/pr38902.c
++++ b/src/gcc/testsuite/gcc.dg/pr38902.c
+@@ -1,6 +1,6 @@
+ /* PR target/38902 */
+ /* { dg-do run } */
+-/* { dg-options "-O2 -fstack-protector" } */
++/* { dg-options "-O2 -fstack-protector -Wno-format" } */
+ /* { dg-require-effective-target fstack_protector } */
+ 
+ #ifdef DEBUG
+Index: b/src/gcc/testsuite/gcc.dg/pr59418.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.dg/pr59418.c
++++ b/src/gcc/testsuite/gcc.dg/pr59418.c
+@@ -2,7 +2,7 @@
+ /* Reported by Ryan Mansfield <rmansfield at qnx.com> */
+ 
+ /* { dg-do compile } */
+-/* { dg-options "-Os -g" } */
++/* { dg-options "-Os -g -Wno-format-zero-length" } */
+ /* { dg-options "-march=armv7-a -mfloat-abi=hard -Os -g" { target { arm*-*-* && { ! arm_thumb1 } } } } */
+ 
+ extern int printf (const char *__format, ...);
+Index: b/src/gcc/testsuite/gcc.dg/ipa/ipa-sra-1.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.dg/ipa/ipa-sra-1.c
++++ b/src/gcc/testsuite/gcc.dg/ipa/ipa-sra-1.c
+@@ -1,5 +1,5 @@
+ /* { dg-do run } */
+-/* { dg-options "-O2 -fipa-sra -fdump-tree-eipa_sra-details"  } */
++/* { dg-options "-O2 -fipa-sra -fdump-tree-eipa_sra-details -Wformat=0"  } */
+ 
+ struct bovid
+ {
+Index: b/src/gcc/testsuite/gcc.dg/lto/20090218-2_0.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.dg/lto/20090218-2_0.c
++++ b/src/gcc/testsuite/gcc.dg/lto/20090218-2_0.c
+@@ -1,3 +1,5 @@
++/* { dg-lto-options "-Wno-nonnull" } */
++
+ void set_mem_alias_set ();
+ void emit_push_insn () {
+   set_mem_alias_set ();
+Index: b/src/gcc/testsuite/c-c++-common/torture/vector-compare-1.c
+===================================================================
+--- a/src/gcc/testsuite/c-c++-common/torture/vector-compare-1.c
++++ b/src/gcc/testsuite/c-c++-common/torture/vector-compare-1.c
+@@ -1,4 +1,5 @@
+ /* { dg-do run } */
++/* { dg-options "-Wformat=0" } */
+ #define vector(elcount, type)  \
+ __attribute__((vector_size((elcount)*sizeof(type)))) type
+ 
+Index: b/src/gcc/testsuite/gcc.dg/tree-ssa/isolate-4.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/isolate-4.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/isolate-4.c
+@@ -1,5 +1,5 @@
+ /* { dg-do compile } */ 
+-/* { dg-options "-O2 -fisolate-erroneous-paths-attribute -fdump-tree-isolate-paths -fdump-tree-phicprop1" } */
++/* { dg-options "-O2 -fisolate-erroneous-paths-attribute -fdump-tree-isolate-paths -fdump-tree-phicprop1 -Wno-nonnull" } */
+ /* { dg-skip-if "" keeps_null_pointer_checks } */
+ 
+ 
+Index: b/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-vprintf-chk-1.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-vprintf-chk-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-vprintf-chk-1.c
+@@ -1,5 +1,5 @@
+ /* { dg-do compile } */
+-/* { dg-options "-O2 -fdump-tree-fab1" } */
++/* { dg-options "-O2 -fdump-tree-fab1 -Wno-format-zero-length" } */
+ 
+ #include <stdarg.h>
+ 
+Index: b/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-vprintf-1.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-vprintf-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-vprintf-1.c
+@@ -1,5 +1,5 @@
+ /* { dg-do compile } */
+-/* { dg-options "-O2 -fdump-tree-fab1" } */
++/* { dg-options "-O2 -fdump-tree-fab1 -Wno-format-zero-length" } */
+ 
+ #include <stdarg.h>
+ 
+Index: b/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-printf-1.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-printf-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-printf-1.c
+@@ -1,5 +1,5 @@
+ /* { dg-do compile } */
+-/* { dg-options "-O2 -fdump-tree-fab1" } */
++/* { dg-options "-O2 -fdump-tree-fab1 -Wno-format-zero-length" } */
+ 
+ extern int printf (const char *, ...);
+ volatile int vi0, vi1, vi2, vi3, vi4, vi5, vi6, vi7, vi8, vi9, via;
+Index: b/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-printf-chk-1.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-printf-chk-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-printf-chk-1.c
+@@ -1,5 +1,5 @@
+ /* { dg-do compile } */
+-/* { dg-options "-O2 -fdump-tree-fab1" } */
++/* { dg-options "-O2 -fdump-tree-fab1 -Wno-format-zero-length" } */
+ 
+ extern int __printf_chk (int, const char *, ...);
+ volatile int vi0, vi1, vi2, vi3, vi4, vi5, vi6, vi7, vi8, vi9, via;
+Index: b/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-fprintf-1.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-fprintf-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-fprintf-1.c
+@@ -1,5 +1,5 @@
+ /* { dg-do compile } */
+-/* { dg-options "-O2 -fdump-tree-fab1" } */
++/* { dg-options "-O2 -fdump-tree-fab1 -Wno-format-zero-length" } */
+ 
+ typedef struct { int i; } FILE;
+ FILE *fp;
+Index: b/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-fprintf-chk-1.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-fprintf-chk-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-fprintf-chk-1.c
+@@ -1,5 +1,5 @@
+ /* { dg-do compile } */
+-/* { dg-options "-O2 -fdump-tree-fab1" } */
++/* { dg-options "-O2 -fdump-tree-fab1 -Wno-format-zero-length" } */
+ 
+ typedef struct { int i; } FILE;
+ FILE *fp;
+Index: b/src/gcc/testsuite/gcc.dg/torture/tls/tls-test.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.dg/torture/tls/tls-test.c
++++ b/src/gcc/testsuite/gcc.dg/torture/tls/tls-test.c
+@@ -1,7 +1,7 @@
+ /* { dg-do run }  */
+ /* { dg-require-effective-target tls  }  */
+ /* { dg-require-effective-target pthread } */
+-/* { dg-options "-pthread" } */
++/* { dg-options "-pthread -Wformat=0" } */
+ 
+ #include <pthread.h>
+ extern int printf (char *,...);
+Index: b/src/boehm-gc/testsuite/boehm-gc.c/middle.c
+===================================================================
+--- a/src/boehm-gc/testsuite/boehm-gc.c/middle.c
++++ b/src/boehm-gc/testsuite/boehm-gc.c/middle.c
+@@ -2,6 +2,9 @@
+  * Test at the boundary between small and large objects.
+  * Inspired by a test case from Zoltan Varga.
+  */
++
++/* { dg-options "-Wformat=0" } */
++
+ #include <gc.h>
+ #include <stdio.h>
+ 
+Index: b/src/gcc/testsuite/objc.dg/torture/strings/const-str-3.m
+===================================================================
+--- a/src/gcc/testsuite/objc.dg/torture/strings/const-str-3.m
++++ b/src/gcc/testsuite/objc.dg/torture/strings/const-str-3.m
+@@ -2,7 +2,7 @@
+ /* Developed by Markus Hitter <mah at jump-ing.de>.  */
+ /* { dg-do run } */
+ /* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */
+-/* { dg-options "-fconstant-string-class=Foo" } */
++/* { dg-options "-fconstant-string-class=Foo -Wno-format-security" } */
+ /* { dg-options "-mno-constant-cfstrings -fconstant-string-class=Foo" { target *-*-darwin* } } */
+ 
+ #include "../../../objc-obj-c++-shared/objc-test-suite-types.h"
+Index: b/src/gcc/testsuite/g++.dg/abi/pragma-pack1.C
+===================================================================
+--- a/src/gcc/testsuite/g++.dg/abi/pragma-pack1.C
++++ b/src/gcc/testsuite/g++.dg/abi/pragma-pack1.C
+@@ -1,5 +1,7 @@
+ // PR c++/7046
+ 
++// { dg-options "-Wformat=0" }
++
+ extern "C" int printf (const char *, ...);
+ 
+ #pragma pack(4)
+Index: b/src/gcc/testsuite/g++.dg/abi/regparm1.C
+===================================================================
+--- a/src/gcc/testsuite/g++.dg/abi/regparm1.C
++++ b/src/gcc/testsuite/g++.dg/abi/regparm1.C
+@@ -1,6 +1,7 @@
+ // PR c++/29911 (9381)
+ // { dg-do run { target i?86-*-* x86_64-*-* } }
+ // { dg-require-effective-target c++11 }
++// { dg-options "-Wformat=0" }
+ 
+ extern "C" int printf(const char *, ...);
+ 
+Index: b/src/gcc/testsuite/g++.dg/cpp0x/constexpr-tuple.C
+===================================================================
+--- a/src/gcc/testsuite/g++.dg/cpp0x/constexpr-tuple.C
++++ b/src/gcc/testsuite/g++.dg/cpp0x/constexpr-tuple.C
+@@ -1,5 +1,6 @@
+ // PR c++/53202
+ // { dg-do run { target c++11 } }
++// { dg-options "-Wformat=0" }
+ 
+ #include <tuple>
+ 
+Index: b/src/gcc/testsuite/g++.dg/torture/pr51436.C
+===================================================================
+--- a/src/gcc/testsuite/g++.dg/torture/pr51436.C
++++ b/src/gcc/testsuite/g++.dg/torture/pr51436.C
+@@ -1,4 +1,5 @@
+ /* { dg-do compile } */
++/* { dg-options "-Wno-nonnull" } */
+ 
+ typedef __SIZE_TYPE__ size_t;
+ extern "C" void *memcpy (void *, __const void *, size_t);
+Index: b/src/gcc/testsuite/g++.old-deja/g++.law/weak.C
+===================================================================
+--- a/src/gcc/testsuite/g++.old-deja/g++.law/weak.C
++++ b/src/gcc/testsuite/g++.old-deja/g++.law/weak.C
+@@ -1,6 +1,6 @@
+ // { dg-do link { target i?86-*-linux* i?86-*-gnu* x86_64-*-linux* } }
+ // { dg-require-effective-target static }
+-// { dg-options "-static" }
++// { dg-options "-static -Wno-nonnull" }
+ // Bug: g++ fails to instantiate operator<<.
+ 
+ // libc-5.4.xx has __IO_putc in its static C library, which can conflict
+Index: b/src/gcc/testsuite/g++.old-deja/g++.other/std1.C
+===================================================================
+--- a/src/gcc/testsuite/g++.old-deja/g++.other/std1.C
++++ b/src/gcc/testsuite/g++.old-deja/g++.other/std1.C
+@@ -1,4 +1,5 @@
+ // { dg-do assemble  }
++// { dg-options "-Wno-nonnull" }
+ // Origin: Mark Mitchell <mark at codesourcery.com>
+ 
+ extern "C" int memcmp (const void * __s1,
+Index: b/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-vfprintf-1.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-vfprintf-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-vfprintf-1.c
+@@ -1,5 +1,5 @@
+ /* { dg-do compile } */
+-/* { dg-options "-O2 -fdump-tree-fab1" } */
++/* { dg-options "-O2 -fdump-tree-fab1 -Wno-format-zero-length" } */
+ 
+ #include <stdarg.h>
+ 
+Index: b/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-vfprintf-chk-1.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-vfprintf-chk-1.c
++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-vfprintf-chk-1.c
+@@ -1,5 +1,5 @@
+ /* { dg-do compile } */
+-/* { dg-options "-O2 -fdump-tree-fab1" } */
++/* { dg-options "-O2 -fdump-tree-fab1 -Wno-format-zero-length" } */
+ 
+ #include <stdarg.h>
+ 
diff --git a/debian/patches/testsuite-hardening-printf-types.diff b/debian/patches/testsuite-hardening-printf-types.diff
new file mode 100644
index 0000000..fb16fb9
--- /dev/null
+++ b/debian/patches/testsuite-hardening-printf-types.diff
@@ -0,0 +1,667 @@
+# DP: Description: adjust/standardize printf types to avoid -Wformat warnings.
+# DP: Author: Kees Cook <kees at ubuntu.com>
+# DP: Ubuntu: https://bugs.launchpad.net/bugs/344502
+
+Index: b/src/gcc/testsuite/g++.dg/ext/align1.C
+===================================================================
+--- a/src/gcc/testsuite/g++.dg/ext/align1.C
++++ b/src/gcc/testsuite/g++.dg/ext/align1.C
+@@ -16,6 +16,7 @@ float f1 __attribute__ ((aligned));
+ int
+ main (void)
+ {
+-  printf ("%d %d\n", __alignof (a1), __alignof (f1));
++  // "%td" is not allowed by ISO C++, so use %p with a void * cast
++  printf ("%p %p\n", (void*)__alignof (a1), (void*)__alignof (f1));
+   return (__alignof (a1) < __alignof (f1));
+ }
+Index: b/src/gcc/testsuite/g++.old-deja/g++.law/operators28.C
+===================================================================
+--- a/src/gcc/testsuite/g++.old-deja/g++.law/operators28.C
++++ b/src/gcc/testsuite/g++.old-deja/g++.law/operators28.C
+@@ -14,7 +14,8 @@ void* new_test::operator new(size_t sz,
+ {
+   void *p;
+ 
+-  printf("%d %d %d\n", sz, count, type);
++  // ISO C++ does not support format size modifier "z", so use a cast
++  printf("%u %d %d\n", (unsigned int)sz, count, type);
+ 
+   p = new char[sz * count];
+   ((new_test *)p)->type = type;
+Index: b/src/gcc/testsuite/gcc.dg/torture/matrix-2.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.dg/torture/matrix-2.c
++++ b/src/gcc/testsuite/gcc.dg/torture/matrix-2.c
+@@ -42,7 +42,7 @@ main (int argc, char **argv)
+     }
+   for (i = 0; i < ARCHnodes; i++)
+     for (j = 0; j < 3; j++)
+-      printf ("%x\n",vel[i][j]);
++      printf ("%p\n",vel[i][j]);
+       /*if (i!=1 || j!=1)*/
+       /*if (i==1 && j==1)
+         continue;
+@@ -83,14 +83,14 @@ mem_init (void)
+       for (j = 0; j < 3; j++)
+ 	{
+ 	  vel[i][j] = (int *) malloc (ARCHnodes1 * sizeof (int));
+-          printf ("%x %d %d\n",vel[i][j], ARCHnodes1, sizeof (int));
++          printf ("%p %d %d\n",vel[i][j], ARCHnodes1, (int)sizeof (int));
+ 	}
+     }
+    for (i = 0; i < ARCHnodes; i++)
+     {
+       for (j = 0; j < 3; j++)
+         {
+-          printf ("%x\n",vel[i][j]);
++          printf ("%p\n",vel[i][j]);
+         }
+     }
+ 
+@@ -99,7 +99,7 @@ mem_init (void)
+     {
+       for (j = 0; j < 3; j++)
+ 	{
+-	  printf ("%x\n",vel[i][j]);
++	  printf ("%p\n",vel[i][j]);
+           /*for (k = 0; k < ARCHnodes1; k++)
+ 	    {
+ 	      vel[i][j][k] = d;
+Index: b/src/gcc/testsuite/gcc.dg/packed-vla.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.dg/packed-vla.c
++++ b/src/gcc/testsuite/gcc.dg/packed-vla.c
+@@ -18,8 +18,8 @@ int func(int levels)
+     int			b[4];
+   } __attribute__ ((__packed__)) foo;
+ 
+-  printf("foo %d\n", sizeof(foo));
+-  printf("bar %d\n", sizeof(bar));
++  printf("foo %d\n", (int)sizeof(foo));
++  printf("bar %d\n", (int)sizeof(bar));
+ 
+   if (sizeof (foo) != sizeof (bar))
+     abort ();
+Index: b/src/gcc/testsuite/g++.dg/opt/alias2.C
+===================================================================
+--- a/src/gcc/testsuite/g++.dg/opt/alias2.C
++++ b/src/gcc/testsuite/g++.dg/opt/alias2.C
+@@ -30,14 +30,14 @@ public:
+ 
+ 
+ _Deque_base::~_Deque_base() {
+-  printf ("bb %x %x\n", this, *_M_start._M_node);
++  printf ("bb %p %x\n", this, *_M_start._M_node);
+ }
+ 
+ void
+ _Deque_base::_M_initialize_map()
+ {
+   yy = 0x123;
+-  printf ("aa %x %x\n", this, yy);
++  printf ("aa %p %x\n", this, yy);
+ 
+   _M_start._M_node = &yy;
+   _M_start._M_cur = yy;
+Index: b/src/gcc/testsuite/g++.old-deja/g++.abi/vbase1.C
+===================================================================
+--- a/src/gcc/testsuite/g++.old-deja/g++.abi/vbase1.C
++++ b/src/gcc/testsuite/g++.old-deja/g++.abi/vbase1.C
+@@ -33,7 +33,7 @@ struct VBase
+   void Offset () const
+   {
+     printf ("VBase\n");
+-    printf ("  VBase::member %d\n", &this->VBase::member - (int *)this);
++    printf ("  VBase::member %d\n", (int)(&this->VBase::member - (int *)this));
+   }
+ };
+ 
+@@ -55,8 +55,8 @@ struct VDerived : virtual VBase
+   void Offset () const
+   {
+     printf ("VDerived\n");
+-    printf ("  VBase::member %d\n", &this->VBase::member - (int *)this);
+-    printf ("  VDerived::member %d\n", &this->VDerived::member - (int *)this);
++    printf ("  VBase::member %d\n", (int)(&this->VBase::member - (int *)this));
++    printf ("  VDerived::member %d\n", (int)(&this->VDerived::member - (int *)this));
+   }
+ };
+ struct B : virtual VBase
+@@ -65,8 +65,8 @@ struct B : virtual VBase
+   void Offset () const
+   {
+     printf ("B\n");
+-    printf ("  VBase::member %d\n", &this->VBase::member - (int *)this);
+-    printf ("  B::member %d\n", &this->B::member - (int *)this);
++    printf ("  VBase::member %d\n", (int)(&this->VBase::member - (int *)this));
++    printf ("  B::member %d\n", (int)(&this->B::member - (int *)this));
+   }
+ };
+ struct MostDerived : B, virtual VDerived
+@@ -75,10 +75,10 @@ struct MostDerived : B, virtual VDerived
+   void Offset () const
+   {
+     printf ("MostDerived\n");
+-    printf ("  VBase::member %d\n", &this->VBase::member - (int *)this);
+-    printf ("  B::member %d\n", &this->B::member - (int *)this);
+-    printf ("  VDerived::member %d\n", &this->VDerived::member - (int *)this);
+-    printf ("  MostDerived::member %d\n", &this->MostDerived::member - (int *)this);
++    printf ("  VBase::member %d\n", (int)(&this->VBase::member - (int *)this));
++    printf ("  B::member %d\n", (int)(&this->B::member - (int *)this));
++    printf ("  VDerived::member %d\n", (int)(&this->VDerived::member - (int *)this));
++    printf ("  MostDerived::member %d\n", (int)(&this->MostDerived::member - (int *)this));
+   }
+ };
+ 
+@@ -95,10 +95,10 @@ int main ()
+     if (ctorVDerived != &dum.VDerived::member)
+       return 24;
+     
+-    printf ("  VBase::member %d\n", &dum.VBase::member - this_);
+-    printf ("  B::member %d\n", &dum.B::member - this_);
+-    printf ("  VDerived::member %d\n", &dum.VDerived::member - this_);
+-    printf ("  MostDerived::member %d\n", &dum.MostDerived::member - this_);
++    printf ("  VBase::member %d\n", (int)(&dum.VBase::member - this_));
++    printf ("  B::member %d\n", (int)(&dum.B::member - this_));
++    printf ("  VDerived::member %d\n", (int)(&dum.VDerived::member - this_));
++    printf ("  MostDerived::member %d\n", (int)(&dum.MostDerived::member - this_));
+     dum.MostDerived::Offset ();
+     dum.B::Offset ();
+     dum.VDerived::Offset ();
+Index: b/src/gcc/testsuite/g++.old-deja/g++.brendan/template8.C
+===================================================================
+--- a/src/gcc/testsuite/g++.old-deja/g++.brendan/template8.C
++++ b/src/gcc/testsuite/g++.old-deja/g++.brendan/template8.C
+@@ -15,6 +15,6 @@ int main(){
+ 	
+ 	Double_alignt<20000> heap;
+ 
+-	printf(" &heap.array[0] = %d, &heap.for_alignt = %d\n", &heap.array[0], &heap.for_alignt);
++	printf(" &heap.array[0] = %p, &heap.for_alignt = %p\n", (void*)&heap.array[0], (void*)&heap.for_alignt);
+ 
+ }
+Index: b/src/gcc/testsuite/g++.old-deja/g++.eh/ptr1.C
+===================================================================
+--- a/src/gcc/testsuite/g++.old-deja/g++.eh/ptr1.C
++++ b/src/gcc/testsuite/g++.old-deja/g++.eh/ptr1.C
+@@ -16,7 +16,7 @@ int main()
+   }
+ 
+   catch (E *&e) {
+-    printf ("address of e is 0x%lx\n", (__SIZE_TYPE__)e);
++    printf ("address of e is %p\n", (void *)e);
+     return !((__SIZE_TYPE__)e != 5 && e->x == 5);
+   }
+   return 2;
+Index: b/src/gcc/testsuite/g++.old-deja/g++.jason/access23.C
+===================================================================
+--- a/src/gcc/testsuite/g++.old-deja/g++.jason/access23.C
++++ b/src/gcc/testsuite/g++.old-deja/g++.jason/access23.C
+@@ -42,19 +42,19 @@ public:
+   void DoSomething() {
+     PUB_A = 0;
+     Foo::A = 0;
+-    printf("%x\n",pX);  
++    printf("%p\n",pX);  
+     Foo::PUB.A = 0;
+-    printf("%x\n",PUB.pX);  
++    printf("%p\n",PUB.pX);  
+     B = 0;			
+-    printf("%x\n",Foo::pY);  
++    printf("%p\n",Foo::pY);  
+     PRT_A = 0;
+     PRT.B = 0;		
+-    printf("%x\n",Foo::PRT.pY);	
++    printf("%p\n",Foo::PRT.pY);	
+     PRV_A = 0;			// { dg-error "" } 
+     Foo::C = 0;			// { dg-error "" } 
+-    printf("%x\n",pZ);  	// { dg-error "" } 
++    printf("%p\n",pZ);  	// { dg-error "" } 
+     Foo::PRV.C = 0;		// { dg-error "" } 
+-    printf("%x\n",PRV.pZ); 	// { dg-error "" } 
++    printf("%p\n",PRV.pZ); 	// { dg-error "" } 
+   }
+ };
+ 
+@@ -64,17 +64,17 @@ int main()
+ 
+   a.PUB_A = 0;
+   a.A = 0;
+-  printf("%x\n",a.pX);  
++  printf("%p\n",a.pX);  
+   a.PRT_A = 0;			// { dg-error "" } 
+   a.B = 0;			// { dg-error "" } 
+-  printf("%x\n",a.pY);  	// { dg-error "" } 
++  printf("%p\n",a.pY);  	// { dg-error "" } 
+   a.PRV_A = 0;			// { dg-error "" } 
+   a.C = 0;			// { dg-error "" } 
+-  printf("%x\n",a.pZ);  	// { dg-error "" } 
++  printf("%p\n",a.pZ);  	// { dg-error "" } 
+   a.PUB.A = 0;
+-  printf("%x\n",a.PUB.pX);  
++  printf("%p\n",a.PUB.pX);  
+   a.PRT.B = 0;			// { dg-error "" } 
+-  printf("%x\n",a.PRT.pY);  	// { dg-error "" } 
++  printf("%p\n",a.PRT.pY);  	// { dg-error "" } 
+   a.PRV.C = 0;			// { dg-error "" } 
+-  printf("%x\n",a.PRV.pZ);  	// { dg-error "" } 
++  printf("%p\n",a.PRV.pZ);  	// { dg-error "" } 
+ }
+Index: b/src/gcc/testsuite/g++.old-deja/g++.law/cvt8.C
+===================================================================
+--- a/src/gcc/testsuite/g++.old-deja/g++.law/cvt8.C
++++ b/src/gcc/testsuite/g++.old-deja/g++.law/cvt8.C
+@@ -20,12 +20,12 @@ struct B {
+ B::operator const A&() const {
+         static A a;
+         a.i = i;
+-        printf("convert B to A at %x\n", &a);
++        printf("convert B to A at %p\n", (void*)&a);
+         return a;
+ }
+ 
+ void f(A &a) { // { dg-message "" } in passing argument
+-        printf("A at %x is %d\n", &a, a.i);
++  printf("A at %p is %d\n", (void*)&a, a.i);
+ }
+ 
+ int main() {
+Index: b/src/gcc/testsuite/g++.old-deja/g++.mike/net35.C
+===================================================================
+--- a/src/gcc/testsuite/g++.old-deja/g++.mike/net35.C
++++ b/src/gcc/testsuite/g++.old-deja/g++.mike/net35.C
+@@ -17,10 +17,10 @@ public:
+ 
+ int main() {
+   C c;
+-  printf("&c.x = %x\n", &c.x);
+-  printf("&c.B1::x = %x\n", &c.B1::x);
+-  printf("&c.B2::x = %x\n", &c.B2::x);
+-  printf("&c.A::x = %x\n", &c.A::x);
++  printf("&c.x = %p\n", (void*)&c.x);
++  printf("&c.B1::x = %p\n", (void*)&c.B1::x);
++  printf("&c.B2::x = %p\n", (void*)&c.B2::x);
++  printf("&c.A::x = %p\n", (void*)&c.A::x);
+   if (&c.x != &c.B1::x
+       || &c.x != &c.B2::x
+       || &c.x != &c.A::x)
+Index: b/src/gcc/testsuite/g++.old-deja/g++.mike/offset1.C
+===================================================================
+--- a/src/gcc/testsuite/g++.old-deja/g++.mike/offset1.C
++++ b/src/gcc/testsuite/g++.old-deja/g++.mike/offset1.C
+@@ -6,7 +6,7 @@ int fail = 0;
+ class Foo {
+ public:
+    virtual void setName() {
+-     printf("Foo at %x\n", this);
++     printf("Foo at %p\n", (void*)this);
+      if (vp != (void*)this)
+        fail = 1;
+    }
+@@ -15,7 +15,7 @@ public:
+ class Bar : public Foo {
+ public:
+   virtual void init(int argc, char **argv) {
+-    printf("Bar's Foo at %x\n", (Foo*)this);
++    printf("Bar's Foo at %p\n", (void*)(Foo*)this);
+     vp = (void*)(Foo*)this;
+     setName();
+   }
+Index: b/src/gcc/testsuite/g++.old-deja/g++.mike/p12306.C
+===================================================================
+--- a/src/gcc/testsuite/g++.old-deja/g++.mike/p12306.C
++++ b/src/gcc/testsuite/g++.old-deja/g++.mike/p12306.C
+@@ -18,7 +18,7 @@ public:
+     if (ptr2 != &(*this).slist)
+       fail = 6;
+ 
+-    if (0) printf("at %x %x\n", (RWSlistIterator*)this, &(*this).slist);
++    if (0) printf("at %p %p\n", (void*)(RWSlistIterator*)this, (void*)&(*this).slist);
+   }
+ };
+ 
+@@ -54,14 +54,14 @@ Sim_Event_Manager::Sim_Event_Manager ()
+ void Sim_Event_Manager::post_event () {
+   ptr1 = (RWSlistIterator*)&last_posted_event_position_;
+   ptr2 = &((RWSlistIterator*)&last_posted_event_position_)->slist;
+-  if (0) printf("at %x %x\n", (RWSlistIterator*)&last_posted_event_position_,
+-		&((RWSlistIterator*)&last_posted_event_position_)->slist);
++  if (0) printf("at %p %p\n", (void*)(RWSlistIterator*)&last_posted_event_position_,
++		(void*)&((RWSlistIterator*)&last_posted_event_position_)->slist);
+   if (ptr1 != (RWSlistIterator*)&last_posted_event_position_)
+     fail = 1;
+   if (ptr2 != &((RWSlistIterator&)last_posted_event_position_).slist)
+     fail = 2;
+-  if (0) printf("at %x ?%x\n", (RWSlistIterator*)&last_posted_event_position_,
+-		&((RWSlistIterator&)last_posted_event_position_).slist);
++  if (0) printf("at %p ?%p\n", (void*)(RWSlistIterator*)&last_posted_event_position_,
++		(void*)&((RWSlistIterator&)last_posted_event_position_).slist);
+   if (ptr1 != (RWSlistIterator*)&last_posted_event_position_)
+     fail = 3;
+   if (ptr2 != &((RWSlistIterator&)last_posted_event_position_).slist)
+Index: b/src/gcc/testsuite/g++.old-deja/g++.mike/p3579.C
+===================================================================
+--- a/src/gcc/testsuite/g++.old-deja/g++.mike/p3579.C
++++ b/src/gcc/testsuite/g++.old-deja/g++.mike/p3579.C
+@@ -7,26 +7,26 @@ int num_x;
+ 
+ class Y {
+ public:
+-  Y () { printf("Y()            this: %x\n", this); }
+-  ~Y () { printf("~Y()           this: %x\n", this); }
++  Y () { printf("Y()            this: %p\n", (void*)this); }
++  ~Y () { printf("~Y()           this: %p\n", (void*)this); }
+ };
+ 
+ class X {
+ public:
+   X () {
+     ++num_x;
+-    printf("X()            this: %x\n", this);
++    printf("X()            this: %p\n", (void*)this);
+     Y y;
+     *this = (X) y;
+   }
+ 
+-  X (const Y & yy) { printf("X(const Y&)    this: %x\n", this); ++num_x; }
++  X (const Y & yy) { printf("X(const Y&)    this: %p\n", (void*)this); ++num_x; }
+   X & operator = (const X & xx) {
+-    printf("X.op=(X&)      this: %x\n", this);
++    printf("X.op=(X&)      this: %p\n", (void*)this);
+     return *this;
+   }
+ 
+-  ~X () { printf("~X()           this: %x\n", this); --num_x; }
++  ~X () { printf("~X()           this: %p\n", (void*)this); --num_x; }
+ };
+ 
+ int main (int, char **) {
+Index: b/src/gcc/testsuite/g++.old-deja/g++.mike/p3708a.C
+===================================================================
+--- a/src/gcc/testsuite/g++.old-deja/g++.mike/p3708a.C
++++ b/src/gcc/testsuite/g++.old-deja/g++.mike/p3708a.C
+@@ -38,7 +38,7 @@ public:
+   virtual void xx(int doit) {
+     --num;
+     if (ptr != this)
+-      printf("FAIL\n%x != %x\n", ptr, this);
++      printf("FAIL\n%p != %p\n", ptr, (void*)this);
+     printf ("C is destructed.\n");
+     B::xx (0);
+     if (doit) A::xx (1);
+Index: b/src/gcc/testsuite/g++.old-deja/g++.mike/p3708b.C
+===================================================================
+--- a/src/gcc/testsuite/g++.old-deja/g++.mike/p3708b.C
++++ b/src/gcc/testsuite/g++.old-deja/g++.mike/p3708b.C
+@@ -48,7 +48,7 @@ public:
+   virtual void xx(int doit) {
+     --num;
+     if (ptr != this) {
+-      printf("FAIL\n%x != %x\n", ptr, this);
++      printf("FAIL\n%p != %p\n", ptr, (void*)this);
+       exit(1);
+     }
+     printf ("D is destructed.\n");
+Index: b/src/gcc/testsuite/g++.old-deja/g++.mike/p3708.C
+===================================================================
+--- a/src/gcc/testsuite/g++.old-deja/g++.mike/p3708.C
++++ b/src/gcc/testsuite/g++.old-deja/g++.mike/p3708.C
+@@ -38,7 +38,7 @@ public:
+   virtual void xx(int doit) {
+     --num;
+     if (ptr != this)
+-      printf("FAIL\n%x != %x\n", ptr, this);
++      printf("FAIL\n%p != %p\n", ptr, (void*)this);
+     printf ("C is destructed.\n");
+     B::xx (0);
+     if (doit) A::xx (1);
+Index: b/src/gcc/testsuite/g++.old-deja/g++.mike/p646.C
+===================================================================
+--- a/src/gcc/testsuite/g++.old-deja/g++.mike/p646.C
++++ b/src/gcc/testsuite/g++.old-deja/g++.mike/p646.C
+@@ -35,20 +35,20 @@ int foo::si = 0;
+ foo::foo ()
+ {
+   si++;
+-  printf ("new foo @ 0x%x; now %d foos\n", this, si);
++  printf ("new foo @ %p; now %d foos\n", (void*)this, si);
+ }
+ 
+ foo::foo (const foo &other)
+ {
+   si++;
+-  printf ("another foo @ 0x%x; now %d foos\n", this, si);
++  printf ("another foo @ %p; now %d foos\n", (void*)this, si);
+   *this = other;
+ }
+ 
+ foo::~foo ()
+ {
+   si--;
+-  printf ("deleted foo @ 0x%x; now %d foos\n", this, si);
++  printf ("deleted foo @ %p; now %d foos\n", (void*)this, si);
+ }
+ 
+ int
+Index: b/src/gcc/testsuite/g++.old-deja/g++.mike/p710.C
+===================================================================
+--- a/src/gcc/testsuite/g++.old-deja/g++.mike/p710.C
++++ b/src/gcc/testsuite/g++.old-deja/g++.mike/p710.C
+@@ -30,7 +30,7 @@ class B
+    virtual ~B() {}
+    void operator delete(void*,size_t s)
+   {
+-      printf("B::delete() %d\n",s);
++      printf("B::delete() %u\n",(unsigned int)s);
+    }
+    void operator delete(void*){}
+ };
+Index: b/src/gcc/testsuite/g++.old-deja/g++.mike/p789a.C
+===================================================================
+--- a/src/gcc/testsuite/g++.old-deja/g++.mike/p789a.C
++++ b/src/gcc/testsuite/g++.old-deja/g++.mike/p789a.C
+@@ -13,10 +13,10 @@ struct foo
+   int x;
+   foo () {
+     x = count++;
+-    printf("this %d = %x\n", x, (void *)this);
++    printf("this %d = %p\n", x, (void *)this);
+   }
+   virtual ~foo () {
+-    printf("this %d = %x\n", x, (void *)this);
++    printf("this %d = %p\n", x, (void *)this);
+     --count;
+   }
+ };
+@@ -31,7 +31,7 @@ int main ()
+       {
+ 	for (int j = 0; j < 3; j++)
+ 	  {
+-	    printf("&a[%d][%d] = %x\n", i, j, (void *)&array[i][j]);
++	    printf("&a[%d][%d] = %p\n", i, j, (void *)&array[i][j]);
+ 	  }
+       }
+       // The count should be nine, if not, fail the test.
+Index: b/src/gcc/testsuite/g++.old-deja/g++.mike/pmf2.C
+===================================================================
+--- a/src/gcc/testsuite/g++.old-deja/g++.mike/pmf2.C
++++ b/src/gcc/testsuite/g++.old-deja/g++.mike/pmf2.C
+@@ -42,7 +42,7 @@ B_table b;
+ bar jar;
+ 
+ int main() {
+-  printf("ptr to B_table=%x, ptr to A_table=%x\n",&b,(A_table*)&b);
++  printf("ptr to B_table=%p, ptr to A_table=%p\n",(void*)&b,(void*)(A_table*)&b);
+   B_table::B_ti_fn z = &B_table::func1;
+   int j = 1;
+   jar.call_fn_fn1(j,(void *)&z);
+Index: b/src/gcc/testsuite/g++.old-deja/g++.mike/temp.C
+===================================================================
+--- a/src/gcc/testsuite/g++.old-deja/g++.mike/temp.C
++++ b/src/gcc/testsuite/g++.old-deja/g++.mike/temp.C
+@@ -7,11 +7,11 @@ class T {
+ public:
+   T() {
+     i = 1;
+-    printf("T() at %x\n", this);
++    printf("T() at %p\n", (void*)this);
+   }
+   T(const T& o) {
+     i = o.i;
+-    printf("T(const T&) at %x <-- %x\n", this, &o);
++    printf("T(const T&) at %p <-- %p\n", (void*)this, (void*)&o);
+   }
+   T operator +(const T& o) {
+     T r;
+@@ -21,7 +21,7 @@ public:
+   operator int () {
+     return i;
+   }
+-  ~T() { printf("~T() at %x\n", this); }
++  ~T() { printf("~T() at %p\n", (void*)this); }
+ } s, b;
+ 
+ int foo() { return getenv("TEST") == 0; }
+Index: b/src/gcc/testsuite/g++.old-deja/g++.other/temporary1.C
+===================================================================
+--- a/src/gcc/testsuite/g++.old-deja/g++.other/temporary1.C
++++ b/src/gcc/testsuite/g++.old-deja/g++.other/temporary1.C
+@@ -5,16 +5,16 @@ int c, d;
+ class Foo 
+ {
+ public:
+-   Foo() { printf("Foo() 0x%08lx\n", (__SIZE_TYPE__)this); ++c; }
+-   Foo(Foo const &) { printf("Foo(Foo const &) 0x%08lx\n", (__SIZE_TYPE__)this); }
+-   ~Foo() { printf("~Foo() 0x%08lx\n", (__SIZE_TYPE__)this); ++d; }
++   Foo() { printf("Foo() %p\n", (void*)this); ++c; }
++   Foo(Foo const &) { printf("Foo(Foo const &) %p\n", (void*)this); }
++   ~Foo() { printf("~Foo() %p\n", (void*)this); ++d; }
+ };
+ 
+ // Bar creates constructs a temporary Foo() as a default
+ class Bar 
+ {
+ public:
+-   Bar(Foo const & = Foo()) { printf("Bar(Foo const &) 0x%08lx\n", (__SIZE_TYPE__)this); }
++   Bar(Foo const & = Foo()) { printf("Bar(Foo const &) %p\n", (void*)this); }
+ };
+ 
+ void fakeRef(Bar *)
+Index: b/src/gcc/testsuite/g++.old-deja/g++.other/virtual8.C
+===================================================================
+--- a/src/gcc/testsuite/g++.old-deja/g++.other/virtual8.C
++++ b/src/gcc/testsuite/g++.old-deja/g++.other/virtual8.C
+@@ -4,7 +4,7 @@ extern "C" int printf (const char*, ...)
+ struct A
+ {
+   virtual void f () {
+-    printf ("%x\n", this);
++    printf ("%p\n", (void*)this);
+   }
+ };
+ 
+Index: b/src/gcc/testsuite/g++.old-deja/g++.pt/memtemp23.C
+===================================================================
+--- a/src/gcc/testsuite/g++.old-deja/g++.pt/memtemp23.C
++++ b/src/gcc/testsuite/g++.old-deja/g++.pt/memtemp23.C
+@@ -13,7 +13,7 @@ struct S
+ 
+   template <class U>
+   void f(U u)
+-  { printf ("In S::f(U)\nsizeof(U) == %d\n", sizeof(u)); }
++  { printf ("In S::f(U)\nsizeof(U) == %d\n", (int)sizeof(u)); }
+ 
+   int c[16];
+ };
+Index: b/src/gcc/testsuite/g++.old-deja/g++.pt/memtemp24.C
+===================================================================
+--- a/src/gcc/testsuite/g++.old-deja/g++.pt/memtemp24.C
++++ b/src/gcc/testsuite/g++.old-deja/g++.pt/memtemp24.C
+@@ -13,7 +13,7 @@ struct S
+ 
+   template <class U>
+   void f(U u)
+-  { printf ("In S::f(U)\nsizeof(U) == %d\n", sizeof(u)); }
++  { printf ("In S::f(U)\nsizeof(U) == %d\n", (int)sizeof(u)); }
+ 
+   int c[16];
+ };
+Index: b/src/gcc/testsuite/g++.old-deja/g++.pt/memtemp25.C
+===================================================================
+--- a/src/gcc/testsuite/g++.old-deja/g++.pt/memtemp25.C
++++ b/src/gcc/testsuite/g++.old-deja/g++.pt/memtemp25.C
+@@ -6,7 +6,7 @@ template <class X>
+ struct S
+ {
+   template <class U>
+-  void f(U u) { printf ("%d\n", sizeof (U)); }
++  void f(U u) { printf ("%d\n", (int)sizeof (U)); }
+ 
+   int i[4];
+ };
+Index: b/src/gcc/testsuite/g++.old-deja/g++.pt/memtemp26.C
+===================================================================
+--- a/src/gcc/testsuite/g++.old-deja/g++.pt/memtemp26.C
++++ b/src/gcc/testsuite/g++.old-deja/g++.pt/memtemp26.C
+@@ -16,7 +16,7 @@ template <class X>
+ template <class U>
+ void S<X>::f(U u)
+ {
+-  printf ("%d\n", sizeof (U));
++  printf ("%d\n", (int)sizeof (U));
+ }
+ 
+ 
+Index: b/src/gcc/testsuite/g++.old-deja/g++.pt/t39.C
+===================================================================
+--- a/src/gcc/testsuite/g++.old-deja/g++.pt/t39.C
++++ b/src/gcc/testsuite/g++.old-deja/g++.pt/t39.C
+@@ -10,9 +10,9 @@ struct frob {
+ 
+ template <class T>
+ void frob<T>::print () {
+-  printf ("this = %08x\n", this);
+-  printf (" ptr = %08x\n", ptr);
+-  printf (" values = %x %x %x ...\n", ptr[0], ptr[1], ptr[2]);
++  printf ("this = %p\n", (void*)this);
++  printf (" ptr = %p\n", (void*)ptr);
++  printf (" values = %x %x %x ...\n", (int)ptr[0], (int)ptr[1], (int)ptr[2]);
+ }
+ 
+   static int x[10];
+Index: b/src/gcc/testsuite/g++.old-deja/g++.robertl/eb17.C
+===================================================================
+--- a/src/gcc/testsuite/g++.old-deja/g++.robertl/eb17.C
++++ b/src/gcc/testsuite/g++.old-deja/g++.robertl/eb17.C
+@@ -44,15 +44,15 @@ int main()
+     A * a = new B;
+     B * b = dynamic_cast<B *>(a);
+ 
+-    printf("%p\n",b);                // (*2*)
++    printf("%p\n",(void*)b);                // (*2*)
+     b->print();
+ 
+     a = b;
+-    printf("%p\n",a);
++    printf("%p\n",(void*)a);
+     a->print();
+ 
+     a = a->clone();
+-    printf("%p\n",a);
++    printf("%p\n",(void*)a);
+     a->print();                      // (*1*)
+ 
+     return 0;
+Index: b/src/gcc/testsuite/gcc.dg/pch/inline-4.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.dg/pch/inline-4.c
++++ b/src/gcc/testsuite/gcc.dg/pch/inline-4.c
+@@ -1,6 +1,6 @@
+ #include "inline-4.h"
+ extern int printf (const char *, ...);
+ int main(void) {
+-  printf (getstring());
++  printf ("%s", getstring());
+   return 0;
+ }
diff --git a/debian/patches/testsuite-hardening-updates.diff b/debian/patches/testsuite-hardening-updates.diff
new file mode 100644
index 0000000..44a8969
--- /dev/null
+++ b/debian/patches/testsuite-hardening-updates.diff
@@ -0,0 +1,143 @@
+# DP: Fix some gcc and g++ testcases to pass with hardening defaults
+
+---
+ src/gcc/testsuite/c-c++-common/asan/strncpy-overflow-1.c     |    2 +-
+ src/gcc/testsuite/c-c++-common/cilk-plus/CK/spawnee_inline.c |    2 +-
+ src/gcc/testsuite/g++.dg/asan/asan_test.C                    |    2 +-
+ src/gcc/testsuite/g++.dg/asan/interception-malloc-test-1.C   |    2 +-
+ src/gcc/testsuite/g++.dg/fstack-protector-strong.C           |    2 +-
+ src/gcc/testsuite/gcc.c-torture/execute/memset-1.c           |    1 -
+ src/gcc/testsuite/gcc.c-torture/execute/memset-1.x           |    5 +++++
+ src/gcc/testsuite/gcc.dg/fstack-protector-strong.c           |    2 +-
+ src/gcc/testsuite/gcc.dg/stack-usage-1.c                     |    2 +-
+ src/gcc/testsuite/gcc.dg/superblock.c                        |    2 +-
+ src/gcc/testsuite/gcc.target/i386/sw-1.c                     |    2 +-
+ 11 files changed, 14 insertions(+), 10 deletions(-)
+
+Index: b/src/gcc/testsuite/g++.dg/asan/asan_test.C
+===================================================================
+--- a/src/gcc/testsuite/g++.dg/asan/asan_test.C
++++ b/src/gcc/testsuite/g++.dg/asan/asan_test.C
+@@ -2,7 +2,7 @@
+ // { dg-skip-if "" { *-*-* } { "*" } { "-O2" } }
+ // { dg-skip-if "" { *-*-* } { "-flto" } { "" } }
+ // { dg-additional-sources "asan_globals_test-wrapper.cc" }
+-// { dg-options "-std=c++11 -fsanitize=address -fno-builtin -Wall -Wno-format -Werror -g -DASAN_UAR=0 -DASAN_HAS_EXCEPTIONS=1 -DASAN_HAS_BLACKLIST=0 -DSANITIZER_USE_DEJAGNU_GTEST=1 -lasan -lpthread -ldl" }
++// { dg-options "-std=c++11 -fsanitize=address -fno-builtin -Wall -Wno-format -Wno-unused-result -Werror -g -DASAN_UAR=0 -DASAN_HAS_EXCEPTIONS=1 -DASAN_HAS_BLACKLIST=0 -DSANITIZER_USE_DEJAGNU_GTEST=1 -lasan -lpthread -ldl" }
+ // { dg-additional-options "-DASAN_NEEDS_SEGV=1" { target { ! arm*-*-* } } }
+ // { dg-additional-options "-DASAN_LOW_MEMORY=1 -DASAN_NEEDS_SEGV=0" { target arm*-*-* } }
+ // { dg-additional-options "-DASAN_AVOID_EXPENSIVE_TESTS=1" { target { ! run_expensive_tests } } }
+Index: b/src/gcc/testsuite/g++.dg/asan/interception-malloc-test-1.C
+===================================================================
+--- a/src/gcc/testsuite/g++.dg/asan/interception-malloc-test-1.C
++++ b/src/gcc/testsuite/g++.dg/asan/interception-malloc-test-1.C
+@@ -1,7 +1,7 @@
+ // ASan interceptor can be accessed with __interceptor_ prefix.
+ 
+ // { dg-do run { target *-*-linux* } }
+-// { dg-options "-fno-builtin-free" }
++// { dg-options "-fno-builtin-free -Wno-unused-result" }
+ // { dg-additional-options "-D__NO_INLINE__" { target { *-*-linux-gnu } } }
+ // { dg-shouldfail "asan" }
+ 
+Index: b/src/gcc/testsuite/gcc.c-torture/execute/memset-1.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.c-torture/execute/memset-1.c
++++ b/src/gcc/testsuite/gcc.c-torture/execute/memset-1.c
+@@ -1,3 +1,5 @@
++/* { dg-prune-output ".*warning: memset used with constant zero length parameter.*" } */
++
+ /* Copyright (C) 2002  Free Software Foundation.
+ 
+    Test memset with various combinations of pointer alignments and lengths to
+Index: b/src/gcc/testsuite/c-c++-common/asan/strncpy-overflow-1.c
+===================================================================
+--- a/src/gcc/testsuite/c-c++-common/asan/strncpy-overflow-1.c
++++ b/src/gcc/testsuite/c-c++-common/asan/strncpy-overflow-1.c
+@@ -1,5 +1,5 @@
+ /* { dg-do run } */
+-/* { dg-options "-fno-builtin-malloc -fno-builtin-strncpy" } */
++/* { dg-options "-fno-builtin-malloc -fno-builtin-strncpy -U_FORTIFY_SOURCE" } */
+ /* { dg-shouldfail "asan" } */
+ 
+ #include <string.h>
+Index: b/src/gcc/testsuite/gcc.dg/superblock.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.dg/superblock.c
++++ b/src/gcc/testsuite/gcc.dg/superblock.c
+@@ -1,5 +1,5 @@
+ /* { dg-do compile } */
+-/* { dg-options "-O2 -fno-asynchronous-unwind-tables -fsched2-use-superblocks -fdump-rtl-sched2 -fdump-rtl-bbro" } */
++/* { dg-options "-O2 -fno-asynchronous-unwind-tables -fsched2-use-superblocks -fdump-rtl-sched2 -fdump-rtl-bbro -fno-stack-protector" } */
+ /* { dg-require-effective-target scheduling } */
+ 
+ typedef int aligned __attribute__ ((aligned (64)));
+Index: b/src/gcc/testsuite/gcc.dg/stack-usage-1.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.dg/stack-usage-1.c
++++ b/src/gcc/testsuite/gcc.dg/stack-usage-1.c
+@@ -1,5 +1,5 @@
+ /* { dg-do compile } */
+-/* { dg-options "-fstack-usage" } */
++/* { dg-options "-fstack-usage -fno-stack-protector" } */
+ 
+ /* This is aimed at testing basic support for -fstack-usage in the back-ends.
+    See the SPARC back-end for example (grep flag_stack_usage_info in sparc.c).
+Index: b/src/gcc/testsuite/gcc.target/i386/sw-1.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.target/i386/sw-1.c
++++ b/src/gcc/testsuite/gcc.target/i386/sw-1.c
+@@ -1,5 +1,5 @@
+ /* { dg-do compile } */
+-/* { dg-options "-O2 -mtune=generic -fshrink-wrap -fdump-rtl-pro_and_epilogue" } */
++/* { dg-options "-O2 -mtune=generic -fshrink-wrap -fdump-rtl-pro_and_epilogue -fno-stack-protector" } */
+ /* { dg-skip-if "No shrink-wrapping preformed" { x86_64-*-mingw* } { "*" } { "" } } */
+ 
+ #include <string.h>
+Index: b/src/gcc/testsuite/c-c++-common/cilk-plus/CK/spawnee_inline.c
+===================================================================
+--- a/src/gcc/testsuite/c-c++-common/cilk-plus/CK/spawnee_inline.c
++++ b/src/gcc/testsuite/c-c++-common/cilk-plus/CK/spawnee_inline.c
+@@ -1,5 +1,5 @@
+ /* { dg-do run  { target { i?86-*-* x86_64-*-* } } } */
+-/* { dg-options "-fcilkplus -w" } */
++/* { dg-options "-fcilkplus -w -U_FORTIFY_SOURCE" } */
+ /* { dg-additional-options "-lcilkrts" { target { i?86-*-* x86_64-*-* } } } */
+ 
+ #include <stdio.h>
+Index: b/src/gcc/testsuite/gcc.dg/fstack-protector-strong.c
+===================================================================
+--- a/src/gcc/testsuite/gcc.dg/fstack-protector-strong.c
++++ b/src/gcc/testsuite/gcc.dg/fstack-protector-strong.c
+@@ -1,7 +1,7 @@
+ /* Test that stack protection is done on chosen functions. */
+ 
+ /* { dg-do compile { target i?86-*-* x86_64-*-* rs6000-*-* s390x-*-* } } */
+-/* { dg-options "-O2 -fstack-protector-strong" } */
++/* { dg-options "-O2 -fstack-protector-strong -U_FORTIFY_SOURCE" } */
+ 
+ /* This test checks the presence of __stack_chk_fail function in assembler.
+  * Compiler generates _stack_chk_fail_local (wrapper) calls instead for PIC.
+Index: b/src/gcc/testsuite/g++.dg/fstack-protector-strong.C
+===================================================================
+--- a/src/gcc/testsuite/g++.dg/fstack-protector-strong.C
++++ b/src/gcc/testsuite/g++.dg/fstack-protector-strong.C
+@@ -1,7 +1,7 @@
+ /* Test that stack protection is done on chosen functions. */
+ 
+ /* { dg-do compile { target i?86-*-* x86_64-*-* } } */
+-/* { dg-options "-O2 -fstack-protector-strong" } */
++/* { dg-options "-O2 -fstack-protector-strong -U_FORTIFY_SOURCE" } */
+ 
+ /* This test checks the presence of __stack_chk_fail function in assembler.
+  * Compiler generates _stack_chk_fail_local (wrapper) calls instead for PIC.
+Index: b/src/gcc/testsuite/gcc.c-torture/execute/memset-1.x
+===================================================================
+--- /dev/null
++++ b/src/gcc/testsuite/gcc.c-torture/execute/memset-1.x
+@@ -0,0 +1,5 @@
++# Implement "/* { dg-options "-U_FORITFY_SOURCE" } */", due to
++# http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20567
++
++set additional_flags "-U_FORTIFY_SOURCE"
++return 0
diff --git a/debian/porting.html b/debian/porting.html
new file mode 100644
index 0000000..2fe5477
--- /dev/null
+++ b/debian/porting.html
@@ -0,0 +1,30 @@
+<html lang="en">
+<head>
+<title>Porting libstdc++-v3</title>
+<meta http-equiv="Content-Type" content="text/html">
+<meta name="description" content="Porting libstdc++-v3">
+<meta name="generator" content="makeinfo 4.6">
+<meta http-equiv="Content-Style-Type" content="text/css">
+<style type="text/css"><!--
+  pre.display { font-family:inherit }
+  pre.format  { font-family:inherit }
+  pre.smalldisplay { font-family:inherit; font-size:smaller }
+  pre.smallformat  { font-family:inherit; font-size:smaller }
+  pre.smallexample { font-size:smaller }
+  pre.smalllisp    { font-size:smaller }
+--></style>
+</head>
+<body>
+<h1 class="settitle">Porting libstdc++-v3</h1>
+<div class="node">
+<p><hr>
+Node: <a name="Top">Top</a>,
+Next: <a rel="next" accesskey="n" href="#Operating%20system">Operating system</a>,
+Up: <a rel="up" accesskey="u" href="#dir">(dir)</a>
+<br>
+</div>
+
+The documentation in this file was removed, because it is licencensed
+under a non DFSG conforming licencse.
+
+</body></html>
diff --git a/debian/reduce-test-diff.awk b/debian/reduce-test-diff.awk
new file mode 100755
index 0000000..0e438de
--- /dev/null
+++ b/debian/reduce-test-diff.awk
@@ -0,0 +1,33 @@
+#! /usr/bin/gawk -f
+
+BEGIN {
+	skip=0
+	warn=0
+}
+
+/^-(FAIL|ERROR|UNRESOLVED|WARNING)/ {
+	next
+}
+
+# only compare gcc, g++, g77 and objc results
+/=== treelang tests ===/ {
+	skip=1
+}
+
+# omit extra files appended to test-summary
+/^\+Compiler version/ {
+	skip=1
+}
+
+skip == 0 {
+	print
+	next
+}
+
+/^\+(FAIL|ERROR|UNRESOLVED|WARNING)/ {
+	warn=1
+}
+
+END {
+	exit warn
+}
diff --git a/debian/relink b/debian/relink
new file mode 100644
index 0000000..7cfb24e
--- /dev/null
+++ b/debian/relink
@@ -0,0 +1,74 @@
+#! /bin/sh
+#
+# Relink GNAT utilities using the shared library
+#
+
+set -e
+
+pwd=`pwd`
+
+# why?
+chmod a-w build/gcc/ada/rts/*.ali
+
+rm -rf tmp
+ln -s $pwd/build/gcc/ada/rts/libgnat.so.1 tmp/libgnat.so
+
+LD_LIBRARY_PATH=$pwd/tmp
+export LD_LIBRARY_PATH
+
+PATH=$pwd/debian:$pwd/tmp:$PATH
+export PATH
+
+echo "#! /bin/sh" > tmp/dgcc
+echo "$pwd/build/gcc/xgcc -B$pwd/build/gcc/ "'"$@"' >> tmp/dgcc
+chmod 755 tmp/dgcc
+
+echo "#! /bin/sh" > tmp/dgnatlink
+echo "$pwd/build/gcc/gnatlink --GCC=dgcc "'"$@"' >> tmp/dgnatlink
+chmod 755 tmp/dgnatlink
+
+GMCMD="$pwd/build/gcc/gnatmake -I- -Irts -I. -a -m --GNATBIND=$pwd/build/gcc/gnatbind --GNATLINK=dgnatlink --GCC=dgcc"
+
+#cd $pwd/build/gcc/ada
+#make CFLAGS="-O2" CC="../xgcc -B../" STAGE_PREFIX=../ a-link.o a-gmem.o
+#cd $pwd
+
+[ -f build/gcc/gnatmake.old ] || cp -p build/gcc/gnatmake build/gcc/gnatmake.old
+[ -f build/gcc/gnatlink.old ] || cp -p build/gcc/gnatlink build/gcc/gnatlink.old
+
+make -C build/gcc/ada \
+	CFLAGS='-gnatp -gnata -O2 ' \
+	ADA_INCLUDES="-I." \
+	CC="../xgcc -B../" \
+	STAGE_PREFIX=../ \
+    ../gnatmake ../gnatlink
+
+mv gnatmake bgnatmake
+mv gnatlink bgnatlink
+exit 0
+
+cd build/gcc/ada
+for i in ../gnatchop ../gnatcmd \
+    ../gnatkr ../gnatlbr \
+    ../gnatls ../gnatmake \
+    ../gnatprep ../gnatpsys \
+    ../gnatxref ../gnatfind
+do
+  rm -f $i
+  $GMCMD -O2 -gnatp -o $i `basename $i`.adb -largs -L..
+done
+
+rm -f ../gnatmem
+$GMCMD -O2 -gnatp -o ../gnatmem gnatmem.adb -largs -L.. a-gmem.o
+$GMCMD -O2 -gnatp -o ../gnatlink gnatlink -largs -L.. a-link.o
+rm -f ../gnatpsta
+
+make CFLAGS="-O2" CC="../xgcc -B../" a-gettty.o a-deftar.o
+$GMCMD -O2 -gnatp -o ../gnatpsta gnatpsta -largs -L.. a-gettty.o a-deftar.o
+rm -f ../gnatbl
+
+make CFLAGS="-O2" CC="../xgcc -B../" gnatbl.o
+../xgcc -B../ -o ../gnatbl gnatbl.o -L.. -lgnat
+rm -f ../bgnatmake ../bgnatlink ../debian/dgcc ../debian/dgnatlink
+
+chmod +w rts/*.ali
diff --git a/debian/rules b/debian/rules
new file mode 100755
index 0000000..91bbc0f
--- /dev/null
+++ b/debian/rules
@@ -0,0 +1,83 @@
+#! /usr/bin/make -f
+# -*- makefile -*-
+# Build rules for gcc (>= 2.95) and gcc-snapshot
+# Targets found in this makefile:
+#	- unpack tarballs
+#	- patch sources
+#	- (re)create the control file
+#	- create a debian/rules.parameters file, which is included
+#	  by debian/rules2
+# All other targets are passed to the debian/rules2 file
+
+# Uncomment this to turn on verbose mode.
+#export DH_VERBOSE=1
+
+unexport LANG LC_ALL LC_CTYPE LC_COLLATE LC_TIME LC_NUMERIC LC_MESSAGES
+
+default: build
+
+include debian/rules.defs
+include debian/rules.unpack
+include debian/rules.patch
+
+control: $(control_dependencies)
+	-mkdir -p $(stampdir)
+	$(MAKE) -f debian/rules.conf $@
+
+configure: control $(unpack_stamp) $(patch_stamp)
+	$(MAKE) -f debian/rules2 $@
+
+pre-build:
+#ifneq (,$(filter $(distrelease),squeeze sid))
+#ifeq (,$(filter $(DEB_TARGET_ARCH),amd64 i386))
+#	@echo explicitely fail the build for $(DEB_TARGET_ARCH)
+#	@echo no bug report required. please ask the port maintainers if they support gcc-4.5.
+#	false
+#endif
+#endif
+
+build: pre-build control
+	$(MAKE) $(NJOBS) -f debian/rules2 $@
+build-arch: pre-build control
+	$(MAKE) $(NJOBS) -f debian/rules2 $@
+build-indep: pre-build control
+	$(MAKE) $(NJOBS) -f debian/rules2 $@
+
+check: $(check_stamp)
+$(check_stamp): $(build_stamp)
+	$(MAKE) -f debian/rules2 $@
+
+clean:
+	rm -rf $(stampdir)
+# remove temporary dirs used for unpacking
+	rm -rf $(gcc_srcdir) $(gdc_srcdir)
+	-$(MAKE) -f debian/rules2 $@
+	rm -rf $(srcdir)* $(builddir)* debian/tmp* html
+	rm -f bootstrap-* first-move-stamp
+	rm -f debian/*.tmp
+	rm -f debian/soname-cache
+	find debian -name '.#*' | xargs -r rm -f
+	rm -f $(series_file)*
+	dh_clean
+
+install:
+	$(MAKE) -f debian/rules2 $@
+
+html-docs doxygen-docs update-doxygen-docs update-ada-files xxx:
+	$(MAKE) -f debian/rules2 $@
+
+binary-indep binary-arch binary:
+	$(MAKE) -f debian/rules2 $@
+
+source diff:
+	@echo >&2 'source and diff are obsolete - use dpkg-source -b'; false
+
+release:
+	foo=$(shell basename $(CURDIR)); \
+		if [ "$$foo" != "gcc-3.4" ]; then \
+			find -name CVS -o -name .cvsignore -o -name '.#*' | \
+				xargs rm -rf; \
+		fi
+
+.NOTPARALLEL:
+.PHONY: build clean binary-indep binary-arch binary release
diff --git a/debian/rules.conf b/debian/rules.conf
new file mode 100644
index 0000000..cf824c4
--- /dev/null
+++ b/debian/rules.conf
@@ -0,0 +1,1399 @@
+# -*- makefile -*-
+# rules.conf
+#	- used to build debian/control and debian/rules.parameters
+#	- assumes unpacked sources
+
+include debian/rules.defs
+include debian/rules.sonames
+
+# manual ...
+ifeq ($(DEB_TARGET_GNU_CPU), $(findstring $(DEB_TARGET_GNU_CPU),hppa m68k))
+  ifeq ($(DEB_TARGET_ARCH),m68k)
+    GCC_SONAME := 2
+  endif
+  ifeq ($(DEB_TARGET_ARCH),hppa)
+    GCC_SONAME := 4
+  endif
+else
+  GCC_SONAME := 1
+endif
+DEB_LIBGCC_SOVERSION := $(DEB_SOEVERSION)
+DEB_LIBGCC_VERSION := $(DEB_EVERSION)
+
+_soname_map = gcc=$(GCC_SONAME) stdc++=$(CXX_SONAME) gomp=$(GOMP_SONAME) \
+	ssp=$(SSP_SONAME) gfortran=$(FORTRAN_SONAME) \
+	itm=$(ITM_SONAME) objc=$(OBJC_SONAME) quadmath=$(QUADMATH_SONAME) \
+	go=$(GO_SONAME) backtrace=$(BTRACE_SONAME) \
+	atomic=$(ATOMIC_SONAME) asan=$(ASAN_SONAME) lsan=$(LSAN_SONAME) \
+	tsan=$(TSAN_SONAME) ubsan=$(UBSAN_SONAME) \
+	vtv=$(VTV_SONAME) cilkrts=$(CILKRTS_SONAME) mpx=$(MPX_SONAME)
+_soname = $(patsubst $(1)=%,%,$(filter $(1)=%,$(_soname_map)))
+
+rel_on_dev := $(if $(filter libgcc-$(BASE_VERSION)-dev$(LS), $(shell dh_listpackages -i)),>=,=)
+# $(call _lib_name,<name>,<biarch>,<ext>)
+_lib_name = $(subst $(SPACE),, \
+  lib$(2)$(1) \
+  $(if $(filter dev,$(3)),,$(call _soname,$(1))) \
+  $(if $(or $(filter $(3),dev),$(and $(filter $(3),dbg),$(filter $(1),stdc++))),-$(BASE_VERSION)) \
+  $(if $(3),-$(3))$(LS)$(AQ))
+# $(call _lib_vers,<ext>,<vers>) 
+_lib_vers = ($(if $(filter $(1),dev),$(rel_on_dev),>=) $(2))
+
+# Helper to generate biarch/triarch dependencies.
+# For example, $(eval $(call gen_multilib_deps,gomp)) will create the
+# libgompbiarch variable, and make it contains the libgompbiarch{32,64,n32}
+# variables if biarch{32,64,n32} is set to yes.
+
+define gen_multilib_deps
+  lib$1biarch64$2  := $(call _lib_name,$(1),64,$(2)) $(call _lib_vers,$(2),$(3))
+  lib$1biarch32$2  := $(call _lib_name,$(1),32,$(2)) $(call _lib_vers,$(2),$(3))
+  lib$1biarchn32$2 := $(call _lib_name,$(1),n32,$(2)) $(call _lib_vers,$(2),$(3))
+  lib$1biarchx32$2 := $(call _lib_name,$(1),x32,$(2)) $(call _lib_vers,$(2),$(3))
+  lib$1biarchhf$2  := $(call _lib_name,$(1),hf,$(2)) $(call _lib_vers,$(2),$(3))
+  lib$1biarchsf$2  := $(call _lib_name,$(1),sf,$(2)) $(call _lib_vers,$(2),$(3))
+  ifeq ($$(biarch64),yes)
+    lib$1biarch$2 := $$(lib$1biarch64$2)
+  endif
+  ifeq ($$(biarch32),yes)
+    ifeq ($$(biarch64),yes)
+      lib$1biarch$2 := $$(lib$1biarch64$2), $$(lib$1biarch32$2)
+    else
+      lib$1biarch$2 := $$(lib$1biarch32$2)
+    endif
+  endif
+  ifeq ($$(biarchx32),yes)
+    ifeq ($1,mpx)
+      ifeq ($$(biarch64),yes)
+        lib$1biarch$2 := $$(lib$1biarch64$2)
+      else ifeq ($$(biarch32),yes)
+        lib$1biarch$2 := $$(lib$1biarch32$2)
+      else
+        lib$1biarch$2 :=
+      endif
+    else ifeq ($$(biarch64),yes)
+      lib$1biarch$2 := $$(lib$1biarch64$2), $$(lib$1biarchx32$2)
+    else ifeq ($$(biarch32),yes)
+      lib$1biarch$2 := $$(lib$1biarch32$2), $$(lib$1biarchx32$2)
+    else
+      lib$1biarch$2 := $$(lib$1biarchx32$2)
+    endif
+  endif
+  ifeq ($$(biarchn32),yes)
+    ifeq ($$(biarch64),yes)
+      lib$1biarch$2 := $$(lib$1biarch64$2), $$(lib$1biarchn32$2)
+    else ifeq ($$(biarch32),yes)
+      lib$1biarch$2 := $$(lib$1biarch32$2), $$(lib$1biarchn32$2)
+    else
+      lib$1biarch$2 := $$(lib$1biarchn32$2)
+    endif
+  endif
+  ifeq ($$(biarchhf),yes)
+    lib$1biarch$2 := $$(lib$1biarchhf$2) | $(call _lib_name,$(1),hf,$(2))
+  endif
+  ifeq ($$(biarchsf),yes)
+    lib$1biarch$2 := $$(lib$1biarchsf$2) | $(call _lib_name,$(1),sf,$(2))
+  endif
+endef
+ifeq ($(with_shared_libgcc),yes)
+  LIBGCC_DEP := libgcc$(GCC_SONAME)$(LS)$(AQ) (>= $(DEB_LIBGCC_VERSION))
+  $(eval $(call gen_multilib_deps,gcc,,$(DEB_LIBGCC_VERSION)))
+endif
+LIBGCC_DEV_DEP := libgcc-$(BASE_VERSION)-dev$(LS)$(AQ) ($(rel_on_dev) $(DEB_VERSION))
+$(foreach x,stdc++ gomp ssp gfortran itm objc atomic asan lsan mpx ubsan quadmath go vtv cilkrts, \
+	$(eval $(call gen_multilib_deps,$(x),,$$$${gcc:Version})))
+$(foreach x,gcc stdc++ gfortran objc go phobos, \
+	$(eval $(call gen_multilib_deps,$(x),dev,$$$${gcc:Version})))
+$(foreach x,gcc stdc++ gfortran objc go, \
+	$(eval $(call gen_multilib_deps,$(x),dbg,$$$${gcc:Version})))
+
+# Helper to generate _no_archs variables.
+# For example, $(eval $(call gen_no_archs,java)) will create the java_no_archs
+# variable, using the java_no_cpu and java_no_systems variables.
+define gen_no_archs
+  $1_no_archs :=
+  ifneq (,$$($1_no_cpus))
+    $1_no_archs += $$(foreach cpu,$$(filter-out i386 amd64 alpha arm,$$($1_no_cpus)),!$$(cpu))
+    ifneq (,$$(filter i386,$$($1_no_cpus)))
+      $1_no_archs += !i386 !hurd-i386 !kfreebsd-i386
+    endif
+    ifneq (,$$(filter amd64,$$($1_no_cpus)))
+      $1_no_archs += !amd64 !kfreebsd-amd64
+    endif
+    ifneq (,$$(filter alpha,$$($1_no_cpus)))
+      $1_no_archs += !alpha !hurd-alpha
+    endif
+    ifneq (,$$(filter arm,$$($1_no_cpus)))
+      $1_no_archs += !arm !armel !armhf
+    endif
+    ifneq (,$$(strip $3))
+      $1_no_systems_tmp := $$(subst $$(SPACE)gnu$$(SPACE),$$(SPACE)hurd-gnu$$(SPACE),$$(SPACE)$3$$(SPACE))
+      $1_no_archs += $$(foreach cpu,$$($1_no_cpus),$$(foreach system,$$($1_no_systems_tmp),!$$(subst gnu,$$(cpu),$$(system))))
+    endif
+  endif
+  ifneq (,$$($1_no_systems))
+    $1_no_systems_tmp := $$(subst $$(SPACE)gnu$$(SPACE),$$(SPACE)hurd-gnu$$(SPACE),$$(SPACE)$$($1_no_systems)$$(SPACE))
+    $1_no_archs += $$(foreach system,$$($1_no_systems_tmp),$$(foreach cpu,$2,!$$(subst gnu,$$(cpu),$$(system))))
+  endif
+  $1_no_archs := $$(strip $$($1_no_archs))
+endef
+base_deb_cpus := amd64 i386 alpha
+base_deb_systems :=
+$(foreach x,ada java java_plugin fortran libphobos libgc check locale,$(eval $(call gen_no_archs,$(x),$(base_deb_cpus),$(base_deb_systems))))
+linux_no_archs := !hurd-any !kfreebsd-any
+
+GCC_VERSION := $(strip $(shell cat $(firstword $(wildcard $(srcdir)/gcc/FULL-VER $(srcdir)/gcc/BASE-VER))))
+NEXT_GCC_VERSION := $(shell echo $(GCC_VERSION) | \
+	awk -F. '{OFS="."; $$2 += 1; $$3=0; print}')
+GCC_MAJOR_VERSION := $(shell echo $(GCC_VERSION)   | sed -r 's/([0-9])\.[0-9]\.[0-9]/\1/')
+GCC_MINOR_VERSION := $(shell echo $(GCC_VERSION)   | sed -r 's/[0-9]\.([0-9])\.[0-9]/\1/')
+GCC_RELEASE_VERSION := $(shell echo $(GCC_VERSION) | sed -r 's/[0-9]\.[0-9]\.([0-9])/\1/')
+NEXT_GCC_MAJOR_VERSION := $(shell expr $(echo $(GCC_MAJOR_VERSION)) + 1)
+NEXT_GCC_MINOR_VERSION := $(shell expr $(echo $(GCC_MINOR_VERSION)) + 1)
+NEXT_GCC_RELEASE_VERSION := $(shell expr $(echo $(GCC_MAJOR_VERSION)) + 1)
+
+ifeq ($(single_package),yes)
+  BASE_VERSION := $(shell echo $(GCC_VERSION) | sed -e 's/\([1-9]*\).*/\1/')
+endif
+
+GCC_SOURCE_VERSION := $(shell echo $(DEB_VERSION) | sed 's/-.*//')
+NEXT_GCC_SOURCE_VERSION := $(shell echo $(GCC_SOURCE_VERSION) | \
+	awk -F. '{OFS="."; $$2 += 1; $$3=0; print}')
+
+MAINTAINER = Debian GCC Maintainers <debian-gcc at lists.debian.org>
+ifeq ($(distribution),Ubuntu)
+  ifneq (,$(findstring $(PKGSOURCE),gnat gdc))
+    MAINTAINER = Ubuntu MOTU Developers <ubuntu-motu at lists.ubuntu.com>
+  else
+    MAINTAINER = Ubuntu Core developers <ubuntu-devel-discuss at lists.ubuntu.com>
+  endif
+endif
+
+UPLOADERS = Matthias Klose <doko at debian.org>
+ifneq (,$(findstring $(PKGSOURCE),gnat))
+  UPLOADERS = Ludovic Brenta <lbrenta at debian.org>
+endif
+ifneq (,$(findstring $(PKGSOURCE),gdc))
+  UPLOADERS = Iain Buclaw <ibuclaw at ubuntu.com>, Matthias Klose <doko at debian.org>
+endif
+
+DPKGV = 1.14.15
+ifeq ($(with_multiarch_lib),yes)
+  DPKGV = 1.16.0~ubuntu4
+endif
+ifeq ($(multiarch_stage1),yes)
+  DPKGV = 1.16.0~ubuntu4
+endif
+ifeq (,$(filter $(distrelease),lenny etch squeeze wheezy dapper hardy jaunty karmic lucid maverick natty oneiric precise quantal raring saucy trusty utopic))
+  DPKGV = 1.17.11
+endif
+DPKG_BUILD_DEP = dpkg-dev (>= $(DPKGV)),
+
+ifeq ($(DEB_HOST_ARCH),$(DEB_TARGET_ARCH))
+  TARGET_QUAL = :$(DEB_TARGET_ARCH)
+endif
+
+# The binutils version needed.
+# The oldest suitable versions for the various platforms can be found in
+# INSTALL/specific.html ; we take a tighter dependency if possible to be on
+# the safe side (something like newest( version in stable, versions for the
+# various platforms in INSTALL/specific.html) ).
+# We need binutils (>= 2.19.1) for a new dwarf unwind expression opcode.
+# See http://gcc.gnu.org/ml/gcc-patches/2008-09/msg01713.html
+ifeq ($(trunk_build),yes)
+  BINUTILSBDV = 2.23
+else
+  BINUTILSBDV = 2.22
+  ifneq (,$(filter $(distrelease),vivid))
+    BINUTILSBDV = 2.25-3~
+  else ifneq (,$(filter $(distrelease),jessie))
+    BINUTILSBDV = 2.25-7~
+  else ifneq (,$(filter $(distrelease),sid stretch xenial))
+    BINUTILSBDV = 2.25.90
+  endif
+endif
+ifeq ($(DEB_CROSS),yes)
+  BINUTILS_BUILD_DEP = binutils$(TS) (>= $(BINUTILSBDV)), binutils-multiarch (>= $(BINUTILSBDV))
+  BINUTILSV := $(shell dpkg -l binutils$(TS) \
+			| awk '/^ii/{print $$3;exit}' | sed 's/-.*//')
+else
+  BINUTILS_BUILD_DEP = binutils (>= $(BINUTILSBDV)) | binutils-multiarch (>= $(BINUTILSBDV))
+  ifneq (,$(findstring cross-build-,$(build_type)))
+    BINUTILSV := $(shell dpkg -l binutils$(TS) \
+			| awk '/^ii/{print $$3;exit}' | sed 's/-.*//')
+  else
+    BINUTILSV := $(shell dpkg -l binutils binutils-multiarch \
+			| awk '/^ii/{print $$3;exit}' | sed 's/-.*//')
+  endif
+endif
+ifneq (,$(filter $(build_type), build-native cross-build-native))
+  ifeq ($(hppa64_archs),hppa))
+    BINUTILS_BUILD_DEP += , binutils-hppa64 (>= $(BINUTILSBDV)) [$(hppa64_archs)]
+  else
+    BINUTILS_BUILD_DEP += , binutils-hppa64-linux-gnu (>= $(BINUTILSBDV)) [$(hppa64_archs)]
+  endif
+endif
+ifeq (,$(BINUTILSV))
+  BINUTILSV := $(BINUTILSBDV)
+endif
+
+# FIXME; stripping doesn't work with gold
+#BINUTILS_BUILD_DEP += , binutils-gold (>= $(BINUTILSV)) [$(gold_archs)]
+
+# libc-dev dependencies
+libc_ver := 2.11
+libc_dev_ver := $(libc_ver)
+ifeq ($(with_multiarch_lib),yes)
+  ifeq ($(derivative),Debian)
+    libc_dev_ver := 2.13-5
+  else
+    libc_dev_ver := 2.13-0ubuntu6
+  endif
+endif
+# first set LIBC_DEP/LIBC_DEV_DEP for native builds only
+ifeq ($(DEB_TARGET_ARCH_OS),linux)
+  ifneq (,$(findstring $(DEB_TARGET_ARCH),alpha ia64))
+    LIBC_DEP = libc6.1
+  else
+    LIBC_DEP = libc6
+  endif
+else
+  ifeq ($(DEB_TARGET_ARCH_OS),hurd)
+    LIBC_DEP = libc0.3
+  endif
+  ifeq ($(DEB_TARGET_ARCH_OS),kfreebsd)
+    LIBC_DEP = libc0.1
+  endif
+  ifeq ($(DEB_TARGET_ARCH),uclibc)
+       LIBC_DEP = libuclibc
+  endif
+endif
+LIBC_DEV_DEP := $(LIBC_DEP)-dev
+
+# this is about Debian archs name, *NOT* GNU target triplet
+biarch_deb_map := \
+	i386=amd64 amd64=i386 \
+	mips=mips64 mipsel=mips64 \
+	powerpc=ppc64 ppc64=powerpc \
+	sparc=sparc64 sparc64=sparc\
+	s390=s390x s390x=s390 \
+	kfreebsd-amd64=i386 \
+	armel=armhf \
+	armhf=armel
+biarch_deb_arch := $(patsubst $(DEB_TARGET_ARCH)=%,%, \
+	$(filter $(DEB_TARGET_ARCH)=%,$(biarch_deb_map)))
+
+LIBC_BIARCH_DEP :=
+LIBC_BIARCH_DEV_DEP :=
+ifneq (,$(findstring yes,$(biarch64) $(biarch32) $(biarchn32) $(biarchx32)$(biarchhf)$(biarchsf)))
+  LIBC_BIARCH_DEP := $${shlibs:Depends}
+  LIBC_BIARCH_DEV_DEP := $(LIBC_DEV_DEP)-$(biarch_deb_arch)$(LS)$(AQ) (>= $(libc_ver))
+  # amd64, x32, i386
+  ifneq (,$(findstring $(DEB_TARGET_ARCH),amd64 x32 i386))
+  ifeq ($(biarch64)$(biarch32),yesyes)
+    LIBC_BIARCH_DEV_DEP := $(LIBC_DEV_DEP)-amd64$(LS)$(AQ) (>= $(libc_ver)), $(LIBC_DEV_DEP)-i386$(LS)$(AQ) (>= $(libc_ver))
+  endif
+  ifeq ($(biarch64)$(biarchx32),yesyes)
+    LIBC_BIARCH_DEV_DEP := $(LIBC_DEV_DEP)-amd64$(LS)$(AQ) (>= $(libc_ver)), $(LIBC_DEV_DEP)-x32$(LS)$(AQ) (>= $(libc_ver))
+  endif
+  ifeq ($(biarch32)$(biarchx32),yesyes)
+    LIBC_BIARCH_DEV_DEP := $(LIBC_DEV_DEP)-i386$(LS)$(AQ) (>= $(libc_ver)), $(LIBC_DEV_DEP)-x32$(LS)$(AQ) (>= $(libc_ver))
+  endif
+  endif
+  # mips*
+  ifneq (,$(findstring $(DEB_TARGET_ARCH),mips mipsel mipsn32 mipsn32el mips64 mips64el))
+  ifeq ($(biarchn32)$(biarch32),yesyes)
+      LIBC_BIARCH_DEV_DEP := libc6-dev-mips32$(LS)$(AQ) (>= $(libc_ver)), libc6-dev-mipsn32$(LS)$(AQ) (>= $(libc_ver))
+  endif
+  ifeq ($(biarch64)$(biarch32),yesyes)
+      triarch := $(COMMA)$(SPACE)
+      LIBC_BIARCH_DEV_DEP := libc6-dev-mips32$(LS)$(AQ) (>= $(libc_ver)), libc6-dev-mips64$(LS)$(AQ) (>= $(libc_ver))
+  endif
+  ifeq ($(biarchn32)$(biarch64),yesyes)
+      triarch := $(COMMA)$(SPACE)
+      LIBC_BIARCH_DEV_DEP := libc6-dev-mips64$(LS)$(AQ) (>= $(libc_ver)), libc6-dev-mipsn32$(LS)$(AQ) (>= $(libc_ver))
+  endif
+  endif
+
+  ifeq ($(biarchhf),yes)
+    LIBC_BIARCH_DEP := $(LIBC_DEP)-$(biarch_deb_arch)$(LS)$(AQ) (>= $(libc_ver))
+    LIBC_BIARCH_DEP += | $(LIBC_DEP)-$(biarch_deb_arch)$(LS)$(AQ)
+    LIBC_BIARCH_DEV_DEP += | $(LIBC_DEV_DEP)-$(biarch_deb_arch)$(LS)$(AQ)
+  endif
+  ifeq ($(biarchsf),yes)
+    LIBC_BIARCH_DEP := $(LIBC_DEP)-$(biarch_deb_arch)$(LS)$(AQ) (>= $(libc_ver))
+    LIBC_BIARCH_DEP += | $(LIBC_DEP)-$(biarch_deb_arch)$(LS)$(AQ)
+    LIBC_BIARCH_DEV_DEP += | $(LIBC_DEV_DEP)-$(biarch_deb_arch)$(LS)$(AQ)
+  endif
+endif
+
+# now add the cross suffix and required version
+LIBC_DEP := $(LIBC_DEP)$(LS)$(AQ)
+LIBC_DEV_DEP := $(LIBC_DEV_DEP)$(LS)$(AQ) (>= $(libc_dev_ver))
+
+ifneq (,$(filter $(build_type), build-native cross-build-native))
+  LIBC_DBG_DEP = libc6.1-dbg [alpha ia64] | libc0.3-dbg [hurd-i386] | libc0.1-dbg [kfreebsd-i386 kfreebsd-amd64] | libc6-dbg,
+endif
+
+# TODO: make this automatic, there must be a better way to define LIBC_DEP.
+ifneq ($(DEB_CROSS),yes)
+  LIBC_BUILD_DEP = libc6.1-dev (>= $(libc_dev_ver)) [alpha ia64] | libc0.3-dev (>= $(libc_dev_ver)) [hurd-i386] | libc0.1-dev (>= $(libc_dev_ver)) [kfreebsd-i386 kfreebsd-amd64] | libc6-dev (>= $(libc_dev_ver))
+  ifeq (,$(filter $(distrelease),lenny etch squeeze dapper hardy jaunty karmic lucid maverick natty oneiric))
+    LIBC_BUILD_DEP += , libc6-dev (>= 2.13-31) [armel armhf]
+  endif
+  LIBC_BIARCH_BUILD_DEP = libc6-dev-amd64 [i386 x32], libc6-dev-sparc64 [sparc], libc6-dev-sparc [sparc64], 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 mipsn32 mipsn32el mips64 mips64el s390x sparc64 x32], libn32gcc1 [mips mipsel mips64 mips64el], lib64gcc1 [i386 mips mipsel mipsn32 mipsn32el powerpc sparc s390 x32], libc6-dev-mips [...]
+  ifneq (,$(findstring amd64,$(biarchx32archs)))
+  LIBC_BIARCH_BUILD_DEP += libc6-dev-x32 [amd64 i386], libx32gcc1 [amd64 i386],
+endif
+ifneq (,$(findstring armel,$(biarchhfarchs)))
+  LIBC_BIARCH_BUILD_DEP += libc6-dev-armhf [armel], libhfgcc1 [armel],
+endif
+ifneq (,$(findstring armhf,$(biarchsfarchs)))
+  LIBC_BIARCH_BUILD_DEP += libc6-dev-armel [armhf], libsfgcc1 [armhf],
+endif
+else
+  LIBC_BUILD_DEP = $(LIBC_DEV_DEP),
+  ifneq ($(LIBC_BIARCH_DEV_DEP),)
+    LIBC_BIARCH_BUILD_DEP = $(LIBC_BIARCH_DEV_DEP),
+  else
+    LIBC_BIARCH_BUILD_DEP =
+  endif
+endif
+
+# needed for the include/asm symlink to run the testsuite for
+# non default multilibs
+GCC_MULTILIB_BUILD_DEP = g++-multilib [$(multilib_archs)],
+GCC_MULTILIB_BUILD_DEP += g++-4.9 [arm64],
+
+LIBUNWIND_DEV_DEP := libunwind7-dev$(LS)$(AQ) (>= 0.98.5-6)
+LIBUNWIND_BUILD_DEP := $(LIBUNWIND_DEV_DEP) [ia64],
+LIBATOMIC_OPS_BUILD_DEP := libatomic-ops-dev$(LS) [ia64],
+ifneq ($(DEB_TARGET_ARCH),ia64)
+  LIBUNWIND_DEV_DEP := # nothing
+endif
+
+ifneq (,$(filter $(distrelease),lenny etch squeeze dapper hardy jaunty karmic lucid maverick natty))
+  GMP_BUILD_DEP = libgmp3-dev | libgmp-dev (>= 2:5.0.1~),
+  MPFR_BUILD_DEP = libmpfr-dev,
+else
+  GMP_BUILD_DEP = libgmp-dev (>= 2:5.0.1~),
+  MPFR_BUILD_DEP = libmpfr-dev (>= 3.0.0-9~),
+endif
+
+ISL_BUILD_DEP = libisl-dev,
+ifneq (,$(filter $(distrelease),jessie sid experimental))
+  ISL_BUILD_DEP = libisl-dev (>= 0.14),
+endif
+
+ifneq (,$(filter $(distrelease),lenny etch squeeze wheezy dapper hardy jaunty karmic lucid maverick natty oneiric precise quantal raring))
+  MPC_BUILD_DEP = libmpc-dev,
+else
+  MPC_BUILD_DEP = libmpc-dev (>= 1.0),
+endif
+
+SOURCE_BUILD_DEP :=
+ifeq (,$(findstring gcc,$(PKGSOURCE)))
+  SOURCE_BUILD_DEP := gcc-$(BASE_VERSION)-source (>= $(GCC_SOURCE_VERSION)), gcc-$(BASE_VERSION)-source (<< $(NEXT_GCC_SOURCE_VERSION)),
+endif
+
+CHECK_BUILD_DEP := dejagnu [$(check_no_archs)],
+
+AUTO_BUILD_DEP := m4, libtool,
+AUTO_BUILD_DEP += autoconf2.64,
+
+ifeq (,$(filter $(distrelease),lenny etch squeeze wheezy dapper hardy jaunty karmic lucid maverick natty oneiric precise quantal raring saucy trusty))
+  SDT_BUILD_DEP = systemtap-sdt-dev [linux-any kfreebsd-any hurd-any],
+endif
+
+# ensure that the common libs, built from the next GCC version are available
+ifeq ($(PKGSOURCE),gcc-$(BASE_VERSION))
+  ifneq ($(with_common_libs),yes)
+    BASE_BUILD_DEP = gcc-6-base,
+  endif
+endif
+
+ifneq ($(DEB_CROSS),yes)
+JAVA_BUILD_DEP := zlib1g-dev, libantlr-java, python, libffi-dev,
+
+ifeq ($(PKGSOURCE),gcj-$(BASE_VERSION))
+  bd_java_archs =
+else ifeq ($(single_package)-$(with_java),yes-yes)
+  bd_java_archs =
+else
+  bd_java_archs = $(if $(java_no_archs),$(EMPTY) [$(java_no_archs)])
+endif
+
+ifneq (,$(java_awt_peers))
+  JAVA_BUILD_DEP += fastjar$(bd_java_archs), libmagic-dev$(bd_java_archs),
+  JAVA_BUILD_DEP += libecj-java (>= 3.3.0-2)$(bd_java_archs), zip$(bd_java_archs),
+  ifeq ($(with_java_maintainer_mode),yes)
+    # gcj-5 needed for gjavah-5.
+    JAVA_BUILD_DEP += gcj-5$(bd_java_archs), ecj (>= 3.3.0-2)$(bd_java_archs),
+  endif
+  JAVA_BUILD_DEP += libasound2-dev [$(java_no_archs) $(linux_no_archs)],
+  ifneq (,$(findstring gtk,$(java_awt_peers)))
+    JAVA_BUILD_DEP += libxtst-dev$(bd_java_archs), libxt-dev$(bd_java_archs), libgtk2.0-dev (>= 2.4.4-2)$(bd_java_archs), libart-2.0-dev$(bd_java_archs), libcairo2-dev$(bd_java_archs),
+  endif
+  ifneq (,$(findstring qt,$(java_awt_peers)))
+    JAVA_BUILD_DEP += libqt4-dev (>= 4.1.0)$(bd_java_archs),
+  endif
+  # gconf peer, disabled by default
+  #JAVA_BUILD_DEP += libgconf2-dev$(bd_java_archs),
+  # gstreamer peer
+  #JAVA_BUILD_DEP += libgstreamer-plugins-base0.10-dev$(bd_java_archs),
+endif
+ifneq ($(with_standalone_gcj),yes)
+  ifeq ($(PKGSOURCE),gcj-$(BASE_VERSION))
+    JAVA_BUILD_DEP += $(SOURCE_BUILD_DEP)
+  endif
+endif
+#JAVA_BUILD_INDEP := gcj-$(BASE_VERSION)-jdk
+ifeq ($(single_package),yes)
+  LIBSTDCXX_BUILD_INDEP = doxygen (>= 1.7.2), graphviz (>= 2.2), ghostscript, texlive-latex-base
+  LIBSTDCXX_BUILD_INDEP +=, xsltproc, libxml2-utils, docbook-xsl-ns
+  JAVA_BUILD_INDEP :=
+endif
+ifeq ($(with_separate_libgcj),yes)
+  ifeq ($(PKGSOURCE),gcc-$(BASE_VERSION))
+    JAVA_BUILD_DEP :=
+    JAVA_BUILD_INDEP :=
+  endif
+endif
+
+ifeq ($(with_ecj),yes)
+  ifneq (./,$(dir $(ecj_jar)))
+    ECJ_DEP = libecj-java (>= 3.5.1)
+  endif
+else
+  ECJ_DEP = ecj, libecj-java (>= 3.5.1)
+  ECJ_DEP = ecj-gcj, libecj-java-gcj (>= 3.5.1)
+  ifneq (,$(filter $(DEB_HOST_ARCH),arm armel armhf))
+    ECJ_DEP +=, ecj1
+  endif
+endif
+
+ifeq ($(PKGSOURCE),gcc-$(BASE_VERSION))
+  LIBSTDCXX_BUILD_INDEP = doxygen (>= 1.7.2), graphviz (>= 2.2), ghostscript, texlive-latex-base
+  ifeq (,$(filter $(distrelease),lenny etch dapper hardy jaunty karmic lucid maverick natty oneiric))
+    LIBSTDCXX_BUILD_INDEP +=, xsltproc, libxml2-utils, docbook-xsl-ns
+  endif
+  JAVA_BUILD_INDEP :=, $(JAVA_BUILD_INDEP)
+endif
+
+GO_BUILD_DEP := netbase,
+
+# try to build with itself, or with the last version
+ifneq (,$(filter $(distrelease), jessie))
+  gnat_build_dep := gnat-4.9 [$(ada_no_archs)], g++-4.9
+else ifneq (,$(filter $(distrelease), stretch sid wheezy precise trusty wily xenial))
+  gnat_build_dep := gnat-5 [$(ada_no_archs)], g++-5
+else ifneq (,$(filter $(distrelease), squeeze lucid))
+  gnat_build_dep :=
+else
+  gnat_build_dep := gnat [$(ada_no_archs)]
+endif
+
+ifeq ($(PKGSOURCE),gcc-$(BASE_VERSION))
+  ifneq ($(with_separate_gnat),yes)
+    # Build gnat as part of the combined gcc-x.y source package.  Do not fail
+    # if gnat is not present on unsupported architectures; the build scripts
+    # will not use gnat anyway.
+    GNAT_BUILD_DEP := $(gnat_build_dep),
+  endif
+else ifeq ($(single_package),yes)
+  # Ditto, as part of the gcc-snapshot package.
+  GNAT_BUILD_DEP := $(gnat_build_dep),
+else ifeq ($(PKGSOURCE),gnat-$(BASE_VERSION))
+  # Special source package just for gnat. Fail early if gnat is not present,
+  # rather than waste CPU cycles and fail later.
+  # Bootstrap step needs a gnatgcc symbolic link.
+  GNAT_BUILD_DEP := $(gnat_build_dep),
+  GNAT_BUILD_DEP += $(SOURCE_BUILD_DEP)
+  JAVA_BUILD_DEP :=
+  JAVA_BUILD_INDEP :=
+  GDC_BUILD_DEP :=
+  GO_BUILD_DEP :=
+else ifeq ($(PKGSOURCE),gcj-$(BASE_VERSION))
+  # Special source package just for gcj.
+  GNAT_BUILD_DEP :=
+  GDC_BUILD_DEP :=
+  GO_BUILD_DEP :=
+else ifeq ($(PKGSOURCE),gdc-$(BASE_VERSION))
+  # Special source package just for gdc.
+  GNAT_BUILD_DEP :=
+  JAVA_BUILD_DEP :=
+  JAVA_BUILD_INDEP :=
+  GDC_BUILD_DEP := $(SOURCE_BUILD_DEP)
+  GO_BUILD_DEP :=
+else ifeq ($(PKGSOURCE),gccgo-$(BASE_VERSION))
+  # Special source package just for gccgo.
+  GNAT_BUILD_DEP :=
+  JAVA_BUILD_DEP :=
+  JAVA_BUILD_INDEP :=
+  GDC_BUILD_DEP := $(SOURCE_BUILD_DEP)
+endif
+
+else
+# build cross compiler
+  CROSS_BUILD_DEP := libc6-dev$(cross_lib_arch),
+ifneq (,$(findstring cross-build-,$(build_type)))
+  CROSS_BUILD_DEP += zlib1g-dev$(cross_lib_arch), libmpfr-dev$(cross_lib_arch),
+endif
+  SOURCE_BUILD_DEP :=
+  ifeq (,$(findstring gcc,$(PKGSOURCE)))
+    SOURCE_BUILD_DEP := gcc-$(BASE_VERSION)-source (>= $(GCC_SOURCE_VERSION)), gcc-$(BASE_VERSION)-source (<< $(NEXT_GCC_SOURCE_VERSION)),
+  endif
+  ifeq ($(with_java),yes)
+    JAVA_BUILD_DEP := zlib1g-dev, lib64z1-dev [i386 powerpc sparc s390], lib32z1-dev [amd64 ppc64 kfreebsd-amd64 s390x],
+  endif
+  JAVA_BUILD_INDEP :=
+  GNAT_BUILD_DEP :=
+endif # cross compiler
+
+BASE_BREAKS := gcc-4.4-base (<< 4.4.7), gcc-4.7-base (<< 4.7.3), gcj-4.4-base (<< 4.4.6-9~), gnat-4.4-base (<< 4.4.6-3~), gcj-4.6-base (<< 4.6.1-4~), gnat-4.6 (<< 4.6.1-5~)
+# these would need proper updates, and are only needed for upgrades
+ifneq (,$(filter $(distrelease),squeeze wheezy lucid precise trusty))
+  BASE_BREAKS :=
+endif
+
+
+# The numeric part of the gcc version number (x.yy.zz)
+NEXT_GCC_VERSION := $(shell echo $(GCC_VERSION) | \
+		awk -F. '{OFS="."; if (NF==2) $$3=1; else $$NF += 1; print}')
+# first version with a new path component in gcc_lib_dir (i.e. GCC_VERSION
+# or TARGET_ALIAS changes), or last version available for all architectures
+DEB_GCC_SOFT_VERSION := 5.2.1-23
+DEB_GCJ_SOFT_VERSION := 5.2.1-23
+DEB_GNAT_SOFT_VERSION := 5.2.1-23
+
+ifeq ($(with_d),yes)
+  GDC_VERSION := $(BASE_VERSION)
+  DEB_GDC_VERSION := $(DEB_VERSION)
+endif
+
+# semiautomatic ...
+DEB_SOVERSION		:= $(DEB_VERSION)
+DEB_SOVERSION		:= 5
+DEB_SOEVERSION		:= $(EPOCH):5
+DEB_STDCXX_SOVERSION	:= 5
+DEB_GCJ_SOVERSION	:= 5
+DEB_GOMP_SOVERSION	:= $(DEB_SOVERSION)
+DEB_GCCMATH_SOVERSION	:= $(DEB_SOVERSION)
+
+DEB_GCC_VERSION := $(DEB_VERSION)
+DEB_GCJ_VERSION := $(DEB_VERSION)
+ifeq ($(with_separate_libgcj),yes)
+  ifeq ($(PKGSOURCE),gcj-$(BASE_VERSION))
+    DEB_GCC_VERSION := $(DEB_GCC_SOFT_VERSION)
+  endif
+endif
+
+DEB_GNAT_VERSION := $(DEB_VERSION)
+ifeq ($(with_separate_gnat),yes)
+  ifeq ($(PKGSOURCE),gnat-$(BASE_VERSION))
+    DEB_GCC_VERSION := $(DEB_GCC_SOFT_VERSION)
+  endif
+endif
+
+GNAT_VERSION := $(BASE_VERSION)
+
+LIBGNAT_DEP :=
+ifeq ($(with_libgnat),yes)
+  LIBGNAT_DEP := libgnat-$(GNAT_VERSION)$(LS)$(AQ) (>= $${gcc:Version})
+endif
+
+pkg_ver := -$(BASE_VERSION)
+
+PKG_GCJ_EXT = $(GCJ_SONAME1)
+PKG_LIBGCJ_EXT = $(GCJ_SONAME1)$(if $(GCJ_SONAME2),-$(GCJ_SONAME2))
+
+ctrl_flags = \
+	-DBINUTILSV=$(BINUTILSV) \
+	-DBINUTILSBDV=$(BINUTILSBDV) \
+	-DSRCNAME=$(PKGSOURCE) \
+	-D__$(DEB_TARGET_GNU_CPU)__ \
+	-DARCH=$(DEB_TARGET_ARCH) \
+	-DDIST=$(distribution)
+
+ctrl_flags += \
+	-DLIBC_DEV_DEP="$(LIBC_DEV_DEP)" \
+	-DLIBC_BIARCH_BUILD_DEP="$(LIBC_BIARCH_BUILD_DEP)" \
+	-DLIBC_DBG_DEP="$(LIBC_DBG_DEP)" \
+	-DBASE_BUILD_DEP="$(BASE_BUILD_DEP)" \
+	-DFORTRAN_BUILD_DEP="$(FORTRAN_BUILD_DEP)" \
+	-DGNAT_BUILD_DEP="$(GNAT_BUILD_DEP)" \
+	-DJAVA_BUILD_DEP="$(JAVA_BUILD_DEP)" \
+	-DGO_BUILD_DEP="$(GO_BUILD_DEP)" \
+	-DJAVA_BUILD_INDEP="$(JAVA_BUILD_INDEP)" \
+	-DLIBSTDCXX_BUILD_INDEP="$(LIBSTDCXX_BUILD_INDEP)" \
+	-DGDC_BUILD_DEP="$(GDC_BUILD_DEP)" \
+	-DBINUTILS_BUILD_DEP="$(BINUTILS_BUILD_DEP)" \
+	-DLIBC_BUILD_DEP="$(LIBC_BUILD_DEP)" \
+	-DCHECK_BUILD_DEP="$(CHECK_BUILD_DEP)" \
+	-DAUTO_BUILD_DEP="$(AUTO_BUILD_DEP)" \
+	-DSDT_BUILD_DEP="$(SDT_BUILD_DEP)" \
+	-DISL_BUILD_DEP="$(ISL_BUILD_DEP)" \
+	-DGMP_BUILD_DEP="$(GMP_BUILD_DEP)" \
+	-DMPFR_BUILD_DEP="$(MPFR_BUILD_DEP)" \
+	-DMPC_BUILD_DEP="$(MPC_BUILD_DEP)" \
+	-DDPKG_BUILD_DEP="$(DPKG_BUILD_DEP)" \
+	-DSOURCE_BUILD_DEP="$(SOURCE_BUILD_DEP)" \
+	-DCROSS_BUILD_DEP="$(CROSS_BUILD_DEP)" \
+	-DGCC_MULTILIB_BUILD_DEP='$(GCC_MULTILIB_BUILD_DEP)' \
+	-DMULTILIB_ARCHS="$(multilib_archs)" \
+	-DNEON_ARCHS="$(neon_archs)" \
+	-DTP=$(TP) \
+	-DTS=$(TS) \
+	-DLS=$(LS) \
+	-DAQ=$(AQ)
+
+ifeq ($(DEB_CROSS),yes)
+  ctrl_flags += \
+	-DTARGET=$(DEB_TARGET_ARCH) \
+	-DLIBUNWIND_BUILD_DEP="$(LIBUNWIND_BUILD_DEP)" \
+	-DLIBATOMIC_OPS_BUILD_DEP="$(LIBATOMIC_OPS_BUILD_DEP)"
+  ifeq ($(DEB_STAGE),rtlibs)
+    ctrl_flags += -DCROSS_ARCH=$(DEB_TARGET_ARCH)
+  endif
+else
+  # add '-DPRI=optional' to ctrl_flags if this is not the default compiler
+  # ctrl_flags += \
+  #     -DPRI=optional
+endif
+
+ifeq ($(with_base_only),yes)
+  ctrl_flags += \
+	-DBASE_ONLY=yes
+endif
+
+ifeq ($(with_multiarch_lib),yes)
+  ctrl_flags += \
+	-DMULTIARCH=yes
+endif
+
+control: control-file readme-bugs-file parameters-file symbols-files copyright-file substvars-file versioned-files check-versions
+
+# stage1 and stage2 compilers are only C
+ifneq (,$(filter $(DEB_STAGE),stage1 stage2))
+  languages = c
+  addons = gccbase cdev plugindev
+  ifeq ($(with_gcclbase),yes)
+    addons += gcclbase
+  endif
+  ifeq ($(multilib),yes)
+    addons += multilib
+  endif
+  addons += $(if $(findstring armel,$(biarchhfarchs)),armml)
+  addons += $(if $(findstring armhf,$(biarchsfarchs)),armml)
+  addons += $(if $(findstring amd64,$(biarchx32archs)),x32dev)
+  ifeq ($(DEB_STAGE),stage2)
+    addons += libgcc
+    ifeq ($(multilib),yes)
+      addons += lib32gcc lib64gcc libn32gcc
+      addons += $(if $(findstring amd64,$(biarchx32archs)),libx32gcc)
+      addons += $(if $(findstring armel,$(biarchhfarchs)),libhfgcc)
+      addons += $(if $(findstring armhf,$(biarchsfarchs)),libsfgcc)
+    endif
+  else
+    LIBC_BIARCH_DEV_DEP :=
+  endif
+else
+languages = c c++ fortran objc objpp
+ifeq ($(DEB_STAGE),rtlibs)
+  ifeq (,$(filter libgfortran, $(with_rtlibs)))
+    languages := $(filter-out fortran, $(languages))
+  endif
+  ifeq (,$(filter libobjc, $(with_rtlibs)))
+    languages := $(filter-out objc objpp, $(languages))
+  endif
+endif
+ifeq ($(with_gccbase),yes)
+    addons += gccbase
+endif
+ifeq ($(with_gcclbase),yes)
+  addons += gcclbase
+endif
+ifneq ($(DEB_STAGE),rtlibs)
+  addons += cdev c++dev source multilib
+  ifeq ($(build_type),build-native)
+    addons += testresults
+  endif
+  ifneq (,$(filter fortran, $(languages)))
+      addons += fdev
+  endif
+  ifneq (,$(filter objc, $(languages)))
+      addons += objcdev
+  endif
+  ifneq (,$(filter objpp, $(languages)))
+      addons += objppdev
+  endif
+  addons += plugindev
+endif
+addons += $(if $(findstring armel,$(biarchhfarchs)),armml)
+addons += $(if $(findstring armhf,$(biarchsfarchs)),armml)
+addons += $(if $(findstring amd64,$(biarchx32archs)),x32dev)
+ifeq ($(with_libgcc),yes)
+  addons += libgcc lib4gcc lib32gcc lib64gcc libn32gcc
+  addons += $(if $(findstring amd64,$(biarchx32archs)),libx32gcc)
+  addons += $(if $(findstring armel,$(biarchhfarchs)),libhfgcc)
+  addons += $(if $(findstring armhf,$(biarchsfarchs)),libsfgcc)
+endif
+ifeq ($(with_libcxx),yes)
+  addons += libcxx lib32cxx lib64cxx libn32cxx
+  addons += $(if $(findstring amd64,$(biarchx32archs)),libx32cxx)
+  addons += $(if $(findstring armel,$(biarchhfarchs)),libhfcxx)
+  addons += $(if $(findstring armhf,$(biarchsfarchs)),libsfcxx)
+endif
+addons += $(if $(findstring amd64,$(biarchx32archs)),libx32dbgcxx)
+addons += $(if $(findstring armel,$(biarchhfarchs)),libhfdbgcxx)
+addons += $(if $(findstring armhf,$(biarchsfarchs)),libsfdbgcxx)
+ifeq ($(with_libgfortran),yes)
+  addons += libgfortran lib32gfortran lib64gfortran libn32gfortran
+  addons += $(if $(findstring amd64,$(biarchx32archs)),libx32gfortran)
+  addons += $(if $(findstring armel,$(biarchhfarchs)),libhfgfortran)
+  addons += $(if $(findstring armhf,$(biarchsfarchs)),libsfgfortran)
+endif
+ifeq ($(with_libobjc),yes)
+  addons += libobjc lib32objc lib64objc libn32objc
+  addons += $(if $(findstring amd64,$(biarchx32archs)),libx32objc)
+  addons += $(if $(findstring armel,$(biarchhfarchs)),libhfobjc)
+  addons += $(if $(findstring armhf,$(biarchsfarchs)),libsfobjc)
+endif
+ifeq ($(with_libgomp),yes)
+  addons += libgomp lib32gomp lib64gomp libn32gomp
+  addons += $(if $(findstring amd64,$(biarchx32archs)),libx32gomp)
+  addons += $(if $(findstring armel,$(biarchhfarchs)),libhfgomp)
+  addons += $(if $(findstring armhf,$(biarchsfarchs)),libsfgomp)
+endif
+ifeq ($(with_libitm),yes)
+  addons += libitm lib32itm lib64itm libn32itm
+  addons += $(if $(findstring amd64,$(biarchx32archs)),libx32itm)
+  addons += $(if $(findstring armel,$(biarchhfarchs)),libhfitm)
+  addons += $(if $(findstring armhf,$(biarchsfarchs)),libsfitm)
+endif
+ifeq ($(with_libatomic),yes)
+  addons += libatomic lib32atomic lib64atomic libn32atomic
+  addons += $(if $(findstring amd64,$(biarchx32archs)),libx32atomic)
+  addons += $(if $(findstring armel,$(biarchhfarchs)),libhfatomic)
+  addons += $(if $(findstring armhf,$(biarchsfarchs)),libsfatomic)
+endif
+ifeq ($(with_libbacktrace),yes)
+  addons += libbtrace lib32btrace lib64btrace libn32btrace
+  addons += $(if $(findstring amd64,$(biarchx32archs)),libx32btrace)
+  addons += $(if $(findstring armel,$(biarchhfarchs)),libhfbtrace)
+  addons += $(if $(findstring armhf,$(biarchsfarchs)),libsfbtrace)
+endif
+ifeq ($(with_libasan),yes)
+  addons += libasan lib32asan lib64asan libn32asan
+  addons += $(if $(findstring amd64,$(biarchx32archs)),libx32asan)
+  addons += $(if $(findstring armel,$(biarchhfarchs)),libhfasan)
+  addons += $(if $(findstring armhf,$(biarchsfarchs)),libsfasan)
+endif
+ifeq ($(with_liblsan),yes)
+  addons += liblsan lib32lsan lib64lsan libn32lsan
+  addons += $(if $(findstring amd64,$(biarchx32archs)),libx32lsan)
+  #addons += $(if $(findstring armel,$(biarchhfarchs)),libhflsan)
+  #addons += $(if $(findstring armhf,$(biarchsfarchs)),libsflsan)
+endif
+ifeq ($(with_libtsan),yes)
+  addons += libtsan
+  addons += libtsan #lib32tsan lib64tsan libn32tsan
+  #addons += $(if $(findstring amd64,$(biarchx32archs)),libx32tsan)
+  #addons += $(if $(findstring armel,$(biarchhfarchs)),libhftsan)
+  #addons += $(if $(findstring armhf,$(biarchsfarchs)),libsftsan)
+endif
+ifeq ($(with_libubsan),yes)
+  addons += libubsan lib32ubsan lib64ubsan libn32ubsan
+  addons += $(if $(findstring amd64,$(biarchx32archs)),libx32ubsan)
+  addons += $(if $(findstring armel,$(biarchhfarchs)),libhfubsan)
+  addons += $(if $(findstring armhf,$(biarchsfarchs)),libsfubsan)
+endif
+ifeq ($(with_vtv),yes)
+  addons += libvtv lib32vtv lib64vtv #libn32vtv
+  addons += $(if $(findstring amd64,$(biarchx32archs)),libx32vtv)
+  #addons += $(if $(findstring armel,$(biarchhfarchs)),libhfvtv)
+  #addons += $(if $(findstring armhf,$(biarchsfarchs)),libsfvtv)
+endif
+ifeq ($(with_libcilkrts),yes)
+  addons += libcilkrts
+  addons += libcilkrts lib32cilkrts lib64cilkrts #libn32cilkrts
+  addons += $(if $(findstring amd64,$(biarchx32archs)),libx32cilkrts)
+  #addons += $(if $(findstring armel,$(biarchhfarchs)),libhfcilkrts)
+  #addons += $(if $(findstring armhf,$(biarchsfarchs)),libsfcilkrts)
+endif
+ifeq ($(with_mpx),yes)
+  addons += libmpx lib32mpx lib64mpx
+endif
+ifeq ($(with_libqmath),yes)
+  addons += libqmath lib32qmath lib64qmath libn32qmath
+  addons += $(if $(findstring amd64,$(biarchx32archs)),libx32qmath)
+  addons += $(if $(findstring armel,$(biarchhfarchs)),libhfqmath)
+  addons += $(if $(findstring armhf,$(biarchsfarchs)),libsfqmath)
+endif
+ifeq ($(with_jit),yes)
+  addons += libjit
+endif
+ifeq ($(with_libcc1),yes)
+  addons += libcc1
+endif
+ifeq ($(with_d),yes)
+  languages += d
+  ifeq ($(with_libphobos),yes)
+    addons += libphobos
+    addons += $(if $(findstring amd64,$(biarchx32archs)),libx32phobos)
+  endif
+endif
+ifeq ($(with_go),yes)
+  addons += ggo godev
+  ifeq ($(with_libgo),yes)
+    addons += libggo lib32ggo lib64ggo libn32ggo
+    addons += $(if $(findstring amd64,$(biarchx32archs)),libx32ggo)
+  endif
+endif
+ifeq ($(with_ada),yes)
+  languages += ada
+  addons += libgnat libs # libgmath libnof lib64gnat ssp
+  ifeq ($(with_gnatsjlj),yes)
+    addons += adasjlj
+  endif
+endif
+ifeq ($(with_java),yes)
+  languages += java
+  addons += gcj
+  ifneq ($(DEB_CROSS),yes)
+    addons += libgcj libgcjdev gcjdoc gcjsrc
+  endif
+endif
+
+  ifneq ($(DEB_CROSS),yes)
+  ifneq (,$(neon_archs))
+    addons += libneongcc libneongomp libneonitm libneonobjc libneongfortran libneoncxx
+  endif
+  ifeq ($(with_fixincl),yes)
+    addons += $(if $(DEB_STAGE),,fixincl)
+  endif
+  ifeq ($(with_libgcj_doc),yes)
+    addons += gcjdoc
+  endif
+  endif # DEB_CROSS
+#  ifneq (,$(findstring gtk, $(java_awt_peers)))
+#    addons += gtkpeer
+#  endif
+#  ifneq (,$(findstring qt, $(java_awt_peers)))
+#    addons += qtpeer
+#  endif
+  ifeq ($(with_separate_libgcj),yes)
+    ifeq ($(PKGSOURCE),gcc-$(BASE_VERSION))
+      languages := $(filter-out java,$(languages))
+      addons := $(filter-out gcj libgcj libgcjdev gcjdoc gcjsrc gtkpeer qtpeer,$(addons))
+    endif
+    ifeq ($(PKGSOURCE),gcj-$(BASE_VERSION))
+      languages = java
+      addons = gcj libgcj libgcjdev gcjsrc
+      addons += $(if $(filter yes,$(with_gcjbase)),gcjbase)
+      addons += $(if $(filter yes,$(with_gcjxbase)),gcjxbase)
+    ifeq ($(with_libgcj_doc),yes)
+      addons += gcjdoc
+    endif
+#      ifneq (,$(findstring gtk, $(java_awt_peers)))
+#        addons += gtkpeer
+#      endif
+#      ifneq (,$(findstring qt, $(java_awt_peers)))
+#        addons += qtpeer
+#      endif
+      ifeq ($(with_standalone_gcj),yes)
+	addons += libgcc lib4gcc lib64gcc lib32gcc libn32gcc libx32gcc
+      endif
+    endif
+  endif
+  ifeq ($(DEB_CROSS),yes)
+    addons := $(filter-out gcjdoc gcjsrc,$(addons))
+  endif
+  ifeq ($(with_standalone_gcj),yes)
+    ifeq ($(PKGSOURCE),gcj-$(BASE_VERSION))
+      ctrl_flags += -DSTANDALONEJAVA
+    endif
+  endif
+  ifeq ($(with_separate_libgo),yes)
+    ifeq ($(PKGSOURCE),gcc-$(BASE_VERSION))
+      languages := $(filter-out go,$(languages))
+      addons := $(filter-out ggo godev libggo lib64ggo lib32ggo libn32ggo libx32ggo,$(addons))
+    endif
+    ifeq ($(PKGSOURCE),gccgo-$(BASE_VERSION))
+      languages = go
+      addons = ggo godev libggo lib64ggo lib32ggo libn32ggo gccbase multilib
+      addons += $(if $(findstring amd64,$(biarchx32archs)),libx32ggo)
+      ifeq ($(with_standalone_go),yes)
+        addons += libgcc lib4gcc lib32gcc lib64gcc libn32gcc
+        addons += $(if $(findstring amd64,$(biarchx32archs)),libx32gcc)
+        addons += $(if $(findstring armel,$(biarchhfarchs)),libhfgcc)
+        addons += $(if $(findstring armhf,$(biarchsfarchs)),libsfgcc)
+        ifeq ($(with_libcc1),yes)
+          addons += libcc1
+        endif
+      endif
+    endif
+  endif
+  ifeq ($(with_standalone_go),yes)
+    ifeq ($(PKGSOURCE),gccgo-$(BASE_VERSION))
+      ctrl_flags += -DSTANDALONEGO
+    endif
+  endif
+  ifeq ($(with_separate_gnat),yes)
+    ifeq ($(PKGSOURCE),gcc-$(BASE_VERSION))
+      languages := $(filter-out ada,$(languages))
+      addons := $(filter-out libgnat adasjlj,$(addons))
+    endif
+    ifeq ($(PKGSOURCE),gnat-$(BASE_VERSION))
+      languages = ada
+      addons = gnatbase libgnat
+    endif
+  endif
+  ifeq ($(with_separate_gdc),yes)
+    ifeq ($(PKGSOURCE),gcc-$(BASE_VERSION))
+      languages := $(filter-out d,$(languages))
+    endif
+    ifeq ($(PKGSOURCE),gdc-$(BASE_VERSION))
+      languages = d
+      addons = 
+      ifeq ($(with_libphobos),yes)
+        addons += libphobos
+      endif
+    endif
+  endif
+  ifneq ($(DEB_CROSS),yes) # no docs for cross compilers
+  ifneq ($(GFDL_INVARIANT_FREE),yes)
+    addons += gfdldoc
+  endif
+  endif
+endif # not stage
+
+control-file:
+	echo "addons: $(addons)"; \
+	m4 $(ctrl_flags) \
+	  -DPV=$(pkg_ver) \
+	  -DCXX_SO=$(CXX_SONAME) \
+	  -DGCC_SO=$(GCC_SONAME) \
+	  -DOBJC_SO=$(OBJC_SONAME) \
+	  -DFORTRAN_SO=$(FORTRAN_SONAME) \
+	  -DGCJ_SO=$(PKG_GCJ_EXT) \
+	  -DLIBGCJ_EXT=$(PKG_LIBGCJ_EXT) \
+	  -DGNAT_SO=$(GNAT_SONAME) \
+	  -DGNAT_V=$(GNAT_VERSION) \
+	  -DPHOBOS_V=$(libphobos_version) \
+	  -DGOMP_SO=$(GOMP_SONAME) \
+	  -DGCCMATH_SO=$(GCCMATH_SONAME) \
+	  -DITM_SO=$(ITM_SONAME) \
+	  -DATOMIC_SO=$(ATOMIC_SONAME) \
+	  -DBTRACE_SO=$(BTRACE_SONAME) \
+	  -DASAN_SO=$(ASAN_SONAME) \
+	  -DLSAN_SO=$(LSAN_SONAME) \
+	  -DTSAN_SO=$(TSAN_SONAME) \
+	  -DUBSAN_SO=$(UBSAN_SONAME) \
+	  -DVTV_SO=$(VTV_SONAME) \
+	  -DCILKRTS_SO=$(CILKRTS_SONAME) \
+	  -DMPX_SO=$(MPX_SONAME) \
+	  -DQMATH_SO=$(QUADMATH_SONAME) \
+	  -DSSP_SO=$(SSP_SONAME) \
+	  -DGO_SO=$(GO_SONAME) \
+	  -DCC1_SO=$(CC1_SONAME) \
+	  -DGCCJIT_SO=$(GCCJIT_SONAME) \
+	  -Denabled_languages="$(languages) $(addons)" \
+	  -Dada_no_archs="$(ada_no_archs)" \
+	  -Djava_no_archs="$(java_no_archs)" \
+	  -Dfortran_no_archs="$(fortran_no_archs)" \
+	  -Dlibgc_no_archs="$(libgc_no_archs)" \
+	  -Dlibphobos_archs="$(libphobos_archs)" \
+	  -Dlibphobos_no_archs="$(libphobos_no_archs)" \
+	  -Dcheck_no_archs="$(check_no_archs)" \
+	  -Dlocale_no_archs="$(locale_no_archs)" \
+	  -Dlinux_gnu_archs="$(linux_gnu_archs)" \
+	  -Dbiarch32_archs="$(strip $(subst /, ,$(biarch32archs)))" \
+	  -Dbiarch64_archs="$(strip $(subst /, ,$(biarch64archs)))" \
+	  -Dbiarchn32_archs="$(strip $(subst /, ,$(biarchn32archs)))" \
+	  -Dbiarchx32_archs="$(strip $(subst /, ,$(biarchx32archs)))" \
+	  -Dbiarchhf_archs="$(strip $(subst /, ,$(biarchhfarchs)))" \
+	  -Dbiarchsf_archs="$(strip $(subst /, ,$(biarchsfarchs)))" \
+	  -Dadd_built_using=$(add_built_using) \
+	  -DGCC_PORTS_BUILD=$(GCC_PORTS_BUILD) \
+	  -DPR66145BREAKS="$(if $(findstring build-native,$(build_type)),$(if $(filter new,$(libstdcxx_abi)),$$(tr '\n' ' ' < debian/libstdc++-breaks.$(derivative))))" \
+		debian/control.m4 > debian/control.tmp2
+	uniq debian/control.tmp2 | sed '/^Build/s/ *, */, /g;/^  /s/ *, */, /g' \
+		$(if $(filter yes, $(with_base_only)), | awk '/^$$/ {if (p) exit; else p=1; } {print}') \
+		> debian/control.tmp
+	rm -f debian/control.tmp2
+	[ -e debian/control ] \
+	  && cmp -s debian/control debian/control.tmp \
+	  && rm -f debian/control.tmp && exit 0; \
+	  mv debian/control.tmp debian/control; touch $(control_stamp)
+
+readme-bugs-file:
+	m4 -DDIST=$(distribution) -DSRCNAME=$(PKGSOURCE) \
+		debian/README.Bugs.m4 > debian/README.Bugs
+
+copyright-file:
+	rm -f debian/copyright
+	if echo $(SOURCE_VERSION) | grep -E ^'[0-9]\.[0-9]-[0-9]{8}' ; \
+		then SVN_BRANCH="trunk" ; \
+	else \
+		SVN_BRANCH="gcc-$(subst .,_,$(BASE_VERSION))-branch" ; \
+	fi ; \
+	sed debian/copyright.in		\
+		-e "s/@BV@/$(BASE_VERSION)/g"		\
+		-e "s/@SVN_BRANCH@/$$SVN_BRANCH/g"	\
+		> debian/copyright
+
+substvars-file: control-file
+	rm -f debian/substvars.local.tmp
+	( \
+		echo 'libgcc:Version=$(DEB_LIBGCC_VERSION)'; \
+		echo 'gcc:Version=$(DEB_GCC_VERSION)'; \
+		echo 'gcc:EpochVersion=$(DEB_EVERSION)'; \
+		echo 'gcc:SoftVersion=$(DEB_GCC_SOFT_VERSION)'; \
+		echo 'gdc:Version=$(DEB_GDC_VERSION)'; \
+		echo 'gcj:Version=$(DEB_GCJ_VERSION)'; \
+		echo 'gcj:SoftVersion=$(DEB_GCJ_SOFT_VERSION)'; \
+		echo 'gcj:BaseVersion=$(BASE_VERSION)'; \
+		echo 'gnat:Version=$(DEB_GNAT_VERSION)'; \
+		echo 'gnat:SoftVersion=$(DEB_GNAT_SOFT_VERSION)'; \
+		echo 'binutils:Version=$(BINUTILSV)'; \
+		echo 'dep:libgcc=$(LIBGCC_DEP)'; \
+		echo 'dep:libgccdev=$(LIBGCC_DEV_DEP)'; \
+		echo 'dep:libgccbiarch=$(libgccbiarch)'; \
+		echo 'dep:libgccbiarchdev=$(libgccbiarchdev)'; \
+		echo 'dep:libc=$(LIBC_DEP) (>= $(libc_ver))'; \
+		echo 'dep:libcdev=$(LIBC_DEV_DEP)'; \
+		echo 'dep:libcbiarch=$(LIBC_BIARCH_DEP)'; \
+		echo 'dep:libcbiarchdev=$(LIBC_BIARCH_DEV_DEP)'; \
+		echo 'dep:libunwinddev=$(LIBUNWIND_DEV_DEP)'; \
+		echo 'dep:libcxxbiarchdev=$(libstdc++biarchdev)'; \
+		echo 'dep:libcxxbiarchdbg=$(libstdc++biarchdbg)'; \
+		echo 'dep:libgnat=$(LIBGNAT_DEP)'; \
+		echo 'dep:ecj=$(ECJ_DEP)'; \
+		echo 'base:Breaks=$(BASE_BREAKS)'; \
+	) > debian/substvars.local.tmp
+ifneq (,$(filter $(DEB_TARGET_ARCH), $(multilib_archs)))
+	( \
+		echo 'gcc:multilib=gcc-$(BASE_VERSION)-multilib$(TS)'; \
+		echo 'gxx:multilib=g++-$(BASE_VERSION)-multilib$(TS)'; \
+		echo 'gobjc:multilib=gobjc-$(BASE_VERSION)-multilib$(TS)'; \
+		echo 'gobjcxx:multilib=gobjc++-$(BASE_VERSION)-multilib$(TS)'; \
+		echo 'gfortran:multilib=gfortran-$(BASE_VERSION)-multilib$(TS)'; \
+	) >> debian/substvars.local.tmp
+endif
+ifeq ($(with_gold),yes)
+	echo 'dep:gold=binutils-gold (>= $(BINUTILSV))' \
+		>> debian/substvars.local.tmp
+endif
+ifeq ($(with_libssp),yes)
+	echo 'dep:libssp=libssp$(SSP_SONAME)$(LS)$(AQ) (>= $${gcc:Version})' \
+		>> debian/substvars.local.tmp
+endif
+ifeq ($(with_gomp),yes)
+	echo 'dep:libgomp=libgomp$(GOMP_SONAME)$(LS)$(AQ) (>= $${gcc:Version})' \
+		>> debian/substvars.local.tmp
+endif
+ifeq ($(with_itm),yes)
+	echo 'dep:libitm=libitm$(ITM_SONAME)$(LS)$(AQ) (>= $${gcc:Version})' \
+		>> debian/substvars.local.tmp
+endif
+ifeq ($(with_atomic),yes)
+	echo 'dep:libatomic=libatomic$(ATOMIC_SONAME)$(LS)$(AQ) (>= $${gcc:Version})' \
+		>> debian/substvars.local.tmp
+endif
+ifeq ($(with_libbacktrace),yes)
+	echo 'dep:libbacktrace=libbtrace$(BTRACE_SONAME)$(LS)$(AQ) (>= $${gcc:Version})' \
+		>> debian/substvars.local.tmp
+endif
+ifeq ($(with_asan),yes)
+	echo 'dep:libasan=libasan$(ASAN_SONAME)$(LS)$(AQ) (>= $${gcc:Version})' \
+		>> debian/substvars.local.tmp
+endif
+ifeq ($(with_lsan),yes)
+	echo 'dep:liblsan=liblsan$(LSAN_SONAME)$(LS)$(AQ) (>= $${gcc:Version})' \
+		>> debian/substvars.local.tmp
+endif
+ifeq ($(with_tsan),yes)
+	echo 'dep:libtsan=libtsan$(TSAN_SONAME)$(LS)$(AQ) (>= $${gcc:Version})' \
+		>> debian/substvars.local.tmp
+endif
+ifeq ($(with_ubsan),yes)
+	echo 'dep:libubsan=libubsan$(UBSAN_SONAME)$(LS)$(AQ) (>= $${gcc:Version})' \
+		>> debian/substvars.local.tmp
+endif
+ifeq ($(with_vtv),yes)
+	echo 'dep:libvtv=libvtv$(VTV_SONAME)$(LS)$(AQ) (>= $${gcc:Version})' \
+		>> debian/substvars.local.tmp
+endif
+ifeq ($(with_cilkrts),yes)
+	echo 'dep:libcilkrts=libcilkrts$(CILKRTS_SONAME)$(LS)$(AQ) (>= $${gcc:Version})' \
+		>> debian/substvars.local.tmp
+endif
+ifeq ($(with_mpx),yes)
+	echo 'dep:libmpx=libmpx$(MPX_SONAME)$(LS)$(AQ) (>= $${gcc:Version})' \
+		>> debian/substvars.local.tmp
+endif
+ifeq ($(with_qmath),yes)
+	echo 'dep:libqmath=libquadmath$(QUADMATH_SONAME)$(LS)$(AQ) (>= $${gcc:Version})' \
+		>> debian/substvars.local.tmp
+endif
+ifeq ($(distribution),Debian)
+	echo 'dep:libx32z=$(if $(filter $(distribution), Debian),,libx32z1-dev)' \
+		>> debian/substvars.local.tmp
+endif
+ifeq ($(multilib),yes)
+	echo 'dep:libgfortranbiarchdev=$(libgfortranbiarchdev)' \
+		>> debian/substvars.local.tmp
+	echo 'dep:libobjcbiarchdev=$(libobjcbiarchdev)' \
+		>> debian/substvars.local.tmp
+  ifeq ($(with_libphobos),yes)
+	echo 'dep:libphobosbiarchdev=$(libphobosbiarchdev)' \
+		>> debian/substvars.local.tmp
+  endif
+  ifeq ($(with_libssp),yes)
+	echo 'dep:libsspbiarch=$(libsspbiarch)' \
+		>> debian/substvars.local.tmp
+  endif
+  ifeq ($(with_gomp),yes)
+	echo 'dep:libgompbiarch=$(libgompbiarch)' \
+		>> debian/substvars.local.tmp
+  endif
+  ifeq ($(with_itm),yes)
+	echo 'dep:libitmbiarch=$(libitmbiarch)' \
+		>> debian/substvars.local.tmp
+  endif
+  ifeq ($(with_atomic),yes)
+	echo 'dep:libatomicbiarch=$(libatomicbiarch)' \
+		>> debian/substvars.local.tmp
+  endif
+  ifeq ($(with_libbacktrace),yes)
+	echo 'dep:libbtracebiarch=$(libbtracebiarch)' \
+		>> debian/substvars.local.tmp
+  endif
+  ifeq ($(with_asan),yes)
+	echo 'dep:libasanbiarch=$(libasanbiarch)' \
+		>> debian/substvars.local.tmp
+  endif
+  ifeq ($(with_lsan),yes)
+	#echo 'dep:liblsanbiarch=$(liblsanbiarch)' \
+	#	>> debian/substvars.local.tmp
+  endif
+  ifeq ($(with_tsan),yes)
+	#echo 'dep:libtsanbiarch=$(libtsanbiarch)' \
+	#	>> debian/substvars.local.tmp
+  endif
+  ifeq ($(with_ubsan),yes)
+	echo 'dep:libubsanbiarch=$(libubsanbiarch)' \
+		>> debian/substvars.local.tmp
+  endif
+  ifeq ($(with_vtv),yes)
+	echo 'dep:libvtvbiarch=$(libvtvbiarch)' \
+		>> debian/substvars.local.tmp
+  endif
+  ifeq ($(with_cilkrts),yes)
+	echo 'dep:libcilkrtsbiarch=$(libcilkrtsbiarch)' \
+		>> debian/substvars.local.tmp
+  endif
+  ifeq ($(with_mpx),yes)
+	echo 'dep:libmpxbiarch=$(libmpxbiarch)' \
+		>> debian/substvars.local.tmp
+  endif
+  ifeq ($(with_qmath),yes)
+	echo 'dep:libqmathbiarch=$(libquadmathbiarch)' \
+		>> debian/substvars.local.tmp
+  endif
+  ifeq ($(with_go),yes)
+	echo 'dep:libgobiarchdev=$(libgobiarchdev)' \
+		>> debian/substvars.local.tmp
+	echo 'dep:libgobiarch=$(libgobiarch)' \
+		>> debian/substvars.local.tmp
+  endif
+endif
+ifneq ($(with_standalone_gcj),yes)
+  ifneq (,$(filter $(DEB_HOST_ARCH),armel armhf))
+	echo 'dep:gcj=g++$(pkg_ver) (>= $(DEB_GCC_SOFT_VERSION))' \
+		>> debian/substvars.local.tmp
+  else
+	echo 'dep:gcj=gcc$(pkg_ver) (>= $(DEB_GCC_SOFT_VERSION))' \
+		>> debian/substvars.local.tmp
+  endif
+  ifeq ($(DEB_CROSS),yes)
+	echo 'dep:gcjcross=gcj$(pkg_ver) (>= $(DEB_GCC_SOFT_VERSION))' \
+		>> debian/substvars.local.tmp
+  endif
+endif
+ifeq ($(DEB_CROSS),yes)
+	echo 'dep:gdccross=gdc$(pkg_ver) (>= $(DEB_GCC_SOFT_VERSION))' \
+		>> debian/substvars.local.tmp
+endif
+ifeq ($(with_libphobos),yes)
+	echo 'dep:phobosdev=libphobos$(pkg_ver)-dev$(LS)$(AQ) (>= $(DEB_GCC_SOFT_VERSION))' \
+		>> debian/substvars.local.tmp
+  ifeq ($(DEB_CROSS),yes)
+	: # FIXME: make the cross gdc aware of both include paths
+	echo 'dep:gdccross=gdc$(pkg_ver) (>= $(DEB_GCC_SOFT_VERSION))' \
+		>> debian/substvars.local.tmp
+  endif
+endif
+ifeq ($(with_cc1),yes)
+  ifneq (,$(findstring build-cross, $(build_type)))
+	echo 'dep:libcc1=libcc1-$(CC1_SONAME) (>= $(GCC_VERSION))' \
+		>> debian/substvars.local.tmp
+  else
+	echo 'dep:libcc1=libcc1-$(CC1_SONAME) (>= $${gcc:Version})' \
+		>> debian/substvars.local.tmp
+  endif
+endif
+#ifneq (,$(findstring gtk, $(java_awt_peers)))
+#	echo 'pkg:gcjgtk=libgcj$(subst 0,,$(GCJ_SONAME))-awt-gtk (>= $(DEB_GCJ_VERSION))' \
+#		>> debian/substvars.local.tmp
+#endif
+#ifneq (,$(findstring qt, $(java_awt_peers)))
+#	echo 'pkg:gcjqt=libgcj$(subst 0,,$(GCJ_SONAME))-awt-qt (>= $(DEB_GCJ_VERSION))' \
+#		>> debian/substvars.local.tmp
+#endif
+ifeq ($(DEB_HOST_ARCH),hppa)
+	echo 'dep:prctl=prctl' >> debian/substvars.local.tmp
+endif
+ifeq ($(derivative)-$(DEB_HOST_ARCH),Debian-amd64)
+	echo 'confl:lib32=libc6-i386 (<< 2.9-22)' >> debian/substvars.local.tmp
+endif
+ifeq ($(with_multiarch_lib),yes)
+	echo 'multiarch:breaks=gcc-4.3 (<< 4.3.6-1), gcc-4.4 (<< 4.4.6-4), gcc-4.5 (<< 4.5.3-2)' >> debian/substvars.local.tmp
+endif
+	echo 'golang:Conflicts=golang-go (<< 2:1.3.3-1ubuntu2)' >> debian/substvars.local.tmp
+ifeq ($(add_built_using),yes)
+	echo "Built-Using=$(shell dpkg-query -f '$${source:Package} (= $${source:Version}), ' -W gcc$(pkg_ver)-source)" \
+	>> debian/substvars.local.tmp
+endif
+	v=`sed -n '/^#define MOD_VERSION/s/.* "\([0-9]*\)"/\1/p' \
+		$(srcdir)/gcc/fortran/module.c`; \
+	echo "fortran:mod-version=gfortran-mod-$$v" >> debian/substvars.local.tmp
+
+	[ -e debian/substvars.local ] \
+	  && cmp -s debian/substvars.local debian/substvars.local.tmp \
+	  && rm -f debian/substvars.local.tmp && exit 0; \
+	  mv debian/substvars.local.tmp debian/substvars.local; \
+	  touch $(control_stamp)
+
+parameters-file:
+	rm -f debian/rules.parameters.tmp
+	( \
+		echo '# configuration parameters taken from upstream source files'; \
+		echo 'GCC_VERSION	:= $(GCC_VERSION)'; \
+		echo 'NEXT_GCC_VERSION	:= $(NEXT_GCC_VERSION)'; \
+		echo 'BASE_VERSION	:= $(BASE_VERSION)'; \
+		echo 'SOURCE_VERSION	:= $(SOURCE_VERSION)'; \
+		echo 'DEB_VERSION	:= $(DEB_VERSION)'; \
+		echo 'DEB_EVERSION	:= $(DEB_EVERSION)'; \
+		echo 'DEB_GDC_VERSION	:= $(DEB_GDC_VERSION)'; \
+		echo 'DEB_SOVERSION	:= $(DEB_SOVERSION)'; \
+		echo 'DEB_SOEVERSION	:= $(DEB_SOEVERSION)'; \
+		echo 'DEB_LIBGCC_SOVERSION	:= $(DEB_LIBGCC_SOVERSION)'; \
+		echo 'DEB_LIBGCC_VERSION	:= $(DEB_LIBGCC_VERSION)'; \
+		echo 'DEB_STDCXX_SOVERSION	:= $(DEB_STDCXX_SOVERSION)'; \
+		echo 'DEB_GCJ_SOVERSION	:= $(DEB_GCJ_SOVERSION)'; \
+		echo 'PKG_GCJ_EXT	:= $(PKG_GCJ_EXT)'; \
+		echo 'PKG_LIBGCJ_EXT	:= $(PKG_LIBGCJ_EXT)'; \
+		echo 'DEB_GOMP_SOVERSION	:= $(DEB_GOMP_SOVERSION)'; \
+		echo 'DEB_GCCMATH_SOVERSION	:= $(DEB_GCCMATH_SOVERSION)'; \
+		echo 'GCC_SONAME	:= $(GCC_SONAME)'; \
+		echo 'CXX_SONAME	:= $(CXX_SONAME)'; \
+		echo 'FORTRAN_SONAME	:= $(FORTRAN_SONAME)'; \
+		echo 'OBJC_SONAME	:= $(OBJC_SONAME)'; \
+		echo 'GCJ_SONAME	:= $(GCJ_SONAME)'; \
+		echo 'GDC_VERSION	:= $(GDC_VERSION)'; \
+		echo 'GNAT_VERSION	:= $(GNAT_VERSION)'; \
+		echo 'GNAT_SONAME	:= $(GNAT_SONAME)'; \
+		echo 'FFI_SONAME	:= $(FFI_SONAME)'; \
+		echo 'SSP_SONAME	:= $(SSP_SONAME)'; \
+		echo 'GOMP_SONAME	:= $(GOMP_SONAME)'; \
+		echo 'ITM_SONAME	:= $(ITM_SONAME)'; \
+		echo 'ATOMIC_SONAME	:= $(ATOMIC_SONAME)'; \
+		echo 'BTRACE_SONAME	:= $(BTRACE_SONAME)'; \
+		echo 'ASAN_SONAME	:= $(ASAN_SONAME)'; \
+		echo 'LSAN_SONAME	:= $(LSAN_SONAME)'; \
+		echo 'TSAN_SONAME	:= $(TSAN_SONAME)'; \
+		echo 'UBSAN_SONAME	:= $(UBSAN_SONAME)'; \
+		echo 'VTV_SONAME	:= $(VTV_SONAME)'; \
+		echo 'CILKRTS_SONAME	:= $(CILKRTS_SONAME)'; \
+		echo 'MPX_SONAME	:= $(MPX_SONAME)'; \
+		echo 'QMATH_SONAME	:= $(QUADMATH_SONAME)'; \
+		echo 'GCCMATH_SONAME	:= $(GCCMATH_SONAME)'; \
+		echo 'GO_SONAME		:= $(GO_SONAME)'; \
+		echo 'CC1_SONAME	:= $(CC1_SONAME)'; \
+		echo 'GCCJIT_SONAME	:= $(GCCJIT_SONAME)'; \
+		echo 'LIBC_DEP		:= $(LIBC_DEP)'; \
+	) > debian/rules.parameters.tmp
+	[ -e debian/rules.parameters ] \
+	  && cmp -s debian/rules.parameters debian/rules.parameters.tmp \
+	  && rm -f debian/rules.parameters.tmp && exit 0; \
+	  mv debian/rules.parameters.tmp debian/rules.parameters; \
+	  touch $(control_stamp)
+
+symbols-files: control-file
+ifeq ($(DEB_CROSS),yes)
+  ifneq ($(DEB_STAGE),rtlibs)
+	test -n "$(LS)"
+	set -e; \
+	for p in $$(dh_listpackages -i | grep '^lib'); do \
+	  p=$${p%$(LS)}; \
+	  if [ -f debian/$$p.symbols.$(DEB_TARGET_ARCH) ]; then \
+	    f=debian/$$p.symbols.$(DEB_TARGET_ARCH); \
+	  elif [ -f debian/$$p.symbols ]; then \
+	    f=debian/$$p.symbols; \
+	  else \
+	    continue; \
+	  fi; \
+	  link=debian/$$p$(LS).symbols; \
+	  if [ -L $$link ]; then \
+	    echo >&2 "removing left over symbols file link: $$link"; \
+	    rm -f $$link; \
+	  fi; \
+	  ln -s $$f $$link; \
+	done
+  endif
+endif
+
+versioned-files:
+	fs=`echo debian/*BV* debian/*GCJ* debian/*CXX* debian/*LC* | sort -u`; \
+	for f in $$fs debian/source.lintian-overrides.in; do \
+	  [ -f $$f ] || echo "CANNOT FIND $$f"; \
+	  [ -f $$f ] || continue; \
+	  if [ -z "$(DEB_CROSS)" ]; then case "$$f" in *-CR*) continue; esac; fi; \
+	  f2=$$(echo $$f \
+		| sed 's/BV/$(BASE_VERSION)/;s/CXX/$(CXX_SONAME)/;s/LGCJ/$(PKG_LIBGCJ_EXT)/;s/GCJ/$(PKG_GCJ_EXT)/;s/LC/$(GCC_SONAME)/;s/-CRB/$(cross_bin_arch)/;s/\.in$$//'); \
+	  sed -e 's/@BV@/$(BASE_VERSION)/g' \
+	      -e 's/@CXX@/$(CXX_SONAME)/g' \
+	      -e 's/@LGCJ@/$(PKG_LIBGCJ_EXT)/g' \
+	      -e 's/@GCJ@/$(PKG_GCJ_EXT)/g' \
+	      -e 's/@GCJSO@/$(GCJ_SONAME)/g' \
+	      -e 's/@LC@/$(GCC_SONAME)/g' \
+	      -e 's/@SRC@/$(PKGSOURCE)/g' \
+	      -e 's/@GFDL@/$(if $(filter yes,$(GFDL_INVARIANT_FREE)),#)/g' \
+	      -e 's/@java_priority@/$(java_priority)/g' \
+	      -e 's/@gcc_priority@/$(subst .,,$(BASE_VERSION))/g' \
+	      -e 's/@TARGET@/$(DEB_TARGET_GNU_TYPE)/g' \
+	      -e 's/@TARGET_QUAL@/$(TARGET_QUAL)/g' \
+	    $$f > $$f2; \
+	  touch -r $$f $$f2; \
+	done
+	for t in ar nm ranlib; do \
+	  sed "s/@BV@/$(BASE_VERSION)/g;s/@TOOL@/$$t/g" \
+	    debian/gcc-XX-BV.1 > debian/gcc-$$t-$(BASE_VERSION).1; \
+	done
+
+# don't encode versioned build dependencies in the control file, but check
+# these here instead.
+check-versions:
+	v=$$(dpkg-query -l dpkg-dev | awk '/^.i/ {print $$3}'); \
+	if dpkg --compare-versions "$$v" lt "$(DPKGV)"; then \
+	  echo "dpkg-dev (>= $(DPKGV)) required, found $$v"; \
+	  exit 1; \
+	fi
+	v=$$(dpkg-query -l binutils binutils-multiarch | awk '/^.i/ {print $$3;exit}'); \
+	if dpkg --compare-versions "$$v" lt "$(BINUTILSBDV)"; then \
+	  echo "binutils (>= $(BINUTILSBDV)) required, found $$v"; \
+	  exit 1; \
+	fi
+
+.PRECIOUS: $(stampdir)/%-stamp
diff --git a/debian/rules.d/binary-ada.mk b/debian/rules.d/binary-ada.mk
new file mode 100644
index 0000000..2e672ae
--- /dev/null
+++ b/debian/rules.d/binary-ada.mk
@@ -0,0 +1,393 @@
+ifeq ($(with_separate_gnat),yes)
+  $(lib_binaries) += gnatbase
+endif
+
+ifeq ($(with_libgnat),yes)
+  $(lib_binaries) += libgnat libgnatvsn libgnatprj
+endif
+
+arch_binaries := $(arch_binaries) ada
+ifneq ($(DEB_CROSS),yes)
+  ifneq ($(GFDL_INVARIANT_FREE),yes)
+    indep_binaries := $(indep_binaries) ada-doc
+  endif
+endif
+
+p_gbase		= $(p_xbase)
+p_glbase	= $(p_lbase)
+ifeq ($(with_separate_gnat),yes)
+  p_gbase	= gnat$(pkg_ver)$(cross_bin_arch)-base
+  p_glbase	= gnat$(pkg_ver)$(cross_bin_arch)-base
+endif
+
+p_gnat	= gnat-$(GNAT_VERSION)$(cross_bin_arch)
+p_gnatsjlj= gnat-$(GNAT_VERSION)-sjlj$(cross_bin_arch)
+p_lgnat	= libgnat-$(GNAT_VERSION)$(cross_lib_arch)
+p_lgnat_dbg = libgnat-$(GNAT_VERSION)-dbg$(cross_lib_arch)
+p_lgnatvsn = libgnatvsn$(GNAT_VERSION)$(cross_lib_arch)
+p_lgnatvsn_dev = libgnatvsn$(GNAT_VERSION)-dev$(cross_lib_arch)
+p_lgnatvsn_dbg = libgnatvsn$(GNAT_VERSION)-dbg$(cross_lib_arch)
+p_lgnatprj = libgnatprj$(GNAT_VERSION)$(cross_lib_arch)
+p_lgnatprj_dev = libgnatprj$(GNAT_VERSION)-dev$(cross_lib_arch)
+p_lgnatprj_dbg = libgnatprj$(GNAT_VERSION)-dbg$(cross_lib_arch)
+p_gnatd	= $(p_gnat)-doc
+
+d_gbase	= debian/$(p_gbase)
+d_gnat	= debian/$(p_gnat)
+d_gnatsjlj	= debian/$(p_gnatsjlj)
+d_lgnat	= debian/$(p_lgnat)
+d_lgnatvsn = debian/$(p_lgnatvsn)
+d_lgnatvsn_dev = debian/$(p_lgnatvsn_dev)
+d_lgnatprj = debian/$(p_lgnatprj)
+d_lgnatprj_dev = debian/$(p_lgnatprj_dev)
+d_gnatd	= debian/$(p_gnatd)
+
+GNAT_TOOLS = gnat gnatbind gnatchop gnatclean gnatfind gnatkr gnatlink \
+	     gnatls gnatmake gnatname gnatprep gnatxref gnathtml
+
+ifeq ($(with_gnatsjlj),yes)
+	rts_subdir = 
+endif
+
+dirs_gnat = \
+	$(docdir)/$(p_gbase) \
+	$(PF)/bin \
+	$(PF)/share/man/man1 \
+	$(gcc_lib_dir)/{adalib,adainclude} \
+	$(gcc_lexec_dir)
+
+files_gnat = \
+	$(gcc_lexec_dir)/gnat1 \
+	$(gcc_lib_dir)/adainclude/*.ad[bs] \
+	$(gcc_lib_dir)/adalib/*.ali \
+	$(gcc_lib_dir)/adalib/lib*.a \
+	$(foreach i,$(GNAT_TOOLS),$(PF)/bin/$(cmd_prefix)$(i)$(pkg_ver))
+
+dirs_lgnat = \
+	$(docdir) \
+	$(PF)/lib
+files_lgnat = \
+	$(usr_lib)/lib{gnat,gnarl}-$(GNAT_SONAME).so.1
+
+$(binary_stamp)-gnatbase: $(install_stamp)
+	dh_testdir
+	dh_testroot
+	dh_installdocs -p$(p_gbase) debian/README.gnat debian/README.maintainers
+	: # $(p_gbase)
+ifeq ($(PKGSOURCE),gnat-$(BASE_VERSION))
+	mkdir -p $(d_gbase)/$(docdir)/$(p_xbase)
+	ln -sf ../$(p_gbase) $(d_gbase)/$(docdir)/$(p_xbase)/Ada
+endif
+	dh_installchangelogs -p$(p_gbase) src/gcc/ada/ChangeLog
+	dh_compress -p$(p_gbase)
+	dh_fixperms -p$(p_gbase)
+	dh_gencontrol -p$(p_gbase) -- -v$(DEB_VERSION) $(common_substvars)
+	dh_installdeb -p$(p_gbase)
+	dh_md5sums -p$(p_gbase)
+	dh_builddeb -p$(p_gbase)
+	touch $@
+
+
+$(binary_stamp)-libgnat: $(install_stamp)
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	: # libgnat
+	rm -rf $(d_lgnat)
+	dh_installdirs -p$(p_lgnat) $(dirs_lgnat)
+
+	for lib in lib{gnat,gnarl}; do \
+	  vlib=$$lib-$(GNAT_SONAME); \
+	  mv $(d)/$(gcc_lib_dir)/$(rts_subdir)/adalib/$$vlib.so.1 $(d)/$(usr_lib)/. ; \
+	  rm -f $(d)/$(gcc_lib_dir)/adalib/$$lib.so.1; \
+	done
+	$(dh_compat2) dh_movefiles -p$(p_lgnat) $(files_lgnat)
+
+	debian/dh_doclink -p$(p_lgnat) $(p_glbase)
+
+	debian/dh_rmemptydirs -p$(p_lgnat)
+
+	b=libgnat; \
+	v=$(GNAT_VERSION); \
+	for ext in preinst postinst prerm postrm; do \
+	  for t in '' -dev -dbg; do \
+	    if [ -f debian/$$b$$t.$$ext ]; then \
+	      cp -pf debian/$$b$$t.$$ext debian/$$b$$v$$t.$$ext; \
+	    fi; \
+	  done; \
+	done
+	$(cross_makeshlibs) dh_makeshlibs -p$(p_lgnat) -V '$(p_lgnat) (>= $(DEB_VERSION))'
+	$(call cross_mangle_shlibs,$(p_lgnat))
+
+ifneq (,$(filter $(build_type), build-native cross-build-native))
+	mkdir -p $(d_lgnat)/usr/share/lintian/overrides
+	cp -p debian/$(p_lgnat).overrides \
+		$(d_lgnat)/usr/share/lintian/overrides/$(p_lgnat)
+endif
+
+	dh_strip -p$(p_lgnat) --dbg-package=$(p_lgnat_dbg)
+	$(cross_shlibdeps) dh_shlibdeps -p$(p_lgnat) \
+		$(call shlibdirs_to_search, \
+			$(subst gnat-$(GNAT_SONAME),gcc$(GCC_SONAME),$(p_lgnat)) \
+		,)
+	$(call cross_mangle_substvars,$(p_lgnat))
+
+	: # $(p_lgnat_dbg)
+	debian/dh_doclink -p$(p_lgnat_dbg) $(p_glbase)
+
+	echo $(p_lgnat) $(p_lgnat_dbg) >> debian/$(lib_binaries)
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+
+
+$(binary_stamp)-libgnatvsn: $(install_stamp)
+	: # $(p_lgnatvsn_dev)
+ifneq (,$(filter $(build_type), build-native cross-build-native))
+	$(dh_compat2) dh_movefiles -p$(p_lgnatvsn_dev) usr/lib/ada/adalib/gnatvsn
+	$(dh_compat2) dh_movefiles -p$(p_lgnatvsn_dev) usr/share/ada/adainclude/gnatvsn
+	dh_install -p$(p_lgnatvsn_dev) \
+	   debian/gnatvsn.gpr usr/share/ada/adainclude
+else
+	mkdir -p $(d_lgnatvsn_dev)/$(gcc_lib_dir)/{adalib,adainclude}/gnatvsn
+	mv $(d)/usr/lib/ada/adalib/gnatvsn $(d_lgnatvsn_dev)/$(gcc_lib_dir)/adalib/.
+	mv $(d)/usr/share/ada/adainclude/gnatvsn $(d_lgnatvsn_dev)/$(gcc_lib_dir)/adainclude/.
+	dh_install -p$(p_lgnatvsn_dev) \
+	   debian/gnatvsn.gpr $(gcc_lib_dir)/adainclude
+endif
+	$(dh_compat2) dh_movefiles -p$(p_lgnatvsn_dev) $(usr_lib)/libgnatvsn.a
+	dh_link -p$(p_lgnatvsn_dev) \
+	   $(usr_lib)/libgnatvsn.so.$(GNAT_VERSION) \
+	   $(usr_lib)/libgnatvsn.so
+	debian/dh_doclink -p$(p_lgnatvsn_dev) $(p_glbase)
+	dh_strip -p$(p_lgnatvsn_dev) -X.a --keep-debug
+
+	: # $(p_lgnatvsn)
+ifneq (,$(filter $(build_type), build-native cross-build-native))
+	mkdir -p $(d_lgnatvsn)/usr/share/lintian/overrides
+	cp -p debian/$(p_lgnatvsn).overrides \
+		$(d_lgnatvsn)/usr/share/lintian/overrides/$(p_lgnatvsn)
+endif
+	$(dh_compat2) dh_movefiles -p$(p_lgnatvsn) $(usr_lib)/libgnatvsn.so.$(GNAT_VERSION)
+	debian/dh_doclink -p$(p_lgnatvsn) $(p_glbase)
+	dh_strip -p$(p_lgnatvsn) --dbg-package=$(p_lgnatvsn_dbg)
+	$(cross_makeshlibs) dh_makeshlibs -p$(p_lgnatvsn) \
+		-V '$(p_lgnatvsn) (>= $(DEB_VERSION))'
+	$(call cross_mangle_shlibs,$(p_lgnatvsn))
+	cat debian/$(p_lgnatvsn)/DEBIAN/shlibs >> debian/shlibs.local
+	$(cross_shlibdeps) dh_shlibdeps -p$(p_lgnatvsn) \
+		$(call shlibdirs_to_search, \
+			$(subst gnatvsn$(GNAT_SONAME),gcc$(GCC_SONAME),$(p_lgnatvsn)) \
+			$(subst gnatvsn$(GNAT_SONAME),gnat-$(GNAT_SONAME),$(p_lgnatvsn)) \
+		,)
+	$(call cross_mangle_substvars,$(p_lgnatvsn))
+
+	: # $(p_lgnatvsn_dbg)
+	debian/dh_doclink -p$(p_lgnatvsn_dbg) $(p_glbase)
+
+	echo $(p_lgnatvsn) $(p_lgnatvsn_dev) $(p_lgnatvsn_dbg) >> debian/$(lib_binaries)
+	touch $@
+
+$(binary_stamp)-libgnatprj: $(install_stamp)
+	: # $(p_lgnatprj_dev)
+ifneq (,$(filter $(build_type), build-native cross-build-native))
+	$(dh_compat2) dh_movefiles -p$(p_lgnatprj_dev) usr/lib/ada/adalib/gnatprj
+	$(dh_compat2) dh_movefiles -p$(p_lgnatprj_dev) usr/share/ada/adainclude/gnatprj
+	dh_install -p$(p_lgnatprj_dev) \
+	   debian/gnatprj.gpr usr/share/ada/adainclude
+else
+	mkdir -p $(d_lgnatprj_dev)/$(gcc_lib_dir)/{adalib,adainclude}/gnatvsn
+	mv $(d)/usr/lib/ada/adalib/gnatprj $(d_lgnatprj_dev)/$(gcc_lib_dir)/adalib/.
+	mv $(d)/usr/share/ada/adainclude/gnatprj $(d_lgnatprj_dev)/$(gcc_lib_dir)/adainclude/.
+	dh_install -p$(p_lgnatprj_dev) \
+	   debian/gnatprj.gpr $(gcc_lib_dir)/adainclude
+endif
+	$(dh_compat2) dh_movefiles -p$(p_lgnatprj_dev) $(usr_lib)/libgnatprj.a
+	dh_link -p$(p_lgnatprj_dev) \
+	   $(usr_lib)/libgnatprj.so.$(GNAT_VERSION) \
+	   $(usr_lib)/libgnatprj.so
+	dh_strip -p$(p_lgnatprj_dev) -X.a --keep-debug
+	debian/dh_doclink -p$(p_lgnatprj_dev) $(p_glbase)
+
+	: # $(p_lgnatprj)
+ifneq (,$(filter $(build_type), build-native cross-build-native))
+	mkdir -p $(d_lgnatprj)/usr/share/lintian/overrides
+	cp -p debian/$(p_lgnatprj).overrides \
+		$(d_lgnatprj)/usr/share/lintian/overrides/$(p_lgnatprj)
+endif
+	$(dh_compat2) dh_movefiles -p$(p_lgnatprj) $(usr_lib)/libgnatprj.so.$(GNAT_VERSION)
+	debian/dh_doclink -p$(p_lgnatprj) $(p_glbase)
+	dh_strip -p$(p_lgnatprj) --dbg-package=$(p_lgnatprj_dbg)
+	$(cross_makeshlibs) dh_makeshlibs -p$(p_lgnatprj) \
+		-V '$(p_lgnatprj) (>= $(DEB_VERSION))'
+	$(call cross_mangle_shlibs,$(p_lgnatprj))
+	cat debian/$(p_lgnatprj)/DEBIAN/shlibs >> debian/shlibs.local
+	$(cross_shlibdeps) dh_shlibdeps -p$(p_lgnatprj) \
+		$(call shlibdirs_to_search, \
+			$(subst gnatprj$(GNAT_SONAME),gcc$(GCC_SONAME),$(p_lgnatprj)) \
+			$(subst gnatprj$(GNAT_SONAME),gnat-$(GNAT_SONAME),$(p_lgnatprj)) \
+			$(subst gnatprj$(GNAT_SONAME),gnatvsn$(GNAT_SONAME),$(p_lgnatprj)) \
+		,)
+	$(call cross_mangle_substvars,$(p_lgnatprj))
+
+	: # $(p_lgnatprj_dbg)
+	debian/dh_doclink -p$(p_lgnatprj_dbg) $(p_glbase)
+
+	echo $(p_lgnatprj) $(p_lgnatprj_dev) $(p_lgnatprj_dbg) >> debian/$(lib_binaries)
+	touch $@
+
+$(binary_stamp)-ada: $(install_stamp)
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+	: # $(p_gnat)
+	rm -rf $(d_gnat)
+	dh_installdirs -p$(p_gnat) $(dirs_gnat)
+	: # Upstream does not install gnathtml.
+	cp src/gcc/ada/gnathtml.pl debian/tmp/$(PF)/bin/$(cmd_prefix)gnathtml$(pkg_ver)
+	chmod 755 debian/tmp/$(PF)/bin/$(cmd_prefix)gnathtml$(pkg_ver)
+	$(dh_compat2) dh_movefiles -p$(p_gnat) $(files_gnat)
+
+ifeq ($(with_gnatsjlj),yes)
+	dh_installdirs -p$(p_gnatsjlj) $(gcc_lib_dir)
+	$(dh_compat2) dh_movefiles -p$(p_gnatsjlj) $(gcc_lib_dir)/rts-sjlj/adalib $(gcc_lib_dir)/rts-sjlj/adainclude
+endif
+
+ifeq ($(with_libgnat),yes)
+	for lib in lib{gnat,gnarl}; do \
+	  vlib=$$lib-$(GNAT_SONAME); \
+	  dh_link -p$(p_gnat) \
+	    /$(usr_lib)/$$vlib.so.1 /$(usr_lib)/$$vlib.so \
+	    /$(usr_lib)/$$vlib.so.1 /$(usr_lib)/$$lib.so; \
+	done
+	for lib in lib{gnat,gnarl}; do \
+	  vlib=$$lib-$(GNAT_SONAME); \
+	  dh_link -p$(p_gnat) \
+	    /$(usr_lib)/$$vlib.so.1 $(gcc_lib_dir)/$(rts_subdir)adalib/$$lib.so; \
+	done
+endif
+	debian/dh_doclink -p$(p_gnat)      $(p_gbase)
+ifeq ($(with_gnatsjlj),yes)
+	debian/dh_doclink -p$(p_gnatsjlj) $(p_gbase)
+endif
+ifeq ($(PKGSOURCE),gnat-$(BASE_VERSION))
+  ifeq ($(with_check),yes)
+	cp -p test-summary $(d_gnat)/$(docdir)/$(p_gbase)/.
+  endif
+else
+	mkdir -p $(d_gnat)/$(docdir)/$(p_gbase)/ada
+	cp -p src/gcc/ada/ChangeLog $(d_gnat)/$(docdir)/$(p_gbase)/ada/.
+endif
+
+	for i in $(GNAT_TOOLS); do \
+	  case "$$i" in \
+	    gnat) cp -p debian/gnat.1 $(d_gnat)/$(PF)/share/man/man1/$(cmd_prefix)gnat$(pkg_ver).1 ;; \
+	    *) ln -sf $(cmd_prefix)gnat$(pkg_ver).1 $(d_gnat)/$(PF)/share/man/man1/$(cmd_prefix)$$i$(pkg_ver).1; \
+	  esac; \
+	done
+
+ifneq (,$(filter $(build_type), build-native cross-build-native))
+	: # ship the versioned prefixed names in the gnat package.
+	for i in $(GNAT_TOOLS); do \
+	  ln -sf $$i$(pkg_ver) \
+	    $(d_gnat)/$(PF)/bin/$(DEB_TARGET_GNU_TYPE)-$$i$(pkg_ver); \
+	  ln -sf $$i$(pkg_ver) \
+	    $(d_gnat)/$(PF)/bin/$(TARGET_ALIAS)-$$i$(pkg_ver); \
+	  ln -sf gnat$(pkg_ver).1 \
+	    $(d_gnat)/$(PF)/share/man/man1/$(DEB_TARGET_GNU_TYPE)-$$i$(pkg_ver).1; \
+	  ln -sf $$i$(pkg_ver).1 \
+	    $(d_gnat)/$(PF)/share/man/man1/$(TARGET_ALIAS)-$$i$(pkg_ver).1; \
+	done
+
+	: # still ship the unversioned names in the gnat package.
+	for i in $(GNAT_TOOLS); do \
+	  ln -sf $$i$(pkg_ver) \
+	    $(d_gnat)/$(PF)/bin/$$i; \
+	  ln -sf $$i$(pkg_ver) \
+	    $(d_gnat)/$(PF)/bin/$$i; \
+	  ln -sf gnat$(pkg_ver).1 \
+	    $(d_gnat)/$(PF)/share/man/man1/$$i.1; \
+	  ln -sf $$i$(pkg_ver).1 \
+	    $(d_gnat)/$(PF)/share/man/man1/$$i.1; \
+	done
+
+	: # still ship the unversioned prefixed names in the gnat package.
+	for i in $(GNAT_TOOLS); do \
+	  ln -sf $$i$(pkg_ver) \
+	    $(d_gnat)/$(PF)/bin/$(DEB_TARGET_GNU_TYPE)-$$i; \
+	  ln -sf $$i$(pkg_ver) \
+	    $(d_gnat)/$(PF)/bin/$(TARGET_ALIAS)-$$i; \
+	  ln -sf gnat$(pkg_ver).1 \
+	    $(d_gnat)/$(PF)/share/man/man1/$(DEB_TARGET_GNU_TYPE)-$$i.1; \
+	  ln -sf $$i$(pkg_ver).1 \
+	    $(d_gnat)/$(PF)/share/man/man1/$(TARGET_ALIAS)-$$i.1; \
+	done
+else
+	: # still ship the unversioned names in the gnat package.
+	for i in $(GNAT_TOOLS); do \
+	  ln -sf $(DEB_TARGET_GNU_TYPE)-$$i$(pkg_ver) \
+	    $(d_gnat)/$(PF)/bin/$(DEB_TARGET_GNU_TYPE)-$$i; \
+	  ln -sf $(DEB_TARGET_GNU_TYPE)-$$i$(pkg_ver) \
+	    $(d_gnat)/$(PF)/bin/$(TARGET_ALIAS)-$$i; \
+	  ln -sf $(DEB_TARGET_GNU_TYPE)-gnat$(pkg_ver).1 \
+	    $(d_gnat)/$(PF)/share/man/man1/$(DEB_TARGET_GNU_TYPE)-$$i.1; \
+	  ln -sf $(DEB_TARGET_GNU_TYPE)-$$i$(pkg_ver).1 \
+	    $(d_gnat)/$(PF)/share/man/man1/$(TARGET_ALIAS)-$$i.1; \
+	done
+endif
+
+ifneq (,$(filter $(build_type), build-native cross-build-native))
+	dh_install -p$(p_gnat) debian/ada/debian_packaging.mk usr/share/ada
+	mv $(d_gnat)/usr/share/ada/debian_packaging.mk \
+	    $(d_gnat)/usr/share/ada/debian_packaging-$(GNAT_VERSION).mk
+endif
+	: # keep this one unversioned, see Debian #802838.
+	dh_link -p$(p_gnat) usr/bin/$(cmd_prefix)gcc$(pkg_ver) usr/bin/$(cmd_prefix)gnatgcc
+	dh_link -p$(p_gnat) usr/share/man/man1/$(cmd_prefix)gcc$(pkg_ver).1.gz usr/share/man/man1/$(cmd_prefix)gnatgcc.1.gz
+
+	debian/dh_rmemptydirs -p$(p_gnat)
+
+	dh_strip -p$(p_gnat)
+	find $(d_gnat) -name '*.ali' | xargs chmod 444
+	$(cross_shlibdeps) dh_shlibdeps -p$(p_gnat) \
+		$(call shlibdirs_to_search, \
+			$(p_lgcc) $(p_lgnat) $(p_lgnatvsn) $(p_lgnatprj) \
+		,)
+	echo $(p_gnat) >> debian/arch_binaries
+
+ifeq ($(with_gnatsjlj),yes)
+	dh_strip -p$(p_gnatsjlj)
+	find $(d_gnatsjlj) -name '*.ali' | xargs chmod 444
+	$(cross_makeshlibs) dh_shlibdeps -p$(p_gnatsjlj)
+	echo $(p_gnatsjlj) >> debian/arch_binaries
+endif
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+
+
+$(build_gnatdoc_stamp): $(build_stamp)
+	mkdir -p html
+	rm -f html/*.info
+	echo -n gnat_ugn gnat_rm gnat-style | xargs -d ' ' -L 1 -P $(USE_CPUS) -I{} \
+	  sh -c 'cd html && \
+	    echo "generating {}-$(GNAT_VERSION).info"; \
+	    makeinfo -I $(srcdir)/gcc/doc/include -I $(srcdir)/gcc/ada \
+		-I $(builddir)/gcc \
+		-o {}-$(GNAT_VERSION).info \
+		$(srcdir)/gcc/ada/{}.texi'
+	touch $@
+
+$(binary_stamp)-ada-doc: $(build_html_stamp) $(build_gnatdoc_stamp)
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_gnatd)
+	dh_installdirs -p$(p_gnatd) \
+		$(PF)/share/info
+	cp -p html/gnat*info* $(d_gnatd)/$(PF)/share/info/.
+	dh_installdocs -p$(p_gnatd) \
+	    html/gnat_ugn.html html/gnat_rm.html html/gnat-style.html
+	echo $(p_gnatd) >> debian/indep_binaries
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
diff --git a/debian/rules.d/binary-base.mk b/debian/rules.d/binary-base.mk
new file mode 100644
index 0000000..56f9273
--- /dev/null
+++ b/debian/rules.d/binary-base.mk
@@ -0,0 +1,75 @@
+arch_binaries += base
+ifeq ($(with_gcclbase),yes)
+  ifneq ($(with_base_only),yes)
+    indep_binaries += lbase
+  endif
+endif
+
+# ---------------------------------------------------------------------------
+# gcc-base
+
+ifneq (,$(filter $(distrelease),oneiric precise wheezy sid))
+  additional_links =
+else ifneq (,$(filter $(distrelease),))
+  additional_links =
+else
+  additional_links =
+endif
+
+$(binary_stamp)-base: $(install_dependencies)
+	dh_testdir
+	dh_testroot
+	rm -rf $(d_base)
+	dh_installdirs -p$(p_base) \
+		$(gcc_lexec_dir)
+
+ifneq ($(DEB_STAGE),rtlibs)
+	ln -sf $(BASE_VERSION) \
+	    $(d_base)/$(subst /$(BASE_VERSION),/$(GCC_VERSION),$(gcc_lib_dir))
+	for link in $(additional_links); do \
+	  ln -sf $(BASE_VERSION) \
+	    $(d_base)/$$(dirname $(gcc_lib_dir))/$$link; \
+        done
+  ifneq ($(gcc_lib_dir),$(gcc_lexec_dir))
+	ln -sf $(BASE_VERSION) \
+	    $(d_base)/$(subst /$(BASE_VERSION),/$(GCC_VERSION),$(gcc_lexec_dir))
+	for link in $(additional_links); do \
+	  ln -sf $(BASE_VERSION) \
+	    $(d_base)/$$(dirname $(gcc_lexec_dir))/$$link; \
+        done
+  endif
+endif
+
+ifeq ($(with_base_only),yes)
+	dh_installdocs -p$(p_base) debian/README.Debian
+else
+	dh_installdocs -p$(p_base) debian/README.Debian.$(DEB_TARGET_ARCH)
+endif
+	rm -f $(d_base)/usr/share/doc/$(p_base)/README.Debian
+	dh_installchangelogs -p$(p_base)
+	dh_compress -p$(p_base)
+	dh_fixperms -p$(p_base)
+ifeq ($(DEB_STAGE)-$(DEB_CROSS),rtlibs-yes)
+	$(cross_gencontrol) dh_gencontrol -p$(p_base) -- -v$(DEB_VERSION) $(common_substvars)
+else
+	dh_gencontrol -p$(p_base) -- -v$(DEB_VERSION) $(common_substvars)
+endif
+	dh_installdeb -p$(p_base)
+	dh_md5sums -p$(p_base)
+	dh_builddeb -p$(p_base)
+	touch $@
+
+$(binary_stamp)-lbase: $(install_dependencies)
+	dh_testdir
+	dh_testroot
+	rm -rf $(d_lbase)
+	dh_installdocs -p$(p_lbase) debian/README.Debian
+	rm -f debian/$(p_lbase)/usr/share/doc/$(p_lbase)/README.Debian
+	dh_installchangelogs -p$(p_lbase)
+	dh_compress -p$(p_lbase)
+	dh_fixperms -p$(p_lbase)
+	dh_gencontrol -p$(p_lbase) -- -v$(DEB_VERSION) $(common_substvars)
+	dh_installdeb -p$(p_lbase)
+	dh_md5sums -p$(p_lbase)
+	dh_builddeb -p$(p_lbase)
+	touch $@
diff --git a/debian/rules.d/binary-cpp.mk b/debian/rules.d/binary-cpp.mk
new file mode 100644
index 0000000..f5807fc
--- /dev/null
+++ b/debian/rules.d/binary-cpp.mk
@@ -0,0 +1,84 @@
+ifneq ($(DEB_STAGE),rtlibs)
+  arch_binaries  := $(arch_binaries) cpp
+  ifneq ($(DEB_CROSS),yes)
+    ifneq ($(GFDL_INVARIANT_FREE),yes)
+      indep_binaries := $(indep_binaries) cpp-doc
+    endif
+  endif
+endif
+
+dirs_cpp = \
+	$(docdir) \
+	$(PF)/share/man/man1 \
+	$(PF)/bin \
+	$(gcc_lexec_dir)
+
+files_cpp = \
+	$(PF)/bin/$(cmd_prefix)cpp$(pkg_ver) \
+	$(gcc_lexec_dir)/cc1 \
+	$(gcc_lexec_dir)/liblto_plugin.so{,.0,.0.0.0}
+
+ifneq ($(GFDL_INVARIANT_FREE),yes)
+  files_cpp += \
+	$(PF)/share/man/man1/$(cmd_prefix)cpp$(pkg_ver).1
+endif
+
+# ----------------------------------------------------------------------
+$(binary_stamp)-cpp: $(install_stamp)
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_cpp)
+	dh_installdirs -p$(p_cpp) $(dirs_cpp)
+	$(dh_compat2) dh_movefiles -p$(p_cpp) $(files_cpp)
+
+ifneq ($(DEB_CROSS),yes)
+	ln -sf cpp$(pkg_ver) \
+	    $(d_cpp)/$(PF)/bin/$(DEB_TARGET_GNU_TYPE)-cpp$(pkg_ver)
+	ln -sf cpp$(pkg_ver) \
+	    $(d_cpp)/$(PF)/bin/$(TARGET_ALIAS)-cpp$(pkg_ver)
+  ifneq ($(GFDL_INVARIANT_FREE),yes)
+	ln -sf cpp$(pkg_ver).1 \
+	    $(d_cpp)/$(PF)/share/man/man1/$(DEB_TARGET_GNU_TYPE)-cpp$(pkg_ver).1
+	ln -sf cpp$(pkg_ver).1 \
+	    $(d_cpp)/$(PF)/share/man/man1/$(TARGET_ALIAS)-cpp$(pkg_ver).1
+  endif
+endif
+
+ifeq ($(GFDL_INVARIANT_FREE),yes)
+	mkdir -p $(d_cpp)/usr/share/lintian/overrides
+	echo '$(p_cpp) binary: binary-without-manpage' \
+	  >> $(d_cpp)/usr/share/lintian/overrides/$(p_cpp)
+endif
+
+	debian/dh_doclink -p$(p_cpp) $(p_xbase)
+	debian/dh_rmemptydirs -p$(p_cpp)
+
+	dh_strip -p$(p_cpp) \
+	  $(if $(unstripped_exe),-X/cc1)
+	dh_shlibdeps -p$(p_cpp)
+	echo $(p_cpp) >> debian/arch_binaries
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+
+# ----------------------------------------------------------------------
+$(binary_stamp)-cpp-doc: $(build_html_stamp) $(install_stamp)
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_cppd)
+	dh_installdirs -p$(p_cppd) \
+		$(docdir)/$(p_xbase) \
+		$(PF)/share/info
+	$(dh_compat2) dh_movefiles -p$(p_cppd) \
+		$(PF)/share/info/cpp*
+
+	debian/dh_doclink -p$(p_cppd) $(p_xbase)
+	dh_installdocs -p$(p_cppd) html/cpp.html html/cppinternals.html
+	rm -f $(d_cppd)/$(docdir)/$(p_xbase)/copyright
+	debian/dh_rmemptydirs -p$(p_cppd)
+	echo $(p_cppd) >> debian/indep_binaries
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
diff --git a/debian/rules.d/binary-cxx.mk b/debian/rules.d/binary-cxx.mk
new file mode 100644
index 0000000..aeb4ef6
--- /dev/null
+++ b/debian/rules.d/binary-cxx.mk
@@ -0,0 +1,90 @@
+ifneq ($(DEB_STAGE),rtlibs)
+  ifneq (,$(filter yes, $(biarch64) $(biarch32) $(biarchn32) $(biarchx32) $(biarchhf) $(biarchsf)))
+    arch_binaries  := $(arch_binaries) cxx-multi
+  endif
+  arch_binaries  := $(arch_binaries) cxx
+endif
+
+dirs_cxx = \
+	$(docdir)/$(p_xbase)/C++ \
+	$(PF)/bin \
+	$(PF)/share/info \
+	$(gcc_lexec_dir) \
+	$(PF)/share/man/man1
+files_cxx = \
+	$(PF)/bin/$(cmd_prefix)g++$(pkg_ver) \
+	$(gcc_lexec_dir)/cc1plus
+
+ifneq ($(GFDL_INVARIANT_FREE),yes)
+  files_cxx += \
+	$(PF)/share/man/man1/$(cmd_prefix)g++$(pkg_ver).1
+endif
+
+p_cxx_m	= g++$(pkg_ver)-multilib$(cross_bin_arch)
+d_cxx_m	= debian/$(p_cxx_m)
+
+# ----------------------------------------------------------------------
+$(binary_stamp)-cxx: $(install_stamp)
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_cxx)
+	dh_installdirs -p$(p_cxx) $(dirs_cxx)
+	$(dh_compat2) dh_movefiles -p$(p_cxx) $(files_cxx)
+
+ifneq ($(DEB_CROSS),yes)
+	ln -sf g++$(pkg_ver) \
+	    $(d_cxx)/$(PF)/bin/$(DEB_TARGET_GNU_TYPE)-g++$(pkg_ver)
+	ln -sf g++$(pkg_ver) \
+	    $(d_cxx)/$(PF)/bin/$(TARGET_ALIAS)-g++$(pkg_ver)
+endif
+
+ifneq ($(GFDL_INVARIANT_FREE),yes)
+# g++ man page is a .so link
+	rm -f $(d_cxx)/$(PF)/share/man/man1/$(cmd_prefix)g++$(pkg_ver).1
+	ln -sf $(cmd_prefix)gcc$(pkg_ver).1.gz \
+		$(d_cxx)/$(PF)/share/man/man1/$(cmd_prefix)g++$(pkg_ver).1.gz
+  ifneq ($(DEB_CROSS),yes)
+	ln -sf g++$(pkg_ver).1.gz \
+	    $(d_cxx)/$(PF)/share/man/man1/$(DEB_TARGET_GNU_TYPE)-g++$(pkg_ver).1.gz
+	ln -sf g++$(pkg_ver).1.gz \
+	    $(d_cxx)/$(PF)/share/man/man1/$(TARGET_ALIAS)-g++$(pkg_ver).1.gz
+  endif
+endif
+
+ifeq ($(GFDL_INVARIANT_FREE),yes)
+	mkdir -p $(d_cxx)/usr/share/lintian/overrides
+	echo '$(p_cxx) binary: binary-without-manpage' \
+	  >> $(d_cxx)/usr/share/lintian/overrides/$(p_cxx)
+endif
+
+	debian/dh_doclink -p$(p_cxx) $(p_xbase)
+	cp -p debian/README.C++ $(d_cxx)/$(docdir)/$(p_xbase)/C++/
+	cp -p $(srcdir)/gcc/cp/ChangeLog \
+		$(d_cxx)/$(docdir)/$(p_xbase)/C++/changelog
+	debian/dh_rmemptydirs -p$(p_cxx)
+
+	dh_shlibdeps -p$(p_cxx)
+	dh_strip -p$(p_cxx) $(if $(unstripped_exe),-X/cc1plus)
+	echo $(p_cxx) >> debian/arch_binaries
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+
+$(binary_stamp)-cxx-multi: $(install_stamp)
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_cxx_m)
+	dh_installdirs -p$(p_cxx_m) \
+		$(docdir)
+
+	debian/dh_doclink -p$(p_cxx_m) $(p_xbase)
+	debian/dh_rmemptydirs -p$(p_cxx_m)
+
+	dh_strip -p$(p_cxx_m)
+	dh_shlibdeps -p$(p_cxx_m)
+	echo $(p_cxx_m) >> debian/arch_binaries
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
diff --git a/debian/rules.d/binary-d.mk b/debian/rules.d/binary-d.mk
new file mode 100644
index 0000000..b4cf835
--- /dev/null
+++ b/debian/rules.d/binary-d.mk
@@ -0,0 +1,236 @@
+ifneq ($(DEB_STAGE),rtlibs)
+  ifneq (,$(filter yes, $(biarch64) $(biarch32) $(biarchn32) $(biarchx32) $(biarchsf)))
+    arch_binaries  := $(arch_binaries) gdc-multi
+  endif
+  arch_binaries := $(arch_binaries) gdc
+
+  ifeq ($(with_libphobos),yes)
+    $(lib_binaries) += libphobos-dev
+  endif
+
+  ifeq ($(with_lib64phobosdev),yes)
+    $(lib_binaries)	+= lib64phobos-dev
+  endif
+  ifeq ($(with_lib32phobosdev),yes)
+    $(lib_binaries)	+= lib32phobos-dev
+  endif
+  ifeq ($(with_libn32phobosdev),yes)
+    $(lib_binaries)	+= libn32phobos-dev
+  endif
+  ifeq ($(with_libx32phobosdev),yes)
+    $(lib_binaries)	+= libx32phobos-dev
+  endif
+  ifeq ($(with_libhfphobosdev),yes)
+    $(lib_binaries)	+= libhfphobos-dev
+  endif
+  ifeq ($(with_libsfphobosdev),yes)
+    $(lib_binaries)	+= libsfphobos-dev
+  endif
+
+  ifeq (0,1)
+  ifeq ($(with_lib64phobos),yes)
+    $(lib_binaries)	+= lib64phobos
+  endif
+  ifeq ($(with_lib32phobos),yes)
+    $(lib_binaries)	+= lib32phobos
+  endif
+  ifeq ($(with_libn32phobos),yes)
+    $(lib_binaries)	+= libn32phobos
+  endif
+  ifeq ($(with_libx32phobos),yes)
+    $(lib_binaries)	+= libx32phobos
+  endif
+  ifeq ($(with_libhfphobos),yes)
+    $(lib_binaries)	+= libhfphobos
+  endif
+  ifeq ($(with_libsfphobos),yes)
+    $(lib_binaries)	+= libsfphobos
+  endif
+  endif
+endif
+
+p_gdc           = gdc$(pkg_ver)$(cross_bin_arch)
+p_gdc_m		= gdc$(pkg_ver)-multilib$(cross_bin_arch)
+p_libphobos     = libphobos$(pkg_ver)-dev
+
+d_gdc           = debian/$(p_gdc)
+d_gdc_m		= debian/$(p_gdc_m)
+d_libphobos     = debian/$(p_libphobos)
+
+ifeq ($(DEB_CROSS),yes)
+  gdc_include_dir := $(gcc_lib_dir)/include/d
+else
+  gdc_include_dir := $(PF)/include/d/$(BASE_VERSION)
+endif
+# FIXME: always here?
+gdc_include_dir := $(gcc_lib_dir)/include/d
+
+dirs_gdc = \
+	$(PF)/bin \
+	$(PF)/share/man/man1 \
+	$(gcc_lexec_dir)
+ifneq ($(DEB_CROSS),yes)
+  dirs_gdc += \
+	$(gdc_include_dir)
+endif
+
+files_gdc = \
+	$(PF)/bin/$(cmd_prefix)gdc$(pkg_ver) \
+	$(gcc_lexec_dir)/cc1d
+ifneq ($(GFDL_INVARIANT_FREE),yes-now-pure-gfdl)
+    files_gdc += \
+	$(PF)/share/man/man1/$(cmd_prefix)gdc$(pkg_ver).1
+endif
+
+dirs_libphobos = \
+	$(PF)/lib \
+	$(gdc_include_dir) \
+	$(gcc_lib_dir)
+
+$(binary_stamp)-gdc: $(install_stamp)
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_gdc)
+	dh_installdirs -p$(p_gdc) $(dirs_gdc)
+
+	dh_installdocs -p$(p_gdc) src/gcc/d/README
+	dh_installchangelogs -p$(p_gdc) src/gcc/d/ChangeLog
+
+	$(dh_compat2) dh_movefiles -p$(p_gdc) -X/zlib/ $(files_gdc)
+
+ifneq ($(DEB_CROSS),yes)
+	ln -sf gdc$(pkg_ver) \
+	    $(d_gdc)/$(PF)/bin/$(DEB_TARGET_GNU_TYPE)-gdc$(pkg_ver)
+	ln -sf gdc$(pkg_ver) \
+	    $(d_gdc)/$(PF)/bin/$(TARGET_ALIAS)-gdc$(pkg_ver)
+  ifneq ($(GFDL_INVARIANT_FREE),yes-now-pure-gfdl)
+	ln -sf gdc$(pkg_ver).1 \
+	    $(d_gdc)/$(PF)/share/man/man1/$(DEB_TARGET_GNU_TYPE)-gdc$(pkg_ver).1
+	ln -sf gdc$(pkg_ver).1 \
+	    $(d_gdc)/$(PF)/share/man/man1/$(TARGET_ALIAS)-gdc$(pkg_ver).1
+  endif
+endif
+
+# FIXME: object.di needs to go into a libgdc-dev Multi-Arch: same package
+	# Always needed by gdc.
+	mkdir -p $(d_gdc)/$(gdc_include_dir)
+	cp $(srcdir)/libphobos/libdruntime/object.di \
+	    $(d_gdc)/$(gdc_include_dir)/.
+#ifneq ($(DEB_CROSS),yes)
+#	dh_link -p$(p_gdc) \
+#		/$(gdc_include_dir) \
+#		/$(dir $(gdc_include_dir))/$(GCC_VERSION)
+#endif
+
+	dh_link -p$(p_gdc) \
+		/$(docdir)/$(p_gcc)/README.Bugs \
+		/$(docdir)/$(p_gdc)/README.Bugs
+
+	dh_strip -p$(p_gdc) \
+	  $(if $(unstripped_exe),-X/cc1d)
+	dh_shlibdeps -p$(p_gdc)
+	echo $(p_gdc) >> debian/arch_binaries
+
+	find $(d_gdc) -type d -empty -delete
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+
+$(binary_stamp)-gdc-multi: $(install_stamp)
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_gdc_m)
+	dh_installdirs -p$(p_gdc_m) $(docdir)
+
+	debian/dh_doclink -p$(p_gdc_m) $(p_xbase)
+
+	dh_strip -p$(p_gdc_m)
+	dh_shlibdeps -p$(p_gdc_m)
+	echo $(p_gdc_m) >> debian/arch_binaries
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+
+$(binary_stamp)-libphobos: $(install_stamp)
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_libphobos)
+	dh_installdirs -p$(p_libphobos) $(dirs_libphobos)
+
+	mv $(d)/$(usr_lib)/libgphobos2.a \
+		$(d)/$(gcc_lib_dir)/.
+	$(dh_compat2) dh_movefiles -p$(p_libphobos) $(files_libphobos)
+
+	# included in gdc package
+	rm -f $(d_libphobos)/$(gdc_include_dir)/object.di
+
+ifeq ($(with_separate_gdc),yes)
+	debian/dh_doclink -p$(p_libphobos) $(p_gdc)
+else
+	debian/dh_doclink -p$(p_libphobos) $(p_lbase)
+endif
+
+	dh_strip -p$(p_libphobos)
+	dh_shlibdeps -p$(p_libphobos)
+	echo $(p_libphobos) >> debian/arch_binaries
+
+	find $(d_libphobos) -type d -empty -delete
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+
+define __do_libphobos_dev
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_l)
+	dh_installdirs -p$(p_l) \
+		$(gcc_lib_dir$(2))
+	mv $(d)/$(usr_lib$(2))/libgphobos2.a \
+		$(d)/$(gcc_lib_dir$(2))/.
+	$(dh_compat2) dh_movefiles -p$(p_l) \
+		$(gcc_lib_dir$(2))/libgphobos2.a
+	$(if $(2),,
+	$(dh_compat2) dh_movefiles -p$(p_l) \
+		$(gdc_include_dir)
+	)
+
+	: # included in gdc package
+	rm -f $(d_l)/$(gdc_include_dir)/object.di
+
+	debian/dh_doclink -p$(p_l) \
+		$(if $(filter yes,$(with_separate_gdc)),$(p_gdc),$(p_lbase))
+	echo $(p_l) >> debian/$(lib_binaries)
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+endef
+
+# don't put this as a comment within define/endef
+#	$(call install_gcc_lib,libphobos,$(PHOBOS_SONAME),$(2),$(p_l))
+
+do_libphobos_dev = $(call __do_libphobos_dev,lib$(1)phobos-$(BASE_VERSION)-dev,$(1))
+
+$(binary_stamp)-libphobos-dev: $(install_stamp)
+	$(call do_libphobos_dev,)
+
+$(binary_stamp)-lib64phobos-dev: $(install_stamp)
+	$(call do_libphobos_dev,64)
+
+$(binary_stamp)-lib32phobos-dev: $(install_stamp)
+	$(call do_libphobos_dev,32)
+
+$(binary_stamp)-libx32phobos-dev: $(install_stamp)
+	$(call do_libphobos_dev,x32)
+
+$(binary_stamp)-libn32phobos-dev: $(install_stamp)
+	$(call do_libphobos_dev,n32)
+
+$(binary_stamp)-libhfphobos-dev: $(install_stamp)
+	$(call do_libphobos_dev,hf)
+
+$(binary_stamp)-libsfphobos-dev: $(install_stamp)
+	$(call do_libphobos_dev,sf)
diff --git a/debian/rules.d/binary-fixincl.mk b/debian/rules.d/binary-fixincl.mk
new file mode 100644
index 0000000..08ea877
--- /dev/null
+++ b/debian/rules.d/binary-fixincl.mk
@@ -0,0 +1,42 @@
+arch_binaries  := $(arch_binaries) fixincl
+
+p_fix	= fixincludes
+d_fix	= debian/$(p_fix)
+
+dirs_fix = \
+	$(docdir)/$(p_xbase)/fixincludes \
+	$(PF)/share/man/man1 \
+	$(PF)/bin \
+	$(gcc_lexec_dir) \
+	$(gcc_lib_dir)
+files_fix = \
+	$(gcc_lexec_dir)/install-tools \
+	$(gcc_lib_dir)/install-tools
+
+# ----------------------------------------------------------------------
+$(binary_stamp)-fixincl: $(install_stamp)
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_fix)
+	dh_installdirs -p$(p_fix) $(dirs_fix)
+	$(dh_compat2) dh_movefiles -p$(p_fix) $(files_fix)
+
+#	$(IP) $(builddir)/gcc/fixinc/fixincl $(d_fix)/$(PF)/lib/fixincludes/
+#	sed -e "s,^FIXINCL=\(.*\),FIXINCL=/$(PF)/lib/fixincludes/fixincl," \
+#	    $(builddir)/gcc/fixinc.sh \
+#		> $(d_fix)/$(PF)/lib/fixincludes/fixinc.sh
+#	chmod 755 $(d_fix)/$(PF)/lib/fixincludes/fixinc.sh
+	$(IR) $(srcdir)/fixincludes/README \
+	    $(d_fix)/$(docdir)/$(p_xbase)/fixincludes
+	sed -e 's, at LIBEXECDIR@,$(gcc_lexec_dir),g' debian/fixincludes.in \
+	    > $(d_fix)/$(PF)/bin/fixincludes
+	chmod 755 $(d_fix)/$(PF)/bin/fixincludes
+
+	debian/dh_doclink -p$(p_fix) $(p_xbase)
+	dh_strip -p$(p_fix)
+	dh_shlibdeps -p$(p_fix)
+	echo $(p_fix) >> debian/arch_binaries.epoch
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
diff --git a/debian/rules.d/binary-fortran.mk b/debian/rules.d/binary-fortran.mk
new file mode 100644
index 0000000..cedb45f
--- /dev/null
+++ b/debian/rules.d/binary-fortran.mk
@@ -0,0 +1,271 @@
+ifeq ($(with_libgfortran),yes)
+  $(lib_binaries) += libgfortran
+endif
+ifeq ($(with_fdev),yes)
+  $(lib_binaries) += libgfortran-dev
+endif
+ifeq ($(with_lib64gfortran),yes)
+  $(lib_binaries) += lib64fortran
+endif
+ifeq ($(with_lib64gfortrandev),yes)
+  $(lib_binaries) += lib64gfortran-dev
+endif
+ifeq ($(with_lib32gfortran),yes)
+  $(lib_binaries) += lib32fortran
+endif
+ifeq ($(with_lib32gfortrandev),yes)
+  $(lib_binaries) += lib32gfortran-dev
+endif
+ifeq ($(with_libn32gfortran),yes)
+  $(lib_binaries) += libn32fortran
+endif
+ifeq ($(with_libn32gfortrandev),yes)
+  $(lib_binaries) += libn32gfortran-dev
+endif
+ifeq ($(with_libx32gfortran),yes)
+  $(lib_binaries) += libx32fortran
+endif
+ifeq ($(with_libx32gfortrandev),yes)
+  $(lib_binaries) += libx32gfortran-dev
+endif
+ifeq ($(with_libhfgfortran),yes)
+  $(lib_binaries) += libhffortran
+endif
+ifeq ($(with_libhfgfortrandev),yes)
+  $(lib_binaries) += libhfgfortran-dev
+endif
+ifeq ($(with_libsfgfortran),yes)
+  $(lib_binaries) += libsffortran
+endif
+ifeq ($(with_libsfgfortrandev),yes)
+  $(lib_binaries) += libsfgfortran-dev
+endif
+
+ifeq ($(with_fdev),yes)
+  ifneq (,$(filter yes, $(biarch64) $(biarch32) $(biarchn32) $(biarchx32) $(biarchhf) $(biarchsf)))
+    arch_binaries  := $(arch_binaries) fdev-multi
+  endif
+  arch_binaries  := $(arch_binaries) fdev
+  ifneq ($(DEB_CROSS),yes)
+    ifneq ($(GFDL_INVARIANT_FREE),yes)
+      indep_binaries := $(indep_binaries) fortran-doc
+    endif
+  endif
+endif
+
+p_g95	= gfortran$(pkg_ver)$(cross_bin_arch)
+p_g95_m	= gfortran$(pkg_ver)-multilib$(cross_bin_arch)
+p_g95d	= gfortran$(pkg_ver)-doc
+p_flib	= libgfortran$(FORTRAN_SONAME)$(cross_lib_arch)
+
+d_g95	= debian/$(p_g95)
+d_g95_m	= debian/$(p_g95_m)
+d_g95d	= debian/$(p_g95d)
+
+dirs_g95 = \
+	$(docdir)/$(p_xbase)/fortran \
+	$(PF)/bin \
+	$(gcc_lexec_dir) \
+	$(gcc_lib_dir) \
+	$(PF)/include \
+	$(PF)/share/man/man1
+files_g95 = \
+	$(PF)/bin/$(cmd_prefix)gfortran$(pkg_ver) \
+	$(gcc_lib_dir)/finclude \
+	$(gcc_lexec_dir)/f951 
+
+ifneq ($(GFDL_INVARIANT_FREE),yes)
+  files_g95 += \
+	$(PF)/share/man/man1/$(cmd_prefix)gfortran$(pkg_ver).1
+endif
+
+# ----------------------------------------------------------------------
+define __do_fortran
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_l) $(d_d)
+	dh_installdirs -p$(p_l) $(usr_lib$(2))
+	$(dh_compat2) dh_movefiles -p$(p_l) $(usr_lib$(2))/libgfortran.so.*
+
+	debian/dh_doclink -p$(p_l) $(p_lbase)
+	debian/dh_doclink -p$(p_d) $(p_lbase)
+
+	if [ -f debian/$(p_l).overrides ]; then \
+		mkdir -p debian/$(p_l)/usr/share/lintian/overrides; \
+		cp debian/$(p_l).overrides debian/$(p_l)/usr/share/lintian/overrides/$(p_l); \
+	fi
+
+	dh_strip -p$(p_l) --dbg-package=$(p_d)
+	ln -sf libgfortran.symbols debian/$(p_l).symbols
+	$(cross_makeshlibs) dh_makeshlibs -p$(p_l)
+	$(call cross_mangle_shlibs,$(p_l))
+	$(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l) \
+		$(call shlibdirs_to_search, \
+			$(subst gfortran$(FORTRAN_SONAME),gcc$(GCC_SONAME),$(p_l)) \
+			$(subst gfortran$(FORTRAN_SONAME),gcc$(QUADMATH_SONAME),$(p_l)) \
+		,$(2))
+	$(call cross_mangle_substvars,$(p_l))
+	echo $(p_l) $(p_d) >> debian/$(lib_binaries)
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+endef
+
+do_fortran = $(call __do_fortran,lib$(1)gfortran$(FORTRAN_SONAME),$(1))
+
+
+define __do_libgfortran_dev
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_l)
+	dh_installdirs -p$(1) $(gcc_lib_dir$(2))
+
+	$(dh_compat2) dh_movefiles -p$(p_l) \
+		$(gcc_lib_dir$(2))/libgfortranbegin.a \
+		$(gcc_lib_dir$(2))/libcaf_single.a
+	$(call install_gcc_lib,libgfortran,$(FORTRAN_SONAME),$(2),$(p_l))
+
+	debian/dh_doclink -p$(p_l) $(p_lbase)
+	debian/dh_rmemptydirs -p$(p_l)
+
+	dh_strip -p$(p_l)
+	$(cross_shlibdeps) dh_shlibdeps -p$(p_l)
+	$(call cross_mangle_substvars,$(p_l))
+	echo $(p_l) >> debian/$(lib_binaries)
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+endef
+# ----------------------------------------------------------------------
+
+do_libgfortran_dev = $(call __do_libgfortran_dev,lib$(1)gfortran-$(BASE_VERSION)-dev,$(1))
+
+$(binary_stamp)-libgfortran: $(install_stamp)
+	$(call do_fortran,)
+
+$(binary_stamp)-lib64fortran: $(install_stamp)
+	$(call do_fortran,64)
+
+$(binary_stamp)-lib32fortran: $(install_stamp)
+	$(call do_fortran,32)
+
+$(binary_stamp)-libn32fortran: $(install_stamp)
+	$(call do_fortran,n32)
+
+$(binary_stamp)-libx32fortran: $(install_stamp)
+	$(call do_fortran,x32)
+
+$(binary_stamp)-libhffortran: $(install_stamp)
+	$(call do_fortran,hf)
+
+$(binary_stamp)-libsffortran: $(install_stamp)
+	$(call do_fortran,sf)
+
+# ----------------------------------------------------------------------
+$(binary_stamp)-fdev: $(install_stamp)
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_g95)
+	dh_installdirs -p$(p_g95) $(dirs_g95)
+
+	$(dh_compat2) dh_movefiles -p$(p_g95) $(files_g95)
+
+	mv $(d)/$(usr_lib)/libgfortran.spec $(d_g95)/$(gcc_lib_dir)/
+
+ifneq ($(DEB_CROSS),yes)
+	ln -sf gfortran$(pkg_ver) \
+	    $(d_g95)/$(PF)/bin/$(DEB_TARGET_GNU_TYPE)-gfortran$(pkg_ver)
+	ln -sf gfortran$(pkg_ver) \
+	    $(d_g95)/$(PF)/bin/$(TARGET_ALIAS)-gfortran$(pkg_ver)
+ifneq ($(GFDL_INVARIANT_FREE),yes)
+	ln -sf gfortran$(pkg_ver).1 \
+	    $(d_g95)/$(PF)/share/man/man1/$(DEB_TARGET_GNU_TYPE)-gfortran$(pkg_ver).1
+	ln -sf gfortran$(pkg_ver).1 \
+	    $(d_g95)/$(PF)/share/man/man1/$(TARGET_ALIAS)-gfortran$(pkg_ver).1
+endif
+endif
+
+ifeq ($(GFDL_INVARIANT_FREE),yes)
+	mkdir -p $(d_g95)/usr/share/lintian/overrides
+	echo '$(p_g95) binary: binary-without-manpage' \
+	  >> $(d_g95)/usr/share/lintian/overrides/$(p_g95)
+endif
+
+	debian/dh_doclink -p$(p_g95) $(p_xbase)
+
+	cp -p $(srcdir)/gcc/fortran/ChangeLog \
+		$(d_g95)/$(docdir)/$(p_xbase)/fortran/changelog
+	debian/dh_rmemptydirs -p$(p_g95)
+
+	dh_strip -p$(p_g95) \
+	  $(if $(unstripped_exe),-X/f951)
+	dh_shlibdeps -p$(p_g95)
+	echo $(p_g95) >> debian/arch_binaries
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+
+# ----------------------------------------------------------------------
+$(binary_stamp)-fdev-multi: $(install_stamp)
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_g95_m)
+	dh_installdirs -p$(p_g95_m) $(docdir)
+
+	debian/dh_doclink -p$(p_g95_m) $(p_xbase)
+	debian/dh_rmemptydirs -p$(p_g95_m)
+	dh_strip -p$(p_g95_m)
+	dh_shlibdeps -p$(p_g95_m)
+	echo $(p_g95_m) >> debian/arch_binaries
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+
+# ----------------------------------------------------------------------
+$(binary_stamp)-fortran-doc: $(build_html_stamp) $(install_stamp)
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_g95d)
+	dh_installdirs -p$(p_g95d) \
+		$(docdir)/$(p_xbase)/fortran \
+		$(PF)/share/info
+	$(dh_compat2) dh_movefiles -p$(p_g95d) \
+		$(PF)/share/info/gfortran*
+
+	debian/dh_doclink -p$(p_g95d) $(p_xbase)
+ifneq ($(GFDL_INVARIANT_FREE),yes)
+	dh_installdocs -p$(p_g95d)
+	rm -f $(d_g95d)/$(docdir)/$(p_xbase)/copyright
+	cp -p html/gfortran.html $(d_g95d)/$(docdir)/$(p_xbase)/fortran/
+endif
+	echo $(p_g95d) >> debian/indep_binaries
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+
+$(binary_stamp)-libgfortran-dev: $(install_stamp)
+	$(call do_libgfortran_dev,)
+
+$(binary_stamp)-lib64gfortran-dev: $(install_stamp)
+	$(call do_libgfortran_dev,64)
+
+$(binary_stamp)-lib32gfortran-dev: $(install_stamp)
+	$(call do_libgfortran_dev,32)
+
+$(binary_stamp)-libn32gfortran-dev: $(install_stamp)
+	$(call do_libgfortran_dev,n32)
+
+$(binary_stamp)-libx32gfortran-dev: $(install_stamp)
+	$(call do_libgfortran_dev,x32)
+
+$(binary_stamp)-libhfgfortran-dev: $(install_stamp)
+	$(call do_libgfortran_dev,hf)
+
+$(binary_stamp)-libsfgfortran-dev: $(install_stamp)
+	$(call do_libgfortran_dev,sf)
+
diff --git a/debian/rules.d/binary-gcc.mk b/debian/rules.d/binary-gcc.mk
new file mode 100644
index 0000000..af190c0
--- /dev/null
+++ b/debian/rules.d/binary-gcc.mk
@@ -0,0 +1,356 @@
+ifneq ($(DEB_STAGE),rtlibs)
+  ifneq (,$(filter yes, $(biarch64) $(biarch32) $(biarchn32) $(biarchx32) $(biarchhf) $(biarchsf)))
+    arch_binaries  := $(arch_binaries) gcc-multi
+  endif
+  ifeq ($(with_plugins),yes)
+    arch_binaries  := $(arch_binaries) gcc-plugindev
+  endif
+
+  arch_binaries  := $(arch_binaries) gcc
+
+  ifneq ($(DEB_CROSS),yes)
+    ifneq ($(GFDL_INVARIANT_FREE),yes)
+      indep_binaries := $(indep_binaries) gcc-doc
+    endif
+    ifeq ($(with_nls),yes)
+      indep_binaries := $(indep_binaries) gcc-locales
+    endif
+  endif
+
+  ifeq ($(build_type),build-native)
+    arch_binaries  := $(arch_binaries) testresults
+  endif
+endif
+
+# gcc must be moved after g77 and g++
+# not all files $(PF)/include/*.h are part of gcc,
+# but it becomes difficult to name all these files ...
+
+dirs_gcc = \
+	$(docdir)/$(p_xbase)/{gcc,libssp,gomp,itm,quadmath,sanitizer,cilkrts,mpx} \
+	$(PF)/bin \
+	$(gcc_lexec_dir) \
+	$(gcc_lib_dir)/{include,include-fixed} \
+	$(PF)/share/man/man1 $(libgcc_dir)
+
+# XXX: what about triarch mapping?
+files_gcc = \
+	$(PF)/bin/$(cmd_prefix){gcc,gcov,gcov-tool}$(pkg_ver) \
+	$(PF)/bin/$(cmd_prefix)gcc-{ar,ranlib,nm}$(pkg_ver) \
+	$(PF)/share/man/man1/$(cmd_prefix)gcc-{ar,nm,ranlib}$(pkg_ver).1 \
+	$(gcc_lexec_dir)/{collect2,lto1,lto-wrapper} \
+	$(shell test -e $(d)/$(gcc_lib_dir)/SYSCALLS.c.X \
+		&& echo $(gcc_lib_dir)/SYSCALLS.c.X)
+
+ifeq ($(with_cc1),yes)
+    files_gcc += \
+	$(gcc_lib_dir)/plugin/libcc1plugin.so{,.0,.0.0.0}
+endif
+
+ifeq ($(DEB_STAGE),stage1)
+    files_gcc += \
+	$(gcc_lib_dir)/include \
+	$(shell for h in \
+		  README limits.h syslimits.h; \
+		do \
+		  test -e $(d)/$(gcc_lib_dir)/include-fixed/$$h \
+		    && echo $(gcc_lib_dir)/include-fixed/$$h; \
+		done)
+endif
+
+ifneq ($(GFDL_INVARIANT_FREE),yes)
+    files_gcc += \
+	$(PF)/share/man/man1/$(cmd_prefix){gcc,gcov}$(pkg_ver).1
+endif
+
+usr_doc_files = debian/README.Bugs \
+	$(shell test -f $(srcdir)/FAQ && echo $(srcdir)/FAQ)
+
+p_loc	= gcc$(pkg_ver)-locales
+d_loc	= debian/$(p_loc)
+
+p_gcc_m	= gcc$(pkg_ver)-multilib$(cross_bin_arch)
+d_gcc_m	= debian/$(p_gcc_m)
+
+p_pld	= gcc$(pkg_ver)-plugin-dev$(cross_bin_arch)
+d_pld	= debian/$(p_pld)
+
+p_tst	= gcc$(pkg_ver)-test-results
+d_tst	= debian/$(p_tst)
+
+# ----------------------------------------------------------------------
+$(binary_stamp)-gcc: $(install_dependencies)
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_gcc)
+	dh_installdirs -p$(p_gcc) $(dirs_gcc)
+
+ifeq ($(with_linaro_branch),yes)
+	if [ -f $(srcdir)/gcc/ChangeLog.linaro ]; then \
+	  cp -p $(srcdir)/gcc/ChangeLog.linaro \
+		$(d_gcc)/$(docdir)/$(p_xbase)/changelog.linaro; \
+	fi
+endif
+ifeq ($(with_libssp),yes)
+	cp -p $(srcdir)/libssp/ChangeLog \
+		$(d_gcc)/$(docdir)/$(p_xbase)/libssp/changelog
+endif
+ifeq ($(with_gomp),yes)
+	mv $(d)/$(usr_lib)/libgomp*.spec $(d_gcc)/$(gcc_lib_dir)/
+	cp -p $(srcdir)/libgomp/ChangeLog \
+		$(d_gcc)/$(docdir)/$(p_xbase)/gomp/changelog
+endif
+ifeq ($(with_itm),yes)
+	mv $(d)/$(usr_lib)/libitm*.spec $(d_gcc)/$(gcc_lib_dir)/
+	cp -p $(srcdir)/libitm/ChangeLog \
+		$(d_gcc)/$(docdir)/$(p_xbase)/itm/changelog
+endif
+ifeq ($(with_qmath),yes)
+	cp -p $(srcdir)/libquadmath/ChangeLog \
+		$(d_gcc)/$(docdir)/$(p_xbase)/quadmath/changelog
+endif
+ifeq ($(with_asan),yes)
+	mv $(d)/$(usr_lib)/libsanitizer*.spec $(d_gcc)/$(gcc_lib_dir)/
+	cp -p $(srcdir)/libsanitizer/ChangeLog \
+		$(d_gcc)/$(docdir)/$(p_xbase)/sanitizer/changelog
+endif
+ifeq ($(with_cilkrts),yes)
+	mv $(d)/$(usr_lib)/libcilkrts.spec $(d_gcc)/$(gcc_lib_dir)/
+	cp -p $(srcdir)/libcilkrts/ChangeLog \
+		$(d_gcc)/$(docdir)/$(p_xbase)/cilkrts/changelog
+endif
+ifeq ($(with_mpx),yes)
+	mv $(d)/$(usr_lib)/libmpx.spec $(d_gcc)/$(gcc_lib_dir)/
+	cp -p $(srcdir)/libmpx/ChangeLog \
+		$(d_gcc)/$(docdir)/$(p_xbase)/mpx/changelog
+endif
+ifeq ($(with_cc1),yes)
+	rm -f $(d)/$(usr_lib)/libcc1.so
+	dh_link -p$(p_gcc) \
+		/$(usr_lib)/libcc1.so.$(CC1_SONAME) /$(gcc_lib_dir)/libcc1.so
+endif
+
+	$(dh_compat2) dh_movefiles -p$(p_gcc) $(files_gcc)
+
+ifneq ($(DEB_CROSS),yes)
+	for i in gcc gcov gcov-tool gcc-ar gcc-nm gcc-ranlib; do \
+	  ln -sf $$i$(pkg_ver) \
+	    $(d_gcc)/$(PF)/bin/$(DEB_TARGET_GNU_TYPE)-$$i$(pkg_ver); \
+	  ln -sf $$i$(pkg_ver) \
+	    $(d_gcc)/$(PF)/bin/$(TARGET_ALIAS)-$$i$(pkg_ver); \
+	done
+ifneq ($(GFDL_INVARIANT_FREE),yes)
+	for i in gcc gcov gcc-ar gcc-nm gcc-ranlib; do \
+	  ln -sf gcc$(pkg_ver).1 \
+	    $(d_gcc)/$(PF)/share/man/man1/$(DEB_TARGET_GNU_TYPE)-$$i$(pkg_ver).1; \
+	  ln -sf $$i$(pkg_ver).1 \
+	    $(d_gcc)/$(PF)/share/man/man1/$(TARGET_ALIAS)-$$i$(pkg_ver).1; \
+	done
+endif
+endif
+
+#	dh_installdebconf
+	debian/dh_doclink -p$(p_gcc) $(p_xbase)
+	cp -p $(usr_doc_files) $(d_gcc)/$(docdir)/$(p_xbase)/.
+	cp -p debian/README.ssp $(d_gcc)/$(docdir)/$(p_xbase)/
+	cp -p debian/NEWS.gcc $(d_gcc)/$(docdir)/$(p_xbase)/NEWS
+	cp -p debian/NEWS.html $(d_gcc)/$(docdir)/$(p_xbase)/NEWS.html
+	cp -p $(srcdir)/ChangeLog $(d_gcc)/$(docdir)/$(p_xbase)/changelog
+	cp -p $(srcdir)/gcc/ChangeLog \
+		$(d_gcc)/$(docdir)/$(p_xbase)/gcc/changelog
+	if [ -f $(builddir)/gcc/.bad_compare ]; then \
+	  ( \
+	    echo "The comparision of the stage2 and stage3 object files shows differences."; \
+	    echo "The Debian package was modified to ignore these differences."; \
+	    echo ""; \
+	    echo "The following files differ:"; \
+	    echo ""; \
+	    cat $(builddir)/gcc/.bad_compare; \
+	  ) > $(d_gcc)/$(docdir)/$(p_xbase)/BOOTSTRAP_COMPARISION_FAILURE; \
+	else \
+	  true; \
+	fi
+
+ifeq ($(GFDL_INVARIANT_FREE),yes)
+	mkdir -p $(d_gcc)/usr/share/lintian/overrides
+	echo '$(p_gcc) binary: binary-without-manpage' \
+	  >> $(d_gcc)/usr/share/lintian/overrides/$(p_gcc)
+endif
+
+	debian/dh_rmemptydirs -p$(p_gcc)
+	dh_strip -p$(p_gcc) \
+	  $(if $(unstripped_exe),-X/lto1)
+	dh_shlibdeps -p$(p_gcc)
+	echo $(p_gcc) >> debian/arch_binaries
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+
+# ----------------------------------------------------------------------
+
+$(binary_stamp)-gcc-multi: $(install_dependencies)
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_gcc_m)
+	dh_installdirs -p$(p_gcc_m) $(docdir)
+
+	debian/dh_doclink -p$(p_gcc_m) $(p_xbase)
+	debian/dh_rmemptydirs -p$(p_gcc_m)
+
+	dh_strip -p$(p_gcc_m)
+	dh_shlibdeps -p$(p_gcc_m)
+	echo $(p_gcc_m) >> debian/arch_binaries
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+
+# ----------------------------------------------------------------------
+$(binary_stamp)-gcc-plugindev: $(install_dependencies)
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_pld)
+	dh_installdirs -p$(p_pld) \
+		$(docdir) \
+		$(gcc_lib_dir)/plugin
+	$(dh_compat2) dh_movefiles -p$(p_pld) \
+		$(gcc_lib_dir)/plugin/include \
+		$(gcc_lib_dir)/plugin/gtype.state \
+		$(gcc_lexec_dir)/plugin/gengtype
+
+	debian/dh_doclink -p$(p_pld) $(p_xbase)
+	debian/dh_rmemptydirs -p$(p_pld)
+	dh_strip -p$(p_pld)
+	dh_shlibdeps -p$(p_pld)
+	echo $(p_pld) >> debian/arch_binaries
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+
+# ----------------------------------------------------------------------
+$(binary_stamp)-gcc-locales: $(install_dependencies)
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_loc)
+	dh_installdirs -p$(p_loc) \
+		$(docdir)
+	$(dh_compat2) dh_movefiles -p$(p_loc) \
+		$(PF)/share/locale/*/*/cpplib*.* \
+		$(PF)/share/locale/*/*/gcc*.*
+
+	debian/dh_doclink -p$(p_loc) $(p_xbase)
+	debian/dh_rmemptydirs -p$(p_loc)
+	echo $(p_loc) >> debian/indep_binaries
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+
+
+# ----------------------------------------------------------------------
+
+$(binary_stamp)-testresults: $(install_dependencies)
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_tst)
+	dh_installdirs -p$(p_tst) $(docdir)
+
+	debian/dh_doclink -p$(p_tst) $(p_xbase)
+
+	mkdir -p $(d_tst)/$(docdir)/$(p_xbase)/test
+	echo "TEST COMPARE BEGIN"
+ifeq ($(with_check),yes)
+	for i in test-summary testsuite-comparision; do \
+	  [ -f $$i ] || continue; \
+	  cp -p $$i $(d_tst)/$(docdir)/$(p_xbase)/$$i; \
+	done
+# more than one libgo.sum, avoid it
+	cp -p $$(find $(builddir)/gcc/testsuite -maxdepth 2 \( -name '*.sum' -o -name '*.log' \)) \
+	      $$(find $(buildlibdir)/*/testsuite -maxdepth 1 \( -name '*.sum'  -o -name '*.log' \) ! -name 'libgo.*') \
+		$(d_tst)/$(docdir)/$(p_xbase)/test/
+  ifeq ($(with_go),yes)
+	cp -p $(buildlibdir)/libgo/libgo.sum \
+		$(d_tst)/$(docdir)/$(p_xbase)/test/
+  endif
+  ifeq (0,1)
+	cd $(builddir); \
+	for i in $(CURDIR)/$(d_tst)/$(docdir)/$(p_xbase)/test/*.sum; do \
+	  b=$$(basename $$i); \
+	  if [ -f /usr/share/doc/$(p_xbase)/test/$$b.gz ]; then \
+	    zcat /usr/share/doc/$(p_xbase)/test/$$b.gz > /tmp/$$b; \
+	    if sh $(srcdir)/contrib/test_summary /tmp/$$b $$i; then \
+	      echo "$$b: OK"; \
+	    else \
+	      echo "$$b: FAILURES"; \
+	    fi; \
+	    rm -f /tmp/$$b; \
+	  else \
+	    echo "Test summary for $$b is not available"; \
+	  fi; \
+	done
+  endif
+	if which xz 2>&1 >/dev/null; then \
+	  echo -n $(d_tst)/$(docdir)/$(p_xbase)/test/* \
+	    | xargs -d ' ' -L 1 -P $(USE_CPUS)	xz -7v; \
+	fi
+else
+	echo "Nothing to compare (testsuite not run)"
+	echo 'Test run disabled, reason: $(with_check)' \
+	  > $(d_tst)/$(docdir)/$(p_xbase)/test-run-disabled
+endif
+	echo "TEST COMPARE END"
+
+	debian/dh_rmemptydirs -p$(p_tst)
+
+	echo $(p_tst) >> debian/arch_binaries
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+
+# ----------------------------------------------------------------------
+$(binary_stamp)-gcc-doc: $(build_html_stamp) $(install_stamp)
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_doc)
+	dh_installdirs -p$(p_doc) \
+		$(docdir)/$(p_xbase) \
+		$(PF)/share/info
+	$(dh_compat2) dh_movefiles -p$(p_doc) \
+		$(PF)/share/info/cpp{,internals}-* \
+		$(PF)/share/info/gcc{,int}-* \
+		$(PF)/share/info/lib{gomp,itm}-* \
+		$(if $(with_qmath),$(PF)/share/info/libquadmath-*)
+	rm -f $(d_doc)/$(PF)/share/info/gccinst*
+
+ifeq ($(with_gomp),yes)
+	$(MAKE) -C $(buildlibdir)/libgomp stamp-build-info
+	cp -p $(buildlibdir)/libgomp/libgomp$(pkg_ver).info $(d_doc)/$(PF)/share/info/
+endif
+ifeq ($(with_itm),yes)
+	-$(MAKE) -C $(buildlibdir)/libitm stamp-build-info
+	if [ -f $(buildlibdir)/libitm/libitm$(pkg_ver).info ]; then \
+	  cp -p $(buildlibdir)/libitm/libitm$(pkg_ver).info $(d_doc)/$(PF)/share/info/; \
+	fi
+endif
+
+	debian/dh_doclink -p$(p_doc) $(p_xbase)
+	dh_installdocs -p$(p_doc) html/gcc.html html/gccint.html
+ifeq ($(with_gomp),yes)
+	cp -p html/libgomp.html $(d_doc)/usr/share/doc/$(p_doc)/
+endif
+ifeq ($(with_itm),yes)
+	cp -p html/libitm.html $(d_doc)/usr/share/doc/$(p_doc)/
+endif
+ifeq ($(with_qmath),yes)
+	cp -p html/libquadmath.html $(d_doc)/usr/share/doc/$(p_doc)/
+endif
+	rm -f $(d_doc)/$(docdir)/$(p_xbase)/copyright
+	debian/dh_rmemptydirs -p$(p_doc)
+	echo $(p_doc) >> debian/indep_binaries
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
diff --git a/debian/rules.d/binary-go.mk b/debian/rules.d/binary-go.mk
new file mode 100644
index 0000000..a716041
--- /dev/null
+++ b/debian/rules.d/binary-go.mk
@@ -0,0 +1,326 @@
+ifeq ($(with_libgo),yes)
+  $(lib_binaries) += libgo
+endif
+ifeq ($(with_lib64go),yes)
+  $(lib_binaries) += lib64go
+endif
+ifeq ($(with_lib32go),yes)
+  $(lib_binaries) += lib32go
+endif
+ifeq ($(with_libn32go),yes)
+  $(lib_binaries) += libn32go
+endif
+ifeq ($(with_libx32go),yes)
+  $(lib_binaries) += libx32go
+endif
+
+ifneq ($(DEB_STAGE),rtlibs)
+  arch_binaries  := $(arch_binaries) gccgo
+  ifneq (,$(filter yes, $(biarch64) $(biarch32) $(biarchn32) $(biarchx32)))
+    arch_binaries  := $(arch_binaries) gccgo-multi
+  endif
+  ifneq ($(DEB_CROSS),yes)
+    ifneq ($(GFDL_INVARIANT_FREE),yes)
+      indep_binaries := $(indep_binaries) go-doc
+    endif
+  endif
+endif
+
+p_go	= gccgo$(pkg_ver)$(cross_bin_arch)
+p_go_m	= gccgo$(pkg_ver)-multilib$(cross_bin_arch)
+p_god	= gccgo$(pkg_ver)-doc
+p_golib	= libgo$(GO_SONAME)$(cross_lib_arch)
+
+d_go	= debian/$(p_go)
+d_go_m	= debian/$(p_go_m)
+d_god	= debian/$(p_god)
+d_golib	= debian/$(p_golib)
+
+dirs_go = \
+	$(docdir)/$(p_xbase)/go \
+	$(PF)/bin \
+	$(gcc_lexec_dir) \
+	$(gcc_lib_dir) \
+	$(PF)/include \
+	$(PF)/share/man/man1
+files_go = \
+	$(PF)/bin/$(cmd_prefix)gccgo$(pkg_ver) \
+	$(gcc_lexec_dir)/go1
+
+ifneq (,$(filter $(build_type), build-native cross-build-native))
+  files_go += \
+	$(PF)/bin/{go,gofmt}$(pkg_ver) \
+	$(gcc_lexec_dir)/cgo \
+	$(PF)/share/man/man1/{go,gofmt}$(pkg_ver).1
+endif
+
+ifneq ($(GFDL_INVARIANT_FREE),yes)
+  files_go += \
+	$(PF)/share/man/man1/$(cmd_prefix)gccgo$(pkg_ver).1
+endif
+
+ifeq ($(with_standalone_go),yes)
+
+  dirs_go += \
+	$(gcc_lib_dir)/include \
+	$(PF)/share/man/man1
+
+# XXX: what about triarch mapping?
+  files_go += \
+	$(PF)/bin/{cpp,gcc,gcov}$(pkg_ver) \
+	$(PF)/bin/$(cmd_prefix)gcc-{ar,ranlib,nm}$(pkg_ver) \
+	$(PF)/share/man/man1/$(cmd_prefix)gcc-{ar,nm,ranlib}$(pkg_ver).1 \
+	$(gcc_lexec_dir)/{cc1,collect2,lto1,lto-wrapper} \
+	$(gcc_lexec_dir)/liblto_plugin.so{,.0,.0.0.0} \
+	$(gcc_lib_dir)/{libgcc*,libgcov.a,*.o} \
+	$(header_files) \
+	$(shell test -e $(d)/$(gcc_lib_dir)/SYSCALLS.c.X \
+		&& echo $(gcc_lib_dir)/SYSCALLS.c.X)
+
+  ifeq ($(with_cc1),yes)
+    files_go += \
+	$(gcc_lib_dir)/plugin/libcc1plugin.so{,.0,.0.0.0}
+  endif
+
+  ifneq ($(GFDL_INVARIANT_FREE),yes)
+    files_go += \
+	$(PF)/share/man/man1/{cpp,gcc,gcov}$(pkg_ver).1
+  endif
+
+  ifeq ($(biarch64),yes)
+    files_go += $(gcc_lib_dir)/$(biarch64subdir)/{libgcc*,libgcov.a,*.o}
+  endif
+  ifeq ($(biarch32),yes)
+    files_go += $(gcc_lib_dir)/$(biarch32subdir)/{libgcc*,*.o}
+  endif
+  ifeq ($(biarchn32),yes)
+    files_go += $(gcc_lib_dir)/$(biarchn32subdir)/{libgcc*,libgcov.a,*.o}
+  endif
+  ifeq ($(biarchx32),yes)
+    files_go += $(gcc_lib_dir)/$(biarchx32subdir)/{libgcc*,libgcov.a,*.o}
+  endif
+endif
+
+# ----------------------------------------------------------------------
+define __do_gccgo
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_l) $(d_d)
+	dh_installdirs -p$(p_l) $(usr_lib$(2))
+	$(dh_compat2) dh_movefiles -p$(p_l) \
+		$(usr_lib$(2))/libgo.so.* $(usr_lib$(2))/go
+
+	debian/dh_doclink -p$(p_l) $(p_lbase)
+	debian/dh_doclink -p$(p_d) $(p_lbase)
+
+	mkdir -p debian/$(p_l)/usr/share/lintian/overrides
+	echo '$(p_l) binary: unstripped-binary-or-object' \
+	  >> debian/$(p_l)/usr/share/lintian/overrides/$(p_l)
+
+	: # don't strip: https://gcc.gnu.org/ml/gcc-patches/2015-02/msg01722.html
+	: # dh_strip -p$(p_l) --dbg-package=$(p_d)
+	$(cross_makeshlibs) dh_makeshlibs -p$(p_l)
+	$(call cross_mangle_shlibs,$(p_l))
+	$(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l) \
+		$(call shlibdirs_to_search, \
+			$(subst go$(GO_SONAME),gcc$(GCC_SONAME),$(p_l)) \
+			$(subst go$(GO_SONAME),atomic$(ATOMIC_SONAME),$(p_l)) \
+		,$(2))
+	$(call cross_mangle_substvars,$(p_l))
+	echo $(p_l) $(p_d) >> debian/$(lib_binaries)
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+endef
+
+do_gccgo = $(call __do_gccgo,lib$(1)go$(GO_SONAME),$(1))
+
+define install_gccgo_lib
+	mv $(d)/$(usr_lib$(3))/$(1).a debian/$(4)/$(gcc_lib_dir$(3))/
+	mv $(d)/$(usr_lib$(3))/$(1)libbegin.a debian/$(4)/$(gcc_lib_dir$(3))/
+	rm -f $(d)/$(usr_lib$(3))/$(1)*.{la,so}
+	dh_link -p$(4) \
+	  /$(usr_lib$(3))/$(1).so.$(2) /$(gcc_lib_dir$(3))/$(1).so
+endef
+
+# __do_gccgo_libgcc(flavour,package,todir,fromdir)
+define __do_gccgo_libgcc
+	$(if $(findstring gccgo,$(PKGSOURCE)),
+		: # libgcc_s.so may be a linker script on some architectures
+		set -e; \
+		if [ -h $(4)/libgcc_s.so ]; then \
+		  rm -f $(4)/libgcc_s.so; \
+		  dh_link -p$(2) /$(libgcc_dir$(1))/libgcc_s.so.$(GCC_SONAME) \
+		    $(3)/libgcc_s.so; \
+		else \
+		  mv $(4)/libgcc_s.so $(d)/$(3)/libgcc_s.so; \
+		  dh_link -p$(2) /$(libgcc_dir$(1))/libgcc_s.so.$(GCC_SONAME) \
+		    $(3)/libgcc_s.so.$(GCC_SONAME); \
+		fi; \
+		$(if $(1), dh_link -p$(2) /$(3)/libgcc_s.so \
+		    $(gcc_lib_dir)/libgcc_s_$(1).so;)
+	)
+endef
+
+define do_go_dev
+	dh_installdirs -p$(2) $(gcc_lib_dir$(1))
+	$(dh_compat2) dh_movefiles -p$(2) \
+		$(gcc_lib_dir$(1))/{libgobegin,libnetgo}.a
+	$(if $(filter yes, $(with_standalone_go)), \
+	  $(call install_gccgo_lib,libgomp,$(GOMP_SONAME),$(1),$(2)))
+	$(call install_gccgo_lib,libgo,$(GO_SONAME),$(1),$(2))
+	$(call __do_gccgo_libgcc,$(1),$(2),$(gcc_lib_dir$(1)),$(d)/$(usr_lib$(1)))
+endef
+# ----------------------------------------------------------------------
+$(binary_stamp)-libgo: $(install_stamp)
+	$(call do_gccgo,)
+
+$(binary_stamp)-lib64go: $(install_stamp)
+	$(call do_gccgo,64)
+
+$(binary_stamp)-lib32go: $(install_stamp)
+	$(call do_gccgo,32)
+
+$(binary_stamp)-libn32go: $(install_stamp)
+	$(call do_gccgo,n32)
+
+$(binary_stamp)-libx32go: $(install_stamp)
+	$(call do_gccgo,x32)
+
+# ----------------------------------------------------------------------
+$(binary_stamp)-gccgo: $(install_stamp)
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_go)
+	dh_installdirs -p$(p_go) $(dirs_go)
+
+	mv $(d)/$(usr_lib)/{libgobegin,libnetgo}.a \
+		$(d)/$(gcc_lib_dir)/
+	if [ -f $(d)/$(usr_lib64)/libgobegin.a ]; then \
+	    mv $(d)/$(usr_lib64)/{libgobegin,libnetgo}.a \
+		$(d)/$(gcc_lib_dir)/64/; \
+	fi
+	if [ -f $(d)/$(usr_lib32)/libgobegin.a ]; then \
+	    mv $(d)/$(usr_lib32)/{libgobegin,libnetgo}.a \
+		$(d)/$(gcc_lib_dir)/32/; \
+	fi
+	if [ -f $(d)/$(usr_libn32)/libgobegin.a ]; then \
+	    mv $(d)/$(usr_libn32)/{libgobegin,libnetgo}.a \
+		$(d)/$(gcc_lib_dir)/n32/; \
+	fi
+	if [ -f $(d)/$(usr_libx32)/libgobegin.a ]; then \
+	    mv $(d)/$(usr_libx32)/{libgobegin,libnetgo}.a \
+		$(d)/$(gcc_lib_dir)/x32/; \
+	fi
+
+	$(call do_go_dev,,$(p_go))
+
+	$(dh_compat2) dh_movefiles -p$(p_go) $(files_go)
+
+ifneq (,$(findstring gccgo,$(PKGSOURCE)))
+	rm -rf $(d_go)/$(gcc_lib_dir)/include/cilk
+	rm -rf $(d_go)/$(gcc_lib_dir)/include/openacc.h
+endif
+
+ifneq ($(DEB_CROSS),yes)
+	ln -sf gccgo$(pkg_ver) \
+	    $(d_go)/$(PF)/bin/$(DEB_TARGET_GNU_TYPE)-gccgo$(pkg_ver)
+	ln -sf gccgo$(pkg_ver) \
+	    $(d_go)/$(PF)/bin/$(TARGET_ALIAS)-gccgo$(pkg_ver)
+ifneq ($(GFDL_INVARIANT_FREE),yes)
+	ln -sf gccgo$(pkg_ver).1 \
+	    $(d_go)/$(PF)/share/man/man1/$(DEB_TARGET_GNU_TYPE)-gccgo$(pkg_ver).1
+	ln -sf gccgo$(pkg_ver).1 \
+	    $(d_go)/$(PF)/share/man/man1/$(TARGET_ALIAS)-gccgo$(pkg_ver).1
+endif
+endif
+
+ifeq ($(with_standalone_go),yes)
+  ifneq ($(DEB_CROSS),yes)
+	for i in gcc gcov gcc-ar gcc-nm gcc-ranlib; do \
+	  ln -sf $$i$(pkg_ver) \
+	    $(d_go)/$(PF)/bin/$(DEB_TARGET_GNU_TYPE)-$$i$(pkg_ver); \
+	  ln -sf $$i$(pkg_ver) \
+	    $(d_go)/$(PF)/bin/$(TARGET_ALIAS)-$$i$(pkg_ver); \
+	done
+    ifneq ($(GFDL_INVARIANT_FREE),yes)
+	for i in gcc gcov gcc-ar gcc-nm gcc-ranlib; do \
+	  ln -sf gcc$(pkg_ver).1 \
+	    $(d_go)/$(PF)/share/man/man1/$(DEB_TARGET_GNU_TYPE)-$$i$(pkg_ver).1; \
+	  ln -sf $$i$(pkg_ver).1 \
+	    $(d_go)/$(PF)/share/man/man1/$(TARGET_ALIAS)-$$i$(pkg_ver).1; \
+	done
+    endif
+  endif
+  ifeq ($(with_gomp),yes)
+	mv $(d)/$(usr_lib)/libgomp*.spec $(d_go)/$(gcc_lib_dir)/
+  endif
+  ifeq ($(with_cc1),yes)
+	rm -f $(d)/$(usr_lib)/libcc1.so
+	dh_link -p$(p_go) \
+		/$(usr_lib)/libcc1.so.$(CC1_SONAME) /$(gcc_lib_dir)/libcc1.so
+  endif
+endif
+
+ifeq ($(GFDL_INVARIANT_FREE),yes)
+	mkdir -p $(d_go)/usr/share/lintian/overrides
+	echo '$(p_go) binary: binary-without-manpage' \
+	  >> $(d_go)/usr/share/lintian/overrides/$(p_go)
+endif
+
+	debian/dh_doclink -p$(p_go) $(p_xbase)
+
+#	cp -p $(srcdir)/gcc/go/ChangeLog \
+#		$(d_go)/$(docdir)/$(p_base)/go/changelog
+	debian/dh_rmemptydirs -p$(p_go)
+
+	dh_strip -v -p$(p_go) -X/cgo -X/go$(pkg_ver) -X/gofmt$(pkg_ver) \
+	  $(if $(unstripped_exe),-X/go1)
+	dh_shlibdeps -p$(p_go)
+	echo $(p_go) >> debian/arch_binaries
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+
+# ----------------------------------------------------------------------
+$(binary_stamp)-gccgo-multi: $(install_stamp)
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_go_m)
+	dh_installdirs -p$(p_go_m) $(docdir)
+
+	$(foreach flavour,$(flavours), \
+		$(call do_go_dev,$(flavour),$(p_go_m)))
+
+	debian/dh_doclink -p$(p_go_m) $(p_xbase)
+	debian/dh_rmemptydirs -p$(p_go_m)
+	dh_strip -p$(p_go_m)
+	dh_shlibdeps -p$(p_go_m)
+	echo $(p_go_m) >> debian/arch_binaries
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+
+# ----------------------------------------------------------------------
+$(binary_stamp)-go-doc: $(build_html_stamp) $(install_stamp)
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_god)
+	dh_installdirs -p$(p_god) \
+		$(docdir)/$(p_xbase)/go \
+		$(PF)/share/info
+	$(dh_compat2) dh_movefiles -p$(p_god) \
+		$(PF)/share/info/gccgo*
+
+	debian/dh_doclink -p$(p_god) $(p_xbase)
+	dh_installdocs -p$(p_god)
+	rm -f $(d_god)/$(docdir)/$(p_xbase)/copyright
+	cp -p html/gccgo.html $(d_god)/$(docdir)/$(p_xbase)/go/
+	echo $(p_god) >> debian/indep_binaries
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
diff --git a/debian/rules.d/binary-hppa64.mk b/debian/rules.d/binary-hppa64.mk
new file mode 100644
index 0000000..2dc9b33
--- /dev/null
+++ b/debian/rules.d/binary-hppa64.mk
@@ -0,0 +1,32 @@
+arch_binaries  := $(arch_binaries) hppa64
+
+# ----------------------------------------------------------------------
+$(binary_stamp)-hppa64: $(install_hppa64_stamp)
+	dh_testdir
+	dh_testroot
+
+#	dh_installdirs -p$(p_hppa64)
+
+	rm -f $(d_hppa64)/usr/lib/libiberty.a
+	-find $(d_hppa64) ! -type d
+
+	: # provide as and ld links
+	dh_link -p $(p_hppa64) \
+		/usr/bin/hppa64-linux-gnu-as \
+		/$(hppa64libexecdir)/gcc/hppa64-linux-gnu/$(versiondir)/as \
+		/usr/bin/hppa64-linux-gnu-ld \
+		/$(hppa64libexecdir)/gcc/hppa64-linux-gnu/$(versiondir)/ld
+
+	debian/dh_doclink -p$(p_hppa64) $(p_xbase)
+	debian/dh_rmemptydirs -p$(p_hppa64)
+
+	dh_strip -p$(p_hppa64) -X.o -Xlibgcc.a -Xlibgcov.a
+	dh_shlibdeps -p$(p_hppa64)
+
+	mkdir -p $(d_hppa64)/usr/share/lintian/overrides
+	cp -p debian/$(p_hppa64).overrides \
+		$(d_hppa64)/usr/share/lintian/overrides/$(p_hppa64)
+
+	echo $(p_hppa64) >> debian/arch_binaries
+
+	touch $@
diff --git a/debian/rules.d/binary-java.mk b/debian/rules.d/binary-java.mk
new file mode 100644
index 0000000..79ac00d
--- /dev/null
+++ b/debian/rules.d/binary-java.mk
@@ -0,0 +1,724 @@
+ifeq ($(with_gcj_base_only),yes)
+  arch_binaries  := $(arch_binaries) jbase
+else
+ifeq ($(with_separate_libgcj),yes)
+  ifeq ($(PKGSOURCE),gcj-$(BASE_VERSION))
+    arch_binaries  := $(arch_binaries) jbase
+  endif
+endif
+
+ifeq ($(with_libgcj),yes)
+  ifeq ($(with_java),yes)
+    arch_binaries  := $(arch_binaries) java gcjjre
+    indep_binaries  := $(indep_binaries) libgcjjar
+  endif
+
+  ifeq ($(with_javadev),yes)
+    arch_binaries  := $(arch_binaries) gcjjdk libgcjdev libgcjdbg
+    ifneq ($(DEB_CROSS),yes)
+      indep_binaries := $(indep_binaries) libgcjsrc
+      ifeq ($(with_libgcj_doc),yes)
+        indep_binaries := $(indep_binaries) libgcjdoc
+      endif
+    endif
+  endif
+endif
+
+ifeq ($(with_gcj),yes)
+    arch_binaries  := $(arch_binaries) gcj
+endif
+endif
+
+ifneq (,$(filter $(build_type), build-native cross-build-native))
+  p_jbase = gcj$(pkg_ver)-base
+  ifeq ($(with_separate_libgcj)-$(with_standalone_gcj),no-no)
+    p_jbase = gcc$(pkg_ver)-base
+  endif
+else
+  p_jbase = gcj$(pkg_ver)$(cross_bin_arch)-base
+  ifeq ($(with_separate_libgcj)-$(with_standalone_gcj),no-no)
+    p_jbase = gcc$(pkg_ver)$(cross_bin_arch)-base
+  endif
+endif
+
+p_gcj	= gcj$(pkg_ver)$(cross_bin_arch)
+p_jdk	= gcj$(pkg_ver)-jdk$(cross_bin_arch)
+p_jrehl	= gcj$(pkg_ver)-jre-headless$(cross_bin_arch)
+p_jre	= gcj$(pkg_ver)-jre$(cross_bin_arch)
+p_jar	= gcj$(pkg_ver)-jre-lib$(cross_bin_arch)
+p_jsrc	= gcj$(pkg_ver)-source
+p_jlib	= libgcj$(PKG_LIBGCJ_EXT)$(cross_lib_arch)
+p_jdbg	= libgcj$(PKG_GCJ_EXT)-dbg$(cross_lib_arch)
+p_jlibx	= libgcj$(PKG_LIBGCJ_EXT)-awt$(cross_lib_arch)
+p_jgtk	= libgcj$(PKG_GCJ_EXT)-awt-gtk$(cross_lib_arch)
+p_jqt	= libgcj$(PKG_GCJ_EXT)-awt-qt$(cross_lib_arch)
+p_jdev	= libgcj$(PKG_GCJ_EXT)-dev$(cross_lib_arch)
+p_jdoc	= libgcj-doc
+
+d_jbase	= debian/$(p_jbase)
+d_gcj	= debian/$(p_gcj)
+d_jdk	= debian/$(p_jdk)
+d_jrehl	= debian/$(p_jrehl)
+d_jar	= debian/$(p_jar)
+d_jsrc	= debian/$(p_jsrc)
+d_jlib	= debian/$(p_jlib)
+d_jdbg	= debian/$(p_jdbg)
+d_jlibx	= debian/$(p_jlibx)
+d_jgtk	= debian/$(p_jgtk)
+d_jqt	= debian/$(p_jqt)
+d_jdev	= debian/$(p_jdev)
+d_jdoc	= debian/$(p_jdoc)
+d_jre	= debian/$(p_jre)
+
+GCJ_BASE_VERSION = $(BASE_VERSION)
+
+gcj_vlibdir	= $(PF)/$(libdir)/gcj-$(BASE_VERSION)-$(GCJ_SONAME)
+
+jre_tools = java keytool orbd rmid rmiregistry tnameserv
+jdk_tools = appletviewer jar jarsigner javac javadoc javah native2ascii rmic serialver
+
+dirs_gcj = \
+	$(docdir)/$(p_jbase) \
+	$(PF)/bin \
+	$(PF)/share/man/man1 \
+	$(gcc_lexec_dir)
+
+files_gcj = \
+	$(PF)/bin/$(cmd_prefix)gcj$(pkg_ver) \
+	$(gcc_lexec_dir)/{ecj1,jc1,jvgenmain}
+
+# FIXME: this really should be included, or else the cross compiler
+# can only be used to build libjava itself.
+ifneq (,$(filter $(build_type), build-native cross-build-native))
+  files_gcj += \
+	$(PF)/$(libdir)/libgcj.spec
+endif
+
+ifneq ($(GFDL_INVARIANT_FREE),yes)
+  files_gcj += \
+	$(PF)/share/man/man1/$(cmd_prefix)gcj$(pkg_ver).1
+endif
+
+dirs_jdk = \
+	$(docdir)/$(p_jbase) \
+	$(PF)/bin \
+	$(PF)/share/man/man1 \
+	$(PF)/share/info \
+	$(gcc_lexec_dir) \
+	$(jvm_dir)/bin
+
+files_jdk = \
+	$(PF)/bin/{gappletviewer,gjdoc,gc-analyze,gjar,gjarsigner,gcjh,gjavah,gnative2ascii,grmic,gserialver,jv-convert,jcf-dump}$(pkg_ver) \
+	$(PF)/share/man/man1/{gappletviewer,gjdoc,gjar,gjarsigner,gcjh,gjavah,gnative2ascii,gserialver}$(pkg_ver).1 \
+	$(gcc_lib_dir)/include/{jni.h,jni_md.h,jvmpi.h} \
+	$(gcc_lib_dir)/include/{jawt.h,jawt_md.h} \
+	$(gcc_lib_dir)/include/gcj/libgcj-config.h \
+	$(PF)/$(libdir)/lib{gij,gcj,gcj-tools}.so \
+	$(jvm_dir)/include \
+	$(jvm_dir)/bin/{appletviewer,jar,jarsigner,javadoc,javah,native2ascii,rmic,serialver} \
+	$(PF)/lib/jvm-exports
+
+ifneq ($(GFDL_INVARIANT_FREE),yes)
+  files_jdk += \
+	$(PF)/share/info/gcj* \
+	$(PF)/share/man/man1/{gc-analyze,grmic,jv-convert,jcf-dump}$(pkg_ver).1
+endif
+
+dirs_jrehl = \
+	$(docdir)/$(p_jbase) \
+	$(PF)/bin \
+	$(PF)/share/man/man1 \
+	$(jvm_dir)/bin \
+	$(jvm_dir)/jre/lib \
+	$(jvm_dir)/lib \
+	var/lib/gcj$(pkg_ver)
+
+files_jrehl = \
+	$(PF)/bin/{gij,gcj-dbtool,gorbd,grmid,grmiregistry,gkeytool,gtnameserv}$(pkg_ver) \
+	$(PF)/share/man/man1/{gorbd,grmid,grmiregistry,gkeytool,gtnameserv}$(pkg_ver).1 \
+	$(jvm_dir)/jre/bin \
+	$(jvm_dir)/bin/{java,keytool,orbd,rmid,rmiregistry,tnameserv} \
+	$(jvm_dir)/jre/lib/rt.jar \
+	$(jvm_dir)/jre/lib/$(java_cpu)/{client,server} \
+	$(jvm_dir)/lib/tools.jar
+
+ifneq ($(GFDL_INVARIANT_FREE),yes)
+  files_jrehl += \
+	$(PF)/share/man/man1/{gij,gcj-dbtool}$(pkg_ver).1
+endif
+
+dirs_jre = \
+	$(docdir)/$(p_jbase) \
+	$(jvm_dir)/jre/lib/$(java_cpu)
+
+files_jre = \
+	$(jvm_dir)/jre/lib/$(java_cpu)/libjawt.so
+
+dirs_jlib = \
+	$(docdir)/$(p_jbase) \
+	$(gcj_vlibdir) \
+	$(PF)/$(libdir) \
+	$(jvm_dir)/jre/lib
+
+files_jlib = \
+	$(PF)/$(libdir)/libgij.so.* \
+	$(PF)/$(libdir)/libgcj-tools.so.* \
+	$(PF)/$(libdir)/libgcj.so.* \
+	$(gcj_vlibdir)/libjvm.so \
+	$(gcj_vlibdir)/libjavamath.so \
+	$(jvm_dir)/jre/lib/security
+
+#	$(gcj_vlibdir)/libgconfpeer.so
+
+ifeq ($(with_java_alsa),yes)
+  files_jlib += \
+	$(gcj_vlibdir)/libgjsmalsa.so
+endif
+
+dirs_jar = \
+	$(PF)/share/java
+
+files_jar = \
+	$(PF)/share/java/libgcj-$(BASE_VERSION).jar \
+	$(PF)/share/java/libgcj-tools-$(BASE_VERSION).jar
+
+dirs_jlibx = \
+	$(PF)/$(libdir) \
+	$(gcj_vlibdir) \
+	$(PF)/share/java
+
+files_jlibx = \
+	$(gcj_vlibdir)/libjawt.so \
+	$(gcj_vlibdir)/libgtkpeer.so
+
+#files_jgtk = \
+#	$(gcj_vlibdir)/libgtkpeer.so
+#files_jqt = \
+#	$(gcj_vlibdir)/libqtpeer.so
+
+dirs_jdev = \
+	$(PF)/{include,lib} \
+	$(jvm_dir)/include
+
+files_jdev = \
+	$(PF)/include/c++/$(BASE_VERSION)/{org,gcj,java,javax} \
+	$(PF)/include/c++/$(BASE_VERSION)/gnu/{awt,classpath,gcj,java,javax} \
+	$(PF)/$(libdir)/pkgconfig/libgcj-$(BASE_VERSION).pc \
+	$(gcj_vlibdir)/lib*peer.so
+
+ifeq ($(with_static_java),yes)
+  files_jdev += \
+	$(PF)/$(libdir)/libgij.a \
+	$(PF)/$(libdir)/libgcj.a \
+	$(PF)/$(libdir)/libgcj-tools.a
+endif
+
+ifeq (,$(p_l64gcc))
+  p_l64gcc = lib64gcc$(GCC_SONAME)
+  d_l64gcc = debian/$(p_l64gcc)
+endif
+
+ifeq ($(with_standalone_gcj),yes)
+
+  dirs_gcj += \
+	$(gcc_lib_dir)/include \
+	$(PF)/share/man/man1
+
+# XXX: what about triarch mapping?
+  files_gcj += \
+	$(PF)/bin/{cpp,gcc,gcov}$(pkg_ver) \
+	$(gcc_lexec_dir)/{collect2,lto1,lto-wrapper} \
+	$(gcc_lexec_dir)/liblto_plugin.so{,.0,.0.0.0} \
+	$(gcc_lib_dir)/{libgcc*,libgcov.a,*.o} \
+	$(header_files) \
+	$(shell test -e $(d)/$(gcc_lib_dir)/SYSCALLS.c.X \
+		&& echo $(gcc_lib_dir)/SYSCALLS.c.X)
+
+  ifneq ($(GFDL_INVARIANT_FREE),yes)
+    files_gcj += \
+	$(PF)/share/man/man1/{cpp,gcc,gcov}$(pkg_ver).1
+  endif
+
+  ifeq ($(biarch64),yes)
+    files_gcj += $(gcc_lib_dir)/$(biarch64subdir)/{libgcc*,libgcov.a,*.o}
+  endif
+  ifeq ($(biarch32),yes)
+    files_gcj += $(gcc_lib_dir)/$(biarch32subdir)/{libgcc*,*.o}
+  endif
+  ifeq ($(biarchn32),yes)
+    files_gcj += $(gcc_lib_dir)/$(biarchn32subdir)/{libgcc*,libgcov.a,*.o}
+  endif
+  ifeq ($(biarchx32),yes)
+    files_gcj += $(gcc_lib_dir)/$(biarchx32subdir)/{libgcc*,libgcov.a,*.o}
+  endif
+endif
+
+# ----------------------------------------------------------------------
+$(binary_stamp)-jbase: $(install_dependencies)
+	dh_testdir
+	dh_testroot
+	rm -rf $(d_jbase)
+	dh_installdirs -p$(p_jbase)
+	dh_installdocs -p$(p_jbase)
+	dh_installchangelogs -p$(p_jbase)
+	dh_compress -p$(p_jbase)
+	dh_fixperms -p$(p_jbase)
+	dh_gencontrol -p$(p_jbase) -- -v$(DEB_VERSION) $(common_substvars)
+	dh_installdeb -p$(p_jbase)
+	dh_md5sums -p$(p_jbase)
+	dh_builddeb -p$(p_jbase)
+	touch $@
+
+# ----------------------------------------------------------------------
+$(binary_stamp)-gcj: $(install_stamp)
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_gcj)
+	dh_installdirs -p$(p_gcj)  $(dirs_gcj)
+
+ifeq ($(DEB_CROSS),yes)
+	ln -sf ../../../gcc/$(DEB_HOST_GNU_TYPE)/$(BASE_VERSION)/ecj1 \
+		$(d)/$(gcc_lib_dir)/ecj1
+endif
+	$(dh_compat2) dh_movefiles -p$(p_gcj)  $(files_gcj)
+ifneq (,$(filter $(build_type), build-native cross-build-native))
+	mv $(d_gcj)/$(PF)/$(libdir)/libgcj.spec $(d_gcj)/$(gcc_lib_dir)/
+endif
+
+ifneq (,$(filter $(DEB_HOST_ARCH), arm armel))
+	ln -sf ../../ecj1 $(d_gcj)/$(gcc_lexec_dir)/ecj1
+endif
+ifneq ($(DEB_CROSS),yes)
+	ln -sf gcj$(pkg_ver) \
+	    $(d_gcj)/$(PF)/bin/$(TARGET_ALIAS)-gcj$(pkg_ver)
+  ifneq ($(GFDL_INVARIANT_FREE),yes)
+	ln -sf gcj$(pkg_ver).1 \
+	    $(d_gcj)/$(PF)/share/man/man1/$(TARGET_ALIAS)-gcj$(pkg_ver).1
+  endif
+endif
+
+ifeq ($(GFDL_INVARIANT_FREE),yes)
+	mkdir -p $(d_gcj)/usr/share/lintian/overrides
+	echo '$(p_gcj) binary: binary-without-manpage' \
+	  >> $(d_gcj)/usr/share/lintian/overrides/$(p_gcj)
+endif
+
+	debian/dh_doclink -p$(p_gcj) $(p_jbase)
+	debian/dh_rmemptydirs -p$(p_gcj)
+
+	dh_strip -p$(p_gcj) \
+	  $(if $(unstripped_exe),-X/jc1)
+	dh_shlibdeps -p$(p_gcj) -Xecj1
+	echo $(p_gcj) >> debian/arch_binaries
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+
+# ----------------------------------------------------------------------
+$(binary_stamp)-libgcjjar: $(install_stamp)
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	dh_installdirs -p$(p_jar) $(dirs_jar)
+	$(dh_compat2) dh_movefiles -p$(p_jar) $(files_jar)
+
+	ln -sf libgcj-$(BASE_VERSION).jar \
+		$(d_jar)/$(PF)/share/java/libgcj-$(GCC_VERSION).jar
+	ln -sf libgcj-tools-$(BASE_VERSION).jar \
+		$(d_jar)/$(PF)/share/java/libgcj-tools-$(GCC_VERSION).jar
+	debian/dh_doclink -p$(p_jar) $(p_jbase)
+	debian/dh_rmemptydirs -p$(p_jar)
+	echo $(p_jar) >> debian/arch_binaries
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+
+# ----------------------------------------------------------------------
+$(build_javasrc_stamp): $(build_stamp)
+	PATH=$(PWD)/bin:$$PATH \
+	  $(MAKE) -C $(buildlibdir)/libjava src.zip
+	touch $@
+
+$(binary_stamp)-libgcjsrc: $(install_stamp) $(build_javasrc_stamp)
+	dh_testdir
+	dh_testroot
+
+	dh_installdirs -p$(p_jsrc) $(PF)/share/java $(jvm_dir)
+	cp -p $(buildlibdir)/libjava/src.zip \
+	   $(d_jsrc)/$(PF)/share/java/libgcj-src-$(BASE_VERSION).zip
+	dh_link -p$(p_jsrc) \
+		$(PF)/share/java/libgcj-src-$(BASE_VERSION).zip \
+		$(jvm_dir)/src.zip
+	debian/dh_doclink -p$(p_jsrc) $(p_jbase)
+	debian/dh_rmemptydirs -p$(p_jsrc)
+	echo $(p_jsrc) >> debian/indep_binaries
+
+	touch $@
+
+# ----------------------------------------------------------------------
+libgcj_version = $$($(builddir)/gcc/xgcc -B$(builddir)/gcc/ --version \
+			 | sed -n '/^xgcc/s/[^)]*) *\(.*\)/\1/p' | sed 's/ \[[^[]*$$//')
+libgcj_title = LibGCJ Classpath
+libgcjhbox_href = http://gcc.gnu.org/java
+libgcjhbox = <span class='logo'><a href='$(libgcjhbox_href)' target='_top'>$(title)</a> ($(libgcj_version))
+
+$(build_javadoc_stamp): $(build_stamp) $(build_javasrc_stamp)
+	mkdir -p $(builddir)/java-src
+	cd $(builddir)/java-src && fastjar -xf $(buildlibdir)/libjava/src.zip
+
+	mkdir -p $(builddir)/html
+	$(buildlibdir)/libjava/gjdoc \
+	    -licensetext \
+	    -use \
+	    -sourcepath "$(builddir)/java-src" \
+	    -encoding UTF-8 \
+	    -breakiterator \
+	    -linksource \
+	    -splitindex \
+	    -d $(builddir)/html \
+	    -doctitle "$(libgcj_title) $(libgcj_version)" \
+	    -windowtitle "$(libgcj_title) $(libgcj_version) Documentation" \
+	    -header "$(classpathbox)" \
+	    -footer "$(classpathbox)" \
+	    -subpackages gnu:java:javax:org
+
+	touch $@
+
+$(binary_stamp)-libgcjdoc: $(install_stamp) $(build_javadoc_stamp)
+	dh_testdir
+	dh_testroot
+
+	dh_installdocs -p$(p_jdoc)
+	sed -i 's/gcc$(pkg_ver)-base/$(p_jbase)/' $(d_jdoc)/usr/share/doc-base/libgcj-doc
+	dh_installchangelogs -p$(p_jdoc)
+	mkdir -p $(d_jdoc)/usr/share/doc/$(p_jbase)
+	cp -al $(builddir)/html $(d_jdoc)/usr/share/doc/$(p_jbase)/api
+	ln -sf api $(d_jdoc)/usr/share/doc/$(p_jbase)/html
+	ln -sf ../$(p_jbase)/api $(d_jdoc)/usr/share/doc/$(p_jdoc)/api
+	ln -sf ../$(p_jbase)/html $(d_jdoc)/usr/share/doc/$(p_jdoc)/html
+	echo $(p_jdoc) >> debian/indep_binaries
+
+	touch $@
+
+# ----------------------------------------------------------------------
+
+#peer_pkgs =
+#ifneq (,$(findstring gtk, $(java_awt_peers)))
+#  peer_pkgs += -p$(p_jgtk)
+#endif
+#ifneq (,$(findstring qt, $(java_awt_peers)))
+#  peer_pkgs += -p$(p_jqt)
+#endif
+
+$(binary_stamp)-java: $(install_stamp)
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	dh_installdirs -p$(p_jrehl)   $(dirs_jrehl)
+	dh_installdirs -p$(p_jlib)  $(dirs_jlib)
+	dh_installdirs -p$(p_jlibx) $(dirs_jlibx)
+
+	$(dh_compat2) dh_movefiles -p$(p_jrehl)   $(files_jrehl)
+	$(dh_compat2) dh_movefiles -p$(p_jlib)  $(files_jlib)
+	$(dh_compat2) dh_movefiles -p$(p_jlibx) $(files_jlibx)
+#ifneq (,$(findstring gtk, $(java_awt_peers)))
+#	$(dh_compat2) dh_movefiles -p$(p_jgtk) $(files_jgtk)
+#endif
+#ifneq (,$(findstring qt, $(java_awt_peers)))
+#	$(dh_compat2) dh_movefiles -p$(p_jqt) $(files_jqt)
+#endif
+
+	dh_link -p$(p_jrehl) \
+	  $(jvm_dir) $(PF)/lib/jvm/java-gcj$(pkg_ver) \
+	  $(PF)/bin/gij$(pkg_ver) $(jvm_dir)/bin/gij \
+	  $(PF)/bin/gij$(pkg_ver) $(jvm_dir)/jre/bin/gij \
+	  $(PF)/bin/gcj-dbtool$(pkg_ver) $(jvm_dir)/bin/gcj-dbtool \
+	  $(PF)/bin/gcj-dbtool$(pkg_ver) $(jvm_dir)/jre/bin/gcj-dbtool \
+	  $(PF)/share/man/man1/gkeytool$(pkg_ver).1 $(jvm_dir)/man/man1/keytool.1 \
+	  $(PF)/share/man/man1/gorbd$(pkg_ver).1 $(jvm_dir)/man/man1/orbd.1 \
+	  $(PF)/share/man/man1/grmid$(pkg_ver).1 $(jvm_dir)/man/man1/rmid.1 \
+	  $(PF)/share/man/man1/grmiregistry$(pkg_ver).1 $(jvm_dir)/man/man1/rmiregistry.1 \
+	  $(PF)/share/man/man1/gtnameserv$(pkg_ver).1 $(jvm_dir)/man/man1/tnameserv.1 \
+
+ifneq ($(GFDL_INVARIANT_FREE),yes)
+	dh_link -p$(p_jrehl) \
+	  $(PF)/share/man/man1/gij$(pkg_ver).1 $(jvm_dir)/man/man1/java.1 \
+	  $(PF)/share/man/man1/grmic$(pkg_ver).1 $(jvm_dir)/man/man1/rmiregistry.1
+endif
+
+ifneq ($(DEB_TARGET_ARCH_CPU),$(java_cpu))
+	ln -sf $(java_cpu) $(d_jlib)/$(jvm_dir)/jre/lib/$(DEB_TARGET_ARCH_CPU)
+endif
+
+	dh_link -p$(p_jlib) \
+	  /etc/java/cacerts-gcj /$(jvm_dir)/jre/lib/cacerts \
+	  $(foreach i, jvm javamath, \
+		/$(gcj_vlibdir)/lib$(i).so /$(jvm_dir)/lib/lib$(i).so)
+
+	dh_link -p$(p_jlib) \
+	  /etc/java/security/classpath.security \
+	  /$(jvm_dir)/jre/lib/security/java.security
+
+	dh_link -p$(p_jlibx) \
+	  $(foreach i, jawt, $(gcj_vlibdir)/lib$(i).so $(jvm_dir)/lib/lib$(i).so)
+
+ifeq ($(DEB_HOST_ARCH),hppa)
+	mv $(d_jrehl)/$(PF)/bin/gij$(pkg_ver) \
+		$(d_jrehl)/$(PF)/bin/gij$(pkg_ver).bin
+	install -m755 debian/gij-hppa $(d_jrehl)/$(PF)/bin/gij$(pkg_ver)
+endif
+
+	ln -s ../libgcj.so.$(GCJ_SONAME) \
+		$(d_jlib)/$(gcj_vlibdir)/libgcj_bc.so.1
+
+	: # provide .jinfo file
+	( \
+	  echo 'name=$(jvm_name_short)'; \
+	  echo 'alias=java-gcj$(pkg_ver)'; \
+	  echo 'priority=$(priority)'; \
+	  echo 'section=main'; \
+	  echo ''; \
+	  for i in $(jre_tools); do \
+	    echo "jre $$i /$(jvm_dir)/jre/bin/$$i"; \
+	  done; \
+	  for i in $(jdk_tools); do \
+	    echo "jdk $$i /$(jvm_dir)/bin/$$i"; \
+	  done; \
+	) > $(d_jrehl)/usr/lib/jvm/.java-gcj$(pkg_ver).jinfo
+
+ifneq (,$(findstring gcj,$(p_jbase)))
+	cp -p $(srcdir)/libjava/{NEWS,README,THANKS} \
+		$(d_jrehl)/usr/share/doc/$(p_jbase)/
+endif
+	debian/dh_doclink -p$(p_jrehl) $(p_jbase)
+	debian/dh_doclink -p$(p_jlib)  $(p_jbase)
+	debian/dh_doclink -p$(p_jlibx) $(p_jbase)
+
+#ifneq (,$(findstring gtk, $(java_awt_peers)))
+#	debian/dh_doclink -p$(p_jgtk) $(p_jbase)
+#endif
+#ifneq (,$(findstring qt, $(java_awt_peers)))
+#	debian/dh_doclink -p$(p_jqt) $(p_jbase)
+#endif
+
+ifeq ($(with_separate_libgcj),yes)
+  ifeq ($(PKGSOURCE),gcj-$(BASE_VERSION))
+    ifeq ($(with_check),yes)
+	cp -p test-summary $(d_jrehl)/usr/share/doc/$(p_jbase)/test-summary
+    endif
+  endif
+endif
+	debian/dh_rmemptydirs -p$(p_jrehl)
+	debian/dh_rmemptydirs -p$(p_jlib)
+	debian/dh_rmemptydirs -p$(p_jlibx)
+
+	mkdir -p $(d_jrehl)/var/lib/gcj$(pkg_ver)
+
+	dh_makeshlibs -p$(p_jlib) -V '$(p_jlib) (>= $(DEB_GCJ_SOVERSION))'
+	echo "libgcj_bc 1 libgcj-bc (>= 4.2.2-1)" >> debian/$(p_jlib)/DEBIAN/shlibs
+	cat debian/$(p_jlib)/DEBIAN/shlibs >> debian/shlibs.local
+
+	dh_makeshlibs -p$(p_jlibx) -V '$(p_jlibx) (>= $(DEB_GCJ_SOVERSION))'
+
+#ifneq (,$(findstring gtk, $(java_awt_peers)))
+#	dh_makeshlibs -p$(p_jgtk) -V '$(p_jgtk) (>= $(DEB_GCJ_SOVERSION))'
+#endif
+#ifneq (,$(findstring qt, $(java_awt_peers)))
+#	dh_makeshlibs -p$(p_jqt) -V '$(p_jqt) (>= $(DEB_GCJ_SOVERSION))'
+#endif
+
+	dh_strip -X/bin/ --dbg-package=$(p_jdbg) \
+		-p$(p_jrehl) -p$(p_jlib) -p$(p_jlibx) $(peer_pkgs)
+	rm -f $(d_jdbg)/$(gcc_lib_dir)/libgcj_bc.so
+
+	mkdir -p $(d_jlib)/usr/share/lintian/overrides
+	cp -p debian/$(p_jlib).overrides \
+		$(d_jlib)/usr/share/lintian/overrides/$(p_jlib)
+	mkdir -p $(d_jlibx)/usr/share/lintian/overrides
+	cp -p debian/$(p_jlibx).overrides \
+		$(d_jlibx)/usr/share/lintian/overrides/$(p_jlibx)
+	mkdir -p $(d_jrehl)/usr/share/lintian/overrides
+	cp -p debian/$(p_jrehl).overrides \
+		$(d_jrehl)/usr/share/lintian/overrides/$(p_jrehl)
+
+# the libstdc++ binary packages aren't built yet ...
+	echo 'libstdc++ $(CXX_SONAME) libstdc++$(CXX_SONAME) (>= $(DEB_STDCXX_SOVERSION))' \
+	    >> debian/shlibs.local
+	-[ -d $(d_l64gcc) ] && mv $(d_l64gcc) $(d_l64gcc).saved
+ifeq ($(with_separate_libgcj)-$(with_standalone_gcj),yes-no)
+	dh_shlibdeps \
+		-L$(p_jlib) \
+		-l$(d_lib)/$(PF)/$(libdir):$(d_jlib)/$(PF)/$(libdir) \
+		-p$(p_jrehl) -p$(p_jlib) -p$(p_jlibx) $(peer_pkgs)
+else
+	dh_shlibdeps \
+		-L$(p_lgcc) \
+		-L$(p_jlib) \
+		-l:$(d)/$(PF)/$(libdir):$(d_lib)/$(PF)/$(libdir):$(d_jlib)/$(PF)/$(libdir):$(d_lgcc)/lib \
+		-p$(p_jrehl) -p$(p_jlib) -p$(p_jlibx) $(peer_pkgs)
+endif
+	-[ -d $(d_l64gcc).saved ] && mv $(d_l64gcc).saved $(d_l64gcc)
+	sed -e 's/$(p_jlib)[^,]*//' -e 's/, *,/,/' debian/$(p_jlib).substvars \
+		>> debian/$(p_jlib).substvars.tmp \
+	    && mv -f debian/$(p_jlib).substvars.tmp debian/$(p_jlib).substvars
+	rm -f debian/shlibs.local
+
+	echo $(p_jrehl) $(p_jlib) $(p_jlibx) $(subst -p,,$(peer_pkgs)) >> debian/arch_binaries
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+
+# ----------------------------------------------------------------------
+$(binary_stamp)-gcjjdk: $(build_html_stamp) $(install_stamp)
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_jdk)
+	dh_installdirs -p$(p_jdk)  $(dirs_jdk)
+
+#	mkdir -p $(d_jdk)/usr/share/lintian/overrides
+#	cp -p debian/$(p_jdk).overrides \
+#		$(d_jdk)/usr/share/lintian/overrides/$(p_jdk)
+	cp -p $(srcdir)/gcc/java/ChangeLog \
+		$(d_jdk)/usr/share/doc/$(p_jbase)/changelog.gcj
+	cp -p $(srcdir)/libjava/ChangeLog \
+		$(d_jdk)/usr/share/doc/$(p_jbase)/changelog.libjava
+
+ifeq ($(with_standalone_gcj),yes)
+	rm -f $(d)/$(PF)/$(libdir)/libgcc_s.so
+	ln -sf /$(libdir)/libgcc_s.so.$(GCC_SONAME) $(d)/$(gcc_lib_dir)/libgcc_s.so
+endif
+	$(dh_compat2) dh_movefiles -p$(p_jdk)  $(files_jdk)
+
+	for i in libgij libgcj libgcj-tools; do \
+	  dh_link -p$(p_jdk) \
+	    /$(PF)/$(libdir)/$$i.so.$(GCJ_SONAME) /$(gcc_lib_dir)/$$i.so \
+	    /$(PF)/$(libdir)/$$i.so.$(GCJ_SONAME) /$(jvm_dir)/lib/$$i.so; \
+	  rm -f $(d_jdk)/$(PF)/$(libdir)/$$i.{la,so}; \
+	done
+
+	install -m755 debian/jdb.sh $(d_jdk)/$(jvm_dir)/bin/jdb
+
+	install -m 755 $(d)/$(PF)/$(libdir)/libgcj_bc.so.1 \
+		$(d_jdk)/$(gcc_lib_dir)/libgcj_bc.so
+	$(CC_FOR_TARGET) $(LDFLAGS_FOR_TARGET) -shared -fpic -xc /dev/null \
+		-o build/libgcj.so -Wl,-soname,libgcj.so.$(GCJ_SONAME) -nostdlib
+	$(CC_FOR_TARGET) $(LDFLAGS_FOR_TARGET) -shared -fpic \
+		$(srcdir)/libjava/libgcj_bc.c \
+		-o $(d_jdk)/$(gcc_lib_dir)/libgcj_bc.so \
+		-Wl,-soname,libgcj_bc.so.1 $(builddir)/libgcj.so -shared-libgcc 
+
+	dh_link -p$(p_jdk) \
+	  $(gcc_lib_dir)/include/gcj $(jvm_dir)/include/gcj \
+	  usr/bin/ecj $(jvm_dir)/bin/javac \
+	  usr/bin/fastjar $(jvm_dir)/bin/jar \
+	  $(PF)/share/man/man1/ecj.1.gz $(jvm_dir)/man/man1/javac.1.gz \
+	  $(PF)/share/man/man1/fastjar.1.gz $(jvm_dir)/man/man1/jar.1.gz
+
+	dh_link -p$(p_jdk) \
+	  $(PF)/bin/gcj$(pkg_ver) $(jvm_dir)/bin/gcj \
+	  $(PF)/share/man/man1/gjarsigner$(pkg_ver).1 $(jvm_dir)/man/man1/jarsigner.1 \
+	  $(PF)/share/man/man1/gjdoc$(pkg_ver).1 $(jvm_dir)/man/man1/javadoc.1 \
+	  $(PF)/share/man/man1/gjavah$(pkg_ver).1 $(jvm_dir)/man/man1/javah.1 \
+	  $(PF)/share/man/man1/gserialver$(pkg_ver).1 $(jvm_dir)/man/man1/serialver.1 \
+	  $(PF)/share/man/man1/gappletviewer$(pkg_ver).1 $(jvm_dir)/man/man1/appletviewer.1
+
+ifneq ($(GFDL_INVARIANT_FREE),yes)
+	cp -p html/gcj.html $(d_jdk)/$(docdir)/$(p_jbase)/
+endif
+	debian/dh_doclink -p$(p_jdk) $(p_jbase)
+
+	cp -p debian/FAQ.gcj $(d_jdk)/$(docdir)/$(p_jbase)/
+
+	cp -p debian/gcj-wrapper$(pkg_ver) $(d_jdk)/$(PF)/bin/
+	chmod 755 $(d_jdk)/$(PF)/bin/gcj-wrapper$(pkg_ver)
+	cp -p debian/gcj-wrapper$(pkg_ver).1 $(d_jdk)/$(PF)/share/man/man1/
+
+	debian/dh_rmemptydirs -p$(p_jdk)
+
+	dh_strip -p$(p_jdk)
+	dh_shlibdeps -p$(p_jdk) -l$(d_lib)/$(PF)/$(libdir):$(d_jlib)/$(PF)/lib -Xecj1
+	echo $(p_jdk) >> debian/arch_binaries
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+
+# ----------------------------------------------------------------------
+$(binary_stamp)-libgcjdev: $(build_html_stamp) $(install_stamp) $(binary_stamp)-java
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	dh_installdirs -p$(p_jdev) $(dirs_jdev)
+
+	$(dh_compat2) dh_movefiles -p$(p_jdev) $(files_jdev)
+
+ifeq ($(with_static_java),yes)
+	for i in libgij libgcj libgcj-tools; do \
+	  mv $(d_jdev)/$(PF)/$(libdir)/$$i.a $(d_jdev)/$(gcc_lib_dir)/; \
+	done
+endif
+
+	ln -sf libgcj-$(BASE_VERSION).pc \
+		$(d_jdev)/$(PF)/$(libdir)/pkgconfig/libgcj$(PKG_GCJ_EXT).pc
+	sed -i -e 's,-[IL][^ ]* *,,' \
+		$(d_jdev)/$(PF)/$(libdir)/pkgconfig/libgcj-$(BASE_VERSION).pc
+
+	debian/dh_doclink -p$(p_jdev) $(p_jbase)
+
+	debian/dh_rmemptydirs -p$(p_jdev)
+
+#	mkdir -p $(d_jdev)/usr/share/lintian/overrides
+#	cp -p debian/libgcj$(PKG_GCJ_EXT)-dev.overrides \
+#		$(d_jdev)/usr/share/lintian/overrides/$(p_jdev)
+
+	DH_COMPAT=5 dh_strip -p$(p_jdev) --dbg-package=$(p_jdbg)
+ifeq ($(with_separate_libgcj)-$(with_standalone_gcj),yes-no)
+	dh_shlibdeps \
+		-l$(d_lib)/$(PF)/$(libdir):$(d_jlib)/$(PF)/$(libdir) \
+		-p$(p_jdev)
+else
+	dh_shlibdeps \
+		-L$(p_lgcc) \
+		-l:$(d)/$(PF)/$(libdir):$(d_lib)/$(PF)/$(libdir):$(d_jlib)/$(PF)/$(libdir):$(d_lgcc)/lib \
+		-p$(p_jdev)
+endif
+	echo $(p_jdev) >> debian/arch_binaries
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+
+# ----------------------------------------------------------------------
+$(binary_stamp)-libgcjdbg: $(install_stamp) $(binary_stamp)-java $(binary_stamp)-libgcjdev $(binary_stamp)-gcjjre
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	debian/dh_doclink -p$(p_jdbg) $(p_jbase)
+
+	for i in libgij libgcj libgcj-tools; do \
+	  if [ -f $(d_jdbg)/usr/lib/debug/usr/lib/$$i.so.$(GCJ_SONAME).0.0 ]; then \
+	    ln -sf $$i.so.$(GCJ_SONAME).0.0 \
+	      $(d_jdbg)/usr/lib/debug/usr/lib/$$i.so.$(GCJ_SONAME); \
+	  fi; \
+	done
+#	ln -sf libgconfpeer.so.0.0.0 \
+#	  $(d_jdbg)/usr/lib/debug/$(gcj_vlibdir)/libgconfpeer.so.0
+	echo $(p_jdbg) >> debian/arch_binaries
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+
+# ----------------------------------------------------------------------
+$(binary_stamp)-gcjjre: $(install_stamp) $(binary_stamp)-java
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	dh_installdirs -p$(p_jre) $(dirs_jre)
+	$(dh_compat2) dh_movefiles -p$(p_jre)   $(files_jre)
+
+	debian/dh_doclink -p$(p_jre) $(p_jbase)
+	DH_COMPAT=5 dh_strip -p$(p_jre) --dbg-package=$(p_jdbg)
+	echo $(p_jre) >> debian/arch_binaries
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
diff --git a/debian/rules.d/binary-libasan.mk b/debian/rules.d/binary-libasan.mk
new file mode 100644
index 0000000..5930f7a
--- /dev/null
+++ b/debian/rules.d/binary-libasan.mk
@@ -0,0 +1,75 @@
+$(lib_binaries)  += libasan
+ifeq ($(with_lib64asan),yes)
+  $(lib_binaries)  += lib64asan
+endif
+ifeq ($(with_lib32asan),yes)
+  $(lib_binaries)	+= lib32asan
+endif
+ifeq ($(with_libn32asan),yes)
+  $(lib_binaries)	+= libn32asan
+endif
+ifeq ($(with_libx32asan),yes)
+  $(lib_binaries)	+= libx32asan
+endif
+ifeq ($(with_libhfasan),yes)
+  $(lib_binaries)	+= libhfasan
+endif
+ifeq ($(with_libsfasan),yes)
+  $(lib_binaries)	+= libsfasan
+endif
+
+define __do_asan
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_l) $(d_d)
+	dh_installdirs -p$(p_l) $(usr_lib$(2))
+	$(dh_compat2) dh_movefiles -p$(p_l) $(usr_lib$(2))/libasan.so.*
+
+	debian/dh_doclink -p$(p_l) $(p_lbase)
+	debian/dh_doclink -p$(p_d) $(p_lbase)
+
+	if [ -f debian/$(p_l).overrides ]; then \
+		mkdir -p debian/$(p_l)/usr/share/lintian/overrides; \
+		cp debian/$(p_l).overrides debian/$(p_l)/usr/share/lintian/overrides/$(p_l); \
+	fi
+
+	dh_strip -p$(p_l) --dbg-package=$(p_d)
+	$(cross_makeshlibs) dh_makeshlibs -p$(p_l)
+	$(call cross_mangle_shlibs,$(p_l))
+	$(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l) \
+		$(call shlibdirs_to_search, \
+			$(subst asan$(ASAN_SONAME),gcc$(GCC_SONAME),$(p_l)) \
+			$(subst asan$(ASAN_SONAME),stdc++$(CXX_SONAME),$(p_l)) \
+		,$(2))
+	$(call cross_mangle_substvars,$(p_l))
+	echo $(p_l) $(p_d) >> debian/$(lib_binaries)
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+endef
+
+# ----------------------------------------------------------------------
+
+do_asan = $(call __do_asan,lib$(1)asan$(ASAN_SONAME),$(1))
+
+$(binary_stamp)-libasan: $(install_stamp)
+	$(call do_asan,)
+
+$(binary_stamp)-lib64asan: $(install_stamp)
+	$(call do_asan,64)
+
+$(binary_stamp)-lib32asan: $(install_stamp)
+	$(call do_asan,32)
+
+$(binary_stamp)-libn32asan: $(install_stamp)
+	$(call do_asan,n32)
+
+$(binary_stamp)-libx32asan: $(install_stamp)
+	$(call do_asan,x32)
+
+$(binary_stamp)-libhfasan: $(install_dependencies)
+	$(call do_asan,hf)
+
+$(binary_stamp)-libsfasan: $(install_dependencies)
+	$(call do_asan,sf)
diff --git a/debian/rules.d/binary-libatomic.mk b/debian/rules.d/binary-libatomic.mk
new file mode 100644
index 0000000..1b07315
--- /dev/null
+++ b/debian/rules.d/binary-libatomic.mk
@@ -0,0 +1,68 @@
+$(lib_binaries)  += libatomic
+ifeq ($(with_lib64atomic),yes)
+  $(lib_binaries)  += lib64atomic
+endif
+ifeq ($(with_lib32atomic),yes)
+  $(lib_binaries)	+= lib32atomic
+endif
+ifeq ($(with_libn32atomic),yes)
+  $(lib_binaries)	+= libn32atomic
+endif
+ifeq ($(with_libx32atomic),yes)
+  $(lib_binaries)	+= libx32atomic
+endif
+ifeq ($(with_libhfatomic),yes)
+  $(lib_binaries)	+= libhfatomic
+endif
+ifeq ($(with_libsfatomic),yes)
+  $(lib_binaries)	+= libsfatomic
+endif
+
+define __do_atomic
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_l) $(d_d)
+	dh_installdirs -p$(p_l) $(usr_lib$(2))
+	$(dh_compat2) dh_movefiles -p$(p_l) $(usr_lib$(2))/libatomic.so.*
+
+	debian/dh_doclink -p$(p_l) $(p_lbase)
+	debian/dh_doclink -p$(p_d) $(p_lbase)
+
+	dh_strip -p$(p_l) --dbg-package=$(p_d)
+	ln -sf libatomic.symbols debian/$(p_l).symbols
+	$(cross_makeshlibs) dh_makeshlibs -p$(p_l)
+	$(call cross_mangle_shlibs,$(p_l))
+	$(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l) \
+		$(call shlibdirs_to_search,,$(2))
+	$(call cross_mangle_substvars,$(p_l))
+	echo $(p_l) $(p_d) >> debian/$(lib_binaries)
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+endef
+
+# ----------------------------------------------------------------------
+
+do_atomic = $(call __do_atomic,lib$(1)atomic$(ATOMIC_SONAME),$(1))
+
+$(binary_stamp)-libatomic: $(install_stamp)
+	$(call do_atomic,)
+
+$(binary_stamp)-lib64atomic: $(install_stamp)
+	$(call do_atomic,64)
+
+$(binary_stamp)-lib32atomic: $(install_stamp)
+	$(call do_atomic,32)
+
+$(binary_stamp)-libn32atomic: $(install_stamp)
+	$(call do_atomic,n32)
+
+$(binary_stamp)-libx32atomic: $(install_stamp)
+	$(call do_atomic,x32)
+
+$(binary_stamp)-libhfatomic: $(install_dependencies)
+	$(call do_atomic,hf)
+
+$(binary_stamp)-libsfatomic: $(install_dependencies)
+	$(call do_atomic,sf)
diff --git a/debian/rules.d/binary-libcc1.mk b/debian/rules.d/binary-libcc1.mk
new file mode 100644
index 0000000..c169012
--- /dev/null
+++ b/debian/rules.d/binary-libcc1.mk
@@ -0,0 +1,29 @@
+ifneq ($(DEB_CROSS),yes)
+  arch_binaries  := $(arch_binaries) libcc1
+endif
+
+p_cc1	= libcc1-$(CC1_SONAME)
+d_cc1	= debian/$(p_cc1)
+
+# ----------------------------------------------------------------------
+$(binary_stamp)-libcc1: $(install_dependencies)
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_cc1)
+	dh_installdirs -p$(p_cc1) \
+		$(docdir) \
+		$(usr_lib)
+	$(dh_compat2) dh_movefiles -p$(p_cc1) \
+		$(usr_lib)/libcc1.so.*
+
+	debian/dh_doclink -p$(p_cc1) $(p_xbase)
+	debian/dh_rmemptydirs -p$(p_cc1)
+
+	dh_strip -p$(p_cc1)
+	dh_makeshlibs -p$(p_cc1)
+	dh_shlibdeps -p$(p_cc1)
+	echo $(p_cc1) >> debian/arch_binaries
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
diff --git a/debian/rules.d/binary-libcilkrts.mk b/debian/rules.d/binary-libcilkrts.mk
new file mode 100644
index 0000000..acdbdab
--- /dev/null
+++ b/debian/rules.d/binary-libcilkrts.mk
@@ -0,0 +1,76 @@
+$(lib_binaries)  += libcilkrts
+ifeq ($(with_lib64cilkrts),yes)
+  $(lib_binaries)  += lib64cilkrts
+endif
+ifeq ($(with_lib32cilkrts),yes)
+  $(lib_binaries)	+= lib32cilkrts
+endif
+ifeq ($(with_libn32cilkrts),yes)
+  $(lib_binaries)	+= libn32cilkrts
+endif
+ifeq ($(with_libx32cilkrts),yes)
+  $(lib_binaries)	+= libx32cilkrts
+endif
+ifeq ($(with_libhfcilkrts),yes)
+  $(lib_binaries)	+= libhfcilkrts
+endif
+ifeq ($(with_libsfcilkrts),yes)
+  $(lib_binaries)	+= libsfcilkrts
+endif
+
+define __do_cilkrts
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_l) $(d_d)
+	dh_installdirs -p$(p_l) $(usr_lib$(2))
+	$(dh_compat2) dh_movefiles -p$(p_l) $(usr_lib$(2))/libcilkrts.so.*
+
+	debian/dh_doclink -p$(p_l) $(p_lbase)
+	debian/dh_doclink -p$(p_d) $(p_lbase)
+
+	if [ -f debian/$(p_l).overrides ]; then \
+		mkdir -p debian/$(p_l)/usr/share/lintian/overrides; \
+		cp debian/$(p_l).overrides debian/$(p_l)/usr/share/lintian/overrides/$(p_l); \
+	fi
+
+	dh_strip -p$(p_l) --dbg-package=$(p_d)
+	ln -sf libcilkrts.symbols debian/$(p_l).symbols
+	$(cross_makeshlibs) dh_makeshlibs -p$(p_l)
+	$(call cross_mangle_shlibs,$(p_l))
+	$(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l) \
+		$(call shlibdirs_to_search, \
+			$(subst cilkrts$(CILKRTS_SONAME),gcc$(GCC_SONAME),$(p_l)) \
+			$(subst cilkrts$(CILKRTS_SONAME),stdc++$(CXX_SONAME),$(p_l)) \
+		,$(2))
+	$(call cross_mangle_substvars,$(p_l))
+	echo $(p_l) $(p_d) >> debian/$(lib_binaries)
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+endef
+
+# ----------------------------------------------------------------------
+
+do_cilkrts = $(call __do_cilkrts,lib$(1)cilkrts$(CILKRTS_SONAME),$(1))
+
+$(binary_stamp)-libcilkrts: $(install_stamp)
+	$(call do_cilkrts,)
+
+$(binary_stamp)-lib64cilkrts: $(install_stamp)
+	$(call do_cilkrts,64)
+
+$(binary_stamp)-lib32cilkrts: $(install_stamp)
+	$(call do_cilkrts,32)
+
+$(binary_stamp)-libn32cilkrts: $(install_stamp)
+	$(call do_cilkrts,n32)
+
+$(binary_stamp)-libx32cilkrts: $(install_stamp)
+	$(call do_cilkrts,x32)
+
+$(binary_stamp)-libhfcilkrts: $(install_dependencies)
+	$(call do_cilkrts,hf)
+
+$(binary_stamp)-libsfcilkrts: $(install_dependencies)
+	$(call do_cilkrts,sf)
diff --git a/debian/rules.d/binary-libgcc.mk b/debian/rules.d/binary-libgcc.mk
new file mode 100644
index 0000000..fa663d0
--- /dev/null
+++ b/debian/rules.d/binary-libgcc.mk
@@ -0,0 +1,378 @@
+ifeq ($(with_libgcc),yes)
+  $(lib_binaries)	+= libgcc
+endif
+ifeq ($(with_lib64gcc),yes)
+  $(lib_binaries)	+= lib64gcc
+endif
+ifeq ($(with_lib32gcc),yes)
+  $(lib_binaries)	+= lib32gcc
+endif
+ifeq ($(with_libn32gcc),yes)
+  $(lib_binaries)	+= libn32gcc
+endif
+ifeq ($(with_libx32gcc),yes)
+  $(lib_binaries)	+= libx32gcc
+endif
+ifeq ($(with_libhfgcc),yes)
+  $(lib_binaries)	+= libhfgcc
+endif
+ifeq ($(with_libsfgcc),yes)
+  $(lib_binaries)	+= libsfgcc
+endif
+
+ifneq ($(DEB_STAGE),rtlibs)
+  ifeq ($(with_cdev),yes)
+    $(lib_binaries)  += libgcc-dev
+  endif
+  ifeq ($(with_lib64gccdev),yes)
+    $(lib_binaries)  += lib64gcc-dev
+  endif
+  ifeq ($(with_lib32gccdev),yes)
+    $(lib_binaries)  += lib32gcc-dev
+  endif
+  ifeq ($(with_libn32gccdev),yes)
+    $(lib_binaries)  += libn32gcc-dev
+  endif
+  ifeq ($(with_libx32gccdev),yes)
+    $(lib_binaries)  += libx32gcc-dev
+  endif
+  ifeq ($(with_libhfgccdev),yes)
+    $(lib_binaries)  += libhfgcc-dev
+  endif
+  ifeq ($(with_libsfgccdev),yes)
+    $(lib_binaries)  += libsfgcc-dev
+  endif
+endif
+
+header_files = \
+	$(gcc_lib_dir)/include/std*.h \
+	$(shell for h in \
+		    README features.h arm_neon.h loongson.h \
+		    {cpuid,decfloat,float,iso646,limits,mm3dnow,mm_malloc}.h \
+		    {ppu_intrinsics,paired,spu2vmx,vec_types,si2vmx}.h \
+		    {,a,b,e,i,n,p,s,t,w,x}mmintrin.h mmintrin-common.h \
+		    {abm,adx,avx,avx2,bmi,bmi2,f16c,fma,fma4,fxsr,ia32,}intrin.h \
+		    {lwp,lzcnt,popcnt,prfchw,rdseed,rtm,tbm,x86,xop,xsave{,opt},xtest,}intrin.h \
+		    {htm,htmxl,mwaitx,sha}intrin.h \
+		    avx512{bw,er,cd,dq,f,ifma,ifmavl,pf,vlbw,vbmi,vldq,vbmivl,vl}intrin.h \
+		    {clflushopt,clwb,pcommit,xsavec,xsaves}intrin.h \
+		    {arm_acle,unwind-arm-common,s390intrin}.h \
+		    {cross-stdarg,syslimits,unwind,varargs}.h; \
+		do \
+		  test -e $(d)/$(gcc_lib_dir)/include/$$h \
+		    && echo $(gcc_lib_dir)/include/$$h; \
+		  test -e $(d)/$(gcc_lib_dir)/include-fixed/$$h \
+		    && echo $(gcc_lib_dir)/include-fixed/$$h; \
+		done) \
+	$(shell for d in \
+		  asm bits cilk gnu linux sanitizer $(TARGET_ALIAS) \
+		  $(subst $(DEB_TARGET_GNU_CPU),$(biarch_cpu),$(TARGET_ALIAS)); \
+		do \
+		  test -e $(d)/$(gcc_lib_dir)/include/$$d \
+		    && echo $(gcc_lib_dir)/include/$$d; \
+		  test -e $(d)/$(gcc_lib_dir)/include-fixed/$$d \
+		    && echo $(gcc_lib_dir)/include-fixed/$$d; \
+		done)
+
+ifeq ($(with_libssp),yes)
+    header_files += $(gcc_lib_dir)/include/ssp
+endif
+ifeq ($(with_gomp),yes)
+    header_files += $(gcc_lib_dir)/include/{omp,openacc}.h
+endif
+ifeq ($(with_qmath),yes)
+    header_files += $(gcc_lib_dir)/include/quadmath{,_weak}.h
+endif
+
+ifeq ($(DEB_TARGET_ARCH),ia64)
+    header_files += $(gcc_lib_dir)/include/ia64intrin.h
+endif
+
+ifeq ($(DEB_TARGET_ARCH),m68k)
+    header_files += $(gcc_lib_dir)/include/math-68881.h
+endif
+
+ifeq ($(DEB_TARGET_ARCH),$(findstring $(DEB_TARGET_ARCH),powerpc ppc64 ppc64el powerpcspe))
+    header_files += $(gcc_lib_dir)/include/{altivec.h,ppc-asm.h,spe.h}
+endif
+
+p_lgcc		= libgcc$(GCC_SONAME)$(cross_lib_arch)
+p_lgccdbg	= libgcc$(GCC_SONAME)-dbg$(cross_lib_arch)
+p_lgccdev	= libgcc-$(BASE_VERSION)-dev$(cross_lib_arch)
+d_lgcc		= debian/$(p_lgcc)
+d_lgccdbg	= debian/$(p_lgccdbg)
+d_lgccdev	= debian/$(p_lgccdev)
+
+p_l32gcc	= lib32gcc$(GCC_SONAME)$(cross_lib_arch)
+p_l32gccdbg	= lib32gcc$(GCC_SONAME)-dbg$(cross_lib_arch)
+p_l32gccdev	= lib32gcc-$(BASE_VERSION)-dev$(cross_lib_arch)
+d_l32gcc	= debian/$(p_l32gcc)
+d_l32gccdbg	= debian/$(p_l32gccdbg)
+d_l32gccdev	= debian/$(p_l32gccdev)
+
+p_l64gcc	= lib64gcc$(GCC_SONAME)$(cross_lib_arch)
+p_l64gccdbg	= lib64gcc$(GCC_SONAME)-dbg$(cross_lib_arch)
+p_l64gccdev	= lib64gcc-$(BASE_VERSION)-dev$(cross_lib_arch)
+d_l64gcc	= debian/$(p_l64gcc)
+d_l64gccdbg	= debian/$(p_l64gccdbg)
+d_l64gccdev	= debian/$(p_l64gccdev)
+
+p_ln32gcc	= libn32gcc$(GCC_SONAME)$(cross_lib_arch)
+p_ln32gccdbg	= libn32gcc$(GCC_SONAME)-dbg$(cross_lib_arch)
+p_ln32gccdev	= libn32gcc-$(BASE_VERSION)-dev$(cross_lib_arch)
+d_ln32gcc	= debian/$(p_ln32gcc)
+d_ln32gccdbg	= debian/$(p_ln32gccdbg)
+d_ln32gccdev	= debian/$(p_ln32gccdev)
+
+p_lx32gcc	= libx32gcc$(GCC_SONAME)$(cross_lib_arch)
+p_lx32gccdbg	= libx32gcc$(GCC_SONAME)-dbg$(cross_lib_arch)
+p_lx32gccdev	= libx32gcc-$(BASE_VERSION)-dev$(cross_lib_arch)
+d_lx32gcc	= debian/$(p_lx32gcc)
+d_lx32gccdbg	= debian/$(p_lx32gccdbg)
+d_lx32gccdev	= debian/$(p_lx32gccdev)
+
+p_lhfgcc	= libhfgcc$(GCC_SONAME)$(cross_lib_arch)
+p_lhfgccdbg	= libhfgcc$(GCC_SONAME)-dbg$(cross_lib_arch)
+p_lhfgccdev	= libhfgcc-$(BASE_VERSION)-dev$(cross_lib_arch)
+d_lhfgcc	= debian/$(p_lhfgcc)
+d_lhfgccdbg	= debian/$(p_lhfgccdbg)
+d_lhfgccdev	= debian/$(p_lhfgccdev)
+
+p_lsfgcc	= libsfgcc$(GCC_SONAME)$(cross_lib_arch)
+p_lsfgccdbg	= libsfgcc$(GCC_SONAME)-dbg$(cross_lib_arch)
+p_lsfgccdev	= libsfgcc-$(BASE_VERSION)-dev$(cross_lib_arch)
+d_lsfgcc	= debian/$(p_lsfgcc)
+d_lsfgccdbg	= debian/$(p_lsfgccdbg)
+d_lsfgccdev	= debian/$(p_lsfgccdev)
+
+# __do_gcc_devels(flavour,package,todir,fromdir)
+define __do_gcc_devels
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	test -n "$(2)"
+	rm -rf debian/$(2)
+	dh_installdirs -p$(2) $(docdir) #TODO
+	dh_installdirs -p$(2) $(3)
+
+	$(call __do_gcc_devels2,$(1),$(2),$(3),$(4))
+
+	debian/dh_doclink -p$(2) $(p_lbase)
+	debian/dh_rmemptydirs -p$(2)
+
+	dh_strip -p$(2)
+	$(cross_shlibdeps) dh_shlibdeps -p$(2)
+	$(call cross_mangle_substvars,$(2))
+	echo $(2) >> debian/$(lib_binaries)
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+endef
+
+# __do_gcc_devels2(flavour,package,todir,fromdir)
+define __do_gcc_devels2
+# stage1 builds static libgcc only
+	$(if $(filter $(DEB_STAGE),stage1),,
+		: # libgcc_s.so may be a linker script on some architectures
+		set -e; \
+		if [ -h $(4)/libgcc_s.so ]; then \
+		  rm -f $(4)/libgcc_s.so; \
+		  dh_link -p$(2) /$(libgcc_dir$(1))/libgcc_s.so.$(GCC_SONAME) \
+		    /$(3)/libgcc_s.so; \
+		else \
+		  mv $(4)/libgcc_s.so $(d)/$(3)/libgcc_s.so; \
+		  dh_link -p$(2) /$(libgcc_dir$(1))/libgcc_s.so.$(GCC_SONAME) \
+		    /$(3)/libgcc_s.so.$(GCC_SONAME); \
+		fi; \
+		$(if $(1), dh_link -p$(2) /$(3)/libgcc_s.so \
+		    /$(gcc_lib_dir)/libgcc_s_$(1).so;)
+	)
+	$(dh_compat2) dh_movefiles -p$(2) \
+		$(3)/{libgcc*,libgcov.a,*.o} \
+		$(if $(1),,$(header_files)) # Only move headers for the "main" package
+
+	: # libbacktrace not installed by default
+	$(if $(filter yes, $(with_backtrace)),
+	if [ -f $(buildlibdir)/$(1)/libbacktrace/.libs/libbacktrace.a ]; then \
+	  install -m644 $(buildlibdir)/$(1)/libbacktrace/.libs/libbacktrace.a \
+	      debian/$(2)/$(gcc_lib_dir)/$(1); \
+	fi; \
+	$(if $(1),,
+	if [ -f $(buildlibdir)/libbacktrace/backtrace-supported.h ]; then \
+	  install -m644 $(buildlibdir)/libbacktrace/backtrace-supported.h \
+	    debian/$(2)/$(gcc_lib_dir)/include/; \
+	  install -m644 $(srcdir)/libbacktrace/backtrace.h \
+	    debian/$(2)/$(gcc_lib_dir)/include/; \
+	fi
+	))
+
+	: # If building a flavour, add a lintian override
+	$(if $(1),
+		#TODO: use a file instead of a hacky echo
+		# bu do we want to use one override file (in the source package) per
+		# flavour or not since they are essentially the same?
+		mkdir -p debian/$(2)/usr/share/lintian/overrides
+		echo "$(2) binary: binary-from-other-architecture" \
+			>> debian/$(2)/usr/share/lintian/overrides/$(2)
+	)
+	$(if $(filter yes, $(with_lib$(1)gmath)),
+		$(call install_gcc_lib,libgcc-math,$(GCC_SONAME),$(1),$(2))
+	)
+	$(if $(filter yes, $(with_libssp)),
+		$(call install_gcc_lib,libssp,$(SSP_SONAME),$(1),$(2))
+	)
+	$(if $(filter yes, $(with_ssp)),
+		mv $(4)/libssp_nonshared.a debian/$(2)/$(3)/;
+	)
+	$(if $(filter yes, $(with_gomp)),
+		$(call install_gcc_lib,libgomp,$(GOMP_SONAME),$(1),$(2))
+	)
+	$(if $(filter yes, $(with_itm)),
+		$(call install_gcc_lib,libitm,$(ITM_SONAME),$(1),$(2))
+	)
+	$(if $(filter yes, $(with_atomic)),
+		$(call install_gcc_lib,libatomic,$(ATOMIC_SONAME),$(1),$(2))
+	)
+	$(if $(filter yes, $(with_asan)),
+		$(call install_gcc_lib,libasan,$(ASAN_SONAME),$(1),$(2))
+		mv $(4)/libasan_preinit.o debian/$(2)/$(3)/;
+	)
+	$(if $(1),,$(if $(filter yes, $(with_lsan)),
+		$(call install_gcc_lib,liblsan,$(LSAN_SONAME),$(1),$(2))
+	))
+	$(if $(1),,$(if $(filter yes, $(with_tsan)),
+		$(call install_gcc_lib,libtsan,$(TSAN_SONAME),$(1),$(2))
+	))
+	$(if $(filter yes, $(with_ubsan)),
+		$(call install_gcc_lib,libubsan,$(UBSAN_SONAME),$(1),$(2))
+	)
+	$(if $(filter yes, $(with_vtv)),
+		$(call install_gcc_lib,libvtv,$(VTV_SONAME),$(1),$(2))
+	)
+	$(if $(filter yes, $(with_cilkrts)),
+		$(call install_gcc_lib,libcilkrts,$(CILKRTS_SONAME),$(1),$(2))
+	)
+	$(if $(filter yes, $(with_mpx)),
+	    $(if $(filter x32, $(1)),,
+		$(call install_gcc_lib,libmpxwrappers,$(MPX_SONAME),$(1),$(2))
+		$(call install_gcc_lib,libmpx,$(MPX_SONAME),$(1),$(2))
+	    )
+	)
+	$(if $(filter yes, $(with_qmath)),
+		$(call install_gcc_lib,libquadmath,$(QMATH_SONAME),$(1),$(2))
+	)
+endef
+
+# do_gcc_devels(flavour)
+define do_gcc_devels
+	$(call __do_gcc_devels,$(1),$(p_l$(1)gccdev),$(gcc_lib_dir$(1)),$(d)/$(usr_lib$(1)))
+endef
+
+
+define __do_libgcc
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_l) $(d_d)
+
+	dh_installdirs -p$(p_l) \
+		$(docdir)/$(p_l) \
+		$(libgcc_dir$(2))
+
+	$(if $(filter yes,$(with_shared_libgcc)),
+		mv $(d)/$(usr_lib$(2))/libgcc_s.so.$(GCC_SONAME) \
+			$(d_l)/$(libgcc_dir$(2))/.
+	)
+
+	debian/dh_doclink -p$(p_l) $(if $(3),$(3),$(p_lbase))
+	debian/dh_doclink -p$(p_d) $(if $(3),$(3),$(p_lbase))
+	debian/dh_rmemptydirs -p$(p_l)
+	debian/dh_rmemptydirs -p$(p_d)
+	dh_strip -p$(p_l) --dbg-package=$(p_d)
+
+	# see Debian #533843 for the __aeabi symbol handling; this construct is
+	# just to include the symbols for dpkg versions older than 1.15.3 which
+	# didn't allow bypassing the symbol blacklist
+	$(if $(filter yes,$(with_shared_libgcc)),
+		$(if $(findstring gcc1,$(p_l)), \
+		ln -sf libgcc.symbols debian/$(p_l).symbols \
+		)
+		$(cross_makeshlibs) dh_makeshlibs -p$(p_l) -p$(p_d) \
+			-- -v$(DEB_LIBGCC_VERSION)
+		$(call cross_mangle_shlibs,$(p_l))
+		$(if $(filter arm-linux-gnueabi%,$(DEB_TARGET_GNU_TYPE)),
+			if head -1 $(d_l)/DEBIAN/symbols 2>/dev/null | grep -q '^lib'; then \
+			  grep -q '^ __aeabi' $(d_l)/DEBIAN/symbols \
+			    || cat debian/libgcc.symbols.aeabi \
+				>> $(d_l)/DEBIAN/symbols; \
+			fi
+		)
+	)
+
+	$(if $(DEB_STAGE),,
+	    $(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l) \
+		$(call shlibdirs_to_search,,$(2))
+	)
+	$(call cross_mangle_substvars,$(p_l))
+
+	$(if $(2),,	# only for native
+		mkdir -p $(d_l)/usr/share/lintian/overrides
+		echo '$(p_l): package-name-doesnt-match-sonames' \
+			> $(d_l)/usr/share/lintian/overrides/$(p_l)
+	)
+
+	echo $(p_l) $(p_d) >> debian/$(lib_binaries).epoch
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+endef
+
+do_libgcc = $(call __do_libgcc,lib$(1)gcc$(GCC_SONAME),$(1),$(2))
+# ----------------------------------------------------------------------
+
+$(binary_stamp)-libgcc: $(install_dependencies)
+ifeq ($(with_standalone_gcj),yes)
+	$(call do_libgcc,,$(p_jbase))
+else
+	$(call do_libgcc,,)
+endif
+
+$(binary_stamp)-lib64gcc: $(install_dependencies)
+	$(call do_libgcc,64,)
+
+$(binary_stamp)-lib32gcc: $(install_dependencies)
+	$(call do_libgcc,32,)
+
+$(binary_stamp)-libn32gcc: $(install_dependencies)
+	$(call do_libgcc,n32,)
+
+$(binary_stamp)-libx32gcc: $(install_dependencies)
+	$(call do_libgcc,x32,)
+
+$(binary_stamp)-libhfgcc: $(install_dependencies)
+	$(call do_libgcc,hf)
+
+$(binary_stamp)-libsfgcc: $(install_dependencies)
+	$(call do_libgcc,sf)
+
+$(binary_stamp)-libgcc-dev: $(install_dependencies)
+	$(call do_gcc_devels,)
+
+$(binary_stamp)-lib64gcc-dev: $(install_dependencies)
+	$(call do_gcc_devels,64)
+
+$(binary_stamp)-lib32gcc-dev: $(install_dependencies)
+	$(call do_gcc_devels,32)
+
+$(binary_stamp)-libn32gcc-dev: $(install_dependencies)
+	$(call do_gcc_devels,n32)
+
+$(binary_stamp)-libx32gcc-dev: $(install_dependencies)
+	$(call do_gcc_devels,x32)
+
+$(binary_stamp)-libhfgcc-dev: $(install_dependencies)
+	$(call do_gcc_devels,hf)
+
+$(binary_stamp)-libsfgcc-dev: $(install_dependencies)
+	$(call do_gcc_devels,sf)
+
diff --git a/debian/rules.d/binary-libgccjit.mk b/debian/rules.d/binary-libgccjit.mk
new file mode 100644
index 0000000..2719c4a
--- /dev/null
+++ b/debian/rules.d/binary-libgccjit.mk
@@ -0,0 +1,71 @@
+$(lib_binaries)  += libgccjit
+
+ifneq ($(DEB_CROSS),yes)
+  indep_binaries := $(indep_binaries) libgccjitdoc
+endif
+
+p_jitlib	= libgccjit$(GCCJIT_SONAME)
+p_jitdev	= libgccjit$(pkg_ver)-dev
+p_jitdbg	= libgccjit$(pkg_ver)-dbg
+p_jitdoc	= libgccjit$(pkg_ver)-doc
+
+d_jitlib	= debian/$(p_jitlib)
+d_jitdev	= debian/$(p_jitdev)
+d_jitdbg	= debian/$(p_jitdbg)
+d_jitdoc	= debian/$(p_jitdoc)
+
+$(binary_stamp)-libgccjit: $(install_jit_stamp)
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_jitlib) $(d_jitdev) $(d_jitdbg)
+	dh_installdirs -p$(p_jitlib) \
+		$(usr_lib)
+
+	dh_installdirs -p$(p_jitdev) \
+		$(usr_lib) \
+		$(gcc_lib_dir)/include
+
+	dh_installdirs -p$(p_jitdbg)
+
+	$(dh_compat2) dh_movefiles -p$(p_jitlib) \
+		$(usr_lib)/libgccjit.so.*
+	rm -f $(d)/$(usr_lib)/libgccjit.so
+
+	$(dh_compat2) dh_movefiles -p$(p_jitdev) \
+		$(gcc_lib_dir)/include/libgccjit*.h
+	dh_link -p$(p_jitdev) \
+		$(usr_lib)/libgccjit.so.$(GCCJIT_SONAME) $(gcc_lib_dir)/libgccjit.so
+
+	debian/dh_doclink -p$(p_jitlib) $(p_base)
+	debian/dh_doclink -p$(p_jitdev) $(p_base)
+	debian/dh_doclink -p$(p_jitdbg) $(p_base)
+
+	dh_strip -p$(p_jitlib) --dbg-package=$(p_jitdbg)
+	$(cross_makeshlibs) dh_makeshlibs -p$(p_jitlib)
+	$(call cross_mangle_shlibs,$(p_jitlib))
+	$(ignshld)$(cross_shlibdeps) dh_shlibdeps -p$(p_jitlib)
+	$(call cross_mangle_substvars,$(p_jitlib))
+	echo $(p_jitlib) $(p_jitdev) $(p_jitdbg) >> debian/arch_binaries
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+	touch $@
+
+$(binary_stamp)-libgccjitdoc: $(install_jit_stamp)
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_jitdoc)
+	dh_installdirs -p$(p_jitdoc) \
+		$(PF)/share/info
+
+	$(dh_compat2) dh_movefiles -p$(p_jitdoc) \
+		$(PF)/share/info/libgccjit*
+
+	debian/dh_doclink -p$(p_jitdoc) $(p_base)
+	echo $(p_jitdoc) >> debian/indep_binaries
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+	touch $@
diff --git a/debian/rules.d/binary-libgccmath.mk b/debian/rules.d/binary-libgccmath.mk
new file mode 100644
index 0000000..c68538e
--- /dev/null
+++ b/debian/rules.d/binary-libgccmath.mk
@@ -0,0 +1,121 @@
+ifeq ($(with_libgmath),yes)
+  arch_binaries  := $(arch_binaries) libgmath
+endif
+#ifeq ($(with_libgmathdev),yes)
+#  arch_binaries  := $(arch_binaries) libgmathdev
+#endif
+ifeq ($(with_lib64gmath),yes)
+  arch_binaries  := $(arch_binaries) lib64gmath
+endif
+ifeq ($(with_lib32gmath),yes)
+  arch_binaries	:= $(arch_binaries) lib32gmath
+endif
+
+p_gmath		= libgccmath$(GCCMATH_SONAME)
+p_l32gmath	= lib32gccmath$(GCCMATH_SONAME)
+p_l64gmath	= lib64gccmath$(GCCMATH_SONAME)
+p_gmathd	= libgccmath$(GCCMATH_SONAME)-dev
+
+d_gmath		= debian/$(p_gmath)
+d_l32gmath	= debian/$(p_l32gmath)
+d_l64gmath	= debian/$(p_l64gmath)
+d_gmathd	= debian/$(p_gmathd)
+
+dirs_gmath = \
+	$(docdir) \
+	$(PF)/$(libdir)
+files_gmath = \
+	$(PF)/$(libdir)/libgcc-math.so.*
+
+dirs_gmathd = \
+	$(docdir)/$(p_base)
+ifeq ($(with_libgmath),yes)
+files_gmathd = \
+	$(PF)/$(libdir)/libgcc-math.{a,so}
+endif
+
+ifeq ($(with_lib32gmath),yes)
+	dirs_gmathd  += $(lib32)
+	files_gmathd += $(lib32)/libgcc-math.{a,so}
+endif
+ifeq ($(with_lib64gmath),yes)
+	dirs_gmathd  += $(PF)/lib64
+	files_gmathd += $(PF)/lib64/libgcc-math.{a,so}
+endif
+
+$(binary_stamp)-libgmath: $(install_stamp)
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+	rm -rf $(d_gmath)
+	dh_installdirs -p$(p_gmath) $(dirs_gmath)
+	$(dh_compat2) dh_movefiles -p$(p_gmath) $(files_gmath)
+	debian/dh_doclink -p$(p_gmath) $(p_base)
+	debian/dh_rmemptydirs -p$(p_gmath)
+	dh_strip -p$(p_gmath)
+	dh_makeshlibs -p$(p_gmath) -V '$(p_gmath) (>= $(DEB_GCCMATH_SOVERSION))'
+	dh_shlibdeps -p$(p_gmath)
+	echo $(p_gmath) >> debian/arch_binaries
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+
+# ----------------------------------------------------------------------
+$(binary_stamp)-libgmathdev: $(install_stamp)
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_gmathd)
+	dh_installdirs -p$(p_gmathd) $(dirs_gmathd)
+	$(dh_compat2) dh_movefiles -p$(p_gmathd) $(files_gmathd)
+	debian/dh_doclink -p$(p_gmathd) $(p_base)
+	cp -p $(srcdir)/libgcc-math/ChangeLog \
+		$(d_gmathd)/$(docdir)/$(p_base)/changelog.libgcc-math
+	debian/dh_rmemptydirs -p$(p_gmathd)
+	dh_strip -p$(p_gmathd)
+	dh_shlibdeps -p$(p_gmathd)
+	echo $(p_gmathd) >> debian/arch_binaries
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+
+# ----------------------------------------------------------------------
+$(binary_stamp)-lib64gmath: $(install_stamp)
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_l64gmath)
+	dh_installdirs -p$(p_l64gmath) \
+		$(PF)/lib64
+	$(dh_compat2) dh_movefiles -p$(p_l64gmath) \
+		$(PF)/lib64/libgcc-math.so.*
+
+	debian/dh_doclink -p$(p_l64gmath) $(p_base)
+
+	dh_strip -p$(p_l64gmath)
+	dh_makeshlibs -p$(p_l64gmath) -V '$(p_l64gmath) (>= $(DEB_GCCMATH_SOVERSION))'
+#	dh_shlibdeps -p$(p_l64gmath)
+	echo $(p_l64gmath) >> debian/arch_binaries
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+
+# ----------------------------------------------------------------------
+$(binary_stamp)-lib32gmath: $(install_stamp)
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_l32gmath)
+	dh_installdirs -p$(p_l32gmath) \
+		$(lib32)
+	$(dh_compat2) dh_movefiles -p$(p_l32gmath) \
+		$(lib32)/libgcc-math.so.*
+
+	debian/dh_doclink -p$(p_l32gmath) $(p_base)
+
+	dh_strip -p$(p_l32gmath)
+	dh_makeshlibs -p$(p_l32gmath) -V '$(p_l32gmath) (>= $(DEB_GCCMATH_SOVERSION))'
+	dh_shlibdeps -p$(p_l32gmath)
+	echo $(p_l32gmath) >> debian/arch_binaries
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
diff --git a/debian/rules.d/binary-libgomp.mk b/debian/rules.d/binary-libgomp.mk
new file mode 100644
index 0000000..f80ca89
--- /dev/null
+++ b/debian/rules.d/binary-libgomp.mk
@@ -0,0 +1,68 @@
+$(lib_binaries)  += libgomp
+ifeq ($(with_lib64gomp),yes)
+  $(lib_binaries)  += lib64gomp
+endif
+ifeq ($(with_lib32gomp),yes)
+  $(lib_binaries)	+= lib32gomp
+endif
+ifeq ($(with_libn32gomp),yes)
+  $(lib_binaries)	+= libn32gomp
+endif
+ifeq ($(with_libx32gomp),yes)
+  $(lib_binaries)	+= libx32gomp
+endif
+ifeq ($(with_libhfgomp),yes)
+  $(lib_binaries)	+= libhfgomp
+endif
+ifeq ($(with_libsfgomp),yes)
+  $(lib_binaries)	+= libsfgomp
+endif
+
+define __do_gomp
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_l) $(d_d)
+	dh_installdirs -p$(p_l) $(usr_lib$(2))
+	$(dh_compat2) dh_movefiles -p$(p_l) $(usr_lib$(2))/libgomp.so.*
+
+	debian/dh_doclink -p$(p_l) $(p_lbase)
+	debian/dh_doclink -p$(p_d) $(p_lbase)
+
+	dh_strip -p$(p_l) --dbg-package=$(p_d)
+	ln -sf libgomp.symbols debian/$(p_l).symbols
+	$(cross_makeshlibs) dh_makeshlibs -p$(p_l)
+	$(call cross_mangle_shlibs,$(p_l))
+	$(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l) \
+		$(call shlibdirs_to_search,$(subst gomp$(GOMP_SONAME),gcc$(GCC_SONAME),$(p_l)),$(2))
+	$(call cross_mangle_substvars,$(p_l))
+	echo $(p_l) $(p_d) >> debian/$(lib_binaries)
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+endef
+
+# ----------------------------------------------------------------------
+
+do_gomp = $(call __do_gomp,lib$(1)gomp$(GOMP_SONAME),$(1))
+
+$(binary_stamp)-libgomp: $(install_stamp)
+	$(call do_gomp,)
+
+$(binary_stamp)-lib64gomp: $(install_stamp)
+	$(call do_gomp,64)
+
+$(binary_stamp)-lib32gomp: $(install_stamp)
+	$(call do_gomp,32)
+
+$(binary_stamp)-libn32gomp: $(install_stamp)
+	$(call do_gomp,n32)
+
+$(binary_stamp)-libx32gomp: $(install_stamp)
+	$(call do_gomp,x32)
+
+$(binary_stamp)-libhfgomp: $(install_dependencies)
+	$(call do_gomp,hf)
+
+$(binary_stamp)-libsfgomp: $(install_dependencies)
+	$(call do_gomp,sf)
diff --git a/debian/rules.d/binary-libitm.mk b/debian/rules.d/binary-libitm.mk
new file mode 100644
index 0000000..aa83e06
--- /dev/null
+++ b/debian/rules.d/binary-libitm.mk
@@ -0,0 +1,68 @@
+$(lib_binaries)  += libitm
+ifeq ($(with_lib64itm),yes)
+  $(lib_binaries)  += lib64itm
+endif
+ifeq ($(with_lib32itm),yes)
+  $(lib_binaries)	+= lib32itm
+endif
+ifeq ($(with_libn32itm),yes)
+  $(lib_binaries)	+= libn32itm
+endif
+ifeq ($(with_libx32itm),yes)
+  $(lib_binaries)	+= libx32itm
+endif
+ifeq ($(with_libhfitm),yes)
+  $(lib_binaries)	+= libhfitm
+endif
+ifeq ($(with_libsfitm),yes)
+  $(lib_binaries)	+= libsfitm
+endif
+
+define __do_itm
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_l) $(d_d)
+	dh_installdirs -p$(p_l) $(usr_lib$(2))
+	$(dh_compat2) dh_movefiles -p$(p_l) $(usr_lib$(2))/libitm.so.*
+
+	debian/dh_doclink -p$(p_l) $(p_lbase)
+	debian/dh_doclink -p$(p_d) $(p_lbase)
+
+	dh_strip -p$(p_l) --dbg-package=$(p_d)
+	ln -sf libitm.symbols debian/$(p_l).symbols
+	$(cross_makeshlibs) dh_makeshlibs -p$(p_l)
+	$(call cross_mangle_shlibs,$(p_l))
+	$(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l) \
+		$(call shlibdirs_to_search,,$(2))
+	$(call cross_mangle_substvars,$(p_l))
+	echo $(p_l) $(p_d) >> debian/$(lib_binaries)
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+endef
+
+# ----------------------------------------------------------------------
+
+do_itm = $(call __do_itm,lib$(1)itm$(ITM_SONAME),$(1))
+
+$(binary_stamp)-libitm: $(install_stamp)
+	$(call do_itm,)
+
+$(binary_stamp)-lib64itm: $(install_stamp)
+	$(call do_itm,64)
+
+$(binary_stamp)-lib32itm: $(install_stamp)
+	$(call do_itm,32)
+
+$(binary_stamp)-libn32itm: $(install_stamp)
+	$(call do_itm,n32)
+
+$(binary_stamp)-libx32itm: $(install_stamp)
+	$(call do_itm,x32)
+
+$(binary_stamp)-libhfitm: $(install_dependencies)
+	$(call do_itm,hf)
+
+$(binary_stamp)-libsfitm: $(install_dependencies)
+	$(call do_itm,sf)
diff --git a/debian/rules.d/binary-liblsan.mk b/debian/rules.d/binary-liblsan.mk
new file mode 100644
index 0000000..e7ca0bd
--- /dev/null
+++ b/debian/rules.d/binary-liblsan.mk
@@ -0,0 +1,75 @@
+$(lib_binaries)  += liblsan
+ifeq ($(with_lib64lsan),yes)
+  $(lib_binaries)  += lib64lsan
+endif
+ifeq ($(with_lib32lsan),yes)
+  $(lib_binaries)	+= lib32lsan
+endif
+ifeq ($(with_libn32lsan),yes)
+  $(lib_binaries)	+= libn32lsan
+endif
+ifeq ($(with_libx32lsan),yes)
+  $(lib_binaries)	+= libx32lsan
+endif
+ifeq ($(with_libhflsan),yes)
+  $(lib_binaries)	+= libhflsan
+endif
+ifeq ($(with_libsflsan),yes)
+  $(lib_binaries)	+= libsflsan
+endif
+
+define __do_lsan
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_l) $(d_d)
+	dh_installdirs -p$(p_l) $(usr_lib$(2))
+	$(dh_compat2) dh_movefiles -p$(p_l) $(usr_lib$(2))/liblsan.so.*
+
+	debian/dh_doclink -p$(p_l) $(p_lbase)
+	debian/dh_doclink -p$(p_d) $(p_lbase)
+
+	if [ -f debian/$(p_l).overrides ]; then \
+		mkdir -p debian/$(p_l)/usr/share/lintian/overrides; \
+		cp debian/$(p_l).overrides debian/$(p_l)/usr/share/lintian/overrides/$(p_l); \
+	fi
+
+	dh_strip -p$(p_l) --dbg-package=$(p_d)
+	$(cross_makeshlibs) dh_makeshlibs -p$(p_l)
+	$(call cross_mangle_shlibs,$(p_l))
+	$(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l) \
+		$(call shlibdirs_to_search, \
+			$(subst lsan$(LSAN_SONAME),gcc$(GCC_SONAME),$(p_l)) \
+			$(subst lsan$(LSAN_SONAME),stdc++$(CXX_SONAME),$(p_l)) \
+		,$(2))
+	$(call cross_mangle_substvars,$(p_l))
+	echo $(p_l) $(p_d) >> debian/$(lib_binaries)
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+endef
+
+# ----------------------------------------------------------------------
+
+do_lsan = $(call __do_lsan,lib$(1)lsan$(LSAN_SONAME),$(1))
+
+$(binary_stamp)-liblsan: $(install_stamp)
+	$(call do_lsan,)
+
+$(binary_stamp)-lib64lsan: $(install_stamp)
+	$(call do_lsan,64)
+
+$(binary_stamp)-lib32lsan: $(install_stamp)
+	$(call do_lsan,32)
+
+$(binary_stamp)-libn32lsan: $(install_stamp)
+	$(call do_lsan,n32)
+
+$(binary_stamp)-libx32lsan: $(install_stamp)
+	$(call do_lsan,x32)
+
+$(binary_stamp)-libhflsan: $(install_dependencies)
+	$(call do_lsan,hf)
+
+$(binary_stamp)-libsflsan: $(install_dependencies)
+	$(call do_lsan,sf)
diff --git a/debian/rules.d/binary-libmpx.mk b/debian/rules.d/binary-libmpx.mk
new file mode 100644
index 0000000..636579f
--- /dev/null
+++ b/debian/rules.d/binary-libmpx.mk
@@ -0,0 +1,74 @@
+$(lib_binaries)  += libmpx
+ifeq ($(with_lib64mpx),yes)
+  $(lib_binaries)  += lib64mpx
+endif
+ifeq ($(with_lib32mpx),yes)
+  $(lib_binaries)	+= lib32mpx
+endif
+ifeq ($(with_libn32mpx),yes)
+  $(lib_binaries)	+= libn32mpx
+endif
+ifeq ($(with_libx32mpx),yes)
+  $(lib_binaries)	+= libx32mpx
+endif
+ifeq ($(with_libhfmpx),yes)
+  $(lib_binaries)	+= libhfmpx
+endif
+ifeq ($(with_libsfmpx),yes)
+  $(lib_binaries)	+= libsfmpx
+endif
+
+define __do_mpx
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_l) $(d_d)
+	dh_installdirs -p$(p_l) $(usr_lib$(2))
+	$(dh_compat2) dh_movefiles -p$(p_l) \
+		$(usr_lib$(2))/libmpx.so.* \
+		$(usr_lib$(2))/libmpxwrappers.so.*
+
+	debian/dh_doclink -p$(p_l) $(p_lbase)
+	debian/dh_doclink -p$(p_d) $(p_lbase)
+
+	if [ -f debian/$(p_l).overrides ]; then \
+		mkdir -p debian/$(p_l)/usr/share/lintian/overrides; \
+		cp debian/$(p_l).overrides debian/$(p_l)/usr/share/lintian/overrides/$(p_l); \
+	fi
+
+	dh_strip -p$(p_l) --dbg-package=$(p_d)
+	ln -sf libmpx.symbols debian/$(p_l).symbols
+	$(cross_makeshlibs) dh_makeshlibs -p$(p_l)
+	$(call cross_mangle_shlibs,$(p_l))
+	$(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l)
+	$(call cross_mangle_substvars,$(p_l))
+	echo $(p_l) $(p_d) >> debian/$(lib_binaries)
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+endef
+
+# ----------------------------------------------------------------------
+
+do_mpx = $(call __do_mpx,lib$(1)mpx$(MPX_SONAME),$(1))
+
+$(binary_stamp)-libmpx: $(install_stamp)
+	$(call do_mpx,)
+
+$(binary_stamp)-lib64mpx: $(install_stamp)
+	$(call do_mpx,64)
+
+$(binary_stamp)-lib32mpx: $(install_stamp)
+	$(call do_mpx,32)
+
+$(binary_stamp)-libn32mpx: $(install_stamp)
+	$(call do_mpx,n32)
+
+$(binary_stamp)-libx32mpx: $(install_stamp)
+	$(call do_mpx,x32)
+
+$(binary_stamp)-libhfmpx: $(install_dependencies)
+	$(call do_mpx,hf)
+
+$(binary_stamp)-libsfmpx: $(install_dependencies)
+	$(call do_mpx,sf)
diff --git a/debian/rules.d/binary-libobjc.mk b/debian/rules.d/binary-libobjc.mk
new file mode 100644
index 0000000..b8c139f
--- /dev/null
+++ b/debian/rules.d/binary-libobjc.mk
@@ -0,0 +1,153 @@
+ifeq ($(with_libobjc),yes)
+  $(lib_binaries) += libobjc
+endif
+ifeq ($(with_objcdev),yes)
+  $(lib_binaries) += libobjc-dev
+endif
+ifeq ($(with_lib64objc),yes)
+  $(lib_binaries)	+= lib64objc
+endif
+ifeq ($(with_lib64objcdev),yes)
+  $(lib_binaries)	+= lib64objc-dev
+endif
+ifeq ($(with_lib32objc),yes)
+  $(lib_binaries)	+= lib32objc
+endif
+ifeq ($(with_lib32objcdev),yes)
+  $(lib_binaries)	+= lib32objc-dev
+endif
+ifeq ($(with_libn32objc),yes)
+  $(lib_binaries)	+= libn32objc
+endif
+ifeq ($(with_libn32objcdev),yes)
+  $(lib_binaries)	+= libn32objc-dev
+endif
+ifeq ($(with_libx32objc),yes)
+  $(lib_binaries)	+= libx32objc
+endif
+ifeq ($(with_libx32objcdev),yes)
+  $(lib_binaries)	+= libx32objc-dev
+endif
+ifeq ($(with_libhfobjc),yes)
+  $(lib_binaries)	+= libhfobjc
+endif
+ifeq ($(with_libhfobjcdev),yes)
+  $(lib_binaries)	+= libhfobjc-dev
+endif
+ifeq ($(with_libsfobjc),yes)
+  $(lib_binaries)	+= libsfobjc
+endif
+ifeq ($(with_libsfobjcdev),yes)
+  $(lib_binaries)	+= libsfobjc-dev
+endif
+
+files_lobjcdev= \
+	$(gcc_lib_dir)/include/objc
+
+files_lobjc = \
+	$(usr_lib$(2))/libobjc.so.*
+ifeq ($(with_objc_gc),yes)
+  files_lobjc += \
+	$(usr_lib$(2))/libobjc_gc.so.*
+endif
+
+define __do_libobjc
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_l) $(d_d)
+	dh_installdirs -p$(p_l) \
+		$(usr_lib$(2))
+	$(dh_compat2) dh_movefiles -p$(p_l) \
+		$(files_lobjc)
+
+	debian/dh_doclink -p$(p_l) $(p_lbase)
+	debian/dh_doclink -p$(p_d) $(p_lbase)
+
+	dh_strip -p$(p_l) --dbg-package=$(p_d)
+	$(cross_makeshlibs) dh_makeshlibs -p$(p_l) -Xlibobjc_gc.so
+	$(call cross_mangle_shlibs,$(p_l))
+	$(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l) \
+		$(call shlibdirs_to_search,$(subst objc$(OBJC_SONAME),gcc$(GCC_SONAME),$(p_l)),$(2))
+	$(call cross_mangle_substvars,$(p_l))
+	echo $(p_l) $(p_d) >> debian/$(lib_binaries)
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+endef
+
+
+define __do_libobjc_dev
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_l)
+	dh_installdirs -p$(p_l) \
+		$(gcc_lib_dir$(2))
+	$(dh_compat2) dh_movefiles -p$(p_l) \
+		$(files_lobjcdev)
+
+	$(call install_gcc_lib,libobjc,$(OBJC_SONAME),$(2),$(p_l))
+	$(if $(filter yes,$(with_objc_gc)),
+		dh_link -p$(p_l) \
+		  /$(usr_lib$(2))/libobjc_gc.so.$(OBJC_SONAME) \
+		  /$(gcc_lib_dir$(2))/libobjc_gc.so
+	)
+
+	debian/dh_doclink -p$(p_l) $(p_lbase)
+	echo $(p_l) >> debian/$(lib_binaries)
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+endef
+
+
+
+# ----------------------------------------------------------------------
+
+do_libobjc = $(call __do_libobjc,lib$(1)objc$(OBJC_SONAME),$(1))
+do_libobjc_dev = $(call __do_libobjc_dev,lib$(1)objc-$(BASE_VERSION)-dev,$(1))
+
+$(binary_stamp)-libobjc: $(install_stamp)
+	$(call do_libobjc,)
+
+$(binary_stamp)-lib64objc: $(install_stamp)
+	$(call do_libobjc,64)
+
+$(binary_stamp)-lib32objc: $(install_stamp)
+	$(call do_libobjc,32)
+
+$(binary_stamp)-libn32objc: $(install_stamp)
+	$(call do_libobjc,n32)
+
+$(binary_stamp)-libx32objc: $(install_stamp)
+	$(call do_libobjc,x32)
+
+$(binary_stamp)-libhfobjc: $(install_stamp)
+	$(call do_libobjc,hf)
+
+$(binary_stamp)-libsfobjc: $(install_stamp)
+	$(call do_libobjc,sf)
+
+
+$(binary_stamp)-libobjc-dev: $(install_stamp)
+	$(call do_libobjc_dev,)
+
+$(binary_stamp)-lib64objc-dev: $(install_stamp)
+	$(call do_libobjc_dev,64)
+
+$(binary_stamp)-lib32objc-dev: $(install_stamp)
+	$(call do_libobjc_dev,32)
+
+$(binary_stamp)-libx32objc-dev: $(install_stamp)
+	$(call do_libobjc_dev,x32)
+
+$(binary_stamp)-libn32objc-dev: $(install_stamp)
+	$(call do_libobjc_dev,n32)
+
+$(binary_stamp)-libhfobjc-dev: $(install_stamp)
+	$(call do_libobjc_dev,hf)
+
+$(binary_stamp)-libsfobjc-dev: $(install_stamp)
+	$(call do_libobjc_dev,sf)
+
diff --git a/debian/rules.d/binary-libquadmath.mk b/debian/rules.d/binary-libquadmath.mk
new file mode 100644
index 0000000..2ff1b44
--- /dev/null
+++ b/debian/rules.d/binary-libquadmath.mk
@@ -0,0 +1,68 @@
+$(lib_binaries)  += libqmath
+ifeq ($(with_lib64qmath),yes)
+  $(lib_binaries)  += lib64qmath
+endif
+ifeq ($(with_lib32qmath),yes)
+  $(lib_binaries)	+= lib32qmath
+endif
+ifeq ($(with_libn32qmath),yes)
+  $(lib_binaries)	+= libn32qmath
+endif
+ifeq ($(with_libx32qmath),yes)
+  $(lib_binaries)	+= libx32qmath
+endif
+ifeq ($(with_libhfqmath),yes)
+  $(lib_binaries)	+= libhfqmath
+endif
+ifeq ($(with_libsfqmath),yes)
+  $(lib_binaries)	+= libsfqmath
+endif
+
+define __do_qmath
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_l) $(d_d)
+	dh_installdirs -p$(p_l) $(usr_lib$(2))
+	$(dh_compat2) dh_movefiles -p$(p_l) $(usr_lib$(2))/libquadmath.so.*
+
+	debian/dh_doclink -p$(p_l) $(p_lbase)
+	debian/dh_doclink -p$(p_d) $(p_lbase)
+
+	dh_strip -p$(p_l) --dbg-package=$(p_d)
+	ln -sf libquadmath.symbols debian/$(p_l).symbols
+	$(cross_makeshlibs) dh_makeshlibs -p$(p_l)
+	$(call cross_mangle_shlibs,$(p_l))
+	$(cross_shlibdeps) dh_shlibdeps -p$(p_l) \
+		$(call shlibdirs_to_search,,$(2))
+	$(call cross_mangle_substvars,$(p_l))
+	echo $(p_l) $(p_d) >> debian/$(lib_binaries)
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+endef
+
+# ----------------------------------------------------------------------
+
+do_qmath = $(call __do_qmath,lib$(1)quadmath$(QMATH_SONAME),$(1))
+
+$(binary_stamp)-libqmath: $(install_stamp)
+	$(call do_qmath,)
+
+$(binary_stamp)-lib64qmath: $(install_stamp)
+	$(call do_qmath,64)
+
+$(binary_stamp)-lib32qmath: $(install_stamp)
+	$(call do_qmath,32)
+
+$(binary_stamp)-libn32qmath: $(install_stamp)
+	$(call do_qmath,n32)
+
+$(binary_stamp)-libx32qmath: $(install_stamp)
+	$(call do_qmath,x32)
+
+$(binary_stamp)-libhfqmath: $(install_stamp)
+	$(call do_qmath,hf)
+
+$(binary_stamp)-libsfqmath: $(install_stamp)
+	$(call do_qmath,sf)
diff --git a/debian/rules.d/binary-libssp.mk b/debian/rules.d/binary-libssp.mk
new file mode 100644
index 0000000..5ec169f
--- /dev/null
+++ b/debian/rules.d/binary-libssp.mk
@@ -0,0 +1,155 @@
+arch_binaries  := $(arch_binaries) libssp
+ifeq ($(with_lib64ssp),yes)
+  arch_binaries  := $(arch_binaries) lib64ssp
+endif
+ifeq ($(with_lib32ssp),yes)
+  arch_binaries	:= $(arch_binaries) lib32ssp
+endif
+ifeq ($(with_libn32ssp),yes)
+  arch_binaries	:= $(arch_binaries) libn32ssp
+endif
+ifeq ($(with_libx32ssp),yes)
+  arch_binaries := $(arch_binaries) libx32ssp
+endif
+
+p_ssp	= libssp$(SSP_SONAME)
+p_ssp32	= lib32ssp$(SSP_SONAME)
+p_ssp64	= lib64ssp$(SSP_SONAME)
+p_sspx32 = libx32ssp$(SSP_SONAME)
+p_sspd	= libssp$(SSP_SONAME)-dev
+
+d_ssp	= debian/$(p_ssp)
+d_ssp32	= debian/$(p_ssp32)
+d_ssp64	= debian/$(p_ssp64)
+d_sspx32 = debian/$(p_sspx32)
+d_sspd	= debian/$(p_sspd)
+
+dirs_ssp = \
+	$(docdir)/$(p_base) \
+	$(PF)/$(libdir)
+files_ssp = \
+	$(PF)/$(libdir)/libssp.so.*
+
+dirs_sspd = \
+	$(docdir) \
+	$(PF)/include \
+	$(PF)/$(libdir)
+files_sspd = \
+	$(gcc_lib_dir)/include/ssp \
+	$(PF)/$(libdir)/libssp.{a,so} \
+	$(PF)/$(libdir)/libssp_nonshared.a
+
+ifeq ($(with_lib32ssp),yes)
+	dirs_sspd  += $(lib32)
+	files_sspd += $(lib32)/libssp.{a,so}
+	files_sspd += $(lib32)/libssp_nonshared.a
+endif
+ifeq ($(with_lib64ssp),yes)
+	dirs_sspd  += $(PF)/lib64
+	files_sspd += $(PF)/lib64/libssp.{a,so}
+	files_sspd += $(PF)/lib64/libssp_nonshared.a
+endif
+
+$(binary_stamp)-libssp: $(install_stamp)
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_ssp)
+	dh_installdirs -p$(p_ssp)
+
+	$(dh_compat2) dh_movefiles -p$(p_ssp) $(files_ssp)
+	debian/dh_doclink -p$(p_ssp) $(p_lbase)
+
+	debian/dh_rmemptydirs -p$(p_ssp)
+
+	dh_strip -p$(p_ssp)
+	dh_makeshlibs -p$(p_ssp) -V '$(p_ssp) (>= $(DEB_SOVERSION))'
+	dh_shlibdeps -p$(p_ssp)
+	echo $(p_ssp) >> debian/arch_binaries
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+
+# ----------------------------------------------------------------------
+$(binary_stamp)-lib64ssp: $(install_stamp)
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_ssp64)
+	dh_installdirs -p$(p_ssp64) \
+		$(PF)/lib64
+	$(dh_compat2) dh_movefiles -p$(p_ssp64) \
+		$(PF)/lib64/libssp.so.*
+
+	debian/dh_doclink -p$(p_ssp64) $(p_lbase)
+
+	dh_strip -p$(p_ssp64)
+	dh_makeshlibs -p$(p_ssp64) -V '$(p_ssp64) (>= $(DEB_SOVERSION))'
+#	dh_shlibdeps -p$(p_ssp64)
+	echo $(p_ssp64) >> debian/arch_binaries
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+
+# ----------------------------------------------------------------------
+$(binary_stamp)-lib32ssp: $(install_stamp)
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_ssp32)
+	dh_installdirs -p$(p_ssp32) \
+		$(lib32)
+	$(dh_compat2) dh_movefiles -p$(p_ssp32) \
+		$(lib32)/libssp.so.*
+
+	debian/dh_doclink -p$(p_ssp32) $(p_lbase)
+
+	dh_strip -p$(p_ssp32)
+	dh_makeshlibs -p$(p_ssp32) -V '$(p_ssp32) (>= $(DEB_SOVERSION))'
+#	dh_shlibdeps -p$(p_ssp32)
+	echo $(p_ssp32) >> debian/arch_binaries
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+
+# ----------------------------------------------------------------------
+$(binary_stamp)-libn32ssp: $(install_stamp)
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_sspn32)
+	dh_installdirs -p$(p_sspn32) \
+		$(PF)/$(libn32)
+	$(dh_compat2) dh_movefiles -p$(p_sspn32) \
+		$(PF)/$(libn32)/libssp.so.*
+
+	debian/dh_doclink -p$(p_sspn32) $(p_lbase)
+
+	dh_strip -p$(p_sspn32)
+	dh_makeshlibs -p$(p_sspn32) -V '$(p_sspn32) (>= $(DEB_SOVERSION))'
+#	dh_shlibdeps -p$(p_sspn32)
+	echo $(p_sspn32) >> debian/arch_binaries
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+
+# ----------------------------------------------------------------------
+$(binary_stamp)-libx32ssp: $(install_stamp)
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_sspx32)
+	dh_installdirs -p$(p_sspx32) \
+		$(PF)/$(libx32)
+	$(dh_compat2) dh_movefiles -p$(p_sspx32) \
+		$(PF)/$(libx32)/libssp.so.*
+
+	debian/dh_doclink -p$(p_sspx32) $(p_lbase)
+
+	dh_strip -p$(p_sspx32)
+	dh_makeshlibs -p$(p_sspx32) -V '$(p_sspx32) (>= $(DEB_SOVERSION))'
+#	dh_shlibdeps -p$(p_sspx32)
+	echo $(p_sspx32) >> debian/arch_binaries
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
diff --git a/debian/rules.d/binary-libstdcxx.mk b/debian/rules.d/binary-libstdcxx.mk
new file mode 100644
index 0000000..f744010
--- /dev/null
+++ b/debian/rules.d/binary-libstdcxx.mk
@@ -0,0 +1,524 @@
+ifeq ($(with_libcxx),yes)
+  $(lib_binaries)  += libstdcxx
+endif
+ifeq ($(with_lib64cxx),yes)
+  $(lib_binaries)  += lib64stdcxx
+endif
+ifeq ($(with_lib32cxx),yes)
+  $(lib_binaries)	+= lib32stdcxx
+endif
+ifeq ($(with_libn32cxx),yes)
+  $(lib_binaries)	+= libn32stdcxx
+endif
+ifeq ($(with_libx32cxx),yes)
+  $(lib_binaries)	+= libx32stdcxx
+endif
+ifeq ($(with_libhfcxx),yes)
+  $(lib_binaries)	+= libhfstdcxx
+endif
+ifeq ($(with_libsfcxx),yes)
+  $(lib_binaries)	+= libsfstdcxx
+endif
+
+ifneq ($(DEB_STAGE),rtlibs)
+  ifeq ($(with_lib64cxxdev),yes)
+    $(lib_binaries)	+= lib64stdcxx-dev
+  endif
+  ifeq ($(with_lib64cxxdbg),yes)
+    $(lib_binaries)	+= lib64stdcxxdbg
+  endif
+  ifeq ($(with_lib32cxxdev),yes)
+    $(lib_binaries)	+= lib32stdcxx-dev
+  endif
+  ifeq ($(with_lib32cxxdbg),yes)
+    $(lib_binaries)	+= lib32stdcxxdbg
+  endif
+  ifeq ($(with_libn32cxxdev),yes)
+    $(lib_binaries)	+= libn32stdcxx-dev
+  endif
+  ifeq ($(with_libn32cxxdbg),yes)
+    $(lib_binaries)	+= libn32stdcxxdbg
+  endif
+  ifeq ($(with_libx32cxxdev),yes)
+    $(lib_binaries)	+= libx32stdcxx-dev
+  endif
+  ifeq ($(with_libx32cxxdbg),yes)
+    $(lib_binaries)	+= libx32stdcxxdbg
+  endif
+  ifeq ($(with_libhfcxxdev),yes)
+    $(lib_binaries)	+= libhfstdcxx-dev
+  endif
+  ifeq ($(with_libhfcxxdbg),yes)
+    $(lib_binaries)	+= libhfstdcxxdbg
+  endif
+  ifeq ($(with_libsfcxxdev),yes)
+    $(lib_binaries)	+= libsfstdcxx-dev
+  endif
+  ifeq ($(with_libsfcxxdbg),yes)
+    $(lib_binaries)	+= libsfstdcxxdbg
+  endif
+
+  ifeq ($(with_cxxdev),yes)
+    $(lib_binaries)  += libstdcxx-dev
+    ifneq ($(DEB_CROSS),yes)
+      indep_binaries := $(indep_binaries) libstdcxx-doc
+    endif
+  endif
+endif
+
+libstdc_ext = -$(BASE_VERSION)
+
+p_lib	= libstdc++$(CXX_SONAME)$(cross_lib_arch)
+p_lib64	= lib64stdc++$(CXX_SONAME)$(cross_lib_arch)
+p_lib32	= lib32stdc++$(CXX_SONAME)$(cross_lib_arch)
+p_libn32= libn32stdc++$(CXX_SONAME)$(cross_lib_arch)
+p_libx32= libx32stdc++$(CXX_SONAME)$(cross_lib_arch)
+p_libhf	= libhfstdc++$(CXX_SONAME)$(cross_lib_arch)
+p_libsf	= libsfstdc++$(CXX_SONAME)$(cross_lib_arch)
+p_dev	= libstdc++$(libstdc_ext)-dev$(cross_lib_arch)
+p_pic	= libstdc++$(libstdc_ext)-pic$(cross_lib_arch)
+p_dbg	= libstdc++$(CXX_SONAME)$(libstdc_ext)-dbg$(cross_lib_arch)
+p_dbg64	= lib64stdc++$(CXX_SONAME)$(libstdc_ext)-dbg$(cross_lib_arch)
+p_dbg32	= lib32stdc++$(CXX_SONAME)$(libstdc_ext)-dbg$(cross_lib_arch)
+p_dbgn32= libn32stdc++$(CXX_SONAME)$(libstdc_ext)-dbg$(cross_lib_arch)
+p_dbgx32= libx32stdc++$(CXX_SONAME)$(libstdc_ext)-dbg$(cross_lib_arch)
+p_dbghf	= libhfstdc++$(CXX_SONAME)$(libstdc_ext)-dbg$(cross_lib_arch)
+p_dbgsf	= libsfstdc++$(CXX_SONAME)$(libstdc_ext)-dbg$(cross_lib_arch)
+p_libd	= libstdc++$(libstdc_ext)-doc
+
+d_lib	= debian/$(p_lib)
+d_lib64	= debian/$(p_lib64)
+d_lib32	= debian/$(p_lib32)
+d_libn32= debian/$(p_libn32)
+d_libx32= debian/$(p_libx32)
+d_libhf	= debian/$(p_libhf)
+d_libsf	= debian/$(p_libsf)
+d_dev	= debian/$(p_dev)
+d_pic	= debian/$(p_pic)
+d_dbg	= debian/$(p_dbg)
+d_dbg64	= debian/$(p_dbg64)
+d_dbg32	= debian/$(p_dbg32)
+d_dbghf	= debian/$(p_dbghf)
+d_dbgsf	= debian/$(p_dbgsf)
+d_libd	= debian/$(p_libd)
+
+dirs_dev = \
+	$(docdir)/$(p_base)/C++ \
+	$(usr_lib) \
+	$(gcc_lib_dir)/include \
+	$(PFL)/include/c++
+
+files_dev = \
+	$(PFL)/include/c++/$(BASE_VERSION) \
+	$(gcc_lib_dir)/libstdc++.{a,so} \
+	$(gcc_lib_dir)/libsupc++.a \
+	$(gcc_lib_dir)/libstdc++fs.a
+
+ifeq ($(with_multiarch_cxxheaders),yes)
+  dirs_dev += \
+	$(PF)/include/$(DEB_TARGET_MULTIARCH)/c++/$(BASE_VERSION)
+  files_dev += \
+	$(PF)/include/$(DEB_TARGET_MULTIARCH)/c++/$(BASE_VERSION)/{bits,ext}
+endif
+
+dirs_dbg = \
+	$(docdir) \
+	$(PF)/lib/debug/$(usr_lib) \
+	$(usr_lib)/debug \
+	$(PF)/share/gdb/auto-load/$(usr_lib)/debug \
+	$(gcc_lib_dir)
+files_dbg = \
+	$(usr_lib)/debug/libstdc++.{a,so*} \
+	$(usr_lib)/debug/libstdc++fs.a
+
+dirs_pic = \
+	$(docdir) \
+	$(gcc_lib_dir)
+files_pic = \
+	$(gcc_lib_dir)/libstdc++_pic.a
+
+# ----------------------------------------------------------------------
+
+gxx_baseline_dir = $(shell \
+			sed -n '/^baseline_dir *=/s,.*= *\(.*\)$$,\1,p' \
+			    $(buildlibdir)/libstdc++-v3/testsuite/Makefile)
+gxx_baseline_file = $(gxx_baseline_dir)/baseline_symbols.txt
+
+debian/README.libstdc++-baseline:
+	cat debian/README.libstdc++-baseline.in \
+		> debian/README.libstdc++-baseline
+
+	baseline_name=`basename $(gxx_baseline_dir)`; \
+	baseline_parentdir=`dirname $(gxx_baseline_dir)`; \
+	compat_baseline_name=""; \
+	if [ -f "$(gxx_baseline_file)" ]; then \
+	  ( \
+	    echo "A baseline file for $$baseline_name was found."; \
+	    echo "Running the check-abi script ..."; \
+	    echo ""; \
+	    $(MAKE) -C $(buildlibdir)/libstdc++-v3/testsuite \
+		check-abi; \
+	  ) >> debian/README.libstdc++-baseline; \
+	else \
+	  ( \
+	    echo "No baseline file found for $$baseline_name."; \
+	    echo "Generating a new baseline file ..."; \
+	    echo ""; \
+	  ) >> debian/README.libstdc++-baseline; \
+	  mkdir -p $(gxx_baseline_dir); \
+	  $(MAKE) -C $(buildlibdir)/libstdc++-v3/testsuite new-abi-baseline; \
+	  if [ -f $(gxx_baseline_file) ]; then \
+	    cat $(gxx_baseline_file); \
+	  else \
+	    cat $$(find $(buildlibdir)/libstdc++-v3 $(srcdir)/libstdc++-v3 -name '.new') || true; \
+	  fi >> debian/README.libstdc++-baseline; \
+	fi
+
+# ----------------------------------------------------------------------
+# FIXME: see #792204, libstdc++ symbols on sparc64, for now ignore errors
+# for the 32bit multilib build
+
+define __do_libstdcxx
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_l)
+
+	dh_installdirs -p$(p_l) \
+		$(docdir) \
+		$(usr_lib$(2)) \
+		$(PF)/share/gdb/auto-load/$(usr_lib$(2))
+
+	$(if $(DEB_CROSS),,$(if $(2),,
+	dh_installdirs -p$(p_l) \
+		$(PF)/share/gcc-$(BASE_VERSION)/python
+	$(dh_compat2) dh_movefiles -p$(p_l) \
+		$(PF)/share/gcc-$(BASE_VERSION)/python/libstdcxx
+	))
+	cp -p $(d)/$(usr_lib$(2))/libstdc++.so.*.py \
+		$(d_l)/$(PF)/share/gdb/auto-load/$(usr_lib$(2))/.
+	sed -i -e "/^libdir *=/s,=.*,= '/$(usr_lib$(2))'," \
+		$(d_l)/$(PF)/share/gdb/auto-load/$(usr_lib$(2))/libstdc++.so.*.py
+
+	cp -a $(d)/$(usr_lib$(2))/libstdc++.so.*[0-9] \
+		$(d_l)/$(usr_lib$(2))/.
+
+	debian/dh_doclink -p$(p_l) $(p_lbase)
+	debian/dh_rmemptydirs -p$(p_l)
+
+	dh_strip -p$(p_l) $(if $(filter rtlibs,$(DEB_STAGE)),,--dbg-package=$(1)-$(BASE_VERSION)-dbg$(cross_lib_arch))
+
+	$(if $(filter $(DEB_TARGET_ARCH), armel hppa sparc64), \
+	  -$(cross_makeshlibs) dh_makeshlibs -p$(p_l) \
+	  @echo "FIXME: libstdc++ not feature complete (https://gcc.gnu.org/ml/gcc/2014-07/msg00000.html)", \
+	  $(cross_makeshlibs) dh_makeshlibs -p$(p_l) \
+	)
+
+	$(call cross_mangle_shlibs,$(p_l))
+	$(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l) \
+		$(call shlibdirs_to_search,$(subst stdc++$(CXX_SONAME),gcc$(GCC_SONAME),$(p_l)),$(2))
+	$(call cross_mangle_substvars,$(p_l))
+	echo $(p_l) >> debian/$(lib_binaries)
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+endef
+
+define __do_libstdcxx_dbg
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_d)
+	dh_installdirs -p$(p_d) \
+		$(PF)/lib/debug/$(usr_lib$(2)) \
+		$(usr_lib$(2))
+
+	$(if $(filter yes,$(with_lib$(2)cxx)),
+		cp -a $(d)/$(usr_lib$(2))/libstdc++.so.*[0-9] \
+			$(d_d)/$(usr_lib$(2))/.;
+		dh_strip -p$(p_d) --keep-debug;
+		$(if $(filter yes,$(with_common_libs)),, # if !with_common_libs
+			# remove the debug symbols for libstdc++
+			# built by a newer version of GCC
+			rm -rf $(d_d)/usr/lib/debug/$(PF);
+		)
+		rm -f $(d_d)/$(usr_lib$(2))/libstdc++.so.*[0-9]
+	)
+
+	$(if $(filter yes,$(with_debug)),
+		mkdir -p $(d_d)/$(usr_lib$(2))/debug;
+		mv $(d)/$(usr_lib$(2))/debug/libstdc++* $(d_d)/$(usr_lib$(2))/debug;
+		rm -f $(d_d)/$(usr_lib$(2))/debug/libstdc++_pic.a
+	)
+
+	$(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_d) \
+		$(call shlibdirs_to_search,$(subst $(pkg_ver),,$(subst stdc++$(CXX_SONAME),gcc$(GCC_SONAME),$(p_l))),$(2))
+	$(call cross_mangle_substvars,$(p_d))
+
+	debian/dh_doclink -p$(p_d) $(p_lbase)
+	debian/dh_rmemptydirs -p$(p_d)
+	echo $(p_d) >> debian/$(lib_binaries)
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+endef
+
+define __do_libstdcxx_dev
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	mv $(d)/$(usr_lib$(2))/libstdc++.a $(d)/$(usr_lib$(2))/libstdc++fs.a $(d)/$(usr_lib$(2))/libsupc++.a \
+		$(d)/$(gcc_lib_dir$(2))/
+
+	rm -rf $(d_l)
+	dh_installdirs -p$(p_l) $(gcc_lib_dir$(2))
+
+	$(dh_compat2) dh_movefiles -p$(p_l) \
+		$(gcc_lib_dir$(2))/libstdc++.a \
+		$(gcc_lib_dir$(2))/libstdc++fs.a \
+		$(gcc_lib_dir$(2))/libsupc++.a \
+		$(if $(with_multiarch_cxxheaders),$(PF)/include/$(DEB_TARGET_MULTIARCH)/c++/$(BASE_VERSION)/$(2))
+	$(call install_gcc_lib,libstdc++,$(CXX_SONAME),$(2),$(p_l))
+
+	debian/dh_doclink -p$(p_l) $(p_lbase)
+	debian/dh_rmemptydirs -p$(p_l)
+	dh_strip -p$(p_l)
+	dh_shlibdeps -p$(p_l) \
+		$(call shlibdirs_to_search,$(subst stdc++$(CXX_SONAME),gcc$(GCC_SONAME),$(p_l)),$(2))
+	echo $(p_l) >> debian/$(lib_binaries)
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+endef
+
+do_libstdcxx = $(call __do_libstdcxx,lib$(1)stdc++$(CXX_SONAME),$(1))
+do_libstdcxx_dbg = $(call __do_libstdcxx_dbg,lib$(1)stdc++$(CXX_SONAME)$(libstdc_ext),$(1))
+do_libstdcxx_dev = $(call __do_libstdcxx_dev,lib$(1)stdc++-$(BASE_VERSION)-dev,$(1))
+
+# ----------------------------------------------------------------------
+$(binary_stamp)-libstdcxx: $(install_stamp)
+	$(call do_libstdcxx,)
+
+$(binary_stamp)-lib64stdcxx: $(install_stamp)
+	$(call do_libstdcxx,64)
+
+$(binary_stamp)-lib32stdcxx: $(install_stamp)
+	$(call do_libstdcxx,32)
+
+$(binary_stamp)-libn32stdcxx: $(install_stamp)
+	$(call do_libstdcxx,n32)
+
+$(binary_stamp)-libx32stdcxx: $(install_stamp)
+	$(call do_libstdcxx,x32)
+
+$(binary_stamp)-libhfstdcxx: $(install_stamp)
+	$(call do_libstdcxx,hf)
+
+$(binary_stamp)-libsfstdcxx: $(install_stamp)
+	$(call do_libstdcxx,sf)
+
+$(binary_stamp)-lib64stdcxxdbg: $(install_stamp)
+	$(call do_libstdcxx_dbg,64)
+
+$(binary_stamp)-lib32stdcxxdbg: $(install_stamp)
+	$(call do_libstdcxx_dbg,32)
+
+$(binary_stamp)-libn32stdcxxdbg: $(install_stamp)
+	$(call do_libstdcxx_dbg,n32)
+
+$(binary_stamp)-libx32stdcxxdbg: $(install_stamp)
+	$(call do_libstdcxx_dbg,x32)
+
+$(binary_stamp)-libhfstdcxxdbg: $(install_stamp)
+	$(call do_libstdcxx_dbg,hf)
+
+$(binary_stamp)-libsfstdcxxdbg: $(install_stamp)
+	$(call do_libstdcxx_dbg,sf)
+
+$(binary_stamp)-lib64stdcxx-dev: $(install_stamp)
+	$(call do_libstdcxx_dev,64)
+
+$(binary_stamp)-lib32stdcxx-dev: $(install_stamp)
+	$(call do_libstdcxx_dev,32)
+
+$(binary_stamp)-libn32stdcxx-dev: $(install_stamp)
+	$(call do_libstdcxx_dev,n32)
+
+$(binary_stamp)-libx32stdcxx-dev: $(install_stamp)
+	$(call do_libstdcxx_dev,x32)
+
+$(binary_stamp)-libhfstdcxx-dev: $(install_stamp)
+	$(call do_libstdcxx_dev,hf)
+
+$(binary_stamp)-libsfstdcxx-dev: $(install_stamp)
+	$(call do_libstdcxx_dev,sf)
+
+# ----------------------------------------------------------------------
+libcxxdev_deps = $(install_stamp)
+ifeq ($(with_libcxx),yes)
+  libcxxdev_deps += $(binary_stamp)-libstdcxx
+endif
+ifeq ($(with_check),yes)
+  libcxxdev_deps += debian/README.libstdc++-baseline
+endif
+$(binary_stamp)-libstdcxx-dev: $(libcxxdev_deps)
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_dev) $(d_pic)
+	dh_installdirs -p$(p_dev) $(dirs_dev)
+	dh_installdirs -p$(p_pic) $(dirs_pic)
+	dh_installdirs -p$(p_dbg) $(dirs_dbg)
+
+	: # - correct libstdc++-v3 file locations
+	mv $(d)/$(usr_lib)/libsupc++.a $(d)/$(gcc_lib_dir)/
+	mv $(d)/$(usr_lib)/libstdc++fs.a $(d)/$(gcc_lib_dir)/
+	mv $(d)/$(usr_lib)/libstdc++.{a,so} $(d)/$(gcc_lib_dir)/
+	ln -sf ../../../$(DEB_TARGET_GNU_TYPE)/libstdc++.so.$(CXX_SONAME) \
+		$(d)/$(gcc_lib_dir)/libstdc++.so
+	mv $(d)/$(usr_lib)/libstdc++_pic.a $(d)/$(gcc_lib_dir)/
+
+	rm -f $(d)/$(usr_lib)/debug/libstdc++_pic.a
+	rm -f $(d)/$(usr_lib64)/debug/libstdc++_pic.a
+
+	: # remove precompiled headers
+	-find $(d) -type d -name '*.gch' | xargs rm -rf
+
+	for i in $(d)/$(PF)/include/c++/$(GCC_VERSION)/*-linux; do \
+	  if [ -d $$i ]; then mv $$i $$i-gnu; fi; \
+	done
+
+	$(dh_compat2) dh_movefiles -p$(p_dev) $(files_dev)
+	$(dh_compat2) dh_movefiles -p$(p_pic) $(files_pic)
+ifeq ($(with_debug),yes)
+	$(dh_compat2) dh_movefiles -p$(p_dbg) $(files_dbg)
+endif
+
+	dh_link -p$(p_dev) \
+		/$(usr_lib)/libstdc++.so.$(CXX_SONAME) \
+		/$(gcc_lib_dir)/libstdc++.so \
+		/$(PFL)/include/c++/$(BASE_VERSION) /$(PFL)/include/c++/$(GCC_VERSION)
+ifeq ($(with_multiarch_cxxheaders),yes)
+	dh_link -p$(p_dev) \
+		/$(PFL)/include/$(DEB_TARGET_MULTIARCH)/c++/$(BASE_VERSION) \
+		/$(PFL)/include/$(DEB_TARGET_MULTIARCH)/c++/$(GCC_VERSION)
+endif
+
+	debian/dh_doclink -p$(p_dev) $(p_lbase)
+	debian/dh_doclink -p$(p_pic) $(p_lbase)
+	debian/dh_doclink -p$(p_dbg) $(p_lbase)
+	cp -p $(srcdir)/libstdc++-v3/ChangeLog \
+		$(d_dev)/$(docdir)/$(p_base)/C++/changelog.libstdc++
+ifeq ($(with_check),yes)
+	cp -p debian/README.libstdc++-baseline \
+		$(d_dev)/$(docdir)/$(p_base)/C++/README.libstdc++-baseline.$(DEB_TARGET_ARCH)
+	if [ -f $(buildlibdir)/libstdc++-v3/testsuite/current_symbols.txt ]; \
+	then \
+	  cp -p $(buildlibdir)/libstdc++-v3/testsuite/current_symbols.txt \
+	    $(d_dev)/$(docdir)/$(p_base)/C++/libstdc++_symbols.txt.$(DEB_TARGET_ARCH); \
+	fi
+endif
+	cp -p $(buildlibdir)/libstdc++-v3/src/libstdc++-symbols.ver \
+		$(d_pic)/$(gcc_lib_dir)/libstdc++_pic.map
+
+	cp -p $(d)/$(usr_lib)/libstdc++.so.*.py \
+		$(d_dbg)/$(PF)/share/gdb/auto-load/$(usr_lib)/debug/.
+	sed -i -e "/^libdir *=/s,=.*,= '/$(usr_lib)'," \
+		$(d_dbg)/$(PF)/share/gdb/auto-load/$(usr_lib)/debug/libstdc++.so.*.py
+
+ifeq ($(with_libcxx),yes)
+	cp -a $(d)/$(usr_lib)/libstdc++.so.*[0-9] \
+		$(d_dbg)/$(usr_lib)/
+	dh_strip -p$(p_dbg) --keep-debug
+	rm -f $(d_dbg)/$(usr_lib)/libstdc++.so.*[0-9]
+endif
+
+	dh_strip -p$(p_dev) --dbg-package=$(p_dbg)
+ifneq ($(with_common_libs),yes)
+	: # remove the debug symbols for libstdc++ built by a newer version of GCC
+	rm -rf $(d_dbg)/usr/lib/debug/$(PF)
+endif
+	dh_strip -p$(p_pic)
+
+ifeq ($(with_cxxdev),yes)
+	debian/dh_rmemptydirs -p$(p_dev)
+	debian/dh_rmemptydirs -p$(p_pic)
+	debian/dh_rmemptydirs -p$(p_dbg)
+endif
+
+	$(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_dev) -p$(p_pic) -p$(p_dbg) \
+		$(call shlibdirs_to_search,,)
+	$(call cross_mangle_substvars,$(p_dbg))
+	echo $(p_dev) $(p_pic) $(p_dbg) >> debian/$(lib_binaries)
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+
+# ----------------------------------------------------------------------
+
+doxygen_doc_dir = $(buildlibdir)/libstdc++-v3/doc
+
+doxygen-docs: $(build_doxygen_stamp)
+$(build_doxygen_stamp): $(build_stamp)
+	$(MAKE) -C $(buildlibdir)/libstdc++-v3/doc SHELL=/bin/bash doc-html-doxygen
+	$(MAKE) -C $(buildlibdir)/libstdc++-v3/doc SHELL=/bin/bash doc-man-doxygen
+	-find $(doxygen_doc_dir)/doxygen/html -name 'struct*' -empty | xargs rm -f
+
+	touch $@
+
+$(binary_stamp)-libstdcxx-doc: $(install_stamp) doxygen-docs
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_libd)
+	dh_installdirs -p$(p_libd) \
+		$(docdir)/$(p_base)/libstdc++ \
+		$(PF)/share/man
+
+#	debian/dh_doclink -p$(p_libd) $(p_base)
+	dh_link -p$(p_libd) /usr/share/doc/$(p_base) /usr/share/doc/$(p_libd)
+	dh_installdocs -p$(p_libd)
+	rm -f $(d_libd)/$(docdir)/$(p_base)/copyright
+
+	cp -a $(srcdir)/libstdc++-v3/doc/html/* \
+		$(d_libd)/$(docdir)/$(p_base)/libstdc++/.
+	cp -a $(doxygen_doc_dir)/doxygen/html \
+		$(d_libd)/$(docdir)/$(p_base)/libstdc++/user
+	find $(d_libd)/$(docdir)/$(p_base)/libstdc++ -name '*.md5' \
+		| xargs -r rm -f
+
+# Broken docs ... see #766499
+#	rm -f $(d_libd)/$(docdir)/$(p_base)/libstdc++/*/jquery.js
+#	dh_link -p$(p_libd) \
+#		/usr/share/javascript/jquery/jquery.js \
+#		/$(docdir)/$(p_base)/libstdc++/html/jquery.js \
+#		/usr/share/javascript/jquery/jquery.js \
+#		/$(docdir)/$(p_base)/libstdc++/user/jquery.js
+
+	: FIXME: depending on the doxygen version
+	if [ -d $(doxygen_doc_dir)/doxygen/man/man3cxx ]; then \
+	  cp -a $(doxygen_doc_dir)/doxygen/man/man3cxx \
+	    $(d_libd)/$(PF)/share/man/man3; \
+	  if [ -d $(doxygen_doc_dir)/doxygen/man/man3 ]; then \
+	    cp -a $(doxygen_doc_dir)/doxygen/man/man3/* \
+	      $(d_libd)/$(PF)/share/man/man3/; \
+	  fi; \
+	elif [ -d $(doxygen_doc_dir)/doxygen/man/man3 ]; then \
+	  cp -a $(doxygen_doc_dir)/doxygen/man/man3 \
+	    $(d_libd)/$(PF)/share/man/man3; \
+	fi
+
+	for i in $(d_libd)/$(PF)/share/man/man3/*.3; do \
+	  [ -f $${i} ] || continue; \
+	  mv $${i} $${i}cxx; \
+	done
+	rm -f $(d_libd)/$(PF)/share/man/man3/todo.3*
+
+	mkdir -p $(d_libd)/usr/share/lintian/overrides
+	cp -p debian/$(p_libd).overrides \
+		$(d_libd)/usr/share/lintian/overrides/$(p_libd)
+
+	echo $(p_libd) >> debian/indep_binaries
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
diff --git a/debian/rules.d/binary-libtsan.mk b/debian/rules.d/binary-libtsan.mk
new file mode 100644
index 0000000..a2b017f
--- /dev/null
+++ b/debian/rules.d/binary-libtsan.mk
@@ -0,0 +1,77 @@
+$(lib_binaries)  += libtsan
+ifeq (0,1)
+ifeq ($(with_lib64tsan),yes)
+  $(lib_binaries)  += lib64tsan
+endif
+ifeq ($(with_lib32tsan),yes)
+  $(lib_binaries)	+= lib32tsan
+endif
+ifeq ($(with_libn32tsan),yes)
+  $(lib_binaries)	+= libn32tsan
+endif
+ifeq ($(with_libx32tsan),yes)
+  $(lib_binaries)	+= libx32tsan
+endif
+ifeq ($(with_libhftsan),yes)
+  $(lib_binaries)	+= libhftsan
+endif
+ifeq ($(with_libsftsan),yes)
+  $(lib_binaries)	+= libsftsan
+endif
+endif
+
+define __do_tsan
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_l) $(d_d)
+	dh_installdirs -p$(p_l) $(usr_lib$(2))
+	$(dh_compat2) dh_movefiles -p$(p_l) $(usr_lib$(2))/libtsan.so.*
+
+	debian/dh_doclink -p$(p_l) $(p_lbase)
+	debian/dh_doclink -p$(p_d) $(p_lbase)
+
+	if [ -f debian/$(p_l).overrides ]; then \
+		mkdir -p debian/$(p_l)/usr/share/lintian/overrides; \
+		cp debian/$(p_l).overrides debian/$(p_l)/usr/share/lintian/overrides/$(p_l); \
+	fi
+
+	dh_strip -p$(p_l) --dbg-package=$(p_d)
+	$(cross_makeshlibs) dh_makeshlibs -p$(p_l)
+	$(call cross_mangle_shlibs,$(p_l))
+	$(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l) \
+		$(call shlibdirs_to_search, \
+			$(subst tsan$(TSAN_SONAME),gcc$(GCC_SONAME),$(p_l)) \
+			$(subst tsan$(TSAN_SONAME),stdc++$(CXX_SONAME),$(p_l)) \
+		,$(2))
+	$(call cross_mangle_substvars,$(p_l))
+	echo $(p_l) $(p_d) >> debian/$(lib_binaries)
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+endef
+
+# ----------------------------------------------------------------------
+
+do_tsan = $(call __do_tsan,lib$(1)tsan$(TSAN_SONAME),$(1))
+
+$(binary_stamp)-libtsan: $(install_stamp)
+	$(call do_tsan,)
+
+$(binary_stamp)-lib64tsan: $(install_stamp)
+	$(call do_tsan,64)
+
+$(binary_stamp)-lib32tsan: $(install_stamp)
+	$(call do_tsan,32)
+
+$(binary_stamp)-libn32tsan: $(install_stamp)
+	$(call do_tsan,n32)
+
+$(binary_stamp)-libx32tsan: $(install_stamp)
+	$(call do_tsan,x32)
+
+$(binary_stamp)-libhftsan: $(install_dependencies)
+	$(call do_tsan,hf)
+
+$(binary_stamp)-libsftsan: $(install_dependencies)
+	$(call do_tsan,sf)
diff --git a/debian/rules.d/binary-libubsan.mk b/debian/rules.d/binary-libubsan.mk
new file mode 100644
index 0000000..6323bbb
--- /dev/null
+++ b/debian/rules.d/binary-libubsan.mk
@@ -0,0 +1,75 @@
+$(lib_binaries)  += libubsan
+ifeq ($(with_lib64ubsan),yes)
+  $(lib_binaries)  += lib64ubsan
+endif
+ifeq ($(with_lib32ubsan),yes)
+  $(lib_binaries)	+= lib32ubsan
+endif
+ifeq ($(with_libn32ubsan),yes)
+  $(lib_binaries)	+= libn32ubsan
+endif
+ifeq ($(with_libx32ubsan),yes)
+  $(lib_binaries)	+= libx32ubsan
+endif
+ifeq ($(with_libhfubsan),yes)
+  $(lib_binaries)	+= libhfubsan
+endif
+ifeq ($(with_libsfubsan),yes)
+  $(lib_binaries)	+= libsfubsan
+endif
+
+define __do_ubsan
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_l) $(d_d)
+	dh_installdirs -p$(p_l) $(usr_lib$(2))
+	$(dh_compat2) dh_movefiles -p$(p_l) $(usr_lib$(2))/libubsan.so.*
+
+	debian/dh_doclink -p$(p_l) $(p_lbase)
+	debian/dh_doclink -p$(p_d) $(p_lbase)
+
+	if [ -f debian/$(p_l).overrides ]; then \
+		mkdir -p debian/$(p_l)/usr/share/lintian/overrides; \
+		cp debian/$(p_l).overrides debian/$(p_l)/usr/share/lintian/overrides/$(p_l); \
+	fi
+
+	dh_strip -p$(p_l) --dbg-package=$(p_d)
+	$(cross_makeshlibs) dh_makeshlibs -p$(p_l)
+	$(call cross_mangle_shlibs,$(p_l))
+	$(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l) \
+		$(call shlibdirs_to_search, \
+			$(subst ubsan$(UBSAN_SONAME),gcc$(GCC_SONAME),$(p_l)) \
+			$(subst ubsan$(UBSAN_SONAME),stdc++$(CXX_SONAME),$(p_l)) \
+		,$(2))
+	$(call cross_mangle_substvars,$(p_l))
+	echo $(p_l) $(p_d) >> debian/$(lib_binaries)
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+endef
+
+# ----------------------------------------------------------------------
+
+do_ubsan = $(call __do_ubsan,lib$(1)ubsan$(UBSAN_SONAME),$(1))
+
+$(binary_stamp)-libubsan: $(install_stamp)
+	$(call do_ubsan,)
+
+$(binary_stamp)-lib64ubsan: $(install_stamp)
+	$(call do_ubsan,64)
+
+$(binary_stamp)-lib32ubsan: $(install_stamp)
+	$(call do_ubsan,32)
+
+$(binary_stamp)-libn32ubsan: $(install_stamp)
+	$(call do_ubsan,n32)
+
+$(binary_stamp)-libx32ubsan: $(install_stamp)
+	$(call do_ubsan,x32)
+
+$(binary_stamp)-libhfubsan: $(install_dependencies)
+	$(call do_ubsan,hf)
+
+$(binary_stamp)-libsfubsan: $(install_dependencies)
+	$(call do_ubsan,sf)
diff --git a/debian/rules.d/binary-libvtv.mk b/debian/rules.d/binary-libvtv.mk
new file mode 100644
index 0000000..f1cc189
--- /dev/null
+++ b/debian/rules.d/binary-libvtv.mk
@@ -0,0 +1,75 @@
+$(lib_binaries)  += libvtv
+ifeq ($(with_lib64vtv),yes)
+  $(lib_binaries)  += lib64vtv
+endif
+ifeq ($(with_lib32vtv),yes)
+  $(lib_binaries)	+= lib32vtv
+endif
+ifeq ($(with_libn32vtv),yes)
+  $(lib_binaries)	+= libn32vtv
+endif
+ifeq ($(with_libx32vtv),yes)
+  $(lib_binaries)	+= libx32vtv
+endif
+ifeq ($(with_libhfvtv),yes)
+  $(lib_binaries)	+= libhfvtv
+endif
+ifeq ($(with_libsfvtv),yes)
+  $(lib_binaries)	+= libsfvtv
+endif
+
+define __do_vtv
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_l) $(d_d)
+	dh_installdirs -p$(p_l) $(usr_lib$(2))
+	$(dh_compat2) dh_movefiles -p$(p_l) $(usr_lib$(2))/libvtv.so.*
+
+	debian/dh_doclink -p$(p_l) $(p_lbase)
+	debian/dh_doclink -p$(p_d) $(p_lbase)
+
+	if [ -f debian/$(p_l).overrides ]; then \
+		mkdir -p debian/$(p_l)/usr/share/lintian/overrides; \
+		cp debian/$(p_l).overrides debian/$(p_l)/usr/share/lintian/overrides/$(p_l); \
+	fi
+
+	dh_strip -p$(p_l) --dbg-package=$(p_d)
+	$(cross_makeshlibs) dh_makeshlibs -p$(p_l)
+	$(call cross_mangle_shlibs,$(p_l))
+	$(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l) \
+		$(call shlibdirs_to_search, \
+			$(subst vtv$(VTV_SONAME),gcc$(GCC_SONAME),$(p_l)) \
+			$(subst vtv$(VTV_SONAME),stdc++$(CXX_SONAME),$(p_l)) \
+		,$(2))
+	$(call cross_mangle_substvars,$(p_l))
+	echo $(p_l) $(p_d) >> debian/$(lib_binaries)
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+endef
+
+# ----------------------------------------------------------------------
+
+do_vtv = $(call __do_vtv,lib$(1)vtv$(VTV_SONAME),$(1))
+
+$(binary_stamp)-libvtv: $(install_stamp)
+	$(call do_vtv,)
+
+$(binary_stamp)-lib64vtv: $(install_stamp)
+	$(call do_vtv,64)
+
+$(binary_stamp)-lib32vtv: $(install_stamp)
+	$(call do_vtv,32)
+
+$(binary_stamp)-libn32vtv: $(install_stamp)
+	$(call do_vtv,n32)
+
+$(binary_stamp)-libx32vtv: $(install_stamp)
+	$(call do_vtv,x32)
+
+$(binary_stamp)-libhfvtv: $(install_dependencies)
+	$(call do_vtv,hf)
+
+$(binary_stamp)-libsfvtv: $(install_dependencies)
+	$(call do_vtv,sf)
diff --git a/debian/rules.d/binary-neon.mk b/debian/rules.d/binary-neon.mk
new file mode 100644
index 0000000..83ff60c
--- /dev/null
+++ b/debian/rules.d/binary-neon.mk
@@ -0,0 +1,47 @@
+arch_binaries  := $(arch_binaries) neon
+
+p_nlgcc		= libgcc$(GCC_SONAME)-neon
+p_ngomp		= libgomp$(GOMP_SONAME)-neon
+p_nlobjc	= libobjc$(OBJC_SONAME)-neon
+p_nflib		= libgfortran$(FORTRAN_SONAME)-neon
+p_nlcxx		= libstdc++$(CXX_SONAME)-neon
+
+d_nlgcc		= debian/$(p_nlgcc)
+d_ngomp		= debian/$(p_ngomp)
+d_nlobjc	= debian/$(p_nlobjc)
+d_nflib		= debian/$(p_nflib)
+d_nlcxx		= debian/$(p_nlcxx)
+
+neon_pkgs = -p$(p_nlgcc) -p$(p_ngomp) -p$(p_nlobjc) -p$(p_nflib) -p$(p_nlcxx)
+
+# ----------------------------------------------------------------------
+$(binary_stamp)-neon: $(install_neon_stamp)
+	dh_testdir
+	dh_testroot
+
+	dh_installdirs -p$(p_nlgcc) \
+		$(PF)/share/doc \
+		lib/neon
+	dh_installdirs -A -p$(p_ngomp) -p$(p_nlobjc) -p$(p_nflib) -p$(p_nlcxx) \
+		$(PF)/share/doc \
+		$(PF)/lib/neon
+
+	cp -a $(d_neon)/$(PF)/lib/libgcc*.so.* \
+		$(d_nlgcc)/lib/neon/
+	cp -a $(d_neon)/$(PF)/lib/libgomp*.so.* \
+		$(d_ngomp)/$(PF)/lib/neon/
+	cp -a $(d_neon)/$(PF)/lib/libobjc*.so.* \
+		$(d_nlobjc)/$(PF)/lib/neon/
+	cp -a $(d_neon)/$(PF)/lib/libgfortran*.so.* \
+		$(d_nflib)/$(PF)/lib/neon/
+	cp -a $(d_neon)/$(PF)/lib/libstdc++*.so.* \
+		$(d_nlcxx)/$(PF)/lib/neon/
+
+	for p in $(p_nlgcc) $(p_ngomp) $(p_nlobjc) $(p_nflib) $(p_nlcxx); do \
+	  ln -s ../$(p_base) debian/$$p/usr/share/doc/$$p; \
+	done
+	dh_strip $(neon_pkgs)
+	dh_shlibdeps $(neon_pkgs)
+	echo $(p_nlgcc) $(p_ngomp) $(p_nlobjc) $(p_nflib) $(p_nlcxx) >> debian/arch_binaries
+
+	touch $@
diff --git a/debian/rules.d/binary-nof.mk b/debian/rules.d/binary-nof.mk
new file mode 100644
index 0000000..f49bc58
--- /dev/null
+++ b/debian/rules.d/binary-nof.mk
@@ -0,0 +1,51 @@
+arch_binaries  := $(arch_binaries) nof
+
+p_nof  = gcc$(pkg_ver)-nof
+d_nof  = debian/$(p_nof)
+
+dirs_nof = \
+	$(docdir) \
+	$(usr_lib)/nof
+ifeq ($(with_cdev),yes)
+  dirs_nof += \
+	$(gcc_lib_dir)/nof
+endif
+
+ifeq ($(with_cdev),yes)
+  files_nof = \
+	$(libgcc_dir)/libgcc_s_nof.so.$(GCC_SONAME) \
+	$(gcc_lib_dir)/libgcc_s_nof.so \
+	$(usr_lib)/nof \
+	$(gcc_lib_dir)/nof
+else
+  files_nof = \
+	$(usr_lib)/libgcc_s_nof.so.$(GCC_SONAME)
+endif
+
+# ----------------------------------------------------------------------
+$(binary_stamp)-nof: $(install_stamp)
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	mv $(d)/$(usr_lib)/libgcc_s_nof.so.$(GCC_SONAME) $(d)/$(libgcc_dir)/.
+	rm -f $(d)/$(usr_lib)/libgcc_s_nof.so
+	ln -sf $(libgcc_dir)/libgcc_s_nof.so.$(GCC_SONAME) \
+		$(d)/$(gcc_lib_dir)/libgcc_s_nof.so
+
+	rm -rf $(d_nof)
+	dh_installdirs -p$(p_nof) $(dirs_nof)
+	$(dh_compat2) dh_movefiles -p$(p_nof) $(files_nof)
+	debian/dh_doclink -p$(p_nof) $(p_xbase)
+	dh_strip -p$(p_nof)
+	dh_shlibdeps -p$(p_nof)
+
+	dh_makeshlibs -p$(p_nof)
+	: # Only keep the shlibs file for the libgcc_s_nof library
+	fgrep libgcc_s_nof debian/$(p_nof)/DEBIAN/shlibs \
+		> debian/$(p_nof)/DEBIAN/shlibs.tmp
+	mv -f debian/$(p_nof)/DEBIAN/shlibs.tmp debian/$(p_nof)/DEBIAN/shlibs
+
+	echo $(p_nof) >> debian/arch_binaries
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
diff --git a/debian/rules.d/binary-objc.mk b/debian/rules.d/binary-objc.mk
new file mode 100644
index 0000000..2fb1794
--- /dev/null
+++ b/debian/rules.d/binary-objc.mk
@@ -0,0 +1,67 @@
+ifneq ($(DEB_STAGE),rtlibs)
+  ifneq (,$(filter yes, $(biarch64) $(biarch32) $(biarchn32) $(biarchx32) $(biarchhf) $(biarchsf)))
+    arch_binaries  := $(arch_binaries) objc-multi
+  endif
+  arch_binaries := $(arch_binaries) objc
+endif
+
+p_objc	= gobjc$(pkg_ver)$(cross_bin_arch)
+d_objc	= debian/$(p_objc)
+
+p_objc_m= gobjc$(pkg_ver)-multilib$(cross_bin_arch)
+d_objc_m= debian/$(p_objc_m)
+
+dirs_objc = \
+	$(docdir)/$(p_xbase)/ObjC \
+	$(gcc_lexec_dir)
+
+files_objc = \
+	$(gcc_lexec_dir)/cc1obj
+
+$(binary_stamp)-objc: $(install_stamp)
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_objc)
+	dh_installdirs -p$(p_objc) $(dirs_objc)
+	$(dh_compat2) dh_movefiles -p$(p_objc) $(files_objc)
+
+	cp -p $(srcdir)/libobjc/{README*,THREADS*} \
+		$(d_objc)/$(docdir)/$(p_xbase)/ObjC/.
+
+	cp -p $(srcdir)/libobjc/ChangeLog \
+		$(d_objc)/$(docdir)/$(p_xbase)/ObjC/changelog.libobjc
+
+ifeq ($(GFDL_INVARIANT_FREE),yes)
+	mkdir -p $(d_objc)/usr/share/lintian/overrides
+	echo '$(p_objc) binary: binary-without-manpage' \
+	  >> $(d_objc)/usr/share/lintian/overrides/$(p_objc)
+endif
+
+	debian/dh_doclink -p$(p_objc) $(p_xbase)
+
+	debian/dh_rmemptydirs -p$(p_objc)
+
+	dh_strip -p$(p_objc) \
+	  $(if $(unstripped_exe),-X/cc1obj)
+	dh_shlibdeps -p$(p_objc)
+	echo $(p_objc) >> debian/arch_binaries
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+
+$(binary_stamp)-objc-multi: $(install_stamp)
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_objc_m)
+	dh_installdirs -p$(p_objc_m) $(docdir)
+
+	debian/dh_doclink -p$(p_objc_m) $(p_xbase)
+
+	dh_strip -p$(p_objc_m)
+	dh_shlibdeps -p$(p_objc_m)
+	echo $(p_objc_m) >> debian/arch_binaries
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
diff --git a/debian/rules.d/binary-objcxx.mk b/debian/rules.d/binary-objcxx.mk
new file mode 100644
index 0000000..a37de91
--- /dev/null
+++ b/debian/rules.d/binary-objcxx.mk
@@ -0,0 +1,60 @@
+ifneq ($(DEB_STAGE),rtlibs)
+  ifneq (,$(filter yes, $(biarch64) $(biarch32) $(biarchn32) $(biarchx32) $(biarchhf) $(biarchsf)))
+    arch_binaries  := $(arch_binaries) objcxx-multi
+  endif
+  arch_binaries := $(arch_binaries) objcxx
+endif
+
+p_objcx		= gobjc++$(pkg_ver)$(cross_bin_arch)
+d_objcx		= debian/$(p_objcx)
+
+p_objcx_m	= gobjc++$(pkg_ver)-multilib$(cross_bin_arch)
+d_objcx_m	= debian/$(p_objcx_m)
+
+dirs_objcx = \
+	$(docdir)/$(p_xbase)/Obj-C++ \
+	$(gcc_lexec_dir)
+
+files_objcx = \
+	$(gcc_lexec_dir)/cc1objplus
+
+$(binary_stamp)-objcxx: $(install_stamp)
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_objcx)
+	dh_installdirs -p$(p_objcx) $(dirs_objcx)
+	$(dh_compat2) dh_movefiles -p$(p_objcx) $(files_objcx)
+
+	debian/dh_doclink -p$(p_objcx) $(p_xbase)
+	cp -p $(srcdir)/gcc/objcp/ChangeLog \
+		$(d_objcx)/$(docdir)/$(p_xbase)/Obj-C++/changelog
+
+ifeq ($(GFDL_INVARIANT_FREE),yes)
+	mkdir -p $(d_objcx)/usr/share/lintian/overrides
+	echo '$(p_objcx) binary: binary-without-manpage' \
+	  >> $(d_objcx)/usr/share/lintian/overrides/$(p_objcx)
+endif
+
+	debian/dh_rmemptydirs -p$(p_objcx)
+
+	dh_strip -p$(p_objcx) \
+	  $(if $(unstripped_exe),-X/cc1objplus)
+	dh_shlibdeps -p$(p_objcx)
+	echo $(p_objcx) >> debian/arch_binaries
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+
+$(binary_stamp)-objcxx-multi: $(install_stamp)
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+	rm -rf $(d_objcx_m)
+	debian/dh_doclink -p$(p_objcx_m) $(p_xbase)
+	debian/dh_rmemptydirs -p$(p_objcx_m)
+	dh_strip -p$(p_objcx_m)
+	dh_shlibdeps -p$(p_objcx_m)
+	echo $(p_objcx_m) >> debian/arch_binaries
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
diff --git a/debian/rules.d/binary-snapshot.mk b/debian/rules.d/binary-snapshot.mk
new file mode 100644
index 0000000..b727d07
--- /dev/null
+++ b/debian/rules.d/binary-snapshot.mk
@@ -0,0 +1,232 @@
+arch_binaries  := $(arch_binaries) snapshot
+
+ifneq (,$(findstring gcc-snapshot, $(PKGSOURCE)))
+  p_snap = gcc-snapshot
+else ifneq (,$(findstring gcc-linaro, $(PKGSOURCE)))
+  p_snap = gcc-linaro
+else
+  $(error unknown build for single gcc package)
+endif
+
+ifeq ($(DEB_CROSS),yes)
+  p_snap := $(p_snap)$(cross_bin_arch)
+endif
+d_snap	= debian/$(p_snap)
+
+dirs_snap = \
+	$(docdir)/$(p_snap) \
+	usr/lib
+
+ifeq ($(with_hppa64),yes)
+  snapshot_depends = binutils-hppa64
+endif
+
+$(stampdir)/ecj_binaries: $(install_snap_stamp)
+	mkdir -p $(builddir)/aot/jar $(builddir)/aot/bin
+	cp $(ecj_jar) $(builddir)/aot/jar/ecj-standalone.jar
+	zip -d $(builddir)/aot/jar/ecj-standalone.jar \
+		'org/eclipse/jdt/core/JDTCompilerAdapter*'
+
+	cd $(builddir)/aot/jar \
+	  && fastjar xf ecj-standalone.jar \
+	  && find -name '*.rsc' -o -name '*.properties' \
+		| fastjar -c -@ - -f ../resources.jar
+	rm -rf $(builddir)/aot/jar/META-INF $(builddir)/aot/jar/org
+	$(d)/$(PF)/bin/gcj \
+	    -c -O2 -g -fPIC -fjni -findirect-dispatch \
+	    -o $(builddir)/aot/bin/resources.o $(builddir)/aot/resources.jar
+
+	cp $(srcdir)/libjava/contrib/classfile.py $(builddir)/aot/
+	cp $(buildlibdir)/libjava/contrib/*.py $(builddir)/aot/
+	grep -v '^sys.path.insert' $(buildlibdir)/libjava/contrib/aot-compile \
+	    > $(builddir)/aot/aot-compile
+	chmod 755 $(builddir)/aot/aot-compile
+	patch -p1 < debian/patches/aotcompile.diff
+	LD_LIBRARY_PATH=$${LD_LIBRARY_PATH:+$$LD_LIBRARY_PATH:}$(CURDIR)/$(d)/$(PF)/lib \
+	RPATH=-Wl,-rpath,/$(PF)/lib \
+	PYTHONPATH=$(builddir)/aot \
+	  python $(builddir)/aot/aot-compile \
+	    --gcj=$(CURDIR)/$(d)/$(PF)/bin/gcj \
+	    --dbtool=$(CURDIR)/$(d)/$(PF)/bin/gcj-dbtool \
+	    $(builddir)/aot/jar $(builddir)/aot/bin
+	touch $@
+
+# ----------------------------------------------------------------------
+$(binary_stamp)-snapshot: $(install_snap_stamp) \
+    $(if $(filter $(with_ecj),yes),$(stampdir)/ecj_binaries)
+	dh_testdir
+	dh_testroot
+	mv $(install_snap_stamp) $(install_snap_stamp)-tmp
+
+	rm -rf $(d_snap)
+	dh_installdirs -p$(p_snap) $(dirs_snap)
+
+	mv $(d)/$(PF) $(d_snap)/usr/lib/
+
+	find $(d_snap) -name '*.gch' -type d | xargs -r rm -rf
+	find $(d_snap) -name '*.la' -o -name '*.lai' | xargs -r rm -f
+
+	: # FIXME: libbacktrace is not installed by default
+	for d in . 32 n32 64 sf hf; do \
+	  if [ -f $(buildlibdir)/$$d/libbacktrace/.libs/libbacktrace.a ]; then \
+	    install -m644 $(buildlibdir)/$$d/libbacktrace/.libs/libbacktrace.a \
+	      $(d_snap)/$(gcc_lib_dir)/$$d; \
+	  fi; \
+	done
+	if [ -f $(buildlibdir)/libbacktrace/backtrace-supported.h ]; then \
+	  install -m644 $(buildlibdir)/libbacktrace/backtrace-supported.h \
+	    $(d_snap)/$(gcc_lib_dir)/include/; \
+	  install -m644 $(srcdir)/libbacktrace/backtrace.h \
+	    $(d_snap)/$(gcc_lib_dir)/include/; \
+	fi
+
+	rm -rf $(d_snap)/$(PF)/lib/nof
+ifeq ($(with_java),yes)
+	mv $(d)/usr/lib/jvm $(d_snap)/usr/lib/
+
+	dh_link -p$(p_snap) \
+	  $(gcc_lib_dir)/include/gcj $(jvm_dir)/include/gcj \
+	  usr/bin/ecj $(jvm_dir)/bin/javac
+
+  ifneq ($(DEB_TARGET_ARCH_CPU),$(java_cpu))
+	ln -sf $(java_cpu) $(d_snap)/$(jvm_dir)/jre/lib/$(DEB_TARGET_ARCH_CPU)
+  endif
+  ifeq ($(with_ecj),yes)
+	install -m755 $(builddir)/aot/bin/javac $(d_snap)/$(jvm_dir)/bin/javac
+	install -m755 $(builddir)/aot/bin/ecj1 $(d_snap)/$(gcc_lexec_dir)/ecj1
+
+    ifeq (./,$(dir $(ecj_jar)))
+	install -m 644 $(ecj_jar) $(d_snap)/$(jvm_dir)/lib/ecj.jar
+    else
+	dh_link -p$(p_snap) \
+	  $(ecj_jar) $(jvm_dir)/lib/ecj.jar
+    endif
+  endif
+
+	: # provide .jinfo file
+	( \
+	  echo 'name=$(jvm_name_short)'; \
+	  echo 'alias=java-gcj$(pkg_ver)'; \
+	  echo 'priority=$(priority)'; \
+	  echo 'section=main'; \
+	  echo ''; \
+	  for i in $(jre_tools); do \
+	    echo "jre $$i /$(jvm_dir)/jre/bin/$$i"; \
+	  done; \
+	  for i in $(jdk_tools); do \
+	    echo "jdk $$i /$(jvm_dir)/bin/$$i"; \
+	  done; \
+	) > $(d_snap)/usr/lib/jvm/.java-gcj$(pkg_ver)-snap.jinfo
+endif
+
+ifeq ($(with_ada),yes FIXME: apply our ada patches)
+	dh_link -p$(p_snap) \
+	   $(gcc_lib_dir)/rts-sjlj/adalib/libgnat.a \
+	   $(gcc_lib_dir)/rts-sjlj/adalib/libgnat-$(GNAT_VERSION).a
+	dh_link -p$(p_snap) \
+	   $(gcc_lib_dir)/rts-sjlj/adalib/libgnarl.a \
+	   $(gcc_lib_dir)/rts-sjlj/adalib/libgnarl-$(GNAT_VERSION).a
+
+	set -e; \
+	for lib in lib{gnat,gnarl}; do \
+	  vlib=$$lib-$(GNAT_SONAME); \
+	  mv $(d_snap)/$(gcc_lib_dir)/adalib/$$vlib.so.1 $(d_snap)/$(PF)/$(libdir)/. ; \
+	  rm -f $(d_snap)/$(gcc_lib_dir)/adalib/$$lib.so.1; \
+	  dh_link -p$(p_snap) \
+	    /$(PF)/$(libdir)/$$vlib.so.1 /$(PF)/$(libdir)/$$vlib.so \
+	    /$(PF)/$(libdir)/$$vlib.so.1 /$(PF)/$(libdir)/$$lib.so \
+	    /$(PF)/$(libdir)/$$vlib.so.1 /$(gcc_lib_dir)/rts-native/adalib/$$lib.so; \
+	done
+endif
+ifeq ($(with_ada),yes)
+	ln -sf gcc $(d_snap)/$(PF)/bin/gnatgcc
+endif
+
+ifeq ($(with_hppa64),yes)
+	: # provide as and ld links
+	dh_link -p $(p_snap) \
+		/usr/bin/hppa64-linux-gnu-as \
+		/$(PF)/libexec/gcc/hppa64-linux-gnu/$(GCC_VERSION)/as \
+		/usr/bin/hppa64-linux-gnu-ld \
+		/$(PF)/libexec/gcc/hppa64-linux-gnu/$(GCC_VERSION)/ld
+endif
+
+ifeq ($(with_check),yes)
+	dh_installdocs -p$(p_snap) test-summary
+# more than one libgo.sum, avoid it 
+	mkdir -p $(d_snap)/$(docdir)/$(p_snap)/test-summaries
+	cp -p $$(find $(builddir)/gcc/testsuite -maxdepth 2 \( -name '*.sum' -o -name '*.log' \)) \
+	      $$(find $(buildlibdir)/*/testsuite -maxdepth 1 \( -name '*.sum'  -o -name '*.log' \) ! -name 'libgo.*') \
+		$(d_snap)/$(docdir)/$(p_snap)/test-summaries/
+  ifeq ($(with_go),yes)
+	cp -p $(buildlibdir)/libgo/libgo.sum \
+		$(d_snap)/$(docdir)/$(p_snap)/test-summaries/
+  endif
+	if which xz 2>&1 >/dev/null; then \
+	  echo -n $(d_snap)/$(docdir)/$(p_snap)/test-summaries/* \
+	    | xargs -d ' ' -L 1 -P $(USE_CPUS)	xz -7v; \
+	fi
+else
+	dh_installdocs -p$(p_snap)
+endif
+	if [ -f $(buildlibdir)/libstdc++-v3/testsuite/current_symbols.txt ]; \
+	then \
+	  cp -p $(buildlibdir)/libstdc++-v3/testsuite/current_symbols.txt \
+	    $(d_snap)/$(docdir)/$(p_snap)/libstdc++6_symbols.txt; \
+	fi
+	cp -p debian/README.snapshot \
+		$(d_snap)/$(docdir)/$(p_snap)/README.Debian
+	cp -p debian/README.Bugs \
+		$(d_snap)/$(docdir)/$(p_snap)/
+	dh_installchangelogs -p$(p_snap)
+ifeq ($(DEB_TARGET_ARCH),hppa)
+	dh_strip -p$(p_snap) -Xdebug -X.o -X.a -X/cgo -Xbin/go -Xbin/gofmt \
+	  $(if $(unstripped_exe),$(foreach i,cc1 cc1obj cc1objplus cc1plus cc1d f951 go1 jc1 lto1, -X/$(i)))
+else
+	dh_strip -p$(p_snap) -Xdebug -X/cgo -Xbin/go -Xbin/gofmt \
+	  $(if $(unstripped_exe),$(foreach i,cc1 cc1obj cc1objplus cc1plus cc1d f951 go1 jc1 lto1, -X/$(i)))
+endif
+	dh_compress -p$(p_snap) -X README.Bugs -X.log.xz -X.sum.xz
+	-find $(d_snap) -type d ! -perm 755 -exec chmod 755 {} \;
+	dh_fixperms -p$(p_snap)
+ifeq ($(with_ada),yes)
+	find $(d_snap)/$(gcc_lib_dir) -name '*.ali' | xargs -r chmod 444
+endif
+
+	mkdir -p $(d_snap)/usr/share/lintian/overrides
+	cp -p debian/gcc-snapshot.overrides \
+		$(d_snap)/usr/share/lintian/overrides/$(p_snap)
+
+	( \
+	  echo 'libgcc_s $(GCC_SONAME) ${p_snap} (>= $(DEB_VERSION))'; \
+	  echo 'libobjc $(OBJC_SONAME) ${p_snap} (>= $(DEB_VERSION))'; \
+	  echo 'libgfortran $(FORTRAN_SONAME) ${p_snap} (>= $(DEB_VERSION))'; \
+	  echo 'libffi $(FFI_SONAME) ${p_snap} (>= $(DEB_VERSION))'; \
+	  echo 'libgcj $(GCJ_SONAME) ${p_snap} (>= $(DEB_VERSION))'; \
+	  echo 'libgcj-tools $(GCJ_SONAME) ${p_snap} (>= $(DEB_VERSION))'; \
+	  echo 'libgij $(GCJ_SONAME) ${p_snap} (>= $(DEB_VERSION))'; \
+	  echo 'libgcj_bc 1 ${p_snap} (>= $(DEB_VERSION))'; \
+	  echo 'libgomp $(GOMP_SONAME) ${p_snap} (>= $(DEB_VERSION))'; \
+	  echo 'libgnat-$(GNAT_SONAME) 1 ${p_snap} (>= $(DEB_VERSION))'; \
+	  echo 'libgnarl-$(GNAT_SONAME) 1 ${p_snap} (>= $(DEB_VERSION))'; \
+	) > debian/shlibs.local
+
+	$(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps)  \
+	  dh_shlibdeps -p$(p_snap) -l$(CURDIR)/$(d_snap)/$(PF)/lib:$(CURDIR)/$(d_snap)/$(PF)/$(if $(filter $(DEB_TARGET_ARCH),amd64 ppc64),lib32,lib64):/usr/$(DEB_TARGET_GNU_TYPE)/lib -Xlibgcj-tools
+	-sed -i -e 's/$(p_snap)[^,]*, //g' debian/$(p_snap).substvars
+
+ifeq ($(with_multiarch_lib),yes)
+	: # paths needed for relative lookups from startfile_prefixes
+	for ma in $(xarch_multiarch_names); do \
+	  mkdir -p $(d_snap)/lib/$$ma; \
+	  mkdir -p $(d_snap)/usr/lib/$$ma; \
+	done
+endif
+
+	dh_gencontrol -p$(p_snap) -- $(common_substvars) \
+		'-Vsnap:depends=$(snapshot_depends)' '-Vsnap:recommends=$(snapshot_recommends)'
+	dh_installdeb -p$(p_snap)
+	dh_md5sums -p$(p_snap)
+	dh_builddeb -p$(p_snap)
+
+	trap '' 1 2 3 15; touch $@; mv $(install_snap_stamp)-tmp $(install_snap_stamp)
diff --git a/debian/rules.d/binary-softfloat.mk b/debian/rules.d/binary-softfloat.mk
new file mode 100644
index 0000000..1699326
--- /dev/null
+++ b/debian/rules.d/binary-softfloat.mk
@@ -0,0 +1,31 @@
+arch_binaries  := $(arch_binaries) softfloat
+
+p_softfloat  = gcc$(pkg_ver)-soft-float
+d_softfloat  = debian/$(p_softfloat)
+
+dirs_softfloat = \
+	$(PFL)/$(libdir) \
+	$(gcc_lib_dir)
+
+files_softfloat = \
+	$(PFL)/$(libdir)/soft-float \
+	$(gcc_lib_dir)/soft-float
+
+# ----------------------------------------------------------------------
+$(binary_stamp)-softfloat: $(install_stamp)
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_softfloat)
+	dh_installdirs -p$(p_softfloat) $(dirs_softfloat)
+	$(dh_compat2) dh_movefiles -p$(p_softfloat) $(files_softfloat)
+	rm -rf $(d_softfloat)/$(PFL)/$(libdir)/soft-float/libssp.so*
+	mv $(d_softfloat)/$(PFL)/$(libdir)/soft-float/libssp.a \
+		$(d_softfloat)/$(PFL)/$(libdir)/soft-float/libssp_nonshared.a
+	debian/dh_doclink -p$(p_softfloat) $(p_xbase)
+	dh_strip -p$(p_softfloat) -Xlibgcj.a
+	dh_shlibdeps -p$(p_softfloat)
+	echo $(p_softfloat) >> debian/arch_binaries
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
diff --git a/debian/rules.d/binary-source.mk b/debian/rules.d/binary-source.mk
new file mode 100644
index 0000000..7bc3f44
--- /dev/null
+++ b/debian/rules.d/binary-source.mk
@@ -0,0 +1,52 @@
+indep_binaries := $(indep_binaries) gcc-source
+
+ifeq ($(BACKPORT),true)
+  p_source = gcc$(pkg_ver)-$(GCC_VERSION)-source
+else
+  p_source = gcc$(pkg_ver)-source
+endif
+d_source= debian/$(p_source)
+
+$(binary_stamp)-gcc-source: $(install_stamp)
+	dh_testdir
+	dh_testroot
+
+	dh_installdocs -p$(p_source)
+	dh_installchangelogs -p$(p_source)
+
+	dh_install -p$(p_source) $(gcc_tarball) usr/src/gcc$(pkg_ver)
+ifneq (,$(gdc_tarball))
+	dh_install -p$(p_source) $(gdc_tarball) usr/src/gcc$(pkg_ver)
+endif
+	tar cf - $$(find './debian' -mindepth 1 \( \
+		-name .svn -prune -o \
+		-path './debian/gcc-*' -type d -prune -o \
+		-path './debian/cpp-*' -type d -prune -o \
+		-path './debian/*fortran*' -type d -prune -o \
+		-path './debian/lib*' -type d -prune -o \
+		-path './debian/patches/*' -prune -o \
+		-path './debian/tmp*' -prune -o \
+		-path './debian/files' -prune -o \
+		-path './debian/rules.d/*' -prune -o \
+		-path './debian/rules.parameters' -prune -o \
+		-path './debian/soname-cache' -prune -o \
+		-path './debian/*substvars*' -prune -o \
+		-path './debian/gcc-snapshot*' -prune -o \
+		-path './debian/*[0-9]*.p*' -prune -o \
+		-path './debian/*$(pkg_ver)[.-]*' -prune -o \
+		-print \) ) \
+	  | tar -x -C $(d_source)/usr/src/gcc$(pkg_ver)  -f -
+	# FIXME: Remove generated files
+	find $(d_source)/usr/src/gcc$(pkg_ver) -name '*.debhelper.log' -o -name .svn | xargs rm -rf
+
+	touch $(d_source)/usr/src/gcc$(pkg_ver)/debian/rules.parameters
+
+	dh_link -p$(p_source) \
+		/usr/src/gcc$(pkg_ver)/debian/patches /usr/src/gcc$(pkg_ver)/patches
+
+	mkdir -p $(d_source)/usr/share/lintian/overrides
+	cp -p debian/$(p_source).overrides \
+		$(d_source)/usr/share/lintian/overrides/$(p_source)
+	echo $(p_source) >> debian/indep_binaries
+
+	touch $@
diff --git a/debian/rules.defs b/debian/rules.defs
new file mode 100644
index 0000000..08be511
--- /dev/null
+++ b/debian/rules.defs
@@ -0,0 +1,2006 @@
+# -*- makefile -*-
+# definitions used in more than one Makefile / rules file
+
+NJOBS :=
+USE_CPUS := 1
+ifneq (,$(filter parallel=%,$(subst $(COMMA), ,$(DEB_BUILD_OPTIONS))))
+  USE_CPUS := $(subst parallel=,,$(filter parallel=%,$(subst $(COMMA), ,$(DEB_BUILD_OPTIONS))))
+  NJOBS := -j $(USE_CPUS)
+endif
+
+# common vars
+SHELL		= /bin/bash -e	# brace expansion used in rules file
+PWD		:= $(shell pwd)
+srcdir		= $(PWD)/src
+builddir	= $(PWD)/build
+builddir_jit	= $(PWD)/build-jit
+builddir_hppa64	= $(PWD)/build-hppa64
+stampdir	= stamps
+
+distribution	:= $(shell lsb_release -is)
+distrelease	:= $(shell lsb_release -cs)
+derivative	:= $(shell if dpkg-vendor --derives-from Ubuntu; then echo Ubuntu; \
+			elif dpkg-vendor --derives-from Debian; then echo Debian; \
+			else echo Unknown; fi)
+
+# On non official archives, "lsb_release -cs" default to "n/a". Assume
+# sid in that case 
+ifeq ($(distrelease),n/a)
+distrelease	:= sid
+endif
+
+on_buildd := $(shell [ -f /CurrentlyBuilding -o "$$LOGNAME" = buildd ] && echo yes)
+
+# creates {srcdir,builddir}_{hppa64,neon}
+$(foreach x,srcdir builddir,$(foreach target,hppa64 neon,$(eval \
+  $(x)_$(target) := $($(x))-$(target))))
+
+# for architecture dependent variables and changelog vars
+vafilt = $(subst $(2)=,,$(filter $(2)=%,$(1)))
+# for rules.sonames
+vafilt_defined = 1
+
+dpkg_target_vars := $(shell (dpkg-architecture | grep -q DEB_TARGET) && echo yes)
+ifeq ($(dpkg_target_vars),yes)
+  DEB_TARGET_ARCH=
+  DEB_TARGET_ARCH_BITS=
+  DEB_TARGET_ARCH_CPU=
+  DEB_TARGET_ARCH_ENDIAN=
+  DEB_TARGET_ARCH_OS=
+  DEB_TARGET_GNU_CPU=
+  DEB_TARGET_GNU_SYSTEM=
+  DEB_TARGET_GNU_TYPE=
+  DEB_TARGET_MULTIARCH=
+endif
+
+DPKG_VARS		:= $(shell dpkg-architecture)
+ifeq ($(dpkg_target_vars),yes)
+  DPKG_VARS		:= $(filter-out DEB_TARGET_%, $(DPKG_VARS))
+endif
+DEB_BUILD_ARCH		?= $(call vafilt,$(DPKG_VARS),DEB_BUILD_ARCH)
+DEB_BUILD_GNU_TYPE	?= $(call vafilt,$(DPKG_VARS),DEB_BUILD_GNU_TYPE)
+DEB_BUILD_MULTIARCH	?= $(call vafilt,$(DPKG_VARS),DEB_BUILD_MULTIARCH)
+DEB_HOST_ARCH		?= $(call vafilt,$(DPKG_VARS),DEB_HOST_ARCH)
+DEB_HOST_GNU_CPU	?= $(call vafilt,$(DPKG_VARS),DEB_HOST_GNU_CPU)
+DEB_HOST_GNU_SYSTEM	?= $(call vafilt,$(DPKG_VARS),DEB_HOST_GNU_SYSTEM)
+DEB_HOST_GNU_TYPE	?= $(call vafilt,$(DPKG_VARS),DEB_HOST_GNU_TYPE)
+DEB_HOST_MULTIARCH	?= $(call vafilt,$(DPKG_VARS),DEB_HOST_MULTIARCH)
+
+ifeq ($(derivative),Ubuntu)
+  ifeq (,$(filter $(distrelease),dapper hardy lucid precise quantal raring saucy trusty))
+    ifeq ($(DEB_BUILD_GNU_TYPE),i486-linux-gnu)
+      DEB_BUILD_GNU_TYPE = i686-linux-gnu
+    endif
+    ifeq ($(DEB_HOST_GNU_TYPE),i486-linux-gnu)
+      DEB_HOST_GNU_TYPE	= i686-linux-gnu
+    endif
+  endif
+else
+  ifeq (,$(filter $(distrelease),lenny etch squeeze wheezy))
+    ifeq ($(DEB_BUILD_GNU_TYPE),i486-linux-gnu)
+      DEB_BUILD_GNU_TYPE = i586-linux-gnu
+    endif
+    ifeq ($(DEB_HOST_GNU_TYPE),i486-linux-gnu)
+      DEB_HOST_GNU_TYPE	= i586-linux-gnu
+    endif
+  endif
+endif
+
+CHANGELOG_VARS := $(shell dpkg-parsechangelog | \
+	sed -n 's/ /_/g;/^[^_]/s/^\([^:]*\):_\(.*\)/\1=\2/p')
+
+# the name of the source package
+PKGSOURCE := $(call vafilt,$(CHANGELOG_VARS),Source)
+# those are required here too
+SOURCE_VERSION := $(call vafilt,$(CHANGELOG_VARS),Version)
+DEB_VERSION := $(strip $(shell echo $(SOURCE_VERSION) | \
+        sed -e 's/.*://' -e 's/ds[0-9]*//'))
+# epoch used for gcc versions up to 3.3.x, now used for some remaining
+# libraries: libgcc1, libobjc1
+EPOCH := 1
+DEB_EVERSION := $(EPOCH):$(DEB_VERSION)
+BASE_VERSION := $(shell echo $(DEB_VERSION) | sed -e 's/\([1-9]\).*-.*/\1/')
+
+# push glibc stack traces into stderr
+export LIBC_FATAL_STDERR_=1
+
+# ---------------------------------------------------------------------------
+# set target
+# - GNU triplet via DEB_TARGET_GNU_TYPE
+# - Debian arch in debian/target
+# - Debian arch via DEB_GCC_TARGET or GCC_TARGET
+#
+# alias
+ifdef GCC_TARGET
+  DEB_GCC_TARGET := $(GCC_TARGET)
+endif
+ifdef DEB_TARGET_GNU_TYPE
+  TARGET_VARS := $(shell dpkg-architecture -f -t$(DEB_TARGET_GNU_TYPE) 2>/dev/null)
+else
+  # allow debian/target to be used instead of DEB_GCC_TARGET - this was requested
+  # by toolchain-source maintainer
+  DEBIAN_TARGET_FILE := $(strip $(if $(wildcard debian/target),$(shell cat debian/target 2>/dev/null)))
+  ifndef DEB_TARGET_ARCH
+    ifneq (,$(DEBIAN_TARGET_FILE))
+      DEB_TARGET_ARCH := $(DEBIAN_TARGET_FILE)
+    else
+      ifdef DEB_GCC_TARGET
+        DEB_TARGET_ARCH := $(DEB_GCC_TARGET)
+      else
+        DEB_TARGET_ARCH := $(DEB_HOST_ARCH)
+      endif
+    endif
+  endif
+  TARGET_VARS := $(shell dpkg-architecture -f -a$(DEB_TARGET_ARCH) 2>/dev/null)
+endif
+ifeq ($(dpkg_target_vars),yes)
+  TARGET_VARS		:= $(filter-out DEB_TARGET_%, $(TARGET_VARS))
+endif
+
+DEB_TARGET_ARCH		:= $(call vafilt,$(TARGET_VARS),DEB_HOST_ARCH)
+DEB_TARGET_ARCH_OS	:= $(call vafilt,$(TARGET_VARS),DEB_HOST_ARCH_OS)
+DEB_TARGET_ARCH_CPU	:= $(call vafilt,$(TARGET_VARS),DEB_HOST_ARCH_CPU)
+DEB_TARGET_GNU_CPU	:= $(call vafilt,$(TARGET_VARS),DEB_HOST_GNU_CPU)
+DEB_TARGET_GNU_TYPE	:= $(call vafilt,$(TARGET_VARS),DEB_HOST_GNU_TYPE)
+DEB_TARGET_GNU_SYSTEM	:= $(call vafilt,$(TARGET_VARS),DEB_HOST_GNU_SYSTEM)
+DEB_TARGET_MULTIARCH	:= $(call vafilt,$(TARGET_VARS),DEB_HOST_MULTIARCH)
+
+ifeq (,$(filter $(distrelease),dapper lucid))
+  ifeq ($(DEB_TARGET_GNU_TYPE),i486-linux-gnu)
+    DEB_TARGET_GNU_TYPE	= i586-linux-gnu
+  endif
+endif
+
+ifeq ($(DEB_TARGET_ARCH),)
+  $(error Invalid architecure.)
+endif
+
+# Force this, people get confused about the default. See #760770.
+override with_deps_on_target_arch_pkgs :=
+
+# including unversiond symlinks for binaries
+#with_unversioned = yes
+
+# ---------------------------------------------------------------------------
+# cross-compiler config
+ifneq ($(DEB_BUILD_GNU_TYPE),$(DEB_HOST_GNU_TYPE))
+  ifneq ($(DEB_HOST_GNU_TYPE),$(DEB_TARGET_GNU_TYPE))
+    # cross building a cross compiler, untested.
+    DEB_CROSS = yes
+    build_type = cross-build-cross
+  else
+    # cross building the native compiler
+    ifeq (,$(filter $(distrelease),lenny etch squeeze dapper hardy jaunty karmic lucid))
+      with_sysroot = /
+    endif
+    build_type = cross-build-native
+  endif
+else
+  ifneq ($(DEB_HOST_GNU_TYPE),$(DEB_TARGET_GNU_TYPE))
+    # cross compiler, sets WITH_SYSROOT on it's own
+    DEB_CROSS = yes
+    build_type = build-cross
+  else
+    # native build
+    # first ones are wheezy and maverick
+    ifeq (,$(filter $(distrelease),lenny etch squeeze dapper hardy jaunty karmic lucid))
+      with_sysroot = /
+    endif
+    build_type = build-native
+  endif
+endif
+
+# ---------------------------------------------------------------------------
+# cross compiler support
+ifeq ($(DEB_CROSS),yes)
+  # TARGET: Alias to DEB_TARGET_ARCH (Debian arch name)
+  # TP: Target Prefix. Used primarily as a prefix for cross tool
+  #     names (e.g. powerpc-linux-gcc).
+  # TS: Target Suffix. Used primarily at the end of cross compiler
+  #     package names (e.g. gcc-powerpc).
+  # LS: Library Suffix. Used primarily at the end of cross compiler
+  #     library package names (e.g. libgcc-powerpc-cross).
+  # AQ: Arch Qualifier. Used for cross-arch dependencies
+  DEB_TARGET_ALIAS ?= $(DEB_TARGET_GNU_TYPE)
+  TARGET := $(DEB_TARGET_ARCH)
+  TP :=  $(subst _,-,$(DEB_TARGET_GNU_TYPE))-
+  TS := -$(subst _,-,$(DEB_TARGET_ALIAS))
+  LS := -$(subst _,-,$(DEB_TARGET_ARCH))-cross
+  AQ :=
+
+  cross_bin_arch := -$(subst _,-,$(DEB_TARGET_ALIAS))
+  cross_lib_arch := -$(subst _,-,$(DEB_TARGET_ARCH))-cross
+  cmd_prefix := $(DEB_TARGET_GNU_TYPE)-
+
+  TARGET_ALIAS := $(DEB_TARGET_ALIAS)
+
+  lib_binaries := indep_binaries
+  cross_shlibdeps =  DEB_HOST_ARCH=$(TARGET) ARCH=$(DEB_TARGET_ARCH) MAKEFLAGS="CC=something"
+  cross_gencontrol = DEB_HOST_ARCH=$(TARGET)
+  cross_makeshlibs = DEB_HOST_ARCH=$(TARGET)
+  cross_clean = DEB_HOST_ARCH=$(TARGET)
+else
+  TARGET_ALIAS := $(DEB_TARGET_GNU_TYPE)
+
+  ifeq ($(TARGET_ALIAS),i386-gnu)
+    TARGET_ALIAS := i586-gnu
+  endif
+
+  cmd_prefix :=
+
+  #ifeq ($(TARGET_ALIAS),i486-linux-gnu)
+  #  TARGET_ALIAS := i686-linux-gnu
+  #endif
+
+  TARGET_ALIAS := $(subst i386,i486,$(TARGET_ALIAS))
+
+  # configure as linux-gnu, not linux
+  #ifeq ($(findstring linux,$(TARGET_ALIAS))/$(findstring linux-gnu,$(TARGET_ALIAS)),linux/)
+  #  TARGET_ALIAS := $(TARGET_ALIAS)-gnu
+  #endif
+
+  # configure as linux, not linux-gnu
+  #TARGET_ALIAS := $(subst linux-gnu,linux,$(TARGET_ALIAS))
+
+  lib_binaries := arch_binaries
+  cross_shlibdeps :=
+  cross_gencontrol :=
+  cross_makeshlibs :=
+  cross_clean :=
+endif
+
+printarch:
+	@echo DEB_TARGET_ARCH: $(DEB_TARGET_ARCH)
+	@echo DEB_TARGET_ARCH_OS: $(DEB_TARGET_ARCH_OS)
+	@echo DEB_TARGET_ARCH_CPU: $(DEB_TARGET_ARCH_CPU)
+	@echo DEB_TARGET_GNU_SYSTEM: $(DEB_TARGET_GNU_SYSTEM)
+	@echo DEB_TARGET_MULTIARCH: $(DEB_TARGET_MULTIARCH)
+	@echo MULTIARCH_CONFARG: $(MULTIARCH_CONFARG)
+	@echo TARGET_ALIAS: $(TARGET_ALIAS)
+	@echo TP: $(TP)
+	@echo TS: $(TS)
+
+# -------------------------------------------------------------------
+# bootstrap options
+ifdef WITH_BOOTSTRAP
+  # "yes" is the default and causes a 3-stage bootstrap.
+  # "off" runs a complete build with --disable-bootstrap
+  # "no" means to just build the first stage, and not create the stage1
+  # directory.
+  # "lean" means a lean 3-stage bootstrap, i.e. delete each stage when no
+  # longer needed.
+  with_bootstrap = $(WITH_BOOTSTRAP)
+endif
+ifneq ($(findstring nostrap, $(DEB_BUILD_OPTIONS)),)
+  with_bootstrap := off
+endif
+
+# -------------------------------------------------------------------
+# stage options
+ifdef DEB_STAGE
+  with_cdev := yes
+  separate_lang := yes
+  # "stage1" is minimal compiler with static libgcc
+  # "stage2" is minimal compiler with shared libgcc
+  # "rtlibs" is a subset of target libraries, without compilers
+  ifeq ($(DEB_STAGE),stage1)
+    with_shared_libgcc := no
+  endif
+  ifeq ($(DEB_STAGE),stage2)
+    with_libgcc := yes
+    with_shared_libgcc := yes
+  endif
+  ifeq ($(DEB_STAGE),rtlibs)
+    with_rtlibs := libgcc libgomp libstdc++ libgfortran libquadmath
+    ifeq ($(DEB_CROSS),yes)
+      LS :=
+      TS :=
+      cross_lib_arch :=
+    endif
+  endif
+endif
+
+ifeq ($(BACKPORT),true)
+  with_dev := no
+  with_source := yes
+  with_base_only := yes
+endif
+
+# -------------------------------------------------------------------
+# sysroot options
+ifdef WITH_SYSROOT
+  with_sysroot = $(WITH_SYSROOT)
+endif
+ifdef WITH_BUILD_SYSROOT
+  with_build_sysroot = $(WITH_BUILD_SYSROOT)
+endif
+
+# -------------------------------------------------------------------
+# for components configuration
+
+COMMA = ,
+SPACE = $(EMPTY) $(EMPTY)
+
+# lang= overwrites all of nolang=, overwrites all of WITHOUT_LANG
+
+DEB_LANG_OPT	:= $(filter lang=%,$(DEB_BUILD_OPTIONS))
+DEB_LANG	:= $(strip $(subst $(COMMA), ,$(patsubst lang=%,%,$(DEB_LANG_OPT))))
+DEB_NOLANG_OPT	:= $(filter nolang=%,$(DEB_BUILD_OPTIONS))
+DEB_NOLANG	:= $(strip $(subst $(COMMA), ,$(patsubst nolang=%,%,$(DEB_NOLANG_OPT))))
+lfilt	= $(strip $(if $(DEB_LANG), \
+		$(if $(filter $(1) $(2),$(DEB_LANG)),yes),$(3)))
+nlfilt	= $(strip $(if $(DEB_NOLANG), \
+		$(if $(filter $(1) $(2),$(DEB_NOLANG)),disabled by $(DEB_NOLANG_OPT),$(3))))
+wlfilt	= $(strip $(if $(filter $(1) $(2), $(subst $(COMMA), ,$(WITHOUT_LANG))), \
+		disabled by WITHOUT_LANG=$(WITHOUT_LANG),$(3)))
+envfilt	= $(strip $(or $(call lfilt,$(1),$(2)),$(call nlfilt,$(1),$(3)),$(call wlfilt,$(1),$(3)),$(4)))
+
+# -------------------------------------------------------------------
+# architecture specific config
+
+# FIXME: libjava is not ported for thumb, this hack only works for
+# separate gcj builds
+ifeq (,$(findstring gcj,$(PKGSOURCE)))
+  ifeq ($(DEB_TARGET_ARCH),armhf)
+    ifeq ($(distribution),Raspbian)
+      with_arm_thumb := no
+    else
+      with_arm_thumb := yes
+    endif
+  else
+    ifeq ($(derivative)-$(DEB_TARGET_ARCH),Ubuntu-armel)
+      ifneq (,$(filter $(distrelease),lucid maverick natty oneiric precise))
+        with_arm_thumb := yes
+      endif
+    endif
+  endif
+endif
+
+# build using fsf or linaro
+ifeq ($(distribution),Ubuntu)
+  ifneq (,$(findstring $(DEB_TARGET_ARCH),arm64 armel armhf))
+    with_linaro_branch = yes
+  endif
+endif
+
+# check if we're building for armel or armhf
+ifeq ($(DEB_TARGET_ARCH),armhf)
+  float_abi := hard
+else ifneq (,$(filter $(distribution)-$(DEB_TARGET_ARCH), Ubuntu-armel))
+  ifneq (,$(filter $(distrelease),lucid maverick natty oneiric precise))
+    float_abi := softfp
+  else
+    float_abi := soft
+  endif
+else ifneq (,$(filter $(DEB_TARGET_ARCH), arm armel))
+  float_abi := soft
+endif
+
+# -------------------------------------------------------------------
+# basic config
+
+# allows to wrote backtraces for ICEs
+unstripped_exe = yes
+
+# common things ---------------
+# build common packages, where package names don't differ in different
+# gcc versions (fixincludes, libgcj-common) ...
+with_common_pkgs := yes
+# ... and some libraries, which do not change (libgcc1, libssp0).
+with_common_libs := yes
+# XXX: should with_common_libs be "yes" only if this is the default compiler
+# version on the targeted arch?
+
+# is this a multiarch-enabled build?
+ifeq (,$(filter $(distrelease),lenny etch squeeze dapper hardy jaunty karmic lucid maverick))
+  with_multiarch_lib := yes
+endif
+
+ifeq ($(with_multiarch_lib),yes)
+  ifneq ($(single_package),yes)
+    ifneq ($(DEB_CROSS),yes)
+      with_multiarch_cxxheaders := yes
+    endif
+  endif
+endif
+
+ifeq (,$(filter $(distrelease),lenny etch squeeze dapper hardy jaunty karmic lucid maverick))
+  multiarch_stage1 := yes
+endif
+
+# mapping for the non-default biarch multilib / multiarch names
+multiarch_xarch_map = \
+	amd64=i386-linux-gnu,x86_64-linux-gnux32 \
+	armel=arm-linux-gnueabi \
+	armhf=arm-linux-gnueabihf \
+	i386=x86_64-linux-gnu,x86_64-linux-gnux32 \
+	powerpc=powerpc64-linux-gnu \
+	ppc64=powerpc-linux-gnu \
+	sparc=sparc64-linux-gnu \
+	sparc64=sparc-linux-gnu \
+	s390=s390x-linux-gnu \
+	s390x=s390-linux-gnu \
+	mips=mips64-linux-gnuabin32,mips64-linux-gnuabi64 \
+	mipsel=mips64el-linux-gnuabin32,mips64el-linux-gnuabi64 \
+	mipsn32=mips-linux-gnu,mips64-linux-gnuabi64 \
+	mipsn32el=mipsel-linux-gnu,mips64el-linux-gnuabi64 \
+	mips64=mips-linux-gnu,mips64-linux-gnuabin32 \
+	mips64el=mipsel-linux-gnu,mips64el-linux-gnuabin32 \
+	x32=x86_64-linux-gnu,i386-linux-gnu \
+	kfreebsd-amd64=i386-kfreebsd-gnu
+xarch_multiarch_names = $(subst $(COMMA),$(SPACE),$(patsubst $(DEB_TARGET_ARCH)=%,%, \
+		$(filter $(DEB_TARGET_ARCH)=%,$(multiarch_xarch_map))))
+
+multilib_multiarch_map = \
+	$(DEB_TARGET_ARCH)/=$(DEB_TARGET_MULTIARCH) \
+	amd64/32=i386-linux-gnu \
+	amd64/x32=x86_64-linux-gnux32 \
+	armel/hf=arm-linux-gnueabihf \
+	armhf/sf=arm-linux-gnueabi \
+	i386/64=x86_64-linux-gnu \
+	i386/x32=x86_64-linux-gnux32 \
+	powerpc/64=powerpc64-linux-gnu \
+	ppc64/32=powerpc-linux-gnu \
+	sparc/64=sparc64-linux-gnu \
+	sparc64/32=sparc-linux-gnu \
+	s390/64=s390x-linux-gnu \
+	s390x/32=s390-linux-gnu \
+	mips/n32=mips64-linux-gnuabin32 \
+	mips/64=mips64-linux-gnuabi64 \
+	mipsel/n32=mips64el-linux-gnuabin32 \
+	mipsel/64=mips64el-linux-gnuabi64 \
+	mipsn32/32=mips-linux-gnu \
+	mipsn32/64=mips64-linux-gnuabi64 \
+	mipsn32el/32=mipsel-linux-gnu \
+	mipsn32el/64=mips64el-linux-gnuabi64 \
+	mips64/32=mips-linux-gnu \
+	mips64/n32=mips64-linux-gnuabin32 \
+	mips64el/32=mipsel-linux-gnu \
+	mips64el/n32=mips64el-linux-gnuabin32 \
+	x32/32=i386-linux-gnu \
+	x32/64=x86_64-linux-gnu \
+	kfreebsd-amd64/32=i386-kfreebsd-gnu
+# $(call mlib_to_march,<empty>|32|64|n32|x32|hf|sf)
+mlib_to_march = $(patsubst $(DEB_TARGET_ARCH)/$(1)=%,%, \
+		   $(filter $(DEB_TARGET_ARCH)/$(1)=%,$(multilib_multiarch_map)))
+
+# build -base packages
+with_gccbase := yes
+ifeq ($(build_type),build-cross)
+  ifneq ($(DEB_STAGE),rtlibs)
+    with_gcclbase := yes
+  endif
+endif
+
+# build dev packages.
+ifneq ($(DEB_STAGE),rtlibs)
+  with_dev := yes
+endif
+
+with_cpp := yes
+
+# set lang when built from a different source package.
+separate_lang := no
+
+ifneq (,$(findstring gcc-snapshot, $(PKGSOURCE)))
+  single_package = yes
+  trunk_build = yes
+  with_linaro_branch =
+else ifneq (,$(findstring gcc-linaro, $(PKGSOURCE)))
+  single_package = yes
+  trunk_build = no
+else
+  # --program-suffix=-$(BASE_VERSION)
+  versioned_packages := yes
+endif
+
+#no_dummy_cpus := ia64 i386 hppa s390 sparc
+#ifneq (,$(filter $(DEB_TARGET_ARCH_CPU),$(no_dummy_cpus)))
+#  with_base_only	:= no
+#  with_common_libs	:= yes
+#  with_common_pkgs	:= yes
+#else
+#  with_base_only	:= yes
+#  with_common_libs	:= no
+#  with_common_pkgs	:= no
+#  with_dev		:= no
+#endif
+
+ifeq ($(versioned_packages),yes)
+  pkg_ver := -$(BASE_VERSION)
+  PV := $(pkg_ver)
+endif
+
+# -------------------------------------------------------------------
+# configure languages
+
+# C ---------------------------
+enabled_languages := c
+
+with_jit = yes
+
+# FIXME: compiler bug
+jit_no_cpus	:= ia64
+
+ifneq (,$(filter $(DEB_TARGET_ARCH_CPU),$(jit_no_cpus)))
+  with_jit := disabled for cpu $(DEB_TARGET_ARCH_CPU)
+endif
+ifneq (,$(with_rtlibs))
+  with_jit := disabled for rtlibs stage
+endif
+with_jit := $(call envfilt, jit, , , $(with_jit))
+
+ifeq (,$(findstring gcc-,$(PKGSOURCE)))
+  with_jit :=
+endif
+
+ifneq (,$(findstring build-cross, $(build_type)))
+  with_jit := disabled for cross builds
+endif
+
+with_cc1 := yes
+with_cc1 := $(call envfilt, cc1, , , $(with_cc1))
+ifeq ($(with_cc1),yes)
+  ifneq ($(DEB_CROSS),yes)
+    with_libcc1 := yes
+  endif
+endif
+ifneq (,$(with_rtlibs))
+  with_libcc1 := disabled for rtlibs stage
+endif
+
+# Build all packages needed for C development
+ifneq ($(with_base_only),yes)
+  ifeq ($(with_dev),yes)
+    with_cdev := yes
+  endif
+endif
+
+ifeq (,$(filter $(DEB_STAGE),stage1 stage2))
+# Ada --------------------
+ada_no_cpus	:= m32r sh3 sh3eb sh4eb
+# no Debian builds ... some of these should exist
+ada_no_cpus += powerpcspe
+ada_no_cpus += mips64 # see https://gcc.gnu.org/PR65337
+ada_no_cpus += x32 # see https://gcc.gnu.org/PR61954
+ada_no_cpus += m68k sh4 sparc64 # not yet built natively
+ifneq (,$(findstring cross,$(build_type)))
+  ada_no_cpus := $(filter-out m68k sh4 sparc64, $(ada_no_cpus))
+endif
+ada_no_systems	:= 
+ada_no_cross	:= no
+ada_no_snap	:= no
+ifeq ($(single_package),yes)
+  ada_no_cpus += m68k powerpcspe sh4 sparc64
+  ada_no_cpus += alpha
+  ifneq (,$(filter $(DEB_TARGET_ARCH),m68k mips mipsel powerpcspe sh4 sparc64 hurd-i386 kfreebsd-i386 kfreebsd-amd64))
+    ada_no_cpus += mips mipsel
+    ada_no_cpus += hurd-i386 kfreebsd-i386 kfreebsd-amd64
+    ada_no_snap := yes
+  endif
+endif
+
+ifeq ($(with_dev),yes)
+  ifneq ($(separate_lang),yes)
+    with_ada := yes
+  endif
+endif
+ifneq (,$(filter $(DEB_TARGET_ARCH_CPU),$(ada_no_cpus)))
+  with_ada := disabled for cpu $(DEB_TARGET_ARCH_CPU)
+endif
+ifneq (,$(filter $(DEB_TARGET_ARCH),x32))
+  with_ada := disabled for architecture $(DEB_TARGET_ARCH)
+endif
+ifneq (,$(findstring cross,$(build_type)))
+  ifneq (,$(filter $(DEB_BUILD_ARCH),m68k powerpcspe sh4 x32))
+    with_ada := no gnat host compiler on $(DEB_BUILD_ARCH)
+  endif
+endif
+ifneq (,$(findstring $(DEB_TARGET_GNU_SYSTEM),$(ada_no_systems)))
+  with_ada := disabled for system $(DEB_TARGET_GNU_SYSTEM)
+endif
+ifeq ($(ada_no_cross)-$(DEB_CROSS),yes-yes)
+  with_ada := disabled for cross compiler package
+endif
+ifeq ($(ada_no_snap)-$(single_package),yes-yes)
+  with_ada := disabled for snapshot build
+endif
+ifneq (,$(findstring gccgo,$(PKGSOURCE)))
+  with_ada :=
+endif
+ifneq (,$(filter $(distrelease),lucid))
+  with_ada :=
+endif
+with_ada := $(call envfilt, ada, , , $(with_ada))
+
+
+ifeq ($(DEB_STAGE)-$(filter libgnat, $(with_rtlibs)),rtlibs-)
+  with_ada := disabled for rtlibs stage
+endif
+
+#ifneq ($(single_package),yes)
+#  with_separate_gnat := yes
+#endif
+
+ifneq ($(with_separate_gnat),yes)
+  ifeq ($(with_ada),yes)
+    ifneq (,$(filter $(distrelease),squeeze lucid))
+      with_ada :=
+    endif
+  endif
+endif
+
+ifeq ($(with_ada)-$(with_separate_gnat),yes-yes)
+  ifneq (,$(findstring gnat,$(PKGSOURCE)))
+    languages := c
+    separate_lang := yes
+    with_mudflap := no
+    with_gccbase := no
+    with_cdev := no
+    with_cc1 := no
+    with_libcc1 := no
+  else
+    debian_extra_langs += ada
+    with_ada := built from separate source
+    with_libgnat := built from separate source
+  endif
+endif
+
+ifeq ($(with_ada),yes)
+  enabled_languages += ada
+  with_libgnat := yes
+  with_gnatsjlj := yes
+endif
+
+# C++ -------------------------
+cxx_no_cpus := avr
+ifneq ($(with_base_only),yes)
+  ifneq ($(separate_lang),yes)
+    with_cxx := yes
+  endif
+endif
+ifneq (,$(findstring $(DEB_TARGET_ARCH_CPU),$(cxx_no_cpus)))
+  with_cxx := disabled for cpu $(DEB_TARGET_ARCH_CPU)
+endif
+with_cxx := $(call envfilt, c++, obj-c++ java, , $(with_cxx))
+
+# Set the default libstdc++ ABI. libstdc++ provides both ABI's.
+# Existing code still runs with the new c++11 ABI, however link
+# errors are seen when one object is compiled with the new std::string in scope,
+# another object is compiled with the old std::string in scope. both can link
+# to libstdc++.so but not to each other.
+# two objects (which might be some system library and a user's program) need to
+# agree on the version of std::string they're using
+
+libstdcxx_abi = new
+# backports default to the old ABI
+ifneq (,$(filter $(distrelease),squeeze wheezy jessie lucid precise trusty utopic vivid))
+  libstdcxx_abi = gcc4-compatible
+endif
+
+# Build all packages needed for C++ development
+ifeq ($(with_cxx),yes)
+  ifeq ($(with_dev),yes)
+    with_cxxdev := yes
+    with_libcxxdbg := yes
+  endif
+  ifeq ($(with_common_libs),yes)
+    with_libcxx := yes
+  endif
+
+  # debugging versions of libstdc++
+  ifneq (,$(findstring gcc-, $(PKGSOURCE)))
+  ifeq ($(with_cxxdev),yes)
+    with_debug := yes
+    debug_no_cpus :=
+    ifneq (,$(findstring $(DEB_TARGET_ARCH_CPU),$(debug_no_cpus)))
+      with_debug := disabled for cpu $(DEB_TARGET_GNU_CPU)
+    endif
+  endif
+  endif
+  with_debug := $(call envfilt, debug, , , $(with_debug))
+
+  enabled_languages += c++
+endif
+
+# Java --------------------
+# - To build a standalone gcj package (with no corresponding gcc
+#   package): with_separate_libgcj=yes, with_standalone_gcj=yes
+# - To build the java packages from the gcc source package:
+#   with_separate_libgcj=no, with_standalone_gcj=no
+# - To build gcc and java from separate sources:
+#   with_separate_libgcj=yes, with_standalone_gcj=no
+
+java_no_cpus := # arm64 mips mipsel
+java_no_systems :=
+
+ifneq ($(single_package),yes)
+  with_separate_libgcj := yes
+endif
+with_separate_libgcj := no
+with_standalone_gcj := no
+
+ifneq ($(separate_lang),yes)
+  with_java := yes
+endif
+
+# java converted for V3 C++ ABI for some archs
+ifeq ($(with_base_only),yes)
+  with_java := no
+endif
+ifneq (,$(filter $(DEB_TARGET_ARCH_CPU),$(java_no_cpus)))
+  with_java := disabled for cpu $(DEB_TARGET_ARCH_CPU)
+endif
+ifneq (,$(filter $(DEB_TARGET_GNU_SYSTEM),$(java_no_systems)))
+  with_java := disabled for system $(DEB_TARGET_GNU_SYSTEM)
+endif
+ifeq ($(java_no_cross)-$(DEB_CROSS),yes-yes)
+  with_java := disabled for cross compiler package
+endif
+with_java := $(call envfilt, java, , c++, $(with_java))
+
+ifeq ($(DEB_STAGE)-$(filter libgcj, $(with_rtlibs)),rtlibs-)
+  with_java := disabled for rtlibs stage
+endif
+
+ifneq (,$(findstring gccgo, $(PKGSOURCE)))
+  with_java :=
+endif
+
+ifeq ($(with_java)-$(with_separate_libgcj),yes-yes)
+  ifneq (,$(findstring gcj, $(PKGSOURCE)))
+    languages := c c++
+    separate_lang := yes
+  else
+    debian_extra_langs += java
+    with_java := built from separate source
+    with_gcj := built from separate source
+    with_libgcj := buit from separate source
+  endif
+endif
+
+with_java_plugin := no
+
+ifeq ($(with_java),yes)
+  # use the same names as OpenJDK
+  java_cpu_map = armel=arm armhf=arm arm64=aarch64 hppa=parisc \
+	i686=i386 i586=i386 i486=i386 x32=x32 \
+	mipsel=mips mips64=mips mips64el=mips mipsn32=mips mipsn32el=mips \
+	powerpc=ppc ppc64el=ppc64le sh4=sh x32=x32
+  java_cpu = $(patsubst $(DEB_TARGET_ARCH_CPU)=%,%, \
+                         $(filter $(DEB_TARGET_ARCH_CPU)=%,$(java_cpu_map)))
+  ifeq (,$(java_cpu))
+    java_cpu = $(DEB_TARGET_ARCH_CPU)
+  endif
+  java_priority = 10$(subst .,,$(BASE_VERSION))0
+
+  with_libgcj := yes
+  with_libgcjbc := no
+
+  ifneq (,$(findstring gcj-4,$(PKGSOURCE)))
+    ifneq (,$(filter $(DEB_TARGET_ARCH), arm))
+      with_gcj_base_only := yes
+    endif
+  endif
+
+  ifeq ($(single_package),yes)
+    with_ecj := yes
+  endif
+
+  #ifneq (,$(filter $(DEB_TARGET_ARCH),hppa))
+  #  with_native_ecj := yes
+  #endif
+
+  with_java_maintainer_mode := no
+
+  # used as well in debian/rules.conf to determine the build deps
+  java_awt_peers = gtk # qt # xlib
+
+  ifeq ($(with_common_libs),yes)
+    with_libgcj_doc := yes
+  endif
+
+  # Build all packages needed for Java development (gcj, libgcj-dev)
+  ifeq ($(with_dev),yes)
+    with_javadev := yes
+    with_gcj := yes
+  endif
+
+  with_java_alsa := yes
+  ifeq (,$(filter $(DEB_TARGET_GNU_SYSTEM),linux-gnu))
+    with_java_alsa := no
+  endif
+
+  # Just build the cross compiler to be able to cross build a native build.
+  ifeq ($(DEB_CROSS),yes)
+    with_libgcj :=
+  endif
+
+  enabled_languages += java
+endif
+
+# Go -------------------
+# - To build a standalone gccgo package (with no corresponding gcc
+#   package): with_separate_libgo=yes, with_standalone_go=yes
+# - To build the go packages from the gcc source package:
+#   with_separate_libgo=no, with_standalone_go=no
+# - To build gcc and go from separate sources:
+#   with_separate_libgo=yes, with_standalone_go=no
+
+go_no_cross := yes
+go_no_cross := no
+
+ifneq (,$(findstring gccgo, $(PKGSOURCE)))
+  with_separate_libgo := yes
+  with_standalone_go := yes
+endif
+
+go_no_cpus := avr arm hppa m68k sh4
+ifeq (,$(filter $(distrelease),lenny etch squeeze dapper hardy jaunty karmic lucid maverick natty oneiric))
+  go_no_cpus := $(filter-out arm, $(go_no_cpus))
+endif
+go_no_systems := gnu kfreebsd-gnu
+
+ifneq ($(with_base_only),yes)
+  ifneq ($(separate_lang),yes)
+    with_go := yes
+  endif
+endif
+ifneq (,$(filter $(DEB_TARGET_ARCH_CPU),$(go_no_cpus)))
+  with_go := disabled for cpu $(DEB_TARGET_ARCH_CPU)
+endif
+ifneq (,$(findstring $(DEB_TARGET_GNU_SYSTEM),$(go_no_systems)))
+  with_go := disabled for system $(DEB_TARGET_GNU_SYSTEM)
+endif
+ifeq ($(go_no_cross)-$(DEB_CROSS),yes-yes)
+  with_go := disabled for cross compiler package
+endif
+ifeq ($(DEB_STAGE)-$(filter libgo, $(with_rtlibs)),rtlibs-)
+  with_go := disabled for rtlibs stage
+endif
+with_go := $(call envfilt, go, , , $(with_go))
+
+# Build all packages needed for Go development
+ifneq (,$(findstring gcc, $(PKGSOURCE)))
+  ifeq ($(with_go),yes)
+    ifeq ($(with_common_libs),yes)
+      with_libgo := yes
+    endif
+    enabled_languages += go
+  endif
+endif
+
+ifeq ($(with_go)-$(with_separate_libgo),yes-yes)
+  ifneq (,$(findstring gccgo, $(PKGSOURCE)))
+    languages := c c++ go
+    separate_lang := yes
+    with_libgcc := yes
+    with_shared_libgcc := yes
+  else
+    debian_extra_langs += go
+    with_go := built from separate source
+    with_libgo := buit from separate source
+  endif
+endif
+
+# D ---------------------------
+d_no_cross := yes
+d_no_snap := yes
+d_no_cpus := s390 sh4
+
+ifneq ($(single_package),yes)
+  with_separate_gdc := yes
+endif
+with_separate_gdc := no
+
+ifneq ($(separate_lang),yes)
+  with_d := yes
+endif
+
+ifneq (,$(filter $(DEB_TARGET_ARCH_CPU),$(d_no_cpus)))
+  with_d := disabled for cpu $(DEB_TARGET_ARCH_CPU)
+endif
+ifeq ($(d_no_snap)-$(single_package),yes-yes)
+  with_d := disabled for snapshot build
+endif
+ifeq ($(DEB_STAGE)-$(filter libphobos, $(with_rtlibs)),rtlibs-)
+  with_d := disabled for rtlibs stage
+endif
+with_d := $(call envfilt, d, , , $(with_d))
+
+ifeq ($(with_base_only),yes)
+  with_d := no
+endif
+
+ifeq ($(with_d)-$(with_separate_gdc),yes-yes)
+  ifneq (,$(findstring gdc,$(PKGSOURCE)))
+    languages := c c++
+    separate_lang := yes
+
+    # FIXME: language selection needs improvement.
+    with_go := disabled for d
+  else
+    debian_extra_langs += d
+    with_d := built from separate source
+  endif
+endif
+
+ifeq ($(with_d),yes)
+  libphobos_archs = amd64 armel armhf i386 x32 kfreebsd-amd64 kfreebsd-i386
+  ifneq (,$(filter $(DEB_TARGET_ARCH), $(libphobos_archs)))
+    with_libphobos := yes
+  endif
+
+  libphobos_no_cpus := alpha avr arm64 hppa ia64 m68k \
+	mips mipsel mips64 mips64el mipsn32 mipsn32el \
+	powerpc powerpcspe ppc64 s390 s390x sh4 sparc sparc64
+  libphobos_no_systems := gnu kfreebsd-gnu
+  ifneq (,$(filter $(DEB_TARGET_ARCH_CPU),$(libphobos_no_cpus)))
+    with_libphobos := disabled for cpu $(DEB_TARGET_ARCH_CPU)
+  endif
+  ifneq (,$(filter $(DEB_TARGET_GNU_SYSTEM),$(libphobos_no_systems)))
+    with_libphobos := disabled for system $(DEB_TARGET_GNU_SYSTEM)
+  endif
+
+  enabled_languages += d
+endif
+
+# Fortran 95 -------------------
+fortran_no_cross := yes
+fortran_no_cross := no
+
+ifneq ($(with_base_only),yes)
+  ifneq ($(separate_lang),yes)
+    with_fortran := yes
+  endif
+endif
+ifeq ($(fortran_no_cross)-$(DEB_CROSS),yes-yes)
+  with_fortran := disabled for cross compiler package
+endif
+ifeq ($(DEB_STAGE)-$(filter libgfortran libquadmath, $(with_rtlibs)),rtlibs-)
+  with_fortran := disabled for rtlibs stage
+endif
+
+with_fortran := $(call envfilt, fortran, , , $(with_fortran))
+
+# Build all packages needed for Fortran development
+ifeq ($(with_fortran),yes)
+  ifeq ($(with_dev),yes)
+    ifneq ($(DEB_STAGE)-$(filter libgfortran libquadmath, $(with_rtlibs)),rtlibs-)
+      with_fdev := yes
+    endif
+  endif
+  ifeq ($(with_common_libs),yes)
+    with_libgfortran := yes
+  endif
+  enabled_languages += fortran
+endif
+
+# libquadmath -------------------
+
+ifneq (,$(findstring $(DEB_TARGET_ARCH_CPU), ia64 i386 i486 i586 i686 amd64))
+  # FIXME: upstream build tied to gfortran build
+  ifeq ($(with_fortran),yes)
+    with_qmath := yes
+    ifneq (,$(findstring gcc-5,$(PKGSOURCE)))
+      ifeq ($(with_common_libs),yes)
+        with_libqmath := yes
+      endif
+    endif
+  endif
+endif
+
+# ObjC ------------------------
+objc_no_cross := no
+
+ifneq ($(with_base_only),yes)
+  ifneq ($(separate_lang),yes)
+    with_objc := yes
+    objc_no_archs =
+    ifneq (,$(filter $(DEB_TARGET_ARCH),$(objc_no_archs)))
+      with_objc :=
+    endif
+  endif
+endif
+ifeq ($(objc_no_cross)-$(DEB_CROSS),yes-yes)
+  with_objc := disabled for cross compiler package
+endif
+ifeq ($(DEB_STAGE)-$(filter libobjc, $(with_rtlibs)),rtlibs-)
+  with_objc := disabled for rtlibs stage
+endif
+with_objc := $(call envfilt, objc, obj-c++, , $(with_objc))
+
+ifeq ($(with_objc),yes)
+  # the ObjC runtime with garbage collection enabled needs the Boehm GC
+  with_objc_gc := yes
+
+  # disable ObjC garbage collection library (needs libgc)
+  libgc_no_cpus := arm64 avr mips mipsel # alpha amd64 arm armel armhf hppa i386 ia64 m68k mips mipsel powerpc ppc64 s390 s390x sparc
+  libgc_no_systems := knetbsd-gnu
+  ifneq (,$(filter $(DEB_TARGET_ARCH_CPU),$(libgc_no_cpus)))
+    with_objc_gc := disabled for cpu $(DEB_TARGET_ARCH_CPU)
+  endif
+  ifneq (,$(findstring $(DEB_TARGET_GNU_SYSTEM),$(libgc_no_systems)))
+    with_objc_gc := disabled for system $(DEB_TARGET_GNU_SYSTEM)
+  endif
+
+  # Build all packages needed for Objective-C development
+  ifeq ($(with_dev),yes)
+    with_objcdev := yes
+  endif
+  ifeq ($(with_common_libs),yes)
+    with_libobjc := yes
+  endif
+
+  enabled_languages += objc
+endif
+
+# ObjC++ ----------------------
+objcxx_no_cross := no
+
+ifeq ($(with_objc),yes)
+  ifneq ($(with_base_only),yes)
+    ifneq ($(separate_lang),yes)
+      with_objcxx := yes
+    endif
+  endif
+endif
+ifeq ($(objcxx_no_cross)-$(DEB_CROSS),yes-yes)
+  with_objcxx := disabled for cross compiler package
+endif
+with_objcxx := $(call envfilt, obj-c++, , c++ objc, $(with_objcxx))
+
+ifeq ($(with_objcxx),yes)
+  enabled_languages += obj-c++
+endif
+
+# -------------------------------------------------------------------
+# other config
+
+# not built from the main source package
+ifeq (,$(findstring gcc-,$(PKGSOURCE)))
+  extra_package := yes
+endif
+
+with_nls := yes
+ifeq ($(trunk_build),yes)
+  with_nls := no
+endif
+with_nls := $(call envfilt, nls, , , $(with_nls))
+
+# powerpc nof libraries -----
+with_libnof := no
+
+ifneq (,$(findstring gcc-5,$(PKGSOURCE)))
+  ifeq (,$(with_rtlibs))
+    with_source := yes
+  endif
+endif
+with_source := $(call envfilt, source, , , $(with_source))
+
+ifeq ($(with_cdev),yes)
+
+# ssp & libssp -------------------------
+with_ssp := yes
+ssp_no_archs = alpha hppa ia64 m68k
+ifneq (, $(filter $(DEB_TARGET_ARCH),$(ssp_no_archs) $(ssp_no_archs:%=uclibc-%)))
+  with_ssp := not available on $(DEB_TARGET_ARCH)
+endif
+with_ssp := $(call envfilt, ssp, , , $(with_ssp))
+
+ifeq ($(with_ssp),yes)
+  ifneq ($(derivative),Debian)
+    ifneq (,$(findstring gcc-5, $(PKGSOURCE)))
+      with_ssp_default := yes
+    endif
+  endif
+endif
+
+# gomp --------------------
+with_gomp := yes
+with_gomp := $(call envfilt, gomp, , , $(with_gomp))
+gomp_no_archs =
+ifneq (,$(filter $(DEB_TARGET_ARCH),$(gomp_no_archs)))
+  with_gomp :=
+endif
+
+# itm --------------------
+itm_archs = amd64 arm64 i386 x32 ppc64 ppc64el
+ifneq (,$(filter $(DEB_TARGET_ARCH),$(itm_archs)))
+  with_itm := yes
+endif
+with_itm := $(call envfilt, itm, , , $(with_itm))
+
+# atomic --------------------
+with_atomic := yes
+atomic_no_archs =
+ifneq (,$(filter $(DEB_TARGET_ARCH),$(atomic_no_archs)))
+  with_atomic :=
+endif
+
+# backtrace --------------------
+with_backtrace := yes
+backtrace_no_archs = m68k
+ifneq (,$(filter $(DEB_TARGET_ARCH),$(backtrace_no_archs)))
+  with_backtrace :=
+endif
+
+# asan / sanitizer --------------------
+with_asan :=
+with_asan := $(call envfilt, asan, , , $(with_asan))
+asan_archs = amd64 armel armhf arm64 i386 powerpc ppc64 ppc64el x32 sparc sparc64
+ifneq (,$(filter $(DEB_TARGET_ARCH),$(asan_archs)))
+  with_asan := yes
+endif
+
+# lsan / sanitizer --------------------
+with_lsan :=
+with_lsan := $(call envfilt, lsan, , , $(with_lsan))
+lsan_archs = amd64
+ifneq (,$(filter $(DEB_TARGET_ARCH),$(lsan_archs)))
+  with_lsan := yes
+endif
+
+# tsan / sanitizer --------------------
+with_tsan :=
+with_tsan := $(call envfilt, tsan, , , $(with_tsan))
+tsan_archs = amd64
+ifneq (,$(filter $(DEB_TARGET_ARCH),$(tsan_archs)))
+  with_tsan := yes
+endif
+
+endif # with_cdev
+
+# ubsan / sanitizer --------------------
+with_ubsan :=
+with_ubsan := $(call envfilt, ubsan, , , $(with_ubsan))
+ubsan_archs = amd64 armel armhf arm64 i386 powerpc ppc64 ppc64el x32 sparc sparc64
+ifneq (,$(filter $(DEB_TARGET_ARCH),$(ubsan_archs)))
+  with_ubsan := yes
+endif
+
+# libvtv --------------------
+with_vtv :=
+with_vtv := $(call envfilt, vtv, , , $(with_vtv))
+vtv_archs = amd64 i386 x32
+ifneq (,$(filter $(DEB_TARGET_ARCH),$(vtv_archs)))
+  with_vtv := yes
+  with_libvtv := yes
+endif
+# libvtv builds a modified libstdc++, don't enable it by default
+with_vtv :=
+with_libvtv :=
+
+# libcilkrts --------------------
+with_cilkrts :=
+with_cilkrts := $(call envfilt, cilkrts, , , $(with_cilkrts))
+cilkrts_archs = amd64 i386 x32
+ifneq (,$(filter $(DEB_TARGET_ARCH),$(cilkrts_archs)))
+  with_cilkrts := yes
+endif
+
+# libmpx --------------------
+with_mpx :=
+with_mpx := $(call envfilt, mpx, , , $(with_mpx))
+mpx_archs = amd64 i386
+ifneq (,$(filter $(DEB_TARGET_ARCH),$(mpx_archs)))
+  # requires newer binutils, or else libmpxwrappers isn't built
+  ifeq (,$(filter $(distrelease),squeeze lucid precise))
+    with_mpx := yes
+    ifneq (,$(findstring gcc-, $(PKGSOURCE)))
+      with_libmpx := yes
+    endif
+  endif
+endif
+
+# pie by default --------------------
+with_pie :=
+ifeq ($(distribution),Ubuntu)
+  ifeq (,$(filter $(distrelease),lucid precise trusty utopic vivid wily))
+    pie_archs = s390x
+  endif
+  ifneq (,$(filter $(DEB_TARGET_ARCH),$(pie_archs)))
+    with_pie := yes
+  endif
+endif
+
+# gold --------------------
+# armel with binutils 2.20.51 only
+gold_archs = amd64 armel armhf i386 powerpc powerpcspe ppc64 ppc64el sparc sparc64 x32 hurd-i386
+ifneq (,$(filter $(DEB_TARGET_ARCH),$(gold_archs)))
+  with_gold := yes
+endif
+
+# plugins --------------------
+with_plugins := yes
+ifneq (,$(with_rtlibs))
+  with_plugins := disabled for rtlibs stage
+endif
+
+endif # ifeq (,$(filter $(DEB_STAGE),stage1 stage2))
+
+# Don't include docs with GFDL invariant sections
+GFDL_INVARIANT_FREE := yes
+ifeq ($(derivative),Ubuntu)
+  GFDL_INVARIANT_FREE := no
+endif
+
+# -------------------------------------------------------------------
+# non-extra config
+ifeq ($(extra_package),yes)
+  ifeq ($(with_separate_libgcj)-$(with_standalone_gcj),yes-no)
+    # package stuff
+    with_gccbase := no
+    with_cdev := no
+    with_cxx := no
+    with_cxxdev := no
+
+    ifneq ($(DEB_CROSS),yes)
+      with_gcjbase := yes
+    else
+      with_gcjxbase := yes
+    endif
+  endif
+  ifeq ($(with_separate_libgo),yes)
+    # package stuff
+    with_gccbase := yes
+    with_cdev := no
+    with_cxx := no
+    with_cxxdev := no
+  endif
+else
+  # libssp ------------------
+  ifeq ($(with_ssp)-$(with_common_libs),yes-yes)
+    #ifneq ($(DEB_CROSS),yes)
+      with_libssp := $(if $(wildcard $(builddir)/gcc/auto-host.h),$(shell if grep -qs '^\#define TARGET_LIBC_PROVIDES_SSP 1' $(builddir)/gcc/auto-host.h; then echo 'libc provides ssp'; else echo 'yes'; fi))
+    #endif
+    with_libssp := libc provides ssp
+  endif
+
+  # libgomp -----------------
+  ifeq ($(with_gomp)-$(with_common_libs),yes-yes)
+    #ifneq ($(DEB_CROSS),yes)
+      with_libgomp := yes
+    #endif
+  endif
+
+  # libitm -----------------
+  ifeq ($(with_itm)-$(with_common_libs),yes-yes)
+    #ifneq ($(DEB_CROSS),yes)
+      with_libitm := yes
+    #endif
+  endif
+
+  # libatomic -----------------
+  ifeq ($(with_atomic)-$(with_common_libs),yes-yes)
+    #ifneq ($(DEB_CROSS),yes)
+      with_libatomic := yes
+    #endif
+  endif
+
+  # libbacktrace -----------------
+  ifeq ($(with_backtrace)-$(with_common_libs),yes-yes)
+    #ifneq ($(DEB_CROSS),yes)
+      # currently not a shared library
+      #with_libbacktrace := yes
+    #endif
+  endif
+
+  # libasan -----------------
+  # asan changes soname in GCC 5
+  #ifeq ($(with_asan)-$(with_common_libs),yes-yes)
+  ifeq ($(with_asan),yes)
+    #ifneq ($(DEB_CROSS),yes)
+      with_libasan := yes
+    #endif
+  endif
+
+  # liblsan -----------------
+  ifeq ($(with_lsan)-$(with_common_libs),yes-yes)
+    #ifneq ($(DEB_CROSS),yes)
+      with_liblsan := yes
+    #endif
+  endif
+
+  # libtsan -----------------
+  ifeq ($(with_tsan)-$(with_common_libs),yes-yes)
+    #ifneq ($(DEB_CROSS),yes)
+      with_libtsan := yes
+    #endif
+  endif
+
+  # libubsan -----------------
+  ifeq ($(with_ubsan)-$(with_common_libs),yes-yes)
+    #ifneq ($(DEB_CROSS),yes)
+      with_libubsan := yes
+    #endif
+  endif
+
+  # libvtv -----------------
+  ifeq ($(with_vtv)-$(with_common_libs),yes-yes)
+    #ifneq ($(DEB_CROSS),yes)
+      with_libvtv := yes
+    #endif
+  endif
+
+  # libcilkrts -----------------
+  ifeq ($(with_cilkrts)-$(with_common_libs),yes-yes)
+    #ifneq ($(DEB_CROSS),yes)
+      with_libcilkrts := yes
+    #endif
+  endif
+
+  # libquadmath -----------------
+  ifeq ($(with_qmath)-$(with_common_libs),yes-yes)
+    #ifneq ($(DEB_CROSS),yes)
+      with_libqmath := yes
+    #endif
+  endif
+
+  # fixincludes -------
+  ifneq ($(DEB_CROSS),yes)
+    ifeq ($(with_common_pkgs),yes)
+      with_fixincl	:= yes
+    endif
+  endif
+
+  # Shared libgcc --------------------
+  ifneq ($(DEB_STAGE),stage1)
+    with_shared_libgcc := yes
+    ifeq ($(with_common_libs),yes)
+      with_libgcc := yes
+    endif
+  endif
+
+  # libgcc-math --------------------
+  with_libgmath := no
+  ifneq (,$(findstring i486,$(DEB_TARGET_ARCH)))
+    #with_libgccmath := yes
+    #with_lib64gmath := yes
+    #with_libgmathdev := yes
+  endif
+  ifeq ($(DEB_TARGET_ARCH),amd64)
+    #with_libgccmath := yes
+    #with_lib32gmath := yes
+    #with_libgmathdev := yes
+  endif
+
+  # hppa64 build ----------------
+  hppa64_no_snap := no
+  hppa64_archs := hppa
+  ifneq (,$(filter $(build_type), build-native cross-build-native))
+    ifeq (,$(filter $(distrelease),wheezy squeeze jessie lucid precise trusty utopic vivid wily))
+      hppa64_archs += amd64 i386 x32
+    endif
+    ifneq (,$(filter $(DEB_TARGET_ARCH),$(hppa64_archs)))
+      with_hppa64 := yes
+    endif
+  endif
+  ifeq ($(hppa64_no_snap)-$(trunk_build),yes-yes)
+    with_hppa64 := disabled for snapshot build
+  endif
+  with_hppa64 := $(call envfilt, hppa64, , , $(with_hppa64))
+
+  ifeq ($(DEB_STAGE),rtlibs)
+    with_libatomic := disabled for rtlibs stage
+    with_libasan := disabled for rtlibs stage
+    with_liblsan := disabled for rtlibs stage
+    with_libtsan := disabled for rtlibs stage
+    with_libubsan := disabled for rtlibs stage
+    with_libcilkrts := disabled for rtlibs stage
+    with_fixincl := disabled for rtlibs stage
+    with_hppa64 := disabled for rtlibs stage
+  endif
+
+  # neon build -------------------
+  # FIXME: build as a cross compiler to build on armv4 as well
+  ifneq (,$(findstring gcc-5, $(PKGSOURCE)))
+    ifeq ($(derivative),Ubuntu)
+#      neon_archs = armel armhf
+#      ifneq (, $(filter $(DEB_TARGET_ARCH),$(neon_archs)))
+#        with_neon = yes
+#      endif
+    endif
+  endif
+endif
+
+# run testsuite ---------------
+with_check := yes
+# if you don't want to run the gcc testsuite, uncomment the next line
+#with_check := disabled by hand
+ifeq ($(with_base_only),yes)
+  with_check := no
+endif
+ifeq ($(DEB_CROSS),yes)
+  with_check := disabled for cross compiler package
+endif
+ifneq (,$(findstring cross-build-,$(build_type)))
+  with_check := disabled for cross building the compiler
+endif
+ifneq (,$(with_rtlibs))
+  with_check := disabled for rtlibs stage
+endif
+check_no_cpus := m68k
+check_no_systems := # gnu kfreebsd-gnu
+ifneq (,$(filter $(DEB_TARGET_ARCH_CPU),$(check_no_cpus)))
+  with_check := disabled for cpu $(DEB_TARGET_ARCH_CPU)
+endif
+ifneq (,$(findstring $(DEB_TARGET_GNU_SYSTEM),$(check_no_systems)))
+  with_check := disabled for system $(DEB_TARGET_GNU_SYSTEM)
+endif
+ifeq ($(derivative)-$(DEB_HOST_ARCH),Ubuntu-hppa)
+  ifneq ($(single_package),yes)
+    with_check := disabled, testsuite timeouts with expect
+  endif
+endif
+ifneq (,$(findstring gdc,$(PKGSOURCE)))
+  with_check := disabled for D
+endif
+with_check := $(call envfilt, check, , , $(with_check))
+ifdef WITHOUT_CHECK
+  with_check := disabled by environment
+endif
+ifneq ($(findstring nocheck, $(DEB_BUILD_OPTIONS)),)
+  with_check := disabled by DEB_BUILD_OPTIONS
+endif
+ifneq (,$(filter $(DEB_HOST_ARCH), hppa mips))
+  ifneq ($(single_package),yes)
+    with_check := disabled for $(DEB_HOST_ARCH), testsuite timeouts with expect
+  endif
+endif
+#with_check := disabled for this upload
+
+# not a dependency on all archs, but if available, use it for the testsuite
+ifneq (,$(wildcard /usr/bin/localedef))
+  locale_data = generate
+endif
+
+all_enabled_languages := $(enabled_languages)
+languages_without_lang_opt := c++ objc obj-c++
+
+debian_extra_langs := $(subst obj-c++,objcp,$(debian_extra_langs))
+export debian_extra_langs
+
+# multilib
+biarch_map := i686=x86_64 powerpc=powerpc64 sparc=sparc64 sparc64=sparc s390=s390x s390x=s390 \
+		x86_64=i686 powerpc64=powerpc mips=mips64 mipsel=mips64el \
+		mips64=mips mips64el=mipsel mipsn32=mips mipsn32el=mipsel
+ifneq (,$(filter $(derivative),Ubuntu))
+  ifeq (,$(filter $(distrelease),dapper hardy jaunty karmic lucid))
+    biarch_map := $(subst i686=,i486=,$(biarch_map))
+  endif
+else # Debian
+  biarch_map := $(subst i686=,i486=,$(biarch_map))
+endif
+
+ifeq ($(derivative),Ubuntu)
+  ifeq (,$(filter $(distrelease),dapper hardy jaunty karmic lucid maverick natty))
+    biarch_map += arm=arm
+  endif
+endif
+biarch_cpu := $(strip $(patsubst $(DEB_TARGET_GNU_CPU)=%,%, \
+			 $(filter $(DEB_TARGET_GNU_CPU)=%,$(biarch_map))))
+
+biarch64 := no
+biarch32 := no
+biarchn32 := no
+biarchx32 := no
+biarchhf := no
+biarchsf := no
+flavours :=
+define gen_biarch
+  ifneq (yes,$$(call envfilt, biarch, , ,yes))
+    biarch$1archs :=
+  endif
+  ifneq (,$$(findstring /$$(DEB_TARGET_ARCH)/,$$(biarch$1archs)))
+    biarch$1 := yes
+    flavours += $1
+    #biarch$1subdir = $$(biarch_cpu)-$$(DEB_TARGET_GNU_SYSTEM)
+    biarch$1subdir = $1
+    ifeq ($$(with_libgcc),yes)
+      with_lib$1gcc := yes
+    endif
+    ifeq ($$(with_cdev),yes)
+      with_lib$1gccdev := yes
+    endif
+    ifeq ($$(with_libcxx),yes)
+      with_lib$1cxx := yes
+    endif
+    ifeq ($$(with_libcxxdbg),yes)
+      with_lib$1cxxdbg := yes
+    endif
+    ifeq ($$(with_cxxdev),yes)
+      with_lib$1cxxdev := yes
+    endif
+    ifeq ($$(with_libobjc),yes)
+      with_lib$1objc := yes
+    endif
+    ifeq ($$(with_objcdev),yes)
+      with_lib$1objcdev := yes
+    endif
+    ifeq ($$(with_libgfortran),yes)
+      with_lib$1gfortran := yes
+    endif
+    ifeq ($$(with_fdev),yes)
+      with_lib$1gfortrandev := yes
+    endif
+    ifeq ($$(with_libphobos),yes)
+      ifeq (,$(filter $1, hf))
+        with_lib$1phobosdev := yes
+      endif
+    endif
+    ifeq ($$(with_libssp),yes)
+      with_lib$1ssp := yes
+    endif
+    ifeq ($$(with_libgomp),yes)
+      with_lib$1gomp:= yes
+    endif
+    ifeq ($$(with_libitm),yes)
+      with_lib$1itm:= yes
+    endif
+    ifeq ($$(with_libatomic),yes)
+      with_lib$1atomic:= yes
+    endif
+    ifeq ($$(with_libbacktrace),yes)
+      with_lib$1backtrace:= yes
+    endif
+    ifeq ($$(with_libasan),yes)
+      with_lib$1asan:= yes
+    endif
+    ifeq ($$(with_liblsan),yes)
+      with_lib$1lsan := yes
+    endif
+    ifeq ($$(with_libtsan),yes)
+      with_lib$1tsan:= yes
+    endif
+    ifeq ($$(with_libubsan),yes)
+      with_lib$1ubsan := yes
+    endif
+    ifeq ($$(with_libvtv),yes)
+      with_lib$1vtv := yes
+    endif
+    ifeq ($$(with_libcilkrts),yes)
+      with_lib$1cilkrts := yes
+    endif
+    ifeq ($$(with_libmpx),yes)
+      ifneq (,$(filter $1, 32 64))
+        with_lib$1mpx := yes
+      endif
+    endif
+    ifeq ($$(with_libqmath),yes)
+      with_lib$1qmath := yes
+    endif
+    ifeq ($$(with_libgo),yes)
+      with_lib$1go := yes
+    endif
+
+    biarch_multidir_names = libiberty libgcc libbacktrace libatomic libgomp
+    ifneq (,$$(findstring gcc-, $$(PKGSOURCE)))
+      biarch_multidir_names += libstdc++-v3 libobjc libgfortran libssp \
+				zlib libitm libmpx \
+				libsanitizer \
+				libcilkrts libvtv
+      ifeq ($$(with_objc_gc),yes)
+        biarch_multidir_names += boehm-gc
+      endif
+    endif
+    ifneq (,$(findstring yes, $(with_java) $(with_go)))
+      biarch_multidir_names += libffi
+    endif
+    ifeq ($(with_fortran),yes)
+      biarch_multidir_names += libquadmath
+    endif
+    ifeq ($(with_go),yes)
+      biarch_multidir_names += libgo
+    endif
+    ifeq ($(with_libphobos),yes)
+      ifeq (,$(filter $1, hf))
+        biarch_multidir_names += libphobos
+      endif
+    endif
+    ifneq (,$$(findstring 32,$1))
+      TARGET64_MACHINE := $$(strip $$(subst $$(DEB_TARGET_GNU_CPU),$$(biarch_cpu), \
+				$$(TARGET_ALIAS)))
+      TARGET32_MACHINE := $$(TARGET_ALIAS)
+    else
+      TARGET64_MACHINE := $$(TARGET_ALIAS)
+      TARGET64_MACHINE := $$(strip $$(subst $$(DEB_TARGET_GNU_CPU),$$(biarch_cpu), \
+				$$(TARGET_ALIAS)))
+    endif
+    export TARGET32_MACHINE
+    export TARGET64_MACHINE
+  endif
+endef
+biarch32archs := /amd64/ppc64/kfreebsd-amd64/s390x/sparc64/x32/mipsn32/mipsn32el/mips64/mips64el/
+biarch64archs := /i386/powerpc/sparc/s390/mips/mipsel/mipsn32/mipsn32el/x32/
+biarchn32archs := /mips/mipsel/mips64/mips64el/
+ifeq ($(derivative),Ubuntu)
+  ifeq (,$(filter $(distrelease),dapper hardy jaunty karmic lucid maverick natty))
+    biarchhfarchs := /armel/
+    biarchsfarchs := /armhf/
+  endif
+  ifeq (,$(filter $(distrelease),dapper hardy jaunty karmic lucid maverick natty oneiric precise quantal))
+    biarchx32archs := /amd64/i386/
+  endif
+endif
+ifeq ($(derivative),Debian)
+  ifeq (,$(filter $(distrelease),etch squeeze wheezy))
+    biarchx32archs := /amd64/i386/
+  endif
+endif
+$(foreach x,32 64 n32 x32 hf sf,$(eval $(call gen_biarch,$(x))))
+
+ifeq ($(DEB_TARGET_ARCH),sh4)
+  biarch_multidir_names=none
+endif
+export biarch_multidir_names
+
+#ifeq ($(trunk_build),yes)
+#  no_biarch_libs := yes
+#endif
+no_biarch_libs :=
+
+ifeq ($(no_biarch_libs),yes)
+  with_lib64gcc		:= no
+  with_lib64cxx		:= no
+  with_lib64cxxdbg	:= no
+  with_lib64objc	:= no
+  with_lib64ffi		:= no
+  with_lib64gcj		:= no
+  with_lib64gfortran	:= no
+  with_lib64ssp		:= no
+  with_lib64go		:= no
+  with_lib64gomp	:= no
+  with_lib64itm		:= no
+  with_lib64qmath	:= no
+  with_lib64atomic	:= no
+  with_lib64backtrace	:= no
+  with_lib64asan	:= no
+  with_lib64lsan	:= no
+  with_lib64tsan	:= no
+  with_lib64ubsan	:= no
+  with_lib64vtv		:= no
+  with_lib64cilkrts	:= no
+  with_lib64mpx		:= no
+  with_lib64gccdev	:= no
+  with_lib64cxxdev	:= no
+  with_lib64objcdev	:= no
+  with_lib64gfortrandev	:= no
+  with_lib64phobosdev	:= no
+
+  with_lib32gcc		:= no
+  with_lib32cxx		:= no
+  with_lib32cxxdbg	:= no
+  with_lib32objc	:= no
+  with_lib32ffi		:= no
+  with_lib32gcj		:= no
+  with_lib32gfortran	:= no
+  with_lib32ssp		:= no
+  with_lib32go		:= no
+  with_lib32gomp	:= no
+  with_lib32itm		:= no
+  with_lib32qmath	:= no
+  with_lib32atomic	:= no
+  with_lib32backtrace	:= no
+  with_lib32asan	:= no
+  with_lib32lsan	:= no
+  with_lib32tsan	:= no
+  with_lib32ubsan	:= no
+  with_lib32vtv		:= no
+  with_lib32cilkrts	:= no
+  with_lib32mpx		:= no
+  with_lib32gccdev	:= no
+  with_lib32cxxdev	:= no
+  with_lib32objcdev	:= no
+  with_lib32gfortrandev	:= no
+  with_lib32phobosdev	:= no
+
+  with_libn32gcc	:= no
+  with_libn32cxx	:= no
+  with_libn32cxxdbg	:= no
+  with_libn32objc	:= no
+  with_libn32ffi	:= no
+  with_libn32gcj	:= no
+  with_libn32gfortran	:= no
+  with_libn32ssp	:= no
+  with_libn32go		:= no
+  with_libn32gomp	:= no
+  with_libn32itm	:= no
+  with_libn32qmath	:= no
+  with_libn32atomic	:= no
+  with_libn32backtrace	:= no
+  with_libn32asan	:= no
+  with_libn32lsan	:= no
+  with_libn32tsan	:= no
+  with_libn32ubsan	:= no
+  with_libn32gccdev	:= no
+  with_libn32cxxdev	:= no
+  with_libn32objcdev	:= no
+  with_libn32gfortrandev:= no
+  with_libn32phobosdev	:= no
+
+  with_libx32gcc	:= no
+  with_libx32cxx	:= no
+  with_libx32cxxdbg	:= no
+  with_libx32objc	:= no
+  with_libx32ffi	:= no
+  with_libx32gcj	:= no
+  with_libx32gfortran	:= no
+  with_libx32ssp	:= no
+  with_libx32go		:= no
+  with_libx32gomp	:= no
+  with_libx32itm	:= no
+  with_libx32qmath	:= no
+  with_libx32atomic	:= no
+  with_libx32backtrace	:= no
+  with_libx32asan	:= no
+  with_libx32lsan	:= no
+  with_libx32tsan	:= no
+  with_libx32ubsan	:= no
+  with_libx32vtv	:= no
+  with_libx32cilkrts	:= no
+  with_libx32gccdev	:= no
+  with_libx32cxxdev	:= no
+  with_libx32objcdev	:= no
+  with_libx32gfortrandev:= no
+  with_libx32phobosdev	:= no
+
+  with_libhfgcc		:= no
+  with_libhfcxx		:= no
+  with_libhfcxxdbg	:= no
+  with_libhfobjc	:= no
+  with_libhfffi		:= no
+  with_libhfgcj		:= no
+  with_libhfgfortran	:= no
+  with_libhfssp		:= no
+  with_libhfgo		:= no
+  with_libhfgomp	:= no
+  with_libhfitm		:= no
+  with_libhfqmath	:= no
+  with_libhfatomic	:= no
+  with_libhfbacktrace	:= no
+  with_libhfasan	:= no
+  with_libhflsan	:= no
+  with_libhftsan	:= no
+  with_libhfubsan	:= no
+  with_libhfgccdev	:= no
+  with_libhfcxxdev	:= no
+  with_libhfobjcdev	:= no
+  with_libhfgfortrandev	:= no
+  with_libhfphobosdev	:= no
+
+  with_libsfgcc		:= no
+  with_libsfcxx		:= no
+  with_libsfcxxdbg	:= no
+  with_libsfobjc	:= no
+  with_libsfffi		:= no
+  with_libsfgcj		:= no
+  with_libsfgfortran	:= no
+  with_libsfssp		:= no
+  with_libsfgo		:= no
+  with_libsfgomp	:= no
+  with_libsfitm		:= no
+  with_libsfqmath	:= no
+  with_libsfatomic	:= no
+  with_libsfbacktrace	:= no
+  with_libsfasan	:= no
+  with_libsflsan	:= no
+  with_libsftsan	:= no
+  with_libsfubsan	:= no
+  with_libsfgccdev	:= no
+  with_libsfcxxdev	:= no
+  with_libsfobjcdev	:= no
+  with_libsfgfortrandev	:= no
+  with_libsfphobosdev	:= no
+
+  with_java_plugin := no
+
+  ifeq ($(with_ada)-$(with_separate_gnat),yes-yes)
+    biarchhf	:= disabled for Ada
+    biarchsf	:= disabled for Ada
+  endif
+
+endif
+
+ifneq (,$(filter yes,$(biarch32) $(biarch64) $(biarchn32) $(biarchx32) $(biarchhf) $(biarchsf)))
+  multilib := yes
+endif
+
+multilib_archs = $(sort $(subst /, , $(biarch64archs) $(biarch32archs) $(biarchn32archs) $(biarchx32archs) $(biarchhfarchs) $(biarchsfarchs)))
+
+biarchsubdirs := \
+  $(if $(filter yes,$(biarch64)),$(biarch64subdir),) \
+  $(if $(filter yes,$(biarch32)),$(biarch32subdir),) \
+  $(if $(filter yes,$(biarchn32)),$(biarchn32subdir),) \
+  $(if $(filter yes,$(biarchx32)),$(biarchx32subdir),) \
+  $(if $(filter yes,$(biarchhf)),$(biarchhfsubdir),) \
+  $(if $(filter yes,$(biarchsf)),$(biarchsfsubdir),)
+biarchsubdirs := {$(strip $(shell echo $(biarchsubdirs) | tr " " ","))}
+
+# GNU locales
+force_gnu_locales := yes
+locale_no_cpus :=
+locale_no_systems :=
+ifneq (,$(findstring $(DEB_TARGET_GNU_SYSTEM),$(locale_no_systems)))
+  force_gnu_locales := disabled for system $(DEB_TARGET_GNU_SYSTEM)
+endif
+
+gcc_tarpath		:= $(firstword $(wildcard gcc-*.tar.* /usr/src/gcc-5/gcc-*.tar.*))
+gcc_tarball		:= $(notdir $(gcc_tarpath))
+gcc_srcdir		:= $(subst -dfsg,,$(patsubst %.tar.xz,%,$(patsubst %.tar.lzma,%,$(patsubst %.tar.gz,%,$(gcc_tarball:.tar.bz2=)))))
+
+ifeq ($(with_d),yes)
+  gdc_tarpath		:= $(firstword $(wildcard gdc-*.tar.* /usr/src/gcc-$(BASE_VERSION)/gdc-*.tar.*))
+  gdc_tarball		:= $(notdir $(gdc_tarpath))
+  gdc_srcdir		:= $(patsubst %.tar.xz,%,$(patsubst %.tar.lzma,%,$(patsubst %.tar.gz,%,$(gdc_tarball:.tar.bz2=))))
+endif
+
+# NOTE: This is not yet used. when building gcj, gdc or gnat using the
+# gcc-source package, we don't require an exact binary dependency.
+ifneq ($(dir $(gcc_tarpath)),./)
+  built_using_external_source := yes
+else
+  built_using_external_source :=
+endif
+ifeq ($(DEB_CROSS),yes)
+  add_built_using = yes
+endif
+ifeq ($(with_ada)-$(with_separate_gnat),yes-yes)
+  add_built_using = yes
+endif
+
+ecj_jar := $(firstword $(wildcard ecj.jar /usr/share/java/eclipse-ecj.jar /usr/share/java/ecj.jar))
+
+unpack_stamp		:= $(stampdir)/01-unpack-stamp
+pre_patch_stamp		:= $(stampdir)/02-pre-patch-stamp
+patch_stamp		:= $(stampdir)/02-patch-stamp
+control_stamp		:= $(stampdir)/03-control-stamp
+configure_stamp		:= $(stampdir)/04-configure-stamp
+build_stamp		:= $(stampdir)/05-build-stamp
+build_arch_stamp	:= $(stampdir)/05-build-arch-stamp
+build_indep_stamp	:= $(stampdir)/05-build-indep-stamp
+build_html_stamp	:= $(stampdir)/05-build-html-stamp
+build_locale_stamp	:= $(stampdir)/05-build-locale-stamp
+build_doxygen_stamp	:= $(stampdir)/05-build-doxygen-stamp
+build_javasrc_stamp	:= $(stampdir)/05-build-javasrc-stamp
+build_javadoc_stamp	:= $(stampdir)/05-build-javadoc-stamp
+build_gnatdoc_stamp	:= $(stampdir)/05-build-gnatdoc-stamp
+check_stamp		:= $(stampdir)/06-check-stamp
+check_inst_stamp	:= $(stampdir)/06-check-inst-stamp
+install_stamp		:= $(stampdir)/07-install-stamp
+install_snap_stamp	:= $(stampdir)/07-install-snap-stamp
+binary_stamp		:= $(stampdir)/08-binary-stamp
+
+configure_dummy_stamp	:= $(stampdir)/04-configure-dummy-stamp
+build_dummy_stamp	:= $(stampdir)/05-build-dummy-stamp
+install_dummy_stamp	:= $(stampdir)/07-install-dummy-stamp
+
+configure_jit_stamp	:= $(stampdir)/04-configure-jit-stamp
+build_jit_stamp		:= $(stampdir)/05-build-jit-stamp
+install_jit_stamp	:= $(stampdir)/07-install-jit-stamp
+
+configure_hppa64_stamp	:= $(stampdir)/04-configure-hppa64-stamp
+build_hppa64_stamp	:= $(stampdir)/05-build-hppa64-stamp
+install_hppa64_stamp	:= $(stampdir)/07-install-hppa64-stamp
+
+configure_neon_stamp	:= $(stampdir)/04-configure-neon-stamp
+build_neon_stamp		:= $(stampdir)/05-build-neon-stamp
+install_neon_stamp	:= $(stampdir)/07-install-neon-stamp
+
+control_dependencies	:= $(patch_stamp)
+
+ifeq ($(single_package),yes)
+    configure_dependencies = $(configure_stamp)
+    build_dependencies = $(build_stamp)
+    install_dependencies = $(install_snap_stamp)
+    ifeq ($(with_check),yes)
+      check_dependencies += $(check_stamp)
+    endif
+else
+  ifeq ($(with_base_only),yes)
+    configure_dependencies = $(configure_dummy_stamp)
+    build_dependencies = $(build_dummy_stamp)
+    install_dependencies = $(install_dummy_stamp)
+  else
+    configure_dependencies = $(configure_stamp)
+    build_dependencies = $(build_stamp)
+    install_dependencies = $(install_stamp)
+    ifeq ($(with_check),yes)
+      check_dependencies += $(check_stamp)
+    endif
+  endif
+endif
+
+ifneq (,$(findstring gcj-, $(PKGSOURCE)))
+  ifeq ($(with_gcj_base_only),yes)
+    configure_dependencies = $(configure_dummy_stamp)
+    build_dependencies = $(build_dummy_stamp)
+    install_dependencies = $(install_dummy_stamp)
+  endif
+endif
+
+ifeq ($(with_jit),yes)
+  build_dependencies += $(build_jit_stamp)
+  install_dependencies += $(install_jit_stamp)
+endif
+
+ifeq ($(with_neon),yes)
+  build_dependencies += $(build_neon_stamp)
+  install_dependencies += $(install_neon_stamp)
+endif
+
+ifeq ($(with_hppa64),yes)
+  build_dependencies += $(build_hppa64_stamp)
+  ifneq ($(trunk_build),yes)
+    install_dependencies += $(install_hppa64_stamp)
+  endif
+endif
+
+build_dependencies += $(check_dependencies)
+
+build_arch_dependencies = $(build_dependencies)
+build_indep_dependencies = $(build_dependencies)
+
+ifneq (,$(findstring build-native, $(build_type)))
+  ifneq ($(single_package),yes)
+    build_indep_dependencies += $(build_html_stamp)
+    ifeq ($(with_cxx),yes)
+      build_indep_dependencies += $(build_doxygen_stamp)
+    endif
+    ifeq ($(with_java),yes)
+      build_arch_dependencies += $(build_html_stamp)
+      build_indep_dependencies += $(build_javasrc_stamp)
+      build_indep_dependencies += $(build_javadoc_stamp)
+    endif
+    ifeq ($(with_ada),yes)
+      build_indep_dependencies += $(build_gnatdoc_stamp)
+    endif
+  endif
+endif
+
+stamp-dir:
+	mkdir -p $(stampdir)
+
+ifeq ($(DEB_CROSS),yes)
+  define cross_mangle_shlibs
+	if [ -f debian/$(1)/DEBIAN/shlibs ]; then \
+	  sed -i s/$(cross_lib_arch)//g debian/$(1)/DEBIAN/shlibs; \
+	fi
+  endef
+  define cross_mangle_substvars
+	if [ -f debian/$(1).substvars ]; then \
+	  sed -i 's/lib[^ ,(]*/&$(cross_lib_arch)/g' debian/$(1).substvars; \
+	fi
+  endef
+else
+  define cross_mangle_shlibs
+  endef
+  define cross_mangle_substvars
+  endef
+  # precise's dh_shlibdeps doesn't work well for ARM multilibs
+  # and dh_shlibdeps doesn't work well for cross builds, see #698881.
+  ifneq (,$(filter $(distrelease),precise quantal raring))
+    ifneq (,$(filter $(DEB_TARGET_ARCH), armel armhf arm64))
+      ignshld = -
+    endif
+  endif
+endif
+ifeq ($(DEB_STAGE),rtlibs)
+  define cross_mangle_shlibs
+  endef
+  define cross_mangle_substvars
+  endef
+endif
+
+# takes a *list* of package names as $1, the multilib dirname as $2
+_shlibdirs = \
+	$(if $(strip $(1)), \
+	  $(shell find $(foreach p,$(1),$(CURDIR)/debian/$(p)) \
+		-name '*.so.*' -printf '%h ' | uniq)) \
+	$(with_build_sysroot)/lib/$(call mlib_to_march,$(2)) \
+	$(with_build_sysroot)/usr/lib/$(call mlib_to_march,$(2)) \
+	$(with_build_sysroot)$(subst /usr,,/$(usr_lib$(2))) \
+	$(with_build_sysroot)/$(usr_lib$(2)) \
+	$(if $(filter yes,$(biarchsf) $(biarchhf)), \
+	  $(with_build_sysroot)/usr/$(call mlib_to_march,$(2))/lib)
+shlibdirs_to_search = -l$(subst $(SPACE),:,$(foreach d,$(_shlibdirs),$(d)))
diff --git a/debian/rules.patch b/debian/rules.patch
new file mode 100644
index 0000000..f208bfd
--- /dev/null
+++ b/debian/rules.patch
@@ -0,0 +1,414 @@
+# -*- makefile -*-
+# rules to patch the unpacked files in the source directory
+# ---------------------------------------------------------------------------
+# various rules to unpack addons and (un)apply patches.
+# 	- patch / apply-patches
+#	- unpatch / reverse-patches
+
+.NOTPARALLEL:
+
+patchdir	?= debian/patches
+series_file	?= $(patchdir)/series
+
+# which patches should be applied?
+
+debian_patches = \
+	svn-updates \
+	$(if $(with_linaro_branch),gcc-linaro-revert-r230427) \
+	$(if $(with_linaro_branch),gcc-linaro) \
+	$(if $(with_linaro_branch),gcc-linaro-no-macros) \
+
+#	svn-updates \
+
+ifeq ($(with_java),yes)
+#  debian_patches += \
+#	svn-class-updates
+endif
+
+ifneq ($(GFDL_INVARIANT_FREE),yes)
+  debian_patches += \
+	$(if $(with_linaro_branch),gcc-linaro-doc) \
+	rename-info-files \
+	gcc-configure-pie-doc \
+
+#	svn-doc-updates \
+#	$(if $(with_linaro_branch),,svn-doc-updates) \
+
+else
+endif
+debian_patches += \
+	gcc-gfdl-build
+
+#	boehm-gc-nocheck: seems to work on the buildds \
+
+debian_patches += \
+	gcc-textdomain \
+	gcc-driver-extra-langs$(if $(with_linaro_branch),-linaro)
+
+ifneq (,$(filter $(distrelease),etch lenny squeeze wheezy dapper hardy intrepid jaunty karmic lucid))
+  debian_patches += gcc-hash-style-both
+else
+  debian_patches += gcc-hash-style-gnu
+endif
+
+debian_patches += \
+	libstdc++-pic \
+	libstdc++-doclink \
+	libstdc++-man-3cxx \
+	libstdc++-test-installed \
+	libjava-stacktrace \
+	libjava-jnipath \
+	libjava-sjlj \
+	libjava-disable-plugin \
+	alpha-no-ev4-directive \
+	boehm-gc-getnprocs \
+	note-gnu-stack \
+	libgomp-omp_h-multilib \
+	sparc-force-cpu \
+	gccgo-version \
+	pr47818 \
+	gcc-base-version \
+	libgo-testsuite \
+	gcc-target-include-asm \
+	libgo-revert-timeout-exp \
+	libgo-setcontext-config \
+	gcc-auto-build \
+	kfreebsd-unwind \
+	kfreebsd-boehm-gc \
+	hurd-boehm-gc \
+	libitm-no-fortify-source \
+	sparc64-biarch-long-double-128 \
+	gcc-ia64-bootstrap-ignore \
+	gotools-configury \
+	go-escape-analysis \
+	go-escape-analysis2 \
+	go-escape-analysis3 \
+	go-escape-analysis4 \
+	go-escape-analysis5 \
+	go-escape-analysis6 \
+	pr66368 \
+	pr67508 \
+	pr67590 \
+	gcc-configure-pie \
+	ada-gnattools-ldflags \
+	libjit-ldflags \
+
+# this is still needed on powerpc, e.g. firefox and insighttoolkit4 will ftbfs.
+ifneq (,$(filter $(DEB_TARGET_ARCH),powerpc))
+  debian_patches += pr65913-workaround
+endif
+
+ifeq ($(libstdcxx_abi),new)
+  debian_patches += libstdc++-functexcept
+endif
+
+# don't apply yet, test it first ...
+#	go-escape-analysis \
+#	go-escape-analysis2 \
+#	go-escape-analysis3 \
+#	go-escape-analysis4 \
+#	go-escape-analysis5 \
+#	go-escape-analysis6 \
+
+#	$(if $(filter yes, $(DEB_CROSS)),,gcc-print-file-name) \
+#	libstdc++-nothumb-check \
+# TODO: update ...
+#	libjava-rpath \
+
+hardening_patches =
+ifeq ($(with_ssp)-$(with_ssp_default),yes-yes)
+  hardening_patches += gcc-default-ssp
+  hardening_patches += gcc-default-format-security
+  ifeq (,$(filter $(distrelease),dapper hardy lucid maverick natty oneiric precise quantal raring saucy trusty))
+    hardening_patches += gcc-default-ssp-strong
+  endif
+endif
+ifeq ($(distribution),Ubuntu)
+  ifneq (,$(findstring gcc-5, $(PKGSOURCE)))
+    hardening_patches += \
+	gcc-default-fortify-source \
+	gcc-default-relro \
+	testsuite-hardening-format \
+	testsuite-hardening-printf-types \
+	testsuite-hardening-updates \
+	testsuite-glibc-warnings
+  endif
+endif
+
+# FIXME 4.5: Drop and adjust symbols files
+ifneq (,$(findstring 4.4, $(PKGSOURCE)))
+  debian_patches += pr39491
+endif
+
+debian_patches += ada-arm
+debian_patches += ada-hurd
+debian_patches += ada-kfreebsd
+debian_patches += ada-revert-pr63225
+
+ifeq ($(with_ada),yes)
+  debian_patches += \
+	ada-driver-check \
+	ada-gcc-name \
+	ada-default-project-path \
+	ada-library-project-files-soname
+
+	# FIXME: needs update
+	#ada-symbolic-tracebacks \
+
+  ifeq ($(biarch64),yes)
+    debian_patches += \
+	ada-nobiarch-check
+  endif
+
+  ifeq ($(with_libgnat),yes)
+    debian_patches += \
+	ada-link-lib \
+	ada-libgnatvsn \
+	ada-libgnatprj \
+	ada-gnattools-cross \
+	ada-acats
+    #ifneq (,$(filter $(build_type), build-cross cross-build-cross))
+	debian_patches += libgnatprj-cross-hack
+    #endif
+    ifneq (,$(filter $(distrelease),lucid precise))
+      debian_patches += \
+	libgnatprj-link
+    endif
+  endif
+  ifeq ($(with_gnatsjlj),yes)
+    debian_patches += \
+	ada-sjlj
+  endif
+
+  debian_patches += ada-link-shlib
+endif
+
+ifeq ($(with_d),yes)
+  debian_patches += \
+	gdc-5 \
+	gdc-versym-cpu \
+	gdc-versym-os \
+	gdc-frontend-posix \
+	gdc-base-version \
+	gdc-profiledbuild
+#	gdc-updates
+#	gdc-multiarch
+  ifneq ($(GFDL_INVARIANT_FREE),yes)
+    debian_patches += gdc-5-doc
+  else
+    debian_patches += gdc-texinfo
+  endif
+  ifeq ($(with_libphobos),yes)
+    debian_patches += gdc-libphobos-build
+  else
+    debian_patches += gdc-driver-nophobos
+  endif
+  ifeq (,$(filter $(DEB_TARGET_ARCH),amd64 i386))
+    debian_patches += disable-gdc-tests
+  endif
+else
+  debian_patches += gcc-d-lang
+endif
+
+ifeq ($(DEB_TARGET_ARCH),alpha)
+  debian_patches += alpha-ieee
+  ifneq ($(GFDL_INVARIANT_FREE),yes)
+    debian_patches += alpha-ieee-doc
+  endif
+endif
+
+ifneq (,$(findstring $(DEB_TARGET_ARCH),arm armel armhf))
+  debian_patches += libjava-armel-unwind
+endif
+
+ifeq ($(DEB_TARGET_ARCH),armhf)
+ debian_patches += gcj-arm-mode
+else ifeq ($(DEB_TARGET_ARCH),armel)
+  ifneq (,$(filter $(distrelease),lucid maverick natty oneiric precise))
+    debian_patches += gcj-arm-mode
+  endif
+endif
+
+ifeq ($(DEB_TARGET_ARCH),powerpcspe)
+  debian_patches += powerpc_remove_many
+  debian_patches += powerpc_nofprs
+  # fix-powerpcspe.diff only partially applied upstream
+  debian_patches += fix-powerpcspe
+endif
+
+#debian_patches += link-libs
+
+# all patches below this line are applied for gcc-snapshot builds as well
+
+ifeq ($(single_package),yes)
+  debian_patches =
+endif
+
+debian_patches += $(if $(with_linaro_branch),,gcc-sysroot)
+debian_patches += \
+	sys-auxv-header \
+	libcilkrts-targets \
+	go-use-gold \
+
+ifeq ($(with_softfloat),yes)
+  debian_patches += arm-multilib-soft-float
+else ifeq ($(multilib),yes)
+  ifneq (,$(filter $(distrelease),lucid maverick natty oneiric precise))
+    debian_patches += arm-multilib-softfp$(if $(filter yes,$(DEB_CROSS)),-cross)
+  else
+    debian_patches += arm-multilib-soft$(if $(filter yes,$(DEB_CROSS)),-cross)
+  endif
+endif
+debian_patches += arm-multilib-defaults
+
+ifeq ($(DEB_CROSS),yes)
+  debian_patches += cross-fixes
+  debian_patches += cross-install-location
+  ifeq ($(with_d),yes)
+    debian_patches += gdc-cross-install-location
+  endif
+endif
+
+ifeq ($(DEB_TARGET_ARCH_OS),hurd)
+  debian_patches += hurd-changes
+endif
+
+debian_patches += gcc-ice-dump
+debian_patches += gcc-ice-apport
+debian_patches += skip-bootstrap-multilib
+debian_patches += libjava-fixed-symlinks
+debian_patches += libffi-ro-eh_frame_sect
+
+# sigaction on sparc changed between glibc 2.19 and 2.21
+ifeq (,$(filter 2.1%, $(shell dpkg-query -l libc-bin | awk '/^.i/ {print $$3}')))
+  debian_patches += pr67899
+endif
+
+debian_patches += gcc-multiarch
+ifeq ($(with_multiarch_lib),yes)
+  ifneq ($(single_package),yes)
+    debian_patches += libjava-multiarch
+  endif
+endif
+debian_patches += libjava-nobiarch-check
+debian_patches += config-ml
+ifneq ($(single_package),yes)
+  ifeq ($(with_multiarch_cxxheaders),yes)
+    debian_patches += g++-multiarch-incdir
+    debian_patches += canonical-cpppath
+  endif
+endif
+ifneq (,$(filter $(build_type), build-cross cross-build-cross))
+  debian_patches += cross-no-locale-include
+  debian_patches += cross-biarch
+  ifeq ($(with_libphobos),yes)
+    debian_patches += gdc-cross-biarch
+  endif
+endif
+debian_patches += gcc-multilib-multiarch
+
+ifneq (,$(filter $(derivative),Ubuntu))
+  ifeq (,$(filter $(distrelease),dapper hardy intrepid jaunty karmic lucid maverick))
+    debian_patches += gcc-as-needed
+  endif
+else # Debian
+    #debian_patches += gcc-as-needed
+endif
+ifeq ($(DEB_TARGET_ARCH),mipsel)
+  debian_patches += mips-fix-loongson2f-nop
+endif
+
+debian_patches += libgomp-kfreebsd-testsuite
+debian_patches += go-testsuite
+# FIXME: Still relevant?
+#debian_patches += pr61106
+
+# Ada patches needed for both the stable package and snapshot builds
+debian_patches += ada-749574
+debian_patches += ada-mips
+debian_patches += ada-bootstrap-compare
+ifeq ($(DEB_TARGET_ARCH),m68k)
+  debian_patches += ada-m68k
+  ifeq ($(with_ada),yes)
+    debian_patches += m68k-revert-pr45144
+  endif
+endif
+
+
+# don't remove, this is regularly overwritten, see PR sanitizer/63958.
+#debian_patches += libasan-sparc
+
+series_stamp = $(stampdir)/02-series-stamp
+series: $(series_stamp)
+$(series_stamp):
+	echo $(strip $(addsuffix .diff,$(debian_patches))) \
+	  | sed -r 's/  +/ /g' | tr " " "\n" > $(series_file)
+ifneq (,$(strip $(hardening_patches)))
+  ifneq ($(trunk_build),yes)
+	echo $(strip $(addsuffix .diff,$(hardening_patches))) \
+	  | sed -r 's/  +/ /g' | tr " " "\n" >> $(series_file)
+  endif
+endif
+	sed -r 's/(.)$$/\1 -p1/' -i $(series_file)
+	touch $@
+
+autoconf_files = $(filter-out src/libjava/classpath/m4/acinclude.m4, \
+	  $(shell lsdiff --no-filename $(foreach patch,$(debian_patches),$(patchdir)/$(patch).diff) \
+	    | sed -rn '/(configure\.ac|acinclude.m4)$$/s:[^/]+/src/:src/:p' | sort -u))
+autoconf_dirs = $(sort $(dir $(autoconf_files)))
+
+automake_files = $(addprefix ./, $(filter-out none, \
+	  $(shell lsdiff --no-filename $(foreach patch,$(debian_patches),$(patchdir)/$(patch).diff) \
+	    | sed -rn '/Makefile\.(am|in)$$/s:[^/]+/src/:src/:p' | sort -u)))
+
+autoconf_version = 2.64
+ifeq ($(trunk_build),yes)
+  # The actual version depends on the build-dependencies set by
+  # variable AUTO_BUILD_DEP in rules.conf.  Here, we assume the
+  # correct version is installed.
+  #autoconf_version =
+endif
+
+# FIXME: the auto* stuff is done every time for every subdir, which
+# leads to build errors. Idea: record the auto* calls in the patch
+# files (AUTO <dir> <auto-command with options>) and run them separately,
+# maybe only once per directory).
+$(patch_stamp): $(unpack_stamp) $(series_stamp)
+	sync
+	QUILT_PATCHES=$(patchdir) \
+	  quilt --quiltrc /dev/null push -a || test $$? = 2
+
+ifneq (,$(filter svn-updates, $(debian_patches)))
+	awk '/^EOF/ {exit} p==1 {print} /EOF$$/ {p=1}' \
+	  $(patchdir)/svn-updates.diff > src/LAST_UPDATED
+endif
+
+	: # only needed when we have changes, and currently fails with autogen 5.18
+	: #cd $(srcdir)/fixincludes && ./genfixes
+
+	sync
+	echo -n $(autoconf_dirs) | xargs -d ' ' -L 1 -P $(USE_CPUS) -I{} \
+	  sh -c 'echo "Running autoconf$(autoconf_version) in {}..." ; \
+	  cd $(CURDIR)/{} && \
+	  AUTOM4TE=/usr/bin/autom4te$(autoconf_version) autoconf$(autoconf_version)'
+
+	for i in $(debian_patches) $(hardening_patches); do \
+	  echo -e "\n$$i:" >> pxxx; \
+	  sed -n 's/^# *DP: */  /p' $(patchdir)/$$i.diff >> pxxx; \
+	done
+#	-$(srcdir)/move-if-change pxxx $@
+	mv pxxx $@
+
+unpatch:
+	QUILT_PATCHES=$(patchdir) \
+	  quilt --quiltrc /dev/null pop -a -R || test $$? = 2
+	rm -rf .pc
+
+update-patches: $(series_stamp)
+	export QUILT_PATCHES=$(patchdir); \
+	export QUILT_REFRESH_ARGS="--no-timestamps --no-index -pab"; \
+	export QUILT_DIFF_ARGS="--no-timestamps --no-index -pab"; \
+	while quilt push; do quilt refresh; done
+
+patch: $(patch_stamp)
+.PHONY: patch series quilt autotools
diff --git a/debian/rules.sonames b/debian/rules.sonames
new file mode 100644
index 0000000..812c16c
--- /dev/null
+++ b/debian/rules.sonames
@@ -0,0 +1,109 @@
+ifneq ($(vafilt_defined),1)
+  $(error rules.defs must be included before rules.sonames)
+endif
+
+ifeq (,$(wildcard debian/soname-cache))
+  SONAME_VARS := $(shell \
+	cache=debian/soname-cache; \
+	rm -f $$cache; \
+	v=`awk -F= '/^libtool_VERSION/ {split($$2,v,":"); print v[1]}' \
+		$(srcdir)/libstdc++-v3/acinclude.m4`; \
+	echo CXX_SONAME=$$v >> $$cache; \
+	v=`awk -F= '/^VERSION/ {split($$2,v,":"); print v[1]}' \
+		$(srcdir)/libobjc/configure.ac`; \
+	echo OBJC_SONAME=$$v >> $$cache; \
+	v=`tail -1 $(srcdir)/libgfortran/libtool-version | cut -d: -f1`; \
+	echo FORTRAN_SONAME=$$v >> $$cache; \
+	v=`tail -1 $(srcdir)/libssp/libtool-version | cut -d: -f1`; \
+	echo SSP_SONAME=$$v >> $$cache; \
+	v=`tail -1 $(srcdir)/libjava/libtool-version | cut -d: -f1`; \
+	echo GCJ_SONAME=$$v >> $$cache; \
+	if [ "$$v" -ge 70 ]; then \
+	  echo GCJ_SONAME1=`echo $$v | sed 's/.$$//'` >> $$cache; \
+	  echo GCJ_SONAME2=`echo $$v | sed 's/.*\(.\)$$/\1/'` >> $$cache; \
+	else \
+	  echo GCJ_SONAME1=$$v >> $$cache; \
+	  echo GCJ_SONAME2= >> $$cache; \
+	fi; \
+	v=`tail -1 $(srcdir)/libffi/libtool-version | cut -d: -f1`; \
+	echo FFI_SONAME=$$v >> $$cache; \
+	v=`awk -F= '/^libtool_VERSION/ {split($$2,v,":"); print v[1]}' \
+		$(srcdir)/libgomp/configure.ac`; \
+	echo GOMP_SONAME=$$v >> $$cache; \
+	v=`tail -1 $(srcdir)/libsanitizer/asan/libtool-version | cut -d: -f1`; \
+	echo ASAN_SONAME=$$v >> $$cache; \
+	v=`tail -1 $(srcdir)/libsanitizer/lsan/libtool-version | cut -d: -f1`; \
+	echo LSAN_SONAME=$$v >> $$cache; \
+	v=`tail -1 $(srcdir)/libsanitizer/tsan/libtool-version | cut -d: -f1`; \
+	echo TSAN_SONAME=$$v >> $$cache; \
+	v=`tail -1 $(srcdir)/libsanitizer/ubsan/libtool-version | cut -d: -f1`; \
+	echo UBSAN_SONAME=$$v >> $$cache; \
+        if [ "$(with_atomic)" = yes ]; then \
+	  v=`awk -F= '/^libtool_VERSION/ {split($$2,v,":"); print v[1]}' \
+		$(srcdir)/libatomic/configure.ac`; \
+          v=1; \
+	  echo ATOMIC_SONAME=$$v >> $$cache; \
+	fi; \
+        if [ "$(with_backtrace)" = yes ]; then \
+	  v=`awk -F= '/^libtool_VERSION/ {split($$2,v,":"); print v[1]}' \
+		$(srcdir)/libbacktrace/configure.ac`; \
+	  echo BTRACE_SONAME=$$v >> $$cache; \
+	fi; \
+        if [ "$(with_qmath)" = yes ]; then \
+	  v=`tail -1 $(srcdir)/libquadmath/libtool-version | cut -d: -f1`; \
+	  echo QUADMATH_SONAME=$$v >> $$cache; \
+	fi; \
+        if [ "$(with_libgmath)" = yes ]; then \
+	  v=`tail -1 $(srcdir)/libgcc-math/libtool-version | cut -d: -f1`; \
+	  echo GCCMATH_SONAME=$$v >> $$cache; \
+	fi; \
+	v=`grep '[^_]Library_Version.*:' $(srcdir)/gcc/ada/gnatvsn.ads \
+		| sed -e 's/.*"\([^"]*\)".*/\1/'`; \
+	echo GNAT_SONAME=$$v >> $$cache; \
+        if [ "$(with_go)" = yes ]; then \
+	  v=`awk -F= '/^libtool_VERSION/ {split($$2,v,":"); print v[1]}' \
+		$(srcdir)/libgo/configure.ac`; \
+	  echo GO_SONAME=$$v >> $$cache; \
+	fi; \
+	echo ITM_SONAME=1 >> $$cache; \
+	v=`awk -F= '/^libtool_VERSION/ {split($$2,v,":"); print v[1]}' \
+		$(srcdir)/libvtv/configure.ac`; \
+	v=0; \
+	echo VTV_SONAME=$$v >> $$cache; \
+	echo CILKRTS_SONAME=5 >> $$cache; \
+	echo CC1_SONAME=0 >> $$cache; \
+	echo GCCJIT_SONAME=0 >> $$cache; \
+	echo MPX_SONAME=0 >> $$cache; \
+	cat $$cache)
+else
+  SONAME_VARS := $(shell cat debian/soname-cache)
+endif
+CXX_SONAME	= $(call vafilt,$(SONAME_VARS),CXX_SONAME)
+OBJC_SONAME	= $(call vafilt,$(SONAME_VARS),OBJC_SONAME)
+FORTRAN_SONAME	= $(call vafilt,$(SONAME_VARS),FORTRAN_SONAME)
+SSP_SONAME	= $(call vafilt,$(SONAME_VARS),SSP_SONAME)
+GCJ_SONAME	= $(call vafilt,$(SONAME_VARS),GCJ_SONAME)
+GCJ_SONAME1	= $(call vafilt,$(SONAME_VARS),GCJ_SONAME1)
+GCJ_SONAME2	= $(call vafilt,$(SONAME_VARS),GCJ_SONAME2)
+FFI_SONAME	= $(call vafilt,$(SONAME_VARS),FFI_SONAME)
+GOMP_SONAME	= $(call vafilt,$(SONAME_VARS),GOMP_SONAME)
+ATOMIC_SONAME	= $(call vafilt,$(SONAME_VARS),ATOMIC_SONAME)
+BTRACE_SONAME	= $(call vafilt,$(SONAME_VARS),BTRACE_SONAME)
+ASAN_SONAME	= $(call vafilt,$(SONAME_VARS),ASAN_SONAME)
+LSAN_SONAME	= $(call vafilt,$(SONAME_VARS),LSAN_SONAME)
+TSAN_SONAME	= $(call vafilt,$(SONAME_VARS),TSAN_SONAME)
+UBSAN_SONAME	= $(call vafilt,$(SONAME_VARS),UBSAN_SONAME)
+VTV_SONAME	= $(call vafilt,$(SONAME_VARS),VTV_SONAME)
+CILKRTS_SONAME	= $(call vafilt,$(SONAME_VARS),CILKRTS_SONAME)
+GCCMATH_SONAME	= $(call vafilt,$(SONAME_VARS),GCCMATH_SONAME)
+QUADMATH_SONAME	= $(call vafilt,$(SONAME_VARS),QUADMATH_SONAME)
+GNAT_SONAME	= $(call vafilt,$(SONAME_VARS),GNAT_SONAME)
+GO_SONAME	= $(call vafilt,$(SONAME_VARS),GO_SONAME)
+ITM_SONAME	= $(call vafilt,$(SONAME_VARS),ITM_SONAME)
+CC1_SONAME	= $(call vafilt,$(SONAME_VARS),CC1_SONAME)
+GCCJIT_SONAME	= $(call vafilt,$(SONAME_VARS),GCCJIT_SONAME)
+MPX_SONAME	= $(call vafilt,$(SONAME_VARS),MPX_SONAME)
+
+# alias
+GFORTRAN_SONAME = $(FORTRAN_SONAME)
+STDC++_SONAME = $(CXX_SONAME)
diff --git a/debian/rules.source b/debian/rules.source
new file mode 100644
index 0000000..a11b595
--- /dev/null
+++ b/debian/rules.source
@@ -0,0 +1,15 @@
+SOURCE_DIR := $(dir $(lastword $(MAKEFILE_LIST)))
+patchdir = $(SOURCE_DIR)/patches
+
+include $(SOURCE_DIR)/debian/rules.defs
+include $(SOURCE_DIR)/debian/rules.patch
+include $(SOURCE_DIR)/debian/rules.unpack
+
+patch-source: $(patch_stamp)
+
+clean-source:
+	rm -rf $(stampdir)
+	rm -rf $(gcc_srcdir) $(gdc_srcdir)
+	rm -rf bin
+	rm -rf $(srcdir)
+
diff --git a/debian/rules.unpack b/debian/rules.unpack
new file mode 100644
index 0000000..ec239c5
--- /dev/null
+++ b/debian/rules.unpack
@@ -0,0 +1,244 @@
+# -*- makefile -*-
+# rules to unpack the source tarballs in $(srcdir); if the source dir already
+# exists, the rule exits with an error to prevent deletion of modified
+# source files. It has to be deleted manually.
+
+tarballs = $(gcc_tarball) # $(gcj_tarball)
+ifeq ($(with_d),yes)
+  tarballs += $(gdc_tarball)
+endif
+
+unpack_stamps = $(foreach i,$(tarballs),$(unpack_stamp)-$(i))
+
+unpack: stamp-dir $(unpack_stamp) debian-chmod
+$(unpack_stamp): $(unpack_stamps)
+$(unpack_stamp): $(foreach p,$(debian_tarballs),unpacked-$(p))
+	echo -e "\nBuilt from Debian source package $(PKGSOURCE)-$(SOURCE_VERSION)" \
+		> pxxx
+	echo -e "Integrated upstream packages in this version:\n" >> pxxx
+	for i in $(tarballs); do echo "  $$i" >> pxxx; done
+	mv -f pxxx $@
+
+debian-chmod:
+	@chmod 755 debian/dh_*
+
+# ---------------------------------------------------------------------------
+
+gfdl_texinfo_files = \
+	gcc/doc/avr-mmcu.texi \
+	gcc/doc/bugreport.texi \
+	gcc/doc/cfg.texi \
+	gcc/doc/collect2.texi \
+	gcc/doc/compat.texi \
+	gcc/doc/configfiles.texi \
+	gcc/doc/configterms.texi \
+	gcc/doc/contrib.texi \
+	gcc/doc/contribute.texi \
+	gcc/doc/cpp.texi \
+	gcc/doc/cppenv.texi \
+	gcc/doc/cppinternals.texi \
+	gcc/doc/cppopts.texi \
+	gcc/doc/extend.texi \
+	gcc/doc/fragments.texi \
+	gcc/doc/frontends.texi \
+	gcc/doc/gccint.texi \
+	gcc/doc/gcov.texi \
+	gcc/doc/generic.texi \
+	gcc/doc/gimple.texi \
+	gcc/doc/gnu.texi \
+	gcc/doc/gty.texi \
+	gcc/doc/headerdirs.texi \
+	gcc/doc/hostconfig.texi \
+	gcc/doc/implement-c.texi \
+	gcc/doc/implement-cxx.texi \
+	gcc/doc/install-old.texi \
+	gcc/doc/install.texi \
+	gcc/doc/interface.texi \
+	gcc/doc/invoke.texi \
+	gcc/doc/languages.texi \
+	gcc/doc/libgcc.texi \
+	gcc/doc/loop.texi \
+	gcc/doc/lto.texi \
+	gcc/doc/makefile.texi \
+	gcc/doc/match-and-simplify.texi \
+	gcc/doc/md.texi \
+	gcc/doc/objc.texi \
+	gcc/doc/optinfo.texi \
+	gcc/doc/options.texi \
+	gcc/doc/passes.texi \
+	gcc/doc/plugins.texi \
+	gcc/doc/portability.texi \
+	gcc/doc/rtl.texi \
+	gcc/doc/service.texi \
+	gcc/doc/sourcebuild.texi \
+	gcc/doc/standards.texi \
+	gcc/doc/tm.texi.in \
+	gcc/doc/tm.texi \
+	gcc/doc/tree-ssa.texi \
+	gcc/doc/trouble.texi \
+	gcc/doc/include/gcc-common.texi \
+	gcc/doc/include/funding.texi \
+	gcc/fortran/gfc-internals.texi \
+	gcc/fortran/invoke.texi \
+	gcc/fortran/intrinsic.texi \
+	gcc/ada/projects.texi \
+
+
+gfdl_toplevel_texinfo_files = \
+	gcc/doc/gcc.texi \
+	gcc/java/gcj.texi \
+	gcc/ada/gnat-style.texi \
+	gcc/ada/gnat_rm.texi \
+	gcc/ada/gnat_ugn.texi \
+	gcc/fortran/gfortran.texi \
+	gcc/go/gccgo.texi \
+	libgomp/libgomp.texi \
+	libquadmath/libquadmath.texi \
+
+gfdl_manpages = \
+	gcc/doc/cpp.1 \
+	gcc/doc/g++.1 \
+	gcc/doc/gc-analyze.1 \
+	gcc/doc/gcc.1 \
+	gcc/doc/gccgo.1 \
+	gcc/doc/gcj.1 \
+	gcc/doc/gcj-dbtool.1 \
+	gcc/doc/gcjh.1 \
+	gcc/doc/gcov.1 \
+	gcc/doc/gfortran.1 \
+	gcc/doc/gij.1 \
+	gcc/doc/grmic.1 \
+	gcc/doc/grmiregistry.1 \
+	gcc/doc/jcf-dump.1 \
+	gcc/doc/jv-convert.1 \
+	gcc/doc/fsf-funding.7 \
+
+# ---------------------------------------------------------------------------
+$(unpack_stamp)-$(gcc_tarball): $(gcc_tarpath)
+	: # unpack gcc tarball
+	mkdir -p $(stampdir)
+	if [ -d $(srcdir) ]; then \
+	  echo >&2 "Source directory $(srcdir) exists. Delete by hand"; \
+	  false; \
+	fi
+	rm -rf $(gcc_srcdir)
+	tar -x -f $(gcc_tarpath)
+	mv $(gcc_srcdir) $(srcdir)
+	ln -sf libsanitizer $(srcdir)/libasan
+ifneq (,$(wildcard java-class-files.tar.xz.uue))
+# work around #533356
+#	uudecode -o - java-class-files.tar.xz.uue | tar -C src -xvz
+	uudecode java-class-files.tar.xz.uue
+	xzcat java-class-files.tar.xz | tar -C src -xv -f -
+	rm -f java-class-files.tar.xz
+endif
+#ifeq ($(with_java),yes)
+#	tar -x -C $(srcdir)/libjava/testsuite/libmauve.exp \
+#		$(wildcard /usr/src/mauve*.tar.*)
+#endif
+ifeq (0,1)
+	cd $(srcdir) && tar cfj ../gcc-4.1.1-doc.tar.bz2 \
+		$(gfdl_texinfo_files) \
+		$(gfdl_toplevel_texinfo_files) \
+		$(gfdl_manpages)
+endif
+ifeq ($(GFDL_INVARIANT_FREE),yes)
+  ifneq ($(single_package),yes)
+	rm -f $(srcdir)/gcc/doc/*.1
+	rm -f $(srcdir)/gcc/doc/fsf-funding.7
+	rm -f $(srcdir)/gcc/doc/*.info
+	rm -f $(srcdir)/gcc/fortran/*.info
+	rm -f $(srcdir)/libgomp/*.info
+	rm -f $(srcdir)/gcc/java/*.1
+	rm -f $(srcdir)/gcc/java/*.info
+	for i in $(gfdl_texinfo_files); do \
+	  if [ -f $(srcdir)/$$i ]; then \
+	    cp $(SOURCE_DIR)debian/dummy.texi $(srcdir)/$$i; \
+	  else \
+	    cp $(SOURCE_DIR)debian/dummy.texi $(srcdir)/$$i; \
+	    echo >&2 "$$i does not exist, fix debian/rules.unpack"; \
+	  fi; \
+	done
+	for i in $(gfdl_toplevel_texinfo_files); do \
+	  n=$$(basename $$i .texi); \
+	  if [ -f $(srcdir)/$$i ]; then \
+	    sed "s/@name@/$$n/g" $(SOURCE_DIR)debian/gcc-dummy.texi \
+	      > $(srcdir)/$$i; \
+	  else \
+	    sed "s/@name@/$$n/g" $(SOURCE_DIR)debian/gcc-dummy.texi \
+	      > $(srcdir)/$$i; \
+	    echo >&2 "$$i does not exist, fix debian/rules.unpack"; \
+	  fi; \
+	done
+	for i in $(gfdl_manpages); do \
+	  touch $(srcdir)/$$i; \
+	done
+	rm -f $(srcdir)/INSTALL/*.html
+  endif
+endif
+	echo "$(gcc_tarball) unpacked." > $@
+
+# ---------------------------------------------------------------------------
+ifneq (,$(gcj_tarball))
+$(unpack_stamp)-$(gcj_tarball): $(gcj_tarpath) $(unpack_stamp)-$(gcc_tarball)
+	: # unpack gcj tarball
+	rm -rf $(srcdir)/gcc/java $(srcdir)/libjava
+	tar -x -C $(srcdir) -f $(gcj_tarpath)
+ifeq ($(GFDL_INVARIANT_FREE),yes)
+  ifneq ($(single_package),yes)
+	rm -f $(srcdir)/gcc/java/*.1
+	rm -f $(srcdir)/gcc/java/*.info
+	for i in $(gfdl_texinfo_files); do \
+	  if [ -f $(srcdir)/$$i ]; then \
+	    cp $(SOURCE_DIR)debian/dummy.texi $(srcdir)/$$i; \
+	  else \
+	    echo >&2 "$$i does not exist, fix debian/rules.unpack"; \
+	  fi; \
+	done
+	for i in $(gfdl_toplevel_texinfo_files); do \
+	  n=$$(basename $$i .texi); \
+	  if [ -f $(srcdir)/$$i ]; then \
+	    sed "s/@name@/$$n/g" $(SOURCE_DIR)debian/gcc-dummy.texi \
+	      > $(srcdir)/$$i; \
+	  else \
+	    echo >&2 "$$i does not exist, fix debian/rules.unpack"; \
+	  fi; \
+	done
+  endif
+endif
+	echo "$(gcj_tarball) unpacked." > $@
+endif
+
+# ---------------------------------------------------------------------------
+ifneq (,$(gdc_tarball))
+$(unpack_stamp)-$(gdc_tarball): $(gdc_tarpath) $(unpack_stamp)-$(gcc_tarball)
+	: # unpack gdc tarball
+	mkdir -p $(stampdir)
+	if [ -d $(srcdir)/gcc/d ]; then \
+	  echo >&2 "Source directory $(srcdir)/gcc/d exists. Delete by hand";\
+	  false; \
+	fi
+	#rm -rf $(gdc_srcdir)
+	rm -rf $(srcdir)/gcc/d
+	rm -rf $(srcdir)/gcc/testsuite/gdc.test
+	rm -f $(srcdir)/gcc/testsuite/lib/gdc*.exp
+	rm -rf $(srcdir)/libphobos
+	tar -x -C $(srcdir) --strip-components=1 -f $(gdc_tarpath)
+ifeq ($(GFDL_INVARIANT_FREE),yes-now-purge-gfdl)
+  ifneq ($(single_package),yes)
+	for i in gcc/d/gdc.texi; do \
+	  n=$$(basename $$i .texi); \
+	  if [ -f $(srcdir)/$$i ]; then \
+	    sed "s/@name@/$$n/g" $(SOURCE_DIR)debian/gcc-dummy.texi \
+	      > $(srcdir)/$$i; \
+	  else \
+	    echo >&2 "$$i does not exist, fix debian/rules.unpack"; \
+	  fi; \
+	done
+	for i in gcc/d/gdc.1; do \
+	  touch $(srcdir)/$$i; \
+	done
+  endif
+endif
+	echo "$(gdc_tarball) unpacked." > $@
+endif
diff --git a/debian/rules2 b/debian/rules2
new file mode 100644
index 0000000..daf53a6
--- /dev/null
+++ b/debian/rules2
@@ -0,0 +1,2468 @@
+#! /usr/bin/make -f
+# -*- makefile -*-
+
+# Uncomment this to turn on verbose mode.
+#export DH_VERBOSE=1
+
+.SUFFIXES:
+
+include debian/rules.defs
+include debian/rules.parameters
+
+dh_compat2 := $(shell dpkg --compare-versions "$$(dpkg-query -f '$${Version}' -W debhelper)" lt 9.20150811ubuntu2 \
+			&& echo DH_COMPAT=2)
+
+# some tools
+SHELL	= /bin/bash -e		# brace expansion in rules file
+IR	= install -m 644	# Install regular file
+IP	= install -m 755	# Install program
+IS	= install -m 755	# Install script
+
+# kernel-specific ulimit hack
+ifeq ($(findstring linux,$(DEB_HOST_GNU_SYSTEM)),linux)
+  ULIMIT_M =  if [ -e /proc/meminfo ]; then \
+	    m=`awk '/^((Mem|Swap)Free|Cached)/{m+=$$2}END{print int(m*.9)}' \
+		/proc/meminfo`; \
+	  else \
+	    m=`vmstat --free --swap-free --kilobytes|awk '{m+=$$2}END{print int(m*.9)}'`; \
+	  fi; \
+	  echo "Limiting memory for test runs to $${m}kB"; \
+	  if ulimit -m $$m; then \
+	    echo "  limited to `ulimit -m`kB"; \
+	  else \
+	    echo "  failed"; \
+	  fi
+else
+  ULIMIT_M = true
+endif
+
+ifeq ($(locale_data),generate)
+  SET_LOCPATH = LOCPATH=$(PWD)/locales
+endif
+
+SET_PATH = PATH=$(PWD)/bin:/usr/$(libdir)/gcc/bin:$$PATH
+ifeq ($(trunk_build),yes)
+  ifneq (,$(findstring sparc64-linux,$(DEB_TARGET_GNU_TYPE)))
+    SET_PATH = PATH=/usr/lib/gcc-snapshot/bin:$(PWD)/bin:/usr/$(libdir)/gcc/bin:$$PATH
+  endif
+  ifneq (,$(findstring ppc64-linux,$(DEB_TARGET_GNU_TYPE)))
+    SET_PATH = PATH=/usr/lib/gcc-snapshot/bin:$(PWD)/bin:/usr/$(libdir)/gcc/bin:$$PATH
+  endif
+endif
+
+# the recipient for the test summaries. Send with: debian/rules mail-summary
+S_EMAIL = gcc at packages.debian.org gcc-testresults at gcc.gnu.org
+
+# build not yet prepared to take variables from the environment
+define unsetenv
+  unexport $(1)
+  $(1) =
+endef
+$(foreach v, CPPFLAGS CFLAGS CXXFLAGS DFLAGS FFLAGS FCFLAGS LDFLAGS OBJCFLAGS OBJCXXFLAGS GCJFLAGS, $(if $(filter environment,$(origin $(v))),$(eval $(call unsetenv, $(v)))))
+
+CC = $(notdir $(firstword $(wildcard \
+	/usr/bin/$(DEB_HOST_GNU_TYPE)-gcc-5 /usr/bin/$(DEB_HOST_GNU_TYPE)-gcc)))
+CXX = $(notdir $(firstword $(wildcard \
+	/usr/bin/$(DEB_HOST_GNU_TYPE)-g++-5 /usr/bin/$(DEB_HOST_GNU_TYPE)-g++)))
+ifeq ($(with_ada),yes)
+  GNAT = $(notdir $(firstword $(wildcard \
+	/usr/bin/$(DEB_HOST_GNU_TYPE)-gnat-5 /usr/bin/$(DEB_HOST_GNU_TYPE)-gnat /usr/bin/gnatgcc)))
+  ifeq ($(GNAT),gnatgcc)
+    CC := $(shell readlink /usr/bin/gnatgcc)
+  else ifneq (,$(GNAT))
+    CC = $(subst gnat,gcc,$(GNAT))
+  else ifneq (,$(filter $(distrelease), trusty))
+    CC = gcc-4.8
+  else ifneq (,$(wildcard /usr/bin/$(DEB_HOST_GNU_TYPE)-gcc))
+    CC = $(DEB_HOST_GNU_TYPE)-gcc
+  else
+    CC = gcc
+  endif
+  CXX = $(subst gcc,g++,$(CC))
+endif
+
+ifeq ($(DEB_BUILD_GNU_TYPE),$(DEB_TARGET_GNU_TYPE))
+  CC_FOR_TARGET = $(builddir)/gcc/xgcc -B$(builddir)/gcc/
+else
+  CC_FOR_TARGET = $(DEB_TARGET_GNU_TYPE)-gcc
+endif
+
+ifneq ($(derivative),Ubuntu)
+  ifneq (,$(filter $(DEB_TARGET_ARCH), arm armel mips mipsel))
+    STAGE1_CFLAGS = -g -O2
+  endif
+endif
+
+# work around PR 57689
+ifeq ($(DEB_TARGET_ARCH),ia64)
+  BOOT_CFLAGS	= -g -O1
+endif
+
+ifeq ($(with_ssp_default),yes)
+  STAGE1_CFLAGS	= -g
+  ifeq (,$(BOOT_CFLAGS))
+    BOOT_CFLAGS	= -g -O2
+  endif
+  LIBCFLAGS		= -g -O2
+  LIBCXXFLAGS	= -g -O2 -fno-implicit-templates
+  # Only use -fno-stack-protector when known to the stage1 compiler.
+  cc-fno-stack-protector := $(shell if $(CC) $(CFLAGS) -fno-stack-protector \
+                             -S -o /dev/null -xc /dev/null > /dev/null 2>&1; \
+							 then echo "-fno-stack-protector"; fi;)
+  $(foreach var,STAGE1_CFLAGS BOOT_CFLAGS LIBCFLAGS LIBCXXFLAGS,$(eval \
+    $(var) += $(cc-fno-stack-protector)))
+endif
+
+# FIXME: passing LDFLAGS for native doesn't do anything
+ifneq (,$(filter $(build_type), build-cross cross-build-cross))
+  CFLAGS	= -g -O2
+  LDFLAGS	= -Wl,-z,relro
+  ifeq ($(DEB_TARGET_ARCH),alpha)
+    LDFLAGS += -Wl,--no-relax
+  endif
+else
+  BOOT_LDFLAGS	= -Wl,-z,relro
+  ifeq ($(DEB_TARGET_ARCH),alpha)
+    BOOT_LDFLAGS += -Wl,--no-relax
+  endif
+endif
+LDFLAGS_FOR_TARGET = -Wl,-z,relro
+ifeq ($(DEB_TARGET_ARCH),alpha)
+  LDFLAGS := $(filter-out -Wl$(COMMA)--no-relax, $(LDFLAGS)) -Wl,--no-relax
+endif
+
+ifneq (,$(findstring static,$(DEB_BUILD_OPTIONS)))
+  LDFLAGS	+= -static
+endif
+
+# set CFLAGS/LDFLAGS for the configure step only, maybe be modifed for some target
+# all other flags are passed to the make step.
+CFLAGS_TO_PASS = \
+	$(if $(CFLAGS),CFLAGS="$(CFLAGS)") \
+	$(if $(LIBCFLAGS),LIBCFLAGS="$(LIBCFLAGS)") \
+	$(if $(LIBCXXFLAGS),LIBCXXFLAGS="$(LIBCXXFLAGS)")
+LDFLAGS_TO_PASS = \
+	$(if $(LDFLAGS),LDFLAGS="$(LDFLAGS)")
+
+STAGE1_CFLAGS_TO_PASS = \
+	$(if $(STAGE1_CFLAGS),STAGE1_CFLAGS="$(STAGE1_CFLAGS)")
+STAGE1_LDFLAGS_TO_PASS = \
+	$(if $(STAGE1_LDFLAGS),STAGE1_LDFLAGS="$(STAGE1_LDFLAGS)")
+
+BOOT_CFLAGS_TO_PASS = \
+	$(if $(BOOT_CFLAGS),BOOT_CFLAGS="$(BOOT_CFLAGS)")
+BOOT_LDFLAGS_TO_PASS = \
+	$(if $(BOOT_LDFLAGS),BOOT_LDFLAGS="$(BOOT_LDFLAGS)")
+
+CFLAGS_FOR_TARGET_TO_PASS = \
+	$(if $(CFLAGS_FOR_TARGET),CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)")
+LDFLAGS_FOR_TARGET_TO_PASS = \
+	$(if $(LDFLAGS_FOR_TARGET),LDFLAGS_FOR_TARGET="$(LDFLAGS_FOR_TARGET)")
+
+docdir		= usr/share/doc
+
+CONFARGS = -v \
+	--with-pkgversion='$(distribution)$(if $(with_linaro_branch),/Linaro)___$(DEB_VERSION)' \
+	--with-bugurl='file:///usr/share/doc/$(subst gcj,gcc,$(PKGSOURCE))/README.Bugs'
+
+CONFARGS += \
+	--enable-languages=$(subst $(SPACE),$(COMMA),$(enabled_languages)) \
+	--prefix=/$(PF)
+
+ifeq ($(versioned_packages),yes)
+  CONFARGS += --program-suffix=-$(BASE_VERSION)
+endif
+
+ifneq (,$(filter $(DEB_STAGE),stage1 stage2))
+  CONFARGS += \
+	--disable-decimal-float \
+	--disable-libatomic  \
+	--disable-libgomp  \
+	--disable-libssp \
+	--disable-libquadmath \
+	--disable-libsanitizer \
+	--disable-threads \
+	--libexecdir=/$(libexecdir) \
+	--libdir=/$(PF)/$(configured_libdir) \
+	$(if $(with_build_sysroot),--with-build-sysroot=$(with_build_sysroot)) \
+	$(if $(with_sysroot),--with-sysroot=$(with_sysroot)) \
+	--enable-linker-build-id
+
+  ifeq ($(with_multiarch_lib),yes)
+    CONFARGS += \
+	--enable-multiarch
+  endif
+
+  ifeq ($(DEB_STAGE),stage1)
+    CONFARGS += \
+	--disable-shared  \
+	--with-newlib  \
+	--without-headers
+  else
+    # stage2
+    CONFARGS += \
+	--enable-shared
+  endif
+else
+  CONFARGS += \
+	--enable-shared \
+	--enable-linker-build-id \
+
+ifneq ($(single_package),yes)
+  CONFARGS += \
+        --libexecdir=/$(libexecdir) \
+        --without-included-gettext \
+        --enable-threads=posix \
+	--libdir=/$(PF)/$(configured_libdir)
+endif
+
+ifneq ($(with_cpp),yes)
+  CONFARGS += --disable-cpp
+endif
+
+ifeq ($(with_nls),yes)
+  CONFARGS += --enable-nls
+else
+  CONFARGS += --disable-nls
+endif
+
+ifeq ($(with_bootstrap),off)
+  CONFARGS += --disable-bootstrap
+else ifneq ($(with_bootstrap),)
+  CONFARGS += --enable-bootstrap=$(with_bootstrap)
+endif
+
+ifneq ($(with_sysroot),)
+  CONFARGS += --with-sysroot=$(with_sysroot)
+endif
+ifneq ($(with_build_sysroot),)
+  CONFARGS += --with-build-sysroot=$(with_build_sysroot)
+endif
+
+ifeq ($(force_gnu_locales),yes)
+  CONFARGS += --enable-clocale=gnu
+endif
+
+ifeq ($(with_cxx)-$(with_debug),yes-yes)
+  CONFARGS += --enable-libstdcxx-debug
+endif
+CONFARGS += --enable-libstdcxx-time=yes
+CONFARGS += --with-default-libstdcxx-abi=$(libstdcxx_abi)
+ifeq ($(libstdcxx_abi),gcc4-compatible)
+  CONFARGS += --disable-libstdcxx-dual-abi
+endif
+
+ifeq (,$(filter $(DEB_TARGET_ARCH), hurd-i386 kfreebsd-i386 kfreebsd-amd64))
+  CONFARGS += --enable-gnu-unique-object
+endif
+
+ifneq ($(with_ssp),yes)
+  CONFARGS += --disable-libssp
+endif
+
+ifneq ($(with_gomp),yes)
+  CONFARGS += --disable-libgomp
+endif
+
+ifneq ($(with_itm),yes)
+  CONFARGS += --disable-libitm
+endif
+
+ifneq ($(with_atomic),yes)
+  CONFARGS += --disable-libatomic
+endif
+
+ifneq (,$(filter $(DEB_TARGET_ARCH),$(vtv_archs)))
+  ifeq ($(with_vtv),yes)
+    CONFARGS += --enable-vtable-verify
+  else
+    CONFARGS += --disable-vtable-verify
+  endif
+endif
+
+ifneq ($(with_asan),yes)
+  CONFARGS += --disable-libsanitizer
+endif
+
+ifneq ($(with_qmath),yes)
+  CONFARGS += --disable-libquadmath
+endif
+
+ifeq ($(with_mpx),yes)
+  CONFARGS += --enable-libmpx
+endif
+
+ifeq ($(with_plugins),yes)
+  CONFARGS += --enable-plugin
+endif
+
+#ifeq ($(with_gold),yes)
+#  CONFARGS += --enable-gold --enable-ld=default
+#endif
+
+#CONFARGS += --with-plugin-ld=ld.gold
+#CONFARGS += --with-plugin-ld
+
+# enable pie-by-default on pie_archs
+ifeq ($(with_pie),yes)
+  CONFARGS += --enable-default-pie
+endif
+
+endif # !DEB_STAGE
+
+CONFARGS += --with-system-zlib
+
+jvm_name_short = java-1.5.0-gcj-$(BASE_VERSION)$(if $(findstring snap,$(PKGSOURCE)),-snap)
+jvm_name_long = $(jvm_name_short)-1.5.0.0
+
+ifeq ($(with_java),yes)
+  CONFARGS += --disable-browser-plugin
+  ifeq ($(with_java_maintainer_mode),yes)
+    CONFARGS += --enable-java-maintainer-mode
+  endif
+  ifeq ($(with_java_biarch_awt),yes)
+    CONFARGS += --enable-java-awt=$(subst $(SPACE),$(COMMA),$(foreach p,$(java_awt_peers),$(p)-default))
+  else
+    CONFARGS += --enable-java-awt=$(subst $(SPACE),$(COMMA),$(foreach p,$(java_awt_peers),$(p)))
+  endif
+  ifneq (,$(findstring gtk,$(java_awt_peers)))
+    CONFARGS += --enable-gtk-cairo
+  endif
+  jvm_ext = -$(DEB_TARGET_ARCH)$(if $(filter yes,$(DEB_CROSS)),-cross)
+  jvm_dir = /usr/lib/jvm/$(jvm_name_short)$(jvm_ext)
+  CONFARGS += --with-java-home=$(jvm_dir)/jre
+  CONFARGS += --enable-java-home \
+	--with-jvm-root-dir=$(jvm_dir) \
+	--with-jvm-jar-dir=/usr/lib/jvm-exports/$(jvm_name_short)$(jvm_ext)
+  CONFARGS += --with-arch-directory=$(java_cpu)
+  ifeq (./,$(dir $(ecj_jar)))
+    CONFARGS += --with-ecj-jar=$(jvm_dir)/lib/ecj.jar
+  else
+    CONFARGS += --with-ecj-jar=$(ecj_jar)
+  endif
+  ifneq ($(with_libgcj),yes)
+    CONFARGS += --disable-libgcj
+  endif
+endif
+
+ifeq ($(with_gcj),yes)
+  ifeq ($(DEB_HOST_GNU_CPU),m32r)
+    CONFARGS += --enable-libgcj
+  endif
+endif
+
+ifeq ($(with_objc)-$(with_objc_gc),yes-yes)
+  CONFARGS += --enable-objc-gc
+endif
+
+ifneq (,$(filter $(DEB_TARGET_GNU_TYPE), i486-linux-gnu i586-linux-gnu i686-linux-gnu))
+    ifeq ($(multilib),yes)
+      ifeq ($(biarch64),yes)
+        CONFARGS += --enable-targets=all
+      endif
+    endif
+endif
+
+ifneq (,$(filter $(DEB_TARGET_GNU_TYPE), x86_64-linux-gnu x86_64-linux-gnux32 x86_64-kfreebsd-gnu s390x-linux-gnu sparc64-linux-gnu))
+    ifneq ($(biarch32),yes)
+      CONFARGS += --disable-multilib
+    endif
+endif
+
+ifneq (,$(filter $(DEB_TARGET_GNU_TYPE), powerpc-linux-gnu powerpc-linux-gnuspe))
+    CONFARGS += --enable-secureplt
+    ifeq ($(biarch64),yes)
+      CONFARGS += --disable-softfloat --with-cpu=default32
+      ifeq ($(multilib),yes)
+        CONFARGS += --disable-softfloat \
+	  --enable-targets=powerpc-linux,powerpc64-linux
+      endif
+    else
+      CONFARGS += --disable-multilib
+    endif
+endif
+
+ifneq (,$(findstring powerpc64le-linux,$(DEB_TARGET_GNU_TYPE)))
+    CONFARGS += --enable-secureplt
+    ifneq (,$(filter $(distrelease),jessie trusty utopic vivid wily))
+      CONFARGS += --with-cpu=power7 --with-tune=power8
+    else
+      CONFARGS += --with-cpu=power8
+    endif
+    ifneq (,$(filter $(distrelease),jessie stretch sid trusty utopic vivid wily xenial))
+      CONFARGS += --enable-targets=powerpcle-linux
+    endif
+    CONFARGS += --disable-multilib
+endif
+
+ifneq (,$(findstring powerpc64-linux,$(DEB_TARGET_GNU_TYPE)))
+    CONFARGS += --enable-secureplt
+    ifeq ($(biarch32),yes)
+      ifeq ($(multilib),yes)
+        CONFARGS += --disable-softfloat --enable-targets=powerpc64-linux,powerpc-linux
+      endif
+    else
+      CONFARGS += --disable-multilib
+    endif
+    ifeq ($(derivative),Ubuntu)
+      CONFARGS += --with-cpu-32=power7 --with-cpu-64=power7
+    endif
+endif
+
+# FIXME: only needed for isl-0.13 for now
+#CONFARGS += --disable-isl-version-check
+
+ifneq (,$(findstring cross-build-,$(build_type)))
+  # FIXME: requires isl headers for the target
+  #CONFARGS += --without-isl
+  # FIXME: build currently fails build the precompiled headers
+  CONFARGS += --disable-libstdcxx-pch
+endif
+
+ifeq ($(with_multiarch_lib),yes)
+  CONFARGS += --enable-multiarch
+endif
+
+# FIXME: requires binutils trunk
+#ifneq (,$(findstring aarch64,$(DEB_TARGET_GNU_CPU)))
+#  CONFARGS += --enable-fix-cortex-a53-843419
+#endif
+
+ifeq ($(findstring powerpcspe,$(DEB_TARGET_ARCH)),powerpcspe)
+  CONFARGS += --with-cpu=8548 --enable-e500_double
+endif
+
+ifneq (,$(findstring softfloat,$(DEB_TARGET_GNU_CPU)))
+  CONFARGS += --with-float=soft
+endif
+
+ifneq (,$(findstring arm-vfp,$(DEB_TARGET_GNU_CPU)))
+  CONFARGS += --with-fpu=vfp
+endif
+
+ifneq (,$(findstring arm, $(DEB_TARGET_GNU_CPU)))
+  ifeq ($(multilib),yes)
+    CONFARGS += --enable-multilib
+  endif
+  CONFARGS += --disable-sjlj-exceptions
+  # FIXME: libjava is not ported for thumb, this hack only works for
+  # separate gcj builds
+  ifneq (,$(filter armhf,$(DEB_TARGET_ARCH)))
+    ifeq ($(distribution),Raspbian)
+      with_arm_arch = armv6
+      with_arm_fpu = vfp
+    else
+      ifneq (,$(findstring gcj,$(PKGSOURCE)))
+        with_arm_arch = armv6
+      else
+        with_arm_arch = armv7-a
+      endif
+      with_arm_fpu = vfpv3-d16
+    endif
+  else
+    # armel
+    ifeq ($(derivative),Debian)
+      with_arm_arch = armv4t
+    else ifneq (,$(filter $(distrelease),karmic))
+      with_arm_arch = armv6
+      with_arm_fpu = vfpv3-d16
+    else ifneq (,$(filter $(distrelease),lucid maverick natty oneiric precise))
+      ifneq (,$(findstring gcj,$(PKGSOURCE)))
+        with_arm_arch = armv6
+      else
+        with_arm_arch = armv7-a
+      endif
+      with_arm_fpu = vfpv3-d16
+    else
+      with_arm_arch = armv5t  # starting with quantal
+    endif
+  endif
+  CONFARGS += --with-arch=$(with_arm_arch)
+  ifneq (,$(with_arm_fpu))
+    CONFARGS += --with-fpu=$(with_arm_fpu)
+  endif
+  CONFARGS += --with-float=$(float_abi)
+  ifeq ($(with_arm_thumb),yes)
+    CONFARGS += --with-mode=thumb
+  endif
+endif
+
+ifeq ($(DEB_TARGET_GNU_CPU),$(findstring $(DEB_TARGET_GNU_CPU),m68k))
+  CONFARGS += --disable-werror
+endif
+# FIXME: correct fix-warnings.dpatch
+ifeq ($(derivative),Ubuntu)
+  CONFARGS += --disable-werror
+endif
+
+ifneq (,$(findstring sparc-linux,$(DEB_TARGET_GNU_TYPE)))
+  ifeq ($(biarch64),yes)
+    CONFARGS += --enable-targets=all
+  endif
+endif
+
+ifneq (,$(findstring sparc64-linux,$(DEB_TARGET_GNU_TYPE)))
+  ifeq ($(biarch32),yes)
+    CONFARGS += --enable-targets=all
+    # this doesn't work
+    #CONFARGS += --with-cpu-32=ultrasparc
+  endif
+endif
+
+ifneq (,$(findstring ia64-linux,$(DEB_TARGET_GNU_TYPE)))
+  CONFARGS += --with-system-libunwind
+endif
+
+ifneq (,$(findstring sh4-linux,$(DEB_TARGET_GNU_TYPE)))
+  CONFARGS += --with-cpu=sh4 --with-multilib-list=m4,m4-nofpu
+endif
+
+ifneq (,$(findstring m68k-linux,$(DEB_TARGET_GNU_TYPE)))
+  CONFARGS += --disable-multilib
+endif
+
+ifeq ($(derivative),Ubuntu)
+  ifneq (,$(findstring s390x-linux,$(DEB_TARGET_GNU_TYPE)))
+    CONFARGS += --with-arch=zEC12
+  endif
+endif
+
+ifeq ($(DEB_TARGET_ARCH_OS),linux)
+  ifneq (,$(findstring $(DEB_TARGET_ARCH), alpha powerpc powerpcspe ppc64 ppc64el s390 s390x sparc sparc64))
+    CONFARGS += --with-long-double-128
+  endif
+endif
+
+ifneq (,$(filter $(DEB_TARGET_ARCH), amd64 i386 kfreebsd-i386 kfreebsd-amd64))
+  ifneq (,$(filter $(derivative),Ubuntu))
+    ifneq (,$(filter $(distrelease),dapper hardy))
+      CONFARGS += --with-arch-32=i486
+    else ifneq (,$(filter $(distrelease),jaunty karmic lucid))
+      CONFARGS += --with-arch-32=i586
+    else
+      CONFARGS += --with-arch-32=i686
+    endif
+  else # Debian
+    ifneq (,$(filter $(distrelease),etch lenny))
+      CONFARGS += --with-arch-32=i486
+    else
+      CONFARGS += --with-arch-32=i586
+    endif
+  endif
+endif
+
+ifeq ($(DEB_TARGET_ARCH),amd64)
+  CONFARGS += --with-abi=m64
+endif
+ifeq ($(DEB_TARGET_ARCH),x32)
+  CONFARGS += --with-abi=mx32
+endif
+ifeq ($(multilib),yes)
+  ifneq (,$(filter $(DEB_TARGET_ARCH), amd64 i386))
+    CONFARGS += --with-multilib-list=m32,m64$(if $(filter yes,$(biarchx32)),$(COMMA)mx32)
+  else ifeq ($(DEB_TARGET_ARCH),x32)
+    CONFARGS += --with-multilib-list=mx32,m64,m32
+  endif
+  CONFARGS += --enable-multilib
+endif
+
+ifneq (,$(filter $(DEB_TARGET_ARCH), hurd-i386))
+  CONFARGS += --with-arch=i586
+endif
+
+ifeq ($(DEB_TARGET_ARCH),lpia)
+  CONFARGS += --with-arch=pentium-m --with-tune=i586
+endif
+
+ifneq (,$(filter $(DEB_TARGET_ARCH), amd64 i386 hurd-i386 kfreebsd-i386 kfreebsd-amd64))
+  CONFARGS += --with-tune=generic
+endif
+
+ifneq (,$(findstring mips-linux,$(DEB_TARGET_GNU_TYPE)))
+  CONFARGS += --with-arch-32=mips32r2 --with-fp-32=xx
+  ifeq ($(multilib),yes)
+    ifeq ($(biarchn32)-$(biarch64),yes-yes)
+      CONFARGS += --enable-targets=all
+      CONFARGS += --with-arch-64=mips64r2
+    endif
+  endif
+endif
+
+ifneq (,$(findstring mipsel-linux,$(DEB_TARGET_GNU_TYPE)))
+  CONFARGS += --with-arch-32=mips2 --with-tune-32=mips32r2 --with-fp-32=xx
+  ifeq ($(multilib),yes)
+    ifeq ($(biarchn32)-$(biarch64),yes-yes)
+      CONFARGS += --enable-targets=all
+      CONFARGS += --with-arch-64=mips3 --with-tune-64=mips64r2
+    endif
+  endif
+endif
+
+#FIXME: howto for mipsn32?
+ifneq (,$(findstring mips64el-linux-gnuabin32,$(DEB_TARGET_GNU_TYPE)))
+  ifeq ($(multilib),yes)
+    ifeq ($(biarchn32)-$(biarch32),yes-yes)
+      CONFARGS += --enable-targets=all
+      CONFARGS += --with-arch-64=mips3 --with-tune-64=mips64
+      CONFARGS += --with-arch-32=mips2 --with-tune-32=mips32 --with-fp-32=xx
+    endif
+  endif
+endif
+
+ifneq (,$(findstring mips64-linux-gnuabin32,$(DEB_TARGET_GNU_TYPE)))
+  ifeq ($(multilib),yes)
+    ifeq ($(biarchn32)-$(biarch32),yes-yes)
+      CONFARGS += --enable-targets=all
+      CONFARGS += --with-arch-64=mips3 --with-tune-64=mips64
+      CONFARGS += --with-arch-32=mips2 --with-tune-32=mips32 --with-fp-32=xx
+    endif
+  endif
+endif
+
+ifneq (,$(findstring mips64el-linux-gnuabi64,$(DEB_TARGET_GNU_TYPE)))
+  CONFARGS += --with-mips-plt
+  CONFARGS += --with-arch-64=mips64r2
+  ifeq ($(multilib),yes)
+    ifeq ($(biarchn32)-$(biarch32),yes-yes)
+      CONFARGS += --enable-targets=all
+      CONFARGS += --with-arch-32=mips32r2 --with-fp-32=xx
+    endif
+  endif
+endif
+
+ifneq (,$(findstring mips64-linux-gnuabi64,$(DEB_TARGET_GNU_TYPE)))
+  CONFARGS += --with-mips-plt
+  CONFARGS += --with-arch-64=mips64r2
+  ifeq ($(multilib),yes)
+    ifeq ($(biarchn32)-$(biarch32),yes-yes)
+      CONFARGS += --enable-targets=all
+      CONFARGS += --with-arch-32=mips32r2 --with-fp-32=xx
+    endif
+  endif
+endif
+
+ifneq (,$(findstring mips,$(DEB_TARGET_GNU_TYPE)))
+  ifeq (,$(filter yes,$(biarch32) $(biarchn32) $(biarch64)))
+      CONFARGS += --disable-multilib
+  endif
+endif
+
+ifneq (,$(findstring s390-linux,$(DEB_TARGET_GNU_TYPE)))
+  ifeq ($(multilib),yes)
+    ifeq ($(biarch64),yes)
+      CONFARGS += --enable-targets=all
+    endif
+  endif
+endif
+
+ifneq (,$(findstring hppa-linux,$(DEB_TARGET_GNU_TYPE)))
+  CONFARGS += --disable-libstdcxx-pch
+endif
+
+ifneq (,$(findstring gdc, $(PKGSOURCE)))
+    CONFARGS += --disable-libquadmath
+endif
+
+ifeq ($(trunk_build),yes)
+  ifeq ($(findstring --disable-werror, $(CONFARGS)),)
+    CONFARGS += --disable-werror
+  endif
+  CONFARGS += --enable-checking=yes
+else
+  CONFARGS += --enable-checking=release
+endif
+
+CONFARGS += \
+	--build=$(DEB_BUILD_GNU_TYPE) \
+	--host=$(DEB_HOST_GNU_TYPE) \
+	--target=$(TARGET_ALIAS)
+
+ifeq ($(DEB_CROSS),yes)
+  CONFARGS += \
+	--program-prefix=$(TARGET_ALIAS)- \
+	--includedir=/$(PFL)/include
+endif
+
+ifeq ($(with_bootstrap),off)
+  bootstrap_target =
+else ifeq ($(with_bootstrap),)
+  bootstrap_target = bootstrap
+  # no profiledbootstrap on the following architectures
+  # - m68k: we're happy that it builds at all
+  no_profiled_bs_archs := alpha arm hppa m68k mips mipsel mips64 mips64el \
+	powerpcspe s390 sh4 sparc sparc64
+  ifeq (,$(filter $(DEB_TARGET_ARCH),$(no_profiled_bs_archs)))
+    bootstrap_target = profiledbootstrap
+  endif
+  ifneq (, $(filter $(PKGSOURCE),gcj-$(BASE_VERSION) gnat-$(BASE_VERSION) gcc-snapshot))
+    bootstrap_target = bootstrap
+  endif
+
+  ifeq ($(derivative),Debian)
+    # disable profiled bootstrap for backports
+    ifneq (,$(filter $(distrelease),squeeze wheezy jessie))
+      bootstrap_target = bootstrap
+    endif
+    # disable profiled bootstrap on slow archs, get to testing first ...
+    ifneq (,$(filter $(DEB_TARGET_ARCH), arm arm64 armel armhf mips mipsel sparc))
+      bootstrap_target = bootstrap
+    endif
+  endif
+  ifeq ($(derivative),Ubuntu)
+    ifneq (,$(filter $(distrelease),lucid precise trusty utopic vivid wily))
+      bootstrap_target = bootstrap
+    endif
+    ifeq ($(with_linaro_branch),yes)
+      bootstrap_target = bootstrap
+    endif
+  endif
+endif
+
+DEJAGNU_TIMEOUT=300
+# Increase the timeout for one testrun on slow architectures
+ifeq ($(derivative),Debian)
+  ifneq (,$(findstring $(DEB_TARGET_ARCH),arm arm64 armel armhf hppa m68k sparc))
+    DEJAGNU_TIMEOUT=600
+  else ifneq (,$(findstring $(DEB_TARGET_GNU_CPU),amd64 i386 i486 i686 lpia))
+    DEJAGNU_TIMEOUT=180
+  endif
+  ifeq ($(DEB_TARGET_GNU_SYSTEM),gnu)
+    DEJAGNU_TIMEOUT=900
+  endif
+else ifeq ($(derivative),Ubuntu)
+  ifneq (,$(findstring $(DEB_TARGET_ARCH),arm64 armel armhf hppa ia64 sparc))
+    DEJAGNU_TIMEOUT=600
+  else ifneq (,$(findstring $(DEB_TARGET_GNU_CPU),amd64 i386 i486 i686 lpia))
+    DEJAGNU_TIMEOUT=180
+  endif
+endif
+
+DEJAGNU_RUNS =
+ifneq ($(trunk_build),yes)
+ifeq ($(with_ssp),yes)
+  # the buildds are just slow ... don't check the non-default
+  ifneq (,$(findstring $(DEB_TARGET_GNU_CPU),sh4 mips))
+    DEJAGNU_RUNS =
+  else ifneq (,$(filter $(DEB_TARGET_ARCH),armel))
+    DEJAGNU_RUNS =
+  else
+    ifneq ($(single_package),yes)
+      DEJAGNU_RUNS += $(if $(filter yes,$(with_ssp_default)),-fno-stack-protector,-fstack-protector)
+    endif
+  endif
+  ifeq ($(derivative),Ubuntu)
+    # the buildds are just slow ... don't check the non-default
+    ifneq (,$(findstring $(DEB_TARGET_GNU_CPU),ia64 sparc))
+      DEJAGNU_RUNS =
+    endif
+    # FIXME Ubuntu armel buildd hangs
+    ifneq (,$(findstring arm, $(DEB_TARGET_GNU_CPU)))
+      DEJAGNU_RUNS =
+    endif
+  endif
+endif
+endif
+
+ifeq ($(derivative),Ubuntu)
+  ifneq (,$(findstring arm, $(DEB_TARGET_GNU_CPU)))
+    ifeq ($(with_arm_thumb),yes)
+      #DEJAGNU_RUNS += -marm
+    else
+      DEJAGNU_RUNS += -mthumb
+    endif
+  endif
+endif
+
+# no b-d on g++-multilib, this is run by the built compiler
+abi_run_check = $(strip $(if $(wildcard build/runcheck$(1).out), \
+				$(shell cat build/runcheck$(1).out), \
+				$(shell CC="$(builddir)/gcc/xg++ -B$(builddir)/gcc/ -static-libgcc $(1)" bash debian/runcheck.sh)))
+ifeq ($(biarch32),yes)
+  DEJAGNU_RUNS += $(call abi_run_check,$(if $(filter $(DEB_TARGET_ARCH_CPU),mips64 mips64el mipsn32 mipsn32el),-mabi=32,-m32))
+endif
+ifeq ($(biarch64),yes)
+  DEJAGNU_RUNS += $(call abi_run_check,$(if $(filter $(DEB_TARGET_ARCH_CPU),mips mipsel),-mabi=64,-m64))
+endif
+ifeq ($(biarchn32),yes)
+  DEJAGNU_RUNS += $(call abi_run_check,-mabi=n32)
+endif
+ifeq ($(biarchx32),yes)
+  DEJAGNU_RUNS += $(call abi_run_check,-mx32)
+endif
+
+# gdc is not multilib'd
+ifneq (,$(findstring gdc, $(PKGSOURCE)))
+  DEJAGNU_RUNS =
+endif
+
+ifneq (,$(findstring gcj, $(PKGSOURCE)))
+  DEJAGNU_RUNS =
+endif
+
+# neither is gnat
+ifneq (,$(findstring gnat, $(PKGSOURCE)))
+  DEJAGNU_RUNS =
+endif
+
+ifneq (,$(strip $(value DEJAGNU_RUNS)))
+  RUNTESTFLAGS = RUNTESTFLAGS="--target_board=unix\{,$(subst $(SPACE),$(COMMA),$(strip $(DEJAGNU_RUNS)))\}"
+endif
+
+# PF is the installation prefix for the package without the leading slash.
+# It's "usr" for gcc releases.
+ifneq (,$(PF))
+  # use value set in the environment
+else ifeq ($(trunk_build),yes)
+  PF		= usr/lib/gcc-snapshot
+else ifeq ($(PKGSOURCE),gcc-linaro)
+  PF		= usr/lib/gcc-linaro
+else
+  PF		= usr
+endif
+
+# PFL is the installation prefix with DEB_TARGET_GNU_TYPE attached for cross builds
+ifeq ($(DEB_CROSS),yes)
+  PFL		= $(PF)/$(DEB_TARGET_GNU_TYPE)
+else
+  PFL		= $(PF)
+endif
+
+# RPF is the base prefix or installation prefix with DEB_TARGET_GNU_TYPE attached for cross builds
+ifeq ($(DEB_CROSS),yes)
+  RPF		= $(PF)/$(DEB_TARGET_GNU_TYPE)
+else
+  RPF		=
+endif
+
+ifeq ($(with_multiarch_lib),yes)
+  ifeq ($(DEB_CROSS),yes)
+    libdir	= lib
+  else
+    libdir	= lib/$(DEB_TARGET_MULTIARCH)
+  endif
+else
+  libdir	= lib
+endif
+configured_libdir = lib
+
+hppa64libexecdir= $(PF)/lib
+
+# /usr/libexec doesn't follow the FHS
+ifeq ($(single_package),yes)
+  libdir	= lib
+  libexecdir	= $(PF)/libexec
+  versiondir	= $(GCC_VERSION)
+else
+  libexecdir	= $(PF)/$(configured_libdir)
+  versiondir	= $(BASE_VERSION)
+endif
+buildlibdir	= $(builddir)/$(TARGET_ALIAS)
+
+# install cross compilers in /usr/lib/gcc-cross, native ones in /usr/lib/gcc
+gcc_subdir_name = gcc
+ifneq ($(single_package),yes)
+  ifeq ($(DEB_CROSS),yes)
+    gcc_subdir_name = gcc-cross
+  endif
+endif
+
+gcc_lib_dir	= $(PF)/$(configured_libdir)/$(gcc_subdir_name)/$(TARGET_ALIAS)/$(versiondir)
+gcc_lexec_dir	= $(libexecdir)/$(gcc_subdir_name)/$(TARGET_ALIAS)/$(versiondir)
+
+lib32loc   = lib32
+ifneq (,$(findstring mips,$(DEB_TARGET_GNU_TYPE)))
+lib32loc   = libo32
+endif
+lib32      = $(PF)/$(lib32loc)
+lib64		= lib64
+libn32		= lib32
+libx32		= libx32
+
+p_l= $(1)$(cross_lib_arch)
+p_d= $(1)-dbg$(cross_lib_arch)
+d_l= debian/$(p_l)
+d_d= debian/$(p_d)
+
+ifeq ($(DEB_CROSS),yes)
+  usr_lib = $(PFL)/lib
+else
+  usr_lib = $(PFL)/$(libdir)
+endif
+usr_lib32 = $(PFL)/$(lib32loc)
+usr_libn32 = $(PFL)/lib32
+usr_libx32 = $(PFL)/libx32
+usr_lib64 = $(PFL)/lib64
+# FIXME: Move to the new location for native builds too
+ifeq ($(DEB_CROSS),yes)
+  usr_libhf = $(PFL)/libhf
+  usr_libsf = $(PFL)/libsf
+else
+  usr_libhf = $(PFL)/lib/arm-linux-gnueabihf
+  usr_libsf = $(PFL)/lib/arm-linux-gnueabi
+endif
+
+ifeq ($(DEB_STAGE)-$(DEB_CROSS),rtlibs-yes)
+  PFL		= $(PF)
+  RPF		=
+  libdir	= lib/$(DEB_TARGET_MULTIARCH)
+  usr_lib	= $(PF)/lib/$(DEB_TARGET_MULTIARCH)
+endif
+
+gcc_lib_dir32 = $(gcc_lib_dir)/$(biarch32subdir)
+gcc_lib_dirn32 = $(gcc_lib_dir)/$(biarchn32subdir)
+gcc_lib_dirx32 = $(gcc_lib_dir)/$(biarchx32subdir)
+gcc_lib_dir64 = $(gcc_lib_dir)/$(biarch64subdir)
+gcc_lib_dirhf = $(gcc_lib_dir)/$(biarchhfsubdir)
+gcc_lib_dirsf = $(gcc_lib_dir)/$(biarchsfsubdir)
+
+libgcc_dir = $(RPF)/$(libdir)
+# yes, really; lib32gcc_s ends up in usr
+libgcc_dir32 = $(PFL)/$(lib32loc)
+libgcc_dirn32 = $(RPF)/lib32
+# libx32gcc_s also ends up in usr
+libgcc_dirx32 = $(PFL)/libx32
+libgcc_dir64 = $(RPF)/lib64
+# FIXME: Move to the new location for native builds too
+ifeq ($(DEB_CROSS),yes)
+  libgcc_dirhf = $(RPF)/libhf
+  libgcc_dirsf = $(RPF)/libsf
+else
+  libgcc_dirhf = $(RPF)/lib/arm-linux-gnueabihf
+  libgcc_dirsf = $(RPF)/lib/arm-linux-gnueabi
+endif
+
+# install_gcc_lib(lib,soname,flavour,package)
+define install_gcc_lib
+	mv $(d)/$(usr_lib$(3))/$(1)*.a debian/$(4)/$(gcc_lib_dir$(3))/
+	rm -f $(d)/$(usr_lib$(3))/$(1)*.{la,so}
+	dh_link -p$(4) \
+	  /$(usr_lib$(3))/$(1).so.$(2) /$(gcc_lib_dir$(3))/$(1).so
+
+endef
+
+checkdirs = $(builddir)
+ifeq ($(with_separate_libgcj),yes)
+  ifeq ($(PKGSOURCE),gcj-$(BASE_VERSION))
+    ifneq ($(with_standalone_gcj),yes)
+      checkdirs = $(buildlibdir)/libffi $(buildlibdir)/libjava
+    endif
+  endif
+endif
+ifeq ($(with_separate_go),yes)
+  ifeq ($(PKGSOURCE),gccgo-$(BASE_VERSION))
+    checkdirs = $(buildlibdir)/libgo
+  endif
+endif
+ifeq ($(with_separate_gnat),yes)
+  ifeq ($(PKGSOURCE),gnat-$(BASE_VERSION))
+    checkdirs = $(builddir)/gcc
+  endif
+endif
+
+# FIXME: MULTIARCH_DIRNAME needed for g++-multiarch-incdir.diff
+MULTIARCH_DIRNAME := $(DEB_TARGET_MULTIARCH)
+export MULTIARCH_DIRNAME
+
+default: build
+
+configure: $(configure_dependencies)
+
+$(configure_dummy_stamp):
+	touch $(configure_dummy_stamp)
+
+$(configure_stamp):
+	dh_testdir
+	: # give information about the build process
+	@echo "------------------------ Build process variables ------------------------"
+	@echo "Number of parallel processes used for the build: $(USE_CPUS)"
+	@echo "DEB_BUILD_OPTIONS: $$DEB_BUILD_OPTIONS"
+	@echo "Package source: $(PKGSOURCE)"
+	@echo "GCC version: $(GCC_VERSION)"
+	@echo "Base Debian version: $(BASE_VERSION)"
+	@echo -e "Configured with: $(subst ___, ,$(foreach i,$(CONFARGS),$(i)\n\t))"
+ifeq ($(DEB_CROSS),yes)
+	@echo "Building cross compiler for $(DEB_TARGET_ARCH)"
+endif
+	@echo "Using shell $(SHELL)"
+	@echo "Architecture: $(DEB_TARGET_ARCH) (GNU: $(TARGET_ALIAS))"
+	@echo "CPPFLAGS: $(CPPFLAGS)"
+	@echo "CFLAGS: $(CFLAGS)"
+	@echo "LDFLAGS: $(LDFLAGS)"
+	@echo "BOOT_CFLAGS: $(BOOT_CFLAGS)"
+	@echo "DEBIAN_BUILDARCH: $(DEBIAN_BUILDARCH)"
+	@echo "Install prefix: /$(PF)"
+ifeq ($(biarchn32)-$(biarch64),yes-yes)
+	@echo "Will build the triarch compilers (o32/n32/64, defaulting to o32)"
+else ifeq ($(biarchn32)-$(biarch32),yes-yes)
+	@echo "Will build the triarch compilers (o32/n32/64, defaulting to 64)"
+else ifeq ($(biarch64)-$(biarch32),yes-yes)
+	@echo "Will build the triarch compilers (x32/64/32, defaulting to x32)"
+else ifeq ($(biarch64)-$(biarchx32),yes-yes)
+	@echo "Will build the triarch compilers (32/64/x32, defaulting to 32bit)"
+else ifeq ($(biarch32)-$(biarchx32),yes-yes)
+	@echo "Will build the triarch compilers (64/32/x32, defaulting to 64bit)"
+else
+  ifeq ($(biarch64),yes)
+	@echo "Will build the biarch compilers (32/64, defaulting to 32bit)"
+  else
+    ifeq ($(biarch32),yes)
+	@echo "Will build the biarch compilers (64/32, defaulting to 64bit)"
+    else
+	@echo "Will not build the biarch compilers"
+    endif
+  endif
+endif
+
+ifeq ($(with_cxx),yes)
+	@echo "Will build the C++ compiler"
+else
+	@echo "Will not build the C++ compiler: $(with_cxx)"
+endif
+ifeq ($(with_objc),yes)
+	@echo "Will build the ObjC compiler."
+    ifeq ($(with_objc_gc),yes)
+	@echo "Will build the extra ObjC runtime for garbage collection."
+    else
+	@echo "Will not build the extra ObjC runtime for garbage collection."
+    endif
+else
+	@echo "Will not build the ObjC compiler: $(with_objc)"
+endif
+ifeq ($(with_objcxx),yes)
+	@echo "Will build the Obj-C++ compiler"
+else
+	@echo "Will not build the Obj-C++ compiler: $(with_objcxx)"
+endif
+ifeq ($(with_fortran),yes)
+	@echo "Will build the Fortran 95 compiler."
+else
+	@echo "Will not build the Fortran 95 compiler: $(with_fortran)"
+endif
+ifeq ($(with_java),yes)
+	@echo "Will build the Java compiler."
+else
+	@echo "Will not build the Java compiler: $(with_java)"
+endif
+ifeq ($(with_ada),yes)
+	@echo "Will build the Ada compiler."
+  ifeq ($(with_libgnat),yes)
+	@echo "Will build the shared Ada libraries."
+  else
+	@echo "Will not build the shared Ada libraries."
+  endif
+else
+	@echo "Will not build the Ada compiler: $(with_ada)"
+endif
+ifeq ($(with_go),yes)
+	@echo "Will build the Go compiler."
+else
+	@echo "Will not build the Go compiler: $(with_go)"
+endif
+ifeq ($(with_d),yes)
+	@echo "Will build the D compiler"
+  ifeq ($(with_libphobos),yes)
+	@echo "Will build the phobos D runtime library."
+  else
+	@echo "Will not build the phobos D runtime library: $(with_libphobos)"
+  endif
+else
+	@echo "Will not build the D compiler: $(with_d)"
+endif
+ifeq ($(with_ssp),yes)
+	@echo "Will build with SSP support."
+else
+	@echo "Will build without SSP support: $(with_ssp)"
+endif
+ifeq ($(with_check),yes)
+	@echo "Will run the testsuite."
+else
+	@echo "Will not run the testsuite: $(with_check)"
+endif
+ifeq ($(with_nls),yes)
+	@echo "Will enable national language support."
+else
+	@echo "Will disable national language support: $(with_nls)"
+endif
+	@echo "-----------------------------------------------------------------------------"
+	@echo ""
+ifeq ($(with_check),yes)
+	@if echo "spawn true" | /usr/bin/expect -f - >/dev/null; then \
+	  : ; \
+	else \
+	  echo "expect is failing on your system with the above error, which means the GCC"; \
+	  echo "testsuite will fail.  Please resolve the above issues and retry the build."; \
+	  echo "-----------------------------------------------------------------------------"; \
+	  exit 1; \
+	fi
+endif
+	rm -f $(configure_stamp) $(build_stamp)
+	cat debian/README.Debian $(patch_stamp) > debian/README.Debian.$(DEB_TARGET_ARCH)
+
+	rm -rf $(builddir)
+	mkdir $(builddir)
+
+	: # some tools like gettext are built with a newer libstdc++
+	mkdir -p bin
+	for i in msgfmt; do \
+	  install -m755 debian/bin-wrapper.in bin/$$i; \
+	done
+
+	: # configure
+	cd $(builddir) \
+	  && $(SET_PATH) \
+		CC="$(CC)" \
+		CXX="$(CXX)" \
+		$(CFLAGS_TO_PASS) \
+		$(LDFLAGS_TO_PASS) \
+		$(SET_SHELL) \
+	LD_LIBRARY_PATH=$${LD_LIBRARY_PATH:+$$LD_LIBRARY_PATH:}$(builddir)/gcc/ada/rts \
+		../src/configure $(subst ___, ,$(CONFARGS))
+
+	: # multilib builds without b-d on gcc-multilib (used in FLAGS_FOR_TARGET)
+	if [ -d /usr/include/$(DEB_TARGET_MULTIARCH)/asm ]; then \
+	  mkdir -p $(builddir)/sys-include; \
+	  ln -sf /usr/include/$(DEB_TARGET_MULTIARCH)/asm $(builddir)/sys-include/asm; \
+	fi
+
+	touch $(configure_stamp)
+
+build: $(sort $(build_arch_dependencies) $(build_indep_dependencies))
+build-arch: $(build_arch_dependencies)
+build-indep: $(build_indep_dependencies)
+
+$(build_dummy_stamp):
+	touch $(build_dummy_stamp)
+
+$(build_locale_stamp):
+ifeq ($(locale_data)-$(with_cxx),generate-yes)
+	: # build locales needed by libstdc++ testsuite
+	rm -rf locales
+	mkdir locales
+	-USE_CPUS=$(USE_CPUS) sh debian/locale-gen
+endif
+	touch $(build_locale_stamp)
+
+
+$(build_stamp): $(configure_stamp) $(build_locale_stamp)
+	dh_testdir
+	rm -f bootstrap-protocol
+	@echo TTTTT $$(date -R)
+ifeq ($(build_type),build-native)
+	: # native build
+  ifeq ($(with_java),yes)
+	mkdir -p bin
+	ln -sf /usr/bin/fastjar bin/jar
+    ifeq ($(with_native_ecj),yes)
+	: # prepare the standalone ecj jar
+	cp /usr/share/java/ecj.jar $(srcdir)/ecj-standalone.jar
+	zip -d $(srcdir)/ecj-standalone.jar 'org/eclipse/jdt/core/JDTCompilerAdapter*'
+    endif
+    ifeq ($(with_java_maintainer_mode),yes)
+	( \
+	  echo '#!/bin/sh'; \
+	  echo 'exec gij-5 -cp /usr/share/java/ecj.jar org.eclipse.jdt.internal.compiler.batch.GCCMain "$$@"'; \
+	) > bin/ecj1
+	chmod +x bin/ecj1
+	: # If we don't have gjavah in PATH, try to build it with the old gij
+	mkdir -p bin
+	if [ -x /usr/bin/gjavah-5 ]; then \
+	  ln -sf /usr/bin/gjavah-5 bin/gjavah; \
+	elif [ -x bin/gjavah ]; then \
+	  : ; \
+	else \
+	  mkdir -p $(builddir)/java_hacks; \
+	  cd $(builddir)/java_hacks; \
+	  cp -a $(srcdir)/libjava/classpath/tools/external external; \
+	  mkdir -p gnu/classpath/tools; \
+	  cp -a $(srcdir)/libjava/classpath/tools/gnu/classpath/tools/{common,javah,getopt} \
+	    gnu/classpath/tools/; \
+	  cp -a $(srcdir)/libjava/classpath/tools/resource/gnu/classpath/tools/common/Messages.properties \
+	    gnu/classpath/tools/common; \
+	  cd external/asm; \
+	  for i in `find . -name \*.java`; do gcj-5 --encoding ISO-8859-1 -C $$i -I.; done; \
+	  cd ../..; \
+	  for i in `find gnu -name \*.java`; do gcj-5 -C $$i -I. -Iexternal/asm/; done; \
+	  gcj-5 -findirect-dispatch -O2 -fmain=gnu.classpath.tools.javah.Main \
+	    -I. -Iexternal/asm/ `find . -name \*.class` -o $(PWD)/bin/gjavah.real; \
+	  ( \
+	    echo '#!/bin/sh'; \
+	    echo 'export CLASSPATH='`pwd`'$${CLASSPATH:+:$$CLASSPATH}'; \
+	    echo 'exec $(PWD)/bin/gjavah.real "$$@"'; \
+	  ) > $(PWD)/bin/gjavah; \
+	  chmod +x $(PWD)/bin/gjavah; \
+	fi
+    endif
+  endif
+	: # build native compiler
+	( \
+	  set +e; \
+	  $(SET_PATH) \
+	  $(SET_SHELL) \
+	  $(SET_LOCPATH) \
+	    $(MAKE) -C $(builddir) $(bootstrap_target) \
+		CC="$(CC)" \
+		$(STAGE1_CFLAGS_TO_PASS) \
+		$(STAGE1_LDFLAGS_TO_PASS) \
+		$(BOOT_CFLAGS_TO_PASS) \
+		$(BOOT_LDFLAGS_TO_PASS) \
+		$(CFLAGS_FOR_TARGET_TO_PASS) \
+		$(LDFLAGS_FOR_TARGET_TO_PASS) \
+		; \
+	  echo $$? > status; \
+	) 2>&1 | tee bootstrap-protocol
+else ifneq (,$(filter $(build_type),build-cross cross-build-native cross-build-cross))
+	: # build cross compiler for $(TARGET_ALIAS)
+	( \
+	  set +e; \
+	  $(SET_PATH) \
+	  $(SET_LOCPATH) \
+	    $(MAKE) -C $(builddir) \
+		$(BOOT_CFLAGS_TO_PASS) \
+		$(BOOT_LDFLAGS_TO_PASS) \
+		$(CFLAGS_FOR_TARGET_TO_PASS) \
+		$(LDFLAGS_FOR_TARGET_TO_PASS) \
+		; \
+	  echo $$? > status; \
+	) 2>&1 | tee bootstrap-protocol
+endif
+	@echo TTTTT $$(date -R)
+	s=`cat status`; rm -f status; \
+	if [ $$s -ne 0 ] && [ -z "$$NO_CONFIG_LOG_DUMP$$NO_CONFIG_LOG_DUMPS" ]; then \
+	  for log in $$(find $(builddir) -name config.log); do \
+	    case "$$log" in */prev-*) continue; esac; \
+	    echo LOGFILE START $$log; \
+	    cat $$log; \
+	    echo LOGFILE END $$log; \
+	  done; \
+	fi; \
+	test $$s -eq 0
+
+	if [ -f $(srcdir)/contrib/warn_summary ]; then \
+	  rm -f bootstrap-summary; \
+	  /bin/sh $(srcdir)/contrib/warn_summary bootstrap-protocol \
+	    > bootstrap-summary; \
+	fi
+
+	touch $(build_stamp)
+
+ifneq ($(build_type),build-native)
+  BUILT_CC = $(CC)
+  BUILT_CXX = $(CXX)
+else
+  BUILT_CC = $(builddir)/gcc/xgcc -B$(builddir)/gcc/
+  BUILT_CXX = $(builddir)/gcc/xg++ -B$(builddir)/gcc/ \
+	-B$(builddir)/$(TARGET_ALIAS)/libatomic/.libs \
+	-B$(builddir)/$(TARGET_ALIAS)/libstdc++-v3/src/.libs \
+	-B$(builddir)/$(TARGET_ALIAS)/libstdc++-v3/libsupc++/.libs \
+	-I$(builddir)/$(TARGET_ALIAS)/libstdc++-v3/include \
+	-I$(builddir)/$(TARGET_ALIAS)/libstdc++-v3/include/$(TARGET_ALIAS) \
+	-I$(srcdir)/libstdc++-v3/libsupc++ \
+	-L$(builddir)/$(TARGET_ALIAS)/libatomic/.libs \
+	-L$(builddir)/$(TARGET_ALIAS)/libstdc++-v3/src/.libs \
+	-L$(builddir)/$(TARGET_ALIAS)/libstdc++-v3/libsupc++/.libs
+endif
+
+CONFARGS_JIT := \
+	$(filter-out --enable-languages=%, $(CONFARGS)) \
+	--enable-languages=c++,jit \
+	--enable-host-shared
+
+CONFARGS_JIT := \
+	$(filter-out %bootstrap, $(CONFARGS_JIT)) \
+	--disable-bootstrap
+
+$(configure_jit_stamp): $(build_stamp)
+	dh_testdir
+	rm -f $(configure_jit_stamp) $(build_jit_stamp)
+	rm -rf $(builddir_jit)
+	mkdir $(builddir_jit)
+
+	: # configure jit
+	cd $(builddir_jit) && \
+	  $(SET_PATH) \
+	  $(SET_SHELL) \
+	  CC="$(BUILT_CC)" \
+	  CXX="$(BUILT_CXX)" \
+	     ../src/configure $(CONFARGS_JIT)
+	touch $(configure_jit_stamp)
+
+$(build_jit_stamp): $(configure_jit_stamp)
+	  $(SET_PATH) \
+	  $(SET_SHELL) \
+	  $(SET_LOCPATH) \
+	  LD_LIBRARY_PATH=$${LD_LIBRARY_PATH:+$$LD_LIBRARY_PATH:}$(builddir)/gcc \
+	  biarch_multidir_names=none \
+		$(MAKE) -C $(builddir_jit) \
+		$(BOOT_CFLAGS_TO_PASS) \
+		$(BOOT_LDFLAGS_TO_PASS) \
+		$(CFLAGS_FOR_TARGET_TO_PASS) \
+		$(LDFLAGS_FOR_TARGET_TO_PASS)
+
+ifeq ($(with_check),yes)
+  # FIXME: #782444
+  ifeq (,$(filter $(DEB_TARGET_ARCH), kfreebsd-i386 kfreebsd-amd64))
+	-$(MAKE) -C $(builddir_jit)/gcc check-jit \
+		RUNTESTFLAGS="-v -v"
+  endif
+endif
+
+	touch $(build_jit_stamp)
+
+ifeq ($(versioned_packages),yes)
+  hppa64_configure_flags += --program-suffix=-$(BASE_VERSION)
+endif
+
+$(configure_hppa64_stamp): $(build_stamp)
+	dh_testdir
+	rm -f $(configure_hppa64_stamp) $(build_hppa64_stamp)
+	rm -rf $(builddir_hppa64)
+	mkdir $(builddir_hppa64)
+	: # configure hppa64
+	cd $(builddir_hppa64) && \
+	  $(SET_PATH) \
+	  $(SET_SHELL) \
+	  CC="$(BUILT_CC)" \
+	  CXX="$(BUILT_CXX)" \
+	  $(CFLAGS_TO_PASS) \
+	  $(LDFLAGS_TO_PASS) \
+	     ../src/configure \
+		--enable-languages=c \
+		--prefix=/$(PF) \
+		--libexecdir=/$(hppa64libexecdir) \
+		--disable-shared \
+		--disable-nls \
+		--disable-threads \
+		--disable-libatomic \
+		--disable-libgomp \
+		--disable-libitm \
+		--disable-libssp \
+		--disable-libquadmath \
+		--enable-plugin \
+		--with-system-zlib \
+		--with-as=/usr/bin/hppa64-linux-gnu-as \
+		--with-ld=/usr/bin/hppa64-linux-gnu-ld \
+		--includedir=/usr/hppa64-linux-gnu/include \
+		--build=$(DEB_BUILD_GNU_TYPE) \
+		--host=$(DEB_HOST_GNU_TYPE) \
+		--target=hppa64-linux-gnu
+	touch $(configure_hppa64_stamp)
+
+$(build_hppa64_stamp): $(configure_hppa64_stamp)
+	  $(SET_PATH) \
+	  $(SET_SHELL) \
+	  $(SET_LOCPATH) \
+	  LD_LIBRARY_PATH=$${LD_LIBRARY_PATH:+$$LD_LIBRARY_PATH:}$(builddir)/gcc \
+	    $(MAKE) -C $(builddir_hppa64) \
+		$(if $(CFLAGS_FOR_TARGET),CFLAGS="$(CFLAGS_FOR_TARGET)") \
+		$(if $(CXXFLAGS_FOR_TARGET),CXXFLAGS="$(CXXFLAGS_FOR_TARGET)") \
+		$(if $(LDFLAGS_FOR_TARGET),LDFLAGS="$(LDFLAGS_FOR_TARGET)") \
+		$(CFLAGS_FOR_TARGET_TO_PASS) \
+		$(LDFLAGS_FOR_TARGET_TO_PASS)
+	touch $(build_hppa64_stamp)
+
+$(configure_neon_stamp): $(build_stamp)
+	dh_testdir
+	rm -f $(configure_neon_stamp) $(build_neon_stamp)
+	rm -rf $(builddir_neon)
+	mkdir $(builddir_neon)
+	: # configure neon
+	cd $(builddir_neon) && \
+	  $(SET_PATH) \
+	  $(SET_SHELL) \
+	  $(CFLAGS_TO_PASS) \
+	  $(LDFLAGS_TO_PASS) \
+	  CC="$(builddir)/gcc/xg++ -B$(builddir)/gcc/" \
+	     ../src/configure \
+		--disable-bootstrap \
+		--enable-languages=c,c++,objc,fortran \
+		--prefix=/$(PF) \
+		--libexecdir=/$(libexecdir) \
+		--program-suffix=-$(BASE_VERSION) \
+		--disable-nls \
+		--enable-plugin \
+		--with-arch=armv7-a --with-tune=cortex-a8 \
+		--with-float=$(float_abi) --with-fpu=neon \
+		--host=arm-linux-gnueabi \
+		--build=arm-linux-gnueabi \
+		--target=arm-linux-gnueabi
+	touch $(configure_neon_stamp)
+
+$(build_neon_stamp): $(configure_neon_stamp)
+	  $(SET_PATH) \
+	  $(SET_SHELL) \
+	  $(SET_LOCPATH) \
+	    $(MAKE) -C $(builddir_neon) \
+		$(BOOT_CFLAGS_TO_PASS) \
+		$(BOOT_LDFLAGS_TO_PASS) \
+		$(CFLAGS_FOR_TARGET_TO_PASS) \
+		$(LDFLAGS_FOR_TARGET_TO_PASS)
+	touch $(build_neon_stamp)
+
+
+ifeq ($(with_ada),yes)
+  MANUALS = \
+	$(srcdir)/gcc/ada/gnat_ugn.texi \
+	$(srcdir)/gcc/ada/gnat_rm.texi
+endif
+MANUALS += \
+	$(srcdir)/gcc/doc/gccint.texi \
+	$(srcdir)/gcc/doc/gcc.texi \
+	$(srcdir)/gcc/doc/cpp.texi \
+	$(srcdir)/gcc/doc/cppinternals.texi
+ifeq ($(with_fortran),yes)
+  MANUALS += $(srcdir)/gcc/fortran/gfortran.texi
+endif
+ifeq ($(with_java),yes)
+  MANUALS += $(srcdir)/gcc/java/gcj.texi
+endif
+ifeq ($(with_ada),yes)
+  MANUALS += $(srcdir)/gcc/ada/gnat-style.texi
+endif
+ifeq ($(with_gomp),yes)
+  MANUALS += $(srcdir)/libgomp/libgomp.texi
+endif
+ifeq ($(with_itm),yes)
+  MANUALS += $(srcdir)/libitm/libitm.texi
+endif
+ifeq ($(with_qmath),yes)
+  MANUALS += $(srcdir)/libquadmath/libquadmath.texi
+endif
+ifeq ($(with_go),yes)
+  MANUALS += $(srcdir)/gcc/go/gccgo.texi
+endif
+
+html-docs: $(build_html_stamp)
+#$(build_html_stamp): $(stampdir)/05-build-html-split
+$(build_html_stamp): $(stampdir)/05-build-html-nosplit
+
+html-makeinfo-split: $(stampdir)/05-build-html-split
+$(stampdir)/05-build-html-split: $(build_stamp)
+	mkdir -p html
+	rm -f html/*.html
+	cd $(builddir)/gcc; \
+	echo -n $(MANUALS) | xargs -d ' ' -L 1 -P $(USE_CPUS) -I{} \
+	  sh -c 'outname=`basename {} .texi`.html; \
+	  outname=`basename {} .texi`; \
+	  echo "generating $$outname ..."; \
+	  makeinfo --html --number-sections \
+		-I $(srcdir)/gcc/doc/include -I `dirname {}` \
+		-I $(srcdir)/gcc/p/doc \
+		-I $(srcdir)/gcc/p/doc/generated \
+		-I $(builddir)/gcc \
+		-I $(buildlibdir)/libquadmath \
+		-o $${outname} \
+		{}'
+	touch $@
+
+html-makeinfo-nosplit: $(stampdir)/05-build-html-nosplit
+$(stampdir)/05-build-html-nosplit: $(build_stamp)
+	mkdir -p html
+	rm -f html/*.html
+	cd $(builddir)/gcc; \
+	echo -n $(MANUALS) | xargs -d ' ' -L 1 -P $(USE_CPUS) -I{} \
+	  sh -c 'outname=`basename {} .texi`.html; \
+	  echo "generating $$outname ..."; \
+	  makeinfo --html --number-sections --no-split \
+		-I $(srcdir)/gcc/doc/include -I `dirname {}` \
+		-I $(srcdir)/gcc/p/doc \
+		-I $(srcdir)/gcc/p/doc/generated \
+		-I $(builddir)/gcc \
+		-I $(buildlibdir)/libquadmath \
+		-o $(PWD)/html/$${outname} \
+		{}'
+	touch $@
+
+# start the script only on architectures known to have slow autobuilders ...
+logwatch_archs := alpha arm m68k mips mipsel sparc
+ifeq ($(DEB_HOST_GNU_CPU), $(findstring $(DEB_HOST_GNU_CPU),$(logwatch_archs)))
+  start_logwatch = yes
+endif
+ifeq ($(DEB_HOST_GNU_SYSTEM),gnu)
+  start_logwatch = yes
+endif
+
+stamps/mauve-build: stamps/build
+	rm -rf mauve
+	mkdir -p mauve
+ifeq ($(with_mauve_check),yes)
+	tar xf $(wildcard /usr/src/mauve*.tar.*)
+	cd mauve \
+	    && aclocal \
+	    && automake \
+	    && autoconf2.59 \
+	    && PATH=$(CURDIR)/$(sdkimg)/bin:$$PATH ./configure --host=$(DEB_HOST_GNU_TYPE) --build=$(DEB_BUILD_GNU_TYPE)
+	PATH=$(CURDIR)/$(sdkimg)/bin:$$PATH $(MAKE) -C mauve
+endif
+	touch $@
+
+stamps/mauve-check: stamps/build stamps/mauve-build
+ifeq ($(with_mauve_check),yes)
+	-cd mauve && \
+	    JAVA_HOME=$(CURDIR)/$(sdkimg) \
+	    PATH=$(CURDIR)/$(sdkimg)/bin:$$PATH \
+		xvfb-run -s "-extension GLX" java Harness \
+		    -vm $(CURDIR)/$(sdkimg)/bin/java \
+		    -file $(CURDIR)/debian/mauve_tests \
+		    -timeout 30000 2>&1 \
+		| tee mauve_output
+	@sleep 5
+else
+	echo "mauve testsuite not run for this build" > mauve/mauve_output
+endif
+	touch $@
+
+check: $(check_stamp) # $(if $(filter yes, $(with_java)),stamps/05-build-mauve-stamp) #$(check_inst_stamp)
+$(check_stamp): $(filter $(build_gcc_stamp) $(build_jit_stamp) $(build_hppa64_stamp), $(build_dependencies))
+	rm -f test-protocol
+	rm -f $(builddir)/runcheck*
+
+	-chmod 755 $(srcdir)/contrib/test_summary
+
+	: # needed for the plugin tests to succeed
+	ln -sf gcc $(builddir)/prev-gcc
+	ln -sf $(DEB_TARGET_GNU_TYPE) $(builddir)/prev-$(DEB_TARGET_GNU_TYPE)
+
+ifneq ($(with_common_libs),yes)
+  ifeq ($(with_cxx),yes)
+	: # libstdc++6 built from newer gcc-X source, run testsuite against the installed lib
+
+	sed 's/-L[^ ]*//g' $(buildlibdir)/libstdc++-v3/scripts/testsuite_flags \
+	  > $(buildlibdir)/libstdc++-v3/scripts/testsuite_flags.installed
+	-$(ULIMIT_M); \
+	    set +e; \
+	    for d in $(buildlibdir)/libstdc++-v3/testsuite; do \
+	      echo "Running testsuite in $$d ..."; \
+	      TEST_INSTALLED=1 \
+	      $(SET_SHELL) \
+	      $(SET_LOCPATH) \
+	      $(SET_PATH) \
+	      DEJAGNU_TIMEOUT=$(DEJAGNU_TIMEOUT) \
+	      DEB_GCC_NO_O3=1 \
+		$(MAKE) -k -C $$d $(NJOBS) check $(RUNTESTFLAGS); \
+	    done 2>&1 | tee test-protocol2
+
+	BOOT_CFLAGS="$(BOOT_CFLAGS)" \
+	  $(srcdir)/contrib/test_summary -m "$(S_EMAIL)" > raw-test-summary
+	-( \
+	  sed -n '/^Mail/s/.*"\([^"][^"]*\)".*/\1/p' raw-test-summary; \
+	  awk '/^cat/, /^EOF/' raw-test-summary | grep -v EOF; \
+	) > libstdc++-test-summary
+	echo 'BEGIN installed libstdc++-v3 test-summary'
+	cat libstdc++-test-summary
+	echo 'END installed libstdc++-v3 test-summary'
+	find $(buildlibdir)/libstdc++-v3/testsuite -name '*.log' -o -name '*.sum' \
+	  | xargs -r rm -f
+  endif
+endif
+
+ifeq ($(start_logwatch),yes)
+	: # start logwatch script for regular output during test runs
+	chmod +x debian/logwatch.sh
+	-debian/logwatch.sh -t 900 -p $(builddir)/logwatch.pid \
+		-m '\ntestsuite still running ...\n' \
+		test-protocol \
+		$(builddir)/gcc/testsuite/gcc/gcc.log \
+		$(builddir)/gcc/testsuite/g++/g++.log \
+		$(builddir)/gcc/testsuite/gfortran/gfortran.log \
+		$(builddir)/gcc/testsuite/objc/objc.log \
+		$(builddir)/gcc/testsuite/obj-c++/obj-c++.log \
+		$(builddir)/gcc/testsuite/gnat/gnat.log \
+		$(builddir)/gcc/testsuite/ada/acats/acats.log \
+		$(builddir)/gcc/testsuite/gfortran/gfortran.log \
+		$(builddir)/gcc/p/test/test_log \
+		$(buildlibdir)/libstdc++-v3/testsuite/libstdc++.log \
+		$(buildlibdir)/libjava/testsuite/libjava.log \
+		$(buildlibdir)/libgomp/testsuite/libgomp.log \
+		$(buildlibdir)/libffi/testsuite/libffi.log \
+		&
+endif
+
+ifeq ($(with_ada),yes)
+	chmod +x debian/acats-killer.sh
+	-debian/acats-killer.sh -p $(builddir)/acats-killer.pid \
+		$(builddir)/gcc/testsuite/ada/acats/acats.log \
+		$(builddir)/gcc/testsuite/g++.log \
+		&
+endif
+
+	-$(ULIMIT_M); \
+	    set +e; \
+	    for d in $(checkdirs); do \
+	      echo "Running testsuite in $$d ..."; \
+	      $(SET_SHELL) \
+	      $(SET_LOCPATH) \
+	      $(SET_PATH) \
+	      EXTRA_TEST_PFLAGS=-g0 \
+	      DEJAGNU_TIMEOUT=$(DEJAGNU_TIMEOUT) \
+	      DEB_GCC_NO_O3=1 \
+		$(MAKE) -k -C $$d $(NJOBS) check $(RUNTESTFLAGS); \
+	    done 2>&1 | tee test-protocol
+
+	-ps aux | fgrep logwatch | fgrep -v fgrep
+	-if [ -f $(builddir)/logwatch.pid ]; then \
+	  kill -1 `cat $(builddir)/logwatch.pid`; \
+	  sleep 1; \
+	  kill -9 `cat $(builddir)/logwatch.pid`; \
+	  rm -f $(builddir)/logwatch.pid; \
+	fi
+	-ps aux | fgrep logwatch | fgrep -v fgrep
+
+ifeq ($(with_ada),yes)
+	-if [ -f $(builddir)/acats-killer.pid ]; then \
+	  kill -1 `cat $(builddir)/acats-killer.pid`; \
+	  sleep 1; \
+	  kill -9 `cat $(builddir)/acats-killer.pid`; \
+	  rm -f $(builddir)/acats-killer.pid; \
+	fi
+endif
+
+	: # running the libjava testsuite alone is missing this information
+	$(builddir)/gcc/xgcc -B$(builddir)/gcc/ -v > $(builddir)/compiler_version.sum 2>&1
+
+	if [ -x $(srcdir)/contrib/test_summary ]; then \
+	  rm -f test-summary; \
+	  ( \
+	    cd $(builddir); \
+	    echo '' > ts-include; \
+	    echo '' >> ts-include; \
+	    if [ -f $(builddir)/gcc/.bad_compare ]; then \
+	      echo 'Bootstrap comparison failure:' >> ts-include; \
+	      cat $(builddir)/gcc/.bad_compare >> ts-include; \
+	      echo '' >> ts-include; \
+	      echo '' >> ts-include; \
+	    fi; \
+	    echo "Build Dependencies:" >> ts-include; \
+	    dpkg -l g++-* binutils* `echo '$(LIBC_DEP)' | awk '{print $$1}'` \
+		libgmp*-dev libmpfr-dev libmpc-dev libisl-dev \
+	        | fgrep -v '<none>' >> ts-include; \
+	    echo '' >> ts-include; \
+	    cat ../$(patch_stamp) >> ts-include; \
+	    BOOT_CFLAGS="$(BOOT_CFLAGS)" \
+	      $(srcdir)/contrib/test_summary \
+		-i ts-include -m "$(S_EMAIL)" \
+	  ) > raw-test-summary; \
+	  if [ -n "$(testsuite_tarball)" ]; then \
+	    echo "Test suite used: $(testsuite_srcdir)" > test-summary; \
+	    echo "  Do not interpret the results on its own" >> test-summary; \
+	    echo "  but compare them with the results from" >> test-summary; \
+	    echo "  the gcc-snapshot package." >> test-summary; \
+	  fi; \
+	  sed -n '/^Mail/s/.*"\([^"][^"]*\)".*/\1/p' raw-test-summary \
+		>> test-summary; \
+	  awk '/^cat/, /^EOF/' raw-test-summary | grep -v EOF >> test-summary; \
+	  if [ -f bootstrap-summary -a "$(bootstrap_target)" != profiledbootstrap ]; then \
+	    echo '' >> test-summary; \
+	    cat bootstrap-summary >> test-summary; \
+	  fi; \
+	  echo 'BEGIN test-summary'; \
+	  cat test-summary; \
+	  echo 'END test-summary'; \
+	fi
+ifeq ($(with_d),yes)
+	: # the D test failures for the non-default multilibs are known, ignore them
+	egrep -v '^(FAIL|UNRESOLVED): (runnable|fail_c|comp)' test-summary > test-summary.tmp
+	mv -f test-summary.tmp test-summary
+endif
+
+	touch $(check_stamp)
+
+$(check_inst_stamp): $(check_stamp)
+	rm -f test-inst-protocol
+
+ifeq ($(start_logwatch),yes)
+	: # start logwatch script for regular output during test runs
+	chmod +x debian/logwatch.sh
+	-debian/logwatch.sh -t 900 -p $(builddir)/logwatch-inst.pid \
+		-m '\ntestsuite (3.3) still running ...\n' \
+		test-inst-protocol \
+		check-inst/{gcc,g++,g77,objc}.log \
+		&
+endif
+
+	rm -rf check-inst
+	mkdir check-inst
+
+	echo "Running testsuite ..."
+	-$(ULIMIT_M) ; \
+	    $(SET_SHELL) \
+	    $(SET_LOCPATH) \
+	    EXTRA_TEST_PFLAGS=-g0 \
+	    DEJAGNU_TIMEOUT=$(DEJAGNU_TIMEOUT) \
+	  cd check-inst && $(srcdir)/contrib/test_installed \
+	    --with-gcc=gcc-3.3 --with-g++=g++-3.3 --with-g77=g77-3.3 \
+		2>&1 | tee test-inst-protocol
+
+	-ps aux | fgrep logwatch | fgrep -v fgrep
+	if [ -f $(builddir)/logwatch-inst.pid ]; then \
+	  kill -1 `cat $(builddir)/logwatch-inst.pid`; \
+	else \
+	  true; \
+	fi
+	-ps aux | fgrep logwatch | fgrep -v fgrep
+
+	-chmod 755 $(srcdir)/contrib/test_summary
+	if [ -x $(srcdir)/contrib/test_summary ]; then \
+	  rm -f test-inst-summary; \
+	  ( \
+	    cd check-inst; \
+	    echo '' > ts-include; \
+	    echo '' >> ts-include; \
+	    echo "Build Dependencies:" >> ts-include; \
+	    dpkg -l g++-* binutils* `echo '$(LIBC_DEP)' | awk '{print $$1}'` \
+		libgmp*-dev libmpfr-dev libmpc-dev libisl*-dev \
+	        | fgrep -v '<none>' >> ts-include; \
+	    echo '' >> ts-include; \
+	    echo 'Results for the installed GCC-3.3 compilers' >> ts-include; \
+	    $(srcdir)/contrib/test_summary \
+		-i ts-include -m "$(S_EMAIL)" \
+	  ) > raw-test-inst-summary; \
+	  sed -n '/^Mail/s/.*"\([^"][^"]*\)".*/\1/p' raw-test-inst-summary \
+		>> test-inst-summary; \
+	  awk '/^cat/, /^EOF/' raw-test-inst-summary \
+		| grep -v EOF >> test-inst-summary; \
+	  echo 'BEGIN test-installed-summary'; \
+	  cat test-inst-summary; \
+	  echo 'END test-installed-summary'; \
+	fi
+
+	chmod 755 debian/reduce-test-diff.awk
+	if diff -u test-inst-summary test-summary \
+		| debian/reduce-test-diff.awk > diff-summary; \
+	then \
+	  mv -f diff-summary testsuite-comparision; \
+	else \
+	  ( \
+	    echo "WARNING: New failures in gcc-3.4 compared to gcc-3.3"; \
+	    echo ''; \
+	    cat diff-summary; \
+	  ) > testsuite-comparision; \
+	  rm -f diff-summary; \
+	fi
+	touch $(check_inst_stamp)
+
+clean: debian/control
+	dh_testdir
+	rm -f pxxx status
+	rm -f *-summary *-protocol testsuite-comparision summary-diff
+	rm -f $(srcdir)/gcc/po/*.gmo
+	rm -f debian/lib{gcc,gcj,objc,stdc++}{-v3,[0-9]}*.{{pre,post}{inst,rm},shlibs}
+	fs=`echo debian/*BV* debian/*GCJ* debian/*CXX* debian/*LC* debian/*MF* | sort -u`; \
+	for f in $$fs; do \
+	  [ -f $$f ] || continue; \
+	  f2=$$(echo $$f \
+		| sed 's/BV/$(BASE_VERSION)/;s/CXX/$(CXX_SONAME)/;s/LGCJ/$(PKG_LIBGCJ_EXT)/;s/GCJ/$(PKG_GCJ_EXT)/;s/LC/$(GCC_SONAME)/;s/-CRB/$(cross_bin_arch)/;s/\.in$$//'); \
+	  rm -f $$f2; \
+	done
+	rm -f debian/lib*gcc1.symbols
+	rm -f debian/lib*{atomic$(ATOMIC_SONAME),cilkrts$(CILKRTS_SONAME),gfortran$(FORTRAN_SONAME),gomp$(GOMP_SONAME),itm$(ITM_SONAME),mpx$(MPX_SONAME),quadmath$(QMATH_SONAME)}.symbols
+	find debian -maxdepth 1 -name '*-cross.symbols' -type l | xargs -r rm -f
+	rm -f debian/gcc-{XX,ar,nm,ranlib}-$(BASE_VERSION).1
+	rm -f debian/shlibs.local debian/substvars.local
+	rm -f debian/*.debhelper
+	-[ -d debian/bugs ] && $(MAKE) -C debian/bugs clean
+	rm -f debian/README.libstdc++-baseline debian/README.Bugs debian/README.Debian.$(DEB_TARGET_ARCH)
+	rm -f debian/lib*gcj-bc.shlibs
+	rm -f debian/arch_binaries* debian/indep_binaries*
+	rm -rf bin locales share
+	rm -rf check-inst
+	rm -rf .pc
+	dh_clean
+ifneq (,$(filter $(build_type), build-cross cross-build-cross))
+	$(cross_clean) dh_clean
+endif
+
+# -----------------------------------------------------------------------------
+# some abbrevations for the package names and directories;
+# p_XXX is the package name, d_XXX is the package directory
+# these macros are only used in the binary-* targets.
+
+ifeq ($(versioned_packages),yes)
+  pkg_ver := -$(BASE_VERSION)
+endif
+
+ifneq ($(DEB_CROSS),yes)
+  p_base = gcc$(pkg_ver)-base
+  p_lbase = $(p_base)
+  p_xbase = gcc$(pkg_ver)-base
+  p_gcc  = gcc$(pkg_ver)
+  p_cpp  = cpp$(pkg_ver)
+  p_cppd = cpp$(pkg_ver)-doc
+  p_cxx  = g++$(pkg_ver)
+  p_doc  = gcc$(pkg_ver)-doc
+  p_lgcc = libgcc$(GCC_SONAME)
+else
+  # only triggered if DEB_CROSS set
+  p_base = gcc$(pkg_ver)$(cross_bin_arch)-base
+  p_lbase = gcc$(pkg_ver)-cross-base$(GCC_PORTS_BUILD)
+  p_xbase = gcc$(pkg_ver)$(cross_bin_arch)-base
+  p_cpp  = cpp$(pkg_ver)$(cross_bin_arch)
+  p_gcc  = gcc$(pkg_ver)$(cross_bin_arch)
+  p_cxx  = g++$(pkg_ver)$(cross_bin_arch)
+endif
+p_hppa64 = gcc$(pkg_ver)-hppa64-linux-gnu
+
+d	= debian/tmp
+d_base	= debian/$(p_base)
+d_xbase = debian/$(p_xbase)
+d_gcc	= debian/$(p_gcc)
+d_cpp	= debian/$(p_cpp)
+d_cppd	= debian/$(p_cppd)
+d_cxx	= debian/$(p_cxx)
+d_doc	= debian/$(p_doc)
+d_lgcc	= debian/$(p_lgcc)
+d_hppa64= debian/$(p_hppa64)
+
+d_neon   = debian/tmp-neon
+
+common_substvars = \
+	$(shell awk "{printf \"'-V%s' \", \$$0}" debian/substvars.local)
+
+ifeq ($(DEB_CROSS),yes)
+  lib_binaries := indep_binaries
+else
+  lib_binaries := arch_binaries
+endif
+
+# ---------------------------------------------------------------------------
+
+ifeq ($(single_package),yes)
+  include debian/rules.d/binary-snapshot.mk
+else
+
+ifneq ($(with_base_only),yes)
+ifneq ($(DEB_CROSS),yes)
+ifeq ($(with_source),yes)
+  include debian/rules.d/binary-source.mk
+endif
+endif
+endif
+
+ifneq ($(BACKPORT),true)
+
+ifeq ($(with_gccbase),yes)
+  include debian/rules.d/binary-base.mk
+endif
+
+ifneq ($(with_base_only),yes)
+
+# always include to get some definitions
+include debian/rules.d/binary-libgcc.mk
+
+ifeq ($(with_libqmath),yes)
+  include debian/rules.d/binary-libquadmath.mk
+endif
+
+ifeq ($(with_libgmath),yes)
+  include debian/rules.d/binary-libgccmath.mk
+endif
+
+ifeq ($(with_libgomp),yes)
+  include debian/rules.d/binary-libgomp.mk
+endif
+
+ifeq ($(with_libitm),yes)
+  include debian/rules.d/binary-libitm.mk
+endif
+
+ifeq ($(with_libatomic),yes)
+  include debian/rules.d/binary-libatomic.mk
+endif
+
+ifeq ($(with_libbacktrace),yes)
+  include debian/rules.d/binary-libbacktrace.mk
+endif
+
+ifeq ($(with_cdev),yes)
+  include debian/rules.d/binary-cpp.mk
+endif
+
+ifeq ($(with_fixincl),yes)
+  include debian/rules.d/binary-fixincl.mk
+endif
+
+ifeq ($(with_libssp),yes)
+  include debian/rules.d/binary-libssp.mk
+endif
+
+ifeq ($(with_objcxx),yes)
+  include debian/rules.d/binary-objcxx.mk
+endif
+
+ifeq ($(with_objc),yes)
+  include debian/rules.d/binary-objc.mk
+  include debian/rules.d/binary-libobjc.mk
+endif
+
+ifeq ($(with_go),yes)
+  include debian/rules.d/binary-go.mk
+endif
+
+# include before cxx
+ifeq ($(with_java),yes)
+  include debian/rules.d/binary-java.mk
+endif
+
+ifeq ($(with_cxxdev),yes)
+  include debian/rules.d/binary-cxx.mk
+endif
+ifeq ($(with_cxx),yes)
+  include debian/rules.d/binary-libstdcxx.mk
+endif
+
+ifeq ($(with_libasan),yes)
+  include debian/rules.d/binary-libasan.mk
+endif
+
+ifeq ($(with_liblsan),yes)
+  include debian/rules.d/binary-liblsan.mk
+endif
+
+ifeq ($(with_libtsan),yes)
+  include debian/rules.d/binary-libtsan.mk
+endif
+
+ifeq ($(with_libubsan),yes)
+  include debian/rules.d/binary-libubsan.mk
+endif
+
+ifeq ($(with_libvtv),yes)
+  include debian/rules.d/binary-libvtv.mk
+endif
+
+ifeq ($(with_libcilkrts),yes)
+  include debian/rules.d/binary-libcilkrts.mk
+endif
+
+ifeq ($(with_libmpx),yes)
+  include debian/rules.d/binary-libmpx.mk
+endif
+
+ifeq ($(with_f77),yes)
+  include debian/rules.d/binary-f77.mk
+endif
+
+ifeq ($(with_fortran),yes)
+  include debian/rules.d/binary-fortran.mk
+endif
+
+ifeq ($(with_ada),yes)
+  include debian/rules.d/binary-ada.mk
+endif
+
+ifeq ($(with_d),yes)
+  include debian/rules.d/binary-d.mk
+endif
+
+ifeq ($(with_libcc1),yes)
+  include debian/rules.d/binary-libcc1.mk
+endif
+
+ifeq ($(with_jit),yes)
+  include debian/rules.d/binary-libgccjit.mk
+endif
+
+ifeq ($(with_libnof),yes)
+  ifeq ($(DEB_TARGET_GNU_CPU),powerpc)
+    include debian/rules.d/binary-nof.mk
+  endif
+endif
+
+ifeq ($(with_softfloat),yes)
+  include debian/rules.d/binary-softfloat.mk
+endif
+
+# gcc must be moved/built after g77 and g++
+ifeq ($(with_cdev),yes)
+  include debian/rules.d/binary-gcc.mk
+endif
+
+ifeq ($(with_hppa64),yes)
+  include debian/rules.d/binary-hppa64.mk
+endif
+
+ifeq ($(with_neon),yes)
+  include debian/rules.d/binary-neon.mk
+endif
+
+endif # with_base_only
+endif # BACKPORT
+endif # ($(single_package),yes)
+
+# ----------------------------------------------------------------------
+install: $(install_dependencies)
+
+$(install_dummy_stamp): $(build_dummy_stamp)
+	touch $(install_dummy_stamp)
+
+$(install_snap_stamp): $(build_dependencies)
+	dh_testdir
+	dh_testroot
+	dh_prep
+
+	: # Install directories
+	rm -rf $(d)
+	mkdir -p $(d)/$(PF)
+
+ifeq ($(with_hppa64),yes)
+	: # Install hppa64
+	$(SET_PATH) \
+	    $(MAKE) -C $(builddir_hppa64) \
+		CC="$(CC)" \
+		$(CFLAGS_TO_PASS) \
+		$(LDFLAGS_TO_PASS) \
+		DESTDIR=$(PWD)/$(d) \
+		    install
+
+	ls -l $(d)/$(PF)/bin
+	if [ ! -x $(d)/$(PF)/bin/hppa64-linux-gnu-gcc ]; then \
+	  mv $(d)/$(PF)/bin/hppa64-linux-gnu-gcc-5* $(d)/$(PF)/bin/hppa64-linux-gnu-gcc; \
+	else \
+	  rm -f $(d)/$(PF)/bin/hppa64-linux-gnu-gcc-5*; \
+	fi
+
+	for i in ar nm ranlib; do \
+	  cp debian/gcc-$$i-$(BASE_VERSION).1 \
+	    $(d)/$(PF)/share/man/man1/hppa64-linux-gnu-gcc-$$i.1; \
+	done
+
+	: # remove files not needed from the hppa64 build
+	rm -rf $(d)/$(PF)/share/info
+	rm -rf $(d)/$(PF)/share/man
+	rm -f $(d)/$(PF)/$(libdir)/libiberty.a
+	rm -f $(d)/$(PF)/bin/*{gcov,gcov-tool,gccbug,gcc}
+
+	rm -rf $(d)/$(PF)/hppa64-linux-gnu/include
+	rm -rf $(d)/$(PF)/hppa64-linux-gnu/lib
+	set -e; \
+	  cd $(d)/$(PF)/$(libdir)/gcc/hppa64-linux-gnu/$(versiondir)/include-fixed; \
+	  for i in *; do \
+	    case "$$i" in \
+	      README|features.h|syslimits.h|limits.h) ;; \
+	      linux|$(TARGET_ALIAS)) ;; \
+	      $(subst $(DEB_TARGET_GNU_CPU),$(biarch_cpu),$(TARGET_ALIAS))) ;; \
+	      *) echo "remove include-fixed/$$i"; rm -rf $$i; \
+	    esac; \
+	  done
+endif
+
+	: # Work around PR lto/41569
+	ln -sf gcc $(builddir)/prev-gcc
+	ln -sf $(DEB_TARGET_GNU_TYPE) $(builddir)/prev-$(DEB_TARGET_GNU_TYPE)
+
+	: # Install everything
+	$(SET_PATH) \
+	$(SET_SHELL) \
+	  $(MAKE) -C $(builddir) \
+	    $(CFLAGS_TO_PASS) \
+	    $(LDFLAGS_TO_PASS) \
+	    DESTDIR=$(PWD)/$(d) \
+	    infodir=/$(PF)/share/info \
+	    mandir=/$(PF)/share/man \
+		install
+
+	ls -l $(d)/$(PF)/bin
+
+	for i in ar nm ranlib; do \
+	  cp debian/gcc-$$i-$(BASE_VERSION).1 \
+	    $(d)/$(PF)/share/man/man1/$(cmd_prefix)gcc-$$i.1; \
+	done
+
+	if [ ! -x $(d)/$(PF)/bin/$(TARGET_ALIAS)-gcc ]; then \
+	  mv $(d)/$(PF)/bin/$(TARGET_ALIAS)-gcc-5* $(d)/$(PF)/bin/$(TARGET_ALIAS)-gcc; \
+	else \
+	  rm -f $(d)/$(PF)/bin/$(TARGET_ALIAS)-gcc-5*; \
+	fi
+	set -e; \
+	  cd $(d)/$(gcc_lib_dir)/include-fixed; \
+	  for i in *; do \
+	    case "$$i" in \
+	      README|features.h|syslimits.h|limits.h) ;; \
+	      linux|$(TARGET_ALIAS)) ;; \
+	      $(subst $(DEB_TARGET_GNU_CPU),$(biarch_cpu),$(TARGET_ALIAS))) ;; \
+	      *) echo "remove include-fixed/$$i"; rm -rf $$i; \
+	    esac; \
+	  done
+
+ifneq ($(configured_libdir),$(libdir))
+	for i in debug go pkgconfig '*.so' '*.so.*' '*.a' '*.la' '*.py' '*.spec'; do \
+	  mv $(d)/$(PF)/$(configured_libdir)/$$i \
+		$(d)/$(PF)/$(libdir)/. || true; \
+	done
+endif
+
+# FIXME: libjava/classpath not correctly patched
+ifeq ($(with_java),yes)
+	-if [ -d $(d)/$(PF)/lib/gcj-$(GCC_VERSION)-$(GCJ_SONAME) ]; then \
+	  ls -l $(d)/$(PF)/lib/gcj-$(GCC_VERSION)-$(GCJ_SONAME); \
+	  mv $(d)/$(PF)/lib/gcj-$(GCC_VERSION)-$(GCJ_SONAME)/* \
+	    $(d)/$(PF)/lib/gcj-$(BASE_VERSION)-$(GCJ_SONAME)/; \
+	  rmdir $(d)/$(PF)/lib/gcj-$(GCC_VERSION)-$(GCJ_SONAME); \
+	fi
+
+	ln -sf libgcj.so.$(GCJ_SONAME).0.0 $(d)/$(PF)/lib/libgcj_bc.so.1.0.0
+
+	install -m 755 $(d)/$(PF)/lib/libgcj_bc.so.1 \
+		$(d)/$(gcc_lib_dir)/libgcj_bc.so
+	$(builddir)/gcc/xgcc -B$(builddir)/gcc/ -shared -fpic -xc /dev/null \
+		-o build/libgcj.so -Wl,-soname,libgcj.so.$(GCJ_SONAME) -nostdlib
+	$(builddir)/gcc/xgcc -B$(builddir)/gcc/ -shared -fpic \
+		$(srcdir)/libjava/libgcj_bc.c \
+		-o $(d)/$(gcc_lib_dir)/libgcj_bc.so \
+		-Wl,-soname,libgcj_bc.so.1 $(builddir)/libgcj.so -shared-libgcc
+endif
+
+	-ls -l $(d)/usr
+	if [ -d $(d)/usr/man/man1 ]; then \
+	  mv $(d)/usr/man/man1/* $(d)/usr/share/man/man1/; \
+	fi
+
+	chmod 755 debian/dh_*
+	touch $(install_snap_stamp)
+
+$(install_stamp): $(build_stamp)
+	dh_testdir
+	dh_testroot
+	dh_prep -N$(p_hppa64)
+
+	if [ -f $(binary_stamp)-hppa64 ]; then \
+	  mv $(binary_stamp)-hppa64 saved-stamp-hppa64; \
+	fi
+	rm -f $(binary_stamp)*
+	if [ -f saved-stamp-hppa64 ]; then \
+	  mv saved-stamp-hppa64 $(binary_stamp)-hppa64; \
+	fi
+
+	: # Install directories
+	rm -rf $(d)
+	mkdir -p $(d)/$(libdir) $(d)/$(PF) $(d)/$(PF)/$(libdir)/debug
+ifeq ($(biarch32),yes)
+	mkdir -p $(d)/$(PF)/$(lib32loc)/debug
+endif
+ifeq ($(biarch64),yes)
+	mkdir -p $(d)/$(PF)/lib64/debug
+endif
+ifeq ($(biarchn32),yes)
+	mkdir -p $(d)/$(PF)/$(libn32)/debug
+endif
+ifeq ($(biarchx32),yes)
+	mkdir -p $(d)/$(PF)/libx32/debug
+endif
+
+ifneq (,$(filter $(DEB_TARGET_GNU_CPU),x86_64 sparc64 s390x powerpc64))
+ifneq ($(DEB_TARGET_ARCH),x32)
+	: # link lib to lib64 and $(PF)/lib to $(PF)/lib64
+	: # (this works when CONFARGS contains '--disable-multilib')
+	ln -s $(configured_libdir) $(d)/lib64
+	mkdir -p $(d)/$(PF)/$(configured_libdir)
+	ln -s $(configured_libdir) $(d)/$(PF)/lib64
+endif
+endif
+ifeq ($(DEB_TARGET_ARCH),x32)
+	: # link lib to libx32 and $(PF)/lib to $(PF)/libx32
+	ln -s $(configured_libdir) $(d)/libx32
+	mkdir -p $(d)/$(PF)/$(configured_libdir)
+	ln -s $(configured_libdir) $(d)/$(PF)/libx32
+endif
+
+	: # Work around PR lto/41569
+	ln -sf gcc $(builddir)/prev-gcc
+
+	: # Install everything
+	$(SET_PATH) \
+	$(SET_SHELL) \
+	  $(MAKE) -C $(builddir) \
+	    $(CFLAGS_TO_PASS) \
+	    $(LDFLAGS_TO_PASS) \
+	    DESTDIR=$(PWD)/$(d) \
+	    infodir=/$(PF)/share/info \
+	    mandir=/$(PF)/share/man \
+		install
+
+ifeq ($(DEB_STAGE)-$(DEB_CROSS),rtlibs-yes)
+	@echo configured_libdir=$(configured_libdir) / libdir=$(libdir) / usr_lib=$(usr_lib)
+	ls $(d)/$(PF)/$(TARGET_ALIAS)/lib
+	set -x; \
+	if [ -d $(d)/$(PF)/$(TARGET_ALIAS)/lib ]; then \
+	  cp -a $(d)/$(PF)/$(TARGET_ALIAS)/lib/* $(d)/$(PF)/lib/$(DEB_TARGET_MULTIARCH)/.; \
+	fi
+	for d in $$(cd $(d)/$(PF)/$(TARGET_ALIAS); echo lib?*); do \
+	  [ -d $(d)/$(PF)/$(TARGET_ALIAS)/$$d ] || continue; \
+	  cp -a $(d)/$(PF)/$(TARGET_ALIAS)/$$d/* $(d)/$(PF)/$$d/.; \
+	done
+else
+  ifneq ($(configured_libdir),$(libdir))
+	for i in debug go pkgconfig '*.so' '*.so.*' '*.a' '*.la' '*.o' '*.py' '*.spec'; do \
+	  mv $(d)/$(PF)/$(configured_libdir)/$$i \
+		$(d)/$(PF)/$(libdir)/. || true; \
+	done
+  endif
+endif
+
+ifeq ($(with_libcxxdbg),yes)
+	: # FIXME: the libstdc++ gdb.py file is installed with a wrong name
+	for i in $$(find $(d)/$(PF) -name libstdc++_pic.a-gdb.py); do \
+	  [ -f $$i ] || continue; \
+	  d=$$(dirname $$i); \
+	  b=$$(basename $$i); \
+	  t=$$(cd $$d; echo libstdc++.so.*.*.*)-gdb.py; \
+	  mv $$i $$d/$$t; \
+	done
+endif
+
+	if [ -d $(d)/$(PF)/include/cilk ]; then \
+	  mv $(d)/$(PF)/include/cilk $(d)/$(gcc_lib_dir)/include/. ;\
+	fi
+
+ifeq ($(with_java),yes)
+# FIXME: libjava/classpath not correctly patched
+	-if [ -d $(d)/$(PF)/lib/gcj-$(GCC_VERSION)-$(GCJ_SONAME) ]; then \
+	  ls -l $(d)/$(PF)/lib/gcj-$(GCC_VERSION)-$(GCJ_SONAME); \
+	  mv $(d)/$(PF)/lib/gcj-$(GCC_VERSION)-$(GCJ_SONAME)/* \
+	    $(d)/$(PF)/lib/gcj-$(BASE_VERSION)-$(GCJ_SONAME)/; \
+	  rmdir $(d)/$(PF)/lib/gcj-$(GCC_VERSION)-$(GCJ_SONAME); \
+	fi
+endif
+
+	: # remove rpath settings from binaries and shared libs
+	for i in $$(chrpath -k $(d)/$(PF)/bin/* $(d)/$(PFL)/lib*/lib*.so.* \
+			$(d)/$(gcc_lib_dir)/plugin/* \
+			$(if $(filter $(with_multiarch_lib),yes), \
+			  $(d)/$(PF)/lib/$(DEB_TARGET_MULTIARCH)/lib*.so.*) \
+			$(d)/$(PF)/lib*/gcj$(pkg_ver)*/lib*.so.* \
+			2>/dev/null | awk -F: '/RPATH=/ {print $$1}'); \
+	do \
+	  case "$$i" in ecj1|*gij-*|*libjawt*|*libjvm*) continue; esac; \
+	  [ -h $$i ] && continue; \
+	  chrpath --delete $$i; \
+	  echo "removed RPATH: $$i"; \
+	done
+
+	: # remove '*.la' and '*.lai' files, not shipped in any package.
+	find $(d) -name '*.la' -o -name '*.lai' | xargs -r rm -f
+
+ifeq ($(GFDL_INVARIANT_FREE),yes)
+	for i in gcc gcov; do \
+	  I=`echo $$i | tr a-z A-Z`; \
+	  sed -e "s/@NAME@/$$I$(pkg_ver)/g" -e "s/@name@/$$i$(pkg_ver)/g" \
+	    debian/dummy-man.1 > $(d)/$(PF)/share/man/man1/$$i.1; \
+	done
+
+  ifeq ($(with_fortran),yes)
+	for i in g77; do \
+	  I=`echo $$i | tr a-z A-Z`; \
+	  sed -e "s/@NAME@/$$I$(pkg_ver)/g" -e "s/@name@/$$i$(pkg_ver)/g" \
+	    debian/dummy-man.1 > $(d)/$(PF)/share/man/man1/$$i.1; \
+	done
+  endif
+  ifeq ($(with_java),yes)
+	for i in gcj gcjh gij jv-convert jv-scan jcf-dump grmic grmiregistry; \
+	do \
+	  I=`echo $$i | tr a-z A-Z`; \
+	  sed -e "s/@NAME@/$$I$(pkg_ver)/g" -e "s/@name@/$$i$(pkg_ver)/g" \
+	    debian/dummy-man.1 > $(d)/$(PF)/share/man/man1/$$i.1; \
+	done
+  endif
+endif
+
+ifneq ($(with_libgnat),yes)
+	rm -f $(d)/$(gcc_lib_dir)/adalib/lib*.so*
+endif
+
+# FIXME: libgnatprj and libgnatvsn need proper configury/Makefiles
+ifeq ($(DEB_CROSS),yes)
+  ifeq ($(with_ada),yes)
+	for i in 'libgnatprj*' 'libgnatvsn*'; do \
+	  mv $(d)/$(PF)/lib/$$i $(d)/$(usr_lib)/. || true; \
+	done
+  endif
+endif
+
+#  ifeq ($(with_ada),yes)
+#	: # rename files (versioned ada binaries)
+#	for i in ; do \
+#	  mv $(d)/$(PF)/bin/$$i $(d)/$(PF)/bin/$$i-$(GNAT_VERSION); \
+#	  mv $(d)/$(PF)/share/man/man1/$$i.1 \
+#		$(d)/$(PF)/share/man/man1/$$i-$(GNAT_VERSION).1; \
+#	done
+#	for i in $(GNAT_TOOLS); do \
+#	  mv $(d)/$(PF)/bin/$$i $(d)/$(PF)/bin/$$i-$(GNAT_VERSION); \
+#	done
+#  endif
+
+	for i in ar nm ranlib; do \
+	  cp debian/gcc-$$i-$(BASE_VERSION).1 \
+	    $(d)/$(PF)/share/man/man1/$(cmd_prefix)gcc-$$i$(pkg_ver).1; \
+	done
+
+	chmod 755 debian/dh_*
+
+#	tar cf tmp.tar debian/tmp
+
+	@echo XXXXX `date -R`
+	touch $(install_stamp)
+
+$(install_jit_stamp): $(build_jit_stamp) $(install_stamp)
+	dh_testdir
+	dh_testroot
+	rm -rf $(d)-jit
+	mkdir -p $(d)-jit/$(PF)
+
+	$(SET_PATH) \
+	  biarch_multidir_names=none \
+	    $(MAKE) -C $(builddir_jit) \
+		CC="$(CC_FOR_JIT)" \
+		$(CFLAGS_TO_PASS) \
+		$(LDFLAGS_TO_PASS) \
+		DESTDIR=$(PWD)/$(d)-jit \
+		    install
+
+	: # copy files to the standard build
+	cp -a $(d)-jit/$(PF)/include/libgccjit*.h \
+		$(d)/$(gcc_lib_dir)/include/.
+	cp -a $(d)-jit/$(PF)/lib/libgccjit.so* \
+		$(d)/$(usr_lib)/.
+	cp -a $(d)-jit/$(PF)/share/info/libgccjit* \
+		$(d)/$(PF)/share/info/.
+
+	@echo XXXXX `date -R`
+	touch $(install_jit_stamp)
+
+$(install_hppa64_stamp): $(build_hppa64_stamp)
+	dh_testdir
+	dh_testroot
+	rm -rf $(d_hppa64)
+	mkdir -p $(d_hppa64)/$(PF)
+
+	$(SET_PATH) \
+	    $(MAKE) -C $(builddir_hppa64) \
+		CC="$(CC)" \
+		$(CFLAGS_TO_PASS) \
+		$(LDFLAGS_TO_PASS) \
+		DESTDIR=$(PWD)/$(d_hppa64) \
+		    install
+
+	: # remove files not needed
+	rm -rf $(d_hppa64)/$(PF)/info $(d_hppa64)/$(PF)/share/info
+	rm -rf $(d_hppa64)/$(PF)/man $(d_hppa64)/$(PF)/share/man
+	rm -rf $(d_hppa64)/$(PF)/lib/gcc/hppa64-linux-gnu/$(BASE_VERSION)/plugin
+	rm -f $(d_hppa64)/$(PF)/lib/libiberty.a
+	rm -f $(d_hppa64)/$(PF)/lib/libcc1.*
+	rm -f $(d_hppa64)/$(PF)/bin/*{gcov,gcov-tool,gccbug,gcc}
+
+	rm -rf $(d_hppa64)/$(PF)/hppa64-linux-gnu
+	rm -rf $(d_hppa64)/$(PF)/lib/gcc/hppa64-linux-gnu/$(BASE_VERSION)/install-tools
+
+ifeq ($(versioned_packages),yes)
+	for i in cpp gcc-ar gcc-nm gcc-ranlib; do \
+	  mv -f $(d_hppa64)/$(PF)/bin/hppa64-linux-gnu-$$i \
+		$(d_hppa64)/$(PF)/bin/hppa64-linux-gnu-$$i$(pkg_ver); \
+	done
+endif
+	mkdir -p $(d_hppa64)/$(PF)/share/man/man1
+	for i in cpp gcc-ar gcc-nm gcc-ranlib; do \
+	  ln -sf $$i$(pkg_ver).1.gz \
+	    $(d_hppa64)/$(PF)/share/man/man1/hppa64-linux-gnu-$$i$(pkg_ver).1.gz; \
+	done
+
+	touch $(install_hppa64_stamp)
+
+$(install_neon_stamp): $(build_neon_stamp)
+	dh_testdir
+	dh_testroot
+	rm -rf $(d_neon)
+	mkdir -p $(d_neon)/$(PF)
+
+	$(SET_PATH) \
+	    $(MAKE) -C $(builddir_neon) \
+		CC="$(CC)" \
+		$(CFLAGS_TO_PASS) \
+		$(LDFLAGS_TO_PASS) \
+		DESTDIR=$(PWD)/$(d_neon) \
+		    install
+	touch $(install_neon_stamp)
+
+# ----------------------------------------------------------------------
+# Build architecture-dependent files here.
+debian/arch_binaries.all: $(foreach i,$(arch_binaries),$(binary_stamp)-$(i))
+	cd debian; xargs -r du -s < arch_binaries | sort -nr | awk '{print $$2}' \
+		> arch_binaries.tmp
+	mv debian/arch_binaries.tmp debian/arch_binaries
+	sed -i 's/ /\n/g' debian/arch_binaries.epoch || touch debian/arch_binaries.epoch
+	cat debian/arch_binaries debian/arch_binaries.epoch > debian/arch_binaries.all
+
+binary-arch: debian/arch_binaries.all
+	dh_compress $(foreach p,$(shell echo `cat debian/arch_binaries.all`),-p$(p)) \
+	  -X.log.xz -X.sum.xz -X.java -X.c -X.txt -X.tag -X.map -XREADME.Bugs
+	dh_fixperms $(foreach p,$(shell echo `cat debian/arch_binaries.all`),-p$(p))
+	dh_gencontrol $(foreach p,$(shell echo `cat debian/arch_binaries`),-p$(p)) \
+	  -- -v$(DEB_VERSION) $(common_substvars)
+	@set -e; \
+	pkgs='$(strip $(foreach p,$(shell echo `cat debian/arch_binaries.epoch`),-p$(p)))'; \
+	if [ -n "$$pkgs" ]; then \
+	  echo dh_gencontrol $$pkgs -- -v$(DEB_EVERSION) $(common_substvars); \
+	  dh_gencontrol $$pkgs -- -v$(DEB_EVERSION) $(common_substvars); \
+	fi
+	dh_installdeb $(foreach p,$(shell echo `cat debian/arch_binaries.all`),-p$(p))
+	dh_md5sums $(foreach p,$(shell echo `cat debian/arch_binaries.all`),-p$(p))
+	dh_builddeb $(foreach p,$(shell echo `cat debian/arch_binaries.all`),-p$(p))
+ifeq ($(with_check),yes)
+	@echo Done
+#	: # Send Email about sucessfull build.
+#	# cat raw-test-summary | sh; echo "Sent mail to $(S_EMAIL)"
+endif
+
+	: # remove empty directories, when all components are in place
+	-find $(d) -type d -empty -delete
+
+	@echo "Listing installed files not included in any package:"
+	-find $(d) ! -type d
+
+	@echo XXXXX `date -R`
+
+# ----------------------------------------------------------------------
+# Build architecture-independent files here.
+debian/indep_binaries.all: $(foreach i,$(indep_binaries),$(binary_stamp)-$(i))
+	cd debian; xargs -r du -s < indep_binaries | sort -nr | awk '{print $$2}' \
+		> indep_binaries.tmp
+	mv debian/indep_binaries.tmp debian/indep_binaries
+	sed -i 's/ /\n/g' debian/indep_binaries.epoch || touch debian/indep_binaries.epoch
+	cat debian/indep_binaries debian/indep_binaries.epoch > debian/indep_binaries.all
+
+binary-indep: debian/indep_binaries.all
+	dh_compress $(foreach p,$(shell echo `cat debian/indep_binaries.all`),-p$(p)) \
+	  -X.log.xz -X.sum.xz -X.java -X.c -X.txt -X.tag -X.map -XREADME.Bugs
+	dh_fixperms $(foreach p,$(shell echo `cat debian/indep_binaries.all`),-p$(p))
+	: # the export should be harmless for the binary indep packages of a native build
+	export DEB_HOST_ARCH=$(TARGET); \
+	dh_gencontrol $(foreach p,$(shell echo `cat debian/indep_binaries`),-p$(p)) \
+	  -- -v$(DEB_VERSION) $(common_substvars)
+	@set -e; \
+	export DEB_HOST_ARCH=$(TARGET); \
+	pkgs='$(strip $(foreach p,$(shell echo `cat debian/indep_binaries.epoch`),-p$(p)))'; \
+	if [ -n "$$pkgs" ]; then \
+	  echo dh_gencontrol $$pkgs -- -v$(DEB_EVERSION) $(common_substvars); \
+	  dh_gencontrol $$pkgs -- -v$(DEB_EVERSION) $(common_substvars); \
+	fi
+
+ifneq (,$(filter $(DEB_TARGET_ARCH), mips mipsel mips64 mips64el mipsn32 mipsn32el))
+	for p in `cat debian/indep_binaries debian/indep_binaries.epoch`; do \
+	  p=$${p#-p*}; \
+	  case "$$p" in \
+	    lib64*)  echo mangle $$p; sed -i -r '/^(Dep|Rec|Sug)/s/libn?32[^,]+(, *|$$)//g;/^(Dep|Rec|Sug)/s/$(p_lgcc)/$(p_l64gcc)/;/^(Dep|Rec|Sug)/s/ *, *$$//' debian/$$p/DEBIAN/control;; \
+	    libn32*) echo mangle $$p; sed -i -r '/^(Dep|Rec|Sug)/s/lib64[^,]+(, *|$$)//g;/^(Dep|Rec|Sug)/s/$(p_lgcc)/$(p_ln32gcc)/;/^(Dep|Rec|Sug)/s/ *, *$$//' debian/$$p/DEBIAN/control;; \
+	  esac; \
+	done
+endif
+
+	dh_installdeb $(foreach p,$(shell echo `cat debian/indep_binaries.all`),-p$(p))
+	dh_md5sums $(foreach p,$(shell echo `cat debian/indep_binaries.all`),-p$(p))
+	dh_builddeb $(foreach p,$(shell echo `cat debian/indep_binaries.all`),-p$(p))
+
+	@echo XXXXX `date -R`
+
+source diff:
+	@echo >&2 'source and diff are obsolete - use dpkg-source -b'; false
+
+binary: binary-indep binary-arch
+.PHONY: build clean binary-indep binary-arch binary 
+.PRECIOUS: $(stampdir)/%-stamp debian/indep_binaries.all debian/arch_binaries.all
diff --git a/debian/runcheck.sh b/debian/runcheck.sh
new file mode 100644
index 0000000..c7d6cfb
--- /dev/null
+++ b/debian/runcheck.sh
@@ -0,0 +1,23 @@
+#! /bin/sh
+
+mkdir -p build
+
+abi=${CC##* }
+base=build/runcheck$abi
+
+cat >$base.c <<EOF
+#include <stdio.h>
+int main()
+{
+	printf("$abi");
+	return 0;
+}
+EOF
+
+
+if ${CC:-gcc} -o $base $base.c 2>/dev/null; then
+  if [ "$($base 2>&1)" = "$abi" ]; then
+    printf "%s" $abi > $base.out
+    printf "%s" $abi
+  fi
+fi
diff --git a/debian/source.lintian-overrides b/debian/source.lintian-overrides
new file mode 100644
index 0000000..58eb474
--- /dev/null
+++ b/debian/source.lintian-overrides
@@ -0,0 +1,4 @@
+gcc-5 source: invalid-arch-string-in-source-relation
+gcc-5 source: quilt-build-dep-but-no-series-file
+# lintian can't handle (>= ${gcc:Version})
+gcc-5 source: weak-library-dev-dependency
diff --git a/debian/source.lintian-overrides.in b/debian/source.lintian-overrides.in
new file mode 100644
index 0000000..cfd3963
--- /dev/null
+++ b/debian/source.lintian-overrides.in
@@ -0,0 +1,4 @@
+ at SRC@ source: invalid-arch-string-in-source-relation
+ at SRC@ source: quilt-build-dep-but-no-series-file
+# lintian can't handle (>= ${gcc:Version})
+ at SRC@ source: weak-library-dev-dependency
diff --git a/debian/source/format b/debian/source/format
new file mode 100644
index 0000000..d3827e7
--- /dev/null
+++ b/debian/source/format
@@ -0,0 +1 @@
+1.0
diff --git a/debian/source/local-options b/debian/source/local-options
new file mode 100644
index 0000000..3974cf1
--- /dev/null
+++ b/debian/source/local-options
@@ -0,0 +1,6 @@
+# debian/source/local-options
+# See dpkg-source(1).
+
+tar-ignore = ".mtn-ignore"
+tar-ignore = "_MTN"
+# This file is ignored by default.
diff --git a/debian/watch b/debian/watch
new file mode 100644
index 0000000..a0fdf82
--- /dev/null
+++ b/debian/watch
@@ -0,0 +1,2 @@
+version=2
+ftp://gcc.gnu.org/pub/gcc/releases/gcc-(5\.[\d\.]*)	debian	uupdate

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/reproducible/gcc-6.git



More information about the Reproducible-commits mailing list